@mailwoman/corpus 9.2.0 → 9.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1241) hide show
  1. package/README.md +22 -22
  2. package/data/PROVENANCE.md +7 -7
  3. package/lib/adapters/ban/adapter.ts +190 -0
  4. package/lib/adapters/ban/street-decompose.ts +66 -0
  5. package/lib/adapters/fcc-bdc/adapter.ts +174 -0
  6. package/lib/adapters/geonames/adapter.ts +199 -0
  7. package/lib/adapters/geonames-postal/adapter.ts +122 -0
  8. package/lib/adapters/gnaf/adapter.ts +149 -0
  9. package/lib/adapters/gnaf/assemble.ts +225 -0
  10. package/lib/adapters/index.ts +153 -0
  11. package/lib/adapters/openaddresses/adapter.ts +251 -0
  12. package/lib/adapters/overture/adapter.ts +162 -0
  13. package/lib/adapters/state-hi-schools/adapter.ts +170 -0
  14. package/lib/adapters/state-hi-schools/workbook.ts +35 -0
  15. package/lib/adapters/synth-po-box/adapter.ts +204 -0
  16. package/lib/adapters/tiger/adapter.ts +252 -0
  17. package/lib/adapters/tiger/street-decompose.ts +83 -0
  18. package/lib/adapters/usgov-hrsa-fqhc/adapter.ts +167 -0
  19. package/lib/adapters/usgov-imls-pls/adapter.ts +143 -0
  20. package/lib/adapters/usgov-irs-bmf/adapter.ts +151 -0
  21. package/lib/adapters/usgov-nad/adapter.ts +334 -0
  22. package/lib/adapters/usgov-nppes/adapter.ts +151 -0
  23. package/lib/adapters/usgov-samhsa-treatment-locator/adapter.ts +193 -0
  24. package/lib/adapters/utils/index.ts +307 -0
  25. package/lib/adapters/wof-admin-jp/adapter.ts +214 -0
  26. package/lib/adapters/wof-admin-json/adapter.ts +231 -0
  27. package/lib/adapters/wof-json-rows.ts +129 -0
  28. package/lib/adapters/wof-postalcode-json/adapter.ts +176 -0
  29. package/lib/build.ts +378 -0
  30. package/lib/env.ts +50 -0
  31. package/lib/index.ts +13 -0
  32. package/lib/name-prone-us-suffixes.ts +12 -0
  33. package/lib/recipes/anchor-absorption.ts +101 -0
  34. package/lib/recipes/bare-country.ts +95 -0
  35. package/lib/recipes/boundary-stress.ts +100 -0
  36. package/lib/recipes/cn-organizational-units.ts +199 -0
  37. package/lib/recipes/country-balanced.ts +509 -0
  38. package/lib/recipes/cz-pcfirst-preposition.ts +111 -0
  39. package/lib/recipes/fr-admin-split.ts +242 -0
  40. package/lib/recipes/fr-bare-street.ts +170 -0
  41. package/lib/recipes/fr-fragment.ts +333 -0
  42. package/lib/recipes/fr-lieudit.ts +301 -0
  43. package/lib/recipes/fr-order.ts +245 -0
  44. package/lib/recipes/german.ts +359 -0
  45. package/lib/recipes/house-venue.ts +92 -0
  46. package/lib/recipes/index.ts +97 -0
  47. package/lib/recipes/intersection.ts +618 -0
  48. package/lib/recipes/locale.ts +599 -0
  49. package/lib/recipes/nl-postcode.ts +115 -0
  50. package/lib/recipes/no-fragment.ts +219 -0
  51. package/lib/recipes/no-street-led.ts +141 -0
  52. package/lib/recipes/no-street.ts +90 -0
  53. package/lib/recipes/po-box-cedex.ts +976 -0
  54. package/lib/recipes/po-box.ts +123 -0
  55. package/lib/recipes/reviewed-postcode-tail.ts +190 -0
  56. package/lib/recipes/scaffold.ts +469 -0
  57. package/lib/recipes/si-bare-village.ts +97 -0
  58. package/lib/recipes/street-affix.ts +804 -0
  59. package/lib/recipes/street-bare.ts +100 -0
  60. package/lib/recipes/street.ts +81 -0
  61. package/lib/recipes/sub-venue-sources.ts +877 -0
  62. package/lib/recipes/sub-venue.ts +997 -0
  63. package/lib/recipes/trailing-region.ts +183 -0
  64. package/lib/recipes/unit.ts +304 -0
  65. package/lib/runner.ts +312 -0
  66. package/lib/synthesizers/anchor-absorption.ts +288 -0
  67. package/lib/synthesizers/boundary-stress.ts +532 -0
  68. package/lib/synthesizers/german.ts +260 -0
  69. package/lib/synthesizers/house-venue.ts +308 -0
  70. package/lib/synthesizers/intersection.ts +233 -0
  71. package/lib/synthesizers/no-street.ts +327 -0
  72. package/lib/synthesizers/po-box.ts +323 -0
  73. package/lib/synthesizers/street.ts +269 -0
  74. package/lib/synthesizers/utils.ts +993 -0
  75. package/lib/test-kit/corpus-recipe.ts +86 -0
  76. package/lib/test-kit/index.ts +100 -0
  77. package/lib/tools/align-slice.ts +68 -0
  78. package/lib/tools/audit.ts +403 -0
  79. package/lib/tools/corpus-stats.ts +136 -0
  80. package/lib/tools/fetch/ban.ts +289 -0
  81. package/lib/tools/fetch/download.ts +262 -0
  82. package/lib/tools/fetch/geonames-dump.ts +257 -0
  83. package/lib/tools/fetch/geonames-postal.ts +180 -0
  84. package/lib/tools/fetch/hrsa.ts +59 -0
  85. package/lib/tools/fetch/imls-pls.ts +149 -0
  86. package/lib/tools/fetch/index.ts +147 -0
  87. package/lib/tools/fetch/nad.ts +341 -0
  88. package/lib/tools/fetch/nppes.ts +165 -0
  89. package/lib/tools/fetch/openaddresses.ts +347 -0
  90. package/lib/tools/fetch/ourairports.ts +170 -0
  91. package/lib/tools/fetch/ppd.ts +121 -0
  92. package/lib/tools/fetch/state-hi-schools.ts +161 -0
  93. package/lib/tools/fetch/state-sources.ts +146 -0
  94. package/lib/tools/fetch/tiger-full.ts +308 -0
  95. package/lib/tools/fetch/wikidata-subvenue.ts +384 -0
  96. package/lib/tools/golden-expand.ts +574 -0
  97. package/lib/tools/golden-promote.ts +337 -0
  98. package/lib/tools/golden-relabel-street.ts +683 -0
  99. package/lib/tools/index.ts +28 -0
  100. package/lib/tools/ingest-csv.ts +378 -0
  101. package/lib/tools/jsonl-to-parquet.ts +207 -0
  102. package/lib/tools/lint-slice-vocab.ts +388 -0
  103. package/lib/tools/lint-slice.ts +496 -0
  104. package/lib/tools/overlay-manifest.ts +148 -0
  105. package/lib/tools/overture-subvenue.ts +209 -0
  106. package/lib/tools/postcode-triples.ts +363 -0
  107. package/lib/tools/slice-kryptonite.ts +137 -0
  108. package/lib/tools/slice-translit.ts +218 -0
  109. package/lib/tools/sub-venue/harvest.ts +234 -0
  110. package/lib/tools/sub-venue/head-nouns.ts +245 -0
  111. package/lib/tools/sub-venue/surfaces.ts +95 -0
  112. package/lib/tools/sub-venue/table.ts +281 -0
  113. package/lib/tools/sub-venue/wikidata.ts +85 -0
  114. package/lib/tools/sub-venue-lexicon.ts +429 -0
  115. package/lib/tools/sub-venue-promotions.ts +330 -0
  116. package/lib/types.ts +247 -0
  117. package/lib/utils/align.ts +330 -0
  118. package/lib/utils/golden.ts +189 -0
  119. package/lib/utils/index.ts +14 -0
  120. package/lib/utils/parquet.ts +582 -0
  121. package/lib/utils/slice-stats.ts +95 -0
  122. package/lib/utils/split.ts +279 -0
  123. package/lib/utils/tokenize.ts +120 -0
  124. package/lib/utils/wof-json.ts +247 -0
  125. package/out/adapters/ban/adapter.d.ts.map +1 -0
  126. package/out/adapters/ban/adapter.js +149 -0
  127. package/out/adapters/ban/adapter.js.map +1 -0
  128. package/out/adapters/ban/street-decompose.d.ts.map +1 -0
  129. package/out/adapters/ban/street-decompose.js +51 -0
  130. package/out/adapters/ban/street-decompose.js.map +1 -0
  131. package/out/adapters/fcc-bdc/adapter.d.ts.map +1 -0
  132. package/out/adapters/fcc-bdc/adapter.js +144 -0
  133. package/out/adapters/fcc-bdc/adapter.js.map +1 -0
  134. package/out/adapters/geonames/adapter.d.ts.map +1 -0
  135. package/out/adapters/geonames/adapter.js +176 -0
  136. package/out/adapters/geonames/adapter.js.map +1 -0
  137. package/out/adapters/geonames-postal/adapter.d.ts +54 -0
  138. package/out/adapters/geonames-postal/adapter.d.ts.map +1 -0
  139. package/out/adapters/geonames-postal/adapter.js +107 -0
  140. package/out/adapters/geonames-postal/adapter.js.map +1 -0
  141. package/out/adapters/gnaf/adapter.d.ts +49 -0
  142. package/out/adapters/gnaf/adapter.d.ts.map +1 -0
  143. package/out/adapters/gnaf/adapter.js +124 -0
  144. package/out/adapters/gnaf/adapter.js.map +1 -0
  145. package/out/adapters/gnaf/assemble.d.ts +65 -0
  146. package/out/adapters/gnaf/assemble.d.ts.map +1 -0
  147. package/out/adapters/gnaf/assemble.js +154 -0
  148. package/out/adapters/gnaf/assemble.js.map +1 -0
  149. package/out/adapters/index.d.ts +51 -0
  150. package/out/adapters/index.d.ts.map +1 -0
  151. package/out/adapters/index.js +95 -0
  152. package/out/adapters/index.js.map +1 -0
  153. package/out/adapters/openaddresses/adapter.d.ts.map +1 -0
  154. package/out/adapters/openaddresses/adapter.js +186 -0
  155. package/out/adapters/openaddresses/adapter.js.map +1 -0
  156. package/out/adapters/overture/adapter.d.ts +48 -0
  157. package/out/adapters/overture/adapter.d.ts.map +1 -0
  158. package/out/adapters/overture/adapter.js +125 -0
  159. package/out/adapters/overture/adapter.js.map +1 -0
  160. package/out/adapters/state-hi-schools/adapter.d.ts +46 -0
  161. package/out/adapters/state-hi-schools/adapter.d.ts.map +1 -0
  162. package/out/adapters/state-hi-schools/adapter.js +145 -0
  163. package/out/adapters/state-hi-schools/adapter.js.map +1 -0
  164. package/out/adapters/state-hi-schools/workbook.d.ts +29 -0
  165. package/out/adapters/state-hi-schools/workbook.d.ts.map +1 -0
  166. package/out/adapters/state-hi-schools/workbook.js +20 -0
  167. package/out/adapters/state-hi-schools/workbook.js.map +1 -0
  168. package/out/adapters/state-ia-contractors/adapter.d.ts.map +1 -0
  169. package/out/adapters/state-ia-contractors/adapter.js.map +1 -0
  170. package/out/adapters/state-ny-notaries/adapter.d.ts.map +1 -0
  171. package/out/adapters/state-ny-notaries/adapter.js.map +1 -0
  172. package/out/adapters/state-tx-notaries/adapter.d.ts.map +1 -0
  173. package/out/adapters/state-tx-notaries/adapter.js.map +1 -0
  174. package/out/adapters/synth-po-box/adapter.d.ts.map +1 -0
  175. package/out/adapters/synth-po-box/adapter.js +140 -0
  176. package/out/adapters/synth-po-box/adapter.js.map +1 -0
  177. package/out/adapters/tiger/adapter.d.ts +55 -0
  178. package/out/adapters/tiger/adapter.d.ts.map +1 -0
  179. package/out/adapters/tiger/adapter.js +201 -0
  180. package/out/adapters/tiger/adapter.js.map +1 -0
  181. package/out/adapters/tiger/street-decompose.d.ts.map +1 -0
  182. package/out/adapters/tiger/street-decompose.js +68 -0
  183. package/out/adapters/tiger/street-decompose.js.map +1 -0
  184. package/out/adapters/usgov-hrsa-fqhc/adapter.d.ts +56 -0
  185. package/out/adapters/usgov-hrsa-fqhc/adapter.d.ts.map +1 -0
  186. package/out/adapters/usgov-hrsa-fqhc/adapter.js +132 -0
  187. package/out/adapters/usgov-hrsa-fqhc/adapter.js.map +1 -0
  188. package/out/adapters/usgov-imls-pls/adapter.d.ts +36 -0
  189. package/out/adapters/usgov-imls-pls/adapter.d.ts.map +1 -0
  190. package/out/adapters/usgov-imls-pls/adapter.js +114 -0
  191. package/out/adapters/usgov-imls-pls/adapter.js.map +1 -0
  192. package/out/adapters/usgov-irs-bmf/adapter.d.ts +37 -0
  193. package/out/adapters/usgov-irs-bmf/adapter.d.ts.map +1 -0
  194. package/out/adapters/usgov-irs-bmf/adapter.js +120 -0
  195. package/out/adapters/usgov-irs-bmf/adapter.js.map +1 -0
  196. package/out/adapters/usgov-nad/adapter.d.ts +48 -0
  197. package/out/adapters/usgov-nad/adapter.d.ts.map +1 -0
  198. package/out/adapters/usgov-nad/adapter.js +249 -0
  199. package/out/adapters/usgov-nad/adapter.js.map +1 -0
  200. package/out/adapters/usgov-nppes/adapter.d.ts.map +1 -0
  201. package/out/adapters/usgov-nppes/adapter.js +118 -0
  202. package/out/adapters/usgov-nppes/adapter.js.map +1 -0
  203. package/out/adapters/usgov-samhsa-treatment-locator/adapter.d.ts.map +1 -0
  204. package/out/adapters/usgov-samhsa-treatment-locator/adapter.js +154 -0
  205. package/out/adapters/usgov-samhsa-treatment-locator/adapter.js.map +1 -0
  206. package/out/adapters/utils/index.d.ts +191 -0
  207. package/out/adapters/utils/index.d.ts.map +1 -0
  208. package/out/adapters/utils/index.js +206 -0
  209. package/out/adapters/utils/index.js.map +1 -0
  210. package/out/adapters/wof-admin-jp/adapter.d.ts.map +1 -0
  211. package/out/adapters/wof-admin-jp/adapter.js +161 -0
  212. package/out/adapters/wof-admin-jp/adapter.js.map +1 -0
  213. package/out/adapters/wof-admin-json/adapter.d.ts +79 -0
  214. package/out/adapters/wof-admin-json/adapter.d.ts.map +1 -0
  215. package/out/adapters/wof-admin-json/adapter.js +197 -0
  216. package/out/adapters/wof-admin-json/adapter.js.map +1 -0
  217. package/out/adapters/wof-json-rows.d.ts +62 -0
  218. package/out/adapters/wof-json-rows.d.ts.map +1 -0
  219. package/out/adapters/wof-json-rows.js +83 -0
  220. package/out/adapters/wof-json-rows.js.map +1 -0
  221. package/out/adapters/wof-postalcode-json/adapter.d.ts +65 -0
  222. package/out/adapters/wof-postalcode-json/adapter.d.ts.map +1 -0
  223. package/out/adapters/wof-postalcode-json/adapter.js +151 -0
  224. package/out/adapters/wof-postalcode-json/adapter.js.map +1 -0
  225. package/out/build.d.ts +132 -0
  226. package/out/build.d.ts.map +1 -0
  227. package/out/build.js +245 -0
  228. package/out/build.js.map +1 -0
  229. package/out/codex/us-fips-state.d.ts.map +1 -0
  230. package/out/codex/us-fips-state.js.map +1 -0
  231. package/out/env.d.ts +46 -0
  232. package/out/env.d.ts.map +1 -0
  233. package/out/env.js +46 -0
  234. package/out/env.js.map +1 -0
  235. package/out/index.d.ts +13 -0
  236. package/out/index.d.ts.map +1 -0
  237. package/out/index.js +13 -0
  238. package/out/index.js.map +1 -0
  239. package/out/name-prone-us-suffixes.d.ts +12 -0
  240. package/out/name-prone-us-suffixes.d.ts.map +1 -0
  241. package/out/name-prone-us-suffixes.js +12 -0
  242. package/out/name-prone-us-suffixes.js.map +1 -0
  243. package/out/recipes/anchor-absorption.d.ts +20 -0
  244. package/out/recipes/anchor-absorption.d.ts.map +1 -0
  245. package/out/recipes/anchor-absorption.js +81 -0
  246. package/out/recipes/anchor-absorption.js.map +1 -0
  247. package/out/recipes/bare-country.d.ts +25 -0
  248. package/out/recipes/bare-country.d.ts.map +1 -0
  249. package/out/recipes/bare-country.js +87 -0
  250. package/out/recipes/bare-country.js.map +1 -0
  251. package/out/recipes/boundary-stress.d.ts +20 -0
  252. package/out/recipes/boundary-stress.d.ts.map +1 -0
  253. package/out/recipes/boundary-stress.js +83 -0
  254. package/out/recipes/boundary-stress.js.map +1 -0
  255. package/out/recipes/cn-organizational-units.d.ts +36 -0
  256. package/out/recipes/cn-organizational-units.d.ts.map +1 -0
  257. package/out/recipes/cn-organizational-units.js +159 -0
  258. package/out/recipes/cn-organizational-units.js.map +1 -0
  259. package/out/recipes/country-balanced.d.ts +32 -0
  260. package/out/recipes/country-balanced.d.ts.map +1 -0
  261. package/out/recipes/country-balanced.js +393 -0
  262. package/out/recipes/country-balanced.js.map +1 -0
  263. package/out/recipes/cz-pcfirst-preposition.d.ts +22 -0
  264. package/out/recipes/cz-pcfirst-preposition.d.ts.map +1 -0
  265. package/out/recipes/cz-pcfirst-preposition.js +100 -0
  266. package/out/recipes/cz-pcfirst-preposition.js.map +1 -0
  267. package/out/recipes/fr-admin-split.d.ts +38 -0
  268. package/out/recipes/fr-admin-split.d.ts.map +1 -0
  269. package/out/recipes/fr-admin-split.js +192 -0
  270. package/out/recipes/fr-admin-split.js.map +1 -0
  271. package/out/recipes/fr-bare-street.d.ts +28 -0
  272. package/out/recipes/fr-bare-street.d.ts.map +1 -0
  273. package/out/recipes/fr-bare-street.js +143 -0
  274. package/out/recipes/fr-bare-street.js.map +1 -0
  275. package/out/recipes/fr-fragment.d.ts +77 -0
  276. package/out/recipes/fr-fragment.d.ts.map +1 -0
  277. package/out/recipes/fr-fragment.js +276 -0
  278. package/out/recipes/fr-fragment.js.map +1 -0
  279. package/out/recipes/fr-lieudit.d.ts +32 -0
  280. package/out/recipes/fr-lieudit.d.ts.map +1 -0
  281. package/out/recipes/fr-lieudit.js +227 -0
  282. package/out/recipes/fr-lieudit.js.map +1 -0
  283. package/out/recipes/fr-order.d.ts +38 -0
  284. package/out/recipes/fr-order.d.ts.map +1 -0
  285. package/out/recipes/fr-order.js +197 -0
  286. package/out/recipes/fr-order.js.map +1 -0
  287. package/out/recipes/german.d.ts +44 -0
  288. package/out/recipes/german.d.ts.map +1 -0
  289. package/out/recipes/german.js +288 -0
  290. package/out/recipes/german.js.map +1 -0
  291. package/out/recipes/house-venue.d.ts +18 -0
  292. package/out/recipes/house-venue.d.ts.map +1 -0
  293. package/out/recipes/house-venue.js +73 -0
  294. package/out/recipes/house-venue.js.map +1 -0
  295. package/out/recipes/index.d.ts +24 -0
  296. package/out/recipes/index.d.ts.map +1 -0
  297. package/out/recipes/index.js +91 -0
  298. package/out/recipes/index.js.map +1 -0
  299. package/out/recipes/intersection.d.ts +42 -0
  300. package/out/recipes/intersection.d.ts.map +1 -0
  301. package/out/recipes/intersection.js +452 -0
  302. package/out/recipes/intersection.js.map +1 -0
  303. package/out/recipes/locale.d.ts +136 -0
  304. package/out/recipes/locale.d.ts.map +1 -0
  305. package/out/recipes/locale.js +460 -0
  306. package/out/recipes/locale.js.map +1 -0
  307. package/out/recipes/nl-postcode.d.ts +26 -0
  308. package/out/recipes/nl-postcode.d.ts.map +1 -0
  309. package/out/recipes/nl-postcode.js +102 -0
  310. package/out/recipes/nl-postcode.js.map +1 -0
  311. package/out/recipes/no-fragment.d.ts +43 -0
  312. package/out/recipes/no-fragment.d.ts.map +1 -0
  313. package/out/recipes/no-fragment.js +182 -0
  314. package/out/recipes/no-fragment.js.map +1 -0
  315. package/out/recipes/no-street-led.d.ts +24 -0
  316. package/out/recipes/no-street-led.d.ts.map +1 -0
  317. package/out/recipes/no-street-led.js +113 -0
  318. package/out/recipes/no-street-led.js.map +1 -0
  319. package/out/recipes/no-street.d.ts +18 -0
  320. package/out/recipes/no-street.d.ts.map +1 -0
  321. package/out/recipes/no-street.js +71 -0
  322. package/out/recipes/no-street.js.map +1 -0
  323. package/out/recipes/po-box-cedex.d.ts +38 -0
  324. package/out/recipes/po-box-cedex.d.ts.map +1 -0
  325. package/out/recipes/po-box-cedex.js +767 -0
  326. package/out/recipes/po-box-cedex.js.map +1 -0
  327. package/out/recipes/po-box.d.ts +17 -0
  328. package/out/recipes/po-box.d.ts.map +1 -0
  329. package/out/recipes/po-box.js +100 -0
  330. package/out/recipes/po-box.js.map +1 -0
  331. package/out/recipes/reviewed-postcode-tail.d.ts +47 -0
  332. package/out/recipes/reviewed-postcode-tail.d.ts.map +1 -0
  333. package/out/recipes/reviewed-postcode-tail.js +125 -0
  334. package/out/recipes/reviewed-postcode-tail.js.map +1 -0
  335. package/out/recipes/scaffold.d.ts +324 -0
  336. package/out/recipes/scaffold.d.ts.map +1 -0
  337. package/out/recipes/scaffold.js +186 -0
  338. package/out/recipes/scaffold.js.map +1 -0
  339. package/out/recipes/si-bare-village.d.ts +32 -0
  340. package/out/recipes/si-bare-village.d.ts.map +1 -0
  341. package/out/recipes/si-bare-village.js +88 -0
  342. package/out/recipes/si-bare-village.js.map +1 -0
  343. package/out/recipes/street-affix.d.ts +89 -0
  344. package/out/recipes/street-affix.d.ts.map +1 -0
  345. package/out/recipes/street-affix.js +563 -0
  346. package/out/recipes/street-affix.js.map +1 -0
  347. package/out/recipes/street-bare.d.ts +25 -0
  348. package/out/recipes/street-bare.d.ts.map +1 -0
  349. package/out/recipes/street-bare.js +86 -0
  350. package/out/recipes/street-bare.js.map +1 -0
  351. package/out/recipes/street.d.ts +15 -0
  352. package/out/recipes/street.d.ts.map +1 -0
  353. package/out/recipes/street.js +69 -0
  354. package/out/recipes/street.js.map +1 -0
  355. package/out/recipes/sub-venue-sources.d.ts +229 -0
  356. package/out/recipes/sub-venue-sources.d.ts.map +1 -0
  357. package/out/recipes/sub-venue-sources.js +653 -0
  358. package/out/recipes/sub-venue-sources.js.map +1 -0
  359. package/out/recipes/sub-venue.d.ts +269 -0
  360. package/out/recipes/sub-venue.d.ts.map +1 -0
  361. package/out/recipes/sub-venue.js +725 -0
  362. package/out/recipes/sub-venue.js.map +1 -0
  363. package/out/recipes/trailing-region.d.ts +74 -0
  364. package/out/recipes/trailing-region.d.ts.map +1 -0
  365. package/out/recipes/trailing-region.js +157 -0
  366. package/out/recipes/trailing-region.js.map +1 -0
  367. package/out/recipes/unit.d.ts +29 -0
  368. package/out/recipes/unit.d.ts.map +1 -0
  369. package/out/recipes/unit.js +230 -0
  370. package/out/recipes/unit.js.map +1 -0
  371. package/out/runner.d.ts +130 -0
  372. package/out/runner.d.ts.map +1 -0
  373. package/out/runner.js +185 -0
  374. package/out/runner.js.map +1 -0
  375. package/out/synthesizers/anchor-absorption.d.ts +63 -0
  376. package/out/synthesizers/anchor-absorption.d.ts.map +1 -0
  377. package/out/synthesizers/anchor-absorption.js +221 -0
  378. package/out/synthesizers/anchor-absorption.js.map +1 -0
  379. package/out/synthesizers/boundary-stress.d.ts +78 -0
  380. package/out/synthesizers/boundary-stress.d.ts.map +1 -0
  381. package/out/synthesizers/boundary-stress.js +455 -0
  382. package/out/synthesizers/boundary-stress.js.map +1 -0
  383. package/out/synthesizers/german.d.ts +115 -0
  384. package/out/synthesizers/german.d.ts.map +1 -0
  385. package/out/synthesizers/german.js +149 -0
  386. package/out/synthesizers/german.js.map +1 -0
  387. package/out/synthesizers/house-venue.d.ts +56 -0
  388. package/out/synthesizers/house-venue.d.ts.map +1 -0
  389. package/out/synthesizers/house-venue.js +247 -0
  390. package/out/synthesizers/house-venue.js.map +1 -0
  391. package/out/synthesizers/intersection.d.ts +52 -0
  392. package/out/synthesizers/intersection.d.ts.map +1 -0
  393. package/out/synthesizers/intersection.js +175 -0
  394. package/out/synthesizers/intersection.js.map +1 -0
  395. package/out/synthesizers/no-street.d.ts +72 -0
  396. package/out/synthesizers/no-street.d.ts.map +1 -0
  397. package/out/synthesizers/no-street.js +262 -0
  398. package/out/synthesizers/no-street.js.map +1 -0
  399. package/out/synthesizers/po-box.d.ts +108 -0
  400. package/out/synthesizers/po-box.d.ts.map +1 -0
  401. package/out/synthesizers/po-box.js +250 -0
  402. package/out/synthesizers/po-box.js.map +1 -0
  403. package/out/synthesizers/street.d.ts +54 -0
  404. package/out/synthesizers/street.d.ts.map +1 -0
  405. package/out/synthesizers/street.js +218 -0
  406. package/out/synthesizers/street.js.map +1 -0
  407. package/out/synthesizers/utils.d.ts +241 -0
  408. package/out/synthesizers/utils.d.ts.map +1 -0
  409. package/out/synthesizers/utils.js +776 -0
  410. package/out/synthesizers/utils.js.map +1 -0
  411. package/out/test-kit/corpus-recipe.d.ts +59 -0
  412. package/out/test-kit/corpus-recipe.d.ts.map +1 -0
  413. package/out/test-kit/corpus-recipe.js +39 -0
  414. package/out/test-kit/corpus-recipe.js.map +1 -0
  415. package/out/test-kit/index.d.ts +48 -0
  416. package/out/test-kit/index.d.ts.map +1 -0
  417. package/out/test-kit/index.js +78 -0
  418. package/out/test-kit/index.js.map +1 -0
  419. package/out/tools/align-slice.d.ts +7 -0
  420. package/out/tools/align-slice.d.ts.map +1 -0
  421. package/out/tools/align-slice.js +55 -0
  422. package/out/tools/align-slice.js.map +1 -0
  423. package/out/tools/audit.d.ts +29 -0
  424. package/out/tools/audit.d.ts.map +1 -0
  425. package/out/tools/audit.js +282 -0
  426. package/out/tools/audit.js.map +1 -0
  427. package/out/tools/corpus-stats.d.ts +44 -0
  428. package/out/tools/corpus-stats.d.ts.map +1 -0
  429. package/out/tools/corpus-stats.js +102 -0
  430. package/out/tools/corpus-stats.js.map +1 -0
  431. package/out/tools/fetch/ban.d.ts +31 -0
  432. package/out/tools/fetch/ban.d.ts.map +1 -0
  433. package/out/tools/fetch/ban.js +239 -0
  434. package/out/tools/fetch/ban.js.map +1 -0
  435. package/out/tools/fetch/download.d.ts +117 -0
  436. package/out/tools/fetch/download.d.ts.map +1 -0
  437. package/out/tools/fetch/download.js +160 -0
  438. package/out/tools/fetch/download.js.map +1 -0
  439. package/out/tools/fetch/geonames-dump.d.ts +91 -0
  440. package/out/tools/fetch/geonames-dump.d.ts.map +1 -0
  441. package/out/tools/fetch/geonames-dump.js +171 -0
  442. package/out/tools/fetch/geonames-dump.js.map +1 -0
  443. package/out/tools/fetch/geonames-postal.d.ts +76 -0
  444. package/out/tools/fetch/geonames-postal.d.ts.map +1 -0
  445. package/out/tools/fetch/geonames-postal.js +126 -0
  446. package/out/tools/fetch/geonames-postal.js.map +1 -0
  447. package/out/tools/fetch/hrsa.d.ts +18 -0
  448. package/out/tools/fetch/hrsa.d.ts.map +1 -0
  449. package/out/tools/fetch/hrsa.js +46 -0
  450. package/out/tools/fetch/hrsa.js.map +1 -0
  451. package/out/tools/fetch/imls-pls.d.ts +25 -0
  452. package/out/tools/fetch/imls-pls.d.ts.map +1 -0
  453. package/out/tools/fetch/imls-pls.js +108 -0
  454. package/out/tools/fetch/imls-pls.js.map +1 -0
  455. package/out/tools/fetch/index.d.ts +144 -0
  456. package/out/tools/fetch/index.d.ts.map +1 -0
  457. package/out/tools/fetch/index.js +143 -0
  458. package/out/tools/fetch/index.js.map +1 -0
  459. package/out/tools/fetch/nad.d.ts +70 -0
  460. package/out/tools/fetch/nad.d.ts.map +1 -0
  461. package/out/tools/fetch/nad.js +234 -0
  462. package/out/tools/fetch/nad.js.map +1 -0
  463. package/out/tools/fetch/nppes.d.ts +26 -0
  464. package/out/tools/fetch/nppes.d.ts.map +1 -0
  465. package/out/tools/fetch/nppes.js +126 -0
  466. package/out/tools/fetch/nppes.js.map +1 -0
  467. package/out/tools/fetch/openaddresses.d.ts +9 -0
  468. package/out/tools/fetch/openaddresses.d.ts.map +1 -0
  469. package/out/tools/fetch/openaddresses.js +279 -0
  470. package/out/tools/fetch/openaddresses.js.map +1 -0
  471. package/out/tools/fetch/ourairports.d.ts +45 -0
  472. package/out/tools/fetch/ourairports.d.ts.map +1 -0
  473. package/out/tools/fetch/ourairports.js +128 -0
  474. package/out/tools/fetch/ourairports.js.map +1 -0
  475. package/out/tools/fetch/ppd.d.ts.map +1 -0
  476. package/out/tools/fetch/ppd.js +85 -0
  477. package/out/tools/fetch/ppd.js.map +1 -0
  478. package/out/tools/fetch/state-hi-schools.d.ts +26 -0
  479. package/out/tools/fetch/state-hi-schools.d.ts.map +1 -0
  480. package/out/tools/fetch/state-hi-schools.js +112 -0
  481. package/out/tools/fetch/state-hi-schools.js.map +1 -0
  482. package/out/tools/fetch/state-sources.d.ts +26 -0
  483. package/out/tools/fetch/state-sources.d.ts.map +1 -0
  484. package/out/tools/fetch/state-sources.js +111 -0
  485. package/out/tools/fetch/state-sources.js.map +1 -0
  486. package/out/tools/fetch/tiger-full.d.ts +22 -0
  487. package/out/tools/fetch/tiger-full.d.ts.map +1 -0
  488. package/out/tools/fetch/tiger-full.js +217 -0
  489. package/out/tools/fetch/tiger-full.js.map +1 -0
  490. package/out/tools/fetch/wikidata-subvenue.d.ts +171 -0
  491. package/out/tools/fetch/wikidata-subvenue.d.ts.map +1 -0
  492. package/out/tools/fetch/wikidata-subvenue.js +274 -0
  493. package/out/tools/fetch/wikidata-subvenue.js.map +1 -0
  494. package/out/tools/gb-title-case.d.ts.map +1 -0
  495. package/out/tools/gb-title-case.js.map +1 -0
  496. package/out/tools/golden-expand.d.ts +90 -0
  497. package/out/tools/golden-expand.d.ts.map +1 -0
  498. package/out/tools/golden-expand.js +406 -0
  499. package/out/tools/golden-expand.js.map +1 -0
  500. package/out/tools/golden-promote.d.ts.map +1 -0
  501. package/out/tools/golden-promote.js +240 -0
  502. package/out/tools/golden-promote.js.map +1 -0
  503. package/out/tools/golden-relabel-street.d.ts +196 -0
  504. package/out/tools/golden-relabel-street.d.ts.map +1 -0
  505. package/out/tools/golden-relabel-street.js +440 -0
  506. package/out/tools/golden-relabel-street.js.map +1 -0
  507. package/out/tools/index.d.ts +28 -0
  508. package/out/tools/index.d.ts.map +1 -0
  509. package/out/tools/index.js +28 -0
  510. package/out/tools/index.js.map +1 -0
  511. package/out/tools/ingest-csv.d.ts.map +1 -0
  512. package/out/tools/ingest-csv.js +265 -0
  513. package/out/tools/ingest-csv.js.map +1 -0
  514. package/out/tools/jsonl-to-parquet.d.ts +61 -0
  515. package/out/tools/jsonl-to-parquet.d.ts.map +1 -0
  516. package/out/tools/jsonl-to-parquet.js +150 -0
  517. package/out/tools/jsonl-to-parquet.js.map +1 -0
  518. package/out/tools/lint-slice-vocab.d.ts +90 -0
  519. package/out/tools/lint-slice-vocab.d.ts.map +1 -0
  520. package/out/tools/lint-slice-vocab.js +267 -0
  521. package/out/tools/lint-slice-vocab.js.map +1 -0
  522. package/out/tools/lint-slice.d.ts +93 -0
  523. package/out/tools/lint-slice.d.ts.map +1 -0
  524. package/out/tools/lint-slice.js +322 -0
  525. package/out/tools/lint-slice.js.map +1 -0
  526. package/out/tools/overlay-manifest.d.ts +39 -0
  527. package/out/tools/overlay-manifest.d.ts.map +1 -0
  528. package/out/tools/overlay-manifest.js +90 -0
  529. package/out/tools/overlay-manifest.js.map +1 -0
  530. package/out/tools/overture-subvenue.d.ts +112 -0
  531. package/out/tools/overture-subvenue.d.ts.map +1 -0
  532. package/out/tools/overture-subvenue.js +139 -0
  533. package/out/tools/overture-subvenue.js.map +1 -0
  534. package/out/tools/postcode-triples.d.ts +174 -0
  535. package/out/tools/postcode-triples.d.ts.map +1 -0
  536. package/out/tools/postcode-triples.js +292 -0
  537. package/out/tools/postcode-triples.js.map +1 -0
  538. package/out/tools/slice-kryptonite.d.ts +32 -0
  539. package/out/tools/slice-kryptonite.d.ts.map +1 -0
  540. package/out/tools/slice-kryptonite.js +99 -0
  541. package/out/tools/slice-kryptonite.js.map +1 -0
  542. package/out/tools/slice-translit.d.ts +51 -0
  543. package/out/tools/slice-translit.d.ts.map +1 -0
  544. package/out/tools/slice-translit.js +166 -0
  545. package/out/tools/slice-translit.js.map +1 -0
  546. package/out/tools/sub-venue/harvest.d.ts +100 -0
  547. package/out/tools/sub-venue/harvest.d.ts.map +1 -0
  548. package/out/tools/sub-venue/harvest.js +168 -0
  549. package/out/tools/sub-venue/harvest.js.map +1 -0
  550. package/out/tools/sub-venue/head-nouns.d.ts +50 -0
  551. package/out/tools/sub-venue/head-nouns.d.ts.map +1 -0
  552. package/out/tools/sub-venue/head-nouns.js +213 -0
  553. package/out/tools/sub-venue/head-nouns.js.map +1 -0
  554. package/out/tools/sub-venue/surfaces.d.ts +45 -0
  555. package/out/tools/sub-venue/surfaces.d.ts.map +1 -0
  556. package/out/tools/sub-venue/surfaces.js +77 -0
  557. package/out/tools/sub-venue/surfaces.js.map +1 -0
  558. package/out/tools/sub-venue/table.d.ts +229 -0
  559. package/out/tools/sub-venue/table.d.ts.map +1 -0
  560. package/out/tools/sub-venue/table.js +108 -0
  561. package/out/tools/sub-venue/table.js.map +1 -0
  562. package/out/tools/sub-venue/wikidata.d.ts +26 -0
  563. package/out/tools/sub-venue/wikidata.d.ts.map +1 -0
  564. package/out/tools/sub-venue/wikidata.js +62 -0
  565. package/out/tools/sub-venue/wikidata.js.map +1 -0
  566. package/out/tools/sub-venue-lexicon.d.ts +156 -0
  567. package/out/tools/sub-venue-lexicon.d.ts.map +1 -0
  568. package/out/tools/sub-venue-lexicon.js +283 -0
  569. package/out/tools/sub-venue-lexicon.js.map +1 -0
  570. package/out/tools/sub-venue-promotions.d.ts +94 -0
  571. package/out/tools/sub-venue-promotions.d.ts.map +1 -0
  572. package/out/tools/sub-venue-promotions.js +266 -0
  573. package/out/tools/sub-venue-promotions.js.map +1 -0
  574. package/out/types.d.ts +221 -0
  575. package/out/types.d.ts.map +1 -0
  576. package/out/types.js.map +1 -0
  577. package/out/utils/align.d.ts +93 -0
  578. package/out/utils/align.d.ts.map +1 -0
  579. package/out/utils/align.js +234 -0
  580. package/out/utils/align.js.map +1 -0
  581. package/out/utils/golden.d.ts +85 -0
  582. package/out/utils/golden.d.ts.map +1 -0
  583. package/out/utils/golden.js +127 -0
  584. package/out/utils/golden.js.map +1 -0
  585. package/out/utils/index.d.ts +14 -0
  586. package/out/utils/index.d.ts.map +1 -0
  587. package/out/utils/index.js +14 -0
  588. package/out/utils/index.js.map +1 -0
  589. package/out/utils/license.d.ts.map +1 -0
  590. package/out/utils/license.js.map +1 -0
  591. package/out/utils/parquet.d.ts +178 -0
  592. package/out/utils/parquet.d.ts.map +1 -0
  593. package/out/utils/parquet.js +371 -0
  594. package/out/utils/parquet.js.map +1 -0
  595. package/out/utils/slice-stats.d.ts +52 -0
  596. package/out/utils/slice-stats.d.ts.map +1 -0
  597. package/out/utils/slice-stats.js +58 -0
  598. package/out/utils/slice-stats.js.map +1 -0
  599. package/out/utils/split.d.ts +128 -0
  600. package/out/utils/split.d.ts.map +1 -0
  601. package/out/utils/split.js +204 -0
  602. package/out/utils/split.js.map +1 -0
  603. package/out/utils/tokenize.d.ts +64 -0
  604. package/out/utils/tokenize.d.ts.map +1 -0
  605. package/out/utils/tokenize.js +82 -0
  606. package/out/utils/tokenize.js.map +1 -0
  607. package/out/utils/wof-json.d.ts +113 -0
  608. package/out/utils/wof-json.d.ts.map +1 -0
  609. package/out/utils/wof-json.js +173 -0
  610. package/out/utils/wof-json.js.map +1 -0
  611. package/package.json +259 -194
  612. package/out/src/adapters/ban/adapter.d.ts.map +0 -1
  613. package/out/src/adapters/ban/adapter.js +0 -149
  614. package/out/src/adapters/ban/adapter.js.map +0 -1
  615. package/out/src/adapters/ban/street-decompose.d.ts.map +0 -1
  616. package/out/src/adapters/ban/street-decompose.js +0 -75
  617. package/out/src/adapters/ban/street-decompose.js.map +0 -1
  618. package/out/src/adapters/fcc-bdc/adapter.d.ts.map +0 -1
  619. package/out/src/adapters/fcc-bdc/adapter.js +0 -144
  620. package/out/src/adapters/fcc-bdc/adapter.js.map +0 -1
  621. package/out/src/adapters/geonames/adapter.d.ts.map +0 -1
  622. package/out/src/adapters/geonames/adapter.js +0 -176
  623. package/out/src/adapters/geonames/adapter.js.map +0 -1
  624. package/out/src/adapters/geonames-postal/adapter.d.ts +0 -41
  625. package/out/src/adapters/geonames-postal/adapter.d.ts.map +0 -1
  626. package/out/src/adapters/geonames-postal/adapter.js +0 -104
  627. package/out/src/adapters/geonames-postal/adapter.js.map +0 -1
  628. package/out/src/adapters/gnaf/adapter.d.ts +0 -49
  629. package/out/src/adapters/gnaf/adapter.d.ts.map +0 -1
  630. package/out/src/adapters/gnaf/adapter.js +0 -124
  631. package/out/src/adapters/gnaf/adapter.js.map +0 -1
  632. package/out/src/adapters/gnaf/assemble.d.ts +0 -65
  633. package/out/src/adapters/gnaf/assemble.d.ts.map +0 -1
  634. package/out/src/adapters/gnaf/assemble.js +0 -154
  635. package/out/src/adapters/gnaf/assemble.js.map +0 -1
  636. package/out/src/adapters/index.d.ts +0 -51
  637. package/out/src/adapters/index.d.ts.map +0 -1
  638. package/out/src/adapters/index.js +0 -95
  639. package/out/src/adapters/index.js.map +0 -1
  640. package/out/src/adapters/openaddresses/adapter.d.ts.map +0 -1
  641. package/out/src/adapters/openaddresses/adapter.js +0 -186
  642. package/out/src/adapters/openaddresses/adapter.js.map +0 -1
  643. package/out/src/adapters/overture/adapter.d.ts +0 -48
  644. package/out/src/adapters/overture/adapter.d.ts.map +0 -1
  645. package/out/src/adapters/overture/adapter.js +0 -125
  646. package/out/src/adapters/overture/adapter.js.map +0 -1
  647. package/out/src/adapters/state-hi-schools/adapter.d.ts +0 -47
  648. package/out/src/adapters/state-hi-schools/adapter.d.ts.map +0 -1
  649. package/out/src/adapters/state-hi-schools/adapter.js +0 -133
  650. package/out/src/adapters/state-hi-schools/adapter.js.map +0 -1
  651. package/out/src/adapters/state-ia-contractors/adapter.d.ts.map +0 -1
  652. package/out/src/adapters/state-ia-contractors/adapter.js.map +0 -1
  653. package/out/src/adapters/state-ny-notaries/adapter.d.ts.map +0 -1
  654. package/out/src/adapters/state-ny-notaries/adapter.js.map +0 -1
  655. package/out/src/adapters/state-tx-notaries/adapter.d.ts.map +0 -1
  656. package/out/src/adapters/state-tx-notaries/adapter.js.map +0 -1
  657. package/out/src/adapters/synth-po-box/adapter.d.ts.map +0 -1
  658. package/out/src/adapters/synth-po-box/adapter.js +0 -140
  659. package/out/src/adapters/synth-po-box/adapter.js.map +0 -1
  660. package/out/src/adapters/tiger/adapter.d.ts +0 -55
  661. package/out/src/adapters/tiger/adapter.d.ts.map +0 -1
  662. package/out/src/adapters/tiger/adapter.js +0 -201
  663. package/out/src/adapters/tiger/adapter.js.map +0 -1
  664. package/out/src/adapters/tiger/street-decompose.d.ts.map +0 -1
  665. package/out/src/adapters/tiger/street-decompose.js +0 -90
  666. package/out/src/adapters/tiger/street-decompose.js.map +0 -1
  667. package/out/src/adapters/usgov-hrsa-fqhc/adapter.d.ts +0 -47
  668. package/out/src/adapters/usgov-hrsa-fqhc/adapter.d.ts.map +0 -1
  669. package/out/src/adapters/usgov-hrsa-fqhc/adapter.js +0 -139
  670. package/out/src/adapters/usgov-hrsa-fqhc/adapter.js.map +0 -1
  671. package/out/src/adapters/usgov-imls-pls/adapter.d.ts +0 -36
  672. package/out/src/adapters/usgov-imls-pls/adapter.d.ts.map +0 -1
  673. package/out/src/adapters/usgov-imls-pls/adapter.js +0 -114
  674. package/out/src/adapters/usgov-imls-pls/adapter.js.map +0 -1
  675. package/out/src/adapters/usgov-irs-bmf/adapter.d.ts +0 -37
  676. package/out/src/adapters/usgov-irs-bmf/adapter.d.ts.map +0 -1
  677. package/out/src/adapters/usgov-irs-bmf/adapter.js +0 -124
  678. package/out/src/adapters/usgov-irs-bmf/adapter.js.map +0 -1
  679. package/out/src/adapters/usgov-nad/adapter.d.ts +0 -48
  680. package/out/src/adapters/usgov-nad/adapter.d.ts.map +0 -1
  681. package/out/src/adapters/usgov-nad/adapter.js +0 -252
  682. package/out/src/adapters/usgov-nad/adapter.js.map +0 -1
  683. package/out/src/adapters/usgov-nppes/adapter.d.ts.map +0 -1
  684. package/out/src/adapters/usgov-nppes/adapter.js +0 -116
  685. package/out/src/adapters/usgov-nppes/adapter.js.map +0 -1
  686. package/out/src/adapters/usgov-samhsa-treatment-locator/adapter.d.ts.map +0 -1
  687. package/out/src/adapters/usgov-samhsa-treatment-locator/adapter.js +0 -156
  688. package/out/src/adapters/usgov-samhsa-treatment-locator/adapter.js.map +0 -1
  689. package/out/src/adapters/utils/index.d.ts +0 -150
  690. package/out/src/adapters/utils/index.d.ts.map +0 -1
  691. package/out/src/adapters/utils/index.js +0 -159
  692. package/out/src/adapters/utils/index.js.map +0 -1
  693. package/out/src/adapters/wof-admin-jp/adapter.d.ts.map +0 -1
  694. package/out/src/adapters/wof-admin-jp/adapter.js +0 -164
  695. package/out/src/adapters/wof-admin-jp/adapter.js.map +0 -1
  696. package/out/src/adapters/wof-admin-json/adapter.d.ts +0 -82
  697. package/out/src/adapters/wof-admin-json/adapter.d.ts.map +0 -1
  698. package/out/src/adapters/wof-admin-json/adapter.js +0 -224
  699. package/out/src/adapters/wof-admin-json/adapter.js.map +0 -1
  700. package/out/src/adapters/wof-json-rows.d.ts +0 -32
  701. package/out/src/adapters/wof-json-rows.d.ts.map +0 -1
  702. package/out/src/adapters/wof-json-rows.js +0 -45
  703. package/out/src/adapters/wof-json-rows.js.map +0 -1
  704. package/out/src/adapters/wof-postalcode-json/adapter.d.ts +0 -65
  705. package/out/src/adapters/wof-postalcode-json/adapter.d.ts.map +0 -1
  706. package/out/src/adapters/wof-postalcode-json/adapter.js +0 -160
  707. package/out/src/adapters/wof-postalcode-json/adapter.js.map +0 -1
  708. package/out/src/build.d.ts +0 -132
  709. package/out/src/build.d.ts.map +0 -1
  710. package/out/src/build.js +0 -251
  711. package/out/src/build.js.map +0 -1
  712. package/out/src/codex/us-fips-state.d.ts.map +0 -1
  713. package/out/src/codex/us-fips-state.js.map +0 -1
  714. package/out/src/index.d.ts +0 -14
  715. package/out/src/index.d.ts.map +0 -1
  716. package/out/src/index.js +0 -14
  717. package/out/src/index.js.map +0 -1
  718. package/out/src/name-prone-us-suffixes.d.ts +0 -12
  719. package/out/src/name-prone-us-suffixes.d.ts.map +0 -1
  720. package/out/src/name-prone-us-suffixes.js +0 -12
  721. package/out/src/name-prone-us-suffixes.js.map +0 -1
  722. package/out/src/parquet-wrapper/index.d.ts +0 -9
  723. package/out/src/parquet-wrapper/index.d.ts.map +0 -1
  724. package/out/src/parquet-wrapper/index.js +0 -9
  725. package/out/src/parquet-wrapper/index.js.map +0 -1
  726. package/out/src/parquet-wrapper/reader.d.ts +0 -34
  727. package/out/src/parquet-wrapper/reader.d.ts.map +0 -1
  728. package/out/src/parquet-wrapper/reader.js +0 -69
  729. package/out/src/parquet-wrapper/reader.js.map +0 -1
  730. package/out/src/parquet-wrapper/schema.d.ts +0 -49
  731. package/out/src/parquet-wrapper/schema.d.ts.map +0 -1
  732. package/out/src/parquet-wrapper/schema.js +0 -55
  733. package/out/src/parquet-wrapper/schema.js.map +0 -1
  734. package/out/src/parquet-wrapper/writer.d.ts +0 -46
  735. package/out/src/parquet-wrapper/writer.d.ts.map +0 -1
  736. package/out/src/parquet-wrapper/writer.js +0 -76
  737. package/out/src/parquet-wrapper/writer.js.map +0 -1
  738. package/out/src/runner.d.ts +0 -126
  739. package/out/src/runner.d.ts.map +0 -1
  740. package/out/src/runner.js +0 -189
  741. package/out/src/runner.js.map +0 -1
  742. package/out/src/shard-recipes/anchor-absorption.d.ts +0 -20
  743. package/out/src/shard-recipes/anchor-absorption.d.ts.map +0 -1
  744. package/out/src/shard-recipes/anchor-absorption.js +0 -82
  745. package/out/src/shard-recipes/anchor-absorption.js.map +0 -1
  746. package/out/src/shard-recipes/bare-country.d.ts +0 -25
  747. package/out/src/shard-recipes/bare-country.d.ts.map +0 -1
  748. package/out/src/shard-recipes/bare-country.js +0 -87
  749. package/out/src/shard-recipes/bare-country.js.map +0 -1
  750. package/out/src/shard-recipes/boundary-stress.d.ts +0 -20
  751. package/out/src/shard-recipes/boundary-stress.d.ts.map +0 -1
  752. package/out/src/shard-recipes/boundary-stress.js +0 -83
  753. package/out/src/shard-recipes/boundary-stress.js.map +0 -1
  754. package/out/src/shard-recipes/country-balanced.d.ts +0 -32
  755. package/out/src/shard-recipes/country-balanced.d.ts.map +0 -1
  756. package/out/src/shard-recipes/country-balanced.js +0 -406
  757. package/out/src/shard-recipes/country-balanced.js.map +0 -1
  758. package/out/src/shard-recipes/cz-pcfirst-preposition.d.ts +0 -22
  759. package/out/src/shard-recipes/cz-pcfirst-preposition.d.ts.map +0 -1
  760. package/out/src/shard-recipes/cz-pcfirst-preposition.js +0 -100
  761. package/out/src/shard-recipes/cz-pcfirst-preposition.js.map +0 -1
  762. package/out/src/shard-recipes/fr-admin-split.d.ts +0 -38
  763. package/out/src/shard-recipes/fr-admin-split.d.ts.map +0 -1
  764. package/out/src/shard-recipes/fr-admin-split.js +0 -188
  765. package/out/src/shard-recipes/fr-admin-split.js.map +0 -1
  766. package/out/src/shard-recipes/fr-bare-street.d.ts +0 -28
  767. package/out/src/shard-recipes/fr-bare-street.d.ts.map +0 -1
  768. package/out/src/shard-recipes/fr-bare-street.js +0 -143
  769. package/out/src/shard-recipes/fr-bare-street.js.map +0 -1
  770. package/out/src/shard-recipes/fr-fragment.d.ts +0 -77
  771. package/out/src/shard-recipes/fr-fragment.d.ts.map +0 -1
  772. package/out/src/shard-recipes/fr-fragment.js +0 -276
  773. package/out/src/shard-recipes/fr-fragment.js.map +0 -1
  774. package/out/src/shard-recipes/fr-lieudit.d.ts +0 -32
  775. package/out/src/shard-recipes/fr-lieudit.d.ts.map +0 -1
  776. package/out/src/shard-recipes/fr-lieudit.js +0 -226
  777. package/out/src/shard-recipes/fr-lieudit.js.map +0 -1
  778. package/out/src/shard-recipes/fr-order.d.ts +0 -38
  779. package/out/src/shard-recipes/fr-order.d.ts.map +0 -1
  780. package/out/src/shard-recipes/fr-order.js +0 -208
  781. package/out/src/shard-recipes/fr-order.js.map +0 -1
  782. package/out/src/shard-recipes/german.d.ts +0 -23
  783. package/out/src/shard-recipes/german.d.ts.map +0 -1
  784. package/out/src/shard-recipes/german.js +0 -132
  785. package/out/src/shard-recipes/german.js.map +0 -1
  786. package/out/src/shard-recipes/house-venue.d.ts +0 -18
  787. package/out/src/shard-recipes/house-venue.d.ts.map +0 -1
  788. package/out/src/shard-recipes/house-venue.js +0 -74
  789. package/out/src/shard-recipes/house-venue.js.map +0 -1
  790. package/out/src/shard-recipes/index.d.ts +0 -24
  791. package/out/src/shard-recipes/index.d.ts.map +0 -1
  792. package/out/src/shard-recipes/index.js +0 -89
  793. package/out/src/shard-recipes/index.js.map +0 -1
  794. package/out/src/shard-recipes/intersection.d.ts +0 -42
  795. package/out/src/shard-recipes/intersection.d.ts.map +0 -1
  796. package/out/src/shard-recipes/intersection.js +0 -460
  797. package/out/src/shard-recipes/intersection.js.map +0 -1
  798. package/out/src/shard-recipes/locale.d.ts +0 -135
  799. package/out/src/shard-recipes/locale.d.ts.map +0 -1
  800. package/out/src/shard-recipes/locale.js +0 -459
  801. package/out/src/shard-recipes/locale.js.map +0 -1
  802. package/out/src/shard-recipes/nl-postcode.d.ts +0 -26
  803. package/out/src/shard-recipes/nl-postcode.d.ts.map +0 -1
  804. package/out/src/shard-recipes/nl-postcode.js +0 -102
  805. package/out/src/shard-recipes/nl-postcode.js.map +0 -1
  806. package/out/src/shard-recipes/no-fragment.d.ts +0 -43
  807. package/out/src/shard-recipes/no-fragment.d.ts.map +0 -1
  808. package/out/src/shard-recipes/no-fragment.js +0 -188
  809. package/out/src/shard-recipes/no-fragment.js.map +0 -1
  810. package/out/src/shard-recipes/no-street-led.d.ts +0 -24
  811. package/out/src/shard-recipes/no-street-led.d.ts.map +0 -1
  812. package/out/src/shard-recipes/no-street-led.js +0 -121
  813. package/out/src/shard-recipes/no-street-led.js.map +0 -1
  814. package/out/src/shard-recipes/no-street.d.ts +0 -18
  815. package/out/src/shard-recipes/no-street.d.ts.map +0 -1
  816. package/out/src/shard-recipes/no-street.js +0 -72
  817. package/out/src/shard-recipes/no-street.js.map +0 -1
  818. package/out/src/shard-recipes/po-box-cedex.d.ts +0 -38
  819. package/out/src/shard-recipes/po-box-cedex.d.ts.map +0 -1
  820. package/out/src/shard-recipes/po-box-cedex.js +0 -726
  821. package/out/src/shard-recipes/po-box-cedex.js.map +0 -1
  822. package/out/src/shard-recipes/po-box.d.ts +0 -17
  823. package/out/src/shard-recipes/po-box.d.ts.map +0 -1
  824. package/out/src/shard-recipes/po-box.js +0 -101
  825. package/out/src/shard-recipes/po-box.js.map +0 -1
  826. package/out/src/shard-recipes/reviewed-postcode-tail.d.ts +0 -47
  827. package/out/src/shard-recipes/reviewed-postcode-tail.d.ts.map +0 -1
  828. package/out/src/shard-recipes/reviewed-postcode-tail.js +0 -125
  829. package/out/src/shard-recipes/reviewed-postcode-tail.js.map +0 -1
  830. package/out/src/shard-recipes/scaffold.d.ts +0 -246
  831. package/out/src/shard-recipes/scaffold.d.ts.map +0 -1
  832. package/out/src/shard-recipes/scaffold.js +0 -137
  833. package/out/src/shard-recipes/scaffold.js.map +0 -1
  834. package/out/src/shard-recipes/si-bare-village.d.ts +0 -32
  835. package/out/src/shard-recipes/si-bare-village.d.ts.map +0 -1
  836. package/out/src/shard-recipes/si-bare-village.js +0 -88
  837. package/out/src/shard-recipes/si-bare-village.js.map +0 -1
  838. package/out/src/shard-recipes/street-affix.d.ts +0 -89
  839. package/out/src/shard-recipes/street-affix.d.ts.map +0 -1
  840. package/out/src/shard-recipes/street-affix.js +0 -578
  841. package/out/src/shard-recipes/street-affix.js.map +0 -1
  842. package/out/src/shard-recipes/street-bare.d.ts +0 -25
  843. package/out/src/shard-recipes/street-bare.d.ts.map +0 -1
  844. package/out/src/shard-recipes/street-bare.js +0 -86
  845. package/out/src/shard-recipes/street-bare.js.map +0 -1
  846. package/out/src/shard-recipes/street.d.ts +0 -15
  847. package/out/src/shard-recipes/street.d.ts.map +0 -1
  848. package/out/src/shard-recipes/street.js +0 -69
  849. package/out/src/shard-recipes/street.js.map +0 -1
  850. package/out/src/shard-recipes/sub-venue-sources.d.ts +0 -228
  851. package/out/src/shard-recipes/sub-venue-sources.d.ts.map +0 -1
  852. package/out/src/shard-recipes/sub-venue-sources.js +0 -664
  853. package/out/src/shard-recipes/sub-venue-sources.js.map +0 -1
  854. package/out/src/shard-recipes/sub-venue.d.ts +0 -269
  855. package/out/src/shard-recipes/sub-venue.d.ts.map +0 -1
  856. package/out/src/shard-recipes/sub-venue.js +0 -710
  857. package/out/src/shard-recipes/sub-venue.js.map +0 -1
  858. package/out/src/shard-recipes/trailing-region.d.ts +0 -74
  859. package/out/src/shard-recipes/trailing-region.d.ts.map +0 -1
  860. package/out/src/shard-recipes/trailing-region.js +0 -157
  861. package/out/src/shard-recipes/trailing-region.js.map +0 -1
  862. package/out/src/shard-recipes/unit.d.ts +0 -29
  863. package/out/src/shard-recipes/unit.d.ts.map +0 -1
  864. package/out/src/shard-recipes/unit.js +0 -243
  865. package/out/src/shard-recipes/unit.js.map +0 -1
  866. package/out/src/synthesizers/anchor-absorption.d.ts +0 -63
  867. package/out/src/synthesizers/anchor-absorption.d.ts.map +0 -1
  868. package/out/src/synthesizers/anchor-absorption.js +0 -223
  869. package/out/src/synthesizers/anchor-absorption.js.map +0 -1
  870. package/out/src/synthesizers/boundary-stress.d.ts +0 -78
  871. package/out/src/synthesizers/boundary-stress.d.ts.map +0 -1
  872. package/out/src/synthesizers/boundary-stress.js +0 -455
  873. package/out/src/synthesizers/boundary-stress.js.map +0 -1
  874. package/out/src/synthesizers/german.d.ts +0 -107
  875. package/out/src/synthesizers/german.d.ts.map +0 -1
  876. package/out/src/synthesizers/german.js +0 -148
  877. package/out/src/synthesizers/german.js.map +0 -1
  878. package/out/src/synthesizers/house-venue.d.ts +0 -56
  879. package/out/src/synthesizers/house-venue.d.ts.map +0 -1
  880. package/out/src/synthesizers/house-venue.js +0 -267
  881. package/out/src/synthesizers/house-venue.js.map +0 -1
  882. package/out/src/synthesizers/intersection.d.ts +0 -52
  883. package/out/src/synthesizers/intersection.d.ts.map +0 -1
  884. package/out/src/synthesizers/intersection.js +0 -175
  885. package/out/src/synthesizers/intersection.js.map +0 -1
  886. package/out/src/synthesizers/no-street.d.ts +0 -72
  887. package/out/src/synthesizers/no-street.d.ts.map +0 -1
  888. package/out/src/synthesizers/no-street.js +0 -282
  889. package/out/src/synthesizers/no-street.js.map +0 -1
  890. package/out/src/synthesizers/po-box.d.ts +0 -104
  891. package/out/src/synthesizers/po-box.d.ts.map +0 -1
  892. package/out/src/synthesizers/po-box.js +0 -266
  893. package/out/src/synthesizers/po-box.js.map +0 -1
  894. package/out/src/synthesizers/street.d.ts +0 -54
  895. package/out/src/synthesizers/street.d.ts.map +0 -1
  896. package/out/src/synthesizers/street.js +0 -221
  897. package/out/src/synthesizers/street.js.map +0 -1
  898. package/out/src/synthesizers/utils.d.ts +0 -203
  899. package/out/src/synthesizers/utils.d.ts.map +0 -1
  900. package/out/src/synthesizers/utils.js +0 -708
  901. package/out/src/synthesizers/utils.js.map +0 -1
  902. package/out/src/tools/align-shard.d.ts +0 -8
  903. package/out/src/tools/align-shard.d.ts.map +0 -1
  904. package/out/src/tools/align-shard.js +0 -56
  905. package/out/src/tools/align-shard.js.map +0 -1
  906. package/out/src/tools/audit.d.ts +0 -28
  907. package/out/src/tools/audit.d.ts.map +0 -1
  908. package/out/src/tools/audit.js +0 -285
  909. package/out/src/tools/audit.js.map +0 -1
  910. package/out/src/tools/corpus-stats.d.ts +0 -44
  911. package/out/src/tools/corpus-stats.d.ts.map +0 -1
  912. package/out/src/tools/corpus-stats.js +0 -138
  913. package/out/src/tools/corpus-stats.js.map +0 -1
  914. package/out/src/tools/fetch/ban.d.ts +0 -31
  915. package/out/src/tools/fetch/ban.d.ts.map +0 -1
  916. package/out/src/tools/fetch/ban.js +0 -239
  917. package/out/src/tools/fetch/ban.js.map +0 -1
  918. package/out/src/tools/fetch/download.d.ts +0 -78
  919. package/out/src/tools/fetch/download.d.ts.map +0 -1
  920. package/out/src/tools/fetch/download.js +0 -116
  921. package/out/src/tools/fetch/download.js.map +0 -1
  922. package/out/src/tools/fetch/geonames-dump.d.ts +0 -87
  923. package/out/src/tools/fetch/geonames-dump.d.ts.map +0 -1
  924. package/out/src/tools/fetch/geonames-dump.js +0 -178
  925. package/out/src/tools/fetch/geonames-dump.js.map +0 -1
  926. package/out/src/tools/fetch/geonames-postal.d.ts +0 -76
  927. package/out/src/tools/fetch/geonames-postal.d.ts.map +0 -1
  928. package/out/src/tools/fetch/geonames-postal.js +0 -125
  929. package/out/src/tools/fetch/geonames-postal.js.map +0 -1
  930. package/out/src/tools/fetch/hrsa.d.ts +0 -18
  931. package/out/src/tools/fetch/hrsa.d.ts.map +0 -1
  932. package/out/src/tools/fetch/hrsa.js +0 -46
  933. package/out/src/tools/fetch/hrsa.js.map +0 -1
  934. package/out/src/tools/fetch/imls-pls.d.ts +0 -25
  935. package/out/src/tools/fetch/imls-pls.d.ts.map +0 -1
  936. package/out/src/tools/fetch/imls-pls.js +0 -108
  937. package/out/src/tools/fetch/imls-pls.js.map +0 -1
  938. package/out/src/tools/fetch/index.d.ts +0 -144
  939. package/out/src/tools/fetch/index.d.ts.map +0 -1
  940. package/out/src/tools/fetch/index.js +0 -143
  941. package/out/src/tools/fetch/index.js.map +0 -1
  942. package/out/src/tools/fetch/nad.d.ts +0 -70
  943. package/out/src/tools/fetch/nad.d.ts.map +0 -1
  944. package/out/src/tools/fetch/nad.js +0 -234
  945. package/out/src/tools/fetch/nad.js.map +0 -1
  946. package/out/src/tools/fetch/nppes.d.ts +0 -26
  947. package/out/src/tools/fetch/nppes.d.ts.map +0 -1
  948. package/out/src/tools/fetch/nppes.js +0 -126
  949. package/out/src/tools/fetch/nppes.js.map +0 -1
  950. package/out/src/tools/fetch/openaddresses.d.ts +0 -61
  951. package/out/src/tools/fetch/openaddresses.d.ts.map +0 -1
  952. package/out/src/tools/fetch/openaddresses.js +0 -317
  953. package/out/src/tools/fetch/openaddresses.js.map +0 -1
  954. package/out/src/tools/fetch/ourairports.d.ts +0 -45
  955. package/out/src/tools/fetch/ourairports.d.ts.map +0 -1
  956. package/out/src/tools/fetch/ourairports.js +0 -128
  957. package/out/src/tools/fetch/ourairports.js.map +0 -1
  958. package/out/src/tools/fetch/ppd.d.ts.map +0 -1
  959. package/out/src/tools/fetch/ppd.js +0 -100
  960. package/out/src/tools/fetch/ppd.js.map +0 -1
  961. package/out/src/tools/fetch/state-hi-schools.d.ts +0 -25
  962. package/out/src/tools/fetch/state-hi-schools.d.ts.map +0 -1
  963. package/out/src/tools/fetch/state-hi-schools.js +0 -162
  964. package/out/src/tools/fetch/state-hi-schools.js.map +0 -1
  965. package/out/src/tools/fetch/state-sources.d.ts +0 -26
  966. package/out/src/tools/fetch/state-sources.d.ts.map +0 -1
  967. package/out/src/tools/fetch/state-sources.js +0 -111
  968. package/out/src/tools/fetch/state-sources.js.map +0 -1
  969. package/out/src/tools/fetch/tiger-full.d.ts +0 -42
  970. package/out/src/tools/fetch/tiger-full.d.ts.map +0 -1
  971. package/out/src/tools/fetch/tiger-full.js +0 -248
  972. package/out/src/tools/fetch/tiger-full.js.map +0 -1
  973. package/out/src/tools/fetch/wikidata-subvenue.d.ts +0 -171
  974. package/out/src/tools/fetch/wikidata-subvenue.d.ts.map +0 -1
  975. package/out/src/tools/fetch/wikidata-subvenue.js +0 -275
  976. package/out/src/tools/fetch/wikidata-subvenue.js.map +0 -1
  977. package/out/src/tools/gb-title-case.d.ts.map +0 -1
  978. package/out/src/tools/gb-title-case.js.map +0 -1
  979. package/out/src/tools/golden-expand.d.ts +0 -90
  980. package/out/src/tools/golden-expand.d.ts.map +0 -1
  981. package/out/src/tools/golden-expand.js +0 -413
  982. package/out/src/tools/golden-expand.js.map +0 -1
  983. package/out/src/tools/golden-promote.d.ts.map +0 -1
  984. package/out/src/tools/golden-promote.js +0 -244
  985. package/out/src/tools/golden-promote.js.map +0 -1
  986. package/out/src/tools/golden-relabel-street.d.ts +0 -196
  987. package/out/src/tools/golden-relabel-street.d.ts.map +0 -1
  988. package/out/src/tools/golden-relabel-street.js +0 -440
  989. package/out/src/tools/golden-relabel-street.js.map +0 -1
  990. package/out/src/tools/index.d.ts +0 -28
  991. package/out/src/tools/index.d.ts.map +0 -1
  992. package/out/src/tools/index.js +0 -28
  993. package/out/src/tools/index.js.map +0 -1
  994. package/out/src/tools/ingest-csv.d.ts.map +0 -1
  995. package/out/src/tools/ingest-csv.js +0 -296
  996. package/out/src/tools/ingest-csv.js.map +0 -1
  997. package/out/src/tools/jsonl-to-parquet.d.ts +0 -61
  998. package/out/src/tools/jsonl-to-parquet.d.ts.map +0 -1
  999. package/out/src/tools/jsonl-to-parquet.js +0 -164
  1000. package/out/src/tools/jsonl-to-parquet.js.map +0 -1
  1001. package/out/src/tools/lint-shard-vocab.d.ts +0 -90
  1002. package/out/src/tools/lint-shard-vocab.d.ts.map +0 -1
  1003. package/out/src/tools/lint-shard-vocab.js +0 -281
  1004. package/out/src/tools/lint-shard-vocab.js.map +0 -1
  1005. package/out/src/tools/lint-shard.d.ts +0 -93
  1006. package/out/src/tools/lint-shard.d.ts.map +0 -1
  1007. package/out/src/tools/lint-shard.js +0 -354
  1008. package/out/src/tools/lint-shard.js.map +0 -1
  1009. package/out/src/tools/overlay-manifest.d.ts +0 -39
  1010. package/out/src/tools/overlay-manifest.d.ts.map +0 -1
  1011. package/out/src/tools/overlay-manifest.js +0 -98
  1012. package/out/src/tools/overlay-manifest.js.map +0 -1
  1013. package/out/src/tools/overture-subvenue.d.ts +0 -112
  1014. package/out/src/tools/overture-subvenue.d.ts.map +0 -1
  1015. package/out/src/tools/overture-subvenue.js +0 -144
  1016. package/out/src/tools/overture-subvenue.js.map +0 -1
  1017. package/out/src/tools/postcode-triples.d.ts +0 -175
  1018. package/out/src/tools/postcode-triples.d.ts.map +0 -1
  1019. package/out/src/tools/postcode-triples.js +0 -304
  1020. package/out/src/tools/postcode-triples.js.map +0 -1
  1021. package/out/src/tools/shard-kryptonite.d.ts +0 -32
  1022. package/out/src/tools/shard-kryptonite.d.ts.map +0 -1
  1023. package/out/src/tools/shard-kryptonite.js +0 -100
  1024. package/out/src/tools/shard-kryptonite.js.map +0 -1
  1025. package/out/src/tools/shard-translit.d.ts +0 -51
  1026. package/out/src/tools/shard-translit.d.ts.map +0 -1
  1027. package/out/src/tools/shard-translit.js +0 -175
  1028. package/out/src/tools/shard-translit.js.map +0 -1
  1029. package/out/src/tools/sub-venue/harvest.d.ts +0 -100
  1030. package/out/src/tools/sub-venue/harvest.d.ts.map +0 -1
  1031. package/out/src/tools/sub-venue/harvest.js +0 -168
  1032. package/out/src/tools/sub-venue/harvest.js.map +0 -1
  1033. package/out/src/tools/sub-venue/head-nouns.d.ts +0 -50
  1034. package/out/src/tools/sub-venue/head-nouns.d.ts.map +0 -1
  1035. package/out/src/tools/sub-venue/head-nouns.js +0 -210
  1036. package/out/src/tools/sub-venue/head-nouns.js.map +0 -1
  1037. package/out/src/tools/sub-venue/surfaces.d.ts +0 -45
  1038. package/out/src/tools/sub-venue/surfaces.d.ts.map +0 -1
  1039. package/out/src/tools/sub-venue/surfaces.js +0 -77
  1040. package/out/src/tools/sub-venue/surfaces.js.map +0 -1
  1041. package/out/src/tools/sub-venue/table.d.ts +0 -229
  1042. package/out/src/tools/sub-venue/table.d.ts.map +0 -1
  1043. package/out/src/tools/sub-venue/table.js +0 -108
  1044. package/out/src/tools/sub-venue/table.js.map +0 -1
  1045. package/out/src/tools/sub-venue/wikidata.d.ts +0 -26
  1046. package/out/src/tools/sub-venue/wikidata.d.ts.map +0 -1
  1047. package/out/src/tools/sub-venue/wikidata.js +0 -62
  1048. package/out/src/tools/sub-venue/wikidata.js.map +0 -1
  1049. package/out/src/tools/sub-venue-lexicon.d.ts +0 -156
  1050. package/out/src/tools/sub-venue-lexicon.d.ts.map +0 -1
  1051. package/out/src/tools/sub-venue-lexicon.js +0 -282
  1052. package/out/src/tools/sub-venue-lexicon.js.map +0 -1
  1053. package/out/src/tools/sub-venue-promotions.d.ts +0 -94
  1054. package/out/src/tools/sub-venue-promotions.d.ts.map +0 -1
  1055. package/out/src/tools/sub-venue-promotions.js +0 -266
  1056. package/out/src/tools/sub-venue-promotions.js.map +0 -1
  1057. package/out/src/types.d.ts +0 -221
  1058. package/out/src/types.d.ts.map +0 -1
  1059. package/out/src/types.js.map +0 -1
  1060. package/out/src/utils/align.d.ts +0 -93
  1061. package/out/src/utils/align.d.ts.map +0 -1
  1062. package/out/src/utils/align.js +0 -234
  1063. package/out/src/utils/align.js.map +0 -1
  1064. package/out/src/utils/golden.d.ts +0 -69
  1065. package/out/src/utils/golden.d.ts.map +0 -1
  1066. package/out/src/utils/golden.js +0 -127
  1067. package/out/src/utils/golden.js.map +0 -1
  1068. package/out/src/utils/index.d.ts +0 -14
  1069. package/out/src/utils/index.d.ts.map +0 -1
  1070. package/out/src/utils/index.js +0 -14
  1071. package/out/src/utils/index.js.map +0 -1
  1072. package/out/src/utils/license.d.ts.map +0 -1
  1073. package/out/src/utils/license.js.map +0 -1
  1074. package/out/src/utils/parquet.d.ts +0 -162
  1075. package/out/src/utils/parquet.d.ts.map +0 -1
  1076. package/out/src/utils/parquet.js +0 -262
  1077. package/out/src/utils/parquet.js.map +0 -1
  1078. package/out/src/utils/split.d.ts +0 -127
  1079. package/out/src/utils/split.d.ts.map +0 -1
  1080. package/out/src/utils/split.js +0 -204
  1081. package/out/src/utils/split.js.map +0 -1
  1082. package/out/src/utils/tokenize.d.ts +0 -56
  1083. package/out/src/utils/tokenize.d.ts.map +0 -1
  1084. package/out/src/utils/tokenize.js +0 -48
  1085. package/out/src/utils/tokenize.js.map +0 -1
  1086. package/out/src/utils/wof-json.d.ts +0 -109
  1087. package/out/src/utils/wof-json.d.ts.map +0 -1
  1088. package/out/src/utils/wof-json.js +0 -173
  1089. package/out/src/utils/wof-json.js.map +0 -1
  1090. package/src/adapters/ban/adapter.ts +0 -191
  1091. package/src/adapters/ban/street-decompose.ts +0 -96
  1092. package/src/adapters/fcc-bdc/adapter.ts +0 -174
  1093. package/src/adapters/geonames/adapter.ts +0 -200
  1094. package/src/adapters/geonames-postal/adapter.ts +0 -119
  1095. package/src/adapters/gnaf/adapter.ts +0 -149
  1096. package/src/adapters/gnaf/assemble.ts +0 -226
  1097. package/src/adapters/index.ts +0 -149
  1098. package/src/adapters/openaddresses/adapter.ts +0 -251
  1099. package/src/adapters/overture/adapter.ts +0 -162
  1100. package/src/adapters/state-hi-schools/adapter.ts +0 -164
  1101. package/src/adapters/synth-po-box/adapter.ts +0 -204
  1102. package/src/adapters/tiger/adapter.ts +0 -253
  1103. package/src/adapters/tiger/street-decompose.ts +0 -111
  1104. package/src/adapters/usgov-hrsa-fqhc/adapter.ts +0 -183
  1105. package/src/adapters/usgov-imls-pls/adapter.ts +0 -143
  1106. package/src/adapters/usgov-irs-bmf/adapter.ts +0 -163
  1107. package/src/adapters/usgov-nad/adapter.ts +0 -348
  1108. package/src/adapters/usgov-nppes/adapter.ts +0 -159
  1109. package/src/adapters/usgov-samhsa-treatment-locator/adapter.ts +0 -204
  1110. package/src/adapters/utils/index.ts +0 -233
  1111. package/src/adapters/wof-admin-jp/adapter.ts +0 -216
  1112. package/src/adapters/wof-admin-json/adapter.ts +0 -256
  1113. package/src/adapters/wof-json-rows.ts +0 -79
  1114. package/src/adapters/wof-postalcode-json/adapter.ts +0 -183
  1115. package/src/build.ts +0 -386
  1116. package/src/index.ts +0 -14
  1117. package/src/name-prone-us-suffixes.ts +0 -12
  1118. package/src/parquet-wrapper/index.ts +0 -9
  1119. package/src/parquet-wrapper/reader.ts +0 -97
  1120. package/src/parquet-wrapper/schema.ts +0 -88
  1121. package/src/parquet-wrapper/writer.ts +0 -110
  1122. package/src/runner.ts +0 -317
  1123. package/src/shard-recipes/anchor-absorption.ts +0 -103
  1124. package/src/shard-recipes/bare-country.ts +0 -95
  1125. package/src/shard-recipes/boundary-stress.ts +0 -101
  1126. package/src/shard-recipes/country-balanced.ts +0 -524
  1127. package/src/shard-recipes/cz-pcfirst-preposition.ts +0 -111
  1128. package/src/shard-recipes/fr-admin-split.ts +0 -239
  1129. package/src/shard-recipes/fr-bare-street.ts +0 -170
  1130. package/src/shard-recipes/fr-fragment.ts +0 -332
  1131. package/src/shard-recipes/fr-lieudit.ts +0 -302
  1132. package/src/shard-recipes/fr-order.ts +0 -258
  1133. package/src/shard-recipes/german.ts +0 -170
  1134. package/src/shard-recipes/house-venue.ts +0 -88
  1135. package/src/shard-recipes/index.ts +0 -95
  1136. package/src/shard-recipes/intersection.ts +0 -630
  1137. package/src/shard-recipes/locale.ts +0 -599
  1138. package/src/shard-recipes/nl-postcode.ts +0 -115
  1139. package/src/shard-recipes/no-fragment.ts +0 -219
  1140. package/src/shard-recipes/no-street-led.ts +0 -143
  1141. package/src/shard-recipes/no-street.ts +0 -86
  1142. package/src/shard-recipes/po-box-cedex.ts +0 -920
  1143. package/src/shard-recipes/po-box.ts +0 -119
  1144. package/src/shard-recipes/reviewed-postcode-tail.ts +0 -189
  1145. package/src/shard-recipes/scaffold.ts +0 -360
  1146. package/src/shard-recipes/si-bare-village.ts +0 -97
  1147. package/src/shard-recipes/street-affix.ts +0 -826
  1148. package/src/shard-recipes/street-bare.ts +0 -101
  1149. package/src/shard-recipes/street.ts +0 -82
  1150. package/src/shard-recipes/sub-venue-sources.ts +0 -885
  1151. package/src/shard-recipes/sub-venue.ts +0 -984
  1152. package/src/shard-recipes/trailing-region.ts +0 -183
  1153. package/src/shard-recipes/unit.ts +0 -321
  1154. package/src/synthesizers/anchor-absorption.ts +0 -290
  1155. package/src/synthesizers/boundary-stress.ts +0 -531
  1156. package/src/synthesizers/german.ts +0 -251
  1157. package/src/synthesizers/house-venue.ts +0 -330
  1158. package/src/synthesizers/intersection.ts +0 -232
  1159. package/src/synthesizers/no-street.ts +0 -349
  1160. package/src/synthesizers/po-box.ts +0 -339
  1161. package/src/synthesizers/street.ts +0 -274
  1162. package/src/synthesizers/utils.ts +0 -903
  1163. package/src/tools/align-shard.ts +0 -70
  1164. package/src/tools/audit.ts +0 -399
  1165. package/src/tools/corpus-stats.ts +0 -184
  1166. package/src/tools/fetch/ban.ts +0 -290
  1167. package/src/tools/fetch/download.ts +0 -176
  1168. package/src/tools/fetch/geonames-dump.ts +0 -267
  1169. package/src/tools/fetch/geonames-postal.ts +0 -180
  1170. package/src/tools/fetch/hrsa.ts +0 -68
  1171. package/src/tools/fetch/imls-pls.ts +0 -158
  1172. package/src/tools/fetch/index.ts +0 -147
  1173. package/src/tools/fetch/nad.ts +0 -342
  1174. package/src/tools/fetch/nppes.ts +0 -174
  1175. package/src/tools/fetch/openaddresses.ts +0 -404
  1176. package/src/tools/fetch/ourairports.ts +0 -171
  1177. package/src/tools/fetch/ppd.ts +0 -137
  1178. package/src/tools/fetch/state-hi-schools.ts +0 -208
  1179. package/src/tools/fetch/state-sources.ts +0 -155
  1180. package/src/tools/fetch/tiger-full.ts +0 -354
  1181. package/src/tools/fetch/wikidata-subvenue.ts +0 -386
  1182. package/src/tools/golden-expand.ts +0 -584
  1183. package/src/tools/golden-promote.ts +0 -353
  1184. package/src/tools/golden-relabel-street.ts +0 -685
  1185. package/src/tools/index.ts +0 -28
  1186. package/src/tools/ingest-csv.ts +0 -422
  1187. package/src/tools/jsonl-to-parquet.ts +0 -221
  1188. package/src/tools/lint-shard-vocab.ts +0 -409
  1189. package/src/tools/lint-shard.ts +0 -543
  1190. package/src/tools/overlay-manifest.ts +0 -157
  1191. package/src/tools/overture-subvenue.ts +0 -215
  1192. package/src/tools/postcode-triples.ts +0 -375
  1193. package/src/tools/shard-kryptonite.ts +0 -139
  1194. package/src/tools/shard-translit.ts +0 -245
  1195. package/src/tools/sub-venue/harvest.ts +0 -235
  1196. package/src/tools/sub-venue/head-nouns.ts +0 -242
  1197. package/src/tools/sub-venue/surfaces.ts +0 -95
  1198. package/src/tools/sub-venue/table.ts +0 -281
  1199. package/src/tools/sub-venue/wikidata.ts +0 -85
  1200. package/src/tools/sub-venue-lexicon.ts +0 -431
  1201. package/src/tools/sub-venue-promotions.ts +0 -330
  1202. package/src/types.ts +0 -247
  1203. package/src/utils/align.ts +0 -331
  1204. package/src/utils/golden.ts +0 -176
  1205. package/src/utils/index.ts +0 -14
  1206. package/src/utils/parquet.ts +0 -391
  1207. package/src/utils/split.ts +0 -279
  1208. package/src/utils/tokenize.ts +0 -78
  1209. package/src/utils/wof-json.ts +0 -244
  1210. /package/{src → lib}/adapters/state-ia-contractors/adapter.ts +0 -0
  1211. /package/{src → lib}/adapters/state-ny-notaries/adapter.ts +0 -0
  1212. /package/{src → lib}/adapters/state-tx-notaries/adapter.ts +0 -0
  1213. /package/{src → lib}/codex/us-fips-state.ts +0 -0
  1214. /package/{src → lib}/tools/gb-title-case.ts +0 -0
  1215. /package/{src → lib}/utils/license.ts +0 -0
  1216. /package/out/{src/adapters → adapters}/ban/adapter.d.ts +0 -0
  1217. /package/out/{src/adapters → adapters}/ban/street-decompose.d.ts +0 -0
  1218. /package/out/{src/adapters → adapters}/fcc-bdc/adapter.d.ts +0 -0
  1219. /package/out/{src/adapters → adapters}/geonames/adapter.d.ts +0 -0
  1220. /package/out/{src/adapters → adapters}/openaddresses/adapter.d.ts +0 -0
  1221. /package/out/{src/adapters → adapters}/state-ia-contractors/adapter.d.ts +0 -0
  1222. /package/out/{src/adapters → adapters}/state-ia-contractors/adapter.js +0 -0
  1223. /package/out/{src/adapters → adapters}/state-ny-notaries/adapter.d.ts +0 -0
  1224. /package/out/{src/adapters → adapters}/state-ny-notaries/adapter.js +0 -0
  1225. /package/out/{src/adapters → adapters}/state-tx-notaries/adapter.d.ts +0 -0
  1226. /package/out/{src/adapters → adapters}/state-tx-notaries/adapter.js +0 -0
  1227. /package/out/{src/adapters → adapters}/synth-po-box/adapter.d.ts +0 -0
  1228. /package/out/{src/adapters → adapters}/tiger/street-decompose.d.ts +0 -0
  1229. /package/out/{src/adapters → adapters}/usgov-nppes/adapter.d.ts +0 -0
  1230. /package/out/{src/adapters → adapters}/usgov-samhsa-treatment-locator/adapter.d.ts +0 -0
  1231. /package/out/{src/adapters → adapters}/wof-admin-jp/adapter.d.ts +0 -0
  1232. /package/out/{src/codex → codex}/us-fips-state.d.ts +0 -0
  1233. /package/out/{src/codex → codex}/us-fips-state.js +0 -0
  1234. /package/out/{src/tools → tools}/fetch/ppd.d.ts +0 -0
  1235. /package/out/{src/tools → tools}/gb-title-case.d.ts +0 -0
  1236. /package/out/{src/tools → tools}/gb-title-case.js +0 -0
  1237. /package/out/{src/tools → tools}/golden-promote.d.ts +0 -0
  1238. /package/out/{src/tools → tools}/ingest-csv.d.ts +0 -0
  1239. /package/out/{src/types.js → types.js} +0 -0
  1240. /package/out/{src/utils → utils}/license.d.ts +0 -0
  1241. /package/out/{src/utils → utils}/license.js +0 -0
