@mailwoman/corpus 9.3.0 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (991) hide show
  1. package/README.md +16 -0
  2. package/lib/adapters/geonames/adapter.ts +3 -3
  3. package/lib/adapters/geonames/postal/adapter.ts +122 -0
  4. package/lib/adapters/index.ts +39 -32
  5. package/lib/adapters/openaddresses/adapter.ts +4 -7
  6. package/lib/adapters/osm/adapter.ts +278 -0
  7. package/lib/adapters/overture/adapter.ts +22 -7
  8. package/lib/adapters/utils/index.ts +1 -1
  9. package/lib/adapters/wof/admin/json/adapter.ts +239 -0
  10. package/lib/adapters/wof/json-rows.ts +181 -0
  11. package/lib/adapters/wof/postalcode-json/adapter.ts +196 -0
  12. package/lib/au/adapters/gnaf/adapter.ts +152 -0
  13. package/lib/au/adapters/gnaf/assemble.ts +225 -0
  14. package/lib/cz/recipes/pcfirst-preposition.ts +112 -0
  15. package/lib/de/recipes/locale.ts +360 -0
  16. package/lib/fr/adapters/ban/adapter.ts +159 -0
  17. package/lib/fr/recipes/admin-split.ts +243 -0
  18. package/lib/fr/recipes/bare-street.ts +171 -0
  19. package/lib/fr/recipes/fragment.ts +334 -0
  20. package/lib/fr/recipes/lieudit.ts +274 -0
  21. package/lib/fr/recipes/order.ts +246 -0
  22. package/lib/fr/tools/fetch/ban.ts +289 -0
  23. package/lib/index.ts +1 -1
  24. package/lib/international/recipes/locale.ts +598 -0
  25. package/lib/jp/tools/fetch/houjin.ts +141 -0
  26. package/lib/kr/adapters/juso/label-rows.ts +259 -0
  27. package/lib/kr/adapters/localdata/align.ts +299 -0
  28. package/lib/kr/adapters/localdata/key-index.ts +185 -0
  29. package/lib/kr/adapters/localdata/permit-rows.ts +186 -0
  30. package/lib/kr/tools/fetch/juso.ts +172 -0
  31. package/lib/kr/tools/fetch/localdata.ts +206 -0
  32. package/lib/nl/recipes/postcode.ts +117 -0
  33. package/lib/no/recipes/fragment.ts +213 -0
  34. package/lib/no/recipes/street/index.ts +91 -0
  35. package/lib/no/recipes/street/led.ts +135 -0
  36. package/lib/recipes/anchor-absorption.ts +2 -2
  37. package/lib/recipes/bare/country.ts +95 -0
  38. package/lib/recipes/bare/postcode/eval.ts +99 -0
  39. package/lib/recipes/bare/postcode/index.ts +327 -0
  40. package/lib/recipes/boundary-stress.ts +3 -1
  41. package/lib/recipes/country-balanced.ts +3 -2
  42. package/lib/recipes/house-venue.ts +2 -1
  43. package/lib/recipes/index.ts +28 -21
  44. package/lib/recipes/intersection.ts +3 -2
  45. package/lib/recipes/po/box/cedex/au-nz.ts +82 -0
  46. package/lib/recipes/po/box/cedex/ca.ts +58 -0
  47. package/lib/recipes/po/box/cedex/fr.ts +76 -0
  48. package/lib/recipes/po/box/cedex/phrases.ts +108 -0
  49. package/lib/recipes/po/box/cedex/recipe.ts +203 -0
  50. package/lib/recipes/po/box/cedex/sources.ts +189 -0
  51. package/lib/recipes/po/box/cedex/types.ts +35 -0
  52. package/lib/recipes/po/box/cedex/us.ts +69 -0
  53. package/lib/recipes/po/box/cedex/vocabulary.ts +106 -0
  54. package/lib/recipes/po/box/cedex.ts +9 -0
  55. package/lib/recipes/po/box/index.ts +128 -0
  56. package/lib/recipes/scaffold.ts +18 -42
  57. package/lib/recipes/street/affix.ts +807 -0
  58. package/lib/recipes/street/bare.ts +102 -0
  59. package/lib/recipes/street.ts +3 -1
  60. package/lib/recipes/sub/venue/context.ts +149 -0
  61. package/lib/recipes/sub/venue/index.ts +997 -0
  62. package/lib/recipes/sub/venue/sources.ts +739 -0
  63. package/lib/recipes/trailing-region.ts +9 -9
  64. package/lib/recipes/unit.ts +3 -3
  65. package/lib/sg/recipes/register.ts +270 -0
  66. package/lib/sg/tools/fetch/acra.ts +179 -0
  67. package/lib/si/recipes/bare-village.ts +99 -0
  68. package/lib/south-asia/recipes/register.ts +214 -0
  69. package/lib/synthesizers/anchor-absorption.ts +1 -1
  70. package/lib/synthesizers/locale.ts +261 -0
  71. package/lib/synthesizers/street.ts +1 -1
  72. package/lib/synthesizers/utils.ts +2 -2
  73. package/lib/tools/audit.ts +3 -2
  74. package/lib/tools/corpus-stats.ts +3 -3
  75. package/lib/tools/fetch/download/index.ts +10 -0
  76. package/lib/tools/fetch/download/manifest.ts +102 -0
  77. package/lib/tools/fetch/download/network.ts +226 -0
  78. package/lib/tools/fetch/download/retry.ts +173 -0
  79. package/lib/tools/fetch/geonames/dump.ts +257 -0
  80. package/lib/tools/fetch/geonames/postal.ts +180 -0
  81. package/lib/tools/fetch/index.ts +47 -20
  82. package/lib/tools/fetch/openaddresses.ts +2 -2
  83. package/lib/tools/fetch/ourairports.ts +2 -2
  84. package/lib/tools/fetch/ppd.ts +1 -3
  85. package/lib/tools/fetch/wikidata-subvenue.ts +2 -2
  86. package/lib/tools/golden/promote.ts +340 -0
  87. package/lib/tools/golden/relabel-street/directory.ts +340 -0
  88. package/lib/tools/golden/relabel-street/index.ts +9 -0
  89. package/lib/tools/golden/relabel-street/row.ts +361 -0
  90. package/lib/tools/index.ts +10 -10
  91. package/lib/tools/ingest-csv.ts +5 -7
  92. package/lib/tools/lint/slice/vocab.ts +376 -0
  93. package/lib/tools/overlay-manifest.ts +92 -25
  94. package/lib/tools/overture-subvenue.ts +1 -1
  95. package/lib/tools/postcode-triples.ts +138 -14
  96. package/lib/tools/sub/venue/harvest.ts +234 -0
  97. package/lib/tools/sub/venue/head-nouns.ts +245 -0
  98. package/lib/tools/sub/venue/lexicon.ts +429 -0
  99. package/lib/tools/sub/venue/surfaces.ts +95 -0
  100. package/lib/tools/sub/venue/table.ts +281 -0
  101. package/lib/tools/sub/venue/wikidata.ts +85 -0
  102. package/lib/tw/tools/fetch/gcis.ts +180 -0
  103. package/lib/types.ts +1 -1
  104. package/lib/us/adapters/fcc-bdc/adapter.ts +173 -0
  105. package/lib/us/adapters/state/hi-schools/adapter.ts +160 -0
  106. package/lib/us/adapters/state/ia-contractors/adapter.ts +136 -0
  107. package/lib/us/adapters/state/ny-notaries/adapter.ts +133 -0
  108. package/lib/us/adapters/state/tx-notaries/adapter.ts +149 -0
  109. package/lib/us/adapters/tiger/adapter.ts +250 -0
  110. package/lib/us/adapters/usgov/hrsa-fqhc/adapter.ts +156 -0
  111. package/lib/us/adapters/usgov/imls-pls/adapter.ts +134 -0
  112. package/lib/us/adapters/usgov/irs-bmf/adapter.ts +145 -0
  113. package/lib/us/adapters/usgov/nad/adapter.ts +324 -0
  114. package/lib/us/adapters/usgov/nppes/adapter.ts +143 -0
  115. package/lib/us/adapters/usgov/samhsa-treatment-locator/adapter.ts +182 -0
  116. package/lib/us/tools/fetch/hrsa.ts +59 -0
  117. package/lib/us/tools/fetch/imls-pls.ts +149 -0
  118. package/lib/us/tools/fetch/nad.ts +341 -0
  119. package/lib/us/tools/fetch/nppes.ts +165 -0
  120. package/lib/us/tools/fetch/state/hi-schools.ts +161 -0
  121. package/lib/us/tools/fetch/state/sources.ts +146 -0
  122. package/lib/us/tools/fetch/tiger-full.ts +308 -0
  123. package/lib/utils/align.ts +1 -1
  124. package/lib/utils/golden.ts +12 -8
  125. package/lib/utils/wof-json.ts +7 -13
  126. package/out/adapters/geonames/adapter.d.ts +1 -1
  127. package/out/adapters/geonames/adapter.js +3 -3
  128. package/out/adapters/geonames/adapter.js.map +1 -1
  129. package/out/adapters/geonames/postal/adapter.d.ts.map +1 -0
  130. package/out/adapters/geonames/postal/adapter.js +107 -0
  131. package/out/adapters/geonames/postal/adapter.js.map +1 -0
  132. package/out/adapters/index.d.ts +16 -16
  133. package/out/adapters/index.d.ts.map +1 -1
  134. package/out/adapters/index.js +34 -32
  135. package/out/adapters/index.js.map +1 -1
  136. package/out/adapters/openaddresses/adapter.d.ts.map +1 -1
  137. package/out/adapters/openaddresses/adapter.js +4 -6
  138. package/out/adapters/openaddresses/adapter.js.map +1 -1
  139. package/out/adapters/osm/adapter.d.ts +95 -0
  140. package/out/adapters/osm/adapter.d.ts.map +1 -0
  141. package/out/adapters/osm/adapter.js +211 -0
  142. package/out/adapters/osm/adapter.js.map +1 -0
  143. package/out/adapters/overture/adapter.d.ts +10 -0
  144. package/out/adapters/overture/adapter.d.ts.map +1 -1
  145. package/out/adapters/overture/adapter.js +20 -7
  146. package/out/adapters/overture/adapter.js.map +1 -1
  147. package/out/adapters/synth-po-box/adapter.js.map +1 -1
  148. package/out/adapters/utils/index.d.ts +1 -1
  149. package/out/adapters/utils/index.d.ts.map +1 -1
  150. package/out/adapters/utils/index.js.map +1 -1
  151. package/out/adapters/wof/admin/json/adapter.d.ts +79 -0
  152. package/out/adapters/wof/admin/json/adapter.d.ts.map +1 -0
  153. package/out/adapters/wof/admin/json/adapter.js +204 -0
  154. package/out/adapters/wof/admin/json/adapter.js.map +1 -0
  155. package/out/adapters/wof/json-rows.d.ts +73 -0
  156. package/out/adapters/wof/json-rows.d.ts.map +1 -0
  157. package/out/adapters/wof/json-rows.js +115 -0
  158. package/out/adapters/wof/json-rows.js.map +1 -0
  159. package/out/adapters/wof/postalcode-json/adapter.d.ts +65 -0
  160. package/out/adapters/wof/postalcode-json/adapter.d.ts.map +1 -0
  161. package/out/adapters/wof/postalcode-json/adapter.js +167 -0
  162. package/out/adapters/wof/postalcode-json/adapter.js.map +1 -0
  163. package/out/au/adapters/gnaf/adapter.d.ts.map +1 -0
  164. package/out/au/adapters/gnaf/adapter.js +127 -0
  165. package/out/au/adapters/gnaf/adapter.js.map +1 -0
  166. package/out/au/adapters/gnaf/assemble.d.ts +65 -0
  167. package/out/au/adapters/gnaf/assemble.d.ts.map +1 -0
  168. package/out/au/adapters/gnaf/assemble.js +154 -0
  169. package/out/au/adapters/gnaf/assemble.js.map +1 -0
  170. package/out/cn/recipes/organizational-units.d.ts +36 -0
  171. package/out/cn/recipes/organizational-units.d.ts.map +1 -0
  172. package/out/cn/recipes/organizational-units.js +159 -0
  173. package/out/cn/recipes/organizational-units.js.map +1 -0
  174. package/out/cz/recipes/pcfirst-preposition.d.ts +22 -0
  175. package/out/cz/recipes/pcfirst-preposition.d.ts.map +1 -0
  176. package/out/cz/recipes/pcfirst-preposition.js +101 -0
  177. package/out/cz/recipes/pcfirst-preposition.js.map +1 -0
  178. package/out/de/recipes/locale.d.ts +44 -0
  179. package/out/de/recipes/locale.d.ts.map +1 -0
  180. package/out/de/recipes/locale.js +289 -0
  181. package/out/de/recipes/locale.js.map +1 -0
  182. package/out/env.d.ts +1 -1
  183. package/out/fr/adapters/ban/adapter.d.ts.map +1 -0
  184. package/out/fr/adapters/ban/adapter.js +123 -0
  185. package/out/fr/adapters/ban/adapter.js.map +1 -0
  186. package/out/fr/adapters/ban/street-decompose.d.ts.map +1 -0
  187. package/out/fr/adapters/ban/street-decompose.js.map +1 -0
  188. package/out/fr/recipes/admin-split.d.ts +38 -0
  189. package/out/fr/recipes/admin-split.d.ts.map +1 -0
  190. package/out/fr/recipes/admin-split.js +192 -0
  191. package/out/fr/recipes/admin-split.js.map +1 -0
  192. package/out/fr/recipes/bare-street.d.ts +28 -0
  193. package/out/fr/recipes/bare-street.d.ts.map +1 -0
  194. package/out/fr/recipes/bare-street.js +144 -0
  195. package/out/fr/recipes/bare-street.js.map +1 -0
  196. package/out/fr/recipes/fragment.d.ts +77 -0
  197. package/out/fr/recipes/fragment.d.ts.map +1 -0
  198. package/out/fr/recipes/fragment.js +277 -0
  199. package/out/fr/recipes/fragment.js.map +1 -0
  200. package/out/fr/recipes/lieudit.d.ts +32 -0
  201. package/out/fr/recipes/lieudit.d.ts.map +1 -0
  202. package/out/fr/recipes/lieudit.js +211 -0
  203. package/out/fr/recipes/lieudit.js.map +1 -0
  204. package/out/fr/recipes/order.d.ts +38 -0
  205. package/out/fr/recipes/order.d.ts.map +1 -0
  206. package/out/fr/recipes/order.js +198 -0
  207. package/out/fr/recipes/order.js.map +1 -0
  208. package/out/fr/tools/fetch/ban.d.ts +31 -0
  209. package/out/fr/tools/fetch/ban.d.ts.map +1 -0
  210. package/out/fr/tools/fetch/ban.js +239 -0
  211. package/out/fr/tools/fetch/ban.js.map +1 -0
  212. package/out/index.d.ts +1 -1
  213. package/out/index.d.ts.map +1 -1
  214. package/out/index.js +1 -1
  215. package/out/index.js.map +1 -1
  216. package/out/international/recipes/locale.d.ts +136 -0
  217. package/out/international/recipes/locale.d.ts.map +1 -0
  218. package/out/international/recipes/locale.js +458 -0
  219. package/out/international/recipes/locale.js.map +1 -0
  220. package/out/jp/adapters/wof-admin/adapter.d.ts.map +1 -0
  221. package/out/jp/adapters/wof-admin/adapter.js.map +1 -0
  222. package/out/jp/tools/fetch/houjin.d.ts +24 -0
  223. package/out/jp/tools/fetch/houjin.d.ts.map +1 -0
  224. package/out/jp/tools/fetch/houjin.js +102 -0
  225. package/out/jp/tools/fetch/houjin.js.map +1 -0
  226. package/out/kr/adapters/juso/label-rows.d.ts +76 -0
  227. package/out/kr/adapters/juso/label-rows.d.ts.map +1 -0
  228. package/out/kr/adapters/juso/label-rows.js +194 -0
  229. package/out/kr/adapters/juso/label-rows.js.map +1 -0
  230. package/out/kr/adapters/localdata/align.d.ts +43 -0
  231. package/out/kr/adapters/localdata/align.d.ts.map +1 -0
  232. package/out/kr/adapters/localdata/align.js +223 -0
  233. package/out/kr/adapters/localdata/align.js.map +1 -0
  234. package/out/kr/adapters/localdata/key-index.d.ts +71 -0
  235. package/out/kr/adapters/localdata/key-index.d.ts.map +1 -0
  236. package/out/kr/adapters/localdata/key-index.js +133 -0
  237. package/out/kr/adapters/localdata/key-index.js.map +1 -0
  238. package/out/kr/adapters/localdata/permit-rows.d.ts +66 -0
  239. package/out/kr/adapters/localdata/permit-rows.d.ts.map +1 -0
  240. package/out/kr/adapters/localdata/permit-rows.js +131 -0
  241. package/out/kr/adapters/localdata/permit-rows.js.map +1 -0
  242. package/out/kr/tools/fetch/juso.d.ts +30 -0
  243. package/out/kr/tools/fetch/juso.d.ts.map +1 -0
  244. package/out/kr/tools/fetch/juso.js +120 -0
  245. package/out/kr/tools/fetch/juso.js.map +1 -0
  246. package/out/kr/tools/fetch/localdata.d.ts +30 -0
  247. package/out/kr/tools/fetch/localdata.d.ts.map +1 -0
  248. package/out/kr/tools/fetch/localdata.js +139 -0
  249. package/out/kr/tools/fetch/localdata.js.map +1 -0
  250. package/out/nl/recipes/postcode.d.ts +26 -0
  251. package/out/nl/recipes/postcode.d.ts.map +1 -0
  252. package/out/nl/recipes/postcode.js +103 -0
  253. package/out/nl/recipes/postcode.js.map +1 -0
  254. package/out/no/recipes/fragment.d.ts +43 -0
  255. package/out/no/recipes/fragment.d.ts.map +1 -0
  256. package/out/no/recipes/fragment.js +183 -0
  257. package/out/no/recipes/fragment.js.map +1 -0
  258. package/out/no/recipes/street/index.d.ts +18 -0
  259. package/out/no/recipes/street/index.d.ts.map +1 -0
  260. package/out/no/recipes/street/index.js +72 -0
  261. package/out/no/recipes/street/index.js.map +1 -0
  262. package/out/no/recipes/street/led.d.ts +24 -0
  263. package/out/no/recipes/street/led.d.ts.map +1 -0
  264. package/out/no/recipes/street/led.js +114 -0
  265. package/out/no/recipes/street/led.js.map +1 -0
  266. package/out/recipes/anchor-absorption.d.ts.map +1 -1
  267. package/out/recipes/anchor-absorption.js +2 -1
  268. package/out/recipes/anchor-absorption.js.map +1 -1
  269. package/out/recipes/bare/country.d.ts +25 -0
  270. package/out/recipes/bare/country.d.ts.map +1 -0
  271. package/out/recipes/bare/country.js +88 -0
  272. package/out/recipes/bare/country.js.map +1 -0
  273. package/out/recipes/bare/postcode/eval.d.ts +29 -0
  274. package/out/recipes/bare/postcode/eval.d.ts.map +1 -0
  275. package/out/recipes/bare/postcode/eval.js +85 -0
  276. package/out/recipes/bare/postcode/eval.js.map +1 -0
  277. package/out/recipes/bare/postcode/index.d.ts +62 -0
  278. package/out/recipes/bare/postcode/index.d.ts.map +1 -0
  279. package/out/recipes/bare/postcode/index.js +267 -0
  280. package/out/recipes/bare/postcode/index.js.map +1 -0
  281. package/out/recipes/boundary-stress.d.ts.map +1 -1
  282. package/out/recipes/boundary-stress.js +2 -1
  283. package/out/recipes/boundary-stress.js.map +1 -1
  284. package/out/recipes/country-balanced.d.ts.map +1 -1
  285. package/out/recipes/country-balanced.js +2 -1
  286. package/out/recipes/country-balanced.js.map +1 -1
  287. package/out/recipes/house-venue.d.ts.map +1 -1
  288. package/out/recipes/house-venue.js +2 -1
  289. package/out/recipes/house-venue.js.map +1 -1
  290. package/out/recipes/index.d.ts.map +1 -1
  291. package/out/recipes/index.js +28 -21
  292. package/out/recipes/index.js.map +1 -1
  293. package/out/recipes/intersection.d.ts.map +1 -1
  294. package/out/recipes/intersection.js +2 -1
  295. package/out/recipes/intersection.js.map +1 -1
  296. package/out/recipes/po/box/cedex/au-nz.d.ts +7 -0
  297. package/out/recipes/po/box/cedex/au-nz.d.ts.map +1 -0
  298. package/out/recipes/po/box/cedex/au-nz.js +56 -0
  299. package/out/recipes/po/box/cedex/au-nz.js.map +1 -0
  300. package/out/recipes/po/box/cedex/ca.d.ts +7 -0
  301. package/out/recipes/po/box/cedex/ca.d.ts.map +1 -0
  302. package/out/recipes/po/box/cedex/ca.js +38 -0
  303. package/out/recipes/po/box/cedex/ca.js.map +1 -0
  304. package/out/recipes/po/box/cedex/fr.d.ts +7 -0
  305. package/out/recipes/po/box/cedex/fr.d.ts.map +1 -0
  306. package/out/recipes/po/box/cedex/fr.js +57 -0
  307. package/out/recipes/po/box/cedex/fr.js.map +1 -0
  308. package/out/recipes/po/box/cedex/phrases.d.ts +8 -0
  309. package/out/recipes/po/box/cedex/phrases.d.ts.map +1 -0
  310. package/out/recipes/po/box/cedex/phrases.js +76 -0
  311. package/out/recipes/po/box/cedex/phrases.js.map +1 -0
  312. package/out/recipes/po/box/cedex/recipe.d.ts +9 -0
  313. package/out/recipes/po/box/cedex/recipe.d.ts.map +1 -0
  314. package/out/recipes/po/box/cedex/recipe.js +153 -0
  315. package/out/recipes/po/box/cedex/recipe.js.map +1 -0
  316. package/out/recipes/po/box/cedex/sources.d.ts +86 -0
  317. package/out/recipes/po/box/cedex/sources.d.ts.map +1 -0
  318. package/out/recipes/po/box/cedex/sources.js +143 -0
  319. package/out/recipes/po/box/cedex/sources.js.map +1 -0
  320. package/out/recipes/po/box/cedex/types.d.ts +31 -0
  321. package/out/recipes/po/box/cedex/types.d.ts.map +1 -0
  322. package/out/recipes/po/box/cedex/types.js +5 -0
  323. package/out/recipes/po/box/cedex/types.js.map +1 -0
  324. package/out/recipes/po/box/cedex/us.d.ts +7 -0
  325. package/out/recipes/po/box/cedex/us.d.ts.map +1 -0
  326. package/out/recipes/po/box/cedex/us.js +51 -0
  327. package/out/recipes/po/box/cedex/us.js.map +1 -0
  328. package/out/recipes/po/box/cedex/vocabulary.d.ts +68 -0
  329. package/out/recipes/po/box/cedex/vocabulary.d.ts.map +1 -0
  330. package/out/recipes/po/box/cedex/vocabulary.js +90 -0
  331. package/out/recipes/po/box/cedex/vocabulary.js.map +1 -0
  332. package/out/recipes/po/box/cedex.d.ts +9 -0
  333. package/out/recipes/po/box/cedex.d.ts.map +1 -0
  334. package/out/recipes/po/box/cedex.js +9 -0
  335. package/out/recipes/po/box/cedex.js.map +1 -0
  336. package/out/recipes/po/box/index.d.ts +17 -0
  337. package/out/recipes/po/box/index.d.ts.map +1 -0
  338. package/out/recipes/po/box/index.js +105 -0
  339. package/out/recipes/po/box/index.js.map +1 -0
  340. package/out/recipes/scaffold.d.ts +20 -1
  341. package/out/recipes/scaffold.d.ts.map +1 -1
  342. package/out/recipes/scaffold.js +18 -49
  343. package/out/recipes/scaffold.js.map +1 -1
  344. package/out/recipes/street/affix.d.ts +89 -0
  345. package/out/recipes/street/affix.d.ts.map +1 -0
  346. package/out/recipes/street/affix.js +565 -0
  347. package/out/recipes/street/affix.js.map +1 -0
  348. package/out/recipes/street/bare.d.ts +25 -0
  349. package/out/recipes/street/bare.d.ts.map +1 -0
  350. package/out/recipes/street/bare.js +87 -0
  351. package/out/recipes/street/bare.js.map +1 -0
  352. package/out/recipes/street.d.ts.map +1 -1
  353. package/out/recipes/street.js +2 -1
  354. package/out/recipes/street.js.map +1 -1
  355. package/out/recipes/sub/venue/context.d.ts +29 -0
  356. package/out/recipes/sub/venue/context.d.ts.map +1 -0
  357. package/out/recipes/sub/venue/context.js +106 -0
  358. package/out/recipes/sub/venue/context.js.map +1 -0
  359. package/out/recipes/sub/venue/index.d.ts +270 -0
  360. package/out/recipes/sub/venue/index.d.ts.map +1 -0
  361. package/out/recipes/sub/venue/index.js +728 -0
  362. package/out/recipes/sub/venue/index.js.map +1 -0
  363. package/out/recipes/sub/venue/sources.d.ts +209 -0
  364. package/out/recipes/sub/venue/sources.d.ts.map +1 -0
  365. package/out/recipes/sub/venue/sources.js +555 -0
  366. package/out/recipes/sub/venue/sources.js.map +1 -0
  367. package/out/recipes/trailing-region.d.ts.map +1 -1
  368. package/out/recipes/trailing-region.js +8 -2
  369. package/out/recipes/trailing-region.js.map +1 -1
  370. package/out/recipes/unit.d.ts.map +1 -1
  371. package/out/recipes/unit.js +2 -1
  372. package/out/recipes/unit.js.map +1 -1
  373. package/out/sg/recipes/register.d.ts +69 -0
  374. package/out/sg/recipes/register.d.ts.map +1 -0
  375. package/out/sg/recipes/register.js +211 -0
  376. package/out/sg/recipes/register.js.map +1 -0
  377. package/out/sg/tools/fetch/acra.d.ts +23 -0
  378. package/out/sg/tools/fetch/acra.d.ts.map +1 -0
  379. package/out/sg/tools/fetch/acra.js +126 -0
  380. package/out/sg/tools/fetch/acra.js.map +1 -0
  381. package/out/si/recipes/bare-village.d.ts +32 -0
  382. package/out/si/recipes/bare-village.d.ts.map +1 -0
  383. package/out/si/recipes/bare-village.js +89 -0
  384. package/out/si/recipes/bare-village.js.map +1 -0
  385. package/out/south-asia/recipes/register.d.ts +51 -0
  386. package/out/south-asia/recipes/register.d.ts.map +1 -0
  387. package/out/south-asia/recipes/register.js +154 -0
  388. package/out/south-asia/recipes/register.js.map +1 -0
  389. package/out/synthesizers/anchor-absorption.d.ts +1 -1
  390. package/out/synthesizers/anchor-absorption.d.ts.map +1 -1
  391. package/out/synthesizers/anchor-absorption.js.map +1 -1
  392. package/out/synthesizers/boundary-stress.js.map +1 -1
  393. package/out/synthesizers/house-venue.js.map +1 -1
  394. package/out/synthesizers/intersection.js.map +1 -1
  395. package/out/synthesizers/locale.d.ts +116 -0
  396. package/out/synthesizers/locale.d.ts.map +1 -0
  397. package/out/synthesizers/locale.js +150 -0
  398. package/out/synthesizers/locale.js.map +1 -0
  399. package/out/synthesizers/no-street.d.ts.map +1 -1
  400. package/out/synthesizers/no-street.js.map +1 -1
  401. package/out/synthesizers/po-box.js.map +1 -1
  402. package/out/synthesizers/street.d.ts.map +1 -1
  403. package/out/synthesizers/street.js +1 -1
  404. package/out/synthesizers/street.js.map +1 -1
  405. package/out/synthesizers/utils.js +1 -1
  406. package/out/synthesizers/utils.js.map +1 -1
  407. package/out/test-kit/corpus-recipe.d.ts.map +1 -1
  408. package/out/test-kit/corpus-recipe.js.map +1 -1
  409. package/out/tools/audit.d.ts.map +1 -1
  410. package/out/tools/audit.js +3 -2
  411. package/out/tools/audit.js.map +1 -1
  412. package/out/tools/corpus-stats.js +3 -3
  413. package/out/tools/corpus-stats.js.map +1 -1
  414. package/out/tools/fetch/download/index.d.ts +10 -0
  415. package/out/tools/fetch/download/index.d.ts.map +1 -0
  416. package/out/tools/fetch/download/index.js +10 -0
  417. package/out/tools/fetch/download/index.js.map +1 -0
  418. package/out/tools/fetch/download/manifest.d.ts +47 -0
  419. package/out/tools/fetch/download/manifest.d.ts.map +1 -0
  420. package/out/tools/fetch/download/manifest.js +74 -0
  421. package/out/tools/fetch/download/manifest.js.map +1 -0
  422. package/out/tools/fetch/download/network.d.ts +105 -0
  423. package/out/tools/fetch/download/network.d.ts.map +1 -0
  424. package/out/tools/fetch/download/network.js +130 -0
  425. package/out/tools/fetch/download/network.js.map +1 -0
  426. package/out/tools/fetch/download/retry.d.ts +45 -0
  427. package/out/tools/fetch/download/retry.d.ts.map +1 -0
  428. package/out/tools/fetch/download/retry.js +136 -0
  429. package/out/tools/fetch/download/retry.js.map +1 -0
  430. package/out/tools/fetch/geonames/dump.d.ts +91 -0
  431. package/out/tools/fetch/geonames/dump.d.ts.map +1 -0
  432. package/out/tools/fetch/geonames/dump.js +171 -0
  433. package/out/tools/fetch/geonames/dump.js.map +1 -0
  434. package/out/tools/fetch/geonames/postal.d.ts +76 -0
  435. package/out/tools/fetch/geonames/postal.d.ts.map +1 -0
  436. package/out/tools/fetch/geonames/postal.js +126 -0
  437. package/out/tools/fetch/geonames/postal.js.map +1 -0
  438. package/out/tools/fetch/index.d.ts +47 -20
  439. package/out/tools/fetch/index.d.ts.map +1 -1
  440. package/out/tools/fetch/index.js +47 -20
  441. package/out/tools/fetch/index.js.map +1 -1
  442. package/out/tools/fetch/openaddresses.d.ts +1 -1
  443. package/out/tools/fetch/openaddresses.d.ts.map +1 -1
  444. package/out/tools/fetch/openaddresses.js +1 -1
  445. package/out/tools/fetch/openaddresses.js.map +1 -1
  446. package/out/tools/fetch/ourairports.d.ts +1 -1
  447. package/out/tools/fetch/ourairports.d.ts.map +1 -1
  448. package/out/tools/fetch/ourairports.js +1 -1
  449. package/out/tools/fetch/ourairports.js.map +1 -1
  450. package/out/tools/fetch/ppd.js +1 -3
  451. package/out/tools/fetch/ppd.js.map +1 -1
  452. package/out/tools/fetch/wikidata-subvenue.d.ts +1 -1
  453. package/out/tools/fetch/wikidata-subvenue.d.ts.map +1 -1
  454. package/out/tools/fetch/wikidata-subvenue.js +1 -1
  455. package/out/tools/fetch/wikidata-subvenue.js.map +1 -1
  456. package/out/tools/golden/expand.d.ts +90 -0
  457. package/out/tools/golden/expand.d.ts.map +1 -0
  458. package/out/tools/golden/expand.js +406 -0
  459. package/out/tools/golden/expand.js.map +1 -0
  460. package/out/tools/golden/promote.d.ts +72 -0
  461. package/out/tools/golden/promote.d.ts.map +1 -0
  462. package/out/tools/golden/promote.js +243 -0
  463. package/out/tools/golden/promote.js.map +1 -0
  464. package/out/tools/golden/relabel-street/directory.d.ts +83 -0
  465. package/out/tools/golden/relabel-street/directory.d.ts.map +1 -0
  466. package/out/tools/golden/relabel-street/directory.js +216 -0
  467. package/out/tools/golden/relabel-street/directory.js.map +1 -0
  468. package/out/tools/golden/relabel-street/index.d.ts +9 -0
  469. package/out/tools/golden/relabel-street/index.d.ts.map +1 -0
  470. package/out/tools/golden/relabel-street/index.js +9 -0
  471. package/out/tools/golden/relabel-street/index.js.map +1 -0
  472. package/out/tools/golden/relabel-street/row.d.ts +121 -0
  473. package/out/tools/golden/relabel-street/row.d.ts.map +1 -0
  474. package/out/tools/golden/relabel-street/row.js +232 -0
  475. package/out/tools/golden/relabel-street/row.js.map +1 -0
  476. package/out/tools/index.d.ts +10 -10
  477. package/out/tools/index.d.ts.map +1 -1
  478. package/out/tools/index.js +10 -10
  479. package/out/tools/index.js.map +1 -1
  480. package/out/tools/ingest-csv.d.ts.map +1 -1
  481. package/out/tools/ingest-csv.js +5 -7
  482. package/out/tools/ingest-csv.js.map +1 -1
  483. package/out/tools/lint/slice/index.d.ts +93 -0
  484. package/out/tools/lint/slice/index.d.ts.map +1 -0
  485. package/out/tools/lint/slice/index.js +322 -0
  486. package/out/tools/lint/slice/index.js.map +1 -0
  487. package/out/tools/lint/slice/vocab.d.ts +90 -0
  488. package/out/tools/lint/slice/vocab.d.ts.map +1 -0
  489. package/out/tools/lint/slice/vocab.js +254 -0
  490. package/out/tools/lint/slice/vocab.js.map +1 -0
  491. package/out/tools/overlay-manifest.d.ts +56 -6
  492. package/out/tools/overlay-manifest.d.ts.map +1 -1
  493. package/out/tools/overlay-manifest.js +56 -15
  494. package/out/tools/overlay-manifest.js.map +1 -1
  495. package/out/tools/overture-subvenue.d.ts +1 -1
  496. package/out/tools/postcode-triples.d.ts +36 -0
  497. package/out/tools/postcode-triples.d.ts.map +1 -1
  498. package/out/tools/postcode-triples.js +91 -12
  499. package/out/tools/postcode-triples.js.map +1 -1
  500. package/out/tools/slice/kryptonite.d.ts +32 -0
  501. package/out/tools/slice/kryptonite.d.ts.map +1 -0
  502. package/out/tools/slice/kryptonite.js +99 -0
  503. package/out/tools/slice/kryptonite.js.map +1 -0
  504. package/out/tools/slice/translit.d.ts +51 -0
  505. package/out/tools/slice/translit.d.ts.map +1 -0
  506. package/out/tools/slice/translit.js +166 -0
  507. package/out/tools/slice/translit.js.map +1 -0
  508. package/out/tools/sub/venue/harvest.d.ts +100 -0
  509. package/out/tools/sub/venue/harvest.d.ts.map +1 -0
  510. package/out/tools/sub/venue/harvest.js +168 -0
  511. package/out/tools/sub/venue/harvest.js.map +1 -0
  512. package/out/tools/sub/venue/head-nouns.d.ts +50 -0
  513. package/out/tools/sub/venue/head-nouns.d.ts.map +1 -0
  514. package/out/tools/sub/venue/head-nouns.js.map +1 -0
  515. package/out/tools/sub/venue/lexicon.d.ts +156 -0
  516. package/out/tools/sub/venue/lexicon.d.ts.map +1 -0
  517. package/out/tools/sub/venue/lexicon.js +283 -0
  518. package/out/tools/sub/venue/lexicon.js.map +1 -0
  519. package/out/tools/sub/venue/promotions.d.ts +94 -0
  520. package/out/tools/sub/venue/promotions.d.ts.map +1 -0
  521. package/out/tools/sub/venue/promotions.js +266 -0
  522. package/out/tools/sub/venue/promotions.js.map +1 -0
  523. package/out/tools/sub/venue/surfaces.d.ts +45 -0
  524. package/out/tools/sub/venue/surfaces.d.ts.map +1 -0
  525. package/out/tools/sub/venue/surfaces.js.map +1 -0
  526. package/out/tools/sub/venue/table.d.ts +229 -0
  527. package/out/tools/sub/venue/table.d.ts.map +1 -0
  528. package/out/tools/sub/venue/table.js.map +1 -0
  529. package/out/tools/sub/venue/wikidata.d.ts +26 -0
  530. package/out/tools/sub/venue/wikidata.d.ts.map +1 -0
  531. package/out/tools/sub/venue/wikidata.js +62 -0
  532. package/out/tools/sub/venue/wikidata.js.map +1 -0
  533. package/out/tw/tools/fetch/gcis.d.ts +23 -0
  534. package/out/tw/tools/fetch/gcis.d.ts.map +1 -0
  535. package/out/tw/tools/fetch/gcis.js +135 -0
  536. package/out/tw/tools/fetch/gcis.js.map +1 -0
  537. package/out/types.d.ts +1 -1
  538. package/out/types.d.ts.map +1 -1
  539. package/out/us/adapters/fcc-bdc/adapter.d.ts.map +1 -0
  540. package/out/us/adapters/fcc-bdc/adapter.js +142 -0
  541. package/out/us/adapters/fcc-bdc/adapter.js.map +1 -0
  542. package/out/us/adapters/state/hi-schools/adapter.d.ts.map +1 -0
  543. package/out/us/adapters/state/hi-schools/adapter.js +136 -0
  544. package/out/us/adapters/state/hi-schools/adapter.js.map +1 -0
  545. package/out/us/adapters/state/hi-schools/workbook.d.ts.map +1 -0
  546. package/out/us/adapters/state/hi-schools/workbook.js.map +1 -0
  547. package/out/us/adapters/state/ia-contractors/adapter.d.ts.map +1 -0
  548. package/out/us/adapters/state/ia-contractors/adapter.js +104 -0
  549. package/out/us/adapters/state/ia-contractors/adapter.js.map +1 -0
  550. package/out/us/adapters/state/ny-notaries/adapter.d.ts.map +1 -0
  551. package/out/us/adapters/state/ny-notaries/adapter.js +112 -0
  552. package/out/us/adapters/state/ny-notaries/adapter.js.map +1 -0
  553. package/out/us/adapters/state/tx-notaries/adapter.d.ts.map +1 -0
  554. package/out/us/adapters/state/tx-notaries/adapter.js +118 -0
  555. package/out/us/adapters/state/tx-notaries/adapter.js.map +1 -0
  556. package/out/us/adapters/tiger/adapter.d.ts +55 -0
  557. package/out/us/adapters/tiger/adapter.d.ts.map +1 -0
  558. package/out/us/adapters/tiger/adapter.js +197 -0
  559. package/out/us/adapters/tiger/adapter.js.map +1 -0
  560. package/out/us/adapters/tiger/street-decompose.d.ts.map +1 -0
  561. package/out/us/adapters/tiger/street-decompose.js.map +1 -0
  562. package/out/us/adapters/usgov/hrsa-fqhc/adapter.d.ts.map +1 -0
  563. package/out/us/adapters/usgov/hrsa-fqhc/adapter.js +121 -0
  564. package/out/us/adapters/usgov/hrsa-fqhc/adapter.js.map +1 -0
  565. package/out/us/adapters/usgov/imls-pls/adapter.d.ts.map +1 -0
  566. package/out/us/adapters/usgov/imls-pls/adapter.js +106 -0
  567. package/out/us/adapters/usgov/imls-pls/adapter.js.map +1 -0
  568. package/out/us/adapters/usgov/irs-bmf/adapter.d.ts.map +1 -0
  569. package/out/us/adapters/usgov/irs-bmf/adapter.js +116 -0
  570. package/out/us/adapters/usgov/irs-bmf/adapter.js.map +1 -0
  571. package/out/us/adapters/usgov/nad/adapter.d.ts.map +1 -0
  572. package/out/us/adapters/usgov/nad/adapter.js +239 -0
  573. package/out/us/adapters/usgov/nad/adapter.js.map +1 -0
  574. package/out/us/adapters/usgov/nppes/adapter.d.ts.map +1 -0
  575. package/out/us/adapters/usgov/nppes/adapter.js +110 -0
  576. package/out/us/adapters/usgov/nppes/adapter.js.map +1 -0
  577. package/out/us/adapters/usgov/samhsa-treatment-locator/adapter.d.ts.map +1 -0
  578. package/out/us/adapters/usgov/samhsa-treatment-locator/adapter.js +143 -0
  579. package/out/us/adapters/usgov/samhsa-treatment-locator/adapter.js.map +1 -0
  580. package/out/us/fips-state.d.ts +41 -0
  581. package/out/us/fips-state.d.ts.map +1 -0
  582. package/out/us/fips-state.js +100 -0
  583. package/out/us/fips-state.js.map +1 -0
  584. package/out/us/tools/fetch/hrsa.d.ts +18 -0
  585. package/out/us/tools/fetch/hrsa.d.ts.map +1 -0
  586. package/out/us/tools/fetch/hrsa.js +46 -0
  587. package/out/us/tools/fetch/hrsa.js.map +1 -0
  588. package/out/us/tools/fetch/imls-pls.d.ts +25 -0
  589. package/out/us/tools/fetch/imls-pls.d.ts.map +1 -0
  590. package/out/us/tools/fetch/imls-pls.js +108 -0
  591. package/out/us/tools/fetch/imls-pls.js.map +1 -0
  592. package/out/us/tools/fetch/nad.d.ts +70 -0
  593. package/out/us/tools/fetch/nad.d.ts.map +1 -0
  594. package/out/us/tools/fetch/nad.js +234 -0
  595. package/out/us/tools/fetch/nad.js.map +1 -0
  596. package/out/us/tools/fetch/nppes.d.ts +26 -0
  597. package/out/us/tools/fetch/nppes.d.ts.map +1 -0
  598. package/out/us/tools/fetch/nppes.js +126 -0
  599. package/out/us/tools/fetch/nppes.js.map +1 -0
  600. package/out/us/tools/fetch/state/hi-schools.d.ts +26 -0
  601. package/out/us/tools/fetch/state/hi-schools.d.ts.map +1 -0
  602. package/out/us/tools/fetch/state/hi-schools.js +112 -0
  603. package/out/us/tools/fetch/state/hi-schools.js.map +1 -0
  604. package/out/us/tools/fetch/state/sources.d.ts +26 -0
  605. package/out/us/tools/fetch/state/sources.d.ts.map +1 -0
  606. package/out/us/tools/fetch/state/sources.js +111 -0
  607. package/out/us/tools/fetch/state/sources.js.map +1 -0
  608. package/out/us/tools/fetch/tiger-full.d.ts +22 -0
  609. package/out/us/tools/fetch/tiger-full.d.ts.map +1 -0
  610. package/out/us/tools/fetch/tiger-full.js +217 -0
  611. package/out/us/tools/fetch/tiger-full.js.map +1 -0
  612. package/out/utils/align.d.ts +1 -1
  613. package/out/utils/align.d.ts.map +1 -1
  614. package/out/utils/align.js.map +1 -1
  615. package/out/utils/golden.d.ts +7 -3
  616. package/out/utils/golden.d.ts.map +1 -1
  617. package/out/utils/golden.js +12 -8
  618. package/out/utils/golden.js.map +1 -1
  619. package/out/utils/parquet.d.ts.map +1 -1
  620. package/out/utils/split.js.map +1 -1
  621. package/out/utils/wof-json.d.ts.map +1 -1
  622. package/out/utils/wof-json.js +7 -12
  623. package/out/utils/wof-json.js.map +1 -1
  624. package/out/ve/recipes/reviewed-postcode-tail.d.ts.map +1 -0
  625. package/out/ve/recipes/reviewed-postcode-tail.js.map +1 -0
  626. package/package.json +196 -46
  627. package/lib/adapters/ban/adapter.ts +0 -190
  628. package/lib/adapters/fcc-bdc/adapter.ts +0 -174
  629. package/lib/adapters/geonames-postal/adapter.ts +0 -122
  630. package/lib/adapters/gnaf/adapter.ts +0 -149
  631. package/lib/adapters/gnaf/assemble.ts +0 -225
  632. package/lib/adapters/state-hi-schools/adapter.ts +0 -170
  633. package/lib/adapters/state-ia-contractors/adapter.ts +0 -144
  634. package/lib/adapters/state-ny-notaries/adapter.ts +0 -141
  635. package/lib/adapters/state-tx-notaries/adapter.ts +0 -157
  636. package/lib/adapters/tiger/adapter.ts +0 -252
  637. package/lib/adapters/usgov-hrsa-fqhc/adapter.ts +0 -167
  638. package/lib/adapters/usgov-imls-pls/adapter.ts +0 -143
  639. package/lib/adapters/usgov-irs-bmf/adapter.ts +0 -151
  640. package/lib/adapters/usgov-nad/adapter.ts +0 -334
  641. package/lib/adapters/usgov-nppes/adapter.ts +0 -151
  642. package/lib/adapters/usgov-samhsa-treatment-locator/adapter.ts +0 -193
  643. package/lib/adapters/wof-admin-json/adapter.ts +0 -231
  644. package/lib/adapters/wof-json-rows.ts +0 -129
  645. package/lib/adapters/wof-postalcode-json/adapter.ts +0 -176
  646. package/lib/name-prone-us-suffixes.ts +0 -12
  647. package/lib/recipes/bare-country.ts +0 -95
  648. package/lib/recipes/cz-pcfirst-preposition.ts +0 -111
  649. package/lib/recipes/fr-admin-split.ts +0 -242
  650. package/lib/recipes/fr-bare-street.ts +0 -170
  651. package/lib/recipes/fr-fragment.ts +0 -333
  652. package/lib/recipes/fr-lieudit.ts +0 -301
  653. package/lib/recipes/fr-order.ts +0 -245
  654. package/lib/recipes/german.ts +0 -359
  655. package/lib/recipes/locale.ts +0 -599
  656. package/lib/recipes/nl-postcode.ts +0 -115
  657. package/lib/recipes/no-fragment.ts +0 -219
  658. package/lib/recipes/no-street-led.ts +0 -141
  659. package/lib/recipes/no-street.ts +0 -90
  660. package/lib/recipes/po-box-cedex.ts +0 -976
  661. package/lib/recipes/po-box.ts +0 -123
  662. package/lib/recipes/si-bare-village.ts +0 -97
  663. package/lib/recipes/street-affix.ts +0 -804
  664. package/lib/recipes/street-bare.ts +0 -100
  665. package/lib/recipes/sub-venue-sources.ts +0 -877
  666. package/lib/recipes/sub-venue.ts +0 -997
  667. package/lib/synthesizers/german.ts +0 -260
  668. package/lib/tools/fetch/ban.ts +0 -289
  669. package/lib/tools/fetch/download.ts +0 -262
  670. package/lib/tools/fetch/geonames-dump.ts +0 -257
  671. package/lib/tools/fetch/geonames-postal.ts +0 -180
  672. package/lib/tools/fetch/hrsa.ts +0 -59
  673. package/lib/tools/fetch/imls-pls.ts +0 -149
  674. package/lib/tools/fetch/nad.ts +0 -341
  675. package/lib/tools/fetch/nppes.ts +0 -165
  676. package/lib/tools/fetch/state-hi-schools.ts +0 -161
  677. package/lib/tools/fetch/state-sources.ts +0 -146
  678. package/lib/tools/fetch/tiger-full.ts +0 -308
  679. package/lib/tools/golden-promote.ts +0 -337
  680. package/lib/tools/golden-relabel-street.ts +0 -683
  681. package/lib/tools/lint-slice-vocab.ts +0 -388
  682. package/lib/tools/sub-venue/harvest.ts +0 -234
  683. package/lib/tools/sub-venue/head-nouns.ts +0 -245
  684. package/lib/tools/sub-venue/surfaces.ts +0 -95
  685. package/lib/tools/sub-venue/table.ts +0 -281
  686. package/lib/tools/sub-venue/wikidata.ts +0 -85
  687. package/lib/tools/sub-venue-lexicon.ts +0 -429
  688. package/out/adapters/ban/adapter.d.ts.map +0 -1
  689. package/out/adapters/ban/adapter.js +0 -149
  690. package/out/adapters/ban/adapter.js.map +0 -1
  691. package/out/adapters/ban/street-decompose.d.ts.map +0 -1
  692. package/out/adapters/ban/street-decompose.js.map +0 -1
  693. package/out/adapters/fcc-bdc/adapter.d.ts.map +0 -1
  694. package/out/adapters/fcc-bdc/adapter.js +0 -144
  695. package/out/adapters/fcc-bdc/adapter.js.map +0 -1
  696. package/out/adapters/geonames-postal/adapter.d.ts.map +0 -1
  697. package/out/adapters/geonames-postal/adapter.js +0 -107
  698. package/out/adapters/geonames-postal/adapter.js.map +0 -1
  699. package/out/adapters/gnaf/adapter.d.ts.map +0 -1
  700. package/out/adapters/gnaf/adapter.js +0 -124
  701. package/out/adapters/gnaf/adapter.js.map +0 -1
  702. package/out/adapters/gnaf/assemble.d.ts +0 -65
  703. package/out/adapters/gnaf/assemble.d.ts.map +0 -1
  704. package/out/adapters/gnaf/assemble.js +0 -154
  705. package/out/adapters/gnaf/assemble.js.map +0 -1
  706. package/out/adapters/state-hi-schools/adapter.d.ts.map +0 -1
  707. package/out/adapters/state-hi-schools/adapter.js +0 -145
  708. package/out/adapters/state-hi-schools/adapter.js.map +0 -1
  709. package/out/adapters/state-hi-schools/workbook.d.ts.map +0 -1
  710. package/out/adapters/state-hi-schools/workbook.js.map +0 -1
  711. package/out/adapters/state-ia-contractors/adapter.d.ts.map +0 -1
  712. package/out/adapters/state-ia-contractors/adapter.js +0 -111
  713. package/out/adapters/state-ia-contractors/adapter.js.map +0 -1
  714. package/out/adapters/state-ny-notaries/adapter.d.ts.map +0 -1
  715. package/out/adapters/state-ny-notaries/adapter.js +0 -119
  716. package/out/adapters/state-ny-notaries/adapter.js.map +0 -1
  717. package/out/adapters/state-tx-notaries/adapter.d.ts.map +0 -1
  718. package/out/adapters/state-tx-notaries/adapter.js +0 -125
  719. package/out/adapters/state-tx-notaries/adapter.js.map +0 -1
  720. package/out/adapters/tiger/adapter.d.ts +0 -55
  721. package/out/adapters/tiger/adapter.d.ts.map +0 -1
  722. package/out/adapters/tiger/adapter.js +0 -201
  723. package/out/adapters/tiger/adapter.js.map +0 -1
  724. package/out/adapters/tiger/street-decompose.d.ts.map +0 -1
  725. package/out/adapters/tiger/street-decompose.js.map +0 -1
  726. package/out/adapters/usgov-hrsa-fqhc/adapter.d.ts.map +0 -1
  727. package/out/adapters/usgov-hrsa-fqhc/adapter.js +0 -132
  728. package/out/adapters/usgov-hrsa-fqhc/adapter.js.map +0 -1
  729. package/out/adapters/usgov-imls-pls/adapter.d.ts.map +0 -1
  730. package/out/adapters/usgov-imls-pls/adapter.js +0 -114
  731. package/out/adapters/usgov-imls-pls/adapter.js.map +0 -1
  732. package/out/adapters/usgov-irs-bmf/adapter.d.ts.map +0 -1
  733. package/out/adapters/usgov-irs-bmf/adapter.js +0 -120
  734. package/out/adapters/usgov-irs-bmf/adapter.js.map +0 -1
  735. package/out/adapters/usgov-nad/adapter.d.ts.map +0 -1
  736. package/out/adapters/usgov-nad/adapter.js +0 -249
  737. package/out/adapters/usgov-nad/adapter.js.map +0 -1
  738. package/out/adapters/usgov-nppes/adapter.d.ts.map +0 -1
  739. package/out/adapters/usgov-nppes/adapter.js +0 -118
  740. package/out/adapters/usgov-nppes/adapter.js.map +0 -1
  741. package/out/adapters/usgov-samhsa-treatment-locator/adapter.d.ts.map +0 -1
  742. package/out/adapters/usgov-samhsa-treatment-locator/adapter.js +0 -154
  743. package/out/adapters/usgov-samhsa-treatment-locator/adapter.js.map +0 -1
  744. package/out/adapters/wof-admin-jp/adapter.d.ts.map +0 -1
  745. package/out/adapters/wof-admin-jp/adapter.js.map +0 -1
  746. package/out/adapters/wof-admin-json/adapter.d.ts +0 -79
  747. package/out/adapters/wof-admin-json/adapter.d.ts.map +0 -1
  748. package/out/adapters/wof-admin-json/adapter.js +0 -197
  749. package/out/adapters/wof-admin-json/adapter.js.map +0 -1
  750. package/out/adapters/wof-json-rows.d.ts +0 -62
  751. package/out/adapters/wof-json-rows.d.ts.map +0 -1
  752. package/out/adapters/wof-json-rows.js +0 -83
  753. package/out/adapters/wof-json-rows.js.map +0 -1
  754. package/out/adapters/wof-postalcode-json/adapter.d.ts +0 -65
  755. package/out/adapters/wof-postalcode-json/adapter.d.ts.map +0 -1
  756. package/out/adapters/wof-postalcode-json/adapter.js +0 -151
  757. package/out/adapters/wof-postalcode-json/adapter.js.map +0 -1
  758. package/out/codex/us-fips-state.d.ts +0 -41
  759. package/out/codex/us-fips-state.d.ts.map +0 -1
  760. package/out/codex/us-fips-state.js +0 -100
  761. package/out/codex/us-fips-state.js.map +0 -1
  762. package/out/name-prone-us-suffixes.d.ts +0 -12
  763. package/out/name-prone-us-suffixes.d.ts.map +0 -1
  764. package/out/name-prone-us-suffixes.js +0 -12
  765. package/out/name-prone-us-suffixes.js.map +0 -1
  766. package/out/recipes/bare-country.d.ts +0 -25
  767. package/out/recipes/bare-country.d.ts.map +0 -1
  768. package/out/recipes/bare-country.js +0 -87
  769. package/out/recipes/bare-country.js.map +0 -1
  770. package/out/recipes/cn-organizational-units.d.ts +0 -36
  771. package/out/recipes/cn-organizational-units.d.ts.map +0 -1
  772. package/out/recipes/cn-organizational-units.js +0 -159
  773. package/out/recipes/cn-organizational-units.js.map +0 -1
  774. package/out/recipes/cz-pcfirst-preposition.d.ts +0 -22
  775. package/out/recipes/cz-pcfirst-preposition.d.ts.map +0 -1
  776. package/out/recipes/cz-pcfirst-preposition.js +0 -100
  777. package/out/recipes/cz-pcfirst-preposition.js.map +0 -1
  778. package/out/recipes/fr-admin-split.d.ts +0 -38
  779. package/out/recipes/fr-admin-split.d.ts.map +0 -1
  780. package/out/recipes/fr-admin-split.js +0 -192
  781. package/out/recipes/fr-admin-split.js.map +0 -1
  782. package/out/recipes/fr-bare-street.d.ts +0 -28
  783. package/out/recipes/fr-bare-street.d.ts.map +0 -1
  784. package/out/recipes/fr-bare-street.js +0 -143
  785. package/out/recipes/fr-bare-street.js.map +0 -1
  786. package/out/recipes/fr-fragment.d.ts +0 -77
  787. package/out/recipes/fr-fragment.d.ts.map +0 -1
  788. package/out/recipes/fr-fragment.js +0 -276
  789. package/out/recipes/fr-fragment.js.map +0 -1
  790. package/out/recipes/fr-lieudit.d.ts +0 -32
  791. package/out/recipes/fr-lieudit.d.ts.map +0 -1
  792. package/out/recipes/fr-lieudit.js +0 -227
  793. package/out/recipes/fr-lieudit.js.map +0 -1
  794. package/out/recipes/fr-order.d.ts +0 -38
  795. package/out/recipes/fr-order.d.ts.map +0 -1
  796. package/out/recipes/fr-order.js +0 -197
  797. package/out/recipes/fr-order.js.map +0 -1
  798. package/out/recipes/german.d.ts +0 -44
  799. package/out/recipes/german.d.ts.map +0 -1
  800. package/out/recipes/german.js +0 -288
  801. package/out/recipes/german.js.map +0 -1
  802. package/out/recipes/locale.d.ts +0 -136
  803. package/out/recipes/locale.d.ts.map +0 -1
  804. package/out/recipes/locale.js +0 -460
  805. package/out/recipes/locale.js.map +0 -1
  806. package/out/recipes/nl-postcode.d.ts +0 -26
  807. package/out/recipes/nl-postcode.d.ts.map +0 -1
  808. package/out/recipes/nl-postcode.js +0 -102
  809. package/out/recipes/nl-postcode.js.map +0 -1
  810. package/out/recipes/no-fragment.d.ts +0 -43
  811. package/out/recipes/no-fragment.d.ts.map +0 -1
  812. package/out/recipes/no-fragment.js +0 -182
  813. package/out/recipes/no-fragment.js.map +0 -1
  814. package/out/recipes/no-street-led.d.ts +0 -24
  815. package/out/recipes/no-street-led.d.ts.map +0 -1
  816. package/out/recipes/no-street-led.js +0 -113
  817. package/out/recipes/no-street-led.js.map +0 -1
  818. package/out/recipes/no-street.d.ts +0 -18
  819. package/out/recipes/no-street.d.ts.map +0 -1
  820. package/out/recipes/no-street.js +0 -71
  821. package/out/recipes/no-street.js.map +0 -1
  822. package/out/recipes/po-box-cedex.d.ts +0 -38
  823. package/out/recipes/po-box-cedex.d.ts.map +0 -1
  824. package/out/recipes/po-box-cedex.js +0 -767
  825. package/out/recipes/po-box-cedex.js.map +0 -1
  826. package/out/recipes/po-box.d.ts +0 -17
  827. package/out/recipes/po-box.d.ts.map +0 -1
  828. package/out/recipes/po-box.js +0 -100
  829. package/out/recipes/po-box.js.map +0 -1
  830. package/out/recipes/reviewed-postcode-tail.d.ts.map +0 -1
  831. package/out/recipes/reviewed-postcode-tail.js.map +0 -1
  832. package/out/recipes/si-bare-village.d.ts +0 -32
  833. package/out/recipes/si-bare-village.d.ts.map +0 -1
  834. package/out/recipes/si-bare-village.js +0 -88
  835. package/out/recipes/si-bare-village.js.map +0 -1
  836. package/out/recipes/street-affix.d.ts +0 -89
  837. package/out/recipes/street-affix.d.ts.map +0 -1
  838. package/out/recipes/street-affix.js +0 -563
  839. package/out/recipes/street-affix.js.map +0 -1
  840. package/out/recipes/street-bare.d.ts +0 -25
  841. package/out/recipes/street-bare.d.ts.map +0 -1
  842. package/out/recipes/street-bare.js +0 -86
  843. package/out/recipes/street-bare.js.map +0 -1
  844. package/out/recipes/sub-venue-sources.d.ts +0 -229
  845. package/out/recipes/sub-venue-sources.d.ts.map +0 -1
  846. package/out/recipes/sub-venue-sources.js +0 -653
  847. package/out/recipes/sub-venue-sources.js.map +0 -1
  848. package/out/recipes/sub-venue.d.ts +0 -269
  849. package/out/recipes/sub-venue.d.ts.map +0 -1
  850. package/out/recipes/sub-venue.js +0 -725
  851. package/out/recipes/sub-venue.js.map +0 -1
  852. package/out/synthesizers/german.d.ts +0 -115
  853. package/out/synthesizers/german.d.ts.map +0 -1
  854. package/out/synthesizers/german.js +0 -149
  855. package/out/synthesizers/german.js.map +0 -1
  856. package/out/tools/fetch/ban.d.ts +0 -31
  857. package/out/tools/fetch/ban.d.ts.map +0 -1
  858. package/out/tools/fetch/ban.js +0 -239
  859. package/out/tools/fetch/ban.js.map +0 -1
  860. package/out/tools/fetch/download.d.ts +0 -117
  861. package/out/tools/fetch/download.d.ts.map +0 -1
  862. package/out/tools/fetch/download.js +0 -160
  863. package/out/tools/fetch/download.js.map +0 -1
  864. package/out/tools/fetch/geonames-dump.d.ts +0 -91
  865. package/out/tools/fetch/geonames-dump.d.ts.map +0 -1
  866. package/out/tools/fetch/geonames-dump.js +0 -171
  867. package/out/tools/fetch/geonames-dump.js.map +0 -1
  868. package/out/tools/fetch/geonames-postal.d.ts +0 -76
  869. package/out/tools/fetch/geonames-postal.d.ts.map +0 -1
  870. package/out/tools/fetch/geonames-postal.js +0 -126
  871. package/out/tools/fetch/geonames-postal.js.map +0 -1
  872. package/out/tools/fetch/hrsa.d.ts +0 -18
  873. package/out/tools/fetch/hrsa.d.ts.map +0 -1
  874. package/out/tools/fetch/hrsa.js +0 -46
  875. package/out/tools/fetch/hrsa.js.map +0 -1
  876. package/out/tools/fetch/imls-pls.d.ts +0 -25
  877. package/out/tools/fetch/imls-pls.d.ts.map +0 -1
  878. package/out/tools/fetch/imls-pls.js +0 -108
  879. package/out/tools/fetch/imls-pls.js.map +0 -1
  880. package/out/tools/fetch/nad.d.ts +0 -70
  881. package/out/tools/fetch/nad.d.ts.map +0 -1
  882. package/out/tools/fetch/nad.js +0 -234
  883. package/out/tools/fetch/nad.js.map +0 -1
  884. package/out/tools/fetch/nppes.d.ts +0 -26
  885. package/out/tools/fetch/nppes.d.ts.map +0 -1
  886. package/out/tools/fetch/nppes.js +0 -126
  887. package/out/tools/fetch/nppes.js.map +0 -1
  888. package/out/tools/fetch/state-hi-schools.d.ts +0 -26
  889. package/out/tools/fetch/state-hi-schools.d.ts.map +0 -1
  890. package/out/tools/fetch/state-hi-schools.js +0 -112
  891. package/out/tools/fetch/state-hi-schools.js.map +0 -1
  892. package/out/tools/fetch/state-sources.d.ts +0 -26
  893. package/out/tools/fetch/state-sources.d.ts.map +0 -1
  894. package/out/tools/fetch/state-sources.js +0 -111
  895. package/out/tools/fetch/state-sources.js.map +0 -1
  896. package/out/tools/fetch/tiger-full.d.ts +0 -22
  897. package/out/tools/fetch/tiger-full.d.ts.map +0 -1
  898. package/out/tools/fetch/tiger-full.js +0 -217
  899. package/out/tools/fetch/tiger-full.js.map +0 -1
  900. package/out/tools/golden-expand.d.ts +0 -90
  901. package/out/tools/golden-expand.d.ts.map +0 -1
  902. package/out/tools/golden-expand.js +0 -406
  903. package/out/tools/golden-expand.js.map +0 -1
  904. package/out/tools/golden-promote.d.ts +0 -72
  905. package/out/tools/golden-promote.d.ts.map +0 -1
  906. package/out/tools/golden-promote.js +0 -240
  907. package/out/tools/golden-promote.js.map +0 -1
  908. package/out/tools/golden-relabel-street.d.ts +0 -196
  909. package/out/tools/golden-relabel-street.d.ts.map +0 -1
  910. package/out/tools/golden-relabel-street.js +0 -440
  911. package/out/tools/golden-relabel-street.js.map +0 -1
  912. package/out/tools/lint-slice-vocab.d.ts +0 -90
  913. package/out/tools/lint-slice-vocab.d.ts.map +0 -1
  914. package/out/tools/lint-slice-vocab.js +0 -267
  915. package/out/tools/lint-slice-vocab.js.map +0 -1
  916. package/out/tools/lint-slice.d.ts +0 -93
  917. package/out/tools/lint-slice.d.ts.map +0 -1
  918. package/out/tools/lint-slice.js +0 -322
  919. package/out/tools/lint-slice.js.map +0 -1
  920. package/out/tools/slice-kryptonite.d.ts +0 -32
  921. package/out/tools/slice-kryptonite.d.ts.map +0 -1
  922. package/out/tools/slice-kryptonite.js +0 -99
  923. package/out/tools/slice-kryptonite.js.map +0 -1
  924. package/out/tools/slice-translit.d.ts +0 -51
  925. package/out/tools/slice-translit.d.ts.map +0 -1
  926. package/out/tools/slice-translit.js +0 -166
  927. package/out/tools/slice-translit.js.map +0 -1
  928. package/out/tools/sub-venue/harvest.d.ts +0 -100
  929. package/out/tools/sub-venue/harvest.d.ts.map +0 -1
  930. package/out/tools/sub-venue/harvest.js +0 -168
  931. package/out/tools/sub-venue/harvest.js.map +0 -1
  932. package/out/tools/sub-venue/head-nouns.d.ts +0 -50
  933. package/out/tools/sub-venue/head-nouns.d.ts.map +0 -1
  934. package/out/tools/sub-venue/head-nouns.js.map +0 -1
  935. package/out/tools/sub-venue/surfaces.d.ts +0 -45
  936. package/out/tools/sub-venue/surfaces.d.ts.map +0 -1
  937. package/out/tools/sub-venue/surfaces.js.map +0 -1
  938. package/out/tools/sub-venue/table.d.ts +0 -229
  939. package/out/tools/sub-venue/table.d.ts.map +0 -1
  940. package/out/tools/sub-venue/table.js.map +0 -1
  941. package/out/tools/sub-venue/wikidata.d.ts +0 -26
  942. package/out/tools/sub-venue/wikidata.d.ts.map +0 -1
  943. package/out/tools/sub-venue/wikidata.js +0 -62
  944. package/out/tools/sub-venue/wikidata.js.map +0 -1
  945. package/out/tools/sub-venue-lexicon.d.ts +0 -156
  946. package/out/tools/sub-venue-lexicon.d.ts.map +0 -1
  947. package/out/tools/sub-venue-lexicon.js +0 -283
  948. package/out/tools/sub-venue-lexicon.js.map +0 -1
  949. package/out/tools/sub-venue-promotions.d.ts +0 -94
  950. package/out/tools/sub-venue-promotions.d.ts.map +0 -1
  951. package/out/tools/sub-venue-promotions.js +0 -266
  952. package/out/tools/sub-venue-promotions.js.map +0 -1
  953. /package/lib/{recipes/cn-organizational-units.ts → cn/recipes/organizational-units.ts} +0 -0
  954. /package/lib/{adapters → fr/adapters}/ban/street-decompose.ts +0 -0
  955. /package/lib/{adapters/wof-admin-jp → jp/adapters/wof-admin}/adapter.ts +0 -0
  956. /package/lib/tools/{golden-expand.ts → golden/expand.ts} +0 -0
  957. /package/lib/tools/{lint-slice.ts → lint/slice/index.ts} +0 -0
  958. /package/lib/tools/{slice-kryptonite.ts → slice/kryptonite.ts} +0 -0
  959. /package/lib/tools/{slice-translit.ts → slice/translit.ts} +0 -0
  960. /package/lib/tools/{sub-venue-promotions.ts → sub/venue/promotions.ts} +0 -0
  961. /package/lib/{adapters/state-hi-schools → us/adapters/state/hi-schools}/workbook.ts +0 -0
  962. /package/lib/{adapters → us/adapters}/tiger/street-decompose.ts +0 -0
  963. /package/lib/{codex/us-fips-state.ts → us/fips-state.ts} +0 -0
  964. /package/lib/{recipes → ve/recipes}/reviewed-postcode-tail.ts +0 -0
  965. /package/out/adapters/{geonames-postal → geonames/postal}/adapter.d.ts +0 -0
  966. /package/out/{adapters → au/adapters}/gnaf/adapter.d.ts +0 -0
  967. /package/out/{adapters → fr/adapters}/ban/adapter.d.ts +0 -0
  968. /package/out/{adapters → fr/adapters}/ban/street-decompose.d.ts +0 -0
  969. /package/out/{adapters → fr/adapters}/ban/street-decompose.js +0 -0
  970. /package/out/{adapters/wof-admin-jp → jp/adapters/wof-admin}/adapter.d.ts +0 -0
  971. /package/out/{adapters/wof-admin-jp → jp/adapters/wof-admin}/adapter.js +0 -0
  972. /package/out/tools/{sub-venue → sub/venue}/head-nouns.js +0 -0
  973. /package/out/tools/{sub-venue → sub/venue}/surfaces.js +0 -0
  974. /package/out/tools/{sub-venue → sub/venue}/table.js +0 -0
  975. /package/out/{adapters → us/adapters}/fcc-bdc/adapter.d.ts +0 -0
  976. /package/out/{adapters/state-hi-schools → us/adapters/state/hi-schools}/adapter.d.ts +0 -0
  977. /package/out/{adapters/state-hi-schools → us/adapters/state/hi-schools}/workbook.d.ts +0 -0
  978. /package/out/{adapters/state-hi-schools → us/adapters/state/hi-schools}/workbook.js +0 -0
  979. /package/out/{adapters/state-ia-contractors → us/adapters/state/ia-contractors}/adapter.d.ts +0 -0
  980. /package/out/{adapters/state-ny-notaries → us/adapters/state/ny-notaries}/adapter.d.ts +0 -0
  981. /package/out/{adapters/state-tx-notaries → us/adapters/state/tx-notaries}/adapter.d.ts +0 -0
  982. /package/out/{adapters → us/adapters}/tiger/street-decompose.d.ts +0 -0
  983. /package/out/{adapters → us/adapters}/tiger/street-decompose.js +0 -0
  984. /package/out/{adapters/usgov-hrsa-fqhc → us/adapters/usgov/hrsa-fqhc}/adapter.d.ts +0 -0
  985. /package/out/{adapters/usgov-imls-pls → us/adapters/usgov/imls-pls}/adapter.d.ts +0 -0
  986. /package/out/{adapters/usgov-irs-bmf → us/adapters/usgov/irs-bmf}/adapter.d.ts +0 -0
  987. /package/out/{adapters/usgov-nad → us/adapters/usgov/nad}/adapter.d.ts +0 -0
  988. /package/out/{adapters/usgov-nppes → us/adapters/usgov/nppes}/adapter.d.ts +0 -0
  989. /package/out/{adapters/usgov-samhsa-treatment-locator → us/adapters/usgov/samhsa-treatment-locator}/adapter.d.ts +0 -0
  990. /package/out/{recipes → ve/recipes}/reviewed-postcode-tail.d.ts +0 -0
  991. /package/out/{recipes → ve/recipes}/reviewed-postcode-tail.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"houjin.js","sourceRoot":"","sources":["../../../../lib/jp/tools/fetch/houjin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ *
6
+ * The Korean road-name address register (주소DB) as the LABEL source: a streaming reader over the monthly zip
7
+ * `fetchJusoKR` downloads (#2204 §1).
8
+ *
9
+ * The archive holds four pipe-delimited CP949 text files per 시도 plus one nationwide road-code file, laid out as the
10
+ * guide inside the zip states (붙임1, the 전체분 layout):
11
+ *
12
+ * 개선_도로명코드_전체분.txt 도로명코드|도로명|도로명로마자|읍면동일련번호|시도명|…|읍면동구분|…
13
+ * 주소_<시도>.txt 관리번호|도로명코드|읍면동일련번호|지하여부|건물본번|건물부번|기초구역번호|…
14
+ * 지번_<시도>.txt 관리번호|일련번호|법정동코드|시도명|시군구명|법정읍면동명|법정리명|산여부|…
15
+ * 부가정보_<시도>.txt 관리번호|행정동코드|행정동명|우편번호|…|건축물대장건물명|시군구건물명|공동주택여부
16
+ *
17
+ * A LABEL row is one 주소 record joined to its road code (the admin ladder and the road name), its representative lot
18
+ * (대표여부 = 1: the 법정동, the 리, and the lot number the 지번 form writes) and its supplement (the postcode — the
19
+ * 기초구역번호 on the 주소 row IS the five-digit postcode — and the building name). The row-count note in the zip
20
+ * gives 6,424,089 addresses and 8,194,643 lots for the 2026-08-31 edition.
21
+ *
22
+ * MEMBER NAMES ARE CP949 WITHOUT THE UTF-8 FLAG, so a zip reader that trusts the format's CP437 default finds
23
+ * `┴╓╝╥_╝¡┐ïÆ╣▌╗π.txt` and matches nothing; `filenameEncoding` decodes the central directory's real bytes. The
24
+ * contents need the same treatment one layer down, which is what `decodeByteStream` does before the line split.
25
+ */
26
+ import type { PathBuilderLike } from "path-ts";
27
+ /**
28
+ * The 2026 edition writes the merged 전남광주통합특별시 where every older source — the permit registry, Who's On First — still
29
+ * writes 전라남도 and 광주광역시. A typed string in either form aligns against the register through this map.
30
+ */
31
+ export declare const REGION_ALIASES: Readonly<Record<string, string>>;
32
+ /**
33
+ * One address of the register, with the pieces the road form and the lot form each write.
34
+ */
35
+ export interface JusoLabelRow {
36
+ region: string;
37
+ sigungu: string;
38
+ /**
39
+ * The 읍/면 the road address itself carries between the 시군구 and the road (읍면동구분 `0`), else empty: a 동 is never written
40
+ * in the road form, it goes in the parenthetical.
41
+ */
42
+ eupmyeon: string;
43
+ dong: string;
44
+ ri: string;
45
+ road: string;
46
+ number: string;
47
+ postcode: string;
48
+ building: string;
49
+ lot: string;
50
+ underground: boolean;
51
+ }
52
+ /**
53
+ * What the official form writes in parentheses after the number: the 법정동 in a 동 area, the 리 in an 읍/면.
54
+ */
55
+ export declare function parenthetical(row: JusoLabelRow): string;
56
+ /**
57
+ * Every full-edition member of one kind, as `[region suffix, archive name]`, sorted by region.
58
+ *
59
+ * The monthly edition also ships 변동 (change-only) files under the same prefixes; those carry a different row set and
60
+ * are excluded by name.
61
+ */
62
+ export declare function regionMembers(names: readonly string[], prefix: string): Array<[string, string]>;
63
+ export interface ReadJusoOptions {
64
+ /**
65
+ * Stop after this many rows per 시도. For a fixture or a smoke run; omit for the whole register.
66
+ */
67
+ maxRowsPerRegion?: number;
68
+ }
69
+ /**
70
+ * Stream every LABEL row, region by region.
71
+ *
72
+ * The lot and supplement files of one 시도 are held while its address file streams, so the join never holds the country
73
+ * at once — the largest region's two side files, not 6.4 million addresses.
74
+ */
75
+ export declare function readJusoLabelRows(archivePath: PathBuilderLike, options?: ReadJusoOptions): AsyncGenerator<JusoLabelRow>;
76
+ //# sourceMappingURL=label-rows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label-rows.d.ts","sourceRoot":"","sources":["../../../../lib/kr/adapters/juso/label-rows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AA8C9C;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAK3D,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,OAAO,CAAA;CACpB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAEvD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAK/F;AA+CD,MAAM,WAAW,eAAe;IAC/B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;;;;GAKG;AACH,wBAAuB,iBAAiB,CACvC,WAAW,EAAE,eAAe,EAC5B,OAAO,GAAE,eAAoB,GAC3B,cAAc,CAAC,YAAY,CAAC,CAuE9B"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ *
6
+ * The Korean road-name address register (주소DB) as the LABEL source: a streaming reader over the monthly zip
7
+ * `fetchJusoKR` downloads (#2204 §1).
8
+ *
9
+ * The archive holds four pipe-delimited CP949 text files per 시도 plus one nationwide road-code file, laid out as the
10
+ * guide inside the zip states (붙임1, the 전체분 layout):
11
+ *
12
+ * 개선_도로명코드_전체분.txt 도로명코드|도로명|도로명로마자|읍면동일련번호|시도명|…|읍면동구분|…
13
+ * 주소_<시도>.txt 관리번호|도로명코드|읍면동일련번호|지하여부|건물본번|건물부번|기초구역번호|…
14
+ * 지번_<시도>.txt 관리번호|일련번호|법정동코드|시도명|시군구명|법정읍면동명|법정리명|산여부|…
15
+ * 부가정보_<시도>.txt 관리번호|행정동코드|행정동명|우편번호|…|건축물대장건물명|시군구건물명|공동주택여부
16
+ *
17
+ * A LABEL row is one 주소 record joined to its road code (the admin ladder and the road name), its representative lot
18
+ * (대표여부 = 1: the 법정동, the 리, and the lot number the 지번 form writes) and its supplement (the postcode — the
19
+ * 기초구역번호 on the 주소 row IS the five-digit postcode — and the building name). The row-count note in the zip
20
+ * gives 6,424,089 addresses and 8,194,643 lots for the 2026-08-31 edition.
21
+ *
22
+ * MEMBER NAMES ARE CP949 WITHOUT THE UTF-8 FLAG, so a zip reader that trusts the format's CP437 default finds
23
+ * `┴╓╝╥_╝¡┐ïÆ╣▌╗π.txt` and matches nothing; `filenameEncoding` decodes the central directory's real bytes. The
24
+ * contents need the same treatment one layer down, which is what `decodeByteStream` does before the line split.
25
+ */
26
+ import { decodeByteStream } from "@mailwoman/core/fs/streams";
27
+ import { listZipEntries, readZipEntry } from "@mailwoman/core/fs/zip";
28
+ import { TextSpliterator } from "spliterator";
29
+ /**
30
+ * The publisher's encoding, for both the member names and their contents.
31
+ *
32
+ * `cp949`, not `euc-kr`: the register uses the UHC extension, and Node's WHATWG `euc-kr` reads none of it. One row in
33
+ * 48,000 carries such a sequence and decodes to a different string with no error raised — see `decodeByteStream`.
34
+ */
35
+ const ENCODING = "cp949";
36
+ /**
37
+ * The road-code file's columns, 0-based.
38
+ */
39
+ const RC = { code: 0, road: 1, serial: 3, region: 4, sigungu: 6, eupmyeondong: 8, kind: 10 };
40
+ /**
41
+ * 주소 columns.
42
+ */
43
+ const AD = { id: 0, roadCode: 1, serial: 2, underground: 3, main: 4, sub: 5, postcode: 6 };
44
+ /**
45
+ * 지번 columns.
46
+ */
47
+ const LOT = { id: 0, dong: 5, ri: 6, mountain: 7, main: 8, sub: 9, primary: 10 };
48
+ /**
49
+ * 부가정보 columns.
50
+ */
51
+ const SUP = { id: 0, postcode: 3, buildingRegister: 6, buildingLocal: 7, apartment: 8 };
52
+ /**
53
+ * Joins 도로명코드 to 읍면동일련번호, written as an escape so no NUL byte enters the source.
54
+ *
55
+ * Neither part has a fixed width, so a printable separator that could occur in either would let two different pairs
56
+ * produce one key. No code contains NUL.
57
+ */
58
+ const CODE_SEPARATOR = "\0";
59
+ /**
60
+ * The road-code table's key for one 도로명코드 and 읍면동일련번호.
61
+ */
62
+ function roadCodeKey(code, serial) {
63
+ return `${code}${CODE_SEPARATOR}${serial}`;
64
+ }
65
+ /**
66
+ * The 2026 edition writes the merged 전남광주통합특별시 where every older source — the permit registry, Who's On First — still
67
+ * writes 전라남도 and 광주광역시. A typed string in either form aligns against the register through this map.
68
+ */
69
+ export const REGION_ALIASES = {
70
+ 전라남도: "전남광주통합특별시",
71
+ 광주광역시: "전남광주통합특별시",
72
+ 강원도: "강원특별자치도",
73
+ 전라북도: "전북특별자치도",
74
+ };
75
+ /**
76
+ * What the official form writes in parentheses after the number: the 법정동 in a 동 area, the 리 in an 읍/면.
77
+ */
78
+ export function parenthetical(row) {
79
+ return row.eupmyeon ? row.ri : row.dong;
80
+ }
81
+ /**
82
+ * Every full-edition member of one kind, as `[region suffix, archive name]`, sorted by region.
83
+ *
84
+ * The monthly edition also ships 변동 (change-only) files under the same prefixes; those carry a different row set and
85
+ * are excluded by name.
86
+ */
87
+ export function regionMembers(names, prefix) {
88
+ return names
89
+ .filter((name) => name.startsWith(`${prefix}_`) && name.endsWith(".txt") && !name.includes("변동"))
90
+ .map((name) => [name.slice(prefix.length + 1, -4), name])
91
+ .toSorted(([a], [b]) => a.localeCompare(b));
92
+ }
93
+ /**
94
+ * Split one CP949 pipe-delimited member into its fields, line by line, without holding the member.
95
+ */
96
+ async function* fields(archivePath, member) {
97
+ const bytes = readZipEntry(archivePath, member, { filenameEncoding: ENCODING });
98
+ for await (const line of TextSpliterator.fromAsync(decodeByteStream(bytes, ENCODING))) {
99
+ yield line.replace(/\r$/u, "").split("|");
100
+ }
101
+ }
102
+ /**
103
+ * The road-code table, keyed by {@link roadCodeKey}: the admin ladder, the road name and the 읍면동구분.
104
+ *
105
+ * Held whole because every region's addresses join against it. A composite string key rather than a nested map: the
106
+ * pair is read once per address row and a single lookup is what that path can afford.
107
+ */
108
+ async function loadRoadCodes(archivePath, member) {
109
+ const codes = new Map();
110
+ for await (const row of fields(archivePath, member)) {
111
+ if (row.length <= RC.kind)
112
+ continue;
113
+ codes.set(roadCodeKey(row[RC.code], row[RC.serial]), [
114
+ row[RC.region],
115
+ row[RC.sigungu],
116
+ row[RC.eupmyeondong],
117
+ row[RC.road],
118
+ row[RC.kind],
119
+ ]);
120
+ }
121
+ return codes;
122
+ }
123
+ /**
124
+ * A house or lot number as the register writes it: leading zeros dropped, a `-<부번>` only when there is one.
125
+ */
126
+ function joinNumber(main, sub) {
127
+ const head = main.replace(/^0+/u, "") || "0";
128
+ const tail = sub.replace(/^0+/u, "");
129
+ return tail && tail !== "0" ? `${head}-${tail}` : head;
130
+ }
131
+ /**
132
+ * Stream every LABEL row, region by region.
133
+ *
134
+ * The lot and supplement files of one 시도 are held while its address file streams, so the join never holds the country
135
+ * at once — the largest region's two side files, not 6.4 million addresses.
136
+ */
137
+ export async function* readJusoLabelRows(archivePath, options = {}) {
138
+ const names = (await listZipEntries(archivePath, { filenameEncoding: ENCODING })).map((entry) => entry.name);
139
+ const roadCodeMember = names.find((name) => name.includes("도로명코드") && !name.includes("변동"));
140
+ if (!roadCodeMember) {
141
+ throw new Error(`no 도로명코드 member in ${archivePath} — the archive is not a 전체분 edition`);
142
+ }
143
+ const codes = await loadRoadCodes(archivePath, roadCodeMember);
144
+ const lotMembers = new Map(regionMembers(names, "지번"));
145
+ const supplementMembers = new Map(regionMembers(names, "부가정보"));
146
+ for (const [suffix, member] of regionMembers(names, "주소")) {
147
+ const lotMember = lotMembers.get(suffix);
148
+ const supplementMember = supplementMembers.get(suffix);
149
+ if (!lotMember || !supplementMember) {
150
+ throw new Error(`region ${suffix} has an address file but no 지번 or 부가정보 file`);
151
+ }
152
+ const lots = new Map();
153
+ for await (const row of fields(archivePath, lotMember)) {
154
+ if (row.length <= LOT.primary || row[LOT.primary] !== "1")
155
+ continue;
156
+ const lot = `${row[LOT.mountain] === "1" ? "산" : ""}${joinNumber(row[LOT.main], row[LOT.sub])}`;
157
+ lots.set(row[LOT.id], [row[LOT.dong], row[LOT.ri], lot]);
158
+ }
159
+ const supplements = new Map();
160
+ for await (const row of fields(archivePath, supplementMember)) {
161
+ if (row.length <= SUP.apartment)
162
+ continue;
163
+ supplements.set(row[SUP.id], [row[SUP.postcode], row[SUP.buildingLocal] || row[SUP.buildingRegister]]);
164
+ }
165
+ let emitted = 0;
166
+ for await (const row of fields(archivePath, member)) {
167
+ if (row.length <= AD.postcode)
168
+ continue;
169
+ const code = codes.get(roadCodeKey(row[AD.roadCode], row[AD.serial]));
170
+ if (!code)
171
+ continue;
172
+ const [region, sigungu, eupmyeondong, road, kind] = code;
173
+ const [dong = "", ri = "", lot = ""] = lots.get(row[AD.id]) ?? [];
174
+ const [postcode = row[AD.postcode], building = ""] = supplements.get(row[AD.id]) ?? [];
175
+ yield {
176
+ region,
177
+ sigungu,
178
+ eupmyeon: kind === "0" ? eupmyeondong : "",
179
+ dong,
180
+ ri,
181
+ road,
182
+ number: joinNumber(row[AD.main], row[AD.sub]),
183
+ postcode: postcode || row[AD.postcode],
184
+ building,
185
+ lot,
186
+ underground: row[AD.underground] === "1",
187
+ };
188
+ emitted += 1;
189
+ if (options.maxRowsPerRegion !== undefined && emitted >= options.maxRowsPerRegion)
190
+ break;
191
+ }
192
+ }
193
+ }
194
+ //# sourceMappingURL=label-rows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label-rows.js","sourceRoot":"","sources":["../../../../lib/kr/adapters/juso/label-rows.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ *
6
+ * Align one permit-registry address string to the LABEL register's key, or answer null (#2204 §5).
7
+ *
8
+ * Every permit row carries the same premises in both address systems, typed by a clerk:
9
+ *
10
+ * 도로명주소 서울특별시 종로구 종로 233, 1층 일부호 (종로5가)
11
+ * 지번주소 서울특별시 종로구 종로5가 43-1
12
+ *
13
+ * The road-name form is `<시도> <시군구> <도로명> <건물번호>`, then an optional `, <상세주소>` (floor, unit, building)
14
+ * and an optional parenthetical `(<법정동>[, <건물명>])`; the lot-number form is
15
+ * `<시도> <시군구> <법정동> [<리>] [산]<본번>[-<부번>]` followed by whatever the clerk added.
16
+ *
17
+ * ALIGNMENT IS EXACT against {@link KeyIndex}, never fuzzy. A string that satisfies the whole key becomes a training
18
+ * row whose spans are the matched pieces; one that does not is a BOARD row — an address the model will be read on and
19
+ * never trained on. The rate per file is measured and reported before any row enters a corpus, which is the rule a
20
+ * noisy source is admitted under.
21
+ */
22
+ import { type KeyIndex } from "#kr/adapters/localdata/key-index";
23
+ /**
24
+ * One aligned string: the spans that matched, and the key they matched under.
25
+ */
26
+ export interface Aligned {
27
+ raw: string;
28
+ spanStarts: number[];
29
+ spanEnds: number[];
30
+ spanTags: string[];
31
+ register: "registry_road" | "registry_lot";
32
+ region: string;
33
+ sigungu: string;
34
+ }
35
+ /**
36
+ * Align one road-name string, or answer null.
37
+ */
38
+ export declare function alignRoadAddress(text: string, index: KeyIndex): Aligned | null;
39
+ /**
40
+ * Align one lot-number string, or answer null.
41
+ */
42
+ export declare function alignLotAddress(text: string, index: KeyIndex): Aligned | null;
43
+ //# sourceMappingURL=align.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"align.d.ts","sourceRoot":"","sources":["../../../../lib/kr/adapters/localdata/align.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,KAAK,QAAQ,EAAwB,MAAM,kCAAkC,CAAA;AAuBtF;;GAEG;AACH,MAAM,WAAW,OAAO;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,QAAQ,EAAE,eAAe,GAAG,cAAc,CAAA;IAC1C,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CACf;AA6DD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CA6G9E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAgE7E"}
@@ -0,0 +1,223 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ *
6
+ * Align one permit-registry address string to the LABEL register's key, or answer null (#2204 §5).
7
+ *
8
+ * Every permit row carries the same premises in both address systems, typed by a clerk:
9
+ *
10
+ * 도로명주소 서울특별시 종로구 종로 233, 1층 일부호 (종로5가)
11
+ * 지번주소 서울특별시 종로구 종로5가 43-1
12
+ *
13
+ * The road-name form is `<시도> <시군구> <도로명> <건물번호>`, then an optional `, <상세주소>` (floor, unit, building)
14
+ * and an optional parenthetical `(<법정동>[, <건물명>])`; the lot-number form is
15
+ * `<시도> <시군구> <법정동> [<리>] [산]<본번>[-<부번>]` followed by whatever the clerk added.
16
+ *
17
+ * ALIGNMENT IS EXACT against {@link KeyIndex}, never fuzzy. A string that satisfies the whole key becomes a training
18
+ * row whose spans are the matched pieces; one that does not is a BOARD row — an address the model will be read on and
19
+ * never trained on. The rate per file is measured and reported before any row enters a corpus, which is the rule a
20
+ * noisy source is admitted under.
21
+ */
22
+ import { sigunguSpan, unitKey } from "#kr/adapters/localdata/key-index";
23
+ /**
24
+ * A building number: `233`, `43-1`, `지하 1476`.
25
+ */
26
+ const BUILDING_NUMBER = /^(?:지하\s?)?\d+(?:-\d+)?$/u;
27
+ /**
28
+ * A lot number: `43-1`, `산12`, `43번지`.
29
+ */
30
+ const LOT_NUMBER = /^산?\d+(?:-\d+)?(?:번지)?$/u;
31
+ /**
32
+ * A floor or unit the clerk appended: `2층`, `일부호`, `B1`, `지하1층`, `101동`.
33
+ */
34
+ const UNIT_TOKEN = /^(?:지하\s?)?(?:B?\d+(?:~\d+)?(?:층|호)|\d+층|B\d+|지하\d*층?|\d+동|[가-힣]?\d*호)(?:,)?$/u;
35
+ /**
36
+ * The shortest either form can be: 시도, 시군구, and the road or the 법정동. Anything shorter cannot carry the key, whatever
37
+ * else it holds.
38
+ */
39
+ const MINIMUM_TOKENS = 3;
40
+ /**
41
+ * Record a span, unless it is empty or blank.
42
+ *
43
+ * A blank span is what a clerk's double space produces, and a zero-width one what a token found at its own end
44
+ * produces; neither is a component and both would train the model on nothing.
45
+ */
46
+ function put(spans, text, start, end, tag) {
47
+ if (end > start && text.slice(start, end).trim()) {
48
+ spans.push({ start, end, tag });
49
+ }
50
+ }
51
+ /**
52
+ * Where each token begins in the original text, walked left to right so a repeated token takes its own position rather
53
+ * than the first one's.
54
+ */
55
+ function tokenPositions(text, tokens, from = 0) {
56
+ const positions = [];
57
+ let cursor = from;
58
+ for (const token of tokens) {
59
+ const at = text.indexOf(token, cursor);
60
+ positions.push(at);
61
+ cursor = at + token.length;
62
+ }
63
+ return positions;
64
+ }
65
+ /**
66
+ * The index of the first unit-shaped token, or the length when there is none.
67
+ */
68
+ function firstUnitIndex(tokens) {
69
+ const found = tokens.findIndex((token) => UNIT_TOKEN.test(token));
70
+ return found === -1 ? tokens.length : found;
71
+ }
72
+ function finish(text, spans, register, region, sigungu) {
73
+ const sorted = spans.toSorted((a, b) => a.start - b.start || a.end - b.end || a.tag.localeCompare(b.tag));
74
+ return {
75
+ raw: text,
76
+ spanStarts: sorted.map((span) => span.start),
77
+ spanEnds: sorted.map((span) => span.end),
78
+ spanTags: sorted.map((span) => span.tag),
79
+ register,
80
+ region,
81
+ sigungu,
82
+ };
83
+ }
84
+ /**
85
+ * Align one road-name string, or answer null.
86
+ */
87
+ export function alignRoadAddress(text, index) {
88
+ const openAt = text.indexOf("(");
89
+ const head = openAt === -1 ? text : text.slice(0, openAt);
90
+ const tail = openAt === -1 ? "" : text.slice(openAt + 1);
91
+ const parenthetical = tail.endsWith(")") ? tail.slice(0, -1).trim() : "";
92
+ const commaAt = head.indexOf(",");
93
+ const core = commaAt === -1 ? head : head.slice(0, commaAt);
94
+ const detail = commaAt === -1 ? "" : head.slice(commaAt + 1);
95
+ const tokens = core.split(/\s+/u).filter((token) => token.length);
96
+ const positions = tokenPositions(text, tokens);
97
+ if (tokens.length < MINIMUM_TOKENS || !index.regions.has(tokens[0]))
98
+ return null;
99
+ const region = tokens[0];
100
+ const width = sigunguSpan(index, region, tokens, 1);
101
+ // A region with no 시군구 level (세종특별자치시) lists the empty string; its strings go region → road.
102
+ if (!width && !index.sigunguByRegion.get(region)?.has(""))
103
+ return null;
104
+ const sigungu = tokens.slice(1, 1 + width).join(" ");
105
+ const unit = unitKey(region, sigungu);
106
+ const roads = index.roadsByUnit.get(unit) ?? new Set();
107
+ const dongs = index.dongsByUnit.get(unit) ?? new Set();
108
+ let roadAt = 1 + width;
109
+ let eupmyeonAt = null;
110
+ // In an 읍/면 area the road form carries the 읍/면 between the 시군구 and the road (`기장군 기장읍 기장해안로 205`); the
111
+ // register lists those names beside the 동 of the same unit.
112
+ if (roadAt + 2 < tokens.length && dongs.has(tokens[roadAt]) && roads.has(tokens[roadAt + 1])) {
113
+ eupmyeonAt = roadAt;
114
+ roadAt += 1;
115
+ }
116
+ // A road name is one token; a numbered branch (`대학로8길`) is part of that token in the register.
117
+ if (roadAt + 1 >= tokens.length || !roads.has(tokens[roadAt]))
118
+ return null;
119
+ let numberAtToken = roadAt + 1;
120
+ // `달구벌대로 지하 1476`: the underground marker stands as its own token before the number, outside every span.
121
+ if (tokens[numberAtToken] === "지하" && numberAtToken + 1 < tokens.length) {
122
+ numberAtToken += 1;
123
+ }
124
+ const number = tokens[numberAtToken];
125
+ if (!BUILDING_NUMBER.test(number))
126
+ return null;
127
+ const spans = [];
128
+ put(spans, text, positions[0], positions[0] + region.length, "region");
129
+ for (let offset = 0; offset < width; offset += 1) {
130
+ const token = tokens[1 + offset];
131
+ put(spans, text, positions[1 + offset], positions[1 + offset] + token.length, "subregion");
132
+ }
133
+ if (eupmyeonAt !== null) {
134
+ put(spans, text, positions[eupmyeonAt], positions[eupmyeonAt] + tokens[eupmyeonAt].length, "dependent_locality");
135
+ }
136
+ put(spans, text, positions[roadAt], positions[roadAt] + tokens[roadAt].length, "street");
137
+ const numberAt = positions[numberAtToken];
138
+ put(spans, text, numberAt, numberAt + number.length, "house_number");
139
+ // What follows the number, with or without a comma, is the building name and then the floor/unit — the same
140
+ // leading-venue, unit-tail reading the lot form uses.
141
+ const restTokens = [...tokens.slice(numberAtToken + 1), ...detail.split(/\s+/u).filter((token) => token.length)];
142
+ if (restTokens.length) {
143
+ const restPositions = tokenPositions(text, restTokens, numberAt + number.length);
144
+ const firstUnit = firstUnitIndex(restTokens);
145
+ if (firstUnit) {
146
+ put(spans, text, restPositions[0], restPositions[firstUnit - 1] + restTokens[firstUnit - 1].length, "venue");
147
+ }
148
+ if (firstUnit < restTokens.length) {
149
+ put(spans, text, restPositions[firstUnit], restPositions.at(-1) + restTokens.at(-1).length, "unit");
150
+ }
151
+ }
152
+ if (parenthetical) {
153
+ const parenAt = text.indexOf(parenthetical, head.length);
154
+ const innerComma = parenthetical.indexOf(",");
155
+ const dong = (innerComma === -1 ? parenthetical : parenthetical.slice(0, innerComma)).trim();
156
+ const building = (innerComma === -1 ? "" : parenthetical.slice(innerComma + 1)).trim();
157
+ if (dongs.has(dong)) {
158
+ const dongAt = text.indexOf(dong, parenAt);
159
+ put(spans, text, dongAt, dongAt + dong.length, "dependent_locality");
160
+ if (building) {
161
+ const buildingAt = text.indexOf(building, dongAt + dong.length);
162
+ put(spans, text, buildingAt, buildingAt + building.length, "venue");
163
+ }
164
+ }
165
+ else {
166
+ put(spans, text, parenAt, parenAt + parenthetical.length, "venue");
167
+ }
168
+ }
169
+ return finish(text, spans, "registry_road", region, sigungu);
170
+ }
171
+ /**
172
+ * Align one lot-number string, or answer null.
173
+ */
174
+ export function alignLotAddress(text, index) {
175
+ const tokens = text.split(/\s+/u).filter((token) => token.length);
176
+ const positions = tokenPositions(text, tokens);
177
+ if (tokens.length < MINIMUM_TOKENS || !index.regions.has(tokens[0]))
178
+ return null;
179
+ const region = tokens[0];
180
+ const width = sigunguSpan(index, region, tokens, 1);
181
+ if (!width && !index.sigunguByRegion.get(region)?.has(""))
182
+ return null;
183
+ const sigungu = tokens.slice(1, 1 + width).join(" ");
184
+ const dongAt = 1 + width;
185
+ const dongs = index.dongsByUnit.get(unitKey(region, sigungu)) ?? new Set();
186
+ if (dongAt >= tokens.length || !dongs.has(tokens[dongAt]))
187
+ return null;
188
+ const dong = tokens[dongAt];
189
+ let lotAt = dongAt + 1;
190
+ let ri = null;
191
+ if (lotAt < tokens.length && index.risByDong.get(unitKey(region, sigungu, dong))?.has(tokens[lotAt])) {
192
+ ri = tokens[lotAt];
193
+ lotAt += 1;
194
+ }
195
+ if (lotAt >= tokens.length || !LOT_NUMBER.test(tokens[lotAt]))
196
+ return null;
197
+ const lot = tokens[lotAt];
198
+ const spans = [];
199
+ put(spans, text, positions[0], positions[0] + region.length, "region");
200
+ for (let offset = 0; offset < width; offset += 1) {
201
+ const token = tokens[1 + offset];
202
+ put(spans, text, positions[1 + offset], positions[1 + offset] + token.length, "subregion");
203
+ }
204
+ put(spans, text, positions[dongAt], positions[dongAt] + dong.length, "dependent_locality");
205
+ if (ri) {
206
+ put(spans, text, positions[lotAt - 1], positions[lotAt - 1] + ri.length, "dependent_locality");
207
+ }
208
+ put(spans, text, positions[lotAt], positions[lotAt] + lot.length, "house_number");
209
+ const rest = tokens.slice(lotAt + 1);
210
+ if (rest.length) {
211
+ // The clerk writes the building name first and the floor/unit after it (`교보생명빌딩 2층`, `지강빌딩 1층 일부호`):
212
+ // the venue is the run of tokens before the first unit-shaped one, the unit everything from there to the end.
213
+ const firstUnit = firstUnitIndex(rest);
214
+ if (firstUnit) {
215
+ put(spans, text, positions[lotAt + 1], positions[lotAt + firstUnit] + rest[firstUnit - 1].length, "venue");
216
+ }
217
+ if (firstUnit < rest.length) {
218
+ put(spans, text, positions[lotAt + 1 + firstUnit], positions[lotAt + rest.length] + rest.at(-1).length, "unit");
219
+ }
220
+ }
221
+ return finish(text, spans, "registry_lot", region, sigungu);
222
+ }
223
+ //# sourceMappingURL=align.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"align.js","sourceRoot":"","sources":["../../../../lib/kr/adapters/localdata/align.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAiB,WAAW,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAA;AAEtF;;GAEG;AACH,MAAM,eAAe,GAAG,2BAA2B,CAAA;AAEnD;;GAEG;AACH,MAAM,UAAU,GAAG,0BAA0B,CAAA;AAE7C;;GAEG;AACH,MAAM,UAAU,GAAG,gFAAgF,CAAA;AAEnG;;;GAGG;AACH,MAAM,cAAc,GAAG,CAAC,CAAA;AAqBxB;;;;;GAKG;AACH,SAAS,GAAG,CAAC,KAAa,EAAE,IAAY,EAAE,KAAa,EAAE,GAAW,EAAE,GAAW;IAChF,IAAI,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;IAChC,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,IAAY,EAAE,MAAyB,EAAE,IAAI,GAAG,CAAC;IACxE,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,IAAI,MAAM,GAAG,IAAI,CAAA;IAEjB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAEtC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAClB,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,MAAM,CAAA;IAC3B,CAAC;IAED,OAAO,SAAS,CAAA;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,MAAyB;IAChD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAEjE,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAA;AAC5C,CAAC;AAED,SAAS,MAAM,CAAC,IAAY,EAAE,KAAa,EAAE,QAA6B,EAAE,MAAc,EAAE,OAAe;IAC1G,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAEzG,OAAO;QACN,GAAG,EAAE,IAAI;QACT,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5C,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;QACxC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;QACxC,QAAQ;QACR,MAAM;QACN,OAAO;KACP,CAAA;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,KAAe;IAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAChC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;IACzD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACxD,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAExE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACjC,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;IAC3D,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAA;IAE5D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACjE,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAE9C,IAAI,MAAM,CAAC,MAAM,GAAG,cAAc,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC;QAAE,OAAO,IAAI,CAAA;IAEjF,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAE,CAAA;IACzB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;IAEnD,6FAA6F;IAC7F,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAAE,OAAO,IAAI,CAAA;IAEtE,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACpD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAU,CAAA;IAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAU,CAAA;IAE9D,IAAI,MAAM,GAAG,CAAC,GAAG,KAAK,CAAA;IACtB,IAAI,UAAU,GAAkB,IAAI,CAAA;IAEpC,uGAAuG;IACvG,4DAA4D;IAC5D,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAE,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,EAAE,CAAC;QAChG,UAAU,GAAG,MAAM,CAAA;QACnB,MAAM,IAAI,CAAC,CAAA;IACZ,CAAC;IAED,+FAA+F;IAC/F,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAE,CAAC;QAAE,OAAO,IAAI,CAAA;IAE3E,IAAI,aAAa,GAAG,MAAM,GAAG,CAAC,CAAA;IAE9B,yGAAyG;IACzG,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,aAAa,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACzE,aAAa,IAAI,CAAC,CAAA;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAE,CAAA;IAErC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAA;IAE9C,MAAM,KAAK,GAAW,EAAE,CAAA;IAExB,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAE,EAAE,SAAS,CAAC,CAAC,CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAExE,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAE,CAAA;QAEjC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,GAAG,MAAM,CAAE,EAAE,SAAS,CAAC,CAAC,GAAG,MAAM,CAAE,GAAG,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IAC7F,CAAC;IAED,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACzB,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,UAAU,CAAE,EAAE,SAAS,CAAC,UAAU,CAAE,GAAG,MAAM,CAAC,UAAU,CAAE,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;IACpH,CAAC;IAED,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAE,EAAE,SAAS,CAAC,MAAM,CAAE,GAAG,MAAM,CAAC,MAAM,CAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAE3F,MAAM,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAE,CAAA;IAE1C,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IAEpE,4GAA4G;IAC5G,sDAAsD;IACtD,MAAM,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;IAEhH,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;QAChF,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,CAAC,CAAA;QAE5C,IAAI,SAAS,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAE,EAAE,aAAa,CAAC,SAAS,GAAG,CAAC,CAAE,GAAG,UAAU,CAAC,SAAS,GAAG,CAAC,CAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAChH,CAAC;QAED,IAAI,SAAS,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;YACnC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,SAAS,CAAE,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACvG,CAAC;IACF,CAAC;IAED,IAAI,aAAa,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QACxD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC7C,MAAM,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAC5F,MAAM,QAAQ,GAAG,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAEtF,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YAE1C,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;YAEpE,IAAI,QAAQ,EAAE,CAAC;gBACd,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;gBAE/D,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;YACpE,CAAC;QACF,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACnE,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,KAAe;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACjE,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAE9C,IAAI,MAAM,CAAC,MAAM,GAAG,cAAc,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC;QAAE,OAAO,IAAI,CAAA;IAEjF,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAE,CAAA;IACzB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;IAEnD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAAE,OAAO,IAAI,CAAA;IAEtE,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACpD,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAA;IACxB,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,IAAI,GAAG,EAAU,CAAA;IAElF,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAE,CAAC;QAAE,OAAO,IAAI,CAAA;IAEvE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAE,CAAA;IAC5B,IAAI,KAAK,GAAG,MAAM,GAAG,CAAC,CAAA;IACtB,IAAI,EAAE,GAAkB,IAAI,CAAA;IAE5B,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,EAAE,CAAC;QACvG,EAAE,GAAG,MAAM,CAAC,KAAK,CAAE,CAAA;QACnB,KAAK,IAAI,CAAC,CAAA;IACX,CAAC;IAED,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC;QAAE,OAAO,IAAI,CAAA;IAE3E,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAE,CAAA;IAC1B,MAAM,KAAK,GAAW,EAAE,CAAA;IAExB,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAE,EAAE,SAAS,CAAC,CAAC,CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAExE,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAE,CAAA;QAEjC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,GAAG,MAAM,CAAE,EAAE,SAAS,CAAC,CAAC,GAAG,MAAM,CAAE,GAAG,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IAC7F,CAAC;IAED,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAE,EAAE,SAAS,CAAC,MAAM,CAAE,GAAG,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;IAE5F,IAAI,EAAE,EAAE,CAAC;QACR,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,CAAE,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,CAAE,GAAG,EAAE,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;IACjG,CAAC;IAED,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAE,EAAE,SAAS,CAAC,KAAK,CAAE,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IAEnF,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IAEpC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,qGAAqG;QACrG,8GAA8G;QAC9G,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;QAEtC,IAAI,SAAS,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,CAAE,EAAE,SAAS,CAAC,KAAK,GAAG,SAAS,CAAE,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC9G,CAAC;QAED,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7B,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,GAAG,SAAS,CAAE,EAAE,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACnH,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;AAC5D,CAAC"}