@@ -0,0 +1,452 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ *
6
+ * `intersection` slice recipe — the REAL-pair intersection training slice (#487). The model scored
7
+ * 0.0 on intersection_a/b because the training mix had ZERO intersection-labeled rows. This is
8
+ * the missing data. Ported from scripts/build-intersection-slice.mjs.
9
+ *
10
+ * STREET PAIRS ARE REAL: the same TIGER 2023 EDGES extraction as the eval builder
11
+ * (scripts/eval/build-intersection-real.ts) — a node where two road edges (MTFCC S1*) with
12
+ * distinct FULLNAMEs meet is a real crossing. Real pairs avoid teaching fake street-street
13
+ * co-occurrences.
14
+ *
15
+ * LEAKAGE POLICY (mirrors the affix slice's VT discipline):
16
+ *
17
+ * - TRAIN counties: Cook IL (grid city) + Morris NJ (suburb).
18
+ * - GOLDEN (`--golden`) county: Washington VT (rural) ONLY — the corpus defaultHoldout state.
19
+ * - Every crossing in data/eval/external/intersection-real.jsonl is excluded from BOTH modes, by node
20
+ * id AND by order-insensitive name pair (the eval shares all three counties).
21
+ *
22
+ * RENDERING: junction-format variety — padded/TIGHT `&` and `/`, `and`, `at`, `@`, leading-phrase
23
+ * `corner of` / `intersection of` — crossed with tails (bare / `, ST` / `, ST ZIP` / `, City, ST
24
+ * [ZIP]`) and case variants. ZIPs are the crossing's own TIGER edge ZIPL (real); the locality
25
+ * tail comes from the OA Cook-county ZIP→city majority map.
26
+ *
27
+ * AUDIT: every emitted row is label-checked on the RAW SURFACE via the #519 char-offset span
28
+ * triple. Any violation FAILS the build (throws). A JSON audit report lands next to the output.
29
+ *
30
+ * External inputs (`--edges-dir`, opts.edgesDir; both already on disk — do not re-download):
31
+ *
32
+ * - <edges-dir>/tl_2023_{17031,34027,50023}_edges.shp (unzipped TIGER 2023 EDGES; default
33
+ * `$MAILWOMAN_DATA_ROOT/census/tiger2023-edges`, where `mailwoman situs interpolation` puts them)
34
+ * - `$MAILWOMAN_DATA_ROOT/oa-cache/us__il__cook.zip` (ZIP→city tails)
35
+ */
36
+ import { dataRootPath } from "@mailwoman/core/data-root";
37
+ import { pathExists } from "@mailwoman/core/fs/readers";
38
+ import { writeLocalJSONFile } from "@mailwoman/core/fs/writers";
39
+ import { repoRootPath } from "@mailwoman/core/paths";
40
+ import { JSONSpliterator } from "spliterator";
41
+ import { stableSourceID } from "#adapters/utils";
42
+ import { makeMulberry32, readZippedCSVRecords } from "#recipes/scaffold";
43
+ import { pick, weightedPick } from "#synthesizers/utils";
44
+ import { alignRow } from "#utils";
45
+ import { connectDuckDB } from "#utils/parquet";
46
+ const TRAIN_COUNTIES = [
47
+ { fips: "17031", state: "IL", regime: "grid-city" },
48
+ { fips: "34027", state: "NJ", regime: "suburb" },
49
+ ];
50
+ const GOLDEN_COUNTIES = [{ fips: "50023", state: "VT", regime: "rural" }];
51
+ const EVAL_GOLD_PATH = repoRootPath("data", "eval", "external", "intersection-real.jsonl");
52
+ /**
53
+ * Where `mailwoman situs interpolation` unpacks the per-county TIGER EDGES shapefiles — a Census download, so it sits
54
+ * beside the other Census vintages under `census/`. `--edges-dir` overrides it.
55
+ */
56
+ const DEFAULT_EDGES_DIR = dataRootPath("census", "tiger2023-edges");
57
+ const OA_COOK = { zip: dataRootPath("oa-cache", "us__il__cook.zip"), csv: "us/il/cook.csv" };
58
+ const FORMS = [
59
+ { id: "amp", w: 0.2, render: (a, b) => `${a} & ${b}` },
60
+ { id: "and", w: 0.2, render: (a, b) => `${a} and ${b}` },
61
+ { id: "at", w: 0.12, render: (a, b) => `${a} at ${b}` },
62
+ { id: "slash", w: 0.08, render: (a, b) => `${a} / ${b}` },
63
+ { id: "slash-tight", w: 0.06, render: (a, b) => `${a}/${b}` },
64
+ { id: "amp-tight", w: 0.05, render: (a, b) => `${a}&${b}` },
65
+ { id: "at-sign", w: 0.06, render: (a, b) => `${a} @ ${b}` },
66
+ { id: "corner-of", w: 0.115, render: (a, b) => `corner of ${a} and ${b}` },
67
+ { id: "intersection-of", w: 0.115, render: (a, b) => `intersection of ${a} and ${b}` },
68
+ ];
69
+ const TAILS = [
70
+ { id: "bare", w: 0.55 },
71
+ { id: "region", w: 0.16 },
72
+ { id: "region-zip", w: 0.09 },
73
+ { id: "city-region", w: 0.08 },
74
+ { id: "city-region-zip", w: 0.12 },
75
+ ];
76
+ const CASES = [
77
+ { id: "as-is", w: 0.82, apply: (s) => s },
78
+ { id: "upper", w: 0.12, apply: (s) => s.toUpperCase() },
79
+ { id: "lower", w: 0.06, apply: (s) => s.toLowerCase() },
80
+ ];
81
+ /**
82
+ * Words a connector may contribute as O tokens. The audit rejects any O token outside this set — an unlabeled
83
+ * street/locality token would surface here.
84
+ */
85
+ const CONNECTOR_O_TOKENS = new Set(["and", "at", "of", "corner", "intersection"]);
86
+ /**
87
+ * Street names that would make the connector ambiguous or break verbatim alignment: embedded connector punctuation, or
88
+ * a standalone "and"/"at" word.
89
+ */
90
+ const BAD_NAME = /[,&@/]|\b(and|at)\b/i;
91
+ /**
92
+ * Punctuation a connector form may leave between spans (besides whitespace): `, & @ /`.
93
+ */
94
+ const CONNECTOR_PUNCT_RE = /^[\s,&@/]*$/;
95
+ /**
96
+ * Order-insensitive crossing key, for eval-leakage exclusion + pair dedup.
97
+ */
98
+ const pairKey = (a, b) => [a.toLowerCase(), b.toLowerCase()].toSorted().join("\u001F");
99
+ /**
100
+ * Load the eval's crossings so neither train nor golden ever sees them.
101
+ */
102
+ async function readEvalExclusions() {
103
+ const nodes = new Set();
104
+ const pairs = new Set();
105
+ if (!(await pathExists(EVAL_GOLD_PATH))) {
106
+ console.error(` WARN: eval gold not found at ${EVAL_GOLD_PATH} — no eval-leakage exclusion applied`);
107
+ return { nodes, pairs };
108
+ }
109
+ for await (const row of JSONSpliterator.fromAsync(EVAL_GOLD_PATH)) {
110
+ nodes.add(Number(row.node));
111
+ pairs.add(pairKey(row.components.intersection_a, row.components.intersection_b));
112
+ }
113
+ return { nodes, pairs };
114
+ }
115
+ /**
116
+ * Extract real crossings from one county's TIGER EDGES shapefile. Same query shape as the eval builder (2 incident
117
+ * distinct S1* FULLNAMEs at a node, both names >=6 chars), plus the edge ZIPL so tails can carry the crossing's own
118
+ * ZIP. Hash-ordered for seed-stable determinism.
119
+ */
120
+ async function extractCrossings(db, edgesDir, county, seed) {
121
+ const shp = `${edgesDir}/tl_2023_${county.fips}_edges.shp`;
122
+ const result = await db.runAndReadAll(`
123
+ WITH incidence AS (
124
+ SELECT TNIDF AS node, FULLNAME AS name, ZIPL AS zip
125
+ FROM ST_Read('${shp}') WHERE MTFCC LIKE 'S1%' AND FULLNAME IS NOT NULL
126
+ UNION ALL
127
+ SELECT TNIDT AS node, FULLNAME AS name, ZIPL AS zip
128
+ FROM ST_Read('${shp}') WHERE MTFCC LIKE 'S1%' AND FULLNAME IS NOT NULL
129
+ ),
130
+ nodes AS (
131
+ SELECT node,
132
+ list_sort(list_distinct(list(name))) AS names,
133
+ max(zip) AS zip
134
+ FROM incidence GROUP BY node
135
+ HAVING len(list_distinct(list(name))) = 2
136
+ )
137
+ SELECT node, names[1] AS a, names[2] AS b, zip,
138
+ hash(node::VARCHAR || '${seed}') AS h
139
+ FROM nodes
140
+ WHERE len(names[1]) >= 6 AND len(names[2]) >= 6
141
+ ORDER BY h
142
+ `);
143
+ const out = [];
144
+ for (const r of result.getRowObjects()) {
145
+ out.push({
146
+ a: String(r.a),
147
+ b: String(r.b),
148
+ zip: r.zip == null ? null : String(r.zip),
149
+ node: Number(r.node),
150
+ fips: county.fips,
151
+ state: county.state,
152
+ });
153
+ }
154
+ return out;
155
+ }
156
+ /**
157
+ * ZIP → majority city from the cached OA Cook-county CSV (real ZIP/city pairings).
158
+ */
159
+ async function buildZipCityMap() {
160
+ const counts = new Map();
161
+ // zip → Map(city → n)
162
+ for await (const row of readZippedCSVRecords(OA_COOK.zip, OA_COOK.csv)) {
163
+ const city = row.city ?? "";
164
+ const zip = row.postcode ?? "";
165
+ if (!city || !/^\d{5}$/.test(zip) || BAD_NAME.test(city))
166
+ continue;
167
+ let byCity = counts.get(zip);
168
+ if (!byCity) {
169
+ counts.set(zip, (byCity = new Map()));
170
+ }
171
+ byCity.set(city, (byCity.get(city) ?? 0) + 1);
172
+ }
173
+ const map = new Map();
174
+ for (const [zip, byCity] of counts) {
175
+ let best = null;
176
+ for (const [city, n] of byCity)
177
+ if (!best || n > best.n) {
178
+ best = { city, n };
179
+ }
180
+ if (best) {
181
+ map.set(zip, best.city);
182
+ }
183
+ }
184
+ return map;
185
+ }
186
+ /**
187
+ * Render one crossing → { raw, components, formID, tailID, caseID }. Components are inserted in claim order (streets
188
+ * first) so alignment can't grab a region/postcode lookalike inside a street.
189
+ */
190
+ function renderRow(random, crossing, zipCity) {
191
+ const form = weightedPick(FORMS, random, (f) => f.w);
192
+ const body = form.render(crossing.a, crossing.b);
193
+ let tail = weightedPick(TAILS, random, (t) => t.w);
194
+ const city = crossing.zip ? (zipCity.get(crossing.zip) ?? null) : null;
195
+ // Downgrade unsatisfiable tails (no ZIP on the edge / no city for the ZIP) to the region tail.
196
+ if ((tail.id === "region-zip" || tail.id === "city-region-zip") && !crossing.zip) {
197
+ tail = TAILS[1];
198
+ }
199
+ if ((tail.id === "city-region" || tail.id === "city-region-zip") && !city) {
200
+ tail = TAILS[1];
201
+ }
202
+ const components = { intersection_a: crossing.a, intersection_b: crossing.b };
203
+ let raw = body;
204
+ if (tail.id === "region") {
205
+ raw = `${body}, ${crossing.state}`;
206
+ components.region = crossing.state;
207
+ }
208
+ else if (tail.id === "region-zip") {
209
+ raw = `${body}, ${crossing.state} ${crossing.zip}`;
210
+ components.region = crossing.state;
211
+ components.postcode = crossing.zip;
212
+ }
213
+ else if (tail.id === "city-region") {
214
+ raw = `${body}, ${city}, ${crossing.state}`;
215
+ components.locality = city;
216
+ components.region = crossing.state;
217
+ }
218
+ else if (tail.id === "city-region-zip") {
219
+ raw = `${body}, ${city}, ${crossing.state} ${crossing.zip}`;
220
+ components.locality = city;
221
+ components.region = crossing.state;
222
+ components.postcode = crossing.zip;
223
+ }
224
+ const casing = weightedPick(CASES, random, (c) => c.w);
225
+ raw = casing.apply(raw);
226
+ // Components keep their original case; alignRow matches case-insensitively and labels the
227
+ // tokens of the (cased) raw — the parquet row carries tokens+labels only.
228
+ return { raw, components, formID: form.id, tailID: tail.id, caseID: casing.id };
229
+ }
230
+ /**
231
+ * Label-correctness audit for one aligned row, on the RAW SURFACE via the #519 span triple. Returns a list of
232
+ * violations (empty = clean). Re-derives the span checks independent of `alignRow`'s own assertion, so a builder bug
233
+ * can't vouch for itself.
234
+ */
235
+ function auditRow(row, components) {
236
+ const errors = [];
237
+ const { raw, tokens, labels, span_starts, span_ends, span_tags } = row;
238
+ if (tokens.length !== labels.length) {
239
+ errors.push("tokens/labels length mismatch");
240
+ }
241
+ if (!span_starts || !span_ends || !span_tags) {
242
+ errors.push("missing the char-offset span triple (#519)");
243
+ return errors;
244
+ }
245
+ if (span_starts.length !== span_ends.length || span_starts.length !== span_tags.length) {
246
+ errors.push(`span triple not parallel: ${span_starts.length}/${span_ends.length}/${span_tags.length}`);
247
+ return errors;
248
+ }
249
+ for (let i = 0; i < span_starts.length; i++) {
250
+ if (!(span_starts[i] >= 0 && span_starts[i] < span_ends[i] && span_ends[i] <= raw.length)) {
251
+ errors.push(`span ${span_tags[i]}@[${span_starts[i]}, ${span_ends[i]}) out of bounds`);
252
+ }
253
+ if (i > 0 && span_starts[i] < span_ends[i - 1]) {
254
+ errors.push(`spans unsorted/overlapping at index ${i}`);
255
+ }
256
+ }
257
+ if (errors.length)
258
+ return errors;
259
+ const compCount = Object.keys(components).length;
260
+ if (span_tags.length !== compCount) {
261
+ errors.push(`span count ${span_tags.length} != components ${compCount}`);
262
+ }
263
+ // Raw-surface reconstruction: each component's single span slices raw to the component verbatim.
264
+ for (const [tag, value] of Object.entries(components)) {
265
+ if (value == null)
266
+ continue;
267
+ const indices = span_tags.map((t, i) => (t === tag ? i : -1)).filter((i) => i >= 0);
268
+ if (indices.length !== 1) {
269
+ errors.push(`${tag}: expected 1 span, got ${indices.length}`);
270
+ continue;
271
+ }
272
+ const idx = indices[0];
273
+ const got = raw.slice(span_starts[idx], span_ends[idx]);
274
+ if (got.toLowerCase() !== value.toLowerCase()) {
275
+ errors.push(`${tag} span "${got}" != component "${value}"`);
276
+ }
277
+ }
278
+ // Negative space: every char outside the spans must be connector material.
279
+ let cursor = 0;
280
+ const uncovered = [];
281
+ for (let i = 0; i < span_starts.length; i++) {
282
+ if (span_starts[i] > cursor) {
283
+ uncovered.push(raw.slice(cursor, span_starts[i]));
284
+ }
285
+ cursor = span_ends[i];
286
+ }
287
+ if (cursor < raw.length) {
288
+ uncovered.push(raw.slice(cursor));
289
+ }
290
+ for (const segment of uncovered) {
291
+ const words = segment.match(/[\p{L}\p{N}]+/gu) ?? [];
292
+ for (const word of words) {
293
+ if (!CONNECTOR_O_TOKENS.has(word.toLowerCase())) {
294
+ errors.push(`illegal uncovered word "${word}"`);
295
+ }
296
+ }
297
+ const punctOnly = segment.replaceAll(/[\p{L}\p{N}]+/gu, "");
298
+ if (!CONNECTOR_PUNCT_RE.test(punctOnly)) {
299
+ errors.push(`illegal uncovered punctuation in "${segment}"`);
300
+ }
301
+ }
302
+ return errors;
303
+ }
304
+ /**
305
+ * Slice recipe registered with the corpus builder — see the file header for the parse behaviour it exists to exercise,
306
+ * and `description` below for the surface form it generates.
307
+ */
308
+ export const intersectionRecipe = {
309
+ name: "intersection",
310
+ description: "Real-pair intersection rows (US): TIGER 2023 EDGES crossings → audited intersection_a/b labels",
311
+ mode: "generate",
312
+ options: [
313
+ {
314
+ flag: "--edges-dir <dir>",
315
+ description: `Unzipped TIGER 2023 EDGES dir. Default ${DEFAULT_EDGES_DIR}`,
316
+ },
317
+ ],
318
+ async run(opts, write) {
319
+ // Legacy build-intersection-slice.mjs seeded `mulberry32(opts.seed)`.
320
+ const random = makeMulberry32(opts.seed);
321
+ const count = opts.count ?? 40_000;
322
+ const source = opts.sourceName ?? "synth-intersection";
323
+ const edgesDir = opts.edgesDir ?? DEFAULT_EDGES_DIR;
324
+ const counties = opts.golden ? GOLDEN_COUNTIES : TRAIN_COUNTIES;
325
+ const exclusions = await readEvalExclusions();
326
+ console.error(` eval exclusions: ${exclusions.nodes.size} nodes, ${exclusions.pairs.size} pairs`);
327
+ const db = await connectDuckDB();
328
+ await db.run("INSTALL spatial; LOAD spatial;");
329
+ // Pool real crossings: eval-excluded, connector-safe names, one crossing per distinct pair.
330
+ const pool = [];
331
+ const seenPairs = new Set();
332
+ const stats = { evalExcluded: 0, badName: 0, dupPair: 0 };
333
+ for (const county of counties) {
334
+ const crossings = await extractCrossings(db, edgesDir, county, opts.seed);
335
+ let kept = 0;
336
+ for (const c of crossings) {
337
+ const key = pairKey(c.a, c.b);
338
+ if (exclusions.nodes.has(c.node) || exclusions.pairs.has(key)) {
339
+ stats.evalExcluded++;
340
+ continue;
341
+ }
342
+ if (BAD_NAME.test(c.a) || BAD_NAME.test(c.b) || c.a.includes(c.b) || c.b.includes(c.a)) {
343
+ stats.badName++;
344
+ continue;
345
+ }
346
+ if (seenPairs.has(key)) {
347
+ stats.dupPair++;
348
+ continue;
349
+ }
350
+ seenPairs.add(key);
351
+ pool.push(c);
352
+ kept++;
353
+ }
354
+ console.error(` ${county.fips} (${county.state}, ${county.regime}): ${crossings.length} crossings, ${kept} kept`);
355
+ }
356
+ if (!pool.length) {
357
+ throw new Error(`No crossings found — are the TIGER EDGES shapefiles present in ${edgesDir}?`);
358
+ }
359
+ const zipCity = opts.golden ? new Map() : await buildZipCityMap();
360
+ if (!opts.golden) {
361
+ console.error(` zip→city map: ${zipCity.size} ZIPs (OA Cook)`);
362
+ }
363
+ let emitted = 0;
364
+ let skipped = 0;
365
+ let guard = 0;
366
+ const formCounts = {};
367
+ const tailCounts = {};
368
+ const caseCounts = {};
369
+ const countyCounts = {};
370
+ const usedCrossings = new Set();
371
+ const seenRaw = new Set();
372
+ const auditErrors = [];
373
+ const samples = [];
374
+ while (emitted < count && guard++ < count * 10) {
375
+ const crossing = pick(pool, random);
376
+ const { raw, components, formID, tailID, caseID } = renderRow(random, crossing, zipCity);
377
+ if (seenRaw.has(raw)) {
378
+ skipped++;
379
+ continue;
380
+ }
381
+ if (opts.golden) {
382
+ seenRaw.add(raw);
383
+ write(JSON.stringify({ raw, components, country: "US", form: formID }) + "\n");
384
+ formCounts[formID] = (formCounts[formID] ?? 0) + 1;
385
+ tailCounts[tailID] = (tailCounts[tailID] ?? 0) + 1;
386
+ caseCounts[caseID] = (caseCounts[caseID] ?? 0) + 1;
387
+ countyCounts[crossing.fips] = (countyCounts[crossing.fips] ?? 0) + 1;
388
+ usedCrossings.add(crossing.node);
389
+ emitted++;
390
+ continue;
391
+ }
392
+ const canonical = {
393
+ raw,
394
+ components,
395
+ country: "US",
396
+ locale: "en-US",
397
+ source,
398
+ source_id: stableSourceID(source, components),
399
+ corpus_version: "0.4.0",
400
+ license: "TIGER/Line 2023 EDGES (US Census, public domain) real street pairs; OA Cook IL zip-to-city tails",
401
+ };
402
+ // Verbatim-only alignment: raw is built from the component values, so a fuzzy fallback could
403
+ // only ever mislabel (e.g. claim a lookalike window for a near-duplicate street).
404
+ const aligned = alignRow(canonical, { maxEditDistance: 0 });
405
+ if (aligned.kind !== "labeled" || !aligned.row) {
406
+ skipped++;
407
+ continue;
408
+ }
409
+ const violations = auditRow(aligned.row, components);
410
+ if (violations.length) {
411
+ auditErrors.push({ raw, violations });
412
+ continue;
413
+ }
414
+ seenRaw.add(raw);
415
+ write(JSON.stringify({ ...aligned.row, synth_method: "intersection", synth_base_id: null }) + "\n");
416
+ formCounts[formID] = (formCounts[formID] ?? 0) + 1;
417
+ tailCounts[tailID] = (tailCounts[tailID] ?? 0) + 1;
418
+ caseCounts[caseID] = (caseCounts[caseID] ?? 0) + 1;
419
+ countyCounts[crossing.fips] = (countyCounts[crossing.fips] ?? 0) + 1;
420
+ usedCrossings.add(crossing.node);
421
+ if (samples.length < FORMS.length && !samples.some((s) => s.form === formID)) {
422
+ samples.push({ form: formID, raw, tokens: aligned.row.tokens, labels: aligned.row.labels });
423
+ }
424
+ emitted++;
425
+ }
426
+ const report = {
427
+ mode: opts.golden ? "golden" : "train",
428
+ rows: emitted,
429
+ skipped,
430
+ pool: { crossings: pool.length, used: usedCrossings.size, ...stats },
431
+ per_county: countyCounts,
432
+ forms: formCounts,
433
+ tails: tailCounts,
434
+ cases: caseCounts,
435
+ audit: { errors: auditErrors.length, examples: auditErrors.slice(0, 10) },
436
+ seed: opts.seed,
437
+ source: "TIGER2023 EDGES via DuckDB ST_Read; node = 2 distinct S1* FULLNAMEs; eval crossings excluded",
438
+ samples,
439
+ };
440
+ await writeLocalJSONFile(report, opts.output.replace(/\.jsonl$/, ".report.json"));
441
+ console.error(`Done: emitted ${emitted} rows (skipped ${skipped}) from ${usedCrossings.size}/${pool.length} real crossings. → ${opts.output}\n` +
442
+ ` forms: ${JSON.stringify(formCounts)}\n` +
443
+ ` tails: ${JSON.stringify(tailCounts)}\n` +
444
+ ` cases: ${JSON.stringify(caseCounts)}\n` +
445
+ ` audit: ${auditErrors.length} violation(s)`);
446
+ if (auditErrors.length) {
447
+ throw new Error(`AUDIT FAILED — first violation: ${JSON.stringify(auditErrors[0])}`);
448
+ }
449
+ return { emitted, skipped };
450
+ },
451
+ };
452
+ //# sourceMappingURL=intersection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intersection.js","sourceRoot":"","sources":["../../lib/recipes/intersection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ *
6
+ * `locale` slice recipe — the multi-locale generalization of the `german` recipe. Reads REAL
7
+ * OpenAddresses tuples for a `--country` (DE/FR/NL/IT/ES), renders each via
8
+ * {@link synthesizeLocaleRow} in BOTH orders (`--intl-fraction`, default 0.4 international / the
9
+ * rest country-native), aligns to BIO, and emits a labeled JSONL. Generate-mode: it STREAMS each
10
+ * source CSV (a streamed zip member for cached zips, plain `createReadStream` for extracted CSVs) and
11
+ * reservoir-samples to {@link RESERVOIR_CAP} (so FR/ES countrywide work in bounded memory), then
12
+ * draws `--count` rows from the pool with the passed `random`. Ported from
13
+ * scripts/build-locale-slice.mjs.
14
+ *
15
+ * The reservoir uses its OWN seeded PRNG ({@link makeMulberry32}, per part), independent of the
16
+ * emit `random`, so the input sample is reproducible WITHOUT perturbing the synth/order draws.
17
+ *
18
+ * SURFACE DIVERSITY (#241): two per-country shape draws ride the emit loop, sized by the
19
+ * 2026-07-02 format-diversity audit against the `openaddresses-{es,nl,it}-sample.jsonl` observed
20
+ * forms. ES: the OpenCage template comma-joins the house number (`CALLE MAYOR, 12`) but all 3,000
21
+ * eval rows space-join (`CALLE MAYOR 12`) — {@link ES_SPACE_JOIN_FRACTION} of native rows collapse
22
+ * the comma. NL: OA (and the eval, 3,000/3,000) glue the postcode (`1187LM`) while the national
23
+ * convention spaces it (`1187 LM`) — {@link NL_GLUED_POSTCODE_FRACTION} of rows keep the glued
24
+ * source shape, the rest the spaced conventional one. These draws are consumed ONLY for their
25
+ * country, so DE/FR emit streams are unchanged for a given seed.
26
+ */
27
+ import type { PathBuilderLike } from "path-ts";
28
+ import { type CorpusRecipe } from "#recipes/scaffold";
29
+ import { type LocaleBaseTuple, type SynthesizedLocaleRow } from "#synthesizers/german";
30
+ /**
31
+ * One per-country OA source part: either a cached `zip` + `csv` member (streamed out of the archive) or an extracted
32
+ * plain `path` (streamed via `createReadStream`). Both carry the standard OA header
33
+ * (LON,LAT,NUMBER,STREET,UNIT,CITY,DISTRICT,REGION,POSTCODE,ID,HASH). An optional `region` fallback covers countries
34
+ * whose REGION column is empty (DE — the Bundesland is implied by the per-state file).
35
+ */
36
+ export interface LocalePart {
37
+ zip?: PathBuilderLike;
38
+ csv?: string;
39
+ path?: PathBuilderLike;
40
+ region?: string;
41
+ /**
42
+ * NZ — the OA DISTRICT column holds the city (`Auckland`) and CITY holds the suburb (`Birkenhead`). When set, map
43
+ * DISTRICT→locality and CITY→dependent_locality (falling back to CITY→locality when DISTRICT is empty, ~18% of NZ
44
+ * rows). Without this, the default CITY→locality mapping wrongly trains the suburb as the locality.
45
+ */
46
+ districtAsLocality?: boolean;
47
+ /**
48
+ * ES pedanía part only — the header is the RAW (un-conformed) CNIG export schema (`numero`, `tipo_vial`,
49
+ * `nombre_via`, `poblacion`, `municipio`, `comunidad_autonoma`, `cod_postal`), NOT the standard OA
50
+ * NUMBER/STREET/CITY/DISTRICT/REGION/POSTCODE header every other part uses. Verified 2026-07-22 by exact- coordinate
51
+ * cross-check: the OA-conformed `extracted/es/countrywide.csv` collapses CITY to `municipio` and drops `poblacion`
52
+ * (Spain's below-municipio núcleo/pedanía name) entirely, so the pedanía signal survives ONLY in this raw export.
53
+ * `street` is reconstructed as `tipo_vial + " " + nombre_via` (verified byte-identical to the conformed STREET column
54
+ * for the same row). CITY-analog = `poblacion`, DISTRICT-analog = `municipio`.
55
+ */
56
+ cnigRaw?: boolean;
57
+ }
58
+ export interface LocaleCountrySource {
59
+ source: string;
60
+ parts: LocalePart[];
61
+ /**
62
+ * The `corpus_version` stamped on emitted rows. DE/FR keep the historical `0.4.0` (regenerating those slices must
63
+ * stay lineage-identical); ES/IT/NL are the #241 staging lineage (`v0.9.9-es-it-nl`).
64
+ */
65
+ corpusVersion: string;
66
+ /**
67
+ * An ALTERNATE part list, read instead of {@link parts} when the `--district-as-locality` override is explicitly
68
+ * `true` for this invocation (see `run()`). ES-only for now — the standard `parts` entry can't supply real
69
+ * dependent-locality signal (its OA-conformed CSV drops `poblacion`; see {@link LocalePart.cnigRaw}), so the pedanía
70
+ * build reads a wholly different raw source instead of flipping the standard CITY/DISTRICT columns. `undefined` for
71
+ * every other country — the override then just forces `districtAsLocality` on the normal `parts`, as GB/NZ already do
72
+ * per-part.
73
+ */
74
+ pedaniaParts?: LocalePart[];
75
+ }
76
+ /**
77
+ * OA CITY-noise normalization (#241) — the documented cleaning step, derived from the 2026-07-02 FULL-STREAM audit of
78
+ * the ES (15.6M rows), IT (13.9M), and NL (9.1M) sources (not a hand-list). Returns the cleaned city, or `null` to drop
79
+ * the tuple.
80
+ *
81
+ * Cleaned classes:
82
+ *
83
+ * 1. DROP pseudo-localities — the ES cadastral aggregates (`Comunidad de 09076, 09150 y 09578`, `Ledanía de …`; 0.06% of
84
+ * ES rows): any CITY containing a comma or a ≥4-digit run is a land-register aggregate, not a renderable city.
85
+ * Structural, locale-safe — NL's genuine `2e Valthermond` (one digit) survives; IT/NL have zero hits.
86
+ * 2. STRIP a trailing parenthesized 1–3-letter admin code — the NL BAG province disambiguator (`Bergen (NH)`, `Rijswijk
87
+ * (GLD)` → `Bergen`, `Rijswijk`; 0.13% of NL rows). The analogue of the German Kreis/region-suffix class (#241 names
88
+ * `Rabenau Sachs` / `Weißwasser /O.L.`): an admin-region gloss glued onto the locality value that dirties locality
89
+ * labels.
90
+ *
91
+ * Audit-verified NON-noise, deliberately NOT cleaned (a naive suffix rule would mangle real names):
92
+ *
93
+ * - ES/IT city-ends-with-province (`Alhama de Almería`, `GENZANO DI ROMA`; ~0.8% each): genuine toponyms whose linking
94
+ * `de`/`di` makes them full names, unlike the German glued-abbreviation class.
95
+ * - ES bilingual slash names (`Laudio/Llodio`; 2.16%): official co-names — the eval expects them verbatim.
96
+ * - IT ALL-CAPS city casing (98.79% of the source, and the eval's observed form): casing is the #829 case-augmentation
97
+ * change, not this slice's.
98
+ */
99
+ export declare function cleanCityNoise(city: string): string | null;
100
+ /**
101
+ * Stream real tuples out of an OA source part and reservoir-sample to {@link RESERVOIR_CAP}. Reads the CSV row-by-row —
102
+ * `readZipEntry | CSVSpliterator` for zip parts, `createReadStream | CSVSpliterator` for extracted parts (both bounded
103
+ * memory) — and keeps a uniform random sample (Algorithm R) seeded by `rng`, separate from the emit loop's PRNG. NO
104
+ * global dedup (a 25M-key Set would OOM; OA rows are near-unique). The city passes through {@link cleanCityNoise}; the
105
+ * region falls back to `part.region` when the row's REGION cell is empty (DE).
106
+ *
107
+ * Exported for {@link locale.test.ts} — the CSV read path (quote handling, CRLF, region fallback) has no other test.
108
+ */
109
+ export declare function readTuples(part: LocalePart, rng: () => number): Promise<LocaleBaseTuple[]>;
110
+ /**
111
+ * Country-append fraction (the fr-admin-split #728 pattern, generalized to the locale recipe): mutates `synth` in
112
+ * place, `countryFraction` of the time appending an explicit country surface form ("United Kingdom") to `raw` + a
113
+ * `country` component — the model relearns to emit country WHEN the token is present without over-firing it on the
114
+ * (still-majority) country-less rows. `countryFraction <= 0` (the default) short-circuits the `random()` draw away
115
+ * entirely — no `synth` mutation and no RNG consumption — so every existing locale's emit stream stays byte-identical
116
+ * to before this option existed. Exported for {@link locale.test.ts}.
117
+ */
118
+ export declare function applyCountryAppend(synth: SynthesizedLocaleRow, country: string, countryFraction: number, random: () => number): void;
119
+ /**
120
+ * Merge the `--district-as-locality` CLI override onto one part. `undefined` (flag absent) returns `part` unchanged
121
+ * (same object — no allocation, no behavior change); `true`/`false` returns a shallow copy with `districtAsLocality`
122
+ * forced to that value for this invocation only. Exported for {@link locale.test.ts}.
123
+ */
124
+ export declare function applyDistrictAsLocalityOverride(part: LocalePart, override: boolean | undefined): LocalePart;
125
+ /**
126
+ * Pick which part list a `--country` run reads: {@link LocaleCountrySource.pedaniaParts} when the override is explicitly
127
+ * `true` AND the country registers one (ES only, so far), else the default `parts` — unchanged for every other
128
+ * country/override combination. Exported for {@link locale.test.ts}.
129
+ */
130
+ export declare function resolveLocaleParts(countrySource: LocaleCountrySource, override: boolean | undefined): LocalePart[];
131
+ /**
132
+ * Slice recipe registered with the corpus builder — see the file header for the parse behaviour it exists to exercise,
133
+ * and `description` below for the surface form it generates.
134
+ */
135
+ export declare const localeRecipe: CorpusRecipe;
136
+ //# sourceMappingURL=locale.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../lib/recipes/locale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAI9C,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrE,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,oBAAoB,EAAuB,MAAM,sBAAsB,CAAA;AAI3G;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IAC1B,GAAG,CAAC,EAAE,eAAe,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,mBAAmB;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,UAAU,EAAE,CAAA;CAC3B;AA6FD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM1D;AAgBD;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAkJhG;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,oBAAoB,EAC3B,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,MAAM,GAClB,IAAI,CAgBN;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,CAE3G;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,mBAAmB,EAAE,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,EAAE,CAElH;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,YAmK1B,CAAA"}