@performant-software/shared-components 3.1.13-beta.1 → 3.1.13-beta.3

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 (2047) hide show
  1. package/dist/index.cjs103.js +1 -1
  2. package/dist/index.cjs110.js +1 -1
  3. package/dist/index.cjs111.js +1 -1
  4. package/dist/index.cjs112.js +1 -1
  5. package/dist/index.cjs114.js +1 -1
  6. package/dist/index.cjs118.js +1 -1
  7. package/dist/index.cjs120.js +1 -1
  8. package/dist/index.cjs121.js +1 -1
  9. package/dist/index.cjs122.js +1 -1
  10. package/dist/index.cjs125.js +1 -1
  11. package/dist/index.cjs132.js +1 -1
  12. package/dist/index.cjs133.js +1 -1
  13. package/dist/index.cjs134.js +1 -1
  14. package/dist/index.cjs135.js +1 -1
  15. package/dist/index.cjs136.js +1 -1
  16. package/dist/index.cjs137.js +1 -1
  17. package/dist/index.cjs138.js +1 -1
  18. package/dist/index.cjs139.js +1 -1
  19. package/dist/index.cjs140.js +1 -1
  20. package/dist/index.cjs143.js +1 -1
  21. package/dist/index.cjs144.js +1 -1
  22. package/dist/index.cjs146.js +1 -1
  23. package/dist/index.cjs147.js +1 -1
  24. package/dist/index.cjs148.js +1 -1
  25. package/dist/index.cjs149.js +1 -1
  26. package/dist/index.cjs154.js +1 -1
  27. package/dist/index.cjs155.js +1 -1
  28. package/dist/index.cjs156.js +1 -1
  29. package/dist/index.cjs157.js +1 -1
  30. package/dist/index.cjs160.js +1 -1
  31. package/dist/index.cjs161.js +1 -1
  32. package/dist/index.cjs162.js +1 -1
  33. package/dist/index.cjs166.js +1 -1
  34. package/dist/index.cjs169.js +1 -1
  35. package/dist/index.cjs173.js +1 -1
  36. package/dist/index.cjs176.js +1 -1
  37. package/dist/index.cjs184.js +1 -1
  38. package/dist/index.cjs185.js +1 -1
  39. package/dist/index.cjs186.js +1 -1
  40. package/dist/index.cjs187.js +1 -1
  41. package/dist/index.cjs188.js +1 -1
  42. package/dist/index.cjs189.js +1 -1
  43. package/dist/index.cjs190.js +1 -1
  44. package/dist/index.cjs192.js +1 -1
  45. package/dist/index.cjs193.js +1 -1
  46. package/dist/index.cjs194.js +1 -1
  47. package/dist/index.cjs195.js +1 -1
  48. package/dist/index.cjs196.js +1 -1
  49. package/dist/index.cjs197.js +1 -1
  50. package/dist/index.cjs198.js +1 -1
  51. package/dist/index.cjs199.js +1 -1
  52. package/dist/index.cjs200.js +1 -1
  53. package/dist/index.cjs203.js +1 -1
  54. package/dist/index.cjs204.js +1 -1
  55. package/dist/index.cjs206.js +1 -1
  56. package/dist/index.cjs207.js +1 -1
  57. package/dist/index.cjs208.js +1 -1
  58. package/dist/index.cjs209.js +1 -1
  59. package/dist/index.cjs210.js +1 -1
  60. package/dist/index.cjs211.js +1 -1
  61. package/dist/index.cjs212.js +1 -1
  62. package/dist/index.cjs213.js +1 -1
  63. package/dist/index.cjs219.js +1 -1
  64. package/dist/index.cjs220.js +1 -1
  65. package/dist/index.cjs221.js +1 -1
  66. package/dist/index.cjs222.js +1 -1
  67. package/dist/index.cjs223.js +1 -1
  68. package/dist/index.cjs228.js +1 -1
  69. package/dist/index.cjs230.js +1 -1
  70. package/dist/index.cjs240.js +1 -1
  71. package/dist/index.cjs241.js +1 -1
  72. package/dist/index.cjs243.js +1 -1
  73. package/dist/index.cjs244.js +1 -1
  74. package/dist/index.cjs245.js +1 -1
  75. package/dist/index.cjs247.js +1 -1
  76. package/dist/index.cjs248.js +1 -1
  77. package/dist/index.cjs249.js +1 -1
  78. package/dist/index.cjs249.js.map +1 -1
  79. package/dist/index.cjs250.js +1 -1
  80. package/dist/index.cjs250.js.map +1 -1
  81. package/dist/index.cjs251.js +1 -1
  82. package/dist/index.cjs251.js.map +1 -1
  83. package/dist/index.cjs252.js +1 -1
  84. package/dist/index.cjs252.js.map +1 -1
  85. package/dist/index.cjs253.js +1 -1
  86. package/dist/index.cjs253.js.map +1 -1
  87. package/dist/index.cjs254.js +1 -1
  88. package/dist/index.cjs254.js.map +1 -1
  89. package/dist/index.cjs255.js +1 -1
  90. package/dist/index.cjs255.js.map +1 -1
  91. package/dist/index.cjs256.js +1 -1
  92. package/dist/index.cjs256.js.map +1 -1
  93. package/dist/index.cjs257.js +1 -1
  94. package/dist/index.cjs257.js.map +1 -1
  95. package/dist/index.cjs258.js +1 -1
  96. package/dist/index.cjs258.js.map +1 -1
  97. package/dist/index.cjs259.js +1 -1
  98. package/dist/index.cjs259.js.map +1 -1
  99. package/dist/index.cjs260.js +1 -1
  100. package/dist/index.cjs260.js.map +1 -1
  101. package/dist/index.cjs261.js +1 -1
  102. package/dist/index.cjs261.js.map +1 -1
  103. package/dist/index.cjs262.js +1 -1
  104. package/dist/index.cjs262.js.map +1 -1
  105. package/dist/index.cjs263.js +1 -1
  106. package/dist/index.cjs263.js.map +1 -1
  107. package/dist/index.cjs264.js +1 -1
  108. package/dist/index.cjs264.js.map +1 -1
  109. package/dist/index.cjs265.js +1 -2
  110. package/dist/index.cjs265.js.map +1 -1
  111. package/dist/index.cjs266.js +1 -1
  112. package/dist/index.cjs266.js.map +1 -1
  113. package/dist/index.cjs267.js +2 -1
  114. package/dist/index.cjs267.js.map +1 -1
  115. package/dist/index.cjs268.js +1 -1
  116. package/dist/index.cjs268.js.map +1 -1
  117. package/dist/index.cjs269.js +1 -1
  118. package/dist/index.cjs269.js.map +1 -1
  119. package/dist/index.cjs270.js +1 -1
  120. package/dist/index.cjs270.js.map +1 -1
  121. package/dist/index.cjs271.js +1 -1
  122. package/dist/index.cjs271.js.map +1 -1
  123. package/dist/index.cjs272.js +1 -1
  124. package/dist/index.cjs272.js.map +1 -1
  125. package/dist/index.cjs273.js +1 -1
  126. package/dist/index.cjs273.js.map +1 -1
  127. package/dist/index.cjs274.js +1 -1
  128. package/dist/index.cjs274.js.map +1 -1
  129. package/dist/index.cjs275.js +1 -1
  130. package/dist/index.cjs275.js.map +1 -1
  131. package/dist/index.cjs276.js +1 -1
  132. package/dist/index.cjs276.js.map +1 -1
  133. package/dist/index.cjs277.js +1 -1
  134. package/dist/index.cjs277.js.map +1 -1
  135. package/dist/index.cjs278.js +1 -1
  136. package/dist/index.cjs278.js.map +1 -1
  137. package/dist/index.cjs279.js +1 -1
  138. package/dist/index.cjs279.js.map +1 -1
  139. package/dist/index.cjs280.js +1 -1
  140. package/dist/index.cjs280.js.map +1 -1
  141. package/dist/index.cjs281.js +1 -1
  142. package/dist/index.cjs281.js.map +1 -1
  143. package/dist/index.cjs282.js +1 -1
  144. package/dist/index.cjs282.js.map +1 -1
  145. package/dist/index.cjs283.js +1 -1
  146. package/dist/index.cjs283.js.map +1 -1
  147. package/dist/index.cjs284.js +1 -1
  148. package/dist/index.cjs284.js.map +1 -1
  149. package/dist/index.cjs285.js +1 -1
  150. package/dist/index.cjs285.js.map +1 -1
  151. package/dist/index.cjs286.js +1 -1
  152. package/dist/index.cjs286.js.map +1 -1
  153. package/dist/index.cjs287.js +1 -1
  154. package/dist/index.cjs287.js.map +1 -1
  155. package/dist/index.cjs288.js +1 -1
  156. package/dist/index.cjs288.js.map +1 -1
  157. package/dist/index.cjs289.js +1 -1
  158. package/dist/index.cjs289.js.map +1 -1
  159. package/dist/index.cjs290.js +1 -1
  160. package/dist/index.cjs290.js.map +1 -1
  161. package/dist/index.cjs291.js +1 -1
  162. package/dist/index.cjs291.js.map +1 -1
  163. package/dist/index.cjs292.js +1 -1
  164. package/dist/index.cjs292.js.map +1 -1
  165. package/dist/index.cjs293.js +1 -1
  166. package/dist/index.cjs293.js.map +1 -1
  167. package/dist/index.cjs294.js +1 -1
  168. package/dist/index.cjs294.js.map +1 -1
  169. package/dist/index.cjs295.js +1 -1
  170. package/dist/index.cjs295.js.map +1 -1
  171. package/dist/index.cjs296.js +1 -1
  172. package/dist/index.cjs296.js.map +1 -1
  173. package/dist/index.cjs297.js +1 -1
  174. package/dist/index.cjs297.js.map +1 -1
  175. package/dist/index.cjs298.js +1 -1
  176. package/dist/index.cjs298.js.map +1 -1
  177. package/dist/index.cjs299.js +1 -1
  178. package/dist/index.cjs299.js.map +1 -1
  179. package/dist/index.cjs300.js +1 -1
  180. package/dist/index.cjs300.js.map +1 -1
  181. package/dist/index.cjs301.js +1 -1
  182. package/dist/index.cjs301.js.map +1 -1
  183. package/dist/index.cjs302.js +1 -1
  184. package/dist/index.cjs302.js.map +1 -1
  185. package/dist/index.cjs303.js +1 -1
  186. package/dist/index.cjs303.js.map +1 -1
  187. package/dist/index.cjs304.js +1 -1
  188. package/dist/index.cjs304.js.map +1 -1
  189. package/dist/index.cjs305.js +1 -1
  190. package/dist/index.cjs305.js.map +1 -1
  191. package/dist/index.cjs306.js +1 -1
  192. package/dist/index.cjs306.js.map +1 -1
  193. package/dist/index.cjs307.js +1 -1
  194. package/dist/index.cjs307.js.map +1 -1
  195. package/dist/index.cjs308.js +1 -1
  196. package/dist/index.cjs308.js.map +1 -1
  197. package/dist/index.cjs309.js +1 -1
  198. package/dist/index.cjs309.js.map +1 -1
  199. package/dist/index.cjs310.js +1 -1
  200. package/dist/index.cjs310.js.map +1 -1
  201. package/dist/index.cjs311.js +1 -1
  202. package/dist/index.cjs311.js.map +1 -1
  203. package/dist/index.cjs312.js +1 -1
  204. package/dist/index.cjs312.js.map +1 -1
  205. package/dist/index.cjs313.js +1 -1
  206. package/dist/index.cjs313.js.map +1 -1
  207. package/dist/index.cjs314.js +1 -1
  208. package/dist/index.cjs314.js.map +1 -1
  209. package/dist/index.cjs315.js +1 -1
  210. package/dist/index.cjs315.js.map +1 -1
  211. package/dist/index.cjs316.js +1 -1
  212. package/dist/index.cjs316.js.map +1 -1
  213. package/dist/index.cjs317.js +1 -1
  214. package/dist/index.cjs317.js.map +1 -1
  215. package/dist/index.cjs318.js +1 -1
  216. package/dist/index.cjs318.js.map +1 -1
  217. package/dist/index.cjs319.js +1 -1
  218. package/dist/index.cjs319.js.map +1 -1
  219. package/dist/index.cjs320.js +1 -1
  220. package/dist/index.cjs320.js.map +1 -1
  221. package/dist/index.cjs321.js +1 -1
  222. package/dist/index.cjs321.js.map +1 -1
  223. package/dist/index.cjs322.js +1 -1
  224. package/dist/index.cjs322.js.map +1 -1
  225. package/dist/index.cjs323.js +1 -1
  226. package/dist/index.cjs323.js.map +1 -1
  227. package/dist/index.cjs324.js +1 -1
  228. package/dist/index.cjs324.js.map +1 -1
  229. package/dist/index.cjs325.js +1 -1
  230. package/dist/index.cjs325.js.map +1 -1
  231. package/dist/index.cjs326.js +1 -1
  232. package/dist/index.cjs326.js.map +1 -1
  233. package/dist/index.cjs327.js +1 -1
  234. package/dist/index.cjs327.js.map +1 -1
  235. package/dist/index.cjs328.js +1 -1
  236. package/dist/index.cjs328.js.map +1 -1
  237. package/dist/index.cjs329.js +1 -1
  238. package/dist/index.cjs329.js.map +1 -1
  239. package/dist/index.cjs330.js +1 -1
  240. package/dist/index.cjs330.js.map +1 -1
  241. package/dist/index.cjs331.js +1 -1
  242. package/dist/index.cjs331.js.map +1 -1
  243. package/dist/index.cjs332.js +1 -1
  244. package/dist/index.cjs332.js.map +1 -1
  245. package/dist/index.cjs333.js +1 -1
  246. package/dist/index.cjs333.js.map +1 -1
  247. package/dist/index.cjs334.js +1 -1
  248. package/dist/index.cjs334.js.map +1 -1
  249. package/dist/index.cjs335.js +1 -1
  250. package/dist/index.cjs335.js.map +1 -1
  251. package/dist/index.cjs337.js +1 -1
  252. package/dist/index.cjs337.js.map +1 -1
  253. package/dist/index.cjs338.js +1 -1
  254. package/dist/index.cjs338.js.map +1 -1
  255. package/dist/index.cjs339.js +1 -1
  256. package/dist/index.cjs339.js.map +1 -1
  257. package/dist/index.cjs340.js +1 -1
  258. package/dist/index.cjs340.js.map +1 -1
  259. package/dist/index.cjs341.js +1 -1
  260. package/dist/index.cjs341.js.map +1 -1
  261. package/dist/index.cjs342.js +1 -1
  262. package/dist/index.cjs342.js.map +1 -1
  263. package/dist/index.cjs343.js +1 -1
  264. package/dist/index.cjs343.js.map +1 -1
  265. package/dist/index.cjs344.js +1 -1
  266. package/dist/index.cjs344.js.map +1 -1
  267. package/dist/index.cjs345.js +1 -1
  268. package/dist/index.cjs345.js.map +1 -1
  269. package/dist/index.cjs346.js +1 -1
  270. package/dist/index.cjs346.js.map +1 -1
  271. package/dist/index.cjs347.js +1 -1
  272. package/dist/index.cjs347.js.map +1 -1
  273. package/dist/index.cjs348.js +1 -1
  274. package/dist/index.cjs348.js.map +1 -1
  275. package/dist/index.cjs349.js +1 -1
  276. package/dist/index.cjs349.js.map +1 -1
  277. package/dist/index.cjs350.js +1 -1
  278. package/dist/index.cjs350.js.map +1 -1
  279. package/dist/index.cjs351.js +1 -1
  280. package/dist/index.cjs351.js.map +1 -1
  281. package/dist/index.cjs352.js +1 -1
  282. package/dist/index.cjs352.js.map +1 -1
  283. package/dist/index.cjs353.js +1 -1
  284. package/dist/index.cjs353.js.map +1 -1
  285. package/dist/index.cjs354.js +1 -1
  286. package/dist/index.cjs354.js.map +1 -1
  287. package/dist/index.cjs355.js +1 -1
  288. package/dist/index.cjs355.js.map +1 -1
  289. package/dist/index.cjs356.js +1 -1
  290. package/dist/index.cjs356.js.map +1 -1
  291. package/dist/index.cjs357.js +1 -1
  292. package/dist/index.cjs357.js.map +1 -1
  293. package/dist/index.cjs358.js +1 -1
  294. package/dist/index.cjs358.js.map +1 -1
  295. package/dist/index.cjs359.js +1 -1
  296. package/dist/index.cjs359.js.map +1 -1
  297. package/dist/index.cjs360.js +1 -1
  298. package/dist/index.cjs360.js.map +1 -1
  299. package/dist/index.cjs361.js +1 -1
  300. package/dist/index.cjs361.js.map +1 -1
  301. package/dist/index.cjs362.js +1 -1
  302. package/dist/index.cjs362.js.map +1 -1
  303. package/dist/index.cjs363.js +1 -1
  304. package/dist/index.cjs363.js.map +1 -1
  305. package/dist/index.cjs364.js +1 -1
  306. package/dist/index.cjs364.js.map +1 -1
  307. package/dist/index.cjs365.js +1 -1
  308. package/dist/index.cjs365.js.map +1 -1
  309. package/dist/index.cjs366.js +1 -1
  310. package/dist/index.cjs366.js.map +1 -1
  311. package/dist/index.cjs367.js +1 -1
  312. package/dist/index.cjs367.js.map +1 -1
  313. package/dist/index.cjs368.js +1 -1
  314. package/dist/index.cjs368.js.map +1 -1
  315. package/dist/index.cjs369.js +1 -1
  316. package/dist/index.cjs369.js.map +1 -1
  317. package/dist/index.cjs370.js +1 -1
  318. package/dist/index.cjs370.js.map +1 -1
  319. package/dist/index.cjs371.js +1 -1
  320. package/dist/index.cjs371.js.map +1 -1
  321. package/dist/index.cjs372.js +1 -1
  322. package/dist/index.cjs372.js.map +1 -1
  323. package/dist/index.cjs373.js +1 -1
  324. package/dist/index.cjs373.js.map +1 -1
  325. package/dist/index.cjs374.js +1 -1
  326. package/dist/index.cjs374.js.map +1 -1
  327. package/dist/index.cjs375.js +1 -1
  328. package/dist/index.cjs375.js.map +1 -1
  329. package/dist/index.cjs376.js +1 -1
  330. package/dist/index.cjs376.js.map +1 -1
  331. package/dist/index.cjs377.js +1 -1
  332. package/dist/index.cjs377.js.map +1 -1
  333. package/dist/index.cjs378.js +1 -1
  334. package/dist/index.cjs378.js.map +1 -1
  335. package/dist/index.cjs379.js +1 -1
  336. package/dist/index.cjs379.js.map +1 -1
  337. package/dist/index.cjs38.js +1 -1
  338. package/dist/index.cjs380.js +1 -1
  339. package/dist/index.cjs380.js.map +1 -1
  340. package/dist/index.cjs381.js +1 -1
  341. package/dist/index.cjs382.js +1 -1
  342. package/dist/index.cjs382.js.map +1 -1
  343. package/dist/index.cjs383.js +1 -1
  344. package/dist/index.cjs383.js.map +1 -1
  345. package/dist/index.cjs384.js +1 -1
  346. package/dist/index.cjs384.js.map +1 -1
  347. package/dist/index.cjs385.js +1 -1
  348. package/dist/index.cjs385.js.map +1 -1
  349. package/dist/index.cjs386.js +1 -1
  350. package/dist/index.cjs386.js.map +1 -1
  351. package/dist/index.cjs387.js +1 -1
  352. package/dist/index.cjs387.js.map +1 -1
  353. package/dist/index.cjs388.js +1 -1
  354. package/dist/index.cjs388.js.map +1 -1
  355. package/dist/index.cjs389.js +1 -1
  356. package/dist/index.cjs389.js.map +1 -1
  357. package/dist/index.cjs390.js +1 -1
  358. package/dist/index.cjs390.js.map +1 -1
  359. package/dist/index.cjs391.js +1 -1
  360. package/dist/index.cjs391.js.map +1 -1
  361. package/dist/index.cjs392.js +1 -1
  362. package/dist/index.cjs392.js.map +1 -1
  363. package/dist/index.cjs393.js +1 -1
  364. package/dist/index.cjs393.js.map +1 -1
  365. package/dist/index.cjs394.js +1 -1
  366. package/dist/index.cjs394.js.map +1 -1
  367. package/dist/index.cjs395.js +1 -1
  368. package/dist/index.cjs395.js.map +1 -1
  369. package/dist/index.cjs396.js +1 -1
  370. package/dist/index.cjs396.js.map +1 -1
  371. package/dist/index.cjs397.js +1 -1
  372. package/dist/index.cjs397.js.map +1 -1
  373. package/dist/index.cjs398.js +1 -1
  374. package/dist/index.cjs398.js.map +1 -1
  375. package/dist/index.cjs399.js +1 -1
  376. package/dist/index.cjs399.js.map +1 -1
  377. package/dist/index.cjs400.js +1 -1
  378. package/dist/index.cjs400.js.map +1 -1
  379. package/dist/index.cjs401.js +1 -1
  380. package/dist/index.cjs401.js.map +1 -1
  381. package/dist/index.cjs402.js +1 -1
  382. package/dist/index.cjs402.js.map +1 -1
  383. package/dist/index.cjs403.js +1 -1
  384. package/dist/index.cjs403.js.map +1 -1
  385. package/dist/index.cjs404.js +1 -1
  386. package/dist/index.cjs404.js.map +1 -1
  387. package/dist/index.cjs405.js +1 -1
  388. package/dist/index.cjs405.js.map +1 -1
  389. package/dist/index.cjs406.js +1 -1
  390. package/dist/index.cjs406.js.map +1 -1
  391. package/dist/index.cjs407.js +1 -1
  392. package/dist/index.cjs407.js.map +1 -1
  393. package/dist/index.cjs408.js +1 -1
  394. package/dist/index.cjs408.js.map +1 -1
  395. package/dist/index.cjs409.js +1 -1
  396. package/dist/index.cjs409.js.map +1 -1
  397. package/dist/index.cjs41.js +1 -1
  398. package/dist/index.cjs410.js +1 -1
  399. package/dist/index.cjs410.js.map +1 -1
  400. package/dist/index.cjs411.js +1 -1
  401. package/dist/index.cjs411.js.map +1 -1
  402. package/dist/index.cjs412.js +1 -1
  403. package/dist/index.cjs413.js +1 -1
  404. package/dist/index.cjs413.js.map +1 -1
  405. package/dist/index.cjs414.js +1 -1
  406. package/dist/index.cjs414.js.map +1 -1
  407. package/dist/index.cjs415.js +1 -1
  408. package/dist/index.cjs415.js.map +1 -1
  409. package/dist/index.cjs416.js +1 -1
  410. package/dist/index.cjs416.js.map +1 -1
  411. package/dist/index.cjs417.js +1 -1
  412. package/dist/index.cjs417.js.map +1 -1
  413. package/dist/index.cjs418.js +1 -1
  414. package/dist/index.cjs418.js.map +1 -1
  415. package/dist/index.cjs419.js +1 -1
  416. package/dist/index.cjs419.js.map +1 -1
  417. package/dist/index.cjs42.js +1 -1
  418. package/dist/index.cjs420.js +1 -1
  419. package/dist/index.cjs420.js.map +1 -1
  420. package/dist/index.cjs421.js +1 -1
  421. package/dist/index.cjs421.js.map +1 -1
  422. package/dist/index.cjs422.js +1 -1
  423. package/dist/index.cjs422.js.map +1 -1
  424. package/dist/index.cjs423.js +1 -1
  425. package/dist/index.cjs423.js.map +1 -1
  426. package/dist/index.cjs424.js +1 -1
  427. package/dist/index.cjs424.js.map +1 -1
  428. package/dist/index.cjs425.js +1 -1
  429. package/dist/index.cjs425.js.map +1 -1
  430. package/dist/index.cjs426.js +1 -1
  431. package/dist/index.cjs426.js.map +1 -1
  432. package/dist/index.cjs427.js +1 -1
  433. package/dist/index.cjs427.js.map +1 -1
  434. package/dist/index.cjs428.js +1 -1
  435. package/dist/index.cjs428.js.map +1 -1
  436. package/dist/index.cjs429.js +1 -1
  437. package/dist/index.cjs429.js.map +1 -1
  438. package/dist/index.cjs43.js +1 -1
  439. package/dist/index.cjs430.js +1 -1
  440. package/dist/index.cjs430.js.map +1 -1
  441. package/dist/index.cjs431.js +1 -1
  442. package/dist/index.cjs431.js.map +1 -1
  443. package/dist/index.cjs432.js +1 -1
  444. package/dist/index.cjs432.js.map +1 -1
  445. package/dist/index.cjs433.js +1 -1
  446. package/dist/index.cjs433.js.map +1 -1
  447. package/dist/index.cjs434.js +1 -1
  448. package/dist/index.cjs434.js.map +1 -1
  449. package/dist/index.cjs435.js +1 -1
  450. package/dist/index.cjs435.js.map +1 -1
  451. package/dist/index.cjs436.js +1 -1
  452. package/dist/index.cjs436.js.map +1 -1
  453. package/dist/index.cjs437.js +1 -1
  454. package/dist/index.cjs437.js.map +1 -1
  455. package/dist/index.cjs438.js +1 -1
  456. package/dist/index.cjs438.js.map +1 -1
  457. package/dist/index.cjs439.js +1 -1
  458. package/dist/index.cjs439.js.map +1 -1
  459. package/dist/index.cjs440.js +1 -1
  460. package/dist/index.cjs440.js.map +1 -1
  461. package/dist/index.cjs441.js +1 -1
  462. package/dist/index.cjs441.js.map +1 -1
  463. package/dist/index.cjs442.js +1 -1
  464. package/dist/index.cjs442.js.map +1 -1
  465. package/dist/index.cjs443.js +1 -1
  466. package/dist/index.cjs443.js.map +1 -1
  467. package/dist/index.cjs444.js +1 -1
  468. package/dist/index.cjs444.js.map +1 -1
  469. package/dist/index.cjs445.js +1 -1
  470. package/dist/index.cjs445.js.map +1 -1
  471. package/dist/index.cjs446.js +1 -1
  472. package/dist/index.cjs446.js.map +1 -1
  473. package/dist/index.cjs447.js +1 -1
  474. package/dist/index.cjs447.js.map +1 -1
  475. package/dist/index.cjs448.js +1 -1
  476. package/dist/index.cjs448.js.map +1 -1
  477. package/dist/index.cjs449.js +1 -1
  478. package/dist/index.cjs449.js.map +1 -1
  479. package/dist/index.cjs45.js +1 -1
  480. package/dist/index.cjs450.js +1 -1
  481. package/dist/index.cjs450.js.map +1 -1
  482. package/dist/index.cjs451.js +1 -1
  483. package/dist/index.cjs451.js.map +1 -1
  484. package/dist/index.cjs452.js +1 -1
  485. package/dist/index.cjs452.js.map +1 -1
  486. package/dist/index.cjs453.js +1 -1
  487. package/dist/index.cjs453.js.map +1 -1
  488. package/dist/index.cjs454.js +1 -1
  489. package/dist/index.cjs454.js.map +1 -1
  490. package/dist/index.cjs455.js +1 -1
  491. package/dist/index.cjs455.js.map +1 -1
  492. package/dist/index.cjs456.js +1 -1
  493. package/dist/index.cjs456.js.map +1 -1
  494. package/dist/index.cjs457.js +1 -1
  495. package/dist/index.cjs457.js.map +1 -1
  496. package/dist/index.cjs458.js +1 -1
  497. package/dist/index.cjs458.js.map +1 -1
  498. package/dist/index.cjs459.js +1 -1
  499. package/dist/index.cjs459.js.map +1 -1
  500. package/dist/index.cjs46.js +1 -1
  501. package/dist/index.cjs460.js +1 -1
  502. package/dist/index.cjs460.js.map +1 -1
  503. package/dist/index.cjs461.js +1 -1
  504. package/dist/index.cjs461.js.map +1 -1
  505. package/dist/index.cjs462.js +1 -1
  506. package/dist/index.cjs462.js.map +1 -1
  507. package/dist/index.cjs463.js +1 -1
  508. package/dist/index.cjs463.js.map +1 -1
  509. package/dist/index.cjs464.js +1 -1
  510. package/dist/index.cjs464.js.map +1 -1
  511. package/dist/index.cjs465.js +1 -1
  512. package/dist/index.cjs465.js.map +1 -1
  513. package/dist/index.cjs466.js +1 -1
  514. package/dist/index.cjs466.js.map +1 -1
  515. package/dist/index.cjs467.js +1 -1
  516. package/dist/index.cjs467.js.map +1 -1
  517. package/dist/index.cjs468.js +1 -1
  518. package/dist/index.cjs468.js.map +1 -1
  519. package/dist/index.cjs469.js +1 -1
  520. package/dist/index.cjs469.js.map +1 -1
  521. package/dist/index.cjs47.js +1 -1
  522. package/dist/index.cjs470.js +1 -1
  523. package/dist/index.cjs470.js.map +1 -1
  524. package/dist/index.cjs471.js +1 -1
  525. package/dist/index.cjs471.js.map +1 -1
  526. package/dist/index.cjs472.js +1 -1
  527. package/dist/index.cjs472.js.map +1 -1
  528. package/dist/index.cjs473.js +1 -1
  529. package/dist/index.cjs473.js.map +1 -1
  530. package/dist/index.cjs474.js +1 -1
  531. package/dist/index.cjs474.js.map +1 -1
  532. package/dist/index.cjs475.js +1 -1
  533. package/dist/index.cjs475.js.map +1 -1
  534. package/dist/index.cjs476.js +1 -1
  535. package/dist/index.cjs476.js.map +1 -1
  536. package/dist/index.cjs477.js +1 -1
  537. package/dist/index.cjs477.js.map +1 -1
  538. package/dist/index.cjs479.js +1 -1
  539. package/dist/index.cjs479.js.map +1 -1
  540. package/dist/index.cjs481.js +1 -1
  541. package/dist/index.cjs481.js.map +1 -1
  542. package/dist/index.cjs482.js +1 -1
  543. package/dist/index.cjs483.js +1 -1
  544. package/dist/index.cjs483.js.map +1 -1
  545. package/dist/index.cjs484.js +1 -1
  546. package/dist/index.cjs484.js.map +1 -1
  547. package/dist/index.cjs485.js +1 -1
  548. package/dist/index.cjs486.js +1 -1
  549. package/dist/index.cjs486.js.map +1 -1
  550. package/dist/index.cjs487.js +1 -1
  551. package/dist/index.cjs487.js.map +1 -1
  552. package/dist/index.cjs488.js +1 -1
  553. package/dist/index.cjs488.js.map +1 -1
  554. package/dist/index.cjs489.js +1 -1
  555. package/dist/index.cjs489.js.map +1 -1
  556. package/dist/index.cjs49.js +1 -1
  557. package/dist/index.cjs490.js +1 -1
  558. package/dist/index.cjs490.js.map +1 -1
  559. package/dist/index.cjs491.js +1 -1
  560. package/dist/index.cjs491.js.map +1 -1
  561. package/dist/index.cjs492.js +1 -1
  562. package/dist/index.cjs492.js.map +1 -1
  563. package/dist/index.cjs493.js +1 -1
  564. package/dist/index.cjs493.js.map +1 -1
  565. package/dist/index.cjs494.js +1 -1
  566. package/dist/index.cjs494.js.map +1 -1
  567. package/dist/index.cjs495.js +1 -1
  568. package/dist/index.cjs495.js.map +1 -1
  569. package/dist/index.cjs496.js +1 -1
  570. package/dist/index.cjs496.js.map +1 -1
  571. package/dist/index.cjs497.js +1 -1
  572. package/dist/index.cjs497.js.map +1 -1
  573. package/dist/index.cjs498.js +1 -1
  574. package/dist/index.cjs498.js.map +1 -1
  575. package/dist/index.cjs499.js +1 -1
  576. package/dist/index.cjs499.js.map +1 -1
  577. package/dist/index.cjs50.js +1 -1
  578. package/dist/index.cjs500.js +1 -1
  579. package/dist/index.cjs500.js.map +1 -1
  580. package/dist/index.cjs501.js +1 -1
  581. package/dist/index.cjs501.js.map +1 -1
  582. package/dist/index.cjs502.js +1 -1
  583. package/dist/index.cjs502.js.map +1 -1
  584. package/dist/index.cjs503.js +1 -1
  585. package/dist/index.cjs503.js.map +1 -1
  586. package/dist/index.cjs504.js +1 -1
  587. package/dist/index.cjs504.js.map +1 -1
  588. package/dist/index.cjs505.js +1 -1
  589. package/dist/index.cjs505.js.map +1 -1
  590. package/dist/index.cjs506.js +1 -1
  591. package/dist/index.cjs506.js.map +1 -1
  592. package/dist/index.cjs507.js +1 -1
  593. package/dist/index.cjs507.js.map +1 -1
  594. package/dist/index.cjs508.js +1 -1
  595. package/dist/index.cjs508.js.map +1 -1
  596. package/dist/index.cjs509.js +1 -1
  597. package/dist/index.cjs509.js.map +1 -1
  598. package/dist/index.cjs51.js +1 -1
  599. package/dist/index.cjs510.js +1 -1
  600. package/dist/index.cjs510.js.map +1 -1
  601. package/dist/index.cjs511.js +1 -1
  602. package/dist/index.cjs511.js.map +1 -1
  603. package/dist/index.cjs512.js +1 -1
  604. package/dist/index.cjs512.js.map +1 -1
  605. package/dist/index.cjs513.js +1 -1
  606. package/dist/index.cjs513.js.map +1 -1
  607. package/dist/index.cjs514.js +1 -1
  608. package/dist/index.cjs514.js.map +1 -1
  609. package/dist/index.cjs515.js +1 -1
  610. package/dist/index.cjs515.js.map +1 -1
  611. package/dist/index.cjs516.js +1 -1
  612. package/dist/index.cjs516.js.map +1 -1
  613. package/dist/index.cjs517.js +1 -1
  614. package/dist/index.cjs517.js.map +1 -1
  615. package/dist/index.cjs518.js +1 -1
  616. package/dist/index.cjs518.js.map +1 -1
  617. package/dist/index.cjs519.js +1 -1
  618. package/dist/index.cjs519.js.map +1 -1
  619. package/dist/index.cjs520.js +1 -1
  620. package/dist/index.cjs520.js.map +1 -1
  621. package/dist/index.cjs521.js +1 -1
  622. package/dist/index.cjs521.js.map +1 -1
  623. package/dist/index.cjs522.js +1 -1
  624. package/dist/index.cjs522.js.map +1 -1
  625. package/dist/index.cjs523.js +1 -1
  626. package/dist/index.cjs523.js.map +1 -1
  627. package/dist/index.cjs524.js +1 -1
  628. package/dist/index.cjs524.js.map +1 -1
  629. package/dist/index.cjs525.js +1 -1
  630. package/dist/index.cjs525.js.map +1 -1
  631. package/dist/index.cjs526.js +1 -1
  632. package/dist/index.cjs526.js.map +1 -1
  633. package/dist/index.cjs527.js +1 -1
  634. package/dist/index.cjs527.js.map +1 -1
  635. package/dist/index.cjs528.js +1 -1
  636. package/dist/index.cjs528.js.map +1 -1
  637. package/dist/index.cjs529.js +1 -1
  638. package/dist/index.cjs529.js.map +1 -1
  639. package/dist/index.cjs53.js +1 -1
  640. package/dist/index.cjs530.js +1 -1
  641. package/dist/index.cjs530.js.map +1 -1
  642. package/dist/index.cjs531.js +1 -1
  643. package/dist/index.cjs531.js.map +1 -1
  644. package/dist/index.cjs532.js +1 -1
  645. package/dist/index.cjs532.js.map +1 -1
  646. package/dist/index.cjs533.js +1 -1
  647. package/dist/index.cjs533.js.map +1 -1
  648. package/dist/index.cjs534.js +1 -1
  649. package/dist/index.cjs534.js.map +1 -1
  650. package/dist/index.cjs535.js +1 -1
  651. package/dist/index.cjs535.js.map +1 -1
  652. package/dist/index.cjs536.js +1 -1
  653. package/dist/index.cjs536.js.map +1 -1
  654. package/dist/index.cjs537.js +1 -1
  655. package/dist/index.cjs537.js.map +1 -1
  656. package/dist/index.cjs538.js +1 -1
  657. package/dist/index.cjs538.js.map +1 -1
  658. package/dist/index.cjs539.js +1 -1
  659. package/dist/index.cjs539.js.map +1 -1
  660. package/dist/index.cjs54.js +1 -1
  661. package/dist/index.cjs540.js +1 -1
  662. package/dist/index.cjs540.js.map +1 -1
  663. package/dist/index.cjs541.js +1 -1
  664. package/dist/index.cjs541.js.map +1 -1
  665. package/dist/index.cjs542.js +1 -1
  666. package/dist/index.cjs542.js.map +1 -1
  667. package/dist/index.cjs543.js +1 -1
  668. package/dist/index.cjs543.js.map +1 -1
  669. package/dist/index.cjs544.js +1 -1
  670. package/dist/index.cjs544.js.map +1 -1
  671. package/dist/index.cjs545.js +1 -1
  672. package/dist/index.cjs545.js.map +1 -1
  673. package/dist/index.cjs546.js +1 -1
  674. package/dist/index.cjs546.js.map +1 -1
  675. package/dist/index.cjs547.js +1 -1
  676. package/dist/index.cjs547.js.map +1 -1
  677. package/dist/index.cjs548.js +1 -1
  678. package/dist/index.cjs548.js.map +1 -1
  679. package/dist/index.cjs55.js +1 -1
  680. package/dist/index.cjs550.js +1 -1
  681. package/dist/index.cjs550.js.map +1 -1
  682. package/dist/index.cjs551.js +1 -1
  683. package/dist/index.cjs551.js.map +1 -1
  684. package/dist/index.cjs552.js +1 -1
  685. package/dist/index.cjs552.js.map +1 -1
  686. package/dist/index.cjs553.js +1 -1
  687. package/dist/index.cjs553.js.map +1 -1
  688. package/dist/index.cjs554.js +1 -1
  689. package/dist/index.cjs554.js.map +1 -1
  690. package/dist/index.cjs555.js +1 -1
  691. package/dist/index.cjs555.js.map +1 -1
  692. package/dist/index.cjs556.js +1 -1
  693. package/dist/index.cjs556.js.map +1 -1
  694. package/dist/index.cjs557.js +1 -1
  695. package/dist/index.cjs557.js.map +1 -1
  696. package/dist/index.cjs558.js +1 -1
  697. package/dist/index.cjs558.js.map +1 -1
  698. package/dist/index.cjs559.js +1 -1
  699. package/dist/index.cjs559.js.map +1 -1
  700. package/dist/index.cjs560.js +1 -1
  701. package/dist/index.cjs560.js.map +1 -1
  702. package/dist/index.cjs561.js +1 -1
  703. package/dist/index.cjs561.js.map +1 -1
  704. package/dist/index.cjs562.js +1 -1
  705. package/dist/index.cjs562.js.map +1 -1
  706. package/dist/index.cjs563.js +1 -1
  707. package/dist/index.cjs563.js.map +1 -1
  708. package/dist/index.cjs564.js +1 -1
  709. package/dist/index.cjs564.js.map +1 -1
  710. package/dist/index.cjs565.js +1 -1
  711. package/dist/index.cjs565.js.map +1 -1
  712. package/dist/index.cjs566.js +1 -1
  713. package/dist/index.cjs566.js.map +1 -1
  714. package/dist/index.cjs567.js +1 -1
  715. package/dist/index.cjs567.js.map +1 -1
  716. package/dist/index.cjs568.js +1 -1
  717. package/dist/index.cjs568.js.map +1 -1
  718. package/dist/index.cjs569.js +1 -1
  719. package/dist/index.cjs569.js.map +1 -1
  720. package/dist/index.cjs570.js +1 -1
  721. package/dist/index.cjs570.js.map +1 -1
  722. package/dist/index.cjs571.js +1 -1
  723. package/dist/index.cjs571.js.map +1 -1
  724. package/dist/index.cjs572.js +1 -1
  725. package/dist/index.cjs572.js.map +1 -1
  726. package/dist/index.cjs573.js +1 -1
  727. package/dist/index.cjs573.js.map +1 -1
  728. package/dist/index.cjs574.js +1 -1
  729. package/dist/index.cjs574.js.map +1 -1
  730. package/dist/index.cjs575.js +1 -1
  731. package/dist/index.cjs575.js.map +1 -1
  732. package/dist/index.cjs576.js +1 -1
  733. package/dist/index.cjs576.js.map +1 -1
  734. package/dist/index.cjs577.js +1 -1
  735. package/dist/index.cjs577.js.map +1 -1
  736. package/dist/index.cjs578.js +1 -1
  737. package/dist/index.cjs578.js.map +1 -1
  738. package/dist/index.cjs579.js +1 -1
  739. package/dist/index.cjs579.js.map +1 -1
  740. package/dist/index.cjs580.js +1 -1
  741. package/dist/index.cjs580.js.map +1 -1
  742. package/dist/index.cjs581.js +1 -1
  743. package/dist/index.cjs581.js.map +1 -1
  744. package/dist/index.cjs582.js +1 -1
  745. package/dist/index.cjs582.js.map +1 -1
  746. package/dist/index.cjs583.js +1 -1
  747. package/dist/index.cjs583.js.map +1 -1
  748. package/dist/index.cjs584.js +1 -1
  749. package/dist/index.cjs584.js.map +1 -1
  750. package/dist/index.cjs585.js +1 -1
  751. package/dist/index.cjs585.js.map +1 -1
  752. package/dist/index.cjs586.js +1 -1
  753. package/dist/index.cjs586.js.map +1 -1
  754. package/dist/index.cjs587.js +1 -1
  755. package/dist/index.cjs587.js.map +1 -1
  756. package/dist/index.cjs588.js +1 -1
  757. package/dist/index.cjs588.js.map +1 -1
  758. package/dist/index.cjs589.js +1 -1
  759. package/dist/index.cjs589.js.map +1 -1
  760. package/dist/index.cjs59.js +1 -1
  761. package/dist/index.cjs590.js +1 -1
  762. package/dist/index.cjs590.js.map +1 -1
  763. package/dist/index.cjs591.js +1 -1
  764. package/dist/index.cjs591.js.map +1 -1
  765. package/dist/index.cjs592.js +1 -1
  766. package/dist/index.cjs592.js.map +1 -1
  767. package/dist/index.cjs593.js +1 -1
  768. package/dist/index.cjs593.js.map +1 -1
  769. package/dist/index.cjs594.js +1 -1
  770. package/dist/index.cjs594.js.map +1 -1
  771. package/dist/index.cjs595.js +1 -1
  772. package/dist/index.cjs595.js.map +1 -1
  773. package/dist/index.cjs596.js +1 -1
  774. package/dist/index.cjs596.js.map +1 -1
  775. package/dist/index.cjs597.js +1 -1
  776. package/dist/index.cjs597.js.map +1 -1
  777. package/dist/index.cjs598.js +1 -1
  778. package/dist/index.cjs598.js.map +1 -1
  779. package/dist/index.cjs599.js +1 -1
  780. package/dist/index.cjs599.js.map +1 -1
  781. package/dist/index.cjs60.js +1 -1
  782. package/dist/index.cjs600.js +1 -1
  783. package/dist/index.cjs600.js.map +1 -1
  784. package/dist/index.cjs601.js +1 -1
  785. package/dist/index.cjs601.js.map +1 -1
  786. package/dist/index.cjs602.js +1 -1
  787. package/dist/index.cjs602.js.map +1 -1
  788. package/dist/index.cjs603.js +1 -1
  789. package/dist/index.cjs603.js.map +1 -1
  790. package/dist/index.cjs604.js +1 -1
  791. package/dist/index.cjs604.js.map +1 -1
  792. package/dist/index.cjs605.js +1 -1
  793. package/dist/index.cjs605.js.map +1 -1
  794. package/dist/index.cjs606.js +1 -1
  795. package/dist/index.cjs606.js.map +1 -1
  796. package/dist/index.cjs607.js +1 -1
  797. package/dist/index.cjs607.js.map +1 -1
  798. package/dist/index.cjs608.js +1 -1
  799. package/dist/index.cjs608.js.map +1 -1
  800. package/dist/index.cjs609.js +1 -1
  801. package/dist/index.cjs609.js.map +1 -1
  802. package/dist/index.cjs61.js +1 -1
  803. package/dist/index.cjs610.js +1 -1
  804. package/dist/index.cjs610.js.map +1 -1
  805. package/dist/index.cjs611.js +1 -1
  806. package/dist/index.cjs611.js.map +1 -1
  807. package/dist/index.cjs612.js +1 -1
  808. package/dist/index.cjs612.js.map +1 -1
  809. package/dist/index.cjs613.js +1 -1
  810. package/dist/index.cjs613.js.map +1 -1
  811. package/dist/index.cjs614.js +1 -1
  812. package/dist/index.cjs614.js.map +1 -1
  813. package/dist/index.cjs615.js +1 -1
  814. package/dist/index.cjs615.js.map +1 -1
  815. package/dist/index.cjs616.js +1 -1
  816. package/dist/index.cjs616.js.map +1 -1
  817. package/dist/index.cjs617.js +1 -1
  818. package/dist/index.cjs617.js.map +1 -1
  819. package/dist/index.cjs618.js +1 -1
  820. package/dist/index.cjs618.js.map +1 -1
  821. package/dist/index.cjs619.js +1 -1
  822. package/dist/index.cjs619.js.map +1 -1
  823. package/dist/index.cjs620.js +1 -1
  824. package/dist/index.cjs620.js.map +1 -1
  825. package/dist/index.cjs621.js +1 -1
  826. package/dist/index.cjs621.js.map +1 -1
  827. package/dist/index.cjs622.js +1 -1
  828. package/dist/index.cjs622.js.map +1 -1
  829. package/dist/index.cjs623.js +1 -1
  830. package/dist/index.cjs623.js.map +1 -1
  831. package/dist/index.cjs624.js +1 -1
  832. package/dist/index.cjs624.js.map +1 -1
  833. package/dist/index.cjs625.js +1 -1
  834. package/dist/index.cjs625.js.map +1 -1
  835. package/dist/index.cjs626.js +1 -1
  836. package/dist/index.cjs626.js.map +1 -1
  837. package/dist/index.cjs627.js +1 -1
  838. package/dist/index.cjs627.js.map +1 -1
  839. package/dist/index.cjs628.js +1 -1
  840. package/dist/index.cjs628.js.map +1 -1
  841. package/dist/index.cjs629.js +1 -1
  842. package/dist/index.cjs629.js.map +1 -1
  843. package/dist/index.cjs63.js +1 -1
  844. package/dist/index.cjs630.js +1 -1
  845. package/dist/index.cjs630.js.map +1 -1
  846. package/dist/index.cjs631.js +1 -1
  847. package/dist/index.cjs631.js.map +1 -1
  848. package/dist/index.cjs632.js +1 -1
  849. package/dist/index.cjs632.js.map +1 -1
  850. package/dist/index.cjs633.js +1 -1
  851. package/dist/index.cjs633.js.map +1 -1
  852. package/dist/index.cjs634.js +1 -1
  853. package/dist/index.cjs634.js.map +1 -1
  854. package/dist/index.cjs635.js +1 -1
  855. package/dist/index.cjs635.js.map +1 -1
  856. package/dist/index.cjs636.js +1 -1
  857. package/dist/index.cjs636.js.map +1 -1
  858. package/dist/index.cjs637.js +1 -1
  859. package/dist/index.cjs637.js.map +1 -1
  860. package/dist/index.cjs638.js +1 -1
  861. package/dist/index.cjs638.js.map +1 -1
  862. package/dist/index.cjs639.js +1 -1
  863. package/dist/index.cjs639.js.map +1 -1
  864. package/dist/index.cjs64.js +1 -1
  865. package/dist/index.cjs640.js +1 -1
  866. package/dist/index.cjs640.js.map +1 -1
  867. package/dist/index.cjs641.js +1 -1
  868. package/dist/index.cjs641.js.map +1 -1
  869. package/dist/index.cjs642.js +1 -1
  870. package/dist/index.cjs642.js.map +1 -1
  871. package/dist/index.cjs643.js +1 -1
  872. package/dist/index.cjs643.js.map +1 -1
  873. package/dist/index.cjs644.js +1 -1
  874. package/dist/index.cjs644.js.map +1 -1
  875. package/dist/index.cjs645.js +1 -1
  876. package/dist/index.cjs645.js.map +1 -1
  877. package/dist/index.cjs646.js +1 -1
  878. package/dist/index.cjs646.js.map +1 -1
  879. package/dist/index.cjs647.js +1 -1
  880. package/dist/index.cjs647.js.map +1 -1
  881. package/dist/index.cjs648.js +1 -1
  882. package/dist/index.cjs648.js.map +1 -1
  883. package/dist/index.cjs649.js +1 -1
  884. package/dist/index.cjs649.js.map +1 -1
  885. package/dist/index.cjs650.js +1 -1
  886. package/dist/index.cjs650.js.map +1 -1
  887. package/dist/index.cjs651.js +1 -1
  888. package/dist/index.cjs651.js.map +1 -1
  889. package/dist/index.cjs652.js +1 -1
  890. package/dist/index.cjs652.js.map +1 -1
  891. package/dist/index.cjs653.js +1 -1
  892. package/dist/index.cjs653.js.map +1 -1
  893. package/dist/index.cjs654.js +1 -1
  894. package/dist/index.cjs654.js.map +1 -1
  895. package/dist/index.cjs655.js +1 -1
  896. package/dist/index.cjs655.js.map +1 -1
  897. package/dist/index.cjs656.js +1 -1
  898. package/dist/index.cjs656.js.map +1 -1
  899. package/dist/index.cjs657.js +1 -1
  900. package/dist/index.cjs657.js.map +1 -1
  901. package/dist/index.cjs658.js +1 -1
  902. package/dist/index.cjs658.js.map +1 -1
  903. package/dist/index.cjs659.js +1 -1
  904. package/dist/index.cjs659.js.map +1 -1
  905. package/dist/index.cjs66.js +1 -1
  906. package/dist/index.cjs660.js +1 -1
  907. package/dist/index.cjs660.js.map +1 -1
  908. package/dist/index.cjs661.js +1 -1
  909. package/dist/index.cjs661.js.map +1 -1
  910. package/dist/index.cjs662.js +1 -1
  911. package/dist/index.cjs662.js.map +1 -1
  912. package/dist/index.cjs663.js +1 -1
  913. package/dist/index.cjs663.js.map +1 -1
  914. package/dist/index.cjs664.js +1 -1
  915. package/dist/index.cjs664.js.map +1 -1
  916. package/dist/index.cjs665.js +1 -1
  917. package/dist/index.cjs665.js.map +1 -1
  918. package/dist/index.cjs666.js +1 -1
  919. package/dist/index.cjs666.js.map +1 -1
  920. package/dist/index.cjs667.js +1 -1
  921. package/dist/index.cjs667.js.map +1 -1
  922. package/dist/index.cjs668.js +1 -1
  923. package/dist/index.cjs668.js.map +1 -1
  924. package/dist/index.cjs669.js +1 -1
  925. package/dist/index.cjs669.js.map +1 -1
  926. package/dist/index.cjs67.js +1 -1
  927. package/dist/index.cjs670.js +1 -1
  928. package/dist/index.cjs670.js.map +1 -1
  929. package/dist/index.cjs671.js +1 -1
  930. package/dist/index.cjs671.js.map +1 -1
  931. package/dist/index.cjs672.js +1 -1
  932. package/dist/index.cjs672.js.map +1 -1
  933. package/dist/index.cjs675.js +1 -1
  934. package/dist/index.cjs675.js.map +1 -1
  935. package/dist/index.cjs676.js +1 -1
  936. package/dist/index.cjs676.js.map +1 -1
  937. package/dist/index.cjs679.js +1 -1
  938. package/dist/index.cjs679.js.map +1 -1
  939. package/dist/index.cjs68.js +1 -1
  940. package/dist/index.cjs680.js +1 -1
  941. package/dist/index.cjs680.js.map +1 -1
  942. package/dist/index.cjs681.js +1 -1
  943. package/dist/index.cjs681.js.map +1 -1
  944. package/dist/index.cjs682.js +1 -1
  945. package/dist/index.cjs682.js.map +1 -1
  946. package/dist/index.cjs683.js +1 -1
  947. package/dist/index.cjs683.js.map +1 -1
  948. package/dist/index.cjs684.js +1 -1
  949. package/dist/index.cjs684.js.map +1 -1
  950. package/dist/index.cjs685.js +1 -1
  951. package/dist/index.cjs685.js.map +1 -1
  952. package/dist/index.cjs686.js +1 -1
  953. package/dist/index.cjs686.js.map +1 -1
  954. package/dist/index.cjs687.js +1 -1
  955. package/dist/index.cjs687.js.map +1 -1
  956. package/dist/index.cjs688.js +1 -1
  957. package/dist/index.cjs688.js.map +1 -1
  958. package/dist/index.cjs689.js +1 -1
  959. package/dist/index.cjs689.js.map +1 -1
  960. package/dist/index.cjs690.js +1 -1
  961. package/dist/index.cjs690.js.map +1 -1
  962. package/dist/index.cjs691.js +1 -1
  963. package/dist/index.cjs691.js.map +1 -1
  964. package/dist/index.cjs693.js +1 -1
  965. package/dist/index.cjs693.js.map +1 -1
  966. package/dist/index.cjs694.js +1 -1
  967. package/dist/index.cjs694.js.map +1 -1
  968. package/dist/index.cjs695.js +1 -1
  969. package/dist/index.cjs695.js.map +1 -1
  970. package/dist/index.cjs70.js +1 -1
  971. package/dist/index.cjs705.js +1 -1
  972. package/dist/index.cjs705.js.map +1 -1
  973. package/dist/index.cjs706.js +1 -1
  974. package/dist/index.cjs706.js.map +1 -1
  975. package/dist/index.cjs709.js +1 -1
  976. package/dist/index.cjs709.js.map +1 -1
  977. package/dist/index.cjs710.js +1 -1
  978. package/dist/index.cjs710.js.map +1 -1
  979. package/dist/index.cjs711.js +1 -1
  980. package/dist/index.cjs711.js.map +1 -1
  981. package/dist/index.cjs712.js +1 -1
  982. package/dist/index.cjs712.js.map +1 -1
  983. package/dist/index.cjs713.js +1 -1
  984. package/dist/index.cjs713.js.map +1 -1
  985. package/dist/index.cjs714.js +1 -1
  986. package/dist/index.cjs714.js.map +1 -1
  987. package/dist/index.cjs715.js +1 -1
  988. package/dist/index.cjs715.js.map +1 -1
  989. package/dist/index.cjs716.js +1 -1
  990. package/dist/index.cjs716.js.map +1 -1
  991. package/dist/index.cjs717.js +1 -1
  992. package/dist/index.cjs717.js.map +1 -1
  993. package/dist/index.cjs72.js +1 -1
  994. package/dist/index.cjs81.js +1 -1
  995. package/dist/index.cjs87.js +50 -18
  996. package/dist/index.cjs87.js.map +1 -1
  997. package/dist/index.cjs88.js +45 -1
  998. package/dist/index.cjs88.js.map +1 -1
  999. package/dist/index.cjs89.js +1 -50
  1000. package/dist/index.cjs89.js.map +1 -1
  1001. package/dist/index.cjs90.js +1 -45
  1002. package/dist/index.cjs90.js.map +1 -1
  1003. package/dist/index.cjs91.js +1 -1
  1004. package/dist/index.cjs91.js.map +1 -1
  1005. package/dist/index.cjs92.js +1 -1
  1006. package/dist/index.cjs92.js.map +1 -1
  1007. package/dist/index.cjs93.js +1 -1
  1008. package/dist/index.cjs93.js.map +1 -1
  1009. package/dist/index.cjs94.js +1 -1
  1010. package/dist/index.cjs94.js.map +1 -1
  1011. package/dist/index.cjs95.js +3 -1
  1012. package/dist/index.cjs95.js.map +1 -1
  1013. package/dist/index.cjs96.js +18 -1
  1014. package/dist/index.cjs96.js.map +1 -1
  1015. package/dist/index.cjs97.js +1 -3
  1016. package/dist/index.cjs97.js.map +1 -1
  1017. package/dist/index.es103.js +1 -1
  1018. package/dist/index.es110.js +1 -1
  1019. package/dist/index.es111.js +1 -1
  1020. package/dist/index.es112.js +2 -2
  1021. package/dist/index.es114.js +1 -1
  1022. package/dist/index.es118.js +1 -1
  1023. package/dist/index.es120.js +1 -1
  1024. package/dist/index.es121.js +1 -1
  1025. package/dist/index.es122.js +2 -2
  1026. package/dist/index.es125.js +1 -1
  1027. package/dist/index.es132.js +1 -1
  1028. package/dist/index.es133.js +1 -1
  1029. package/dist/index.es134.js +1 -1
  1030. package/dist/index.es135.js +1 -1
  1031. package/dist/index.es136.js +1 -1
  1032. package/dist/index.es137.js +1 -1
  1033. package/dist/index.es138.js +1 -1
  1034. package/dist/index.es139.js +1 -1
  1035. package/dist/index.es140.js +1 -1
  1036. package/dist/index.es143.js +1 -1
  1037. package/dist/index.es144.js +1 -1
  1038. package/dist/index.es146.js +3 -3
  1039. package/dist/index.es147.js +1 -1
  1040. package/dist/index.es148.js +2 -2
  1041. package/dist/index.es149.js +1 -1
  1042. package/dist/index.es154.js +1 -1
  1043. package/dist/index.es155.js +1 -1
  1044. package/dist/index.es156.js +1 -1
  1045. package/dist/index.es157.js +1 -1
  1046. package/dist/index.es160.js +2 -2
  1047. package/dist/index.es161.js +2 -2
  1048. package/dist/index.es162.js +1 -1
  1049. package/dist/index.es166.js +2 -2
  1050. package/dist/index.es169.js +1 -1
  1051. package/dist/index.es173.js +1 -1
  1052. package/dist/index.es176.js +1 -1
  1053. package/dist/index.es184.js +1 -1
  1054. package/dist/index.es185.js +1 -1
  1055. package/dist/index.es186.js +1 -1
  1056. package/dist/index.es187.js +2 -2
  1057. package/dist/index.es188.js +1 -1
  1058. package/dist/index.es189.js +1 -1
  1059. package/dist/index.es190.js +1 -1
  1060. package/dist/index.es192.js +2 -2
  1061. package/dist/index.es193.js +2 -2
  1062. package/dist/index.es194.js +1 -1
  1063. package/dist/index.es195.js +1 -1
  1064. package/dist/index.es196.js +1 -1
  1065. package/dist/index.es197.js +1 -1
  1066. package/dist/index.es198.js +2 -2
  1067. package/dist/index.es199.js +2 -2
  1068. package/dist/index.es200.js +1 -1
  1069. package/dist/index.es203.js +2 -2
  1070. package/dist/index.es204.js +2 -2
  1071. package/dist/index.es206.js +2 -2
  1072. package/dist/index.es207.js +1 -1
  1073. package/dist/index.es208.js +2 -2
  1074. package/dist/index.es209.js +1 -1
  1075. package/dist/index.es210.js +2 -2
  1076. package/dist/index.es211.js +1 -1
  1077. package/dist/index.es212.js +1 -1
  1078. package/dist/index.es213.js +1 -1
  1079. package/dist/index.es219.js +1 -1
  1080. package/dist/index.es220.js +2 -2
  1081. package/dist/index.es221.js +1 -1
  1082. package/dist/index.es222.js +1 -1
  1083. package/dist/index.es223.js +1 -1
  1084. package/dist/index.es228.js +5 -5
  1085. package/dist/index.es230.js +3 -3
  1086. package/dist/index.es240.js +1 -1
  1087. package/dist/index.es241.js +3 -3
  1088. package/dist/index.es243.js +2 -6
  1089. package/dist/index.es243.js.map +1 -1
  1090. package/dist/index.es244.js +6 -2
  1091. package/dist/index.es244.js.map +1 -1
  1092. package/dist/index.es245.js +1 -1
  1093. package/dist/index.es247.js +3 -3
  1094. package/dist/index.es248.js +2 -2
  1095. package/dist/index.es249.js +6 -7
  1096. package/dist/index.es249.js.map +1 -1
  1097. package/dist/index.es250.js +8 -35
  1098. package/dist/index.es250.js.map +1 -1
  1099. package/dist/index.es251.js +2 -10
  1100. package/dist/index.es251.js.map +1 -1
  1101. package/dist/index.es252.js +4 -7
  1102. package/dist/index.es252.js.map +1 -1
  1103. package/dist/index.es253.js +35 -8
  1104. package/dist/index.es253.js.map +1 -1
  1105. package/dist/index.es254.js +10 -2
  1106. package/dist/index.es254.js.map +1 -1
  1107. package/dist/index.es255.js +11 -4
  1108. package/dist/index.es255.js.map +1 -1
  1109. package/dist/index.es256.js +6 -9
  1110. package/dist/index.es256.js.map +1 -1
  1111. package/dist/index.es257.js +2 -21
  1112. package/dist/index.es257.js.map +1 -1
  1113. package/dist/index.es258.js +2 -56
  1114. package/dist/index.es258.js.map +1 -1
  1115. package/dist/index.es259.js +18 -26
  1116. package/dist/index.es259.js.map +1 -1
  1117. package/dist/index.es260.js +55 -6
  1118. package/dist/index.es260.js.map +1 -1
  1119. package/dist/index.es261.js +28 -51
  1120. package/dist/index.es261.js.map +1 -1
  1121. package/dist/index.es262.js +7 -6
  1122. package/dist/index.es262.js.map +1 -1
  1123. package/dist/index.es263.js +50 -9
  1124. package/dist/index.es263.js.map +1 -1
  1125. package/dist/index.es264.js +5 -6
  1126. package/dist/index.es264.js.map +1 -1
  1127. package/dist/index.es265.js +11 -28
  1128. package/dist/index.es265.js.map +1 -1
  1129. package/dist/index.es266.js +7 -2
  1130. package/dist/index.es266.js.map +1 -1
  1131. package/dist/index.es267.js +27 -68
  1132. package/dist/index.es267.js.map +1 -1
  1133. package/dist/index.es268.js +2 -139
  1134. package/dist/index.es268.js.map +1 -1
  1135. package/dist/index.es269.js +69 -8
  1136. package/dist/index.es269.js.map +1 -1
  1137. package/dist/index.es270.js +139 -5
  1138. package/dist/index.es270.js.map +1 -1
  1139. package/dist/index.es271.js +8 -4
  1140. package/dist/index.es271.js.map +1 -1
  1141. package/dist/index.es272.js +5 -3
  1142. package/dist/index.es272.js.map +1 -1
  1143. package/dist/index.es273.js +4 -3
  1144. package/dist/index.es273.js.map +1 -1
  1145. package/dist/index.es274.js +3 -9
  1146. package/dist/index.es274.js.map +1 -1
  1147. package/dist/index.es275.js +3 -19
  1148. package/dist/index.es275.js.map +1 -1
  1149. package/dist/index.es276.js +8 -20
  1150. package/dist/index.es276.js.map +1 -1
  1151. package/dist/index.es277.js +16 -10
  1152. package/dist/index.es277.js.map +1 -1
  1153. package/dist/index.es278.js +18 -12
  1154. package/dist/index.es278.js.map +1 -1
  1155. package/dist/index.es279.js +12 -5
  1156. package/dist/index.es279.js.map +1 -1
  1157. package/dist/index.es280.js +14 -7
  1158. package/dist/index.es280.js.map +1 -1
  1159. package/dist/index.es281.js +5 -6
  1160. package/dist/index.es281.js.map +1 -1
  1161. package/dist/index.es282.js +6 -20
  1162. package/dist/index.es282.js.map +1 -1
  1163. package/dist/index.es283.js +5 -8
  1164. package/dist/index.es283.js.map +1 -1
  1165. package/dist/index.es284.js +22 -9
  1166. package/dist/index.es284.js.map +1 -1
  1167. package/dist/index.es285.js +10 -4
  1168. package/dist/index.es285.js.map +1 -1
  1169. package/dist/index.es286.js +9 -11
  1170. package/dist/index.es286.js.map +1 -1
  1171. package/dist/index.es287.js +4 -8
  1172. package/dist/index.es287.js.map +1 -1
  1173. package/dist/index.es288.js +9 -19
  1174. package/dist/index.es288.js.map +1 -1
  1175. package/dist/index.es289.js +7 -10
  1176. package/dist/index.es289.js.map +1 -1
  1177. package/dist/index.es290.js +20 -17
  1178. package/dist/index.es290.js.map +1 -1
  1179. package/dist/index.es291.js +11 -4
  1180. package/dist/index.es291.js.map +1 -1
  1181. package/dist/index.es292.js +16 -16
  1182. package/dist/index.es292.js.map +1 -1
  1183. package/dist/index.es293.js +4 -12
  1184. package/dist/index.es293.js.map +1 -1
  1185. package/dist/index.es294.js +17 -3
  1186. package/dist/index.es294.js.map +1 -1
  1187. package/dist/index.es295.js +11 -4
  1188. package/dist/index.es295.js.map +1 -1
  1189. package/dist/index.es296.js +4 -2
  1190. package/dist/index.es296.js.map +1 -1
  1191. package/dist/index.es297.js +5 -2
  1192. package/dist/index.es297.js.map +1 -1
  1193. package/dist/index.es298.js +9 -2
  1194. package/dist/index.es298.js.map +1 -1
  1195. package/dist/index.es299.js +7 -4
  1196. package/dist/index.es299.js.map +1 -1
  1197. package/dist/index.es300.js +2 -6
  1198. package/dist/index.es300.js.map +1 -1
  1199. package/dist/index.es301.js +6 -2
  1200. package/dist/index.es301.js.map +1 -1
  1201. package/dist/index.es302.js +5 -5
  1202. package/dist/index.es302.js.map +1 -1
  1203. package/dist/index.es303.js +2 -9
  1204. package/dist/index.es303.js.map +1 -1
  1205. package/dist/index.es304.js +5 -6
  1206. package/dist/index.es304.js.map +1 -1
  1207. package/dist/index.es305.js +6 -5
  1208. package/dist/index.es305.js.map +1 -1
  1209. package/dist/index.es306.js +6 -8
  1210. package/dist/index.es306.js.map +1 -1
  1211. package/dist/index.es307.js +4 -6
  1212. package/dist/index.es307.js.map +1 -1
  1213. package/dist/index.es308.js +15 -16
  1214. package/dist/index.es308.js.map +1 -1
  1215. package/dist/index.es309.js +6 -43
  1216. package/dist/index.es309.js.map +1 -1
  1217. package/dist/index.es310.js +16 -47
  1218. package/dist/index.es310.js.map +1 -1
  1219. package/dist/index.es311.js +38 -34
  1220. package/dist/index.es311.js.map +1 -1
  1221. package/dist/index.es312.js +48 -30
  1222. package/dist/index.es312.js.map +1 -1
  1223. package/dist/index.es313.js +39 -7
  1224. package/dist/index.es313.js.map +1 -1
  1225. package/dist/index.es314.js +30 -11
  1226. package/dist/index.es314.js.map +1 -1
  1227. package/dist/index.es315.js +7 -10
  1228. package/dist/index.es315.js.map +1 -1
  1229. package/dist/index.es316.js +11 -8
  1230. package/dist/index.es316.js.map +1 -1
  1231. package/dist/index.es317.js +8 -7
  1232. package/dist/index.es317.js.map +1 -1
  1233. package/dist/index.es318.js +8 -6
  1234. package/dist/index.es318.js.map +1 -1
  1235. package/dist/index.es319.js +6 -6
  1236. package/dist/index.es319.js.map +1 -1
  1237. package/dist/index.es320.js +8 -16
  1238. package/dist/index.es320.js.map +1 -1
  1239. package/dist/index.es321.js +8 -6
  1240. package/dist/index.es321.js.map +1 -1
  1241. package/dist/index.es322.js +30 -12
  1242. package/dist/index.es322.js.map +1 -1
  1243. package/dist/index.es323.js +11 -7
  1244. package/dist/index.es323.js.map +1 -1
  1245. package/dist/index.es324.js +3 -11
  1246. package/dist/index.es324.js.map +1 -1
  1247. package/dist/index.es325.js +3 -4
  1248. package/dist/index.es325.js.map +1 -1
  1249. package/dist/index.es326.js +13 -33
  1250. package/dist/index.es326.js.map +1 -1
  1251. package/dist/index.es327.js +7 -31
  1252. package/dist/index.es327.js.map +1 -1
  1253. package/dist/index.es328.js +12 -28
  1254. package/dist/index.es328.js.map +1 -1
  1255. package/dist/index.es329.js +5 -61
  1256. package/dist/index.es329.js.map +1 -1
  1257. package/dist/index.es330.js +33 -3
  1258. package/dist/index.es330.js.map +1 -1
  1259. package/dist/index.es331.js +30 -30
  1260. package/dist/index.es331.js.map +1 -1
  1261. package/dist/index.es332.js +26 -9
  1262. package/dist/index.es332.js.map +1 -1
  1263. package/dist/index.es333.js +61 -4
  1264. package/dist/index.es333.js.map +1 -1
  1265. package/dist/index.es334.js +7 -3
  1266. package/dist/index.es334.js.map +1 -1
  1267. package/dist/index.es335.js +3 -8
  1268. package/dist/index.es335.js.map +1 -1
  1269. package/dist/index.es337.js +4 -4
  1270. package/dist/index.es337.js.map +1 -1
  1271. package/dist/index.es338.js +17 -8
  1272. package/dist/index.es338.js.map +1 -1
  1273. package/dist/index.es339.js +5 -14
  1274. package/dist/index.es339.js.map +1 -1
  1275. package/dist/index.es340.js +8 -8
  1276. package/dist/index.es340.js.map +1 -1
  1277. package/dist/index.es341.js +5 -5
  1278. package/dist/index.es341.js.map +1 -1
  1279. package/dist/index.es342.js +9 -2
  1280. package/dist/index.es342.js.map +1 -1
  1281. package/dist/index.es343.js +2 -13
  1282. package/dist/index.es343.js.map +1 -1
  1283. package/dist/index.es344.js +12 -8
  1284. package/dist/index.es344.js.map +1 -1
  1285. package/dist/index.es345.js +5 -5
  1286. package/dist/index.es345.js.map +1 -1
  1287. package/dist/index.es346.js +9 -19
  1288. package/dist/index.es346.js.map +1 -1
  1289. package/dist/index.es347.js +6 -11
  1290. package/dist/index.es347.js.map +1 -1
  1291. package/dist/index.es348.js +2 -11
  1292. package/dist/index.es348.js.map +1 -1
  1293. package/dist/index.es349.js +6 -9
  1294. package/dist/index.es349.js.map +1 -1
  1295. package/dist/index.es350.js +2 -10
  1296. package/dist/index.es350.js.map +1 -1
  1297. package/dist/index.es351.js +29 -19
  1298. package/dist/index.es351.js.map +1 -1
  1299. package/dist/index.es352.js +2 -16
  1300. package/dist/index.es352.js.map +1 -1
  1301. package/dist/index.es353.js +37 -12
  1302. package/dist/index.es353.js.map +1 -1
  1303. package/dist/index.es354.js +17 -9
  1304. package/dist/index.es354.js.map +1 -1
  1305. package/dist/index.es355.js +9 -7
  1306. package/dist/index.es355.js.map +1 -1
  1307. package/dist/index.es356.js +2 -9
  1308. package/dist/index.es356.js.map +1 -1
  1309. package/dist/index.es357.js +31 -9
  1310. package/dist/index.es357.js.map +1 -1
  1311. package/dist/index.es358.js +8 -12
  1312. package/dist/index.es358.js.map +1 -1
  1313. package/dist/index.es359.js +18 -11
  1314. package/dist/index.es359.js.map +1 -1
  1315. package/dist/index.es360.js +10 -12
  1316. package/dist/index.es360.js.map +1 -1
  1317. package/dist/index.es361.js +10 -9
  1318. package/dist/index.es361.js.map +1 -1
  1319. package/dist/index.es362.js +8 -8
  1320. package/dist/index.es362.js.map +1 -1
  1321. package/dist/index.es363.js +9 -9
  1322. package/dist/index.es363.js.map +1 -1
  1323. package/dist/index.es364.js +18 -7
  1324. package/dist/index.es364.js.map +1 -1
  1325. package/dist/index.es365.js +13 -7
  1326. package/dist/index.es365.js.map +1 -1
  1327. package/dist/index.es366.js +11 -12
  1328. package/dist/index.es366.js.map +1 -1
  1329. package/dist/index.es367.js +8 -19
  1330. package/dist/index.es367.js.map +1 -1
  1331. package/dist/index.es368.js +9 -2
  1332. package/dist/index.es368.js.map +1 -1
  1333. package/dist/index.es369.js +5 -5
  1334. package/dist/index.es369.js.map +1 -1
  1335. package/dist/index.es370.js +8 -8
  1336. package/dist/index.es370.js.map +1 -1
  1337. package/dist/index.es371.js +11 -13
  1338. package/dist/index.es371.js.map +1 -1
  1339. package/dist/index.es372.js +10 -9
  1340. package/dist/index.es372.js.map +1 -1
  1341. package/dist/index.es373.js +13 -16
  1342. package/dist/index.es373.js.map +1 -1
  1343. package/dist/index.es374.js +6 -5
  1344. package/dist/index.es374.js.map +1 -1
  1345. package/dist/index.es375.js +6 -6
  1346. package/dist/index.es375.js.map +1 -1
  1347. package/dist/index.es376.js +9 -6
  1348. package/dist/index.es376.js.map +1 -1
  1349. package/dist/index.es377.js +10 -2
  1350. package/dist/index.es377.js.map +1 -1
  1351. package/dist/index.es378.js +9 -6
  1352. package/dist/index.es378.js.map +1 -1
  1353. package/dist/index.es379.js +14 -2
  1354. package/dist/index.es379.js.map +1 -1
  1355. package/dist/index.es38.js +2 -2
  1356. package/dist/index.es380.js +19 -29
  1357. package/dist/index.es380.js.map +1 -1
  1358. package/dist/index.es381.js +2 -2
  1359. package/dist/index.es382.js +8 -37
  1360. package/dist/index.es382.js.map +1 -1
  1361. package/dist/index.es383.js +9 -17
  1362. package/dist/index.es383.js.map +1 -1
  1363. package/dist/index.es384.js +14 -10
  1364. package/dist/index.es384.js.map +1 -1
  1365. package/dist/index.es385.js +12 -2
  1366. package/dist/index.es385.js.map +1 -1
  1367. package/dist/index.es386.js +16 -31
  1368. package/dist/index.es386.js.map +1 -1
  1369. package/dist/index.es387.js +9 -3
  1370. package/dist/index.es387.js.map +1 -1
  1371. package/dist/index.es388.js +2 -2
  1372. package/dist/index.es388.js.map +1 -1
  1373. package/dist/index.es389.js +16 -2
  1374. package/dist/index.es389.js.map +1 -1
  1375. package/dist/index.es390.js +9 -16
  1376. package/dist/index.es390.js.map +1 -1
  1377. package/dist/index.es391.js +15 -12
  1378. package/dist/index.es391.js.map +1 -1
  1379. package/dist/index.es392.js +13 -6
  1380. package/dist/index.es392.js.map +1 -1
  1381. package/dist/index.es393.js +11 -29
  1382. package/dist/index.es393.js.map +1 -1
  1383. package/dist/index.es394.js +13 -2
  1384. package/dist/index.es394.js.map +1 -1
  1385. package/dist/index.es395.js +19 -10
  1386. package/dist/index.es395.js.map +1 -1
  1387. package/dist/index.es396.js +12 -12
  1388. package/dist/index.es396.js.map +1 -1
  1389. package/dist/index.es397.js +12 -14
  1390. package/dist/index.es397.js.map +1 -1
  1391. package/dist/index.es398.js +12 -47
  1392. package/dist/index.es398.js.map +1 -1
  1393. package/dist/index.es399.js +7 -11
  1394. package/dist/index.es399.js.map +1 -1
  1395. package/dist/index.es400.js +9 -12
  1396. package/dist/index.es400.js.map +1 -1
  1397. package/dist/index.es401.js +10 -7
  1398. package/dist/index.es401.js.map +1 -1
  1399. package/dist/index.es402.js +12 -15
  1400. package/dist/index.es402.js.map +1 -1
  1401. package/dist/index.es403.js +9 -12
  1402. package/dist/index.es403.js.map +1 -1
  1403. package/dist/index.es404.js +9 -11
  1404. package/dist/index.es404.js.map +1 -1
  1405. package/dist/index.es405.js +9 -12
  1406. package/dist/index.es405.js.map +1 -1
  1407. package/dist/index.es406.js +6 -19
  1408. package/dist/index.es406.js.map +1 -1
  1409. package/dist/index.es407.js +12 -6
  1410. package/dist/index.es407.js.map +1 -1
  1411. package/dist/index.es408.js +2 -11
  1412. package/dist/index.es408.js.map +1 -1
  1413. package/dist/index.es409.js +35 -2
  1414. package/dist/index.es409.js.map +1 -1
  1415. package/dist/index.es41.js +1 -1
  1416. package/dist/index.es410.js +10 -8
  1417. package/dist/index.es410.js.map +1 -1
  1418. package/dist/index.es411.js +9 -8
  1419. package/dist/index.es411.js.map +1 -1
  1420. package/dist/index.es412.js +2 -2
  1421. package/dist/index.es413.js +9 -2
  1422. package/dist/index.es413.js.map +1 -1
  1423. package/dist/index.es414.js +13 -34
  1424. package/dist/index.es414.js.map +1 -1
  1425. package/dist/index.es415.js +18 -15
  1426. package/dist/index.es415.js.map +1 -1
  1427. package/dist/index.es416.js +10 -10
  1428. package/dist/index.es416.js.map +1 -1
  1429. package/dist/index.es417.js +10 -11
  1430. package/dist/index.es417.js.map +1 -1
  1431. package/dist/index.es418.js +11 -11
  1432. package/dist/index.es418.js.map +1 -1
  1433. package/dist/index.es419.js +10 -21
  1434. package/dist/index.es419.js.map +1 -1
  1435. package/dist/index.es42.js +1 -1
  1436. package/dist/index.es420.js +22 -14
  1437. package/dist/index.es420.js.map +1 -1
  1438. package/dist/index.es421.js +14 -4
  1439. package/dist/index.es421.js.map +1 -1
  1440. package/dist/index.es422.js +4 -14
  1441. package/dist/index.es422.js.map +1 -1
  1442. package/dist/index.es423.js +14 -14
  1443. package/dist/index.es423.js.map +1 -1
  1444. package/dist/index.es424.js +14 -11
  1445. package/dist/index.es424.js.map +1 -1
  1446. package/dist/index.es425.js +12 -2
  1447. package/dist/index.es425.js.map +1 -1
  1448. package/dist/index.es426.js +2 -9
  1449. package/dist/index.es426.js.map +1 -1
  1450. package/dist/index.es427.js +12 -12
  1451. package/dist/index.es427.js.map +1 -1
  1452. package/dist/index.es428.js +12 -12
  1453. package/dist/index.es428.js.map +1 -1
  1454. package/dist/index.es429.js +15 -11
  1455. package/dist/index.es429.js.map +1 -1
  1456. package/dist/index.es43.js +2 -2
  1457. package/dist/index.es430.js +15 -9
  1458. package/dist/index.es430.js.map +1 -1
  1459. package/dist/index.es431.js +2 -10
  1460. package/dist/index.es431.js.map +1 -1
  1461. package/dist/index.es432.js +19 -12
  1462. package/dist/index.es432.js.map +1 -1
  1463. package/dist/index.es433.js +2 -13
  1464. package/dist/index.es433.js.map +1 -1
  1465. package/dist/index.es434.js +10 -9
  1466. package/dist/index.es434.js.map +1 -1
  1467. package/dist/index.es435.js +47 -9
  1468. package/dist/index.es435.js.map +1 -1
  1469. package/dist/index.es436.js +13 -9
  1470. package/dist/index.es436.js.map +1 -1
  1471. package/dist/index.es437.js +2 -11
  1472. package/dist/index.es437.js.map +1 -1
  1473. package/dist/index.es438.js +14 -9
  1474. package/dist/index.es438.js.map +1 -1
  1475. package/dist/index.es439.js +16 -13
  1476. package/dist/index.es439.js.map +1 -1
  1477. package/dist/index.es440.js +12 -13
  1478. package/dist/index.es440.js.map +1 -1
  1479. package/dist/index.es441.js +6 -14
  1480. package/dist/index.es441.js.map +1 -1
  1481. package/dist/index.es442.js +30 -2
  1482. package/dist/index.es442.js.map +1 -1
  1483. package/dist/index.es443.js +3 -2
  1484. package/dist/index.es443.js.map +1 -1
  1485. package/dist/index.es444.js +2 -14
  1486. package/dist/index.es444.js.map +1 -1
  1487. package/dist/index.es445.js +2 -19
  1488. package/dist/index.es445.js.map +1 -1
  1489. package/dist/index.es446.js +12 -9
  1490. package/dist/index.es446.js.map +1 -1
  1491. package/dist/index.es447.js +13 -12
  1492. package/dist/index.es447.js.map +1 -1
  1493. package/dist/index.es448.js +13 -8
  1494. package/dist/index.es448.js.map +1 -1
  1495. package/dist/index.es449.js +10 -16
  1496. package/dist/index.es449.js.map +1 -1
  1497. package/dist/index.es45.js +2 -2
  1498. package/dist/index.es450.js +2 -16
  1499. package/dist/index.es450.js.map +1 -1
  1500. package/dist/index.es451.js +9 -2
  1501. package/dist/index.es451.js.map +1 -1
  1502. package/dist/index.es452.js +8 -19
  1503. package/dist/index.es452.js.map +1 -1
  1504. package/dist/index.es453.js +7 -11
  1505. package/dist/index.es453.js.map +1 -1
  1506. package/dist/index.es454.js +14 -13
  1507. package/dist/index.es454.js.map +1 -1
  1508. package/dist/index.es455.js +17 -11
  1509. package/dist/index.es455.js.map +1 -1
  1510. package/dist/index.es456.js +12 -11
  1511. package/dist/index.es456.js.map +1 -1
  1512. package/dist/index.es457.js +11 -10
  1513. package/dist/index.es457.js.map +1 -1
  1514. package/dist/index.es458.js +10 -7
  1515. package/dist/index.es458.js.map +1 -1
  1516. package/dist/index.es459.js +12 -16
  1517. package/dist/index.es459.js.map +1 -1
  1518. package/dist/index.es46.js +2 -2
  1519. package/dist/index.es460.js +19 -14
  1520. package/dist/index.es460.js.map +1 -1
  1521. package/dist/index.es461.js +9 -25
  1522. package/dist/index.es461.js.map +1 -1
  1523. package/dist/index.es462.js +5 -5
  1524. package/dist/index.es462.js.map +1 -1
  1525. package/dist/index.es463.js +9 -43
  1526. package/dist/index.es463.js.map +1 -1
  1527. package/dist/index.es464.js +10 -36
  1528. package/dist/index.es464.js.map +1 -1
  1529. package/dist/index.es465.js +7 -7
  1530. package/dist/index.es465.js.map +1 -1
  1531. package/dist/index.es466.js +12 -17
  1532. package/dist/index.es466.js.map +1 -1
  1533. package/dist/index.es467.js +9 -12
  1534. package/dist/index.es467.js.map +1 -1
  1535. package/dist/index.es468.js +7 -9
  1536. package/dist/index.es468.js.map +1 -1
  1537. package/dist/index.es469.js +9 -11
  1538. package/dist/index.es469.js.map +1 -1
  1539. package/dist/index.es47.js +2 -2
  1540. package/dist/index.es470.js +2 -13
  1541. package/dist/index.es470.js.map +1 -1
  1542. package/dist/index.es471.js +14 -13
  1543. package/dist/index.es471.js.map +1 -1
  1544. package/dist/index.es472.js +2 -10
  1545. package/dist/index.es472.js.map +1 -1
  1546. package/dist/index.es473.js +25 -9
  1547. package/dist/index.es473.js.map +1 -1
  1548. package/dist/index.es474.js +2 -13
  1549. package/dist/index.es474.js.map +1 -1
  1550. package/dist/index.es475.js +16 -9
  1551. package/dist/index.es475.js.map +1 -1
  1552. package/dist/index.es476.js +2 -10
  1553. package/dist/index.es476.js.map +1 -1
  1554. package/dist/index.es477.js +2 -10
  1555. package/dist/index.es477.js.map +1 -1
  1556. package/dist/index.es479.js +2 -16
  1557. package/dist/index.es479.js.map +1 -1
  1558. package/dist/index.es480.js +2 -2
  1559. package/dist/index.es481.js +2 -26
  1560. package/dist/index.es481.js.map +1 -1
  1561. package/dist/index.es482.js +2 -2
  1562. package/dist/index.es483.js +13 -16
  1563. package/dist/index.es483.js.map +1 -1
  1564. package/dist/index.es484.js +10 -2
  1565. package/dist/index.es484.js.map +1 -1
  1566. package/dist/index.es485.js +2 -2
  1567. package/dist/index.es486.js +18 -2
  1568. package/dist/index.es486.js.map +1 -1
  1569. package/dist/index.es487.js +20 -2
  1570. package/dist/index.es487.js.map +1 -1
  1571. package/dist/index.es488.js +17 -2
  1572. package/dist/index.es488.js.map +1 -1
  1573. package/dist/index.es489.js +36 -2
  1574. package/dist/index.es489.js.map +1 -1
  1575. package/dist/index.es49.js +1 -1
  1576. package/dist/index.es490.js +10 -18
  1577. package/dist/index.es490.js.map +1 -1
  1578. package/dist/index.es491.js +11 -9
  1579. package/dist/index.es491.js.map +1 -1
  1580. package/dist/index.es492.js +13 -2
  1581. package/dist/index.es492.js.map +1 -1
  1582. package/dist/index.es493.js +10 -10
  1583. package/dist/index.es493.js.map +1 -1
  1584. package/dist/index.es494.js +16 -2
  1585. package/dist/index.es494.js.map +1 -1
  1586. package/dist/index.es495.js +12 -12
  1587. package/dist/index.es495.js.map +1 -1
  1588. package/dist/index.es496.js +12 -9
  1589. package/dist/index.es496.js.map +1 -1
  1590. package/dist/index.es497.js +10 -8
  1591. package/dist/index.es497.js.map +1 -1
  1592. package/dist/index.es498.js +12 -43
  1593. package/dist/index.es498.js.map +1 -1
  1594. package/dist/index.es499.js +2 -12
  1595. package/dist/index.es499.js.map +1 -1
  1596. package/dist/index.es50.js +2 -2
  1597. package/dist/index.es500.js +12 -41
  1598. package/dist/index.es500.js.map +1 -1
  1599. package/dist/index.es501.js +11 -22
  1600. package/dist/index.es501.js.map +1 -1
  1601. package/dist/index.es502.js +12 -2
  1602. package/dist/index.es502.js.map +1 -1
  1603. package/dist/index.es503.js +12 -36
  1604. package/dist/index.es503.js.map +1 -1
  1605. package/dist/index.es504.js +16 -16
  1606. package/dist/index.es504.js.map +1 -1
  1607. package/dist/index.es505.js +9 -3
  1608. package/dist/index.es505.js.map +1 -1
  1609. package/dist/index.es506.js +30 -10
  1610. package/dist/index.es506.js.map +1 -1
  1611. package/dist/index.es507.js +10 -12
  1612. package/dist/index.es507.js.map +1 -1
  1613. package/dist/index.es508.js +12 -2
  1614. package/dist/index.es508.js.map +1 -1
  1615. package/dist/index.es509.js +11 -12
  1616. package/dist/index.es509.js.map +1 -1
  1617. package/dist/index.es51.js +2 -2
  1618. package/dist/index.es510.js +10 -11
  1619. package/dist/index.es510.js.map +1 -1
  1620. package/dist/index.es511.js +16 -11
  1621. package/dist/index.es511.js.map +1 -1
  1622. package/dist/index.es512.js +13 -10
  1623. package/dist/index.es512.js.map +1 -1
  1624. package/dist/index.es513.js +25 -12
  1625. package/dist/index.es513.js.map +1 -1
  1626. package/dist/index.es514.js +8 -16
  1627. package/dist/index.es514.js.map +1 -1
  1628. package/dist/index.es515.js +40 -7
  1629. package/dist/index.es515.js.map +1 -1
  1630. package/dist/index.es516.js +35 -29
  1631. package/dist/index.es516.js.map +1 -1
  1632. package/dist/index.es517.js +43 -10
  1633. package/dist/index.es517.js.map +1 -1
  1634. package/dist/index.es518.js +12 -2
  1635. package/dist/index.es518.js.map +1 -1
  1636. package/dist/index.es519.js +41 -17
  1637. package/dist/index.es519.js.map +1 -1
  1638. package/dist/index.es520.js +21 -18
  1639. package/dist/index.es520.js.map +1 -1
  1640. package/dist/index.es521.js +2 -17
  1641. package/dist/index.es521.js.map +1 -1
  1642. package/dist/index.es522.js +36 -35
  1643. package/dist/index.es522.js.map +1 -1
  1644. package/dist/index.es523.js +16 -11
  1645. package/dist/index.es523.js.map +1 -1
  1646. package/dist/index.es524.js +4 -12
  1647. package/dist/index.es524.js.map +1 -1
  1648. package/dist/index.es525.js +11 -10
  1649. package/dist/index.es525.js.map +1 -1
  1650. package/dist/index.es526.js +13 -15
  1651. package/dist/index.es526.js.map +1 -1
  1652. package/dist/index.es527.js +8 -10
  1653. package/dist/index.es527.js.map +1 -1
  1654. package/dist/index.es528.js +22 -12
  1655. package/dist/index.es528.js.map +1 -1
  1656. package/dist/index.es529.js +16 -8
  1657. package/dist/index.es529.js.map +1 -1
  1658. package/dist/index.es53.js +1 -1
  1659. package/dist/index.es530.js +11 -22
  1660. package/dist/index.es530.js.map +1 -1
  1661. package/dist/index.es531.js +2 -18
  1662. package/dist/index.es531.js.map +1 -1
  1663. package/dist/index.es532.js +7 -10
  1664. package/dist/index.es532.js.map +1 -1
  1665. package/dist/index.es533.js +9 -12
  1666. package/dist/index.es533.js.map +1 -1
  1667. package/dist/index.es534.js +19 -9
  1668. package/dist/index.es534.js.map +1 -1
  1669. package/dist/index.es535.js +12 -4
  1670. package/dist/index.es535.js.map +1 -1
  1671. package/dist/index.es536.js +2 -5
  1672. package/dist/index.es536.js.map +1 -1
  1673. package/dist/index.es537.js +145 -9
  1674. package/dist/index.es537.js.map +1 -1
  1675. package/dist/index.es538.js +21 -9
  1676. package/dist/index.es538.js.map +1 -1
  1677. package/dist/index.es539.js +18 -17
  1678. package/dist/index.es539.js.map +1 -1
  1679. package/dist/index.es54.js +1 -1
  1680. package/dist/index.es540.js +38 -16
  1681. package/dist/index.es540.js.map +1 -1
  1682. package/dist/index.es541.js +20 -14
  1683. package/dist/index.es541.js.map +1 -1
  1684. package/dist/index.es542.js +13 -22
  1685. package/dist/index.es542.js.map +1 -1
  1686. package/dist/index.es543.js +15 -2
  1687. package/dist/index.es543.js.map +1 -1
  1688. package/dist/index.es544.js +11 -2
  1689. package/dist/index.es544.js.map +1 -1
  1690. package/dist/index.es545.js +10 -2
  1691. package/dist/index.es545.js.map +1 -1
  1692. package/dist/index.es546.js +19 -2
  1693. package/dist/index.es546.js.map +1 -1
  1694. package/dist/index.es547.js +16 -18
  1695. package/dist/index.es547.js.map +1 -1
  1696. package/dist/index.es548.js +24 -16
  1697. package/dist/index.es548.js.map +1 -1
  1698. package/dist/index.es549.js +2 -2
  1699. package/dist/index.es55.js +1 -1
  1700. package/dist/index.es550.js +2 -146
  1701. package/dist/index.es550.js.map +1 -1
  1702. package/dist/index.es551.js +2 -22
  1703. package/dist/index.es551.js.map +1 -1
  1704. package/dist/index.es552.js +2 -20
  1705. package/dist/index.es552.js.map +1 -1
  1706. package/dist/index.es553.js +2 -40
  1707. package/dist/index.es553.js.map +1 -1
  1708. package/dist/index.es554.js +15 -18
  1709. package/dist/index.es554.js.map +1 -1
  1710. package/dist/index.es555.js +14 -19
  1711. package/dist/index.es555.js.map +1 -1
  1712. package/dist/index.es556.js +11 -12
  1713. package/dist/index.es556.js.map +1 -1
  1714. package/dist/index.es557.js +2 -16
  1715. package/dist/index.es557.js.map +1 -1
  1716. package/dist/index.es558.js +14 -14
  1717. package/dist/index.es558.js.map +1 -1
  1718. package/dist/index.es559.js +11 -10
  1719. package/dist/index.es559.js.map +1 -1
  1720. package/dist/index.es560.js +21 -10
  1721. package/dist/index.es560.js.map +1 -1
  1722. package/dist/index.es561.js +10 -10
  1723. package/dist/index.es561.js.map +1 -1
  1724. package/dist/index.es562.js +2 -22
  1725. package/dist/index.es562.js.map +1 -1
  1726. package/dist/index.es563.js +15 -12
  1727. package/dist/index.es563.js.map +1 -1
  1728. package/dist/index.es564.js +11 -6
  1729. package/dist/index.es564.js.map +1 -1
  1730. package/dist/index.es565.js +13 -2
  1731. package/dist/index.es565.js.map +1 -1
  1732. package/dist/index.es566.js +11 -8
  1733. package/dist/index.es566.js.map +1 -1
  1734. package/dist/index.es567.js +11 -9
  1735. package/dist/index.es567.js.map +1 -1
  1736. package/dist/index.es568.js +15 -5
  1737. package/dist/index.es568.js.map +1 -1
  1738. package/dist/index.es569.js +18 -51
  1739. package/dist/index.es569.js.map +1 -1
  1740. package/dist/index.es570.js +12 -57
  1741. package/dist/index.es570.js.map +1 -1
  1742. package/dist/index.es571.js +3 -5
  1743. package/dist/index.es571.js.map +1 -1
  1744. package/dist/index.es572.js +8 -8
  1745. package/dist/index.es572.js.map +1 -1
  1746. package/dist/index.es573.js +9 -10
  1747. package/dist/index.es573.js.map +1 -1
  1748. package/dist/index.es574.js +15 -2
  1749. package/dist/index.es574.js.map +1 -1
  1750. package/dist/index.es575.js +12 -138
  1751. package/dist/index.es575.js.map +1 -1
  1752. package/dist/index.es576.js +11 -28
  1753. package/dist/index.es576.js.map +1 -1
  1754. package/dist/index.es577.js +10 -23
  1755. package/dist/index.es577.js.map +1 -1
  1756. package/dist/index.es578.js +13 -24
  1757. package/dist/index.es578.js.map +1 -1
  1758. package/dist/index.es579.js +8 -16
  1759. package/dist/index.es579.js.map +1 -1
  1760. package/dist/index.es580.js +11 -18
  1761. package/dist/index.es580.js.map +1 -1
  1762. package/dist/index.es581.js +22 -2
  1763. package/dist/index.es581.js.map +1 -1
  1764. package/dist/index.es582.js +11 -13
  1765. package/dist/index.es582.js.map +1 -1
  1766. package/dist/index.es583.js +6 -14
  1767. package/dist/index.es583.js.map +1 -1
  1768. package/dist/index.es584.js +5 -10
  1769. package/dist/index.es584.js.map +1 -1
  1770. package/dist/index.es585.js +52 -2
  1771. package/dist/index.es585.js.map +1 -1
  1772. package/dist/index.es586.js +56 -22
  1773. package/dist/index.es586.js.map +1 -1
  1774. package/dist/index.es587.js +6 -11
  1775. package/dist/index.es587.js.map +1 -1
  1776. package/dist/index.es588.js +5 -2
  1777. package/dist/index.es588.js.map +1 -1
  1778. package/dist/index.es589.js +8 -14
  1779. package/dist/index.es589.js.map +1 -1
  1780. package/dist/index.es59.js +2 -2
  1781. package/dist/index.es590.js +11 -11
  1782. package/dist/index.es590.js.map +1 -1
  1783. package/dist/index.es591.js +12 -21
  1784. package/dist/index.es591.js.map +1 -1
  1785. package/dist/index.es592.js +9 -11
  1786. package/dist/index.es592.js.map +1 -1
  1787. package/dist/index.es593.js +5 -2
  1788. package/dist/index.es593.js.map +1 -1
  1789. package/dist/index.es594.js +9 -15
  1790. package/dist/index.es594.js.map +1 -1
  1791. package/dist/index.es595.js +8 -9
  1792. package/dist/index.es595.js.map +1 -1
  1793. package/dist/index.es596.js +17 -11
  1794. package/dist/index.es596.js.map +1 -1
  1795. package/dist/index.es597.js +11 -14
  1796. package/dist/index.es597.js.map +1 -1
  1797. package/dist/index.es598.js +13 -11
  1798. package/dist/index.es598.js.map +1 -1
  1799. package/dist/index.es599.js +11 -15
  1800. package/dist/index.es599.js.map +1 -1
  1801. package/dist/index.es60.js +3 -3
  1802. package/dist/index.es600.js +11 -18
  1803. package/dist/index.es600.js.map +1 -1
  1804. package/dist/index.es601.js +8 -12
  1805. package/dist/index.es601.js.map +1 -1
  1806. package/dist/index.es602.js +2 -5
  1807. package/dist/index.es602.js.map +1 -1
  1808. package/dist/index.es603.js +138 -8
  1809. package/dist/index.es603.js.map +1 -1
  1810. package/dist/index.es604.js +28 -14
  1811. package/dist/index.es604.js.map +1 -1
  1812. package/dist/index.es605.js +23 -12
  1813. package/dist/index.es605.js.map +1 -1
  1814. package/dist/index.es606.js +25 -10
  1815. package/dist/index.es606.js.map +1 -1
  1816. package/dist/index.es607.js +16 -14
  1817. package/dist/index.es607.js.map +1 -1
  1818. package/dist/index.es608.js +18 -8
  1819. package/dist/index.es608.js.map +1 -1
  1820. package/dist/index.es609.js +2 -12
  1821. package/dist/index.es609.js.map +1 -1
  1822. package/dist/index.es61.js +1 -1
  1823. package/dist/index.es610.js +14 -13
  1824. package/dist/index.es610.js.map +1 -1
  1825. package/dist/index.es611.js +11 -8
  1826. package/dist/index.es611.js.map +1 -1
  1827. package/dist/index.es612.js +10 -11
  1828. package/dist/index.es612.js.map +1 -1
  1829. package/dist/index.es613.js +2 -9
  1830. package/dist/index.es613.js.map +1 -1
  1831. package/dist/index.es614.js +24 -2
  1832. package/dist/index.es614.js.map +1 -1
  1833. package/dist/index.es615.js +2 -10
  1834. package/dist/index.es615.js.map +1 -1
  1835. package/dist/index.es616.js +11 -9
  1836. package/dist/index.es616.js.map +1 -1
  1837. package/dist/index.es617.js +12 -4
  1838. package/dist/index.es617.js.map +1 -1
  1839. package/dist/index.es618.js +19 -37
  1840. package/dist/index.es618.js.map +1 -1
  1841. package/dist/index.es619.js +5 -9
  1842. package/dist/index.es619.js.map +1 -1
  1843. package/dist/index.es620.js +8 -7
  1844. package/dist/index.es620.js.map +1 -1
  1845. package/dist/index.es621.js +16 -9
  1846. package/dist/index.es621.js.map +1 -1
  1847. package/dist/index.es622.js +65 -9
  1848. package/dist/index.es622.js.map +1 -1
  1849. package/dist/index.es623.js +2 -10
  1850. package/dist/index.es623.js.map +1 -1
  1851. package/dist/index.es624.js +8 -9
  1852. package/dist/index.es624.js.map +1 -1
  1853. package/dist/index.es625.js +2 -10
  1854. package/dist/index.es625.js.map +1 -1
  1855. package/dist/index.es626.js +2 -10
  1856. package/dist/index.es626.js.map +1 -1
  1857. package/dist/index.es627.js +8 -9
  1858. package/dist/index.es627.js.map +1 -1
  1859. package/dist/index.es628.js +27 -9
  1860. package/dist/index.es628.js.map +1 -1
  1861. package/dist/index.es629.js +2 -11
  1862. package/dist/index.es629.js.map +1 -1
  1863. package/dist/index.es63.js +1 -1
  1864. package/dist/index.es630.js +10 -11
  1865. package/dist/index.es630.js.map +1 -1
  1866. package/dist/index.es631.js +2 -10
  1867. package/dist/index.es631.js.map +1 -1
  1868. package/dist/index.es632.js +11 -10
  1869. package/dist/index.es632.js.map +1 -1
  1870. package/dist/index.es633.js +11 -2
  1871. package/dist/index.es633.js.map +1 -1
  1872. package/dist/index.es634.js +16 -11
  1873. package/dist/index.es634.js.map +1 -1
  1874. package/dist/index.es635.js +13 -2
  1875. package/dist/index.es635.js.map +1 -1
  1876. package/dist/index.es636.js +13 -2
  1877. package/dist/index.es636.js.map +1 -1
  1878. package/dist/index.es637.js +2 -28
  1879. package/dist/index.es637.js.map +1 -1
  1880. package/dist/index.es638.js +9 -15
  1881. package/dist/index.es638.js.map +1 -1
  1882. package/dist/index.es639.js +9 -2
  1883. package/dist/index.es639.js.map +1 -1
  1884. package/dist/index.es64.js +1 -1
  1885. package/dist/index.es640.js +38 -12
  1886. package/dist/index.es640.js.map +1 -1
  1887. package/dist/index.es641.js +9 -20
  1888. package/dist/index.es641.js.map +1 -1
  1889. package/dist/index.es642.js +8 -4
  1890. package/dist/index.es642.js.map +1 -1
  1891. package/dist/index.es643.js +7 -8
  1892. package/dist/index.es643.js.map +1 -1
  1893. package/dist/index.es644.js +9 -16
  1894. package/dist/index.es644.js.map +1 -1
  1895. package/dist/index.es645.js +9 -65
  1896. package/dist/index.es645.js.map +1 -1
  1897. package/dist/index.es646.js +10 -2
  1898. package/dist/index.es646.js.map +1 -1
  1899. package/dist/index.es647.js +9 -8
  1900. package/dist/index.es647.js.map +1 -1
  1901. package/dist/index.es648.js +10 -2
  1902. package/dist/index.es648.js.map +1 -1
  1903. package/dist/index.es649.js +10 -2
  1904. package/dist/index.es649.js.map +1 -1
  1905. package/dist/index.es650.js +9 -8
  1906. package/dist/index.es650.js.map +1 -1
  1907. package/dist/index.es651.js +11 -27
  1908. package/dist/index.es651.js.map +1 -1
  1909. package/dist/index.es652.js +10 -2
  1910. package/dist/index.es652.js.map +1 -1
  1911. package/dist/index.es653.js +10 -11
  1912. package/dist/index.es653.js.map +1 -1
  1913. package/dist/index.es654.js +2 -11
  1914. package/dist/index.es654.js.map +1 -1
  1915. package/dist/index.es655.js +27 -16
  1916. package/dist/index.es655.js.map +1 -1
  1917. package/dist/index.es656.js +15 -12
  1918. package/dist/index.es656.js.map +1 -1
  1919. package/dist/index.es657.js +14 -12
  1920. package/dist/index.es657.js.map +1 -1
  1921. package/dist/index.es658.js +10 -10
  1922. package/dist/index.es658.js.map +1 -1
  1923. package/dist/index.es659.js +2 -12
  1924. package/dist/index.es659.js.map +1 -1
  1925. package/dist/index.es66.js +1 -1
  1926. package/dist/index.es660.js +9 -9
  1927. package/dist/index.es660.js.map +1 -1
  1928. package/dist/index.es661.js +4 -14
  1929. package/dist/index.es661.js.map +1 -1
  1930. package/dist/index.es662.js +10 -16
  1931. package/dist/index.es662.js.map +1 -1
  1932. package/dist/index.es663.js +2 -26
  1933. package/dist/index.es663.js.map +1 -1
  1934. package/dist/index.es664.js +18 -11
  1935. package/dist/index.es664.js.map +1 -1
  1936. package/dist/index.es665.js +11 -8
  1937. package/dist/index.es665.js.map +1 -1
  1938. package/dist/index.es666.js +58 -2
  1939. package/dist/index.es666.js.map +1 -1
  1940. package/dist/index.es667.js +37 -18
  1941. package/dist/index.es667.js.map +1 -1
  1942. package/dist/index.es668.js +9 -11
  1943. package/dist/index.es668.js.map +1 -1
  1944. package/dist/index.es669.js +20 -56
  1945. package/dist/index.es669.js.map +1 -1
  1946. package/dist/index.es67.js +2 -2
  1947. package/dist/index.es670.js +2 -39
  1948. package/dist/index.es670.js.map +1 -1
  1949. package/dist/index.es671.js +2 -10
  1950. package/dist/index.es671.js.map +1 -1
  1951. package/dist/index.es672.js +2 -22
  1952. package/dist/index.es672.js.map +1 -1
  1953. package/dist/index.es675.js +12 -2
  1954. package/dist/index.es675.js.map +1 -1
  1955. package/dist/index.es676.js +13 -2
  1956. package/dist/index.es676.js.map +1 -1
  1957. package/dist/index.es679.js +12 -14
  1958. package/dist/index.es679.js.map +1 -1
  1959. package/dist/index.es68.js +2 -2
  1960. package/dist/index.es680.js +9 -10
  1961. package/dist/index.es680.js.map +1 -1
  1962. package/dist/index.es681.js +14 -12
  1963. package/dist/index.es681.js.map +1 -1
  1964. package/dist/index.es682.js +16 -14
  1965. package/dist/index.es682.js.map +1 -1
  1966. package/dist/index.es683.js +25 -11
  1967. package/dist/index.es683.js.map +1 -1
  1968. package/dist/index.es684.js +2 -18
  1969. package/dist/index.es684.js.map +1 -1
  1970. package/dist/index.es685.js +18 -2
  1971. package/dist/index.es685.js.map +1 -1
  1972. package/dist/index.es686.js +2 -11
  1973. package/dist/index.es686.js.map +1 -1
  1974. package/dist/index.es687.js +2 -11
  1975. package/dist/index.es687.js.map +1 -1
  1976. package/dist/index.es688.js +10 -13
  1977. package/dist/index.es688.js.map +1 -1
  1978. package/dist/index.es689.js +6 -6
  1979. package/dist/index.es689.js.map +1 -1
  1980. package/dist/index.es690.js +15 -17
  1981. package/dist/index.es690.js.map +1 -1
  1982. package/dist/index.es691.js +9 -2
  1983. package/dist/index.es691.js.map +1 -1
  1984. package/dist/index.es692.js +2 -2
  1985. package/dist/index.es693.js +11 -2
  1986. package/dist/index.es693.js.map +1 -1
  1987. package/dist/index.es694.js +14 -2
  1988. package/dist/index.es694.js.map +1 -1
  1989. package/dist/index.es695.js +18 -2
  1990. package/dist/index.es695.js.map +1 -1
  1991. package/dist/index.es696.js +2 -2
  1992. package/dist/index.es697.js +2 -2
  1993. package/dist/index.es698.js +2 -2
  1994. package/dist/index.es699.js +2 -2
  1995. package/dist/index.es70.js +2 -2
  1996. package/dist/index.es701.js +2 -2
  1997. package/dist/index.es702.js +2 -2
  1998. package/dist/index.es704.js +2 -2
  1999. package/dist/index.es705.js +2 -12
  2000. package/dist/index.es705.js.map +1 -1
  2001. package/dist/index.es706.js +2 -9
  2002. package/dist/index.es706.js.map +1 -1
  2003. package/dist/index.es707.js +2 -2
  2004. package/dist/index.es708.js +2 -2
  2005. package/dist/index.es709.js +12 -2
  2006. package/dist/index.es709.js.map +1 -1
  2007. package/dist/index.es710.js +38 -9
  2008. package/dist/index.es710.js.map +1 -1
  2009. package/dist/index.es711.js +9 -38
  2010. package/dist/index.es711.js.map +1 -1
  2011. package/dist/index.es712.js +14 -10
  2012. package/dist/index.es712.js.map +1 -1
  2013. package/dist/index.es713.js +10 -8
  2014. package/dist/index.es713.js.map +1 -1
  2015. package/dist/index.es714.js +8 -13
  2016. package/dist/index.es714.js.map +1 -1
  2017. package/dist/index.es715.js +13 -8
  2018. package/dist/index.es715.js.map +1 -1
  2019. package/dist/index.es716.js +4 -4
  2020. package/dist/index.es716.js.map +1 -1
  2021. package/dist/index.es717.js +8 -14
  2022. package/dist/index.es717.js.map +1 -1
  2023. package/dist/index.es72.js +1 -1
  2024. package/dist/index.es81.js +1 -1
  2025. package/dist/index.es87.js +8498 -2565
  2026. package/dist/index.es87.js.map +1 -1
  2027. package/dist/index.es88.js +5081 -2
  2028. package/dist/index.es88.js.map +1 -1
  2029. package/dist/index.es89.js +18 -8575
  2030. package/dist/index.es89.js.map +1 -1
  2031. package/dist/index.es90.js +28 -5075
  2032. package/dist/index.es90.js.map +1 -1
  2033. package/dist/index.es91.js +17 -20
  2034. package/dist/index.es91.js.map +1 -1
  2035. package/dist/index.es92.js +5 -33
  2036. package/dist/index.es92.js.map +1 -1
  2037. package/dist/index.es93.js +45 -17
  2038. package/dist/index.es93.js.map +1 -1
  2039. package/dist/index.es94.js +2 -6
  2040. package/dist/index.es94.js.map +1 -1
  2041. package/dist/index.es95.js +418 -42
  2042. package/dist/index.es95.js.map +1 -1
  2043. package/dist/index.es96.js +2646 -2
  2044. package/dist/index.es96.js.map +1 -1
  2045. package/dist/index.es97.js +2 -423
  2046. package/dist/index.es97.js.map +1 -1
  2047. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs87.js","sources":["../../../node_modules/simple-keyboard/build/index.js"],"sourcesContent":["/*!\n * \n * simple-keyboard v3.7.51\n * https://github.com/hodgef/simple-keyboard\n *\n * Copyright (c) Francisco Hodge (https://github.com/hodgef) and project contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.SimpleKeyboard=e():t.SimpleKeyboard=e()}(this,(function(){return function(){\"use strict\";var t={509:function(t,e,n){var o=n(9985),r=n(3691),i=TypeError;t.exports=function(t){if(o(t))return t;throw new i(r(t)+\" is not a function\")}},2655:function(t,e,n){var o=n(9429),r=n(3691),i=TypeError;t.exports=function(t){if(o(t))return t;throw new i(r(t)+\" is not a constructor\")}},3550:function(t,e,n){var o=n(598),r=String,i=TypeError;t.exports=function(t){if(o(t))return t;throw new i(\"Can't set \"+r(t)+\" as a prototype\")}},7370:function(t,e,n){var o=n(4201),r=n(5391),i=n(2560).f,a=o(\"unscopables\"),s=Array.prototype;void 0===s[a]&&i(s,a,{configurable:!0,value:r(null)}),t.exports=function(t){s[a][t]=!0}},1514:function(t,e,n){var o=n(730).charAt;t.exports=function(t,e,n){return e+(n?o(t,e).length:1)}},5027:function(t,e,n){var o=n(8999),r=String,i=TypeError;t.exports=function(t){if(o(t))return t;throw new i(r(t)+\" is not an object\")}},7612:function(t,e,n){var o=n(2960).forEach,r=n(6834)(\"forEach\");t.exports=r?[].forEach:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}},1055:function(t,e,n){var o=n(4071),r=n(2615),i=n(690),a=n(1228),s=n(3292),u=n(9429),c=n(6310),l=n(6522),f=n(5185),d=n(1664),p=Array;t.exports=function(t){var e=i(t),n=u(this),h=arguments.length,v=h>1?arguments[1]:void 0,y=void 0!==v;y&&(v=o(v,h>2?arguments[2]:void 0));var g,m,b,x,w,E,O=d(e),S=0;if(!O||this===p&&s(O))for(g=c(e),m=n?new this(g):p(g);g>S;S++)E=y?v(e[S],S):e[S],l(m,S,E);else for(w=(x=f(e,O)).next,m=n?new this:[];!(b=r(w,x)).done;S++)E=y?a(x,v,[b.value,S],!0):b.value,l(m,S,E);return m.length=S,m}},4328:function(t,e,n){var o=n(5290),r=n(7578),i=n(6310),a=function(t){return function(e,n,a){var s,u=o(e),c=i(u),l=r(a,c);if(t&&n!=n){for(;c>l;)if((s=u[l++])!=s)return!0}else for(;c>l;l++)if((t||l in u)&&u[l]===n)return t||l||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},2960:function(t,e,n){var o=n(4071),r=n(8844),i=n(4413),a=n(690),s=n(6310),u=n(7120),c=r([].push),l=function(t){var e=1===t,n=2===t,r=3===t,l=4===t,f=6===t,d=7===t,p=5===t||f;return function(h,v,y,g){for(var m,b,x=a(h),w=i(x),E=s(w),O=o(v,y),S=0,k=g||u,P=e?k(h,E):n||d?k(h,0):void 0;E>S;S++)if((p||S in w)&&(b=O(m=w[S],S,x),t))if(e)P[S]=b;else if(b)switch(t){case 3:return!0;case 5:return m;case 6:return S;case 2:c(P,m)}else switch(t){case 4:return!1;case 7:c(P,m)}return f?-1:r||l?l:P}};t.exports={forEach:l(0),map:l(1),filter:l(2),some:l(3),every:l(4),find:l(5),findIndex:l(6),filterReject:l(7)}},9042:function(t,e,n){var o=n(3689),r=n(4201),i=n(3615),a=r(\"species\");t.exports=function(t){return i>=51||!o((function(){var e=[];return(e.constructor={})[a]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},6834:function(t,e,n){var o=n(3689);t.exports=function(t,e){var n=[][t];return!!n&&o((function(){n.call(null,e||function(){return 1},1)}))}},8820:function(t,e,n){var o=n(509),r=n(690),i=n(4413),a=n(6310),s=TypeError,u=function(t){return function(e,n,u,c){var l=r(e),f=i(l),d=a(l);o(n);var p=t?d-1:0,h=t?-1:1;if(u<2)for(;;){if(p in f){c=f[p],p+=h;break}if(p+=h,t?p<0:d<=p)throw new s(\"Reduce of empty array with no initial value\")}for(;t?p>=0:d>p;p+=h)p in f&&(c=n(c,f[p],p,l));return c}};t.exports={left:u(!1),right:u(!0)}},5649:function(t,e,n){var o=n(7697),r=n(2297),i=TypeError,a=Object.getOwnPropertyDescriptor,s=o&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],\"length\",{writable:!1}).length=1}catch(t){return t instanceof TypeError}}();t.exports=s?function(t,e){if(r(t)&&!a(t,\"length\").writable)throw new i(\"Cannot set read only .length\");return t.length=e}:function(t,e){return t.length=e}},6004:function(t,e,n){var o=n(8844);t.exports=o([].slice)},382:function(t,e,n){var o=n(6004),r=Math.floor,i=function(t,e){var n=t.length;if(n<8)for(var a,s,u=1;u<n;){for(s=u,a=t[u];s&&e(t[s-1],a)>0;)t[s]=t[--s];s!==u++&&(t[s]=a)}else for(var c=r(n/2),l=i(o(t,0,c),e),f=i(o(t,c),e),d=l.length,p=f.length,h=0,v=0;h<d||v<p;)t[h+v]=h<d&&v<p?e(l[h],f[v])<=0?l[h++]:f[v++]:h<d?l[h++]:f[v++];return t};t.exports=i},5271:function(t,e,n){var o=n(2297),r=n(9429),i=n(8999),a=n(4201)(\"species\"),s=Array;t.exports=function(t){var e;return o(t)&&(e=t.constructor,(r(e)&&(e===s||o(e.prototype))||i(e)&&null===(e=e[a]))&&(e=void 0)),void 0===e?s:e}},7120:function(t,e,n){var o=n(5271);t.exports=function(t,e){return new(o(t))(0===e?0:e)}},1228:function(t,e,n){var o=n(5027),r=n(2125);t.exports=function(t,e,n,i){try{return i?e(o(n)[0],n[1]):e(n)}catch(e){r(t,\"throw\",e)}}},6431:function(t,e,n){var o=n(4201)(\"iterator\"),r=!1;try{var i=0,a={next:function(){return{done:!!i++}},return:function(){r=!0}};a[o]=function(){return this},Array.from(a,(function(){throw 2}))}catch(t){}t.exports=function(t,e){try{if(!e&&!r)return!1}catch(t){return!1}var n=!1;try{var i={};i[o]=function(){return{next:function(){return{done:n=!0}}}},t(i)}catch(t){}return n}},6648:function(t,e,n){var o=n(8844),r=o({}.toString),i=o(\"\".slice);t.exports=function(t){return i(r(t),8,-1)}},926:function(t,e,n){var o=n(3043),r=n(9985),i=n(6648),a=n(4201)(\"toStringTag\"),s=Object,u=\"Arguments\"===i(function(){return arguments}());t.exports=o?i:function(t){var e,n,o;return void 0===t?\"Undefined\":null===t?\"Null\":\"string\"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=s(t),a))?n:u?i(e):\"Object\"===(o=i(e))&&r(e.callee)?\"Arguments\":o}},8758:function(t,e,n){var o=n(6812),r=n(9152),i=n(2474),a=n(2560);t.exports=function(t,e,n){for(var s=r(e),u=a.f,c=i.f,l=0;l<s.length;l++){var f=s[l];o(t,f)||n&&o(n,f)||u(t,f,c(e,f))}}},7413:function(t,e,n){var o=n(4201)(\"match\");t.exports=function(t){var e=/./;try{\"/./\"[t](e)}catch(n){try{return e[o]=!1,\"/./\"[t](e)}catch(t){}}return!1}},1748:function(t,e,n){var o=n(3689);t.exports=!o((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},7807:function(t){t.exports=function(t,e){return{value:t,done:e}}},5773:function(t,e,n){var o=n(7697),r=n(2560),i=n(5684);t.exports=o?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},5684:function(t){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},6522:function(t,e,n){var o=n(8360),r=n(2560),i=n(5684);t.exports=function(t,e,n){var a=o(e);a in t?r.f(t,a,i(0,n)):t[a]=n}},1797:function(t,e,n){var o=n(5027),r=n(5899),i=TypeError;t.exports=function(t){if(o(this),\"string\"===t||\"default\"===t)t=\"string\";else if(\"number\"!==t)throw new i(\"Incorrect hint\");return r(this,t)}},2148:function(t,e,n){var o=n(8702),r=n(2560);t.exports=function(t,e,n){return n.get&&o(n.get,e,{getter:!0}),n.set&&o(n.set,e,{setter:!0}),r.f(t,e,n)}},1880:function(t,e,n){var o=n(9985),r=n(2560),i=n(8702),a=n(5014);t.exports=function(t,e,n,s){s||(s={});var u=s.enumerable,c=void 0!==s.name?s.name:e;if(o(n)&&i(n,c,s),s.global)u?t[e]=n:a(e,n);else{try{s.unsafe?t[e]&&(u=!0):delete t[e]}catch(t){}u?t[e]=n:r.f(t,e,{value:n,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return t}},5014:function(t,e,n){var o=n(9037),r=Object.defineProperty;t.exports=function(t,e){try{r(o,t,{value:e,configurable:!0,writable:!0})}catch(n){o[t]=e}return e}},8494:function(t,e,n){var o=n(3691),r=TypeError;t.exports=function(t,e){if(!delete t[e])throw new r(\"Cannot delete property \"+o(e)+\" of \"+o(t))}},7697:function(t,e,n){var o=n(3689);t.exports=!o((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))},6420:function(t,e,n){var o=n(9037),r=n(8999),i=o.document,a=r(i)&&r(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},5565:function(t){var e=TypeError;t.exports=function(t){if(t>9007199254740991)throw e(\"Maximum allowed index exceeded\");return t}},6338:function(t){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},3265:function(t,e,n){var o=n(6420)(\"span\").classList,r=o&&o.constructor&&o.constructor.prototype;t.exports=r===Object.prototype?void 0:r},7365:function(t,e,n){var o=n(71).match(/firefox\\/(\\d+)/i);t.exports=!!o&&+o[1]},7298:function(t,e,n){var o=n(71);t.exports=/MSIE|Trident/.test(o)},806:function(t,e,n){var o=n(9037),r=n(6648);t.exports=\"process\"===r(o.process)},71:function(t){t.exports=\"undefined\"!=typeof navigator&&String(navigator.userAgent)||\"\"},3615:function(t,e,n){var o,r,i=n(9037),a=n(71),s=i.process,u=i.Deno,c=s&&s.versions||u&&u.version,l=c&&c.v8;l&&(r=(o=l.split(\".\"))[0]>0&&o[0]<4?1:+(o[0]+o[1])),!r&&a&&(!(o=a.match(/Edge\\/(\\d+)/))||o[1]>=74)&&(o=a.match(/Chrome\\/(\\d+)/))&&(r=+o[1]),t.exports=r},7922:function(t,e,n){var o=n(71).match(/AppleWebKit\\/(\\d+)\\./);t.exports=!!o&&+o[1]},2739:function(t){t.exports=[\"constructor\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"toLocaleString\",\"toString\",\"valueOf\"]},9989:function(t,e,n){var o=n(9037),r=n(2474).f,i=n(5773),a=n(1880),s=n(5014),u=n(8758),c=n(5266);t.exports=function(t,e){var n,l,f,d,p,h=t.target,v=t.global,y=t.stat;if(n=v?o:y?o[h]||s(h,{}):o[h]&&o[h].prototype)for(l in e){if(d=e[l],f=t.dontCallGetSet?(p=r(n,l))&&p.value:n[l],!c(v?l:h+(y?\".\":\"#\")+l,t.forced)&&void 0!==f){if(typeof d==typeof f)continue;u(d,f)}(t.sham||f&&f.sham)&&i(d,\"sham\",!0),a(n,l,d,t)}}},3689:function(t){t.exports=function(t){try{return!!t()}catch(t){return!0}}},8678:function(t,e,n){n(4043);var o=n(2615),r=n(1880),i=n(6308),a=n(3689),s=n(4201),u=n(5773),c=s(\"species\"),l=RegExp.prototype;t.exports=function(t,e,n,f){var d=s(t),p=!a((function(){var e={};return e[d]=function(){return 7},7!==\"\"[t](e)})),h=p&&!a((function(){var e=!1,n=/a/;return\"split\"===t&&((n={}).constructor={},n.constructor[c]=function(){return n},n.flags=\"\",n[d]=/./[d]),n.exec=function(){return e=!0,null},n[d](\"\"),!e}));if(!p||!h||n){var v=/./[d],y=e(d,\"\"[t],(function(t,e,n,r,a){var s=e.exec;return s===i||s===l.exec?p&&!a?{done:!0,value:o(v,e,n,r)}:{done:!0,value:o(t,n,e,r)}:{done:!1}}));r(String.prototype,t,y[0]),r(l,d,y[1])}f&&u(l[d],\"sham\",!0)}},1735:function(t,e,n){var o=n(7215),r=Function.prototype,i=r.apply,a=r.call;t.exports=\"object\"==typeof Reflect&&Reflect.apply||(o?a.bind(i):function(){return a.apply(i,arguments)})},4071:function(t,e,n){var o=n(6576),r=n(509),i=n(7215),a=o(o.bind);t.exports=function(t,e){return r(t),void 0===e?t:i?a(t,e):function(){return t.apply(e,arguments)}}},7215:function(t,e,n){var o=n(3689);t.exports=!o((function(){var t=function(){}.bind();return\"function\"!=typeof t||t.hasOwnProperty(\"prototype\")}))},2615:function(t,e,n){var o=n(7215),r=Function.prototype.call;t.exports=o?r.bind(r):function(){return r.apply(r,arguments)}},1236:function(t,e,n){var o=n(7697),r=n(6812),i=Function.prototype,a=o&&Object.getOwnPropertyDescriptor,s=r(i,\"name\"),u=s&&\"something\"===function(){}.name,c=s&&(!o||o&&a(i,\"name\").configurable);t.exports={EXISTS:s,PROPER:u,CONFIGURABLE:c}},2743:function(t,e,n){var o=n(8844),r=n(509);t.exports=function(t,e,n){try{return o(r(Object.getOwnPropertyDescriptor(t,e)[n]))}catch(t){}}},6576:function(t,e,n){var o=n(6648),r=n(8844);t.exports=function(t){if(\"Function\"===o(t))return r(t)}},8844:function(t,e,n){var o=n(7215),r=Function.prototype,i=r.call,a=o&&r.bind.bind(i,i);t.exports=o?a:function(t){return function(){return i.apply(t,arguments)}}},6058:function(t,e,n){var o=n(9037),r=n(9985);t.exports=function(t,e){return arguments.length<2?(n=o[t],r(n)?n:void 0):o[t]&&o[t][e];var n}},1664:function(t,e,n){var o=n(926),r=n(4849),i=n(981),a=n(9478),s=n(4201)(\"iterator\");t.exports=function(t){if(!i(t))return r(t,s)||r(t,\"@@iterator\")||a[o(t)]}},5185:function(t,e,n){var o=n(2615),r=n(509),i=n(5027),a=n(3691),s=n(1664),u=TypeError;t.exports=function(t,e){var n=arguments.length<2?s(t):e;if(r(n))return i(o(n,t));throw new u(a(t)+\" is not iterable\")}},2643:function(t,e,n){var o=n(8844),r=n(2297),i=n(9985),a=n(6648),s=n(4327),u=o([].push);t.exports=function(t){if(i(t))return t;if(r(t)){for(var e=t.length,n=[],o=0;o<e;o++){var c=t[o];\"string\"==typeof c?u(n,c):\"number\"!=typeof c&&\"Number\"!==a(c)&&\"String\"!==a(c)||u(n,s(c))}var l=n.length,f=!0;return function(t,e){if(f)return f=!1,e;if(r(this))return e;for(var o=0;o<l;o++)if(n[o]===t)return e}}}},4849:function(t,e,n){var o=n(509),r=n(981);t.exports=function(t,e){var n=t[e];return r(n)?void 0:o(n)}},7017:function(t,e,n){var o=n(8844),r=n(690),i=Math.floor,a=o(\"\".charAt),s=o(\"\".replace),u=o(\"\".slice),c=/\\$([$&'`]|\\d{1,2}|<[^>]*>)/g,l=/\\$([$&'`]|\\d{1,2})/g;t.exports=function(t,e,n,o,f,d){var p=n+t.length,h=o.length,v=l;return void 0!==f&&(f=r(f),v=c),s(d,v,(function(r,s){var c;switch(a(s,0)){case\"$\":return\"$\";case\"&\":return t;case\"`\":return u(e,0,n);case\"'\":return u(e,p);case\"<\":c=f[u(s,1,-1)];break;default:var l=+s;if(0===l)return r;if(l>h){var d=i(l/10);return 0===d?r:d<=h?void 0===o[d-1]?a(s,1):o[d-1]+a(s,1):r}c=o[l-1]}return void 0===c?\"\":c}))}},9037:function(t,e,n){var o=function(t){return t&&t.Math===Math&&t};t.exports=o(\"object\"==typeof globalThis&&globalThis)||o(\"object\"==typeof window&&window)||o(\"object\"==typeof self&&self)||o(\"object\"==typeof n.g&&n.g)||o(\"object\"==typeof this&&this)||function(){return this}()||Function(\"return this\")()},6812:function(t,e,n){var o=n(8844),r=n(690),i=o({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,e){return i(r(t),e)}},7248:function(t){t.exports={}},2688:function(t,e,n){var o=n(6058);t.exports=o(\"document\",\"documentElement\")},8506:function(t,e,n){var o=n(7697),r=n(3689),i=n(6420);t.exports=!o&&!r((function(){return 7!==Object.defineProperty(i(\"div\"),\"a\",{get:function(){return 7}}).a}))},4413:function(t,e,n){var o=n(8844),r=n(3689),i=n(6648),a=Object,s=o(\"\".split);t.exports=r((function(){return!a(\"z\").propertyIsEnumerable(0)}))?function(t){return\"String\"===i(t)?s(t,\"\"):a(t)}:a},3457:function(t,e,n){var o=n(9985),r=n(8999),i=n(9385);t.exports=function(t,e,n){var a,s;return i&&o(a=e.constructor)&&a!==n&&r(s=a.prototype)&&s!==n.prototype&&i(t,s),t}},6738:function(t,e,n){var o=n(8844),r=n(9985),i=n(4091),a=o(Function.toString);r(i.inspectSource)||(i.inspectSource=function(t){return a(t)}),t.exports=i.inspectSource},618:function(t,e,n){var o,r,i,a=n(9834),s=n(9037),u=n(8999),c=n(5773),l=n(6812),f=n(4091),d=n(2713),p=n(7248),h=\"Object already initialized\",v=s.TypeError,y=s.WeakMap;if(a||f.state){var g=f.state||(f.state=new y);g.get=g.get,g.has=g.has,g.set=g.set,o=function(t,e){if(g.has(t))throw new v(h);return e.facade=t,g.set(t,e),e},r=function(t){return g.get(t)||{}},i=function(t){return g.has(t)}}else{var m=d(\"state\");p[m]=!0,o=function(t,e){if(l(t,m))throw new v(h);return e.facade=t,c(t,m,e),e},r=function(t){return l(t,m)?t[m]:{}},i=function(t){return l(t,m)}}t.exports={set:o,get:r,has:i,enforce:function(t){return i(t)?r(t):o(t,{})},getterFor:function(t){return function(e){var n;if(!u(e)||(n=r(e)).type!==t)throw new v(\"Incompatible receiver, \"+t+\" required\");return n}}}},3292:function(t,e,n){var o=n(4201),r=n(9478),i=o(\"iterator\"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||a[i]===t)}},2297:function(t,e,n){var o=n(6648);t.exports=Array.isArray||function(t){return\"Array\"===o(t)}},9985:function(t){var e=\"object\"==typeof document&&document.all;t.exports=void 0===e&&void 0!==e?function(t){return\"function\"==typeof t||t===e}:function(t){return\"function\"==typeof t}},9429:function(t,e,n){var o=n(8844),r=n(3689),i=n(9985),a=n(926),s=n(6058),u=n(6738),c=function(){},l=s(\"Reflect\",\"construct\"),f=/^\\s*(?:class|function)\\b/,d=o(f.exec),p=!f.test(c),h=function(t){if(!i(t))return!1;try{return l(c,[],t),!0}catch(t){return!1}},v=function(t){if(!i(t))return!1;switch(a(t)){case\"AsyncFunction\":case\"GeneratorFunction\":case\"AsyncGeneratorFunction\":return!1}try{return p||!!d(f,u(t))}catch(t){return!0}};v.sham=!0,t.exports=!l||r((function(){var t;return h(h.call)||!h(Object)||!h((function(){t=!0}))||t}))?v:h},5266:function(t,e,n){var o=n(3689),r=n(9985),i=/#|\\.prototype\\./,a=function(t,e){var n=u[s(t)];return n===l||n!==c&&(r(e)?o(e):!!e)},s=a.normalize=function(t){return String(t).replace(i,\".\").toLowerCase()},u=a.data={},c=a.NATIVE=\"N\",l=a.POLYFILL=\"P\";t.exports=a},1973:function(t,e,n){var o=n(8999),r=Math.floor;t.exports=Number.isInteger||function(t){return!o(t)&&isFinite(t)&&r(t)===t}},981:function(t){t.exports=function(t){return null==t}},8999:function(t,e,n){var o=n(9985);t.exports=function(t){return\"object\"==typeof t?null!==t:o(t)}},598:function(t,e,n){var o=n(8999);t.exports=function(t){return o(t)||null===t}},3931:function(t){t.exports=!1},1245:function(t,e,n){var o=n(8999),r=n(6648),i=n(4201)(\"match\");t.exports=function(t){var e;return o(t)&&(void 0!==(e=t[i])?!!e:\"RegExp\"===r(t))}},734:function(t,e,n){var o=n(6058),r=n(9985),i=n(3622),a=n(9525),s=Object;t.exports=a?function(t){return\"symbol\"==typeof t}:function(t){var e=o(\"Symbol\");return r(e)&&i(e.prototype,s(t))}},2125:function(t,e,n){var o=n(2615),r=n(5027),i=n(4849);t.exports=function(t,e,n){var a,s;r(t);try{if(!(a=i(t,\"return\"))){if(\"throw\"===e)throw n;return n}a=o(a,t)}catch(t){s=!0,a=t}if(\"throw\"===e)throw n;if(s)throw a;return r(a),n}},974:function(t,e,n){var o=n(2013).IteratorPrototype,r=n(5391),i=n(5684),a=n(5997),s=n(9478),u=function(){return this};t.exports=function(t,e,n,c){var l=e+\" Iterator\";return t.prototype=r(o,{next:i(+!c,n)}),a(t,l,!1,!0),s[l]=u,t}},1934:function(t,e,n){var o=n(9989),r=n(2615),i=n(3931),a=n(1236),s=n(9985),u=n(974),c=n(1868),l=n(9385),f=n(5997),d=n(5773),p=n(1880),h=n(4201),v=n(9478),y=n(2013),g=a.PROPER,m=a.CONFIGURABLE,b=y.IteratorPrototype,x=y.BUGGY_SAFARI_ITERATORS,w=h(\"iterator\"),E=\"keys\",O=\"values\",S=\"entries\",k=function(){return this};t.exports=function(t,e,n,a,h,y,P){u(n,e,a);var I,C,A,M=function(t){if(t===h&&R)return R;if(!x&&t&&t in j)return j[t];switch(t){case E:case O:case S:return function(){return new n(this,t)}}return function(){return new n(this)}},T=e+\" Iterator\",D=!1,j=t.prototype,N=j[w]||j[\"@@iterator\"]||h&&j[h],R=!x&&N||M(h),L=\"Array\"===e&&j.entries||N;if(L&&(I=c(L.call(new t)))!==Object.prototype&&I.next&&(i||c(I)===b||(l?l(I,b):s(I[w])||p(I,w,k)),f(I,T,!0,!0),i&&(v[T]=k)),g&&h===O&&N&&N.name!==O&&(!i&&m?d(j,\"name\",O):(D=!0,R=function(){return r(N,this)})),h)if(C={values:M(O),keys:y?R:M(E),entries:M(S)},P)for(A in C)(x||D||!(A in j))&&p(j,A,C[A]);else o({target:e,proto:!0,forced:x||D},C);return i&&!P||j[w]===R||p(j,w,R,{name:h}),v[e]=R,C}},2013:function(t,e,n){var o,r,i,a=n(3689),s=n(9985),u=n(8999),c=n(5391),l=n(1868),f=n(1880),d=n(4201),p=n(3931),h=d(\"iterator\"),v=!1;[].keys&&(\"next\"in(i=[].keys())?(r=l(l(i)))!==Object.prototype&&(o=r):v=!0),!u(o)||a((function(){var t={};return o[h].call(t)!==t}))?o={}:p&&(o=c(o)),s(o[h])||f(o,h,(function(){return this})),t.exports={IteratorPrototype:o,BUGGY_SAFARI_ITERATORS:v}},9478:function(t){t.exports={}},6310:function(t,e,n){var o=n(3126);t.exports=function(t){return o(t.length)}},8702:function(t,e,n){var o=n(8844),r=n(3689),i=n(9985),a=n(6812),s=n(7697),u=n(1236).CONFIGURABLE,c=n(6738),l=n(618),f=l.enforce,d=l.get,p=String,h=Object.defineProperty,v=o(\"\".slice),y=o(\"\".replace),g=o([].join),m=s&&!r((function(){return 8!==h((function(){}),\"length\",{value:8}).length})),b=String(String).split(\"String\"),x=t.exports=function(t,e,n){\"Symbol(\"===v(p(e),0,7)&&(e=\"[\"+y(p(e),/^Symbol\\(([^)]*)\\).*$/,\"$1\")+\"]\"),n&&n.getter&&(e=\"get \"+e),n&&n.setter&&(e=\"set \"+e),(!a(t,\"name\")||u&&t.name!==e)&&(s?h(t,\"name\",{value:e,configurable:!0}):t.name=e),m&&n&&a(n,\"arity\")&&t.length!==n.arity&&h(t,\"length\",{value:n.arity});try{n&&a(n,\"constructor\")&&n.constructor?s&&h(t,\"prototype\",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var o=f(t);return a(o,\"source\")||(o.source=g(b,\"string\"==typeof e?e:\"\")),t};Function.prototype.toString=x((function(){return i(this)&&d(this).source||c(this)}),\"toString\")},8828:function(t){var e=Math.ceil,n=Math.floor;t.exports=Math.trunc||function(t){var o=+t;return(o>0?n:e)(o)}},2124:function(t,e,n){var o=n(1245),r=TypeError;t.exports=function(t){if(o(t))throw new r(\"The method doesn't accept regular expressions\");return t}},5394:function(t,e,n){var o=n(7697),r=n(8844),i=n(2615),a=n(3689),s=n(300),u=n(7518),c=n(9556),l=n(690),f=n(4413),d=Object.assign,p=Object.defineProperty,h=r([].concat);t.exports=!d||a((function(){if(o&&1!==d({b:1},d(p({},\"a\",{enumerable:!0,get:function(){p(this,\"b\",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol(\"assign detection\"),r=\"abcdefghijklmnopqrst\";return t[n]=7,r.split(\"\").forEach((function(t){e[t]=t})),7!==d({},t)[n]||s(d({},e)).join(\"\")!==r}))?function(t,e){for(var n=l(t),r=arguments.length,a=1,d=u.f,p=c.f;r>a;)for(var v,y=f(arguments[a++]),g=d?h(s(y),d(y)):s(y),m=g.length,b=0;m>b;)v=g[b++],o&&!i(p,y,v)||(n[v]=y[v]);return n}:d},5391:function(t,e,n){var o,r=n(5027),i=n(8920),a=n(2739),s=n(7248),u=n(2688),c=n(6420),l=n(2713),f=\"prototype\",d=\"script\",p=l(\"IE_PROTO\"),h=function(){},v=function(t){return\"<\"+d+\">\"+t+\"</\"+d+\">\"},y=function(t){t.write(v(\"\")),t.close();var e=t.parentWindow.Object;return t=null,e},g=function(){try{o=new ActiveXObject(\"htmlfile\")}catch(t){}var t,e,n;g=\"undefined\"!=typeof document?document.domain&&o?y(o):(e=c(\"iframe\"),n=\"java\"+d+\":\",e.style.display=\"none\",u.appendChild(e),e.src=String(n),(t=e.contentWindow.document).open(),t.write(v(\"document.F=Object\")),t.close(),t.F):y(o);for(var r=a.length;r--;)delete g[f][a[r]];return g()};s[p]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(h[f]=r(t),n=new h,h[f]=null,n[p]=t):n=g(),void 0===e?n:i.f(n,e)}},8920:function(t,e,n){var o=n(7697),r=n(5648),i=n(2560),a=n(5027),s=n(5290),u=n(300);e.f=o&&!r?Object.defineProperties:function(t,e){a(t);for(var n,o=s(e),r=u(e),c=r.length,l=0;c>l;)i.f(t,n=r[l++],o[n]);return t}},2560:function(t,e,n){var o=n(7697),r=n(8506),i=n(5648),a=n(5027),s=n(8360),u=TypeError,c=Object.defineProperty,l=Object.getOwnPropertyDescriptor,f=\"enumerable\",d=\"configurable\",p=\"writable\";e.f=o?i?function(t,e,n){if(a(t),e=s(e),a(n),\"function\"==typeof t&&\"prototype\"===e&&\"value\"in n&&p in n&&!n[p]){var o=l(t,e);o&&o[p]&&(t[e]=n.value,n={configurable:d in n?n[d]:o[d],enumerable:f in n?n[f]:o[f],writable:!1})}return c(t,e,n)}:c:function(t,e,n){if(a(t),e=s(e),a(n),r)try{return c(t,e,n)}catch(t){}if(\"get\"in n||\"set\"in n)throw new u(\"Accessors not supported\");return\"value\"in n&&(t[e]=n.value),t}},2474:function(t,e,n){var o=n(7697),r=n(2615),i=n(9556),a=n(5684),s=n(5290),u=n(8360),c=n(6812),l=n(8506),f=Object.getOwnPropertyDescriptor;e.f=o?f:function(t,e){if(t=s(t),e=u(e),l)try{return f(t,e)}catch(t){}if(c(t,e))return a(!r(i.f,t,e),t[e])}},6062:function(t,e,n){var o=n(6648),r=n(5290),i=n(2741).f,a=n(6004),s=\"object\"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return s&&\"Window\"===o(t)?function(t){try{return i(t)}catch(t){return a(s)}}(t):i(r(t))}},2741:function(t,e,n){var o=n(4948),r=n(2739).concat(\"length\",\"prototype\");e.f=Object.getOwnPropertyNames||function(t){return o(t,r)}},7518:function(t,e){e.f=Object.getOwnPropertySymbols},1868:function(t,e,n){var o=n(6812),r=n(9985),i=n(690),a=n(2713),s=n(1748),u=a(\"IE_PROTO\"),c=Object,l=c.prototype;t.exports=s?c.getPrototypeOf:function(t){var e=i(t);if(o(e,u))return e[u];var n=e.constructor;return r(n)&&e instanceof n?n.prototype:e instanceof c?l:null}},3622:function(t,e,n){var o=n(8844);t.exports=o({}.isPrototypeOf)},4948:function(t,e,n){var o=n(8844),r=n(6812),i=n(5290),a=n(4328).indexOf,s=n(7248),u=o([].push);t.exports=function(t,e){var n,o=i(t),c=0,l=[];for(n in o)!r(s,n)&&r(o,n)&&u(l,n);for(;e.length>c;)r(o,n=e[c++])&&(~a(l,n)||u(l,n));return l}},300:function(t,e,n){var o=n(4948),r=n(2739);t.exports=Object.keys||function(t){return o(t,r)}},9556:function(t,e){var n={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,r=o&&!n.call({1:2},1);e.f=r?function(t){var e=o(this,t);return!!e&&e.enumerable}:n},600:function(t,e,n){var o=n(3931),r=n(9037),i=n(3689),a=n(7922);t.exports=o||!i((function(){if(!(a&&a<535)){var t=Math.random();__defineSetter__.call(null,t,(function(){})),delete r[t]}}))},9385:function(t,e,n){var o=n(2743),r=n(5027),i=n(3550);t.exports=Object.setPrototypeOf||(\"__proto__\"in{}?function(){var t,e=!1,n={};try{(t=o(Object.prototype,\"__proto__\",\"set\"))(n,[]),e=n instanceof Array}catch(t){}return function(n,o){return r(n),i(o),e?t(n,o):n.__proto__=o,n}}():void 0)},5073:function(t,e,n){var o=n(3043),r=n(926);t.exports=o?{}.toString:function(){return\"[object \"+r(this)+\"]\"}},5899:function(t,e,n){var o=n(2615),r=n(9985),i=n(8999),a=TypeError;t.exports=function(t,e){var n,s;if(\"string\"===e&&r(n=t.toString)&&!i(s=o(n,t)))return s;if(r(n=t.valueOf)&&!i(s=o(n,t)))return s;if(\"string\"!==e&&r(n=t.toString)&&!i(s=o(n,t)))return s;throw new a(\"Can't convert object to primitive value\")}},9152:function(t,e,n){var o=n(6058),r=n(8844),i=n(2741),a=n(7518),s=n(5027),u=r([].concat);t.exports=o(\"Reflect\",\"ownKeys\")||function(t){var e=i.f(s(t)),n=a.f;return n?u(e,n(t)):e}},496:function(t,e,n){var o=n(9037);t.exports=o},8055:function(t,e,n){var o=n(2560).f;t.exports=function(t,e,n){n in t||o(t,n,{configurable:!0,get:function(){return e[n]},set:function(t){e[n]=t}})}},6100:function(t,e,n){var o=n(2615),r=n(5027),i=n(9985),a=n(6648),s=n(6308),u=TypeError;t.exports=function(t,e){var n=t.exec;if(i(n)){var c=o(n,t,e);return null!==c&&r(c),c}if(\"RegExp\"===a(t))return o(s,t,e);throw new u(\"RegExp#exec called on incompatible receiver\")}},6308:function(t,e,n){var o,r,i=n(2615),a=n(8844),s=n(4327),u=n(9633),c=n(7901),l=n(3430),f=n(5391),d=n(618).get,p=n(2100),h=n(6422),v=l(\"native-string-replace\",String.prototype.replace),y=RegExp.prototype.exec,g=y,m=a(\"\".charAt),b=a(\"\".indexOf),x=a(\"\".replace),w=a(\"\".slice),E=(r=/b*/g,i(y,o=/a/,\"a\"),i(y,r,\"a\"),0!==o.lastIndex||0!==r.lastIndex),O=c.BROKEN_CARET,S=void 0!==/()??/.exec(\"\")[1];(E||S||O||p||h)&&(g=function(t){var e,n,o,r,a,c,l,p=this,h=d(p),k=s(t),P=h.raw;if(P)return P.lastIndex=p.lastIndex,e=i(g,P,k),p.lastIndex=P.lastIndex,e;var I=h.groups,C=O&&p.sticky,A=i(u,p),M=p.source,T=0,D=k;if(C&&(A=x(A,\"y\",\"\"),-1===b(A,\"g\")&&(A+=\"g\"),D=w(k,p.lastIndex),p.lastIndex>0&&(!p.multiline||p.multiline&&\"\\n\"!==m(k,p.lastIndex-1))&&(M=\"(?: \"+M+\")\",D=\" \"+D,T++),n=new RegExp(\"^(?:\"+M+\")\",A)),S&&(n=new RegExp(\"^\"+M+\"$(?!\\\\s)\",A)),E&&(o=p.lastIndex),r=i(y,C?n:p,D),C?r?(r.input=w(r.input,T),r[0]=w(r[0],T),r.index=p.lastIndex,p.lastIndex+=r[0].length):p.lastIndex=0:E&&r&&(p.lastIndex=p.global?r.index+r[0].length:o),S&&r&&r.length>1&&i(v,r[0],n,(function(){for(a=1;a<arguments.length-2;a++)void 0===arguments[a]&&(r[a]=void 0)})),r&&I)for(r.groups=c=f(null),a=0;a<I.length;a++)c[(l=I[a])[0]]=r[l[1]];return r}),t.exports=g},9633:function(t,e,n){var o=n(5027);t.exports=function(){var t=o(this),e=\"\";return t.hasIndices&&(e+=\"d\"),t.global&&(e+=\"g\"),t.ignoreCase&&(e+=\"i\"),t.multiline&&(e+=\"m\"),t.dotAll&&(e+=\"s\"),t.unicode&&(e+=\"u\"),t.unicodeSets&&(e+=\"v\"),t.sticky&&(e+=\"y\"),e}},3477:function(t,e,n){var o=n(2615),r=n(6812),i=n(3622),a=n(9633),s=RegExp.prototype;t.exports=function(t){var e=t.flags;return void 0!==e||\"flags\"in s||r(t,\"flags\")||!i(s,t)?e:o(a,t)}},7901:function(t,e,n){var o=n(3689),r=n(9037).RegExp,i=o((function(){var t=r(\"a\",\"y\");return t.lastIndex=2,null!==t.exec(\"abcd\")})),a=i||o((function(){return!r(\"a\",\"y\").sticky})),s=i||o((function(){var t=r(\"^r\",\"gy\");return t.lastIndex=2,null!==t.exec(\"str\")}));t.exports={BROKEN_CARET:s,MISSED_STICKY:a,UNSUPPORTED_Y:i}},2100:function(t,e,n){var o=n(3689),r=n(9037).RegExp;t.exports=o((function(){var t=r(\".\",\"s\");return!(t.dotAll&&t.test(\"\\n\")&&\"s\"===t.flags)}))},6422:function(t,e,n){var o=n(3689),r=n(9037).RegExp;t.exports=o((function(){var t=r(\"(?<a>b)\",\"g\");return\"b\"!==t.exec(\"b\").groups.a||\"bc\"!==\"b\".replace(t,\"$<a>c\")}))},4684:function(t,e,n){var o=n(981),r=TypeError;t.exports=function(t){if(o(t))throw new r(\"Can't call method on \"+t);return t}},4241:function(t,e,n){var o=n(6058),r=n(2148),i=n(4201),a=n(7697),s=i(\"species\");t.exports=function(t){var e=o(t);a&&e&&!e[s]&&r(e,s,{configurable:!0,get:function(){return this}})}},5997:function(t,e,n){var o=n(2560).f,r=n(6812),i=n(4201)(\"toStringTag\");t.exports=function(t,e,n){t&&!n&&(t=t.prototype),t&&!r(t,i)&&o(t,i,{configurable:!0,value:e})}},2713:function(t,e,n){var o=n(3430),r=n(4630),i=o(\"keys\");t.exports=function(t){return i[t]||(i[t]=r(t))}},4091:function(t,e,n){var o=n(9037),r=n(5014),i=\"__core-js_shared__\",a=o[i]||r(i,{});t.exports=a},3430:function(t,e,n){var o=n(3931),r=n(4091);(t.exports=function(t,e){return r[t]||(r[t]=void 0!==e?e:{})})(\"versions\",[]).push({version:\"3.35.1\",mode:o?\"pure\":\"global\",copyright:\"© 2014-2024 Denis Pushkarev (zloirock.ru)\",license:\"https://github.com/zloirock/core-js/blob/v3.35.1/LICENSE\",source:\"https://github.com/zloirock/core-js\"})},6373:function(t,e,n){var o=n(5027),r=n(2655),i=n(981),a=n(4201)(\"species\");t.exports=function(t,e){var n,s=o(t).constructor;return void 0===s||i(n=o(s)[a])?e:r(n)}},730:function(t,e,n){var o=n(8844),r=n(8700),i=n(4327),a=n(4684),s=o(\"\".charAt),u=o(\"\".charCodeAt),c=o(\"\".slice),l=function(t){return function(e,n){var o,l,f=i(a(e)),d=r(n),p=f.length;return d<0||d>=p?t?\"\":void 0:(o=u(f,d))<55296||o>56319||d+1===p||(l=u(f,d+1))<56320||l>57343?t?s(f,d):o:t?c(f,d,d+2):l-56320+(o-55296<<10)+65536}};t.exports={codeAt:l(!1),charAt:l(!0)}},5984:function(t,e,n){var o=n(1236).PROPER,r=n(3689),i=n(6350);t.exports=function(t){return r((function(){return!!i[t]()||\"​…᠎\"!==\"​…᠎\"[t]()||o&&i[t].name!==t}))}},1435:function(t,e,n){var o=n(8844),r=n(4684),i=n(4327),a=n(6350),s=o(\"\".replace),u=RegExp(\"^[\"+a+\"]+\"),c=RegExp(\"(^|[^\"+a+\"])[\"+a+\"]+$\"),l=function(t){return function(e){var n=i(r(e));return 1&t&&(n=s(n,u,\"\")),2&t&&(n=s(n,c,\"$1\")),n}};t.exports={start:l(1),end:l(2),trim:l(3)}},146:function(t,e,n){var o=n(3615),r=n(3689),i=n(9037).String;t.exports=!!Object.getOwnPropertySymbols&&!r((function(){var t=Symbol(\"symbol detection\");return!i(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&o&&o<41}))},3032:function(t,e,n){var o=n(2615),r=n(6058),i=n(4201),a=n(1880);t.exports=function(){var t=r(\"Symbol\"),e=t&&t.prototype,n=e&&e.valueOf,s=i(\"toPrimitive\");e&&!e[s]&&a(e,s,(function(t){return o(n,this)}),{arity:1})}},6549:function(t,e,n){var o=n(146);t.exports=o&&!!Symbol.for&&!!Symbol.keyFor},3648:function(t,e,n){var o=n(8844);t.exports=o(1..valueOf)},7578:function(t,e,n){var o=n(8700),r=Math.max,i=Math.min;t.exports=function(t,e){var n=o(t);return n<0?r(n+e,0):i(n,e)}},5290:function(t,e,n){var o=n(4413),r=n(4684);t.exports=function(t){return o(r(t))}},8700:function(t,e,n){var o=n(8828);t.exports=function(t){var e=+t;return e!=e||0===e?0:o(e)}},3126:function(t,e,n){var o=n(8700),r=Math.min;t.exports=function(t){var e=o(t);return e>0?r(e,9007199254740991):0}},690:function(t,e,n){var o=n(4684),r=Object;t.exports=function(t){return r(o(t))}},8732:function(t,e,n){var o=n(2615),r=n(8999),i=n(734),a=n(4849),s=n(5899),u=n(4201),c=TypeError,l=u(\"toPrimitive\");t.exports=function(t,e){if(!r(t)||i(t))return t;var n,u=a(t,l);if(u){if(void 0===e&&(e=\"default\"),n=o(u,t,e),!r(n)||i(n))return n;throw new c(\"Can't convert object to primitive value\")}return void 0===e&&(e=\"number\"),s(t,e)}},8360:function(t,e,n){var o=n(8732),r=n(734);t.exports=function(t){var e=o(t,\"string\");return r(e)?e:e+\"\"}},3043:function(t,e,n){var o={};o[n(4201)(\"toStringTag\")]=\"z\",t.exports=\"[object z]\"===String(o)},4327:function(t,e,n){var o=n(926),r=String;t.exports=function(t){if(\"Symbol\"===o(t))throw new TypeError(\"Cannot convert a Symbol value to a string\");return r(t)}},3691:function(t){var e=String;t.exports=function(t){try{return e(t)}catch(t){return\"Object\"}}},4630:function(t,e,n){var o=n(8844),r=0,i=Math.random(),a=o(1..toString);t.exports=function(t){return\"Symbol(\"+(void 0===t?\"\":t)+\")_\"+a(++r+i,36)}},9525:function(t,e,n){var o=n(146);t.exports=o&&!Symbol.sham&&\"symbol\"==typeof Symbol.iterator},5648:function(t,e,n){var o=n(7697),r=n(3689);t.exports=o&&r((function(){return 42!==Object.defineProperty((function(){}),\"prototype\",{value:42,writable:!1}).prototype}))},9834:function(t,e,n){var o=n(9037),r=n(9985),i=o.WeakMap;t.exports=r(i)&&/native code/.test(String(i))},5405:function(t,e,n){var o=n(496),r=n(6812),i=n(6145),a=n(2560).f;t.exports=function(t){var e=o.Symbol||(o.Symbol={});r(e,t)||a(e,t,{value:i.f(t)})}},6145:function(t,e,n){var o=n(4201);e.f=o},4201:function(t,e,n){var o=n(9037),r=n(3430),i=n(6812),a=n(4630),s=n(146),u=n(9525),c=o.Symbol,l=r(\"wks\"),f=u?c.for||c:c&&c.withoutSetter||a;t.exports=function(t){return i(l,t)||(l[t]=s&&i(c,t)?c[t]:f(\"Symbol.\"+t)),l[t]}},6350:function(t){t.exports=\"\\t\\n\\v\\f\\r                 \\u2028\\u2029\\ufeff\"},4338:function(t,e,n){var o=n(9989),r=n(3689),i=n(2297),a=n(8999),s=n(690),u=n(6310),c=n(5565),l=n(6522),f=n(7120),d=n(9042),p=n(4201),h=n(3615),v=p(\"isConcatSpreadable\"),y=h>=51||!r((function(){var t=[];return t[v]=!1,t.concat()[0]!==t})),g=function(t){if(!a(t))return!1;var e=t[v];return void 0!==e?!!e:i(t)};o({target:\"Array\",proto:!0,arity:1,forced:!y||!d(\"concat\")},{concat:function(t){var e,n,o,r,i,a=s(this),d=f(a,0),p=0;for(e=-1,o=arguments.length;e<o;e++)if(g(i=-1===e?a:arguments[e]))for(r=u(i),c(p+r),n=0;n<r;n++,p++)n in i&&l(d,p,i[n]);else c(p+1),l(d,p++,i);return d.length=p,d}})},8077:function(t,e,n){var o=n(9989),r=n(2960).filter;o({target:\"Array\",proto:!0,forced:!n(9042)(\"filter\")},{filter:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}})},7049:function(t,e,n){var o=n(9989),r=n(1055);o({target:\"Array\",stat:!0,forced:!n(6431)((function(t){Array.from(t)}))},{from:r})},6801:function(t,e,n){var o=n(9989),r=n(4328).includes,i=n(3689),a=n(7370);o({target:\"Array\",proto:!0,forced:i((function(){return!Array(1).includes()}))},{includes:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),a(\"includes\")},7195:function(t,e,n){var o=n(9989),r=n(6576),i=n(4328).indexOf,a=n(6834),s=r([].indexOf),u=!!s&&1/s([1],1,-0)<0;o({target:\"Array\",proto:!0,forced:u||!a(\"indexOf\")},{indexOf:function(t){var e=arguments.length>1?arguments[1]:void 0;return u?s(this,t,e)||0:i(this,t,e)}})},752:function(t,e,n){var o=n(5290),r=n(7370),i=n(9478),a=n(618),s=n(2560).f,u=n(1934),c=n(7807),l=n(3931),f=n(7697),d=\"Array Iterator\",p=a.set,h=a.getterFor(d);t.exports=u(Array,\"Array\",(function(t,e){p(this,{type:d,target:o(t),index:0,kind:e})}),(function(){var t=h(this),e=t.target,n=t.index++;if(!e||n>=e.length)return t.target=void 0,c(void 0,!0);switch(t.kind){case\"keys\":return c(n,!1);case\"values\":return c(e[n],!1)}return c([n,e[n]],!1)}),\"values\");var v=i.Arguments=i.Array;if(r(\"keys\"),r(\"values\"),r(\"entries\"),!l&&f&&\"values\"!==v.name)try{s(v,\"name\",{value:\"values\"})}catch(t){}},6203:function(t,e,n){var o=n(9989),r=n(8844),i=n(4413),a=n(5290),s=n(6834),u=r([].join);o({target:\"Array\",proto:!0,forced:i!==Object||!s(\"join\",\",\")},{join:function(t){return u(a(this),void 0===t?\",\":t)}})},886:function(t,e,n){var o=n(9989),r=n(2960).map;o({target:\"Array\",proto:!0,forced:!n(9042)(\"map\")},{map:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}})},278:function(t,e,n){var o=n(9989),r=n(8820).left,i=n(6834),a=n(3615);o({target:\"Array\",proto:!0,forced:!n(806)&&a>79&&a<83||!i(\"reduce\")},{reduce:function(t){var e=arguments.length;return r(this,t,e,e>1?arguments[1]:void 0)}})},9730:function(t,e,n){var o=n(9989),r=n(2297),i=n(9429),a=n(8999),s=n(7578),u=n(6310),c=n(5290),l=n(6522),f=n(4201),d=n(9042),p=n(6004),h=d(\"slice\"),v=f(\"species\"),y=Array,g=Math.max;o({target:\"Array\",proto:!0,forced:!h},{slice:function(t,e){var n,o,f,d=c(this),h=u(d),m=s(t,h),b=s(void 0===e?h:e,h);if(r(d)&&(n=d.constructor,(i(n)&&(n===y||r(n.prototype))||a(n)&&null===(n=n[v]))&&(n=void 0),n===y||void 0===n))return p(d,m,b);for(o=new(void 0===n?y:n)(g(b-m,0)),f=0;m<b;m++,f++)m in d&&l(o,f,d[m]);return o.length=f,o}})},5137:function(t,e,n){var o=n(9989),r=n(8844),i=n(509),a=n(690),s=n(6310),u=n(8494),c=n(4327),l=n(3689),f=n(382),d=n(6834),p=n(7365),h=n(7298),v=n(3615),y=n(7922),g=[],m=r(g.sort),b=r(g.push),x=l((function(){g.sort(void 0)})),w=l((function(){g.sort(null)})),E=d(\"sort\"),O=!l((function(){if(v)return v<70;if(!(p&&p>3)){if(h)return!0;if(y)return y<603;var t,e,n,o,r=\"\";for(t=65;t<76;t++){switch(e=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(o=0;o<47;o++)g.push({k:e+o,v:n})}for(g.sort((function(t,e){return e.v-t.v})),o=0;o<g.length;o++)e=g[o].k.charAt(0),r.charAt(r.length-1)!==e&&(r+=e);return\"DGBEFHACIJK\"!==r}}));o({target:\"Array\",proto:!0,forced:x||!w||!E||!O},{sort:function(t){void 0!==t&&i(t);var e=a(this);if(O)return void 0===t?m(e):m(e,t);var n,o,r=[],l=s(e);for(o=0;o<l;o++)o in e&&b(r,e[o]);for(f(r,function(t){return function(e,n){return void 0===n?-1:void 0===e?1:void 0!==t?+t(e,n)||0:c(e)>c(n)?1:-1}}(t)),n=s(r),o=0;o<n;)e[o]=r[o++];for(;o<l;)u(e,o++);return e}})},2506:function(t,e,n){var o=n(9989),r=n(690),i=n(7578),a=n(8700),s=n(6310),u=n(5649),c=n(5565),l=n(7120),f=n(6522),d=n(8494),p=n(9042)(\"splice\"),h=Math.max,v=Math.min;o({target:\"Array\",proto:!0,forced:!p},{splice:function(t,e){var n,o,p,y,g,m,b=r(this),x=s(b),w=i(t,x),E=arguments.length;for(0===E?n=o=0:1===E?(n=0,o=x-w):(n=E-2,o=v(h(a(e),0),x-w)),c(x+n-o),p=l(b,o),y=0;y<o;y++)(g=w+y)in b&&f(p,y,b[g]);if(p.length=o,n<o){for(y=w;y<x-o;y++)m=y+n,(g=y+o)in b?b[m]=b[g]:d(b,m);for(y=x;y>x-o+n;y--)d(b,y-1)}else if(n>o)for(y=x-o;y>w;y--)m=y+n-1,(g=y+o-1)in b?b[m]=b[g]:d(b,m);for(y=0;y<n;y++)b[y+w]=arguments[y+2];return u(b,x-o+n),p}})},9903:function(t,e,n){var o=n(6812),r=n(1880),i=n(1797),a=n(4201)(\"toPrimitive\"),s=Date.prototype;o(s,a)||r(s,a,i)},4284:function(t,e,n){var o=n(7697),r=n(1236).EXISTS,i=n(8844),a=n(2148),s=Function.prototype,u=i(s.toString),c=/function\\b(?:\\s|\\/\\*[\\S\\s]*?\\*\\/|\\/\\/[^\\n\\r]*[\\n\\r]+)*([^\\s(/]*)/,l=i(c.exec);o&&!r&&a(s,\"name\",{configurable:!0,get:function(){try{return l(c,u(this))[1]}catch(t){return\"\"}}})},8324:function(t,e,n){var o=n(9989),r=n(6058),i=n(1735),a=n(2615),s=n(8844),u=n(3689),c=n(9985),l=n(734),f=n(6004),d=n(2643),p=n(146),h=String,v=r(\"JSON\",\"stringify\"),y=s(/./.exec),g=s(\"\".charAt),m=s(\"\".charCodeAt),b=s(\"\".replace),x=s(1..toString),w=/[\\uD800-\\uDFFF]/g,E=/^[\\uD800-\\uDBFF]$/,O=/^[\\uDC00-\\uDFFF]$/,S=!p||u((function(){var t=r(\"Symbol\")(\"stringify detection\");return\"[null]\"!==v([t])||\"{}\"!==v({a:t})||\"{}\"!==v(Object(t))})),k=u((function(){return'\"\\\\udf06\\\\ud834\"'!==v(\"\\udf06\\ud834\")||'\"\\\\udead\"'!==v(\"\\udead\")})),P=function(t,e){var n=f(arguments),o=d(e);if(c(o)||void 0!==t&&!l(t))return n[1]=function(t,e){if(c(o)&&(e=a(o,this,h(t),e)),!l(e))return e},i(v,null,n)},I=function(t,e,n){var o=g(n,e-1),r=g(n,e+1);return y(E,t)&&!y(O,r)||y(O,t)&&!y(E,o)?\"\\\\u\"+x(m(t,0),16):t};v&&o({target:\"JSON\",stat:!0,arity:3,forced:S||k},{stringify:function(t,e,n){var o=f(arguments),r=i(S?P:v,null,o);return k&&\"string\"==typeof r?b(r,w,I):r}})},9288:function(t,e,n){var o=n(9989),r=n(3931),i=n(7697),a=n(9037),s=n(496),u=n(8844),c=n(5266),l=n(6812),f=n(3457),d=n(3622),p=n(734),h=n(8732),v=n(3689),y=n(2741).f,g=n(2474).f,m=n(2560).f,b=n(3648),x=n(1435).trim,w=\"Number\",E=a[w],O=s[w],S=E.prototype,k=a.TypeError,P=u(\"\".slice),I=u(\"\".charCodeAt),C=function(t){var e,n,o,r,i,a,s,u,c=h(t,\"number\");if(p(c))throw new k(\"Cannot convert a Symbol value to a number\");if(\"string\"==typeof c&&c.length>2)if(c=x(c),43===(e=I(c,0))||45===e){if(88===(n=I(c,2))||120===n)return NaN}else if(48===e){switch(I(c,1)){case 66:case 98:o=2,r=49;break;case 79:case 111:o=8,r=55;break;default:return+c}for(a=(i=P(c,2)).length,s=0;s<a;s++)if((u=I(i,s))<48||u>r)return NaN;return parseInt(i,o)}return+c},A=c(w,!E(\" 0o1\")||!E(\"0b1\")||E(\"+0x1\")),M=function(t){var e,n=arguments.length<1?0:E(function(t){var e=h(t,\"number\");return\"bigint\"==typeof e?e:C(e)}(t));return d(S,e=this)&&v((function(){b(e)}))?f(Object(n),this,M):n};M.prototype=S,A&&!r&&(S.constructor=M),o({global:!0,constructor:!0,wrap:!0,forced:A},{Number:M});var T=function(t,e){for(var n,o=i?y(e):\"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range\".split(\",\"),r=0;o.length>r;r++)l(e,n=o[r])&&!l(t,n)&&m(t,n,g(e,n))};r&&O&&T(s[w],O),(A||r)&&T(s[w],E)},5765:function(t,e,n){n(9989)({target:\"Number\",stat:!0},{isInteger:n(1973)})},429:function(t,e,n){var o=n(9989),r=n(5394);o({target:\"Object\",stat:!0,arity:2,forced:Object.assign!==r},{assign:r})},3994:function(t,e,n){var o=n(9989),r=n(7697),i=n(600),a=n(509),s=n(690),u=n(2560);r&&o({target:\"Object\",proto:!0,forced:i},{__defineGetter__:function(t,e){u.f(s(this),t,{get:a(e),enumerable:!0,configurable:!0})}})},1919:function(t,e,n){var o=n(9989),r=n(3689),i=n(5290),a=n(2474).f,s=n(7697);o({target:\"Object\",stat:!0,forced:!s||r((function(){a(1)})),sham:!s},{getOwnPropertyDescriptor:function(t,e){return a(i(t),e)}})},9474:function(t,e,n){var o=n(9989),r=n(7697),i=n(9152),a=n(5290),s=n(2474),u=n(6522);o({target:\"Object\",stat:!0,sham:!r},{getOwnPropertyDescriptors:function(t){for(var e,n,o=a(t),r=s.f,c=i(o),l={},f=0;c.length>f;)void 0!==(n=r(o,e=c[f++]))&&u(l,e,n);return l}})},9997:function(t,e,n){var o=n(9989),r=n(3689),i=n(6062).f;o({target:\"Object\",stat:!0,forced:r((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:i})},9434:function(t,e,n){var o=n(9989),r=n(146),i=n(3689),a=n(7518),s=n(690);o({target:\"Object\",stat:!0,forced:!r||i((function(){a.f(1)}))},{getOwnPropertySymbols:function(t){var e=a.f;return e?e(s(t)):[]}})},9358:function(t,e,n){var o=n(9989),r=n(690),i=n(300);o({target:\"Object\",stat:!0,forced:n(3689)((function(){i(1)}))},{keys:function(t){return i(r(t))}})},228:function(t,e,n){var o=n(3043),r=n(1880),i=n(5073);o||r(Object.prototype,\"toString\",i,{unsafe:!0})},2003:function(t,e,n){var o=n(7697),r=n(9037),i=n(8844),a=n(5266),s=n(3457),u=n(5773),c=n(5391),l=n(2741).f,f=n(3622),d=n(1245),p=n(4327),h=n(3477),v=n(7901),y=n(8055),g=n(1880),m=n(3689),b=n(6812),x=n(618).enforce,w=n(4241),E=n(4201),O=n(2100),S=n(6422),k=E(\"match\"),P=r.RegExp,I=P.prototype,C=r.SyntaxError,A=i(I.exec),M=i(\"\".charAt),T=i(\"\".replace),D=i(\"\".indexOf),j=i(\"\".slice),N=/^\\?<[^\\s\\d!#%&*+<=>@^][^\\s!#%&*+<=>@^]*>/,R=/a/g,L=/a/g,B=new P(R)!==R,K=v.MISSED_STICKY,F=v.UNSUPPORTED_Y,_=o&&(!B||K||O||S||m((function(){return L[k]=!1,P(R)!==R||P(L)===L||\"/a/i\"!==String(P(R,\"i\"))})));if(a(\"RegExp\",_)){for(var H=function(t,e){var n,o,r,i,a,l,v=f(I,this),y=d(t),g=void 0===e,m=[],w=t;if(!v&&y&&g&&t.constructor===H)return t;if((y||f(I,t))&&(t=t.source,g&&(e=h(w))),t=void 0===t?\"\":p(t),e=void 0===e?\"\":p(e),w=t,O&&\"dotAll\"in R&&(o=!!e&&D(e,\"s\")>-1)&&(e=T(e,/s/g,\"\")),n=e,K&&\"sticky\"in R&&(r=!!e&&D(e,\"y\")>-1)&&F&&(e=T(e,/y/g,\"\")),S&&(i=function(t){for(var e,n=t.length,o=0,r=\"\",i=[],a=c(null),s=!1,u=!1,l=0,f=\"\";o<=n;o++){if(\"\\\\\"===(e=M(t,o)))e+=M(t,++o);else if(\"]\"===e)s=!1;else if(!s)switch(!0){case\"[\"===e:s=!0;break;case\"(\"===e:A(N,j(t,o+1))&&(o+=2,u=!0),r+=e,l++;continue;case\">\"===e&&u:if(\"\"===f||b(a,f))throw new C(\"Invalid capture group name\");a[f]=!0,i[i.length]=[f,l],u=!1,f=\"\";continue}u?f+=e:r+=e}return[r,i]}(t),t=i[0],m=i[1]),a=s(P(t,e),v?this:I,H),(o||r||m.length)&&(l=x(a),o&&(l.dotAll=!0,l.raw=H(function(t){for(var e,n=t.length,o=0,r=\"\",i=!1;o<=n;o++)\"\\\\\"!==(e=M(t,o))?i||\".\"!==e?(\"[\"===e?i=!0:\"]\"===e&&(i=!1),r+=e):r+=\"[\\\\s\\\\S]\":r+=e+M(t,++o);return r}(t),n)),r&&(l.sticky=!0),m.length&&(l.groups=m)),t!==w)try{u(a,\"source\",\"\"===w?\"(?:)\":w)}catch(t){}return a},U=l(P),$=0;U.length>$;)y(H,P,U[$++]);I.constructor=H,H.prototype=I,g(r,\"RegExp\",H,{constructor:!0})}w(\"RegExp\")},4043:function(t,e,n){var o=n(9989),r=n(6308);o({target:\"RegExp\",proto:!0,forced:/./.exec!==r},{exec:r})},2826:function(t,e,n){var o=n(1236).PROPER,r=n(1880),i=n(5027),a=n(4327),s=n(3689),u=n(3477),c=\"toString\",l=RegExp.prototype,f=l[c],d=s((function(){return\"/a/b\"!==f.call({source:\"a\",flags:\"b\"})})),p=o&&f.name!==c;(d||p)&&r(l,c,(function(){var t=i(this);return\"/\"+a(t.source)+\"/\"+a(u(t))}),{unsafe:!0})},3843:function(t,e,n){var o=n(9989),r=n(8844),i=n(2124),a=n(4684),s=n(4327),u=n(7413),c=r(\"\".indexOf);o({target:\"String\",proto:!0,forced:!u(\"includes\")},{includes:function(t){return!!~c(s(a(this)),s(i(t)),arguments.length>1?arguments[1]:void 0)}})},1694:function(t,e,n){var o=n(730).charAt,r=n(4327),i=n(618),a=n(1934),s=n(7807),u=\"String Iterator\",c=i.set,l=i.getterFor(u);a(String,\"String\",(function(t){c(this,{type:u,string:r(t),index:0})}),(function(){var t,e=l(this),n=e.string,r=e.index;return r>=n.length?s(void 0,!0):(t=o(n,r),e.index+=t.length,s(t,!1))}))},9866:function(t,e,n){var o=n(9989),r=n(2615),i=n(6576),a=n(974),s=n(7807),u=n(4684),c=n(3126),l=n(4327),f=n(5027),d=n(981),p=n(6648),h=n(1245),v=n(3477),y=n(4849),g=n(1880),m=n(3689),b=n(4201),x=n(6373),w=n(1514),E=n(6100),O=n(618),S=n(3931),k=b(\"matchAll\"),P=\"RegExp String\",I=P+\" Iterator\",C=O.set,A=O.getterFor(I),M=RegExp.prototype,T=TypeError,D=i(\"\".indexOf),j=i(\"\".matchAll),N=!!j&&!m((function(){j(\"a\",/./)})),R=a((function(t,e,n,o){C(this,{type:I,regexp:t,string:e,global:n,unicode:o,done:!1})}),P,(function(){var t=A(this);if(t.done)return s(void 0,!0);var e=t.regexp,n=t.string,o=E(e,n);return null===o?(t.done=!0,s(void 0,!0)):t.global?(\"\"===l(o[0])&&(e.lastIndex=w(n,c(e.lastIndex),t.unicode)),s(o,!1)):(t.done=!0,s(o,!1))})),L=function(t){var e,n,o,r=f(this),i=l(t),a=x(r,RegExp),s=l(v(r));return e=new a(a===RegExp?r.source:r,s),n=!!~D(s,\"g\"),o=!!~D(s,\"u\"),e.lastIndex=c(r.lastIndex),new R(e,i,n,o)};o({target:\"String\",proto:!0,forced:N},{matchAll:function(t){var e,n,o,i,a=u(this);if(d(t)){if(N)return j(a,t)}else{if(h(t)&&(e=l(u(v(t))),!~D(e,\"g\")))throw new T(\"`.matchAll` does not allow non-global regexes\");if(N)return j(a,t);if(void 0===(o=y(t,k))&&S&&\"RegExp\"===p(t)&&(o=L),o)return r(o,t,a)}return n=l(a),i=new RegExp(t,\"g\"),S?r(L,i,n):i[k](n)}}),S||k in M||g(M,k,L)},2462:function(t,e,n){var o=n(2615),r=n(8678),i=n(5027),a=n(981),s=n(3126),u=n(4327),c=n(4684),l=n(4849),f=n(1514),d=n(6100);r(\"match\",(function(t,e,n){return[function(e){var n=c(this),r=a(e)?void 0:l(e,t);return r?o(r,e,n):new RegExp(e)[t](u(n))},function(t){var o=i(this),r=u(t),a=n(e,o,r);if(a.done)return a.value;if(!o.global)return d(o,r);var c=o.unicode;o.lastIndex=0;for(var l,p=[],h=0;null!==(l=d(o,r));){var v=u(l[0]);p[h]=v,\"\"===v&&(o.lastIndex=f(r,s(o.lastIndex),c)),h++}return 0===h?null:p}]}))},7267:function(t,e,n){var o=n(1735),r=n(2615),i=n(8844),a=n(8678),s=n(3689),u=n(5027),c=n(9985),l=n(981),f=n(8700),d=n(3126),p=n(4327),h=n(4684),v=n(1514),y=n(4849),g=n(7017),m=n(6100),b=n(4201)(\"replace\"),x=Math.max,w=Math.min,E=i([].concat),O=i([].push),S=i(\"\".indexOf),k=i(\"\".slice),P=\"$0\"===\"a\".replace(/./,\"$0\"),I=!!/./[b]&&\"\"===/./[b](\"a\",\"$0\");a(\"replace\",(function(t,e,n){var i=I?\"$\":\"$0\";return[function(t,n){var o=h(this),i=l(t)?void 0:y(t,b);return i?r(i,t,o,n):r(e,p(o),t,n)},function(t,r){var a=u(this),s=p(t);if(\"string\"==typeof r&&-1===S(r,i)&&-1===S(r,\"$<\")){var l=n(e,a,s,r);if(l.done)return l.value}var h=c(r);h||(r=p(r));var y,b=a.global;b&&(y=a.unicode,a.lastIndex=0);for(var P,I=[];null!==(P=m(a,s))&&(O(I,P),b);){\"\"===p(P[0])&&(a.lastIndex=v(s,d(a.lastIndex),y))}for(var C,A=\"\",M=0,T=0;T<I.length;T++){for(var D,j=p((P=I[T])[0]),N=x(w(f(P.index),s.length),0),R=[],L=1;L<P.length;L++)O(R,void 0===(C=P[L])?C:String(C));var B=P.groups;if(h){var K=E([j],R,N,s);void 0!==B&&O(K,B),D=p(o(r,void 0,K))}else D=g(j,s,N,R,B,r);N>=M&&(A+=k(s,M,N)+D,M=N+j.length)}return A+k(s,M)}]}),!!s((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:\"7\"},t},\"7\"!==\"\".replace(t,\"$<a>\")}))||!P||I)},9873:function(t,e,n){var o=n(2615),r=n(8844),i=n(8678),a=n(5027),s=n(981),u=n(4684),c=n(6373),l=n(1514),f=n(3126),d=n(4327),p=n(4849),h=n(6100),v=n(7901),y=n(3689),g=v.UNSUPPORTED_Y,m=Math.min,b=r([].push),x=r(\"\".slice),w=!y((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n=\"ab\".split(t);return 2!==n.length||\"a\"!==n[0]||\"b\"!==n[1]})),E=\"c\"===\"abbc\".split(/(b)*/)[1]||4!==\"test\".split(/(?:)/,-1).length||2!==\"ab\".split(/(?:ab)*/).length||4!==\".\".split(/(.?)(.?)/).length||\".\".split(/()()/).length>1||\"\".split(/.?/).length;i(\"split\",(function(t,e,n){var r=\"0\".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:o(e,this,t,n)}:e;return[function(e,n){var i=u(this),a=s(e)?void 0:p(e,t);return a?o(a,e,i,n):o(r,d(i),e,n)},function(t,o){var i=a(this),s=d(t);if(!E){var u=n(r,i,s,o,r!==e);if(u.done)return u.value}var p=c(i,RegExp),v=i.unicode,y=(i.ignoreCase?\"i\":\"\")+(i.multiline?\"m\":\"\")+(i.unicode?\"u\":\"\")+(g?\"g\":\"y\"),w=new p(g?\"^(?:\"+i.source+\")\":i,y),O=void 0===o?4294967295:o>>>0;if(0===O)return[];if(0===s.length)return null===h(w,s)?[s]:[];for(var S=0,k=0,P=[];k<s.length;){w.lastIndex=g?0:k;var I,C=h(w,g?x(s,k):s);if(null===C||(I=m(f(w.lastIndex+(g?k:0)),s.length))===S)k=l(s,k,v);else{if(b(P,x(s,S,k)),P.length===O)return P;for(var A=1;A<=C.length-1;A++)if(b(P,C[A]),P.length===O)return P;k=S=I}}return b(P,x(s,S)),P}]}),E||!w,g)},8436:function(t,e,n){var o=n(9989),r=n(1435).trim;o({target:\"String\",proto:!0,forced:n(5984)(\"trim\")},{trim:function(){return r(this)}})},7855:function(t,e,n){var o=n(9989),r=n(9037),i=n(2615),a=n(8844),s=n(3931),u=n(7697),c=n(146),l=n(3689),f=n(6812),d=n(3622),p=n(5027),h=n(5290),v=n(8360),y=n(4327),g=n(5684),m=n(5391),b=n(300),x=n(2741),w=n(6062),E=n(7518),O=n(2474),S=n(2560),k=n(8920),P=n(9556),I=n(1880),C=n(2148),A=n(3430),M=n(2713),T=n(7248),D=n(4630),j=n(4201),N=n(6145),R=n(5405),L=n(3032),B=n(5997),K=n(618),F=n(2960).forEach,_=M(\"hidden\"),H=\"Symbol\",U=\"prototype\",$=K.set,G=K.getterFor(H),V=Object[U],z=r.Symbol,Y=z&&z[U],W=r.RangeError,X=r.TypeError,J=r.QObject,q=O.f,Q=S.f,Z=w.f,tt=P.f,et=a([].push),nt=A(\"symbols\"),ot=A(\"op-symbols\"),rt=A(\"wks\"),it=!J||!J[U]||!J[U].findChild,at=function(t,e,n){var o=q(V,e);o&&delete V[e],Q(t,e,n),o&&t!==V&&Q(V,e,o)},st=u&&l((function(){return 7!==m(Q({},\"a\",{get:function(){return Q(this,\"a\",{value:7}).a}})).a}))?at:Q,ut=function(t,e){var n=nt[t]=m(Y);return $(n,{type:H,tag:t,description:e}),u||(n.description=e),n},ct=function(t,e,n){t===V&&ct(ot,e,n),p(t);var o=v(e);return p(n),f(nt,o)?(n.enumerable?(f(t,_)&&t[_][o]&&(t[_][o]=!1),n=m(n,{enumerable:g(0,!1)})):(f(t,_)||Q(t,_,g(1,m(null))),t[_][o]=!0),st(t,o,n)):Q(t,o,n)},lt=function(t,e){p(t);var n=h(e),o=b(n).concat(ht(n));return F(o,(function(e){u&&!i(ft,n,e)||ct(t,e,n[e])})),t},ft=function(t){var e=v(t),n=i(tt,this,e);return!(this===V&&f(nt,e)&&!f(ot,e))&&(!(n||!f(this,e)||!f(nt,e)||f(this,_)&&this[_][e])||n)},dt=function(t,e){var n=h(t),o=v(e);if(n!==V||!f(nt,o)||f(ot,o)){var r=q(n,o);return!r||!f(nt,o)||f(n,_)&&n[_][o]||(r.enumerable=!0),r}},pt=function(t){var e=Z(h(t)),n=[];return F(e,(function(t){f(nt,t)||f(T,t)||et(n,t)})),n},ht=function(t){var e=t===V,n=Z(e?ot:h(t)),o=[];return F(n,(function(t){!f(nt,t)||e&&!f(V,t)||et(o,nt[t])})),o};c||(z=function(){if(d(Y,this))throw new X(\"Symbol is not a constructor\");var t=arguments.length&&void 0!==arguments[0]?y(arguments[0]):void 0,e=D(t),n=function(t){var o=void 0===this?r:this;o===V&&i(n,ot,t),f(o,_)&&f(o[_],e)&&(o[_][e]=!1);var a=g(1,t);try{st(o,e,a)}catch(t){if(!(t instanceof W))throw t;at(o,e,a)}};return u&&it&&st(V,e,{configurable:!0,set:n}),ut(e,t)},I(Y=z[U],\"toString\",(function(){return G(this).tag})),I(z,\"withoutSetter\",(function(t){return ut(D(t),t)})),P.f=ft,S.f=ct,k.f=lt,O.f=dt,x.f=w.f=pt,E.f=ht,N.f=function(t){return ut(j(t),t)},u&&(C(Y,\"description\",{configurable:!0,get:function(){return G(this).description}}),s||I(V,\"propertyIsEnumerable\",ft,{unsafe:!0}))),o({global:!0,constructor:!0,wrap:!0,forced:!c,sham:!c},{Symbol:z}),F(b(rt),(function(t){R(t)})),o({target:H,stat:!0,forced:!c},{useSetter:function(){it=!0},useSimple:function(){it=!1}}),o({target:\"Object\",stat:!0,forced:!c,sham:!u},{create:function(t,e){return void 0===e?m(t):lt(m(t),e)},defineProperty:ct,defineProperties:lt,getOwnPropertyDescriptor:dt}),o({target:\"Object\",stat:!0,forced:!c},{getOwnPropertyNames:pt}),L(),B(z,H),T[_]=!0},6544:function(t,e,n){var o=n(9989),r=n(7697),i=n(9037),a=n(8844),s=n(6812),u=n(9985),c=n(3622),l=n(4327),f=n(2148),d=n(8758),p=i.Symbol,h=p&&p.prototype;if(r&&u(p)&&(!(\"description\"in h)||void 0!==p().description)){var v={},y=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:l(arguments[0]),e=c(h,this)?new p(t):void 0===t?p():p(t);return\"\"===t&&(v[e]=!0),e};d(y,p),y.prototype=h,h.constructor=y;var g=\"Symbol(description detection)\"===String(p(\"description detection\")),m=a(h.valueOf),b=a(h.toString),x=/^Symbol\\((.*)\\)[^)]+$/,w=a(\"\".replace),E=a(\"\".slice);f(h,\"description\",{configurable:!0,get:function(){var t=m(this);if(s(v,t))return\"\";var e=b(t),n=g?E(e,7,-1):w(e,x,\"$1\");return\"\"===n?void 0:n}}),o({global:!0,constructor:!0,forced:!0},{Symbol:y})}},3975:function(t,e,n){var o=n(9989),r=n(6058),i=n(6812),a=n(4327),s=n(3430),u=n(6549),c=s(\"string-to-symbol-registry\"),l=s(\"symbol-to-string-registry\");o({target:\"Symbol\",stat:!0,forced:!u},{for:function(t){var e=a(t);if(i(c,e))return c[e];var n=r(\"Symbol\")(e);return c[e]=n,l[n]=e,n}})},4254:function(t,e,n){n(5405)(\"iterator\")},9749:function(t,e,n){n(7855),n(3975),n(1445),n(8324),n(9434)},1445:function(t,e,n){var o=n(9989),r=n(6812),i=n(734),a=n(3691),s=n(3430),u=n(6549),c=s(\"symbol-to-string-registry\");o({target:\"Symbol\",stat:!0,forced:!u},{keyFor:function(t){if(!i(t))throw new TypeError(a(t)+\" is not a symbol\");if(r(c,t))return c[t]}})},9373:function(t,e,n){var o=n(5405),r=n(3032);o(\"toPrimitive\"),r()},9012:function(t,e,n){n(9866)},7522:function(t,e,n){var o=n(9037),r=n(6338),i=n(3265),a=n(7612),s=n(5773),u=function(t){if(t&&t.forEach!==a)try{s(t,\"forEach\",a)}catch(e){t.forEach=a}};for(var c in r)r[c]&&u(o[c]&&o[c].prototype);u(i)},6265:function(t,e,n){var o=n(9037),r=n(6338),i=n(3265),a=n(752),s=n(5773),u=n(5997),c=n(4201)(\"iterator\"),l=a.values,f=function(t,e){if(t){if(t[c]!==l)try{s(t,c,l)}catch(e){t[c]=l}if(u(t,e,!0),r[e])for(var n in a)if(t[n]!==a[n])try{s(t,n,a[n])}catch(e){t[n]=a[n]}}};for(var d in r)f(o[d]&&o[d].prototype,d);f(i,\"DOMTokenList\")}},e={};function n(o){var r=e[o];if(void 0!==r)return r.exports;var i=e[o]={exports:{}};return t[o].call(i.exports,i,i.exports,n),i.exports}n.d=function(t,e){for(var o in e)n.o(e,o)&&!n.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},n.g=function(){if(\"object\"==typeof globalThis)return globalThis;try{return this||new Function(\"return this\")()}catch(t){if(\"object\"==typeof window)return window}}(),n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})};var o={};return function(){n.r(o),n.d(o,{SimpleKeyboard:function(){return M},default:function(){return T}});n(7195),n(6203),n(9730),n(2506),n(4284),n(3994),n(228),n(4043),n(2826),n(7267),n(9873),n(8436);\"undefined\"==typeof Element||\"remove\"in Element.prototype||(Element.prototype.remove=function(){this.parentNode&&this.parentNode.removeChild(this)}),\"undefined\"!=typeof self&&\"document\"in self&&((!(\"classList\"in document.createElement(\"_\"))||document.createElementNS&&!(\"classList\"in document.createElementNS(\"http://www.w3.org/2000/svg\",\"g\")))&&function(t){if(\"Element\"in t){var e=\"classList\",n=\"prototype\",o=t.Element[n],r=Object,i=String[n].trim||function(){return this.replace(/^\\s+|\\s+$/g,\"\")},a=Array[n].indexOf||function(t){for(var e=0,n=this.length;e<n;e++)if(e in this&&this[e]===t)return e;return-1},s=function(t,e){this.name=t,this.code=DOMException[t],this.message=e},u=function(t,e){if(\"\"===e)throw new s(\"SYNTAX_ERR\",\"The token must not be empty.\");if(/\\s/.test(e))throw new s(\"INVALID_CHARACTER_ERR\",\"The token must not contain space characters.\");return a.call(t,e)},c=function(t){for(var e=i.call(t.getAttribute(\"class\")||\"\"),n=e?e.split(/\\s+/):[],o=0,r=n.length;o<r;o++)this.push(n[o]);this._updateClassName=function(){t.setAttribute(\"class\",this.toString())}},l=c[n]=[],f=function(){return new c(this)};if(s[n]=Error[n],l.item=function(t){return this[t]||null},l.contains=function(t){return~u(this,t+\"\")},l.add=function(){var t,e=arguments,n=0,o=e.length,r=!1;do{~u(this,t=e[n]+\"\")||(this.push(t),r=!0)}while(++n<o);r&&this._updateClassName()},l.remove=function(){var t,e,n=arguments,o=0,r=n.length,i=!1;do{for(e=u(this,t=n[o]+\"\");~e;)this.splice(e,1),i=!0,e=u(this,t)}while(++o<r);i&&this._updateClassName()},l.toggle=function(t,e){var n=this.contains(t),o=n?!0!==e&&\"remove\":!1!==e&&\"add\";return o&&this[o](t),!0===e||!1===e?e:!n},l.replace=function(t,e){var n=u(t+\"\");~n&&(this.splice(n,1,e),this._updateClassName())},l.toString=function(){return this.join(\" \")},r.defineProperty){var d={get:f,enumerable:!0,configurable:!0};try{r.defineProperty(o,e,d)}catch(t){void 0!==t.number&&-2146823252!==t.number||(d.enumerable=!1,r.defineProperty(o,e,d))}}else r[n].__defineGetter__&&o.__defineGetter__(e,f)}}(self),function(){var t=document.createElement(\"_\");if(t.classList.add(\"c1\",\"c2\"),!t.classList.contains(\"c2\")){var e=function(t){var e=DOMTokenList.prototype[t];DOMTokenList.prototype[t]=function(t){var n,o=arguments.length;for(n=0;n<o;n++)t=arguments[n],e.call(this,t)}};e(\"add\"),e(\"remove\")}if(t.classList.toggle(\"c3\",!1),t.classList.contains(\"c3\")){var n=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(t,e){return 1 in arguments&&!this.contains(t)==!e?e:n.call(this,t)}}\"replace\"in document.createElement(\"_\").classList||(DOMTokenList.prototype.replace=function(t,e){var n=this.toString().split(\" \"),o=n.indexOf(t+\"\");~o&&(n=n.slice(o),this.remove.apply(this,n),this.add(e),this.add.apply(this,n.slice(1)))}),t=null}());n(9749),n(6544),n(4254),n(9373),n(4338),n(8077),n(7049),n(6801),n(752),n(886),n(5137),n(9903),n(9288),n(429),n(1919),n(9474),n(9358),n(2003),n(3843),n(1694),n(9012),n(7522),n(6265),n(278),n(5765),n(9997),n(2462);function t(t){return function(t){if(Array.isArray(t))return r(t)}(t)||function(t){if(\"undefined\"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t[\"@@iterator\"])return Array.from(t)}(t)||e(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function e(t,e){if(t){if(\"string\"==typeof t)return r(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===n&&t.constructor&&(n=t.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(t):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(t,e):void 0}}function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function i(t){return i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},i(t)}function a(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,u(o.key),o)}}function s(t,e,n){return(e=u(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function u(t){var e=function(t,e){if(\"object\"!=i(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e||\"default\");if(\"object\"!=i(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===e?String:Number)(t)}(t,\"string\");return\"symbol\"==i(e)?e:String(e)}var c=function(){function n(t){var e=t.getOptions,o=t.getCaretPosition,r=t.getCaretPositionEnd,i=t.dispatch;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,n),s(this,\"getOptions\",void 0),s(this,\"getCaretPosition\",void 0),s(this,\"getCaretPositionEnd\",void 0),s(this,\"dispatch\",void 0),s(this,\"maxLengthReached\",void 0),s(this,\"isStandardButton\",(function(t){return t&&!(\"{\"===t[0]&&\"}\"===t[t.length-1])})),this.getOptions=e,this.getCaretPosition=o,this.getCaretPositionEnd=r,this.dispatch=i,n.bindMethods(n,this)}var o,r,u;return o=n,r=[{key:\"getButtonType\",value:function(t){return t.includes(\"{\")&&t.includes(\"}\")&&\"{//}\"!==t?\"functionBtn\":\"standardBtn\"}},{key:\"getButtonClass\",value:function(t){var e=this.getButtonType(t),n=t.replace(\"{\",\"\").replace(\"}\",\"\"),o=\"\";return\"standardBtn\"!==e&&(o=\" hg-button-\".concat(n)),\"hg-\".concat(e).concat(o)}},{key:\"getDefaultDiplay\",value:function(){return{\"{bksp}\":\"backspace\",\"{backspace}\":\"backspace\",\"{enter}\":\"< enter\",\"{shift}\":\"shift\",\"{shiftleft}\":\"shift\",\"{shiftright}\":\"shift\",\"{alt}\":\"alt\",\"{s}\":\"shift\",\"{tab}\":\"tab\",\"{lock}\":\"caps\",\"{capslock}\":\"caps\",\"{accept}\":\"Submit\",\"{space}\":\" \",\"{//}\":\" \",\"{esc}\":\"esc\",\"{escape}\":\"esc\",\"{f1}\":\"f1\",\"{f2}\":\"f2\",\"{f3}\":\"f3\",\"{f4}\":\"f4\",\"{f5}\":\"f5\",\"{f6}\":\"f6\",\"{f7}\":\"f7\",\"{f8}\":\"f8\",\"{f9}\":\"f9\",\"{f10}\":\"f10\",\"{f11}\":\"f11\",\"{f12}\":\"f12\",\"{numpaddivide}\":\"/\",\"{numlock}\":\"lock\",\"{arrowup}\":\"↑\",\"{arrowleft}\":\"←\",\"{arrowdown}\":\"↓\",\"{arrowright}\":\"→\",\"{prtscr}\":\"print\",\"{scrolllock}\":\"scroll\",\"{pause}\":\"pause\",\"{insert}\":\"ins\",\"{home}\":\"home\",\"{pageup}\":\"up\",\"{delete}\":\"del\",\"{forwarddelete}\":\"del\",\"{end}\":\"end\",\"{pagedown}\":\"down\",\"{numpadmultiply}\":\"*\",\"{numpadsubtract}\":\"-\",\"{numpadadd}\":\"+\",\"{numpadenter}\":\"enter\",\"{period}\":\".\",\"{numpaddecimal}\":\".\",\"{numpad0}\":\"0\",\"{numpad1}\":\"1\",\"{numpad2}\":\"2\",\"{numpad3}\":\"3\",\"{numpad4}\":\"4\",\"{numpad5}\":\"5\",\"{numpad6}\":\"6\",\"{numpad7}\":\"7\",\"{numpad8}\":\"8\",\"{numpad9}\":\"9\"}}},{key:\"getButtonDisplayName\",value:function(t,e){return(e=arguments.length>2&&void 0!==arguments[2]&&arguments[2]?Object.assign({},this.getDefaultDiplay(),e):e||this.getDefaultDiplay())[t]||t}},{key:\"getUpdatedInput\",value:function(t,e,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:n,r=arguments.length>4&&void 0!==arguments[4]&&arguments[4],i=this.getOptions(),a=[n,o,r],s=e;return(\"{bksp}\"===t||\"{backspace}\"===t)&&s.length>0?s=this.removeAt.apply(this,[s].concat(a)):(\"{delete}\"===t||\"{forwarddelete}\"===t)&&s.length>0?s=this.removeForwardsAt.apply(this,[s].concat(a)):\"{space}\"===t?s=this.addStringAt.apply(this,[s,\" \"].concat(a)):\"{tab}\"!==t||\"boolean\"==typeof i.tabCharOnTab&&!1===i.tabCharOnTab?\"{enter}\"!==t&&\"{numpadenter}\"!==t||!i.newLineOnEnter?t.includes(\"numpad\")&&Number.isInteger(Number(t[t.length-2]))?s=this.addStringAt.apply(this,[s,t[t.length-2]].concat(a)):\"{numpaddivide}\"===t?s=this.addStringAt.apply(this,[s,\"/\"].concat(a)):\"{numpadmultiply}\"===t?s=this.addStringAt.apply(this,[s,\"*\"].concat(a)):\"{numpadsubtract}\"===t?s=this.addStringAt.apply(this,[s,\"-\"].concat(a)):\"{numpadadd}\"===t?s=this.addStringAt.apply(this,[s,\"+\"].concat(a)):\"{numpaddecimal}\"===t?s=this.addStringAt.apply(this,[s,\".\"].concat(a)):\"{\"===t||\"}\"===t?s=this.addStringAt.apply(this,[s,t].concat(a)):t.includes(\"{\")||t.includes(\"}\")||(s=this.addStringAt.apply(this,[s,t].concat(a))):s=this.addStringAt.apply(this,[s,\"\\n\"].concat(a)):s=this.addStringAt.apply(this,[s,\"\\t\"].concat(a)),i.debug&&console.log(\"Input will be: \"+s),s}},{key:\"updateCaretPos\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.updateCaretPosAction(t,e);this.dispatch((function(t){t.setCaretPosition(n)}))}},{key:\"updateCaretPosAction\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.getOptions(),o=this.getCaretPosition();return null!=o&&(e?o>0&&(o-=t):o+=t),n.debug&&console.log(\"Caret at:\",o),o}},{key:\"addStringAt\",value:function(t,e){var n,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.length,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.length,i=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return o||0===o?(n=[t.slice(0,o),e,t.slice(r)].join(\"\"),this.isMaxLengthReached()||i&&this.updateCaretPos(e.length)):n=t+e,n}},{key:\"removeAt\",value:function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t.length,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.length,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(0===n&&0===o)return t;if(n===o){var i=/([\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g;n&&n>=0?t.substring(n-2,n).match(i)?(e=t.substr(0,n-2)+t.substr(n),r&&this.updateCaretPos(2,!0)):(e=t.substr(0,n-1)+t.substr(n),r&&this.updateCaretPos(1,!0)):t.slice(-2).match(i)?(e=t.slice(0,-2),r&&this.updateCaretPos(2,!0)):(e=t.slice(0,-1),r&&this.updateCaretPos(1,!0))}else e=t.slice(0,n)+t.slice(o),r&&this.dispatch((function(t){t.setCaretPosition(n)}));return e}},{key:\"removeForwardsAt\",value:function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t.length,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.length,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return null!=t&&t.length&&null!==n?(n===o?e=t.substring(n,n+2).match(/([\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g)?t.substr(0,n)+t.substr(n+2):t.substr(0,n)+t.substr(n+1):(e=t.slice(0,n)+t.slice(o),r&&this.dispatch((function(t){t.setCaretPosition(n)}))),e):t}},{key:\"handleMaxLength\",value:function(t,e){var n=this.getOptions(),o=n.maxLength,r=t[n.inputName||\"default\"],a=e.length-1>=o;if(e.length<=r.length)return!1;if(Number.isInteger(o))return n.debug&&console.log(\"maxLength (num) reached:\",a),a?(this.maxLengthReached=!0,!0):(this.maxLengthReached=!1,!1);if(\"object\"===i(o)){var s=e.length-1>=o[n.inputName||\"default\"];return n.debug&&console.log(\"maxLength (obj) reached:\",s),s?(this.maxLengthReached=!0,!0):(this.maxLengthReached=!1,!1)}}},{key:\"isMaxLengthReached\",value:function(){return Boolean(this.maxLengthReached)}},{key:\"isTouchDevice\",value:function(){return\"ontouchstart\"in window||navigator.maxTouchPoints}},{key:\"pointerEventsSupported\",value:function(){return!!window.PointerEvent}},{key:\"camelCase\",value:function(t){return t?t.toLowerCase().trim().split(/[.\\-_\\s]/g).reduce((function(t,e){return e.length?t+e[0].toUpperCase()+e.slice(1):t})):\"\"}},{key:\"chunkArray\",value:function(e,n){return t(Array(Math.ceil(e.length/n))).map((function(t,o){return e.slice(n*o,n+n*o)}))}},{key:\"escapeRegex\",value:function(t){return t.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\")}},{key:\"getRtlOffset\",value:function(t,e){var n=t,o=e.indexOf(\"‫\");return o<t&&-1!=o&&n--,e.indexOf(\"‬\")<t&&-1!=o&&n--,n<0?0:n}}],u=[{key:\"bindMethods\",value:function(t,n){var o,r=function(t,n){var o=\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(!o){if(Array.isArray(t)||(o=e(t))||n&&t&&\"number\"==typeof t.length){o&&(t=o);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var a,s=!0,u=!1;return{s:function(){o=o.call(t)},n:function(){var t=o.next();return s=t.done,t},e:function(t){u=!0,a=t},f:function(){try{s||null==o.return||o.return()}finally{if(u)throw a}}}}(Object.getOwnPropertyNames(t.prototype));try{for(r.s();!(o=r.n()).done;){var i=o.value;\"constructor\"===i||\"bindMethods\"===i||(n[i]=n[i].bind(n))}}catch(t){r.e(t)}finally{r.f()}}}],r&&a(o.prototype,r),u&&a(o,u),Object.defineProperty(o,\"prototype\",{writable:!1}),n}();s(c,\"noop\",(function(){}));var l=c;function f(t){return f=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},f(t)}function d(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,h(o.key),o)}}function p(t,e,n){return(e=h(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function h(t){var e=function(t,e){if(\"object\"!=f(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e||\"default\");if(\"object\"!=f(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===e?String:Number)(t)}(t,\"string\");return\"symbol\"==f(e)?e:String(e)}var v=function(){function t(e){var n=this,o=e.dispatch,r=e.getOptions;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),p(this,\"getOptions\",void 0),p(this,\"dispatch\",void 0),p(this,\"isMofifierKey\",(function(t){return t.altKey||t.ctrlKey||t.shiftKey||[\"Tab\",\"CapsLock\",\"Esc\",\"ArrowUp\",\"ArrowDown\",\"ArrowLeft\",\"ArrowRight\"].includes(t.code||t.key||n.keyCodeToKey(null==t?void 0:t.keyCode))})),this.dispatch=o,this.getOptions=r,l.bindMethods(t,this)}var e,n,o;return e=t,(n=[{key:\"handleHighlightKeyDown\",value:function(t){var e=this.getOptions();e.physicalKeyboardHighlightPreventDefault&&this.isMofifierKey(t)&&(t.preventDefault(),t.stopImmediatePropagation());var n=this.getSimpleKeyboardLayoutKey(t);this.dispatch((function(o){var r,i,a=o.getButtonElement(n),s=o.getButtonElement(\"{\".concat(n,\"}\"));if(a)r=a,i=n;else{if(!s)return;r=s,i=\"{\".concat(n,\"}\")}var u,c,l,f,d=function(t){t.style.background=e.physicalKeyboardHighlightBgColor||\"#dadce4\",t.style.color=e.physicalKeyboardHighlightTextColor||\"black\"};if(r)if(Array.isArray(r)){if(r.forEach((function(t){return d(t)})),e.physicalKeyboardHighlightPress)if(e.physicalKeyboardHighlightPressUsePointerEvents)null===(u=r[0])||void 0===u||null===(c=u.onpointerdown)||void 0===c||c.call(u,t);else if(e.physicalKeyboardHighlightPressUseClick){var p;null===(p=r[0])||void 0===p||p.click()}else o.handleButtonClicked(i,t)}else d(r),e.physicalKeyboardHighlightPress&&(e.physicalKeyboardHighlightPressUsePointerEvents?null===(l=r)||void 0===l||null===(f=l.onpointerdown)||void 0===f||f.call(l,t):e.physicalKeyboardHighlightPressUseClick?r.click():o.handleButtonClicked(i,t))}))}},{key:\"handleHighlightKeyUp\",value:function(t){var e=this.getOptions();e.physicalKeyboardHighlightPreventDefault&&this.isMofifierKey(t)&&(t.preventDefault(),t.stopImmediatePropagation());var n=this.getSimpleKeyboardLayoutKey(t);this.dispatch((function(o){var r,i,a,s=o.getButtonElement(n)||o.getButtonElement(\"{\".concat(n,\"}\")),u=function(t){t.removeAttribute&&t.removeAttribute(\"style\")};s&&(Array.isArray(s)?(s.forEach((function(t){return u(t)})),e.physicalKeyboardHighlightPressUsePointerEvents&&(null===(r=s[0])||void 0===r||null===(i=r.onpointerup)||void 0===i||i.call(r,t))):(u(s),e.physicalKeyboardHighlightPressUsePointerEvents&&(null==s||null===(a=s.onpointerup)||void 0===a||a.call(s,t))))}))}},{key:\"getSimpleKeyboardLayoutKey\",value:function(t){var e,n=\"\",o=t.code||t.key||this.keyCodeToKey(null==t?void 0:t.keyCode);return(n=null!=o&&o.includes(\"Numpad\")||null!=o&&o.includes(\"Shift\")||null!=o&&o.includes(\"Space\")||null!=o&&o.includes(\"Backspace\")||null!=o&&o.includes(\"Control\")||null!=o&&o.includes(\"Alt\")||null!=o&&o.includes(\"Meta\")?t.code||\"\":t.key||this.keyCodeToKey(null==t?void 0:t.keyCode)||\"\").length>1?null===(e=n)||void 0===e?void 0:e.toLowerCase():n}},{key:\"keyCodeToKey\",value:function(t){return{8:\"Backspace\",9:\"Tab\",13:\"Enter\",16:\"Shift\",17:\"Ctrl\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Esc\",32:\"Space\",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",48:\"0\",49:\"1\",50:\"2\",51:\"3\",52:\"4\",53:\"5\",54:\"6\",55:\"7\",56:\"8\",57:\"9\",65:\"A\",66:\"B\",67:\"C\",68:\"D\",69:\"E\",70:\"F\",71:\"G\",72:\"H\",73:\"I\",74:\"J\",75:\"K\",76:\"L\",77:\"M\",78:\"N\",79:\"O\",80:\"P\",81:\"Q\",82:\"R\",83:\"S\",84:\"T\",85:\"U\",86:\"V\",87:\"W\",88:\"X\",89:\"Y\",90:\"Z\",91:\"Meta\",96:\"Numpad0\",97:\"Numpad1\",98:\"Numpad2\",99:\"Numpad3\",100:\"Numpad4\",101:\"Numpad5\",102:\"Numpad6\",103:\"Numpad7\",104:\"Numpad8\",105:\"Numpad9\",106:\"NumpadMultiply\",107:\"NumpadAdd\",109:\"NumpadSubtract\",110:\"NumpadDecimal\",111:\"NumpadDivide\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",186:\";\",187:\"=\",188:\",\",189:\"-\",190:\".\",191:\"/\",192:\"`\",219:\"[\",220:\"\\\\\",221:\"]\",222:\"'\"}[t]||\"\"}}])&&d(e.prototype,n),o&&d(e,o),Object.defineProperty(e,\"prototype\",{writable:!1}),t}();function y(t){return y=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},y(t)}function g(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,b(o.key),o)}}function m(t,e,n){return(e=b(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function b(t){var e=function(t,e){if(\"object\"!=y(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e||\"default\");if(\"object\"!=y(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===e?String:Number)(t)}(t,\"string\");return\"symbol\"==y(e)?e:String(e)}var x=function(){function t(e){var n=e.utilities,o=e.options;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),m(this,\"utilities\",void 0),m(this,\"options\",void 0),m(this,\"candidateBoxElement\",void 0),m(this,\"pageIndex\",0),m(this,\"pageSize\",void 0),this.utilities=n,this.options=o,l.bindMethods(t,this),this.pageSize=this.utilities.getOptions().layoutCandidatesPageSize||5}var e,n,o;return e=t,n=[{key:\"destroy\",value:function(){this.candidateBoxElement&&(this.candidateBoxElement.remove(),this.pageIndex=0)}},{key:\"show\",value:function(t){var e=this,n=t.candidateValue,o=t.targetElement,r=t.onSelect;if(n&&n.length){var i=this.utilities.chunkArray(n.split(\" \"),this.pageSize);this.renderPage({candidateListPages:i,targetElement:o,pageIndex:this.pageIndex,nbPages:i.length,onItemSelected:function(t,n){r(t,n),e.destroy()}})}}},{key:\"renderPage\",value:function(t){var e,n=this,o=t.candidateListPages,r=t.targetElement,i=t.pageIndex,a=t.nbPages,s=t.onItemSelected;null===(e=this.candidateBoxElement)||void 0===e||e.remove(),this.candidateBoxElement=document.createElement(\"div\"),this.candidateBoxElement.className=\"hg-candidate-box\";var u=document.createElement(\"ul\");u.className=\"hg-candidate-box-list\",o[i].forEach((function(t){var e,o=document.createElement(\"li\"),r=function(){var t=new(n.options.useTouchEvents?TouchEvent:MouseEvent)(\"click\");return Object.defineProperty(t,\"target\",{value:o}),t};o.className=\"hg-candidate-box-list-item\",o.innerHTML=(null===(e=n.options.display)||void 0===e?void 0:e[t])||t,n.options.useTouchEvents?o.ontouchstart=function(e){return s(t,e||r())}:o.onclick=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r();return s(t,e)},u.appendChild(o)}));var c=i>0,l=document.createElement(\"div\");l.classList.add(\"hg-candidate-box-prev\"),c&&l.classList.add(\"hg-candidate-box-btn-active\");var f=function(){c&&n.renderPage({candidateListPages:o,targetElement:r,pageIndex:i-1,nbPages:a,onItemSelected:s})};this.options.useTouchEvents?l.ontouchstart=f:l.onclick=f,this.candidateBoxElement.appendChild(l),this.candidateBoxElement.appendChild(u);var d=i<a-1,p=document.createElement(\"div\");p.classList.add(\"hg-candidate-box-next\"),d&&p.classList.add(\"hg-candidate-box-btn-active\");var h=function(){d&&n.renderPage({candidateListPages:o,targetElement:r,pageIndex:i+1,nbPages:a,onItemSelected:s})};this.options.useTouchEvents?p.ontouchstart=h:p.onclick=h,this.candidateBoxElement.appendChild(p),r.prepend(this.candidateBoxElement)}}],n&&g(e.prototype,n),o&&g(e,o),Object.defineProperty(e,\"prototype\",{writable:!1}),t}(),w=x;function E(t){return function(t){if(Array.isArray(t))return O(t)}(t)||function(t){if(\"undefined\"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t[\"@@iterator\"])return Array.from(t)}(t)||function(t,e){if(!t)return;if(\"string\"==typeof t)return O(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);\"Object\"===n&&t.constructor&&(n=t.constructor.name);if(\"Map\"===n||\"Set\"===n)return Array.from(t);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return O(t,e)}(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function O(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function S(t){return S=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},S(t)}function k(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,o)}return n}function P(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,C(o.key),o)}}function I(t,e,n){return(e=C(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function C(t){var e=function(t,e){if(\"object\"!=S(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e||\"default\");if(\"object\"!=S(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===e?String:Number)(t)}(t,\"string\");return\"symbol\"==S(e)?e:String(e)}var A=function(){function t(e,n){var o=this;if(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),I(this,\"input\",void 0),I(this,\"options\",void 0),I(this,\"utilities\",void 0),I(this,\"caretPosition\",void 0),I(this,\"caretPositionEnd\",void 0),I(this,\"keyboardDOM\",void 0),I(this,\"keyboardPluginClasses\",void 0),I(this,\"keyboardDOMClass\",void 0),I(this,\"buttonElements\",void 0),I(this,\"currentInstanceName\",void 0),I(this,\"allKeyboardInstances\",void 0),I(this,\"keyboardInstanceNames\",void 0),I(this,\"isFirstKeyboardInstance\",void 0),I(this,\"physicalKeyboard\",void 0),I(this,\"modules\",void 0),I(this,\"activeButtonClass\",void 0),I(this,\"holdInteractionTimeout\",void 0),I(this,\"holdTimeout\",void 0),I(this,\"isMouseHold\",void 0),I(this,\"initialized\",void 0),I(this,\"candidateBox\",void 0),I(this,\"keyboardRowsDOM\",void 0),I(this,\"defaultName\",\"default\"),I(this,\"activeInputElement\",null),I(this,\"handleParams\",(function(t,e){var n,o,r;if(\"string\"==typeof t)n=t.split(\".\").join(\"\"),o=document.querySelector(\".\".concat(n)),r=e;else if(t instanceof HTMLDivElement){if(!t.className)throw console.warn(\"Any DOM element passed as parameter must have a class.\"),new Error(\"KEYBOARD_DOM_CLASS_ERROR\");n=t.className.split(\" \")[0],o=t,r=e}else n=\"simple-keyboard\",o=document.querySelector(\".\".concat(n)),r=t;return{keyboardDOMClass:n,keyboardDOM:o,options:r}})),I(this,\"getOptions\",(function(){return o.options})),I(this,\"getCaretPosition\",(function(){return o.caretPosition})),I(this,\"getCaretPositionEnd\",(function(){return o.caretPositionEnd})),I(this,\"registerModule\",(function(t,e){o.modules[t]||(o.modules[t]={}),e(o.modules[t])})),I(this,\"getKeyboardClassString\",(function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return[o.keyboardDOMClass].concat(e).filter((function(t){return!!t})).join(\" \")})),\"undefined\"!=typeof window){var r=this.handleParams(e,n),i=r.keyboardDOMClass,a=r.keyboardDOM,s=r.options,u=void 0===s?{}:s;this.utilities=new l({getOptions:this.getOptions,getCaretPosition:this.getCaretPosition,getCaretPositionEnd:this.getCaretPositionEnd,dispatch:this.dispatch}),this.caretPosition=null,this.caretPositionEnd=null,this.keyboardDOM=a,this.options=function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?k(Object(n),!0).forEach((function(e){I(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):k(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}({layoutName:\"default\",theme:\"hg-theme-default\",inputName:\"default\",preventMouseDownDefault:!1,enableLayoutCandidates:!0,excludeFromLayout:{}},u),this.keyboardPluginClasses=\"\",l.bindMethods(t,this);var c=this.options.inputName,f=void 0===c?this.defaultName:c;if(this.input={},this.input[f]=\"\",this.keyboardDOMClass=i,this.buttonElements={},window.SimpleKeyboardInstances||(window.SimpleKeyboardInstances={}),this.currentInstanceName=this.utilities.camelCase(this.keyboardDOMClass),window.SimpleKeyboardInstances[this.currentInstanceName]=this,this.allKeyboardInstances=window.SimpleKeyboardInstances,this.keyboardInstanceNames=Object.keys(window.SimpleKeyboardInstances),this.isFirstKeyboardInstance=this.keyboardInstanceNames[0]===this.currentInstanceName,this.physicalKeyboard=new v({dispatch:this.dispatch,getOptions:this.getOptions}),this.candidateBox=this.options.enableLayoutCandidates?new w({utilities:this.utilities,options:this.options}):null,!this.keyboardDOM)throw console.warn('\".'.concat(i,'\" was not found in the DOM.')),new Error(\"KEYBOARD_DOM_ERROR\");this.render(),this.modules={},this.loadModules()}}var e,n,o;return e=t,n=[{key:\"setCaretPosition\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t;this.caretPosition=t,this.caretPositionEnd=e}},{key:\"getInputCandidates\",value:function(t){var e=this,n=this.options,o=n.layoutCandidates,r=n.layoutCandidatesCaseSensitiveMatch;if(!o||\"object\"!==S(o))return{};var i=Object.keys(o).filter((function(n){var o=t.substring(0,e.getCaretPositionEnd()||0)||t,i=new RegExp(\"\".concat(e.utilities.escapeRegex(n),\"$\"),r?\"g\":\"gi\");return!!E(o.matchAll(i)).length}));if(i.length>1){var a=i.sort((function(t,e){return e.length-t.length}))[0];return{candidateKey:a,candidateValue:o[a]}}if(i.length){var s=i[0];return{candidateKey:s,candidateValue:o[s]}}return{}}},{key:\"showCandidatesBox\",value:function(t,e,n){var o=this;this.candidateBox&&this.candidateBox.show({candidateValue:e,targetElement:n,onSelect:function(e,n){var r=o.options,i=r.layoutCandidatesCaseSensitiveMatch,a=r.disableCandidateNormalization,s=r.enableLayoutCandidatesKeyPress,u=e;a||(u=e.normalize(\"NFD\"));var c=o.getInput(o.options.inputName,!0),l=o.getCaretPositionEnd()||0,f=c.substring(0,l||0)||c,d=new RegExp(\"\".concat(o.utilities.escapeRegex(t),\"$\"),i?\"g\":\"gi\"),p=f.replace(d,u),h=c.replace(f,p),v=p.length-f.length,y=(l||c.length)+v;y<0&&(y=0),o.setInput(h,o.options.inputName,!0),o.setCaretPosition(y),s&&\"function\"==typeof o.options.onKeyPress&&o.options.onKeyPress(e,n),\"function\"==typeof o.options.onChange&&o.options.onChange(o.getInput(o.options.inputName,!0),n),\"function\"==typeof o.options.onChangeAll&&o.options.onChangeAll(o.getAllInputs(),n)}})}},{key:\"handleButtonClicked\",value:function(t,e){var n=this.options,o=n.inputName,r=void 0===o?this.defaultName:o,i=n.debug;if(\"{//}\"!==t){this.input[r]||(this.input[r]=\"\");var a=this.utilities.getUpdatedInput(t,this.input[r],this.caretPosition,this.caretPositionEnd);if(this.utilities.isStandardButton(t)&&this.activeInputElement&&this.input[r]&&this.input[r]===a&&0===this.caretPosition&&this.caretPositionEnd===a.length)return this.setInput(\"\",this.options.inputName,!0),this.setCaretPosition(0),this.activeInputElement.value=\"\",this.activeInputElement.setSelectionRange(0,0),void this.handleButtonClicked(t,e);if(\"function\"==typeof this.options.onKeyPress&&this.options.onKeyPress(t,e),this.input[r]!==a&&(!this.options.inputPattern||this.options.inputPattern&&this.inputPatternIsValid(a))){if(this.options.maxLength&&this.utilities.handleMaxLength(this.input,a))return;var s=this.utilities.getUpdatedInput(t,this.input[r],this.caretPosition,this.caretPositionEnd,!0);if(this.setInput(s,this.options.inputName,!0),i&&console.log(\"Input changed:\",this.getAllInputs()),this.options.debug&&console.log(\"Caret at: \",this.getCaretPosition(),this.getCaretPositionEnd(),\"(\".concat(this.keyboardDOMClass,\")\"),null==e?void 0:e.type),this.options.syncInstanceInputs&&this.syncInstanceInputs(),\"function\"==typeof this.options.onChange&&this.options.onChange(this.getInput(this.options.inputName,!0),e),\"function\"==typeof this.options.onChangeAll&&this.options.onChangeAll(this.getAllInputs(),e),null!=e&&e.target&&this.options.enableLayoutCandidates){var u,c=this.getInputCandidates(a),l=c.candidateKey,f=c.candidateValue;l&&f?this.showCandidatesBox(l,f,this.keyboardDOM):null===(u=this.candidateBox)||void 0===u||u.destroy()}}this.caretPositionEnd&&this.caretPosition!==this.caretPositionEnd&&(this.setCaretPosition(this.caretPositionEnd,this.caretPositionEnd),this.activeInputElement&&this.activeInputElement.setSelectionRange(this.caretPositionEnd,this.caretPositionEnd),this.options.debug&&console.log(\"Caret position aligned\",this.caretPosition)),i&&console.log(\"Key pressed:\",t)}}},{key:\"getMouseHold\",value:function(){return this.isMouseHold}},{key:\"setMouseHold\",value:function(t){this.options.syncInstanceInputs?this.dispatch((function(e){e.isMouseHold=t})):this.isMouseHold=t}},{key:\"handleButtonMouseDown\",value:function(t,e){var n=this;e&&(this.options.preventMouseDownDefault&&e.preventDefault(),this.options.stopMouseDownPropagation&&e.stopPropagation(),e.target.classList.add(this.activeButtonClass)),this.holdInteractionTimeout&&clearTimeout(this.holdInteractionTimeout),this.holdTimeout&&clearTimeout(this.holdTimeout),this.setMouseHold(!0),this.options.disableButtonHold||(this.holdTimeout=window.setTimeout((function(){(n.getMouseHold()&&(!t.includes(\"{\")&&!t.includes(\"}\")||\"{delete}\"===t||\"{backspace}\"===t||\"{bksp}\"===t||\"{space}\"===t||\"{tab}\"===t)||\"{arrowright}\"===t||\"{arrowleft}\"===t||\"{arrowup}\"===t||\"{arrowdown}\"===t)&&(n.options.debug&&console.log(\"Button held:\",t),n.handleButtonHold(t)),clearTimeout(n.holdTimeout)}),500))}},{key:\"handleButtonMouseUp\",value:function(t,e){var n=this;e&&(this.options.preventMouseUpDefault&&e.preventDefault&&e.preventDefault(),this.options.stopMouseUpPropagation&&e.stopPropagation&&e.stopPropagation(),!(e.target===this.keyboardDOM||e.target&&this.keyboardDOM.contains(e.target)||this.candidateBox&&this.candidateBox.candidateBoxElement&&(e.target===this.candidateBox.candidateBoxElement||e.target&&this.candidateBox.candidateBoxElement.contains(e.target)))&&this.candidateBox&&this.candidateBox.destroy()),this.recurseButtons((function(t){t.classList.remove(n.activeButtonClass)})),this.setMouseHold(!1),this.holdInteractionTimeout&&clearTimeout(this.holdInteractionTimeout),t&&\"function\"==typeof this.options.onKeyReleased&&this.options.onKeyReleased(t,e)}},{key:\"handleKeyboardContainerMouseDown\",value:function(t){this.options.preventMouseDownDefault&&t.preventDefault()}},{key:\"handleButtonHold\",value:function(t){var e=this;this.holdInteractionTimeout&&clearTimeout(this.holdInteractionTimeout),this.holdInteractionTimeout=window.setTimeout((function(){e.getMouseHold()?(e.handleButtonClicked(t),e.handleButtonHold(t)):clearTimeout(e.holdInteractionTimeout)}),100)}},{key:\"syncInstanceInputs\",value:function(){var t=this;this.dispatch((function(e){e.replaceInput(t.input),e.setCaretPosition(t.caretPosition,t.caretPositionEnd)}))}},{key:\"clearInput\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.inputName||this.defaultName;this.input[t]=\"\",this.setCaretPosition(0),this.options.syncInstanceInputs&&this.syncInstanceInputs()}},{key:\"getInput\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.inputName||this.defaultName,e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.options.syncInstanceInputs&&!e&&this.syncInstanceInputs(),this.options.rtl?\"‫\"+this.input[t].replace(\"‫\",\"\").replace(\"‬\",\"\")+\"‬\":this.input[t]}},{key:\"getAllInputs\",value:function(){var t=this,e={};return Object.keys(this.input).forEach((function(n){e[n]=t.getInput(n,!0)})),e}},{key:\"setInput\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.inputName||this.defaultName,n=arguments.length>2?arguments[2]:void 0;this.input[e]=t,!n&&this.options.syncInstanceInputs&&this.syncInstanceInputs()}},{key:\"replaceInput\",value:function(t){this.input=t}},{key:\"setOptions\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.changedOptions(t);this.options=Object.assign(this.options,t),e.length&&(this.options.debug&&console.log(\"changedOptions\",e),this.onSetOptions(e),this.render())}},{key:\"changedOptions\",value:function(t){var e=this;return Object.keys(t).filter((function(n){return JSON.stringify(t[n])!==JSON.stringify(e.options[n])}))}},{key:\"onSetOptions\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];t.includes(\"layoutName\")&&this.candidateBox&&this.candidateBox.destroy(),(t.includes(\"layoutCandidatesPageSize\")||t.includes(\"layoutCandidates\"))&&this.candidateBox&&(this.candidateBox.destroy(),this.candidateBox=new w({utilities:this.utilities,options:this.options}))}},{key:\"resetRows\",value:function(){this.keyboardRowsDOM&&this.keyboardRowsDOM.remove(),this.keyboardDOM.className=this.keyboardDOMClass,this.keyboardDOM.setAttribute(\"data-skInstance\",this.currentInstanceName),this.buttonElements={}}},{key:\"dispatch\",value:function(t){if(!window.SimpleKeyboardInstances)throw console.warn(\"SimpleKeyboardInstances is not defined. Dispatch cannot be called.\"),new Error(\"INSTANCES_VAR_ERROR\");return Object.keys(window.SimpleKeyboardInstances).forEach((function(e){t(window.SimpleKeyboardInstances[e],e)}))}},{key:\"addButtonTheme\",value:function(t,e){var n=this;e&&t&&(t.split(\" \").forEach((function(o){e.split(\" \").forEach((function(e){n.options.buttonTheme||(n.options.buttonTheme=[]);var r=!1;n.options.buttonTheme.map((function(t){if(null!=t&&t.class.split(\" \").includes(e)){r=!0;var n=t.buttons.split(\" \");n.includes(o)||(r=!0,n.push(o),t.buttons=n.join(\" \"))}return t})),r||n.options.buttonTheme.push({class:e,buttons:t})}))})),this.render())}},{key:\"removeButtonTheme\",value:function(t,e){var n=this;if(!t&&!e)return this.options.buttonTheme=[],void this.render();t&&Array.isArray(this.options.buttonTheme)&&this.options.buttonTheme.length&&(t.split(\" \").forEach((function(t){var o;null===(o=n.options)||void 0===o||null===(o=o.buttonTheme)||void 0===o||o.map((function(o,r){if(o&&e&&e.includes(o.class)||!e){var i,a,s=null===(i=o)||void 0===i?void 0:i.buttons.split(\" \").filter((function(e){return e!==t}));o&&null!=s&&s.length?o.buttons=s.join(\" \"):(null===(a=n.options.buttonTheme)||void 0===a||a.splice(r,1),o=null)}return o}))})),this.render())}},{key:\"getButtonElement\",value:function(t){var e,n=this.buttonElements[t];return n&&(e=n.length>1?n:n[0]),e}},{key:\"inputPatternIsValid\",value:function(t){var e,n=this.options.inputPattern;if((e=n instanceof RegExp?n:n[this.options.inputName||this.defaultName])&&t){var o=e.test(t);return this.options.debug&&console.log('inputPattern (\"'.concat(e,'\"): ').concat(o?\"passed\":\"did not pass!\")),o}return!0}},{key:\"setEventListeners\",value:function(){if(this.isFirstKeyboardInstance||!this.allKeyboardInstances){this.options.debug&&console.log(\"Caret handling started (\".concat(this.keyboardDOMClass,\")\"));var t=this.options.physicalKeyboardHighlightPreventDefault,e=void 0!==t&&t;document.addEventListener(\"keyup\",this.handleKeyUp,e),document.addEventListener(\"keydown\",this.handleKeyDown,e),document.addEventListener(\"mouseup\",this.handleMouseUp),document.addEventListener(\"touchend\",this.handleTouchEnd),document.addEventListener(\"selectionchange\",this.handleSelectionChange),document.addEventListener(\"select\",this.handleSelect)}}},{key:\"handleKeyUp\",value:function(t){this.caretEventHandler(t),this.options.physicalKeyboardHighlight&&this.physicalKeyboard.handleHighlightKeyUp(t)}},{key:\"handleKeyDown\",value:function(t){this.options.physicalKeyboardHighlight&&this.physicalKeyboard.handleHighlightKeyDown(t)}},{key:\"handleMouseUp\",value:function(t){this.caretEventHandler(t)}},{key:\"handleTouchEnd\",value:function(t){this.caretEventHandler(t)}},{key:\"handleSelect\",value:function(t){this.caretEventHandler(t)}},{key:\"handleSelectionChange\",value:function(t){navigator.userAgent.includes(\"Firefox\")||this.caretEventHandler(t)}},{key:\"caretEventHandler\",value:function(t){var e,n=this;t.target.tagName&&(e=t.target.tagName.toLowerCase()),this.dispatch((function(o){var r=t.target===o.keyboardDOM||t.target&&o.keyboardDOM.contains(t.target);if(n.options.syncInstanceInputs&&Array.isArray(t.path)&&(r=t.path.some((function(t){var e;return null==t||null===(e=t.hasAttribute)||void 0===e?void 0:e.call(t,\"data-skInstance\")}))),(\"textarea\"===e||\"input\"===e&&[\"text\",\"search\",\"url\",\"tel\",\"password\"].includes(t.target.type))&&!o.options.disableCaretPositioning){var i=t.target.selectionStart,a=t.target.selectionEnd;o.options.rtl&&(i=o.utilities.getRtlOffset(i,o.getInput()),a=o.utilities.getRtlOffset(a,o.getInput())),o.setCaretPosition(i,a),n.activeInputElement=t.target,o.options.debug&&console.log(\"Caret at: \",o.getCaretPosition(),o.getCaretPositionEnd(),t&&t.target.tagName.toLowerCase(),\"(\".concat(o.keyboardDOMClass,\")\"),null==t?void 0:t.type)}else!o.options.disableCaretPositioning&&r||\"selectionchange\"===(null==t?void 0:t.type)||(o.setCaretPosition(null),n.activeInputElement=null,o.options.debug&&console.log('Caret position reset due to \"'.concat(null==t?void 0:t.type,'\" event'),t))}))}},{key:\"recurseButtons\",value:function(t){var e=this;t&&Object.keys(this.buttonElements).forEach((function(n){return e.buttonElements[n].forEach(t)}))}},{key:\"destroy\",value:function(){this.options.debug&&console.log(\"Destroying simple-keyboard instance: \".concat(this.currentInstanceName));var t=this.options.physicalKeyboardHighlightPreventDefault,e=void 0!==t&&t;document.removeEventListener(\"keyup\",this.handleKeyUp,e),document.removeEventListener(\"keydown\",this.handleKeyDown,e),document.removeEventListener(\"mouseup\",this.handleMouseUp),document.removeEventListener(\"touchend\",this.handleTouchEnd),document.removeEventListener(\"select\",this.handleSelect),document.removeEventListener(\"selectionchange\",this.handleSelectionChange),document.onpointerup=null,document.ontouchend=null,document.ontouchcancel=null,document.onmouseup=null,this.recurseButtons((function(t){t&&(t.onpointerdown=null,t.onpointerup=null,t.onpointercancel=null,t.ontouchstart=null,t.ontouchend=null,t.ontouchcancel=null,t.onclick=null,t.onmousedown=null,t.onmouseup=null,t.remove(),t=null)})),this.keyboardDOM.onpointerdown=null,this.keyboardDOM.ontouchstart=null,this.keyboardDOM.onmousedown=null,this.resetRows(),this.candidateBox&&(this.candidateBox.destroy(),this.candidateBox=null),this.activeInputElement=null,this.keyboardDOM.removeAttribute(\"data-skInstance\"),this.keyboardDOM.innerHTML=\"\",window.SimpleKeyboardInstances[this.currentInstanceName]=null,delete window.SimpleKeyboardInstances[this.currentInstanceName],this.initialized=!1}},{key:\"getButtonThemeClasses\",value:function(t){var e=this.options.buttonTheme,n=[];return Array.isArray(e)&&e.forEach((function(e){if(e&&e.class&&\"string\"==typeof e.class&&e.buttons&&\"string\"==typeof e.buttons){var o=e.class.split(\" \");e.buttons.split(\" \").includes(t)&&(n=[].concat(E(n),E(o)))}else console.warn('Incorrect \"buttonTheme\". Please check the documentation.',e)})),n}},{key:\"setDOMButtonAttributes\",value:function(t,e){var n=this.options.buttonAttributes;Array.isArray(n)&&n.forEach((function(n){n.attribute&&\"string\"==typeof n.attribute&&n.value&&\"string\"==typeof n.value&&n.buttons&&\"string\"==typeof n.buttons?n.buttons.split(\" \").includes(t)&&e(n.attribute,n.value):console.warn('Incorrect \"buttonAttributes\". Please check the documentation.',n)}))}},{key:\"onTouchDeviceDetected\",value:function(){this.processAutoTouchEvents(),this.disableContextualWindow()}},{key:\"disableContextualWindow\",value:function(){window.oncontextmenu=function(t){if(t.target.classList.contains(\"hg-button\"))return t.preventDefault(),t.stopPropagation(),!1}}},{key:\"processAutoTouchEvents\",value:function(){this.options.autoUseTouchEvents&&(this.options.useTouchEvents=!0,this.options.debug&&console.log(\"autoUseTouchEvents: Touch device detected, useTouchEvents enabled.\"))}},{key:\"onInit\",value:function(){this.options.debug&&console.log(\"\".concat(this.keyboardDOMClass,\" Initialized\")),this.setEventListeners(),\"function\"==typeof this.options.onInit&&this.options.onInit(this)}},{key:\"beforeFirstRender\",value:function(){this.utilities.isTouchDevice()&&this.onTouchDeviceDetected(),\"function\"==typeof this.options.beforeFirstRender&&this.options.beforeFirstRender(this),this.isFirstKeyboardInstance&&this.utilities.pointerEventsSupported()&&!this.options.useTouchEvents&&!this.options.useMouseEvents&&this.options.debug&&console.log(\"Using PointerEvents as it is supported by this browser\"),this.options.useTouchEvents&&this.options.debug&&console.log(\"useTouchEvents has been enabled. Only touch events will be used.\")}},{key:\"beforeRender\",value:function(){\"function\"==typeof this.options.beforeRender&&this.options.beforeRender(this)}},{key:\"onRender\",value:function(){\"function\"==typeof this.options.onRender&&this.options.onRender(this)}},{key:\"onModulesLoaded\",value:function(){\"function\"==typeof this.options.onModulesLoaded&&this.options.onModulesLoaded(this)}},{key:\"loadModules\",value:function(){var t=this;Array.isArray(this.options.modules)&&(this.options.modules.forEach((function(e){var n=new e(t);n.init&&n.init(t)})),this.keyboardPluginClasses=\"modules-loaded\",this.render(),this.onModulesLoaded())}},{key:\"getModuleProp\",value:function(t,e){return!!this.modules[t]&&this.modules[t][e]}},{key:\"getModulesList\",value:function(){return Object.keys(this.modules)}},{key:\"parseRowDOMContainers\",value:function(t,e,n,o){var r=this,i=Array.from(t.children),a=0;return i.length&&n.forEach((function(n,s){var u=o[s];if(!(u&&u>n))return!1;var c=n-a,l=u-a,f=document.createElement(\"div\");f.className+=\"hg-button-container\";var d=\"\".concat(r.options.layoutName,\"-r\").concat(e,\"c\").concat(s);f.setAttribute(\"data-skUID\",d);var p=i.splice(c,l-c+1);a=l-c,p.forEach((function(t){return f.appendChild(t)})),i.splice(c,0,f),t.innerHTML=\"\",i.forEach((function(e){return t.appendChild(e)})),r.options.debug&&console.log(\"rowDOMContainer\",p,c,l,a+1)})),t}},{key:\"render\",value:function(){var t=this;this.resetRows(),this.initialized||this.beforeFirstRender(),this.beforeRender();var e=\"hg-layout-\".concat(this.options.layoutName),n=this.options.layout||{default:[\"` 1 2 3 4 5 6 7 8 9 0 - = {bksp}\",\"{tab} q w e r t y u i o p [ ] \\\\\",\"{lock} a s d f g h j k l ; ' {enter}\",\"{shift} z x c v b n m , . / {shift}\",\".com @ {space}\"],shift:[\"~ ! @ # $ % ^ & * ( ) _ + {bksp}\",\"{tab} Q W E R T Y U I O P { } |\",'{lock} A S D F G H J K L : \" {enter}',\"{shift} Z X C V B N M < > ? {shift}\",\".com @ {space}\"]},o=this.options.useTouchEvents||!1,r=o?\"hg-touch-events\":\"\",i=this.options.useMouseEvents||!1,a=this.options.disableRowButtonContainers;this.keyboardDOM.className=this.getKeyboardClassString(this.options.theme,e,this.keyboardPluginClasses,r),this.keyboardDOM.setAttribute(\"data-skInstance\",this.currentInstanceName),this.keyboardRowsDOM=document.createElement(\"div\"),this.keyboardRowsDOM.className=\"hg-rows\",n[this.options.layoutName||this.defaultName].forEach((function(e,n){var r=e.split(\" \");t.options.excludeFromLayout&&t.options.excludeFromLayout[t.options.layoutName||t.defaultName]&&(r=r.filter((function(e){return t.options.excludeFromLayout&&!t.options.excludeFromLayout[t.options.layoutName||t.defaultName].includes(e)})));var s=document.createElement(\"div\");s.className+=\"hg-row\";var u=[],c=[];r.forEach((function(e,r){var l,f=!a&&\"string\"==typeof e&&e.length>1&&0===e.indexOf(\"[\"),d=!a&&\"string\"==typeof e&&e.length>1&&e.indexOf(\"]\")===e.length-1;f&&(u.push(r),e=e.replace(/\\[/g,\"\")),d&&(c.push(r),e=e.replace(/\\]/g,\"\"));var p=t.utilities.getButtonClass(e),h=t.utilities.getButtonDisplayName(e,t.options.display,t.options.mergeDisplay),v=t.options.useButtonTag?\"button\":\"div\",y=document.createElement(v);y.className+=\"hg-button \".concat(p),(l=y.classList).add.apply(l,E(t.getButtonThemeClasses(e))),t.setDOMButtonAttributes(e,(function(t,e){y.setAttribute(t,e)})),t.activeButtonClass=\"hg-activeButton\",!t.utilities.pointerEventsSupported()||o||i?o?(y.ontouchstart=function(n){t.handleButtonClicked(e,n),t.handleButtonMouseDown(e,n)},y.ontouchend=function(n){t.handleButtonMouseUp(e,n)},y.ontouchcancel=function(n){t.handleButtonMouseUp(e,n)}):(y.onclick=function(n){t.setMouseHold(!1),\"function\"!=typeof t.options.onKeyReleased&&t.handleButtonClicked(e,n)},y.onmousedown=function(n){\"function\"!=typeof t.options.onKeyReleased||t.isMouseHold||t.handleButtonClicked(e,n),t.handleButtonMouseDown(e,n)},y.onmouseup=function(n){t.handleButtonMouseUp(e,n)}):(y.onpointerdown=function(n){t.handleButtonClicked(e,n),t.handleButtonMouseDown(e,n)},y.onpointerup=function(n){t.handleButtonMouseUp(e,n)},y.onpointercancel=function(n){t.handleButtonMouseUp(e,n)}),y.setAttribute(\"data-skBtn\",e);var g=\"\".concat(t.options.layoutName,\"-r\").concat(n,\"b\").concat(r);y.setAttribute(\"data-skBtnUID\",g);var m=document.createElement(\"span\");m.innerHTML=h,y.appendChild(m),t.buttonElements[e]||(t.buttonElements[e]=[]),t.buttonElements[e].push(y),s.appendChild(y)})),s=t.parseRowDOMContainers(s,n,u,c),t.keyboardRowsDOM.appendChild(s)})),this.keyboardDOM.appendChild(this.keyboardRowsDOM),this.onRender(),this.initialized||(this.initialized=!0,!this.utilities.pointerEventsSupported()||o||i?o?(document.ontouchend=function(e){return t.handleButtonMouseUp(void 0,e)},document.ontouchcancel=function(e){return t.handleButtonMouseUp(void 0,e)},this.keyboardDOM.ontouchstart=function(e){return t.handleKeyboardContainerMouseDown(e)}):o||(document.onmouseup=function(e){return t.handleButtonMouseUp(void 0,e)},this.keyboardDOM.onmousedown=function(e){return t.handleKeyboardContainerMouseDown(e)}):(document.onpointerup=function(e){return t.handleButtonMouseUp(void 0,e)},this.keyboardDOM.onpointerdown=function(e){return t.handleKeyboardContainerMouseDown(e)}),this.onInit())}}],n&&P(e.prototype,n),o&&P(e,o),Object.defineProperty(e,\"prototype\",{writable:!1}),t}(),M=A,T=A}(),o}()}));"],"names":["t","e","module","this","n","o","i","a","s","u","l","f","d","p","h","v","y","g","m","b","x","w","E","O","S","c","r","k","P","I","C","A","M","R","j","T","D","N","L","B","K","F","_","H","U","$","G","V","z","Y","W","X","J","q","Q","Z","tt","et","nt","ot","rt","it","at","st","ut","ct","lt","ht","ft","dt"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.cjs87.js","sources":["../../../node_modules/citeproc/citeproc_commonjs.js"],"sourcesContent":["/*\nCopyright (c) 2009-2019 Frank Bennett\n\n\tThis program is free software: you can redistribute it and/or\n\tmodify it under EITHER\n\n * the terms of the Common Public Attribution License (CPAL) as\n\t published by the Open Source Initiative, either version 1 of\n\t the CPAL, or (at your option) any later version; OR\n\n * the terms of the GNU Affero General Public License (AGPL)\n as published by the Free Software Foundation, either version\n 3 of the AGPL, or (at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n\tAffero General Public License for more details.\n\n\tYou should have received copies of the Common Public Attribution\n License and of the GNU Affero General Public License along with\n this program. If not, see <https://opensource.org/licenses/> or\n <http://www.gnu.org/licenses/> respectively.\n*/\n/*global CSL: true */\n\n/**\n * A Javascript implementation of the CSL citation formatting language.\n *\n * <p>A configured instance of the process is built in two stages,\n * using {@link CSL.Core.Build} and {@link CSL.Core.Configure}.\n * The former sets up hash-accessible locale data and imports the CSL format file\n * to be applied to the citations,\n * transforming it into a one-dimensional token list, and\n * registering functions and parameters on each token as appropriate.\n * The latter sets jump-point information\n * on tokens that constitute potential branch\n * points, in a single back-to-front scan of the token list.\n * This\n * yields a token list that can be executed front-to-back by\n * body methods available on the\n * {@link CSL.Engine} class.</p>\n *\n * <p>This top-level {@link CSL} object itself carries\n * constants that are needed during processing.</p>\n * @namespace A CSL citation formatter.\n */\n\n// IE6 does not implement Array.indexOf().\n// IE7 neither, according to rumour.\n\n\n// Potential skip words:\n// under; along; out; between; among; outside; inside; amid; amidst; against; toward; towards.\n// See https://forums.zotero.org/discussion/30484/?Focus=159613#Comment_159613\n\n'use strict';\n\n\nvar CSL = {\n\n PROCESSOR_VERSION: \"1.4.61\",\n\n error: function(str) { // default error function\n if (\"undefined\" === typeof Error) {\n throw new Error(\"citeproc-js error: \" + str);\n } else {\n throw \"citeproc-js error: \" + str;\n }\n },\n debug: function(str) { // default debug function\n if (\"undefined\" === typeof console) {\n dump(\"CSL: \" + str + \"\\n\");\n } else {\n console.log(\"citeproc-js warning: \" + str);\n }\n },\n\n toLocaleUpperCase(str) {\n var arr = this.tmp.lang_array;\n try {\n str = str.toLocaleUpperCase(arr);\n } catch (e) {\n str = str.toUpperCase();\n }\n return str;\n },\n\n toLocaleLowerCase(str) {\n var arr = this.tmp.lang_array;\n try {\n str = str.toLocaleLowerCase(arr);\n } catch (e) {\n str = str.toLowerCase();\n }\n return str;\n },\n\n LOCATOR_LABELS_REGEXP: new RegExp(\"^((vrs|sv|subpara|op|subch|add|amend|annot|app|art|bibliog|bk|ch|cl|col|cmt|dec|dept|div|ex|fig|fld|fol|n|hypo|illus|intro|l|no|p|pp|para|pt|pmbl|princ|pub|r|rn|sched|sec|ser|subdiv|subsec|supp|tbl|tit|vol)\\\\.)\\\\s+(.*)\"),\n\n STATUTE_SUBDIV_PLAIN_REGEX: /(?:(?:^| )(?:vrs|sv|subpara|op|subch|add|amend|annot|app|art|bibliog|bk|ch|cl|col|cmt|dec|dept|div|ex|fig|fld|fol|n|hypo|illus|intro|l|no|p|pp|para|pt|pmbl|princ|pub|r|rn|sched|sec|ser|subdiv|subsec|supp|tbl|tit|vol)\\. *)/,\n STATUTE_SUBDIV_PLAIN_REGEX_FRONT: /(?:^\\s*[.,;]*\\s*(?:vrs|sv|subpara|op|subch|add|amend|annot|app|art|bibliog|bk|ch|cl|col|cmt|dec|dept|div|ex|fig|fld|fol|n|hypo|illus|intro|l|no|p|pp|para|pt|pmbl|princ|pub|r|rn|sched|sec|ser|subdiv|subsec|supp|tbl|tit|vol)\\. *)/,\n \n STATUTE_SUBDIV_STRINGS: {\n \"vrs.\": \"verse\",\n\t\t\"sv.\": \"sub-verbo\",\n \"subpara.\": \"subparagraph\",\n \"op.\": \"opus\",\n \"subch.\": \"subchapter\",\n \"add.\": \"addendum\",\n \"amend.\": \"amendment\",\n \"annot.\": \"annotation\",\n \"app.\": \"appendix\",\n \"art.\": \"article\",\n \"bibliog.\": \"bibliography\",\n \"bk.\": \"book\",\n \"ch.\": \"chapter\",\n \"cl.\": \"clause\",\n \"col.\": \"column\",\n \"cmt.\": \"comment\",\n \"dec.\": \"decision\",\n \"dept.\": \"department\",\n \"ex.\": \"example\",\n \"fig.\": \"figure\",\n \"fld.\": \"field\",\n \"fol.\": \"folio\",\n \"n.\": \"note\",\n \"hypo.\": \"hypothetical\",\n \"illus.\": \"illustration\",\n \"intro.\": \"introduction\",\n \"l.\": \"line\",\n \"no.\": \"issue\",\n \"p.\": \"page\",\n \"pp.\": \"page\",\n \"para.\": \"paragraph\",\n \"pt.\": \"part\",\n \"pmbl.\": \"preamble\",\n \"princ.\": \"principle\",\n \"pub.\": \"publication\",\n \"r.\": \"rule\",\n \"rn.\": \"randnummer\",\n \"sched.\": \"schedule\",\n \"sec.\": \"section\",\n \"ser.\": \"series,\",\n \"subdiv.\": \"subdivision\",\n \"subsec.\": \"subsection\",\n \"supp.\": \"supplement\",\n \"tbl.\": \"table\",\n \"tit.\": \"title\",\n \"vol.\": \"volume\"\n },\n STATUTE_SUBDIV_STRINGS_REVERSE: {\n \"verse\": \"vrs.\",\n\t\t\"sub-verbo\": \"sv.\",\n \"sub verbo\": \"sv.\",\n \"subparagraph\": \"subpara.\",\n \"opus\": \"op.\",\n \"subchapter\": \"subch.\",\n \"addendum\": \"add.\",\n \"amendment\": \"amend.\",\n \"annotation\": \"annot.\",\n \"appendix\": \"app.\",\n \"article\": \"art.\",\n \"bibliography\": \"bibliog.\",\n \"book\": \"bk.\",\n \"chapter\": \"ch.\",\n \"clause\": \"cl.\",\n \"column\": \"col.\",\n \"comment\": \"cmt.\",\n \"decision\": \"dec.\",\n \"department\": \"dept.\",\n \"example\": \"ex.\",\n \"figure\": \"fig.\",\n \"field\": \"fld.\",\n \"folio\": \"fol.\",\n \"note\": \"n.\",\n \"hypothetical\": \"hypo.\",\n \"illustration\": \"illus.\",\n \"introduction\": \"intro.\",\n \"line\": \"l.\",\n \"issue\": \"no.\",\n \"page\": \"p.\",\n \"paragraph\": \"para.\",\n \"part\": \"pt.\",\n \"preamble\": \"pmbl.\",\n \"principle\": \"princ.\",\n \"publication\": \"pub.\",\n \"rule\": \"r.\",\n \"randnummer\": \"rn.\",\n \"schedule\": \"sched.\",\n \"section\": \"sec.\",\n \"series,\": \"ser.\",\n \"subdivision\": \"subdiv.\",\n \"subsection\": \"subsec.\",\n \"supplement\": \"supp.\",\n \"table\": \"tbl.\",\n \"title\": \"tit.\",\n \"volume\": \"vol.\"\n },\n\n LOCATOR_LABELS_MAP: {\n \"vrs\": \"verse\",\n\t\t\"sv\": \"sub-verbo\",\n \"subpara\": \"subparagraph\",\n \"op\": \"opus\",\n \"subch\": \"subchapter\",\n \"add\": \"addendum\",\n \"amend\": \"amendment\",\n \"annot\": \"annotation\",\n \"app\": \"appendix\",\n \"art\": \"article\",\n \"bibliog\": \"bibliography\",\n \"bk\": \"book\",\n \"ch\": \"chapter\",\n \"cl\": \"clause\",\n \"col\": \"column\",\n \"cmt\": \"comment\",\n \"dec\": \"decision\",\n \"dept\": \"department\",\n \"ex\": \"example\",\n \"fig\": \"figure\",\n \"fld\": \"field\",\n \"fol\": \"folio\",\n \"n\": \"note\",\n \"hypo\": \"hypothetical\",\n \"illus\": \"illustration\",\n \"intro\": \"introduction\",\n \"l\": \"line\",\n \"no\": \"issue\",\n \"p\": \"page\",\n \"pp\": \"page\",\n \"para\": \"paragraph\",\n \"pt\": \"part\",\n \"pmbl\": \"preamble\",\n \"princ\": \"principle\",\n \"pub\": \"publication\",\n \"r\": \"rule\",\n \"rn\": \"randnummer\",\n \"sched\": \"schedule\",\n \"sec\": \"section\",\n \"ser\": \"series,\",\n \"subdiv\": \"subdivision\",\n \"subsec\": \"subsection\",\n \"supp\": \"supplement\",\n \"tbl\": \"table\",\n \"tit\": \"title\",\n \"vol\": \"volume\"\n },\n MODULE_MACROS: {\n \"juris-pretitle\": true,\n \"juris-title\": true,\n \"juris-pretitle-short\": true,\n \"juris-title-short\": true,\n \"juris-main\": true,\n \"juris-main-short\": true,\n \"juris-tail\": true,\n \"juris-tail-short\": true,\n \"juris-locator\": true\n },\n MODULE_TYPES: {\n \"legal_case\": true,\n \"legislation\": true,\n \"bill\": true,\n \"hearing\": true,\n \"gazette\": true,\n \"report\": true,\n \"regulation\": true,\n \"standard\": true,\n \"patent\": true,\n \"locator\": true\n },\n checkNestedBrace: function(state) {\n if (state.opt.xclass === \"note\") {\n this.depth = 0;\n this.update = function(str) {\n \n // Receives affix string, returns with flipped parens.\n \n var str = str ? str : \"\";\n var lst = str.split(/([\\(\\)])/);\n for (var i=1,ilen=lst.length;i<ilen;i += 2) {\n if (lst[i] === \"(\") {\n if (1 === (this.depth % 2)) {\n lst[i] = \"[\";\n }\n this.depth += 1;\n } else if (lst[i] === \")\") {\n if (0 === (this.depth % 2)) {\n lst[i] = \"]\";\n }\n this.depth -= 1;\n }\n }\n var ret = lst.join(\"\");\n return ret;\n };\n } else {\n this.update = function(str) {\n return str;\n };\n }\n },\n\n MULTI_FIELDS: [\"event\", \"publisher\", \"publisher-place\", \"event-place\", \"title\", \"container-title\", \"collection-title\", \"authority\",\"genre\",\"title-short\",\"medium\",\"country\",\"jurisdiction\",\"archive\",\"archive-place\"],\n\n LangPrefsMap: {\n \"title\":\"titles\",\n \"title-short\":\"titles\",\n \"event\":\"titles\",\n \"genre\":\"titles\",\n \"medium\":\"titles\",\n \"container-title\":\"journals\",\n \"collection-title\":\"titles\",\n \"archive\":\"journals\",\n \"publisher\":\"publishers\",\n \"authority\":\"publishers\",\n \"publisher-place\": \"places\",\n \"event-place\": \"places\",\n \"archive-place\": \"places\",\n \"jurisdiction\": \"places\",\n \"number\": \"places\",\n \"edition\":\"places\",\n \"issue\":\"places\",\n \"volume\":\"places\"\n },\n\n AbbreviationSegments: function () {\n this[\"container-title\"] = {};\n this[\"collection-title\"] = {};\n this[\"institution-entire\"] = {};\n this[\"institution-part\"] = {};\n this.nickname = {};\n this.number = {};\n this.title = {};\n this.place = {};\n this.hereinafter = {};\n this.classic = {};\n this[\"container-phrase\"] = {};\n this[\"title-phrase\"] = {};\n },\n\n getAbbrevsDomain: function (state, country, lang) {\n\t\tvar domain = null;\n if (state.opt.availableAbbrevDomains && country && country !== \"default\") {\n\t var globalDomainPreference = state.locale[state.opt.lang].opts[\"jurisdiction-preference\"];\n\t\t var itemDomainPreference = null;\n\t\t if (state.locale[lang]) {\n\t\t\t itemDomainPreference = state.locale[lang].opts[\"jurisdiction-preference\"];\n\t\t }\n\t\t if (itemDomainPreference) {\n\t\t\t for (var j=itemDomainPreference.length-1; j > -1; j--) {\n\t\t\t\t if (state.opt.availableAbbrevDomains[country].indexOf(itemDomainPreference[j]) > -1) {\n\t\t\t\t\t domain = itemDomainPreference[j];\n\t\t\t\t\t break;\n\t\t\t\t }\n\t\t\t }\n\t\t }\n\t\t if (!domain && globalDomainPreference) {\n\t\t\t for (var j=globalDomainPreference.length-1; j > -1; j--) {\n\t\t\t\t if (state.opt.availableAbbrevDomains[country].indexOf(globalDomainPreference[j]) > -1) {\n\t\t\t\t\t domain = globalDomainPreference[j];\n\t\t\t\t\t break;\n\t\t\t\t }\n\t\t\t }\n\t\t }\n }\n return domain;\n },\n \n FIELD_CATEGORY_REMAP: {\n \"title\": \"title\",\n \"container-title\": \"container-title\",\n \"collection-title\": \"collection-title\",\n \"country\": \"place\",\n \"number\": \"number\",\n \"place\": \"place\",\n \"archive\": \"container-title\",\n \"title-short\": \"title\",\n \"genre\": \"title\",\n \"event\": \"title\",\n \"medium\": \"title\",\n\t\t\"archive-place\": \"place\",\n\t\t\"publisher-place\": \"place\",\n\t\t\"event-place\": \"place\",\n\t\t\"jurisdiction\": \"place\",\n\t\t\"language-name\": \"place\",\n\t\t\"language-name-original\": \"place\",\n \"call-number\": \"number\",\n \"chapter-number\": \"number\",\n \"collection-number\": \"number\",\n \"edition\": \"number\",\n \"page\": \"number\",\n \"issue\": \"number\",\n \"locator\": \"number\",\n \"locator-extra\": \"number\",\n \"number-of-pages\": \"number\",\n \"number-of-volumes\": \"number\",\n \"volume\": \"number\",\n \"citation-number\": \"number\",\n \"publisher\": \"institution-part\"\n },\n \n parseLocator: function(item) {\n if (this.opt.development_extensions.locator_date_and_revision) {\n // Break out locator elements if necessary\n if (item.locator) {\n item.locator = \"\" + item.locator;\n var idx = item.locator.indexOf(\"|\");\n if (idx > -1) {\n var raw_locator = item.locator;\n item.locator = raw_locator.slice(0, idx);\n raw_locator = raw_locator.slice(idx + 1);\n var m = raw_locator.match(/^([0-9]{4}-[0-9]{2}-[0-9]{2}).*/);\n if (m) {\n item[\"locator-date\"] = this.fun.dateparser.parseDateToObject(m[1]);\n raw_locator = raw_locator.slice(m[1].length);\n }\n item[\"locator-extra\"] = raw_locator.replace(/^\\s+/, \"\").replace(/\\s+$/, \"\");\n }\n }\n }\n if (item.locator) {\n item.locator = (\"\" + item.locator).replace(/\\s+$/, '');\n }\n return item;\n },\n\n normalizeLocaleStr: function(str) {\n if (!str) {\n return;\n }\n var lst = str.split('-');\n lst[0] = lst[0].toLowerCase();\n if (lst[1]) {\n lst[1] = lst[1].toUpperCase();\n }\n return lst.join(\"-\");\n },\n\n parseNoteFieldHacks: function(Item, validFieldsForType, allowDateOverride) {\n if (\"string\" !== typeof Item.note) {\n return;\n }\n var elems = [];\n var lines = Item.note.split('\\n');\n // Normalize entries\n for (var i=0, ilen=lines.length; i<ilen; i++) {\n var line = lines[i];\n var elems = [];\n var m = line.match(CSL.NOTE_FIELDS_REGEXP);\n if (m) {\n var splt = line.split(CSL.NOTE_FIELDS_REGEXP);\n for (var j=0,jlen=(splt.length-1);j<jlen;j++) {\n elems.push(splt[j]);\n elems.push(m[j]);\n }\n elems.push(splt[splt.length-1]);\n for (var j=1,jlen=elems.length;j<jlen;j += 2) {\n // Abort conversions if preceded by unparseable text\n if (elems[j-1].trim() && (i>0 || j>1) && !elems[j-1].match(CSL.NOTE_FIELD_REGEXP)) {\n break;\n } else {\n elems[j] = '\\n' + elems[j].slice(2,-1).trim() + '\\n';\n }\n }\n lines[i] = elems.join('');\n }\n }\n // Resplit\n lines = lines.join('\\n').split('\\n');\n var offset = 0;\n var names = {};\n for (var i=0,ilen=lines.length;i<ilen;i++) {\n var line = lines[i];\n var mm = line.match(CSL.NOTE_FIELD_REGEXP);\n if (!line.trim()) {\n continue;\n } else if (!mm) {\n if (i === 0) {\n continue;\n } else {\n offset = i;\n break;\n }\n }\n var key = mm[1];\n var val = mm[2].replace(/^\\s+/, \"\").replace(/\\s+$/, \"\");\n if (key === \"type\") {\n Item.type = val;\n lines[i] = \"\";\n } else if (CSL.DATE_VARIABLES.indexOf(key.replace(/^alt-/, \"\")) > -1) {\n if (!Item[key] || allowDateOverride) {\n Item[key] = CSL.DateParser.parseDateToArray(val);\n if (!validFieldsForType || (validFieldsForType[key] && this.isDateString(val))) {\n lines[i] = \"\";\n }\n }\n } else if (!Item[key]) {\n if (CSL.NAME_VARIABLES.indexOf(key.replace(/^alt-/, \"\")) > -1) {\n if (!names[key]) {\n names[key] = [];\n }\n var lst = val.split(/\\s*\\|\\|\\s*/);\n if (lst.length === 1) {\n names[key].push({literal:lst[0]});\n } else if (lst.length === 2) {\n var name = {family:lst[0],given:lst[1]};\n CSL.parseParticles(name);\n names[key].push(name);\n }\n } else {\n Item[key] = val;\n }\n if (!validFieldsForType || validFieldsForType[key]) {\n lines[i] = \"\";\n }\n }\n }\n for (var key in names) {\n Item[key] = names[key];\n }\n // Final cleanup for validCslFields only: eliminate blank lines, add blank line to text\n if (validFieldsForType) {\n if (lines[offset].trim()) {\n lines[offset] = '\\n' + lines[offset];\n }\n for (var i=offset-1;i>-1;i--) {\n if (!lines[i].trim()) {\n lines = lines.slice(0, i).concat(lines.slice(i + 1));\n }\n }\n }\n Item.note = lines.join(\"\\n\").trim();\n },\n\n checkPrefixSpaceAppend: function (state, prefix) {\n if (!prefix) {\n prefix = \"\";\n }\n var sp = \"\";\n // We need the raw string, without decorations\n // of any kind. Markup scheme is known, though, so\n // markup can be safely stripped at string level.\n //\n // U+201d = right double quotation mark\n // U+2019 = right single quotation mark\n // U+00bb = right double angle bracket (guillemet)\n // U+202f = non-breaking thin space\n // U+00a0 = non-breaking space\n var test_prefix = prefix.replace(/<[^>]+>/g, \"\").replace(/[\"'\\u201d\\u2019\\u00bb\\u202f\\u00a0 ]+$/g,\"\");\n var test_char = test_prefix.slice(-1);\n if (test_prefix.match(CSL.ENDSWITH_ROMANESQUE_REGEXP)) {\n sp = \" \";\n } else if (CSL.TERMINAL_PUNCTUATION.slice(0,-1).indexOf(test_char) > -1) {\n sp = \" \";\n } else if (test_char.match(/[\\)\\],0-9]/)) {\n sp = \" \";\n }\n // Protect against double spaces, which would trigger an extra,\n // explicit, non-breaking space.\n var prefix = (prefix + sp).replace(/\\s+/g, \" \");\n return prefix;\n },\n\n checkIgnorePredecessor: function(state, prefix) {\n var ignorePredecessor = false;\n var test_prefix = prefix.replace(/<[^>]+>/g, \"\").replace(/[\"'\\u201d\\u2019\\u00bb\\u202f\\u00a0 ]+$/g,\"\");\n var test_char = test_prefix.slice(-1);\n if (CSL.TERMINAL_PUNCTUATION.slice(0,-1).indexOf(test_char) > -1 && prefix.trim().indexOf(\" \") > -1) {\n state.tmp.term_predecessor = false;\n return true;\n }\n return false;\n },\n\n checkSuffixSpacePrepend: function(state, suffix) {\n if (!suffix) {\n return \"\";\n }\n if (suffix.match(CSL.STARTSWITH_ROMANESQUE_REGEXP) || ['[','('].indexOf(suffix.slice(0,1)) > -1) {\n suffix = \" \" + suffix;\n }\n return suffix;\n },\n \n GENDERS: [\"masculine\", \"feminine\"],\n \n ERROR_NO_RENDERED_FORM: 1,\n\n PREVIEW: \"Just for laughs.\",\n ASSUME_ALL_ITEMS_REGISTERED: 2,\n\n START: 0,\n END: 1,\n SINGLETON: 2,\n\n SEEN: 6,\n SUCCESSOR: 3,\n SUCCESSOR_OF_SUCCESSOR: 4,\n SUPPRESS: 5,\n\n SINGULAR: 0,\n PLURAL: 1,\n\n LITERAL: true,\n\n BEFORE: 1,\n AFTER: 2,\n\n DESCENDING: 1,\n ASCENDING: 2,\n\n PRIMARY: 1,\n SECONDARY: 2,\n \n POSITION_FIRST: 0,\n POSITION_SUBSEQUENT: 1,\n POSITION_IBID: 2,\n POSITION_IBID_WITH_LOCATOR: 3,\n POSITION_CONTAINER_SUBSEQUENT: 4,\n\n POSITION_MAP: {\n \"0\": 0,\n \"4\": 1,\n \"1\": 2,\n \"2\": 3,\n \"3\": 4\n },\n \n POSITION_TEST_VARS: [\"position\", \"first-reference-note-number\", \"near-note\"],\n\n AREAS: [\"citation\", \"citation_sort\", \"bibliography\", \"bibliography_sort\", \"intext\"],\n\n CITE_FIELDS: [\"first-reference-note-number\", \"first-container-reference-note-number\", \"locator\", \"locator-extra\"],\n\n SWAPPING_PUNCTUATION: [\".\", \"!\", \"?\", \":\", \",\"],\n TERMINAL_PUNCTUATION: [\":\", \".\", \";\", \"!\", \"?\", \" \"],\n\n // update modes\n NONE: 0,\n NUMERIC: 1,\n POSITION: 2,\n TRIGRAPH: 3,\n\n DATE_PARTS: [\"year\", \"month\", \"day\"],\n DATE_PARTS_ALL: [\"year\", \"month\", \"day\", \"season\"],\n DATE_PARTS_INTERNAL: [\"year\", \"month\", \"day\", \"year_end\", \"month_end\", \"day_end\"],\n\n NAME_PARTS: [\"non-dropping-particle\", \"family\", \"given\", \"dropping-particle\", \"suffix\", \"literal\"],\n\n DISAMBIGUATE_OPTIONS: [\n \"disambiguate-add-names\",\n \"disambiguate-add-givenname\",\n \"disambiguate-add-year-suffix\"\n ],\n\n GIVENNAME_DISAMBIGUATION_RULES: [\n \"all-names\",\n \"all-names-with-initials\",\n \"primary-name\",\n \"primary-name-with-initials\",\n \"by-cite\"\n ],\n\n NAME_ATTRIBUTES: [\n \"and\",\n \"delimiter-precedes-last\",\n \"delimiter-precedes-et-al\",\n \"initialize-with\",\n \"initialize\",\n \"name-as-sort-order\",\n \"sort-separator\",\n \"et-al-min\",\n \"et-al-use-first\",\n \"et-al-subsequent-min\",\n \"et-al-subsequent-use-first\",\n \"form\",\n \"prefix\",\n \"suffix\",\n \"delimiter\"\n ],\n\n LOOSE: 0,\n STRICT: 1,\n TOLERANT: 2,\n\n PREFIX_PUNCTUATION: /[.;:]\\s*$/,\n SUFFIX_PUNCTUATION: /^\\s*[.;:,\\(\\)]/,\n\n NUMBER_REGEXP: /(?:^\\d+|\\d+$)/,\n //\n // \\u0400-\\u042f are cyrillic and extended cyrillic capitals\n // this is not fully smart yet. can't do what this was trying to do\n // with regexps, actually; we want to identify strings with a leading\n // capital letter, and any subsequent capital letters. Have to compare\n // locale caps version with existing version, character by character.\n // hard stuff, but if it breaks, that's what to do.\n // \\u0600-\\u06ff is Arabic/Persian\n // \\u200c-\\u200e and \\u202a-\\u202e are special spaces and left-right \n // control characters\n\n\n\n NAME_INITIAL_REGEXP: /^([A-Z\\u0e01-\\u0e5b\\u00c0-\\u017f\\u0400-\\u042f\\u0590-\\u05d4\\u05d6-\\u05ff\\u0600-\\u06ff\\u0370\\u0372\\u0376\\u0386\\u0388-\\u03ab\\u03e2\\u03e4\\u03e6\\u03e8\\u03ea\\u03ec\\u03ee\\u03f4\\u03f7\\u03fd-\\u03ff])([a-zA-Z\\u0e01-\\u0e5b\\u00c0-\\u017f\\u0400-\\u052f\\u0600-\\u06ff\\u0370-\\u03ff\\u1f00-\\u1fff]*|)(\\.)*/,\n ROMANESQUE_REGEXP: /[-0-9a-zA-Z\\u0e01-\\u0e5b\\u00c0-\\u017f\\u0370-\\u03ff\\u0400-\\u052f\\u0590-\\u05d4\\u05d6-\\u05ff\\u1f00-\\u1fff\\u0600-\\u06ff\\u200c\\u200d\\u200e\\u0218\\u0219\\u021a\\u021b\\u202a-\\u202e]/,\n ROMANESQUE_NOT_REGEXP: /[^a-zA-Z\\u0e01-\\u0e5b\\u00c0-\\u017f\\u0370-\\u03ff\\u0400-\\u052f\\u0590-\\u05d4\\u05d6-\\u05ff\\u1f00-\\u1fff\\u0600-\\u06ff\\u200c\\u200d\\u200e\\u0218\\u0219\\u021a\\u021b\\u202a-\\u202e]/g,\n STARTSWITH_ROMANESQUE_REGEXP: /^[&a-zA-Z\\u0e01-\\u0e5b\\u00c0-\\u017f\\u0370-\\u03ff\\u0400-\\u052f\\u0590-\\u05d4\\u05d6-\\u05ff\\u1f00-\\u1fff\\u0600-\\u06ff\\u200c\\u200d\\u200e\\u0218\\u0219\\u021a\\u021b\\u202a-\\u202e]/,\n ENDSWITH_ROMANESQUE_REGEXP: /[.;:&a-zA-Z\\u0e01-\\u0e5b\\u00c0-\\u017f\\u0370-\\u03ff\\u0400-\\u052f\\u0590-\\u05d4\\u05d6-\\u05ff\\u1f00-\\u1fff\\u0600-\\u06ff\\u200c\\u200d\\u200e\\u0218\\u0219\\u021a\\u021b\\u202a-\\u202e]$/,\n ALL_ROMANESQUE_REGEXP: /^[a-zA-Z\\u0e01-\\u0e5b\\u00c0-\\u017f\\u0370-\\u03ff\\u0400-\\u052f\\u0590-\\u05d4\\u05d6-\\u05ff\\u1f00-\\u1fff\\u0600-\\u06ff\\u200c\\u200d\\u200e\\u0218\\u0219\\u021a\\u021b\\u202a-\\u202e]+$/,\n\n VIETNAMESE_SPECIALS: /[\\u00c0-\\u00c3\\u00c8-\\u00ca\\u00cc\\u00cd\\u00d2-\\u00d5\\u00d9\\u00da\\u00dd\\u00e0-\\u00e3\\u00e8-\\u00ea\\u00ec\\u00ed\\u00f2-\\u00f5\\u00f9\\u00fa\\u00fd\\u0101\\u0103\\u0110\\u0111\\u0128\\u0129\\u0168\\u0169\\u01a0\\u01a1\\u01af\\u01b0\\u1ea0-\\u1ef9]/,\n\n VIETNAMESE_NAMES: /^(?:(?:[.AaBbCcDdEeGgHhIiKkLlMmNnOoPpQqRrSsTtUuVvXxYy \\u00c0-\\u00c3\\u00c8-\\u00ca\\u00cc\\u00cd\\u00d2-\\u00d5\\u00d9\\u00da\\u00dd\\u00e0-\\u00e3\\u00e8-\\u00ea\\u00ec\\u00ed\\u00f2-\\u00f5\\u00f9\\u00fa\\u00fd\\u0101\\u0103\\u0110\\u0111\\u0128\\u0129\\u0168\\u0169\\u01a0\\u01a1\\u01af\\u01b0\\u1ea0-\\u1ef9]{2,6})(\\s+|$))+$/,\n\n NOTE_FIELDS_REGEXP: /\\{:(?:[\\-_a-z]+|[A-Z]+):[^\\}]+\\}/g,\n NOTE_FIELD_REGEXP: /^([\\-_a-z]+|[A-Z]+):\\s*([^\\}]+)$/,\n\n\tPARTICLE_GIVEN_REGEXP: /^([^ ]+(?:\\u02bb |\\u2019 | |\\' ) *)(.+)$/,\n\tPARTICLE_FAMILY_REGEXP: /^([^ ]+(?:\\-|\\u02bb|\\u2019| |\\') *)(.+)$/,\n\n DISPLAY_CLASSES: [\"block\", \"left-margin\", \"right-inline\", \"indent\"],\n\n NAME_VARIABLES: [\n \"author\",\n \"chair\",\n \"collection-editor\",\n \"compiler\",\n \"composer\",\n \"container-author\",\n \"contributor\",\n \"curator\",\n \"director\",\n \"editor\",\n \"editor-translator\", \n \"editorial-director\",\n \"executive-producer\",\n \"guest\",\n \"host\",\n \"illustrator\",\n \"interviewer\",\n \"narrator\", \n \"organizer\",\n \"original-author\",\n \"performer\",\n \"producer\",\n \"recipient\",\n \"reviewed-author\",\n \"script-writer\",\n \"series-creator\",\n \"translator\",\n \"commenter\"\n ],\n CREATORS: [\n \"author\",\n \"chair\",\n \"collection-editor\",\n \"compiler\",\n \"composer\",\n \"container-author\",\n \"contributor\",\n \"curator\",\n \"director\",\n \"editor\",\n \"editor-translator\", \n \"editorial-director\",\n \"executive-producer\",\n \"guest\",\n \"host\",\n \"illustrator\",\n \"interviewer\",\n \"narrator\", \n \"organizer\",\n \"original-author\",\n \"performer\",\n \"producer\",\n \"recipient\",\n \"reviewed-author\",\n \"script-writer\",\n \"series-creator\",\n \"translator\",\n \"commenter\"\n ],\n NUMERIC_VARIABLES: [\n \"call-number\",\n \"chapter-number\",\n \"collection-number\",\n \"division\",\n \"edition\",\n \"page\",\n \"issue\",\n \"locator\",\n \"locator-extra\",\n \"number\",\n \"number-of-pages\",\n \"number-of-volumes\",\n \"part-number\",\n \"printing-number\",\n \"section\",\n \"supplement-number\",\n \"version\",\n \"volume\",\n \"supplement\", // maybe deprecated this? supplement-number should serve this purpose in standard CSL.\n \"citation-number\"\n ],\n //var x = new Array();\n //x = x.concat([\"title\",\"container-title\",\"issued\",\"page\"]);\n //x = x.concat([\"locator\",\"collection-number\",\"original-date\"]);\n //x = x.concat([\"reporting-date\",\"decision-date\",\"filing-date\"]);\n //x = x.concat([\"revision-date\"]);\n //NUMERIC_VARIABLES = x.slice();\n DATE_VARIABLES: [\n \"locator-date\", \n \"issued\", \n \"event-date\", \n \"accessed\", \n \"original-date\",\n \"publication-date\",\n \"available-date\",\n \"submitted\",\n \"alt-issued\",\n \"alt-event\"\n ],\n VARIABLES_WITH_SHORT_FORM: [\n \"title\",\n \"container-title\"\n ],\n TITLE_FIELD_SPLITS: function(seg) {\n var keys = [\"title\", \"short\", \"main\", \"sub\", \"subjoin\"];\n var ret = {};\n for (var i=0,ilen=keys.length;i<ilen;i++) {\n ret[keys[i]] = seg + \"title\" + (keys[i] === \"title\" ? \"\" : \"-\" + keys[i]);\n }\n return ret;\n },\n \n demoteNoiseWords: function (state, fld, drop_or_demote) {\n var SKIP_WORDS = state.locale[state.opt.lang].opts[\"leading-noise-words\"];\n if (fld && drop_or_demote) {\n fld = fld.split(/\\s+/);\n fld.reverse();\n var toEnd = [];\n for (var j = fld.length - 1; j > -1; j += -1) {\n if (SKIP_WORDS.indexOf(fld[j].toLowerCase()) > -1) {\n toEnd.push(fld.pop());\n } else {\n break;\n }\n }\n fld.reverse();\n var start = fld.join(\" \");\n var end = toEnd.join(\" \");\n if (\"drop\" === drop_or_demote || !end) {\n fld = start;\n } else if (\"demote\" === drop_or_demote) {\n fld = [start, end].join(\", \");\n }\n }\n return fld;\n },\n\n extractTitleAndSubtitle: function (Item, narrowSpaceLocale) {\n var narrowSpace = narrowSpaceLocale ? \"\\u202f\" : \"\";\n // XXX In this function, split on split-char, but prefer exact match\n // XXX of subtitle to a split-char in title if found.\n var segments = [\"\"];\n if (this.opt.development_extensions.split_container_title) {\n segments.push(\"container-\");\n }\n for (var i=0,ilen=segments.length;i<ilen;i++) {\n var seg = segments[i];\n var title = CSL.TITLE_FIELD_SPLITS(seg);\n var langs = [false];\n if (Item.multi) {\n for (var lang in Item.multi._keys[title.short]) {\n langs.push(lang);\n }\n }\n for (var j=0,jlen=langs.length;j<jlen;j++) {\n var lang = langs[j];\n var vals = {};\n if (lang) {\n if (Item.multi._keys[title.title]) {\n vals[title.title] = Item.multi._keys[title.title][lang];\n }\n if (Item.multi._keys[title[\"short\"]]) {\n vals[title[\"short\"]] = Item.multi._keys[title[\"short\"]][lang];\n }\n } else {\n vals[title.title] = Item[title.title];\n vals[title[\"short\"]] = Item[title[\"short\"]];\n }\n vals[title.main] = vals[title.title];\n vals[title.sub] = false;\n var shortTitle = vals[title[\"short\"]];\n if (vals[title.title]) {\n // Rules\n // TITLE_SPLIT eliminates split-points of period-space preceded by a capital letter.\n // If short title exists and matches exactly to a split-point, use that split-point only.\n // Otherwise if there is just one split-point, use that as main/sub split.\n // Otherwise use all split-points ... which is handled in titleCaseSentenceOrNormal, not here.\n if (shortTitle && shortTitle.toLowerCase() === vals[title.title].toLowerCase()) {\n vals[title.main] = vals[title.title];\n vals[title.subjoin] = \"\";\n vals[title.sub] = \"\";\n } else if (shortTitle) {\n // check for valid match to shortTitle\n var tail = vals[title.title].slice(shortTitle.replace(/[\\?\\!]+$/, \"\").length);\n var top = vals[title.title].replace(tail.replace(/^[\\?\\!]+/, \"\"), \"\").trim();\n var m = CSL.TITLE_SPLIT_REGEXP.matchfirst.exec(tail);\n if (m && top.toLowerCase() === shortTitle.toLowerCase()) {\n vals[title.main] = top;\n vals[title.subjoin] = m[1].replace(/[\\?\\!]+(\\s*)$/, \"$1\");\n vals[title.sub] = tail.replace(CSL.TITLE_SPLIT_REGEXP.matchfirst, \"\");\n if (this.opt.development_extensions.force_short_title_casing_alignment) {\n vals[title[\"short\"]] = vals[title.main];\n }\n } else {\n var splitTitle = CSL.TITLE_SPLIT(vals[title.title]);\n if (splitTitle.length == 3) {\n vals[title.main] = splitTitle[0];\n vals[title.subjoin] = splitTitle[1];\n vals[title.sub] = splitTitle[2];\n } else {\n vals[title.main] = vals[title.title];\n vals[title.subjoin] = \"\";\n vals[title.sub] = \"\";\n }\n }\n } else {\n var splitTitle = CSL.TITLE_SPLIT(vals[title.title]);\n if (splitTitle.length == 3) {\n vals[title.main] = splitTitle[0];\n vals[title.subjoin] = splitTitle[1];\n vals[title.sub] = splitTitle[2];\n if (this.opt.development_extensions.implicit_short_title && Item.type !== \"legal_case\") {\n if (!Item[title.short] && !vals[title.main].match(/^[\\-\\.[0-9]+$/)) {\n var punct = vals[title.subjoin].trim();\n if ([\"?\", \"!\"].indexOf(punct) === -1) {\n punct = \"\";\n }\n vals[title.short] = vals[title.main] + punct;\n }\n }\n } else {\n vals[title.main] = vals[title.title];\n vals[title.subjoin] = \"\";\n vals[title.sub] = \"\";\n }\n }\n if (vals[title.subjoin]) {\n if (vals[title.subjoin].match(/([\\?\\!])/)) {\n var m = vals[title.subjoin].match(/(\\s*)$/)\n vals[title.main] = vals[title.main] + narrowSpace +vals[title.subjoin].trim();\n vals[title.subjoin] = m[1];\n }\n }\n }\n if (vals[title.subjoin]) {\n if (vals[title.subjoin].indexOf(\":\") > -1) {\n vals[title.subjoin] = narrowSpace + \": \";\n }\n if (vals[title.subjoin].indexOf(\"-\") > -1 || vals[title.subjoin].indexOf(\"—\") > -1) {\n vals[title.subjoin] = \"—\";\n }\n }\n if (lang) {\n for (var key in vals) {\n if (!Item.multi._keys[key]) {\n Item.multi._keys[key] = {};\n }\n Item.multi._keys[key][lang] = vals[key];\n }\n } else {\n for (var key in vals) {\n Item[key] = vals[key];\n }\n }\n }\n }\n },\n\n titlecaseSentenceOrNormal: function(state, Item, seg, lang, sentenceCase) {\n // Hold on here.\n // What is seg here?\n // It's ... either \"\" or \"container-\". Which is ugly, but works.\n // But this ALWAYS returns the full title, never short.\n // So sentence-casing cannot be applied to short.\n // Goes unnoticed because forced sentence-casing almost never appears in styles.\n var title = CSL.TITLE_FIELD_SPLITS(seg);\n var vals = {};\n if (lang && Item.multi) {\n if (Item.multi._keys[title.title]) {\n vals[title.title] = Item.multi._keys[title.title][lang];\n }\n if (Item.multi._keys[title.main]) {\n vals[title.main] = Item.multi._keys[title.main][lang];\n }\n if (Item.multi._keys[title.sub]) {\n vals[title.sub] = Item.multi._keys[title.sub][lang];\n }\n if (Item.multi._keys[title.subjoin]) {\n vals[title.subjoin] = Item.multi._keys[title.subjoin][lang];\n }\n } else {\n vals[title.title] = Item[title.title];\n vals[title.main] = Item[title.main];\n vals[title.sub] = Item[title.sub];\n vals[title.subjoin] = Item[title.subjoin];\n }\n if (vals[title.main] && vals[title.sub]) {\n var mainTitle = vals[title.main];\n var subJoin = vals[title.subjoin];\n var subTitle = vals[title.sub];\n if (sentenceCase) {\n mainTitle = CSL.Output.Formatters.sentence(state, mainTitle);\n subTitle = CSL.Output.Formatters.sentence(state, subTitle);\n } else if (state.opt.development_extensions.uppercase_subtitles) {\n subTitle = CSL.Output.Formatters[\"capitalize-first\"](state, subTitle);\n }\n return [mainTitle, subJoin, subTitle].join(\"\");\n } else if (vals[title.title]) {\n if (sentenceCase) {\n return CSL.Output.Formatters.sentence(state, vals[title.title]);\n } else if (state.opt.development_extensions.uppercase_subtitles) {\n // Split and apply everywhere.\n var splits = CSL.TITLE_SPLIT(vals[title.title]);\n for (var i=0,ilen=splits.length; i<ilen; i += 2) {\n splits[i] = CSL.Output.Formatters[\"capitalize-first\"](state, splits[i]);\n }\n for (var i=1, ilen=splits.length-1; i < ilen; i += 2) {\n var m = splits[i].match(/([:\\?\\!] )/);\n if (m) {\n var narrowSpace = state.opt[\"default-locale\"][0].slice(0, 2).toLowerCase() === \"fr\" ? \"\\u202f\" : \"\";\n splits[i] = narrowSpace + m[1];\n }\n if (splits[i].indexOf(\"-\") > -1 || splits[i].indexOf(\"—\") > -1) {\n splits[i] = \"—\";\n }\n }\n vals[title.title] = splits.join(\"\");\n return vals[title.title];\n } else {\n return vals[title.title];\n }\n } else {\n return \"\";\n }\n },\n\n getSafeEscape: function(state) {\n if ([\"bibliography\", \"citation\"].indexOf(state.tmp.area) > -1) {\n // Callback to apply thin space hack\n // Callback to force LTR/RTL on parens and braces\n // XXX Is this really necessary?\n var callbacks = [];\n if (state.opt.development_extensions.thin_non_breaking_space_html_hack && state.opt.mode === \"html\") {\n callbacks.push(function (txt) {\n return txt.replace(/\\u202f/g, '<span style=\"white-space:nowrap\">&thinsp;</span>');\n });\n }\n if (callbacks.length) {\n return function (txt) {\n for (var i = 0, ilen = callbacks.length; i < ilen; i += 1) {\n txt = callbacks[i](txt);\n }\n return CSL.Output.Formats[state.opt.mode].text_escape(txt);\n };\n } else {\n return CSL.Output.Formats[state.opt.mode].text_escape;\n }\n } else {\n return function (txt) { return txt; };\n }\n },\n\n SKIP_WORDS: [\"about\",\"above\",\"across\",\"afore\",\"after\",\"against\",\"al\", \"along\",\"alongside\",\"amid\",\"amidst\",\"among\",\"amongst\",\"anenst\",\"apropos\",\"apud\",\"around\",\"as\",\"aside\",\"astride\",\"at\",\"athwart\",\"atop\",\"barring\",\"before\",\"behind\",\"below\",\"beneath\",\"beside\",\"besides\",\"between\",\"beyond\",\"but\",\"by\",\"circa\",\"despite\",\"down\",\"during\",\"et\", \"except\",\"for\",\"forenenst\",\"from\",\"given\",\"in\",\"inside\",\"into\",\"lest\",\"like\",\"modulo\",\"near\",\"next\",\"notwithstanding\",\"of\",\"off\",\"on\",\"onto\",\"out\",\"over\",\"per\",\"plus\",\"pro\",\"qua\",\"sans\",\"since\",\"than\",\"through\",\" thru\",\"throughout\",\"thruout\",\"till\",\"to\",\"toward\",\"towards\",\"under\",\"underneath\",\"until\",\"unto\",\"up\",\"upon\",\"versus\",\"vs.\",\"v.\",\"vs\",\"v\",\"via\",\"vis-à-vis\",\"with\",\"within\",\"without\",\"according to\",\"ahead of\",\"apart from\",\"as for\",\"as of\",\"as per\",\"as regards\",\"aside from\",\"back to\",\"because of\",\"close to\",\"due to\",\"except for\",\"far from\",\"inside of\",\"instead of\",\"near to\",\"next to\",\"on to\",\"out from\",\"out of\",\"outside of\",\"prior to\",\"pursuant to\",\"rather than\",\"regardless of\",\"such as\",\"that of\",\"up to\",\"where as\",\"or\", \"yet\", \"so\", \"for\", \"and\", \"nor\", \"a\", \"an\", \"the\", \"de\", \"d'\", \"von\", \"van\", \"c\", \"ca\"],\n\n FORMAT_KEY_SEQUENCE: [\n \"@strip-periods\",\n \"@font-style\",\n \"@font-variant\",\n \"@font-weight\",\n \"@text-decoration\",\n \"@vertical-align\",\n \"@quotes\"\n ],\n\n INSTITUTION_KEYS: [\n \"font-style\",\n \"font-variant\",\n \"font-weight\",\n \"text-decoration\",\n \"text-case\"\n ],\n\n SUFFIX_CHARS: \"a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z\",\n ROMAN_NUMERALS: [\n [ \"\", \"i\", \"ii\", \"iii\", \"iv\", \"v\", \"vi\", \"vii\", \"viii\", \"ix\" ],\n [ \"\", \"x\", \"xx\", \"xxx\", \"xl\", \"l\", \"lx\", \"lxx\", \"lxxx\", \"xc\" ],\n [ \"\", \"c\", \"cc\", \"ccc\", \"cd\", \"d\", \"dc\", \"dcc\", \"dccc\", \"cm\" ],\n [ \"\", \"m\", \"mm\", \"mmm\", \"mmmm\", \"mmmmm\"]\n ],\n\n LANGS: {\n \"af-ZA\":\"Afrikaans\",\n \"ar\":\"Arabic\",\n \"bg-BG\":\"Bulgarian\",\n \"ca-AD\":\"Catalan\",\n \"cs-CZ\":\"Czech\",\n \"da-DK\":\"Danish\",\n \"de-AT\":\"Austrian\",\n \"de-CH\":\"German (CH)\",\n \"de-DE\":\"German (DE)\",\n \"el-GR\":\"Greek\",\n \"en-GB\":\"English (GB)\",\n \"en-US\":\"English (US)\",\n \"es-ES\":\"Spanish\",\n \"et-EE\":\"Estonian\",\n \"eu\":\"European\",\n \"fa-IR\":\"Persian\",\n \"fi-FI\":\"Finnish\",\n \"fr-CA\":\"French (CA)\",\n \"fr-FR\":\"French (FR)\",\n \"he-IL\":\"Hebrew\",\n \"hr-HR\":\"Croatian\",\n \"hu-HU\":\"Hungarian\",\n \"is-IS\":\"Icelandic\",\n \"it-IT\":\"Italian\",\n \"ja-JP\":\"Japanese\",\n \"km-KH\":\"Khmer\",\n \"ko-KR\":\"Korean\",\n \"lt-LT\":\"Lithuanian\",\n \"lv-LV\":\"Latvian\",\n \"mn-MN\":\"Mongolian\",\n \"nb-NO\":\"Norwegian (Bokmål)\",\n \"nl-NL\":\"Dutch\",\n \"nn-NO\":\"Norwegian (Nynorsk)\",\n \"pl-PL\":\"Polish\",\n \"pt-BR\":\"Portuguese (BR)\",\n \"pt-PT\":\"Portuguese (PT)\",\n \"ro-RO\":\"Romanian\",\n \"ru-RU\":\"Russian\",\n \"sk-SK\":\"Slovak\",\n \"sl-SI\":\"Slovenian\",\n \"sr-RS\":\"Serbian\",\n \"sv-SE\":\"Swedish\",\n \"th-TH\":\"Thai\",\n \"tr-TR\":\"Turkish\",\n \"uk-UA\":\"Ukrainian\",\n \"vi-VN\":\"Vietnamese\",\n \"zh-CN\":\"Chinese (CN)\",\n \"zh-TW\":\"Chinese (TW)\"\n },\n\n LANG_BASES: {\n af: \"af_ZA\",\n ar: \"ar\",\n bg: \"bg_BG\",\n ca: \"ca_AD\",\n cs: \"cs_CZ\",\n da: \"da_DK\",\n de: \"de_DE\",\n el: \"el_GR\",\n en: \"en_US\",\n es: \"es_ES\",\n et: \"et_EE\",\n eu: \"eu\",\n fa: \"fa_IR\",\n fi: \"fi_FI\",\n fr: \"fr_FR\",\n he: \"he_IL\",\n hr: \"hr-HR\",\n hu: \"hu_HU\",\n is: \"is_IS\",\n it: \"it_IT\",\n ja: \"ja_JP\",\n km: \"km_KH\",\n ko: \"ko_KR\",\n lt: \"lt_LT\",\n lv: \"lv-LV\",\n mn: \"mn_MN\",\n nb: \"nb_NO\",\n nl: \"nl_NL\",\n nn: \"nn-NO\",\n pl: \"pl_PL\",\n pt: \"pt_PT\",\n ro: \"ro_RO\",\n ru: \"ru_RU\",\n sk: \"sk_SK\",\n sl: \"sl_SI\",\n sr: \"sr_RS\",\n sv: \"sv_SE\",\n th: \"th_TH\",\n tr: \"tr_TR\",\n uk: \"uk_UA\",\n vi: \"vi_VN\",\n zh: \"zh_CN\"\n },\n\n SUPERSCRIPTS: {\n \"\\u00AA\": \"\\u0061\",\n \"\\u00B2\": \"\\u0032\",\n \"\\u00B3\": \"\\u0033\",\n \"\\u00B9\": \"\\u0031\",\n \"\\u00BA\": \"\\u006F\",\n \"\\u02B0\": \"\\u0068\",\n \"\\u02B1\": \"\\u0266\",\n \"\\u02B2\": \"\\u006A\",\n \"\\u02B3\": \"\\u0072\",\n \"\\u02B4\": \"\\u0279\",\n \"\\u02B5\": \"\\u027B\",\n \"\\u02B6\": \"\\u0281\",\n \"\\u02B7\": \"\\u0077\",\n \"\\u02B8\": \"\\u0079\",\n \"\\u02E0\": \"\\u0263\",\n \"\\u02E1\": \"\\u006C\",\n \"\\u02E2\": \"\\u0073\",\n \"\\u02E3\": \"\\u0078\",\n \"\\u02E4\": \"\\u0295\",\n \"\\u1D2C\": \"\\u0041\",\n \"\\u1D2D\": \"\\u00C6\",\n \"\\u1D2E\": \"\\u0042\",\n \"\\u1D30\": \"\\u0044\",\n \"\\u1D31\": \"\\u0045\",\n \"\\u1D32\": \"\\u018E\",\n \"\\u1D33\": \"\\u0047\",\n \"\\u1D34\": \"\\u0048\",\n \"\\u1D35\": \"\\u0049\",\n \"\\u1D36\": \"\\u004A\",\n \"\\u1D37\": \"\\u004B\",\n \"\\u1D38\": \"\\u004C\",\n \"\\u1D39\": \"\\u004D\",\n \"\\u1D3A\": \"\\u004E\",\n \"\\u1D3C\": \"\\u004F\",\n \"\\u1D3D\": \"\\u0222\",\n \"\\u1D3E\": \"\\u0050\",\n \"\\u1D3F\": \"\\u0052\",\n \"\\u1D40\": \"\\u0054\",\n \"\\u1D41\": \"\\u0055\",\n \"\\u1D42\": \"\\u0057\",\n \"\\u1D43\": \"\\u0061\",\n \"\\u1D44\": \"\\u0250\",\n \"\\u1D45\": \"\\u0251\",\n \"\\u1D46\": \"\\u1D02\",\n \"\\u1D47\": \"\\u0062\",\n \"\\u1D48\": \"\\u0064\",\n \"\\u1D49\": \"\\u0065\",\n \"\\u1D4A\": \"\\u0259\",\n \"\\u1D4B\": \"\\u025B\",\n \"\\u1D4C\": \"\\u025C\",\n \"\\u1D4D\": \"\\u0067\",\n \"\\u1D4F\": \"\\u006B\",\n \"\\u1D50\": \"\\u006D\",\n \"\\u1D51\": \"\\u014B\",\n \"\\u1D52\": \"\\u006F\",\n \"\\u1D53\": \"\\u0254\",\n \"\\u1D54\": \"\\u1D16\",\n \"\\u1D55\": \"\\u1D17\",\n \"\\u1D56\": \"\\u0070\",\n \"\\u1D57\": \"\\u0074\",\n \"\\u1D58\": \"\\u0075\",\n \"\\u1D59\": \"\\u1D1D\",\n \"\\u1D5A\": \"\\u026F\",\n \"\\u1D5B\": \"\\u0076\",\n \"\\u1D5C\": \"\\u1D25\",\n \"\\u1D5D\": \"\\u03B2\",\n \"\\u1D5E\": \"\\u03B3\",\n \"\\u1D5F\": \"\\u03B4\",\n \"\\u1D60\": \"\\u03C6\",\n \"\\u1D61\": \"\\u03C7\",\n \"\\u2070\": \"\\u0030\",\n \"\\u2071\": \"\\u0069\",\n \"\\u2074\": \"\\u0034\",\n \"\\u2075\": \"\\u0035\",\n \"\\u2076\": \"\\u0036\",\n \"\\u2077\": \"\\u0037\",\n \"\\u2078\": \"\\u0038\",\n \"\\u2079\": \"\\u0039\",\n \"\\u207A\": \"\\u002B\",\n \"\\u207B\": \"\\u2212\",\n \"\\u207C\": \"\\u003D\",\n \"\\u207D\": \"\\u0028\",\n \"\\u207E\": \"\\u0029\",\n \"\\u207F\": \"\\u006E\",\n \"\\u2120\": \"\\u0053\\u004D\",\n \"\\u2122\": \"\\u0054\\u004D\",\n \"\\u3192\": \"\\u4E00\",\n \"\\u3193\": \"\\u4E8C\",\n \"\\u3194\": \"\\u4E09\",\n \"\\u3195\": \"\\u56DB\",\n \"\\u3196\": \"\\u4E0A\",\n \"\\u3197\": \"\\u4E2D\",\n \"\\u3198\": \"\\u4E0B\",\n \"\\u3199\": \"\\u7532\",\n \"\\u319A\": \"\\u4E59\",\n \"\\u319B\": \"\\u4E19\",\n \"\\u319C\": \"\\u4E01\",\n \"\\u319D\": \"\\u5929\",\n \"\\u319E\": \"\\u5730\",\n \"\\u319F\": \"\\u4EBA\",\n \"\\u02C0\": \"\\u0294\",\n \"\\u02C1\": \"\\u0295\",\n \"\\u06E5\": \"\\u0648\",\n \"\\u06E6\": \"\\u064A\"\n },\n SUPERSCRIPTS_REGEXP: new RegExp(\"[\\u00AA\\u00B2\\u00B3\\u00B9\\u00BA\\u02B0\\u02B1\\u02B2\\u02B3\\u02B4\\u02B5\\u02B6\\u02B7\\u02B8\\u02E0\\u02E1\\u02E2\\u02E3\\u02E4\\u1D2C\\u1D2D\\u1D2E\\u1D30\\u1D31\\u1D32\\u1D33\\u1D34\\u1D35\\u1D36\\u1D37\\u1D38\\u1D39\\u1D3A\\u1D3C\\u1D3D\\u1D3E\\u1D3F\\u1D40\\u1D41\\u1D42\\u1D43\\u1D44\\u1D45\\u1D46\\u1D47\\u1D48\\u1D49\\u1D4A\\u1D4B\\u1D4C\\u1D4D\\u1D4F\\u1D50\\u1D51\\u1D52\\u1D53\\u1D54\\u1D55\\u1D56\\u1D57\\u1D58\\u1D59\\u1D5A\\u1D5B\\u1D5C\\u1D5D\\u1D5E\\u1D5F\\u1D60\\u1D61\\u2070\\u2071\\u2074\\u2075\\u2076\\u2077\\u2078\\u2079\\u207A\\u207B\\u207C\\u207D\\u207E\\u207F\\u2120\\u2122\\u3192\\u3193\\u3194\\u3195\\u3196\\u3197\\u3198\\u3199\\u319A\\u319B\\u319C\\u319D\\u319E\\u319F\\u02C0\\u02C1\\u06E5\\u06E6]\", \"g\"),\n\n // I think we need to have separate args for prefix and term,\n // since they have different effects between comma-safe and comma-safe-numbers-only.\n // Either that, or -- oh, we could just bang the two together for the test where\n // necessary.\n \n UPDATE_GROUP_CONTEXT_CONDITION: function (state, str, valueTerm, token, value) {\n if (!state.opt.use_context_condition) return;\n var flags = state.tmp.group_context.tip;\n if (flags.condition) {\n if (!flags.condition.termtxt) {\n flags.condition.termtxt = str;\n flags.condition.valueTerm = valueTerm;\n }\n if (!flags.value_seen && flags.condition.test === \"comma-safe-numbers-only\") {\n if (value) {\n flags.value_seen = true;\n if (!value.match(/^[0-9]/)) {\n state.tmp.just_did_number = false;\n }\n }\n }\n } else {\n // If not inside a conditional group, raise numeric flag\n // if and only if the current term string ends in a number.\n if (token && token.decorations.filter(o => o[0] === \"@vertical-align\").length > 0) {\n state.tmp.just_did_number = false;\n } else if (token && token.strings.suffix) {\n state.tmp.just_did_number = false;\n } else if (str) {\n if (str.match(/[0-9]$/)) {\n state.tmp.just_did_number = true;\n } else {\n state.tmp.just_did_number = false;\n }\n }\n }\n },\n\n EVALUATE_GROUP_CONDITION: function(state, flags) {\n if (!state.opt.use_context_condition) return;\n var testres;\n var numbersOnly = flags.condition.test === \"comma-safe-numbers-only\";\n if (flags.condition.test === \"empty-label\") {\n testres = !flags.condition.termtxt;\n } else if (flags.condition.test === \"empty-label-no-decor\") {\n testres = !flags.condition.termtxt || flags.condition.termtxt.indexOf(\"%s\") > -1;\n } else if ([\"comma-safe\", \"comma-safe-numbers-only\"].indexOf(flags.condition.test) > -1) {\n var locale_term = flags.condition.termtxt;\n var termStartAlpha = false;\n if (flags.condition.termtxt) {\n termStartAlpha = flags.condition.termtxt.slice(0,1).match(CSL.ALL_ROMANESQUE_REGEXP);\n }\n var num = state.tmp.just_did_number;\n if (num) {\n if (flags.condition.valueTerm) {\n testres = numbersOnly ? false : true;\n } else if (!locale_term) {\n testres = true;\n } else if (termStartAlpha) {\n testres = numbersOnly ? false : true;\n } else if ([\"always\", \"after-number\"].indexOf(state.opt.require_comma_on_symbol) > -1) {\n testres = true;\n } else {\n testres = false;\n }\n } else {\n if (flags.condition.valueTerm) {\n testres = false;\n } else if (!locale_term) {\n testres = false;\n } else if (termStartAlpha) {\n testres = numbersOnly ? false : true;\n } else if (state.opt.require_comma_on_symbol === \"always\") {\n testres = true;\n } else {\n testres = false;\n }\n }\n }\n if (testres) {\n var force_suppress = false;\n } else {\n var force_suppress = true;\n }\n if (flags.condition.not) {\n force_suppress = !force_suppress;\n }\n return force_suppress;\n },\n \n SYS_OPTIONS: [\n \"prioritize_disambiguate_condition\",\n \"csl_reverse_lookup_support\",\n \"main_title_from_short_title\",\n \"uppercase_subtitles\",\n \"force_short_title_casing_alignment\",\n \"implicit_short_title\",\n \"split_container_title\"\n ],\n\n TITLE_SPLIT_REGEXP: (function() {\n var splits = [\n \"\\\\.\\\\s+\",\n \"\\\\!\\\\s+\",\n \"\\\\?\\\\s+\",\n \"\\\\s*::*\\\\s+\",\n \"\\\\s*—\\\\s*\",\n \"\\\\s+\\\\-\\\\s+\",\n \"\\\\s*\\\\-\\\\-\\\\-*\\\\s*\"\n ]\n return {\n match: new RegExp(\"(\" + splits.join(\"|\") + \")\", \"g\"),\n matchfirst: new RegExp(\"^(\" + splits.join(\"|\") + \")\"),\n split: new RegExp(\"(?:\" + splits.join(\"|\") + \")\")\n }\n })(),\n\n TITLE_SPLIT: function(str) {\n if (!str) {\n return str;\n }\n var m = str.match(CSL.TITLE_SPLIT_REGEXP.match);\n var lst = str.split(CSL.TITLE_SPLIT_REGEXP.split);\n for (var i=lst.length-2; i>-1; i--) {\n lst[i] = lst[i].trim();\n if (lst[i] && lst[i].slice(-1).toLowerCase() !== lst[i].slice(-1)) {\n // recombine\n lst[i] = lst[i] + m[i] + lst[i+1];\n lst = lst.slice(0, i+1).concat(lst.slice(i+2))\n } else {\n // merge\n lst = lst.slice(0, i+1).concat([m[i]]).concat(lst.slice(i+1))\n }\n }\n return lst;\n },\n \n GET_COURT_CLASS: function(state, Item, sortKey){\n // Get authority as a string\n var cls = \"\";\n var authority = null;\n var country = Item.jurisdiction ? Item.jurisdiction.split(\":\")[0] : null;\n // inStyle versus in module\n var classType = \"court_condition_classes\";\n if (sortKey) {\n classType = \"court_key_classes\";\n }\n if (country && Item.authority) {\n if (\"string\" === typeof Item.authority) {\n authority = Item.authority;\n } else {\n if (Item.authority[0] && Item.authority[0].literal) {\n authority = Item.authority[0].literal;\n }\n }\n }\n if (authority) {\n if (this.lang && state.locale[this.lang].opts[classType] && state.locale[this.lang].opts[classType][country] && state.locale[this.lang].opts[classType][country][authority]) {\n cls = state.locale[this.lang].opts[classType][country][authority];\n } else if (state.locale[state.opt[\"default-locale\"][0]].opts[classType] && state.locale[state.opt[\"default-locale\"][0]].opts[classType][country] && state.locale[state.opt[\"default-locale\"][0]].opts[classType][country][authority]) {\n cls = state.locale[state.opt[\"default-locale\"][0]].opts[classType][country][authority]\n }\n }\n return cls;\n },\n\n SET_COURT_CLASSES: function(state, lang, myxml, dataObj) {\n var nodes = myxml.getNodesByName(dataObj, 'court-class');\n for (var pos = 0, len = myxml.numberofnodes(nodes); pos < len; pos += 1) {\n var courtclass = nodes[pos];\n var attributes = myxml.attributes(courtclass);\n var cls = attributes[\"@name\"];\n var country = attributes[\"@country\"];\n var courts = attributes[\"@courts\"];\n \n // Okay, this is a hack.\n // If state.registry IS NOT yet defined, this is an in-style declaration.\n // If state.registry IS defined, this is an in-module declaration.\n var classType = \"court_key_classes\";\n if (state.registry) {\n classType = \"court_condition_classes\";\n }\n \n if (cls && country && courts) {\n courts = courts.trim().split(/\\s+/);\n if (!state.locale[lang].opts[classType]) {\n state.locale[lang].opts[classType] = {};\n }\n if (!state.locale[lang].opts[classType][country]) {\n state.locale[lang].opts[classType][country] = {};\n }\n for (var i=0,ilen=courts.length;i<ilen;i++) {\n state.locale[lang].opts[classType][country][courts[i]] = cls;\n }\n }\n }\n },\n\n INIT_JURISDICTION_MACROS: function (state, Item, item, macroName) {\n if (Item[\"best-jurisdiction\"]) {\n return true;\n }\n if (!state.sys.retrieveStyleModule || !CSL.MODULE_MACROS[macroName] || !Item.jurisdiction) {\n return false;\n }\n var jurisdictionList = state.getJurisdictionList(Item.jurisdiction);\n // Set up a list of jurisdictions here, we will reuse it\n if (!state.opt.jurisdictions_seen[jurisdictionList[0]]) {\n var res = state.retrieveAllStyleModules(jurisdictionList);\n // Okay. We have code for each of the novel modules in the\n // hierarchy. Load them all into the processor.\n for (var jurisdiction in res) {\n var fallback = state.loadStyleModule(jurisdiction, res[jurisdiction]);\n if (fallback) {\n if (!res[fallback]) {\n Object.assign(res, state.retrieveAllStyleModules([fallback]));\n state.loadStyleModule(fallback, res[fallback], true);\n }\n }\n }\n }\n var jurisdictionList = state.getJurisdictionList(Item.jurisdiction);\n if (state.opt.parallel.enable) {\n if (!state.parallel) {\n state.parallel = new CSL.Parallel(state);\n }\n }\n // Identify the best jurisdiction for the item and return true, otherwise return false\n for (var i=0,ilen=jurisdictionList.length;i<ilen;i++) {\n var jurisdiction = jurisdictionList[i];\n if (item) {\n if (state.juris[jurisdiction] && !item[\"best-jurisdiction\"] && state.juris[jurisdiction].types.locator) {\n Item[\"best-jurisdiction\"] = jurisdiction;\n }\n }\n if(state.juris[jurisdiction] && state.juris[jurisdiction].types[Item.type]) {\n Item[\"best-jurisdiction\"] = jurisdiction;\n return true;\n }\n }\n return false;\n }\n};\n\n/**\n * Functions for parsing an XML object converted to JSON.\n */\n\n/*\n Style and locale JSON should be formatted as follows. Note that\n an empty literal should be set as an explicit empty strings within\n children:[]\n \n {\n name:\"term\",\n children:[\n \"\"\n ],\n attrs:{\n name:\"author\"\n }\n }\n\n The following script will generate correctly formatted JSON\n from a CSL style or locale file:\n*/\n\nCSL.XmlJSON = function (dataObj) {\n this.dataObj = dataObj;\n this.institution = {\n name:\"institution\",\n attrs:{\n \"institution-parts\":\"long\",\n \"delimiter\":\", \"\n },\n children:[\n {\n name:\"institution-part\",\n attrs:{\n name:\"long\"\n },\n children:[]\n }\n ]\n };\n};\n\n/**\n * No need for cleaning with native JSON.\n */\nCSL.XmlJSON.prototype.clean = function (json) {\n return json;\n};\n\n\n/**\n * Methods to call on a node.\n */\nCSL.XmlJSON.prototype.getStyleId = function (myjson, styleName) {\n var tagName = 'id';\n if (styleName) {\n tagName = 'title';\n }\n var ret = \"\";\n var children = myjson.children;\n for (var i=0,ilen=children.length;i<ilen;i++) {\n if (children[i].name === 'info') {\n var grandkids = children[i].children;\n for (var j=0,jlen=grandkids.length;j<jlen;j++) {\n if (grandkids[j].name === tagName) {\n ret = grandkids[j].children[0];\n }\n }\n }\n }\n return ret;\n};\n\nCSL.XmlJSON.prototype.children = function (myjson) {\n //print(\"children()\");\n if (myjson && myjson.children.length) {\n return myjson.children.slice();\n } else {\n return false;\n }\n};\n\nCSL.XmlJSON.prototype.nodename = function (myjson) {\n //print(\"nodename()\");\n return myjson ? myjson.name : null;\n};\n\nCSL.XmlJSON.prototype.attributes = function (myjson) {\n //print(\"attributes()\");\n var ret = {};\n for (var attrname in myjson.attrs) {\n ret[\"@\"+attrname] = myjson.attrs[attrname];\n }\n return ret;\n};\n\n\nCSL.XmlJSON.prototype.content = function (myjson) {\n //print(\"content()\");\n // xmldom.js and xmle4x.js have \"undefined\" as default\n var ret = \"\";\n // This only catches content at first level, but that is good enough\n // for us.\n if (!myjson || !myjson.children) {\n return ret;\n }\n for (var i=0, ilen=myjson.children.length; i < ilen; i += 1) {\n if (\"string\" === typeof myjson.children[i]) {\n ret += myjson.children[i];\n }\n }\n return ret;\n};\n\n\nCSL.XmlJSON.prototype.namespace = {}\n\nCSL.XmlJSON.prototype.numberofnodes = function (myjson) {\n //print(\"numberofnodes()\");\n if (myjson && \"number\" == typeof myjson.length) {\n return myjson.length;\n } else {\n return 0;\n }\n};\n\n// getAttributeName() removed. Looks like it was not being used.\n\nCSL.XmlJSON.prototype.getAttributeValue = function (myjson,name,namespace) {\n //print(\"getAttributeValue()\");\n var ret = \"\";\n if (namespace) {\n name = namespace+\":\"+name;\n }\n if (myjson) {\n if (myjson.attrs) {\n if (myjson.attrs[name]) {\n ret = myjson.attrs[name];\n } else {\n ret = \"\";\n }\n }\n }\n return ret;\n}\n\nCSL.XmlJSON.prototype.getNodeValue = function (myjson,name) {\n //print(\"getNodeValue()\");\n var ret = \"\";\n if (name){\n for (var i=0, ilen=myjson.children.length; i < ilen; i += 1) {\n if (myjson.children[i].name === name) {\n // This will always be Object() unless empty\n if (myjson.children[i].children.length) {\n ret = myjson.children[i];\n } else {\n ret = \"\";\n }\n }\n }\n } else if (myjson) {\n ret = myjson;\n }\n // Just being careful here, following the former DOM code. The JSON object we receive \n // for this should be fully normalized.\n if (ret && ret.children && ret.children.length == 1 && \"string\" === typeof ret.children[0]) {\n ret = ret.children[0];\n }\n return ret;\n}\n\nCSL.XmlJSON.prototype.setAttributeOnNodeIdentifiedByNameAttribute = function (myjson,nodename,partname,attrname,val) {\n //print(\"setAttributeOnNodeIdentifiedByNameAttribute()\");\n var pos, len, xml, nodes, node;\n if (attrname.slice(0,1) === '@'){\n attrname = attrname.slice(1);\n }\n // In the one place this is used in citeproc-js code, it doesn't need to recurse.\n for (var i=0,ilen=myjson.children.length; i<ilen; i += 1) {\n if (myjson.children[i].name === nodename && myjson.children[i].attrs.name === partname) {\n myjson.children[i].attrs[attrname] = val;\n }\n }\n}\n\nCSL.XmlJSON.prototype.deleteNodeByNameAttribute = function (myjson,val) {\n //print(\"deleteNodeByNameAttribute()\");\n var i, ilen;\n for (i = 0, ilen = myjson.children.length; i < ilen; i += 1) {\n if (!myjson.children[i] || \"string\" === typeof myjson.children[i]) {\n continue;\n }\n if (myjson.children[i].attrs.name == val) {\n myjson.children = myjson.children.slice(0,i).concat(myjson.children.slice(i+1));\n }\n }\n}\n\nCSL.XmlJSON.prototype.deleteAttribute = function (myjson,attrname) {\n //print(\"deleteAttribute()\");\n var i, ilen;\n if (\"undefined\" !== typeof myjson.attrs[attrname]) {\n myjson.attrs.pop(attrname);\n }\n}\n\nCSL.XmlJSON.prototype.setAttribute = function (myjson,attr,val) {\n //print(\"setAttribute()\");\n myjson.attrs[attr] = val;\n return false;\n}\n\nCSL.XmlJSON.prototype.nodeCopy = function (myjson,clone) {\n //print(\"nodeCopy()\");\n if (!clone) {\n var clone = {};\n }\n if (\"object\" === typeof clone && \"undefined\" === typeof clone.length) {\n // myjson is an object\n for (var key in myjson) {\n if (\"string\" === typeof myjson[key]) {\n clone[key] = myjson[key];\n } else if (\"object\" === typeof myjson[key]) {\n if (\"undefined\" === typeof myjson[key].length) {\n clone[key] = this.nodeCopy(myjson[key],{});\n } else {\n clone[key] = this.nodeCopy(myjson[key],[]);\n }\n }\n }\n } else {\n // myjson is an array\n for (var i=0,ilen=myjson.length;i<ilen; i += 1) {\n if (\"string\" === typeof myjson[i]) {\n clone[i] = myjson[i];\n } else {\n // If it's at the first level of an array, it's an object.\n clone[i] = this.nodeCopy(myjson[i],{});\n }\n }\n }\n return clone;\n}\n\nCSL.XmlJSON.prototype.getNodesByName = function (myjson,name,nameattrval,ret) {\n //print(\"getNodesByName()\");\n var nodes, node, pos, len;\n if (!ret) {\n var ret = [];\n }\n if (!myjson || !myjson.children) {\n return ret;\n }\n if (name === myjson.name) {\n if (nameattrval) {\n if (nameattrval === myjson.attrs.name) {\n ret.push(myjson);\n }\n } else {\n ret.push(myjson);\n }\n }\n for (var i=0,ilen=myjson.children.length;i<ilen;i+=1){\n if (\"object\" !== typeof myjson.children[i]) {\n continue;\n }\n this.getNodesByName(myjson.children[i],name,nameattrval,ret);\n }\n return ret;\n}\n\nCSL.XmlJSON.prototype.nodeNameIs = function (myjson,name) {\n //print(\"nodeNameIs()\");\n if (typeof myjson === \"undefined\") {\n return false;\n }\n if (name == myjson.name) {\n return true;\n }\n return false;\n}\n\nCSL.XmlJSON.prototype.makeXml = function (myjson) {\n //print(\"makeXml()\");\n if (\"string\" === typeof myjson) {\n if (myjson.slice(0, 1) === \"<\") {\n myjson = this.jsonStringWalker.walkToObject(myjson);\n } else {\n myjson = JSON.parse(myjson);\n }\n }\n return myjson;\n};\n\nCSL.XmlJSON.prototype.insertChildNodeAfter = function (parent,node,pos,datejson) {\n //print(\"insertChildNodeAfter()\");\n // Function is misnamed: this replaces the node\n for (var i=0,ilen=parent.children.length;i<ilen;i+=1) {\n if (node === parent.children[i]) {\n parent.children = parent.children.slice(0,i).concat([datejson]).concat(parent.children.slice(i+1));\n break;\n }\n }\n return parent;\n};\n\n\nCSL.XmlJSON.prototype.insertPublisherAndPlace = function(myjson) {\n if (myjson.name === \"group\") {\n var useme = true;\n var mustHaves = [\"publisher\",\"publisher-place\"];\n for (var i=0,ilen=myjson.children.length;i<ilen;i+=1) {\n var haveVarname = mustHaves.indexOf(myjson.children[i].attrs.variable);\n var isText = myjson.children[i].name === \"text\";\n if (isText && haveVarname > -1 && !myjson.children[i].attrs.prefix && !myjson.children[i].attrs.suffix) {\n mustHaves = mustHaves.slice(0,haveVarname).concat(mustHaves.slice(haveVarname+1));\n } else {\n useme = false;\n break;\n }\n }\n if (useme && !mustHaves.length) {\n myjson.attrs[\"has-publisher-and-publisher-place\"] = true;\n }\n }\n for (var i=0,ilen=myjson.children.length;i<ilen;i+=1) {\n if (\"object\" === typeof myjson.children[i]) {\n this.insertPublisherAndPlace(myjson.children[i]);\n }\n } \n}\n/*\nCSL.XmlJSON.prototype.insertPublisherAndPlace = function(myxml) {\n var group = myxml.getElementsByTagName(\"group\");\n for (var i = 0, ilen = group.length; i < ilen; i += 1) {\n var node = group.item(i);\n var skippers = [];\n for (var j = 0, jlen = node.childNodes.length; j < jlen; j += 1) {\n if (node.childNodes.item(j).nodeType !== 1) {\n skippers.push(j);\n }\n }\n if (node.childNodes.length - skippers.length === 2) {\n var twovars = [];\n for (var j = 0, jlen = 2; j < jlen; j += 1) {\n if (skippers.indexOf(j) > -1) {\n continue;\n }\n var child = node.childNodes.item(j); \n var subskippers = [];\n for (var k = 0, klen = child.childNodes.length; k < klen; k += 1) {\n if (child.childNodes.item(k).nodeType !== 1) {\n subskippers.push(k);\n }\n }\n if (child.childNodes.length - subskippers.length === 0) {\n twovars.push(child.getAttribute('variable'));\n if (child.getAttribute('suffix')\n || child.getAttribute('prefix')) {\n twovars = [];\n break;\n }\n }\n }\n if (twovars.indexOf(\"publisher\") > -1 && twovars.indexOf(\"publisher-place\") > -1) {\n node.setAttribute('has-publisher-and-publisher-place', true);\n }\n }\n }\n};\n*/\n\nCSL.XmlJSON.prototype.isChildOfSubstitute = function(parents) {\n if (parents.length > 0) {\n var myparents = parents.slice();\n var parent = myparents.pop();\n if (parent === \"substitute\") {\n return true;\n } else {\n return this.isChildOfSubstitute(myparents);\n }\n }\n return false;\n};\n\nCSL.XmlJSON.prototype.addMissingNameNodes = function(myjson,parents) {\n if (!parents) {\n parents = [];\n }\n if (myjson.name === \"names\") {\n // Trawl through children to decide whether a name node is needed here\n if (!this.isChildOfSubstitute(parents)) {\n var addName = true;\n for (var i=0,ilen=myjson.children.length;i<ilen;i++) {\n if (myjson.children[i].name === \"name\") {\n addName = false;\n break;\n }\n }\n if (addName) {\n myjson.children = [{name:\"name\",attrs:{},children:[]}].concat(myjson.children);\n }\n }\n }\n parents.push(myjson.name);\n for (var i=0,ilen=myjson.children.length;i<ilen;i+=1) {\n if (\"object\" === typeof myjson.children[i]) {\n this.addMissingNameNodes(myjson.children[i],parents);\n }\n }\n parents.pop();\n}\n\n\nCSL.XmlJSON.prototype.addInstitutionNodes = function(myjson) {\n //print(\"addInstitutionNodes()\");\n var names, thenames, institution, theinstitution, name, thename, xml, pos, len;\n // The idea here is to map relevant attributes from name and nampart=family\n // to the \"long\" institution-part node, when and only when forcing insert\n // of the default node.\n if (myjson.name === \"names\") {\n // do stuff\n var attributes = {};\n var insertPos = -1;\n for (var i=0,ilen=myjson.children.length;i<ilen;i+=1) {\n if (myjson.children[i].name == \"name\") {\n for (var key in myjson.children[i].attrs) {\n attributes[key] = myjson.children[i].attrs[key];\n }\n attributes.delimiter = myjson.children[i].attrs.delimiter;\n attributes.and = myjson.children[i].attrs.and;\n insertPos = i;\n for (var k=0,klen=myjson.children[i].children.length;k<klen;k+=1) {\n if (myjson.children[i].children[k].attrs.name !== 'family') {\n continue;\n }\n for (var key in myjson.children[i].children[k].attrs) {\n attributes[key] = myjson.children[i].children[k].attrs[key];\n }\n }\n }\n if (myjson.children[i].name == \"institution\") {\n insertPos = -1;\n break;\n }\n }\n if (insertPos > -1) {\n var institution = this.nodeCopy(this.institution);\n for (var i=0,ilen = CSL.INSTITUTION_KEYS.length;i<ilen;i+=1) {\n var attrname = CSL.INSTITUTION_KEYS[i];\n if (\"undefined\" !== typeof attributes[attrname]) {\n institution.children[0].attrs[attrname] = attributes[attrname];\n }\n if (attributes.delimiter) {\n institution.attrs.delimiter = attributes.delimiter;\n }\n if (attributes.and) {\n institution.attrs.and = attributes.and;\n }\n }\n myjson.children = myjson.children.slice(0,insertPos+1).concat([institution]).concat(myjson.children.slice(insertPos+1));\n }\n }\n for (var i=0,ilen=myjson.children.length;i<ilen;i+=1) {\n if (\"string\" === typeof myjson.children[i]) {\n continue;\n }\n // Recurse\n this.addInstitutionNodes(myjson.children[i]);\n }\n}\nCSL.XmlJSON.prototype.flagDateMacros = function(myjson) {\n // print(\"flagDateMacros()\");\n for (var i=0,ilen=myjson.children.length;i<ilen;i+=1) {\n if (myjson.children[i].name === \"macro\") {\n if (this.inspectDateMacros(myjson.children[i])) {\n myjson.children[i].attrs[\"macro-has-date\"] = \"true\";\n }\n }\n }\n}\nCSL.XmlJSON.prototype.inspectDateMacros = function(myjson) {\n //print(\"inspectDateMacros()\");\n if (!myjson || !myjson.children) {\n return false;\n }\n if (myjson.name === \"date\") {\n return true;\n } else {\n for (var i=0,ilen=myjson.children.length;i<ilen;i+=1) {\n if (this.inspectDateMacros(myjson.children[i])) {\n return true;\n }\n }\n }\n return false;\n}\n\n/*\n * Clean serialized XML\n */\nCSL.stripXmlProcessingInstruction = function (xml) {\n if (!xml) {\n return xml;\n }\n xml = xml.replace(/^<\\?[^?]+\\?>/, \"\");\n xml = xml.replace(/<!--[^>]+-->/g, \"\");\n xml = xml.replace(/^\\s+/g, \"\");\n xml = xml.replace(/\\s+$/g, \"\");\n return xml;\n};\n\n\n/*\n * String parser for XML inputs\n */\nCSL.parseXml = function(str) {\n\n var _pos = 0;\n var _obj = {children:[]};\n var _stack = [_obj.children];\n\n function _listifyString(str) {\n str = str.split(/(?:\\r\\n|\\n|\\r)/).join(\" \").replace(/>[\t ]+</g, \"><\").replace(/<\\!--.*?-->/g, \"\");\n var lst = str.split(\"><\");\n var stylePos = null;\n for (var i=0,ilen=lst.length;i<ilen;i++) {\n if (i > 0) {\n lst[i] = \"<\" + lst[i];\n }\n if (i < (lst.length-1)) {\n lst[i] = lst[i] + \">\";\n }\n if (\"number\" != typeof stylePos) {\n if (lst[i].slice(0, 7) === \"<style \" || lst[i].slice(0, 8) == \"<locale \") {\n stylePos = i;\n }\n }\n }\n lst = lst.slice(stylePos);\n // Combine open/close elements for empty terms,\n // so that they will be passed through correctly\n // as empty strings.\n for (var i=lst.length-2;i>-1;i--) {\n if (lst[i].slice(1).indexOf(\"<\") === -1) {\n var stub = lst[i].slice(0, 5);\n if (lst[i].slice(-2) !== \"/>\") {\n if (stub === \"<term\") {\n if (lst[i+1].slice(0, 6) === \"</term\") {\n lst[i] = lst[i] + lst[i+1];\n lst = lst.slice(0, i+1).concat(lst.slice(i+2));\n }\n } else if ([\"<sing\", \"<mult\"].indexOf(stub) > -1) {\n if (lst[i].slice(-2) !== \"/>\" && lst[i+1].slice(0, 1) === \"<\") {\n lst[i] = lst[i] + lst[i+1];\n lst = lst.slice(0, i+1).concat(lst.slice(i+2));\n }\n }\n }\n }\n }\n return lst;\n }\n\n function _decodeHtmlEntities(str) {\n return str\n .split(\"&amp;\").join(\"&\")\n .split(\"&quot;\").join(\"\\\"\")\n .split(\"&gt;\").join(\">\").split(\"&lt;\").join(\"<\")\n .replace(/&#([0-9]{1,6});/gi, function(match, numStr) {\n var num = parseInt(numStr, 10); // read num as normal number\n return String.fromCharCode(num);\n })\n .replace(/&#x([a-f0-9]{1,6});/gi, function(match, numStr){\n var num = parseInt(numStr, 16); // read num as hex\n return String.fromCharCode(num);\n });\n }\n\n function _getAttributes(elem) {\n var m = elem.match(/([^\\'\\\"=\t ]+)=(?:\\\"[^\\\"]*\\\"|\\'[^\\']*\\')/g);\n if (m) {\n for (var i=0,ilen=m.length;i<ilen;i++) {\n m[i] = m[i].replace(/=.*/, \"\");\n }\n }\n return m;\n }\n\n function _getAttribute(elem, attr) {\n var rex = RegExp('^.*[\t ]+' + attr + '=(\\\"(?:[^\\\"]*)\\\"|\\'(?:[^\\']*)\\').*$');\n var m = elem.match(rex);\n return m ? m[1].slice(1, -1) : null;\n }\n\n function _getTagName(elem) {\n var rex = RegExp(\"^<([^\t />]+)\");\n var m = elem.match(rex);\n return m ? m[1] : null;\n }\n \n\n function _castObjectFromOpeningTag(elem) {\n var obj = {};\n obj.name = _getTagName(elem);\n obj.attrs = {};\n var attributes = _getAttributes(elem);\n if (attributes) {\n for (var i=0,ilen=attributes.length;i<ilen;i++) {\n var attr = {\n name: attributes[i],\n value: _getAttribute(elem, attributes[i])\n }\n obj.attrs[attr.name] = _decodeHtmlEntities(attr.value);\n }\n }\n obj.children = [];\n return obj;\n }\n\n function _extractTextFromCompositeElement(elem) {\n var m = elem.match(/^.*>([^<]*)<.*$/);\n return _decodeHtmlEntities(m[1]);\n }\n\n function _appendToChildren(obj) {\n _stack.slice(-1)[0].push(obj);\n }\n\n function _extendStackWithNewChildren(obj) {\n _stack.push(obj.children);\n }\n\n function processElement(elem) {\n var obj;\n if (elem.slice(1).indexOf('<') > -1) {\n // withtext\n var tag = elem.slice(0, elem.indexOf('>')+1);\n obj = _castObjectFromOpeningTag(tag);\n obj.children = [_extractTextFromCompositeElement(elem)];\n _appendToChildren(obj);\n } else if (elem.slice(-2) === '/>') {\n // singleton\n obj = _castObjectFromOpeningTag(elem);\n // Empty term as singleton\n if (_getTagName(elem) === 'term') {\n obj.children.push('');\n }\n _appendToChildren(obj);\n } else if (elem.slice(0, 2) === '</') {\n // close\n _stack.pop();\n } else {\n // open\n obj = _castObjectFromOpeningTag(elem);\n _appendToChildren(obj)\n _extendStackWithNewChildren(obj);\n }\n }\n\n var lst = _listifyString(str);\n\n for (var i=0,ilen=lst.length;i<ilen;i++) {\n var elem = lst[i];\n processElement(elem);\n }\n return _obj.children[0];\n}\n\n/**\n * Functions for parsing an XML object using E4X.\n */\n\nCSL.XmlDOM = function (dataObj) {\n this.dataObj = dataObj;\n if (\"undefined\" == typeof DOMParser) {\n DOMParser = function() {};\n DOMParser.prototype.parseFromString = function(str, contentType) {\n if (\"undefined\" != typeof ActiveXObject) {\n var xmldata = new ActiveXObject('MSXML.DomDocument');\n xmldata.async = false;\n xmldata.loadXML(str);\n return xmldata;\n } else if (\"undefined\" != typeof XMLHttpRequest) {\n var xmldata = new XMLHttpRequest;\n if (!contentType) {\n contentType = 'text/xml';\n }\n xmldata.open('GET', 'data:' + contentType + ';charset=utf-8,' + encodeURIComponent(str), false);\n if(xmldata.overrideMimeType) {\n xmldata.overrideMimeType(contentType);\n }\n xmldata.send(null);\n return xmldata.responseXML;\n } else if (\"undefined\" != typeof marknote) {\n var parser = new marknote.Parser();\n return parser.parse(str);\n }\n };\n this.hasAttributes = function (node) {\n var ret;\n if (node.attributes && node.attributes.length) {\n ret = true;\n } else {\n ret = false;\n }\n return ret;\n };\n } else {\n /*\n this.hasAttributes = function (node) {\n return node[\"hasAttributes\"]();\n };\n */\n this.hasAttributes = function (node) {\n var ret;\n if (node.attributes && node.attributes.length) {\n ret = true;\n } else {\n ret = false;\n }\n return ret;\n };\n }\n this.importNode = function (doc, srcElement) {\n var ret;\n if (\"undefined\" == typeof doc.importNode) {\n ret = this._importNode(doc, srcElement, true);\n } else {\n ret = doc.importNode(srcElement, true);\n }\n return ret;\n };\n // In case importNode is not available.\n // Thx + hat tip to Anthony T. Holdener III\n // http://www.alistapart.com/articles/crossbrowserscripting\n // cases 3, 4, 8 = text, cdata, comment\n this._importNode = function(doc, node, allChildren) {\n switch (node.nodeType) {\n // element node\n case 1:\n var newNode = doc.createElement(node.nodeName);\n if (node.attributes && node.attributes.length > 0)\n for (var i = 0, il = node.attributes.length; i < il;)\n newNode.setAttribute(node.attributes[i].nodeName, node.getAttribute(node.attributes[i++].nodeName));\n if (allChildren && node.childNodes && node.childNodes.length > 0)\n for (var i = 0, il = node.childNodes.length; i < il;)\n newNode.appendChild(this._importNode(doc, node.childNodes[i++], allChildren));\n return newNode;\n break;\n case 3:\n case 4:\n case 8:\n // Drop comments on the floor as well.\n //return doc.createTextNode(node.nodeValue);\n //break;\n }\n };\n this.parser = new DOMParser();\n\n // This seems horribly tormented, but there might be a reason for it.\n // Perhaps this was the only way I found to get namespacing to work ... ?\n var str = \"<docco><institution institution-parts=\\\"long\\\" delimiter=\\\", \\\" substitute-use-first=\\\"1\\\" use-last=\\\"1\\\"><institution-part name=\\\"long\\\"/></institution></docco>\";\n var inst_doc = this.parser.parseFromString(str, \"text/xml\");\n var inst_node = inst_doc.getElementsByTagName(\"institution\");\n this.institution = inst_node.item(0);\n var inst_part_node = inst_doc.getElementsByTagName(\"institution-part\");\n this.institutionpart = inst_part_node.item(0);\n this.ns = \"http://purl.org/net/xbiblio/csl\";\n};\n\n/**\n * No need for cleaning with the DOM, I think. This will probably just be a noop.\n * But first, let's get XML mode switching up and running.\n */\nCSL.XmlDOM.prototype.clean = function (xml) {\n xml = xml.replace(/<\\?[^?]+\\?>/g, \"\");\n xml = xml.replace(/<![^>]+>/g, \"\");\n xml = xml.replace(/^\\s+/, \"\");\n xml = xml.replace(/\\s+$/, \"\");\n xml = xml.replace(/^\\n*/, \"\");\n return xml;\n};\n\n\n/**\n * Methods to call on a node.\n */\nCSL.XmlDOM.prototype.getStyleId = function (myxml, styleName) {\n var text = \"\";\n var tagName = \"id\";\n if (styleName) {\n tagName = \"title\";\n }\n var node = myxml.getElementsByTagName(tagName);\n if (node && node.length) {\n node = node.item(0);\n }\n if (node) {\n // W3C conformant browsers\n text = node.textContent;\n }\n if (!text) {\n // Opera, IE 6 & 7\n text = node.innerText;\n }\n if (!text) {\n // Safari\n text = node.innerHTML;\n }\n return text;\n};\n\nCSL.XmlDOM.prototype.children = function (myxml) {\n var children, pos, len, ret;\n if (myxml) {\n ret = [];\n children = myxml.childNodes;\n for (pos = 0, len = children.length; pos < len; pos += 1) {\n if (children[pos].nodeName != \"#text\") {\n ret.push(children[pos]);\n }\n }\n return ret;\n } else {\n return [];\n }\n};\n\nCSL.XmlDOM.prototype.nodename = function (myxml) {\n var ret = myxml.nodeName;\n return ret;\n};\n\nCSL.XmlDOM.prototype.attributes = function (myxml) {\n var ret, attrs, attr, key, xml, pos, len;\n ret = new Object();\n if (myxml && this.hasAttributes(myxml)) {\n attrs = myxml.attributes;\n for (pos = 0, len=attrs.length; pos < len; pos += 1) {\n attr = attrs[pos];\n ret[\"@\" + attr.name] = attr.value;\n }\n }\n return ret;\n};\n\n\nCSL.XmlDOM.prototype.content = function (myxml) {\n var ret;\n if (\"undefined\" != typeof myxml.textContent) {\n ret = myxml.textContent;\n } else if (\"undefined\" != typeof myxml.innerText) {\n ret = myxml.innerText;\n } else {\n ret = myxml.txt;\n }\n return ret;\n};\n\n\nCSL.XmlDOM.prototype.namespace = {\n \"xml\":\"http://www.w3.org/XML/1998/namespace\"\n}\n\nCSL.XmlDOM.prototype.numberofnodes = function (myxml) {\n if (myxml) {\n return myxml.length;\n } else {\n return 0;\n }\n};\n\nCSL.XmlDOM.prototype.getAttributeName = function (attr) {\n var ret = attr.name;\n return ret;\n}\n\nCSL.XmlDOM.prototype.getAttributeValue = function (myxml,name,namespace) {\n var ret = \"\";\n if (namespace) {\n name = namespace+\":\"+name;\n }\n if (myxml && this.hasAttributes(myxml) && myxml.getAttribute(name)) {\n ret = myxml.getAttribute(name);\n }\n return ret;\n}\n\n//\n// Can't this be, you know ... simplified?\n//\nCSL.XmlDOM.prototype.getNodeValue = function (myxml,name) {\n var ret = null;\n if (name){\n var vals = myxml.getElementsByTagName(name);\n if (vals.length > 0) {\n if (\"undefined\" != typeof vals[0].textContent) {\n ret = vals[0].textContent;\n } else if (\"undefined\" != typeof vals[0].innerText) {\n ret = vals[0].innerText;\n } else {\n ret = vals[0].text;\n }\n }\n }\n if (ret === null && myxml && myxml.childNodes && (myxml.childNodes.length == 0 || (myxml.childNodes.length == 1 && myxml.firstChild.nodeName == \"#text\"))) {\n if (\"undefined\" != typeof myxml.textContent) {\n ret = myxml.textContent;\n } else if (\"undefined\" != typeof myxml.innerText) {\n ret = myxml.innerText;\n } else {\n ret = myxml.text;\n }\n }\n if (ret === null) {\n ret = myxml;\n }\n return ret;\n}\n\nCSL.XmlDOM.prototype.setAttributeOnNodeIdentifiedByNameAttribute = function (myxml,nodename,partname,attrname,val) {\n var pos, len, xml, nodes, node;\n if (attrname.slice(0,1) === '@'){\n attrname = attrname.slice(1);\n }\n nodes = myxml.getElementsByTagName(nodename);\n for (pos = 0, len = nodes.length; pos < len; pos += 1) {\n node = nodes[pos];\n if (node.getAttribute(\"name\") != partname) {\n continue;\n }\n node.setAttribute(attrname, val);\n }\n}\n\nCSL.XmlDOM.prototype.deleteNodeByNameAttribute = function (myxml,val) {\n var pos, len, node, nodes;\n nodes = myxml.childNodes;\n for (pos = 0, len = nodes.length; pos < len; pos += 1) {\n node = nodes[pos];\n if (!node || node.nodeType == node.TEXT_NODE) {\n continue;\n }\n if (this.hasAttributes(node) && node.getAttribute(\"name\") == val) {\n myxml.removeChild(nodes[pos]);\n }\n }\n}\n\nCSL.XmlDOM.prototype.deleteAttribute = function (myxml,attr) {\n myxml.removeAttribute(attr);\n}\n\nCSL.XmlDOM.prototype.setAttribute = function (myxml,attr,val) {\n if (!myxml.ownerDocument) {\n myxml = myxml.firstChild;\n }\n // \"unknown\" to satisfy IE8, which crashes when setAttribute\n // is checked directly as a property, and report its type as\n // \"unknown\".\n // Many thanks to Phil Lord for tracing the cause of the fault.\n if ([\"function\", \"unknown\"].indexOf(typeof myxml.setAttribute) > -1) {\n myxml.setAttribute(attr, val);\n }\n return false;\n}\n\nCSL.XmlDOM.prototype.nodeCopy = function (myxml) {\n var cloned_node = myxml.cloneNode(true);\n return cloned_node;\n}\n\nCSL.XmlDOM.prototype.getNodesByName = function (myxml,name,nameattrval) {\n var ret, nodes, node, pos, len;\n ret = [];\n nodes = myxml.getElementsByTagName(name);\n for (pos = 0, len = nodes.length; pos < len; pos += 1) {\n node = nodes.item(pos);\n if (nameattrval && !(this.hasAttributes(node) && node.getAttribute(\"name\") == nameattrval)) {\n// if (nameattrval && !(this.attributes && node.attributes.name && node.attributes.name.value == nameattrval)) {\n continue;\n }\n ret.push(node);\n }\n return ret;\n}\n\nCSL.XmlDOM.prototype.nodeNameIs = function (myxml,name) {\n if (name == myxml.nodeName) {\n return true;\n }\n return false;\n}\n\nCSL.XmlDOM.prototype.makeXml = function (myxml) {\n var ret, topnode;\n if (!myxml) {\n myxml = \"<docco><bogus/></docco>\";\n }\n myxml = myxml.replace(/\\s*<\\?[^>]*\\?>\\s*\\n*/g, \"\");\n var nodetree = this.parser.parseFromString(myxml, \"application/xml\");\n return nodetree.firstChild;\n};\n\nCSL.XmlDOM.prototype.insertChildNodeAfter = function (parent,node,pos,datexml) {\n var myxml, xml;\n myxml = this.importNode(node.ownerDocument, datexml);\n parent.replaceChild(myxml, node);\n return parent;\n};\n\nCSL.XmlDOM.prototype.insertPublisherAndPlace = function(myxml) {\n var group = myxml.getElementsByTagName(\"group\");\n for (var i = 0, ilen = group.length; i < ilen; i += 1) {\n var node = group.item(i);\n var skippers = [];\n for (var j = 0, jlen = node.childNodes.length; j < jlen; j += 1) {\n if (node.childNodes.item(j).nodeType !== 1) {\n skippers.push(j);\n }\n }\n if (node.childNodes.length - skippers.length === 2) {\n var twovars = [];\n for (var j = 0, jlen = 2; j < jlen; j += 1) {\n if (skippers.indexOf(j) > -1) {\n continue;\n }\n var child = node.childNodes.item(j); \n var subskippers = [];\n for (var k = 0, klen = child.childNodes.length; k < klen; k += 1) {\n if (child.childNodes.item(k).nodeType !== 1) {\n subskippers.push(k);\n }\n }\n if (child.childNodes.length - subskippers.length === 0) {\n twovars.push(child.getAttribute('variable'));\n if (child.getAttribute('suffix')\n || child.getAttribute('prefix')) {\n twovars = [];\n break;\n }\n }\n }\n if (twovars.indexOf(\"publisher\") > -1 && twovars.indexOf(\"publisher-place\") > -1) {\n node.setAttribute('has-publisher-and-publisher-place', true);\n }\n }\n }\n};\n\nCSL.XmlDOM.prototype.isChildOfSubstitute = function(node) {\n if (node.parentNode) {\n if (node.parentNode.tagName.toLowerCase() === \"substitute\") {\n return true;\n } else {\n return this.isChildOfSubstitute(node.parentNode);\n }\n }\n return false;\n};\n\nCSL.XmlDOM.prototype.addMissingNameNodes = function(myxml) {\n var nameslist = myxml.getElementsByTagName(\"names\");\n for (var i = 0, ilen = nameslist.length; i < ilen; i += 1) {\n var names = nameslist.item(i);\n var namelist = names.getElementsByTagName(\"name\");\n if ((!namelist || namelist.length === 0)\n && !this.isChildOfSubstitute(names)) {\n \n var doc = names.ownerDocument;\n var name = doc.createElement(\"name\");\n names.appendChild(name);\n }\n }\n};\n\n\nCSL.XmlDOM.prototype.addInstitutionNodes = function(myxml) {\n var names, thenames, institution, theinstitution, theinstitutionpart, name, thename, xml, pos, len;\n names = myxml.getElementsByTagName(\"names\");\n for (pos = 0, len = names.length; pos < len; pos += 1) {\n thenames = names.item(pos);\n name = thenames.getElementsByTagName(\"name\");\n if (name.length == 0) {\n continue;\n }\n institution = thenames.getElementsByTagName(\"institution\");\n if (institution.length == 0) {\n theinstitution = this.importNode(myxml.ownerDocument, this.institution);\n theinstitutionpart = theinstitution.getElementsByTagName(\"institution-part\").item(0);\n thename = name.item(0);\n thenames.insertBefore(theinstitution, thename.nextSibling);\n for (var j = 0, jlen = CSL.INSTITUTION_KEYS.length; j < jlen; j += 1) {\n var attrname = CSL.INSTITUTION_KEYS[j];\n var attrval = thename.getAttribute(attrname);\n if (attrval) {\n theinstitutionpart.setAttribute(attrname, attrval);\n }\n }\n var nameparts = thename.getElementsByTagName(\"name-part\");\n for (var j = 0, jlen = nameparts.length; j < jlen; j += 1) {\n if ('family' === nameparts[j].getAttribute('name')) {\n for (var k = 0, klen = CSL.INSTITUTION_KEYS.length; k < klen; k += 1) {\n var attrname = CSL.INSTITUTION_KEYS[k];\n var attrval = nameparts[j].getAttribute(attrname);\n if (attrval) {\n theinstitutionpart.setAttribute(attrname, attrval);\n }\n }\n }\n }\n }\n }\n};\n\n\nCSL.XmlDOM.prototype.flagDateMacros = function(myxml) {\n var pos, len, thenode, thedate;\n var nodes = myxml.getElementsByTagName(\"macro\");\n for (pos = 0, len = nodes.length; pos < len; pos += 1) {\n thenode = nodes.item(pos);\n thedate = thenode.getElementsByTagName(\"date\");\n if (thedate.length) {\n thenode.setAttribute('macro-has-date', 'true');\n }\n }\n};\n\n\n/*global CSL: true */\n\nCSL.setupXml = function(xmlObject) {\n var dataObj = {};\n var parser = null;\n if (\"undefined\" !== typeof xmlObject) {\n if (\"string\" === typeof xmlObject) {\n xmlObject = xmlObject.replace(\"^\\uFEFF\", \"\")\n .replace(/^\\s+/, \"\");\n if (xmlObject.slice(0, 1) === \"<\") {\n // Assume serialized XML\n dataObj = CSL.parseXml(xmlObject);\n } else {\n // Assume serialized JSON\n dataObj = JSON.parse(xmlObject);\n }\n parser = new CSL.XmlJSON(dataObj);\n } else if (\"undefined\" !== typeof xmlObject.getAttribute) {\n // Assume DOM instance\n parser = new CSL.XmlDOM(xmlObject);\n } else if (\"undefined\" !== typeof xmlObject.toXMLString) {\n // Assume E4X object\n parser = new CSL.XmlE4X(xmlObject);\n } else {\n // Assume JS object\n parser = new CSL.XmlJSON(xmlObject);\n }\n } else {\n CSL.error(\"unable to parse XML input\");\n }\n if (!parser) {\n CSL.error(\"citeproc-js error: unable to parse CSL style or locale object\");\n }\n return parser;\n};\n\n/*global CSL: true */\n\nCSL.getSortCompare = function (default_locale) {\n if (CSL.stringCompare) {\n return CSL.stringCompare;\n }\n var me = this;\n var strcmp;\n var strcmp_opts = {\n sensitivity:\"base\",\n ignorePunctuation:true,\n numeric:true\n };\n // In order, attempt the following:\n // (1) Set locale collation from processor language\n // (2) Use localeCompare()\n if (!default_locale) {\n default_locale = \"en-US\";\n }\n strcmp = function (a, b) {\n return CSL.toLocaleLowerCase.call(me, a).localeCompare(CSL.toLocaleLowerCase.call(me, b),default_locale,strcmp_opts);\n };\n var stripPunct = function (str) {\n return str.replace(/^[\\[\\]\\'\\\"]*/g, \"\");\n };\n var getBracketPreSort = function () {\n if (!strcmp(\"[x\",\"x\")) {\n return false;\n } else {\n return function (a, b) {\n return strcmp(stripPunct(a), stripPunct(b));\n };\n }\n };\n var bracketPreSort = getBracketPreSort();\n var sortCompare = function (a, b) {\n if (bracketPreSort) {\n return bracketPreSort(a, b);\n } else {\n return strcmp(a, b);\n }\n };\n return sortCompare;\n};\n\n/*global CSL: true */\n\nCSL.ambigConfigDiff = function(a, b) {\n var pos, len, ppos, llen;\n // return of true means the ambig configs differ\n if (a.names.length !== b.names.length) {\n //print(\" (1)\");\n return 1;\n } else {\n for (pos = 0, len = a.names.length; pos < len; pos += 1) {\n if (a.names[pos] !== b.names[pos]) {\n //print(\" (2) \"+a.names[pos]+\" \"+b.names[pos]);\n return 1;\n } else {\n for (ppos = 0, llen = a.givens[pos]; ppos < llen; ppos += 1) {\n if (a.givens[pos][ppos] !== b.givens[pos][ppos]) {\n //print(\" (3): \"+a.givens[pos][ppos]+\" \"+b.givens[pos][ppos]+\" \"+pos+\"/\"+ppos+\" \"+b.givens[pos]);\n return 1;\n }\n }\n }\n }\n }\n if (a.disambiguate != b.disambiguate) {\n //print(\" (4) \"+a.disambiguate+\" \"+b.disambiguate);\n return 1;\n }\n if (a.year_suffix !== b.year_suffix) {\n //print(\" (5) \"+a.year_suffix+\" \"+b.year_suffix);\n return 1;\n }\n return 0;\n};\n\nCSL.cloneAmbigConfig = function (config, oldconfig) {\n var i, ilen, j, jlen, param;\n var ret = {};\n ret.names = [];\n ret.givens = [];\n ret.year_suffix = false;\n ret.disambiguate = false;\n for (i = 0, ilen = config.names.length; i < ilen; i += 1) {\n param = config.names[i];\n // Fixes update bug affecting plugins, without impacting\n // efficiency with update of large numbers of year-suffixed\n // items.\n ret.names[i] = param;\n }\n for (i = 0, ilen = config.givens.length; i < ilen; i += 1) {\n param = [];\n for (j = 0, jlen = config.givens[i].length; j < jlen; j += 1) {\n // condition at line 312 of disambiguate.js protects against negative\n // values of j\n param.push(config.givens[i][j]);\n }\n ret.givens.push(param);\n }\n // XXXX Is this necessary at all?\n if (oldconfig) {\n ret.year_suffix = oldconfig.year_suffix;\n ret.disambiguate = oldconfig.disambiguate;\n } else {\n ret.year_suffix = config.year_suffix;\n ret.disambiguate = config.disambiguate;\n }\n return ret;\n};\n\n/**\n * Return current base configuration for disambiguation\n */\nCSL.getAmbigConfig = function () {\n var config, ret;\n config = this.tmp.disambig_request;\n if (!config) {\n config = this.tmp.disambig_settings;\n }\n var ret = CSL.cloneAmbigConfig(config);\n return ret;\n};\n\n/**\n * Return max values for disambiguation\n */\nCSL.getMaxVals = function () {\n return this.tmp.names_max.mystack.slice();\n};\n\n/**\n * Return min value for disambiguation\n */\nCSL.getMinVal = function () {\n return this.tmp[\"et-al-min\"];\n};\n\n/*global CSL: true */\n\n/* For node execution pretty-printing (see below) */\n\n/*\nvar INDENT = \"\";\n*/\n\nCSL.tokenExec = function (token, Item, item) {\n // Called on state object\n var next, maybenext, exec, debug;\n debug = false;\n next = token.next;\n maybenext = false;\n\n /* Pretty-print node executions */\n\n /*\n if ([\"if\", \"else-if\", \"else\"].indexOf(token.name) === -1) {\n if (token.tokentype == 1) {\n INDENT = INDENT.slice(0, -2);\n }\n }\n this.sys.print(INDENT + \"---> Token: \" + token.name + \" (\" + token.tokentype + \") in \" + this.tmp.area + \", \" + this.output.current.mystack.length);\n if ([\"if\", \"else-if\", \"else\"].indexOf(token.name) === -1) {\n if (token.tokentype == 0) {\n INDENT += \" \";\n }\n }\n */\n\n var record = function (result) {\n if (result) {\n this.tmp.jump.replace(\"succeed\");\n return token.succeed;\n } else {\n this.tmp.jump.replace(\"fail\");\n return token.fail;\n }\n };\n if (token.test) {\n next = record.call(this,token.test(Item, item));\n }\n for (var i=0,ilen=token.execs.length;i<ilen;i++) {\n exec = token.execs[i];\n maybenext = exec.call(token, this, Item, item);\n if (maybenext) {\n next = maybenext;\n }\n }\n //SNIP-START\n if (debug) {\n CSL.debug(token.name + \" (\" + token.tokentype + \") ---> done\");\n }\n //SNIP-END\n return next;\n};\n\n/**\n * Macro expander.\n * <p>Called on the state object.</p>\n */\nCSL.expandMacro = function (macro_key_token, target) {\n var mkey, macro_nodes, end_of_macro, func;\n\n mkey = macro_key_token.postponed_macro;\n\n var sort_direction = macro_key_token.strings.sort_direction;\n \n // Decorations and affixes are in wrapper applied in cs:text\n macro_key_token = new CSL.Token(\"group\", CSL.START);\n \n var hasDate = false;\n var macroid = false;\n macro_nodes = this.cslXml.getNodesByName(this.cslXml.dataObj, 'macro', mkey);\n if (macro_nodes.length) {\n macroid = this.cslXml.getAttributeValue(macro_nodes[0],'cslid');\n hasDate = this.cslXml.getAttributeValue(macro_nodes[0], \"macro-has-date\");\n }\n if (hasDate) {\n mkey = mkey + \"@\" + this.build.current_default_locale;\n func = function (state) {\n if (state.tmp.extension) {\n state.tmp[\"doing-macro-with-date\"] = true;\n }\n };\n macro_key_token.execs.push(func);\n }\n\n if (this.build.macro_stack.indexOf(mkey) > -1) {\n CSL.error(\"CSL processor error: call to macro \\\"\" + mkey + \"\\\" would cause an infinite loop\");\n } else {\n this.build.macro_stack.push(mkey);\n }\n\n macro_key_token.cslid = macroid;\n\n if (CSL.MODULE_MACROS[mkey]) {\n macro_key_token.juris = mkey;\n this.opt.update_mode = CSL.POSITION;\n }\n // Macro group is treated as a real node in the style\n CSL.Node.group.build.call(macro_key_token, this, target, true);\n\n // Node does not exist in the CSL\n if (!this.cslXml.getNodeValue(macro_nodes)) {\n CSL.error(\"CSL style error: undefined macro \\\"\" + mkey + \"\\\"\");\n }\n\n // Let's macro\n var mytarget = CSL.getMacroTarget.call(this, mkey);\n if (mytarget) {\n CSL.buildMacro.call(this, mytarget, macro_nodes);\n CSL.configureMacro.call(this, mytarget);\n }\n if (!this.build.extension) {\n var func = (function(macro_name) {\n return function (state, Item, item) {\n var next = 0;\n while (next < state.macros[macro_name].length) {\n next = CSL.tokenExec.call(state, state.macros[macro_name][next], Item, item);\n }\n };\n }(mkey));\n var text_node = new CSL.Token(\"text\", CSL.SINGLETON);\n text_node.execs.push(func);\n target.push(text_node);\n }\n\n // Decorations and affixes are in wrapper applied in cs:text\n end_of_macro = new CSL.Token(\"group\", CSL.END);\n end_of_macro.strings.sort_direction = sort_direction;\n \n if (hasDate) {\n func = function (state) {\n if (state.tmp.extension) {\n state.tmp[\"doing-macro-with-date\"] = false;\n }\n };\n end_of_macro.execs.push(func);\n }\n if (macro_key_token.juris) {\n end_of_macro.juris = mkey;\n }\n // Macro group is treated as a real node in the style\n CSL.Node.group.build.call(end_of_macro, this, target, true);\n\n this.build.macro_stack.pop();\n};\n\nCSL.getMacroTarget = function (mkey) {\n var mytarget = false;\n if (this.build.extension) {\n mytarget = this[this.build.root + this.build.extension].tokens;\n } else if (!this.macros[mkey]) {\n mytarget = [];\n this.macros[mkey] = mytarget;\n }\n return mytarget;\n};\n\nCSL.buildMacro = function (mytarget, macro_nodes) {\n var builder = CSL.makeBuilder(this, mytarget);\n var mynode;\n if (\"undefined\" === typeof macro_nodes.length) {\n mynode = macro_nodes;\n } else {\n mynode = macro_nodes[0];\n }\n builder(mynode);\n};\n\nCSL.configureMacro = function (mytarget) {\n if (!this.build.extension) {\n this.configureTokenList(mytarget);\n }\n};\n\n\n/**\n * Convert XML node to token.\n * <p>This is called on an XML node. After extracting the name and attribute\n * information from the node, it performs three operations. Attribute information\n * relating to output formatting is stored on the node as an array of tuples,\n * which fixes the sequence of execution of output functions to be invoked\n * in the next phase of processing. Other attribute information is reduced\n * to functions, and is pushed into an array on the token in no particular\n * order, for later execution. The element name is used as a key to\n * invoke the relevant <code>build</code> method of the target element.\n * Element methods are defined in {@link CSL.Node}.</p>\n * @param {Object} state The state object returned by {@link CSL.Engine}.\n * @param {Int} tokentype A CSL namespace constant (<code>CSL.START</code>,\n * <code>CSL.END</code> or <code>CSL.SINGLETON</code>.\n */\nCSL.XmlToToken = function (state, tokentype, explicitTarget, var_stack) {\n var name, txt, attrfuncs, attributes, decorations, token, key, target;\n name = state.cslXml.nodename(this);\n //CSL.debug(tokentype + \" : \" + name);\n if (state.build.skip && state.build.skip !== name) {\n return;\n }\n if (!name) {\n txt = state.cslXml.content(this);\n if (txt) {\n state.build.text = txt;\n }\n return;\n }\n if (!CSL.Node[state.cslXml.nodename(this)]) {\n CSL.error(\"Undefined node name \\\"\" + name + \"\\\".\");\n }\n attrfuncs = [];\n attributes = state.cslXml.attributes(this);\n decorations = CSL.setDecorations.call(this, state, attributes);\n token = new CSL.Token(name, tokentype);\n if (tokentype !== CSL.END || name === \"if\" || name === \"else-if\" || name === \"layout\") {\n //\n // xml: more xml stuff\n //\n for (var key in attributes) {\n if (attributes.hasOwnProperty(key)) {\n if (tokentype === CSL.END && key !== \"@language\" && key !== \"@locale\") {\n continue;\n }\n if (attributes.hasOwnProperty(key)) {\n if (CSL.Attributes[key]) {\n try {\n CSL.Attributes[key].call(token, state, \"\" + attributes[key]);\n } catch (e) {\n CSL.error(key + \" attribute: \" + e);\n }\n } else {\n CSL.debug(\"warning: undefined attribute \\\"\"+key+\"\\\" in style\");\n }\n }\n }\n }\n token.decorations = decorations;\n if (CSL.DATE_VARIABLES.indexOf(attributes['@variable']) > -1) {\n var_stack.push(token.variables);\n }\n } else if (tokentype === CSL.END && attributes['@variable']) {\n token.hasVariable = true;\n if (CSL.DATE_VARIABLES.indexOf(attributes['@variable']) > -1) {\n token.variables = var_stack.pop();\n }\n }\n //\n // !!!!!: eliminate diversion of tokens to separate\n // token list (formerly used for reading in macros\n // and terms).\n //\n if (explicitTarget) {\n target = explicitTarget;\n } else {\n target = state[state.build.area].tokens;\n }\n // True flags real nodes in the style\n CSL.Node[name].build.call(token, state, target, true);\n};\n\n\n\n/*global CSL: true */\n\n\nCSL.DateParser = function () {\n\n /*\n * Fixed values\n */\n\n // jse imperial years\n var epochPairs = [\n [\"\\u660E\\u6CBB\", 1867],\n [\"\\u5927\\u6B63\", 1911],\n [\"\\u662D\\u548C\", 1925],\n [\"\\u5E73\\u6210\", 1988]\n ];\n\n // years by jse imperial epoch\n var epochYearByName = {};\n for (var i=0,ilen=epochPairs.length; i<ilen; i++) {\n var key = epochPairs[i][0];\n var val = epochPairs[i][1];\n epochYearByName[key] = val;\n }\n \n var epochMatchStrings = [];\n var epochMap = {};\n for (var i=0,ilen=epochPairs.length; i<ilen; i++) {\n var pair = epochPairs[i];\n var val = pair[0];\n epochMatchStrings.push(val);\n epochMap[pair[0]] = pair[1];\n }\n var epochMatchString = epochMatchStrings.join(\"|\");\n\n // regular expression to trap year name and year\n // (splitter and matcher, to cope with ancient JS implementations)\n var epochSplitter = new RegExp(\"(?:\" + epochMatchString + \")(?:[0-9]+)\");\n var epochMatcher = new RegExp(\"(?:\" + epochMatchString + \")(?:[0-9]+)\", \"g\");\n\n // regular expression for month or day kanji label\n var kanjiMonthDay = /(\\u6708|\\u5E74)/g;\n\n // regular expression for year kanji label\n var kanjiYear = /\\u65E5/g;\n\n // regular expression for double-width Japanese range marker\n var kanjiRange = /\\u301c/g;\n\n // parsing regexps for normalized strings\n // raw materials\n var yearLast = \"(?:[?0-9]{1,2}%%NUMD%%){0,2}[?0-9]{4}(?![0-9])\";\n var yearFirst = \"[?0-9]{4}(?:%%NUMD%%[?0-9]{1,2}){0,2}(?![0-9])\";\n var numberVal = \"[?0-9]{1,3}\";\n var rangeSeparator = \"[%%DATED%%]\";\n var fuzzyChar = \"[?~]\";\n var chars = \"[^\\-\\/\\~\\?0-9]+\";\n var rexString = \"(\" + yearFirst + \"|\" + yearLast + \"|\" + numberVal + \"|\" + rangeSeparator + \"|\" + fuzzyChar + \"|\" + chars + \")\";\n // composed regexps\n var rexDash = new RegExp(rexString.replace(/%%NUMD%%/g, \"-\").replace(/%%DATED%%/g, \"-\"));\n var rexDashSlash = new RegExp(rexString.replace(/%%NUMD%%/g, \"-\").replace(/%%DATED%%/g, \"\\/\"));\n var rexSlashDash = new RegExp(rexString.replace(/%%NUMD%%/g, \"\\/\").replace(/%%DATED%%/g, \"-\"));\n\n /*\n * Mutable values\n */\n\n // months\n var monthString = \"january february march april may june july august september october november december spring summer fall winter spring summer\";\n this.monthStrings = monthString.split(\" \");\n\n /*\n * Configuration functions\n */\n\n this.setOrderDayMonth = function() {\n // preferred ordering for numeric dates\n this.monthGuess = 1;\n this.dayGuess = 0;\n };\n\n this.setOrderMonthDay = function() {\n // preferred ordering for numeric dates\n this.monthGuess = 0;\n this.dayGuess = 1;\n };\n\n this.resetDateParserMonths = function() {\n // Function to reset months to default.\n this.monthSets = [];\n for (var i=0,ilen=this.monthStrings.length; i<ilen; i++) {\n this.monthSets.push([this.monthStrings[i]]);\n }\n this.monthAbbrevs = [];\n for (var i=0,ilen=this.monthSets.length; i<ilen; i++) {\n this.monthAbbrevs.push([]);\n for (var j=0,jlen=this.monthSets[i].length; j<jlen; j++) {\n this.monthAbbrevs[i].push(this.monthSets[i][0].slice(0, 3));\n }\n }\n this.monthRexes = [];\n for (var i=0,ilen=this.monthAbbrevs.length; i<ilen; i++) {\n this.monthRexes.push(new RegExp(\"(?:\" + this.monthAbbrevs[i].join(\"|\") + \")\"));\n }\n };\n\n this.addDateParserMonths = function(lst) {\n // Extend list of months with an additional set of month abbreviations,\n // extending strings as required to resolve ambiguities.\n\n // Normalize string to list\n if (\"string\" === typeof lst) {\n lst = lst.split(/\\s+/);\n }\n\n // Check that there are twelve (or sixteen) to add\n if (lst.length !== 12 && lst.length !== 16) {\n CSL.debug(\"month [+season] list of \"+lst.length+\", expected 12 or 16. Ignoring.\");\n return;\n }\n\n // Extend as necessary to resolve ambiguities\n // For each new month string ...\n for (var i=0,ilen=lst.length; i<ilen; i++) {\n var abbrevLength = null;\n var skip = false;\n var insert = 3;\n var extendedSets = {};\n for (var j=0,jlen=this.monthAbbrevs.length; j<jlen; j++) {\n extendedSets[j] = {};\n if (j === i) {\n // Mark for skipping if same as an existing abbreviation of same month\n for (var k=0,klen=this.monthAbbrevs[i].length; k<klen; k++) {\n if (this.monthAbbrevs[i][k] === lst[i].slice(0, this.monthAbbrevs[i][k].length)) {\n skip = true;\n break;\n }\n }\n } else {\n // Mark for extending if same as existing abbreviation of any expression of another month\n for (var k=0,klen=this.monthAbbrevs[j].length; k<klen; k++) {\n abbrevLength = this.monthAbbrevs[j][k].length;\n if (this.monthAbbrevs[j][k] === lst[i].slice(0, abbrevLength)) {\n while (this.monthSets[j][k].slice(0, abbrevLength) === lst[i].slice(0, abbrevLength)) {\n // Abort when full length is hit, otherwise extend\n if (abbrevLength > lst[i].length || abbrevLength > this.monthSets[j][k].length) {\n CSL.debug(\"unable to disambiguate month string in date parser: \"+lst[i]);\n break;\n } else {\n // Mark both new entry and existing abbrev for extension\n abbrevLength += 1;\n }\n }\n insert = abbrevLength;\n extendedSets[j][k] = abbrevLength;\n }\n }\n }\n for (var jKey in extendedSets) {\n for (var kKey in extendedSets[jKey]) {\n abbrevLength = extendedSets[jKey][kKey];\n jKey = parseInt(jKey, 10);\n kKey = parseInt(kKey, 10);\n this.monthAbbrevs[jKey][kKey] = this.monthSets[jKey][kKey].slice(0, abbrevLength);\n }\n }\n }\n // Insert here\n if (!skip) {\n this.monthSets[i].push(lst[i]);\n this.monthAbbrevs[i].push(lst[i].slice(0, insert));\n }\n }\n\n // Compose\n this.monthRexes = [];\n this.monthRexStrs = [];\n for (var i=0,ilen=this.monthAbbrevs.length; i<ilen; i++) {\n this.monthRexes.push(new RegExp(\"^(?:\" + this.monthAbbrevs[i].join(\"|\") + \")\"));\n this.monthRexStrs.push(\"^(?:\" + this.monthAbbrevs[i].join(\"|\") + \")\");\n }\n if (this.monthAbbrevs.length === 18) {\n for (var i=12,ilen=14; i<ilen; i++) {\n this.monthRexes[i+4] = new RegExp(\"^(?:\" + this.monthAbbrevs[i].join(\"|\") + \")\");\n this.monthRexStrs[i+4] = \"^(?:\" + this.monthAbbrevs[i].join(\"|\") + \")\";\n }\n }\n };\n\n /*\n * Conversion functions\n */\n\n this.convertDateObjectToArray = function (thedate) {\n // Converts object in place and returns object\n thedate[\"date-parts\"] = [];\n thedate[\"date-parts\"].push([]);\n var slicelen = 0;\n var part;\n for (var i=0,ilen=3; i<ilen; i++) {\n part = [\"year\", \"month\", \"day\"][i];\n if (!thedate[part]) {\n break;\n }\n slicelen += 1;\n thedate[\"date-parts\"][0].push(thedate[part]);\n delete thedate[part];\n }\n thedate[\"date-parts\"].push([]);\n for (var i=0, ilen=slicelen; i<ilen; i++) {\n part = [\"year_end\", \"month_end\", \"day_end\"][i];\n if (!thedate[part]) {\n break;\n }\n thedate[\"date-parts\"][1].push(thedate[part]);\n delete thedate[part];\n }\n if (thedate[\"date-parts\"][0].length !== thedate[\"date-parts\"][1].length) {\n thedate[\"date-parts\"].pop();\n }\n return thedate;\n };\n\n // XXXX String output is currently unable to represent ranges\n this.convertDateObjectToString = function(thedate) {\n // Returns string\n var ret = [];\n for (var i = 0, ilen = 3; i < ilen; i += 1) {\n if (thedate[CSL.DATE_PARTS_ALL[i]]) {\n ret.push(thedate[CSL.DATE_PARTS_ALL[i]]);\n } else {\n break;\n }\n }\n return ret.join(\"-\");\n };\n\n /*\n * Utility function\n */\n\n this._parseNumericDate = function (ret, delim, suff, txt) {\n if (!suff) {\n suff = \"\";\n }\n var lst = txt.split(delim);\n \n for (var i=0, ilen=lst.length; i<ilen; i++) {\n if (lst[i].length === 4) {\n ret[(\"year\" + suff)] = lst[i].replace(/^0*/, \"\");\n if (!i) {\n lst = lst.slice(1);\n } else {\n lst = lst.slice(0, i);\n }\n break;\n }\n }\n for (var i=0,ilen=lst.length; i<ilen; i++) {\n lst[i] = parseInt(lst[i], 10);\n }\n if (lst.length === 1 || (lst.length === 2 && !lst[1])) {\n var month = lst[0];\n if (month) {\n ret[(\"month\" + suff)] = \"\" + lst[0];\n }\n } else if (lst.length === 2) {\n if (lst[this.monthGuess] > 12) {\n var month = lst[this.dayGuess];\n var day = lst[this.monthGuess];\n if (month) {\n ret[(\"month\" + suff)] = \"\" + month;\n if (day) {\n ret[(\"day\" + suff)] = \"\" + day;\n }\n }\n } else {\n var month = lst[this.monthGuess];\n var day = lst[this.dayGuess];\n if (month) {\n ret[(\"month\" + suff)] = \"\" + month;\n if (day) {\n ret[(\"day\" + suff)] = \"\" + day;\n }\n }\n }\n }\n };\n\n /*\n * Parsing functions\n */\n\n this.parseDateToObject = function (txt) {\n //\n // Normalize the format and the year if it's a Japanese date\n //\n var orig = txt;\n var slashPos = -1;\n var dashPos = -1;\n var yearIsNegative = false;\n var lst;\n if (txt) {\n txt = txt.replace(/^(.*[0-9])T[0-9].*/, \"$1\");\n // If string leads with a minus sign, strip and memo it.\n if (txt.slice(0, 1) === \"-\") {\n yearIsNegative = true;\n txt = txt.slice(1);\n }\n \n // If string is a number of 1 to 3 characters only, treat as year.\n if (txt.match(/^[0-9]{1,3}$/)) {\n while (txt.length < 4) {\n txt = \"0\" + txt;\n }\n }\n \n // Normalize to string\n txt = \"\" + txt;\n // Remove things that look like times\n txt = txt.replace(/\\s*[0-9]{2}:[0-9]{2}(?::[0-9]+)/,\"\");\n var m = txt.match(kanjiMonthDay);\n if (m) {\n txt = txt.replace(/\\s+/g, \"\");\n txt = txt.replace(kanjiYear, \"\");\n txt = txt.replace(kanjiMonthDay, \"-\");\n txt = txt.replace(kanjiRange, \"/\");\n txt = txt.replace(/\\-\\//g, \"/\");\n txt = txt.replace(/-$/g,\"\");\n\n // Tortuous workaround for IE6\n var slst = txt.split(epochSplitter);\n lst = [];\n var mm = txt.match(epochMatcher);\n if (mm) {\n var mmx = [];\n for (var i=0,ilen=mm.length; i<ilen; i++) {\n mmx = mmx.concat(mm[i].match(/([^0-9]+)([0-9]+)/).slice(1));\n }\n for (var i=0,ilen=slst.length; i<ilen; i++) {\n lst.push(slst[i]);\n if (i !== (ilen - 1)) {\n // pos is undeclared, and multiplying by 2 here is insane.\n var mmpos = (i * 2);\n lst.push(mmx[mmpos]);\n lst.push(mmx[mmpos + 1]);\n }\n }\n } else {\n lst = slst;\n }\n // workaround duly applied, this now works\n for (var i=1,ilen=lst.length; i<ilen; i+=3) {\n lst[i + 1] = epochMap[lst[i]] + parseInt(lst[i + 1], 10);\n lst[i] = \"\";\n }\n txt = lst.join(\"\");\n txt = txt.replace(/\\s*-\\s*$/, \"\").replace(/\\s*-\\s*\\//, \"/\");\n //\n // normalize date and identify delimiters\n //\n txt = txt.replace(/\\.\\s*$/, \"\");\n\n // not sure what this is meant to do\n txt = txt.replace(/\\.(?! )/, \"\");\n\n slashPos = txt.indexOf(\"/\");\n dashPos = txt.indexOf(\"-\");\n }\n }\n // drop punctuation from a.d., b.c.\n txt = txt.replace(/([A-Za-z])\\./g, \"$1\");\n\n var number = \"\";\n var note = \"\";\n var thedate = {};\n var rangeDelim;\n var dateDelim;\n if (txt.slice(0, 1) === \"\\\"\" && txt.slice(-1) === \"\\\"\") {\n thedate.literal = txt.slice(1, -1);\n return thedate;\n }\n if (slashPos > -1 && dashPos > -1) {\n var slashCount = txt.split(\"/\");\n if (slashCount.length > 3) {\n rangeDelim = \"-\";\n txt = txt.replace(/\\_/g, \"-\");\n dateDelim = \"/\";\n lst = txt.split(rexSlashDash);\n } else {\n rangeDelim = \"/\";\n txt = txt.replace(/\\_/g, \"/\");\n dateDelim = \"-\";\n lst = txt.split(rexDashSlash);\n }\n } else {\n txt = txt.replace(/\\//g, \"-\");\n txt = txt.replace(/\\_/g, \"-\");\n rangeDelim = \"-\";\n dateDelim = \"-\";\n lst = txt.split(rexDash);\n }\n var ret = [];\n for (var i=0,ilen=lst.length; i<ilen; i++) {\n var m = lst[i].match(/^\\s*([\\-\\/]|[^\\-\\/\\~\\?0-9]+|[\\-~?0-9]+)\\s*$/);\n if (m) {\n ret.push(m[1]);\n }\n }\n //\n // Phase 2\n //\n var delimPos = ret.indexOf(rangeDelim);\n var delims = [];\n var isRange = false;\n if (delimPos > -1) {\n delims.push([0, delimPos]);\n delims.push([(delimPos + 1), ret.length]);\n isRange = true;\n } else {\n delims.push([0, ret.length]);\n }\n //\n // For each side of a range divide ...\n //\n var suff = \"\";\n \n for (var i=0,ilen=delims.length; i<ilen; i++) {\n var delim = delims[i];\n //\n // Process each element ...\n //\n var date = ret.slice(delim[0], delim[1]);\n outer: \n for (var j=0,jlen=date.length; j<jlen; j++) {\n var element = date[j];\n //\n // If it's a numeric date, process it.\n //\n if (element.indexOf(dateDelim) > -1) {\n this._parseNumericDate(thedate, dateDelim, suff, element);\n continue;\n }\n //\n // If it's an obvious year, record it.\n //\n if (element.match(/[0-9]{4}/)) {\n thedate[(\"year\" + suff)] = element.replace(/^0*/, \"\");\n continue;\n }\n //\n // If it's a fuzzy marker, record it.\n //\n if (element === \"~\" || element === \"?\" || element === \"c\" || element.match(/^cir/)) {\n thedate.circa = true;\n }\n //\n // If it's a month, record it.\n //\n for (var k=0,klen=this.monthRexes.length; k<klen; k++) {\n if (element.toLocaleLowerCase().match(this.monthRexes[k])) {\n thedate[(\"month\" + suff)] = \"\" + (parseInt(k, 10) + 1);\n continue outer;\n }\n }\n //\n // If it's a number, make a note of it\n //\n if (element.match(/^[0-9]+$/)) {\n number = element;\n }\n //\n // If it's a BC or AD marker, make a year of\n // any note. Separate, reverse the sign of the year\n // if it's BC.\n //\n if (element.toLocaleLowerCase().match(/^bc/) && number) {\n thedate[(\"year\" + suff)] = \"\" + (number * -1);\n number = \"\";\n continue;\n }\n if (element.toLocaleLowerCase().match(/^ad/) && number) {\n thedate[(\"year\" + suff)] = \"\" + number;\n number = \"\";\n continue;\n }\n //\n // If it's cruft, make a note of it\n //\n if (element.toLocaleLowerCase().match(/(?:mic|tri|hil|eas)/) && !thedate[(\"season\" + suff)]) {\n note = element;\n continue;\n }\n }\n //\n // If at the end of the string there's still a note\n // hanging around, make a day of it.\n //\n if (number) {\n thedate[(\"day\" + suff)] = number;\n number = \"\";\n }\n //\n // If at the end of the string there's cruft lying\n // around, and the season field is empty, put the\n // cruft there.\n //\n if (note && !thedate[(\"season\" + suff)]) {\n thedate[(\"season\" + suff)] = note.trim();\n note = \"\";\n }\n suff = \"_end\";\n }\n //\n // update any missing elements on each side of the divide\n // from the other\n //\n if (isRange) {\n for (var j=0,jlen=CSL.DATE_PARTS_ALL.length; j<jlen; j++) {\n var item = CSL.DATE_PARTS_ALL[j];\n if (thedate[item] && !thedate[(item + \"_end\")]) {\n thedate[(item + \"_end\")] = thedate[item];\n } else if (!thedate[item] && thedate[(item + \"_end\")]) {\n thedate[item] = thedate[(item + \"_end\")];\n }\n }\n }\n //\n // If there's no year, or if there only a year and a day, it's a failure; pass through the literal\n //\n if (!thedate.year || (thedate.year && thedate.day && !thedate.month)) {\n thedate = { \"literal\": orig };\n }\n var parts = [\"year\", \"month\", \"day\", \"year_end\", \"month_end\", \"day_end\"];\n for (var i=0,ilen=parts.length; i<ilen; i++) {\n var part = parts[i];\n if (\"string\" === typeof thedate[part] && thedate[part].match(/^[0-9]+$/)) {\n thedate[part] = parseInt(thedate[part], 10);\n }\n \n }\n if (yearIsNegative && Object.keys(thedate).indexOf(\"year\") > -1) {\n thedate.year = (thedate.year * -1);\n }\n return thedate;\n };\n\n this.parseDateToArray = function(txt) {\n return this.convertDateObjectToArray(this.parseDateToObject(txt)); \n };\n\n this.parseDateToString = function(txt) {\n return this.convertDateObjectToString(this.parseDateToObject(txt));\n };\n \n this.parse = function(txt) {\n return this.parseDateToObject(txt);\n };\n \n /*\n\n * Setup\n */\n\n this.setOrderMonthDay();\n this.resetDateParserMonths();\n};\nCSL.DateParser = new CSL.DateParser();\n\n/*global CSL: true */\n\nCSL.Engine = function (sys, style, lang, forceLang) {\n var attrs, langspec;\n this.processor_version = CSL.PROCESSOR_VERSION;\n this.csl_version = \"1.0\";\n this.sys = sys;\n \n if (typeof Object.assign != 'function') {\n // Must be writable: true, enumerable: false, configurable: true\n Object.defineProperty(Object, \"assign\", {\n value: function assign(target) { // .length of function is 2\n 'use strict';\n if (target == null) { // TypeError if undefined or null\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var to = Object(target);\n\n for (var index = 1; index < arguments.length; index++) {\n var nextSource = arguments[index];\n\n if (nextSource != null) { // Skip over if undefined or null\n for (var nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n },\n writable: true,\n configurable: true\n });\n }\n\n // XXX This may be excess code. Given the normalization performed on\n // XXX the output queue before variableWrapper() is run, a single\n // XXX space should be the most cruft that we ever see before a variable.\n if (sys.variableWrapper) {\n CSL.VARIABLE_WRAPPER_PREPUNCT_REX = new RegExp('^([' + [\" \"].concat(CSL.SWAPPING_PUNCTUATION).join(\"\") + ']*)(.*)');\n }\n // XXXX This should be restored -- temporarily suspended for testing of JSON style support.\n if (CSL.retrieveStyleModule) {\n this.sys.retrieveStyleModule = CSL.retrieveStyleModule;\n }\n if (CSL.getAbbreviation) {\n this.sys.getAbbreviation = CSL.getAbbreviation;\n }\n if (this.sys.stringCompare) {\n CSL.stringCompare = this.sys.stringCompare;\n }\n this.sys.AbbreviationSegments = CSL.AbbreviationSegments;\n\n this.transform = new CSL.Transform(this);\n // true or false\n this.setParseNames = function (val) {\n this.opt['parse-names'] = val;\n };\n \n this.opt = new CSL.Engine.Opt();\n this.tmp = new CSL.Engine.Tmp();\n this.build = new CSL.Engine.Build();\n this.fun = new CSL.Engine.Fun(this);\n\n this.configure = new CSL.Engine.Configure();\n // Build citation before citation_sort in order to pick up\n // state.opt.update_mode, needed it determine whether\n // a grouped sort should be performed.\n this.citation_sort = new CSL.Engine.CitationSort();\n this.bibliography_sort = new CSL.Engine.BibliographySort();\n this.citation = new CSL.Engine.Citation(this);\n this.bibliography = new CSL.Engine.Bibliography();\n this.intext = new CSL.Engine.InText();\n\n this.output = new CSL.Output.Queue(this);\n\n //this.render = new CSL.Render(this);\n //\n // This latter queue is used for formatting date chunks\n // before they are folded back into the main queue.\n //\n this.dateput = new CSL.Output.Queue(this);\n\n this.cslXml = CSL.setupXml(style);\n\n for (var i in CSL.SYS_OPTIONS) {\n var option = CSL.SYS_OPTIONS[i];\n if (\"boolean\" === typeof this.sys[option]) {\n this.opt.development_extensions[option] = this.sys[option];\n }\n \n }\n if (this.opt.development_extensions.uppercase_subtitles || this.opt.development_extensions.implicit_short_title) {\n this.opt.development_extensions.main_title_from_short_title = true;\n }\n if (this.opt.development_extensions.csl_reverse_lookup_support) {\n this.build.cslNodeId = 0;\n this.setCslNodeIds = function(myxml, nodename) {\n var children = this.cslXml.children(myxml);\n this.cslXml.setAttribute(myxml, 'cslid', this.build.cslNodeId);\n this.opt.nodenames.push(nodename);\n this.build.cslNodeId += 1;\n for (var i = 0, ilen = this.cslXml.numberofnodes(children); i < ilen; i += 1) {\n nodename = this.cslXml.nodename(children[i]);\n if (nodename) {\n this.setCslNodeIds(children[i], nodename);\n }\n }\n };\n this.setCslNodeIds(this.cslXml.dataObj, \"style\");\n }\n // Preprocessing ops for the XML input\n this.cslXml.addMissingNameNodes(this.cslXml.dataObj);\n this.cslXml.addInstitutionNodes(this.cslXml.dataObj);\n this.cslXml.insertPublisherAndPlace(this.cslXml.dataObj);\n this.cslXml.flagDateMacros(this.cslXml.dataObj);\n attrs = this.cslXml.attributes(this.cslXml.dataObj);\n if (\"undefined\" === typeof attrs[\"@sort-separator\"]) {\n this.cslXml.setAttribute(this.cslXml.dataObj, \"sort-separator\", \", \");\n }\n // This setting does the right thing and seems not to be side-effects\n this.opt[\"initialize-with-hyphen\"] = true;\n\n // Locale resolution\n //\n // (1) Get three locale strings \n // -- default-locale (stripped)\n // -- processor-locale\n // -- en_US\n \n this.setStyleAttributes();\n\n this.opt.xclass = this.cslXml.getAttributeValue(this.cslXml.dataObj, \"class\");\n this.opt[\"class\"] = this.opt.xclass;\n this.opt.styleID = this.cslXml.getStyleId(this.cslXml.dataObj);\n this.opt.styleName = this.cslXml.getStyleId(this.cslXml.dataObj, true);\n\n if (this.opt.version.slice(0,4) === \"1.1m\") {\n this.opt.development_extensions.consolidate_legal_items = true;\n this.opt.development_extensions.consolidate_container_items = true;\n this.opt.development_extensions.main_title_from_short_title = true;\n this.opt.development_extensions.expect_and_symbol_form = true;\n this.opt.development_extensions.require_explicit_legal_case_title_short = true;\n this.opt.development_extensions.force_jurisdiction = true;\n this.opt.development_extensions.force_title_abbrev_fallback = true;\n }\n // We seem to have two language specs flying around:\n // this.opt[\"default-locale\"], and this.opt.lang\n // Keeping them aligned for safety's sake, pending\n // eventual cleanup.\n if (lang) {\n lang = lang.replace(\"_\", \"-\");\n lang = CSL.normalizeLocaleStr(lang);\n }\n if (this.opt[\"default-locale\"][0]) {\n this.opt[\"default-locale\"][0] = this.opt[\"default-locale\"][0].replace(\"_\", \"-\");\n this.opt[\"default-locale\"][0] = CSL.normalizeLocaleStr(this.opt[\"default-locale\"][0]);\n }\n if (lang && forceLang) {\n this.opt[\"default-locale\"] = [lang];\n }\n if (lang && !forceLang && this.opt[\"default-locale\"][0]) {\n lang = this.opt[\"default-locale\"][0];\n }\n if (this.opt[\"default-locale\"].length === 0) {\n if (!lang) {\n lang = \"en-US\";\n }\n this.opt[\"default-locale\"].push(\"en-US\");\n }\n if (!lang) {\n lang = this.opt[\"default-locale\"][0];\n }\n langspec = CSL.localeResolve(lang);\n this.opt.lang = langspec.best;\n this.opt[\"default-locale\"][0] = langspec.best;\n this.locale = {};\n if (!this.opt[\"default-locale-sort\"]) {\n this.opt[\"default-locale-sort\"] = this.opt[\"default-locale\"][0];\n }\n // Test processor against JS engine locale mess to find a field separator that works\n if ('dale|'.localeCompare('daleb', this.opt[\"default-locale-sort\"]) > -1) {\n this.opt.sort_sep = \"@\";\n } else {\n this.opt.sort_sep = \"|\";\n }\n this.localeConfigure(langspec);\n\n // Build skip-word regexp\n function makeRegExp(lst) {\n var lst = lst.slice();\n var ret = new RegExp( \"(?:(?:[?!:]*\\\\s+|-|^)(?:\" + lst.join(\"|\") + \")(?=[!?:]*\\\\s+|-|$))\", \"g\");\n return ret;\n }\n this.locale[this.opt.lang].opts[\"skip-words-regexp\"] = makeRegExp(this.locale[this.opt.lang].opts[\"skip-words\"]);\n\n this.output.adjust = new CSL.Output.Queue.adjust(this.getOpt('punctuation-in-quote'));\n\n this.registry = new CSL.Registry(this);\n\n // XXX For modular jurisdiction support, parameterize buildTokenLists().\n // XXX Feed as arguments:\n // XXX * actual node to be walked (cslXml)\n // XXX * actual target array\n\n this.macros = {};\n\n this.build.area = \"citation\";\n var area_nodes = this.cslXml.getNodesByName(this.cslXml.dataObj, this.build.area);\n this.buildTokenLists(area_nodes, this[this.build.area].tokens);\n\n this.build.area = \"bibliography\";\n var area_nodes = this.cslXml.getNodesByName(this.cslXml.dataObj, this.build.area);\n this.buildTokenLists(area_nodes, this[this.build.area].tokens);\n\n this.build.area = \"intext\";\n var area_nodes = this.cslXml.getNodesByName(this.cslXml.dataObj, this.build.area);\n this.buildTokenLists(area_nodes, this[this.build.area].tokens);\n\n if (this.opt.parallel.enable) {\n this.parallel = new CSL.Parallel(this);\n }\n\n this.juris = {};\n\n this.configureTokenLists();\n\n this.disambiguate = new CSL.Disambiguation(this);\n\n this.splice_delimiter = false;\n\n //\n // date parser\n //\n this.fun.dateparser = CSL.DateParser;\n //\n // flip-flopper for inline markup\n //\n this.fun.flipflopper = new CSL.Util.FlipFlopper(this);\n //\n // utility functions for quotes\n //\n this.setCloseQuotesArray();\n //\n // configure ordinal numbers generator\n //\n this.fun.ordinalizer.init(this);\n //\n // configure long ordinal numbers generator\n //\n this.fun.long_ordinalizer.init(this);\n //\n // set up page mangler\n //\n this.fun.page_mangler = CSL.Util.PageRangeMangler.getFunction(this, \"page\");\n this.fun.year_mangler = CSL.Util.PageRangeMangler.getFunction(this, \"year\");\n\n this.setOutputFormat(\"html\");\n};\n\nCSL.Engine.prototype.setCloseQuotesArray = function () {\n var ret;\n ret = [];\n ret.push(this.getTerm(\"close-quote\"));\n ret.push(this.getTerm(\"close-inner-quote\"));\n ret.push('\"');\n ret.push(\"'\");\n this.opt.close_quotes_array = ret;\n};\n\n// Walker for preparsed XML input\nCSL.makeBuilder = function (me, target) {\n var var_stack = [];\n var node_stack = [];\n function runStart (node) {\n node_stack.push(node);\n CSL.XmlToToken.call(node, me, CSL.START, target, var_stack);\n }\n function runEnd () {\n var node = node_stack.pop();\n CSL.XmlToToken.call(node, me, CSL.END, target, var_stack);\n }\n function runSingle (node) {\n CSL.XmlToToken.call(node, me, CSL.SINGLETON, target, var_stack);\n }\n function buildStyle (nodes, parent, node_stack) {\n if (!node_stack) {\n node_stack = [];\n }\n if (!nodes) {\n nodes = [];\n }\n if (\"undefined\" === typeof nodes.length) {\n nodes = [nodes];\n }\n for (var i=0; i<nodes.length; i++) {\n var node = nodes[i];\n if (me.cslXml.nodename(node) === null) {\n continue;\n }\n if (parent && me.cslXml.nodename(node) === \"date\") {\n CSL.Util.fixDateNode.call(me, parent, i, node);\n node = me.cslXml.children(parent)[i];\n }\n if (me.cslXml.numberofnodes(me.cslXml.children(node))) {\n runStart(node);\n buildStyle(me.cslXml.children(node), node, node_stack);\n runEnd();\n } else {\n runSingle(node);\n }\n }\n }\n return buildStyle;\n};\n\n\nCSL.Engine.prototype.buildTokenLists = function (area_nodes, target) {\n if (!this.cslXml.getNodeValue(area_nodes)) {\n return;\n }\n var builder = CSL.makeBuilder(this, target);\n var mynode;\n if (\"undefined\" === typeof area_nodes.length) {\n mynode = area_nodes;\n } else {\n mynode = area_nodes[0];\n }\n builder(mynode);\n};\n\n\nCSL.Engine.prototype.setStyleAttributes = function () {\n var dummy, attributes, attrname;\n // Protect against DOM engines that deliver a top-level document\n // (needed for createElement) that does not contain our top-level node.\n // \n // The string coercion on this.cslXml.tagName addresses a bizarre\n // condition on the top-level node in jsdom running under node.js, in which:\n // (1) typeof this.cslXml.tagName === \"undefined\"; and\n // (2) !this.cslXml.tagName === false\n // Coerced, it becomes an empty string.\n var dummy = {};\n dummy.name = this.cslXml.nodename(this.cslXml.dataObj);\n attributes = this.cslXml.attributes(this.cslXml.dataObj);\n for (attrname in attributes) {\n if (attributes.hasOwnProperty(attrname)) {\n // attr = attributes[key];\n CSL.Attributes[attrname].call(dummy, this, attributes[attrname]);\n }\n }\n};\n\nCSL.Engine.prototype.getTerm = function (term, form, plural, gender, mode, forceDefaultLocale) {\n if (term && term.match(/[A-Z]/) && term === term.toUpperCase()) {\n CSL.debug(\"Warning: term key is in uppercase form: \"+term);\n term = term.toLowerCase();\n }\n var lang;\n if (forceDefaultLocale) {\n lang = this.opt[\"default-locale\"][0];\n } else {\n lang = this.opt.lang;\n }\n var ret = CSL.Engine.getField(CSL.LOOSE, this.locale[lang].terms, term, form, plural, gender);\n // XXXXX Temporary, until locale term is deployed in CSL.\n if (!ret && term === \"range-delimiter\") {\n ret = \"\\u2013\";\n }\n // XXXXX Not so good if mode is neither strict nor tolerant ...\n if (typeof ret === \"undefined\") {\n if (mode === CSL.STRICT) {\n CSL.error(\"Error in getTerm: term \\\"\" + term + \"\\\" does not exist.\");\n } else if (mode === CSL.TOLERANT) {\n ret = \"\";\n }\n }\n if (ret) {\n this.tmp.cite_renders_content = true;\n }\n return ret;\n};\n\nCSL.Engine.prototype.getDate = function (form, forceDefaultLocale) {\n var lang;\n if (forceDefaultLocale) {\n lang = this.opt[\"default-locale\"];\n } else {\n lang = this.opt.lang;\n }\n if (this.locale[lang].dates[form]) {\n return this.locale[lang].dates[form];\n } else {\n return false;\n }\n};\n\nCSL.Engine.prototype.getOpt = function (arg) {\n if (\"undefined\" !== typeof this.locale[this.opt.lang].opts[arg]) {\n return this.locale[this.opt.lang].opts[arg];\n } else {\n return false;\n }\n};\n\n\n\nCSL.Engine.prototype.getVariable = function (Item, varname, form, plural) {\n return CSL.Engine.getField(CSL.LOOSE, Item, varname, form, plural);\n};\n\nCSL.Engine.prototype.getDateNum = function (ItemField, partname) {\n if (\"undefined\" === typeof ItemField) {\n return 0;\n } else {\n return ItemField[partname];\n }\n};\n\nCSL.Engine.getField = function (mode, hash, term, form, plural, gender) {\n var ret, forms, f, pos, len, hashterm;\n ret = \"\";\n if (\"undefined\" === typeof hash[term]) {\n if (mode === CSL.STRICT) {\n CSL.error(\"Error in getField: term \\\"\" + term + \"\\\" does not exist.\");\n } else {\n return undefined;\n }\n }\n if (gender && hash[term][gender]) {\n hashterm = hash[term][gender];\n } else {\n hashterm = hash[term];\n }\n forms = [];\n if (form === \"symbol\") {\n forms = [\"symbol\", \"short\"];\n } else if (form === \"verb-short\") {\n forms = [\"verb-short\", \"verb\"];\n } else if (form !== \"long\") {\n forms = [form];\n }\n forms = forms.concat([\"long\"]);\n len = forms.length;\n for (pos = 0; pos < len; pos += 1) {\n f = forms[pos];\n if (\"string\" === typeof hashterm || \"number\" === typeof hashterm) {\n ret = hashterm;\n } else if (\"undefined\" !== typeof hashterm[f]) {\n if (\"string\" === typeof hashterm[f] || \"number\" === typeof hashterm[f]) {\n ret = hashterm[f];\n } else {\n if (\"number\" === typeof plural) {\n ret = hashterm[f][plural];\n } else {\n ret = hashterm[f][0];\n }\n }\n break;\n }\n }\n return ret;\n};\n\nCSL.Engine.prototype.configureTokenLists = function () {\n var area, pos, len;\n //for each (var area in [\"citation\", \"citation_sort\", \"bibliography\",\"bibliography_sort\"]) {\n len = CSL.AREAS.length;\n for (pos = 0; pos < len; pos += 1) {\n //var ret = [];\n area = CSL.AREAS[pos];\n var tokens = this[area].tokens;\n this.configureTokenList(tokens);\n }\n this.version = CSL.version;\n return this.state;\n};\n\nCSL.Engine.prototype.configureTokenList = function (tokens) {\n var dateparts_master, token, dateparts, part, ppos, pppos, llen, lllen;\n dateparts_master = [\"year\", \"month\", \"day\"];\n llen = tokens.length - 1;\n for (ppos = llen; ppos > -1; ppos += -1) {\n token = tokens[ppos];\n //token.pos = ppos;\n //ret.push(token);\n if (\"date\" === token.name && CSL.END === token.tokentype) {\n dateparts = [];\n }\n if (\"date-part\" === token.name && token.strings.name) {\n lllen = dateparts_master.length;\n for (pppos = 0; pppos < lllen; pppos += 1) {\n part = dateparts_master[pppos];\n if (part === token.strings.name) {\n dateparts.push(token.strings.name);\n }\n }\n }\n if (\"date\" === token.name && CSL.START === token.tokentype) {\n dateparts.reverse();\n token.dateparts = dateparts;\n }\n token.next = (ppos + 1);\n if (token.name && CSL.Node[token.name].configure) {\n CSL.Node[token.name].configure.call(token, this, ppos);\n }\n }\n};\n\nCSL.Engine.prototype.refetchItems = function (ids) {\n var ret = [];\n for (var i = 0, ilen = ids.length; i < ilen; i += 1) {\n ret.push(this.refetchItem(\"\" + ids[i]));\n }\n return ret;\n};\n\nCSL.ITERATION = 0;\n\n// Wrapper for sys.retrieveItem supplied by calling application.\n// Adds experimental fields embedded in the note field for\n// style development trial and testing purposes.\nCSL.Engine.prototype.retrieveItem = function (id) {\n var Item, m, i;\n\n if (!this.tmp.loadedItemIDs[id]) {\n this.tmp.loadedItemIDs[id] = true;\n } else {\n return this.registry.refhash[id];\n }\n\n if (this.opt.development_extensions.normalize_lang_keys_to_lowercase &&\n \"boolean\" === typeof this.opt.development_extensions.normalize_lang_keys_to_lowercase) {\n // This is a hack. Should properly be configured by a processor method after build.\n for (var i=0,ilen=this.opt[\"default-locale\"].length; i<ilen; i+=1) {\n this.opt[\"default-locale\"][i] = this.opt[\"default-locale\"][i].toLowerCase();\n }\n for (var i=0,ilen=this.opt[\"locale-translit\"].length; i<ilen; i+=1) {\n this.opt[\"locale-translit\"][i] = this.opt[\"locale-translit\"][i].toLowerCase();\n }\n for (var i=0,ilen=this.opt[\"locale-translat\"].length; i<ilen; i+=1) {\n this.opt[\"locale-translat\"][i] = this.opt[\"locale-translat\"][i].toLowerCase();\n }\n this.opt.development_extensions.normalize_lang_keys_to_lowercase = 100;\n }\n\n //Zotero.debug(\"XXX === ITERATION \" + CSL.ITERATION + \" \"+ id +\" ===\");\n CSL.ITERATION += 1;\n\n Item = JSON.parse(JSON.stringify(this.sys.retrieveItem(\"\" + id)));\n\n // Optionally normalize keys to lowercase()\n if (this.opt.development_extensions.normalize_lang_keys_to_lowercase) {\n if (Item.multi) {\n if (Item.multi._keys) {\n for (var field in Item.multi._keys) {\n for (var key in Item.multi._keys[field]) {\n if (key !== key.toLowerCase()) {\n Item.multi._keys[field][key.toLowerCase()] = Item.multi._keys[field][key];\n delete Item.multi._keys[field][key];\n }\n }\n }\n }\n if (Item.multi.main) {\n for (var field in Item.multi.main) {\n Item.multi.main[field] = Item.multi.main[field].toLowerCase();\n }\n }\n }\n for (var i=0, ilen=CSL.NAME_VARIABLES.length; i>ilen; i+=1) {\n var ctype = CSL.NAME_VARIABLES[i];\n if (Item[ctype] && Item[ctype].multi) {\n for (var j=0, jlen=Item[ctype].length; j<jlen; j+=1) {\n var creator = Item[ctype][j];\n if (creator.multi) {\n if (creator.multi._key) {\n for (var key in creator.multi._key) {\n if (key !== key.toLowerCase()) {\n creator.multi._key[key.toLowerCase()] = creator.multi._key[key];\n delete creator.multi._key[key];\n }\n }\n }\n if (creator.multi.main) {\n creator.multi.main = creator.multi.main.toLowerCase();\n }\n }\n }\n }\n }\n }\n\n // Normalize language field into \"language\" and \"language-original\"\n if (Item.language && Item.language.match(/[><]/)) {\n // Attempt to split field in two\n var m = Item.language.match(/(.*?)([<>])(.*)/);\n if (m[2] === \"<\") {\n Item[\"language-name\"] = m[1];\n Item[\"language-name-original\"] = m[3];\n } else {\n Item[\"language-name\"] = m[3];\n Item[\"language-name-original\"] = m[1];\n }\n if (this.opt.multi_layout) {\n if (Item[\"language-name-original\"]) {\n Item.language = Item[\"language-name-original\"];\n }\n } else {\n if (Item[\"language-name\"]) {\n Item.language = Item[\"language-name\"];\n }\n }\n }\n\n if (Item.page) {\n Item[\"page-first\"] = Item.page;\n var num = \"\" + Item.page;\n var m = num.split(/\\s*(?:&|, |-|\\u2013)\\s*/);\n if (m[0].slice(-1) !== \"\\\\\") {\n Item[\"page-first\"] = m[0];\n }\n }\n // Optional development extensions\n if (this.opt.development_extensions.field_hack && Item.note) {\n // false is for validFieldsForType (all conforming entries scrubbed when false)\n CSL.parseNoteFieldHacks(Item, false, this.opt.development_extensions.allow_field_hack_date_override);\n }\n // not including locator-date\n for (var key in Item) {\n if (CSL.DATE_VARIABLES.indexOf(key.replace(/^alt-/, \"\")) > -1) {\n var dateobj = Item[key];\n if (dateobj) {\n // raw date parsing is harmless, but can be disabled if desired\n if (this.opt.development_extensions.raw_date_parsing) {\n if (dateobj.raw && (!dateobj[\"date-parts\"] || dateobj[\"date-parts\"].length === 0)) {\n dateobj = this.fun.dateparser.parseDateToObject(dateobj.raw);\n }\n }\n Item[key] = this.dateParseArray(dateobj);\n }\n }\n }\n if (this.opt.development_extensions.consolidate_legal_items) {\n if (Item.type && [\"bill\",\"gazette\",\"legislation\",\"regulation\",\"treaty\"].indexOf(Item.type) > -1) {\n var varname;\n var elements = [\"type\", \"title\", \"jurisdiction\", \"genre\", \"volume\", \"container-title\"];\n var legislation_id = [];\n for (var i = 0, ilen = elements.length; i < ilen; i += 1) {\n varname = elements[i];\n\t\t\t\tif (Item[varname]) {\n\t\t\t\t\tlegislation_id.push(Item[varname]);\n\t\t\t\t}\n\t\t\t}\n elements = [\"original-date\", \"issued\"];\n\t\t\tfor (var i = 0, ilen=elements.length; i < ilen; i += 1) {\n varname = elements[i];\n\t\t\t\tif (Item[varname] && Item[varname].year) {\n\t\t\t\t\tvar value = Item[varname].year;\n\t\t\t\t\tlegislation_id.push(value);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tItem.legislation_id = legislation_id.join(\"::\");\n }\n }\n if (this.bibliography.opt.track_container_items) {\n if (this.bibliography.opt.track_container_items.indexOf(Item.type) > -1) {\n var varname;\n var elements = [\"type\", \"container-title\", \"publisher\", \"edition\"];\n var container_id = [];\n for (var i = 0, ilen = elements.length; i < ilen; i += 1) {\n varname = elements[i];\n\t\t\t\tif (Item[varname]) {\n\t\t\t\t\tcontainer_id.push(Item[varname]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tItem.container_id = container_id.join(\"::\");\n }\n }\n // For authority to name shape in legal styles\n if (this.opt.development_extensions.force_jurisdiction) {\n if (\"string\" === typeof Item.authority) {\n Item.authority = [\n {\n literal: Item.authority,\n multi: {\n _key: {}\n }\n }\n ];\n if (Item.multi && Item.multi._keys && Item.multi._keys.authority) {\n Item.authority[0].multi._key = {};\n for (var key in Item.multi._keys.authority) {\n Item.authority[0].multi._key[key] = {\n literal: Item.multi._keys.authority[key]\n };\n }\n }\n }\n }\n // Add getAbbreviation() call for title-short and container-title-short\n if (!Item[\"title-short\"]) {\n Item[\"title-short\"] = Item.shortTitle;\n }\n // Add support for main_title_from_short_title\n if (this.opt.development_extensions.main_title_from_short_title) {\n var narrowSpaceLocale = this.opt[\"default-locale\"][0].slice(0, 2).toLowerCase() === \"fr\";\n CSL.extractTitleAndSubtitle.call(this, Item, narrowSpaceLocale);\n }\n var isLegalType = [\"bill\",\"legal_case\",\"legislation\",\"gazette\",\"regulation\"].indexOf(Item.type) > -1;\n if (this.opt.development_extensions.force_jurisdiction && isLegalType) {\n if (!Item.jurisdiction) {\n Item.jurisdiction = \"us\";\n }\n }\n var normalizedKey;\n if (!isLegalType && Item.title && this.sys.getAbbreviation) {\n var noHints = false;\n if (!Item.jurisdiction) {\n noHints = true;\n }\n if (this.sys.normalizeAbbrevsKey) {\n normalizedKey = this.sys.normalizeAbbrevsKey(\"title\", Item.title);\n } else {\n normalizedKey = Item.title;\n }\n var jurisdiction = this.transform.loadAbbreviation(Item.jurisdiction, \"title\", normalizedKey, Item.language);\n if (this.transform.abbrevs[jurisdiction].title) {\n if (this.transform.abbrevs[jurisdiction].title[normalizedKey]) {\n Item[\"title-short\"] = this.transform.abbrevs[jurisdiction].title[normalizedKey];\n }\n }\n }\n if (!Item[\"container-title-short\"]) {\n Item[\"container-title-short\"] = Item.journalAbbreviation;\n }\n if (Item[\"container-title\"] && this.sys.getAbbreviation) {\n if (this.sys.normalizeAbbrevsKey) {\n normalizedKey = this.sys.normalizeAbbrevsKey(Item[\"container-title\"]);\n } else {\n normalizedKey = Item[\"container-title\"];\n }\n var jurisdiction = this.transform.loadAbbreviation(Item.jurisdiction, \"container-title\", normalizedKey, Item.language);\n if (this.transform.abbrevs[jurisdiction][\"container-title\"]) {\n if (this.transform.abbrevs[jurisdiction][\"container-title\"][normalizedKey]) {\n Item[\"container-title-short\"] = this.transform.abbrevs[jurisdiction][\"container-title\"][normalizedKey];\n }\n }\n }\n if (Item.jurisdiction) {\n Item.country = Item.jurisdiction.split(\":\")[0];\n }\n if (this.registry.refhash[id]) {\n if (JSON.stringify(this.registry.refhash[id]) != JSON.stringify(Item)) {\n for (var key in this.registry.refhash[id]) {\n delete this.registry.refhash[id][key];\n }\n this.tmp.taintedItemIDs[Item.id] = true;\n Object.assign(this.registry.refhash[id], Item);\n }\n } else {\n this.registry.refhash[id] = Item;\n }\n return this.registry.refhash[id];\n};\n\nCSL.Engine.prototype.refetchItem = function (id) {\n return this.registry.refhash[id];\n};\n\n// Executed during style build\nCSL.Engine.prototype.setOpt = function (token, name, value) {\n if (token.name === \"style\" || token.name === \"cslstyle\") {\n this.opt.inheritedAttributes[name] = value;\n this.citation.opt.inheritedAttributes[name] = value;\n this.bibliography.opt.inheritedAttributes[name] = value;\n } else if ([\"citation\", \"bibliography\"].indexOf(token.name) > -1) {\n this[token.name].opt.inheritedAttributes[name] = value;\n } else {\n token.strings[name] = value;\n }\n};\n\n// Executed at runtime, since macros can occur in the context of citation or bibliography\nCSL.Engine.prototype.inheritOpt = function (token, attrname, parentname, defaultValue) {\n if (\"undefined\" !== typeof token.strings[attrname]) {\n return token.strings[attrname];\n } else {\n var parentValue = this[this.tmp.root].opt.inheritedAttributes[parentname ? parentname : attrname];\n if (\"undefined\" !== typeof parentValue) {\n return parentValue;\n } else {\n return defaultValue;\n }\n }\n};\n\nCSL.Engine.prototype.remapSectionVariable = function (inputList) {\n // We have items with a value in the section field (on Item) that must\n // be mapped to the locator field (on item). We simply prepend it as\n // a string here, and handle all parsing of the resulting string\n // in processNumber(). Plurals and numeric are set in processNumber().\n \n // Because the target is in the citation item (lowercase), the\n // remapping cannot take place when the Item data is received.\n // Citation provides a list of Item/item pairs, hence the iteration\n // used here.\n for (var i = 0, ilen = inputList.length; i < ilen; i += 1) {\n var Item = inputList[i][0];\n var item = inputList[i][1];\n\n if ([\"bill\",\"gazette\",\"legislation\",\"regulation\",\"treaty\"].indexOf(Item.type) > -1) {\n // If a locator value exists, then\n // (a) Leave be an overriding label at the start of the locator field, defaulting to label value\n if (item.locator) {\n item.locator = item.locator.trim();\n var m = item.locator.match(CSL.STATUTE_SUBDIV_PLAIN_REGEX_FRONT);\n if (!m) {\n if (item.label) {\n item.locator = CSL.STATUTE_SUBDIV_STRINGS_REVERSE[item.label] + \" \" + item.locator;\n } else {\n item.locator = \"p. \" + item.locator;\n }\n }\n }\n // If a section value exists, then\n // (a) Apply an overriding label at the start of the section field, defaulting to sec.\n var sectionMasterLabel = null;\n if (Item.section) {\n Item.section = Item.section.trim();\n var m = Item.section.match(CSL.STATUTE_SUBDIV_PLAIN_REGEX_FRONT);\n if (!m) {\n Item.section = \"sec. \" + Item.section;\n sectionMasterLabel = \"sec.\";\n } else {\n sectionMasterLabel = m[0].trim();\n }\n }\n // If section is nil, then\n // (a) Do nothing\n if (Item.section) {\n // If section exists and locator is nil\n // (a) Set section string in locator field\n if (!item.locator) {\n item.locator = Item.section;\n } else {\n // If both section and locator exist, then\n // (a) If locator starts with p., remove p., merge with space or no-space, and set in locator field\n // (b) If locator starts with non-p., prepend section value to locator with space, and set in locator field\n var m = item.locator.match(/^([^ ]*)\\s*(.*)/);\n var space = \" \";\n if (m) {\n if (m[1] === \"p.\" && sectionMasterLabel !== \"p.\") {\n item.locator = m[2];\n }\n if ([\"[\", \"(\", \".\", \",\", \";\", \":\", \"?\"].indexOf(item.locator.slice(0, 1)) > -1) {\n space = \"\";\n }\n } else {\n space = \"\"; \n }\n item.locator = Item.section + space + item.locator;\n }\n //Item.section = \"\";\n }\n item.label = \"\";\n // And that's it. Pre-parse complete.\n }\n }\n};\n\n\nCSL.Engine.prototype.setNumberLabels = function (Item) {\n if (Item.number\n && [\"bill\", \"gazette\", \"legislation\",\"regulation\",\"treaty\"].indexOf(Item.type) > -1\n && this.opt.development_extensions.consolidate_legal_items\n && !this.tmp.shadow_numbers[\"number\"]) {\n\n this.tmp.shadow_numbers[\"number\"] = {};\n this.tmp.shadow_numbers[\"number\"].values = [];\n this.tmp.shadow_numbers[\"number\"].plural = 0;\n this.tmp.shadow_numbers[\"number\"].numeric = false;\n this.tmp.shadow_numbers[\"number\"].label = false;\n \n // Labels embedded in number variable\n var value = \"\" + Item.number;\n value = value.split(\"\\\\\").join(\"\");\n // Get first word, parse out labels only if it parses\n var firstword = value.split(/\\s+/)[0];\n var firstlabel = CSL.STATUTE_SUBDIV_STRINGS[firstword];\n if (firstlabel) {\n // Get list and match\n var splt = value.split(CSL.STATUTE_SUBDIV_PLAIN_REGEX);\n if (splt.length > 1) {\n // Convert matches to localized form\n var lst = [];\n for (var j=1, jlen=splt.length; j < jlen; j += 1) {\n lst.push(splt[j].replace(/\\s*$/, \"\").replace(/^\\s*/, \"\"));\n }\n // Preemptively save to shadow_numbers\n value = lst.join(\" \");\n } else {\n value = splt[0];\n }\n this.tmp.shadow_numbers[\"number\"].label = firstlabel;\n this.tmp.shadow_numbers[\"number\"].values.push([\"Blob\", value, false]);\n this.tmp.shadow_numbers[\"number\"].numeric = false;\n } else {\n this.tmp.shadow_numbers[\"number\"].values.push([\"Blob\", value, false]);\n this.tmp.shadow_numbers[\"number\"].numeric = true;\n }\n }\n};\n\n/*global CSL: true */\n\nCSL.substituteOne = function (template) {\n return function (state, list) {\n if (!list) {\n return \"\";\n } else {\n // (\"string\" === typeof list)\n return template.replace(\"%%STRING%%\", list);\n }\n };\n};\n\n\n/**\n * Two-tiered substitutions gadget.\n * <p>This is used for\n * options like (now defunct) \"font-family\", where the option value\n * cannot be determined until the attribute is processed.\n * Need for this function might be reviewed at some point ...</p>\n * @param {String} template A template containing\n * <code>%%STRING%%</code> and <code>%%PARAM%%</code>\n * placeholders. See {@link CSL.Output.Formats.html} for\n * examples.\n */\nCSL.substituteTwo = function (template) {\n return function (param) {\n var template2 = template.replace(\"%%PARAM%%\", param);\n return function (state, list) {\n if (!list) {\n return \"\";\n } else {\n //(\"string\" === typeof list){\n return template2.replace(\"%%STRING%%\", list);\n }\n };\n };\n};\n\n/**\n * Generate string functions for designated output mode.\n * <p>Only \"html\" (the default) is supported at present.</p>\n * @param {String} mode Either \"html\" or \"rtf\", eventually.\n */\nCSL.Mode = function (mode) {\n var decorations, params, param, func, val, args;\n decorations = {};\n params = CSL.Output.Formats[mode];\n for (param in params) {\n if (true) {\n\n if (\"@\" !== param.slice(0, 1)) {\n decorations[param] = params[param];\n continue;\n }\n func = false;\n val = params[param];\n args = param.split('/');\n\n if (typeof val === \"string\" && val.indexOf(\"%%STRING%%\") > -1) {\n if (val.indexOf(\"%%PARAM%%\") > -1) {\n func = CSL.substituteTwo(val);\n } else {\n func = CSL.substituteOne(val);\n }\n } else if (typeof val === \"boolean\" && !val) {\n func = CSL.Output.Formatters.passthrough;\n } else if (typeof val === \"function\") {\n func = val;\n } else {\n CSL.error(\"Bad \" + mode + \" config entry for \" + param + \": \" + val);\n }\n\n if (args.length === 1) {\n decorations[args[0]] = func;\n } else if (args.length === 2) {\n if (!decorations[args[0]]) {\n decorations[args[0]] = {};\n }\n decorations[args[0]][args[1]] = func;\n }\n }\n }\n return decorations;\n};\n\n\n/**\n * Generate a separate list of formatting attributes.\n * <p>This generates a list of tuples containing attribute\n * information relevant to output formatting, in the order\n * fixed in the constant {@link CSL.FORMAT_KEY_SEQUENCE}.\n * This function is called during {@link CSL.Core.Build}.\n * Formatting hints are distilled to functions\n * later, in the second compilation pass ({@link CSL.Core.Configure}).</p>\n * @param {Object} state The state object returned by\n * {@link CSL.Engine}.\n * @param {Object} attributes The hash object containing\n * the attributes and values extracted from an XML node.\n */\nCSL.setDecorations = function (state, attributes) {\n var ret, key, pos;\n // This applies a fixed processing sequence\n ret = [];\n for (pos in CSL.FORMAT_KEY_SEQUENCE) {\n if (true) {\n var key = CSL.FORMAT_KEY_SEQUENCE[pos];\n if (attributes[key]) {\n ret.push([key, attributes[key]]);\n delete attributes[key];\n }\n }\n }\n return ret;\n};\n\nCSL.Doppeler = function(rexStr, stringMangler) {\n var matchRex = new RegExp(\"(\" + rexStr + \")\", \"g\");\n var splitRex = new RegExp(rexStr, \"g\");\n this.split = function (str) {\n // Normalize markup\n if (stringMangler) {\n str = stringMangler(str);\n }\n var match = str.match(matchRex);\n if (!match) {\n return {\n tags: [],\n strings: [str]\n };\n }\n var split = str.split(splitRex);\n for (var i=match.length-1; i> -1; i--) {\n if (typeof match[i] === \"number\") {\n match[i] = \"\";\n }\n var tag = match[i];\n if (tag === \"\\'\" && split[i+1].length > 0) {\n // Fixes https://forums.zotero.org/discussion/comment/294317\n split[i+1] = match[i] + split[i+1];\n match[i] = \"\";\n }\n }\n return {\n tags: match,\n strings: split,\n origStrings: split.slice()\n };\n };\n this.join = function (obj) {\n var lst = obj.strings.slice(-1);\n for (var i=obj.tags.length-1; i>-1; i--) {\n lst.push(obj.tags[i]);\n lst.push(obj.strings[i]);\n }\n lst.reverse();\n return lst.join(\"\");\n };\n};\n\nCSL.Engine.prototype.normalDecorIsOrphan = function (blob, params) {\n //print(\"params: \"+JSON.stringify(params));\n if (params[1] === \"normal\") {\n var use_param = false;\n var all_the_decor;\n if (this.tmp.area === \"citation\") {\n all_the_decor = [this.citation.opt.layout_decorations].concat(blob.alldecor);\n } else {\n all_the_decor = blob.alldecor;\n }\n for (var k = all_the_decor.length - 1; k > -1; k += -1) {\n //print(\" all decor: \"+JSON.stringify(all_the_decor[k]));\n for (var n = all_the_decor[k].length - 1; n > -1; n += -1) {\n //print(\" superior param\"+n+\": \"+all_the_decor[k][n][0]);\n if (all_the_decor[k][n][0] === params[0]) {\n //print(\" HIT!\");\n if (all_the_decor[k][n][1] !== \"normal\") {\n use_param = true;\n }\n }\n }\n }\n if (!use_param) {\n return true;\n }\n }\n return false;\n};\n\n/*global CSL: true */\n\n\nCSL.Engine.prototype.getCitationLabel = function (Item) {\n var label = \"\";\n var params = this.getTrigraphParams();\n var config = params[0];\n var myname = this.getTerm(\"reference\", \"short\", 0);\n if (\"undefined\" === typeof myname) {\n myname = \"reference\";\n }\n myname = myname.replace(\".\", \"\");\n myname = myname.slice(0, 1).toUpperCase() + myname.slice(1);\n for (var i = 0, ilen = CSL.NAME_VARIABLES.length; i < ilen; i += 1) {\n var n = CSL.NAME_VARIABLES[i];\n if (Item[n]) {\n var names = Item[n];\n if (names.length > params.length) {\n config = params[params.length - 1];\n } else {\n config = params[names.length - 1];\n }\n for (var j = 0, jlen = names.length; j < jlen; j += 1) {\n if (j === config.authors.length) {\n break;\n }\n var res = this.nameOutput.getName(names[j], \"locale-translit\", true);\n var name = res.name;\n if (name && name.family) {\n myname = name.family;\n myname = myname.replace(/^([ \\'\\u2019a-z]+\\s+)/, \"\");\n\n } else if (name && name.literal) {\n myname = name.literal;\n }\n var m = myname.toLowerCase().match(/^(a\\s+|the\\s+|an\\s+)/);\n if (m) {\n myname = myname.slice(m[1].length);\n }\n myname = myname.replace(CSL.ROMANESQUE_NOT_REGEXP, \"\");\n if (!myname) {\n break;\n }\n myname = myname.slice(0, config.authors[j]);\n if (myname.length > 1) {\n myname = myname.slice(0, 1).toUpperCase() + myname.slice(1).toLowerCase();\n } else if (myname.length === 1) {\n myname = myname.toUpperCase();\n }\n label += myname;\n }\n break;\n }\n }\n if (!label) {\n // Try for something using title\n if (Item.title) {\n var skipWords = this.locale[this.opt.lang].opts[\"skip-words\"];\n var lst = Item.title.split(/\\s+/);\n for (var i = lst.length - 1; i > -1; i--) {\n if (skipWords.indexOf(lst[i]) > -1) {\n lst = lst.slice(0, i).concat(lst.slice(i + 1));\n }\n }\n var str = lst.join('');\n str = str.slice(0, params[0].authors[0]);\n if (str.length > 1) {\n str = str.slice(0, 1).toUpperCase() + str.slice(1).toLowerCase();\n } else if (str.length === 1) {\n str = str.toUpperCase();\n }\n label = str;\n }\n }\n var year = \"0000\";\n if (Item.issued) {\n if (Item.issued.year) {\n year = \"\" + Item.issued.year;\n }\n }\n year = year.slice((config.year * -1));\n label = label + year;\n return label;\n};\n\nCSL.Engine.prototype.getTrigraphParams = function () {\n var params = [];\n var ilst = this.opt.trigraph.split(\":\");\n if (!this.opt.trigraph || this.opt.trigraph.slice(0,1) !== \"A\") {\n CSL.error(\"Bad trigraph definition: \"+this.opt.trigraph);\n }\n for (var i = 0, ilen = ilst.length; i < ilen; i += 1) {\n var str = ilst[i];\n var config = {authors:[], year:0};\n for (var j = 0, jlen = str.length; j < jlen; j += 1) {\n switch (str.slice(j,j+1)) {\n case \"A\":\n config.authors.push(1);\n break;\n case \"a\":\n config.authors[config.authors.length - 1] += 1;\n break;\n case \"0\":\n config.year += 1;\n break;\n default:\n CSL.error(\"Invalid character in trigraph definition: \"+this.opt.trigraph);\n }\n }\n params.push(config);\n }\n return params;\n};\n\n/*global CSL: true */\n\nCSL.Engine.prototype.setOutputFormat = function (mode) {\n this.opt.mode = mode;\n this.fun.decorate = CSL.Mode(mode);\n if (!this.output[mode]) {\n this.output[mode] = {};\n this.output[mode].tmp = {};\n }\n};\n\nCSL.Engine.prototype.getSortFunc = function () {\n return function (a,b) {\n a = a.split(\"-\");\n b = b.split(\"-\");\n if (a.length < b.length) {\n return 1;\n } else if (a.length > b.length) {\n return -1;\n } else {\n a = a.slice(-1)[0];\n b = b.slice(-1)[0];\n if (a.length < b.length) {\n return 1;\n } else if (a.length > b.length) {\n return -1;\n } else {\n return 0;\n }\n }\n };\n};\n\nCSL.Engine.prototype.setLangTagsForCslSort = function (tags) {\n var i, ilen;\n if (tags) {\n this.opt['locale-sort'] = [];\n for (i = 0, ilen = tags.length; i < ilen; i += 1) {\n this.opt['locale-sort'].push(tags[i]);\n }\n }\n this.opt['locale-sort'].sort(this.getSortFunc());\n};\n \nCSL.Engine.prototype.setLangTagsForCslTransliteration = function (tags) {\n var i, ilen;\n this.opt['locale-translit'] = [];\n if (tags) {\n for (i = 0, ilen = tags.length; i < ilen; i += 1) {\n this.opt['locale-translit'].push(tags[i]);\n }\n }\n this.opt['locale-translit'].sort(this.getSortFunc());\n};\n \nCSL.Engine.prototype.setLangTagsForCslTranslation = function (tags) {\n var i, ilen;\n this.opt['locale-translat'] = [];\n if (tags) {\n for (i = 0, ilen = tags.length; i < ilen; i += 1) {\n this.opt['locale-translat'].push(tags[i]);\n }\n }\n this.opt['locale-translat'].sort(this.getSortFunc());\n};\n\nCSL.Engine.prototype.setLangPrefsForCites = function (obj, conv) {\n var opt = this.opt['cite-lang-prefs'];\n if (!conv) {\n conv = function (key) {\n return key.toLowerCase();\n };\n }\n var segments = ['Persons', 'Institutions', 'Titles', 'Journals', 'Publishers', 'Places'];\n // Set values in place\n for (var i = 0, ilen = segments.length; i < ilen; i += 1) {\n var clientSegment = conv(segments[i]);\n var citeprocSegment = segments[i].toLowerCase();\n if (!obj[clientSegment]) {\n continue;\n }\n //\n // Normalize the sequence of secondary and tertiary\n // in the provided obj segment list.\n //\n var supplements = [];\n while (obj[clientSegment].length > 1) {\n supplements.push(obj[clientSegment].pop());\n }\n var sortval = {orig:1,translit:2,translat:3};\n if (supplements.length === 2 && sortval[supplements[0]] < sortval[supplements[1]]) {\n supplements.reverse();\n }\n while (supplements.length) {\n obj[clientSegment].push(supplements.pop());\n }\n //\n // normalization done.\n //\n var lst = opt[citeprocSegment];\n while (lst.length) {\n lst.pop();\n }\n for (var j = 0, jlen = obj[clientSegment].length; j < jlen; j += 1) {\n lst.push(obj[clientSegment][j]);\n }\n }\n};\n\nCSL.Engine.prototype.setLangPrefsForCiteAffixes = function (affixList) {\n if (affixList && affixList.length === 48) {\n var affixes = this.opt.citeAffixes;\n var count = 0;\n var settings = [\"persons\", \"institutions\", \"titles\", \"journals\", \"publishers\", \"places\"];\n var forms = [\"translit\", \"orig\", \"translit\", \"translat\"];\n var value;\n for (var i = 0, ilen = settings.length; i < ilen; i += 1) {\n for (var j = 0, jlen = forms.length; j < jlen; j += 1) {\n value = \"\";\n if ((count % 8) === 4) {\n if (!affixes[settings[i]][\"locale-\"+forms[j]].prefix\n && !affixes[settings[i]][\"locale-\"+forms[j]].suffix) {\n\n value = affixList[count] ? affixList[count] : \"\";\n affixes[settings[i]][\"locale-\" + forms[j]].prefix = value;\n value = affixList[count] ? affixList[count + 1] : \"\";\n affixes[settings[i]][\"locale-\" + forms[j]].suffix = value;\n }\n } else {\n value = affixList[count] ? affixList[count] : \"\";\n affixes[settings[i]][\"locale-\" + forms[j]].prefix = value;\n value = affixList[count] ? affixList[count + 1] : \"\";\n affixes[settings[i]][\"locale-\" + forms[j]].suffix = value;\n }\n count += 2;\n }\n }\n this.opt.citeAffixes = affixes;\n }\n};\n\nCSL.Engine.prototype.setAutoVietnameseNamesOption = function (arg) {\n if (arg) {\n this.opt[\"auto-vietnamese-names\"] = true;\n } else {\n this.opt[\"auto-vietnamese-names\"] = false;\n }\n};\n\nCSL.Engine.prototype.setAbbreviations = function (arg) {\n if (this.sys.setAbbreviations) {\n this.sys.setAbbreviations(arg);\n }\n};\n\nCSL.Engine.prototype.setSuppressTrailingPunctuation = function (arg) {\n this.citation.opt.suppressTrailingPunctuation = !!arg;\n};\n\n/*global CSL: true */\n\nCSL.Output = {};\n/**\n * Output queue object.\n * @class\n */\nCSL.Output.Queue = function (state) {\n this.levelname = [\"top\"];\n this.state = state;\n this.queue = [];\n this.empty = new CSL.Token(\"empty\");\n var tokenstore = {};\n tokenstore.empty = this.empty;\n this.formats = new CSL.Stack(tokenstore);\n this.current = new CSL.Stack(this.queue);\n};\n\n// XXX This works, but causes a mismatch in api_cite\n// Could insert a placeholder\n// Better to have a function that spits out an independent blob.\n// Is that possible though?\n// Okay. Use queue.append() with fake_queue instead.\nCSL.Output.Queue.prototype.pop = function () {\n // For some reason, state.output.current.value() here can be an array, \n // not a blob ... ?\n var drip = this.current.value();\n if (drip.length) {\n return drip.pop();\n } else {\n return drip.blobs.pop();\n }\n};\n\nCSL.Output.Queue.prototype.getToken = function (name) {\n var ret = this.formats.value()[name];\n return ret;\n};\n\nCSL.Output.Queue.prototype.mergeTokenStrings = function (base, modifier) {\n var base_token, modifier_token, ret, key;\n base_token = this.formats.value()[base];\n modifier_token = this.formats.value()[modifier];\n ret = base_token;\n if (modifier_token) {\n if (!base_token) {\n base_token = new CSL.Token(base, CSL.SINGLETON);\n base_token.decorations = [];\n }\n ret = new CSL.Token(base, CSL.SINGLETON);\n var key = \"\";\n for (var key in base_token.strings) {\n if (base_token.strings.hasOwnProperty(key)) {\n ret.strings[key] = base_token.strings[key];\n }\n }\n for (var key in modifier_token.strings) {\n if (modifier_token.strings.hasOwnProperty(key)) {\n ret.strings[key] = modifier_token.strings[key];\n }\n }\n ret.decorations = base_token.decorations.concat(modifier_token.decorations);\n }\n return ret;\n};\n\n// Store a new output format token based on another\nCSL.Output.Queue.prototype.addToken = function (name, modifier, token) {\n var newtok, attr;\n newtok = new CSL.Token(\"output\");\n if (\"string\" === typeof token) {\n token = this.formats.value()[token];\n }\n if (token && token.strings) {\n for (attr in token.strings) {\n if (token.strings.hasOwnProperty(attr)) {\n newtok.strings[attr] = token.strings[attr];\n }\n }\n newtok.decorations = token.decorations;\n\n }\n if (\"string\" === typeof modifier) {\n newtok.strings.delimiter = modifier;\n }\n this.formats.value()[name] = newtok;\n};\n\n//\n// newFormat adds a new bundle of formatting tokens to\n// the queue's internal stack of such bundles\nCSL.Output.Queue.prototype.pushFormats = function (tokenstore) {\n if (!tokenstore) {\n tokenstore = {};\n }\n tokenstore.empty = this.empty;\n this.formats.push(tokenstore);\n};\n\n\nCSL.Output.Queue.prototype.popFormats = function () {\n this.formats.pop();\n};\n\nCSL.Output.Queue.prototype.startTag = function (name, token) {\n var tokenstore = {};\n if (this.state.tmp[\"doing-macro-with-date\"] && this.state.tmp.extension) {\n token = this.empty;\n name = \"empty\";\n }\n tokenstore[name] = token;\n this.pushFormats(tokenstore);\n this.openLevel(name);\n};\n\nCSL.Output.Queue.prototype.endTag = function (name) {\n this.closeLevel(name);\n this.popFormats();\n};\n\n//\n// newlevel adds a new blob object to the end of the current\n// list, and adjusts the current pointer so that subsequent\n// appends are made to blob list of the new object.\n\nCSL.Output.Queue.prototype.openLevel = function (token) {\n var blob, curr;\n if (\"object\" === typeof token) {\n // delimiter, prefix, suffix, decorations from token\n blob = new CSL.Blob(undefined, token);\n } else if (\"undefined\" === typeof token) {\n blob = new CSL.Blob(undefined, this.formats.value().empty, \"empty\");\n } else {\n if (!this.formats.value() || !this.formats.value()[token]) {\n CSL.error(\"CSL processor error: call to nonexistent format token \\\"\" + token + \"\\\"\");\n }\n // delimiter, prefix, suffix, decorations from token\n blob = new CSL.Blob(undefined, this.formats.value()[token], token);\n }\n curr = this.current.value();\n if (!this.state.tmp.just_looking && this.checkNestedBrace) {\n blob.strings.prefix = this.checkNestedBrace.update(blob.strings.prefix);\n }\n curr.push(blob);\n this.current.push(blob);\n};\n\n/**\n * \"merge\" used to be real complicated, now it's real simple.\n */\nCSL.Output.Queue.prototype.closeLevel = function (name) {\n // CLEANUP: Okay, so this.current.value() holds the blob at the\n // end of the current list. This is wrong. It should\n // be the parent, so that we have the choice of reading\n // the affixes and decorations, or appending to its\n // content. The code that manipulates blobs will be\n // much simpler that way.\n if (name && name !== this.current.value().levelname) {\n CSL.error(\"Level mismatch error: wanted \" + name + \" but found \" + this.current.value().levelname);\n }\n var blob = this.current.pop();\n if (!this.state.tmp.just_looking && this.checkNestedBrace) {\n blob.strings.suffix = this.checkNestedBrace.update(blob.strings.suffix);\n }\n};\n\n//\n// append does the same thing as newlevel, except\n// that the blob it pushes has text content,\n// and the current pointer is not moved after the push.\n\nCSL.Output.Queue.prototype.append = function (str, tokname, notSerious, ignorePredecessor, noStripPeriods) {\n var token, blob, curr;\n var useblob = true;\n if (notSerious) {\n ignorePredecessor = true;\n }\n // XXXXX Nasty workaround, but still an improvement\n // over the reverse calls to the cs:date node build\n // function that we had before.\n if (this.state.tmp[\"doing-macro-with-date\"] && !notSerious) {\n if (tokname !== \"macro-with-date\") {\n return false;\n }\n if (tokname === \"macro-with-date\") {\n tokname = \"empty\";\n }\n }\n if (\"undefined\" === typeof str) {\n return false;\n }\n if (\"number\" === typeof str) {\n str = \"\" + str;\n }\n if (!notSerious \n && this.state.tmp.element_trace \n && this.state.tmp.element_trace.value() === \"suppress-me\") {\n \n return false;\n }\n blob = false;\n if (!tokname) {\n token = this.formats.value().empty;\n } else if (tokname === \"literal\") {\n token = true;\n useblob = false;\n } else if (\"string\" === typeof tokname) {\n token = this.formats.value()[tokname];\n } else {\n token = tokname;\n }\n if (!token) {\n CSL.error(\"CSL processor error: unknown format token name: \" + tokname);\n }\n // Unset delimiters must be left undefined until they reach the queue\n // in order to discriminate unset from explicitly empty delimiters\n // when inheriting a default value from a superior node. [??? really ???]\n if (token.strings && \"undefined\" === typeof token.strings.delimiter) {\n token.strings.delimiter = \"\";\n }\n if (\"string\" === typeof str && str.length) {\n\n // Source (;?!»«): http://en.wikipedia.org/wiki/Space_(punctuation)#Breaking_and_non-breaking_spaces\n // Source (:): http://forums.zotero.org/discussion/4933/localized-quotes/#Comment_88384\n str = str.replace(/ ([:;?!\\u00bb])/g, \"\\u202f$1\").replace(/\\u00ab /g, \"\\u00ab\\u202f\");\n\n this.last_char_rendered = str.slice(-1);\n // This, and not the str argument below on flipflop, is the\n // source of the flipflopper string source.\n str = str.replace(/\\s+'/g, \" \\'\");\n if (!notSerious) {\n // this condition for sort_LeadingApostropheOnNameParticle\n str = str.replace(/^'/g, \" \\'\");\n }\n\n // signal whether we end with terminal punctuation?\n if (!ignorePredecessor) {\n this.state.tmp.term_predecessor = true;\n this.state.tmp.in_cite_predecessor = true;\n } else if (notSerious) {\n this.state.tmp.term_predecessor_name = true;\n }\n }\n blob = new CSL.Blob(str, token);\n curr = this.current.value();\n if (\"undefined\" === typeof curr && this.current.mystack.length === 0) {\n // XXXX An operation like this is missing somewhere, this should NOT be necessary.\n // Addresses error triggered in multi-layouts.\n this.current.mystack.push([]);\n curr = this.current.value();\n }\n if (\"string\" === typeof blob.blobs) {\n if (!ignorePredecessor) {\n this.state.tmp.term_predecessor = true;\n this.state.tmp.in_cite_predecessor = true;\n } else if (notSerious) {\n this.state.tmp.term_predecessor_name = true;\n }\n }\n //\n // Caution: The parallel detection machinery will blow up if tracking\n // variables are not properly initialized elsewhere.\n //\n if (\"string\" === typeof str) {\n if (\"string\" === typeof blob.blobs) {\n if (blob.blobs.slice(0, 1) !== \" \") {\n var blobPrefix = \"\";\n var blobBlobs = blob.blobs;\n while (CSL.TERMINAL_PUNCTUATION.indexOf(blobBlobs.slice(0, 1)) > -1) {\n blobPrefix = blobPrefix + blobBlobs.slice(0, 1);\n blobBlobs = blobBlobs.slice(1);\n }\n if (blobBlobs && blobPrefix) {\n blob.strings.prefix = blob.strings.prefix + blobPrefix;\n blob.blobs = blobBlobs;\n }\n }\n }\n if (blob.strings[\"text-case\"]) {\n //\n // This one is _particularly_ hard to follow. It's not obvious,\n // but the blob already contains the input string at this\n // point, as blob.blobs -- it's a terminal node, as it were.\n // The str variable also contains the input string, but\n // that copy is not used for onward processing. We have to\n // apply our changes to the blob copy.\n //\n blob.blobs = CSL.Output.Formatters[blob.strings[\"text-case\"]](this.state, str);\n }\n if (this.state.tmp.strip_periods && !noStripPeriods) {\n blob.blobs = blob.blobs.replace(/\\.([^a-z]|$)/g, \"$1\");\n }\n for (var i = blob.decorations.length - 1; i > -1; i += -1) {\n if (blob.decorations[i][0] === \"@quotes\" && blob.decorations[i][1] !== \"false\") {\n blob.punctuation_in_quote = this.state.getOpt(\"punctuation-in-quote\");\n }\n if (!blob.blobs.match(CSL.ROMANESQUE_REGEXP)) {\n if (blob.decorations[i][0] === \"@font-style\") {\n blob.decorations = blob.decorations.slice(0, i).concat(blob.decorations.slice(i + 1));\n }\n }\n }\n //\n // XXX: Beware superfluous code in your code. str in this\n // case is not the source of the final rendered string.\n // See note above.\n //\n curr.push(blob);\n this.state.fun.flipflopper.processTags(blob);\n } else if (useblob) {\n curr.push(blob);\n } else {\n curr.push(str);\n }\n return true;\n};\n\nCSL.Output.Queue.prototype.string = function (state, myblobs, blob) {\n var i, ilen, j, jlen, b;\n //if (blob && blob.strings.delimiter) {\n // print(\"DELIMITER: \"+blob.strings.delimiter+\" on \"+[x.blobs[0].num for each (x in myblobs)]);\n //}\n //var blobs, ret, blob_delimiter, i, params, blobjr, last_str, last_char, b, use_suffix, qres, addtoret, span_split, j, res, blobs_start, blobs_end, key, pos, len, ppos, llen, ttype, ltype, terminal, leading, delimiters, use_prefix, txt_esc;\n var txt_esc = CSL.getSafeEscape(this.state);\n var blobs = myblobs.slice();\n var ret = [];\n \n if (blobs.length === 0) {\n return ret;\n }\n\n var blob_delimiter = \"\";\n if (blob) {\n blob_delimiter = blob.strings.delimiter;\n } else {\n //print(\"=== Setting false to start ===\");\n state.tmp.count_offset_characters = false;\n state.tmp.offset_characters = 0;\n }\n\n if (blob && blob.new_locale) {\n blob.old_locale = state.opt.lang;\n state.opt.lang = blob.new_locale;\n }\n\n var blobjr, use_suffix, use_prefix, params;\n for (var i = 0, ilen = blobs.length; i < ilen; i += 1) {\n blobjr = blobs[i];\n\n if (blobjr.strings.first_blob) {\n // Being the Item.id of the the entry being rendered.\n //print(\" -- turning on counting\");\n state.tmp.count_offset_characters = blobjr.strings.first_blob;\n }\n\n if (\"string\" === typeof blobjr.blobs) {\n if (\"number\" === typeof blobjr.num) {\n ret.push(blobjr);\n } else if (blobjr.blobs) {\n if (blobjr.particle) {\n blobjr.blobs = blobjr.particle + blobjr.blobs;\n blobjr.particle = \"\";\n }\n // (skips empty strings)\n //b = txt_esc(blobjr.blobs);\n b = txt_esc(blobjr.blobs);\n var blen = b.length;\n\n if (!state.tmp.suppress_decorations) {\n for (j = 0, jlen = blobjr.decorations.length; j < jlen; j += 1) {\n params = blobjr.decorations[j];\n if (params[0] === \"@showid\") {\n continue;\n }\n if (state.normalDecorIsOrphan(blobjr, params)) {\n continue;\n }\n b = state.fun.decorate[params[0]][params[1]].call(blobjr, state, b, params[2]);\n }\n }\n //\n // because we will rip out portions of the output\n // queue before rendering, group wrappers need\n // to produce no output if they are found to be\n // empty.\n if (b && b.length) {\n b = txt_esc(blobjr.strings.prefix) + b + txt_esc(blobjr.strings.suffix);\n if (state.opt.development_extensions.csl_reverse_lookup_support && !state.tmp.suppress_decorations) {\n for (j = 0, jlen = blobjr.decorations.length; j < jlen; j += 1) {\n params = blobjr.decorations[j];\n\n if (params[0] === \"@showid\") {\n b = state.fun.decorate[params[0]][params[1]].call(blobjr, state, b, params[2]);\n }\n }\n }\n ret.push(b);\n if (state.tmp.count_offset_characters) {\n state.tmp.offset_characters += (blen + blobjr.strings.suffix.length + blobjr.strings.prefix.length);\n }\n }\n }\n } else if (blobjr.blobs.length) {\n var addtoret = state.output.string(state, blobjr.blobs, blobjr);\n if (blob) {\n // Patch up world-class weird bug in the ill-constructed code of mine.\n if (\"string\" !== addtoret && addtoret.length > 1 && blobjr.strings.delimiter) {\n var numberSeen = false;\n for (var j=0,jlen=addtoret.length;j<jlen;j++) {\n if (\"string\" !== typeof addtoret[j]) {\n numberSeen = true;\n } else if (numberSeen) {\n addtoret[j] = (blobjr.strings.delimiter + addtoret[j]);\n }\n }\n }\n }\n ret = ret.concat(addtoret);\n }\n if (blobjr.strings.first_blob && state.registry.registry[blobjr.strings.first_blob]) {\n // The Item.id of the entry being rendered.\n state.registry.registry[blobjr.strings.first_blob].offset = state.tmp.offset_characters;\n state.tmp.count_offset_characters = false;\n }\n }\n\n // Provide delimiters on adjacent numeric blobs\n for (i=0,ilen=ret.length - 1;i<ilen;i+=1) {\n if (\"number\" === typeof ret[i].num && \"number\" === typeof ret[i+1].num && !ret[i+1].UGLY_DELIMITER_SUPPRESS_HACK) {\n // XXX watch this\n ret[i].strings.suffix = ret[i].strings.suffix + (blob_delimiter ? blob_delimiter : \"\");\n ret[i+1].successor_prefix = \"\";\n ret[i+1].UGLY_DELIMITER_SUPPRESS_HACK = true;\n }\n }\n\n var span_split = 0;\n for (var i = 0, ilen = ret.length; i < ilen; i += 1) {\n if (\"string\" === typeof ret[i]) {\n span_split = (parseInt(i, 10) + 1);\n if (i < ret.length - 1 && \"object\" === typeof ret[i + 1]) {\n if (blob_delimiter && !ret[i + 1].UGLY_DELIMITER_SUPPRESS_HACK) {\n ret[i] += txt_esc(blob_delimiter);\n }\n // One bite of the apple\n ret[i + 1].UGLY_DELIMITER_SUPPRESS_HACK = true;\n }\n //span_split = ret.length;\n //print(\"XXX ret: \"+ret+\" -- \"+blob_delimiter);\n }\n }\n/*\n if (blob && (blob.decorations.length || blob.strings.suffix || blob.strings.prefix)) {\n span_split = ret.length;\n }\n*/\n if (blob && (blob.decorations.length || blob.strings.suffix)) {\n span_split = ret.length;\n } else if (blob && blob.strings.prefix) {\n for (var i=0,ilen=ret.length;i<ilen;i++) {\n if (\"undefined\" !== typeof ret[i].num) {\n span_split = i;\n if (i === 0) {\n ret[i].strings.prefix = blob.strings.prefix + ret[i].strings.prefix;\n }\n break;\n }\n }\n }\n\n var blobs_start = state.output.renderBlobs(ret.slice(0, span_split), blob_delimiter, false, blob);\n if (blobs_start && blob && (blob.decorations.length || blob.strings.suffix || blob.strings.prefix)) {\n if (!state.tmp.suppress_decorations) {\n for (var i = 0, ilen = blob.decorations.length; i < ilen; i += 1) {\n params = blob.decorations[i];\n if ([\"@cite\",\"@bibliography\", \"@display\", \"@showid\"].indexOf(params[0]) > -1) {\n continue;\n }\n if (state.normalDecorIsOrphan(blobjr, params)) {\n continue;\n }\n if (!params[0]) continue;\n if (\"string\" === typeof blobs_start) {\n blobs_start = state.fun.decorate[params[0]][params[1]].call(blob, state, blobs_start, params[2]);\n }\n }\n }\n //\n // XXXX: cut-and-paste warning. same as a code block above.\n //\n b = blobs_start;\n use_suffix = blob.strings.suffix;\n if (b && b.length) {\n use_prefix = blob.strings.prefix;\n b = txt_esc(use_prefix) + b + txt_esc(use_suffix);\n if (state.tmp.count_offset_characters) {\n state.tmp.offset_characters += (use_prefix.length + use_suffix.length);\n }\n }\n blobs_start = b;\n if (!state.tmp.suppress_decorations) {\n for (var i = 0, ilen = blob.decorations.length; i < ilen; i += 1) {\n params = blob.decorations[i];\n if ([\"@cite\",\"@bibliography\", \"@display\", \"@showid\"].indexOf(params[0]) === -1) {\n continue;\n }\n if (\"string\" === typeof blobs_start) {\n blobs_start = state.fun.decorate[params[0]][params[1]].call(blob, state, blobs_start, params[2]);\n }\n }\n }\n }\n\n var blobs_end = ret.slice(span_split, ret.length);\n if (!blobs_end.length && blobs_start) {\n ret = [blobs_start];\n } else if (blobs_end.length && !blobs_start) {\n ret = blobs_end;\n } else if (blobs_start && blobs_end.length) {\n ret = [blobs_start].concat(blobs_end);\n }\n //\n // Blobs is now definitely a string with\n // trailing blobs. Return it.\n if (\"undefined\" === typeof blob) {\n this.queue = [];\n this.current.mystack = [];\n this.current.mystack.push(this.queue);\n if (state.tmp.suppress_decorations) {\n ret = state.output.renderBlobs(ret, undefined, false);\n }\n } else if (\"boolean\" === typeof blob) {\n ret = state.output.renderBlobs(ret, undefined, true);\n }\n\n if (blob && blob.new_locale) {\n state.opt.lang = blob.old_locale;\n }\n //if (!blob && !state.tmp.just_looking) {\n // print(\"QUEUE (\"+ state.tmp.just_looking +\"): \"+JSON.stringify(state.output.queue, [\"num\", \"strings\", \"decorations\", \"blobs\", \"prefix\", \"suffix\", \"delimiter\"], 2));\n //}\n return ret;\n};\n\nCSL.Output.Queue.prototype.clearlevel = function () {\n var blob, pos, len;\n blob = this.current.value();\n len = blob.blobs.length;\n for (pos = 0; pos < len; pos += 1) {\n blob.blobs.pop();\n }\n};\n\nCSL.Output.Queue.prototype.renderBlobs = function (blobs, delim, in_cite, parent) {\n var state, ret, ret_last_char, use_delim, blob, pos, len, ppos, llen, str, params, txt_esc;\n txt_esc = CSL.getSafeEscape(this.state);\n if (!delim) {\n delim = \"\";\n }\n state = this.state;\n ret = \"\";\n ret_last_char = [];\n use_delim = \"\";\n len = blobs.length;\n if (this.state.tmp.area === \"citation\" && !this.state.tmp.just_looking && len === 1 && typeof blobs[0] === \"object\" && parent) {\n blobs[0].strings.prefix = parent.strings.prefix + blobs[0].strings.prefix;\n blobs[0].strings.suffix = blobs[0].strings.suffix + parent.strings.suffix;\n blobs[0].decorations = blobs[0].decorations.concat(parent.decorations);\n blobs[0].params = parent.params;\n return blobs[0];\n }\n var start = true;\n for (pos = 0; pos < len; pos += 1) {\n if (blobs[pos].checkNext) {\n blobs[pos].checkNext(blobs[pos + 1],start);\n start = false;\n } else if (blobs[pos+1] && blobs[pos+1].splice_prefix) {\n start = false;\n //blobs[pos+1].checkNext(blobs[pos + 1],start);\n } else {\n start = true;\n }\n }\n \n // print(\"LEN=\"+len+\" \"+JSON.stringify(blobs, null, 2));\n // Fix last non-range join\n var doit = true;\n for (pos = blobs.length - 1; pos > 0; pos += -1) {\n if (blobs[pos].checkLast) {\n if (doit && blobs[pos].checkLast(blobs[pos - 1])) {\n doit = false;\n }\n } else {\n doit = true;\n }\n }\n len = blobs.length;\n for (pos = 0; pos < len; pos += 1) {\n blob = blobs[pos];\n if (ret) {\n use_delim = delim;\n }\n if (\"string\" === typeof blob) {\n ret += txt_esc(use_delim);\n // XXX Blob should be run through flipflop and flattened here.\n // (I think it must be a fragment of text around a numeric\n // variable)\n ret += blob;\n if (state.tmp.count_offset_characters) {\n //state.tmp.offset_characters += (use_delim.length + blob.length);\n state.tmp.offset_characters += (use_delim.length);\n }\n } else if (in_cite) {\n // pass\n // Okay, so this does it -- but we're now not able to return a string!\n if (ret) {\n ret = [ret, blob];\n } else {\n ret = [blob];\n }\n } else if (blob.status !== CSL.SUPPRESS) {\n if (blob.particle) {\n str = blob.particle + blob.num;\n } else {\n str = blob.formatter.format(blob.num, blob.gender);\n }\n // Workaround to get a more or less accurate value.\n var strlen = str.replace(/<[^>]*>/g, \"\").length;\n // notSerious\n this.append(str, \"empty\", true);\n var str_blob = this.pop();\n var count_offset_characters = state.tmp.count_offset_characters;\n str = this.string(state, [str_blob], false);\n state.tmp.count_offset_characters = count_offset_characters;\n if (blob.strings[\"text-case\"]) {\n str = CSL.Output.Formatters[blob.strings[\"text-case\"]](this.state, str);\n }\n if (str && this.state.tmp.strip_periods) {\n str = str.replace(/\\.([^a-z]|$)/g, \"$1\");\n }\n if (!state.tmp.suppress_decorations) {\n llen = blob.decorations.length;\n for (ppos = 0; ppos < llen; ppos += 1) {\n params = blob.decorations[ppos];\n if (state.normalDecorIsOrphan(blob, params)) {\n continue;\n }\n str = state.fun.decorate[params[0]][params[1]].call(blob, state, str, params[2]);\n }\n }\n str = txt_esc(blob.strings.prefix) + str + txt_esc(blob.strings.suffix);\n var addme = \"\";\n if (blob.status === CSL.END) {\n //print(\" CSL.END\");\n addme = txt_esc(blob.range_prefix);\n } else if (blob.status === CSL.SUCCESSOR) {\n //print(\" CSL.SUCCESSOR\");\n addme = txt_esc(blob.successor_prefix);\n } else if (blob.status === CSL.START) {\n //print(\" CSL.START\");\n if (pos > 0 && !blob.suppress_splice_prefix) {\n addme = txt_esc(blob.splice_prefix);\n } else {\n addme = \"\";\n }\n } else if (blob.status === CSL.SEEN) {\n //print(\" CSL.SEEN\");\n\n // THIS IS NOT THE PROPER FUNCTION OF CSL.SEEN, IS IT?\n\n addme = txt_esc(blob.splice_prefix);\n }\n ret += addme;\n ret += str;\n if (state.tmp.count_offset_characters) {\n state.tmp.offset_characters += (addme.length + blob.strings.prefix.length + strlen + blob.strings.suffix.length);\n }\n }\n }\n return ret;\n};\n\nCSL.Output.Queue.purgeEmptyBlobs = function (parent) {\n //print(\"START1\");\n if (\"object\" !== typeof parent || \"object\" !== typeof parent.blobs || !parent.blobs.length) {\n return;\n }\n // back-to-front, bottom-first\n for (var i=parent.blobs.length-1;i>-1;i--) {\n CSL.Output.Queue.purgeEmptyBlobs(parent.blobs[i]);\n var child = parent.blobs[i];\n if (!child || !child.blobs || !child.blobs.length) {\n var buf = [];\n while ((parent.blobs.length-1) > i) {\n buf.push(parent.blobs.pop());\n }\n parent.blobs.pop();\n while (buf.length) {\n parent.blobs.push(buf.pop());\n }\n }\n }\n //print(\" end\");\n};\n\n// Adjustments to be made:\n//\n// * Never migrate beyond a @quotes node\n// * Never migrate into a num node.\n\nCSL.Output.Queue.adjust = function (punctInQuote) {\n\n var NO_SWAP_IN = {\n \";\": true,\n \":\": true\n };\n\n var NO_SWAP_OUT = {\n \".\": true,\n \"!\": true,\n \"?\": true\n };\n\n var LtoR_MAP = {\n \"!\": {\n \".\": \"!\",\n \"?\": \"!?\",\n \":\": \"!\",\n \",\": \"!,\",\n \";\": \"!;\"\n },\n \"?\": {\n \"!\": \"?!\",\n \".\": \"?\",\n \":\": \"?\",\n \",\": \"?,\",\n \";\": \"?;\"\n },\n \".\": {\n \"!\": \".!\",\n \"?\": \".?\",\n \":\": \".:\",\n \",\": \".,\",\n \";\": \".;\"\n },\n \":\": {\n \"!\": \"!\",\n \"?\": \"?\",\n \".\": \":\",\n \",\": \":,\",\n \";\": \":;\"\n },\n \",\": {\n \"!\": \",!\",\n \"?\": \",?\",\n \":\": \",:\",\n \".\": \",.\",\n \";\": \",;\"\n },\n \";\": {\n \"!\": \"!\",\n \"?\": \"?\",\n \":\": \";\",\n \",\": \";,\",\n \".\": \";\"\n }\n };\n\n var SWAP_IN = {};\n var SWAP_OUT = {};\n var PUNCT = {};\n var PUNCT_OR_SPACE = {};\n for (var key in LtoR_MAP) {\n PUNCT[key] = true;\n PUNCT_OR_SPACE[key] = true;\n if (!NO_SWAP_IN[key]) {\n SWAP_IN[key] = true;\n }\n if (!NO_SWAP_OUT[key]) {\n SWAP_OUT[key] = true;\n }\n }\n PUNCT_OR_SPACE[\" \"] = true;\n PUNCT_OR_SPACE[\" \"] = true;\n\n var RtoL_MAP = {};\n for (var key in LtoR_MAP) {\n for (var subkey in LtoR_MAP[key]) {\n if (!RtoL_MAP[subkey]) {\n RtoL_MAP[subkey] = {};\n }\n RtoL_MAP[subkey][key] = LtoR_MAP[key][subkey];\n }\n }\n\n function blobIsNumber(blob) {\n return (\"number\" === typeof blob.num || (blob.blobs && blob.blobs.length === 1 && \"number\" === typeof blob.blobs[0].num));\n }\n\n function blobEndsInNumber(blob) {\n if (\"number\" === typeof blob.num) {\n return true;\n }\n if (!blob.blobs || \"object\" !== typeof blob.blobs) {\n return false;\n }\n if (blobEndsInNumber(blob.blobs[blob.blobs.length-1])) {\n return true;\n }\n }\n \n function blobHasDecorations(blob,includeQuotes) {\n var ret = false;\n var decorlist = ['@font-style','@font-variant','@font-weight','@text-decoration','@vertical-align'];\n if (includeQuotes) {\n decorlist.push('@quotes');\n }\n if (blob.decorations) {\n for (var i=0,ilen=blob.decorations.length;i<ilen;i++) {\n if (decorlist.indexOf(blob.decorations[i][0]) > -1) {\n ret = true;\n break;\n }\n }\n }\n return ret;\n }\n \n function blobHasDescendantQuotes(blob) {\n if (blob.decorations) {\n for (var i=0,ilen=blob.decorations.length;i<ilen;i++) {\n if (blob.decorations[i][0] === '@quotes' && blob.decorations[i][1] !== \"false\") {\n return true;\n }\n }\n }\n if (\"object\" !== typeof blob.blobs) {\n return false;\n }\n return blobHasDescendantQuotes(blob.blobs[blob.blobs.length-1]);\n //if (blobHasDescendantQuotes(blob.blobs[blob.blobs.length-1])) {\n // return true\n //};\n //return false;\n }\n \n function blobHasDescendantMergingPunctuation(parentChar,blob) {\n var childChar = blob.strings.suffix.slice(-1);\n if (!childChar && \"string\" === typeof blob.blobs) {\n childChar = blob.blobs.slice(-1);\n }\n var mergedChars = RtoL_MAP[parentChar][childChar];\n if (mergedChars && mergedChars.length === 1) {\n return true;\n }\n if (\"object\" !== typeof blob.blobs) {\n return false;\n }\n if (blobHasDescendantMergingPunctuation(parentChar,blob.blobs[blob.blobs.length-1])) {\n return true;\n }\n return false;\n }\n \n function matchLastChar(blob, chr) {\n if (!PUNCT[chr]) {\n return false;\n }\n if (\"string\" === typeof blob.blobs) {\n\n if (blob.blobs.slice(-1) === chr) {\n return true;\n } else {\n return false;\n }\n } else {\n var child = blob.blobs[blob.blobs.length-1];\n if (child) {\n var childChar = child.strings.suffix.slice(-1);\n if (!childChar) {\n return matchLastChar(child,chr);\n } else if (child.strings.suffix.slice(-1) == chr) {\n return true;\n } else {\n return false;\n }\n } else {\n return false;\n }\n }\n }\n \n function mergeChars (First, first, Second, second, merge_right) {\n var FirstStrings = \"blobs\" === first ? First : First.strings;\n var SecondStrings = \"blobs\" === second ? Second: Second.strings;\n var firstChar = FirstStrings[first].slice(-1);\n var secondChar = SecondStrings[second].slice(0,1);\n function cullRight () {\n SecondStrings[second] = SecondStrings[second].slice(1);\n }\n function cullLeft () {\n FirstStrings[first] = FirstStrings[first].slice(0,-1);\n }\n function addRight (chr) {\n SecondStrings[second] = chr + SecondStrings[second];\n }\n function addLeft (chr) {\n FirstStrings[first] += chr;\n }\n var cull = merge_right ? cullLeft : cullRight;\n function matchOnRight () {\n return RtoL_MAP[secondChar];\n }\n function matchOnLeft () {\n return LtoR_MAP[firstChar];\n }\n var match = merge_right ? matchOnLeft : matchOnRight;\n function mergeToRight () {\n var chr = LtoR_MAP[firstChar][secondChar];\n if (\"string\" === typeof chr) {\n cullLeft();\n cullRight();\n addRight(chr);\n } else {\n addRight(firstChar);\n cullLeft();\n }\n }\n function mergeToLeft () {\n var chr = RtoL_MAP[secondChar][firstChar];\n if (\"string\" === typeof chr) {\n cullLeft();\n cullRight();\n addLeft(chr);\n } else {\n addLeft(secondChar);\n cullRight();\n }\n }\n var merge = merge_right ? mergeToRight: mergeToLeft;\n\n var isDuplicate = firstChar === secondChar;\n if (isDuplicate) {\n cull();\n } else {\n if (match()) {\n merge();\n }\n }\n }\n\n function upward (parent) {\n //print(\"START2\");\n // Terminus if no blobs\n if (parent.blobs && \"string\" == typeof parent.blobs) {\n if (PUNCT[parent.strings.suffix.slice(0,1)]\n && parent.strings.suffix.slice(0,1) === parent.blobs.slice(-1)) {\n\n parent.strings.suffix = parent.strings.suffix.slice(1);\n }\n return;\n } else if (\"object\" !== typeof parent || \"object\" !== typeof parent.blobs || !parent.blobs.length) {\n return;\n }\n\n // back-to-front, bottom-first\n var parentDecorations = blobHasDecorations(parent,true);\n for (var i=parent.blobs.length-1;i>-1;i--) {\n this.upward(parent.blobs[i]);\n var parentStrings = parent.strings;\n var childStrings = parent.blobs[i].strings;\n if (i === 0) {\n // Remove leading space on first-position child node prefix if there is a trailing space on the node prefix above \n if (\" \" === parentStrings.prefix.slice(-1) && \" \" === childStrings.prefix.slice(0, 1)) {\n childStrings.prefix = childStrings.prefix.slice(1);\n }\n // Migrate leading punctuation or space on a first-position prefix upward\n var childChar = childStrings.prefix.slice(0, 1);\n if (!parentDecorations && PUNCT_OR_SPACE[childChar] && !parentStrings.prefix) {\n parentStrings.prefix += childChar;\n childStrings.prefix = childStrings.prefix.slice(1);\n }\n }\n if (i === (parent.blobs.length - 1)) {\n // Migrate trailing space ONLY on a last-position suffix upward, controlling for duplicates\n var childChar = childStrings.suffix.slice(-1);\n // ZZZ Loosened to fix initialized names wrapped in a span and followed by a period\n if (!parentDecorations && [\" \"].indexOf(childChar) > -1) {\n if (parentStrings.suffix.slice(0,1) !== childChar) {\n parentStrings.suffix = childChar + parentStrings.suffix;\n }\n childStrings.suffix = childStrings.suffix.slice(0, -1);\n }\n }\n if (parentStrings.delimiter && i > 0) {\n // Remove leading space on mid-position child node prefix if there is a trailing space on delimiter above\n if (PUNCT_OR_SPACE[parentStrings.delimiter.slice(-1)]\n && parentStrings.delimiter.slice(-1) === childStrings.prefix.slice(0, 1)) {\n\n childStrings.prefix = childStrings.prefix.slice(1);\n }\n }\n // Siblings are handled in adjustNearsideSuffixes()\n }\n //print(\" end\");\n }\n\n function leftward (parent) {\n // Terminus if no blobs\n if (\"object\" !== typeof parent || \"object\" !== typeof parent.blobs || !parent.blobs.length) {\n return;\n }\n\n for (var i=parent.blobs.length-1;i>-1;i--) {\n this.leftward(parent.blobs[i]);\n // This is a delicate one.\n //\n // Migrate if:\n // * there is no umbrella delimiter [ok]\n // * neither the child nor its sibling is a number [ok]\n // * decorations exist neither on the child nor on the sibling [ok]\n // * sibling prefix char is a swapping char [ok]\n //\n // Suppress without migration if:\n // * sibling prefix char matches child suffix char or\n // * child suffix is empty and sibling prefix char match last field char\n if ((i < parent.blobs.length -1) && !parent.strings.delimiter) {\n // If there is a trailing swappable character on a sibling prefix with no intervening delimiter, copy it to suffix,\n // controlling for duplicates\n var child = parent.blobs[i];\n var childChar = child.strings.suffix.slice(-1);\n var sibling = parent.blobs[i+1];\n var siblingChar = sibling.strings.prefix.slice(0, 1);\n var hasDecorations = blobHasDecorations(child) || blobHasDecorations(sibling);\n var hasNumber = \"number\" === typeof childChar || \"number\" === typeof siblingChar;\n\n if (!hasDecorations && !hasNumber && PUNCT[siblingChar] && !hasNumber) {\n var suffixAndPrefixMatch = siblingChar === child.strings.suffix.slice(-1);\n var suffixAndFieldMatch = (!child.strings.suffix && \"string\" === typeof child.blobs && child.blobs.slice(-1) === siblingChar);\n if (!suffixAndPrefixMatch && !suffixAndFieldMatch) {\n mergeChars(child, 'suffix', sibling, 'prefix');\n //child.strings.suffix += siblingChar;\n } else {\n sibling.strings.prefix = sibling.strings.prefix.slice(1);\n }\n }\n }\n }\n }\n\n function downward (parent) {\n //print(\"START3\");\n // Terminus if no blobs\n if (parent.blobs && \"string\" == typeof parent.blobs) {\n if (PUNCT[parent.strings.suffix.slice(0,1)]\n && parent.strings.suffix.slice(0,1) === parent.blobs.slice(-1)) {\n\n parent.strings.suffix = parent.strings.suffix.slice(1);\n }\n return;\n } else if (\"object\" !== typeof parent || \"object\" !== typeof parent.blobs || !parent.blobs.length) {\n return;\n }\n //if (top) {\n // print(\"JSON \"+JSON.stringify(parent, [\"strings\", \"decorations\", \"blobs\", \"prefix\", \"suffix\", \"delimiter\"], 2));\n //}\n\n var parentStrings = parent.strings;\n // Check for numeric child\n var someChildrenAreNumbers = false;\n for (var i=0,ilen=parent.blobs.length;i<ilen;i++) {\n if (blobIsNumber(parent.blobs[i])) {\n someChildrenAreNumbers = true;\n break;\n }\n }\n if (true || !someChildrenAreNumbers) {\n // If there is a leading swappable character on delimiter, copy it to suffixes IFF none of the targets are numbers\n if (parentStrings.delimiter && PUNCT[parentStrings.delimiter.slice(0, 1)]) {\n var delimChar = parentStrings.delimiter.slice(0, 1);\n for (var i=parent.blobs.length-2;i>-1;i--) {\n var childStrings = parent.blobs[i].strings;\n if (childStrings.suffix.slice(-1) !== delimChar) {\n childStrings.suffix += delimChar;\n }\n }\n parentStrings.delimiter = parentStrings.delimiter.slice(1);\n }\n }\n // back-to-front, top-first\n for (var i=parent.blobs.length-1;i>-1;i--) {\n var child = parent.blobs[i];\n var childStrings = parent.blobs[i].strings;\n var childDecorations = blobHasDecorations(child, true);\n var childIsNumber = blobIsNumber(child);\n\n if (i === (parent.blobs.length - 1)) {\n\n //if (blobHasDescendantQuotes(child)) {\n // print(\"JSON \"+JSON.stringify(parent, [\"strings\", \"decorations\", \"blobs\", \"prefix\", \"suffix\", \"delimiter\"]));\n //}\n\n if (true || !someChildrenAreNumbers) {\n // If we have decorations, drill down to see if there are quotes below.\n // If so, we allow migration anyway.\n // Original discussion is here:\n // https://forums.zotero.org/discussion/37091/citeproc-bug-punctuation-in-quotes/\n var parentChar = parentStrings.suffix.slice(0, 1);\n\n // Hmm.\n // Consider writing out the matching child from blobHasDescendant functions.\n // It should save some cycles, and produce the same result.\n\n var allowMigration = false;\n if (PUNCT[parentChar]) {\n allowMigration = blobHasDescendantMergingPunctuation(parentChar,child);\n if (!allowMigration && punctInQuote) {\n allowMigration = blobHasDescendantQuotes(child);\n }\n }\n if (allowMigration) {\n if (PUNCT[parentChar]) {\n if (!blobEndsInNumber(child)) {\n if (\"string\" === typeof child.blobs) {\n mergeChars(child, 'blobs', parent, 'suffix');\n } else {\n mergeChars(child, 'suffix', parent, 'suffix');\n }\n if (parentStrings.suffix.slice(0,1) === \".\") {\n childStrings.suffix += parentStrings.suffix.slice(0,1);\n parentStrings.suffix = parentStrings.suffix.slice(1);\n }\n }\n }\n }\n if (childStrings.suffix.slice(-1) === \" \" && parentStrings.suffix.slice(0,1) === \" \") {\n parentStrings.suffix = parentStrings.suffix.slice(1);\n }\n // More duplicates control\n if (PUNCT_OR_SPACE[childStrings.suffix.slice(0,1)]) {\n if (\"string\" === typeof child.blobs && child.blobs.slice(-1) === childStrings.suffix.slice(0,1)) {\n // Remove parent punctuation of it duplicates the last character of a field\n childStrings.suffix = childStrings.suffix.slice(1);\n }\n if (childStrings.suffix.slice(-1) === parentStrings.suffix.slice(0, 1)) {\n // Remove duplicate punctuation on child suffix\n parentStrings.suffix = parentStrings.suffix.slice(0, -1);\n }\n }\n }\n // Squash dupes\n if (matchLastChar(parent,parent.strings.suffix.slice(0,1))) {\n parent.strings.suffix = parent.strings.suffix.slice(1);\n }\n } else if (parentStrings.delimiter) {\n // Remove trailing space on mid-position child node suffix if there is a leading space on delimiter above\n if (PUNCT_OR_SPACE[parentStrings.delimiter.slice(0,1)]\n && parentStrings.delimiter.slice(0, 1) === childStrings.suffix.slice(-1)) {\n\n parent.blobs[i].strings.suffix = parent.blobs[i].strings.suffix.slice(0, -1);\n \n }\n } else {\n // Otherwise it's a sibling. We don't care about moving spaces here, just suppress a duplicate\n var siblingStrings = parent.blobs[i+1].strings;\n if (!blobIsNumber(child) \n && !childDecorations\n && PUNCT_OR_SPACE[childStrings.suffix.slice(-1)]\n && childStrings.suffix.slice(-1) === siblingStrings.prefix.slice(0, 1)) {\n\n siblingStrings.prefix = siblingStrings.prefix.slice(1);\n }\n }\n // If field content ends with swappable punctuation, suppress swappable punctuation in style suffix.\n if (!childIsNumber && !childDecorations && PUNCT[childStrings.suffix.slice(0,1)]\n && \"string\" === typeof child.blobs) {\n \n mergeChars(child, 'blobs', child, 'suffix');\n }\n this.downward(parent.blobs[i]);\n }\n/*\n if (top) {\n\n var seen = [];\n print(JSON.stringify(parent, function(key, val) {\n if (!val || key === 'alldecor') return;\n if (typeof val == \"object\") {\n if (seen.indexOf(val) >= 0)\n return\n seen.push(val)\n }\n return val\n },2));\n }\n*/\n\n //print(\" end\");\n }\n // Abstract out a couple of utility functions, used in fix() below.\n function swapToTheLeft (child) {\n var childChar = child.strings.suffix.slice(0,1);\n if (\"string\" === typeof child.blobs) {\n while (SWAP_IN[childChar]) {\n mergeChars(child, 'blobs', child, 'suffix');\n childChar = child.strings.suffix.slice(0,1);\n } \n } else {\n while (SWAP_IN[childChar]) {\n mergeChars(child.blobs[child.blobs.length-1], 'suffix', child, 'suffix');\n childChar = child.strings.suffix.slice(0,1);\n }\n }\n }\n function swapToTheRight (child) {\n if (\"string\" === typeof child.blobs) {\n var childChar = child.blobs.slice(-1);\n while (SWAP_OUT[childChar]) {\n mergeChars(child, 'blobs', child, 'suffix', true);\n childChar = child.blobs.slice(-1);\n }\n } else {\n var childChar = child.blobs[child.blobs.length-1].strings.suffix.slice(-1);\n while (SWAP_OUT[childChar]) {\n mergeChars(child.blobs[child.blobs.length-1], 'suffix', child, 'suffix', true);\n childChar = child.blobs[child.blobs.length-1].strings.suffix.slice(-1);\n }\n }\n }\n\n function fix (parent) {\n // Terminus if no blobs\n if (\"object\" !== typeof parent || \"object\" !== typeof parent.blobs || !parent.blobs.length) {\n return;\n }\n \n //print(\"START4\");\n // Do the swap, front-to-back, bottom-first\n var lastChar;\n\n // XXX Two things to fix with this:\n // XXX (1) Stalls after one character\n // XXX (2) Moves colon and semicolon, both of which SHOULD stall\n\n for (var i=0,ilen=parent.blobs.length;i<ilen;i++) {\n var child = parent.blobs[i];\n var quoteSwap = false;\n for (var j=0,jlen=child.decorations.length;j<jlen;j++) {\n var decoration = child.decorations[j];\n if (decoration[0] === \"@quotes\" && decoration[1] !== \"false\") {\n quoteSwap = true;\n }\n }\n if (quoteSwap) {\n if (punctInQuote) {\n swapToTheLeft(child);\n } else {\n swapToTheRight(child);\n }\n }\n lastChar = this.fix(parent.blobs[i]);\n if (child.blobs && \"string\" === typeof child.blobs) {\n lastChar = child.blobs.slice(-1);\n }\n }\n return lastChar;\n }\n this.upward = upward;\n this.leftward = leftward;\n this.downward = downward;\n this.fix = fix;\n};\n\n/*global CSL: true */\n\nCSL.Engine.Opt = function () {\n this.parallel = {\n enable: false,\n },\n this.has_disambiguate = false;\n this.mode = \"html\";\n this.dates = {};\n this.jurisdictions_seen = {};\n this.suppressedJurisdictions = {};\n this.inheritedAttributes = {};\n this[\"locale-sort\"] = [];\n this[\"locale-translit\"] = [];\n this[\"locale-translat\"] = [];\n this.citeAffixes = {\n persons:{\n \"locale-orig\":{\n prefix:\"\",\n suffix:\"\"\n },\n \"locale-translit\":{\n prefix:\"\",\n suffix:\"\"\n },\n \"locale-translat\":{\n prefix:\"\",\n suffix:\"\"\n }\n },\n institutions:{\n \"locale-orig\":{\n prefix:\"\",\n suffix:\"\"\n },\n \"locale-translit\":{\n prefix:\"\",\n suffix:\"\"\n },\n \"locale-translat\":{\n prefix:\"\",\n suffix:\"\"\n }\n },\n titles:{\n \"locale-orig\":{\n prefix:\"\",\n suffix:\"\"\n },\n \"locale-translit\":{\n prefix:\"\",\n suffix:\"\"\n },\n \"locale-translat\":{\n prefix:\"\",\n suffix:\"\"\n }\n },\n journals:{\n \"locale-orig\":{\n prefix:\"\",\n suffix:\"\"\n },\n \"locale-translit\":{\n prefix:\"\",\n suffix:\"\"\n },\n \"locale-translat\":{\n prefix:\"\",\n suffix:\"\"\n }\n },\n publishers:{\n \"locale-orig\":{\n prefix:\"\",\n suffix:\"\"\n },\n \"locale-translit\":{\n prefix:\"\",\n suffix:\"\"\n },\n \"locale-translat\":{\n prefix:\"\",\n suffix:\"\"\n }\n },\n places:{\n \"locale-orig\":{\n prefix:\"\",\n suffix:\"\"\n },\n \"locale-translit\":{\n prefix:\"\",\n suffix:\"\"\n },\n \"locale-translat\":{\n prefix:\"\",\n suffix:\"\"\n }\n }\n };\n this[\"default-locale\"] = [];\n this.update_mode = CSL.NONE;\n this.bib_mode = CSL.NONE;\n this.sort_citations = false;\n /*\n * Default values.\n * The various et-al values are set globally,\n * and the appropriate value is set by the names start\n * tag at runtime, depending on whether the Item is a\n * first or a subsequent reference.\n */\n this[\"et-al-min\"] = 0;\n this[\"et-al-use-first\"] = 1;\n this[\"et-al-use-last\"] = false;\n this[\"et-al-subsequent-min\"] = false;\n this[\"et-al-subsequent-use-first\"] = false;\n\n this[\"demote-non-dropping-particle\"] = \"display-and-sort\";\n // default of true, because none of our consuming\n // applications so far store the various prefixes and \n // suffixes we support in separate fields.\n this[\"parse-names\"] = true;\n // this[\"auto-vietnamese-names\"] = true;\n\n this.citation_number_slug = false;\n this.trigraph = \"Aaaa00:AaAa00:AaAA00:AAAA00\";\n\n this.nodenames = [];\n\n this.gender = {};\n this['cite-lang-prefs'] = {\n persons:['orig'],\n institutions:['orig'],\n titles:['orig'],\n journals:['orig'],\n publishers:['orig'],\n places:['orig'],\n number:['orig']\n };\n\n this.has_layout_locale = false;\n this.disable_duplicate_year_suppression = [];\n this.use_context_condition = false;\n\n this.jurisdiction_fallbacks = {};\n\n this.development_extensions = {};\n this.development_extensions.field_hack = true;\n this.development_extensions.allow_field_hack_date_override = true;\n this.development_extensions.locator_date_and_revision = true;\n this.development_extensions.locator_label_parse = true;\n this.development_extensions.raw_date_parsing = true;\n this.development_extensions.clean_up_csl_flaws = true;\n this.development_extensions.consolidate_legal_items = false;\n this.development_extensions.csl_reverse_lookup_support = false;\n this.development_extensions.wrap_url_and_doi = false;\n this.development_extensions.thin_non_breaking_space_html_hack = false;\n this.development_extensions.apply_citation_wrapper = false;\n this.development_extensions.main_title_from_short_title = false;\n this.development_extensions.uppercase_subtitles = false;\n this.development_extensions.normalize_lang_keys_to_lowercase = false;\n this.development_extensions.strict_text_case_locales = false;\n this.development_extensions.expect_and_symbol_form = false;\n this.development_extensions.require_explicit_legal_case_title_short = false;\n this.development_extensions.spoof_institutional_affiliations = false;\n this.development_extensions.force_jurisdiction = false;\n this.development_extensions.parse_names = true;\n this.development_extensions.hanging_indent_legacy_number = false;\n this.development_extensions.throw_on_empty = false;\n this.development_extensions.strict_inputs = true;\n this.development_extensions.prioritize_disambiguate_condition = false;\n this.development_extensions.force_short_title_casing_alignment = true;\n this.development_extensions.implicit_short_title = false;\n this.development_extensions.force_title_abbrev_fallback = false;\n this.development_extensions.split_container_title = false;\n this.development_extensions.legacy_institution_name_ordering = false;\n this.development_extensions.etal_min_etal_usefirst_hack = false;\n};\n\nCSL.Engine.Tmp = function () {\n //\n // scratch variable to display the total\n // number of names in all rendered variables\n // in a cite. initialized to zero by the\n // citation element, incremented by each\n // name variable actually rendered\n this.names_max = new CSL.Stack();\n this.names_base = new CSL.Stack();\n this.givens_base = new CSL.Stack();\n //\n // this holds the field values collected by the @value\n // and @variable attributes, for processing by the\n // element functions.\n this.value = [];\n /**\n * Object to hold the decorations declared by a name-part\n * element.\n */\n this.namepart_decorations = {};\n /**\n * String variable to hold the type of a name-part\n * element.\n */\n this.namepart_type = false;\n //\n // scratch variable to flag whether we are processing\n // a citation or a bibiliography. this diverts token and\n // configuration to the appropriateo objects inside\n // state. the default is \"citation\".\n this.area = \"citation\";\n this.root = \"citation\";\n this.extension = \"\";\n //\n // controls the implicit conditional wrappers applied\n // to top-level elements inside a names substitute span.\n // false by default, names start tag pushes a new true level,\n // names end tag pops it. Output value check in @variable\n // function of attributes.js sets level to false. closing names\n // tag maps a false value to superior level.\n this.can_substitute = new CSL.Stack(0, CSL.LITERAL);\n //\n // notes whether the formatted elements of a date span\n // rendered anything. controls whether literal fallback\n // is used.\n this.element_rendered_ok = false;\n //\n // element_trace keeps a record of rendered elements.\n // used to implement author-only.\n //\n this.element_trace = new CSL.Stack(\"style\");\n //\n // counter for total namesets\n this.nameset_counter = 0;\n //\n ///// this.fun.check_for_output = CSL.check_for_output;\n //\n // stack flag used for term handling. Set to true\n // if at least one variable has tried to render, and\n // no variables had content.\n this.group_context = new CSL.Stack({\n term_intended: false,\n variable_attempt: false,\n variable_success: false,\n output_tip: undefined,\n label_form: undefined,\n parallel_first: undefined,\n parallel_last: undefined,\n parallel_delimiter_override: undefined,\n condition: false,\n force_suppress: false,\n done_vars: []\n });\n //\n // boolean flag used to control first-letter capitalization\n // of terms. Set to true if any item preceding the term\n // being handled has rendered successfully, otherwise\n // false.\n this.term_predecessor = false;\n //\n // boolean flag to control use of layout delimiter\n // immediately before numbers. This hack is needed for\n // some numeric styles.\n this.in_cite_predecessor = false;\n //\n // stack flag used to control jumps in the closing\n // token of a conditional.\n this.jump = new CSL.Stack(0, CSL.LITERAL);\n //\n // holds string parameters for group formatting, between\n // the start of a group and the closing token.\n this.decorations = new CSL.Stack();\n //\n // token store stack.\n this.tokenstore_stack = new CSL.Stack();\n\n // for collapsing\n this.last_suffix_used = \"\";\n this.last_names_used = [];\n this.last_years_used = [];\n this.years_used = [];\n this.names_used = [];\n\n this.taintedItemIDs = {};\n this.taintedCitationIDs = {};\n //\n // scratch stack containing initialize-with strings or null values\n this.initialize_with = new CSL.Stack();\n //\n // this is used to set a requested set of\n // disambiguation parameters in the output.\n // for the array elements, the base array\n // (either zero for each nameset, or full-up\n // if givens are already used) is set\n // during names processing, if no value\n // is set in the processor before a rendering\n // run. to simplify things for the calling\n // function, these are just bog-standard arrays,\n // and can be safely overwritten.\n this.disambig_request = false;\n //\n // scratch variable to toggle an attempt to set a\n // name in sort order rather than display\n // order.\n this[\"name-as-sort-order\"] = false;\n //\n // suppress decorations (used for generating\n // sort keys and disambiguation keys)\n this.suppress_decorations = false;\n //\n // empty settings array, used to report settings used\n // if disambig_request is not set at runtime\n this.disambig_settings = new CSL.AmbigConfig();\n //\n // sort key array\n this.bib_sort_keys = [];\n //\n // holds the prefix between the start of a group\n // and the closing token.\n this.prefix = new CSL.Stack(\"\", CSL.LITERAL);\n //\n // holds the suffix between the start of a group\n // and the closing token.\n this.suffix = new CSL.Stack(\"\", CSL.LITERAL);\n //\n // holds the group delimiter between the start of a group\n // and the closing token.\n this.delimiter = new CSL.Stack(\"\", CSL.LITERAL);\n //\n // Used for conditional locale switching.\n this.cite_locales = [];\n this.cite_affixes = {\n citation: false, \n bibliography: false,\n citation_sort: false, \n bibliography_sort: false\n };\n this.strip_periods = 0;\n this.shadow_numbers = {};\n this.authority_stop_last = 0;\n this.loadedItemIDs = {};\n //\n // Push/pop array for set/unset of opt.lang setting, used\n // in if locale=\"XX\" to force terms to language of item.\n // @locale tests track their nesting level in a counter,\n // and push the current value of state.opt.lang to one array,\n // and the counter value to another. On the way back up,\n // closing node decrements the counter, compares its value\n // with the trailing value on the array, and pops both\n // arrays, resetting state.opt.lang to the previous value.\n // A hack to solve a surprisingly difficult problem caused\n // by the use of an execution stack for the nested structure.\n this.condition_counter = 0; //incremented/decremented on ALL conditions\n this.condition_lang_val_arr = [];\n this.condition_lang_counter_arr = [];\n};\n\n\nCSL.Engine.Fun = function (state) {\n //\n // matcher\n this.match = new CSL.Util.Match();\n //\n // utility to get standard suffixes for disambiguation\n this.suffixator = new CSL.Util.Suffixator(CSL.SUFFIX_CHARS);\n //\n // utility to romanize a numeric value\n this.romanizer = new CSL.Util.Romanizer();\n //\n // utility to make an ordinal form of a number\n this.ordinalizer = new CSL.Util.Ordinalizer(state);\n //\n // utility to make the long ordinal form of a number, if possible\n this.long_ordinalizer = new CSL.Util.LongOrdinalizer();\n};\n\n\nCSL.Engine.Build = function () {\n // Alternate et-al term\n // Holds the localization key of the alternative term\n // to be used for et-al in a names environment. Reduced\n // to a term object when the element tag is processed during\n // Build.\n this[\"alternate-term\"] = false;\n //\n // flags that we are in the bibliography area.\n // used by sort.\n this.in_bibliography = false;\n //\n // scratch variable to alter behaviour when processing\n // locale files\n this.in_style = false;\n //\n // used to ignore info\n this.skip = false;\n //\n // the macro ATTRIBUTE stores a macro name on this\n // scratch variable anywhere outside the layout area\n // during build. The macro name is picked up when\n // the token is encountered inside the layout area,\n // either through a direct call, or as part of a nested\n // macro expansion, and the macro content is exploded\n // into the token list.\n this.postponed_macro = false;\n //\n // used especially for controlling macro expansion\n // during Build.\n this.layout_flag = false;\n //\n // (was buffer_name)\n // scratch variable to hold the name of a macro\n // or a term until its children have been collected.\n this.name = false;\n this.names_variables = [[]];\n this.name_label = [{}];\n //\n // scratch variable to hold the value of a form\n // attribute until other attributes needed for\n // processing have been collected.\n this.form = false;\n this.term = false;\n //\n // the macros themselves are discarded after Build\n this.macro = {};\n //\n // the macro build stack. used to raise an error\n // when macros would attempt to call themselves.\n this.macro_stack = [];\n //\n // stores the content of an XML text node during processing\n this.text = false;\n //\n // this is a scratch variable for holding an attribute\n // value during processing\n this.lang = false;\n //\n // should be able to run uninitialized; may attract some\n // cruft this way.\n this.area = \"citation\";\n this.root = \"citation\";\n this.extension = \"\";\n //\n // controls the application of implicit conditional wrappers\n // to top-level elements inside a names substitute span.\n // zero by default, build of names tag pushes a\n // new level with value 1. group start tag increments by 1,\n // group end tag decrements by 1. conditional wrappers are\n // only applied if value is exactly 1.\n this.substitute_level = new CSL.Stack(0, CSL.LITERAL);\n this.names_level = 0;\n this.render_nesting_level = 0;\n this.render_seen = false;\n this.bibliography_key_pos = 0;\n};\n\n\nCSL.Engine.Configure = function () {\n //\n // the fail and succeed arrays are used for stack\n // processing during configure.\n this.tests = [];\n this.fail = [];\n this.succeed = [];\n};\n\n\nCSL.Engine.Citation = function (state) {\n // Citation options area.\n // Holds a mixture of persistent and ephemeral\n // options and scratch data used during processing of\n // a citation.</p>\n this.opt = {\n inheritedAttributes: {}\n };\n\n this.tokens = [];\n // Placeholder function\n this.srt = new CSL.Registry.Comparifier(state, \"citation_sort\");\n //\n // configuration array to hold the collapse\n // options, if any.\n this.opt.collapse = [];\n //\n // disambiguate options\n this.opt[\"disambiguate-add-names\"] = false;\n this.opt[\"disambiguate-add-givenname\"] = false;\n this.opt[\"disambiguate-add-year-suffix\"] = false;\n this.opt[\"givenname-disambiguation-rule\"] = \"by-cite\";\n this.opt[\"near-note-distance\"] = 5;\n\n this.opt.topdecor = [];\n this.opt.layout_decorations = [];\n this.opt.layout_prefix = \"\";\n this.opt.layout_suffix = \"\";\n this.opt.layout_delimiter = \"\";\n //\n // sorting\n this.opt.sort_locales = [];\n this.opt.max_number_of_names = 0;\n this.root = \"citation\";\n};\n\n\nCSL.Engine.Bibliography = function () {\n this.opt = {\n inheritedAttributes: {}\n };\n this.tokens = [];\n\n this.opt.collapse = [];\n\n this.opt.topdecor = [];\n this.opt.layout_decorations = [];\n this.opt.layout_prefix = \"\";\n this.opt.layout_suffix = \"\";\n this.opt.layout_delimiter = \"\";\n this.opt[\"line-spacing\"] = 1;\n this.opt[\"entry-spacing\"] = 1;\n //\n // sorting\n this.opt.sort_locales = [];\n this.opt.max_number_of_names = 0;\n this.root = \"bibliography\";\n};\n\n\nCSL.Engine.BibliographySort = function () {\n this.tokens = [];\n this.opt = {};\n this.opt.sort_directions = [];\n this.opt.topdecor = [];\n // Holds the final citation-number sort direction, for use\n // in applying numbers in cs:citation and cs:bibliography.\n // Value is exclusively controlled by cs:key in bibliography_sort\n this.opt.citation_number_sort_direction = CSL.ASCENDING;\n this.opt.citation_number_secondary = false;\n this.tmp = {};\n this.keys = [];\n this.root = \"bibliography\";\n};\n\n\nCSL.Engine.CitationSort = function () {\n this.tokens = [];\n this.opt = {};\n this.opt.sort_directions = [];\n this.keys = [];\n this.opt.topdecor = [];\n this.root = \"citation\";\n};\n\nCSL.Engine.InText = function () {\n // InText options area.\n // Holds a mixture of persistent and ephemeral\n // options and scratch data used during processing of\n // a citation.</p>\n this.opt = {\n inheritedAttributes: {}\n };\n\n this.tokens = [];\n // Placeholder function\n //this.srt = new CSL.Registry.Comparifier(state, \"citation_sort\");\n //\n // configuration array to hold the collapse\n // options, if any.\n this.opt.collapse = [];\n //\n // disambiguate options\n this.opt[\"disambiguate-add-names\"] = false;\n this.opt[\"disambiguate-add-givenname\"] = false;\n this.opt[\"disambiguate-add-year-suffix\"] = false;\n this.opt[\"givenname-disambiguation-rule\"] = \"by-cite\";\n this.opt[\"near-note-distance\"] = 5;\n\n this.opt.topdecor = [];\n this.opt.layout_decorations = [];\n this.opt.layout_prefix = \"\";\n this.opt.layout_suffix = \"\";\n this.opt.layout_delimiter = \"\";\n //\n // sorting\n this.opt.sort_locales = [];\n this.opt.max_number_of_names = 0;\n this.root = \"intext\";\n};\n\n/*global CSL: true */\n\nCSL.Engine.prototype.previewCitationCluster = function (citation, citationsPre, citationsPost, newMode) {\n // Generate output for a hypothetical citation at the current position,\n // Leave the registry in the same state in which it was found.\n //print(\"################### previewCitationCluster() #################\");\n var oldMode = this.opt.mode;\n this.setOutputFormat(newMode);\n // Avoids generating unwanted ibids, if the citationID already exists in document\n\tif (citation.citationID) {\n\t\tdelete citation.citationID;\n\t}\n var ret = this.processCitationCluster(citation, citationsPre, citationsPost, CSL.PREVIEW);\n\n this.setOutputFormat(oldMode);\n return ret[1];\n};\n\nCSL.Engine.prototype.appendCitationCluster = function (citation) {\n var citationsPre = [];\n var len = this.registry.citationreg.citationByIndex.length;\n for (var pos = 0; pos < len; pos += 1) {\n var c = this.registry.citationreg.citationByIndex[pos];\n citationsPre.push([\"\" + c.citationID, c.properties.noteIndex]);\n }\n // Drop the data segment to return a list of pos/string pairs.\n return this.processCitationCluster(citation, citationsPre, [])[1];\n};\n\n\nCSL.Engine.prototype.processCitationCluster = function (citation, citationsPre, citationsPost, flag) {\n var c, preCitation, postCitation, i, ilen, j, jlen, k, klen, n, nlen, key, Item, item, noteCitations, textCitations, m, citationsInNote;\n this.debug = false;\n this.tmp.loadedItemIDs = {};\n\n // Revert citation dereference from 2ffc4664ae\n //citation = JSON.parse(JSON.stringify(citation));\n \n //print(\"################### processCitationCluster() #################\");\n this.tmp.citation_errors = [];\n this.registry.return_data = {\"bibchange\": false};\n\n // make sure this citation has a unique ID, and register it in citationById.\n this.setCitationId(citation);\n\n var oldCitationList;\n var oldItemList;\n var oldAmbigs;\n if (flag === CSL.PREVIEW) {\n //SNIP-START\n if (this.debug) {\n CSL.debug(\"****** start state save *********\");\n }\n //SNIP-END\n //\n // Simplify.\n\n // Take a slice of existing citations.\n oldCitationList = this.registry.citationreg.citationByIndex.slice();\n\n // Take a slice of current items, for later use with update.\n oldItemList = this.registry.reflist.slice();\n\n // Make a list of preview citation ref objects. Omit the current\n // citation, because it will not exist in registry if: (a) this is\n // a new citation; or (b) the calling application is assigning\n // new citationIDs for every transaction.\n var newCitationList = citationsPre.concat(citationsPost);\n\n // Make a full list of desired ids, for use in preview update,\n // and a hash list of same while we're at it.\n // First step through known citations, then step through\n // the items in the citation for preview.\n var newItemIds = {};\n var newItemIdsList = [];\n for (var i = 0, ilen = newCitationList.length; i < ilen; i += 1) {\n c = this.registry.citationreg.citationById[newCitationList[i][0]];\n for (j = 0, jlen = c.citationItems.length; j < jlen; j += 1) {\n newItemIds[c.citationItems[j].id] = true;\n newItemIdsList.push(\"\" + c.citationItems[j].id);\n }\n }\n for (j = 0, jlen = citation.citationItems.length; j < jlen; j += 1) {\n newItemIds[citation.citationItems[j].id] = true;\n newItemIdsList.push(\"\" + citation.citationItems[j].id);\n }\n\n // Clone and save off disambigs of items that will be lost.\n oldAmbigs = {};\n for (var i = 0, ilen = oldItemList.length; i < ilen; i += 1) {\n if (!newItemIds[oldItemList[i].id]) {\n var oldAkey = this.registry.registry[oldItemList[i].id].ambig;\n var ids = this.registry.ambigcites[oldAkey];\n if (ids) {\n for (j = 0, jlen = ids.length; j < jlen; j += 1) {\n oldAmbigs[ids[j]] = CSL.cloneAmbigConfig(this.registry.registry[ids[j]].disambig);\n }\n }\n }\n }\n\n // Update items. This will produce the base name data and sort things.\n // Possibly unnecessary?\n //this.updateItems(this.registry.mylist.concat(tmpItems));\n\n //SNIP-START\n if (this.debug) {\n CSL.debug(\"****** end state save *********\");\n }\n //SNIP-END\n }\n\n this.tmp.taintedCitationIDs = {};\n var sortedItems = [];\n\n // Styles that use note backreferencing with a by-cite\n // givenname disambiguation rule include the note number\n // in the cite for disambiguation purposes. Correct resolution\n // of disambiguate=\"true\" conditions on first-reference cites \n // in certain editing scenarios (e.g. where a cite is moved across\n // notes) requires that disambiguation be rerun on cites\n // affected by the edit.\n var rerunAkeys = {};\n\n // retrieve item data and compose items for use in rendering\n // attach pointer to item data to shared copy for good measure\n for (var i = 0, ilen = citation.citationItems.length; i < ilen; i += 1) {\n // Protect against caller-side overwrites to locator strings etc\n item = {};\n for (var key in citation.citationItems[i]) {\n item[key] = citation.citationItems[i][key];\n }\n Item = this.retrieveItem(\"\" + item.id);\n if (Item.id) {\n this.transform.loadAbbreviation(\"default\", \"hereinafter\", Item.id, Item.language);\n }\n item = CSL.parseLocator.call(this, item);\n if (this.opt.development_extensions.consolidate_legal_items) {\n this.remapSectionVariable([[Item,item]]);\n }\n if (this.opt.development_extensions.locator_label_parse) {\n if (item.locator && [\"bill\",\"gazette\",\"legislation\",\"regulation\",\"treaty\"].indexOf(Item.type) === -1 && (!item.label || item.label === 'page')) {\n var m = CSL.LOCATOR_LABELS_REGEXP.exec(item.locator);\n if (m) {\n var tryLabel = CSL.LOCATOR_LABELS_MAP[m[2]];\n if (this.getTerm(tryLabel)) {\n item.label = tryLabel;\n item.locator = m[3];\n }\n }\n }\n }\n var newitem = [Item, item];\n sortedItems.push(newitem);\n citation.citationItems[i].item = Item;\n }\n\n // ZZZ sort stuff moved from here.\n\n // attach the sorted list to the citation item\n citation.sortedItems = sortedItems;\n\n // build reconstituted citations list in current document order\n var citationByIndex = [];\n var citationById = {};\n var lastNotePos;\n for (i=0, ilen=citationsPre.length; i<ilen; i += 1) {\n preCitation = citationsPre[i];\n if (this.opt.development_extensions.strict_inputs) {\n if (citationById[preCitation[0]]) {\n CSL.error(\"Previously referenced citationID \" + preCitation[0] + \" encountered in citationsPre\");\n }\n if (preCitation[1]) {\n if (lastNotePos > preCitation[1]) {\n CSL.debug(\"Note index sequence is not sane at citationsPre[\" + i + \"]\");\n }\n lastNotePos = preCitation[1];\n }\n }\n this.registry.citationreg.citationById[preCitation[0]].properties.noteIndex = preCitation[1];\n citationByIndex.push(this.registry.citationreg.citationById[preCitation[0]]);\n citationById[preCitation[0]] = this.registry.citationreg.citationById[preCitation[0]];\n }\n if (!citation.properties) {\n citation.properties = {\n noteIndex: 0\n };\n }\n if (this.opt.development_extensions.strict_inputs) {\n if (citationById[citation.citationID]) {\n CSL.error(\"Citation with previously referenced citationID \" + citation.citationID);\n }\n if (citation.properties.noteIndex) {\n if (lastNotePos > citation.properties.noteIndex) {\n CSL.debug(\"Note index sequence is not sane for citation \" + citation.citationID);\n }\n lastNotePos = citation.properties.noteIndex;\n }\n }\n citationByIndex.push(citation);\n citationById[citation.citationID] = citation;\n for (i=0, ilen=citationsPost.length; i<ilen; i += 1) {\n postCitation = citationsPost[i];\n if (this.opt.development_extensions.strict_inputs) {\n if (citationById[postCitation[0]]) {\n CSL.error(\"Previously referenced citationID \" + postCitation[0] + \" encountered in citationsPost\");\n }\n if (postCitation[1]) {\n if (lastNotePos > postCitation[1]) {\n CSL.debug(\"Note index sequence is not sane at postCitation[\" + i + \"]\");\n }\n lastNotePos = postCitation[1];\n }\n }\n this.registry.citationreg.citationById[postCitation[0]].properties.noteIndex = postCitation[1];\n citationByIndex.push(this.registry.citationreg.citationById[postCitation[0]]);\n citationById[postCitation[0]] = this.registry.citationreg.citationById[postCitation[0]];\n }\n this.registry.citationreg.citationByIndex = citationByIndex;\n this.registry.citationreg.citationById = citationById;\n\n //\n // The processor provides three facilities to support\n // updates following position reevaluation.\n //\n // (1) The updateItems() function reports tainted ItemIDs\n // to state.tmp.taintedItemIDs.\n //\n // (2) The processor memos the type of style referencing as\n // CSL.NONE, CSL.NUMERIC or CSL.POSITION in state.opt.update_mode.\n //\n // XXXX: NO LONGER\n // (3) For citations containing cites with backreference note numbers,\n // a string image of the rendered citation is held in\n // citation.properties.backref_citation, and a list of\n // ItemIDs to be used to update the backreference note numbers\n // is memoed at citation.properties.backref_index. When such\n // citations change position, they can be updated with a\n // series of simple find and replace operations, without\n // need for rerendering.\n //\n\n //\n // Position evaluation!\n //\n // set positions in reconstituted list, noting taints\n this.registry.citationreg.citationsByItemId = {};\n if (this.opt.update_mode === CSL.POSITION) {\n textCitations = [];\n noteCitations = [];\n citationsInNote = {};\n }\n var update_items = [];\n for (var i = 0, ilen = citationByIndex.length; i < ilen; i += 1) {\n citationByIndex[i].properties.index = i;\n for (j = 0, jlen = citationByIndex[i].sortedItems.length; j < jlen; j += 1) {\n item = citationByIndex[i].sortedItems[j];\n if (!this.registry.citationreg.citationsByItemId[item[1].id]) {\n this.registry.citationreg.citationsByItemId[item[1].id] = [];\n update_items.push(\"\" + item[1].id);\n }\n if (this.registry.citationreg.citationsByItemId[item[1].id].indexOf(citationByIndex[i]) === -1) {\n this.registry.citationreg.citationsByItemId[item[1].id].push(citationByIndex[i]);\n }\n }\n if (this.opt.update_mode === CSL.POSITION) {\n if (citationByIndex[i].properties.noteIndex) {\n noteCitations.push(citationByIndex[i]);\n } else {\n citationByIndex[i].properties.noteIndex = 0;\n textCitations.push(citationByIndex[i]);\n }\n }\n }\n //\n // update bibliography items here\n //\n if (flag !== CSL.ASSUME_ALL_ITEMS_REGISTERED) {\n //SNIP-START\n if (this.debug) {\n CSL.debug(\"****** start update items *********\");\n }\n //SNIP-END\n // true signals implicit updateItems (will not rerun sys.retrieveItem())\n this.updateItems(update_items, null, null, true);\n //SNIP-START\n if (this.debug) {\n CSL.debug(\"****** endo update items *********\");\n }\n //SNIP-END\n }\n\n if (!this.opt.citation_number_sort && sortedItems && sortedItems.length > 1 && this.citation_sort.tokens.length > 0) {\n for (var i = 0, ilen = sortedItems.length; i < ilen; i += 1) {\n sortedItems[i][1].sortkeys = CSL.getSortKeys.call(this, sortedItems[i][0], \"citation_sort\");\n }\n\n /* \n * Grouped sort stuff (start)\n */\n\n if (this.opt.grouped_sort && !citation.properties.unsorted) {\n // Insert authorstring as key.\n for (var i = 0, ilen = sortedItems.length; i < ilen; i += 1) {\n var sortkeys = sortedItems[i][1].sortkeys;\n this.tmp.authorstring_request = true;\n // Run getAmbiguousCite() with the current disambig\n // parameters, and pick up authorstring from the registry.\n var mydisambig = this.registry.registry[sortedItems[i][0].id].disambig;\n \n this.tmp.authorstring_request = true;\n CSL.getAmbiguousCite.call(this, sortedItems[i][0], mydisambig);\n var authorstring = this.registry.authorstrings[sortedItems[i][0].id];\n this.tmp.authorstring_request = false;\n\n sortedItems[i][1].sortkeys = [authorstring].concat(sortkeys);\n }\n\n sortedItems.sort(this.citation.srt.compareCompositeKeys);\n // Replace authorstring key in items with same (authorstring) with the \n // keystring of first normal key. This forces grouped sorts,\n // as discussed here:\n // https://github.com/citation-style-language/schema/issues/40\n var lastauthor = false;\n var thiskey = false;\n var thisauthor = false;\n for (var i = 0, ilen = sortedItems.length; i < ilen; i += 1) {\n if (sortedItems[i][1].sortkeys[0] !== lastauthor) {\n thisauthor = sortedItems[i][1].sortkeys[0];\n thiskey = sortedItems[i][1].sortkeys[1];\n }\n sortedItems[i][1].sortkeys[0] = \"\" + thiskey + i;\n lastauthor = thisauthor;\n }\n }\n /*\n * Grouped sort stuff (end)\n */\n\n if (!citation.properties.unsorted) {\n sortedItems.sort(this.citation.srt.compareCompositeKeys);\n }\n }\n\n // evaluate parallels\n\n if (this.opt.parallel.enable) {\n this.parallel.StartCitation(citation.sortedItems);\n }\n\n var citations;\n if (this.opt.update_mode === CSL.POSITION) {\n for (var i = 0; i < 2; i += 1) {\n var first_ref = {};\n var last_ref = {};\n var first_container_ref = {};\n citations = [textCitations, noteCitations][i];\n for (j = 0, jlen = citations.length; j < jlen; j += 1) {\n var onecitation = citations[j];\n if (!citations[j].properties.noteIndex) {\n citations[j].properties.noteIndex = 0;\n }\n citations[j].properties.noteIndex = parseInt(citations[j].properties.noteIndex, 10);\n if (j > 0 && onecitation.properties.noteIndex && citations[j - 1].properties.noteIndex > onecitation.properties.noteIndex) {\n citationsInNote = {};\n first_ref = {};\n last_ref = {};\n first_container_ref = {};\n }\n for (k = 0, klen = onecitation.sortedItems.length; k < klen; k += 1) {\n if (onecitation.sortedItems[k][1].parallel && onecitation.sortedItems[k][1].parallel !== \"first\") {\n continue;\n }\n if (!citationsInNote[onecitation.properties.noteIndex]) {\n citationsInNote[onecitation.properties.noteIndex] = 1;\n } else {\n citationsInNote[onecitation.properties.noteIndex] += 1;\n }\n }\n // Set the following:\n //\n // (1) position as required (as per current Zotero)\n // (2) first-reference-note-number as required (on onecitation item)\n // (3) near-note as required (on onecitation item, according to\n // state.opt[\"near-note-distance\"] parameter)\n // (4) state.registry.citationreg.citationsByItemId.\n //\n // Any state changes caused by unsetting or resetting should\n // trigger a single entry for the citations in\n // state.tmp.taintedCitationIDs (can block on presence of\n // state.registry.citationreg.citationsByItemId).\n //\n for (k = 0, klen = citations[j].sortedItems.length; k < klen; k += 1) {\n item = citations[j].sortedItems[k];\n // Okay ...\n // We set up three IDs for use in position evaluation.\n // item_id is the real Item.id\n // first_id is the legislation_id or Item.id (so statutes backref to first in set, chapters to specific chapter)\n // last_id is the legislation_id or container_id (so statute AND chapter distance is from any ref in set)\n // (replaces myid)\n var item_id = item[0].id;\n var first_id = item[0].legislation_id ? item[0].legislation_id : item[0].id;\n var last_id = item[0].legislation_id ? item[0].legislation_id : item[0].container_id ? item[0].container_id : item[0].id;\n var myxloc = item[1][\"locator-extra\"];\n var mylocator = item[1].locator;\n var mylabel = item[1].label;\n var incitationid;\n var incitationxloc;\n if (k > 0) {\n // incitationid is only reached in the else branch\n // following \"undefined\" === typeof first_ref[myid]\n // below\n if (onecitation.sortedItems[k - 1][0].legislation_id) {\n incitationid = onecitation.sortedItems[k - 1][0].legislation_id;\n } else {\n incitationid = onecitation.sortedItems[k - 1][1].id;\n incitationxloc = onecitation.sortedItems[k - 1][1][\"locator-extra\"];\n //if (onecitation.sortedItems[k-1][1].parallel === \"last\") {\n for (var l=k-2; l>-1; l--) {\n if (onecitation.sortedItems[l][1].parallel === \"first\") {\n incitationid = onecitation.sortedItems[l][1].id;\n incitationxloc = onecitation.sortedItems[l][1][\"locator-extra\"];\n }\n }\n //}\n }\n }\n // Don't touch item data of other cites when previewing\n if (flag === CSL.PREVIEW) {\n if (onecitation.citationID != citation.citationID) {\n if (\"undefined\" === typeof first_ref[item[1].id]) {\n first_ref[first_id] = onecitation.properties.noteIndex;\n last_ref[last_id] = onecitation.properties.noteIndex;\n } else {\n last_ref[last_id] = onecitation.properties.noteIndex;\n }\n continue;\n }\n }\n var oldvalue = {};\n oldvalue.position = item[1].position;\n oldvalue[\"first-reference-note-number\"] = item[1][\"first-reference-note-number\"];\n oldvalue[\"first-container-reference-note-number\"] = item[1][\"first-container-reference-note-number\"];\n oldvalue[\"near-note\"] = item[1][\"near-note\"];\n item[1][\"first-reference-note-number\"] = 0;\n item[1][\"first-container-reference-note-number\"] = 0;\n item[1][\"near-note\"] = false;\n if (this.registry.citationreg.citationsByItemId[item_id]) {\n if (this.opt.xclass === 'note' && this.opt.has_disambiguate) {\n var oldCount = this.registry.registry[item[0].id][\"citation-count\"];\n var newCount = this.registry.citationreg.citationsByItemId[item_id].length;\n this.registry.registry[item[0].id][\"citation-count\"] = this.registry.citationreg.citationsByItemId[item_id].length;\n if (\"number\" === typeof oldCount) {\n var oldCountCheck = (oldCount < 2);\n var newCountCheck = (newCount < 2);\n if (oldCountCheck !== newCountCheck) {\n for (var l=0,llen=this.registry.citationreg.citationsByItemId[item_id].length;l<llen;l++) {\n rerunAkeys[this.registry.registry[item[0].id].ambig] = true;\n this.tmp.taintedCitationIDs[this.registry.citationreg.citationsByItemId[item_id][l].citationID] = true;\n }\n }\n } else {\n for (var l=0,llen=this.registry.citationreg.citationsByItemId[item_id].length;l<llen;l++) {\n rerunAkeys[this.registry.registry[item[0].id].ambig] = true;\n this.tmp.taintedCitationIDs[this.registry.citationreg.citationsByItemId[item_id][l].citationID] = true;\n }\n }\n }\n }\n var oldlastid;\n var oldlastxloc;\n \n // Okay, chill.\n // The first test needs to be for presence of last_ref[last_id]. Everything\n // after in subsequent evaluation depends on that.\n\n // HOWEVER, despite starting with this test, we need to catch every member\n // of the set, and set its first-container-reference-note-number to point at the\n // first.\n\n // ALSO, despite starting with this test, we need to set first-reference-note-number\n // on every item.\n \n // So ... we run an independent test on first_ref[first_id]], and let this ride.\n \n if (\"undefined\" === typeof last_ref[last_id] && onecitation.properties.mode !== \"author-only\") {\n first_ref[first_id] = onecitation.properties.noteIndex;\n last_ref[last_id] = onecitation.properties.noteIndex;\n first_container_ref[last_id] = onecitation.properties.noteIndex;\n item[1].position = CSL.POSITION_FIRST;\n } else {\n //\n // backward-looking position evaluation happens here.\n //\n //\n //\n var ibidme = false;\n var suprame = false;\n var prevCitation = null;\n if (j > 0) {\n var prevCitation = citations[j-1];\n }\n var thisCitation = citations[j];\n // XXX Ugly, but This is used in the second else-if branch condition below.\n if (j > 0) {\n var old_last_id_offset = 1;\n if (prevCitation.properties.mode === \"author-only\" && j > 1) {\n old_last_id_offset = 2;\n }\n var adjusted_offset = (j - old_last_id_offset);\n if (citations[adjusted_offset].sortedItems.length) {\n oldlastid = citations[adjusted_offset].sortedItems.slice(-1)[0][1].id;\n oldlastxloc = citations[j - old_last_id_offset].sortedItems.slice(-1)[0][1][\"locator-extra\"];\n }\n if (prevCitation.sortedItems.length) {\n if (prevCitation.sortedItems[0].slice(-1)[0].legislation_id) {\n oldlastid = prevCitation.sortedItems[0].slice(-1)[0].legislation_id;\n }\n }\n }\n if (j > 0 && k === 0 && prevCitation.properties.noteIndex !== thisCitation.properties.noteIndex) {\n // Case 1: source in previous onecitation\n // (1) Threshold conditions\n // (a) there must be a previous onecitation with one item\n // (b) this item must be the first in this onecitation\n // (c) the previous onecitation must contain a reference\n // to the same item ...\n // (d) the note numbers must be the same or consecutive.\n // (this has some jiggery-pokery in it for parallels)\n var useme = false;\n // XXX Can oldid be equated with oldlastid, I wonder ...\n var oldid = prevCitation.sortedItems[0][0].id;\n if (prevCitation.sortedItems[0][0].legislation_id) {\n oldid = prevCitation.sortedItems[0][0].legislation_id;\n }\n if ((oldid == first_id && prevCitation.properties.noteIndex >= (thisCitation.properties.noteIndex - 1))) {\n var prevxloc = prevCitation.sortedItems[0][1][\"locator-extra\"];\n var thisxloc = thisCitation.sortedItems[0][1][\"locator-extra\"];\n if ((citationsInNote[prevCitation.properties.noteIndex] === 1 || prevCitation.properties.noteIndex === 0) && prevxloc === thisxloc) {\n useme = true;\n }\n }\n if (useme) {\n ibidme = true;\n } else {\n suprame = true;\n }\n } else if (k > 0 && incitationid == first_id && incitationxloc == myxloc) {\n // Case 2: immediately preceding source in this onecitation\n // (1) Threshold conditions\n // (a) there must be an imediately preceding reference to the\n // same item in this onecitation; and\n ibidme = true;\n } else if (k === 0 && j > 0 && prevCitation.properties.noteIndex == thisCitation.properties.noteIndex\n && prevCitation.sortedItems.length \n && oldlastid == first_id && oldlastxloc == myxloc) {\n // ... in case there are separate citations in the same note ...\n // Case 2 [take 2]: immediately preceding source in this onecitation\n // (1) Threshold conditions\n // (a) there must be an imediately preceding reference to the\n // same item in this onecitation; and\n ibidme = true;\n } else {\n // everything else is definitely subsequent\n suprame = true;\n }\n // conditions\n var prev, prev_locator, prev_label, curr_locator, curr_label;\n if (ibidme) {\n if (k > 0) {\n prev = onecitation.sortedItems[(k - 1)][1];\n } else {\n prev = citations[(j - 1)].sortedItems[0][1];\n }\n if (prev.locator) {\n if (prev.label) {\n prev_label = prev.label;\n } else {\n prev_label = \"\";\n }\n prev_locator = \"\" + prev.locator + prev_label;\n } else {\n prev_locator = prev.locator;\n }\n if (mylocator) {\n if (mylabel) {\n curr_label = mylabel;\n } else {\n curr_label = \"\";\n }\n curr_locator = \"\" + mylocator + curr_label;\n } else {\n curr_locator = mylocator;\n }\n }\n // triage\n if (ibidme && prev_locator && !curr_locator) {\n ibidme = false;\n suprame = true;\n\n }\n if (ibidme) {\n if (!prev_locator && curr_locator) {\n // (a) if the previous onecitation had no locator\n // and this onecitation has one, use ibid+pages\n item[1].position = CSL.POSITION_IBID_WITH_LOCATOR;\n } else if (!prev_locator && !curr_locator) {\n // (b) if the previous onecitation had no locator\n // and this onecitation also has none, use ibid\n item[1].position = CSL.POSITION_IBID;\n //print(\"setting ibid in cmd_cite()\");\n } else if (prev_locator && curr_locator === prev_locator) {\n // (c) if the previous onecitation had a locator\n // (page number, etc.) and this onecitation has\n // a locator that is identical, use ibid\n\n item[1].position = CSL.POSITION_IBID;\n //print(\"setting ibid in cmd_cite() [2]\");\n } else if (prev_locator && curr_locator && curr_locator !== prev_locator) {\n // (d) if the previous onecitation had a locator,\n // and this onecitation has one that differs,\n // use ibid+pages\n item[1].position = CSL.POSITION_IBID_WITH_LOCATOR;\n } else {\n // (e) if the previous onecitation had a locator\n // and this onecitation has none, use subsequent\n //\n // ... and everything else would be subsequent also\n ibidme = false; // just to be clear\n suprame = true;\n }\n }\n if (suprame) {\n item[1].position = CSL.POSITION_CONTAINER_SUBSEQUENT;\n if (\"undefined\" === typeof first_ref[first_id]) {\n first_ref[first_id] = onecitation.properties.noteIndex;\n } else {\n item[1].position = CSL.POSITION_SUBSEQUENT;\n }\n }\n if (suprame || ibidme) {\n if (onecitation.properties.mode === \"author-only\") {\n item[1].position = CSL.POSITION_FIRST;\n }\n if (first_container_ref[last_id] != onecitation.properties.noteIndex) {\n item[1]['first-container-reference-note-number'] = first_container_ref[last_id];\n if (this.registry.registry[item[0].id]) {\n this.registry.registry[item[0].id]['first-container-reference-note-number'] = first_container_ref[last_id];\n }\n }\n if (first_ref[first_id] != onecitation.properties.noteIndex) {\n item[1][\"first-reference-note-number\"] = first_ref[first_id];\n if (this.registry.registry[item[0].id]) {\n // This is either the earliest recorded number, or the number of the current citation, whichever is smaller.\n /*\n var oldFirst = this.registry.citationreg.citationsByItemId[item_id][0].properties.noteIndex;\n var newFirst = onecitation.properties.noteIndex;\n this.registry.registry[item[0].id]['first-reference-note-number'] = newFirst < oldFirst ? newFirst: oldFirst;\n */\n // Try this instead?\n this.registry.registry[item[0].id]['first-reference-note-number'] = first_ref[first_id];\n }\n }\n }\n }\n if (onecitation.properties.noteIndex) {\n var note_distance = parseInt(onecitation.properties.noteIndex, 10) - parseInt(last_ref[last_id], 10);\n if (item[1].position !== CSL.POSITION_FIRST \n && note_distance <= this.citation.opt[\"near-note-distance\"]) {\n item[1][\"near-note\"] = true;\n }\n last_ref[last_id] = onecitation.properties.noteIndex;\n } else if (item[1].position !== CSL.POSITION_FIRST) {\n item[1][\"near-note\"] = true;\n }\n if (onecitation.citationID != citation.citationID) {\n for (n = 0, nlen = CSL.POSITION_TEST_VARS.length; n < nlen; n += 1) {\n var param = CSL.POSITION_TEST_VARS[n];\n if (item[1][param] !== oldvalue[param]) {\n if (this.registry.registry[item[0].id]) {\n if (param === 'first-reference-note-number') {\n rerunAkeys[this.registry.registry[item[0].id].ambig] = true;\n this.tmp.taintedItemIDs[item[0].id] = true;\n }\n }\n this.tmp.taintedCitationIDs[onecitation.citationID] = true;\n }\n }\n }\n if (this.sys.variableWrapper) {\n item[1].index = onecitation.properties.index;\n item[1].noteIndex = onecitation.properties.noteIndex;\n }\n }\n }\n }\n }\n if (this.opt.citation_number_sort && sortedItems && sortedItems.length > 1 && this.citation_sort.tokens.length > 0) {\n if (!citation.properties.unsorted) {\n for (var i = 0, ilen = sortedItems.length; i < ilen; i += 1) {\n sortedItems[i][1].sortkeys = CSL.getSortKeys.call(this, sortedItems[i][0], \"citation_sort\");\n }\n sortedItems.sort(this.citation.srt.compareCompositeKeys);\n }\n }\n for (var key in this.tmp.taintedItemIDs) {\n if (this.tmp.taintedItemIDs.hasOwnProperty(key)) {\n citations = this.registry.citationreg.citationsByItemId[key];\n // Current citation may be tainted but will not exist\n // during previewing.\n if (citations) {\n for (var i = 0, ilen = citations.length; i < ilen; i += 1) {\n this.tmp.taintedCitationIDs[citations[i].citationID] = true;\n }\n }\n }\n }\n\n var ret = [];\n if (flag === CSL.PREVIEW) {\n // If previewing, return only a rendered string\n //SNIP-START\n if (this.debug) {\n CSL.debug(\"****** start run processor *********\");\n }\n //SNIP-END\n try {\n ret = this.process_CitationCluster.call(this, citation.sortedItems, citation);\n } catch (e) {\n CSL.error(\"Error running CSL processor for preview: \"+e);\n }\n \n //SNIP-START\n if (this.debug) {\n CSL.debug(\"****** end run processor *********\");\n CSL.debug(\"****** start state restore *********\");\n }\n //SNIP-END\n // Wind out anything related to new items added for the preview.\n // This means (1) names, (2) disambig state for affected items,\n // (3) keys registered in the ambigs pool arrays, and (4) registry\n // items.\n //\n\n // restore sliced citations\n this.registry.citationreg.citationByIndex = oldCitationList;\n this.registry.citationreg.citationById = {};\n for (var i = 0, ilen = oldCitationList.length; i < ilen; i += 1) {\n this.registry.citationreg.citationById[oldCitationList[i].citationID] = oldCitationList[i];\n }\n\n //SNIP-START\n if (this.debug) {\n CSL.debug(\"****** start final update *********\");\n }\n //SNIP-END\n var oldItemIds = [];\n for (var i = 0, ilen = oldItemList.length; i < ilen; i += 1) {\n oldItemIds.push(\"\" + oldItemList[i].id);\n }\n this.updateItems(oldItemIds, null, null, true);\n //SNIP-START\n if (this.debug) {\n CSL.debug(\"****** end final update *********\");\n }\n //SNIP-END\n // Roll back disambig states\n for (var key in oldAmbigs) {\n if (oldAmbigs.hasOwnProperty(key)) {\n this.registry.registry[key].disambig = oldAmbigs[key];\n }\n }\n //SNIP-START\n if (this.debug) {\n CSL.debug(\"****** end state restore *********\");\n }\n //SNIP-END\n } else {\n // Rerun cites that have moved across citations or had a change\n // in their number of subsequent references, so that disambiguate\n // and subsequent-reference-count conditions are applied\n // correctly in output.\n for (var rerunAkey in rerunAkeys) {\n this.disambiguate.run(rerunAkey, citation);\n }\n // Run taints only if not previewing\n //\n // Push taints to the return object\n //\n var obj;\n for (var key in this.tmp.taintedCitationIDs) {\n if (key == citation.citationID) {\n continue;\n }\n var mycitation = this.registry.citationreg.citationById[key];\n if (!mycitation.properties.unsorted) {\n for (var i = 0, ilen = mycitation.sortedItems.length; i < ilen; i += 1) {\n mycitation.sortedItems[i][1].sortkeys = CSL.getSortKeys.call(this, mycitation.sortedItems[i][0], \"citation_sort\");\n }\n mycitation.sortedItems.sort(this.citation.srt.compareCompositeKeys);\n }\n // For error reporting\n this.tmp.citation_pos = mycitation.properties.index;\n this.tmp.citation_note_index = mycitation.properties.noteIndex;\n this.tmp.citation_id = \"\" + mycitation.citationID;\n obj = [];\n obj.push(mycitation.properties.index);\n obj.push(this.process_CitationCluster.call(this, mycitation.sortedItems, mycitation));\n obj.push(mycitation.citationID);\n ret.push(obj);\n }\n this.tmp.taintedItemIDs = {};\n this.tmp.taintedCitationIDs = {};\n\n // For error reporting again\n this.tmp.citation_pos = citation.properties.index;\n this.tmp.citation_note_index = citation.properties.noteIndex;\n this.tmp.citation_id = \"\" + citation.citationID;\n\n obj = [];\n obj.push(citationsPre.length);\n obj.push(this.process_CitationCluster.call(this, sortedItems, citation));\n obj.push(citation.citationID);\n ret.push(obj);\n //\n // note for posterity: Rhino and Spidermonkey produce different\n // sort results for items with matching keys. That discrepancy\n // turned up a subtle bug in the parallel detection code, trapped\n // at line 266, above, and in line 94 of util_parallel.js.\n //\n ret.sort(function (a, b) {\n if (a[0] > b[0]) {\n return 1;\n } else if (a[0] < b[0]) {\n return -1;\n } else {\n return 0;\n }\n });\n //\n // In normal rendering, return is a list of two-part arrays, with the first element\n // a citation index number, and the second the text to be inserted.\n //\n }\n this.registry.return_data.citation_errors = this.tmp.citation_errors.slice();\n return [this.registry.return_data, ret];\n};\n\nCSL.Engine.prototype.process_CitationCluster = function (sortedItems, citation) {\n var str = \"\";\n if (citation && citation.properties && citation.properties.mode === \"composite\") {\n citation.properties.mode = \"author-only\";\n var firstChunk = CSL.getCitationCluster.call(this, sortedItems, citation);\n citation.properties.mode = \"suppress-author\";\n var secondChunk = \"\";\n if (citation.properties.infix) {\n this.output.append(citation.properties.infix);\n secondChunk = this.output.string(this, this.output.queue);\n // Had no idea this could return a single-element array! Go figure.\n if (\"object\" === typeof secondChunk) {\n secondChunk = secondChunk.join(\"\");\n }\n }\n var thirdChunk = CSL.getCitationCluster.call(this, sortedItems, citation);\n citation.properties.mode = \"composite\";\n if (firstChunk && secondChunk && CSL.SWAPPING_PUNCTUATION.concat([\"\\u2019\", \"\\'\"]).indexOf(secondChunk[0]) > -1) {\n firstChunk += secondChunk;\n secondChunk = false;\n }\n str = [firstChunk, secondChunk, thirdChunk].filter(function(obj) {\n return obj;\n }).join(\" \");\n } else {\n str = CSL.getCitationCluster.call(this, sortedItems, citation);\n }\n return str;\n};\n\nCSL.Engine.prototype.makeCitationCluster = function (rawList) {\n var inputList, newitem, str, pos, len, item, Item;\n inputList = [];\n len = rawList.length;\n for (pos = 0; pos < len; pos += 1) {\n item = {};\n for (var key in rawList[pos]) {\n item[key] = rawList[pos][key];\n }\n Item = this.retrieveItem(\"\" + item.id);\n // Code block is copied from processCitationCluster() above\n if (this.opt.development_extensions.locator_label_parse) {\n if (item.locator && [\"bill\",\"gazette\",\"legislation\",\"regulation\",\"treaty\"].indexOf(Item.type) === -1 && (!item.label || item.label === 'page')) {\n var m = CSL.LOCATOR_LABELS_REGEXP.exec(item.locator);\n if (m) {\n var tryLabel = CSL.LOCATOR_LABELS_MAP[m[2]];\n if (this.getTerm(tryLabel)) {\n item.label = tryLabel;\n item.locator = m[3];\n }\n }\n }\n }\n if (item.locator) {\n item.locator = (\"\" + item.locator).replace(/\\s+$/, '');\n }\n newitem = [Item, item];\n inputList.push(newitem);\n }\n if (this.opt.development_extensions.consolidate_legal_items) {\n this.remapSectionVariable(inputList);\n }\n if (inputList && inputList.length > 1 && this.citation_sort.tokens.length > 0) {\n len = inputList.length;\n for (pos = 0; pos < len; pos += 1) {\n inputList[pos][1].sortkeys = CSL.getSortKeys.call(this, inputList[pos][0], \"citation_sort\");\n }\n inputList.sort(this.citation.srt.compareCompositeKeys);\n }\n this.tmp.citation_errors = [];\n var str = CSL.getCitationCluster.call(this, inputList);\n return str;\n};\n\n\n/**\n * Get the undisambiguated version of a cite, without decorations\n * <p>This is used internally by the Registry.</p>\n *\n * [object] CSL Item\n * [object] disambiguation parameters\n * [boolean] If true, include first-reference-note-number value in cite\n */\nCSL.getAmbiguousCite = function (Item, disambig, visualForm, item) {\n var ret;\n var flags = this.tmp.group_context.tip;\n var oldTermSiblingLayer = {\n term_intended: flags.term_intended,\n variable_attempt: flags.variable_attempt,\n variable_success: flags.variable_success,\n output_tip: flags.output_tip,\n label_form: flags.label_form,\n non_parallel: flags.non_parallel,\n parallel_last: flags.parallel_last,\n parallel_first: flags.parallel_first,\n parallel_last_override: flags.parallel_last_override,\n parallel_delimiter_override: flags.parallel_delimiter_override,\n parallel_delimiter_override_on_suppress: flags.parallel_delimiter_override_on_suppress,\n condition: flags.condition,\n force_suppress: flags.force_suppress,\n done_vars: flags.done_vars.slice()\n };\n if (disambig) {\n this.tmp.disambig_request = disambig;\n } else {\n this.tmp.disambig_request = false;\n }\n var itemSupp = {\n position: CSL.POSITION_SUBSEQUENT,\n \"near-note\": true\n };\n\n if (item) {\n itemSupp.locator = item.locator;\n itemSupp.label = item.label;\n }\n\n if (this.registry.registry[Item.id] \n && this.registry.citationreg.citationsByItemId\n && this.registry.citationreg.citationsByItemId[Item.id]\n && this.registry.citationreg.citationsByItemId[Item.id].length \n && visualForm) {\n if (this.citation.opt[\"givenname-disambiguation-rule\"] === \"by-cite\") {\n itemSupp['first-reference-note-number'] = this.registry.registry[Item.id]['first-reference-note-number'];\n }\n }\n this.tmp.area = \"citation\";\n this.tmp.root = \"citation\";\n var origSuppressDecorations = this.tmp.suppress_decorations;\n this.tmp.suppress_decorations = true;\n this.tmp.just_looking = true;\n\n CSL.getCite.call(this, Item, itemSupp, null, false);\n // !!!\n for (var i=0,ilen=this.output.queue.length;i<ilen;i+=1) {\n CSL.Output.Queue.purgeEmptyBlobs(this.output.queue[i]);\n }\n if (this.opt.development_extensions.clean_up_csl_flaws) {\n for (var j=0,jlen=this.output.queue.length;j<jlen;j+=1) {\n this.output.adjust.upward(this.output.queue[j]);\n this.output.adjust.leftward(this.output.queue[j]);\n this.output.adjust.downward(this.output.queue[j]);\n this.output.adjust.fix(this.output.queue[j]);\n }\n }\n var ret = this.output.string(this, this.output.queue);\n this.tmp.just_looking = false;\n this.tmp.suppress_decorations = origSuppressDecorations;\n // Cache the result.\n this.tmp.group_context.replace(oldTermSiblingLayer);\n return ret;\n};\n\n/**\n * Return delimiter for use in join\n * <p>Splice evaluation is done during cite\n * rendering, and this method returns the\n * result. Evaluation requires three items\n * of information from the preceding cite, if\n * one is present: the names used; the years\n * used; and the suffix appended to the\n * citation. These details are copied into\n * the state object before processing begins,\n * and are cleared by the processor on\n * completion of the run.</p>\n */\n\nCSL.getSpliceDelimiter = function (last_locator, last_collapsed, pos) {\n //print(pos + \" after-collapse-delimiter=\"+this.citation.opt[\"after-collapse-delimiter\"] + \"\\n cite_group_delimiter=\" + this.tmp.use_cite_group_delimiter + \"\\n last_collapsed=\" +last_collapsed + \"\\n have_collapsed=\" +this.tmp.have_collapsed + \"\\n last_locator=\" + last_locator)\n if (undefined !== this.citation.opt[\"after-collapse-delimiter\"]) {\n if (last_locator) {\n this.tmp.splice_delimiter = this.citation.opt[\"after-collapse-delimiter\"];\n } else if (last_collapsed && !this.tmp.have_collapsed) {\n this.tmp.splice_delimiter = this.citation.opt[\"after-collapse-delimiter\"];\n } else if (!last_collapsed && !this.tmp.have_collapsed && this.citation.opt.collapse !== \"year-suffix\") {\n this.tmp.splice_delimiter = this.citation.opt[\"after-collapse-delimiter\"];\n } else {\n this.tmp.splice_delimiter = this.citation.opt.layout_delimiter;\n }\n } else if (this.tmp.use_cite_group_delimiter) {\n this.tmp.splice_delimiter = this.citation.opt.cite_group_delimiter;\n } else {\n if (this.tmp.have_collapsed && this.opt.xclass === \"in-text\" && this.opt.update_mode !== CSL.NUMERIC) {\n this.tmp.splice_delimiter = \", \";\n } else if (this.tmp.cite_locales[pos - 1]) {\n //\n // Must have a value to take effect. Use zero width space to force empty delimiter.\n var alt_affixes = this.tmp.cite_affixes[this.tmp.area][this.tmp.cite_locales[pos - 1]];\n if (alt_affixes && alt_affixes.delimiter) {\n this.tmp.splice_delimiter = alt_affixes.delimiter;\n }\n } else if (!this.tmp.splice_delimiter) {\n // This happens when no delimiter is set on cs:layout under cs:citation\n this.tmp.splice_delimiter = \"\";\n }\n }\n\n/*\n if (last_locator && \"string\" === typeof this.citation.opt[\"after-collapse-delimiter\"]) {\n this.tmp.splice_delimiter = this.citation.opt[\"after-collapse-delimiter\"];\n } else if (last_collapsed && !this.tmp.have_collapsed && \"string\" === typeof this.citation.opt[\"after-collapse-delimiter\"]) {\n this.tmp.splice_delimiter = this.citation.opt[\"after-collapse-delimiter\"];\n } else if (!last_collapsed && !this.tmp.have_collapsed && \"string\" === typeof this.citation.opt[\"after-collapse-delimiter\"] && !this.citation.opt.collapse === \"year-suffix\") {\n this.tmp.splice_delimiter = this.citation.opt[\"after-collapse-delimiter\"];\n } else if (this.tmp.use_cite_group_delimiter) {\n this.tmp.splice_delimiter = this.citation.opt.cite_group_delimiter;\n } else if (this.tmp.have_collapsed && this.opt.xclass === \"in-text\" && this.opt.update_mode !== CSL.NUMERIC) {\n this.tmp.splice_delimiter = \", \";\n } else if (this.tmp.cite_locales[pos - 1]) {\n //\n // Must have a value to take effect. Use zero width space to force empty delimiter.\n var alt_affixes = this.tmp.cite_affixes[this.tmp.area][this.tmp.cite_locales[pos - 1]];\n if (alt_affixes && alt_affixes.delimiter) {\n this.tmp.splice_delimiter = alt_affixes.delimiter;\n }\n } else if (!this.tmp.splice_delimiter) {\n // This happens when no delimiter is set on cs:layout under cs:citation\n this.tmp.splice_delimiter = \"\";\n }\n*/\n // Paranoia\n //if (!this.tmp.splice_delimiter) {\n // this.tmp.splice_delimiter = \"\";\n //}\n return this.tmp.splice_delimiter;\n};\n\n/*\n * Compose individual cites into a single string, with\n * flexible inter-cite splicing.\n */\nCSL.getCitationCluster = function (inputList, citation) {\n var result, objects, myparams, len, pos, item, last_collapsed, params, empties, composite, compie, myblobs, Item, llen, ppos, obj, preceding_item, txt_esc, error_object, citationID, authorOnly, suppressAuthor;\n var citation_prefix = \"\";\n this.output.checkNestedBrace = new CSL.checkNestedBrace(this);\n if (citation) {\n citationID = citation.citationID;\n authorOnly = citation.properties.mode === \"author-only\" ? !!citation.properties.mode : false;\n if (this.opt.xclass !== \"note\") {\n suppressAuthor = citation.properties.mode === \"suppress-author\" ? !!citation.properties.mode : false;\n }\n if (citation.properties.prefix) {\n citation_prefix = CSL.checkPrefixSpaceAppend(this, citation.properties.prefix);\n }\n }\n inputList = inputList ? inputList : [];\n this.tmp.last_primary_names_string = false;\n txt_esc = CSL.getSafeEscape(this);\n this.tmp.area = \"citation\";\n this.tmp.root = \"citation\";\n result = \"\";\n objects = [];\n this.tmp.last_suffix_used = \"\";\n this.tmp.last_names_used = [];\n this.tmp.last_years_used = [];\n this.tmp.backref_index = [];\n this.tmp.cite_locales = [];\n if (!this.tmp.just_looking) {\n this.tmp.abbrev_trimmer = {\n QUASHES: {}\n };\n }\n\n var use_layout_prefix = this.output.checkNestedBrace.update(this.citation.opt.layout_prefix + citation_prefix);\n //var use_layout_prefix = this.citation.opt.layout_prefix;\n\n var suppressTrailingPunctuation = false;\n if (this.citation.opt.suppressTrailingPunctuation) {\n suppressTrailingPunctuation = true;\n }\n if (citationID) {\n //this.registry.citationreg.citationById[citationID].properties.backref_index = false;\n //this.registry.citationreg.citationById[citationID].properties.backref_citation = false;\n if (this.registry.citationreg.citationById[citationID].properties[\"suppress-trailing-punctuation\"]) {\n suppressTrailingPunctuation = true;\n }\n }\n\n // Adjust locator positions if that looks like a sensible thing to do.\n if (this.opt.xclass === \"note\") {\n var parasets = [];\n var lastTitle = false;\n var lastPosition = false;\n var lastID = false;\n var lst = [];\n for (var i=0, ilen = inputList.length; i < ilen; i += 1) {\n var type = inputList[i][0].type;\n var title = inputList[i][0].title;\n var position = inputList[i][1].position;\n var id = inputList[i][0].id;\n if (title && type === \"legal_case\" && id !== lastID && position) {\n // Start a fresh sublist if the item title does not match the last one\n if (title !== lastTitle || parasets.length === 0) {\n lst = [];\n parasets.push(lst);\n }\n lst.push(inputList[i][1]);\n }\n lastTitle = title;\n lastPosition = position;\n lastID = id;\n }\n // We now have a list of sublists, each w/matching titles\n for (i=0, ilen=parasets.length; i < ilen; i += 1) {\n lst = parasets[i];\n if (lst.length < 2) {\n continue;\n }\n // Get the locator in last position, but only if it's the only one in the set.\n var locatorInLastPosition = lst.slice(-1)[0].locator;\n if (locatorInLastPosition) {\n for (var j=0, jlen=lst.length - 1; j < jlen; j += 1) {\n if (lst[j].locator) {\n locatorInLastPosition = false;\n }\n }\n }\n // move the locator here, if it's called for.\n if (locatorInLastPosition) {\n lst[0].locator = locatorInLastPosition;\n delete lst.slice(-1)[0].locator;\n lst[0].label = lst.slice(-1)[0].label;\n if (lst.slice(-1)[0].label) {\n delete lst.slice(-1)[0].label;\n }\n }\n }\n }\n myparams = [];\n len = inputList.length;\n if (inputList[0] && inputList[0][1]) {\n if (authorOnly) {\n delete inputList[0][1][\"suppress-author\"];\n inputList[0][1][\"author-only\"] = true;\n } else if (suppressAuthor) {\n delete inputList[0][1][\"author-only\"];\n inputList[0][1][\"suppress-author\"] = true;\n }\n }\n if (this.opt.parallel.enable) {\n this.parallel.StartCitation(inputList);\n }\n for (pos = 0; pos < len; pos += 1) {\n\n // Also for parallels only\n this.tmp.cite_index = pos;\n\n Item = inputList[pos][0];\n item = inputList[pos][1];\n item = CSL.parseLocator.call(this, item);\n last_collapsed = this.tmp.have_collapsed;\n var last_locator = false;\n if (pos > 0 && inputList[pos-1][1]) {\n last_locator = !!inputList[pos-1][1].locator;\n }\n params = {};\n \n // Reset shadow_numbers here, suppress reset in getCite()\n this.tmp.shadow_numbers = {};\n if (!this.tmp.just_looking && this.opt.hasPlaceholderTerm) {\n var output = this.output;\n this.output = new CSL.Output.Queue(this);\n this.output.adjust = new CSL.Output.Queue.adjust();\n CSL.getAmbiguousCite.call(this, Item, null, false, item);\n this.output = output;\n }\n\n this.tmp.in_cite_predecessor = false;\n // true is to block reset of shadow numbers\n \n \n if (pos > 0) {\n CSL.getCite.call(this, Item, item, \"\" + inputList[(pos - 1)][0].id, true);\n } else {\n this.tmp.term_predecessor = false;\n CSL.getCite.call(this, Item, item, null, true);\n }\n\n // Make a note of any errors\n if (!this.tmp.cite_renders_content) {\n error_object = {\n citationID: \"\" + this.tmp.citation_id,\n index: this.tmp.citation_pos,\n noteIndex: this.tmp.citation_note_index,\n itemID: \"\" + Item.id,\n citationItems_pos: pos,\n error_code: CSL.ERROR_NO_RENDERED_FORM\n };\n this.tmp.citation_errors.push(error_object);\n }\n params.splice_delimiter = CSL.getSpliceDelimiter.call(this, last_locator, last_collapsed, pos);\n // XXX This appears to be superfluous.\n if (item && item[\"author-only\"]) {\n this.tmp.suppress_decorations = true;\n }\n\n if (pos > 0) {\n preceding_item = inputList[pos - 1][1];\n\n // XXX OR if preceding suffix is empty, and the current prefix begins with a full stop.\n\n var precedingEndsInPeriodOrComma = preceding_item.suffix && [\";\", \".\", \",\"].indexOf(preceding_item.suffix.slice(-1)) > -1;\n var currentStartsWithPeriodOrComma = !preceding_item.suffix && item.prefix && [\";\", \".\", \",\"].indexOf(item.prefix.slice(0, 1)) > -1;\n if (precedingEndsInPeriodOrComma || currentStartsWithPeriodOrComma) {\n var spaceidx = params.splice_delimiter.indexOf(\" \");\n if (spaceidx > -1 && !currentStartsWithPeriodOrComma) {\n params.splice_delimiter = params.splice_delimiter.slice(spaceidx);\n } else {\n params.splice_delimiter = \"\";\n }\n }\n }\n params.suppress_decorations = this.tmp.suppress_decorations;\n params.have_collapsed = this.tmp.have_collapsed;\n //\n // XXXXX: capture parameters to an array, which\n // will be of the same length as this.output.queue,\n // corresponding to each element.\n //\n myparams.push(params);\n if (item[\"author-only\"]) {\n break;\n }\n }\n //\n // output.queue is a simple array. do a slice\n // of it to get each cite item, setting params from\n // the array that was built in the preceding loop.\n //\n empties = 0;\n myblobs = this.output.queue.slice();\n\n var citation_suffix = \"\";\n if (citation) {\n citation_suffix = CSL.checkSuffixSpacePrepend(this, citation.properties.suffix);\n }\n var suffix = this.citation.opt.layout_suffix;\n var last_locale = this.tmp.cite_locales[this.tmp.cite_locales.length - 1];\n //\n // Must have a value to take effect. Use zero width space to force empty suffix.\n if (last_locale && this.tmp.cite_affixes[this.tmp.area][last_locale] && this.tmp.cite_affixes[this.tmp.area][last_locale].suffix) {\n suffix = this.tmp.cite_affixes[this.tmp.area][last_locale].suffix;\n }\n if (CSL.TERMINAL_PUNCTUATION.slice(0, -1).indexOf(suffix.slice(0, 1)) > -1) {\n suffix = suffix.slice(0, 1);\n }\n //print(\"=== FROM CITE ===\");\n suffix = this.output.checkNestedBrace.update(citation_suffix + suffix);\n\n\n for (var i=0,ilen=this.output.queue.length;i<ilen;i+=1) {\n CSL.Output.Queue.purgeEmptyBlobs(this.output.queue[i]);\n }\n if (!this.tmp.suppress_decorations && this.output.queue.length) {\n if (!(this.opt.development_extensions.apply_citation_wrapper\n && this.sys.wrapCitationEntry\n && !this.tmp.just_looking\n && this.tmp.area === \"citation\")) { \n\n if (!suppressTrailingPunctuation) {\n this.output.queue[this.output.queue.length - 1].strings.suffix = suffix;\n }\n this.output.queue[0].strings.prefix = use_layout_prefix;\n }\n }\n if (this.opt.development_extensions.clean_up_csl_flaws) {\n for (var j=0,jlen=this.output.queue.length;j<jlen;j+=1) {\n //print(\"OUTPUT[5]: \"+JSON.stringify(this.output.queue[j],['strings','prefix','suffix','delimiter','blobs','decorations'],2))\n this.output.adjust.upward(this.output.queue[j]);\n //print(\"OUTPUT[4]: \"+JSON.stringify(this.output.queue[j],['strings','prefix','suffix','delimiter','blobs','decorations'],2))\n this.output.adjust.leftward(this.output.queue[j]);\n //print(\"OUTPUT[3]: \"+JSON.stringify(this.output.queue[j],['strings','prefix','suffix','delimiter','blobs','decorations'],2))\n this.output.adjust.downward(this.output.queue[j]);\n //print(\"OUTPUT[2]: \"+JSON.stringify(this.output.queue[j],['strings','prefix','suffix','delimiter','blobs','decorations'],2))\n this.tmp.last_chr = this.output.adjust.fix(this.output.queue[j]);\n //print(\"OUTPUT[1]: \"+JSON.stringify(this.output.queue[j],['strings','prefix','suffix','delimiter','blobs','decorations','num'],2))\n }\n }\n //print(\"this.tmp.last_chr=\"+this.tmp.last_chr);\n for (pos = 0, len = myblobs.length; pos < len; pos += 1) {\n var buffer = [];\n this.output.queue = [myblobs[pos]];\n this.tmp.suppress_decorations = myparams[pos].suppress_decorations;\n this.tmp.splice_delimiter = myparams[pos].splice_delimiter;\n //\n // oh, one last second thought on delimiters ...\n //\n\n if (myblobs[pos].parallel_delimiter) {\n this.tmp.splice_delimiter = myblobs[pos].parallel_delimiter;\n }\n this.tmp.have_collapsed = myparams[pos].have_collapsed;\n\n composite = this.output.string(this, this.output.queue);\n\n this.tmp.suppress_decorations = false;\n // meaningless assignment\n // this.tmp.handle_ranges = false;\n if (\"string\" === typeof composite) {\n this.tmp.suppress_decorations = false;\n if (!composite) {\n if (this.opt.development_extensions.throw_on_empty) {\n CSL.error(\"Citation would render no content\");\n } else {\n composite = \"[NO_PRINTED_FORM]\";\n }\n }\n return composite;\n }\n if (\"object\" === typeof composite && composite.length === 0 && !item[\"suppress-author\"]) {\n if (pos === 0) {\n var errStr = \"[CSL STYLE ERROR: reference with no printed form.]\";\n var preStr = pos === 0 ? txt_esc(this.citation.opt.layout_prefix) : \"\";\n var sufStr = pos === (myblobs.length - 1) ? txt_esc(this.citation.opt.layout_suffix) : \"\";\n composite.push(preStr + errStr + sufStr);\n } else if (pos === myblobs.length - 1) {\n var tmpobj = objects[objects.length - 1];\n if (typeof tmpobj === \"string\") {\n objects[objects.length -1] += (txt_esc(this.citation.opt.layout_suffix));\n } else if (typeof tmpobj === \"object\") {\n tmpobj.strings.suffix += (txt_esc(this.citation.opt.layout_suffix));\n }\n }\n }\n if (buffer.length && \"string\" === typeof composite[0]) {\n composite.reverse();\n var tmpstr = composite.pop();\n if (tmpstr && tmpstr.slice(0, 1) === \",\") {\n buffer.push(tmpstr);\n } else if (\"string\" == typeof buffer.slice(-1)[0] && buffer.slice(-1)[0].slice(-1) === \",\") {\n buffer.push(\" \" + tmpstr);\n } else if (tmpstr) {\n buffer.push(txt_esc(this.tmp.splice_delimiter) + tmpstr);\n }\n } else {\n composite.reverse();\n compie = composite.pop();\n if (\"undefined\" !== typeof compie) {\n if (buffer.length && \"string\" === typeof buffer[buffer.length - 1]) {\n buffer[buffer.length - 1] += compie.successor_prefix;\n }\n buffer.push(compie);\n }\n }\n // Seems odd, but this was unnecessary and broken.\n //composite.reverse();\n llen = composite.length;\n for (ppos = 0; ppos < llen; ppos += 1) {\n obj = composite[ppos];\n if (\"string\" === typeof obj) {\n buffer.push(txt_esc(this.tmp.splice_delimiter) + obj);\n continue;\n }\n compie = composite.pop();\n if (\"undefined\" !== typeof compie) {\n buffer.push(compie);\n }\n }\n if (buffer.length === 0 && !inputList[pos][1][\"suppress-author\"]) {\n empties += 1;\n }\n if (buffer.length > 1 && typeof buffer[0] !== \"string\") {\n buffer = [this.output.renderBlobs(buffer)];\n }\n if (buffer.length) {\n if (\"string\" === typeof buffer[0]) {\n if (pos > 0) {\n buffer[0] = txt_esc(this.tmp.splice_delimiter) + buffer[0];\n }\n } else {\n if (pos > 0) {\n buffer[0].splice_prefix = this.tmp.splice_delimiter;\n } else {\n buffer[0].splice_prefix = \"\";\n }\n }\n }\n objects = objects.concat(buffer);\n }\n // print(\"OBJECTS=\"+objects);\n result += this.output.renderBlobs(objects);\n\n if (result) {\n //if (CSL.TERMINAL_PUNCTUATION.indexOf(this.tmp.last_chr) > -1 \n // && this.tmp.last_chr === use_layout_suffix.slice(0, 1)) {\n // use_layout_suffix = use_layout_suffix.slice(1);\n //}\n if (!this.tmp.suppress_decorations) {\n len = this.citation.opt.layout_decorations.length;\n for (pos = 0; pos < len; pos += 1) {\n params = this.citation.opt.layout_decorations[pos];\n // The \"normal\" formats in some output modes expect\n // a superior nested decoration environment, and\n // so should produce no output here.\n if (params[1] === \"normal\") {\n continue;\n }\n if (!item || !item[\"author-only\"]) {\n result = this.fun.decorate[params[0]][params[1]](this, result);\n }\n }\n }\n }\n this.tmp.suppress_decorations = false;\n if (!result) {\n if (this.opt.development_extensions.throw_on_empty) {\n CSL.error(\"Citation would render no content\");\n } else {\n result = \"[NO_PRINTED_FORM]\"\n }\n }\n return result;\n};\n\n/*\n * Render a single cite item.\n *\n * This is called on the state object, with a single\n * Item as input. It iterates exactly once over the style\n * citation tokens, and leaves the result of rendering in\n * the top-level list in the relevant *.opt.output\n * stack, as a list item consisting of a single string.\n *\n * (This is dual-purposed for generating individual\n * entries in a bibliography.)\n */\nCSL.getCite = function (Item, item, prevItemID, blockShadowNumberReset) {\n var next, error_object;\n var areaOrig = this.tmp.area;\n if (item && item[\"author-only\"] && this.intext && this.intext.tokens.length > 0) {\n this.tmp.area = \"intext\";\n }\n this.tmp.cite_renders_content = false;\n this.tmp.probably_rendered_something = false;\n this.tmp.prevItemID = prevItemID;\n\n CSL.citeStart.call(this, Item, item, blockShadowNumberReset);\n next = 0;\n this.tmp.name_node = {};\n this.nameOutput = new CSL.NameOutput(this, Item, item);\n\n // rerun?\n while (next < this[this.tmp.area].tokens.length) {\n next = CSL.tokenExec.call(this, this[this.tmp.area].tokens[next], Item, item);\n }\n\n CSL.citeEnd.call(this, Item, item);\n // Odd place for this, but it seems to fit here\n if (!this.tmp.cite_renders_content && !this.tmp.just_looking) {\n if (this.tmp.area === \"bibliography\") {\n error_object = {\n index: this.tmp.bibliography_pos,\n itemID: \"\" + Item.id,\n error_code: CSL.ERROR_NO_RENDERED_FORM\n };\n this.tmp.bibliography_errors.push(error_object);\n }\n }\n this.tmp.area = areaOrig;\n return \"\" + Item.id;\n};\n\n\nCSL.citeStart = function (Item, item, blockShadowNumberReset) {\n this.tmp.lang_array = [];\n if (Item.language) {\n // Guard against garbage locales in user input\n var m = Item.language.match(/^([a-zA-Z]+).*/);\n if (m) {\n this.tmp.lang_array.push(m[1].toLowerCase());\n }\n }\n this.tmp.lang_array.push(this.opt.lang);\n if (!blockShadowNumberReset) {\n this.tmp.shadow_numbers = {};\n }\n \n this.tmp.disambiguate_count = 0;\n this.tmp.disambiguate_maxMax = 0;\n this.tmp.same_author_as_previous_cite = false;\n if (!this.tmp.suppress_decorations) {\n this.tmp.subsequent_author_substitute_ok = true;\n } else {\n this.tmp.subsequent_author_substitute_ok = false;\n }\n this.tmp.lastchr = \"\";\n if (this.tmp.area === \"citation\" && this.citation.opt.collapse && this.citation.opt.collapse.length) {\n //this.tmp.have_collapsed = \"year\";\n this.tmp.have_collapsed = true;\n } else {\n this.tmp.have_collapsed = false;\n }\n this.tmp.render_seen = false;\n if (this.tmp.disambig_request && ! this.tmp.disambig_override) {\n this.tmp.disambig_settings = this.tmp.disambig_request;\n } else if (this.registry.registry[Item.id] && ! this.tmp.disambig_override) {\n this.tmp.disambig_request = this.registry.registry[Item.id].disambig;\n this.tmp.disambig_settings = this.registry.registry[Item.id].disambig;\n } else {\n this.tmp.disambig_settings = new CSL.AmbigConfig();\n }\n if (this.tmp.area !== 'citation') {\n if (!this.registry.registry[Item.id]) {\n this.tmp.disambig_restore = new CSL.AmbigConfig();\n } else {\n this.tmp.disambig_restore = CSL.cloneAmbigConfig(this.registry.registry[Item.id].disambig);\n if (this.tmp.area === 'bibliography' && this.tmp.disambig_settings && this.tmp.disambig_override) {\n if (this.opt[\"disambiguate-add-names\"]) {\n this.tmp.disambig_settings.names = this.registry.registry[Item.id].disambig.names.slice();\n if (this.tmp.disambig_request) {\n this.tmp.disambig_request.names = this.registry.registry[Item.id].disambig.names.slice();\n }\n }\n if (this.opt[\"disambiguate-add-givenname\"]) {\n // This is weird and delicate and not fully understood\n this.tmp.disambig_request = this.tmp.disambig_settings;\n this.tmp.disambig_settings.givens = this.registry.registry[Item.id].disambig.givens.slice();\n this.tmp.disambig_request.givens = this.registry.registry[Item.id].disambig.givens.slice();\n for (var i=0,ilen=this.tmp.disambig_settings.givens.length;i<ilen;i+=1) {\n this.tmp.disambig_settings.givens[i] = this.registry.registry[Item.id].disambig.givens[i].slice();\n }\n for (var i=0,ilen=this.tmp.disambig_request.givens.length;i<ilen;i+=1) {\n this.tmp.disambig_request.givens[i] = this.registry.registry[Item.id].disambig.givens[i].slice();\n }\n }\n }\n }\n }\n\n this.tmp.names_used = [];\n this.tmp.nameset_counter = 0;\n this.tmp.years_used = [];\n this.tmp.names_max.clear();\n if (!this.tmp.just_looking) {\n if (!item || item.parallel === \"first\" || !item.parallel) {\n this.tmp.abbrev_trimmer = {\n QUASHES: {}\n };\n }\n }\n\n this.tmp.splice_delimiter = this[this.tmp.area].opt.layout_delimiter;\n //this.tmp.splice_delimiter = this[this.tmp.area].opt.delimiter;\n\n this.bibliography_sort.keys = [];\n this.citation_sort.keys = [];\n\n this.tmp.has_done_year_suffix = false;\n this.tmp.last_cite_locale = false;\n // SAVE PARAMETERS HERE, IF APPROPRIATE\n // (promiscuous addition of global parameters => death by a thousand cuts)\n if (!this.tmp.just_looking && item && !item.position && this.registry.registry[Item.id]) {\n this.tmp.disambig_restore = CSL.cloneAmbigConfig(this.registry.registry[Item.id].disambig);\n }\n // XXX This only applied to the \"number\" variable itself? Huh?\n //this.setNumberLabels(Item);\n this.tmp.first_name_string = false;\n this.tmp.authority_stop_last = 0;\n};\n\nCSL.citeEnd = function (Item, item) {\n // RESTORE PARAMETERS IF APPROPRIATE\n if (this.tmp.disambig_restore && this.registry.registry[Item.id]) {\n this.registry.registry[Item.id].disambig.names = this.tmp.disambig_restore.names.slice();\n this.registry.registry[Item.id].disambig.givens = this.tmp.disambig_restore.givens.slice();\n for (var i=0,ilen=this.registry.registry[Item.id].disambig.givens.length;i<ilen;i+=1) {\n this.registry.registry[Item.id].disambig.givens[i] = this.tmp.disambig_restore.givens[i].slice();\n }\n }\n this.tmp.disambig_restore = false;\n\n if (item && item.suffix) {\n //this.tmp.last_suffix_used = this.tmp.suffix.value();\n this.tmp.last_suffix_used = item.suffix;\n } else {\n this.tmp.last_suffix_used = \"\";\n }\n this.tmp.last_years_used = this.tmp.years_used.slice();\n this.tmp.last_names_used = this.tmp.names_used.slice();\n this.tmp.cut_var = false;\n\n // This is a hack, in a way; I have lost track of where\n // the disambig (name rendering) settings used for rendering work their way\n // into the registry. This resets defaults to the subsequent form,\n // when first cites are rendered.\n //if (this.tmp.disambig_restore && this.registry.registry[Item.id]) {\n // this.registry.registry[Item.id].disambig = this.tmp.disambig_restore;\n //}\n //this.tmp.disambig_restore = false;\n this.tmp.disambig_request = false;\n\n this.tmp.cite_locales.push(this.tmp.last_cite_locale);\n\n if (this.tmp.issued_date && this.tmp.renders_collection_number) {\n var buf = [];\n for (var i = this.tmp.issued_date.list.length - 1; i > this.tmp.issued_date.pos; i += -1) {\n buf.push(this.tmp.issued_date.list.pop());\n }\n // Throw away the unwanted blob\n this.tmp.issued_date.list.pop();\n // Put the other stuff back\n for (i = buf.length - 1; i > -1; i += -1) {\n this.tmp.issued_date.list.push(buf.pop());\n }\n }\n this.tmp.issued_date = false;\n this.tmp.renders_collection_number = false;\n\n};\n\n/*global CSL: true */\n\nCSL.Engine.prototype.makeBibliography = function (bibsection) {\n var debug, ret, params, maxoffset, item, len, pos, tok, tokk, tokkk, entry_ids, entry_strings;\n debug = false;\n if (!bibsection && (this.bibliography.opt.exclude_types || this.bibliography.opt.exclude_with_fields)) {\n bibsection = {\n exclude: []\n };\n if (this.bibliography.opt.exclude_types) {\n for (var i in this.bibliography.opt.exclude_types) {\n var val = this.bibliography.opt.exclude_types[i];\n bibsection.exclude.push({\n field: \"type\",\n value: val\n });\n }\n }\n if (this.bibliography.opt.exclude_with_fields) {\n for (var i in this.bibliography.opt.exclude_with_fields) {\n var field = this.bibliography.opt.exclude_with_fields[i];\n bibsection.exclude.push({\n field: field, value: true\n });\n }\n }\n }\n // API change: added in version 1.0.51\n if (!this.bibliography.tokens.length) {\n return false;\n }\n if (\"string\" === typeof bibsection) {\n this.opt.citation_number_slug = bibsection;\n bibsection = false;\n }\n //SNIP-START\n if (debug) {\n len = this.bibliography.tokens.length;\n for (pos = 0; pos < len; pos += 1) {\n tok = this.bibliography.tokens[pos];\n CSL.debug(\"bibtok: \" + tok.name);\n }\n CSL.debug(\"---\");\n len = this.citation.tokens.length;\n for (pos = 0; pos < len; pos += 1) {\n tokk = this.citation.tokens[pos];\n CSL.debug(\"cittok: \" + tok.name);\n }\n CSL.debug(\"---\");\n len = this.bibliography_sort.tokens.length;\n for (pos = 0; pos < len; pos += 1) {\n tokkk = this.bibliography_sort.tokens[pos];\n CSL.debug(\"bibsorttok: \" + tok.name);\n }\n }\n //SNIP-END\n\n // For paged returns\n ret = CSL.getBibliographyEntries.call(this, bibsection);\n entry_ids = ret[0];\n entry_strings = ret[1];\n\n // For paged returns\n var done = ret[2];\n\n params = {\n \"maxoffset\": 0,\n \"entryspacing\": this.bibliography.opt[\"entry-spacing\"],\n \"linespacing\": this.bibliography.opt[\"line-spacing\"],\n \"second-field-align\": false,\n \"entry_ids\": entry_ids,\n \"bibliography_errors\": this.tmp.bibliography_errors.slice(),\n \"done\": done\n };\n if (this.bibliography.opt[\"second-field-align\"]) {\n params[\"second-field-align\"] = this.bibliography.opt[\"second-field-align\"];\n }\n maxoffset = 0;\n len = this.registry.reflist.length;\n for (pos = 0; pos < len; pos += 1) {\n item = this.registry.reflist[pos];\n if (item.offset > params.maxoffset) {\n params.maxoffset = item.offset;\n }\n }\n if (this.bibliography.opt.hangingindent) {\n params.hangingindent = this.bibliography.opt.hangingindent;\n }\n params.bibstart = this.fun.decorate.bibstart;\n params.bibend = this.fun.decorate.bibend;\n\n this.opt.citation_number_slug = false;\n return [params, entry_strings];\n};\n\n/*\n * Compose individual cites into a single string.\n */\nCSL.getBibliographyEntries = function (bibsection) {\n var ret, input, include, anymatch, allmatch, bib_entry, res, item, spec, lllen, pppos, topblobs, entry_item_ids, debug, i, ilen, siblings, skips, sortedItems, eyetem, entry_item_data, j, jlen;\n ret = [];\n entry_item_data = [];\n this.tmp.area = \"bibliography\";\n this.tmp.root = \"bibliography\";\n this.tmp.last_rendered_name = false;\n this.tmp.bibliography_errors = [];\n this.tmp.bibliography_pos = 0;\n \n // For paged returns: disable generated entries and\n // do not fetch full items as a batch (input variable\n // consists of ids only in this case)\n if (bibsection && bibsection.page_start && bibsection.page_length) {\n input = this.registry.getSortedIds(); \n } else {\n input = this.refetchItems(this.registry.getSortedIds());\n }\n \n this.tmp.disambig_override = true;\n function eval_string(a, b) {\n if (a === b) {\n return true;\n }\n return false;\n }\n function eval_list(a, lst) {\n lllen = lst.length;\n for (pppos = 0; pppos < lllen; pppos += 1) {\n if (eval_string(a, lst[pppos])) {\n return true;\n }\n }\n return false;\n }\n function eval_spec(a, b) {\n if (\"boolean\" === typeof a || !a) {\n if (a) {\n return !!b;\n } else {\n return !b;\n }\n } else {\n if (\"string\" === typeof b) {\n return eval_string(a, b);\n } else if (!b) {\n return false;\n } else {\n return eval_list(a, b);\n }\n }\n }\n\n skips = {};\n\n // For paged returns\n var page_item_count;\n if (bibsection && bibsection.page_start && bibsection.page_length) {\n page_item_count = 0;\n if (bibsection.page_start !== true) {\n for (i = 0, ilen = input.length; i < ilen; i += 1) {\n skips[input[i]] = true;\n if (bibsection.page_start == input[i]) {\n break;\n }\n }\n }\n }\n\n var processed_item_ids = [];\n\n var consolidatedIDs = {};\n this.tmp.container_item_count = {};\n input = input.filter(o => {\n var ret = o;\n if (o.legislation_id) {\n if (consolidatedIDs[o.legislation_id]) {\n ret = false;\n } else {\n consolidatedIDs[o.legislation_id] = true;\n }\n } else if (o.container_id) {\n if (!this.tmp.container_item_count[o.container_id]) {\n this.tmp.container_item_count[o.container_id] = 0;\n }\n this.tmp.container_item_count[o.container_id]++;\n if (this.bibliography.opt.consolidate_containers.indexOf(o.type) > -1) {\n if (consolidatedIDs[o.container_id]) {\n ret = false;\n } else {\n consolidatedIDs[o.container_id] = true;\n }\n }\n }\n return ret;\n });\n\n this.tmp.container_item_pos = {};\n\n for (i = 0, ilen = input.length; i < ilen; i += 1) {\n \n // For paged returns\n if (bibsection && bibsection.page_start && bibsection.page_length) {\n if (skips[input[i]]) {\n continue;\n }\n item = this.refetchItem(input[i]);\n if (page_item_count === bibsection.page_length) {\n break;\n }\n } else {\n item = input[i];\n if (skips[item.id]) {\n continue;\n }\n }\n if (bibsection) {\n include = true;\n if (bibsection.include) {\n //\n // Opt-in: these are OR-ed.\n //\n include = false;\n for (j = 0, jlen = bibsection.include.length; j < jlen; j += 1) {\n spec = bibsection.include[j];\n if (eval_spec(spec.value, item[spec.field])) {\n include = true;\n break;\n }\n }\n } else if (bibsection.exclude) {\n //\n // Opt-out: these are also OR-ed.\n //\n anymatch = false;\n for (j = 0, jlen = bibsection.exclude.length; j < jlen; j += 1) {\n spec = bibsection.exclude[j];\n if (eval_spec(spec.value, item[spec.field])) {\n anymatch = true;\n break;\n }\n }\n if (anymatch) {\n include = false;\n }\n } else if (bibsection.select) {\n //\n // Multiple condition opt-in: these are AND-ed.\n //\n include = false;\n allmatch = true;\n for (j = 0, jlen = bibsection.select.length; j < jlen; j += 1) {\n spec = bibsection.select[j];\n if (!eval_spec(spec.value, item[spec.field])) {\n allmatch = false;\n }\n }\n if (allmatch) {\n include = true;\n }\n }\n if (bibsection.quash) {\n //\n // Stop criteria: These are AND-ed.\n //\n allmatch = true;\n for (j = 0, jlen = bibsection.quash.length; j < jlen; j += 1) {\n spec = bibsection.quash[j];\n if (!eval_spec(spec.value, item[spec.field])) {\n allmatch = false;\n }\n }\n if (allmatch) {\n include = false;\n }\n }\n if (!include) {\n continue;\n }\n }\n //SNIP-START\n if (debug) {\n CSL.debug(\"BIB: \" + item.id);\n }\n\n if (item.container_id) {\n if (!this.tmp.container_item_pos[item.container_id]) {\n this.tmp.container_item_pos[item.container_id] = 0;\n }\n this.tmp.container_item_pos[item.container_id]++;\n }\n \n //SNIP-END\n bib_entry = new CSL.Token(\"group\", CSL.START);\n bib_entry.decorations = [[\"@bibliography\", \"entry\"]].concat(this.bibliography.opt.layout_decorations);\n this.output.startTag(\"bib_entry\", bib_entry);\n if (item.system_id && this.sys.embedBibliographyEntry) {\n this.output.current.value().item_id = item.system_id;\n } else {\n this.output.current.value().system_id = item.id;\n }\n\n // 2019-06-25 Hacked to conform to new parallels evaluation method\n // 2020-04-25 Revised to work with latest, and final, parallel-first/parallel-last attributes\n entry_item_ids = [];\n if (this.registry.registry[item.id].master\n && !(bibsection && bibsection.page_start && bibsection.page_length)) {\n // Fetch item content\n sortedItems = [[item, {id: item.id}]];\n siblings = this.registry.registry[item.id].siblings;\n for (var j=0,jlen=siblings.length; j<jlen; j++) {\n sortedItems.push([this.refetchItem(siblings[j]), {id: siblings[j]}]);\n }\n // Adjust parameters\n this.parallel.StartCitation(sortedItems);\n if (this.registry.registry[item.id].parallel_delimiter_override) {\n this.output.queue[0].strings.delimiter = this.registry.registry[item.id].parallel_delimiter_override;\n } else {\n this.output.queue[0].strings.delimiter = \", \";\n }\n this.tmp.term_predecessor = false;\n this.tmp.cite_index = 0;\n // Run cites\n for (j = 0, jlen = sortedItems.length; j < jlen; j += 1) {\n if (j < (sortedItems.length - 1)) {\n this.tmp.parallel_and_not_last = true;\n } else {\n delete this.tmp.parallel_and_not_last;\n }\n entry_item_ids.push(\"\" + CSL.getCite.call(this, sortedItems[j][0], sortedItems[j][1]));\n this.tmp.cite_index++;\n skips[sortedItems[j][0].id] = true;\n }\n } else if (!this.registry.registry[item.id].siblings) {\n this.tmp.term_predecessor = false;\n this.tmp.cite_index = 0;\n entry_item_ids.push(\"\" + CSL.getCite.call(this, item));\n if (bibsection && bibsection.page_start && bibsection.page_length) {\n page_item_count += 1;\n }\n //skips[item.id] = true;\n }\n // For RDF support\n entry_item_data.push(\"\");\n\n this.tmp.bibliography_pos += 1;\n\n processed_item_ids.push(entry_item_ids);\n //\n // XXX: loop to render parallels goes here\n // XXX: just have to mark them somehow ...\n //\n this.output.endTag(\"bib_entry\");\n //\n // place layout prefix on first blob of each cite, and suffix\n // on the last non-empty blob of each cite. there be dragons\n // here.\n //\n if (this.output.queue[0].blobs.length && this.output.queue[0].blobs[0].blobs.length) {\n // The output queue stuff needs cleaning up. the result of\n // output.current.value() is sometimes a blob, sometimes its list\n // of blobs. this inconsistency is a source of confusion, and\n // should be cleaned up across the code base in the first\n // instance, before making any other changes to output code.\n if (!this.output.queue[0].blobs[0].blobs[0].strings) {\n topblobs = this.output.queue[0].blobs;\n } else {\n topblobs = this.output.queue[0].blobs[0].blobs;\n }\n topblobs[0].strings.prefix = this.bibliography.opt.layout_prefix + topblobs[0].strings.prefix;\n }\n for (j=0,jlen=this.output.queue.length;j<jlen;j+=1) {\n CSL.Output.Queue.purgeEmptyBlobs(this.output.queue[j]);\n //print(\"XXX: \"+JSON.stringify(this.output.queue[j],['strings','prefix','suffix','delimiter','blobs','decorations'],2))\n }\n for (j=0,jlen=this.output.queue.length;j<jlen;j+=1) {\n this.output.adjust.upward(this.output.queue[j]);\n this.output.adjust.leftward(this.output.queue[j]);\n this.output.adjust.downward(this.output.queue[j],true);\n this.output.adjust.fix(this.output.queue[j]);\n //print(\"OUTPUT: \"+JSON.stringify(this.output.queue[j],['strings','prefix','suffix','delimiter','blobs','decorations'],2))\n }\n\n //print(\"DUMP \"+JSON.stringify(this.output.queue, [\"strings\", \"decorations\", \"prefix\", \"suffix\", \"delimiter\", \"blobs\"], 2));\n\n // XXX Need to account for numeric blobs in input.\n // XXX No idea how this could have worked previously.\n\n //print(\"BLOBS \"+this.output.queue[0].blobs[0].blobs);\n\n //print(\"JSON \"+JSON.stringify(this.output.queue[0].blobs, null, 2));\n\n res = this.output.string(this, this.output.queue)[0];\n \n if (!res && this.opt.update_mode === CSL.NUMERIC) {\n var err = (ret.length + 1) + \". [CSL STYLE ERROR: reference with no printed form.]\";\n res = CSL.Output.Formats[this.opt.mode][\"@bibliography/entry\"](this, err);\n }\n if (res) {\n ret.push(res);\n }\n }\n\n var done = false;\n if (bibsection && bibsection.page_start && bibsection.page_length) {\n var last_expected_id = input.slice(-1)[0];\n var last_seen_id = processed_item_ids.slice(-1)[0];\n if (!last_expected_id || !last_seen_id || last_expected_id == last_seen_id) {\n done = true;\n }\n }\n this.tmp.disambig_override = false;\n\n // XXX done\n return [processed_item_ids, ret, done];\n};\n\n/*global CSL: true */\n\n\nCSL.Engine.prototype.setCitationId = function (citation, force) {\n var ret, id, direction;\n ret = false;\n if (!citation.citationID || force) {\n id = Math.floor(Math.random() * 100000000000000);\n while (true) {\n direction = 0;\n if (!this.registry.citationreg.citationById[id]) {\n // In case the ID is used as an HTML identifier in the\n // calling application.\n // https://github.com/Juris-M/citeproc-js/issues/22\n citation.citationID = \"a\" + id.toString(32);\n break;\n } else if (!direction && id < 50000000000000) {\n direction = 1;\n } else {\n direction = -1;\n }\n if (direction === 1) {\n id += 1;\n } else {\n id += -1;\n }\n }\n ret = \"\" + id;\n }\n this.registry.citationreg.citationById[citation.citationID] = citation;\n return ret;\n};\n\nCSL.Engine.prototype.rebuildProcessorState = function (citations, mode, uncitedItemIDs) {\n // Rebuilds the processor from scratch, based on a list of citation\n // objects. In a dynamic application, once the internal state of processor\n // is established, citations should edited with individual invocations\n // of processCitationCluster().\n\n // citations is a list of citation objects in document order.\n // mode is one of \"html\", \"text\" or \"rtf\".\n // uncitedItemIDs is a list of itemIDs or a JS object with itemIDs as keys.\n // Returns a list of [citationID,noteIndex,string] triples in document order.\n // Set citation.properties.noteIndex to 0 for in-text citations.\n // It is not necessary to run updateItems() before this function.\n if (!citations) {\n citations = [];\n }\n if (!mode) {\n mode = 'html';\n }\n var doneIDs = {};\n var itemIDs = [];\n for (var i=0,ilen=citations.length;i<ilen;i+=1) {\n for (var j=0,jlen=citations[i].citationItems.length;j<jlen;j+=1) {\n var itemID = \"\" + citations[i].citationItems[j].id;\n if (!doneIDs[itemID]) {\n itemIDs.push(itemID);\n }\n doneIDs[itemID] = true;\n }\n }\n this.updateItems(itemIDs);\n var pre = [];\n var post = [];\n var ret = [];\n var oldMode = this.opt.mode;\n this.setOutputFormat(mode);\n for (var i=0,ilen=citations.length;i<ilen;i+=1) {\n // res contains a result report and a list of [index,string] pairs\n // index begins at 0\n var res = this.processCitationCluster(citations[i],pre,post,CSL.ASSUME_ALL_ITEMS_REGISTERED);\n pre.push([citations[i].citationID,citations[i].properties.noteIndex]);\n for (var j=0,jlen=res[1].length;j<jlen;j+=1) {\n var index = res[1][j][0];\n ret[index] = [\n pre[index][0],\n pre[index][1],\n res[1][j][1]\n ];\n }\n }\n this.updateUncitedItems(uncitedItemIDs);\n this.setOutputFormat(oldMode);\n return ret;\n};\n\n\nCSL.Engine.prototype.restoreProcessorState = function (citations) {\n var i, ilen, j, jlen, item, Item, newitem, citationList, itemList, sortedItems;\n \n // This function is deprecated.\n // Use rebuildProcessorState() instead.\n\n // Quickly restore state from citation details retained by\n // calling application.\n //\n // if citations are provided, position details and sortkeys \n // on the citation objects are are assumed to be correct. Item\n // data is retrieved, and sortedItems arrays are created and\n // sorted as required by the current style.\n //\n // If citations is an empty list or nil, reset processor to\n // empty state.\n citationList = [];\n itemList = [];\n if (!citations) {\n citations = [];\n }\n // Adjust citationIDs to avoid duplicates, save off index numbers\n var indexNumbers = [];\n var citationIds = {};\n for (i = 0, ilen = citations.length; i < ilen; i += 1) {\n if (citationIds[citations[i].citationID]) {\n this.setCitationId(citations[i], true);\n }\n citationIds[citations[i].citationID] = true;\n indexNumbers.push(citations[i].properties.index);\n }\n // Slice citations and sort by their declared index positions, if any,\n // then reassign index and noteIndex numbers.\n var oldCitations = citations.slice();\n oldCitations.sort(\n function (a,b) {\n if (a.properties.index < b.properties.index) {\n return -1;\n } else if (a.properties.index > b.properties.index) {\n return 1;\n } else {\n return 0;\n }\n }\n );\n for (i = 0, ilen = oldCitations.length; i < ilen; i += 1) {\n oldCitations[i].properties.index = i;\n }\n for (i = 0, ilen = oldCitations.length; i < ilen; i += 1) {\n sortedItems = [];\n for (j = 0, jlen = oldCitations[i].citationItems.length; j < jlen; j += 1) {\n item = oldCitations[i].citationItems[j];\n if (\"undefined\" === typeof item.sortkeys) {\n item.sortkeys = [];\n }\n Item = this.retrieveItem(\"\" + item.id);\n newitem = [Item, item];\n sortedItems.push(newitem);\n oldCitations[i].citationItems[j].item = Item;\n itemList.push(\"\" + item.id);\n }\n if (!oldCitations[i].properties.unsorted) {\n sortedItems.sort(this.citation.srt.compareCompositeKeys);\n }\n oldCitations[i].sortedItems = sortedItems;\n // Save citation data in registry\n this.registry.citationreg.citationById[oldCitations[i].citationID] = oldCitations[i];\n }\n // Register Items\n this.updateItems(itemList);\n\n // Construct citationList from original copy\n for (i = 0, ilen = citations.length; i < ilen; i += 1) {\n citationList.push([\"\" + citations[i].citationID, citations[i].properties.noteIndex]);\n }\n\n var ret = [];\n if (citations && citations.length) {\n // Rendering one citation restores remainder of processor state.\n // If citations is empty, rest to empty state.\n ret = this.processCitationCluster(citations[0], [], citationList.slice(1));\n } else {\n this.registry = new CSL.Registry(this);\n this.tmp = new CSL.Engine.Tmp();\n this.disambiguate = new CSL.Disambiguation(this);\n }\n return ret;\n};\n\n\nCSL.Engine.prototype.updateItems = function (idList, nosort, rerun_ambigs, implicitUpdate) {\n var debug = false;\n var oldArea = this.tmp.area;\n var oldRoot = this.tmp.root;\n var oldExtension = this.tmp.extension;\n if (this.bibliography_sort.tokens.length === 0) {\n nosort = true;\n }\n this.tmp.area = \"citation\";\n this.tmp.root = \"citation\";\n this.tmp.extension = \"\";\n if (!implicitUpdate) {\n this.tmp.loadedItemIDs = {};\n }\n //CSL.debug = print\n //SNIP-START\n if (debug) {\n CSL.debug(\"--> init <--\");\n }\n //SNIP-END\n this.registry.init(idList);\n\n\tif (rerun_ambigs) {\n\t\tfor (var ambig in this.registry.ambigcites) {\n\t\t\tthis.registry.ambigsTouched[ambig] = true;\n\t\t}\n\t}\n\n this.registry.dodeletes(this.registry.myhash);\n \n this.registry.doinserts(this.registry.mylist);\n \n this.registry.dorefreshes();\n\n // *** affects reflist\n this.registry.rebuildlist(nosort);\n \n this.registry.setsortkeys();\n\n // taints always\n this.registry.setdisambigs();\n\n // *** affects reflist\n this.registry.sorttokens(nosort);\n\n // *** affects reflist\n // taints if numbered style\n this.registry.renumber();\n \n // taints always\n //this.registry.yearsuffix();\n\n this.tmp.extension = oldExtension;\n this.tmp.area = oldArea;\n this.tmp.root = oldRoot;\n\n return this.registry.getSortedIds();\n};\n\nCSL.Engine.prototype.updateUncitedItems = function (idList, nosort) {\n var idHash;\n var oldArea = this.tmp.area;\n var oldRoot = this.tmp.root;\n var oldExtension = this.tmp.extension;\n if (this.bibliography_sort.tokens.length === 0) {\n nosort = true;\n }\n this.tmp.area = \"citation\";\n this.tmp.root = \"citation\";\n this.tmp.extension = \"\";\n this.tmp.loadedItemIDs = {};\n // This should be a utility function\n if (!idList) {\n idList = [];\n }\n if (\"object\" == typeof idList) {\n if (\"undefined\" == typeof idList.length) {\n idHash = idList;\n idList = [];\n for (var key in idHash) {\n idList.push(key);\n }\n } else if (\"number\" == typeof idList.length) {\n idHash = {};\n for (var i=0,ilen=idList.length;i<ilen;i+=1) {\n idHash[idList[i]] = true;\n }\n }\n }\n\n // prepare extended list of items\n this.registry.init(idList, true);\n\n // Use purge instead of delete.\n // this.registry.dodeletes(this.registry.myhash);\n this.registry.dopurge(idHash);\n\n // everything else is the same as updateItems()\n this.registry.doinserts(this.registry.mylist);\n\n this.registry.dorefreshes();\n\n this.registry.rebuildlist(nosort);\n\n this.registry.setsortkeys();\n\n this.registry.setdisambigs();\n\n this.registry.sorttokens(nosort);\n\n this.registry.renumber();\n\n this.tmp.extension = oldExtension;\n this.tmp.area = oldArea;\n this.tmp.root = oldRoot;\n\n return this.registry.getSortedIds();\n};\n\n/*global CSL: true */\n\nCSL.localeResolve = function (langstr, defaultLocale) {\n var ret, langlst;\n if (!defaultLocale) {\n defaultLocale = \"en-US\";\n }\n if (!langstr) {\n langstr = defaultLocale;\n }\n ret = {};\n //if (\"undefined\" === typeof langstr) {\n // langstr = \"en_US\";\n //}\n langlst = langstr.split(/[\\-_]/);\n ret.base = CSL.LANG_BASES[langlst[0]];\n if (\"undefined\" === typeof ret.base) {\n //CSL.debug(\"Warning: unknown locale \"+langstr+\", setting fallback to \"+defaultLocale);\n return {base:defaultLocale, best:langstr, bare:langlst[0]};\n }\n if (langlst.length === 1) {\n ret.generic = true;\n }\n if (langlst.length === 1 || langlst[1] === \"x\") {\n ret.best = ret.base.replace(\"_\", \"-\");\n } else {\n ret.best = langlst.slice(0, 2).join(\"-\");\n }\n ret.base = ret.base.replace(\"_\", \"-\");\n ret.bare = langlst[0];\n return ret;\n};\n\n// Use call to invoke this.\nCSL.Engine.prototype.localeConfigure = function (langspec, beShy) {\n var localexml;\n if (beShy && this.locale[langspec.best]) {\n return;\n }\n if (langspec.best === \"en-US\") {\n localexml = CSL.setupXml(this.sys.retrieveLocale(\"en-US\"));\n this.localeSet(localexml, \"en-US\", langspec.best);\n } else if (langspec.best !== \"en-US\") {\n if (langspec.base !== langspec.best) {\n localexml = CSL.setupXml(this.sys.retrieveLocale(langspec.base));\n this.localeSet(localexml, langspec.base, langspec.best);\n }\n localexml = CSL.setupXml(this.sys.retrieveLocale(langspec.best));\n this.localeSet(localexml, langspec.best, langspec.best); \n }\n this.localeSet(this.cslXml, \"\", langspec.best);\n this.localeSet(this.cslXml, langspec.bare, langspec.best);\n if (langspec.base !== langspec.best) {\n this.localeSet(this.cslXml, langspec.base, langspec.best);\n }\n this.localeSet(this.cslXml, langspec.best, langspec.best);\n if (\"undefined\" === typeof this.locale[langspec.best].terms[\"page-range-delimiter\"]) {\n if ([\"fr\", \"pt\"].indexOf(langspec.best.slice(0, 2).toLowerCase()) > -1) {\n this.locale[langspec.best].terms[\"page-range-delimiter\"] = \"-\";\n } else {\n this.locale[langspec.best].terms[\"page-range-delimiter\"] = \"\\u2013\";\n }\n }\n if (\"undefined\" === typeof this.locale[langspec.best].terms[\"year-range-delimiter\"]) {\n this.locale[langspec.best].terms[\"year-range-delimiter\"] = \"\\u2013\";\n }\n if (\"undefined\" === typeof this.locale[langspec.best].terms[\"citation-range-delimiter\"]) {\n this.locale[langspec.best].terms[\"citation-range-delimiter\"] = \"\\u2013\";\n }\n if (this.opt.development_extensions.normalize_lang_keys_to_lowercase) {\n var localeLists = [\"default-locale\",\"locale-sort\",\"locale-translit\",\"locale-translat\"];\n for (var i=0,ilen=localeLists.length;i<ilen;i+=1) {\n for (var j=0,jlen=this.opt[localeLists[i]].length;j<jlen;j+=1) {\n this.opt[localeLists[i]][j] = this.opt[localeLists[i]][j].toLowerCase();\n }\n }\n this.opt.lang = this.opt.lang.toLowerCase();\n }\n};\n \n//\n// XXXXX: Got it. The locales objects need to be reorganized,\n// with a top-level local specifier, and terms, opts, dates\n// below.\n//\nCSL.Engine.prototype.localeSet = function (myxml, lang_in, lang_out) {\n var blob, locale, nodes, attributes, pos, term, form, termname, styleopts, date, attrname, len, genderform, target, i, ilen;\n lang_in = lang_in.replace(\"_\", \"-\");\n lang_out = lang_out.replace(\"_\", \"-\");\n\n if (this.opt.development_extensions.normalize_lang_keys_to_lowercase) {\n lang_in = lang_in.toLowerCase();\n lang_out = lang_out.toLowerCase();\n }\n\n if (!this.locale[lang_out]) {\n this.locale[lang_out] = {};\n this.locale[lang_out].terms = {};\n this.locale[lang_out].opts = {};\n // Set default skip words. Can be overridden in locale by attribute on style-options node.\n this.locale[lang_out].opts[\"skip-words\"] = CSL.SKIP_WORDS;\n // Initialise leading noise word to false. Actual assignment is below. Empty by default, can be overridden in locale by attribute on style-options node.\n if (!this.locale[lang_out].opts[\"leading-noise-words\"]) {\n this.locale[lang_out].opts[\"leading-noise-words\"] = [];\n }\n this.locale[lang_out].dates = {};\n // For ordinals\n this.locale[lang_out].ord = {'1.0.1':false,keys:{}};\n this.locale[lang_out][\"noun-genders\"] = {};\n }\n\n //\n // Xml: Test if node is \"locale\" (nb: ns declarations need to be invoked\n // on every access to the xml object; bundle this with the functions\n //\n locale = myxml.makeXml();\n if (myxml.nodeNameIs(myxml.dataObj, 'locale')) {\n locale = myxml.dataObj;\n } else {\n //\n // Xml: get a list of all \"locale\" nodes\n //\n nodes = myxml.getNodesByName(myxml.dataObj, \"locale\");\n var foundLocale = false;\n for (pos = 0, len = myxml.numberofnodes(nodes); pos < len; pos += 1) {\n blob = nodes[pos];\n //\n // Xml: get locale xml:lang\n //\n // Iterate over all locales, but for non-matching nodes,\n // we set jurisdiction_preference only (processing of the\n // chosen one will process the attribute there,\n // separately.\n if (!foundLocale && myxml.getAttributeValue(blob, 'lang', 'xml') === lang_in) {\n locale = blob;\n foundLocale = true;\n } else {\n var lang = myxml.getAttributeValue(blob, 'lang', 'xml');\n var style_options = myxml.getNodesByName(blob, 'style-options');\n if (lang && style_options && style_options.length) {\n var jurispref = myxml.getAttributeValue(style_options[0], 'jurisdiction-preference');\n if (jurispref) {\n if (!this.locale[lang]) {\n this.locale[lang] = {\n opts: {}\n };\n }\n this.locale[lang].opts[\"jurisdiction-preference\"] = jurispref.split(/\\s+/);\n }\n }\n }\n }\n }\n //\n // Xml: get a list of any cs:type nodes within locale\n //\n nodes = myxml.getNodesByName(locale, 'type');\n for (i = 0, ilen = myxml.numberofnodes(nodes); i < ilen; i += 1) {\n var typenode = nodes[i];\n var type = myxml.getAttributeValue(typenode, 'name');\n var gender = myxml.getAttributeValue(typenode, 'gender');\n this.opt.gender[type] = gender;\n }\n //\n // Xml: get a list of term nodes within locale\n //\n\n // If we are setting CSL 1.0.1 ordinals inside a style, wipe the\n // slate clean and start over.\n var hasCslOrdinals101 = myxml.getNodesByName(locale, 'term', 'ordinal').length;\n if (hasCslOrdinals101) {\n for (var key in this.locale[lang_out].ord.keys) {\n delete this.locale[lang_out].terms[key];\n }\n this.locale[lang_out].ord = {\"1.0.1\":false,keys:{}};\n }\n\n nodes = myxml.getNodesByName(locale, 'term');\n // Collect ordinals info as for 1.0.1, but save only if 1.0.1 toggle triggers\n var ordinals101 = {\"last-digit\":{},\"last-two-digits\":{},\"whole-number\":{}};\n var ordinals101_toggle = false;\n var genderized_terms = {};\n for (pos = 0, len = myxml.numberofnodes(nodes); pos < len; pos += 1) {\n term = nodes[pos];\n //\n // Xml: get string value of attribute\n //\n termname = myxml.getAttributeValue(term, 'name');\n if (termname === \"sub verbo\") {\n termname = \"sub-verbo\";\n }\n if (termname.slice(0,7) === \"ordinal\") {\n if (termname === \"ordinal\") {\n ordinals101_toggle = true;\n } else {\n var match = myxml.getAttributeValue(term, 'match');\n var termstub = termname.slice(8);\n var genderform = myxml.getAttributeValue(term, 'gender-form');\n if (!genderform) {\n genderform = \"neuter\";\n }\n if (!match) {\n match = \"last-two-digits\";\n if (termstub.slice(0,1) === \"0\") {\n match = \"last-digit\";\n }\n }\n if (termstub.slice(0,1) === \"0\") {\n termstub = termstub.slice(1);\n }\n if (!ordinals101[match][termstub]) {\n ordinals101[match][termstub] = {};\n }\n ordinals101[match][termstub][genderform] = termname;\n }\n this.locale[lang_out].ord.keys[termname] = true;\n }\n if (\"undefined\" === typeof this.locale[lang_out].terms[termname]) {\n this.locale[lang_out].terms[termname] = {};\n }\n form = \"long\";\n genderform = false;\n //\n // Xml: get string value of form attribute, if any\n //\n if (myxml.getAttributeValue(term, 'form')) {\n form = myxml.getAttributeValue(term, 'form');\n }\n //\n // Xml: get string value of gender attribute, if any\n // \n if (myxml.getAttributeValue(term, 'gender-form')) {\n genderform = myxml.getAttributeValue(term, 'gender-form');\n }\n //\n // Xml: set global gender assignment for variable associated\n // with term name\n // \n if (myxml.getAttributeValue(term, 'gender')) {\n this.locale[lang_out][\"noun-genders\"][termname] = myxml.getAttributeValue(term, 'gender');\n }\n // Work on main segment or gender-specific sub-segment as appropriate\n if (genderform) {\n this.locale[lang_out].terms[termname][genderform] = {};\n this.locale[lang_out].terms[termname][genderform][form] = [];\n target = this.locale[lang_out].terms[termname][genderform];\n genderized_terms[termname] = true;\n } else {\n this.locale[lang_out].terms[termname][form] = [];\n target = this.locale[lang_out].terms[termname];\n }\n //\n // Xml: test of existence of node\n //\n if (myxml.numberofnodes(myxml.getNodesByName(term, 'multiple'))) {\n //\n // Xml: get string value of attribute, plus\n // Xml: get string value of node content\n //\n target[form][0] = myxml.getNodeValue(term, 'single');\n if (target[form][0].indexOf(\"%s\") > -1) {\n this.opt.hasPlaceholderTerm = true;\n }\n //\n // Xml: get string value of attribute, plus\n // Xml: get string value of node content\n //\n target[form][1] = myxml.getNodeValue(term, 'multiple');\n if (target[form][1].indexOf(\"%s\") > -1) {\n this.opt.hasPlaceholderTerm = true;\n }\n } else {\n //\n // Xml: get string value of attribute, plus\n // Xml: get string value of node content\n //\n target[form] = myxml.getNodeValue(term);\n if (target[form].indexOf(\"%s\") > -1) {\n this.opt.hasPlaceholderTerm = true;\n }\n }\n }\n if (!this.locale[lang_out].terms.supplement) {\n this.locale[lang_out].terms.supplement = {};\n }\n if (!this.locale[lang_out].terms.supplement[\"long\"]) {\n this.locale[lang_out].terms.supplement[\"long\"] = [\"supplement\", \"supplements\"];\n }\n // If locale had a CSL 1.0.1-style ordinal definition, install the logic object\n // and iterate over gendered terms, filling in default values for use by getTerm.\n if (ordinals101_toggle) {\n for (var ikey in genderized_terms) {\n var gender_segments = {};\n var form_segments = 0;\n for (var jkey in this.locale[lang_out].terms[ikey]) {\n if ([\"masculine\",\"feminine\"].indexOf(jkey) > -1) {\n gender_segments[jkey] = this.locale[lang_out].terms[ikey][jkey];\n } else {\n form_segments += 1;\n }\n }\n if (!form_segments) {\n if (gender_segments.feminine) {\n // Link each feminine form segment to default\n // (no need to filter, these will not have gender segments mixed in)\n for (var jkey in gender_segments.feminine) {\n this.locale[lang_out].terms[ikey][jkey] = gender_segments.feminine[jkey];\n }\n } else if (gender_segments.masculine) {\n // Otherwise link each masculine form segment to default \n for (var jkey in gender_segments.masculine) {\n this.locale[lang_out].terms[ikey][jkey] = gender_segments.masculine[jkey];\n }\n }\n }\n }\n this.locale[lang_out].ord['1.0.1'] = ordinals101;\n }\n\n // Iterate over main segments, and fill in any holes in gender-specific data\n // sub-segments\n for (termname in this.locale[lang_out].terms) {\n for (i = 0, ilen = 2; i < ilen; i += 1) {\n genderform = CSL.GENDERS[i];\n if (this.locale[lang_out].terms[termname][genderform]) {\n for (form in this.locale[lang_out].terms[termname]) {\n if (!this.locale[lang_out].terms[termname][genderform][form]) {\n this.locale[lang_out].terms[termname][genderform][form] = this.locale[lang_out].terms[termname][form];\n }\n }\n }\n }\n }\n //\n // Xml: get list of nodes by node type\n //\n nodes = myxml.getNodesByName(locale, 'style-options');\n for (pos = 0, len = myxml.numberofnodes(nodes); pos < len; pos += 1) {\n if (true) {\n styleopts = nodes[pos];\n //\n // Xml: get list of attributes on a node\n //\n attributes = myxml.attributes(styleopts);\n for (attrname in attributes) {\n if (attributes.hasOwnProperty(attrname)) {\n if (attrname === \"@punctuation-in-quote\" || attrname === \"@limit-day-ordinals-to-day-1\") {\n if (attributes[attrname] === \"true\") {\n // trim off leading @\n this.locale[lang_out].opts[attrname.slice(1)] = true;\n } else {\n // trim off leading @\n this.locale[lang_out].opts[attrname.slice(1)] = false;\n }\n } else if (attrname === \"@jurisdiction-preference\") {\n var jurisdiction_preference = attributes[attrname].split(/\\s+/);\n this.locale[lang_out].opts[attrname.slice(1)] = jurisdiction_preference;\n } else if (attrname === \"@skip-words\") {\n var skip_words = attributes[attrname].split(/\\s*,\\s*/);\n this.locale[lang_out].opts[attrname.slice(1)] = skip_words;\n } else if (attrname === \"@leading-noise-words\") {\n var val = attributes[attrname].split(/\\s*,\\s*/);\n this.locale[lang_out].opts[\"leading-noise-words\"] = val;\n } else if (attrname === \"@name-as-sort-order\") {\n // Fallback is okay here.\n this.locale[lang_out].opts[\"name-as-sort-order\"] = {};\n var lst = attributes[attrname].split(/\\s+/);\n for (var i=0,ilen=lst.length;i<ilen;i+=1) {\n this.locale[lang_out].opts[\"name-as-sort-order\"][lst[i]] = true;\n }\n } else if (attrname === \"@name-as-reverse-order\") {\n // Fallback is okay here.\n this.locale[lang_out].opts[\"name-as-reverse-order\"] = {};\n var lst = attributes[attrname].split(/\\s+/);\n for (var i=0,ilen=lst.length;i<ilen;i+=1) {\n this.locale[lang_out].opts[\"name-as-reverse-order\"][lst[i]] = true;\n }\n } else if (attrname === \"@name-never-short\") {\n // Here too.\n this.locale[lang_out].opts[\"name-never-short\"] = {};\n var lst = attributes[attrname].split(/\\s+/);\n for (var i=0,ilen=lst.length;i<ilen;i+=1) {\n this.locale[lang_out].opts[\"name-never-short\"][lst[i]] = true;\n }\n }\n }\n }\n }\n }\n //\n // Xml: get list of nodes by type\n //\n nodes = myxml.getNodesByName(locale, 'date');\n for (pos = 0, len = myxml.numberofnodes(nodes); pos < len; pos += 1) {\n if (true) {\n var date = nodes[pos];\n //\n // Xml: get string value of attribute\n //\n this.locale[lang_out].dates[myxml.getAttributeValue(date, \"form\")] = date;\n }\n }\n //\n // Xml: get list of nodes by node type\n //\n CSL.SET_COURT_CLASSES(this, lang_out, myxml, locale);\n};\n\n\nCSL.getLocaleNames = function (myxml, preferredLocale) {\n var stylexml = CSL.setupXml(myxml);\n\n function extendLocaleList(localeList, locale) {\n var forms = [\"base\", \"best\"];\n if (locale) {\n var normalizedLocale = CSL.localeResolve(locale);\n for (var i=0,ilen=forms.length;i<ilen;i++) {\n if (normalizedLocale[forms[i]] && localeList.indexOf(normalizedLocale[forms[i]]) === -1) {\n localeList.push(normalizedLocale[forms[i]]);\n }\n }\n }\n }\n \n var localeIDs = [\"en-US\"];\n \n function sniffLocaleOnOneNodeName(nodeName) {\n var nodes = stylexml.getNodesByName(stylexml.dataObj, nodeName);\n for (var i=0,ilen=nodes.length;i<ilen;i++) {\n var nodeLocales = stylexml.getAttributeValue(nodes[i], \"locale\");\n if (nodeLocales) {\n nodeLocales = nodeLocales.split(/ +/);\n for (var j=0,jlen=nodeLocales.length;j<jlen;j++) {\n this.extendLocaleList(localeIDs, nodeLocales[j]);\n }\n }\n }\n }\n\n extendLocaleList(localeIDs, preferredLocale);\n\n var styleNode = stylexml.getNodesByName(stylexml.dataObj, \"style\")[0];\n var defaultLocale = stylexml.getAttributeValue(styleNode, \"default-locale\");\n extendLocaleList(localeIDs, defaultLocale);\n\n var nodeNames = [\"layout\", \"if\", \"else-if\", \"condition\"];\n for (var i=0,ilen=nodeNames.length;i<ilen;i++) {\n sniffLocaleOnOneNodeName(stylexml, localeIDs, nodeNames[i]);\n }\n return localeIDs;\n};\n\n/*global CSL: true */\n\nCSL.Node = {};\n\nCSL.Node.bibliography = {\n build: function (state, target) {\n if (this.tokentype === CSL.START) {\n\n state.build.area = \"bibliography\";\n state.build.root = \"bibliography\";\n state.build.extension = \"\";\n\n var func = function(state) {\n state.tmp.area = \"bibliography\";\n state.tmp.root = \"bibliography\";\n state.tmp.extension = \"\";\n };\n this.execs.push(func);\n\n }\n target.push(this);\n }\n};\n\n\n/*global CSL: true */\n\nCSL.Node.choose = {\n build: function (state, target) {\n var func;\n if (this.tokentype === CSL.START) {\n //open condition\n func = function (state) {\n state.tmp.jump.push(undefined, CSL.LITERAL);\n };\n }\n if (this.tokentype === CSL.END) {\n //close condition\n func = function (state) {\n state.tmp.jump.pop();\n };\n }\n this.execs.push(func);\n target.push(this);\n },\n\n configure: function (state, pos) {\n if (this.tokentype === CSL.END) {\n state.configure.fail.push((pos));\n state.configure.succeed.push((pos));\n } else {\n state.configure.fail.pop();\n state.configure.succeed.pop();\n }\n }\n};\n\n/*global CSL: true */\n\nCSL.Node.citation = {\n build: function (state, target) {\n if (this.tokentype === CSL.START) {\n\n state.build.area = \"citation\";\n state.build.root = \"citation\";\n state.build.extension = \"\";\n\n\n var func = function(state) {\n state.tmp.area = \"citation\";\n state.tmp.root = \"citation\";\n state.tmp.extension = \"\";\n };\n this.execs.push(func);\n\n/*\n state.build.root = \"citation\";\n\n OK state.fixOpt(this, \"names-delimiter\", \"delimiter\");\n OK state.fixOpt(this, \"name-delimiter\", \"delimiter\");\n OK state.fixOpt(this, \"name-form\", \"form\");\n OK state.fixOpt(this, \"and\", \"and\");\n OK state.fixOpt(this, \"delimiter-precedes-last\", \"delimiter-precedes-last\");\n OK state.fixOpt(this, \"delimiter-precedes-et-al\", \"delimiter-precedes-et-al\");\n OK state.fixOpt(this, \"initialize-with\", \"initialize-with\");\n OK state.fixOpt(this, \"initialize\", \"initialize\");\n OK state.fixOpt(this, \"name-as-sort-order\", \"name-as-sort-order\");\n OK state.fixOpt(this, \"sort-separator\", \"sort-separator\");\n\n OK state.fixOpt(this, \"et-al-min\", \"et-al-min\");\n OK state.fixOpt(this, \"et-al-use-first\", \"et-al-use-first\");\n OK state.fixOpt(this, \"et-al-use-last\", \"et-al-use-last\");\n state.fixOpt(this, \"et-al-subsequent-min\", \"et-al-subsequent-min\");\n state.fixOpt(this, \"et-al-subsequent-use-first\", \"et-al-subsequent-use-first\");\n*/\n }\n if (this.tokentype === CSL.END) {\n\n // Open an extra key at first position for use in\n // grouped sorts.\n // print(\"in cs:citation END\");\n state.opt.grouped_sort = state.opt.xclass === \"in-text\" \n && (state.citation.opt.collapse \n && state.citation.opt.collapse.length)\n || (state.citation.opt.cite_group_delimiter\n && state.citation.opt.cite_group_delimiter.length)\n && state.opt.update_mode !== CSL.POSITION\n && state.opt.update_mode !== CSL.NUMERIC;\n \n if (state.opt.grouped_sort \n && state.citation_sort.opt.sort_directions.length) {\n \n var firstkey = state.citation_sort.opt.sort_directions[0].slice();\n //print(\"extending sort keys \"+state.citation_sort.opt.sort_directions+\" with \"+firstkey);\n state.citation_sort.opt.sort_directions = [firstkey].concat(state.citation_sort.opt.sort_directions);\n // print(\"new key directions in effect: \"+state.citation_sort.opt.sort_directions);\n }\n // print(\"creating new comparifier\");\n state.citation.srt = new CSL.Registry.Comparifier(state, \"citation_sort\");\n }\n target.push(this);\n }\n};\n\n\n/*global CSL: true */\n\nCSL.Node[\"#comment\"] = {\n // This is a comment in the CSL file.\n build: function () {\n // Save some space in the log files -- no need to mention this, really.\n // CSL.debug(\"CSL processor warning: comment node reached\");\n }\n};\n\n/*global CSL: true */\n\nCSL.Node.date = {\n build: function (state, target) {\n var func, date_obj, len, pos, part, dpx, parts, mypos, start, end;\n if (this.tokentype === CSL.START || this.tokentype === CSL.SINGLETON) {\n // used to collect rendered date part names in node_datepart,\n // for passing through to node_key, for use in dates embedded\n // in macros\n state.dateput.string(state, state.dateput.queue);\n state.tmp.date_token = CSL.Util.cloneToken(this);\n state.tmp.date_token.strings.prefix = \"\";\n state.tmp.date_token.strings.suffix = \"\";\n state.dateput.openLevel(this);\n state.build.date_parts = [];\n state.build.date_variables = this.variables;\n if (!state.build.extension) {\n CSL.Util.substituteStart.call(this, state, target);\n }\n if (state.build.extension) {\n func = CSL.dateMacroAsSortKey;\n } else {\n func = function (state, Item, item) {\n var dp;\n state.tmp.element_rendered_ok = false;\n state.tmp.donesies = [];\n state.tmp.dateparts = [];\n dp = [];\n //if (this.variables.length && Item[this.variables[0]]){\n if (this.variables.length\n && !(state.tmp.just_looking\n && this.variables[0] === \"accessed\")) {\n \n date_obj = Item[this.variables[0]];\n if (\"undefined\" === typeof date_obj) {\n date_obj = {\"date-parts\": [[0]] };\n if (state.opt.development_extensions.locator_date_and_revision) {\n if (item && this.variables[0] === \"locator-date\" && item[\"locator-date\"]) {\n date_obj = item[\"locator-date\"];\n }\n }\n }\n state.tmp.date_object = date_obj;\n //\n // Call a function here to analyze the\n // data and set the name of the date-part that\n // should collapse for this range, if any.\n //\n // (1) build a filtered list, in y-m-d order,\n // consisting only of items that are (a) in the\n // date-parts and (b) in the *_end data.\n // (note to self: remember that season is a\n // fallback var when month and day are empty)\n \n //if (\"undefined\" === typeof this.dateparts) {\n // this.dateparts = [\"year\", \"month\", \"day\"];\n //}\n len = this.dateparts.length;\n for (pos = 0; pos < len; pos += 1) {\n part = this.dateparts[pos];\n if (\"undefined\" !== typeof state.tmp.date_object[(part + \"_end\")]) {\n dp.push(part);\n } else if (part === \"month\" && \"undefined\" !== typeof state.tmp.date_object.season_end) {\n dp.push(part);\n }\n }\n dpx = [];\n parts = [\"year\", \"month\", \"day\"];\n len = parts.length;\n for (pos = 0; pos < len; pos += 1) {\n if (dp.indexOf(parts[pos]) > -1) {\n dpx.push(parts[pos]);\n }\n }\n dp = dpx.slice();\n //\n // (2) Reverse the list and step through in\n // reverse order, popping each item if the\n // primary and *_end data match.\n mypos = 2;\n len = dp.length;\n for (pos = 0; pos < len; pos += 1) {\n part = dp[pos];\n start = state.tmp.date_object[part];\n end = state.tmp.date_object[(part + \"_end\")];\n if (start !== end) {\n mypos = pos;\n break;\n }\n }\n \n //\n // (3) When finished, the first item in the\n // list, if any, is the date-part where\n // the collapse should occur.\n\n // XXXXX: was that it?\n state.tmp.date_collapse_at = dp.slice(mypos);\n //\n // The collapse itself will be done by appending\n // string output for the date, less suffix,\n // placing a delimiter on output, then then\n // doing the *_end of the range, dropping only\n // the prefix. That should give us concise expressions\n // of ranges.\n //\n // Numeric dates should not collapse, though,\n // and should probably use a slash delimiter.\n // Scope for configurability will remain (all over\n // the place), but this will do to get this feature\n // started.\n //\n } else {\n state.tmp.date_object = false;\n }\n };\n }\n this.execs.push(func);\n\n // newoutput\n func = function (state, Item) {\n if (!Item[this.variables[0]]) {\n return;\n }\n state.output.startTag(\"date\", this);\n if (this.variables[0] === \"issued\"\n && (Item.type === \"legal_case\" || Item.type === \"legislation\")\n && state.opt.disable_duplicate_year_suppression.indexOf(Item.country) === -1\n && !state.tmp.extension\n && \"\" + Item[\"collection-number\"] === \"\" + state.tmp.date_object.year\n && this.dateparts.length === 1\n && this.dateparts[0] === \"year\") {\n\n // Set up to (maybe) suppress the year if we're not sorting, and\n // it's the same as the collection-number, and we would render\n // only the year, with not month or day, and this is a legal_case item.\n // We save a pointer to the blob parent and its position here. The\n // blob will be popped from output if at the end of processing for\n // this cite we find that we have rendered the collection-number\n // variable also.\n for (var key in state.tmp.date_object) {\n if (state.tmp.date_object.hasOwnProperty(key)) {\n if (key.slice(0, 4) === \"year\") {\n state.tmp.issued_date = {};\n var lst = state.output.current.mystack.slice(-2)[0].blobs;\n state.tmp.issued_date.list = lst;\n state.tmp.issued_date.pos = lst.length - 1;\n }\n }\n }\n }\n };\n this.execs.push(func);\n }\n\n if (!state.build.extension && (this.tokentype === CSL.END || this.tokentype === CSL.SINGLETON)) {\n // mergeoutput\n func = function (state, Item) {\n if (!Item[this.variables[0]]) {\n return;\n }\n state.output.endTag();\n };\n this.execs.push(func);\n }\n target.push(this);\n\n if (this.tokentype === CSL.END || this.tokentype === CSL.SINGLETON) {\n if (!state.build.extension) {\n CSL.Util.substituteEnd.call(this, state, target);\n }\n }\n }\n};\n\n/*global CSL: true */\n\nCSL.Node[\"date-part\"] = {\n build: function (state, target) {\n var func, pos, len, first_date, value, value_end, real, have_collapsed, invoked, precondition, known_year, bc, ad, bc_end, ad_end, ready, curr, dcurr, number, num, formatter, item, blob;\n if (!this.strings.form) {\n this.strings.form = \"long\";\n }\n // used in node_date, to send a list of rendering date parts\n // to node_key, for dates embedded in macros.\n state.build.date_parts.push(this.strings.name);\n //\n // Set delimiter here, if poss.\n //\n\n var date_variable = state.build.date_variables[0];\n\n function formatAndStrip(myform, gender, val) {\n if (!val) {\n return val;\n }\n val = \"\" + CSL.Util.Dates[this.strings.name][myform](state, val, gender, this.default_locale);\n if (\"month\" === this.strings.name) {\n if (state.tmp.strip_periods) {\n val = val.replace(/\\./g, \"\");\n } else {\n for (var i = 0, ilen = this.decorations.length; i < ilen; i += 1) {\n if (\"@strip-periods\" === this.decorations[i][0] && \"true\" === this.decorations[i][1]) {\n val = val.replace(/\\./g, \"\");\n break;\n }\n }\n }\n }\n return val;\n }\n\n func = function (state, Item) {\n\n if (!state.tmp.date_object) {\n return;\n } else {\n state.tmp.probably_rendered_something = true;\n }\n\n var last_string_output = \"\";\n\n first_date = true;\n value = \"\";\n value_end = \"\";\n state.tmp.donesies.push(this.strings.name);\n\n // Render literal only when year is included in date output\n if (state.tmp.date_object.literal && \"year\" === this.strings.name) {\n last_string_output = state.tmp.date_object.literal;\n state.output.append(state.tmp.date_object.literal, this);\n }\n\n if (state.tmp.date_object) {\n value = state.tmp.date_object[this.strings.name];\n value_end = state.tmp.date_object[(this.strings.name + \"_end\")];\n }\n if (\"year\" === this.strings.name && value === 0 && !state.tmp.suppress_decorations) {\n value = false;\n }\n real = !state.tmp.suppress_decorations;\n have_collapsed = state.tmp.have_collapsed;\n invoked = state[state.tmp.area].opt.collapse === \"year-suffix\" || state[state.tmp.area].opt.collapse === \"year-suffix-ranged\";\n precondition = state.opt[\"disambiguate-add-year-suffix\"];\n if (real && precondition && invoked) {\n state.tmp.years_used.push(value);\n known_year = state.tmp.last_years_used.length >= state.tmp.years_used.length;\n if (known_year && have_collapsed) {\n if (state.tmp.last_years_used[(state.tmp.years_used.length - 1)] === value) {\n value = false;\n }\n }\n }\n if (\"undefined\" !== typeof value) {\n bc = false;\n ad = false;\n bc_end = false;\n ad_end = false;\n if (\"year\" === this.strings.name) {\n if (parseInt(value, 10) < 500 && parseInt(value, 10) > 0) {\n ad = state.getTerm(\"ad\");\n }\n if (parseInt(value, 10) < 0) {\n bc = state.getTerm(\"bc\");\n value = (parseInt(value, 10) * -1);\n }\n if (value_end) {\n if (parseInt(value_end, 10) < 500 && parseInt(value_end, 10) > 0) {\n ad_end = state.getTerm(\"ad\");\n }\n if (parseInt(value_end, 10) < 0) {\n bc_end = state.getTerm(\"bc\");\n value_end = (parseInt(value_end, 10) * -1);\n }\n }\n }\n\n // For gendered locales\n var monthnameid = \"\"+state.tmp.date_object.month;\n while (monthnameid.length < 2) {\n monthnameid = \"0\"+monthnameid;\n }\n monthnameid = \"month-\"+monthnameid;\n var gender = state.locale[state.opt.lang][\"noun-genders\"][monthnameid];\n if (this.strings.form) {\n var myform = this.strings.form;\n var myform_end = this.strings.form;\n if (this.strings.name === \"day\") {\n if (myform === \"ordinal\" && state.locale[state.opt.lang].opts[\"limit-day-ordinals-to-day-1\"]) {\n if (value != 1) {\n myform = \"numeric\";\n }\n if (value_end != 1) {\n myform_end = \"numeric\";\n }\n }\n }\n value = formatAndStrip.call(this, myform, gender, value);\n value_end = formatAndStrip.call(this, myform_end, gender, value_end);\n }\n state.output.openLevel(\"empty\");\n if (state.tmp.date_collapse_at.length) {\n //state.output.startTag(this.strings.name,this);\n ready = true;\n len = state.tmp.date_collapse_at.length;\n for (pos = 0; pos < len; pos += 1) {\n item = state.tmp.date_collapse_at[pos];\n if (state.tmp.donesies.indexOf(item) === -1) {\n ready = false;\n break;\n }\n }\n if (ready) {\n if (\"\" + value_end !== \"0\") {\n if (state.dateput.queue.length === 0) {\n first_date = true;\n }\n\n // OK! So if the actual data has no month, day or season,\n // and we reach this block, then we can combine the dates\n // to a string, run minimial-two, and output the trailing\n // year right here. No impact on other functionality.\n\n if (state.opt[\"year-range-format\"]\n && state.opt[\"year-range-format\"] !== \"expanded\"\n && !state.tmp.date_object.day\n && !state.tmp.date_object.month\n && !state.tmp.date_object.season\n && this.strings.name === \"year\"\n && value && value_end) {\n\n // second argument adjusts collapse as required for years\n // See OSCOLA section 1.3.2\n value_end = state.fun.year_mangler(value + \"-\" + value_end, true);\n var range_delimiter = state.getTerm(\"year-range-delimiter\");\n value_end = value_end.slice(value_end.indexOf(range_delimiter) + 1);\n }\n last_string_output = value_end;\n state.dateput.append(value_end, this);\n if (first_date) {\n blob = state.dateput.current.value().blobs[0];\n if (blob) {\n blob.strings.prefix = \"\";\n }\n\n }\n }\n last_string_output = value;\n state.output.append(value, this);\n curr = state.output.current.value();\n blob = curr.blobs[(curr.blobs.length - 1)];\n if (blob) {\n blob.strings.suffix = \"\";\n }\n\n if (this.strings[\"range-delimiter\"]) {\n state.output.append(this.strings[\"range-delimiter\"]);\n } else {\n state.output.append(state.getTerm(\"year-range-delimiter\"), \"empty\");\n }\n state.dateput.closeLevel();\n dcurr = state.dateput.current.value();\n curr.blobs = curr.blobs.concat(dcurr);\n // This may leave the stack pointer on a lower level.\n // It's not a problem because the stack will be clobbered\n // when the queue is initialized by the next cs:date node.\n state.dateput.string(state, state.dateput.queue);\n state.dateput.openLevel(state.tmp.date_token);\n state.tmp.date_collapse_at = [];\n } else {\n last_string_output = value;\n state.output.append(value, this);\n // print(\"collapse_at: \"+state.tmp.date_collapse_at);\n if (state.tmp.date_collapse_at.indexOf(this.strings.name) > -1) {\n //\n // Use ghost dateput queue\n //\n if (\"\" + value_end !== \"0\") {\n //\n // XXXXX: It's a workaround. It's ugly.\n // There's another one above.\n //\n if (state.dateput.queue.length === 0) {\n first_date = true;\n }\n state.dateput.openLevel(\"empty\");\n last_string_output = value_end;\n state.dateput.append(value_end, this);\n if (first_date) {\n blob = state.dateput.current.value().blobs[0];\n if (blob) {\n blob.strings.prefix = \"\";\n }\n }\n if (bc) {\n last_string_output = bc;\n state.dateput.append(bc);\n }\n if (ad) {\n last_string_output = ad;\n state.dateput.append(ad);\n }\n state.dateput.closeLevel();\n }\n }\n }\n } else {\n last_string_output = value;\n state.output.append(value, this);\n }\n\n if (bc) {\n last_string_output = bc;\n state.output.append(bc);\n }\n if (ad) {\n last_string_output = ad;\n state.output.append(ad);\n }\n state.output.closeLevel();\n //state.output.endTag();\n } else if (\"month\" === this.strings.name) {\n // XXX The simpler solution here will be to\n // directly install season and season_end on\n // month, with a value of 13, 14, 15, 16, or\n // (to allow correct ranging with Down Under\n // dates) 17 or 18. That will allow ranging\n // to take place in the normal way. With this\n // \"approach\", it doesn't.\n //\n // No value for this target variable\n //\n if (state.tmp.date_object.season) {\n value = \"\" + state.tmp.date_object.season;\n if (value && value.match(/^[1-4]$/)) {\n // XXXXXXXXXXXXXXXXXXX was replace([false, false, true]);\n //state.tmp.group_context.replace([false, false, true]);\n state.tmp.group_context.tip.variable_success = true;\n last_string_output = \"winter\";\n state.output.append(state.getTerm((\"season-0\" + value)), this);\n } else if (value) {\n last_string_output = value;\n state.output.append(value, this);\n }\n }\n }\n state.tmp.value = [];\n if (Item[date_variable] && (value || state.tmp.have_collapsed) && !state.opt.has_year_suffix && \"year\" === this.strings.name && !state.tmp.just_looking) {\n if (state.registry.registry[Item.id] && state.registry.registry[Item.id].disambig.year_suffix !== false && !state.tmp.has_done_year_suffix) {\n state.tmp.has_done_year_suffix = true;\n last_string_output = \"x\";\n num = parseInt(state.registry.registry[Item.id].disambig.year_suffix, 10);\n // first argument is for number particle [a-zA-Z], never present on dates\n number = new CSL.NumericBlob(state, false, num, this, Item.id);\n this.successor_prefix = state[state.build.area].opt.layout_delimiter;\n this.splice_prefix = state[state.build.area].opt.layout_delimiter;\n formatter = new CSL.Util.Suffixator(CSL.SUFFIX_CHARS);\n number.setFormatter(formatter);\n if (state[state.tmp.area].opt.collapse === \"year-suffix-ranged\") {\n number.range_prefix = state.getTerm(\"citation-range-delimiter\");\n }\n if (state[state.tmp.area].opt.cite_group_delimiter) {\n number.successor_prefix = state[state.tmp.area].opt.cite_group_delimiter;\n } else if (state[state.tmp.area].opt[\"year-suffix-delimiter\"]) {\n number.successor_prefix = state[state.tmp.area].opt[\"year-suffix-delimiter\"];\n } else {\n number.successor_prefix = state[state.tmp.area].opt.layout_delimiter;\n }\n number.UGLY_DELIMITER_SUPPRESS_HACK = true;\n state.output.append(number, \"literal\");\n }\n }\n if (last_string_output && !state.tmp.group_context.tip.condition) {\n state.tmp.just_did_number = last_string_output.match(/[0-9]$/);\n if (state.output.current.tip.strings.suffix) {\n state.tmp.just_did_number = false;\n }\n }\n };\n this.execs.push(func);\n target.push(this);\n }\n};\n\n/*global CSL: true */\n\nCSL.Node[\"else-if\"] = {\n //\n // these function are the same as those in if, might just clone\n build: function (state, target) {\n CSL.Conditions.TopNode.call(this, state, target);\n target.push(this);\n },\n configure: function (state, pos) {\n CSL.Conditions.Configure.call(this, state, pos);\n }\n};\n\n/*global CSL: true */\n\nCSL.Node[\"else\"] = {\n build: function (state, target) {\n target.push(this);\n },\n configure: function (state, pos) {\n if (this.tokentype === CSL.START) {\n state.configure.fail[(state.configure.fail.length - 1)] = pos;\n }\n }\n};\n\n\n/*global CSL: true */\n\nCSL.Node[\"et-al\"] = {\n build: function (state, target) {\n if (state.build.area === \"citation\" || state.build.area === \"bibliography\") {\n var func = function (state) {\n state.tmp.etal_node = this;\n if (\"string\" === typeof this.strings.term) {\n state.tmp.etal_term = this.strings.term;\n }\n };\n this.execs.push(func);\n }\n target.push(this);\n }\n};\n\n/*global CSL: true */\n\nCSL.Node.group = {\n build: function (state, target, realGroup) {\n var func, execs;\n this.realGroup = realGroup;\n if (this.tokentype === CSL.START) {\n CSL.Util.substituteStart.call(this, state, target);\n if (state.build.substitute_level.value()) {\n state.build.substitute_level.replace((state.build.substitute_level.value() + 1));\n }\n if (!this.juris) {\n target.push(this);\n }\n\n // newoutput\n func = function (state) {\n state.output.startTag(\"group\", this);\n \n if (this.strings.label_form_override) {\n if (!state.tmp.group_context.tip.label_form) {\n state.tmp.group_context.tip.label_form = this.strings.label_form_override;\n }\n }\n \n if (this.strings.label_capitalize_if_first_override) {\n if (!state.tmp.group_context.tip.label_capitalize_if_first) {\n state.tmp.group_context.tip.label_capitalize_if_first = this.strings.label_capitalize_if_first_override;\n }\n }\n \n if (this.realGroup) {\n \n if (state.tmp.group_context.tip.condition) {\n CSL.UPDATE_GROUP_CONTEXT_CONDITION(state, this.strings.prefix, null, this);\n }\n \n var condition = false;\n var force_suppress = false;\n\n // XXX Can we do something better for length here?\n if (state.tmp.group_context.mystack.length) {\n state.output.current.value().parent = state.tmp.group_context.tip.output_tip;\n }\n \n // fieldcontextflag\n var label_form = state.tmp.group_context.tip.label_form;\n if (!label_form) {\n label_form = this.strings.label_form_override;\n }\n \n var label_capitalize_if_first = state.tmp.group_context.tip.label_capitalize_if_first;\n if (!label_capitalize_if_first) {\n label_capitalize_if_first = this.strings.label_capitalize_if_first;\n }\n if (state.tmp.group_context.tip.condition) {\n condition = state.tmp.group_context.tip.condition;\n force_suppress = state.tmp.group_context.tip.force_suppress;\n //force_suppress: false;\n } else if (this.strings.reject) {\n condition = {\n test: this.strings.reject,\n not: true\n };\n } else if (this.strings.require) {\n condition = {\n test: this.strings.require,\n not: false\n };\n }\n var context = {\n old_term_predecessor: state.tmp.term_predecessor,\n term_intended: false,\n variable_attempt: false,\n variable_success: false,\n variable_success_parent: state.tmp.group_context.tip.variable_success,\n output_tip: state.output.current.tip,\n label_form: label_form,\n label_static: state.tmp.group_context.tip.label_static,\n label_capitalize_if_first: label_capitalize_if_first,\n parallel_delimiter_override: this.strings.set_parallel_delimiter_override,\n parallel_delimiter_override_on_suppress: this.strings.set_parallel_delimiter_override_on_suppress,\n condition: condition,\n force_suppress: force_suppress,\n done_vars: state.tmp.group_context.tip.done_vars.slice()\n };\n if(this.non_parallel) {\n var non_parallel = state.tmp.group_context.tip.non_parallel;\n if (!non_parallel) {\n non_parallel = {};\n }\n Object.assign(non_parallel, this.non_parallel);\n context.non_parallel = non_parallel;\n }\n if(this.parallel_first) {\n var parallel_first = state.tmp.group_context.tip.parallel_first;\n if (!parallel_first) {\n parallel_first = {};\n }\n Object.assign(parallel_first, this.parallel_first);\n context.parallel_first = parallel_first;\n }\n if(this.parallel_last) {\n var parallel_last = state.tmp.group_context.tip.parallel_last;\n if (!parallel_last) {\n parallel_last = {};\n }\n Object.assign(parallel_last, this.parallel_last);\n context.parallel_last = parallel_last;\n }\n if (state.tmp.abbrev_trimmer && state.tmp.abbrev_trimmer.LAST_TO_FIRST && context.parallel_last) {\n if (!context.parallel_first) {\n context.parallel_first = {};\n }\n for (var varname in state.tmp.abbrev_trimmer.LAST_TO_FIRST) {\n if (context.parallel_last[varname]) {\n context.parallel_first[varname] = true;\n delete context.parallel_last[varname];\n }\n }\n }\n \n /*\n if(this.parallel_last_override) {\n var parallel_last_override = state.tmp.group_context.tip.parallel_last_override;\n if (!parallel_last_override) {\n parallel_last_override = {};\n }\n Object.assign(parallel_last_override, this.parallel_last_override);\n context.parallel_last_override = parallel_last_override;\n }\n */\n state.tmp.group_context.push(context);\n\n if (state.tmp.abbrev_trimmer && this.parallel_last_to_first) {\n if (!state.tmp.abbrev_trimmer.LAST_TO_FIRST) {\n state.tmp.abbrev_trimmer.LAST_TO_FIRST = {};\n }\n for (var varname in this.parallel_last_to_first) {\n state.tmp.abbrev_trimmer.LAST_TO_FIRST[varname] = true;\n }\n }\n \n //if (!state.tmp.just_looking) {\n // print(\" flags=\"+JSON.stringify(state.tmp.group_context.tip, params))\n //}\n }\n };\n //\n // Paranoia. Assure that this init function is the first executed.\n execs = [];\n execs.push(func);\n this.execs = execs.concat(this.execs);\n\n // \"Special handling\" for nodes that contain only\n // publisher and place, with no affixes. For such\n // nodes only, parallel publisher/place pairs\n // will be parsed out and properly joined, piggybacking on\n // join parameters set on cs:citation or cs:bibliography.\n if (this.strings[\"has-publisher-and-publisher-place\"]) {\n // Pass variable string values to the closing\n // tag via a global, iff they conform to expectations.\n state.build[\"publisher-special\"] = true;\n if (this.strings[\"subgroup-delimiter\"]) {\n // Set the handling function only if name-delimiter\n // is set on the parent cs:citation or cs:bibliography\n // node.\n func = function (state, Item) {\n if (Item.publisher && Item[\"publisher-place\"]) {\n var publisher_lst = Item.publisher.split(/;\\s*/);\n var publisher_place_lst = Item[\"publisher-place\"].split(/;\\s*/);\n if (publisher_lst.length > 1\n && publisher_lst.length === publisher_place_lst.length) {\n state.publisherOutput = new CSL.PublisherOutput(state, this);\n state.publisherOutput[\"publisher-list\"] = publisher_lst;\n state.publisherOutput[\"publisher-place-list\"] = publisher_place_lst;\n }\n }\n };\n this.execs.push(func);\n }\n }\n\n if (this.juris) {\n // \"Special handling\" for jurisdiction macros\n // We try to instantiate these as standalone token lists.\n // If available, the token list is executed,\n // the result is written directly into output,\n // and control returns here.\n\n // So we'll have something like this:\n // * expandMacro() in util_node.js flags juris- macros\n // on build. [DONE]\n // * Those are picked up here, and\n // - A runtime function attempts to fetch and instantiate\n // the macros in separate token lists under a segment\n // opened for the jurisdiction. We assume that the\n // jurisdiction has a full set of macros. That will need\n // to be enforced by validation. [DONE HERE, function is TODO]\n // - Success or failure is marked in a runtime flag object\n // (in citeproc.opt). [DONE]\n // - After the instantiation function comes a test, for\n // juris- macros only, which either runs diverted code,\n // or proceeds as per normal through the token list. [TODO]\n // I think that's all there is to it.\n \n // Code for fetching an instantiating?\n\n var choose_start = new CSL.Token(\"choose\", CSL.START);\n CSL.Node.choose.build.call(choose_start, state, target);\n \n var if_start = new CSL.Token(\"if\", CSL.START);\n\n func = (function (macroName) {\n return function (Item, item) {\n return CSL.INIT_JURISDICTION_MACROS(state, Item, item, macroName);\n }\n }(this.juris));\n \n if_start.tests ? {} : if_start.tests = [];\n if_start.tests.push(func);\n if_start.test = state.fun.match.any(if_start, state, if_start.tests);\n target.push(if_start);\n var text_node = new CSL.Token(\"text\", CSL.SINGLETON);\n func = function (state, Item, item) {\n // This will run the juris- token list.\n var itemItem = Item;\n if (item && item[\"best-jurisdiction\"] && this.juris === \"juris-locator\") {\n itemItem = item;\n }\n var next = 0;\n if (state.juris[itemItem[\"best-jurisdiction\"]][this.juris]) {\n while (next < state.juris[itemItem[\"best-jurisdiction\"]][this.juris].length) {\n next = CSL.tokenExec.call(state, state.juris[itemItem[\"best-jurisdiction\"]][this.juris][next], Item, item);\n }\n }\n };\n text_node.juris = this.juris;\n text_node.execs.push(func);\n target.push(text_node);\n\n var if_end = new CSL.Token(\"if\", CSL.END);\n CSL.Node[\"if\"].build.call(if_end, state, target);\n var else_start = new CSL.Token(\"else\", CSL.START);\n CSL.Node[\"else\"].build.call(else_start, state, target);\n }\n }\n\n if (this.tokentype === CSL.END) {\n \n // Unbundle and print publisher lists\n // Same constraints on creating the necessary function here\n // as above. The full content of the group formatting token\n // is apparently not available on the closing tag here,\n // hence the global flag on state.build.\n if (state.build[\"publisher-special\"]) {\n state.build[\"publisher-special\"] = false;\n func = function (state) {\n if (state.publisherOutput) {\n state.publisherOutput.render();\n state.publisherOutput = false;\n }\n };\n this.execs.push(func);\n }\n \n // quashnonfields\n func = function (state, Item, item) {\n if (!state.tmp.group_context.tip.condition) {\n if (state.output.current.tip.strings.suffix) {\n state.tmp.just_did_number = false;\n }\n }\n state.output.endTag();\n if (this.realGroup) {\n var flags = state.tmp.group_context.pop();\n if (flags.parallel_delimiter_override) {\n state.tmp.group_context.tip.parallel_delimiter_override = flags.parallel_delimiter_override;\n if (!state.tmp.just_looking && state.registry.registry[Item.id].master) {\n state.registry.registry[Item.id].parallel_delimiter_override = flags.parallel_delimiter_override;\n }\n }\n if (flags.parallel_delimiter_override_on_suppress) {\n state.tmp.group_context.tip.parallel_delimiter_override_on_suppress = flags.parallel_delimiter_override_on_suppress;\n }\n if (state.tmp.area === \"bibliography_sort\") {\n var citationNumberIdx = flags.done_vars.indexOf(\"citation-number\");\n if (this.strings.sort_direction && citationNumberIdx > -1 && state.tmp.group_context.length() == 1) {\n if (this.strings.sort_direction === CSL.DESCENDING) {\n state.bibliography_sort.opt.citation_number_sort_direction = CSL.DESCENDING;\n } else {\n state.bibliography_sort.opt.citation_number_sort_direction = CSL.ASCENDING;\n }\n flags.done_vars = flags.done_vars.slice(0, citationNumberIdx).concat(flags.done_vars.slice(citationNumberIdx + 1))\n }\n }\n //var params = [\"condition\", \"variable_success\", \"force_suppress\",\"term_intended\", \"variable_attempt\"]\n //if (!state.tmp.just_looking) {\n // print(\"POP parent=\"+JSON.stringify(state.tmp.group_context.tip, params))\n // print(\" flags=\"+JSON.stringify(flags, params));\n //}\n if (flags.condition) {\n flags.force_suppress = CSL.EVALUATE_GROUP_CONDITION(state, flags);\n }\n if (state.tmp.group_context.tip.condition) {\n state.tmp.group_context.tip.force_suppress = flags.force_suppress;\n }\n \n if (!flags.force_suppress && (flags.variable_success || (flags.term_intended && !flags.variable_attempt))) {\n if (!this.isJurisLocatorLabel) {\n state.tmp.group_context.tip.variable_success = true;\n }\n var blobs = state.output.current.value().blobs;\n var pos = state.output.current.value().blobs.length - 1;\n\n if (!state.tmp.just_looking && (flags.non_parallel || flags.parallel_last || flags.parallel_first || flags.parallel_delimiter_override || flags.parallel_delimiter_override_on_suppress)) {\n // flags.parallel_last\n // flags.parallel_first\n\n // Returns true ONLY if all variables listed on this group are repeats.\n var hasRepeat = state.parallel.checkRepeats(flags);\n if (hasRepeat) {\n if (blobs) {\n blobs.pop();\n }\n }\n if (state.tmp.cite_index > 0 && (hasRepeat || (!flags.parallel_first && !flags.parallel_last && !flags.non_parallel))) {\n //state.sys.print(`${state.tmp.cite_index} ${JSON.stringify(state.tmp.suppress_repeats, null, 2)}`)\n var info = state.tmp.suppress_repeats[state.tmp.cite_index-1];\n if (hasRepeat && flags.parallel_delimiter_override_on_suppress && (info.SIBLING || info.ORPHAN)) {\n state.output.queue.slice(-1)[0].parallel_delimiter = flags.parallel_delimiter_override_on_suppress;\n } else if (flags.parallel_delimiter_override && info.SIBLING) {\n state.output.queue.slice(-1)[0].parallel_delimiter = flags.parallel_delimiter_override;\n }\n }\n }\n } else {\n state.tmp.term_predecessor = flags.old_term_predecessor;\n state.tmp.group_context.tip.variable_attempt = flags.variable_attempt;\n if (flags.force_suppress && !state.tmp.group_context.tip.condition) {\n state.tmp.group_context.tip.variable_attempt = true;\n state.tmp.group_context.tip.variable_success = flags.variable_success_parent;\n }\n if (flags.force_suppress) {\n // 2019-04-15\n // This is removing variables done within the group we're leaveing from global\n // done_vars? How does that make sense?\n // Ah. This is a FAILURE. So removing from done_vars allows it to re-render\n // later in the cite if desired.\n // Currently no tests fail from removing the condition, but leaving it in.\n for (var i=0,ilen=flags.done_vars.length;i<ilen;i++) {\n var doneVar = flags.done_vars[i];\n for (var j=0,jlen=state.tmp.done_vars.length; j<jlen; j++) {\n if (state.tmp.done_vars[j] === doneVar) {\n state.tmp.done_vars = state.tmp.done_vars.slice(0, j).concat(state.tmp.done_vars.slice(j+1));\n }\n }\n }\n }\n if (state.output.current.value().blobs) {\n state.output.current.value().blobs.pop();\n }\n }\n }\n };\n this.execs.push(func);\n \n if (this.juris) {\n var else_end = new CSL.Token(\"else\", CSL.END);\n CSL.Node[\"else\"].build.call(else_end, state, target);\n var choose_end = new CSL.Token(\"choose\", CSL.END);\n CSL.Node.choose.build.call(choose_end, state, target);\n }\n }\n\n if (this.tokentype === CSL.END) {\n if (!this.juris) {\n target.push(this);\n }\n if (state.build.substitute_level.value()) {\n state.build.substitute_level.replace((state.build.substitute_level.value() - 1));\n }\n CSL.Util.substituteEnd.call(this, state, target);\n }\n }\n};\n\n/*global CSL: true */\n\nCSL.Node[\"if\"] = {\n build: function (state, target) {\n CSL.Conditions.TopNode.call(this, state, target);\n target.push(this);\n },\n configure: function (state, pos) {\n CSL.Conditions.Configure.call(this, state, pos);\n }\n};\n\n\nCSL.Node[\"conditions\"] = {\n build: function (state) {\n if (this.tokentype === CSL.START) {\n state.tmp.conditions.addMatch(this.match);\n }\n if (this.tokentype === CSL.END) {\n state.tmp.conditions.matchCombine();\n }\n }\n};\n\nCSL.Node[\"condition\"] = {\n build: function (state) {\n if (this.tokentype === CSL.SINGLETON) {\n var test = state.fun.match[this.match](this, state, this.tests);\n state.tmp.conditions.addTest(test);\n }\n }\n};\n\nCSL.Conditions = {};\n\nCSL.Conditions.TopNode = function (state) {\n var func;\n if (this.tokentype === CSL.START || this.tokentype === CSL.SINGLETON) {\n if (this.locale) {\n state.opt.lang = this.locale;\n }\n if (!this.tests || !this.tests.length) {\n // Set up the condition compiler with our current context\n state.tmp.conditions = new CSL.Conditions.Engine(state, this);\n } else {\n // The usual.\n this.test = state.fun.match[this.match](this, state, this.tests);\n }\n if (state.build.substitute_level.value() === 0) {\n func = function(state) {\n state.tmp.condition_counter++;\n }\n this.execs.push(func);\n }\n }\n if (this.tokentype === CSL.END || this.tokentype === CSL.SINGLETON) {\n if (state.build.substitute_level.value() === 0) {\n func = function (state) {\n state.tmp.condition_counter--;\n if (state.tmp.condition_lang_counter_arr.length > 0) {\n var counter = state.tmp.condition_lang_counter_arr.slice(-1)[0];\n if (counter === state.tmp.condition_counter) {\n state.opt.lang = state.tmp.condition_lang_val_arr.pop();\n state.tmp.condition_lang_counter_arr.pop();\n }\n }\n if (this.locale_default) {\n // Open output tag with locale marker\n state.output.current.value().old_locale = this.locale_default;\n state.output.closeLevel(\"empty\");\n state.opt.lang = this.locale_default;\n }\n };\n this.execs.push(func);\n }\n // closingjump\n func = function (state) {\n var next = this[state.tmp.jump.value()];\n return next;\n };\n this.execs.push(func);\n if (this.locale_default) {\n state.opt.lang = this.locale_default;\n }\n }\n};\n\nCSL.Conditions.Configure = function (state, pos) {\n if (this.tokentype === CSL.START) {\n // jump index on failure\n this.fail = state.configure.fail.slice(-1)[0];\n this.succeed = this.next;\n state.configure.fail[(state.configure.fail.length - 1)] = pos;\n } else if (this.tokentype === CSL.SINGLETON) {\n // jump index on failure\n this.fail = this.next;\n this.succeed = state.configure.succeed.slice(-1)[0];\n state.configure.fail[(state.configure.fail.length - 1)] = pos;\n } else {\n // jump index on success\n this.succeed = state.configure.succeed.slice(-1)[0];\n this.fail = this.next;\n }\n};\n\nCSL.Conditions.Engine = function (state, token) {\n this.token = token;\n this.state = state;\n};\n\nCSL.Conditions.Engine.prototype.addTest = function (test) {\n this.token.tests ? {} : this.token.tests = [];\n this.token.tests.push(test);\n};\n\nCSL.Conditions.Engine.prototype.addMatch = function (match) {\n this.token.match = match;\n};\n\nCSL.Conditions.Engine.prototype.matchCombine = function () {\n this.token.test = this.state.fun.match[this.token.match](this.token, this.state, this.token.tests);\n};\n\n/*global CSL: true */\n\nCSL.Node.info = {\n build: function (state) {\n if (this.tokentype === CSL.START) {\n state.build.skip = \"info\";\n } else {\n state.build.skip = false;\n }\n }\n};\n\n\n/*global CSL: true */\n\nCSL.Node.institution = {\n build: function (state, target) {\n if ([CSL.SINGLETON, CSL.START].indexOf(this.tokentype) > -1) {\n\n var func = function (state) {\n if (\"string\" === typeof this.strings.delimiter) {\n state.tmp.institution_delimiter = this.strings.delimiter;\n } else {\n state.tmp.institution_delimiter = state.tmp.name_delimiter;\n }\n\n // This is the same code for the same result as in node_name.js, \n // but when cs:institution comes on stream, it may produce\n // different results.\n if (\"text\" === state.inheritOpt(this, \"and\")) {\n this.and_term = state.getTerm(\"and\", \"long\", 0);\n } else if (\"symbol\" === state.inheritOpt(this, \"and\")) {\n if (state.opt.development_extensions.expect_and_symbol_form) {\n this.and_term = state.getTerm(\"and\", \"symbol\", 0);\n } else {\n this.and_term = \"&\";\n }\n } else if (\"none\" === state.inheritOpt(this, \"and\")) {\n this.and_term = state.tmp.institution_delimiter;\n }\n if (\"undefined\" === typeof this.and_term && state.tmp.and_term) {\n // this.and_term = state.getTerm(\"and\", \"long\", 0);\n this.and_term = state.tmp.and_term;\n }\n if (CSL.STARTSWITH_ROMANESQUE_REGEXP.test(this.and_term)) {\n this.and_prefix_single = \" \";\n this.and_prefix_multiple = \", \";\n if (\"string\" === typeof state.tmp.institution_delimiter) {\n this.and_prefix_multiple = state.tmp.institution_delimiter;\n }\n this.and_suffix = \" \";\n } else {\n this.and_prefix_single = \"\";\n this.and_prefix_multiple = \"\";\n this.and_suffix = \"\";\n }\n if (state.inheritOpt(this, \"delimiter-precedes-last\") === \"always\") {\n this.and_prefix_single = state.tmp.institution_delimiter;\n } else if (state.inheritOpt(this, \"delimiter-precedes-last\") === \"never\") {\n // Slightly fragile: could test for charset here to make\n // this more certain.\n if (this.and_prefix_multiple) {\n this.and_prefix_multiple = \" \";\n }\n }\n \n this.and = {};\n if (\"undefined\" !== typeof this.and_term) {\n state.output.append(this.and_term, \"empty\", true);\n this.and.single = state.output.pop();\n this.and.single.strings.prefix = this.and_prefix_single;\n this.and.single.strings.suffix = this.and_suffix;\n state.output.append(this.and_term, \"empty\", true);\n this.and.multiple = state.output.pop();\n this.and.multiple.strings.prefix = this.and_prefix_multiple;\n this.and.multiple.strings.suffix = this.and_suffix;\n } else if (\"undefined\" !== this.strings.delimiter) {\n this.and.single = new CSL.Blob(state.tmp.institution_delimiter);\n this.and.single.strings.prefix = \"\";\n this.and.single.strings.suffix = \"\";\n this.and.multiple = new CSL.Blob(state.tmp.institution_delimiter);\n this.and.multiple.strings.prefix = \"\";\n this.and.multiple.strings.suffix = \"\";\n }\n state.nameOutput.institution = this;\n };\n this.execs.push(func);\n }\n target.push(this);\n },\n configure: function (state) {\n if ([CSL.SINGLETON, CSL.START].indexOf(this.tokentype) > -1) {\n state.build.has_institution = true;\n }\n }\n};\n\n/*global CSL: true */\n\nCSL.Node[\"institution-part\"] = {\n build: function (state, target) {\n var func;\n if (\"long\" === this.strings.name) {\n if (this.strings[\"if-short\"]) {\n func = function (state) {\n state.nameOutput.institutionpart[\"long-with-short\"] = this;\n };\n } else {\n func = function (state) {\n state.nameOutput.institutionpart[\"long\"] = this;\n };\n }\n } else if (\"short\" === this.strings.name) {\n func = function (state) {\n state.nameOutput.institutionpart[\"short\"] = this;\n };\n }\n this.execs.push(func);\n target.push(this);\n }\n};\n\n/*global CSL: true */\n\nCSL.Node.key = {\n build: function (state, target) {\n \n target = state[state.build.root + \"_sort\"].tokens;\n\n var func;\n var debug = false;\n var start_key = new CSL.Token(\"key\", CSL.START);\n\n state.tmp.root = state.build.root;\n\n // The params object for build and runtime (tmp) really shouldn't have been separated.\n // Oh, well.\n start_key.strings[\"et-al-min\"] = state.inheritOpt(this, \"et-al-min\");\n start_key.strings[\"et-al-use-first\"] = state.inheritOpt(this, \"et-al-use-first\");\n start_key.strings[\"et-al-use-last\"] = state.inheritOpt(this, \"et-al-use-last\");\n\n\n // initialize done vars\n func = function (state) {\n state.tmp.done_vars = [];\n };\n start_key.execs.push(func);\n\n // initialize output queue\n func = function (state) {\n state.output.openLevel(\"empty\");\n };\n start_key.execs.push(func);\n\n // sort direction\n var sort_direction = [];\n if (this.strings.sort_direction === CSL.DESCENDING) {\n //print(\"sort: descending on \"+state.tmp.area);\n sort_direction.push(1);\n sort_direction.push(-1);\n } else {\n //print(\"sort: ascending\");\n sort_direction.push(-1);\n sort_direction.push(1);\n }\n state[state.build.area].opt.sort_directions.push(sort_direction);\n\n if (CSL.DATE_VARIABLES.indexOf(this.variables[0]) > -1) {\n state.build.date_key = true;\n }\n\n // et al init\n func = function (state) {\n state.tmp.sort_key_flag = true;\n //print(\"== key node function ==\");\n if (state.inheritOpt(this, \"et-al-min\")) {\n state.tmp[\"et-al-min\"] = state.inheritOpt(this, \"et-al-min\");\n }\n if (state.inheritOpt(this, \"et-al-use-first\")) {\n state.tmp[\"et-al-use-first\"] = state.inheritOpt(this, \"et-al-use-first\");\n }\n if (\"boolean\" === typeof state.inheritOpt(this, \"et-al-use-last\")) {\n state.tmp[\"et-al-use-last\"] = state.inheritOpt(this, \"et-al-use-last\");\n //print(\" set tmp et-al-use-last: \"+this.strings[\"et-al-use-last\"])\n }\n };\n start_key.execs.push(func);\n target.push(start_key);\n \n //\n // ops to initialize the key's output structures\n if (this.variables.length) {\n var variable = this.variables[0];\n if (CSL.NAME_VARIABLES.indexOf(variable) > -1) {\n //\n // Start tag\n var names_start_token = new CSL.Token(\"names\", CSL.START);\n names_start_token.tokentype = CSL.START;\n names_start_token.variables = this.variables;\n CSL.Node.names.build.call(names_start_token, state, target);\n //\n // Name tag\n var name_token = new CSL.Token(\"name\", CSL.SINGLETON);\n name_token.tokentype = CSL.SINGLETON;\n name_token.strings[\"name-as-sort-order\"] = \"all\";\n name_token.strings[\"sort-separator\"] = \" \";\n name_token.strings[\"et-al-use-last\"] = state.inheritOpt(this, \"et-al-use-last\");\n name_token.strings[\"et-al-min\"] = state.inheritOpt(this, \"et-al-min\");\n name_token.strings[\"et-al-use-first\"] = state.inheritOpt(this, \"et-al-use-first\");\n CSL.Node.name.build.call(name_token, state, target);\n //\n // Institution tag\n var institution_token = new CSL.Token(\"institution\", CSL.SINGLETON);\n institution_token.tokentype = CSL.SINGLETON;\n CSL.Node.institution.build.call(institution_token, state, target);\n //\n // End tag\n var names_end_token = new CSL.Token(\"names\", CSL.END);\n names_end_token.tokentype = CSL.END;\n CSL.Node.names.build.call(names_end_token, state, target);\n } else {\n var single_text = new CSL.Token(\"text\", CSL.SINGLETON);\n single_text.strings.sort_direction = this.strings.sort_direction;\n single_text.dateparts = this.dateparts;\n if (CSL.NUMERIC_VARIABLES.indexOf(variable) > -1) {\n // citation-number is virtualized. As a sort key it has no effect on registry\n // sort order per se, but if set to DESCENDING, it reverses the sequence of numbers representing\n // bib entries.\n if (variable === \"citation-number\") {\n func = function (state, Item) {\n if (state.tmp.area === \"bibliography_sort\") {\n if (this.strings.sort_direction === CSL.DESCENDING) {\n state.bibliography_sort.opt.citation_number_sort_direction = CSL.DESCENDING;\n } else {\n state.bibliography_sort.opt.citation_number_sort_direction = CSL.ASCENDING;\n }\n }\n if (state.tmp.area === \"citation_sort\" && state.bibliography_sort.tmp.citation_number_map) {\n var num = state.bibliography_sort.tmp.citation_number_map[state.registry.registry[Item.id].seq];\n } else {\n var num = state.registry.registry[Item.id].seq;\n }\n if (num) {\n // Code currently in util_number.js\n num = CSL.Util.padding(\"\" + num);\n }\n state.output.append(num, this);\n };\n } else {\n func = function (state, Item) {\n var num = false;\n num = Item[variable];\n // XXX What if this is NaN?\n if (num) {\n // Code currently in util_number.js\n num = CSL.Util.padding(num);\n }\n state.output.append(num, this);\n };\n }\n } else if (variable === \"citation-label\") {\n func = function (state, Item) {\n var trigraph = state.getCitationLabel(Item);\n state.output.append(trigraph, this);\n };\n } else if (CSL.DATE_VARIABLES.indexOf(variable) > -1) {\n func = CSL.dateAsSortKey;\n single_text.variables = this.variables;\n } else if (\"title\" === variable) {\n var abbrevfam = \"title\";\n var abbrfall = false;\n var altvar = false;\n var transfall = true;\n func = state.transform.getOutputFunction(this.variables, abbrevfam, abbrfall, altvar, transfall);\n } else if (\"court-class\" === variable) {\n func = function(state, Item, item) {\n CSL.INIT_JURISDICTION_MACROS(state, Item, item, \"juris-main\")\n // true is for sortKey mode\n var cls = CSL.GET_COURT_CLASS(state, Item, true);\n state.output.append(cls, \"empty\");\n }\n } else {\n func = function (state, Item) {\n var varval = Item[variable];\n state.output.append(varval, \"empty\");\n };\n }\n single_text.execs.push(func);\n target.push(single_text);\n }\n } else { // macro\n //\n // if it's not a variable, it's a macro\n var token = new CSL.Token(\"text\", CSL.SINGLETON);\n token.strings.sort_direction = this.strings.sort_direction;\n token.postponed_macro = this.postponed_macro;\n CSL.expandMacro.call(state, token, target);\n }\n //\n // ops to output the key string result to an array go\n // on the closing \"key\" tag before it is pushed.\n // Do not close the level.\n var end_key = new CSL.Token(\"key\", CSL.END);\n\n // Eliminated at revision 1.0.159.\n // Was causing non-fatal error \"wanted empty but found group\".\n // Possible contributor to weird \"PAGES\" bug?\n //func = function (state, Item) {\n //state.output.closeLevel(\"empty\");\n //};\n //end_key.execs.push(func);\n \n // store key for use\n func = function (state) {\n var keystring = state.output.string(state, state.output.queue);\n if (state.sys.normalizeUnicode) {\n keystring = state.sys.normalizeUnicode(keystring);\n }\n keystring = keystring ? (keystring.split(\" \").join(state.opt.sort_sep) + state.opt.sort_sep) : \"\";\n //SNIP-START\n if (debug) {\n CSL.debug(\"keystring: \" + keystring + \" \" + typeof keystring);\n }\n //print(\"keystring: (\" + keystring + \") \" + typeof keystring + \" \" + state.tmp.area);\n //SNIP-END\n //state.sys.print(\"keystring: (\" + keystring + \") \" + typeof keystring + \" \" + state.tmp.area);\n if (\"\" === keystring) {\n keystring = undefined;\n }\n if (\"string\" !== typeof keystring) {\n keystring = undefined;\n //state.tmp.empty_date = false;\n }\n state[state[state.tmp.area].root + \"_sort\"].keys.push(keystring);\n state.tmp.value = [];\n };\n end_key.execs.push(func);\n\n // Set year-suffix key on anything that looks like a date\n if (state.build.date_key) {\n if (state.build.area === \"citation\" && state.build.extension === \"_sort\") {\n // ascending sort always\n state[state.build.area].opt.sort_directions.push([-1,1]);\n func = function (state, Item) {\n // year-suffix Key\n var year_suffix = state.registry.registry[Item.id].disambig.year_suffix;\n if (!year_suffix) {\n year_suffix = 0;\n }\n var key = CSL.Util.padding(\"\" + year_suffix);\n state[state.tmp.area].keys.push(key);\n };\n end_key.execs.push(func);\n }\n state.build.date_key = false;\n }\n\n // reset key params\n func = function (state) {\n // state.tmp.name_quash = new Object();\n\n // XXX This should work, should be necessary, but doesn't and isn't.\n //state.output.closeLevel(\"empty\");\n\n state.tmp[\"et-al-min\"] = undefined;\n state.tmp[\"et-al-use-first\"] = undefined;\n state.tmp[\"et-al-use-last\"] = undefined;\n state.tmp.sort_key_flag = false;\n };\n end_key.execs.push(func);\n target.push(end_key);\n }\n};\n\n/*global CSL: true */\n\nCSL.Node.label = {\n build: function (state, target) {\n \n if (this.strings.term) {\n // Non-names labels\n var func = function (state, Item, item) {\n // Must accomplish this without touching strings\n // shared with the calling application: \"sub verbo\"\n // and \"sub-verbo\" must both pass, as they stand.\n //if (item && item.label === \"sub verbo\") {\n // item.label = \"sub-verbo\";\n //}\n // This is abstracted away, because the same\n // logic must be run in cs:names.\n var termtxt = CSL.evaluateLabel(this, state, Item, item);\n if (item && this.strings.term === \"locator\") {\n\n item.section_form_override = this.strings.form;\n\n }\n if (termtxt) {\n state.tmp.group_context.tip.term_intended = true;\n }\n CSL.UPDATE_GROUP_CONTEXT_CONDITION(state, termtxt, null, this);\n if (termtxt.indexOf(\"%s\") === -1) {\n // ^ Suppress output here if we have an embedded term\n if (this.strings.capitalize_if_first) {\n if (!state.tmp.term_predecessor && !(state.opt[\"class\"] === \"in-text\" && state.tmp.area === \"citation\")) {\n termtxt = CSL.Output.Formatters[\"capitalize-first\"](state, termtxt);\n }\n }\n state.output.append(termtxt, this);\n }\n };\n this.execs.push(func);\n } else {\n if (!this.strings.form) {\n this.strings.form = \"long\";\n }\n // Names labels\n // Picked up in names END\n var namevars = state.build.names_variables[state.build.names_variables.length-1];\n var namelabels = state.build.name_label[state.build.name_label.length-1];\n for (var i = 0, ilen = namevars.length; i < ilen; i += 1) {\n if (!namelabels[namevars[i]]) {\n namelabels[namevars[i]] = {};\n }\n }\n if (!state.build.name_flag) {\n for (var i = 0, ilen = namevars.length; i < ilen; i += 1) {\n namelabels[namevars[i]].before = this;\n }\n } else {\n for (var i = 0, ilen = namevars.length; i < ilen; i += 1) {\n namelabels[namevars[i]].after = this;\n }\n }\n }\n target.push(this);\n }\n};\n\n/*global CSL: true */\n\nCSL.Node.layout = {\n build: function (state, target) {\n var func, prefix_token, suffix_token, tok;\n\n function setSuffix() {\n if (state.build.area === \"bibliography\") {\n suffix_token = new CSL.Token(\"text\", CSL.SINGLETON);\n func = function(state) {\n // Suppress suffix on all but the last item in bibliography parallels\n if (!state.tmp.parallel_and_not_last) {\n var suffix;\n if (state.tmp.cite_affixes[state.tmp.area][state.tmp.last_cite_locale]) {\n suffix = state.tmp.cite_affixes[state.tmp.area][state.tmp.last_cite_locale].suffix;\n } else {\n suffix = state.bibliography.opt.layout_suffix;\n }\n\n // If @display is used, layout suffix is placed on the last\n // immediate child of the layout, which we assume will be a\n // @display group node.\n var topblob = state.output.current.value();\n if (state.opt.using_display) {\n topblob.blobs[topblob.blobs.length-1].strings.suffix = suffix;\n } else {\n topblob.strings.suffix = suffix;\n }\n }\n if (state.bibliography.opt[\"second-field-align\"]) {\n // closes bib_other\n state.output.endTag(\"bib_other\");\n }\n };\n suffix_token.execs.push(func);\n target.push(suffix_token);\n }\n }\n\n if (this.tokentype === CSL.START) {\n\n if (this.locale_raw) {\n state.build.current_default_locale = this.locale_raw;\n } else {\n state.build.current_default_locale = state.opt[\"default-locale\"];\n }\n\n func = function (state, Item, item) {\n if (state.opt.development_extensions.apply_citation_wrapper\n && state.sys.wrapCitationEntry\n && !state.tmp.just_looking\n && Item.system_id \n && state.tmp.area === \"citation\") { \n\n var cite_entry = new CSL.Token(\"group\", CSL.START);\n cite_entry.decorations = [[\"@cite\", \"entry\"]];\n state.output.startTag(\"cite_entry\", cite_entry);\n state.output.current.value().item_id = Item.system_id;\n if (item) {\n state.output.current.value().locator_txt = item.locator_txt;\n state.output.current.value().suffix_txt = item.suffix_txt;\n }\n }\n };\n this.execs.push(func);\n }\n\n // XXX Works, but using state.tmp looks wrong here? We're in the build layer ...\n if (this.tokentype === CSL.START && !state.tmp.cite_affixes[state.build.area]) {\n //\n // done_vars is used to prevent the repeated\n // rendering of variables\n //\n // initalize done vars\n func = function (state, Item, item) {\n\n state.tmp.done_vars = [];\n if (item && item[\"author-only\"]) {\n state.tmp.done_vars.push(\"locator\");\n }\n if (state.opt.suppressedJurisdictions[Item[\"country\"]]\n && Item[\"country\"]\n && [\"treaty\", \"patent\"].indexOf(Item.type) === -1) {\n \n state.tmp.done_vars.push(\"country\");\n }\n if (!state.tmp.just_looking && state.registry.registry[Item.id] && state.registry.registry[Item.id].parallel) {\n state.tmp.done_vars.push(\"first-reference-note-number\");\n }\n // trimmer is not available in getAmbiguousCite\n if (!state.tmp.just_looking && state.tmp.abbrev_trimmer && Item.jurisdiction) {\n for (var field in state.tmp.abbrev_trimmer.QUASHES[Item.jurisdiction]) {\n state.tmp.done_vars.push(field);\n }\n }\n\n //CSL.debug(\" === init rendered_name === \");\n state.tmp.rendered_name = false;\n };\n this.execs.push(func);\n // set opt delimiter\n func = function (state) {\n // just in case\n state.tmp.sort_key_flag = false;\n };\n this.execs.push(func);\n \n // reset nameset counter [all nodes]\n func = function (state) {\n state.tmp.nameset_counter = 0;\n };\n this.execs.push(func);\n\n func = function (state, Item) {\n var tok = new CSL.Token();\n state.output.openLevel(tok);\n };\n this.execs.push(func);\n target.push(this);\n\n if (state.build.area === \"citation\") {\n prefix_token = new CSL.Token(\"text\", CSL.SINGLETON);\n func = function (state, Item, item) {\n if (item && item.prefix) {\n var prefix = CSL.checkPrefixSpaceAppend(state, item.prefix);\n if (!state.tmp.just_looking) {\n prefix = state.output.checkNestedBrace.update(prefix);\n }\n var ignorePredecessor = CSL.checkIgnorePredecessor(state, prefix);\n state.output.append(prefix, this, false, ignorePredecessor);\n }\n };\n prefix_token.execs.push(func);\n target.push(prefix_token);\n }\n }\n\n // Cast token to be used in one of the configurations below.\n var my_tok;\n if (this.locale_raw) {\n my_tok = new CSL.Token(\"dummy\", CSL.START);\n my_tok.locale = this.locale_raw;\n my_tok.strings.delimiter = this.strings.delimiter;\n my_tok.strings.suffix = this.strings.suffix;\n if (!state.tmp.cite_affixes[state.build.area]) {\n state.tmp.cite_affixes[state.build.area] = {};\n }\n }\n\n if (this.tokentype === CSL.START) {\n state.build.layout_flag = true;\n \n // Only run the following once, to set up the final layout node ...\n if (!this.locale_raw) {\n //\n // save out decorations for flipflop processing [final node only]\n //\n state[state.tmp.area].opt.topdecor = [this.decorations];\n state[(state.tmp.area + \"_sort\")].opt.topdecor = [this.decorations];\n\n state[state.build.area].opt.layout_prefix = this.strings.prefix;\n state[state.build.area].opt.layout_suffix = this.strings.suffix;\n state[state.build.area].opt.layout_delimiter = this.strings.delimiter;\n\n state[state.build.area].opt.layout_decorations = this.decorations;\n \n // Only do this if we're running conditionals\n if (state.tmp.cite_affixes[state.build.area]) {\n // if build_layout_locale_flag is true,\n // write cs:else START to the token list.\n tok = new CSL.Token(\"else\", CSL.START);\n CSL.Node[\"else\"].build.call(tok, state, target);\n }\n\n } // !this.locale_raw\n\n // Conditionals\n if (this.locale_raw) {\n if (!state.build.layout_locale_flag) {\n // if layout_locale_flag is untrue,\n // write cs:choose START and cs:if START\n // to the token list.\n var choose_tok = new CSL.Token(\"choose\", CSL.START);\n CSL.Node.choose.build.call(choose_tok, state, target);\n my_tok.name = \"if\";\n CSL.Attributes[\"@locale-internal\"].call(my_tok, state, this.locale_raw);\n CSL.Node[\"if\"].build.call(my_tok, state, target);\n } else {\n // if build_layout_locale_flag is true,\n // write cs:else-if START to the token list.\n my_tok.name = \"else-if\";\n CSL.Attributes[\"@locale-internal\"].call(my_tok, state, this.locale_raw);\n CSL.Node[\"else-if\"].build.call(my_tok, state, target);\n }\n // cite_affixes for this node\n state.tmp.cite_affixes[state.build.area][my_tok.locale] = {};\n state.tmp.cite_affixes[state.build.area][my_tok.locale].delimiter = this.strings.delimiter;\n state.tmp.cite_affixes[state.build.area][my_tok.locale].suffix = this.strings.suffix;\n }\n }\n if (this.tokentype === CSL.END) {\n if (this.locale_raw) {\n setSuffix();\n if (!state.build.layout_locale_flag) {\n // If layout_locale_flag is untrue, write cs:if END\n // to the token list.\n my_tok.name = \"if\";\n my_tok.tokentype = CSL.END;\n CSL.Attributes[\"@locale-internal\"].call(my_tok, state, this.locale_raw);\n CSL.Node[\"if\"].build.call(my_tok, state, target);\n state.build.layout_locale_flag = true;\n } else {\n // If layout_locale_flag is true, write cs:else-if END\n // to the token list.\n my_tok.name = \"else-if\";\n my_tok.tokentype = CSL.END;\n CSL.Attributes[\"@locale-internal\"].call(my_tok, state, this.locale_raw);\n CSL.Node[\"else-if\"].build.call(my_tok, state, target);\n }\n }\n if (!this.locale_raw) {\n setSuffix();\n // Only add this if we're running conditionals\n if (state.tmp.cite_affixes[state.build.area]) {\n // If layout_locale_flag is true, write cs:else END\n // and cs:choose END to the token list.\n if (state.build.layout_locale_flag) {\n tok = new CSL.Token(\"else\", CSL.END);\n CSL.Node[\"else\"].build.call(tok, state, target);\n tok = new CSL.Token(\"choose\", CSL.END);\n CSL.Node.choose.build.call(tok, state, target);\n }\n }\n state.build_layout_locale_flag = true;\n if (state.build.area === \"citation\") {\n suffix_token = new CSL.Token(\"text\", CSL.SINGLETON);\n func = function (state, Item, item) {\n var sp;\n if (item && item.suffix) {\n var suffix = CSL.checkSuffixSpacePrepend(state, item.suffix);\n if (!state.tmp.just_looking) {\n suffix = state.output.checkNestedBrace.update(suffix);\n }\n state.output.append((suffix), this);\n }\n };\n suffix_token.execs.push(func);\n target.push(suffix_token);\n }\n\n // Closes wrapper token\n func = function (state) {\n state.output.closeLevel();\n };\n this.execs.push(func);\n func = function (state, Item) {\n if (state.opt.development_extensions.apply_citation_wrapper\n && state.sys.wrapCitationEntry\n && !state.tmp.just_looking\n && Item.system_id \n && state.tmp.area === \"citation\") { \n \n state.output.endTag(); // closes citation link wrapper\n }\n };\n this.execs.push(func);\n target.push(this);\n state.build.layout_flag = false;\n state.build.layout_locale_flag = false;\n } // !this.layout_raw\n }\n }\n};\n\n/*global CSL: true */\n\nCSL.Node.macro = {\n build: function () {}\n};\n\n/*global CSL: true */\n\nCSL.Node.alternative = {\n build: function (state, target) {\n if (this.tokentype === CSL.START) {\n\n var choose_tok = new CSL.Token(\"choose\", CSL.START);\n CSL.Node[\"choose\"].build.call(choose_tok, state, target);\n\n var if_tok = new CSL.Token(\"if\", CSL.START);\n CSL.Attributes[\"@alternative-node-internal\"].call(if_tok, state);\n CSL.Node[\"if\"].build.call(if_tok, state, target);\n\n var func = function(state, Item) {\n\n state.tmp.oldItem = Item;\n state.tmp.oldLang = state.opt.lang;\n state.tmp.abort_alternative = true;\n\n if (Item[\"language-name\"] && Item[\"language-name-original\"]) {\n\n var newItem = JSON.parse(JSON.stringify(Item));\n\n newItem.language = newItem[\"language-name\"];\n var langspec = CSL.localeResolve(newItem.language, state.opt[\"default-locale\"][0]);\n\n if (state.opt.multi_layout) {\n for (var i in state.opt.multi_layout) {\n var locale_list = state.opt.multi_layout[i];\n var gotlang = false;\n for (var j in locale_list) {\n var tryspec = locale_list[j];\n if (langspec.best === tryspec.best || langspec.base === tryspec.base || langspec.bare === tryspec.bare) {\n gotlang = locale_list[0].best;\n break;\n }\n }\n if (!gotlang) {\n gotlang = state.opt[\"default-locale\"][0];\n }\n state.opt.lang = gotlang;\n }\n }\n\n for (var key in newItem) {\n if ([\"id\", \"type\", \"language\", \"multi\"].indexOf(key) === -1 && key.slice(0, 4) !== \"alt-\") {\n if (newItem.multi && newItem.multi._keys[key]) {\n var deleteme = true;\n for (var lang in newItem.multi._keys[key]) {\n if (langspec.bare === lang.replace(/^([a-zA-Z]+).*/, \"$1\")) {\n deleteme = false;\n break;\n }\n }\n if (deleteme) {\n delete newItem[key];\n }\n } else {\n delete newItem[key];\n }\n }\n }\n for (var key in newItem) {\n if (key.slice(0, 4) === \"alt-\") {\n newItem[key.slice(4)] = newItem[key];\n state.tmp.abort_alternative = false;\n } else {\n if (newItem.multi && newItem.multi._keys) {\n if (!newItem[\"alt-\" + key] && newItem.multi._keys[key]) {\n if (newItem.multi._keys[key][langspec.best]) {\n newItem[key] = newItem.multi._keys[key][langspec.best];\n state.tmp.abort_alternative = false;\n } else if (newItem.multi._keys[key][langspec.base]) {\n newItem[key] = newItem.multi._keys[key][langspec.base];\n state.tmp.abort_alternative = false;\n } else if (newItem.multi._keys[key][langspec.bare]) {\n newItem[key] = newItem.multi._keys[key][langspec.bare];\n state.tmp.abort_alternative = false;\n }\n }\n }\n }\n }\n }\n\n state.output.openLevel(this);\n state.registry.refhash[Item.id] = newItem;\n state.nameOutput = new CSL.NameOutput(state, newItem);\n };\n this.execs.push(func);\n target.push(this);\n\n var choose_tok = new CSL.Token(\"choose\", CSL.START);\n CSL.Node[\"choose\"].build.call(choose_tok, state, target);\n\n var if_tok = new CSL.Token(\"if\", CSL.START);\n CSL.Attributes[\"@alternative-node-internal\"].call(if_tok, state);\n var func = function(state) {\n state.tmp.abort_alternative = true;\n }\n if_tok.execs.push(func);\n CSL.Node[\"if\"].build.call(if_tok, state, target);\n\n } else if (this.tokentype === CSL.END) {\n\n var if_tok = new CSL.Token(\"if\", CSL.END);\n CSL.Node[\"if\"].build.call(if_tok, state, target);\n\n var choose_tok = new CSL.Token(\"choose\", CSL.END);\n CSL.Node[\"choose\"].build.call(choose_tok, state, target);\n\n var func = function(state, Item) {\n state.output.closeLevel();\n state.registry.refhash[Item.id] = state.tmp.oldItem;\n state.opt.lang = state.tmp.oldLang;\n state.nameOutput = new CSL.NameOutput(state, state.tmp.oldItem);\n state.tmp.abort_alternative = false;\n };\n this.execs.push(func);\n target.push(this);\n\n var if_tok = new CSL.Token(\"if\", CSL.END);\n CSL.Node[\"if\"].build.call(if_tok, state, target);\n\n var choose_tok = new CSL.Token(\"choose\", CSL.END);\n CSL.Node[\"choose\"].build.call(choose_tok, state, target);\n\n }\n }\n};\n\nCSL.Node[\"alternative-text\"] = {\n build: function (state, target) {\n if (this.tokentype === CSL.SINGLETON) {\n // do stuff\n var func = function(state, Item) {\n var Item = state.refetchItem(Item.id);\n CSL.getCite.call(state, Item);\n };\n this.execs.push(func);\n }\n target.push(this);\n }\n};\n\n\n\n/*global CSL: true */\n\nCSL.NameOutput = function(state, Item, item) {\n this.debug = false;\n this.state = state;\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(1)\");\n }\n //SNIP-END\n this.Item = Item;\n this.item = item;\n this.nameset_base = 0;\n this.etal_spec = {};\n this._first_creator_variable = false;\n this._please_chop = false;\n};\n\nCSL.NameOutput.prototype.init = function (names) {\n this.requireMatch = names.requireMatch;\n if (this.state.tmp.term_predecessor) {\n this.state.tmp.subsequent_author_substitute_ok = false;\n }\n if (this.nameset_offset) {\n this.nameset_base = this.nameset_base + this.nameset_offset;\n }\n this.nameset_offset = 0;\n this.names = names;\n this.variables = names.variables;\n\n this.state.tmp.value = [];\n this.state.tmp.rendered_name = [];\n this.state.tmp.label_blob = false;\n this.state.tmp.etal_node = false;\n this.state.tmp.etal_term = false;\n for (var i = 0, ilen = this.variables.length; i < ilen; i += 1) {\n if (this.Item[this.variables[i]] && this.Item[this.variables[i]].length) {\n this.state.tmp.value = this.state.tmp.value.concat(this.Item[this.variables[i]]);\n }\n }\n this[\"et-al\"] = undefined;\n // REMOVE THIS\n this[\"with\"] = undefined;\n\n this.name = undefined;\n // long, long-with-short, short\n this.institutionpart = {};\n // family, given\n //this.namepart = {};\n // before, after\n //this.label = {};\n\n this.state.tmp.group_context.tip.variable_attempt = true;\n\n this.labelVariable = this.variables[0];\n\n if (!this.state.tmp.value.length) {\n return;\n }\n\n // Abort and proceed to the next substitution if a match is required,\n // two variables are called, and they do not match.\n var checkCommonTerm = this.checkCommonAuthor(this.requireMatch);\n if (checkCommonTerm) {\n this.state.tmp.can_substitute.pop();\n this.state.tmp.can_substitute.push(true);\n //this.state.tmp.group_context.mystack[this.state.tmp.group_context.mystack.length-1].variable_success = false;\n for (var i in this.variables) {\n var idx = this.state.tmp.done_vars.indexOf(this.variables[i]);\n if (idx > -1) {\n this.state.tmp.done_vars = this.state.tmp.done_vars.slice(0, idx).concat(this.state.tmp.done_vars.slice(i+1));\n }\n }\n this.state.tmp.common_term_match_fail = true;\n this.variables = [];\n }\n};\n\n\nCSL.NameOutput.prototype.reinit = function (names, labelVariable) {\n this.requireMatch = names.requireMatch;\n this.labelVariable = labelVariable;\n\n if (this.state.tmp.can_substitute.value()) {\n this.nameset_offset = 0;\n // What-all should be carried across from the subsidiary\n // names node, and on what conditions? For each attribute,\n // and decoration, is it an override, or is it additive?\n this.variables = names.variables;\n \n // Not sure why this is necessary. Guards against a memory leak perhaps?\n var oldval = this.state.tmp.value.slice();\n this.state.tmp.value = [];\n\n for (var i = 0, ilen = this.variables.length; i < ilen; i += 1) {\n if (this.Item[this.variables[i]] && this.Item[this.variables[i]].length) {\n this.state.tmp.value = this.state.tmp.value.concat(this.Item[this.variables[i]]);\n }\n }\n if (this.state.tmp.value.length) {\n this.state.tmp.can_substitute.replace(false, CSL.LITERAL);\n }\n\n this.state.tmp.value = oldval;\n\n }\n // Abort and proceed to the next substitution if a match is required,\n // two variables are called, and they do not match.\n var checkCommonTerm = this.checkCommonAuthor(this.requireMatch);\n if (checkCommonTerm) {\n this.state.tmp.can_substitute.pop();\n this.state.tmp.can_substitute.push(true);\n for (var i in this.variables) {\n var idx = this.state.tmp.done_vars.indexOf(this.variables[i]);\n if (idx > -1) {\n this.state.tmp.done_vars = this.state.tmp.done_vars.slice(0, idx).concat(this.state.tmp.done_vars.slice(i+1));\n }\n }\n this.variables = [];\n }\n};\n\nCSL.NameOutput.prototype.outputNames = function () {\n var i, ilen;\n var variables = this.variables;\n if (this.institution.and) {\n if (!this.institution.and.single.blobs || !this.institution.and.single.blobs.length) {\n this.institution.and.single.blobs = this.name.and.single.blobs;\n }\n if (!this.institution.and.multiple.blobs || !this.institution.and.multiple.blobs.length) {\n this.institution.and.multiple.blobs = this.name.and.multiple.blobs;\n }\n }\n\n this.variable_offset = {};\n if (this.family) {\n this.family_decor = CSL.Util.cloneToken(this.family);\n this.family_decor.strings.prefix = \"\";\n this.family_decor.strings.suffix = \"\";\n // Sets text-case value (text-case=\"title\" is suppressed for items\n // non-English with non-English value in Item.language)\n for (i = 0, ilen = this.family.execs.length; i < ilen; i += 1) {\n this.family.execs[i].call(this.family_decor, this.state, this.Item);\n }\n } else {\n this.family_decor = false;\n }\n\n if (this.given) {\n this.given_decor = CSL.Util.cloneToken(this.given);\n this.given_decor.strings.prefix = \"\";\n this.given_decor.strings.suffix = \"\";\n // Sets text-case value (text-case=\"title\" is suppressed for items\n // non-English with non-English value in Item.language)\n for (i = 0, ilen = this.given.execs.length; i < ilen; i += 1) {\n this.given.execs[i].call(this.given_decor, this.state, this.Item);\n }\n } else {\n this.given_decor = false;\n }\n\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(2)\");\n }\n //SNIP-END\n // util_names_etalconfig.js\n this.getEtAlConfig();\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(3)\");\n }\n //SNIP-END\n // util_names_divide.js\n this.divideAndTransliterateNames();\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(4)\");\n }\n //SNIP-END\n // util_names_truncate.js\n\n this.truncatePersonalNameLists();\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(5)\");\n }\n //SNIP-END\n\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(6)\");\n }\n //SNIP-END\n // util_names_disambig.js\n this.disambigNames();\n\n // util_names_constraints.js\n this.constrainNames();\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(7)\");\n }\n //SNIP-END\n // form=\"count\"\n if (this.name.strings.form === \"count\") {\n if (this.state.tmp.extension || this.names_count != 0) {\n this.state.output.append(this.names_count, \"empty\");\n this.state.tmp.group_context.tip.variable_success = true;\n }\n return;\n }\n\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(8)\");\n }\n //SNIP-END\n this.setEtAlParameters();\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(9)\");\n }\n //SNIP-END\n this.setCommonTerm(this.requireMatch);\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(10)\");\n }\n //SNIP-END\n this.renderAllNames();\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(11)\");\n }\n //SNIP-END\n var blob_list = [];\n for (i = 0, ilen = variables.length; i < ilen; i += 1) {\n var v = variables[i];\n var institution_sets = [];\n var institutions = false;\n var varblob = null;\n if (!this.state.opt.development_extensions.spoof_institutional_affiliations) {\n varblob = this._join([this.freeters[v]], \"\");\n } else {\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(11a)\");\n }\n //SNIP-END\n for (var j = 0, jlen = this.institutions[v].length; j < jlen; j += 1) {\n institution_sets.push(this.joinPersonsAndInstitutions([this.persons[v][j], this.institutions[v][j]]));\n }\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(11b)\");\n }\n //SNIP-END\n if (this.institutions[v].length) {\n var pos = this.nameset_base + this.variable_offset[v];\n if (this.freeters[v].length) {\n pos += 1;\n }\n institutions = this.joinInstitutionSets(institution_sets, pos);\n }\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(11c)\");\n }\n //SNIP-END\n var varblob = this.joinFreetersAndInstitutionSets([this.freeters[v], institutions]);\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(11d)\");\n }\n //SNIP-END\n }\n if (varblob) {\n // Apply labels, if any\n if (!this.state.tmp.extension) {\n varblob = this._applyLabels(varblob, v);\n }\n blob_list.push(varblob);\n }\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(11e)\");\n }\n //SNIP-END\n if (this.common_term) {\n break;\n }\n }\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(12)\");\n }\n //SNIP-END\n this.state.output.openLevel(\"empty\");\n this.state.output.current.value().strings.delimiter = this.state.inheritOpt(this.names, \"delimiter\", \"names-delimiter\");\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(13)\");\n }\n //SNIP-END\n for (i = 0, ilen = blob_list.length; i < ilen; i += 1) {\n // notSerious\n this.state.output.append(blob_list[i], \"literal\", true);\n }\n if (!this.state.tmp.just_looking && blob_list.length > 0) {\n this.state.tmp.probably_rendered_something = true;\n }\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(14)\");\n }\n //SNIP-END\n this.state.output.closeLevel(\"empty\");\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(15)\");\n }\n //SNIP-END\n var blob = this.state.output.pop();\n this.state.tmp.name_node.top = blob;\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(16)\");\n }\n //SNIP-END\n\n // Append will drop the names on the floor here if suppress-me is\n // set on element_trace.\n // Need to rescue the value for collapse comparison.\n var namesToken = CSL.Util.cloneToken(this.names);\n if (this.state.tmp.group_context.tip.condition) {\n CSL.UPDATE_GROUP_CONTEXT_CONDITION(this.state, this.names.strings.prefix, null, this.names);\n }\n this.state.output.append(blob, namesToken);\n if (this.state.tmp.term_predecessor_name) {\n this.state.tmp.term_predecessor = true;\n }\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(17)\");\n }\n //SNIP-END\n // Also used in CSL.Util.substituteEnd (which could do with\n // some cleanup at this writing).\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(18)\");\n }\n //SNIP-END\n if (variables[0] !== \"authority\") {\n // Just grab the string values in the name\n var name_node_string = [];\n var nameobjs = this.Item[variables[0]];\n if (nameobjs) {\n for (var i = 0, ilen = nameobjs.length; i < ilen; i += 1) {\n var substring = CSL.Util.Names.getRawName(nameobjs[i]);\n if (substring) {\n name_node_string.push(substring);\n }\n }\n }\n name_node_string = name_node_string.join(\", \");\n if (name_node_string) {\n this.state.tmp.name_node.string = name_node_string;\n }\n }\n // for classic support\n // This may be more convoluted than it needs to be. Or maybe not.\n //\n // Check for classic abbreviation\n //\n // If found, then (1) suppress title rendering, (2) replace the node\n // with the abbreviation output [and (3) do not run this._collapseAuthor() ?]\n if (this.state.tmp.name_node.string && !this.state.tmp.first_name_string) {\n this.state.tmp.first_name_string = this.state.tmp.name_node.string;\n }\n if (\"classic\" === this.Item.type) {\n if (this.state.tmp.first_name_string) {\n var author_title = [];\n author_title.push(this.state.tmp.first_name_string);\n if (this.Item.title) {\n author_title.push(this.Item.title);\n }\n author_title = author_title.join(\", \");\n if (author_title && this.state.sys.getAbbreviation) {\n if (this.state.sys.normalizeAbbrevsKey) {\n author_title = this.state.sys.normalizeAbbrevsKey(\"classic\", author_title);\n }\n this.state.transform.loadAbbreviation(\"default\", \"classic\", author_title, this.Item.language);\n if (this.state.transform.abbrevs[\"default\"].classic[author_title]) {\n this.state.tmp.done_vars.push(\"title\");\n this.state.output.append(this.state.transform.abbrevs[\"default\"].classic[author_title], \"empty\", true);\n blob = this.state.output.pop();\n\t\t\t\t this.state.tmp.name_node.top.blobs.pop();\n this.state.tmp.name_node.top.blobs.push(blob);\n }\n }\n }\n }\n\n // Let's try something clever here.\n this._collapseAuthor();\n\n // For name_SubstituteOnNamesSpanNamesSpanFail\n this.variables = [];\n \n // Reset stop-last after rendering\n this.state.tmp.authority_stop_last = 0;\n\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"(19)\");\n }\n //SNIP-END\n};\n\nCSL.NameOutput.prototype._applyLabels = function (blob, v) {\n var txt;\n if (!this.label || !this.label[this.labelVariable]) {\n return blob;\n }\n var plural = 0;\n var num = this.freeters_count[v] + this.institutions_count[v];\n if (num > 1) {\n plural = 1;\n } else {\n for (var i = 0, ilen = this.persons[v].length; i < ilen; i += 1) {\n num += this.persons_count[v][i];\n }\n if (num > 1) {\n plural = 1;\n }\n }\n // Some code duplication here, should be factored out.\n if (this.label[this.labelVariable].before) {\n if (\"number\" === typeof this.label[this.labelVariable].before.strings.plural) {\n plural = this.label[this.labelVariable].before.strings.plural;\n }\n txt = this._buildLabel(v, plural, \"before\", this.labelVariable);\n this.state.output.openLevel(\"empty\");\n this.state.output.append(txt, this.label[this.labelVariable].before, true);\n this.state.output.append(blob, \"literal\", true);\n this.state.output.closeLevel(\"empty\");\n blob = this.state.output.pop();\n } else if (this.label[this.labelVariable].after) {\n if (\"number\" === typeof this.label[this.labelVariable].after.strings.plural) {\n plural = this.label[this.labelVariable].after.strings.plural;\n }\n txt = this._buildLabel(v, plural, \"after\", this.labelVariable);\n this.state.output.openLevel(\"empty\");\n this.state.output.append(blob, \"literal\", true);\n this.state.output.append(txt, this.label[this.labelVariable].after, true);\n this.state.tmp.label_blob = this.state.output.pop();\n this.state.output.append(this.state.tmp.label_blob,\"literal\",true);\n this.state.output.closeLevel(\"empty\");\n blob = this.state.output.pop();\n }\n return blob;\n};\n\nCSL.NameOutput.prototype._buildLabel = function (term, plural, position, v) {\n if (this.common_term) {\n term = this.common_term;\n }\n\n var ret = false;\n var node = this.label[v][position];\n if (node) {\n ret = CSL.castLabel(this.state, node, term, plural, CSL.TOLERANT);\n }\n return ret;\n};\n\n\nCSL.NameOutput.prototype._collapseAuthor = function () {\n var myqueue, mystr, oldchars;\n // collapse can be undefined, an array of length zero, and probably\n // other things ... ugh.\n if (this.state.tmp.name_node.top.blobs.length === 0) {\n return;\n }\n if (this.nameset_base === 0 && this.Item[this.variables[0]] && !this._first_creator_variable) {\n this._first_creator_variable = this.variables[0];\n }\n if ((this.state[this.state.tmp.area].opt.collapse\n && this.state[this.state.tmp.area].opt.collapse.length)\n || (this.state[this.state.tmp.area].opt.cite_group_delimiter \n && this.state[this.state.tmp.area].opt.cite_group_delimiter.length)) {\n\n if (this.state.tmp.authorstring_request) {\n // Avoid running this on every call to getAmbiguousCite()?\n mystr = \"\";\n myqueue = this.state.tmp.name_node.top.blobs.slice(-1)[0].blobs;\n oldchars = this.state.tmp.offset_characters;\n if (myqueue) {\n mystr = this.state.output.string(this.state, myqueue, false);\n }\n // Avoid side-effects on character counting: we're only interested\n // in the final rendering.\n this.state.tmp.offset_characters = oldchars;\n this.state.registry.authorstrings[this.Item.id] = mystr;\n } else if (!this.state.tmp.just_looking\n && !this.state.tmp.suppress_decorations && ((this.state[this.state.tmp.area].opt.collapse && this.state[this.state.tmp.area].opt.collapse.length) || this.state[this.state.tmp.area].opt.cite_group_delimiter && this.state[this.state.tmp.area].opt.cite_group_delimiter)) {\n // XX1 this.state.sys.print(\"RENDER: \"+this.Item.id);\n mystr = \"\";\n myqueue = this.state.tmp.name_node.top.blobs.slice(-1)[0].blobs;\n oldchars = this.state.tmp.offset_characters;\n if (myqueue) {\n mystr = this.state.output.string(this.state, myqueue, false);\n }\n if (mystr === this.state.tmp.last_primary_names_string) {\n if (this.item[\"suppress-author\"] || (this.state[this.state.tmp.area].opt.collapse && this.state[this.state.tmp.area].opt.collapse.length)) {\n // XX1 this.state.sys.print(\" CUT!\");\n this.state.tmp.name_node.top.blobs.pop();\n this.state.tmp.name_node.children = [];\n // If popped, avoid side-effects on character counting: we're only interested\n // in things that actually render.\n this.state.tmp.offset_characters = oldchars;\n }\n // Needed\n if (this.state[this.state.tmp.area].opt.cite_group_delimiter && this.state[this.state.tmp.area].opt.cite_group_delimiter) {\n this.state.tmp.use_cite_group_delimiter = true;\n }\n } else {\n // XX1 this.state.sys.print(\"remembering: \"+mystr);\n this.state.tmp.last_primary_names_string = mystr;\n // XXXXX A little more precision would be nice.\n // This will clobber variable=\"author editor\" as well as variable=\"author\".\n\n if (this.variables.indexOf(this._first_creator_variable) > -1 && this.item && this.item[\"suppress-author\"] && this.Item.type !== \"legal_case\") {\n this.state.tmp.name_node.top.blobs.pop();\n this.state.tmp.name_node.children = [];\n // If popped, avoid side-effects on character counting: we're only interested\n // in things that actually render.\n this.state.tmp.offset_characters = oldchars;\n\n // A wild guess, but will usually be correct\n this.state.tmp.term_predecessor = false;\n }\n // Arcane and probably unnecessarily complicated?\n this.state.tmp.have_collapsed = false;\n // Needed\n if (this.state[this.state.tmp.area].opt.cite_group_delimiter && this.state[this.state.tmp.area].opt.cite_group_delimiter) {\n this.state.tmp.use_cite_group_delimiter = false;\n }\n }\n }\n }\n};\n\n/*\nCSL.NameOutput.prototype.suppressNames = function() {\n suppress_condition = suppress_min && display_names.length >= suppress_min;\n if (suppress_condition) {\n continue;\n }\n}\n*/\n\n/*global CSL: true */\n\nCSL.NameOutput.prototype.isPerson = function (value) {\n if (value.literal\n || (!value.given && value.family && value.isInstitution)) {\n \n return false;\n } else {\n return true;\n }\n};\n\n/*global CSL: true */\n\nCSL.NameOutput.prototype.truncatePersonalNameLists = function () {\n var v, i, ilen, j, jlen, chopvar, values;\n // XXX Before truncation, make a note of the original number\n // of names, for use in et-al evaluation.\n this.freeters_count = {};\n this.persons_count = {};\n this.institutions_count = {};\n // By key is okay here, as we don't care about sequence.\n for (v in this.freeters) {\n if (this.freeters.hasOwnProperty(v)) {\n this.freeters_count[v] = this.freeters[v].length;\n this.freeters[v] = this._truncateNameList(this.freeters, v);\n }\n }\n\n for (v in this.persons) {\n if (this.persons.hasOwnProperty(v)) {\n this.institutions_count[v] = this.institutions[v].length;\n this._truncateNameList(this.institutions, v);\n this.persons[v] = this.persons[v].slice(0, this.institutions[v].length);\n this.persons_count[v] = [];\n for (j = 0, jlen = this.persons[v].length; j < jlen; j += 1) {\n this.persons_count[v][j] = this.persons[v][j].length;\n this.persons[v][j] = this._truncateNameList(this.persons, v, j);\n }\n }\n }\n if (this.state.opt.development_extensions.etal_min_etal_usefirst_hack\n && this.etal_min === 1 && this.etal_use_first === 1 \n && !(this.state.tmp.extension\n || this.state.tmp.just_looking)) {\n chopvar = v;\n } else {\n chopvar = false;\n }\n if (chopvar || this._please_chop) {\n for (i = 0, ilen = this.variables.length; i < ilen; i += 1) {\n v = this.variables[i];\n if (this.freeters[v].length) {\n if (this._please_chop === v) {\n this.freeters[v] = this.freeters[v].slice(1);\n this.freeters_count[v] += -1;\n this._please_chop = false;\n } else if (chopvar && !this._please_chop) {\n this.freeters[v] = this.freeters[v].slice(0, 1);\n this.freeters_count[v] = 1;\n this.institutions[v] = [];\n this.persons[v] = [];\n this._please_chop = chopvar;\n }\n }\n for (var j=0,jlen = this.persons[v].length;j<jlen;j++) {\n if (this.persons[v][j].length) {\n if (this._please_chop === v) {\n this.persons[v][j] = this.persons[v][j].slice(1);\n this.persons_count[v][j] += -1;\n this._please_chop = false;\n break;\n } else if (chopvar && !this._please_chop) {\n this.freeters[v] = this.persons[v][j].slice(0, 1);\n this.freeters_count[v] = 1;\n this.institutions[v] = [];\n this.persons[v] = [];\n values = [];\n this._please_chop = chopvar;\n break;\n }\n }\n }\n if (this.institutions[v].length) {\n if (this._please_chop === v) {\n this.institutions[v] = this.institutions[v].slice(1);\n this.institutions_count[v] += -1;\n this._please_chop = false;\n } else if (chopvar && !this._please_chop) {\n this.institutions[v] = this.institutions[v].slice(0, 1);\n this.institutions_count[v] = 1;\n values = [];\n this._please_chop = chopvar;\n }\n }\n }\n }\n\n // Transliteration and abbreviation mapping\n\n // Hmm. This could produce three lists for each nameset:\n // - primary (transformed in place)\n // - secondary\n // - tertiary\n // with items that produce no result in the secondary and tertiary\n // transforms set to false. Maybe.\n\n // Actually that would be insane, so forget it.\n // What we need is to add suitable parameters to getName(), and merge\n // the single-name-level operations below into that function. Then the\n // operation can be applied in util_names_render.js, and the logic\n // becomes very similar to what we already have running in util_transform.js.\n\n/*\n for (v in this.freeters) {\n this._transformNameset(this.freeters[v]);\n }\n for (v in this.persons) {\n for (i = 0, ilen = this.persons[v].length; i < ilen; i += 1) {\n this._transformNameset(this.persons[v][i]);\n }\n this._transformNameset(this.institutions[v]);\n }\n*/\n\n // Could also be factored out to a separate function for clarity.\n // ???? XXX Does this belong?\n for (i = 0, ilen = this.variables.length; i < ilen; i += 1) {\n if (this.institutions[v].length) {\n this.nameset_offset += 1;\n }\n for (var j=0,jlen=this.persons[v].length;j<jlen;j++) {\n if (this.persons[v][j].length) {\n this.nameset_offset += 1;\n }\n // this.institutions[v][i] = this._splitInstitution(this.institutions[v][i], v, i);\n }\n }\n};\n\nCSL.NameOutput.prototype._truncateNameList = function (container, variable, index) {\n var lst;\n if (\"undefined\" === typeof index) {\n lst = container[variable];\n } else {\n lst = container[variable][index];\n }\n if (this.state[this.state[this.state.tmp.area].root].opt.max_number_of_names \n && lst.length > 50 \n && lst.length > (this.state[this.state[this.state.tmp.area].root].opt.max_number_of_names + 2)) {\n\n // Preserve the last name in the list, in case we're rendering with a PI ellipsis (et-al-use-last)\n var limit = this.state[this.state[this.state.tmp.area].root].opt.max_number_of_names;\n lst = lst.slice(0, limit+1).concat(lst.slice(-1));\n }\n return lst;\n};\n\n\n/*global CSL: true */\n\nCSL.NameOutput.prototype.divideAndTransliterateNames = function () {\n var i, ilen, j, jlen;\n var Item = this.Item;\n var variables = this.variables;\n this.varnames = variables.slice();\n this.freeters = {};\n this.persons = {};\n this.institutions = {};\n for (i = 0, ilen = variables.length; i < ilen; i += 1) {\n var v = variables[i];\n this.variable_offset[v] = this.nameset_offset;\n var values = this._normalizeVariableValue(Item, v);\n if (this.name.strings[\"suppress-min\"] && values.length >= this.name.strings[\"suppress-min\"]) {\n values = [];\n }\n if (this.name.strings[\"suppress-max\"] && values.length <= this.name.strings[\"suppress-max\"]) {\n values = [];\n }\n this._getFreeters(v, values);\n this._getPersonsAndInstitutions(v, values);\n if (this.state.opt.development_extensions.spoof_institutional_affiliations) {\n if (this.name.strings[\"suppress-min\"] === 0) {\n this.freeters[v] = [];\n for (j = 0, jlen = this.persons[v].length; j < jlen; j += 1) {\n this.persons[v][j] = [];\n }\n } else if (this.institution.strings[\"suppress-min\"] === 0) {\n this.institutions[v] = [];\n this.freeters[v] = this.freeters[v].concat(this.persons[v]);\n for (j = 0, jlen = this.persons[v].length; j < jlen; j += 1) {\n for (var k = 0, klen = this.persons[v][j].length; k < klen; k += 1) {\n this.freeters[v].push(this.persons[v][j][k]);\n }\n }\n this.persons[v] = [];\n }\n }\n }\n};\n\nCSL.NameOutput.prototype._normalizeVariableValue = function (Item, variable) {\n var names;\n if (\"string\" === typeof Item[variable] || \"number\" === typeof Item[variable]) {\n CSL.debug(\"name variable \\\"\" + variable + \"\\\" is string or number, not array. Attempting to fix.\");\n names = [{literal: Item[variable] + \"\"}];\n } else if (!Item[variable]) {\n names = [];\n } else if (\"number\" !== typeof Item[variable].length) {\n CSL.debug(\"name variable \\\"\" + variable + \"\\\" is object, not array. Attempting to fix.\");\n Item[variable] = [Item[variable]];\n names = Item[variable].slice();\n } else {\n names = Item[variable].slice();\n }\n return names;\n};\n\nCSL.NameOutput.prototype._getFreeters = function (v, values) {\n this.freeters[v] = [];\n if (this.state.opt.development_extensions.spoof_institutional_affiliations) {\n for (var i=values.length-1;i>-1;i--) {\n if (this.isPerson(values[i])) {\n var value = this._checkNickname(values.pop());\n if (value) {\n this.freeters[v].push(value);\n }\n } else {\n break;\n }\n }\n } else {\n for (var i=values.length-1;i>-1;i--) {\n var value = values.pop();\n if (this.isPerson(value)) {\n var value = this._checkNickname(value);\n }\n this.freeters[v].push(value);\n }\n }\n this.freeters[v].reverse();\n if (this.freeters[v].length) {\n this.nameset_offset += 1;\n }\n};\n\nCSL.NameOutput.prototype._getPersonsAndInstitutions = function (v, values) {\n this.persons[v] = [];\n this.institutions[v] = [];\n if (!this.state.opt.development_extensions.spoof_institutional_affiliations) {\n return;\n }\n var persons = [];\n var has_affiliates = false;\n var first = true;\n for (var i = values.length - 1; i > -1; i += -1) {\n if (this.isPerson(values[i])) {\n var value = this._checkNickname(values[i]);\n if (value) {\n persons.push(value);\n }\n } else {\n has_affiliates = true;\n this.institutions[v].push(values[i]);\n if (!first) {\n persons.reverse();\n this.persons[v].push(persons);\n persons = [];\n }\n first = false;\n }\n }\n if (has_affiliates) {\n persons.reverse();\n this.persons[v].push(persons);\n this.persons[v].reverse();\n this.institutions[v].reverse();\n }\n};\n\nCSL.NameOutput.prototype._clearValues = function (values) {\n for (var i = values.length - 1; i > -1; i += -1) {\n values.pop();\n }\n};\n\nCSL.NameOutput.prototype._checkNickname = function (name) {\n if ([\"interview\", \"personal_communication\"].indexOf(this.Item.type) > -1) {\n var author = \"\";\n author = CSL.Util.Names.getRawName(name);\n if (author && this.state.sys.getAbbreviation && !(this.item && this.item[\"suppress-author\"])) {\n var normalizedKey = author;\n if (this.state.sys.normalizeAbbrevsKey) {\n // The first argument does not have to be the exact variable name.\n normalizedKey = this.state.sys.normalizeAbbrevsKey(\"author\", author);\n }\n this.state.transform.loadAbbreviation(\"default\", \"nickname\", normalizedKey, this.Item.language);\n // XXX Why does this have to happen here?\n var myLocalName = this.state.transform.abbrevs[\"default\"].nickname[normalizedKey];\n if (myLocalName) {\n if (myLocalName === \"!here>>>\") {\n name = false;\n } else {\n name = {family:myLocalName,given:''};\n }\n }\n }\n }\n return name;\n};\n\n/*global CSL: true */\n\nCSL.NameOutput.prototype._purgeEmptyBlobs = function (blobs) {\n for (var i = blobs.length - 1; i > -1; i += -1) {\n if (!blobs[i] || blobs[i].length === 0 || !blobs[i].blobs.length) {\n blobs = blobs.slice(0, i).concat(blobs.slice(i + 1));\n }\n }\n return blobs;\n};\n\nCSL.NameOutput.prototype.joinPersons = function (blobs, pos, j, tokenname) {\n var ret;\n blobs = this._purgeEmptyBlobs(blobs);\n if (!tokenname) {\n tokenname = \"name\";\n }\n if (\"undefined\" === typeof j) {\n if (this.etal_spec[pos].freeters === 1) {\n ret = this._joinEtAl(blobs);\n } else if (this.etal_spec[pos].freeters === 2) {\n ret = this._joinEllipsis(blobs);\n } else if (!this.state.tmp.sort_key_flag) {\n ret = this._joinAnd(blobs);\n } else {\n ret = this._join(blobs, this.state.inheritOpt(this.name, \"delimiter\", \"name-delimiter\", \", \"));\n }\n } else {\n if (this.etal_spec[pos].persons[j] === 1) {\n ret = this._joinEtAl(blobs);\n } else if (this.etal_spec[pos].persons[j] === 2) {\n ret = this._joinEllipsis(blobs);\n } else if (!this.state.tmp.sort_key_flag) {\n ret = this._joinAnd(blobs);\n } else {\n ret = this._join(blobs, this.state.inheritOpt(this.name, \"delimiter\", \"name-delimiter\", \", \"));\n }\n }\n return ret;\n};\n\n\nCSL.NameOutput.prototype.joinInstitutionSets = function (blobs, pos) {\n var ret;\n blobs = this._purgeEmptyBlobs(blobs);\n if (this.etal_spec[pos].institutions === 1) {\n ret = this._joinEtAl(blobs, \"institution\");\n } else if (this.etal_spec[pos].institutions === 2) {\n ret = this._joinEllipsis(blobs, \"institution\");\n } else {\n ret = this._joinAnd(blobs);\n }\n return ret;\n};\n\n\nCSL.NameOutput.prototype.joinPersonsAndInstitutions = function (blobs) {\n //\n blobs = this._purgeEmptyBlobs(blobs);\n var ret = this._join(blobs, this.state.tmp.name_delimiter);\n ret.isInstitution = true;\n return ret;\n};\n\n// LEGACY\n// This should go away eventually\nCSL.NameOutput.prototype.joinFreetersAndInstitutionSets = function (blobs) {\n // Nothing, one or two, never more\n blobs = this._purgeEmptyBlobs(blobs);\n var ret = this._join(blobs, \"[never here]\", this[\"with\"].single, this[\"with\"].multiple);\n //var ret = this._join(blobs, \"\");\n return ret;\n};\n\nCSL.NameOutput.prototype._getAfterInvertedName = function(blobs, delimiter, finalJoin) {\n if (finalJoin && blobs.length > 1) {\n if (this.state.inheritOpt(this.name, \"delimiter-precedes-last\") === \"after-inverted-name\") {\n var prevBlob = blobs[blobs.length - 2];\n if (prevBlob.blobs.length > 0 && prevBlob.blobs[0].isInverted) {\n finalJoin.strings.prefix = delimiter;\n }\n }\n }\n return finalJoin;\n}\n\nCSL.NameOutput.prototype._getAndJoin = function (blobs, delimiter) {\n var finalJoin = false;\n if (blobs.length > 1) {\n var singleOrMultiple = \"single\";\n if (blobs.length > 2) {\n singleOrMultiple = \"multiple\";\n }\n if (blobs[blobs.length - 1].isInstitution) {\n finalJoin = this.institution.and[singleOrMultiple];\n } else {\n finalJoin = this.name.and[singleOrMultiple];\n }\n // finalJoin = new CSL.Blob(finalJoin);\n finalJoin = JSON.parse(JSON.stringify(finalJoin));\n finalJoin = this._getAfterInvertedName(blobs, delimiter, finalJoin);\n }\n return finalJoin;\n};\n\nCSL.NameOutput.prototype._joinEtAl = function (blobs) {\n var delimiter = this.state.inheritOpt(this.name, \"delimiter\", \"name-delimiter\", \", \");\n var blob = this._join(blobs, delimiter);\n \n // notSerious\n this.state.output.openLevel(this._getToken(\"name\"));\n // Delimiter is applied from separately saved source in this case,\n // for discriminate application of single and multiple joins.\n this.state.output.current.value().strings.delimiter = \"\";\n this.state.output.append(blob, \"literal\", true);\n if (blobs.length > 1) {\n this.state.output.append(this[\"et-al\"].multiple, \"literal\", true);\n } else if (blobs.length === 1) {\n this.state.output.append(this[\"et-al\"].single, \"literal\", true);\n }\n this.state.output.closeLevel();\n return this.state.output.pop();\n};\n\n\nCSL.NameOutput.prototype._joinEllipsis = function (blobs) {\n var delimiter = this.state.inheritOpt(this.name, \"delimiter\", \"name-delimiter\", \", \");\n var finalJoin = false;\n if (blobs.length > 1) {\n var singleOrMultiple = \"single\";\n if (blobs.length > 2) {\n singleOrMultiple = \"multiple\";\n }\n finalJoin = JSON.parse(JSON.stringify(this.name.ellipsis[singleOrMultiple]));\n finalJoin = this._getAfterInvertedName(blobs, delimiter , finalJoin);\n \n }\n return this._join(blobs, delimiter, finalJoin);\n};\n\nCSL.NameOutput.prototype._joinAnd = function (blobs) {\n var delimiter = this.state.inheritOpt(this.name, \"delimiter\", \"name-delimiter\", \", \");\n var finalJoin = this._getAndJoin(blobs, delimiter);\n return this._join(blobs, delimiter, finalJoin);\n};\n\n\nCSL.NameOutput.prototype._join = function (blobs, delimiter, finalJoin) {\n var i, ilen;\n if (!blobs) {\n return false;\n }\n blobs = this._purgeEmptyBlobs(blobs);\n if (!blobs.length) {\n return false;\n }\n if (blobs.length > 1) {\n if (blobs.length === 2) {\n if (!finalJoin) {\n blobs[0].strings.suffix += delimiter;\n } else {\n blobs = [blobs[0], finalJoin, blobs[1]];\n }\n } else {\n var offset;\n if (finalJoin) {\n offset = 1;\n } else {\n offset = 0;\n }\n var blob = blobs.pop();\n for (var i=0,ilen=blobs.length - offset;i<ilen;i++) {\n blobs[i].strings.suffix += delimiter;\n }\n blobs.push(finalJoin);\n blobs.push(blob);\n }\n }\n\n //this.state.output.openLevel(this._getToken(tokenname));\n this.state.output.openLevel();\n\n //this.state.output.openLevel(this._getToken(\"empty\"));\n // Delimiter is applied from separately saved source in this case,\n // for discriminate application of single and multiple joins.\n for (i = 0, ilen = blobs.length; i < ilen; i += 1) {\n this.state.output.append(blobs[i], false, true);\n }\n this.state.output.closeLevel();\n return this.state.output.pop();\n};\n\n\nCSL.NameOutput.prototype._getToken = function (tokenname) {\n var token = this[tokenname];\n if (tokenname === \"institution\") {\n var newtoken = new CSL.Token();\n // Which, hmm, is the same thing as \"empty\"\n // Oh, well.\n //newtoken.strings.prefix = token.prefix;\n //newtoken.strings.suffix = token.suffix;\n return newtoken;\n }\n return token;\n};\n\n/*global CSL: true */\n\nCSL.NameOutput.prototype.checkCommonAuthor = function(requireMatch) {\n if (!requireMatch) {\n return false;\n }\n var common_term = false;\n if (this.variables.length === 2) {\n var variables = this.variables;\n var varnames = variables.slice();\n varnames.sort();\n common_term = varnames.join(\"\");\n }\n if (!common_term) {\n return false;\n }\n var has_term = false;\n if (this.state.locale[this.state.opt.lang].terms[common_term]) {\n has_term = true;\n }\n if (!has_term) {\n this.state.tmp.done_vars.push(this.variables[0]);\n this.state.tmp.done_vars.push(this.variables[1]);\n return false;\n }\n var firstSet = this.Item[this.variables[0]];\n var secondSet = this.Item[this.variables[1]];\n var perfectMatch = this._compareNamesets(firstSet, secondSet);\n if (perfectMatch === true) {\n this.state.tmp.done_vars.push(this.variables[0]);\n this.state.tmp.done_vars.push(this.variables[1]);\n }\n // This may be counter-intuitive.\n // This check controls whether we will fail on the this attempt at rendering\n // and proceed with substitution. If the names match exactly (true), then\n // we do *not* want to abort and continue with substitution.\n return !perfectMatch;\n};\n\nCSL.NameOutput.prototype.setCommonTerm = function () {\n var variables = this.variables;\n var varnames = variables.slice();\n varnames.sort();\n this.common_term = varnames.join(\"\");\n // When no varnames are on offer\n if (!this.common_term) {\n return;\n }\n var has_term = false;\n if (this.label && this.label[this.variables[0]]) {\n if (this.label[this.variables[0]].before) {\n has_term = this.state.getTerm(this.common_term, this.label[this.variables[0]].before.strings.form, 0);\n } else if (this.label[this.variables[0]].after) {\n has_term = this.state.getTerm(this.common_term, this.label[this.variables[0]].after.strings.form, 0);\n }\n }\n\n // When there is no common term\n if (!this.state.locale[this.state.opt.lang].terms[this.common_term]\n || !has_term\n || this.variables.length < 2) {\n this.common_term = false;\n return;\n }\n var freeters_offset = 0;\n for (var i = 0, ilen = this.variables.length - 1; i < ilen; i += 1) {\n var v = this.variables[i];\n var vv = this.variables[i + 1];\n if (this.freeters[v].length || this.freeters[vv].length) {\n if (this.etal_spec[v].freeters !== this.etal_spec[vv].freeters\n || !this._compareNamesets(this.freeters[v], this.freeters[vv])) {\n this.common_term = false;\n return;\n }\n freeters_offset += 1;\n }\n if (this.persons[v].length !== this.persons[vv].length) {\n this.common_term = false;\n return;\n }\n for (var j = 0, jlen = this.persons[v].length; j < jlen; j += 1) {\n if (this.etal_spec[v].persons[j] !== this.etal_spec[vv].persons[j]\n || !this._compareNamesets(this.persons[v][j], this.persons[vv][j])) {\n this.common_term = false;\n return;\n }\n }\n }\n};\n\nCSL.NameOutput.prototype._compareNamesets = function (base_nameset, nameset) {\n if (!base_nameset || !nameset || base_nameset.length !== nameset.length) {\n return false;\n }\n for (var i = 0, ilen = nameset.length; i < ilen; i += 1) {\n for (var j = 0, jlen = CSL.NAME_PARTS.length; j < jlen; j += 1) {\n var part = CSL.NAME_PARTS[j];\n if (!base_nameset[i] || base_nameset[i][part] != nameset[i][part]) {\n return false;\n }\n }\n }\n return true;\n};\n\n/*global CSL: true */\n\nCSL.NameOutput.prototype.constrainNames = function () {\n // figure out how many names to include, in light of the disambig params\n //\n this.names_count = 0;\n //var pos = 0;\n var pos;\n for (var i = 0, ilen = this.variables.length; i < ilen; i += 1) {\n var v = this.variables[i];\n pos = this.nameset_base + i;\n // Constrain independent authors here\n if (this.freeters[v].length) {\n this.state.tmp.names_max.push(this.freeters[v].length, \"literal\");\n this._imposeNameConstraints(this.freeters, this.freeters_count, v, pos);\n this.names_count += this.freeters[v].length;\n }\n\n // Constrain institutions here\n if (this.institutions[v].length) {\n this.state.tmp.names_max.push(this.institutions[v].length, \"literal\");\n this._imposeNameConstraints(this.institutions, this.institutions_count, v, pos);\n this.persons[v] = this.persons[v].slice(0, this.institutions[v].length);\n this.names_count += this.institutions[v].length;\n }\n\n for (var j = 0, jlen = this.persons[v].length; j < jlen; j += 1) {\n // Constrain affiliated authors here\n if (this.persons[v][j].length) {\n this.state.tmp.names_max.push(this.persons[v][j].length, \"literal\");\n this._imposeNameConstraints(this.persons[v], this.persons_count[v], j, pos);\n this.names_count += this.persons[v][j].length;\n }\n }\n }\n};\n\nCSL.NameOutput.prototype._imposeNameConstraints = function (lst, count, key, pos) {\n // display_names starts as the original length of this list of names.\n var display_names = lst[key];\n var discretionary_names_length = this.state.tmp[\"et-al-min\"];\n \n // Mappings, to allow existing disambiguation machinery to\n // remain untouched.\n if (this.state.tmp.suppress_decorations) {\n if (this.state.tmp.disambig_request && this.state.tmp.disambig_request.names[pos]) {\n // Oh. Trouble.\n // state.tmp.nameset_counter is the number of the nameset\n // in the disambiguation try-sequence. Ouch.\n discretionary_names_length = this.state.tmp.disambig_request.names[pos];\n } else if (count[key] >= this.etal_min) {\n discretionary_names_length = this.etal_use_first;\n }\n } else {\n if (this.state.tmp.disambig_request \n && this.state.tmp.disambig_request.names[pos] > this.etal_use_first) {\n\n if (count[key] < this.etal_min) {\n discretionary_names_length = count[key];\n } else {\n discretionary_names_length = this.state.tmp.disambig_request.names[pos];\n }\n } else if (count[key] >= this.etal_min) {\n //discretionary_names_length = this.state.tmp[\"et-al-use-first\"];\n discretionary_names_length = this.etal_use_first;\n }\n // XXXX: This is a workaround. Under some conditions.\n // Where namesets disambiguate on one of the two names\n // dropped here, it is possible for more than one\n // in-text citation to be close (and indistinguishable)\n // matches to a single bibliography entry.\n //\n // \n if (this.etal_use_last && discretionary_names_length > (this.etal_min - 2)) {\n discretionary_names_length = this.etal_min - 2;\n }\n }\n var sane = this.etal_min >= this.etal_use_first;\n var overlength = count[key] > discretionary_names_length;\n // This var is used to control contextual join, and\n // lies about the number of names when forceEtAl is true,\n // unless normalized.\n if (discretionary_names_length > count[key]) {\n\n // Use actual truncated list length, to avoid overrun.\n discretionary_names_length = display_names.length;\n }\n // forceEtAl is relevant when the author list is\n // truncated to eliminate clutter.\n if (sane && overlength) {\n if (this.etal_use_last) {\n lst[key] = display_names.slice(0, discretionary_names_length).concat(display_names.slice(-1));\n } else {\n lst[key] = display_names.slice(0, discretionary_names_length);\n }\n }\n this.state.tmp.disambig_settings.names[pos] = lst[key].length;\n this.state.disambiguate.padBase(this.state.tmp.disambig_settings);\n \n\n // ???\n //if (!this.state.tmp.disambig_request) {\n // this.state.tmp.disambig_settings.givens[pos] = [];\n //}\n};\n\n// Disambiguate names (the number of names is controlled externally, by successive\n// runs of the processor).\n\n/*global CSL: true */\n\nCSL.NameOutput.prototype.disambigNames = function () {\n var pos;\n for (var i = 0, ilen = this.variables.length; i < ilen; i += 1) {\n var v = this.variables[i];\n pos = this.nameset_base + i;\n if (this.freeters[v].length) {\n this._runDisambigNames(this.freeters[v], pos);\n }\n // Is this even necessary???\n if (this.institutions[v].length) {\n if (\"undefined\" === typeof this.state.tmp.disambig_settings.givens[pos]) {\n this.state.tmp.disambig_settings.givens[pos] = [];\n }\n for (var j=0,jlen=this.institutions[v].length;j<jlen;j+=1) {\n if (\"undefined\" === typeof this.state.tmp.disambig_settings.givens[pos][j]) {\n this.state.tmp.disambig_settings.givens[pos].push(2);\n }\n }\n }\n for (var j = 0, jlen = this.persons[v].length; j < jlen; j += 1) {\n if (this.persons[v][j].length) {\n this._runDisambigNames(this.persons[v][j], pos);\n }\n }\n }\n};\n\nCSL.NameOutput.prototype._runDisambigNames = function (lst, pos) {\n var chk, myform, myinitials, param, i, ilen, paramx;\n //if (this.state.tmp.root === \"bibliography\") {\n // return;\n //}\n for (i = 0, ilen = lst.length; i < ilen; i += 1) {\n //\n // register the name in the global names disambiguation\n // registry\n\n if (!lst[i].given && !lst[i].family) {\n continue;\n }\n\n myinitials = this.state.inheritOpt(this.name, \"initialize-with\");\n this.state.registry.namereg.addname(\"\" + this.Item.id, lst[i], i);\n chk = this.state.tmp.disambig_settings.givens[pos];\n if (\"undefined\" === typeof chk) {\n // Holes can appear in the list, probably due to institutional\n // names that this doesn't touch. Maybe. This fills them up.\n for (var j = 0, jlen = pos + 1; j < jlen; j += 1) {\n if (!this.state.tmp.disambig_settings.givens[j]) {\n this.state.tmp.disambig_settings.givens[j] = [];\n }\n }\n }\n chk = this.state.tmp.disambig_settings.givens[pos][i];\n //if (\"undefined\" !== typeof chk && this.state.tmp.root === 'citation') {\n //this.state.tmp.disambig_settings.givens[pos] = [];\n //chk = undefined;\n //}\n if (\"undefined\" === typeof chk) {\n myform = this.state.inheritOpt(this.name, \"form\", \"name-form\", \"long\");\n param = this.state.registry.namereg.evalname(\"\" + this.Item.id, lst[i], i, 0, myform, myinitials);\n this.state.tmp.disambig_settings.givens[pos].push(param);\n }\n //\n // set the display mode default for givennames if required\n myform = this.state.inheritOpt(this.name, \"form\", \"name-form\", \"long\");\n paramx = this.state.registry.namereg.evalname(\"\" + this.Item.id, lst[i], i, 0, myform, myinitials);\n // this.state.registry.namereg.evalname(\"\" + this.Item.id, lst[i], i, 0, myform, myinitials);\n if (this.state.tmp.disambig_request) {\n //\n // fix a request for initials that makes no sense.\n // can't do this in disambig, because the availability\n // of initials is not a global parameter.\n var val = this.state.tmp.disambig_settings.givens[pos][i];\n // This is limited to by-cite disambiguation.\n // 2012-09-13: added lst[i].given check to condition\n if (val === 1 && \n this.state.citation.opt[\"givenname-disambiguation-rule\"] === \"by-cite\" && \n (\"undefined\" === typeof this.state.inheritOpt(this.name, \"initialize-with\")\n || \"undefined\" === typeof lst[i].given)) {\n val = 2;\n }\n param = val;\n // 2012-09-13: lst[i].given check protects against personal names\n // that have no first name element. These were causing an infinite loop,\n // this prevents that.\n if (this.state.opt[\"disambiguate-add-givenname\"] && lst[i].given) {\n param = this.state.registry.namereg.evalname(\"\" + this.Item.id, lst[i], i, param, this.state.inheritOpt(this.name, \"form\", \"name-form\", \"long\"), this.state.inheritOpt(this.name, \"initialize-with\"));\n }\n } else {\n //\n // it clicks. here is where we will put the\n // call to the names register, to get the floor value\n // for an individual name.\n //\n param = paramx;\n }\n // Need to save off the settings based on subsequent\n // form, when first cites are rendered.\n if (!this.state.tmp.just_looking && this.item && this.item.position === CSL.POSITION_FIRST) {\n if (paramx > param) {\n param = paramx;\n }\n }\n if (!this.state.tmp.sort_key_flag) {\n this.state.tmp.disambig_settings.givens[pos][i] = param;\n if (\"string\" === typeof myinitials\n && (\"undefined\" === typeof this.name.strings[\"initialize\"]\n || true === this.name.strings[\"initialize\"])) {\n\n this.state.tmp.disambig_settings.use_initials = true;\n }\n }\n }\n //this.state.registry.registry[this.Item.id].disambig.givens = this.state.tmp.disambig_settings.givens.slice();\n};\n\n/*global CSL: true */\n\nCSL.NameOutput.prototype.getEtAlConfig = function () {\n var item = this.item;\n this[\"et-al\"] = {};\n\n this.state.output.append(this.etal_term, this.etal_style, true);\n this[\"et-al\"].single = this.state.output.pop();\n this[\"et-al\"].single.strings.suffix = this.etal_suffix;\n this[\"et-al\"].single.strings.prefix = this.etal_prefix_single;\n \n this.state.output.append(this.etal_term, this.etal_style, true);\n this[\"et-al\"].multiple = this.state.output.pop();\n this[\"et-al\"].multiple.strings.suffix = this.etal_suffix;\n this[\"et-al\"].multiple.strings.prefix = this.etal_prefix_multiple;\n\n // Et-al style parameters (may be sidestepped by disambiguation\n // in util_names_constraints.js)\n if (\"undefined\" === typeof item) {\n item = {};\n }\n //print(\"== getEtAlConfig() == \"+this.state.tmp.area);\n\n if (item.position) {\n if (this.state.inheritOpt(this.name, \"et-al-subsequent-min\")) {\n // XX\n this.etal_min = this.state.inheritOpt(this.name, \"et-al-subsequent-min\");\n } else {\n // XX\n this.etal_min = this.state.inheritOpt(this.name, \"et-al-min\");\n }\n if (this.state.inheritOpt(this.name, \"et-al-subsequent-use-first\")) {\n // XX\n this.etal_use_first = this.state.inheritOpt(this.name, \"et-al-subsequent-use-first\");\n } else {\n // XX\n this.etal_use_first = this.state.inheritOpt(this.name, \"et-al-use-first\");\n }\n } else {\n if (this.state.tmp[\"et-al-min\"]) {\n this.etal_min = this.state.tmp[\"et-al-min\"];\n } else {\n // XX\n this.etal_min = this.state.inheritOpt(this.name, \"et-al-min\");\n }\n if (this.state.tmp[\"et-al-use-first\"]) {\n this.etal_use_first = this.state.tmp[\"et-al-use-first\"];\n } else {\n // XX\n this.etal_use_first = this.state.inheritOpt(this.name, \"et-al-use-first\");\n }\n if (\"boolean\" === typeof this.state.tmp[\"et-al-use-last\"]) {\n //print(\" etal_use_last from tmp: \"+this.state.tmp[\"et-al-use-last\"]);\n this.etal_use_last = this.state.tmp[\"et-al-use-last\"];\n } else {\n //print(\" etal_use_last from name: \"+this.name.strings[\"et-al-use-last\"]);\n // XX\n this.etal_use_last = this.state.inheritOpt(this.name, \"et-al-use-last\");\n }\n //print(\" etal_use_last: \"+this.etal_use_last);\n }\n // Provided for use as the starting level for disambiguation.\n if (!this.state.tmp[\"et-al-min\"]) {\n this.state.tmp[\"et-al-min\"] = this.etal_min;\n }\n};\n\n/*global CSL: true */\n\nCSL.NameOutput.prototype.setEtAlParameters = function () {\n var i, ilen, j, jlen;\n for (i = 0, ilen = this.variables.length; i < ilen; i += 1) {\n var v = this.variables[i];\n if (\"undefined\" === typeof this.etal_spec[v]) {\n this.etal_spec[v] = {freeters:0,institutions:0,persons:[]};\n }\n this.etal_spec[this.nameset_base + i] = this.etal_spec[v];\n if (this.freeters[v].length) {\n this._setEtAlParameter(\"freeters\", v);\n }\n for (j = 0, jlen = this.persons[v].length; j < jlen; j += 1) {\n if (\"undefined\" === typeof this.etal_spec[v][j]) {\n this.etal_spec[v].persons[j] = 0;\n }\n this._setEtAlParameter(\"persons\", v, j);\n }\n if (this.institutions[v].length) {\n this._setEtAlParameter(\"institutions\", v);\n }\n }\n};\n\nCSL.NameOutput.prototype._setEtAlParameter = function (type, v, j) {\n var lst, count;\n if (type === \"persons\") {\n lst = this.persons[v][j];\n count = this.persons_count[v][j];\n } else {\n lst = this[type][v];\n count = this[type + \"_count\"][v];\n }\n if (lst.length < count && !this.state.tmp.sort_key_flag) {\n if (this.etal_use_last) {\n if (type === \"persons\") {\n this.etal_spec[v].persons[j] = 2;\n } else {\n this.etal_spec[v][type] = 2;\n }\n } else {\n if (type === \"persons\") {\n this.etal_spec[v].persons[j] = 1;\n } else {\n this.etal_spec[v][type] = 1;\n }\n }\n } else {\n if (type === \"persons\") {\n this.etal_spec[v].persons[j] = 0;\n } else {\n this.etal_spec[v][type] = 0;\n }\n }\n};\n\n/*global CSL: true */\n\nCSL.NameOutput.prototype.renderAllNames = function () {\n // Note that et-al/ellipsis parameters are set on the basis\n // of rendering order through the whole cite.\n var pos;\n for (var i = 0, ilen = this.variables.length; i < ilen; i += 1) {\n var v = this.variables[i];\n\n if (this.freeters[v].length || this.institutions[v].length) {\n if (!this.state.tmp.group_context.tip.condition) {\n this.state.tmp.just_did_number = false;\n }\n }\n \n pos = this.nameset_base + i;\n if (this.freeters[v].length) {\n this.freeters[v] = this._renderNames(v, this.freeters[v], pos);\n }\n for (var j = 0, jlen = this.institutions[v].length; j < jlen; j += 1) {\n this.persons[v][j] = this._renderNames(v, this.persons[v][j], pos, j);\n }\n }\n this.renderInstitutionNames();\n};\n\nCSL.NameOutput.prototype.renderInstitutionNames = function () {\n // Institutions are split to string list as\n // this.institutions[v][\"long\"] and this.institutions[v][\"short\"]\n for (var i = 0, ilen = this.variables.length; i < ilen; i += 1) {\n var v = this.variables[i];\n for (var j = 0, jlen = this.institutions[v].length; j < jlen; j += 1) {\n var institution;\n\n var name = this.institutions[v][j];\n\n \n\n // XXX Start here for institutions\n // Figure out the three segments: primary, secondary, tertiary\n var j, jlen, localesets;\n if (this.state.tmp.extension) {\n localesets = [\"sort\"];\n } else if (name.isInstitution || name.literal) {\n // Will never hit this in this function, but preserving\n // in case we factor this out.\n localesets = this.state.opt['cite-lang-prefs'].institutions;\n } else {\n localesets = this.state.opt['cite-lang-prefs'].persons;\n }\n\n var slot = {primary:'locale-orig',secondary:false,tertiary:false};\n\t if (localesets) {\n\t\t var slotnames = [\"primary\", \"secondary\", \"tertiary\"];\n\t\t for (var k = 0, klen = slotnames.length; k < klen; k += 1) {\n\t\t\t if (localesets.length - 1 < k) {\n\t\t\t\t break;\n\t\t\t }\n if (localesets[k]) {\n\t\t\t slot[slotnames[k]] = 'locale-' + localesets[k];\n }\n\t\t }\n\t } else {\n\t\t slot.primary = 'locale-translat';\n\t }\n\t if (this.state.tmp.area !== \"bibliography\"\n\t\t && !(this.state.tmp.area === \"citation\"\n\t\t\t && this.state.opt.xclass === \"note\"\n\t\t\t && this.item && !this.item.position)) {\n \n\t\t slot.secondary = false;\n\t\t slot.tertiary = false;\n\t }\n // Get normalized name object for a start.\n // true invokes fallback\n this.setRenderedName(name);\n\n // XXXX FROM HERE (instututions)\n var institution = this._renderInstitutionName(v, name, slot, j);\n\n //this.institutions[v][j] = this._join(institution, \"\");\n this.institutions[v][j] = institution;\n }\n }\n};\n\nCSL.NameOutput.prototype._renderInstitutionName = function (v, name, slot, j) {\n var secondary, tertiary, long_style, short_style, institution, institution_short, institution_long;\n var res = this.getName(name, slot.primary, true);\n var primary = res.name;\n var usedOrig = res.usedOrig;\n if (primary) {\n //print(\"primary, v, j = \"+primary+\", \"+v+\", \"+j);\n primary = this.fixupInstitution(primary, v, j);\n }\n\tsecondary = false;\n\tif (slot.secondary) {\n res = this.getName(name, slot.secondary, false, usedOrig);\n var secondary = res.name;\n usedOrig = res.usedOrig;\n if (secondary) {\n\t\t\tsecondary = this.fixupInstitution(secondary, v, j);\n }\n\t}\n //Zotero.debug(\"XXX [2] secondary: \"+secondary[\"long\"].literal+\", slot.secondary: \"+slot.secondary);\n\ttertiary = false;\n\tif (slot.tertiary) {\n res = this.getName(name, slot.tertiary, false, usedOrig);\n tertiary = res.name;\n if (tertiary) {\n\t\t\ttertiary = this.fixupInstitution(tertiary, v, j);\n }\n\t}\n var n = {\n l: {\n pri: false,\n sec: false,\n ter: false\n },\n s: {\n pri: false,\n sec: false,\n ter: false\n }\n };\n if (primary) {\n n.l.pri = primary[\"long\"];\n n.s.pri = primary[\"short\"].length ? primary[\"short\"] : primary[\"long\"];\n }\n if (secondary) {\n n.l.sec = secondary[\"long\"];\n n.s.sec = secondary[\"short\"].length ? secondary[\"short\"] : secondary[\"long\"];\n }\n if (tertiary) {\n n.l.ter = tertiary[\"long\"];\n n.s.ter = tertiary[\"short\"].length ? tertiary[\"short\"] : tertiary[\"long\"];\n }\n switch (this.institution.strings[\"institution-parts\"]) {\n case \"short\":\n // No multilingual for pure short form institution names.\n if (primary[\"short\"].length) {\n short_style = this._getShortStyle();\n institution = [this._composeOneInstitutionPart([n.s.pri, n.s.sec, n.s.ter], slot, short_style, v)];\n } else {\n // Fail over to long.\n long_style = this._getLongStyle(primary, v, j);\n institution = [this._composeOneInstitutionPart([n.l.pri, n.l.sec, n.l.ter], slot, long_style, v)];\n }\n break;\n case \"short-long\":\n long_style = this._getLongStyle(primary, v, j);\n short_style = this._getShortStyle();\n institution_short = this._renderOneInstitutionPart(primary[\"short\"], short_style);\n // true is to include multilingual supplement\n institution_long = this._composeOneInstitutionPart([n.l.pri, n.l.sec, n.l.ter], slot, long_style, v);\n institution = [institution_short, institution_long];\n break;\n case \"long-short\":\n long_style = this._getLongStyle(primary, v, j);\n short_style = this._getShortStyle();\n institution_short = this._renderOneInstitutionPart(primary[\"short\"], short_style);\n // true is to include multilingual supplement\n institution_long = this._composeOneInstitutionPart([n.l.pri, n.l.sec, n.l.ter], slot, long_style, v);\n institution = [institution_long, institution_short];\n break;\n default:\n long_style = this._getLongStyle(primary, v, j);\n // true is to include multilingual supplement\n institution = [this._composeOneInstitutionPart([n.l.pri, n.l.sec, n.l.ter], slot, long_style, v)];\n break;\n }\n var blob = this._join(institution, \" \");\n if (blob) {\n blob.isInstitution = true;\n }\n this.state.tmp.name_node.children.push(blob);\n return blob;\n};\n\nCSL.NameOutput.prototype._composeOneInstitutionPart = function (names, slot, style) {\n var primary = false, secondary = false, tertiary = false, primary_tok, secondary_tok, tertiary_tok;\n if (names[0]) {\n primary_tok = CSL.Util.cloneToken(style);\n if (this.state.opt.citeAffixes[slot.primary]){\n if (\"<i>\" === this.state.opt.citeAffixes.institutions[slot.primary].prefix) {\n var hasItalic = false;\n for (var i = 0, ilen = primary_tok.decorations.length; i < ilen; i += 1) {\n if (style.decorations[i][0] === \"@font-style\"\n && primary_tok.decorations[i][1] === \"italic\") {\n hasItalic = true;\n }\n }\n if (!hasItalic) {\n primary_tok.decorations.push([\"@font-style\", \"italic\"]);\n }\n }\n }\n primary = this._renderOneInstitutionPart(names[0], primary_tok);\n }\n if (names[1]) {\n secondary = this._renderOneInstitutionPart(names[1], style);\n }\n if (names[2]) {\n tertiary = this._renderOneInstitutionPart(names[2], style);\n }\n // Compose\n var institutionblob;\n if (secondary || tertiary) {\n this.state.output.openLevel(\"empty\");\n\n this.state.output.append(primary);\n\n secondary_tok = CSL.Util.cloneToken(style);\n if (slot.secondary) {\n secondary_tok.strings.prefix = this.state.opt.citeAffixes.institutions[slot.secondary].prefix;\n secondary_tok.strings.suffix = this.state.opt.citeAffixes.institutions[slot.secondary].suffix;\n // Add a space if empty\n if (!secondary_tok.strings.prefix) {\n secondary_tok.strings.prefix = \" \";\n }\n }\n var secondary_outer = new CSL.Token();\n secondary_outer.decorations.push([\"@font-style\", \"normal\"]);\n secondary_outer.decorations.push([\"@font-weight\", \"normal\"]);\n this.state.output.openLevel(secondary_outer);\n this.state.output.append(secondary, secondary_tok);\n this.state.output.closeLevel();\n\n tertiary_tok = CSL.Util.cloneToken(style);\n if (slot.tertiary) {\n tertiary_tok.strings.prefix = this.state.opt.citeAffixes.institutions[slot.tertiary].prefix;\n tertiary_tok.strings.suffix = this.state.opt.citeAffixes.institutions[slot.tertiary].suffix;\n // Add a space if empty\n if (!tertiary_tok.strings.prefix) {\n tertiary_tok.strings.prefix = \" \";\n }\n }\n var tertiary_outer = new CSL.Token();\n tertiary_outer.decorations.push([\"@font-style\", \"normal\"]);\n tertiary_outer.decorations.push([\"@font-weight\", \"normal\"]);\n this.state.output.openLevel(tertiary_outer);\n this.state.output.append(tertiary, tertiary_tok);\n this.state.output.closeLevel();\n\n this.state.output.closeLevel();\n\n institutionblob = this.state.output.pop();\n } else {\n institutionblob = primary;\n }\n return institutionblob;\n};\n\nCSL.NameOutput.prototype._renderOneInstitutionPart = function (blobs, style) {\n for (var i = 0, ilen = blobs.length; i < ilen; i += 1) {\n if (blobs[i]) {\n var str = blobs[i];\n // XXXXX Cut-and-paste code in multiple locations. This code block should be\n // collected in a function.\n // Tag: strip-periods-block\n if (this.state.tmp.strip_periods) {\n str = str.replace(/\\./g, \"\");\n } else {\n for (var j = 0, jlen = style.decorations.length; j < jlen; j += 1) {\n if (\"@strip-periods\" === style.decorations[j][0] && \"true\" === style.decorations[j][1]) {\n str = str.replace(/\\./g, \"\");\n break;\n }\n }\n }\n //this.state.output.append(blobs[i], style, true);\n this.state.tmp.group_context.tip.variable_success = true;\n this.state.tmp.can_substitute.replace(false, CSL.LITERAL);\n if (str === \"!here>>>\") {\n blobs[i] = false;\n } else {\n this.state.output.append(str, style, true);\n blobs[i] = this.state.output.pop();\n }\n }\n }\n if (\"undefined\" === typeof this.institution.strings[\"part-separator\"]) {\n this.institution.strings[\"part-separator\"] = this.state.tmp.name_delimiter;\n }\n return this._join(blobs, this.institution.strings[\"part-separator\"]);\n};\n\nCSL.NameOutput.prototype._renderNames = function (v, values, pos, j) {\n //\n var ret = false;\n if (values.length) {\n var names = [];\n for (var i = 0, ilen = values.length; i < ilen; i += 1) {\n var name = values[i];\n \n // XXX We'll start here with attempts.\n // Figure out the three segments: primary, secondary, tertiary\n var ret, localesets;\n \n if (this.state.tmp.extension) {\n localesets = [\"sort\"];\n } else if (name.isInstitution || name.literal) {\n // Will never hit this in this function, but preserving\n // in case we factor this out.\n localesets = this.state.opt['cite-lang-prefs'].institutions;\n } else {\n localesets = this.state.opt['cite-lang-prefs'].persons;\n }\n var slot = {primary:'locale-orig',secondary:false,tertiary:false};\n\t if (localesets) {\n\t\t var slotnames = [\"primary\", \"secondary\", \"tertiary\"];\n\t\t for (var k = 0, klen = slotnames.length; k < klen; k += 1) {\n\t\t\t if (localesets.length - 1 < k) {\n\t\t\t\t break;\n\t\t\t }\n\t\t\t slot[slotnames[k]] = 'locale-' + localesets[k];\n\t\t }\n\t } else {\n\t\t slot.primary = 'locale-translat';\n\t }\n\t if (this.state.tmp.sort_key_flag || (this.state.tmp.area !== \"bibliography\"\n\t\t && !(this.state.tmp.area === \"citation\"\n\t\t\t && this.state.opt.xclass === \"note\"\n\t\t\t && this.item && !this.item.position))) {\n \n\t\t slot.secondary = false;\n\t\t slot.tertiary = false;\n\t }\n\n // primary\n // true is for fallback\n this.setRenderedName(name);\n\n if (!name.literal && !name.isInstitution) {\n var nameBlob = this._renderPersonalName(v, name, slot, pos, i, j);\n var nameToken = CSL.Util.cloneToken(this.name);\n this.state.output.append(nameBlob, nameToken, true);\n names.push(this.state.output.pop());\n } else {\n names.push(this._renderInstitutionName(v, name, slot, j));\n }\n }\n //ret = this._join(names, \"\");\n ret = this.joinPersons(names, pos, j);\n }\n return ret;\n};\n\n\nCSL.NameOutput.prototype._renderPersonalName = function (v, name, slot, pos, i, j) {\n // XXXX FROM HERE (persons)\n\n var res = this.getName(name, slot.primary, true);\n var primary = this._renderOnePersonalName(res.name, pos, i, j);\n\tvar secondary = false;\n\tif (slot.secondary) {\n res = this.getName(name, slot.secondary, false, res.usedOrig);\n if (res.name) {\n\t\t\tsecondary = this._renderOnePersonalName(res.name, pos, i, j);\n }\n\t}\n\tvar tertiary = false;\n\tif (slot.tertiary) {\n res = this.getName(name, slot.tertiary, false, res.usedOrig);\n if (res.name) {\n\t\t\ttertiary = this._renderOnePersonalName(res.name, pos, i, j);\n }\n\t}\n // Now compose them to a unit\n var personblob;\n if (secondary || tertiary) {\n\n this.state.output.openLevel(\"empty\");\n\n this.state.output.append(primary);\n\n var secondary_tok = new CSL.Token();\n if (slot.secondary) {\n secondary_tok.strings.prefix = this.state.opt.citeAffixes.persons[slot.secondary].prefix;\n secondary_tok.strings.suffix = this.state.opt.citeAffixes.persons[slot.secondary].suffix;\n // Add a space if empty\n if (!secondary_tok.strings.prefix) {\n secondary_tok.strings.prefix = \" \";\n }\n }\n this.state.output.append(secondary, secondary_tok);\n\n var tertiary_tok = new CSL.Token();\n if (slot.tertiary) {\n tertiary_tok.strings.prefix = this.state.opt.citeAffixes.persons[slot.tertiary].prefix;\n tertiary_tok.strings.suffix = this.state.opt.citeAffixes.persons[slot.tertiary].suffix;\n // Add a space if empty\n if (!tertiary_tok.strings.prefix) {\n tertiary_tok.strings.prefix = \" \";\n }\n }\n this.state.output.append(tertiary, tertiary_tok);\n\n this.state.output.closeLevel();\n\n personblob = this.state.output.pop();\n } else {\n personblob = primary;\n }\n return personblob;\n};\n\nCSL.NameOutput.prototype._isRomanesque = function (name) {\n // 0 = entirely non-romanesque\n // 1 = mixed content\n // 2 = pure romanesque\n var ret = 2;\n if (!name.family.replace(/\\\"/g, '').match(CSL.ROMANESQUE_REGEXP)) {\n ret = 0;\n }\n if (!ret && name.given && name.given.match(CSL.STARTSWITH_ROMANESQUE_REGEXP)) {\n ret = 1;\n }\n var top_locale;\n if (ret == 2) {\n if (name.multi && name.multi.main) {\n top_locale = name.multi.main.slice(0, 2);\n } else if (this.Item.language) {\n top_locale = this.Item.language.slice(0, 2);\n }\n if ([\"ja\", \"zh\"].indexOf(top_locale) > -1) {\n ret = 1;\n }\n }\n //print(\"name: \"+name.given+\", multi: \"+name.multi+\", ret: \"+ret);\n return ret;\n};\n\nCSL.NameOutput.prototype._renderOnePersonalName = function (value, pos, i, j) {\n var name = value;\n var dropping_particle = this._droppingParticle(name, pos, j);\n var family = this._familyName(name);\n var non_dropping_particle = this._nonDroppingParticle(name);\n var givenInfo = this._givenName(name, pos, i);\n var given = givenInfo.blob;\n var suffix = this._nameSuffix(name);\n if (given === false) {\n dropping_particle = false;\n suffix = false;\n }\n var sort_sep = this.state.inheritOpt(this.name, \"sort-separator\");\n if (!sort_sep) {\n sort_sep = \"\";\n }\n var suffix_sep;\n if (name[\"comma-suffix\"]) {\n suffix_sep = \", \";\n } else {\n suffix_sep = \" \";\n }\n var romanesque = this._isRomanesque(name);\n function hasJoiningPunctuation(blob) {\n if (!blob) {\n return false;\n } else if (\"string\" === typeof blob.blobs) {\n if ([\"\\u2019\", \"\\'\", \"-\", \" \"].indexOf(blob.blobs.slice(-1)) > -1) {\n return true;\n } else {\n return false;\n }\n } else {\n return hasJoiningPunctuation(blob.blobs[blob.blobs.length-1]);\n }\n }\n \n var has_hyphenated_non_dropping_particle = hasJoiningPunctuation(non_dropping_particle);\n\n var nbspace;\n if ([\"fr\", \"ru\", \"cs\"].indexOf(this.state.opt[\"default-locale\"][0].slice(0, 2)) > -1) {\n nbspace = \"\\u00a0\";\n } else {\n nbspace = \" \";\n }\n\n var blob, merged, first, second;\n if (romanesque === 0) {\n // XXX handle affixes for given and family\n blob = this._join([non_dropping_particle, family, given], \"\");\n } else if (romanesque === 1 || name[\"static-ordering\"]) { // entry likes sort order\n merged = this._join([non_dropping_particle, family], nbspace);\n blob = this._join([merged, given], \" \");\n } else if (name[\"reverse-ordering\"]) { // entry likes reverse order\n merged = this._join([non_dropping_particle, family], nbspace);\n blob = this._join([given, merged], \" \");\n } else if (this.state.tmp.sort_key_flag) {\n // ok with no affixes here\n if (this.state.opt[\"demote-non-dropping-particle\"] === \"never\") {\n merged = this._join([non_dropping_particle, family], nbspace);\n merged = this._join([merged, dropping_particle], \" \");\n merged = this._join([merged, given], this.state.opt.sort_sep);\n blob = this._join([merged, suffix], \" \");\n } else {\n second = this._join([given, dropping_particle, non_dropping_particle], \" \");\n merged = this._join([family, second], this.state.opt.sort_sep);\n blob = this._join([merged, suffix], \" \");\n }\n } else if (this.state.inheritOpt(this.name, \"name-as-sort-order\") === \"all\" || (this.state.inheritOpt(this.name, \"name-as-sort-order\") === \"first\" && i === 0 && (j === 0 || \"undefined\" === typeof j))) {\n //\n // Discretionary sort ordering and inversions\n //\n if ([\"Lord\", \"Lady\"].indexOf(name.given) > -1) {\n sort_sep = \", \";\n }\n\n // XXX Needs a more robust solution than this\n // XXX See https://forums.zotero.org/discussion/30974/any-idea-why-an-a-author-comes-last-in-the-bibliography/#Item_30\n\n //if ([\"always\", \"display-and-sort\"].indexOf(this.state.opt[\"demote-non-dropping-particle\"]) > -1 && !has_hyphenated_non_dropping_particle) {\n if ([\"always\", \"display-and-sort\"].indexOf(this.state.opt[\"demote-non-dropping-particle\"]) > -1) {\n // Drop non-dropping particle\n //second = this._join([given, dropping_particle, non_dropping_particle], \" \");\n second = this._join([given, dropping_particle], (name[\"comma-dropping-particle\"] + \" \"));\n \n // This would be a problem with al-Ghazali. Avoided by has_hyphenated_non_dropping_particle check above.\n second = this._join([second, non_dropping_particle], \" \");\n if (second && this.given) {\n second.strings.prefix = this.given.strings.prefix;\n second.strings.suffix = this.given.strings.suffix;\n }\n if (family && this.family) {\n family.strings.prefix = this.family.strings.prefix;\n family.strings.suffix = this.family.strings.suffix;\n }\n merged = this._join([family, second], sort_sep);\n blob = this._join([merged, suffix], sort_sep);\n } else {\n // Don't drop particle.\n // Don't do this\n //if (this.state.tmp.area === \"bibliography\" && !this.state.tmp.term_predecessor && non_dropping_particle) {\n // if (!has_hyphenated_non_dropping_particle) {\n // non_dropping_particle.blobs = CSL.Output.Formatters[\"capitalize-first\"](this.state, non_dropping_particle.blobs)\n // }\n //}\n if (has_hyphenated_non_dropping_particle) {\n first = this._join([non_dropping_particle, family], \"\");\n } else {\n first = this._join([non_dropping_particle, family], nbspace);\n }\n if (first && this.family) {\n first.strings.prefix = this.family.strings.prefix;\n first.strings.suffix = this.family.strings.suffix;\n }\n\n second = this._join([given, dropping_particle], (name[\"comma-dropping-particle\"] + \" \"));\n //second = this._join([given, dropping_particle], \" \");\n if (second && this.given) {\n second.strings.prefix = this.given.strings.prefix;\n second.strings.suffix = this.given.strings.suffix;\n }\n\n merged = this._join([first, second], sort_sep);\n blob = this._join([merged, suffix], sort_sep);\n }\n blob.isInverted = true;\n } else { // plain vanilla\n if (name[\"dropping-particle\"] && name.family && !name[\"non-dropping-particle\"]) {\n var dp = name[\"dropping-particle\"];\n var apostrophes = [\"'\",\"\\u02bc\",\"\\u2019\",\"-\"];\n if (apostrophes.indexOf(dp.slice(-1)) > -1 && dp.slice(0, -1) !== \"de\") {\n family = this._join([dropping_particle, family], \"\");\n dropping_particle = false;\n }\n }\n\n if (has_hyphenated_non_dropping_particle) {\n second = this._join([non_dropping_particle, family], \"\");\n second = this._join([dropping_particle, second], nbspace);\n } else {\n second = this._join([dropping_particle, non_dropping_particle, family], nbspace);\n }\n second = this._join([second, suffix], suffix_sep);\n if (second && this.family) {\n second.strings.prefix = this.family.strings.prefix;\n second.strings.suffix = this.family.strings.suffix;\n }\n if (given && this.given) {\n given.strings.prefix = this.given.strings.prefix;\n given.strings.suffix = this.given.strings.suffix;\n }\n if (second.strings.prefix) {\n name[\"comma-dropping-particle\"] = \"\";\n }\n\n var space;\n if (this.state.inheritOpt(this.name, \"initialize-with\")\n && this.state.inheritOpt(this.name, \"initialize-with\").match(/[\\u00a0\\ufeff]/)\n && givenInfo.initializationLevel === 1) {\n \n space = nbspace;\n } else {\n space = \" \";\n }\n blob = this._join([given, second], (name[\"comma-dropping-particle\"] + space));\n }\n // XXX Just generally assume for the present that personal names render something\n this.state.tmp.group_context.tip.variable_success = true;\n this.state.tmp.can_substitute.replace(false, CSL.LITERAL);\n this.state.tmp.term_predecessor = true;\n // notSerious\n //this.state.output.append(blob, \"literal\", true);\n //var ret = this.state.output.pop();\n this.state.tmp.name_node.children.push(blob);\n return blob;\n};\n\n/*\n // Do not include given name, dropping particle or suffix in strict short form of name\n\n // initialize if appropriate\n*/\n\n// Input names should be touched by _normalizeNameInput()\n// exactly once: this is not idempotent.\nCSL.NameOutput.prototype._normalizeNameInput = function (value) {\n var name = {\n literal:value.literal,\n family:value.family,\n isInstitution:value.isInstitution,\n given:value.given,\n suffix:value.suffix,\n \"comma-suffix\":value[\"comma-suffix\"],\n \"non-dropping-particle\":value[\"non-dropping-particle\"],\n \"dropping-particle\":value[\"dropping-particle\"],\n \"static-ordering\":value[\"static-ordering\"],\n \"static-particles\":value[\"static-particles\"],\n \"reverse-ordering\":value[\"reverse-ordering\"],\n \"full-form-always\": value[\"full-form-always\"],\n \"parse-names\":value[\"parse-names\"],\n \"comma-dropping-particle\": \"\",\n block_initialize:value.block_initialize,\n multi:value.multi\n };\n this._parseName(name);\n return name;\n};\n\n// _transformNameset() replaced with enhanced transform.name().\n\nCSL.NameOutput.prototype._stripPeriods = function (tokname, str) {\n var decor_tok = this[tokname + \"_decor\"];\n if (str) {\n if (this.state.tmp.strip_periods) {\n str = str.replace(/\\./g, \"\");\n } else if (decor_tok) {\n for (var i = 0, ilen = decor_tok.decorations.length; i < ilen; i += 1) {\n if (\"@strip-periods\" === decor_tok.decorations[i][0] && \"true\" === decor_tok.decorations[i][1]) {\n str = str.replace(/\\./g, \"\");\n break;\n }\n }\n }\n }\n return str;\n};\n\nCSL.NameOutput.prototype._nonDroppingParticle = function (name) {\n var ndp = name[\"non-dropping-particle\"];\n if (ndp && this.state.tmp.sort_key_flag) {\n ndp = ndp.replace(/[\\'\\u2019]/, \"\");\n }\n var str = this._stripPeriods(\"family\", ndp);\n if (this.state.output.append(str, this.family_decor, true)) {\n return this.state.output.pop();\n }\n return false;\n};\n\nCSL.NameOutput.prototype._droppingParticle = function (name, pos, j) {\n var dp = name[\"dropping-particle\"];\n if (dp && this.state.tmp.sort_key_flag) {\n dp = dp.replace(/[\\'\\u2019]/, \"\");\n }\n var str = this._stripPeriods(\"given\", dp);\n if (name[\"dropping-particle\"] && name[\"dropping-particle\"].match(/^et.?al[^a-z]$/)) {\n if (this.state.inheritOpt(this.name, \"et-al-use-last\")) {\n if (\"undefined\" === typeof j) { \n this.etal_spec[pos].freeters = 2;\n } else {\n this.etal_spec[pos].persons = 2;\n }\n } else {\n if (\"undefined\" === typeof j) { \n this.etal_spec[pos].freeters = 1;\n } else {\n this.etal_spec[pos].persons = 1;\n }\n }\n name[\"comma-dropping-particle\"] = \"\";\n } else if (this.state.output.append(str, this.given_decor, true)) {\n return this.state.output.pop();\n }\n return false;\n};\n\nCSL.NameOutput.prototype._familyName = function (name) {\n var str = this._stripPeriods(\"family\", name.family);\n if (this.state.output.append(str, this.family_decor, true)) {\n return this.state.output.pop();\n }\n return false;\n};\n\nCSL.NameOutput.prototype._givenName = function (name, pos, i) {\n var ret;\n // citation\n // use disambig as-is\n // biblography\n // use disambig only if it boosts over the default\n // SO WHAT IS THE DEFAULT?\n // A: If \"form\" is short, it's 0.\n // If \"form\" is long, initialize-with exists (and initialize is not false) it's 1\n // If \"form\" is long, and initialize_with does not exist, it's 2.\n var formIsShort = this.state.inheritOpt(this.name, \"form\", \"name-form\", \"long\") !== \"long\";\n var initializeIsTurnedOn = this.state.inheritOpt(this.name, \"initialize\") !== false;\n var hasInitializeWith = \"string\" === typeof this.state.inheritOpt(this.name, \"initialize-with\") && !name.block_initialize;\n var defaultLevel;\n var useLevel;\n if (name[\"full-form-always\"]) {\n useLevel = 2;\n } else {\n if (formIsShort) {\n defaultLevel = 0;\n } else if (hasInitializeWith) {\n defaultLevel = 1;\n } else {\n defaultLevel = 2;\n }\n var requestedLevel = this.state.tmp.disambig_settings.givens[pos][i];\n if (requestedLevel > defaultLevel) {\n useLevel = requestedLevel;\n } else {\n useLevel = defaultLevel;\n }\n }\n var gdropt = this.state.citation.opt[\"givenname-disambiguation-rule\"];\n if (gdropt && gdropt.slice(-14) === \"-with-initials\") {\n hasInitializeWith = true;\n }\n if (name.family && useLevel === 1) {\n if (hasInitializeWith) {\n var initialize_with = this.state.inheritOpt(this.name, \"initialize-with\", false, \"\");\n name.given = CSL.Util.Names.initializeWith(this.state, name.given, initialize_with, !initializeIsTurnedOn);\n } else {\n name.given = CSL.Util.Names.unInitialize(this.state, name.given);\n }\n } else if (useLevel === 0) {\n return {\n blob: false\n }\n } else if (useLevel === 2) {\n name.given = CSL.Util.Names.unInitialize(this.state, name.given);\n }\n\n var str = this._stripPeriods(\"given\", name.given);\n var rendered = this.state.output.append(str, this.given_decor, true);\n if (rendered) {\n ret = this.state.output.pop();\n\t return {\n blob: ret,\n initializationLevel: useLevel\n };\n }\n return {\n blob: false\n };\n};\n\nCSL.NameOutput.prototype._nameSuffix = function (name) {\n\n var str = name.suffix, ret;\n\n if (str && \"string\" === typeof this.state.inheritOpt(this.name, \"initialize-with\")) {\n str = CSL.Util.Names.initializeWith(this.state, str, this.state.inheritOpt(this.name, \"initialize-with\"), true);\n }\n\n str = this._stripPeriods(\"family\", str);\n var toSuffix = '';\n if (str && str.slice(-1) === '.') {\n\tstr = str.slice(0, -1);\n\ttoSuffix = '.';\n }\n var rendered = this.state.output.append(str, \"empty\", true);\n if (rendered) {\n ret = this.state.output.pop();\n\tret.strings.suffix = toSuffix + ret.strings.suffix;\n\treturn ret;\n }\n return false;\n};\n\nCSL.NameOutput.prototype._getLongStyle = function (name) {\n var long_style;\n if (name[\"short\"].length) {\n if (this.institutionpart[\"long-with-short\"]) {\n long_style = this.institutionpart[\"long-with-short\"];\n } else {\n long_style = this.institutionpart[\"long\"];\n }\n } else {\n long_style = this.institutionpart[\"long\"];\n }\n if (!long_style) {\n long_style = new CSL.Token();\n }\n return long_style;\n};\n\nCSL.NameOutput.prototype._getShortStyle = function () {\n var short_style;\n if (this.institutionpart[\"short\"]) {\n short_style = this.institutionpart[\"short\"];\n } else {\n short_style = new CSL.Token();\n }\n return short_style;\n};\n\nCSL.NameOutput.prototype._parseName = function (name) {\n if (!name[\"parse-names\"] && \"undefined\" !== typeof name[\"parse-names\"]) {\n return name;\n }\n if (name.family && !name.given && name.isInstitution) {\n name.literal = name.family;\n name.family = undefined;\n name.isInstitution = undefined;\n }\n var noparse;\n if (name.family \n && (name.family.slice(0, 1) === '\"' && name.family.slice(-1) === '\"')\n || (!name[\"parse-names\"] && \"undefined\" !== typeof name[\"parse-names\"])) {\n\n name.family = name.family.slice(1, -1);\n noparse = true;\n name[\"parse-names\"] = 0;\n } else {\n noparse = false;\n }\n if (this.state.opt.development_extensions.parse_names) {\n if (!name[\"non-dropping-particle\"] && name.family && !noparse && name.given) {\n if (!name[\"static-particles\"]) {\n CSL.parseParticles(name, true);\n }\n }\n }\n};\n\n/*\n * Return a single name object\n */\n\n// The interface is a mess, but this should serve.\n\nCSL.NameOutput.prototype.getName = function (name, slotLocaleset, fallback, stopOrig) {\n\n // Needs to tell us whether we used orig or not.\n \n if (stopOrig && slotLocaleset === 'locale-orig') {\n return {name:false,usedOrig:stopOrig};\n }\n\n // Normalize to string\n if (!name.family) {\n name.family = \"\";\n }\n if (!name.given) {\n name.given = \"\";\n }\n\n // Recognized params are:\n // block-initialize\n // transliterated\n // static-ordering\n // full-form-always\n // All default to false, except for static-ordering, which is initialized\n // with a sniff.\n var name_params = {};\n // Determines the default static-order setting based on the characters\n // used in the headline field. Will be overridden by locale-based\n // parameters evaluated against explicit lang tags set on the (sub)field.\n name_params[\"static-ordering\"] = this.getStaticOrder(name);\n\n var foundTag = true;\n var langTag;\n if (slotLocaleset !== 'locale-orig') {\n foundTag = false;\n if (name.multi) {\n var langTags = this.state.opt[slotLocaleset];\n for (var i = 0, ilen = langTags.length; i < ilen; i += 1) {\n langTag = langTags[i];\n if (name.multi._key[langTag]) {\n foundTag = true;\n var isInstitution = name.isInstitution;\n name = name.multi._key[langTag];\n name.isInstitution = isInstitution;\n // Set name formatting params\n name_params = this.getNameParams(langTag);\n name_params.transliterated = true;\n break;\n }\n }\n }\n }\n\n if (!foundTag) {\n langTag = false;\n if (name.multi && name.multi.main) {\n langTag = name.multi.main;\n } else if (this.Item.language) {\n langTag = this.Item.language;\n }\n if (langTag) {\n name_params = this.getNameParams(langTag);\n }\n }\n\n if (!fallback && !foundTag) {\n return {name:false,usedOrig:stopOrig};\n }\n \n // Normalize to string (again)\n if (!name.family) {\n name.family = \"\";\n }\n if (!name.given) {\n name.given = \"\";\n }\n if (name.literal) {\n delete name.family;\n delete name.given;\n }\n // var clone the item before writing into it\n name = {\n family:name.family,\n given:name.given,\n \"non-dropping-particle\":name[\"non-dropping-particle\"],\n \"dropping-particle\":name[\"dropping-particle\"],\n suffix:name.suffix,\n \"static-ordering\":name_params[\"static-ordering\"],\n \"static-particles\":name[\"static-particles\"],\n \"reverse-ordering\":name_params[\"reverse-ordering\"],\n \"full-form-always\": name_params[\"full-form-always\"],\n \"parse-names\":name[\"parse-names\"],\n \"comma-suffix\":name[\"comma-suffix\"],\n \"comma-dropping-particle\":name[\"comma-dropping-particle\"],\n transliterated: name_params.transliterated,\n block_initialize: name_params[\"block-initialize\"],\n literal:name.literal,\n isInstitution:name.isInstitution,\n multi:name.multi\n };\n \n if (!name.literal && (!name.given && name.family && name.isInstitution)) {\n name.literal = name.family;\n }\n if (name.literal) {\n delete name.family;\n delete name.given;\n }\n name = this._normalizeNameInput(name);\n var usedOrig;\n if (stopOrig) {\n usedOrig = stopOrig;\n } else {\n usedOrig = !foundTag;\n }\n return {name:name,usedOrig:usedOrig};\n};\n\nCSL.NameOutput.prototype.getNameParams = function (langTag) {\n var ret = {};\n var langspec = CSL.localeResolve(this.Item.language, this.state.opt[\"default-locale\"][0]);\n var try_locale = this.state.locale[langspec.best] ? langspec.best : this.state.opt[\"default-locale\"][0];\n var name_as_sort_order = this.state.locale[try_locale].opts[\"name-as-sort-order\"];\n var name_as_reverse_order = this.state.locale[try_locale].opts[\"name-as-reverse-order\"];\n var name_never_short = this.state.locale[try_locale].opts[\"name-never-short\"];\n var field_lang_bare = langTag.split(\"-\")[0];\n if (name_as_sort_order && name_as_sort_order[field_lang_bare]) {\n ret[\"static-ordering\"] = true;\n ret[\"reverse-ordering\"] = false;\n }\n if (name_as_reverse_order && name_as_reverse_order[field_lang_bare]) {\n ret[\"reverse-ordering\"] = true;\n ret[\"static-ordering\"] = false;\n }\n if (name_never_short && name_never_short[field_lang_bare]) {\n ret[\"full-form-always\"] = true;\n }\n \n if (ret[\"static-ordering\"]) {\n ret[\"block-initialize\"] = true;\n }\n return ret;\n};\n\nCSL.NameOutput.prototype.setRenderedName = function (name) {\n if (this.state.tmp.area === \"bibliography\") {\n var strname = \"\";\n for (var j=0,jlen=CSL.NAME_PARTS.length;j<jlen;j+=1) {\n if (name[CSL.NAME_PARTS[j]]) {\n strname += name[CSL.NAME_PARTS[j]];\n }\n }\n this.state.tmp.rendered_name.push(strname);\n }\n};\n\nCSL.NameOutput.prototype.fixupInstitution = function (name, varname, listpos) {\n if (!name.literal && name.family) {\n name.literal = name.family;\n delete name.family;\n }\n var longNameStr = name.literal;\n var shortNameStr = longNameStr;\n var ret = {\n \"long\": longNameStr.split(/\\s*\\|\\s*/),\n \"short\": shortNameStr.split(/\\s*\\|\\s*/),\n };\n if (this.state.sys.getAbbreviation) {\n // Normalize longNameStr and shortNameStr\n if (this.institution.strings.form === \"short\") {\n let jurisdiction = this.Item.jurisdiction;\n jurisdiction = this.state.transform.loadAbbreviation(jurisdiction, \"institution-entire\", longNameStr, this.Item.language);\n if (this.state.transform.abbrevs[jurisdiction][\"institution-entire\"][longNameStr]) {\n longNameStr = this.state.transform.abbrevs[jurisdiction][\"institution-entire\"][longNameStr];\n } else {\n jurisdiction = this.Item.jurisdiction;\n jurisdiction = this.state.transform.loadAbbreviation(jurisdiction, \"institution-part\", longNameStr, this.Item.language);\n if (this.state.transform.abbrevs[jurisdiction][\"institution-part\"][longNameStr]) {\n longNameStr = this.state.transform.abbrevs[jurisdiction][\"institution-part\"][longNameStr];\n }\n }\n longNameStr = this._quashChecks(jurisdiction, longNameStr);\n }\n if ([\"short\", \"short-long\", \"long-short\"].indexOf(this.institution.strings[\"institution-parts\"]) > -1) {\n let jurisdiction = this.Item.jurisdiction;\n jurisdiction = this.state.transform.loadAbbreviation(jurisdiction, \"institution-part\", shortNameStr, this.Item.language);\n if (this.state.transform.abbrevs[jurisdiction][\"institution-part\"][shortNameStr]) {\n shortNameStr = this.state.transform.abbrevs[jurisdiction][\"institution-part\"][shortNameStr];\n }\n shortNameStr = this._quashChecks(jurisdiction, shortNameStr);\n if ([\"short-long\", \"long-short\"].indexOf(this.institution.strings[\"institution-parts\"]) > -1) {\n if (shortNameStr === longNameStr) {\n shortNameStr = \"\";\n }\n }\n }\n // Split abbreviated strings\n // For pure long, split and we're done.\n ret[\"long\"] = longNameStr.split(/\\s*\\|\\s*/);\n // For short, split and then try abbrev with institution-part on each element\n ret[\"short\"] = shortNameStr.split(/\\s*\\|\\s*/);\n if ([\"short\", \"short-long\", \"long-short\"].indexOf(this.institution.strings[\"institution-parts\"]) > -1) {\n for (var j=ret[\"short\"].length-1; j>-1; j--) {\n let jurisdiction = this.Item.jurisdiction;\n var abbrevKey = ret[\"short\"][j];\n jurisdiction = this.state.transform.loadAbbreviation(jurisdiction, \"institution-part\", abbrevKey, this.Item.language);\n if (this.state.transform.abbrevs[jurisdiction][\"institution-part\"][abbrevKey]) {\n ret[\"short\"][j] = this.state.transform.abbrevs[jurisdiction][\"institution-part\"][abbrevKey];\n }\n if (ret[\"short\"][j].indexOf(\"|\") > -1) {\n let retShort = ret[\"short\"];\n let splitShort = retShort[j].split(/\\s*\\|\\s*/);\n ret[\"short\"] = retShort.slice(0, j).concat(splitShort).concat(retShort.slice(j+1));\n }\n }\n }\n if (this.state.opt.development_extensions.legacy_institution_name_ordering) {\n ret[\"short\"].reverse();\n }\n ret[\"short\"] = this._trimInstitution(ret[\"short\"]);\n if (this.institution.strings[\"reverse-order\"]) {\n ret[\"short\"].reverse();\n }\n // trimmer is not available in getAmbiguousCite\n if (!this.state.tmp.just_looking) {\n if (this.Item.jurisdiction) {\n let jurisdiction = this.Item.jurisdiction;\n var trimmer = this.state.tmp.abbrev_trimmer;\n if (trimmer && trimmer[jurisdiction] && trimmer[jurisdiction][varname]) {\n for (var i=0,ilen=ret[\"short\"].length;i<ilen;i++) {\n var frag = ret[\"short\"][i];\n ret[\"short\"][i] = frag.replace(trimmer[jurisdiction][varname], \"\").trim();\n }\n }\n }\n }\n }\n if (this.state.opt.development_extensions.legacy_institution_name_ordering) {\n ret[\"long\"].reverse();\n }\n ret[\"long\"] = this._trimInstitution(ret[\"long\"]);\n if (this.institution.strings[\"reverse-order\"]) {\n ret[\"long\"].reverse();\n }\n\n return ret;\n};\n\n\nCSL.NameOutput.prototype.getStaticOrder = function (name, refresh) {\n var static_ordering_val = false;\n if (!refresh && name[\"static-ordering\"]) {\n static_ordering_val = true;\n } else if (this._isRomanesque(name) === 0) {\n static_ordering_val = true;\n } else if ((!name.multi || !name.multi.main) && this.Item.language && ['vi', 'hu'].indexOf(this.Item.language) > -1) {\n static_ordering_val = true;\n } else if (name.multi && name.multi.main && ['vi', 'hu'].indexOf(name.multi.main.slice(0,2)) > -1) {\n static_ordering_val = true;\n } else {\n if (this.state.opt['auto-vietnamese-names']\n && (CSL.VIETNAMESE_NAMES.exec(name.family + \" \" + name.given)\n && CSL.VIETNAMESE_SPECIALS.exec(name.family + name.given))) {\n \n static_ordering_val = true;\n }\n }\n return static_ordering_val;\n};\n\nCSL.NameOutput.prototype._quashChecks = function (jurisdiction, str) {\n var str = this.state.transform.quashCheck(jurisdiction, str);\n // If the abbreviation has date cut-offs, find the most recent\n // abbreviation within scope.\n var lst = str.split(/>>[0-9]{4}>>/);\n var m = str.match(/>>([0-9]{4})>>/);\n str = lst.pop();\n var date = this.Item[\"original-date\"] ? this.Item[\"original-date\"] : this.Item[\"issued\"];\n if (date) {\n date = parseInt(date.year, 10);\n date = isNaN(date) ? false : date;\n }\n if (date) {\n if (lst.length > 0) {\n for (var k=m.length-1; k>0; k--) {\n if (date >= parseInt(m[k], 10)) {\n break;\n }\n str = lst.pop();\n }\n }\n str = str.replace(/\\s*\\|\\s*/g, \"|\");\n }\n return str;\n}\n\nCSL.NameOutput.prototype._trimInstitution = function (subunits) {\n\t// Oh! Good catch in the tests. This happens before abbrevs.\n // Won't work that way. Need to do abbrev substitute first,\n // and apply this separately to long and to short.\n var use_first = false;\n var stop_last = false;\n var use_last = false;\n var stop_first = false;\n var s = subunits.slice();\n if (this.institution) {\n // If use_first, apply stop_last, then apply use_first;\n // If use_last, apply stop_first, then apply use_last;\n if (\"undefined\" !== typeof this.institution.strings[\"use-first\"]) {\n // this.state.sys.print(\"use-first OK\");\n use_first = this.institution.strings[\"use-first\"];\n }\n if (\"undefined\" !== typeof this.institution.strings[\"use-last\"]) {\n // this.state.sys.print(\"use-last OK\");\n use_last = this.institution.strings[\"use-last\"];\n }\n if (\"undefined\" !== typeof this.institution.strings[\"stop-first\"]) {\n // this.state.sys.print(\"stop-first OK\");\n stop_first = this.institution.strings[\"stop-first\"];\n }\n if (\"undefined\" !== typeof this.institution.strings[\"stop-last\"]) {\n stop_last = this.institution.strings[\"stop-last\"];\n }\n\n if (use_first) {\n if (stop_last) {\n s = s.slice(0, stop_last * -1);\n }\n s = s.slice(0, use_first);\n }\n \n if (use_last) {\n var ss = subunits.slice();\n if (use_first) {\n stop_first = use_first;\n } else {\n s = [];\n }\n if (stop_first) {\n ss = ss.slice(stop_first);\n }\n ss = ss.slice(use_last * -1);\n s = s.concat(ss);\n }\n subunits = s;\n }\n return subunits;\n};\n\n/*global CSL: true */\n\nCSL.PublisherOutput = function (state, group_tok) {\n this.state = state;\n this.group_tok = group_tok;\n this.varlist = [];\n};\n\nCSL.PublisherOutput.prototype.render = function () {\n this.clearVars();\n this.composeAndBlob();\n this.composeElements();\n this.composePublishers();\n this.joinPublishers();\n};\n\n\n// XXX Figure out how to adapt this to the House of Lords / House of Commons\n// joint committee case\n\n// name_delimiter\n// delimiter_precedes_last\n// and\n\nCSL.PublisherOutput.prototype.composeAndBlob = function () {\n this.and_blob = {};\n var and_term = false;\n if (this.group_tok.strings.and === \"text\") {\n and_term = this.state.getTerm(\"and\");\n } else if (this.group_tok.strings.and === \"symbol\") {\n and_term = \"&\";\n }\n var tok = new CSL.Token();\n tok.strings.suffix = \" \";\n tok.strings.prefix = \" \";\n this.state.output.append(and_term, tok, true);\n var no_delim = this.state.output.pop();\n\n tok.strings.prefix = this.group_tok.strings[\"subgroup-delimiter\"];\n this.state.output.append(and_term, tok, true);\n var with_delim = this.state.output.pop();\n \n this.and_blob.single = false;\n this.and_blob.multiple = false;\n if (and_term) {\n if (this.group_tok.strings[\"subgroup-delimiter-precedes-last\"] === \"always\") {\n this.and_blob.single = with_delim;\n } else if (this.group_tok.strings[\"subgroup-delimiter-precedes-last\"] === \"never\") {\n this.and_blob.single = no_delim;\n this.and_blob.multiple = no_delim;\n } else {\n this.and_blob.single = no_delim;\n this.and_blob.multiple = with_delim;\n }\n }\n};\n\n\nCSL.PublisherOutput.prototype.composeElements = function () {\n for (var i = 0, ilen = 2; i < ilen; i += 1) {\n var varname = [\"publisher\", \"publisher-place\"][i];\n for (var j = 0, jlen = this[\"publisher-list\"].length; j < jlen; j += 1) {\n var str = this[varname + \"-list\"][j];\n var tok = this[varname + \"-token\"];\n // notSerious\n this.state.output.append(str, tok, true);\n this[varname + \"-list\"][j] = this.state.output.pop();\n }\n }\n};\n\n\nCSL.PublisherOutput.prototype.composePublishers = function () {\n var blobs;\n for (var i = 0, ilen = this[\"publisher-list\"].length; i < ilen; i += 1) {\n blobs = [this[this.varlist[0] + \"-list\"][i], this[this.varlist[1] + \"-list\"][i]];\n this[\"publisher-list\"][i] = this._join(blobs, this.group_tok.strings.delimiter);\n }\n};\n\n\nCSL.PublisherOutput.prototype.joinPublishers = function () {\n var blobs = this[\"publisher-list\"];\n var publishers = this._join(blobs, this.group_tok.strings[\"subgroup-delimiter\"], this.and_blob.single, this.and_blob.multiple, this.group_tok);\n this.state.output.append(publishers, \"literal\");\n};\n\n\n// blobs, delimiter, single, multiple, tokenname\n// Tokenname is a key at top level of this object.\nCSL.PublisherOutput.prototype._join = CSL.NameOutput.prototype._join;\nCSL.PublisherOutput.prototype._getToken = CSL.NameOutput.prototype._getToken;\n\n\nCSL.PublisherOutput.prototype.clearVars = function () {\n this.state.tmp[\"publisher-list\"] = false;\n this.state.tmp[\"publisher-place-list\"] = false;\n this.state.tmp[\"publisher-group-token\"] = false;\n this.state.tmp[\"publisher-token\"] = false;\n this.state.tmp[\"publisher-place-token\"] = false;\n};\n\n/*global CSL: true */\n\nCSL.evaluateLabel = function (node, state, Item, item) {\n var myterm;\n if (\"locator\" === node.strings.term) {\n if (item && item.label) {\n if (item.label === \"sub verbo\") {\n myterm = \"sub-verbo\";\n } else {\n myterm = item.label;\n }\n }\n if (!myterm) {\n myterm = \"page\";\n }\n } else {\n myterm = node.strings.term;\n }\n \n // Plurals detection.\n var plural = node.strings.plural;\n if (\"number\" !== typeof plural) {\n // (node, ItemObject, variable, type)\n var theItem = (item && node.strings.term === \"locator\") ? item : Item;\n if (theItem[node.strings.term]) {\n state.processNumber(false, theItem, node.strings.term, Item.type);\n plural = state.tmp.shadow_numbers[node.strings.term].plural;\n if (!state.tmp.shadow_numbers[node.strings.term].labelForm\n && !state.tmp.shadow_numbers[node.strings.term].labelDecorations) {\n if (node.strings.form) {\n state.tmp.shadow_numbers[node.strings.term].labelForm = node.strings.form;\n } else if (state.tmp.group_context.tip.label_form) {\n state.tmp.shadow_numbers[node.strings.term].labelForm = state.tmp.group_context.tip.label_form;\n }\n state.tmp.shadow_numbers[node.strings.term].labelCapitalizeIfFirst = node.strings.capitalize_if_first;\n state.tmp.shadow_numbers[node.strings.term].labelDecorations = node.decorations.slice();\n }\n \n if ([\"locator\", \"number\", \"page\"].indexOf(node.strings.term) > -1 && state.tmp.shadow_numbers[node.strings.term].label) {\n myterm = state.tmp.shadow_numbers[node.strings.term].label;\n }\n if (node.decorations && state.opt.development_extensions.csl_reverse_lookup_support) {\n node.decorations.reverse();\n node.decorations.push([\"@showid\",\"true\", node.cslid]);\n node.decorations.reverse();\n }\n }\n }\n return CSL.castLabel(state, node, myterm, plural, CSL.TOLERANT);\n};\n\nCSL.castLabel = function (state, node, term, plural, mode) {\n var label_form = node.strings.form;\n var label_capitalize_if_first = node.strings.capitalize_if_first;\n if (state.tmp.group_context.tip.label_form) {\n if (label_form === \"static\") {\n state.tmp.group_context.tip.label_static = true;\n } else {\n label_form = state.tmp.group_context.tip.label_form;\n }\n }\n\n if (state.tmp.group_context.tip.label_capitalize_if_first) {\n label_capitalize_if_first = state.tmp.group_context.tip.label_capitalize_if_first;\n }\n var ret = state.getTerm(term, label_form, plural, false, mode, node.default_locale);\n if (label_capitalize_if_first) {\n ret = CSL.Output.Formatters[\"capitalize-first\"](state, ret);\n }\n // XXXXX Cut-and-paste code in multiple locations. This code block should be\n // collected in a function.\n // Tag: strip-periods-block\n if (state.tmp.strip_periods) {\n ret = ret.replace(/\\./g, \"\");\n } else {\n for (var i = 0, ilen = node.decorations.length; i < ilen; i += 1) {\n if (\"@strip-periods\" === node.decorations[i][0] && \"true\" === node.decorations[i][1]) {\n ret = ret.replace(/\\./g, \"\");\n break;\n }\n }\n }\n return ret;\n};\n\n/*global CSL: true */\n\nCSL.Node.name = {\n build: function (state, target) {\n var func;\n if ([CSL.SINGLETON, CSL.START].indexOf(this.tokentype) > -1) {\n var oldTmpRoot;\n if (\"undefined\" === typeof state.tmp.root) {\n oldTmpRoot = undefined;\n state.tmp.root = \"citation\";\n } else {\n oldTmpRoot = state.tmp.root;\n }\n // Many CSL styles set et-al-[min|use-first]\n // and et-al-subsequent-[min|use-first] to the same\n // value.\n // Set state.opt.update_mode = CSL.POSITION if\n // et-al-subsequent-min or et-al-subsequent-use-first\n // are set AND their value differs from their plain\n // counterparts.\n if (state.inheritOpt(this, \"et-al-subsequent-min\")\n && (state.inheritOpt(this, \"et-al-subsequent-min\") !== state.inheritOpt(this, \"et-al-min\"))) {\n \n state.opt.update_mode = CSL.POSITION;\n }\n if (state.inheritOpt(this, \"et-al-subsequent-use-first\")\n && (state.inheritOpt(this, \"et-al-subsequent-use-first\") !== state.inheritOpt(this, \"et-al-use-first\"))) {\n \n state.opt.update_mode = CSL.POSITION;\n }\n\n state.tmp.root = oldTmpRoot;\n\n func = function (state) {\n // Et-al (onward processing in node_etal.js and node_names.js)\n // XXXXX Why is this necessary? This is available on this.name, right?\n state.tmp.etal_term = \"et-al\";\n\n // Use default delimiter as fallback, in a way that allows explicit\n // empty strings.\n state.tmp.name_delimiter = state.inheritOpt(this, \"delimiter\", \"name-delimiter\", \", \");\n state.tmp[\"delimiter-precedes-et-al\"] = state.inheritOpt(this, \"delimiter-precedes-et-al\");\n \n // And\n if (\"text\" === state.inheritOpt(this, \"and\")) {\n this.and_term = state.getTerm(\"and\", \"long\", 0);\n } else if (\"symbol\" === state.inheritOpt(this, \"and\")) {\n if (state.opt.development_extensions.expect_and_symbol_form) {\n this.and_term = state.getTerm(\"and\", \"symbol\", 0);\n } else {\n this.and_term = \"&\";\n }\n }\n state.tmp.and_term = this.and_term;\n if (CSL.STARTSWITH_ROMANESQUE_REGEXP.test(this.and_term)) {\n this.and_prefix_single = \" \";\n this.and_prefix_multiple = \", \";\n // Workaround to allow explicit empty string\n // on cs:name delimiter.\n if (\"string\" === typeof state.tmp.name_delimiter) {\n this.and_prefix_multiple = state.tmp.name_delimiter;\n }\n this.and_suffix = \" \";\n\n // Really can't inspect these values in the build phase. Sorry.\n //state.build.name_delimiter = this.strings.delimiter;\n\n } else {\n this.and_prefix_single = \"\";\n this.and_prefix_multiple = \"\";\n this.and_suffix = \"\";\n }\n if (state.inheritOpt(this, \"delimiter-precedes-last\") === \"always\") {\n this.and_prefix_single = state.tmp.name_delimiter;\n } else if (state.inheritOpt(this, \"delimiter-precedes-last\") === \"never\") {\n // Slightly fragile: could test for charset here to make\n // this more certain.\n if (this.and_prefix_multiple) {\n this.and_prefix_multiple = \" \";\n }\n } else if (state.inheritOpt(this, \"delimiter-precedes-last\") === \"after-inverted-name\") {\n if (this.and_prefix_single) {\n this.and_prefix_single = state.tmp.name_delimiter;\n }\n if (this.and_prefix_multiple) {\n this.and_prefix_multiple = \" \";\n }\n }\n\n this.and = {};\n if (state.inheritOpt(this, \"and\")) {\n state.output.append(this.and_term, \"empty\", true);\n this.and.single = state.output.pop();\n this.and.single.strings.prefix = this.and_prefix_single;\n this.and.single.strings.suffix = this.and_suffix;\n state.output.append(this.and_term, \"empty\", true);\n this.and.multiple = state.output.pop();\n this.and.multiple.strings.prefix = this.and_prefix_multiple;\n this.and.multiple.strings.suffix = this.and_suffix;\n } else if (state.tmp.name_delimiter) {\n // This is a little weird, but it works.\n this.and.single = new CSL.Blob(state.tmp.name_delimiter);\n this.and.single.strings.prefix = \"\";\n this.and.single.strings.suffix = \"\";\n this.and.multiple = new CSL.Blob(state.tmp.name_delimiter);\n this.and.multiple.strings.prefix = \"\";\n this.and.multiple.strings.suffix = \"\";\n }\n\n this.ellipsis = {};\n if (state.inheritOpt(this, \"et-al-use-last\")) {\n // We use the dedicated Unicode ellipsis character because\n // it is recommended by some editors, and can be more easily\n // identified for find and replace operations.\n // Source: http://en.wikipedia.org/wiki/Ellipsis#Computer_representations\n //\n \n // Eventually, this should be localized as a term in CSL, with some\n // mechanism for triggering appropriate punctuation handling around\n // the ellipsis placeholder (Polish is a particularly tough case for that).\n this.ellipsis_term = \"\\u2026\";\n // Similar treatment to \"and\", above, will be needed\n // here when this becomes a locale term.\n this.ellipsis_prefix_single = \" \";\n this.ellipsis_prefix_multiple = state.inheritOpt(this, \"delimiter\", \"name-delimiter\", \", \");\n this.ellipsis_suffix = \" \";\n this.ellipsis.single = new CSL.Blob(this.ellipsis_term);\n this.ellipsis.single.strings.prefix = this.ellipsis_prefix_single;\n this.ellipsis.single.strings.suffix = this.ellipsis_suffix;\n this.ellipsis.multiple = new CSL.Blob(this.ellipsis_term);\n this.ellipsis.multiple.strings.prefix = this.ellipsis_prefix_multiple;\n this.ellipsis.multiple.strings.suffix = this.ellipsis_suffix;\n }\n\n // et-al parameters are annoyingly incomprehensible\n // again.\n //\n // Explanation probably just adds a further layer of\n // irritation, but what's INTENDED here is that\n // the state.tmp et-al variables are set from the\n // cs:key element when composing sort keys, and a\n // macro containing a name can be called from cs:key.\n // So when cs:key sets et-al attributes, they are\n // set on state.tmp, and when the key is finished\n // processing, the state.tmp variables are reset to\n // undefined. IN THEORY the state.tmp et-al variables\n // will not be used in other contexts. I hope.\n //\n // Anyway, the current tests now seem to pass.\n if (\"undefined\" === typeof state.tmp[\"et-al-min\"]) {\n state.tmp[\"et-al-min\"] = state.inheritOpt(this, \"et-al-min\");\n }\n if (\"undefined\" === typeof state.tmp[\"et-al-use-first\"]) {\n state.tmp[\"et-al-use-first\"] = state.inheritOpt(this, \"et-al-use-first\");\n }\n if (\"undefined\" === typeof state.tmp[\"et-al-use-last\"]) {\n //print(\" setting et-al-use-last from name: \"+this.strings[\"et-al-use-last\"]);\n state.tmp[\"et-al-use-last\"] = state.inheritOpt(this, \"et-al-use-last\");\n }\n\n state.nameOutput.name = this;\n };\n \n state.build.name_flag = true;\n\n this.execs.push(func);\n }\n target.push(this);\n }\n};\n\n\n\n/*global CSL: true */\n\nCSL.Node[\"name-part\"] = {\n build: function (state) {\n state.build[this.strings.name] = this;\n }\n};\n\n/*global CSL: true */\n\nCSL.Node.names = {\n build: function (state, target) {\n var func;\n // CSL.debug = print;\n\n if (this.tokentype === CSL.START || this.tokentype === CSL.SINGLETON) {\n CSL.Util.substituteStart.call(this, state, target);\n state.build.substitute_level.push(1);\n }\n \n if (this.tokentype === CSL.SINGLETON) {\n state.build.names_variables[state.build.names_variables.length-1].concat(this.variables);\n for (var i in this.variables) {\n var variable = this.variables[i];\n var name_labels = state.build.name_label[state.build.name_label.length-1];\n if (Object.keys(name_labels).length) {\n name_labels[variable] = name_labels[Object.keys(name_labels)[0]];\n }\n }\n func = function (state) {\n state.nameOutput.reinit(this, this.variables_real[0]);\n };\n this.execs.push(func);\n }\n\n if (this.tokentype === CSL.START) {\n\n state.build.names_flag = true;\n state.build.name_flag = false;\n state.build.names_level += 1;\n state.build.names_variables.push(this.variables);\n state.build.name_label.push({});\n // init can substitute\n // init names\n func = function (state) {\n state.tmp.can_substitute.push(true);\n state.tmp.name_node = {};\n state.tmp.name_node.children = [];\n state.nameOutput.init(this);\n };\n this.execs.push(func);\n\n }\n \n if (this.tokentype === CSL.END) {\n\n // Set/reset name blobs if they exist, for processing\n // by namesOutput()\n for (var i = 0, ilen = 3; i < ilen; i += 1) {\n var key = [\"family\", \"given\", \"et-al\"][i];\n this[key] = state.build[key];\n if (state.build.names_level === 1) {\n state.build[key] = undefined;\n }\n }\n // Labels, if any\n this.label = state.build.name_label[state.build.name_label.length-1];\n state.build.names_level += -1;\n state.build.names_variables.pop();\n state.build.name_label.pop();\n\n // The with term. This isn't the right place\n // for this, but it's all hard-wired at the\n // moment.\n\n // \"and\" and \"ellipsis\" are set in node_name.js\n func = function (state) {\n // Et-al (strings only)\n // Blob production has to happen inside nameOutput()\n // since proper escaping requires access to the output\n // queue.\n if (state.tmp.etal_node) {\n this.etal_style = state.tmp.etal_node;\n } else {\n this.etal_style = \"empty\";\n }\n\n this.etal_term = state.getTerm(state.tmp.etal_term, \"long\", 0);\n this.etal_prefix_single = \" \";\n // Should be name delimiter, not hard-wired.\n this.etal_prefix_multiple = state.tmp.name_delimiter;\n if (state.tmp[\"delimiter-precedes-et-al\"] === \"always\") {\n this.etal_prefix_single = state.tmp.name_delimiter;\n } else if (state.tmp[\"delimiter-precedes-et-al\"] === \"never\") {\n this.etal_prefix_multiple = \" \";\n } else if (state.tmp[\"delimiter-precedes-et-al\"] === \"after-inverted-name\") {\n this.etal_prefix_single = state.tmp.name_delimiter;\n this.etal_prefix_multiple = \" \";\n }\n this.etal_suffix = \"\";\n if (!CSL.STARTSWITH_ROMANESQUE_REGEXP.test(this.etal_term)) {\n // Not sure what the correct treatment is here, but we should not suppress\n // a comma-space.\n // https://forums.zotero.org/discussion/76679/delimiter-precedes-et-al-always-dose-not-work-in-locale-zh-cn\n if (this.etal_prefix_single === \" \") {\n this.etal_prefix_single = \"\";\n }\n if (this.etal_prefix_multiple === \" \") {\n this.etal_prefix_multiple = \"\";\n }\n if (this.etal_suffix === \" \") {\n this.etal_suffix = \"\";\n }\n }\n // et-al affixes are further adjusted in nameOutput(),\n // after the term (possibly changed in cs:et-al) is known.\n\n\n for (var i = 0, ilen = 3; i < ilen; i += 1) {\n var key = [\"family\", \"given\"][i];\n state.nameOutput[key] = this[key];\n }\n state.nameOutput[\"with\"] = this[\"with\"];\n\n // REMOVE THIS\n var mywith = \"with\";\n var with_default_prefix = \"\";\n var with_suffix = \"\";\n if (CSL.STARTSWITH_ROMANESQUE_REGEXP.test(mywith)) {\n with_default_prefix = \" \";\n with_suffix = \" \";\n }\n var thewith = {};\n thewith.single = new CSL.Blob(mywith);\n thewith.single.strings.suffix = with_suffix;\n thewith.multiple = new CSL.Blob(mywith);\n thewith.multiple.strings.suffix = with_suffix;\n if (state.inheritOpt(state.nameOutput.name, \"delimiter-precedes-last\") === \"always\") {\n thewith.single.strings.prefix = state.inheritOpt(this, \"delimiter\", \"names-delimiter\");\n thewith.multiple.strings.prefix = state.inheritOpt(this, \"delimiter\", \"names-delimiter\");\n } else if (state.inheritOpt(state.nameOutput.name, \"delimiter-precedes-last\") === \"contextual\") {\n thewith.single.strings.prefix = with_default_prefix;\n thewith.multiple.strings.prefix = state.inheritOpt(this, \"delimiter\", \"names-delimiter\");\n } else if (state.inheritOpt(state.nameOutput.name, \"delimiter-precedes-last\") === \"after-inverted-name\") {\n thewith.single.strings.prefix = state.inheritOpt(this, \"delimiter\", \"names-delimiter\");\n thewith.multiple.strings.prefix = with_default_prefix;\n } else {\n thewith.single.strings.prefix = with_default_prefix;\n thewith.multiple.strings.prefix = with_default_prefix;\n }\n state.nameOutput[\"with\"] = thewith;\n\n\n // XXX label style should be set per variable, since they may differ\n // XXX with full-form nested names constructs\n state.nameOutput.label = this.label;\n\n state.nameOutput.etal_style = this.etal_style;\n state.nameOutput.etal_term = this.etal_term;\n state.nameOutput.etal_prefix_single = this.etal_prefix_single;\n state.nameOutput.etal_prefix_multiple = this.etal_prefix_multiple;\n state.nameOutput.etal_suffix = this.etal_suffix;\n state.nameOutput.outputNames();\n state.tmp[\"et-al-use-first\"] = undefined;\n state.tmp[\"et-al-min\"] = undefined;\n state.tmp[\"et-al-use-last\"] = undefined;\n };\n this.execs.push(func);\n\n // unsets\n func = function (state) {\n if (!state.tmp.can_substitute.pop()) {\n state.tmp.can_substitute.replace(false, CSL.LITERAL);\n }\n \n // For posterity ...\n //\n // This was enough to fix the issue reported here:\n //\n // http://forums.zotero.org/discussion/25223/citeproc-bug-substitute-doesnt-work-correctly-for-title-macro/\n //\n // The remainder of the changes applied in the same patch\n // relate to a label assignments, which were found to be\n // buggy while working on the issue. The test covering\n // both problems is here:\n //\n // https://bitbucket.org/bdarcus/citeproc-test/src/ab136a6aa8f2/processor-tests/humans/substitute_SuppressOrdinaryVariable.txt\n if (state.tmp.can_substitute.mystack.length === 1) {\n state.tmp.can_block_substitute = false;\n }\n };\n this.execs.push(func);\n\n state.build.name_flag = false;\n }\n target.push(this);\n\n if (this.tokentype === CSL.END || this.tokentype === CSL.SINGLETON) {\n state.build.substitute_level.pop();\n CSL.Util.substituteEnd.call(this, state, target);\n }\n }\n};\n\n/*global CSL: true */\n\nCSL.Node.number = {\n build: function (state, target) {\n var func;\n CSL.Util.substituteStart.call(this, state, target);\n //\n // This should push a rangeable object to the queue.\n //\n if (this.strings.form === \"roman\") {\n this.formatter = state.fun.romanizer;\n } else if (this.strings.form === \"ordinal\") {\n this.formatter = state.fun.ordinalizer;\n } else if (this.strings.form === \"long-ordinal\") {\n this.formatter = state.fun.long_ordinalizer;\n }\n if (\"undefined\" === typeof this.successor_prefix) {\n this.successor_prefix = state[state.build.area].opt.layout_delimiter;\n }\n if (\"undefined\" === typeof this.splice_prefix) {\n this.splice_prefix = state[state.build.area].opt.layout_delimiter;\n }\n // is this needed?\n //if (\"undefined\" === typeof this.splice_prefix){\n // this.splice_prefix = state[state.tmp.area].opt.layout_delimiter;\n //}\n //\n // Whether we actually stick a number object on\n // the output queue depends on whether the field\n // contains a pure number.\n //\n // push number or text\n func = function (state, Item, item) {\n // NOTE: this works because this is the ONLY function in this node.\n // If further functions are added, they need to start with the same\n // abort condition.\n if (this.variables.length === 0) {\n return;\n }\n var varname;\n varname = this.variables[0];\n if (\"undefined\" === typeof item) {\n var item = {};\n }\n if ([\"locator\", \"locator-extra\"].indexOf(varname) > -1) {\n if (state.tmp.just_looking) {\n return;\n }\n if (!item[varname]) {\n return;\n }\n } else {\n if (!Item[varname]) {\n return;\n }\n }\n\n if (varname === 'collection-number' && Item.type === 'legal_case') {\n state.tmp.renders_collection_number = true;\n }\n \n // For bill or legislation items that have a label-form\n // attribute set on the cs:number node rendering the locator,\n // the form and pluralism of locator terms are controlled\n // separately from those of the initial label. Form is\n // straightforward: the label uses the value set on\n // the cs:label node that renders it, and the embedded\n // labels use the value of label-form set on the cs:number\n // node. Both default to \"long\".\n //\n // Pluralism is more complicated. For embedded labels,\n // pluralism is evaluated using a simple heuristic that\n // can be found below (it just looks for comma, ampersand etc).\n // The item.label rendered independently via cs:label\n // defaults to singular. It is always singular if embedded\n // labels exist that (when expanded to their valid CSL\n // value) do not match the value of item.label. Otherwise,\n // if one or more matching embedded labels exist, the\n // cs:label is set to plural.\n //\n // The code that does all this is divided between this module,\n // util_static_locator.js, and util_label.js. It's not easy\n // to follow, but seems to do the job. Let's home for good\n // luck out there in the wild.\n \n var node = this;\n\n if (state.tmp.group_context.tip.force_suppress) {\n return false;\n }\n\n if ([\"locator\", \"locator-extra\"].indexOf(varname) > -1) {\n // amazing that we reach this. should abort sooner if no content?\n state.processNumber.call(state, node, item, varname, Item.type);\n } else {\n if (!state.tmp.group_context.tip.condition && Item[varname]) {\n state.tmp.just_did_number = (\"\" + Item[varname]).match(/[0-9]$/);\n }\n // UPDATE_GROUP_CONTEXT_CONDITION is run by processNumber\n state.processNumber.call(state, node, Item, varname, Item.type);\n }\n\n if (this.substring) {\n var val = Item[varname].slice(this.substring);\n state.output.append(val, node);\n } else {\n CSL.Util.outputNumericField(state, varname, Item.id);\n }\n\n if ([\"locator\", \"locator-extra\"].indexOf(this.variables_real[0]) > -1\n && !state.tmp.just_looking) {\n state.tmp.done_vars.push(this.variables_real[0]);\n state.tmp.group_context.tip.done_vars.push(this.variables_real[0]);\n }\n };\n this.execs.push(func);\n target.push(this);\n \n CSL.Util.substituteEnd.call(this, state, target);\n }\n};\n\n/*global CSL: true */\n\n/*\n * Yikes, these functions were running out of scope for yonks.\n * now that they are set in the correct token list,\n * they might be useful for things.\n * FB 2013.11.09\n*/\n\nCSL.Node.sort = {\n build: function (state, target) {\n target = state[state.build.root + \"_sort\"].tokens;\n if (this.tokentype === CSL.START) {\n if (state.build.area === \"citation\") {\n state.opt.sort_citations = true;\n }\n state.build.area = state.build.root + \"_sort\";\n state.build.extension = \"_sort\";\n \n var func = function (state, Item) {\n //state.tmp.area = state.tmp.root + \"_sort\";\n //state.tmp.extension = \"_sort\";\n if (state.opt.has_layout_locale) {\n var langspec = CSL.localeResolve(Item.language, state.opt[\"default-locale\"][0]);\n var sort_locales = state[state.tmp.area.slice(0,-5)].opt.sort_locales;\n var langForItem;\n for (var i=0,ilen=sort_locales.length;i<ilen;i+=1) {\n langForItem = sort_locales[i][langspec.bare];\n if (!langForItem) {\n langForItem = sort_locales[i][langspec.best];\n }\n if (langForItem) {\n break;\n }\n }\n if (!langForItem) {\n langForItem = state.opt[\"default-locale\"][0];\n }\n state.tmp.lang_sort_hold = state.opt.lang;\n state.opt.lang = langForItem;\n }\n };\n this.execs.push(func);\n \n }\n if (this.tokentype === CSL.END) {\n state.build.area = state.build.root;\n state.build.extension = \"\";\n var func = function (state) {\n if (state.opt.has_layout_locale) {\n state.opt.lang = state.tmp.lang_sort_hold;\n delete state.tmp.lang_sort_hold;\n }\n //state.tmp.area = state.tmp.root;\n //state.tmp.extension = \"\";\n };\n this.execs.push(func);\n /*\n var func = function (state, Item) {\n state.tmp.area = state.tmp.root;\n state.tmp.extension = \"\";\n }\n this.execs.push(func);\n */\n }\n target.push(this);\n }\n};\n\n\n\n/*global CSL: true */\n\nCSL.Node.substitute = {\n build: function (state, target) {\n var func;\n if (this.tokentype === CSL.START) {\n /* */\n // set conditional\n var choose_start = new CSL.Token(\"choose\", CSL.START);\n CSL.Node.choose.build.call(choose_start, state, target);\n var if_singleton = new CSL.Token(\"if\", CSL.SINGLETON);\n func = function() {\n if (state.tmp.value.length && !state.tmp.common_term_match_fail) {\n return true;\n }\n return false;\n }\n if_singleton.tests = [func];\n if_singleton.test = state.fun.match.any(if_singleton, state, if_singleton.tests);\n target.push(if_singleton);\n\n func = function (state) {\n state.tmp.can_block_substitute = true;\n if (state.tmp.value.length && !state.tmp.common_term_match_fail) {\n state.tmp.can_substitute.replace(false, CSL.LITERAL);\n }\n state.tmp.common_term_match_fail = false;\n };\n this.execs.push(func);\n target.push(this);\n /* */\n }\n if (this.tokentype === CSL.END) {\n //var if_end = new CSL.Token(\"if\", CSL.END);\n //CSL.Node[\"if\"].build.call(if_end, state, target);\n /* */\n target.push(this);\n var choose_end = new CSL.Token(\"choose\", CSL.END);\n CSL.Node.choose.build.call(choose_end, state, target);\n /* */\n }\n }\n};\n\n\n\n/*global CSL: true */\n\nCSL.Node.text = {\n build: function (state, target) {\n var func, form, plural, id, num, number, formatter, firstoutput, specialdelimiter, label, suffix, term;\n if (this.postponed_macro) {\n var group_start = CSL.Util.cloneToken(this);\n group_start.name = \"group\";\n group_start.tokentype = CSL.START;\n CSL.Node.group.build.call(group_start, state, target);\n\n CSL.expandMacro.call(state, this, target);\n\n var group_end = CSL.Util.cloneToken(this);\n group_end.name = \"group\";\n group_end.tokentype = CSL.END;\n if (this.postponed_macro === 'juris-locator-label') {\n group_end.isJurisLocatorLabel = true;\n }\n CSL.Node.group.build.call(group_end, state, target);\n\n } else {\n CSL.Util.substituteStart.call(this, state, target);\n // ...\n //\n // Do non-macro stuff\n \n // Guess again. this.variables is ephemeral, adjusted by an initial\n // function set on the node via @variable attribute setup.\n //variable = this.variables[0];\n \n if (!this.variables_real) {\n this.variables_real = [];\n }\n if (!this.variables) {\n this.variables = [];\n }\n\n form = \"long\";\n plural = 0;\n if (this.strings.form) {\n form = this.strings.form;\n }\n if (this.strings.plural) {\n plural = this.strings.plural;\n }\n if (\"citation-number\" === this.variables_real[0] || \"year-suffix\" === this.variables_real[0] || \"citation-label\" === this.variables_real[0]) {\n //\n // citation-number and year-suffix are super special,\n // because they are rangeables, and require a completely\n // different set of formatting parameters on the output\n // queue.\n if (this.variables_real[0] === \"citation-number\") {\n\n if (state.build.root === \"citation\") {\n state.opt.update_mode = CSL.NUMERIC;\n }\n if (state.build.root === \"bibliography\") {\n state.opt.bib_mode = CSL.NUMERIC;\n }\n //this.strings.is_rangeable = true;\n if (\"citation-number\" === state[state.tmp.area].opt.collapse) {\n this.range_prefix = state.getTerm(\"citation-range-delimiter\");\n }\n this.successor_prefix = state[state.build.area].opt.layout_delimiter;\n this.splice_prefix = state[state.build.area].opt.layout_delimiter;\n func = function (state, Item, item) {\n\n id = \"\" + Item.id;\n if (!state.tmp.just_looking) {\n if (state.tmp.area.slice(-5) === \"_sort\" && this.variables[0] === \"citation-number\") {\n if (state.tmp.area === \"bibliography_sort\") {\n state.tmp.group_context.tip.done_vars.push(\"citation-number\");\n }\n if (state.tmp.area === \"citation_sort\" && state.bibliography_sort.tmp.citation_number_map) {\n var num = state.bibliography_sort.tmp.citation_number_map[state.registry.registry[Item.id].seq];\n } else {\n var num = state.registry.registry[Item.id].seq;\n }\n if (num) {\n // Code currently in util_number.js\n num = CSL.Util.padding(\"\" + num);\n }\n state.output.append(num, this);\n return;\n }\n if (item && item[\"author-only\"]) {\n state.tmp.element_trace.replace(\"suppress-me\");\n }\n if (state.tmp.area !== \"bibliography_sort\" && state.bibliography_sort.tmp.citation_number_map && state.bibliography_sort.opt.citation_number_sort_direction === CSL.DESCENDING) {\n num = state.bibliography_sort.tmp.citation_number_map[state.registry.registry[id].seq];\n } else {\n num = state.registry.registry[id].seq;\n }\n if (state.opt.citation_number_slug) {\n state.output.append(state.opt.citation_number_slug, this);\n } else {\n number = new CSL.NumericBlob(state, false, num, this, Item.id);\n if (state.tmp.in_cite_predecessor) {\n number.suppress_splice_prefix = true;\n }\n state.output.append(number, \"literal\");\n }\n }\n };\n this.execs.push(func);\n } else if (this.variables_real[0] === \"year-suffix\") {\n\n state.opt.has_year_suffix = true;\n\n if (state[state.tmp.area].opt.collapse === \"year-suffix-ranged\") {\n //this.range_prefix = \"-\";\n this.range_prefix = state.getTerm(\"citation-range-delimiter\");\n }\n this.successor_prefix = state[state.build.area].opt.layout_delimiter;\n if (state[state.tmp.area].opt[\"year-suffix-delimiter\"]) {\n this.successor_prefix = state[state.build.area].opt[\"year-suffix-delimiter\"];\n }\n func = function (state, Item) {\n if (state.registry.registry[Item.id] && state.registry.registry[Item.id].disambig.year_suffix !== false && !state.tmp.just_looking) {\n //state.output.append(state.registry.registry[Item.id].disambig[2],this);\n num = parseInt(state.registry.registry[Item.id].disambig.year_suffix, 10);\n\n //if (state[state.tmp.area].opt.collapse === \"year-suffix-ranged\") {\n // //this.range_prefix = \"-\";\n // this.range_prefix = state.getTerm(\"citation-range-delimiter\");\n //}\n //this.successor_prefix = state[state.tmp.area].opt.layout_delimiter;\n if (state[state.tmp.area].opt.cite_group_delimiter) {\n this.successor_prefix = state[state.tmp.area].opt.cite_group_delimiter;\n }\n number = new CSL.NumericBlob(state, false, num, this, Item.id);\n formatter = new CSL.Util.Suffixator(CSL.SUFFIX_CHARS);\n number.setFormatter(formatter);\n state.output.append(number, \"literal\");\n firstoutput = false;\n // XXX Can we do something better for length here?\n for (var i=0,ilen=state.tmp.group_context.mystack.length; i<ilen; i++) {\n var flags = state.tmp.group_context.mystack[i];\n if (!flags.variable_success && (flags.variable_attempt || (!flags.variable_attempt && !flags.term_intended))) {\n firstoutput = true;\n break;\n }\n }\n specialdelimiter = state[state.tmp.area].opt[\"year-suffix-delimiter\"];\n if (firstoutput && specialdelimiter && !state.tmp.sort_key_flag) {\n state.tmp.splice_delimiter = state[state.tmp.area].opt[\"year-suffix-delimiter\"];\n }\n }\n };\n this.execs.push(func);\n } else if (this.variables_real[0] === \"citation-label\") {\n if (state.build.root === \"bibliography\") {\n state.opt.bib_mode = CSL.TRIGRAPH;\n }\n state.opt.has_year_suffix = true;\n func = function (state, Item) {\n label = Item[\"citation-label\"];\n if (!label) {\n label = state.getCitationLabel(Item);\n }\n if (!state.tmp.just_looking) {\n suffix = \"\";\n if (state.registry.registry[Item.id] && state.registry.registry[Item.id].disambig.year_suffix !== false) {\n num = parseInt(state.registry.registry[Item.id].disambig.year_suffix, 10);\n suffix = state.fun.suffixator.format(num);\n }\n label += suffix;\n }\n state.output.append(label, this);\n };\n this.execs.push(func);\n }\n } else {\n if (this.strings.term) {\n \n // printterm\n func = function (state, Item) {\n var gender = state.opt.gender[Item.type];\n var term = this.strings.term;\n term = state.getTerm(term, form, plural, gender, CSL.TOLERANT, this.default_locale);\n var myterm;\n // if the term is not an empty string, say\n // that we rendered a term\n if (term !== \"\") {\n state.tmp.group_context.tip.term_intended = true;\n }\n CSL.UPDATE_GROUP_CONTEXT_CONDITION(state, term, null, this);\n \n // capitalize the first letter of a term, if it is the\n // first thing rendered in a citation (or if it is\n // being rendered immediately after terminal punctuation,\n // I guess, actually).\n if (!state.tmp.term_predecessor && !(state.opt[\"class\"] === \"in-text\" && state.tmp.area === \"citation\")) {\n myterm = CSL.Output.Formatters[\"capitalize-first\"](state, term);\n //CSL.debug(\"Capitalize\");\n } else {\n myterm = term;\n }\n \n // XXXXX Cut-and-paste code in multiple locations. This code block should be\n // collected in a function.\n // Tag: strip-periods-block\n if (state.tmp.strip_periods) {\n myterm = myterm.replace(/\\./g, \"\");\n } else {\n for (var i = 0, ilen = this.decorations.length; i < ilen; i += 1) {\n if (\"@strip-periods\" === this.decorations[i][0] && \"true\" === this.decorations[i][1]) {\n myterm = myterm.replace(/\\./g, \"\");\n break;\n }\n }\n }\n state.output.append(myterm, this);\n if (state.tmp.can_block_substitute) {\n // Black magic here. This causes the cs:substitution condition to pass,\n // blocking further rendering within its scope. \n state.tmp.can_substitute.replace(false, CSL.LITERAL);\n }\n };\n this.execs.push(func);\n state.build.term = false;\n state.build.form = false;\n state.build.plural = false;\n } else if (this.variables_real.length) {\n func = function (state, Item) {\n\n // If some text variable is rendered, we're not collapsing.\n if (this.variables_real[0] !== \"locator\") {\n state.tmp.have_collapsed = false;\n }\n\n if (!state.tmp.group_context.tip.condition && Item[this.variables[0]]) {\n state.tmp.just_did_number = false;\n }\n var val = Item[this.variables[0]];\n if (val && !state.tmp.group_context.tip.condition) {\n if ((\"\" + val).slice(-1).match(/[0-9]/)) {\n state.tmp.just_did_number = true;\n } else {\n state.tmp.just_did_number = false;\n }\n }\n };\n this.execs.push(func);\n\n // plain string fields\n\n // Deal with multi-fields and ordinary fields separately.\n if (CSL.MULTI_FIELDS.indexOf(this.variables_real[0]) > -1\n || this.variables_real[0].indexOf(\"-main\") > -1\n || this.variables_real[0].indexOf(\"-sub\") > -1\n || [\"language-name\", \"language-name-original\"].indexOf(this.variables_real[0]) > -1\n ) {\n\n // multi-fields\n // Initialize transform factory according to whether\n // abbreviation is desired.\n var abbrevfam = this.variables[0];\n var abbrfall = false;\n var altvar = false;\n var transfall = false;\n if (form === \"short\") {\n if (this.variables_real[0].slice(-6) !== \"-short\") {\n altvar = this.variables_real[0] + \"-short\";\n }\n } else {\n abbrevfam = false;\n }\n if (state.build.extension) {\n // multi-fields for sorting get a sort transform,\n // (abbreviated if the short form was selected)\n transfall = true;\n } else {\n transfall = true;\n abbrfall = true;\n\t\t\t\t\t\t}\n\n func = state.transform.getOutputFunction(this.variables, abbrevfam, abbrfall, altvar, transfall);\n } else {\n // ordinary fields\n if (CSL.CITE_FIELDS.indexOf(this.variables_real[0]) > -1) {\n // per-cite fields are read from item, rather than Item\n func = function (state, Item, item) {\n if (item && item[this.variables[0]]) {\n // Code copied to page variable as well; both\n // become cs:number in MLZ extended schema\n \n // If locator, use cs:number. Otherwise, render\n // normally.\n\n // XXX The code below is pretty-much copied from\n // XXX node_number.js. Should be a common function.\n // XXX BEGIN\n state.processNumber(this, item, this.variables[0], Item.type);\n CSL.Util.outputNumericField(state, this.variables[0], Item.id);\n // XXX END\n\n if ([\"locator\", \"locator-extra\"].indexOf(this.variables_real[0]) > -1\n && !state.tmp.just_looking) { \n state.tmp.done_vars.push(this.variables_real[0]);\n }\n }\n };\n } else if ([\"page\", \"page-first\", \"chapter-number\", \"collection-number\", \"edition\", \"issue\", \"number\", \"number-of-pages\", \"number-of-volumes\", \"volume\"].indexOf(this.variables_real[0]) > -1) {\n // page gets mangled with the correct collapsing\n // algorithm\n func = function(state, Item) {\n state.processNumber(this, Item, this.variables[0], Item.type);\n CSL.Util.outputNumericField(state, this.variables[0], Item.id);\n };\n } else if ([\"URL\", \"DOI\"].indexOf(this.variables_real[0]) > -1) {\n func = function (state, Item) {\n var value;\n if (this.variables[0]) {\n value = state.getVariable(Item, this.variables[0], form);\n if (value) {\n if (this.variables[0] === \"URL\" && form === \"short\") {\n value = value.replace(/(.*\\.[^\\/]+)\\/.*/, \"$1\");\n if (value.match(/\\/\\/www\\./)) {\n value = value.replace(/https?:\\/\\//, \"\");\n }\n }\n // true is for non-suppression of periods\n if (state.opt.development_extensions.wrap_url_and_doi) {\n if (!this.decorations.length || this.decorations[0][0] !== \"@\" + this.variables[0]) {\n // Special-casing to fix https://github.com/Juris-M/citeproc-js/issues/57\n // clone current token, to avoid collateral damage\n var clonetoken = CSL.Util.cloneToken(this);\n // cast a group blob\n var groupblob = new CSL.Blob(null, null, \"url-wrapper\");\n // set the DOI decoration on the blob\n groupblob.decorations.push([\"@DOI\", \"true\"]);\n if (this.variables_real[0] === \"DOI\") {\n // strip a proper DOI prefix\n var prefix;\n if (this.strings.prefix && this.strings.prefix.match(/^.*https:\\/\\/doi\\.org\\/$/)) {\n value = value.replace(/^https?:\\/\\/doi\\.org\\//, \"\");\n if (value.match(/^https?:\\/\\//)) {\n // Do not tamper with another protocol + domain if already set in field value\n prefix = \"\";\n } else {\n // Otherwise https + domain\n prefix = \"https://doi.org/\";\n }\n // set any string prefix on the clone\n clonetoken.strings.prefix = this.strings.prefix.slice(0, clonetoken.strings.prefix.length-16);\n }\n // cast a text blob\n // set the prefix as the content of the blob\n var prefixblob = new CSL.Blob(prefix);\n // cast another text blob\n // set the value as the content of the second blob\n var valueblob = new CSL.Blob(value);\n // append new text token and clone to group token\n groupblob.push(prefixblob);\n groupblob.push(valueblob);\n // append group token to output\n state.output.append(groupblob, clonetoken, false, false, true);\n } else {\n var valueblob = new CSL.Blob(value);\n // append new text token and clone to group token\n groupblob.push(valueblob);\n // append group token to output\n //this.decorations = [[\"@\" + this.variables[0], \"true\"]].concat(this.decorations);\n state.output.append(groupblob, clonetoken, false, false, true);\n }\n } else {\n state.output.append(value, this, false, false, true);\n }\n } else {\n // This is totally unnecessary, isn't it?\n if (this.decorations.length) {\n for (var i=this.decorations.length-1; i>-1; i--) {\n if (this.decorations[i][0] === \"@\" + this.variables[0]) {\n this.decorations = this.decorations.slice(0, i).concat(this.decorations.slice(i+1));\n }\n }\n }\n state.output.append(value, this, false, false, true);\n }\n }\n }\n };\n } else if (this.variables_real[0] === \"section\") {\n // Sections for statutes are special. This is an uncommon\n // variable, so we save the cost of the runtime check\n // unless it's being used.\n func = function (state, Item) {\n var value;\n value = state.getVariable(Item, this.variables[0], form);\n if (value) {\n state.output.append(value, this);\n }\n };\n } else if (this.variables_real[0] === \"hereinafter\") {\n func = function (state, Item) {\n var value = state.transform.abbrevs[\"default\"][\"hereinafter\"][Item.id];\n if (value) {\n state.output.append(value, this);\n state.tmp.group_context.tip.variable_success = true;\n }\n };\n } else {\n // anything left over just gets output in the normal way.\n func = function (state, Item) {\n var value;\n if (this.variables[0]) {\n value = state.getVariable(Item, this.variables[0], form);\n if (value) {\n value = \"\" + value;\n value = value.split(\"\\\\\").join(\"\");\n state.output.append(value, this);\n }\n }\n };\n }\n }\n this.execs.push(func);\n } else if (this.strings.value) {\n // for the text value attribute.\n func = function (state) {\n state.tmp.group_context.tip.term_intended = true;\n // true flags that this is a literal-value term\n CSL.UPDATE_GROUP_CONTEXT_CONDITION(state, this.strings.value, true, this);\n state.output.append(this.strings.value, this);\n if (state.tmp.can_block_substitute) {\n // Black magic here. This causes the cs:substitution condition to pass,\n // blocking further rendering within its scope. \n state.tmp.can_substitute.replace(false, CSL.LITERAL);\n }\n };\n this.execs.push(func);\n // otherwise no output\n }\n }\n target.push(this);\n CSL.Util.substituteEnd.call(this, state, target);\n }\n }\n};\n\n\n\n/*global CSL: true */\n\nCSL.Node.intext = {\n build: function (state, target) {\n if (this.tokentype === CSL.START) {\n\n state.build.area = \"intext\";\n state.build.root = \"intext\";\n state.build.extension = \"\";\n\n var func = function(state, Item) {\n state.tmp.area = \"intext\";\n state.tmp.root = \"intext\";\n state.tmp.extension = \"\";\n }\n this.execs.push(func);\n }\n if (this.tokentype === CSL.END) {\n\n // Do whatever cs:citation does with sorting.\n state.intext_sort = {\n opt: {\n sort_directions: state.citation_sort.opt.sort_directions\n }\n }\n state.intext.srt = state.citation.srt;\n }\n target.push(this);\n }\n};\n\n\n/*global CSL: true */\n\nCSL.Attributes = {};\n\nCSL.Attributes[\"@disambiguate\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n if (arg === \"true\") {\n state.opt.has_disambiguate = true;\n var func = function (Item) {\n if (state.tmp.area === \"bibliography\") {\n if (state.tmp.disambiguate_count < state.registry.registry[Item.id].disambig.disambiguate) {\n state.tmp.disambiguate_count += 1;\n return true;\n }\n } else {\n state.tmp.disambiguate_maxMax += 1;\n if (state.tmp.disambig_settings.disambiguate\n && state.tmp.disambiguate_count < state.tmp.disambig_settings.disambiguate) {\n state.tmp.disambiguate_count += 1;\n return true;\n }\n }\n return false;\n };\n this.tests.push(func);\n } else if (arg === \"check-ambiguity-and-backreference\") {\n var func = function (Item) {\n if (state.registry.registry[Item.id].disambig.disambiguate && state.registry.registry[Item.id][\"citation-count\"] > 1) {\n return true;\n }\n return false;\n };\n this.tests.push(func);\n }\n};\n\nCSL.Attributes[\"@is-numeric\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n var variables = arg.split(/\\s+/);\n var maketest = function(variable) {\n return function (Item, item) {\n var myitem = Item;\n if (item && [\"locator\",\"locator-extra\"].indexOf(variable) > -1) {\n myitem = item;\n }\n if (!myitem[variable]) {\n return false;\n }\n if (CSL.NUMERIC_VARIABLES.indexOf(variable) > -1) {\n if (!state.tmp.shadow_numbers[variable]) {\n state.processNumber(false, myitem, variable, Item.type);\n }\n if (state.tmp.shadow_numbers[variable].numeric) {\n return true;\n }\n } else if ([\"title\",\"version\"].indexOf(variable) > -1) {\n if (myitem[variable].slice(-1) === \"\" + parseInt(myitem[variable].slice(-1), 10)) {\n return true;\n }\n }\n return false;\n };\n };\n for (var i=0; i<variables.length; i+=1) {\n this.tests.push(maketest(variables[i]));\n }\n};\n\n\nCSL.Attributes[\"@is-uncertain-date\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n var variables = arg.split(/\\s+/);\n // Strip off any boolean prefix.\n var maketest = function (myvariable) {\n return function(Item) {\n if (Item[myvariable] && Item[myvariable].circa) {\n return true;\n } else {\n return false;\n }\n };\n };\n for (var i=0,ilen=variables.length;i<ilen;i+=1) {\n this.tests.push(maketest(variables[i]));\n }\n};\n\n\nCSL.Attributes[\"@locator\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n var trylabels = arg.replace(\"sub verbo\", \"sub-verbo\");\n trylabels = trylabels.split(/\\s+/);\n // Strip off any boolean prefix.\n var maketest = function (trylabel) {\n return function(Item, item) {\n var label;\n state.processNumber(false, item, \"locator\");\n label = state.tmp.shadow_numbers.locator.label;\n if (label && trylabel === label) {\n return true;\n } else {\n return false;\n }\n };\n };\n for (var i=0,ilen=trylabels.length;i<ilen;i+=1) {\n this.tests.push(maketest(trylabels[i]));\n }\n};\n\n\nCSL.Attributes[\"@position\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n var tryposition;\n state.opt.update_mode = CSL.POSITION;\n var trypositions = arg.split(/\\s+/);\n var testSubsequentNear = function (Item, item) {\n if (item && CSL.POSITION_MAP[item.position] >= CSL.POSITION_MAP[CSL.POSITION_SUBSEQUENT] && item[\"near-note\"]) {\n return true;\n }\n return false;\n };\n var testSubsequentNotNear = function (Item, item) {\n if (item && CSL.POSITION_MAP[item.position] == CSL.POSITION_MAP[CSL.POSITION_SUBSEQUENT] && !item[\"near-note\"]) {\n return true;\n }\n return false;\n };\n var maketest = function(tryposition) {\n return function (Item, item) {\n if (state.tmp.area === \"bibliography\") {\n return false;\n }\n if (item && \"undefined\" === typeof item.position) {\n item.position = 0;\n }\n if (item && typeof item.position === \"number\") {\n if (item.position === 0 && tryposition === 0) {\n return true;\n } else if (tryposition > 0 && CSL.POSITION_MAP[item.position] >= CSL.POSITION_MAP[tryposition]) {\n return true;\n }\n } else if (tryposition === 0) {\n return true;\n }\n return false;\n };\n };\n for (var i=0,ilen=trypositions.length;i<ilen;i+=1) {\n var tryposition = trypositions[i];\n if (tryposition === \"first\") {\n tryposition = CSL.POSITION_FIRST;\n } else if (tryposition === \"container-subsequent\") {\n tryposition = CSL.POSITION_CONTAINER_SUBSEQUENT;\n } else if (tryposition === \"subsequent\") {\n tryposition = CSL.POSITION_SUBSEQUENT;\n } else if (tryposition === \"ibid\") {\n tryposition = CSL.POSITION_IBID;\n } else if (tryposition === \"ibid-with-locator\") {\n tryposition = CSL.POSITION_IBID_WITH_LOCATOR;\n }\n if (\"near-note\" === tryposition) {\n this.tests.push(testSubsequentNear);\n } else if (\"far-note\" === tryposition) {\n this.tests.push(testSubsequentNotNear);\n } else {\n this.tests.push(maketest(tryposition));\n }\n }\n};\n\nCSL.Attributes[\"@type\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n // XXX This is ALWAYS composed as an \"any\" match\n var types = arg.split(/\\s+/);\n // Strip off any boolean prefix.\n var maketest = function (mytype) {\n return function(Item) {\n var ret = (Item.type === mytype);\n if (ret) {\n return true;\n } else {\n return false;\n }\n };\n };\n var tests = [];\n for (var i=0,ilen=types.length;i<ilen;i+=1) {\n tests.push(maketest(types[i]));\n }\n this.tests.push(state.fun.match.any(this, state, tests));\n};\n\nCSL.Attributes[\"@variable\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n var func;\n this.variables = arg.split(/\\s+/);\n this.variables_real = this.variables.slice();\n\n // First the non-conditional code.\n if (\"label\" === this.name && this.variables[0]) {\n this.strings.term = this.variables[0];\n } else if ([\"names\", \"date\", \"text\", \"number\"].indexOf(this.name) > -1) {\n //\n // An oddity of variable handling is that this.variables\n // is actually ephemeral; the full list of variables is\n // held in the variables_real var, and pushed into this.variables\n // conditionally in order to suppress repeat renderings of\n // the same item variable. [STILL FUNCTIONAL? 2010.01.15]\n //\n // set variable names\n func = function (state, Item, item) {\n // Clear this.variables in place\n for (var i = this.variables.length - 1; i > -1; i += -1) {\n this.variables.pop();\n }\n for (var i=0,ilen=this.variables_real.length;i<ilen;i++) {\n // set variable name if not quashed, and if not the title of a legal case w/suppress-author\n if (state.tmp.done_vars.indexOf(this.variables_real[i]) === -1 \n// This looks nuts. Why suppress a case name if not required by context?\n// && !(item && Item.type === \"legal_case\" && item[\"suppress-author\"] && this.variables_real[i] === \"title\")\n ) {\n this.variables.push(this.variables_real[i]);\n }\n if (state.tmp.can_block_substitute) {\n state.tmp.done_vars.push(this.variables_real[i]);\n }\n }\n };\n this.execs.push(func);\n\n // check for output\n func = function (state, Item, item) {\n var output = false;\n for (var i=0,ilen=this.variables.length;i<ilen;i++) {\n var variable = this.variables[i];\n if ([\"authority\", \"committee\"].indexOf(variable) > -1\n && \"string\" === typeof Item[variable]\n && \"names\" === this.name) {\n\n // Great! So for each of these, we split.\n // And we only recombine everything if the length\n // of all the splits matches.\n \n // Preflight\n var isValid = true;\n var rawNames = Item[variable].split(/\\s*;\\s*/);\n var rawMultiNames = {};\n if (Item.multi && Item.multi._keys[variable]) {\n for (var langTag in Item.multi._keys[variable]) {\n rawMultiNames[langTag] = Item.multi._keys[variable][langTag].split(/\\s*;\\s*/);\n if (rawMultiNames[langTag].length !== rawNames.length) {\n isValid = false;\n break;\n }\n }\n }\n if (!isValid) {\n rawNames = [Item[variable]];\n rawMultiNames = Item.multi._keys[variable];\n }\n for (var j = 0, jlen = rawNames.length; j < jlen; j++) {\n var creatorParent = {\n literal:rawNames[j],\n multi:{\n _key:{}\n }\n };\n for (var langTag in rawMultiNames) {\n var creatorChild = {\n literal:rawMultiNames[langTag][j]\n };\n creatorParent.multi._key[langTag] = creatorChild;\n }\n rawNames[j] = creatorParent;\n }\n Item[variable] = rawNames;\n }\n if (this.strings.form === \"short\" && !Item[variable]) {\n if (variable === \"title\") {\n variable = \"title-short\";\n } else if (variable === \"container-title\") {\n variable = \"container-title-short\";\n }\n }\n if (variable === \"year-suffix\") {\n // year-suffix always signals that it produces output,\n // even when it doesn't. This permits it to be used with\n // the \"no date\" term inside a group used exclusively\n // to control formatting.\n output = true;\n break;\n } else if (CSL.DATE_VARIABLES.indexOf(variable) > -1) {\n if (state.opt.development_extensions.locator_date_and_revision && \"locator-date\" === variable) {\n // If locator-date is set, it's valid.\n output = true;\n break;\n }\n if (Item[variable]) {\n for (var key in Item[variable]) {\n if (this.dateparts.indexOf(key) === -1 && \"literal\" !== key) {\n continue;\n }\n if (Item[variable][key]) {\n output = true;\n break;\n }\n }\n if (output) {\n break;\n }\n }\n } else if (\"locator\" === variable) {\n if (item && item.locator) {\n output = true;\n }\n break;\n } else if (\"locator-extra\" === variable) {\n if (item && item[\"locator-extra\"]) {\n output = true;\n }\n break;\n } else if ([\"citation-number\",\"citation-label\"].indexOf(variable) > -1) {\n output = true;\n break;\n } else if (\"first-reference-note-number\" === variable) {\n if (item && item[\"first-reference-note-number\"]) {\n output = true;\n }\n break;\n } else if (\"first-container-reference-note-number\" === variable) {\n if (item && item[\"first-container-reference-note-number\"]) {\n output = true;\n }\n break;\n } else if (\"hereinafter\" === variable) {\n if (state.transform.abbrevs[\"default\"].hereinafter[Item.id]\n && state.sys.getAbbreviation\n && Item.id) {\n\t\t\t\t\t\t\n output = true;\n }\n break;\n } else if (\"object\" === typeof Item[variable]) {\n break;\n } else if (\"string\" === typeof Item[variable] && Item[variable]) {\n output = true;\n break;\n } else if (\"number\" === typeof Item[variable]) {\n output = true;\n break;\n }\n if (output) {\n break;\n }\n }\n //print(\"-- VAR: \"+variable);\n //flag = state.tmp.group_context.tip;\n if (output) {\n for (var i=0,ilen=this.variables_real.length;i<ilen;i++) {\n var variable = this.variables_real[i];\n if (variable !== \"citation-number\" || state.tmp.area !== \"bibliography\") {\n state.tmp.cite_renders_content = true;\n }\n //print(\" setting [2] to true based on: \" + arg);\n state.tmp.group_context.tip.variable_success = true;\n // For util_substitute.js, subsequent-author-substitute\n if (state.tmp.can_substitute.value() \n && state.tmp.area === \"bibliography\"\n && \"string\" === typeof Item[variable]) {\n\n state.tmp.name_node.top = state.output.current.value();\n state.tmp.rendered_name.push(Item[variable]);\n }\n }\n state.tmp.can_substitute.replace(false, CSL.LITERAL);\n } else {\n //print(\" setting [1] to true based on: \" + arg);\n state.tmp.group_context.tip.variable_attempt = true;\n }\n //state.tmp.group_context.replace(flag);\n };\n this.execs.push(func);\n } else if ([\"if\", \"else-if\", \"condition\"].indexOf(this.name) > -1) {\n // Strip off any boolean prefix.\n // Now the conditionals.\n var maketest = function (variable) {\n return function(Item,item){\n var myitem = Item;\n if (item && [\"locator\", \"locator-extra\", \"first-reference-note-number\", \"first-container-reference-note-number\", \"locator-date\"].indexOf(variable) > -1) {\n myitem = item;\n }\n // We don't run loadAbbreviation() here; it is run by the application-supplied\n // retrieveItem() if hereinafter functionality is to be used, so this key will\n // always exist in memory, possibly with a nil value.\n if (variable === \"hereinafter\" && state.sys.getAbbreviation && myitem.id) {\n if (state.transform.abbrevs[\"default\"].hereinafter[myitem.id]) {\n return true;\n }\n } else if (myitem[variable]) {\n if (\"number\" === typeof myitem[variable] || \"string\" === typeof myitem[variable]) {\n return true;\n } else if (\"object\" === typeof myitem[variable]) {\n //\n // this will turn true only for hash objects\n // that have at least one attribute, or for a\n // non-zero-length list\n //\n for (var key in myitem[variable]) {\n if (myitem[variable][key]) {\n return true;\n }\n }\n }\n }\n return false;\n };\n };\n for (var i=0,ilen=this.variables.length;i<ilen;i+=1) {\n this.tests.push(maketest(this.variables[i]));\n }\n }\n};\n\n\nCSL.Attributes[\"@page\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n var trylabels = arg.replace(\"sub verbo\", \"sub-verbo\");\n trylabels = trylabels.split(/\\s+/);\n // Strip off any boolean prefix.\n var maketest = function (trylabel) {\n return function(Item) {\n var label;\n state.processNumber(false, Item, \"page\", Item.type);\n if (!state.tmp.shadow_numbers.page.label) {\n label = \"page\";\n } else if (state.tmp.shadow_numbers.page.label === \"sub verbo\") {\n label = \"sub-verbo\";\n } else {\n label = state.tmp.shadow_numbers.page.label;\n }\n if (state.tmp.shadow_numbers.page.values.length > 0) {\n if (state.tmp.shadow_numbers.page.values[0].gotosleepability) {\n state.tmp.shadow_numbers.page.values[0].labelVisibility = false;\n }\n }\n if (trylabel === label) {\n return true;\n } else {\n return false;\n }\n };\n };\n for (var i=0,ilen=trylabels.length;i<ilen;i+=1) {\n this.tests.push(maketest(trylabels[i]));\n }\n};\n\n\n// a near duplicate of code above\nCSL.Attributes[\"@number\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n var trylabels = arg.split(/\\s+/);\n var maketest = function(trylabel) {\n return function (Item) {\n var label;\n state.processNumber(false, Item, \"number\", Item.type);\n if (!state.tmp.shadow_numbers.number.label) {\n label = \"number\";\n } else {\n label = state.tmp.shadow_numbers.number.label;\n }\n if (trylabel === label) {\n return true;\n } else {\n return false;\n }\n };\n };\n for (var i=0,ilen=trylabels.length;i<ilen;i+=1) {\n this.tests.push(maketest(trylabels[i]));\n }\n};\n\nCSL.Attributes[\"@jurisdiction\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n var tryjurisdictions = arg.split(/\\s+/);\n \n // This forces a match=any method, similar to @type\n var maketests = function (tryjurisdictions) {\n return function(Item) {\n if (!Item.jurisdiction) {\n return false;\n }\n var jurisdiction = Item.jurisdiction;\n for (var i=0,ilen=tryjurisdictions.length;i<ilen;i++) {\n if (jurisdiction === tryjurisdictions[i]) {\n return true;\n }\n }\n return false;\n };\n };\n this.tests.push(maketests(tryjurisdictions));\n};\n\nCSL.Attributes[\"@country\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n var trycountries = arg.split(/\\s+/);\n \n // This forces a match=any method, similar to @type\n var maketests = function (trycountries) {\n return function(Item) {\n if (!Item.country) {\n return false;\n }\n var country = Item.country;\n for (var i=0,ilen=trycountries.length;i<ilen;i++) {\n if (country === trycountries[i]) {\n return true;\n }\n }\n return false;\n };\n };\n this.tests.push(maketests(trycountries));\n};\n\nCSL.Attributes[\"@context\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n var func = function () {\n if ([\"bibliography\", \"citation\"].indexOf(arg) > -1) {\n\t\t var area = state.tmp.area.slice(0, arg.length);\n\t\t if (area === arg) {\n\t\t\t return true;\n\t\t }\n\t\t return false;\n } else if (\"alternative\" === arg) {\n return !!state.tmp.abort_alternative;\n }\n };\n this.tests.push(func);\n};\n\nCSL.Attributes[\"@has-year-only\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n var trydates = arg.split(/\\s+/);\n var maketest = function (trydate) {\n return function(Item) {\n var date = Item[trydate];\n if (!date || date.month || date.season) {\n return false;\n } else {\n return true;\n }\n };\n };\n for (var i=0,ilen=trydates.length;i<ilen;i+=1) {\n this.tests.push(maketest(trydates[i]));\n }\n};\n\nCSL.Attributes[\"@has-to-month-or-season\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n var trydates = arg.split(/\\s+/);\n var maketest = function (trydate) {\n return function(Item) {\n var date = Item[trydate];\n if (!date || (!date.month && !date.season) || date.day) {\n return false;\n } else {\n return true;\n }\n };\n };\n for (var i=0,ilen=trydates.length;i<ilen;i+=1) {\n this.tests.push(maketest(trydates[i]));\n }\n};\n\nCSL.Attributes[\"@has-day\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n var trydates = arg.split(/\\s+/);\n var maketest = function (trydate) {\n return function(Item) {\n var date = Item[trydate];\n if (!date || !date.day) {\n return false;\n } else {\n return true;\n }\n };\n };\n for (var i=0,ilen=trydates.length;i<ilen;i+=1) {\n this.tests.push(maketest(trydates[i]));\n }\n};\n\nCSL.Attributes[\"@is-plural\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n var func = function (Item) {\n var nameList = Item[arg];\n if (nameList && nameList.length) {\n var persons = 0;\n var institutions = 0;\n var last_is_person = false;\n for (var i = 0, ilen = nameList.length; i < ilen; i += 1) {\n if (state.opt.development_extensions.spoof_institutional_affiliations\n && (nameList[i].literal || (nameList[i].isInstitution && nameList[i].family && !nameList[i].given))) {\n institutions += 1;\n last_is_person = false;\n } else {\n persons += 1;\n last_is_person = true;\n }\n }\n if (persons > 1) {\n return true;\n } else if (institutions > 1) {\n return true;\n } else if (institutions && last_is_person) {\n return true;\n }\n }\n return false;\n };\n this.tests.push(func);\n};\n\nCSL.Attributes[\"@is-multiple\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n var func = function (Item) {\n var val = (\"\" + Item[arg]);\n var lst = val.split(/(?:,\\s|\\s(?:tot\\sen\\smet|līdz|oraz|and|bis|έως|και|och|až|do|en|et|in|ir|ja|og|sa|to|un|und|és|și|i|u|y|à|e|a|и|-|–)\\s|—|\\&)/);\n if (lst.length > 1) {\n return true;\n }\n return false;\n };\n this.tests.push(func);\n};\n\n\n\n\nCSL.Attributes[\"@locale\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n var ret, langspec, lang, lst, i, ilen;\n // Style default\n var locale_default = state.opt[\"default-locale\"][0];\n\n if (this.name === \"layout\") {\n // For layout\n this.locale_raw = arg;\n if (this.tokentype === CSL.START) {\n if (!state.opt.multi_layout) {\n state.opt.multi_layout = [];\n }\n var locale_data = [];\n // Register the primary locale in the set, and others that \"map\" to it, \n // so that they can be used when generating sort keys. See node_sort.js.\n // Not idempotent. Only do this once.\n var locales = arg.split(/\\s+/);\n var sort_locale = {};\n var localeMaster = CSL.localeResolve(locales[0], locale_default);\n locale_data.push(localeMaster);\n if (localeMaster.generic) {\n sort_locale[localeMaster.generic] = localeMaster.best;\n } else {\n sort_locale[localeMaster.best] = localeMaster.best;\n }\n for (var i=1,ilen=locales.length;i<ilen;i+=1) {\n var localeServant = CSL.localeResolve(locales[i], locale_default);\n locale_data.push(localeServant);\n if (localeServant.generic) {\n sort_locale[localeServant.generic] = localeMaster.best;\n } else {\n sort_locale[localeServant.best] = localeMaster.best;\n }\n\n }\n state[state.build.area].opt.sort_locales.push(sort_locale);\n state.opt.multi_layout.push(locale_data);\n }\n state.opt.has_layout_locale = true;\n } else {\n // For if and if-else\n\n // Split argument\n lst = arg.split(/\\s+/);\n\n // Expand each list element\n var locale_bares = [];\n for (i = 0, ilen = lst.length; i < ilen; i += 1) {\n // Parse out language string\n lang = lst[i];\n \n // Analyze the locale\n langspec = CSL.localeResolve(lang, locale_default);\n if (lst[i].length === 2) {\n // For fallback\n locale_bares.push(langspec.bare);\n }\n // Load the locale terms etc.\n // (second argument causes immediate return if locale already exists)\n state.localeConfigure(langspec, true);\n \n // Replace string with locale spec object\n lst[i] = langspec;\n }\n // Locales to test\n var locale_list = lst.slice();\n\n // check for variable value\n // Closure probably not necessary here.\n var maketest = function (locale_list, locale_default,locale_bares) {\n return function (Item) {\n var res;\n ret = [];\n res = false;\n var langspec = false;\n\n var lang;\n if (!Item.language) {\n lang = locale_default;\n } else {\n lang = Item.language;\n }\n langspec = CSL.localeResolve(lang, locale_default);\n for (i = 0, ilen = locale_list.length; i < ilen; i += 1) {\n if (langspec.best === locale_list[i].best) {\n state.tmp.condition_lang_counter_arr.push(state.tmp.condition_counter);\n state.tmp.condition_lang_val_arr.push(state.opt.lang);\n state.opt.lang = locale_list[0].best;\n res = true;\n break;\n }\n }\n if (!res && locale_bares.indexOf(langspec.bare) > -1) {\n state.tmp.condition_lang_counter_arr.push(state.tmp.condition_counter);\n state.tmp.condition_lang_val_arr.push(state.opt.lang);\n state.opt.lang = locale_list[0].best;\n res = true;\n }\n return res;\n };\n };\n this.tests.push(maketest(locale_list,locale_default,locale_bares));\n }\n};\n\nCSL.Attributes[\"@alternative-node-internal\"] = function (state) {\n if (!this.tests) {this.tests = []; };\n var maketest = function () {\n return function() {\n return !state.tmp.abort_alternative;\n };\n };\n var me = this;\n this.tests.push(maketest(me));\n};\n\nCSL.Attributes[\"@locale-internal\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n var langspec, lang, lst, i, ilen;\n // For if and if-else\n\n // Split argument\n lst = arg.split(/\\s+/);\n\n // Expand each list element\n this.locale_bares = [];\n for (i = 0, ilen = lst.length; i < ilen; i += 1) {\n // Parse out language string\n lang = lst[i];\n \n // Analyze the locale\n langspec = CSL.localeResolve(lang, state.opt[\"default-locale\"][0]);\n if (lst[i].length === 2) {\n // For fallback\n this.locale_bares.push(langspec.bare);\n }\n // Load the locale terms etc.\n state.localeConfigure(langspec);\n \n // Replace string with locale spec object\n lst[i] = langspec;\n }\n // Set locale tag on node\n this.locale_default = state.opt[\"default-locale\"][0];\n // The locale to set on node children if match is successful\n this.locale = lst[0].best;\n // Locales to test\n this.locale_list = lst.slice();\n \n // check for variable value\n // Closure probably not necessary here.\n var maketest = function (me) {\n return function (Item) {\n var ret, res;\n ret = [];\n res = false;\n var langspec = false;\n if (Item.language) {\n lang = Item.language;\n langspec = CSL.localeResolve(lang, state.opt[\"default-locale\"][0]);\n if (langspec.best === state.opt[\"default-locale\"][0]) {\n langspec = false;\n }\n }\n if (langspec) {\n // We attempt to match a specific locale from the\n // list of parameters. If that fails, we fall back\n // to the base locale of the first element. The\n // locale applied is always the first local \n // in the list of parameters (or base locale, for a \n // single two-character language code) \n for (i = 0, ilen = me.locale_list.length; i < ilen; i += 1) {\n if (langspec.best === me.locale_list[i].best) {\n state.opt.lang = me.locale;\n state.tmp.last_cite_locale = me.locale;\n // Set empty group open tag with locale set marker\n state.output.openLevel(\"empty\");\n state.output.current.value().new_locale = me.locale;\n res = true;\n break;\n }\n }\n if (!res && me.locale_bares.indexOf(langspec.bare) > -1) {\n state.opt.lang = me.locale;\n state.tmp.last_cite_locale = me.locale;\n // Set empty group open tag with locale set marker\n state.output.openLevel(\"empty\");\n state.output.current.value().new_locale = me.locale;\n res = true;\n }\n }\n return res;\n };\n };\n var me = this;\n this.tests.push(maketest(me));\n};\n\n\nCSL.Attributes[\"@court-class\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n\tvar tryclasses = arg.split(/\\s+/);\n var maketest = function (tryclass) {\n return function(Item) {\n var cls = CSL.GET_COURT_CLASS(state, Item);\n if (cls === tryclass) {\n return true;\n } else {\n return false;\n }\n };\n };\n for (var i=0,ilen=tryclasses.length; i<ilen; i++) {\n this.tests.push(maketest(tryclasses[i]));\n }\n};\n\nCSL.Attributes[\"@container-multiple\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n\tvar retval = \"true\" === arg ? true : false;\n var maketest = function (retval) {\n return function(Item) {\n if (!state.tmp.container_item_count[Item.container_id]) {\n return !retval;\n } else if (state.tmp.container_item_count[Item.container_id] > 1) {\n return retval;\n }\n return !retval;\n };\n };\n this.tests.push(maketest(retval));\n};\n\nCSL.Attributes[\"@container-subsequent\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n\tvar retval = \"true\" === arg ? true : false;\n var maketest = function (retval) {\n return function(Item) {\n if (state.tmp.container_item_pos[Item.container_id] > 1) {\n return retval;\n }\n return !retval;\n };\n };\n this.tests.push(maketest(retval));\n};\n\nCSL.Attributes[\"@has-subunit\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n var maketest = function(namevar) {\n return function (Item) {\n var subunit_count = 0;\n for (var i in Item[namevar]) {\n var name = Item[namevar][i];\n if (!name.given) {\n var institution = name.literal ? name.literal : name.family;\n var length = institution.split(\"|\").length;\n if (subunit_count === 0 || length < subunit_count) {\n subunit_count = length;\n }\n }\n }\n return (subunit_count > 1);\n };\n };\n this.tests.push(maketest(arg));\n}\n\nCSL.Attributes[\"@cite-form\"] = function (state, arg) {\n if (!this.tests) {this.tests = []; };\n var maketest = function(citeForm) {\n return function (Item) {\n if (Item[\"cite-form\"] === citeForm) {\n return true;\n }\n return false;\n };\n };\n this.tests.push(maketest(arg));\n}\n\nCSL.Attributes[\"@disable-duplicate-year-suppression\"] = function (state, arg) {\n\tstate.opt.disable_duplicate_year_suppression = arg.split(/\\s+/);\n}\n\nCSL.Attributes[\"@consolidate-containers\"] = function (state, arg) {\n CSL.Attributes[\"@track-containers\"](state, arg);\n var args = arg.split(/\\s+/);\n state.bibliography.opt.consolidate_containers = args;\n}\n\nCSL.Attributes[\"@track-containers\"] = function (state, arg) {\n var args = arg.split(/\\s+/);\n if (!state.bibliography.opt.track_container_items) {\n state.bibliography.opt.track_container_items = [];\n }\n if (!state.bibliography.opt.consolidate_containers) {\n state.bibliography.opt.consolidate_containers = [];\n }\n state.bibliography.opt.track_container_items = state.bibliography.opt.track_container_items.concat(args);\n}\n\n// These are not evaluated as conditions immediately: they only\n// set parameters that are picked up during processing.\nCSL.Attributes[\"@parallel-first\"] = function (state, arg) {\n state.opt.parallel.enable = true;\n var vars = arg.split(/\\s+/);\n if (!state.opt.track_repeat) {\n state.opt.track_repeat = {};\n }\n this.parallel_first = {};\n for (var i in vars) {\n var v = vars[i];\n this.parallel_first[v] = true;\n state.opt.track_repeat[v] = true;\n }\n};\nCSL.Attributes[\"@parallel-last\"] = function (state, arg) {\n state.opt.parallel.enable = true;\n var vars = arg.split(/\\s+/);\n if (!state.opt.track_repeat) {\n state.opt.track_repeat = {};\n }\n this.parallel_last = {};\n for (var i in vars) {\n var v = vars[i];\n this.parallel_last[v] = true;\n state.opt.track_repeat[v] = true;\n }\n};\nCSL.Attributes[\"@parallel-last-to-first\"] = function (state, arg) {\n state.opt.parallel.enable = true;\n var vars = arg.split(/\\s+/);\n this.parallel_last_to_first = {};\n for (var i=0,ilen=vars.length;i<ilen;i++) {\n this.parallel_last_to_first[vars[i]] = true;\n }\n};\nCSL.Attributes[\"@parallel-delimiter-override\"] = function (state, arg) {\n state.opt.parallel.enable = true;\n this.strings.set_parallel_delimiter_override = arg;\n};\nCSL.Attributes[\"@parallel-delimiter-override-on-suppress\"] = function (state, arg) {\n state.opt.parallel.enable = true;\n this.strings.set_parallel_delimiter_override_on_suppress = arg;\n};\nCSL.Attributes[\"@no-repeat\"] = function (state, arg) {\n state.opt.parallel.enable = true;\n var vars = arg.split(/\\s+/);\n if (!state.opt.track_repeat) {\n state.opt.track_repeat = {};\n }\n this.non_parallel = {};\n for (var i in vars) {\n var v = vars[i];\n this.non_parallel[v] = true;\n state.opt.track_repeat[v] = true;\n }\n};\n\nCSL.Attributes[\"@require\"] = function (state, arg) {\n state.opt.use_context_condition = true;\n this.strings.require = arg;\n\n // Introduced to constrain rendering of the group with a\n // requirement that it either render an alpha term via cs:label or\n // cs:text at least once, or render without any label. That\n // behaviour is invoked with \"label-empty-or-alpha\" as arg.\n\n // This attribute is a complement to @label-form and modular\n // jurisdiction support, as it makes macros that adapt to shifting\n // local term definitions possible.\n};\n\nCSL.Attributes[\"@reject\"] = function (state, arg) {\n state.opt.use_context_condition = true;\n this.strings.reject = arg;\n\n // Introduced to constrain rendering of the group with a\n // requirement that it render some label via cs:label or cs:text,\n // and that it NOT be alpha. That behaviour is invoked with\n // \"label-empty-or-alpha\" as arg.\n\n // This attribute is a complement to @label-form and modular\n // jurisdiction support, as it makes macros that adapt to shifting\n // local term definitions possible.\n};\n\nCSL.Attributes[\"@require-comma-on-symbol\"] = function (state, arg) {\n state.opt.require_comma_on_symbol = arg;\n}\n\nCSL.Attributes[\"@gender\"] = function (state, arg) {\n this.gender = arg;\n};\n\nCSL.Attributes[\"@cslid\"] = function (state, arg) {\n // @cslid is a noop\n // The value set on this attribute is used to\n // generate reverse lookup wrappers on output when \n // this.development_extensions.csl_reverse_lookup_support is\n // set to true in state.js (there is no runtime option,\n // it must be set in state.js)\n //\n // See the @showid method in the html output\n // section of formats.js for the function that\n // renders the wrappers.\n this.cslid = parseInt(arg, 10);\n};\n\nCSL.Attributes[\"@capitalize-if-first\"] = function (state, arg) {\n this.strings.capitalize_if_first_override = arg;\n};\n\nCSL.Attributes[\"@label-capitalize-if-first\"] = function (state, arg) {\n this.strings.label_capitalize_if_first_override = arg;\n};\n\nCSL.Attributes[\"@label-form\"] = function (state, arg) {\n this.strings.label_form_override = arg;\n};\n\nCSL.Attributes[\"@part-separator\"] = function (state, arg) {\n this.strings[\"part-separator\"] = arg;\n};\n\nCSL.Attributes[\"@leading-noise-words\"] = function (state, arg) {\n this[\"leading-noise-words\"] = arg;\n};\n\nCSL.Attributes[\"@name-never-short\"] = function (state, arg) {\n this[\"name-never-short\"] = arg;\n};\n\nCSL.Attributes[\"@class\"] = function (state, arg) {\n state.opt[\"class\"] = arg;\n};\n\nCSL.Attributes[\"@version\"] = function (state, arg) {\n state.opt.version = arg;\n};\n\n/**\n * Store the value attribute on the token.\n * @name CSL.Attributes.@value\n * @function\n */\nCSL.Attributes[\"@value\"] = function (state, arg) {\n this.strings.value = arg;\n};\n\n\n/**\n * Store the name attribute (of a macro or term node)\n * on the state object.\n * <p>For reference when the closing node of a macro\n * or locale definition is encountered.</p>\n * @name CSL.Attributes.@name\n * @function\n */\nCSL.Attributes[\"@name\"] = function (state, arg) {\n this.strings.name = arg;\n};\n\n/**\n * Store the form attribute (of a term node) on the state object.\n * <p>For reference when the closing node of a macro\n * or locale definition is encountered.</p>\n * @name CSL.Attributes.@form\n * @function\n */\nCSL.Attributes[\"@form\"] = function (state, arg) {\n this.strings.form = arg;\n};\n\nCSL.Attributes[\"@date-parts\"] = function (state, arg) {\n this.strings[\"date-parts\"] = arg;\n};\n\nCSL.Attributes[\"@range-delimiter\"] = function (state, arg) {\n this.strings[\"range-delimiter\"] = arg;\n};\n\n/**\n * Store macro tokens in a buffer on the state object.\n * <p>For reference when the enclosing text token is\n * processed.</p>\n * @name CSL.Attributes.@macro\n * @function\n */\nCSL.Attributes[\"@macro\"] = function (state, arg) {\n this.postponed_macro = arg;\n};\n\n/*\n * CSL.Attributes[\"@prefer-jurisdiction\"] = function (state, arg) {\n * this.prefer_jurisdiction = true;\n * };\n */\n\nCSL.Attributes[\"@term\"] = function (state, arg) {\n if (arg === \"sub verbo\") {\n this.strings.term = \"sub-verbo\";\n } else {\n this.strings.term = arg;\n }\n};\n\n\n/*\n * Ignore xmlns attribute.\n * <p>This should always be <p>http://purl.org/net/xbiblio/csl</code>\n * anyway. At least for the present we will blindly assume\n * that it is.</p>\n * @name CSL.Attributes.@xmlns\n * @function\n */\nCSL.Attributes[\"@xmlns\"] = function () {};\n\n\n/*\n * Store language attribute to a buffer field.\n * <p>Will be placed in the appropriate location\n * when the element is processed.</p>\n * @name CSL.Attributes.@lang\n * @function\n */\nCSL.Attributes[\"@lang\"] = function (state, arg) {\n if (arg) {\n state.build.lang = arg;\n }\n};\n\n\n// Used as a flag during dates processing\nCSL.Attributes[\"@lingo\"] = function () {};\n\n// Used as a flag during dates processing\nCSL.Attributes[\"@macro-has-date\"] = function () {\n this[\"macro-has-date\"] = true;\n};\n\n/*\n * Store suffix string on token.\n * @name CSL.Attributes.@suffix\n * @function\n */\nCSL.Attributes[\"@suffix\"] = function (state, arg) {\n this.strings.suffix = arg;\n};\n\n\n/*\n * Store prefix string on token.\n * @name CSL.Attributes.@prefix\n * @function\n */\nCSL.Attributes[\"@prefix\"] = function (state, arg) {\n this.strings.prefix = arg;\n};\n\n\n/*\n * Store delimiter string on token.\n * @name CSL.Attributes.@delimiter\n * @function\n */\nCSL.Attributes[\"@delimiter\"] = function (state, arg) {\n this.strings.delimiter = arg;\n};\n\n\n/*\n * Store match evaluator on token.\n */\nCSL.Attributes[\"@match\"] = function (state, arg) {\n this.match = arg;\n};\n\n\nCSL.Attributes[\"@names-min\"] = function (state, arg) {\n var val = parseInt(arg, 10);\n if (state[state.build.area].opt.max_number_of_names < val) {\n state[state.build.area].opt.max_number_of_names = val;\n }\n this.strings[\"et-al-min\"] = val;\n};\n\nCSL.Attributes[\"@names-use-first\"] = function (state, arg) {\n this.strings[\"et-al-use-first\"] = parseInt(arg, 10);\n};\n\nCSL.Attributes[\"@names-use-last\"] = function (state, arg) {\n if (arg === \"true\") {\n this.strings[\"et-al-use-last\"] = true;\n } else {\n this.strings[\"et-al-use-last\"] = false;\n }\n};\n\nCSL.Attributes[\"@sort\"] = function (state, arg) {\n if (arg === \"descending\") {\n this.strings.sort_direction = CSL.DESCENDING;\n }\n};\n\nCSL.Attributes[\"@plural\"] = function (state, arg) {\n // Accepted values of plural attribute differ on cs:text\n // and cs:label nodes.\n if (\"always\" === arg || \"true\" === arg) {\n this.strings.plural = 1;\n } else if (\"never\" === arg || \"false\" === arg) {\n this.strings.plural = 0;\n } else if (\"contextual\" === arg) {\n this.strings.plural = false;\n }\n};\n\nCSL.Attributes[\"@has-publisher-and-publisher-place\"] = function () {\n this.strings[\"has-publisher-and-publisher-place\"] = true;\n};\n\nCSL.Attributes[\"@publisher-delimiter-precedes-last\"] = function (state, arg) {\n this.strings[\"publisher-delimiter-precedes-last\"] = arg;\n};\n\nCSL.Attributes[\"@publisher-delimiter\"] = function (state, arg) {\n this.strings[\"publisher-delimiter\"] = arg;\n};\n\nCSL.Attributes[\"@publisher-and\"] = function (state, arg) {\n this.strings[\"publisher-and\"] = arg;\n};\n\nCSL.Attributes[\"@givenname-disambiguation-rule\"] = function (state, arg) {\n if (CSL.GIVENNAME_DISAMBIGUATION_RULES.indexOf(arg) > -1) {\n state.citation.opt[\"givenname-disambiguation-rule\"] = arg;\n }\n};\n\nCSL.Attributes[\"@collapse\"] = function (state, arg) {\n // only one collapse value will be honoured.\n if (arg) {\n state[this.name].opt.collapse = arg;\n }\n};\n\nCSL.Attributes[\"@cite-group-delimiter\"] = function (state, arg) {\n if (arg) {\n state[state.tmp.area].opt.cite_group_delimiter = arg;\n }\n};\n\n\n\nCSL.Attributes[\"@names-delimiter\"] = function (state, arg) {\n state.setOpt(this, \"names-delimiter\", arg);\n};\n\nCSL.Attributes[\"@name-form\"] = function (state, arg) {\n state.setOpt(this, \"name-form\", arg);\n};\n\nCSL.Attributes[\"@subgroup-delimiter\"] = function (state, arg) {\n this.strings[\"subgroup-delimiter\"] = arg;\n};\n\nCSL.Attributes[\"@subgroup-delimiter-precedes-last\"] = function (state, arg) {\n this.strings[\"subgroup-delimiter-precedes-last\"] = arg;\n};\n\n\nCSL.Attributes[\"@name-delimiter\"] = function (state, arg) {\n state.setOpt(this, \"name-delimiter\", arg);\n};\n\nCSL.Attributes[\"@et-al-min\"] = function (state, arg) {\n var val = parseInt(arg, 10);\n if (state[state.build.area].opt.max_number_of_names < val) {\n state[state.build.area].opt.max_number_of_names = val;\n }\n state.setOpt(this, \"et-al-min\", val);\n};\n\nCSL.Attributes[\"@et-al-use-first\"] = function (state, arg) {\n state.setOpt(this, \"et-al-use-first\", parseInt(arg, 10));\n};\n\nCSL.Attributes[\"@et-al-use-last\"] = function (state, arg) {\n if (arg === \"true\") {\n state.setOpt(this, \"et-al-use-last\", true);\n } else {\n state.setOpt(this, \"et-al-use-last\", false);\n }\n};\n\nCSL.Attributes[\"@et-al-subsequent-min\"] = function (state, arg) {\n var val = parseInt(arg, 10);\n if (state[state.build.area].opt.max_number_of_names < val) {\n state[state.build.area].opt.max_number_of_names = val;\n }\n state.setOpt(this, \"et-al-subsequent-min\", val);\n};\n\nCSL.Attributes[\"@et-al-subsequent-use-first\"] = function (state, arg) {\n state.setOpt(this, \"et-al-subsequent-use-first\", parseInt(arg, 10));\n};\n\nCSL.Attributes[\"@suppress-min\"] = function (state, arg) {\n this.strings[\"suppress-min\"] = parseInt(arg, 10);\n};\n\nCSL.Attributes[\"@suppress-max\"] = function (state, arg) {\n this.strings[\"suppress-max\"] = parseInt(arg, 10);\n};\n\n\nCSL.Attributes[\"@and\"] = function (state, arg) {\n state.setOpt(this, \"and\", arg);\n};\n\nCSL.Attributes[\"@delimiter-precedes-last\"] = function (state, arg) {\n state.setOpt(this, \"delimiter-precedes-last\", arg);\n};\n\nCSL.Attributes[\"@delimiter-precedes-et-al\"] = function (state, arg) {\n state.setOpt(this, \"delimiter-precedes-et-al\", arg);\n};\n\nCSL.Attributes[\"@initialize-with\"] = function (state, arg) {\n state.setOpt(this, \"initialize-with\", arg);\n};\n\nCSL.Attributes[\"@initialize\"] = function (state, arg) {\n if (arg === \"false\") {\n state.setOpt(this, \"initialize\", false);\n }\n};\n\nCSL.Attributes[\"@name-as-reverse-order\"] = function (state, arg) {\n this[\"name-as-reverse-order\"] = arg;\n};\n\nCSL.Attributes[\"@name-as-sort-order\"] = function (state, arg) {\n if (this.name === \"style-options\") {\n this[\"name-as-sort-order\"] = arg;\n } else {\n state.setOpt(this, \"name-as-sort-order\", arg);\n }\n};\n\nCSL.Attributes[\"@sort-separator\"] = function (state, arg) {\n state.setOpt(this, \"sort-separator\", arg);\n};\n\nCSL.Attributes[\"@require-match\"] = function (state, arg) {\n if (arg === \"true\") {\n this.requireMatch = true;\n }\n};\n\nCSL.Attributes[\"@exclude-types\"] = function (state, arg) {\n state.bibliography.opt.exclude_types = arg.split(/\\s+/);\n};\n\nCSL.Attributes[\"@exclude-with-fields\"] = function (state, arg) {\n state.bibliography.opt.exclude_with_fields = arg.split(/\\s+/);\n};\n\n\nCSL.Attributes[\"@year-suffix-delimiter\"] = function (state, arg) {\n state[this.name].opt[\"year-suffix-delimiter\"] = arg;\n};\n\nCSL.Attributes[\"@after-collapse-delimiter\"] = function (state, arg) {\n state[this.name].opt[\"after-collapse-delimiter\"] = arg;\n};\n\nCSL.Attributes[\"@subsequent-author-substitute\"] = function (state, arg) {\n state[this.name].opt[\"subsequent-author-substitute\"] = arg;\n};\n\nCSL.Attributes[\"@subsequent-author-substitute-rule\"] = function (state, arg) {\n state[this.name].opt[\"subsequent-author-substitute-rule\"] = arg;\n};\n\nCSL.Attributes[\"@disambiguate-add-names\"] = function (state, arg) {\n if (arg === \"true\") {\n state.opt[\"disambiguate-add-names\"] = true;\n }\n};\n\nCSL.Attributes[\"@disambiguate-add-givenname\"] = function (state, arg) {\n if (arg === \"true\") {\n state.opt[\"disambiguate-add-givenname\"] = true;\n }\n};\n\nCSL.Attributes[\"@disambiguate-add-year-suffix\"] = function (state, arg) {\n if (arg === \"true\" && state.opt.xclass !== \"numeric\") {\n state.opt[\"disambiguate-add-year-suffix\"] = true;\n }\n};\n\n\nCSL.Attributes[\"@second-field-align\"] = function (state, arg) {\n if (arg === \"flush\" || arg === \"margin\") {\n state[this.name].opt[\"second-field-align\"] = arg;\n }\n};\n\n\nCSL.Attributes[\"@hanging-indent\"] = function (state, arg) {\n if (arg === \"true\") {\n if (state.opt.development_extensions.hanging_indent_legacy_number) {\n state[this.name].opt.hangingindent = 2;\n\t } else {\n state[this.name].opt.hangingindent = true;\n\t }\n }\n};\n\n\nCSL.Attributes[\"@line-spacing\"] = function (state, arg) {\n if (arg && arg.match(/^[.0-9]+$/)) {\n state[this.name].opt[\"line-spacing\"] = parseFloat(arg, 10);\n }\n};\n\n\nCSL.Attributes[\"@entry-spacing\"] = function (state, arg) {\n if (arg && arg.match(/^[.0-9]+$/)) {\n state[this.name].opt[\"entry-spacing\"] = parseFloat(arg, 10);\n }\n};\n\n\nCSL.Attributes[\"@near-note-distance\"] = function (state, arg) {\n state[this.name].opt[\"near-note-distance\"] = parseInt(arg, 10);\n};\n\nCSL.Attributes[\"@substring\"] = function (state, arg) {\n this.substring = parseInt(arg, 10);\n};\n\nCSL.Attributes[\"@text-case\"] = function (state, arg) {\n var func = function (state, Item) {\n if (arg === \"normal\") {\n this.text_case_normal = true;\n } else {\n this.strings[\"text-case\"] = arg;\n if (arg === \"title\") {\n if (Item.jurisdiction) {\n this.strings[\"text-case\"] = \"passthrough\";\n }\n }\n }\n };\n this.execs.push(func);\n};\n\n\nCSL.Attributes[\"@page-range-format\"] = function (state, arg) {\n state.opt[\"page-range-format\"] = arg;\n};\n\n\nCSL.Attributes[\"@year-range-format\"] = function (state, arg) {\n state.opt[\"year-range-format\"] = arg;\n};\n\n\nCSL.Attributes[\"@default-locale\"] = function (state, arg) {\n if (this.name === 'style') {\n var lst, len, pos, m, ret;\n //\n // Workaround for Internet Exploder 6 (doesn't recognize\n // groups in str.split(/something(braced-group)something/)\n //\n var m = arg.match(/-x-(sort|translit|translat)-/g);\n if (m) {\n for (pos = 0, len = m.length; pos < len; pos += 1) {\n m[pos] = m[pos].replace(/^-x-/, \"\").replace(/-$/, \"\");\n }\n }\n lst = arg.split(/-x-(?:sort|translit|translat)-/);\n ret = [lst[0]];\n for (pos = 1, len = lst.length; pos < len; pos += 1) {\n ret.push(m[pos - 1]);\n ret.push(lst[pos]);\n }\n lst = ret.slice();\n len = lst.length;\n for (pos = 1; pos < len; pos += 2) {\n state.opt[(\"locale-\" + lst[pos])].push(lst[(pos + 1)].replace(/^\\s*/g, \"\").replace(/\\s*$/g, \"\"));\n }\n if (lst.length) {\n state.opt[\"default-locale\"] = lst.slice(0, 1);\n } else {\n state.opt[\"default-locale\"] = [\"en\"];\n }\n } else if (arg === \"true\") {\n this.default_locale = true;\n }\n};\n\nCSL.Attributes[\"@default-locale-sort\"] = function (state, arg) {\n state.opt[\"default-locale-sort\"] = arg;\n};\n\nCSL.Attributes[\"@demote-non-dropping-particle\"] = function (state, arg) {\n state.opt[\"demote-non-dropping-particle\"] = arg;\n};\n\nCSL.Attributes[\"@initialize-with-hyphen\"] = function (state, arg) {\n if (arg === \"false\") {\n state.opt[\"initialize-with-hyphen\"] = false;\n }\n};\n\nCSL.Attributes[\"@institution-parts\"] = function (state, arg) {\n this.strings[\"institution-parts\"] = arg;\n};\n\nCSL.Attributes[\"@if-short\"] = function (state, arg) {\n if (arg === \"true\") {\n this.strings[\"if-short\"] = true;\n }\n};\n\nCSL.Attributes[\"@substitute-use-first\"] = function (state, arg) {\n this.strings[\"substitute-use-first\"] = parseInt(arg, 10);\n};\n\nCSL.Attributes[\"@use-first\"] = function (state, arg) {\n this.strings[\"use-first\"] = parseInt(arg, 10);\n};\n\nCSL.Attributes[\"@use-last\"] = function (state, arg) {\n this.strings[\"use-last\"] = parseInt(arg, 10);\n};\n\nCSL.Attributes[\"@stop-first\"] = function (state, arg) {\n this.strings[\"stop-first\"] = parseInt(arg, 10);\n};\n\nCSL.Attributes[\"@stop-last\"] = function (state, arg) {\n this.strings[\"stop-last\"] = parseInt(arg, 10) * -1;\n};\n\n\nCSL.Attributes[\"@reverse-order\"] = function (state, arg) {\n if (\"true\" === arg) {\n this.strings[\"reverse-order\"] = true;\n }\n};\n\nCSL.Attributes[\"@display\"] = function (state, arg) {\n if (state.bibliography.tokens.length === 2) {\n state.opt.using_display = true;\n }\n this.strings.cls = arg;\n};\n\n\n/*global CSL: true */\n\n\n/**\n * String stack object.\n * <p>Numerous string stacks are used to track nested\n * parameters at runtime. This class provides methods\n * that remove some of the aggravation of managing\n * them.</p>\n * @class\n */\nCSL.Stack = function (val, literal) {\n this.mystack = [];\n if (literal || val) {\n this.mystack.push(val);\n }\n this.tip = this.mystack[0];\n};\n\n/**\n * Push a value onto the stack.\n * <p>This just does what it says.</p>\n */\nCSL.Stack.prototype.push = function (val, literal) {\n if (literal || val) {\n this.mystack.push(val);\n } else {\n this.mystack.push(\"\");\n }\n this.tip = this.mystack[this.mystack.length - 1];\n};\n\n/**\n * Clear the stack\n */\nCSL.Stack.prototype.clear = function () {\n this.mystack = [];\n this.tip = {};\n};\n\n/**\n * Replace the top value on the stack.\n * <p>This removes some ugly syntax from the\n * main code.</p>\n */\nCSL.Stack.prototype.replace = function (val, literal) {\n //\n // safety fix after a bug was chased down. Rhino\n // JS will process a negative index without error (!).\n if (this.mystack.length === 0) {\n CSL.error(\"Internal CSL processor error: attempt to replace nonexistent stack item with \" + val);\n }\n if (literal || val) {\n this.mystack[(this.mystack.length - 1)] = val;\n } else {\n this.mystack[(this.mystack.length - 1)] = \"\";\n }\n this.tip = this.mystack[this.mystack.length - 1];\n};\n\n\n/**\n * Remove the top value from the stack.\n * <p>Just does what it says.</p>\n */\nCSL.Stack.prototype.pop = function () {\n var ret = this.mystack.pop();\n if (this.mystack.length) {\n this.tip = this.mystack[this.mystack.length - 1];\n } else {\n this.tip = {};\n }\n return ret;\n};\n\n\n/**\n * Return the top value on the stack.\n * <p>Removes a little hideous complication from\n * the main code.</p>\n */\nCSL.Stack.prototype.value = function () {\n return this.mystack.slice(-1)[0];\n};\n\n\n/**\n * Return length (depth) of stack.\n * <p>Used to identify if there is content to\n * be handled on the stack</p>\n */\nCSL.Stack.prototype.length = function () {\n return this.mystack.length;\n};\n\n/*global CSL: true */\n\n/**\n * Initializes the parallel cite tracking arrays\n */\nCSL.Parallel = function (state) {\n this.state = state;\n};\n\nCSL.Parallel.prototype.StartCitation = function (sortedItems, out) {\n // This array carries the repeat markers used in rendering the cite.\n this.state.tmp.suppress_repeats = [];\n if (sortedItems.length < 2) return;\n var idxEnd = 0;\n var parallelMatchList = false;\n var siblingRanges = [];\n\n for (var i=0,ilen=sortedItems.length-1;i<ilen;i++) {\n var currItem = sortedItems[i][0];\n var nextItem = sortedItems[i+1][0];\n var freshMatchList = false;\n var info = {};\n if (sortedItems[i][0].seeAlso && sortedItems[i][0].seeAlso.length > 0 && !parallelMatchList) {\n freshMatchList = true;\n parallelMatchList = [sortedItems[i][0].id].concat(sortedItems[i][0].seeAlso);\n var tempMatchList = parallelMatchList.slice();\n var remainder = sortedItems.slice(i);\n remainder[0][1].parallel = \"first\";\n for (var j=0,jlen=remainder.length;j<jlen;j++) {\n var itemID = remainder[j][0].id;\n var ididx = tempMatchList.indexOf(itemID);\n idxEnd = false;\n if (ididx === -1) {\n idxEnd = (i+j-1);\n } else if ((i+j) === (sortedItems.length-1)) {\n idxEnd = (i+j);\n }\n if (idxEnd) {\n siblingRanges.push([i, idxEnd]);\n break;\n } else {\n tempMatchList = tempMatchList.slice(0, ididx).concat(tempMatchList.slice(ididx+1));\n }\n }\n }\n // parallelMatchList/freshMatchList relate only to parallels.\n // no-repeat non-parallels are handled in a separate block.\n if (i > 0 && freshMatchList) {\n this.state.tmp.suppress_repeats[i-1].START = true;\n freshMatchList = false;\n }\n for (var varname in this.state.opt.track_repeat) {\n if (!currItem[varname] || !nextItem[varname]) {\n // Go ahead and render any value with an empty partner\n info[varname] = false;\n } else if (\"string\" === typeof nextItem[varname] || \"number\" === typeof nextItem[varname]) {\n // Simple comparison of string values\n if (varname === \"title\" && currItem[\"title-short\"] && nextItem[\"title-short\"]) {\n var currVal = currItem[\"title-short\"];\n var nextVal = nextItem[\"title-short\"];\n } else {\n var currVal = currItem[varname];\n var nextVal = nextItem[varname];\n }\n if (currVal == nextVal) {\n info[varname] = true;\n } else {\n info[varname] = false;\n }\n } else if (\"undefined\" === typeof currItem[varname].length) {\n // If a date, use only the year\n info[varname] = false;\n var currYear = currItem[varname].year;\n var nextYear = nextItem[varname].year;\n if (currYear && nextYear) {\n if (currYear == nextYear) {\n info[varname] = true;\n }\n }\n } else {\n // If a creator value, kludge it\n var currVal = JSON.stringify(currItem[varname]);\n var nextVal = JSON.stringify(nextItem[varname]);\n if (currVal === nextVal) {\n info[varname] = true;\n } else {\n info[varname] = false;\n }\n }\n }\n if (!parallelMatchList) {\n info.ORPHAN = true;\n }\n if (idxEnd === i) {\n info.END = true;\n parallelMatchList = false;\n }\n this.state.tmp.suppress_repeats.push(info);\n }\n \n // if (!this.state.tmp.just_looking) {\n // this.state.sys.print(`${JSON.stringify(this.state.tmp.suppress_repeats, null, 2)}`);\n // }\n \n // Set no-repeat info here?\n for (var j=0,jlen=siblingRanges.length;j<jlen;j++) {\n var masterID = sortedItems[siblingRanges[j][0]][0].id;\n this.state.registry.registry[masterID].master = true;\n this.state.registry.registry[masterID].siblings = [];\n var start = siblingRanges[j][0];\n var end = siblingRanges[j][1];\n for (var k=start; k<end; k++) {\n this.state.tmp.suppress_repeats[k].SIBLING = true;\n var siblingID = sortedItems[k+1][0].id;\n sortedItems[k+1][1].parallel = \"other\";\n this.state.registry.registry[masterID].siblings.push(siblingID);\n }\n }\n // this.state.sys.print(JSON.stringify(this.state.tmp.suppress_repeats, null, 2));\n};\n\nCSL.Parallel.prototype.checkRepeats = function(params) {\n var idx = this.state.tmp.cite_index;\n if (this.state.tmp.suppress_repeats) {\n if (params.parallel_first && Object.keys(params.parallel_first).length > 0) {\n var arr = [{}].concat(this.state.tmp.suppress_repeats);\n var ret = true;\n for (var varname in params.parallel_first) {\n if (!arr[idx][varname] || arr[idx].START) {\n // true --> suppress the entry\n // Test here evaluates as \"all\", not \"any\"\n ret = false;\n }\n }\n return ret;\n }\n if (params.parallel_last && Object.keys(params.parallel_last).length > 0) {\n var arr = this.state.tmp.suppress_repeats.concat([{}]);\n var ret = Object.keys(params.parallel_last).length > 0 ? true : false;\n for (var varname in params.parallel_last) {\n if (!arr[idx][varname] || arr[idx].END) {\n // \"all\" match, as above.\n ret = false;\n }\n }\n return ret;\n }\n if (params.non_parallel && Object.keys(params.non_parallel).length > 0) {\n var arr = [{}].concat(this.state.tmp.suppress_repeats);\n var ret = true;\n for (var varname in params.non_parallel) {\n if (!arr[idx][varname]) {\n ret = false;\n }\n }\n return ret;\n }\n }\n return false;\n};\n\n/*global CSL: true */\n\n\nCSL.Util = {};\n\nCSL.Util.Match = function () {\n\n this.any = function (token, state, tests) {\n return function (Item, item) {\n for (var i=0, ilen=tests.length; i < ilen; i += 1) {\n var result = tests[i](Item, item);\n if (result) {\n return true;\n }\n }\n return false;\n };\n };\n\n this.none = function (token, state, tests) {\n return function (Item, item) {\n for (var i=0,ilen=tests.length;i<ilen;i+=1) {\n var result = tests[i](Item,item);\n if (result) {\n return false;\n }\n }\n return true;\n };\n };\n\n this.all = function (token, state, tests) {\n return function (Item, item) {\n for (var i=0,ilen=tests.length;i<ilen;i+=1) {\n var result = tests[i](Item,item);\n if (!result) {\n return false;\n }\n }\n return true;\n };\n };\n\n this[undefined] = this.all;\n\n this.nand = function (token, state, tests) {\n return function (Item, item) {\n for (var i=0,ilen=tests.length;i<ilen;i+=1) {\n var result = tests[i](Item,item);\n if (!result) {\n return true;\n }\n }\n return false;\n };\n };\n\n};\n\n/*global CSL: true */\n\n/*\n * Fields can be transformed by translation/transliteration, or by\n * abbreviation. Transformations are performed in that order.\n *\n * Renderings of original, translated or transliterated content\n * (followed by abbreviation if requested) are placed in the primary\n * output slot or the (implicitly punctuated) secondary and tertiary\n * output slots according to the settings registered in the\n * state.opt['cite-lang-prefs'] arrays. The array has six segments:\n * 'persons', 'institutions', 'titles', 'journals', 'publishers', and\n * 'places'. Each segment always contains at least one item, and may\n * hold values 'orig', 'translit' or 'translat'. The array defaults to\n * a single item 'orig'.\n *\n * All multilingual variables are associated with segments,\n * with the exception of 'edition' and 'genre'. These two\n * exceptions are always rendered with the first matching\n * language form found in state.opt['locale-translit'] or, if\n * composing a sort key, state.opt['locale-sort']. No secondary\n * slot rendering is performed for this two variables.\n *\n * The balance of multilingual variables are rendered with\n * the first matching value in the transform locales spec\n * (no transform, state.opt['locale-translit'], or \n * state.opt['locale-translat']) mapped to the target\n * slot.\n *\n * Full primary+secondary+tertiary rendering is performed only in\n * note-style citations and the bibliography. In-text citations are\n * rendered in the primary output slot only, following the same spec\n * parameters.\n *\n * Optional setters:\n * .setAbbreviationFallback(); fallback flag\n * (if true, a failed abbreviation will fallback to long)\n *\n * .setAlternativeVariableName(): alternative variable name in Item,\n * for use as a fallback abbreviation source\n *\n * Translation/transliteration\n *\n * Optional setter:\n * .setTransformFallback():\n * default flag (if true, the original field value will be used as a fallback)\n *\n * The getTextSubField() method may be used to obtain a string transform\n * of a field, without abbreviation, as needed for setting sort keys\n * (for example).\n *\n */\n\nCSL.Transform = function (state) {\n // Abbreviation families\n this.abbrevs = {};\n this.abbrevs[\"default\"] = new state.sys.AbbreviationSegments();\n\n function getCountryOrJurisdiction(variable, normalizedKey, quashCountry) {\n var value = \"\";\n if (state.sys.getHumanForm) {\n if (variable === \"country\") {\n value = state.sys.getHumanForm(normalizedKey.toLowerCase(), false, true);\n value = value.split(\"|\")[0];\n } else if (variable === \"jurisdiction\") {\n value = state.sys.getHumanForm(normalizedKey.toLowerCase(), false, true);\n if (!quashCountry) {\n value = value.split(\"|\").slice(1).join(\", \");\n } else {\n // Bare country name is rendered by \"country\", not \"jurisdiction\"\n value = \"\";\n }\n }\n\t }\n\t return value;\n }\n \n // Internal function\n function abbreviate(state, tok, Item, altvar, basevalue, family_var, use_field) {\n\n var value = \"\";\n var myabbrev_family = CSL.FIELD_CATEGORY_REMAP[family_var];\n var preferredJurisdiction;\n if (!myabbrev_family) {\n return basevalue;\n }\n\n var variable = family_var;\n var normalizedKey = basevalue;\n\n if (state.sys.normalizeAbbrevsKey) {\n normalizedKey = state.sys.normalizeAbbrevsKey(family_var, basevalue);\n }\n var quashCountry = false;\n if (variable === \"jurisdiction\" && normalizedKey) {\n quashCountry = normalizedKey.indexOf(\":\") === -1;\n }\n // Fix up jurisdiction codes\n if ([\"jurisdiction\", \"country\"].indexOf(family_var) > -1 && basevalue === basevalue.toLowerCase()) {\n normalizedKey = basevalue.toUpperCase();\n }\n \n \n // Lazy retrieval of abbreviations.\n if (state.sys.getAbbreviation) {\n\n if ([\"jurisdiction\", \"country\", \"language-name\", \"language-name-original\"].indexOf(variable) > -1) {\n preferredJurisdiction = \"default\";\n } else if (Item.jurisdiction) {\n preferredJurisdiction = Item.jurisdiction;\n } else {\n preferredJurisdiction = \"default\";\n }\n var jurisdiction = state.transform.loadAbbreviation(preferredJurisdiction, myabbrev_family, normalizedKey, Item.language);\n\n // Some rules:\n // # variable === \"country\"\n // (1) If an abbreviation is associated with the code, then:\n // (a) return the abbreviated form if form=\"short\"\n // (2) Otherwise:\n // (a) return the human-readable country name, or whatever is there if it's not a code\n // # variable === \"jurisdiction\"\n // (1) If !!getHumanForm(jurisdictionID, false, false):\n // (a) If the code is top-level (i.e. a country):\n // (i) return nothing -- this is what the \"country\" variable is for.\n // (b) otherwise:\n // (i) If an abbreviation is associated with the code, then:\n // (A) return the abbreviated form\n // (ii) Otherwise\n // (A) return the human-readable form, with the country name & code removed from the front\n // (2) Otherwise:\n // (a) abbreviate as per normal.\n // # other variables\n // (1) Abbreviate as per normal.\n\n if (state.transform.abbrevs[jurisdiction][myabbrev_family] && normalizedKey) {\n // Safe to test presence of abbrev against raw object in this block\n var abbrev = state.transform.abbrevs[jurisdiction][myabbrev_family][normalizedKey];\n if (tok.strings.form === \"short\" && abbrev) {\n if (quashCountry) {\n value = \"\";\n } else {\n value = abbrev;\n }\n } else {\n\t value = getCountryOrJurisdiction(variable, normalizedKey, quashCountry);\n }\n }\n }\n \n // Was for: \n if (!value \n && (!state.opt.development_extensions.require_explicit_legal_case_title_short || Item.type !== 'legal_case') \n && altvar && Item[altvar] && use_field) {\n value = Item[altvar];\n }\n if (!value && !state.sys.getAbbreviation && state.sys.getHumanForm) {\n\t value = getCountryOrJurisdiction(variable, normalizedKey, quashCountry);\n\t }\n if (!value && !quashCountry && (!state.sys.getHumanForm || variable !== \"jurisdiction\")) {\n value = basevalue;\n }\n if (state.opt.development_extensions.force_title_abbrev_fallback) {\n if (variable === \"title\" && value === basevalue && Item[\"title-short\"]) {\n value = Item[\"title-short\"];\n }\n }\n return value;\n }\n\n function getFieldLocale(Item,field) {\n var ret = state.opt[\"default-locale\"][0].slice(0, 2);\n var localeRex;\n if (state.opt.development_extensions.strict_text_case_locales) {\n localeRex = new RegExp(\"^([a-zA-Z]{2})(?:$|-.*| .*)\");\n } else {\n localeRex = new RegExp(\"^([a-zA-Z]{2})(?:$|-.*|.*)\");\n }\n if (Item.language) {\n var m = (\"\" + Item.language).match(localeRex);\n if (m) {\n ret = m[1];\n } else {\n // Set garbage to \"Klingon\".\n ret = \"tlh\";\n }\n }\n if (Item.multi && Item.multi && Item.multi.main && Item.multi.main[field]) {\n ret = Item.multi.main[field];\n }\n if (!state.opt.development_extensions.strict_text_case_locales\n || state.opt.development_extensions.normalize_lang_keys_to_lowercase) {\n\n ret = ret.toLowerCase();\n }\n return ret;\n }\n\n // Internal functions\n function getTextSubField (Item, field, locale_type, use_default, stopOrig, family_var) {\n var opt, o, ret, opts;\n var usedOrig = stopOrig;\n var usingOrig = false;\n\n if (!Item[field]) {\n return {\n name:\"\",\n usedOrig:stopOrig,\n token: CSL.Util.cloneToken(this)\n };\n }\n // If form=\"short\" is selected (\"family_var\" is a misnomer\n // here, it means short-form requested), and the variable\n // has a short-form partner (i.e. it is in array\n // VARIABLES_WITH_SHORT_FORM), then it is run here as *-short\".\n var stickyLongForm = false;\n if (CSL.VARIABLES_WITH_SHORT_FORM.indexOf(field) > -1\n && family_var) {\n\n field = field + \"-short\";\n stickyLongForm = true;\n }\n var breakMe = false;\n var firstValue = null;\n var fieldsToTry = [];\n if (field.slice(-6) === \"-short\") {\n fieldsToTry.push(field);\n fieldsToTry.push(field.slice(0, -6))\n } else {\n fieldsToTry.push(field);\n }\n\n for (var h=0,hlen=fieldsToTry.length; h<hlen; h++) {\n var variantMatch = false;\n var field = fieldsToTry[h];\n\n ret = {name:\"\", usedOrig:stopOrig,locale:getFieldLocale(Item,field)};\n\n opts = state.opt[locale_type] ? state.opt[locale_type].slice() : [];\n var hasVal = false;\n\n if (locale_type === 'locale-orig') {\n if (!stopOrig) {\n ret.name = Item[field];\n ret.usedOrig = false;\n }\n hasVal = true;\n usingOrig = true;\n } else if (use_default && (\"undefined\" === typeof opts || opts.length === 0)) {\n // If we want the original, or if we don't have any specific guidance and we \n // definitely want output, just return the original value.\n ret.name = Item[field];\n ret.usedOrig = true;\n hasVal = true;\n usingOrig = true;\n }\n\n if (!hasVal) {\n for (var i = 0, ilen = opts.length; i < ilen; i += 1) {\n opt = opts[i];\n o = opt.split(/[\\-_]/)[0];\n if (opt && Item.multi && Item.multi._keys[field] && Item.multi._keys[field][opt]) {\n ret.name = Item.multi._keys[field][opt];\n ret.locale = opt;\n hasVal = true;\n variantMatch = true;\n usingOrig = false;\n break;\n } else if (o && Item.multi && Item.multi._keys[field] && Item.multi._keys[field][o]) {\n ret.name = Item.multi._keys[field][o];\n ret.locale = o;\n hasVal = true;\n variantMatch = true;\n usingOrig = false;\n break;\n }\n }\n if (!ret.name && use_default) {\n ret = {name:Item[field], usedOrig:true, locale:getFieldLocale(Item,field)};\n usingOrig = true;\n }\n }\n ret.token = CSL.Util.cloneToken(this);\n if (h === 0) {\n if (variantMatch) {\n ret.found_variant_ok = true;\n }\n firstValue = ret;\n if (!stickyLongForm && (\"undefined\" === typeof opts || opts.length === 0)) {\n breakMe = true;\n }\n if (variantMatch) {\n breakMe = true;\n }\n } else {\n if (!stickyLongForm && !variantMatch && firstValue) {\n ret = firstValue;\n field = fieldsToTry[0];\n } else if (variantMatch) {\n ret.found_variant_ok = true;\n }\n }\n if ([\"title\", \"container-title\"].indexOf(field) > -1) {\n if (!usedOrig\n && (!ret.token.strings[\"text-case\"]\n || ret.token.strings[\"text-case\"] === \"sentence\"\n || ret.token.strings[\"text-case\"] === \"normal\")) {\n var locale = state.opt.lang;\n var lang;\n if (usingOrig) {\n lang = false;\n } else {\n lang = ret.locale;\n }\n var seg = field.slice(0,-5);\n var sentenceCase = ret.token.strings[\"text-case\"] === \"sentence\" ? true : false;\n ret.name = CSL.titlecaseSentenceOrNormal(state, Item, seg, lang, sentenceCase);\n delete ret.token.strings[\"text-case\"];\n }\n }\n if (breakMe) {\n break;\n }\n }\n return ret;\n }\n this.getTextSubField = getTextSubField;\n \n // Setter for abbreviation lists\n // This initializes a single abbreviation based on known\n // data.\n function loadAbbreviation(jurisdiction, category, orig, lang) {\n if (!jurisdiction) {\n jurisdiction = \"default\";\n }\n var country = jurisdiction.split(\":\")[0];\n var domain = CSL.getAbbrevsDomain(state, country, lang);\n if (domain) {\n jurisdiction += (\"@\" + domain);\n }\n if (!orig) {\n if (!state.transform.abbrevs[jurisdiction]) {\n state.transform.abbrevs[jurisdiction] = new state.sys.AbbreviationSegments();\n }\n if (!state.transform.abbrevs[jurisdiction][category]) {\n state.transform.abbrevs[jurisdiction][category] = {};\n }\n return jurisdiction;\n }\n // The getAbbreviation() function should check the\n // external DB for the content key. If a value exists\n // in this[category] and no value exists in DB, the entry\n // in memory is left untouched. If a value does exist in\n // DB, the memory value is created.\n //\n // See testrunner_stdrhino.js for an example.\n if (state.sys.getAbbreviation) {\n jurisdiction = state.sys.getAbbreviation(state.opt.styleID, state.transform.abbrevs, jurisdiction, category, orig);\n if (!jurisdiction) {\n jurisdiction = \"default\";\n if (domain) {\n jurisdiction += (\"@\" + domain);\n }\n }\n }\n return jurisdiction;\n }\n this.loadAbbreviation = loadAbbreviation;\n\n function publisherCheck (tok, Item, primary, family_var) {\n var varname = tok.variables[0];\n if (state.publisherOutput && primary) {\n if ([\"publisher\",\"publisher-place\"].indexOf(varname) === -1) {\n return false;\n } else {\n // In this case, the publisher bundle will be rendered\n // at the close of the group, by the closing group node.\n state.publisherOutput[varname + \"-token\"] = tok;\n state.publisherOutput.varlist.push(varname);\n var lst = primary.split(/;\\s*/);\n if (lst.length === state.publisherOutput[varname + \"-list\"].length) {\n state.publisherOutput[varname + \"-list\"] = lst;\n }\n // Abbreviate each of the items in the list here!\n for (var i = 0, ilen = lst.length; i < ilen; i += 1) {\n lst[i] = abbreviate(state, tok, Item, false, lst[i], family_var, true);\n }\n state.tmp[varname + \"-token\"] = tok;\n return true;\n }\n }\n return false;\n }\n\n function citeFormCheck(Item, value) {\n var m = value.match(/^#([0-9]+).*>>>/);\n if (m && m[1]) {\n Item[\"cite-form\"] = m[1];\n }\n }\n \n // The name transform code is placed here to keep similar things\n // in one place. Obviously this module could do with a little\n // tidying up.\n function quashCheck(jurisdiction, value) {\n var m = value.match(/^(?:#[0-9]+)*(?:!((?:[-_a-z]+(?:(?:.*)))(?:,(?:[-_a-z]+(?:(?:.*))))*))*>>>/);\n if (m) {\n value = value.slice(m[0].length);\n if (m[1]) {\n var fields = m[1].split(\",\");\n for (var i = 0, ilen = fields.length; i < ilen; i += 1) {\n var rawField = fields[i];\n var mm = rawField.match(/^([-_a-z]+)(?:\\:(.*))*$/);\n var field = mm[1];\n // trimmer is not available in getAmbiguousCite\n var trimmer = state.tmp.abbrev_trimmer;\n if (mm[2]) {\n if (trimmer && jurisdiction) {\n if (!trimmer[jurisdiction]) {\n trimmer[jurisdiction] = {};\n }\n trimmer[jurisdiction][field] = mm[2];\n }\n } else if (state.tmp.done_vars.indexOf(field) === -1) {\n if (trimmer && jurisdiction) {\n if (!trimmer.QUASHES[jurisdiction]) {\n trimmer.QUASHES[jurisdiction] = {};\n }\n trimmer.QUASHES[jurisdiction][field] = true;\n }\n state.tmp.done_vars.push(field);\n }\n }\n }\n }\n return value;\n }\n this.quashCheck = quashCheck;\n\n // Return function appropriate to selected options\n function getOutputFunction(variables, family_var, abbreviation_fallback, alternative_varname) {\n // var mytoken;\n\n // Set the primary_locale and secondary_locale lists appropriately.\n // No instance helper function for this; everything can be derived\n // from processor settings and rendering context.\n\n var localesets;\n var langPrefs = CSL.LangPrefsMap[variables[0]];\n if (!langPrefs) {\n localesets = false;\n } else {\n localesets = state.opt['cite-lang-prefs'][langPrefs];\n }\n\n return function (state, Item, item) {\n var primary, primary_locale, secondary, secondary_locale, tertiary, tertiary_locale, primary_tok;\n if (!variables[0] || (!Item[variables[0]] && !Item[alternative_varname])) {\n return null;\n }\n //\n // Exploring the edges here.\n // \"suppress-author\" for string variables (mostly titles).\n //\n if (!state.tmp.just_looking && item && item[\"suppress-author\"]) {\n if (!state.tmp.probably_rendered_something && state.tmp.can_substitute.length() > 1) {\n return null;\n }\n }\n var slot = {primary:false, secondary:false, tertiary:false};\n if (state.tmp.area.slice(-5) === \"_sort\") {\n slot.primary = 'locale-sort';\n } else {\n if (localesets && localesets.length === 1 && localesets[0] === \"locale-orig\") {\n slot.primary = \"locale-orig\";\n localesets = false;\n } else if (localesets && !state.tmp.multi_layout) {\n var slotnames = [\"primary\", \"secondary\", \"tertiary\"];\n for (var i = 0, ilen = slotnames.length; i < ilen; i += 1) {\n if (localesets.length - 1 < i) {\n break;\n }\n if (localesets[i]) {\n slot[slotnames[i]] = 'locale-' + localesets[i];\n }\n }\n } else {\n slot.primary = 'locale-orig';\n }\n }\n \n if (variables[0] === \"title-short\" \n || (state.tmp.area !== \"bibliography\"\n && !(state.tmp.area === \"citation\"\n && state.opt.xclass === \"note\"\n && item && !item.position))) {\n \n slot.secondary = false;\n slot.tertiary = false;\n }\n\n if (state.tmp.multi_layout) {\n slot.secondary = false;\n slot.tertiary = false;\n }\n \n // Problem for multilingual: we really should be\n // checking for sanity on the basis of the output\n // strings to be actually used. (also below)\n if (state.tmp[\"publisher-list\"]) {\n if (variables[0] === \"publisher\") {\n state.tmp[\"publisher-token\"] = this;\n } else if (variables[0] === \"publisher-place\") {\n state.tmp[\"publisher-place-token\"] = this;\n }\n return null;\n }\n \n // tmp.lang_array carries the current locale IDs of the style\n // and the item. Field-level locale IDs are added here, so\n // we clone it to allow reset.\n var oldLangArray = state.tmp.lang_array.slice();\n\n // True is for transform fallback\n var res = getTextSubField.call(this, Item, variables[0], slot.primary, true, null, family_var);\n primary = res.name;\n primary_locale = res.locale;\n var primary_tok = res.token;\n var primaryUsedOrig = res.usedOrig;\n if (family_var && !res.found_variant_ok) {\n primary = abbreviate(state, primary_tok, Item, alternative_varname, primary, family_var, true);\n // Suppress subsequent use of another variable if requested by\n // hack syntax in this abbreviation short form.\n if (primary) {\n // We run quash-check in getAmbiguousCite, to possibly pick up a cite-form value.\n citeFormCheck(Item, primary);\n if (!state.tmp.just_looking) {\n primary = quashCheck(Item.jurisdiction, primary);\n }\n }\n }\n if (publisherCheck(this, Item, primary, family_var)) {\n state.tmp.lang_array = oldLangArray;\n return null;\n }\n\n // No fallback for secondary and tertiary\n secondary = false;\n tertiary = false;\n var secondary_tok;\n var tertiary_tok;\n if (slot.secondary) {\n res = getTextSubField.call(this, Item, variables[0], slot.secondary, false, res.usedOrig, null, family_var);\n secondary = res.name;\n secondary_locale = res.locale;\n secondary_tok = res.token;\n if (family_var && !res.found_variant_ok) {\n if (secondary) {\n // The abbreviate() function could use a cleanup, after Zotero correct to use title-short\n secondary = abbreviate(state, secondary_tok, Item, false, secondary, family_var, true);\n }\n }\n //print(\"XXX secondary_locale: \"+secondary_locale);\n }\n if (slot.tertiary) {\n res = getTextSubField.call(this, Item, variables[0], slot.tertiary, false, res.usedOrig, null, family_var);\n tertiary = res.name;\n tertiary_locale = res.locale;\n tertiary_tok = res.token;\n if (family_var && !res.found_variant_ok) {\n if (tertiary) {\n // The abbreviate() function could use a cleanup, after Zotero correct to use title-short\n tertiary = abbreviate(state, tertiary_tok, Item, false, tertiary, family_var, true);\n }\n }\n //print(\"XXX tertiary_locale: \"+tertiary_locale);\n }\n \n // Decoration of primary (currently translit only) goes here\n var primaryPrefix;\n if (slot.primary === \"locale-translit\") {\n primaryPrefix = state.opt.citeAffixes[langPrefs][slot.primary].prefix;\n } \n // XXX This should probably protect against italics at higher\n // levels.\n\n if (primaryPrefix === \"<i>\" && variables[0] === 'title' && !primaryUsedOrig) {\n var hasItalic = false;\n for (var i = 0, ilen = primary_tok.decorations.length; i < ilen; i += 1) {\n if (primary_tok.decorations[i][0] === \"@font-style\"\n && primary_tok.decorations[i][1] === \"italic\") {\n \n hasItalic = true;\n }\n }\n if (!hasItalic) {\n primary_tok.decorations.push([\"@font-style\", \"italic\"]);\n }\n }\n\n //print(\"XXX \"+primary_tok.strings[\"text-case\"]);\n if (primary_locale !== \"en\" && primary_tok.strings[\"text-case\"] === \"title\") {\n primary_tok.strings[\"text-case\"] = \"passthrough\";\n }\n \n if (\"title\" === variables[0]) {\n primary = CSL.demoteNoiseWords(state, primary, this[\"leading-noise-words\"]);\n }\n if (secondary || tertiary) {\n\n state.output.openLevel(\"empty\");\n\n // A little too aggressive maybe.\n primary_tok.strings.suffix = primary_tok.strings.suffix.replace(/[ .,]+$/,\"\");\n if (primary_locale) {\n state.tmp.lang_array = [primary_locale].concat(oldLangArray);\n }\n CSL.UPDATE_GROUP_CONTEXT_CONDITION(state, null, null, primary_tok, primary_tok.strings.prefix + primary);\n state.output.append(primary, primary_tok);\n state.tmp.probably_rendered_something = true;\n\n if (primary === secondary) {\n secondary = false;\n }\n if (secondary) {\n secondary_tok.strings.prefix = state.opt.citeAffixes[langPrefs][slot.secondary].prefix;\n secondary_tok.strings.suffix = state.opt.citeAffixes[langPrefs][slot.secondary].suffix;\n // Add a space if empty\n if (!secondary_tok.strings.prefix) {\n secondary_tok.strings.prefix = \" \";\n }\n // Remove quotes\n for (var i = secondary_tok.decorations.length - 1; i > -1; i += -1) {\n if (['@quotes/true', '@font-style/italic', '@font-style/oblique', '@font-weight/bold'].indexOf(secondary_tok.decorations[i].join('/')) > -1) {\n secondary_tok.decorations = secondary_tok.decorations.slice(0, i).concat(secondary_tok.decorations.slice(i + 1));\n }\n }\n if (secondary_locale !== \"en\" && secondary_tok.strings[\"text-case\"] === \"title\") {\n secondary_tok.strings[\"text-case\"] = \"passthrough\";\n }\n if (secondary_locale) {\n state.tmp.lang_array = [secondary_locale].concat(oldLangArray);\n }\n var secondary_outer = new CSL.Token();\n secondary_outer.decorations.push([\"@font-style\", \"normal\"]);\n secondary_outer.decorations.push([\"@font-weight\", \"normal\"]);\n state.output.openLevel(secondary_outer);\n state.output.append(secondary, secondary_tok);\n state.output.closeLevel();\n\n var blob_obj = state.output.current.value();\n var blobs_pos = state.output.current.value().blobs.length - 1;\n // Suppress supplementary multilingual info on subsequent\n // partners of a parallel cite?\n }\n if (primary === tertiary) {\n tertiary = false;\n }\n \n if (tertiary) {\n tertiary_tok.strings.prefix = state.opt.citeAffixes[langPrefs][slot.tertiary].prefix;\n tertiary_tok.strings.suffix = state.opt.citeAffixes[langPrefs][slot.tertiary].suffix;\n // Add a space if empty\n if (!tertiary_tok.strings.prefix) {\n tertiary_tok.strings.prefix = \" \";\n }\n // Remove quotes\n for (var i = tertiary_tok.decorations.length - 1; i > -1; i += -1) {\n if (['@quotes/true', '@font-style/italic', '@font-style/oblique', '@font-weight/bold'].indexOf(tertiary_tok.decorations[i].join('/')) > -1) {\n tertiary_tok.decorations = tertiary_tok.decorations.slice(0, i).concat(tertiary_tok.decorations.slice(i + 1));\n }\n }\n if (tertiary_locale !== \"en\" && tertiary_tok.strings[\"text-case\"] === \"title\") {\n tertiary_tok.strings[\"text-case\"] = \"passthrough\";\n }\n if (tertiary_locale) {\n state.tmp.lang_array = [tertiary_locale].concat(oldLangArray);\n }\n var tertiary_outer = new CSL.Token();\n tertiary_outer.decorations.push([\"@font-style\", \"normal\"]);\n tertiary_outer.decorations.push([\"@font-weight\", \"normal\"]);\n state.output.openLevel(tertiary_outer);\n state.output.append(tertiary, tertiary_tok);\n state.output.closeLevel();\n\n var blob_obj = state.output.current.value();\n var blobs_pos = state.output.current.value().blobs.length - 1;\n // Suppress supplementary multilingual info on subsequent\n // partners of a parallel cite?\n // See note above.\n }\n\n state.output.closeLevel();\n } else {\n if (primary_locale) {\n state.tmp.lang_array = [primary_locale].concat(oldLangArray);\n }\n CSL.UPDATE_GROUP_CONTEXT_CONDITION(state, null, null, primary_tok, primary_tok.strings.prefix + primary);\n state.output.append(primary, primary_tok);\n state.tmp.probably_rendered_something = true;\n }\n\n state.tmp.lang_array = oldLangArray;\n \n if (state.tmp.can_block_substitute) {\n state.tmp.name_node.children.push(state.output.current.value());\n }\n return null;\n };\n }\n this.getOutputFunction = getOutputFunction;\n};\n\n/*global CSL: true */\n\n/**\n * Style token.\n * <p>This class provides the tokens that define\n * the runtime version of the style. The tokens are\n * instantiated by {@link CSL.Core.Build}, but the token list\n * must be post-processed with\n * {@link CSL.Core.Configure} before it can be used to generate\n * citations.</p>\n * @param {String} name The node name represented by this token.\n * @param {Int} tokentype A flag indicating whether this token\n * marks the start of a node, the end of a node, or is a singleton.\n * @class\n */\nCSL.Token = function (name, tokentype, conditional) {\n /**\n * Name of the element.\n * <p>This corresponds to the element name of the\n * relevant tag in the CSL file.\n */\n this.name = name;\n /**\n * Strings and other static content specific to the element.\n */\n this.strings = {};\n this.strings.delimiter = undefined;\n this.strings.prefix = \"\";\n this.strings.suffix = \"\";\n /**\n * Formatting parameters.\n * <p>This is a placeholder at instantiation. It is\n * replaced by the result of {@link CSL.setDecorations}\n * when the tag is created and configured during {@link CSL.Core.Build}\n * by {@link CSL.XmlToToken}. The parameters for particular\n * formatting attributes are stored as string arrays, which\n * map to formatting functions at runtime,\n * when the output format is known. Note that the order in which\n * parameters are registered is fixed by the constant\n * {@link CSL.FORMAT_KEY_SEQUENCE}.\n */\n this.decorations = [];\n this.variables = [];\n /**\n * Element functions.\n * <p>Functions implementing the styling behaviour of the element\n * are pushed into this array in the {@link CSL.Core.Build} phase.\n */\n this.execs = [];\n /**\n * Token type.\n * <p>This is a flag constant indicating whether the token represents\n * a start tag, an end tag, or is a singleton.</p>\n */\n this.tokentype = tokentype;\n\n // Conditional attributes added to bare tokens at runtime\n \n /**\n * Condition evaluator.\n * <p>This is a placeholder that receives a single function, and is\n * only relevant for a conditional branching tag (<code>if</code> or\n * <code>else-if</code>). The function implements the argument to\n * the <code>match=</code> attribute (<code>any</code>, <code>all</code>\n * or <code>none</code>), by executing the functions registered in the\n * <code>tests</code> array (see below), and reacting accordingly. This\n * function is invoked by the execution wrappers found in\n * {@link CSL.Engine}.</p>\n */\n // this.evaluator = false;\n /**\n * Conditions.\n * <p>Functions that evaluate to true or false, implementing\n * various posisble attributes to the conditional branching tags,\n * are registered here during {@link CSL.Core.Build}.\n * </p>\n */\n // this.tests = [];\n /**\n * Jump point on success.\n * <p>This holds the list jump point to be used when the\n * <code>evaluator</code> function of a conditional tag\n * returns true (success). The jump index value is set during the\n * back-to-front token pass performed during {@link CSL.Core.Configure}.\n * </p>\n */\n // this.succeed = false;\n /**\n * Jump point on failure.\n * <p>This holds the list jump point to be used when the\n * <code>evaluator</code> function of a conditional tag\n * returns false (failure). Jump index values are set during the\n * back-to-front token pass performed during {@link CSL.Core.Configure}.\n * </p>\n */\n // this.fail = false;\n /**\n * Index of next token.\n * <p>This holds the index of the next token in the\n * token list, which is the default \"jump-point\" for ordinary\n * processing. Jump index values are set during the\n * back-to-front token pass performed during {@link CSL.Core.Configure}.\n * </p>\n */\n // this.next = false;\n};\n\n// Have needed this for yonks\nCSL.Util.cloneToken = function (token) {\n var newtok, key, pos, len;\n if (\"string\" === typeof token) {\n return token;\n }\n newtok = new CSL.Token(token.name, token.tokentype);\n for (var key in token.strings) {\n if (token.strings.hasOwnProperty(key)) {\n newtok.strings[key] = token.strings[key];\n }\n }\n if (token.decorations) {\n newtok.decorations = [];\n for (pos = 0, len = token.decorations.length; pos < len; pos += 1) {\n newtok.decorations.push(token.decorations[pos].slice());\n }\n }\n if (token.variables) {\n newtok.variables = token.variables.slice();\n }\n // Probably overkill; this is only used for cloning formatting\n // tokens.\n if (token.execs) {\n newtok.execs = token.execs.slice();\n if (token.tests) {\n newtok.tests = token.tests.slice();\n }\n }\n return newtok;\n};\n\n/*global CSL: true */\n\n/**\n * Ambiguous Cite Configuration Object\n * @class\n */\nCSL.AmbigConfig = function () {\n this.maxvals = [];\n this.minval = 1;\n this.names = [];\n this.givens = [];\n this.year_suffix = false;\n this.disambiguate = 0;\n};\n\n/*global CSL: true */\n\nCSL.Blob = function (str, token, levelname) {\n var len, pos, key;\n this.levelname = levelname;\n //print(levelname);\n if (token) {\n this.strings = {\"prefix\":\"\",\"suffix\":\"\"};\n for (var key in token.strings) {\n if (token.strings.hasOwnProperty(key)) {\n this.strings[key] = token.strings[key];\n }\n }\n this.decorations = [];\n if (token.decorations === undefined) {\n len = 0;\n } else {\n len = token.decorations.length;\n }\n for (pos = 0; pos < len; pos += 1) {\n this.decorations.push(token.decorations[pos].slice());\n }\n } else {\n this.strings = {};\n this.strings.prefix = \"\";\n this.strings.suffix = \"\";\n this.strings.delimiter = \"\";\n this.decorations = [];\n }\n if (\"string\" === typeof str) {\n this.blobs = str;\n } else if (str) {\n this.blobs = [str];\n } else {\n this.blobs = [];\n }\n this.alldecor = [this.decorations];\n};\n\n\nCSL.Blob.prototype.push = function (blob) {\n if (\"string\" === typeof this.blobs) {\n CSL.error(\"Attempt to push blob onto string object\");\n } else if (false !== blob) {\n blob.alldecor = blob.alldecor.concat(this.alldecor);\n this.blobs.push(blob);\n }\n};\n\n/*global CSL: true */\n\n/**\n * An output instance object representing a number or a range\n *\n * with attributes next and start, and\n * methods isRange(), renderStart(), renderEnd() and renderRange().\n * At render time, the output queue will perform optional\n * collapsing of these objects in the queue, according to\n * configurable options, and apply any decorations registered\n * in the object to the output elements.\n * @namespace Range object and friends.\n */\n\nCSL.NumericBlob = function (state, particle, num, mother_token, id) {\n // item id is used to assure that prefix delimiter is invoked only\n // when joining blobs across items\n this.id = id;\n this.alldecor = [];\n this.num = num;\n this.particle = particle;\n this.blobs = num.toString();\n this.status = CSL.START;\n this.strings = {};\n if (mother_token) {\n if (mother_token.strings[\"text-case\"]) {\n var textCase = mother_token.strings[\"text-case\"];\n this.particle = CSL.Output.Formatters[textCase](state, this.particle);\n this.blobs = CSL.Output.Formatters[textCase](state, this.blobs);\n }\n this.gender = mother_token.gender;\n this.decorations = mother_token.decorations;\n this.strings.prefix = mother_token.strings.prefix;\n this.strings.suffix = mother_token.strings.suffix;\n this.strings[\"text-case\"] = mother_token.strings[\"text-case\"];\n this.successor_prefix = mother_token.successor_prefix;\n this.range_prefix = mother_token.range_prefix;\n this.splice_prefix = mother_token.splice_prefix;\n this.formatter = mother_token.formatter;\n if (!this.formatter) {\n this.formatter = new CSL.Output.DefaultFormatter();\n }\n if (this.formatter) {\n this.type = this.formatter.format(1);\n }\n } else {\n this.decorations = [];\n this.strings.prefix = \"\";\n this.strings.suffix = \"\";\n this.successor_prefix = \"\";\n this.range_prefix = \"\";\n this.splice_prefix = \"\";\n this.formatter = new CSL.Output.DefaultFormatter();\n }\n};\n\n\nCSL.NumericBlob.prototype.setFormatter = function (formatter) {\n this.formatter = formatter;\n this.type = this.formatter.format(1);\n};\n\n\nCSL.Output.DefaultFormatter = function () {};\n\nCSL.Output.DefaultFormatter.prototype.format = function (num) {\n return num.toString();\n};\n\nCSL.NumericBlob.prototype.checkNext = function (next,start) {\n if (start) {\n this.status = CSL.START;\n if (\"object\" === typeof next) {\n if (next.num === (this.num + 1)) {\n next.status = CSL.SUCCESSOR;\n } else {\n next.status = CSL.SEEN;\n }\n }\n } else if (! next || !next.num || this.type !== next.type || next.num !== (this.num + 1)) {\n if (this.status === CSL.SUCCESSOR_OF_SUCCESSOR) {\n this.status = CSL.END;\n }\n if (\"object\" === typeof next) { \n next.status = CSL.SEEN;\n }\n } else { // next number is in the sequence\n if (this.status === CSL.START || this.status === CSL.SEEN) {\n next.status = CSL.SUCCESSOR;\n } else if (this.status === CSL.SUCCESSOR || this.status === CSL.SUCCESSOR_OF_SUCCESSOR) {\n if (this.range_prefix) {\n next.status = CSL.SUCCESSOR_OF_SUCCESSOR;\n this.status = CSL.SUPPRESS;\n } else {\n next.status = CSL.SUCCESSOR;\n }\n }\n // wakes up the correct delimiter.\n //if (this.status === CSL.SEEN) {\n // this.status = CSL.SUCCESSOR;\n //}\n }\n};\n\n\nCSL.NumericBlob.prototype.checkLast = function (last) {\n // Used to adjust final non-range join\n if (this.status === CSL.SEEN \n || (last.num !== (this.num - 1) && this.status === CSL.SUCCESSOR)) {\n this.status = CSL.SUCCESSOR;\n return true;\n }\n return false;\n};\n\n/*global CSL: true */\n\nCSL.Util.fixDateNode = function (parent, pos, node) {\n var form, variable, datexml, subnode, partname, attr, val, prefix, suffix, children, subchildren, display, cslid;\n \n var lingo = this.cslXml.getAttributeValue(node, \"lingo\");\n\n var default_locale = this.cslXml.getAttributeValue(node, \"default-locale\");\n\n // Raise date flag, used to control inclusion of year-suffix key in sorts\n // This may be a little reckless: not sure what happens on no-date conditions\n this.build.date_key = true;\n\n form = this.cslXml.getAttributeValue(node, \"form\");\n var lingo;\n if (default_locale) {\n lingo = this.opt[\"default-locale\"][0];\n } else {\n lingo = this.cslXml.getAttributeValue(node, \"lingo\");\n }\n\n if (!this.getDate(form, default_locale)) {\n return parent;\n }\n\n var dateparts = this.cslXml.getAttributeValue(node, \"date-parts\");\n\n variable = this.cslXml.getAttributeValue(node, \"variable\");\n prefix = this.cslXml.getAttributeValue(node, \"prefix\");\n suffix = this.cslXml.getAttributeValue(node, \"suffix\");\n display = this.cslXml.getAttributeValue(node, \"display\");\n cslid = this.cslXml.getAttributeValue(node, \"cslid\");\n\n //\n // Xml: Copy a node\n //\n datexml = this.cslXml.nodeCopy(this.getDate(form, default_locale));\n this.cslXml.setAttribute(datexml, 'lingo', this.opt.lang);\n this.cslXml.setAttribute(datexml, 'form', form);\n this.cslXml.setAttribute(datexml, 'date-parts', dateparts);\n this.cslXml.setAttribute(datexml, \"cslid\", cslid);\n //\n // Xml: Set attribute\n //\n this.cslXml.setAttribute(datexml, 'variable', variable);\n this.cslXml.setAttribute(datexml, 'default-locale', default_locale);\n //\n // Xml: Set flag\n //\n if (prefix) {\n //\n // Xml: Set attribute\n //\n this.cslXml.setAttribute(datexml, \"prefix\", prefix);\n }\n if (suffix) {\n //\n // Xml: Set attribute\n //\n this.cslXml.setAttribute(datexml, \"suffix\", suffix);\n }\n if (display) {\n //\n // Xml: Set attribute\n //\n this.cslXml.setAttribute(datexml, \"display\", display);\n }\n //\n // Step through any date-part children of the layout date node,\n // and lay their attributes onto the corresponding node in the\n // locale template node copy.\n //\n // tests: language_BaseLocale\n // tests: date_LocalizedTextInStyleLocaleWithTextCase\n //\n children = this.cslXml.children(datexml);\n for (var key in children) {\n subnode = children[key];\n if (\"date-part\" === this.cslXml.nodename(subnode)) {\n partname = this.cslXml.getAttributeValue(subnode, \"name\");\n if (default_locale) {\n this.cslXml.setAttributeOnNodeIdentifiedByNameAttribute(datexml, \"date-part\", partname, \"@default-locale\", \"true\");\n }\n }\n }\n\n children = this.cslXml.children(node);\n for (var key in children) {\n subnode = children[key];\n if (\"date-part\" === this.cslXml.nodename(subnode)) {\n partname = this.cslXml.getAttributeValue(subnode, \"name\");\n subchildren = this.cslXml.attributes(subnode);\n for (attr in subchildren) {\n if (\"@name\" === attr) {\n continue;\n }\n if (lingo && lingo !== this.opt.lang) {\n if ([\"@suffix\", \"@prefix\", \"@form\"].indexOf(attr) > -1) {\n continue;\n }\n }\n val = subchildren[attr];\n this.cslXml.setAttributeOnNodeIdentifiedByNameAttribute(datexml, \"date-part\", partname, attr, val);\n }\n }\n }\n \n if (\"year\" === this.cslXml.getAttributeValue(node, \"date-parts\")) {\n\n //\n // Xml: Find one node by attribute and delete\n //\n this.cslXml.deleteNodeByNameAttribute(datexml, 'month');\n //\n // Xml: Find one node by attribute and delete\n //\n this.cslXml.deleteNodeByNameAttribute(datexml, 'day');\n \n } else if (\"year-month\" === this.cslXml.getAttributeValue(node, \"date-parts\")) {\n //\n // Xml: Find one node by attribute and delete\n //\n this.cslXml.deleteNodeByNameAttribute(datexml, 'day');\n } else if (\"month-day\" === this.cslXml.getAttributeValue(node, \"date-parts\")) {\n //\n // Xml: Get child nodes\n //\n var childNodes = this.cslXml.children(datexml);\n for (var i=1,ilen=this.cslXml.numberofnodes(childNodes);i<ilen;i++) {\n //\n // Xml: Get attribute value (for string comparison)\n //\n if (this.cslXml.getAttributeValue(childNodes[i], 'name') === \"year\") {\n //\n // Xml: Set attribute value\n //\n this.cslXml.setAttribute(childNodes[i-1], \"suffix\", \"\");\n break;\n }\n }\n //\n // Xml: Find one node by attribute and delete\n //\n this.cslXml.deleteNodeByNameAttribute(datexml, 'year');\n }\n return this.cslXml.insertChildNodeAfter(parent, node, pos, datexml);\n};\n\n/*global CSL: true */\n\nCSL.dateMacroAsSortKey = function (state, Item) {\n CSL.dateAsSortKey.call(this, state, Item, true);\n};\n\n\nCSL.dateAsSortKey = function (state, Item, isMacro) {\n var dp, elem, value, e, yr, prefix, i, ilen;\n var variable = this.variables[0];\n var macroFlag = \"empty\";\n if (isMacro && state.tmp.extension) {\n macroFlag = \"macro-with-date\";\n }\n dp = Item[variable];\n if (\"undefined\" === typeof dp) {\n dp = {\"date-parts\": [[0]] };\n }\n if (\"undefined\" === typeof this.dateparts) {\n this.dateparts = [\"year\", \"month\", \"day\"];\n }\n if (dp.raw) {\n dp = state.fun.dateparser.parseDateToArray(dp.raw);\n } else if (dp[\"date-parts\"]) {\n dp = state.dateParseArray(dp);\n }\n if (\"undefined\" === typeof dp) {\n dp = {};\n }\n if (dp.year) {\n for (i = 0, ilen = CSL.DATE_PARTS_INTERNAL.length; i < ilen; i += 1) {\n elem = CSL.DATE_PARTS_INTERNAL[i];\n value = 0;\n e = elem;\n if (e.slice(-4) === \"_end\") {\n e = e.slice(0, -4);\n }\n if (dp[elem] && this.dateparts.indexOf(e) > -1) {\n value = dp[elem];\n }\n if (elem.slice(0, 4) === \"year\") {\n yr = CSL.Util.Dates[e].numeric(state, value);\n var prefix = \"1\";\n if (yr[0] === \"-\") {\n prefix = \"0\";\n yr = yr.slice(1);\n yr = 9999 - parseInt(yr, 10);\n }\n state.output.append(CSL.Util.Dates[elem.slice(0, 4)].numeric(state, (prefix + yr)), macroFlag);\n } else {\n value = CSL.Util.Dates[e][\"numeric-leading-zeros\"](state, value);\n // Ugh.\n if (!value) {\n value = \"00\";\n }\n state.output.append(value, macroFlag);\n }\n }\n }\n};\n\nCSL.Engine.prototype.dateParseArray = function (date_obj) {\n var ret, field, dp, exts;\n ret = {};\n for (field in date_obj) {\n if (field === \"date-parts\") {\n dp = date_obj[\"date-parts\"];\n if (dp.length > 1) {\n if (dp[0].length !== dp[1].length) {\n CSL.error(\"CSL data error: element mismatch in date range input.\");\n }\n }\n exts = [\"\", \"_end\"];\n for (var i = 0, ilen = dp.length; i < ilen; i += 1) {\n for (var j = 0, jlen = CSL.DATE_PARTS.length; j < jlen; j += 1) {\n if (isNaN(parseInt(dp[i][j], 10))) {\n ret[(CSL.DATE_PARTS[j] + exts[i])] = undefined;\n } else {\n ret[(CSL.DATE_PARTS[j] + exts[i])] = parseInt(dp[i][j], 10);\n }\n }\n }\n } else if (date_obj.hasOwnProperty(field)) {\n\n // XXXX: temporary workaround\n\n if (field === \"literal\" && \"object\" === typeof date_obj.literal && \"string\" === typeof date_obj.literal.part) {\n CSL.debug(\"Warning: fixing up weird literal date value\");\n ret.literal = date_obj.literal.part;\n } else {\n ret[field] = date_obj[field];\n }\n }\n }\n return ret;\n};\n\n/*global CSL: true */\n\nCSL.Util.Names = {};\n\nCSL.Util.Names.compareNamesets = CSL.NameOutput.prototype._compareNamesets;\n\n/**\n * Un-initialize a name (quash caps after first character)\n */\nCSL.Util.Names.unInitialize = function (state, name) {\n var i, ilen, namelist, punctlist, ret;\n if (!name) {\n return \"\";\n }\n namelist = name.split(/(?:\\-|\\s+)/);\n punctlist = name.match(/(\\-|\\s+)/g);\n ret = \"\";\n for (i = 0, ilen = namelist.length; i < ilen; i += 1) {\n // if (CSL.ALL_ROMANESQUE_REGEXP.exec(namelist[i].slice(0,-1)) \n // && namelist[i] \n // && namelist[i] !== namelist[i].toUpperCase()) {\n\n // More or less like this, to address the following fault report:\n // http://forums.zotero.org/discussion/17610/apsa-problems-with-capitalization-of-mc-mac-etc/\n\n // Leaving the name string untouched because name capitalization is varied and wonderful.\n // https://github.com/Juris-M/citeproc-js/issues/43\n \n //namelist[i] = namelist[i].slice(0, 1) + namelist[i].slice(1, 2).toLowerCase() + namelist[i].slice(2);\n // }\n ret += namelist[i];\n if (i < ilen - 1) {\n ret += punctlist[i];\n }\n }\n return ret;\n};\n\n/**\n * Initialize a name.\n */\nCSL.Util.Names.initializeWith = function (state, name, terminator, normalizeOnly) {\n var i, ilen, mm, lst, ret;\n if (!name) {\n return \"\";\n }\n if (!terminator) {\n terminator = \"\";\n }\n if ([\"Lord\", \"Lady\"].indexOf(name) > -1\n || (!name.replace(/^(?:<[^>]+>)*/, \"\").match(CSL.STARTSWITH_ROMANESQUE_REGEXP)\n && !terminator.match(\"%s\"))) {\n return name;\n }\n\n if (state.opt[\"initialize-with-hyphen\"] === false) {\n name = name.replace(/\\-/g, \" \");\n }\n\n // We need to suss out what is a set of initials or abbreviation,\n // so that they can be selectively normalized. Steps might be:\n // (1) Split the string\n // (2) Step through the string, deleting periods and, if initalize=\"false\", then\n // (a) note abbreviations and initials (separately).\n // (3) If initialize=\"false\" then:\n // (a) Do the thing below, but only pushing terminator; or else\n // (b) Do the thing below\n\n name = name.replace(/\\s*\\-\\s*/g, \"-\").replace(/\\s+/g, \" \");\n name = name.replace(/-([a-z])/g, \"\\u2013$1\");\n\n for (var i=name.length-2; i>-1; i += -1) {\n if (name.slice(i, i+1) === \".\" && name.slice(i+1, i+2) !== \" \") {\n name = name.slice(0, i) + \". \" + name.slice(i+1);\n }\n }\n\n // (1) Split the string\n var nameSplits = CSL.Output.Formatters.nameDoppel.split(name);\n var namelist = [];\n namelist = [nameSplits.strings[0]];\n\n if (nameSplits.tags.length === 0) {\n var mmm = namelist[0].match(/[^\\.]+$/);\n if (mmm && mmm[0].length === 1 && mmm[0] !== mmm[0].toLowerCase()) {\n namelist[0] += \".\";\n }\n }\n\n for (i = 1, ilen = nameSplits.strings.length; i < ilen; i += 1) {\n namelist.push(nameSplits.tags[i - 1]);\n namelist.push(nameSplits.strings[i]);\n }\n\n // Use doInitializeName or doNormalizeName, depending on requirements.\n if (normalizeOnly) {\n ret = this.doNormalize(state, namelist, terminator);\n } else {\n ret = this.doInitialize(state, namelist, terminator);\n }\n ret = ret.replace(/\\u2013([a-z])/g, \"-$1\");\n return ret;\n};\n\nCSL.Util.Names.notag = function(str) {\n return str.replace(/^(?:<[^>]+>)*/, \"\");\n};\n\nCSL.Util.Names.mergetag = function(state, tagstr, newstr) {\n var m = tagstr.match(/(?:-*<[^>]+>-*)/g);\n if (!m) {\n return newstr;\n } else {\n tagstr = m.join(\"\");\n }\n m = newstr.match(/^(.*[^\\s])*(\\s+)$/);\n if (m) {\n m[1] = m[1] ? m[1] : \"\";\n newstr = m[1] + tagstr + m[2];\n } else {\n newstr = newstr + tagstr;\n }\n return newstr;\n};\n\nCSL.Util.Names.tagonly = function(state, str) {\n var m = str.match(/(?:<[^>]+>)+/);\n if (!m) {\n return str;\n } else {\n return m.join(\"\");\n }\n};\n\nCSL.Util.Names.doNormalize = function (state, namelist, terminator) {\n var i, ilen;\n // namelist is a flat list of given-name elements and space-like separators between them\n terminator = terminator ? terminator : \"\";\n // Flag elements that look like abbreviations\n var isAbbrev = [];\n for (i = 0, ilen = namelist.length; i < ilen; i += 1) {\n if (this.notag(namelist[i]).length > 1 && this.notag(namelist[i]).slice(-1) === \".\") {\n // namelist[i] = namelist[i].slice(0, -1);\n namelist[i] = namelist[i].replace(/^(.*)\\.(.*)$/, \"$1$2\");\n isAbbrev.push(true);\n } else if (namelist[i].length === 1 && namelist[i].toUpperCase() === namelist[i]) {\n isAbbrev.push(true);\n } else {\n isAbbrev.push(false);\n }\n }\n // Step through the elements of the givenname array\n for (i = 0, ilen = namelist.length; i < ilen; i += 2) {\n // If the element is not an abbreviation, leave it and its trailing spaces alone\n if (isAbbrev[i]) {\n // For all elements but the last\n if (i < namelist.length - 2) {\n // Start from scratch on space-like things following an abbreviation\n namelist[i + 1] = this.tagonly(state, namelist[i+1]);\n if (!isAbbrev[i+2]) {\n namelist[i + 1] = this.tagonly(state, namelist[i+1]) + \" \";\n }\n \n // Add the terminator to the element\n // If the following element is not a single-character abbreviation, remove a trailing zero-width non-break space, if present\n // These ops may leave some duplicate cruft in the elements and separators. This will be cleaned at the end of the function.\n if (namelist[i + 2].length > 1) {\n namelist[i+1] = terminator.replace(/\\ufeff$/, \"\") + namelist[i+1];\n } else {\n namelist[i+1] = this.mergetag(state, namelist[i+1], terminator);\n }\n }\n // For the last element (if it is an abbreviation), just append the terminator\n if (i === namelist.length - 1) {\n namelist[i] = namelist[i] + terminator;\n }\n }\n }\n // Remove trailing cruft and duplicate spaces, and return\n return namelist.join(\"\").replace(/[\\u0009\\u000a\\u000b\\u000c\\u000d\\u0020\\ufeff\\u00a0]+$/,\"\").replace(/\\s*\\-\\s*/g, \"-\").replace(/[\\u0009\\u000a\\u000b\\u000c\\u000d\\u0020]+/g, \" \");\n};\n\nCSL.Util.Names.doInitialize = function (state, namelist, terminator) {\n var i, ilen, m, j, jlen, lst, n;\n for (i = 0, ilen = namelist.length; i < ilen; i += 2) {\n n = namelist[i];\n if (!n) {\n continue;\n }\n m = n.match(CSL.NAME_INITIAL_REGEXP);\n if (!m && (!n.match(CSL.STARTSWITH_ROMANESQUE_REGEXP) && n.length > 1 && terminator.match(\"%s\"))) {\n m = n.match(/(.)(.*)/);\n }\n if (m && m[2] && m[3]) {\n m[1] = m[1] + m[2];\n m[2] = \"\";\n }\n if (m && m[1].slice(0, 1) === m[1].slice(0, 1).toUpperCase()) {\n var extra = \"\";\n if (m[2]) {\n var s = \"\";\n lst = m[2].split(\"\");\n for (j = 0, jlen = lst.length; j < jlen; j += 1) {\n var c = lst[j];\n if (c === c.toUpperCase()) {\n s += c;\n } else {\n break;\n }\n }\n if (s.length < m[2].length) {\n extra = CSL.toLocaleLowerCase.call(state, s);\n }\n }\n namelist[i] = m[1] + extra;\n if (i < (ilen - 1)) {\n if (terminator.match(\"%s\")) {\n namelist[i] = terminator.replace(\"%s\", namelist[i]);\n } else {\n if (namelist[i + 1].indexOf(\"-\") > -1) {\n namelist[i + 1] = this.mergetag(state, namelist[i+1].replace(\"-\", \"\"), terminator) + \"-\";\n } else {\n namelist[i + 1] = this.mergetag(state, namelist[i+1], terminator);\n }\n }\n } else {\n if (terminator.match(\"%s\")) {\n namelist[i] = terminator.replace(\"%s\", namelist[i]);\n } else {\n namelist.push(terminator);\n }\n }\n } else if (n.match(CSL.ROMANESQUE_REGEXP) && (!m || !m[3])) {\n namelist[i] = \" \" + n;\n }\n }\n var ret = namelist.join(\"\");\n ret = ret.replace(/[\\u0009\\u000a\\u000b\\u000c\\u000d\\u0020\\ufeff\\u00a0]+$/,\"\").replace(/\\s*\\-\\s*/g, \"-\").replace(/[\\u0009\\u000a\\u000b\\u000c\\u000d\\u0020]+/g, \" \");\n return ret;\n};\n\nCSL.Util.Names.getRawName = function (name) {\n var ret = [];\n if (name.literal) {\n ret.push(name.literal);\n } else {\n if (name.given) {\n ret.push(name.given);\n }\n if (name.family) {\n ret.push(name.family);\n }\n }\n return ret.join(\" \");\n};\n\n/*global CSL: true */\n\n/**\n * Date mangling functions.\n * @namespace Date construction utilities\n */\nCSL.Util.Dates = {};\n\n/**\n * Year manglers\n * <p>short, long</p>\n */\nCSL.Util.Dates.year = {};\n\n/**\n * Convert year to long form\n * <p>This just passes the number back as a string.</p>\n */\nCSL.Util.Dates.year[\"long\"] = function (state, num) {\n if (!num) {\n if (\"boolean\" === typeof num) {\n num = \"\";\n } else {\n num = 0;\n }\n }\n return num.toString();\n};\n\n/**\n * Crudely convert to Japanese Imperial form.\n * <p>Returns the result as a string.</p>\n */\nCSL.Util.Dates.year.imperial = function (state, num, end) {\n var year = \"\";\n if (!num) {\n if (\"boolean\" === typeof num) {\n num = \"\";\n } else {\n num = 0;\n }\n }\n end = end ? \"_end\" : \"\";\n var month = state.tmp.date_object[\"month\" + end];\n month = month ? \"\"+month : \"1\";\n while (month.length < 2) {\n month = \"0\" + month;\n }\n var day = state.tmp.date_object[\"day\" + end];\n day = day ? \"\"+day : \"1\";\n while (day.length < 2) {\n day = \"0\" + day;\n }\n var date = parseInt(num + month + day, 10);\n var label;\n var offset;\n if (date >= 18680908 && date < 19120730) {\n label = '\\u660e\\u6cbb';\n offset = 1867;\n } else if (date >= 19120730 && date < 19261225) {\n label = '\\u5927\\u6b63';\n offset = 1911;\n } else if (date >= 19261225 && date < 19890108) {\n label = '\\u662d\\u548c';\n offset = 1925;\n } else if (date >= 19890108) {\n label = '\\u5e73\\u6210';\n offset = 1988;\n }\n // This entire \"imperial\" code block should be cut. Scraped input\n // for this will be too ratty to be useful anyway.\n if (label && offset) {\n var normalizedKey = label;\n if (state.sys.normalizeAbbrevsKey) {\n // The first argument does not need to specify the exact variable\n // name.\n normalizedKey = state.sys.normalizeAbbrevsKey(\"number\", label);\n }\n if (!state.transform.abbrevs['default']['number'][normalizedKey]) {\n // loadAbbreviation normally takes an item as fourth argument.\n // It is not available here, \n state.transform.loadAbbreviation('default', \"number\", normalizedKey, null);\n }\n if (state.transform.abbrevs['default']['number'][normalizedKey]) {\n label = state.transform.abbrevs['default']['number'][normalizedKey];\n }\n year = label + (num - offset);\n }\n return year;\n};\n\n/**\n * Convert year to short form\n * <p>Just crops any 4-digit year to the last two digits.</p>\n */\nCSL.Util.Dates.year[\"short\"] = function (state, num) {\n num = num.toString();\n if (num && num.length === 4) {\n return num.substr(2);\n }\n};\n\n\n/**\n * Convert year to short form\n * <p>Just crops any 4-digit year to the last two digits.</p>\n */\nCSL.Util.Dates.year.numeric = function (state, num) {\n var m, pre;\n num = \"\" + num;\n var m = num.match(/([0-9]*)$/);\n if (m) {\n pre = num.slice(0, m[1].length * -1);\n num = m[1];\n } else {\n pre = num;\n num = \"\";\n }\n while (num.length < 4) {\n num = \"0\" + num;\n }\n return (pre + num);\n};\n\n\n/*\n * MONTH manglers\n * normalize\n * long, short, numeric, numeric-leading-zeros\n */\nCSL.Util.Dates.normalizeMonth = function (num, useSeason) {\n var ret;\n if (!num) {\n num = 0;\n }\n num = \"\" + num;\n if (!num.match(/^[0-9]+$/)) {\n num = 0;\n }\n num = parseInt(num, 10);\n if (useSeason) {\n var res = {stub: \"month-\", num: num};\n if (res.num < 1 || res.num > 24) {\n res.num = 0;\n } else {\n while (res.num > 16) {\n res.num = res.num - 4;\n }\n if (res.num > 12) {\n res.stub = \"season-\";\n res.num = res.num - 12;\n }\n }\n ret = res;\n } else {\n if (num < 1 || num > 12) {\n num = 0;\n }\n ret = num;\n }\n return ret;\n};\n\nCSL.Util.Dates.month = {};\n\n/**\n * Convert month to numeric form\n * <p>This just passes the number back as a string.</p>\n */\nCSL.Util.Dates.month.numeric = function (state, num) {\n var num = CSL.Util.Dates.normalizeMonth(num);\n if (!num) {\n num = \"\";\n }\n return num;\n};\n\n/**\n * Convert month to numeric-leading-zeros form\n * <p>This just passes the number back as string padded with zeros.</p>\n */\nCSL.Util.Dates.month[\"numeric-leading-zeros\"] = function (state, num) {\n var num = CSL.Util.Dates.normalizeMonth(num);\n if (!num) {\n num = \"\";\n } else {\n num = \"\" + num;\n while (num.length < 2) {\n num = \"0\" + num;\n }\n }\n return num;\n};\n\n/**\n * Convert month to long form\n * <p>This passes back the month of the locale in long form.</p>\n */\n\n// Gender is not currently used. Is it needed?\n\nCSL.Util.Dates.month[\"long\"] = function (state, num, gender, forceDefaultLocale) {\n var res = CSL.Util.Dates.normalizeMonth(num, true);\n var num = res.num;\n if (!num) {\n num = \"\";\n } else {\n num = \"\" + num;\n while (num.length < 2) {\n num = \"0\" + num;\n }\n num = state.getTerm(res.stub + num, \"long\", 0, 0, false, forceDefaultLocale);\n }\n return num;\n};\n\n/**\n * Convert month to long form\n * <p>This passes back the month of the locale in short form.</p>\n */\n\n// See above.\n\nCSL.Util.Dates.month[\"short\"] = function (state, num, gender, forceDefaultLocale) {\n var res = CSL.Util.Dates.normalizeMonth(num, true);\n var num = res.num;\n if (!num) {\n num = \"\";\n } else {\n num = \"\" + num;\n while (num.length < 2) {\n num = \"0\" + num;\n }\n num = state.getTerm(res.stub + num, \"short\", 0, 0, false, forceDefaultLocale);\n }\n return num;\n};\n\n/*\n * DAY manglers\n * numeric, numeric-leading-zeros, ordinal\n */\nCSL.Util.Dates.day = {};\n\n/**\n * Convert day to numeric form\n * <p>This just passes the number back as a string.</p>\n */\nCSL.Util.Dates.day.numeric = function (state, num) {\n return num.toString();\n};\n\nCSL.Util.Dates.day[\"long\"] = CSL.Util.Dates.day.numeric;\n\n/**\n * Convert day to numeric-leading-zeros form\n * <p>This just passes the number back as a string padded with zeros.</p>\n */\nCSL.Util.Dates.day[\"numeric-leading-zeros\"] = function (state, num) {\n if (!num) {\n num = 0;\n }\n num = num.toString();\n while (num.length < 2) {\n num = \"0\" + num;\n }\n return num.toString();\n};\n\n/**\n * Convert day to ordinal form\n * <p>This will one day pass back the number as a string with the\n * ordinal suffix appropriate to the locale. For the present,\n * it just does what is most of the time right for English.</p>\n */\nCSL.Util.Dates.day.ordinal = function (state, num, gender) {\n return state.fun.ordinalizer.format(num, gender);\n};\n\n/*global CSL: true */\n\n/**\n * Helper functions for constructing sort keys.\n * @namespace Sort key utilities\n */\nCSL.Util.Sort = {};\n\n/**\n * Strip prepositions from a string\n * <p>Used when generating sort keys.</p>\n */\nCSL.Util.Sort.strip_prepositions = function (str) {\n var m;\n if (\"string\" === typeof str) {\n m = str.match(/^(([aA]|[aA][nN]|[tT][hH][eE])\\s+)/);\n }\n if (m) {\n str = str.substr(m[1].length);\n }\n return str;\n};\n\n/*global CSL: true */\n\nCSL.Util.substituteStart = function (state, target) {\n var element_trace, display, bib_first, func, choose_start, if_start, nodetypes;\n func = function (state, Item, item) {\n for (var i = 0, ilen = this.decorations.length; i < ilen; i += 1) {\n if (\"@strip-periods\" === this.decorations[i][0] && \"true\" === this.decorations[i][1]) {\n state.tmp.strip_periods += 1;\n break;\n }\n }\n };\n this.execs.push(func);\n if (this.decorations && state.opt.development_extensions.csl_reverse_lookup_support) {\n this.decorations.reverse();\n this.decorations.push([\"@showid\",\"true\", this.cslid]);\n this.decorations.reverse();\n }\n //\n // Contains body code for both substitute and first-field/remaining-fields\n // formatting.\n //\n\n nodetypes = [\"number\", \"date\", \"names\"];\n if ((\"text\" === this.name && !this.postponed_macro) || nodetypes.indexOf(this.name) > -1) {\n element_trace = function (state, Item, item) {\n if (state.tmp.element_trace.value() === \"author\" || \"names\" === this.name) {\n if (!state.tmp.just_looking && item && item[\"author-only\"] && state.tmp.area !== \"intext\") {\n if (!state.tmp.probably_rendered_something) {\n } else {\n state.tmp.element_trace.push(\"suppress-me\");\n }\n }\n if (!state.tmp.just_looking && item && item[\"suppress-author\"]) {\n if (!state.tmp.probably_rendered_something) {\n state.tmp.element_trace.push(\"suppress-me\");\n }\n }\n }\n else if (\"date\" === this.name) {\n if (!state.tmp.just_looking && item && item[\"author-only\"] && state.tmp.area !== \"intext\") {\n if (state.tmp.probably_rendered_something) {\n state.tmp.element_trace.push(\"suppress-me\");\n }\n }\n /*\n if (!state.tmp.just_looking && item && item[\"suppress-author\"]) {\n if (state.tmp.probably_rendered_something) {\n //state.tmp.element_trace.push(\"suppress-me\");\n }\n }\n */\n } else {\n if (!state.tmp.just_looking && item && item[\"author-only\"] && state.tmp.area !== \"intext\") {\n // XXX can_block_substitute probably is doing nothing here. The value is always true.\n if (!state.tmp.probably_rendered_something && state.tmp.can_block_substitute) {\n } else {\n state.tmp.element_trace.push(\"suppress-me\");\n }\n } else if (item && item[\"suppress-author\"]) {\n state.tmp.element_trace.push(\"do-not-suppress-me\");\n }\n }\n };\n this.execs.push(element_trace);\n }\n display = this.strings.cls;\n this.strings.cls = false;\n if (state.build.render_nesting_level === 0) {\n //\n // The markup formerly known as @bibliography/first\n //\n // Separate second-field-align from the generic display logic.\n // There will be some code replication, but not in the\n // assembled style.\n //\n if (state.build.area === \"bibliography\" && state.bibliography.opt[\"second-field-align\"]) {\n bib_first = new CSL.Token(\"group\", CSL.START);\n bib_first.decorations = [[\"@display\", \"left-margin\"]];\n func = function (state, Item) {\n if (!state.tmp.render_seen) {\n bib_first.strings.first_blob = Item.id;\n state.output.startTag(\"bib_first\", bib_first);\n }\n };\n bib_first.execs.push(func);\n target.push(bib_first);\n } else if (CSL.DISPLAY_CLASSES.indexOf(display) > -1) {\n bib_first = new CSL.Token(\"group\", CSL.START);\n bib_first.decorations = [[\"@display\", display]];\n func = function (state, Item) {\n bib_first.strings.first_blob = Item.id;\n state.output.startTag(\"bib_first\", bib_first);\n };\n bib_first.execs.push(func);\n target.push(bib_first);\n }\n state.build.cls = display;\n }\n state.build.render_nesting_level += 1;\n // Should this be render_nesting_level, with the increment\n // below? ... ?\n if (state.build.substitute_level.value() === 1) {\n //\n // All top-level elements in a substitute environment get\n // wrapped in conditionals. The substitute_level variable\n // is a stack, because spanned names elements (with their\n // own substitute environments) can be nested inside\n // a substitute environment.\n //\n // (okay, we use conditionals a lot more than that.\n // we slot them in for author-only as well...)\n choose_start = new CSL.Token(\"choose\", CSL.START);\n CSL.Node.choose.build.call(choose_start, state, target);\n if_start = new CSL.Token(\"if\", CSL.START);\n //\n // Set a test of the shadow if token to skip this\n // macro if we have acquired a name value.\n\n // check for variable\n func = function () {\n if (state.tmp.can_substitute.value()) {\n return true;\n }\n return false;\n };\n if_start.tests ? {} : if_start.tests = [];\n if_start.tests.push(func);\n if_start.test = state.fun.match.any(this, state, if_start.tests);\n target.push(if_start);\n }\n\n if (state.sys.variableWrapper\n && this.variables_real\n && this.variables_real.length) {\n\n func = function (state, Item, item) {\n if (!state.tmp.just_looking && !state.tmp.suppress_decorations) {\n // Attach item data and variable names.\n // Do with them what you will.\n var variable_entry = new CSL.Token(\"text\", CSL.START);\n variable_entry.decorations = [[\"@showid\", \"true\"]];\n state.output.startTag(\"variable_entry\", variable_entry);\n var position = null;\n if (item) {\n position = item.position;\n }\n if (!position) {\n position = 0;\n }\n var positionMap = [\n \"first\",\n \"container-subsequent\",\n \"subsequent\",\n \"ibid\",\n \"ibid-with-locator\"\n ];\n var noteNumber = 0;\n if (item && item.noteIndex) {\n noteNumber = item.noteIndex;\n }\n var firstReferenceNoteNumber = 0;\n if (item && item['first-reference-note-number']) {\n firstReferenceNoteNumber = item['first-reference-note-number'];\n }\n var firstContainerReferenceNoteNumber = 0;\n if (item && item['first-container-reference-note-number']) {\n firstContainerReferenceNoteNumber = item['first-container-reference-note-number'];\n }\n var citationNumber = 0;\n // XXX Will this EVER happen?\n if (item && item['citation-number']) {\n citationNumber = item['citation-number'];\n }\n var index = 0;\n if (item && item.index) {\n index = item.index;\n }\n var params = {\n itemData: Item,\n variableNames: this.variables,\n context: state.tmp.area,\n xclass: state.opt.xclass,\n position: positionMap[position],\n \"note-number\": noteNumber,\n \"first-reference-note-number\": firstReferenceNoteNumber,\n \"first-container-reference-note-number\": firstContainerReferenceNoteNumber,\n \"citation-number\": citationNumber,\n \"index\": index,\n \"mode\": state.opt.mode\n };\n state.output.current.value().params = params;\n }\n };\n this.execs.push(func);\n }\n};\n\n\nCSL.Util.substituteEnd = function (state, target) {\n var func, bib_first_end, bib_other, if_end, choose_end, author_substitute, str;\n\n if (state.sys.variableWrapper\n && (this.hasVariable || (this.variables_real && this.variables_real.length))) {\n \n func = function (state) {\n if (!state.tmp.just_looking && !state.tmp.suppress_decorations) {\n state.output.endTag(\"variable_entry\");\n }\n };\n this.execs.push(func);\n }\n\n func = function (state) {\n for (var i = 0, ilen = this.decorations.length; i < ilen; i += 1) {\n if (\"@strip-periods\" === this.decorations[i][0] && \"true\" === this.decorations[i][1]) {\n state.tmp.strip_periods += -1;\n break;\n }\n }\n };\n this.execs.push(func);\n\n state.build.render_nesting_level += -1;\n if (state.build.render_nesting_level === 0) {\n if (state.build.cls) {\n func = function (state) {\n state.output.endTag(\"bib_first\");\n };\n this.execs.push(func);\n state.build.cls = false;\n } else if (state.build.area === \"bibliography\" && state.bibliography.opt[\"second-field-align\"]) {\n bib_first_end = new CSL.Token(\"group\", CSL.END);\n // first func end\n func = function (state) {\n if (!state.tmp.render_seen) {\n state.output.endTag(\"bib_first\"); // closes bib_first\n }\n };\n bib_first_end.execs.push(func);\n target.push(bib_first_end);\n bib_other = new CSL.Token(\"group\", CSL.START);\n bib_other.decorations = [[\"@display\", \"right-inline\"]];\n func = function (state) {\n if (!state.tmp.render_seen) {\n state.tmp.render_seen = true;\n state.output.startTag(\"bib_other\", bib_other);\n }\n };\n bib_other.execs.push(func);\n target.push(bib_other);\n }\n }\n if (state.build.substitute_level.value() === 1) {\n if_end = new CSL.Token(\"if\", CSL.END);\n target.push(if_end);\n choose_end = new CSL.Token(\"choose\", CSL.END);\n CSL.Node.choose.build.call(choose_end, state, target);\n }\n\n if (\"names\" === this.name || (\"text\" === this.name && this.variables_real !== \"title\")) {\n author_substitute = new CSL.Token(\"text\", CSL.SINGLETON);\n var substitution_name = this.name;\n func = function (state, Item) {\n if (state.tmp.area !== \"bibliography\") {\n return;\n }\n if (\"string\" !== typeof state.bibliography.opt[\"subsequent-author-substitute\"]) {\n return;\n }\n if (this.variables_real && !Item[this.variables_real]) {\n return;\n }\n // The logic of these two is not obvious. The effect is to enable placeholder substitution\n // on a text macro name substitution, without printing both the text macro AND the placeholder.\n // See https://forums.zotero.org/discussion/comment/350407\n if (this.variables_real && substitution_name === \"names\") {\n return;\n }\n\n var subrule = state.bibliography.opt[\"subsequent-author-substitute-rule\"];\n var i, ilen;\n //var text_esc = CSL.getSafeEscape(state);\n var printing = !state.tmp.suppress_decorations;\n if (printing && state.tmp.subsequent_author_substitute_ok) {\n if (state.tmp.rendered_name) {\n if (\"partial-each\" === subrule || \"partial-first\" === subrule) {\n var dosub = true;\n var rendered_name = [];\n // This is a wee bit risky, as we're assuming that the name\n // children and the list of stringified names are congruent.\n // That *should* always be true, but you never know.\n for (i = 0, ilen = state.tmp.name_node.children.length; i < ilen; i += 1) {\n var name = state.tmp.rendered_name[i];\n if (dosub\n && state.tmp.last_rendered_name && state.tmp.last_rendered_name.length > (i - 1)\n && name && !name.localeCompare(state.tmp.last_rendered_name[i])) {\n str = new CSL.Blob(state[state.tmp.area].opt[\"subsequent-author-substitute\"]);\n state.tmp.name_node.children[i].blobs = [str];\n if (\"partial-first\" === subrule) {\n dosub = false;\n }\n } else {\n dosub = false;\n }\n rendered_name.push(name);\n }\n // might want to slice this?\n state.tmp.last_rendered_name = rendered_name;\n } else if (\"complete-each\" === subrule) {\n var rendered_name = state.tmp.rendered_name.join(\",\");\n if (rendered_name) {\n if (state.tmp.last_rendered_name && !rendered_name.localeCompare(state.tmp.last_rendered_name)) {\n for (i = 0, ilen = state.tmp.name_node.children.length; i < ilen; i += 1) {\n str = new CSL.Blob(state[state.tmp.area].opt[\"subsequent-author-substitute\"]);\n state.tmp.name_node.children[i].blobs = [str];\n }\n }\n state.tmp.last_rendered_name = rendered_name;\n }\n } else {\n var rendered_name = state.tmp.rendered_name.join(\",\");\n if (rendered_name) {\n if (state.tmp.last_rendered_name && !rendered_name.localeCompare(state.tmp.last_rendered_name)) {\n str = new CSL.Blob(state[state.tmp.area].opt[\"subsequent-author-substitute\"]);\n if (state.tmp.label_blob) {\n state.tmp.name_node.top.blobs = [str,state.tmp.label_blob];\n } else if (state.tmp.name_node.top.blobs.length) {\n state.tmp.name_node.top.blobs[0].blobs = [str];\n } else {\n state.tmp.name_node.top.blobs = [str];\n }\n state.tmp.substituted_variable = substitution_name;\n }\n state.tmp.last_rendered_name = rendered_name;\n }\n }\n state.tmp.subsequent_author_substitute_ok = false;\n }\n }\n };\n this.execs.push(func);\n }\n\n if ((\"text\" === this.name && !this.postponed_macro) || [\"number\", \"date\", \"names\"].indexOf(this.name) > -1) {\n // element trace\n func = function (state, Item) {\n // element_trace is a mess, but it's trying to do something simple.\n // A queue append is done, and element_trace.value() returns \"suppress-me\"\n // the append is aborted. That's it.\n // It seems only to be used on numeric elements of numeric styles ATM.\n // If used only for that purpose, it could be greatly simplified.\n // If cleaned up, it could do more interesting things, like control\n // the suppression of names set later than first position.\n if (state.tmp.element_trace.mystack.length>1) {\n state.tmp.element_trace.pop();\n }\n };\n this.execs.push(func);\n }\n};\n\n/*global CSL: true */\n\nCSL.Util.padding = function (num) {\n var m = num.match(/\\s*(-{0,1}[0-9]+)/);\n if (m) {\n num = parseInt(m[1], 10);\n if (num < 0) {\n num = 99999999999999999999 + num;\n }\n num = \"\" + num;\n while (num.length < 20) {\n num = \"0\" + num;\n }\n }\n return num;\n};\n\nCSL.Util.LongOrdinalizer = function () {};\n\nCSL.Util.LongOrdinalizer.prototype.init = function (state) {\n this.state = state;\n};\n\nCSL.Util.LongOrdinalizer.prototype.format = function (num, gender) {\n if (num < 10) {\n num = \"0\" + num;\n }\n // Argument true means \"loose\".\n var ret = CSL.Engine.getField(\n CSL.LOOSE, \n this.state.locale[this.state.opt.lang].terms,\n \"long-ordinal-\" + num,\n \"long\", \n 0, \n gender\n );\n if (!ret) {\n ret = this.state.fun.ordinalizer.format(num, gender);\n }\n // Probably too optimistic -- what if only renders in _sort?\n this.state.tmp.cite_renders_content = true;\n return ret;\n};\n\n\nCSL.Util.Ordinalizer = function (state) {\n this.state = state;\n this.suffixes = {};\n};\n\nCSL.Util.Ordinalizer.prototype.init = function () {\n if (!this.suffixes[this.state.opt.lang]) {\n this.suffixes[this.state.opt.lang] = {};\n for (var i = 0, ilen = 3; i < ilen; i += 1) {\n var gender = [undefined, \"masculine\", \"feminine\"][i];\n this.suffixes[this.state.opt.lang][gender] = [];\n for (var j = 1; j < 5; j += 1) {\n var ordinal = this.state.getTerm(\"ordinal-0\" + j, \"long\", false, gender);\n if (\"undefined\" === typeof ordinal) {\n delete this.suffixes[this.state.opt.lang][gender];\n break;\n }\n this.suffixes[this.state.opt.lang][gender].push(ordinal);\n }\n }\n }\n};\n\nCSL.Util.Ordinalizer.prototype.format = function (num, gender) {\n var str;\n num = parseInt(num, 10);\n str = \"\" + num;\n var suffix = \"\";\n var trygenders = [];\n if (gender) {\n trygenders.push(gender);\n }\n trygenders.push(\"neuter\");\n if (this.state.locale[this.state.opt.lang].ord[\"1.0.1\"]) {\n suffix = this.state.getTerm(\"ordinal\",false,0,gender);\n var trygender;\n for (var i = 0, ilen = trygenders.length; i < ilen; i += 1) {\n trygender = trygenders[i];\n var ordinfo = this.state.locale[this.state.opt.lang].ord[\"1.0.1\"];\n if (ordinfo[\"whole-number\"][str] && ordinfo[\"whole-number\"][str][trygender]) {\n suffix = this.state.getTerm(this.state.locale[this.state.opt.lang].ord[\"1.0.1\"][\"whole-number\"][str][trygender],false,0,gender);\n } else if (ordinfo[\"last-two-digits\"][str.slice(str.length - 2)] && ordinfo[\"last-two-digits\"][str.slice(str.length - 2)][trygender]) {\n suffix = this.state.getTerm(this.state.locale[this.state.opt.lang].ord[\"1.0.1\"][\"last-two-digits\"][str.slice(str.length - 2)][trygender],false,0,gender);\n } else if (ordinfo[\"last-digit\"][str.slice(str.length - 1)] && ordinfo[\"last-digit\"][str.slice(str.length - 1)][trygender]) {\n suffix = this.state.getTerm(this.state.locale[this.state.opt.lang].ord[\"1.0.1\"][\"last-digit\"][str.slice(str.length - 1)][trygender],false,0,gender);\n }\n if (suffix) {\n break;\n }\n }\n } else {\n if (!gender) {\n // XXX hack to prevent crash on CSL 1.0 styles.\n // Reported by Carles.\n gender = undefined;\n }\n this.state.fun.ordinalizer.init();\n if ((num / 10) % 10 === 1 || (num > 10 && num < 20)) {\n suffix = this.suffixes[this.state.opt.lang][gender][3];\n } else if (num % 10 === 1 && num % 100 !== 11) {\n suffix = this.suffixes[this.state.opt.lang][gender][0];\n } else if (num % 10 === 2 && num % 100 !== 12) {\n suffix = this.suffixes[this.state.opt.lang][gender][1];\n } else if (num % 10 === 3 && num % 100 !== 13) {\n suffix = this.suffixes[this.state.opt.lang][gender][2];\n } else {\n suffix = this.suffixes[this.state.opt.lang][gender][3];\n }\n }\n str = str += suffix;\n return str;\n};\n\nCSL.Util.Romanizer = function () {};\n\nCSL.Util.Romanizer.prototype.format = function (num) {\n var ret, pos, n, numstr, len;\n ret = \"\";\n if (num < 6000) {\n numstr = num.toString().split(\"\");\n numstr.reverse();\n pos = 0;\n n = 0;\n len = numstr.length;\n for (pos = 0; pos < len; pos += 1) {\n n = parseInt(numstr[pos], 10);\n ret = CSL.ROMAN_NUMERALS[pos][n] + ret;\n }\n }\n return ret;\n};\n\n\n/**\n * Create a suffix formed from a list of arbitrary characters of arbitrary length.\n * <p>This is a <i>lot</i> harder than it seems.</p>\n */\nCSL.Util.Suffixator = function (slist) {\n if (!slist) {\n slist = CSL.SUFFIX_CHARS;\n }\n this.slist = slist.split(\",\");\n};\n\n/**\n * The format method.\n * <p>This method is used in generating ranges. Every numeric\n * formatter (of which Suffixator is one) must be an instantiated\n * object with such a \"format\" method.</p>\n */\n\nCSL.Util.Suffixator.prototype.format = function (N) {\n // Many thanks to Avram Lyon for this code, and good\n // riddance to the several functions that it replaces.\n var X;\n N += 1;\n var key = \"\";\n do {\n X = ((N % 26) === 0) ? 26 : (N % 26);\n var key = this.slist[X-1] + key;\n N = (N - X) / 26;\n } while ( N !== 0 );\n return key;\n};\n\n\nCSL.Engine.prototype.processNumber = function (node, ItemObject, variable) {\n //print(\"** processNumber() ItemObject[variable]=\"+ItemObject[variable]);\n var val;\n\n var me = this;\n\n var realVariable = variable;\n variable = (variable === \"page-first\") ? \"page\" : variable;\n\n var fullformAnd = \",\\\\s+and\\\\s+|\\\\s+and\\\\s+\";\n if (this.opt.lang.slice(0, 2) !== \"en\") {\n fullformAnd += \"|,\\\\s+\" + this.getTerm(\"and\") + \"\\\\s+|\\\\s+\" + this.getTerm(\"and\") + \"\\\\s+\";\n }\n var symbolAnd = \"\\\\s*&\\\\s*\";\n var andRex = new RegExp(\"^\" + symbolAnd+ \"$\");\n var joinerMatchRex = new RegExp(\"(\" + symbolAnd + \"|\" + fullformAnd + \"|;\\\\s+|,\\\\s+|\\\\s*\\\\\\\\*[\\\\-\\\\u2013]+\\\\s*)\", \"g\");\n var joinerSplitRex = new RegExp(\"(?:\" + symbolAnd + \"|\" + fullformAnd + \"|;\\\\s+|,\\\\s+|\\\\s*\\\\\\\\*[\\\\-\\\\u2013]+\\\\s*)\");\n\n // This guesses whether the symbol form is defined or not.\n // It's the best we can do, because when locales are built, all of the\n // holes are filled explictly with fallback values: the symbol form is never undefined.\n var localeAnd = this.getTerm(\"and\");\n var localeAmpersand = this.getTerm(\"and\", \"symbol\");\n if (localeAnd === localeAmpersand) {\n localeAmpersand = \"&\";\n }\n\n // XXXX shadow_numbers should carry an array of objects with\n // XXXX full data for each. The test of a number should be\n // XXXX a separate function, possibly supported by a splitter\n // XXXX method also used here. Keep code for each action in one place,\n // XXXX to prevent debugging from becoming a nightmare.\n\n // The capture pattern below would apply affixes to all sub-elements,\n // which is not what we want. Sub-elements should nest within, or\n // affixes should be edited. The latter is probably easier to handle.\n \n // values = [\n // {\n // label: \"sec.\",\n // label-form: \"plural\",\n // value: 100,\n // styling: [object],\n // numeric: true\n // joiningSuffix: \" & \",\n // },\n // {\n // label: \"sec.\",\n // label-form: \"none\",\n // value: 103,\n // styling: [object],\n // numeric: true,\n // joiningSuffix: \"\"\n // }\n // ]\n \n function normalizeFieldValue(str) {\n str = str.trim();\n var m = str.match(/^([^ ]+)/);\n if (m && !CSL.STATUTE_SUBDIV_STRINGS[m[1]]) {\n var embeddedLabel = null;\n if ([\"locator\", \"locator-extra\", \"page\"].indexOf(variable) > -1) {\n if (ItemObject.label) {\n embeddedLabel = CSL.STATUTE_SUBDIV_STRINGS_REVERSE[ItemObject.label];\n } else {\n embeddedLabel = \"p.\";\n }\n } else {\n embeddedLabel = CSL.STATUTE_SUBDIV_STRINGS_REVERSE[variable];\n }\n if (embeddedLabel) {\n str = embeddedLabel + \" \" + str;\n }\n }\n return str;\n }\n \n\n function composeNumberInfo(origLabel, label, val, joiningSuffix, parsePosition) {\n joiningSuffix = joiningSuffix ? joiningSuffix : \"\";\n var info = {};\n\n if (!label && !CSL.STATUTE_SUBDIV_STRINGS_REVERSE[variable]) {\n label = \"var:\"+ variable;\n }\n\n if (label) {\n var m = label.match(/(\\s*)([^\\s]+)(\\s*)/);\n if (realVariable === \"page\" && parsePosition === 0 && [\"p.\", \"pp.\"].indexOf(m[2]) === -1) {\n info.gotosleepability = true;\n info.labelVisibility = true;\n } else {\n info.labelVisibility = false;\n }\n info.label = m[2];\n info.origLabel = origLabel;\n info.labelSuffix = m[3] ? m[3] : \"\";\n info.plural = 0;\n }\n \n var m = val.match(/^([0-9]*[a-zA-Z]+0*)?([0-9]+(?:[a-zA-Z]*|[-,a-zA-Z]+))$/);\n //var m = val.match(/^([0-9]*[a-zA-Z]0*)([0-9]+(?:[a-zA-Z]*|[-,a-zA-Z]+))$/);\n if (m) {\n info.particle = m[1] ? m[1] : \"\";\n info.value = m[2];\n } else {\n info.particle = \"\";\n info.value = val;\n }\n info.joiningSuffix = joiningSuffix.replace(/\\s*-\\s*/, \"-\");\n return info;\n }\n\n function fixupSubsections(elems) {\n // This catches things like p. 12a-c, recombining content to yield\n // numeric true despite the hyphen.\n for (var i=elems.length-2;i>-1;i-=2) {\n if (elems[i] === \"-\"\n && elems[i-1].match(/^(?:(?:[a-z]|[a-z][a-z]|[a-z][a-z][a-z]|[a-z][a-z][a-z][a-z])\\. *)*[0-9]+[,a-zA-Z]+$/)\n && elems[i+1].match(/^[,a-zA-Z]+$/)) {\n elems[i-1] = elems.slice(i-1,i+2).join(\"\");\n elems = elems.slice(0,i).concat(elems.slice(i+2));\n }\n }\n return elems;\n }\n\n function parseString(str, defaultLabel) {\n defaultLabel = defaultLabel ? defaultLabel : \"\";\n \n str = normalizeFieldValue(str, defaultLabel);\n\n var jmrex, jsrex, mystr;\n if (\"page\" === variable) {\n if (str.indexOf(\"\\u2013\") > -1) {\n str = str.replace(/\\u2013/g, \"-\");\n }\n }\n if (str.indexOf(\"\\\\-\") > -1) {\n jmrex = new RegExp(joinerMatchRex.source.replace(\"\\\\-\", \"\"));\n jsrex = new RegExp(joinerSplitRex.source.replace(\"\\\\-\", \"\"));\n var lst = str.split(\"\\\\-\");\n for (var i=0,ilen=lst.length;i<ilen;i++) {\n lst[i] = lst[i].replace(/\\-/g, \"\\u2013\");\n }\n mystr = lst.join(\"\\\\-\");\n mystr = mystr.replace(/\\\\/g, \"\");\n } else {\n jmrex = joinerMatchRex;\n jsrex = joinerSplitRex;\n mystr = str;\n }\n // jmrex = joinerMatchRex;\n // jsrex = joinerSplitRex;\n \n // Split chunks and collate delimiters.\n var elems = [];\n var m = mystr.match(jmrex);\n if (m) {\n var lst = mystr.split(jsrex);\n for (var i=0, ilen=m.length; i<ilen; i++) {\n if (m[i].match(andRex)) {\n if (lst[i].match(/[a-zA-Z]$/) && lst[i].match(/^[a-zA-Z]/)) {\n m[i] = localeAmpersand;\n } else {\n m[i] = \" \" + localeAmpersand + \" \";\n }\n }\n }\n var recombine = false;\n for (var i in lst) {\n if ((\"\" + lst[i]).replace(/^[a-z]\\.\\s+/, \"\").match(/[^\\s0-9ivxlcmIVXLCM]/)) {\n //recombine = true;\n break;\n }\n }\n if (recombine) {\n elems = [mystr];\n } else {\n for (var i=0,ilen=lst.length-1; i<ilen; i++) {\n elems.push(lst[i]);\n elems.push(m[i]);\n }\n elems.push(lst[lst.length-1]);\n //print(\"ELEMS: \"+elems);\n elems = fixupSubsections(elems);\n //print(\" fixup: \"+elems);\n }\n } else {\n var elems = [mystr];\n }\n // Split elements within each chunk build list of value objects.\n var values = [];\n var label = defaultLabel;\n var origLabel = \"\";\n for (var i=0,ilen=elems.length;i<ilen;i += 2) {\n \n // AHA! HERE'S THE CULPRIT!!!\n // Words up to four characters are treated as honorary short-form labels.\n // Some valid labels are longer than four chars, so we stir those in explicitly\n \n var m = elems[i].match(/((?:^| )(?:[a-z]|[a-z][a-z]|[a-z][a-z][a-z]|[a-z][a-z][a-z][a-z]|subpara|subch|amend|bibliog|annot|illus|princ|intro|sched|subdiv|subsec)(?:\\.| ) *)/g);\n if (m) {\n var lst = elems[i].split(/(?:(?:^| )(?:[a-z]|[a-z][a-z]|[a-z][a-z][a-z]|[a-z][a-z][a-z][a-z]|subpara|subch|amend|bibliog|annot|illus|princ|intro|sched|subdiv|subsec)(?:\\.| ) *)/);\n // Head off disaster by merging parsed labels on non-numeric values into content\n for (var j=lst.length-1;j>0;j--) {\n if (lst[j-1] && (!lst[j].match(/^[0-9]+([-;,:a-zA-Z]*)$/) || !lst[j-1].match(/^[0-9]+([-;,:a-zA-Z]*)$/))) {\n lst[j-1] = lst[j-1] + m[j-1] + lst[j];\n lst = lst.slice(0,j).concat(lst.slice(j+1));\n m = m.slice(0,j-1).concat(m.slice(j));\n }\n }\n // merge bad leading label into content\n if (m.length > 0) {\n var slug = m[0].trim();\n var notAlabel = !CSL.STATUTE_SUBDIV_STRINGS[slug]\n || \"undefined\" === typeof me.getTerm(CSL.STATUTE_SUBDIV_STRINGS[slug])\n || ([\"locator\", \"number\", \"locator-extra\", \"page\"].indexOf(variable) === -1 && CSL.STATUTE_SUBDIV_STRINGS[slug] !== variable);\n if (notAlabel) {\n if (i === 0) {\n m = m.slice(1);\n lst[0] = lst[0] + \" \" + slug + \" \" + lst[1];\n lst = lst.slice(0,1).concat(lst.slice(2));\n }\n } else {\n origLabel = slug;\n }\n }\n\n for (var j=0,jlen=lst.length; j<jlen; j++) {\n if (lst[j] || j === (lst.length-1)) {\n var filteredOrigLabel;\n label = m[j-1] ? m[j-1] : label;\n if (origLabel === label.trim()) {\n filteredOrigLabel = \"\";\n } else {\n filteredOrigLabel = origLabel;\n }\n //var origLabel = j > 1 ? m[j-1] : \"\";\n mystr = lst[j] ? lst[j].trim() : \"\";\n if (j === (lst.length-1)) {\n values.push(composeNumberInfo(filteredOrigLabel, label, mystr, elems[i+1], i));\n } else {\n values.push(composeNumberInfo(filteredOrigLabel, label, mystr, null, i));\n }\n }\n }\n } else {\n var filteredOrigLabel;\n if (origLabel === label.trim()) {\n filteredOrigLabel = \"\";\n } else {\n filteredOrigLabel = origLabel;\n }\n values.push(composeNumberInfo(filteredOrigLabel, label, elems[i], elems[i+1]));\n }\n }\n return values;\n }\n\n function setSpaces(values) {\n // Add space joins (is this really right?)\n for (var i=0,ilen=values.length-1;i<ilen;i++) {\n if (!values[i].joiningSuffix && values[i+1].label) {\n values[i].joiningSuffix = \" \";\n }\n }\n }\n\n function fixNumericAndCount(values, i, currentLabelInfo) {\n var master = values[currentLabelInfo.pos];\n var val = values[i].value;\n var isEscapedHyphen = master.joiningSuffix === \"\\\\-\";\n if (val.particle && val.particle !== master.particle) {\n currentLabelInfo.collapsible = false;\n }\n var mVal = val.match(/^[0-9]+([-,:a-zA-Z]*)$/);\n var mCurrentLabel = master.value.match(/^(?:[0-9]+|[ixv]+)([-,:a-zA-Z]*|\\-[\\-0-9]+)$/);\n if (!val || !mVal || !mCurrentLabel || isEscapedHyphen) {\n currentLabelInfo.collapsible = false;\n if (!val || !mCurrentLabel) {\n currentLabelInfo.numeric = false;\n }\n if (isEscapedHyphen) {\n currentLabelInfo.count--;\n }\n }\n if ((mVal && mVal[1]) || (mCurrentLabel && mCurrentLabel[1])) {\n currentLabelInfo.collapsible = false;\n }\n if (undefined === values[i].collapsible) {\n for (var j=i,jlen=i+currentLabelInfo.count;j<jlen;j++) {\n if (isNaN(parseInt(values[j].value)) && !values[j].value.match(/^[ivxlcmIVXLCM]+$/)) {\n values[j].collapsible = false;\n } else {\n values[j].collapsible = true;\n }\n }\n currentLabelInfo.collapsible = values[i].collapsible;\n }\n var isCollapsible = currentLabelInfo.collapsible;\n for (var j=currentLabelInfo.pos,jlen=(currentLabelInfo.pos + currentLabelInfo.count); j<jlen; j++) {\n if (currentLabelInfo.count > 1 && isCollapsible) {\n values[j].plural = 1;\n }\n values[j].numeric = currentLabelInfo.numeric;\n values[j].collapsible = currentLabelInfo.collapsible;\n }\n }\n\n function fixLabelVisibility(values, groupStartPos, currentLabelInfo) {\n if (currentLabelInfo.label.slice(0, 4) !== \"var:\") {\n if (currentLabelInfo.pos === 0) {\n if ([\"locator\", \"number\", \"locator-extra\", \"page\"].indexOf(variable) > -1) {\n // Actually, shouldn't we do this always?\n if (\"undefined\" === typeof me.getTerm(CSL.STATUTE_SUBDIV_STRINGS[currentLabelInfo.label])) {\n values[currentLabelInfo.pos].labelVisibility = true;\n }\n }\n // If there is an explicit\n // label embedded at the start of a field that\n // does not match the context, it should be\n // marked for rendering.\n if ([\"locator\", \"number\", \"locator-extra\", \"page\"].indexOf(variable) === -1) {\n if (CSL.STATUTE_SUBDIV_STRINGS[currentLabelInfo.label] !== variable) {\n values[0].labelVisibility = true;\n }\n }\n } else {\n // Also, mark initial mid-field labels for\n // rendering.\n //if (values[i-1].label !== values[i].label && currentLabelInfo.label.slice(0, 4) !== \"var:\") {\n values[currentLabelInfo.pos].labelVisibility = true;\n //}\n }\n }\n }\n \n function setPluralsAndNumerics(values) {\n if (values.length === 0) {\n return;\n }\n var groupStartPos = 0;\n var groupCount = 1;\n \n for (var i=1,ilen=values.length;i<ilen;i++) {\n var lastVal = values[i-1];\n var thisVal = values[i];\n if (lastVal.label === thisVal.label && lastVal.particle === lastVal.particle) {\n groupCount++;\n } else {\n var currentLabelInfo = JSON.parse(JSON.stringify(values[groupStartPos]));\n currentLabelInfo.pos = groupStartPos;\n currentLabelInfo.count = groupCount;\n currentLabelInfo.numeric = true;\n fixNumericAndCount(values, groupStartPos, currentLabelInfo);\n if (lastVal.label !== thisVal.label) {\n fixLabelVisibility(values, groupStartPos, currentLabelInfo);\n }\n groupStartPos = i;\n groupCount = 1;\n }\n }\n // Not sure why this repetition is necessary?\n var currentLabelInfo = JSON.parse(JSON.stringify(values[groupStartPos]));\n currentLabelInfo.pos = groupStartPos;\n currentLabelInfo.count = groupCount;\n currentLabelInfo.numeric = true;\n fixNumericAndCount(values, groupStartPos, currentLabelInfo);\n fixLabelVisibility(values, groupStartPos, currentLabelInfo);\n if (values.length && values[0].numeric && variable.slice(0, 10) === \"number-of-\") {\n if (parseInt(ItemObject[realVariable], 10) > 1) {\n values[0].plural = 1;\n }\n }\n } \n\n function stripHyphenBackslash(joiningSuffix) {\n return joiningSuffix.replace(\"\\\\-\", \"-\");\n }\n\n function setStyling(values) {\n var masterNode = CSL.Util.cloneToken(node);\n var masterStyling = new CSL.Token();\n if (!me.tmp.just_looking) {\n // Per discussion @ https://discourse.citationstyles.org/t/formatting-attributes-and-hyphen/1518\n masterStyling.decorations = masterNode.decorations;\n masterNode.decorations = [];\n //for (var j=masterNode.decorations.length-1;j>-1;j--) {\n // if (masterNode.decorations[j][0] === \"@quotes\") {\n // // Add to styling\n // masterStyling.decorations = masterStyling.decorations.concat(masterNode.decorations.slice(j, j+1));\n // // Remove from node\n // masterNode.decorations = masterNode.decorations.slice(0, j).concat(masterNode.decorations.slice(j+1));\n // }\n //}\n masterStyling.strings.prefix = masterNode.strings.prefix;\n masterNode.strings.prefix = \"\";\n masterStyling.strings.suffix = masterNode.strings.suffix;\n masterNode.strings.suffix = \"\";\n }\n var masterLabel = values.length ? values[0].label : null;\n if (values.length) {\n for (var i=0,ilen=values.length; i<ilen; i++) {\n var val = values[i];\n // Clone node, make styling parameters on each instance sane.\n var newnode = CSL.Util.cloneToken(masterNode);\n newnode.gender = node.gender;\n if (masterLabel === val.label) {\n newnode.formatter = node.formatter;\n }\n if (val.numeric) {\n newnode.successor_prefix = val.successor_prefix;\n }\n newnode.strings.suffix = newnode.strings.suffix + stripHyphenBackslash(val.joiningSuffix);\n val.styling = newnode;\n }\n if (!me.tmp.just_looking) {\n if (values[0].value.slice(0,1) === \"\\\"\" && values[values.length-1].value.slice(-1) === \"\\\"\") {\n values[0].value = values[0].value.slice(1);\n values[values.length-1].value = values[values.length-1].value.slice(0,-1);\n masterStyling.decorations.push([\"@quotes\", true]);\n }\n }\n }\n return masterStyling;\n }\n\n function checkTerm(variable, val) {\n var ret = true;\n if ([\"locator\", \"locator-extra\", \"page\"].indexOf(variable) > -1) {\n var label;\n if (val.origLabel) {\n label = val.origLabel;\n } else {\n label = val.label;\n }\n ret = !!me.getTerm(CSL.STATUTE_SUBDIV_STRINGS[label]);\n }\n return ret;\n }\n\n function checkPage(variable, val) {\n return \"page\" === variable\n || ([\"locator\", \"locator-extra\"].indexOf(variable) > -1 && ([\"p.\"].indexOf(val.label) > -1 || [\"p.\"].indexOf(val.origLabel) > -1));\n }\n \n function fixupRangeDelimiter(variable, val, rangeDelimiter, isNumeric) {\n var isPage = checkPage(variable, val);\n var hasTerm = checkTerm(variable, val);\n if (hasTerm && rangeDelimiter === \"-\") {\n if (isNumeric) {\n if (isPage || [\"locator\", \"locator-extra\", \"issue\", \"volume\", \"edition\", \"number\"].indexOf(variable) > -1) {\n rangeDelimiter = me.getTerm(\"page-range-delimiter\");\n if (!rangeDelimiter) {\n rangeDelimiter = \"\\u2013\";\n }\n }\n if (variable === \"collection-number\") {\n rangeDelimiter = me.getTerm(\"year-range-delimiter\");\n if (!rangeDelimiter) {\n rangeDelimiter = \"\\u2013\";\n }\n }\n }\n }\n //if (rangeDelimiter === \"\\\\-\") {\n // rangeDelimiter = \"-\";\n //}\n return rangeDelimiter;\n }\n\n function manglePageNumbers(values, i, currentInfo) {\n if (i<1) {\n return;\n }\n if (currentInfo.count !== 2) {\n return;\n }\n if (values[i-1].particle !== values[i].particle) {\n return;\n }\n if (values[i-1].joiningSuffix !== \"-\") {\n currentInfo.count = 1;\n return;\n }\n if (!me.opt[\"page-range-format\"] && (parseInt(values[i-1].value, 10) > parseInt(values[i].value, 10))) {\n values[i-1].joiningSuffix = fixupRangeDelimiter(variable, values[i], values[i-1].joiningSuffix, true);\n return;\n }\n var val = values[i];\n\n var isPage = checkPage(variable, val);\n var str;\n if (isPage && !isNaN(parseInt(values[i-1].value)) && !isNaN(parseInt(values[i].value))) {\n str = values[i-1].particle + values[i-1].value + \" - \" + values[i].particle + values[i].value;\n str = me.fun.page_mangler(str);\n } else {\n // if ((\"\" + values[i-1].value).match(/[0-9]$/) && (\"\" + values[i].value).match(/^[0-9]/)) {\n if ((\"\" + values[i-1].value).match(/^([0-9]+|[ivxlcmIVXLCM]+)$/) && (\"\" + values[i].value).match(/^([0-9]+|[ivxlcmIVXLCM]+)$/)) {\n values[i-1].joiningSuffix = me.getTerm(\"page-range-delimiter\");\n }\n str = values[i-1].value + stripHyphenBackslash(values[i-1].joiningSuffix) + values[i].value;\n }\n var m = str.match(/^((?:[0-9]*[a-zA-Z]+0*))?([0-9]+[a-z]*)(\\s*[^0-9]+\\s*)([-,a-zA-Z]?0*)([0-9]+[a-z]*)$/);\n // var m = str.match(/^((?:[0-9]*[a-zA-Z]+0*))?([0-9]+[a-z]*)(\\s*[^0-9]+\\s*)([-,a-zA-Z]?0*)([0-9]+[a-z]*)$/);\n if (m) {\n var rangeDelimiter = m[3];\n rangeDelimiter = fixupRangeDelimiter(variable, val, rangeDelimiter, values[i].numeric);\n values[i-1].particle = m[1];\n values[i-1].value = m[2];\n values[i-1].joiningSuffix = rangeDelimiter;\n values[i].particle = m[4];\n values[i].value = m[5];\n }\n currentInfo.count = 0;\n }\n \n function fixRanges(values) {\n\n if (!node) {\n return;\n }\n if ([\"page\", \"chapter-number\", \"collection-number\", \"edition\", \"issue\", \"number\", \"number-of-pages\", \"number-of-volumes\", \"volume\", \"locator\", \"locator-extra\"].indexOf(variable) === -1) {\n return;\n }\n\n var currentInfo = {\n count: 0,\n label: null,\n lastHadRangeDelimiter: false\n };\n\n for (var i=0,ilen=values.length; i<ilen; i++) {\n var val = values[i];\n if (!val.collapsible) {\n currentInfo.count = 0;\n currentInfo.label = null;\n var isNumeric = val.numeric;\n val.joiningSuffix = fixupRangeDelimiter(variable, val, val.joiningSuffix, isNumeric);\n } else if (currentInfo.label === val.label && val.joiningSuffix === \"-\") {\n // So if there is a hyphen here, and none previous, reset to 1\n currentInfo.count = 1;\n } else if (currentInfo.label === val.label && val.joiningSuffix !== \"-\") {\n // If there is NO hyphen here, count up\n currentInfo.count++;\n if (currentInfo.count === 2) {\n manglePageNumbers(values, i, currentInfo);\n }\n } else if (currentInfo.label !== val.label) {\n // If the label doesn't match and count is 2, process\n currentInfo.label = val.label;\n currentInfo.count = 1;\n } else {\n // Safety belt: label doesn't match and count is some other value, so reset to 1\n // This never happens, though.\n currentInfo.count = 1;\n currentInfo.label = val.label;\n }\n }\n // Finally clear, if needed\n if (currentInfo.count === 2) {\n manglePageNumbers(values, values.length-1, currentInfo);\n }\n }\n\n function setVariableParams(shadow_numbers, realVariable, values) {\n var obj = shadow_numbers[realVariable];\n if (values.length) {\n obj.numeric = values[0].numeric;\n obj.collapsible = values[0].collapsible;\n obj.plural = values[0].plural;\n obj.label = CSL.STATUTE_SUBDIV_STRINGS[values[0].label];\n if (variable === \"number\" && obj.label === \"issue\" && me.getTerm(\"number\")) {\n obj.label = \"number\";\n }\n }\n }\n\n // Split out the labels and values.\n\n // short-circuit if object exists: if numeric, set styling, no other action\n if (node && this.tmp.shadow_numbers[realVariable] && this.tmp.shadow_numbers[realVariable].values.length) {\n var values = this.tmp.shadow_numbers[realVariable].values;\n fixRanges(values);\n //if (!this.tmp.shadow_numbers[variable].masterStyling && !this.tmp.just_looking) {\n this.tmp.shadow_numbers[realVariable].masterStyling = setStyling(values);\n //}\n return;\n }\n\n // info.styling = node;\n\n // This carries value, pluralization and numeric info for use in other contexts.\n // XXX We used to use one set of params for the entire variable value.\n // XXX Now params are set on individual objects, of which there may be several after parsing.\n if (!this.tmp.shadow_numbers[realVariable]) {\n this.tmp.shadow_numbers[realVariable] = {\n values:[]\n };\n }\n //this.tmp.shadow_numbers[variable].values = [];\n //this.tmp.shadow_numbers[variable].plural = 0;\n //this.tmp.shadow_numbers[variable].numeric = false;\n //this.tmp.shadow_numbers[variable].label = false;\n\n if (!ItemObject) {\n return;\n }\n\n // Possibly apply multilingual transform\n var languageRole = CSL.LangPrefsMap[variable];\n if (languageRole) {\n var localeType = this.opt[\"cite-lang-prefs\"][languageRole][0];\n val = this.transform.getTextSubField(ItemObject, realVariable, \"locale-\"+localeType, true);\n val = val.name;\n } else {\n val = ItemObject[realVariable];\n }\n\n if (val && realVariable === \"number\" && ItemObject.type === \"legal_case\") {\n val = val.replace(/[\\\\]*-/g, \"\\\\-\");\n }\n\n // XXX HOLDING THIS\n // Apply short form ONLY if first element tests is-numeric=false\n if (val && this.sys.getAbbreviation) {\n // RefMe bug report: print(\"XX D'oh! (3): \"+num);\n // true as the fourth argument suppresses update of the UI\n\n // No need for this.\n //val = (\"\" + val).replace(/^\\\"/, \"\").replace(/\\\"$/, \"\");\n if (this.sys.normalizeAbbrevsKey) {\n var normval = this.sys.normalizeAbbrevsKey(realVariable, val);\n } else {\n var normval = val;\n }\n var jurisdiction = this.transform.loadAbbreviation(ItemObject.jurisdiction, \"number\", normval, ItemObject.language);\n if (this.transform.abbrevs[jurisdiction].number) {\n if (this.transform.abbrevs[jurisdiction].number[normval]) {\n val = this.transform.abbrevs[jurisdiction].number[normval];\n } else {\n \n // *** This is terrible ***\n \n // Strings rendered via cs:number should not be added to the abbreviations\n // UI unless they test non-numeric. The test happens below.\n if (\"undefined\" !== typeof this.transform.abbrevs[jurisdiction].number[normval]) {\n delete this.transform.abbrevs[jurisdiction].number[normval];\n }\n }\n }\n }\n\n // {\n // label: \"sec.\",\n // labelForm: \"plural\",\n // labelVisibility: true,\n // value: 100,\n // styling: [object],\n // numeric: true\n // joiningSuffix: \" & \",\n // },\n\n // Process only if there is a value.\n if (\"undefined\" !== typeof val && (\"string\" === typeof val || \"number\" === typeof val)) {\n if (\"number\" === typeof val) {\n val = \"\" + val;\n }\n var defaultLabel = CSL.STATUTE_SUBDIV_STRINGS_REVERSE[variable];\n\n if (this.tmp.shadow_numbers[realVariable].values.length === 0) {\n // XXX\n var values = parseString(val, defaultLabel);\n\n setSpaces(values);\n //print(\"setSpaces(): \"+JSON.stringify(values, null, 2));\n\n setPluralsAndNumerics(values);\n //print(\"setPluralsAndNumerics(): \"+JSON.stringify(values, null, 2));\n\n for (var obj of values) {\n if (!obj.numeric) obj.plural = 0;\n }\n this.tmp.shadow_numbers[realVariable].values = values;\n // me.sys.print(JSON.stringify(values))\n\n if (node) {\n fixRanges(values);\n \n this.tmp.shadow_numbers[realVariable].masterStyling = setStyling(values);\n // me.sys.print(\"setStyling(): \"+JSON.stringify(values, null, 2));\n }\n setVariableParams(this.tmp.shadow_numbers, realVariable, values);\n }\n \n // hack in support for non-numeric numerics like \"91 Civ. 5442 (RPP)|91 Civ. 5471\"\n var info = this.tmp.shadow_numbers[realVariable];\n if (variable === \"number\") {\n if (info.values.length === 1 && info.values[0].value.indexOf(\"|\") > -1) {\n info.values[0].value = info.values[0].value.replace(/\\|/g, \", \");\n info.values[0].numeric = true;\n info.values[0].plural = 1;\n info.values[0].collapsible = false;\n info.numeric = true;\n info.plural = 1;\n info.collapsible = false;\n }\n }\n if (info.values.length === 1) {\n if (info.values[0].value.match(/^[0-9]+(?:\\/[0-9]+)+$/)) {\n info.values[0].numeric = true;\n info.values[0].plural = 0;\n info.values[0].collapsible = false;\n info.numeric = true;\n info.plural = 0;\n info.collapsible = false;\n }\n }\n if (variable === \"page\") {\n if (info.values.length > 0) {\n if (info.values[0].gotosleepability) {\n info.labelForm = \"short\";\n }\n }\n }\n //this.sys.print(\"OK \"+JSON.stringify(values, [\"label\", \"origLabel\", \"labelSuffix\", \"particle\", \"collapsible\", \"value\", \"numeric\", \"joiningSuffix\", \"labelVisibility\", \"plural\"], 2));\n }\n};\n\nCSL.Util.outputNumericField = function(state, varname, itemID) {\n\n state.output.openLevel(state.tmp.shadow_numbers[varname].masterStyling);\n var masterStyling = state.tmp.shadow_numbers[varname].masterStyling;\n var nums = state.tmp.shadow_numbers[varname].values;\n var masterLabel = nums.length ? nums[0].label : null;\n var labelForm = state.tmp.shadow_numbers[varname].labelForm;\n var tryStatic = state.tmp.group_context.tip.label_static;\n var embeddedLabelForm;\n if (labelForm) {\n embeddedLabelForm = labelForm;\n } else {\n embeddedLabelForm = \"short\";\n //labelForm = \"short\";\n }\n var labelCapitalizeIfFirst = state.tmp.shadow_numbers[varname].labelCapitalizeIfFirst;\n var labelDecorations = state.tmp.shadow_numbers[varname].labelDecorations;\n var lastLabelName = null;\n\n for (var i=0,ilen=nums.length;i<ilen;i++) {\n var num = nums[i];\n var label = \"\";\n var labelName;\n if (num.label) {\n if ('var:' === num.label.slice(0,4)) {\n labelName = num.label.slice(4);\n } else {\n labelName = CSL.STATUTE_SUBDIV_STRINGS[num.label];\n }\n if (labelName) {\n // Simplify this some day.\n if (num.label === masterLabel) {\n if (tryStatic) {\n label = state.getTerm(labelName, \"static\", num.plural);\n if (label.indexOf(\"%s\") === -1) {\n label = \"\";\n }\n }\n if (!label) {\n label = state.getTerm(labelName, labelForm, num.plural);\n }\n } else {\n if (tryStatic) {\n label = state.getTerm(labelName, \"static\", num.plural);\n if (label.indexOf(\"%s\") === -1) {\n label = \"\";\n }\n }\n if (!label) {\n label = state.getTerm(labelName, embeddedLabelForm, num.plural);\n }\n }\n if (labelCapitalizeIfFirst) {\n label = CSL.Output.Formatters[\"capitalize-first\"](state, label);\n }\n }\n }\n var labelPlaceholderPos = -1;\n if (label) {\n labelPlaceholderPos = label.indexOf(\"%s\");\n }\n var numStyling = CSL.Util.cloneToken(num.styling);\n numStyling.formatter = num.styling.formatter;\n numStyling.type = num.styling.type;\n numStyling.num = num.styling.num;\n numStyling.gender = num.styling.gender;\n \n if (labelPlaceholderPos > 0 && labelPlaceholderPos < (label.length-2)) {\n numStyling.strings.prefix += label.slice(0,labelPlaceholderPos);\n numStyling.strings.suffix = label.slice(labelPlaceholderPos+2) + numStyling.strings.suffix;\n } else if (num.labelVisibility) {\n if (!label) {\n label = num.label;\n labelName = num.label;\n }\n if (labelPlaceholderPos > 0) {\n var prefixLabelStyling = new CSL.Token();\n prefixLabelStyling.decorations = labelDecorations;\n state.output.append(label.slice(0,labelPlaceholderPos), prefixLabelStyling);\n } else if (labelPlaceholderPos === (label.length-2) || labelPlaceholderPos === -1) {\n // And add a trailing delimiter.\n state.output.append(label+num.labelSuffix, \"empty\");\n }\n }\n CSL.UPDATE_GROUP_CONTEXT_CONDITION(state, masterStyling.strings.prefix, null, masterStyling, `${num.particle}${num.value}`);\n if (num.collapsible) {\n var blob;\n if (num.value.match(/^[1-9][0-9]*$/) && Number.isSafeInteger(parseInt(num.value, 10))) {\n blob = new CSL.NumericBlob(state, num.particle, parseInt(num.value, 10), numStyling, itemID);\n } else {\n blob = new CSL.NumericBlob(state, num.particle, num.value, numStyling, itemID);\n }\n if (\"undefined\" === typeof blob.gender) {\n blob.gender = state.locale[state.opt.lang][\"noun-genders\"][varname];\n }\n state.output.append(blob, \"literal\");\n } else {\n state.output.append(num.particle + num.value, numStyling);\n }\n if (labelPlaceholderPos === 0 && labelPlaceholderPos < (label.length-2)) {\n // Only and always if this is the last entry of this label\n if (lastLabelName === null) {\n lastLabelName = labelName;\n }\n if (labelName !== lastLabelName || i === (nums.length-1)) {\n var suffixLabelStyling = new CSL.Token();\n suffixLabelStyling.decorations = labelDecorations;\n state.output.append(label.slice(labelPlaceholderPos+2), suffixLabelStyling);\n }\n }\n lastLabelName = labelName;\n state.tmp.term_predecessor = true;\n }\n state.output.closeLevel();\n};\n\n/*global CSL: true */\n\nCSL.Util.PageRangeMangler = {};\n\nCSL.Util.PageRangeMangler.getFunction = function (state, rangeType) {\n var rangerex, pos, len, stringify, listify, expand, minimize, minimize_internal, chicago15, chicago16, lst, m, b, e, ret, begin, end, ret_func;\n \n var range_delimiter = state.getTerm(rangeType + \"-range-delimiter\");\n\n rangerex = /([0-9]*[a-zA-Z]+0*)?([0-9]+[a-z]*)\\s*(?:\\u2013|-)\\s*([0-9]*[a-zA-Z]+0*)?([0-9]+[a-z]*)/;\n\n stringify = function (lst) {\n len = lst.length;\n for (pos = 1; pos < len; pos += 2) {\n if (\"object\" === typeof lst[pos]) {\n lst[pos] = lst[pos].join(\"\");\n }\n }\n var ret = lst.join(\"\");\n ret = ret.replace(/([^\\\\])\\-/g, \"$1\"+state.getTerm(rangeType + \"-range-delimiter\"));\n return ret;\n };\n\n listify = function (str) {\n var m, lst, ret;\n // Normalized delimiter form, for use in regexps\n var hyphens = \"\\\\s+\\\\-\\\\s+\";\n // Normalize delimiters to hyphen wrapped in single spaces\n var this_range_delimiter = range_delimiter === \"-\" ? \"\" : range_delimiter;\n var delimRex = new RegExp(\"([^\\\\\\\\])[-\" + this_range_delimiter + \"\\\\u2013]\", \"g\");\n str = str.replace(delimRex, \"$1 - \").replace(/\\s+-\\s+/g, \" - \");\n // Workaround for Internet Explorer\n //var rexm = new RegExp(\"((?:[0-9]*[a-zA-Z]+)?[0-9]+\" + hyphens + \"(?:[0-9]*[a-zA-Z]+)?[0-9]+)\", \"g\");\n //var rexlst = new RegExp(\"(?:[0-9]*[a-zA-Z]+)?[0-9]+\" + hyphens + \"(?:[0-9]*[a-zA-Z]+)?[0-9]+\");\n var rexm = new RegExp(\"((?:[0-9]*[a-zA-Z]+0*)?[0-9]+[a-z]*\" + hyphens + \"(?:[0-9]*[a-zA-Z]+0*)?[0-9]+[a-z]*)\", \"g\");\n var rexlst = new RegExp(\"(?:[0-9]*[a-zA-Z]+0*)?[0-9]+[a-z]*\" + hyphens + \"(?:[0-9]*[a-zA-Z]+0*)?[0-9]+[a-z]*\");\n m = str.match(rexm);\n lst = str.split(rexlst);\n if (lst.length === 0) {\n ret = m;\n } else {\n ret = [lst[0]];\n for (pos = 1, len = lst.length; pos < len; pos += 1) {\n ret.push(m[pos - 1].replace(/\\s*\\-\\s*/g, \"-\"));\n ret.push(lst[pos]);\n }\n }\n return ret;\n };\n\n expand = function (str) {\n str = \"\" + str;\n lst = listify(str);\n len = lst.length;\n for (pos = 1; pos < len; pos += 2) {\n m = lst[pos].match(rangerex);\n if (m) {\n if (!m[3] || m[1] === m[3]) {\n if (m[4].length < m[2].length) {\n m[4] = m[2].slice(0, (m[2].length - m[4].length)) + m[4];\n }\n if (parseInt(m[2], 10) < parseInt(m[4], 10)) {\n m[3] = range_delimiter + (m[1] ? m[1] : \"\");\n lst[pos] = m.slice(1);\n }\n }\n }\n if (\"string\" === typeof lst[pos]) {\n lst[pos] = lst[pos].replace(/\\-/g, range_delimiter);\n }\n }\n return lst;\n };\n\n minimize = function (lst, minchars, isyear) {\n len = lst.length;\n for (var i = 1, ilen = lst.length; i < ilen; i += 2) {\n if (\"object\" === typeof lst[i]) {\n lst[i][3] = minimize_internal(lst[i][1], lst[i][3], minchars, isyear);\n if (lst[i][2].slice(1) === lst[i][0]) {\n lst[i][2] = range_delimiter;\n }\n }\n }\n return stringify(lst);\n };\n\n minimize_internal = function (begin, end, minchars, isyear) {\n if (!minchars) {\n minchars = 0;\n }\n b = (\"\" + begin).split(\"\");\n e = (\"\" + end).split(\"\");\n ret = e.slice();\n ret.reverse();\n if (b.length === e.length) {\n for (var i = 0, ilen = b.length; i < ilen; i += 1) {\n if (b[i] === e[i] && ret.length > minchars) {\n ret.pop();\n } else {\n if (minchars && isyear && ret.length === 3) {\n var front = b.slice(0, i);\n front.reverse();\n ret = ret.concat(front);\n }\n break;\n }\n }\n }\n ret.reverse();\n return ret.join(\"\");\n };\n\n chicago15 = function (lst) {\n len = lst.length;\n for (pos = 1; pos < len; pos += 2) {\n if (\"object\" === typeof lst[pos]) {\n m = lst[pos];\n begin = parseInt(m[1], 10);\n end = parseInt(m[3], 10);\n if (begin > 100 && begin % 100 && parseInt((begin / 100), 10) === parseInt((end / 100), 10)) {\n m[3] = \"\" + (end % 100);\n } else if (begin >= 10000) {\n m[3] = \"\" + (end % 1000);\n }\n }\n if (m[2].slice(1) === m[0]) {\n m[2] = range_delimiter;\n }\n }\n return stringify(lst);\n };\n\n chicago16 = function (lst) {\n len = lst.length;\n for (pos = 1; pos < len; pos += 2) {\n if (\"object\" === typeof lst[pos]) {\n m = lst[pos];\n begin = parseInt(m[1], 10);\n end = parseInt(m[3], 10);\n e = \"\" + end;\n if (begin > 100 && begin % 100) {\n for (var i = 2; i < e.length; i++) {\n var divisor = Math.pow(10, i);\n if (Math.floor(begin / divisor) === Math.floor(end / divisor)) {\n m[3] = \"\" + (end % divisor);\n break;\n }\n }\n }\n }\n if (m[2].slice(1) === m[0]) {\n m[2] = range_delimiter;\n }\n }\n return stringify(lst);\n };\n\n //\n // The top-level option handlers.\n //\n var sniff = function (str, func, minchars, isyear) {\n var ret;\n\t\tstr = \"\" + str;\n\t\tvar lst = expand(str);\n var ret = func(lst, minchars, isyear);\n return ret;\n };\n if (!state.opt[rangeType + \"-range-format\"]) {\n ret_func = function (str) {\n //return str.replace(\"-\", \"\\u2013\", \"g\");\n return sniff(str, stringify);\n };\n } else if (state.opt[rangeType + \"-range-format\"] === \"expanded\") {\n ret_func = function (str) {\n return sniff(str, stringify);\n };\n } else if (state.opt[rangeType + \"-range-format\"] === \"minimal\") {\n ret_func = function (str) {\n return sniff(str, minimize);\n };\n } else if (state.opt[rangeType + \"-range-format\"] === \"minimal-two\") {\n ret_func = function (str, isyear) {\n return sniff(str, minimize, 2, isyear);\n };\n } else if (state.opt[rangeType + \"-range-format\"] === \"chicago\") {\n ret_func = function (str) {\n return sniff(str, chicago15);\n };\n } else if (state.opt[rangeType + \"-range-format\"] === \"chicago-15\") {\n ret_func = function (str) {\n return sniff(str, chicago15);\n };\n } else if (state.opt[rangeType + \"-range-format\"] === \"chicago-16\") {\n ret_func = function (str) {\n return sniff(str, chicago16);\n };\n }\n\n return ret_func;\n};\n\n\n/*global CSL: true */\n\n// Use a state machine\n\n// Okay, good!\n// Needs some tweaks:\n// 1. First pass: quotes only\n// Special: Convert all sandwiched single-quote markup to apostrophe\n// 2. Second pass: tags\n\nCSL.Util.FlipFlopper = function(state) {\n \n /**\n * INTERNAL\n */\n\n var _nestingState = [];\n\n var _nestingData = {\n \"<span class=\\\"nocase\\\">\": {\n type: \"nocase\",\n opener: \"<span class=\\\"nocase\\\">\",\n closer: \"</span>\",\n attr: null,\n outer: null,\n flipflop: null\n },\n \"<span class=\\\"nodecor\\\">\": {\n type: \"nodecor\",\n opener: \"<span class=\\\"nodecor\\\">\",\n closer: \"</span>\",\n attr: \"@class\",\n outer: \"nodecor\",\n flipflop: {\n \"nodecor\": \"nodecor\"\n }\n },\n \"<span style=\\\"font-variant:small-caps;\\\">\": {\n type: \"tag\",\n opener: \"<span style=\\\"font-variant:small-caps;\\\">\",\n closer: \"</span>\",\n attr: \"@font-variant\",\n outer: \"small-caps\",\n flipflop: {\n \"small-caps\": \"normal\",\n \"normal\": \"small-caps\"\n }\n },\n \"<sc>\": {\n type: \"tag\",\n opener: \"<sc>\",\n closer: \"</sc>\",\n attr: \"@font-variant\",\n outer: \"small-caps\",\n flipflop: {\n \"small-caps\": \"normal\",\n \"normal\": \"small-caps\"\n }\n },\n \"<i>\": {\n type: \"tag\",\n opener: \"<i>\",\n closer: \"</i>\",\n attr: \"@font-style\",\n outer: \"italic\",\n flipflop: {\n \"italic\": \"normal\",\n \"normal\": \"italic\"\n }\n },\n \"<b>\": {\n type: \"tag\",\n opener: \"<b>\",\n closer: \"</b>\",\n attr: \"@font-weight\",\n outer: \"bold\",\n flipflop: {\n \"bold\": \"normal\",\n \"normal\": \"bold\"\n }\n },\n \"<sup>\": {\n type: \"tag\",\n opener: \"<sup>\",\n closer: \"</sup>\",\n attr: \"@vertical-align\",\n outer: \"sup\",\n flipflop: {\n \"sub\": \"sup\",\n \"sup\": \"sup\"\n }\n },\n \"<sub>\": {\n type: \"tag\",\n opener: \"<sub>\",\n closer: \"</sub>\",\n attr: \"@vertical-align\",\n outer: \"sub\",\n flipflop: {\n \"sup\": \"sub\",\n \"sub\": \"sub\"\n }\n },\n \" \\\"\": {\n type: \"quote\",\n opener: \" \\\"\",\n closer: \"\\\"\",\n attr: \"@quotes\",\n outer: \"true\",\n flipflop: {\n \"true\": \"inner\",\n \"inner\": \"true\",\n \"false\": \"true\"\n }\n },\n \" \\'\": {\n type: \"quote\",\n opener: \" \\'\",\n closer: \"\\'\",\n attr: \"@quotes\",\n outer: \"inner\",\n flipflop: {\n \"true\": \"inner\",\n \"inner\": \"true\",\n \"false\": \"true\"\n }\n }\n };\n\n _nestingData[\"(\\\"\"] = _nestingData[\" \\\"\"];\n _nestingData[\"(\\'\"] = _nestingData[\" \\'\"];\n\n var localeOpenQuote = state.getTerm(\"open-quote\");\n var localeCloseQuote = state.getTerm(\"close-quote\");\n var localeOpenInnerQuote = state.getTerm(\"open-inner-quote\");\n var localeCloseInnerQuote = state.getTerm(\"close-inner-quote\");\n\n // If locale uses straight quotes, do not register them. All will be well.\n // Otherwise, clone straight-quote data, and adjust.\n if (localeOpenQuote && localeCloseQuote && [\" \\\"\",\" \\'\",\"\\\"\",\"\\'\"].indexOf(localeOpenQuote) === -1) {\n _nestingData[localeOpenQuote] = JSON.parse(JSON.stringify(_nestingData[\" \\\"\"]));\n _nestingData[localeOpenQuote].opener = localeOpenQuote;\n _nestingData[localeOpenQuote].closer = localeCloseQuote;\n }\n \n if (localeOpenInnerQuote && localeCloseInnerQuote && [\" \\\"\",\" \\'\",\"\\\"\",\"\\'\"].indexOf(localeOpenInnerQuote) === -1) {\n _nestingData[localeOpenInnerQuote] = JSON.parse(JSON.stringify(_nestingData[\" \\'\"]));\n _nestingData[localeOpenInnerQuote].opener = localeOpenInnerQuote;\n _nestingData[localeOpenInnerQuote].closer = localeCloseInnerQuote;\n }\n \n function _setOuterQuoteForm(quot) {\n var flip = {\n \" \\'\": \" \\\"\",\n \" \\\"\": \" \\'\",\n \"(\\\"\": \"(\\'\",\n \"(\\'\": \"(\\\"\"\n };\n _nestingData[quot].outer = \"true\";\n _nestingData[flip[quot]].outer = \"inner\";\n }\n \n function _getNestingOpenerParams(opener) {\n var openers = [];\n var keys = Object.keys(_nestingData);\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n if (_nestingData[opener].type !== \"quote\" || !_nestingData[opener]) {\n openers.push(key);\n }\n }\n var ret = _nestingData[opener];\n ret.opener = new RegExp(\"^(?:\" + openers.map(function(str){\n return str.replace(\"(\", \"\\\\(\");\n }).join(\"|\") + \")\");\n return ret;\n }\n\n var _nestingParams = (function() {\n var ret = {};\n var keys = Object.keys(_nestingData);\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n ret[key] = _getNestingOpenerParams(key);\n }\n return ret;\n }());\n\n var _tagRex = (function() {\n var openers = [];\n var closers = [];\n var vals = {};\n for (var opener in _nestingParams) {\n openers.push(opener);\n vals[_nestingParams[opener].closer] = true;\n }\n var keys = Object.keys(vals);\n for (var i = 0, l = keys.length; i < l; i++) {\n var closer = keys[i];\n closers.push(closer);\n }\n\n var all = openers.concat(closers).map(function(str){\n return str.replace(\"(\", \"\\\\(\");\n }).join(\"|\");\n\n return {\n matchAll: new RegExp(\"((?:\" + all + \"))\", \"g\"),\n splitAll: new RegExp(\"(?:\" + all + \")\", \"g\"),\n open: new RegExp(\"(^(?:\" + openers.map(function(str){\n return str.replace(\"(\", \"\\\\(\");\n }).join(\"|\") + \")$)\"),\n close: new RegExp(\"(^(?:\" + closers.join(\"|\") + \")$)\"),\n };\n }());\n\n function _tryOpen(tag, pos) {\n var params = _nestingState[_nestingState.length - 1];\n if (!params || tag.match(params.opener)) {\n _nestingState.push({\n type: _nestingParams[tag].type,\n opener: _nestingParams[tag].opener,\n closer: _nestingParams[tag].closer,\n pos: pos\n });\n return false;\n } else {\n _nestingState.pop();\n _nestingState.push({\n type: _nestingParams[tag].type,\n opener: _nestingParams[tag].opener,\n closer: _nestingParams[tag].closer,\n pos: pos\n });\n return {\n fixtag: params.pos\n };\n }\n }\n \n function _tryClose(tag, pos) {\n var params = _nestingState[_nestingState.length - 1];\n if (params && tag === params.closer) {\n _nestingState.pop();\n if (params.type === \"nocase\") {\n return {\n nocase: {\n open: params.pos,\n close: pos\n }\n };\n } else {\n return false;\n }\n } else {\n if (params) {\n return {\n fixtag: params.pos\n };\n } else {\n return {\n fixtag: pos\n };\n }\n }\n }\n \n function _pushNestingState(tag, pos) {\n if (tag.match(_tagRex.open)) {\n return _tryOpen(tag, pos);\n } else {\n return _tryClose(tag, pos);\n }\n }\n \n function _doppelString(str) {\n var forcedSpaces = [];\n // Normalize markup\n str = str.replace(/(<span)\\s+(style=\\\"font-variant:)\\s*(small-caps);?\\\"[^>]*(>)/g, \"$1 $2$3;\\\"$4\");\n str = str.replace(/(<span)\\s+(class=\\\"no(?:case|decor)\\\")[^>]*(>)/g, \"$1 $2$3\");\n\n var match = str.match(_tagRex.matchAll);\n if (!match) {\n return {\n tags: [],\n strings: [str],\n forcedSpaces: []\n };\n }\n var split = str.split(_tagRex.splitAll);\n\n for (var i=0,ilen=match.length-1;i<ilen;i++) {\n if (_nestingData[match[i]]) {\n if (split[i+1] === \"\" && [\"\\\"\", \"'\"].indexOf(match[i+1]) > -1) {\n match[i+1] = \" \" + match[i+1];\n forcedSpaces.push(true);\n } else {\n forcedSpaces.push(false);\n }\n }\n }\n return {\n tags: match,\n strings: split,\n forcedSpaces: forcedSpaces\n };\n }\n\n var TagReg = function(blob) {\n var _stack = [];\n this.set = function (tag) {\n var attr = _nestingData[tag].attr;\n var decor = null;\n for (var i=_stack.length-1;i>-1;i--) {\n var _decor = _stack[i];\n if (_decor[0] === attr) {\n decor = _decor;\n break;\n }\n }\n if (!decor) {\n var allTheDecor = [state[state.tmp.area].opt.layout_decorations].concat(blob.alldecor);\n outer:\n for (var i=allTheDecor.length-1;i>-1;i--) {\n var decorset = allTheDecor[i];\n if (!decorset) {\n continue;\n }\n for (var j=decorset.length-1;j>-1;j--) {\n var _decor = decorset[j];\n if (_decor[0] === attr) {\n decor = _decor;\n break outer;\n }\n }\n }\n }\n if (!decor) {\n decor = [attr, _nestingData[tag].outer];\n } else {\n decor = [attr, _nestingData[tag].flipflop[decor[1]]];\n }\n _stack.push(decor);\n };\n this.pair = function () {\n return _stack[_stack.length-1];\n };\n this.pop = function () {\n _stack.pop();\n };\n };\n \n function _apostropheForce(tag, str) {\n if (tag === \"\\'\") {\n if (str && str.match(/^[^\\,\\.\\?\\:\\;\\ ]/)) {\n return \"\\u2019\";\n }\n } else if (tag === \" \\'\" && str && str.match(/^[\\ ]/)) {\n return \" \\u2019\";\n }\n return false;\n }\n\n function _undoppelToQueue(blob, doppel, leadingSpace) {\n var firstString = true;\n var tagReg = new TagReg(blob);\n blob.blobs = [];\n function Stack (blob) {\n this.stack = [blob];\n this.latest = blob;\n this.addStyling = function(str, decor) {\n if (firstString) {\n if (str.slice(0, 1) === \" \") {\n str = str.slice(1);\n }\n if (str.slice(0, 1) === \" \") {\n str = str.slice(1);\n }\n firstString = false;\n }\n this.latest = this.stack[this.stack.length-1];\n if (decor) {\n if (\"string\" === typeof this.latest.blobs) {\n var child = new CSL.Blob();\n child.blobs = this.latest.blobs;\n child.alldecor = this.latest.alldecor.slice();\n this.latest.blobs = [child];\n }\n var tok = new CSL.Token();\n var newblob = new CSL.Blob(null, tok);\n newblob.alldecor = this.latest.alldecor.slice();\n \n // AHA! Bad naming. There is _decorset from the list, and\n // there WAS decorset that we are building. Dumb. Fix the\n // names and fix it up.\n \n if (decor[0] === \"@class\" && decor[1] === \"nodecor\") {\n var newdecorset = [];\n var seen = {};\n var allTheDecor = [state[state.tmp.area].opt.layout_decorations].concat(newblob.alldecor);\n for (var i=allTheDecor.length-1;i>-1;i--) {\n var _decorset = allTheDecor[i];\n if (!_decorset) {\n continue;\n }\n for (var j=_decorset.length-1;j>-1;j--) {\n var _olddecor = _decorset[j];\n if ([\"@font-weight\", \"@font-style\", \"@font-variant\"].indexOf(_olddecor[0]) > -1\n && !seen[_olddecor[0]]) {\n \n if (decor[1] !== \"normal\") {\n newblob.decorations.push([_olddecor[0], \"normal\"]);\n newdecorset.push([_olddecor[0], \"normal\"]);\n }\n seen[_olddecor[0]] = true;\n }\n }\n }\n newblob.alldecor.push(newdecorset);\n \n } else {\n newblob.decorations.push(decor);\n newblob.alldecor.push([decor]);\n }\n this.latest.blobs.push(newblob);\n this.stack.push(newblob);\n this.latest = newblob;\n if (str) {\n var tok = new CSL.Token();\n var newblob = new CSL.Blob(null, tok);\n newblob.blobs = str;\n newblob.alldecor = this.latest.alldecor.slice();\n this.latest.blobs.push(newblob);\n }\n } else {\n if (str) {\n var child = new CSL.Blob();\n child.blobs = str;\n child.alldecor = this.latest.alldecor.slice();\n this.latest.blobs.push(child);\n }\n }\n };\n this.popStyling = function() {\n this.stack.pop();\n };\n }\n var stack = new Stack(blob);\n if (doppel.strings.length) {\n var str = doppel.strings[0];\n if (leadingSpace) {\n str = \" \" + str;\n }\n stack.addStyling(str);\n }\n for (var i=0,ilen=doppel.tags.length;i<ilen;i++) {\n var tag = doppel.tags[i];\n var str = doppel.strings[i+1];\n if (tag.match(_tagRex.open)) {\n tagReg.set(tag);\n stack.addStyling(str, tagReg.pair());\n } else {\n tagReg.pop();\n stack.popStyling();\n stack.addStyling(str);\n }\n }\n }\n\n /**\n * PUBLIC\n */\n\n this.processTags = function (blob) {\n var str = blob.blobs;\n var leadingSpace = false;\n if (str.slice(0, 1) === \" \" && !str.match(/^\\s+[\\'\\\"]/)) {\n leadingSpace = true;\n }\n var rex = new RegExp(\"(\" + CSL.ROMANESQUE_REGEXP.source + \")\\u2019(\" + CSL.ROMANESQUE_REGEXP.source + \")\", \"g\");\n var str = \" \" + str.replace(rex, \"$1\\'$2\");\n var doppel = _doppelString(str);\n if (doppel.tags.length === 0) {\n return;\n }\n var quoteFormSeen = false;\n \n \tfor (var i=0,ilen=doppel.tags.length;i<ilen;i++) {\n var tag = doppel.tags[i];\n var str = doppel.strings[i+1];\n var apostrophe = _apostropheForce(tag, str);\n if (apostrophe) {\n doppel.strings[i+1] = apostrophe + doppel.strings[i+1];\n doppel.tags[i] = \"\";\n } else {\n var tagInfo;\n while (true) {\n tagInfo = _pushNestingState(tag, i);\n if (tagInfo) {\n if (Object.keys(tagInfo).indexOf(\"fixtag\") > -1) {\n if (tag.match(_tagRex.close)\n && tag === \"\\'\") {\n \n doppel.strings[i+1] = \"\\u2019\" + doppel.strings[i+1];\n doppel.tags[i] = \"\";\n } else {\n var failedTag = doppel.tags[tagInfo.fixtag];\n if (doppel.forcedSpaces[tagInfo.fixtag-1]) {\n failedTag = failedTag.slice(1);\n }\n doppel.strings[tagInfo.fixtag+1] = failedTag + doppel.strings[tagInfo.fixtag+1];\n doppel.tags[tagInfo.fixtag] = \"\";\n }\n if (_nestingState.length > 0) {\n if (tag !== \"\\'\") {\n _nestingState.pop();\n } else {\n break;\n }\n } else {\n break;\n }\n } else if (tagInfo.nocase) {\n doppel.tags[tagInfo.nocase.open] = \"\";\n doppel.tags[tagInfo.nocase.close] = \"\";\n break;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n if (tagInfo && (tagInfo.fixtag|| tagInfo.fixtag === 0)) {\n doppel.strings[i+1] = doppel.tags[i] + doppel.strings[i+1];\n doppel.tags[i] = \"\";\n }\n }\n }\n // Stray tags are neutralized here\n for (var i=_nestingState.length-1;i>-1;i--) {\n var tagPos = _nestingState[i].pos;\n var tag = doppel.tags[tagPos];\n if (tag === \" \\'\" || tag === \"\\'\") {\n\n doppel.strings[tagPos+1] = \" \\u2019\" + doppel.strings[tagPos+1];\n } else {\n doppel.strings[tagPos+1] = doppel.tags[tagPos] + doppel.strings[tagPos+1];\n }\n doppel.tags[tagPos] = \"\";\n _nestingState.pop();\n }\n for (var i=doppel.tags.length-1;i>-1;i--) {\n if (!doppel.tags[i]) {\n doppel.tags = doppel.tags.slice(0,i).concat(doppel.tags.slice(i+1));\n doppel.strings[i] = doppel.strings[i] + doppel.strings[i+1];\n doppel.strings = doppel.strings.slice(0,i+1).concat(doppel.strings.slice(i+2));\n }\n }\n // Sniff initial (outer) quote form (single or double) and configure parser\n // Also add leading spaces.\n for (var i=0,ilen=doppel.tags.length;i<ilen;i++) {\n var tag = doppel.tags[i];\n var forcedSpace = doppel.forcedSpaces[i-1];\n if ([\" \\\"\", \" \\'\", \"(\\\"\", \"(\\'\"].indexOf(tag) > -1) {\n if (!quoteFormSeen) {\n _setOuterQuoteForm(tag);\n quoteFormSeen = true;\n }\n if (!forcedSpace) {\n doppel.strings[i] += tag.slice(0, 1);\n }\n }\n }\n //print(JSON.stringify(doppel, null, 2))\n //print(_undoppelString(doppel));\n _undoppelToQueue(blob, doppel, leadingSpace);\n };\n};\n\n/*global CSL: true */\n\nCSL.Output.Formatters = (function () {\n var rexStr = \"(?:\\u2018|\\u2019|\\u201C|\\u201D| \\\"| \\'|\\\"|\\'|[-\\u2013\\u2014\\/.,;?!:]|\\\\[|\\\\]|\\\\(|\\\\)|<span style=\\\"font-variant: small-caps;\\\">|<span class=\\\"no(?:case|decor)\\\">|<\\/span>|<\\/?(?:i|sc|b|sub|sup)>)\";\n var tagDoppel = new CSL.Doppeler(rexStr, function(str) {\n return str.replace(/(<span)\\s+(class=\\\"no(?:case|decor)\\\")[^>]*(>)/g, \"$1 $2$3\").replace(/(<span)\\s+(style=\\\"font-variant:)\\s*(small-caps);?(\\\")[^>]*(>)/g, \"$1 $2 $3;$4$5\");\n });\n var rexNameStr = \"(?:[-\\\\s]*<\\\\/*(?:span\\s+class=\\\"no(?:case|decor)\\\"|i|sc|b|sub|sup)>[-\\\\s]*|[-\\\\s]+)\";\n var nameDoppel = new CSL.Doppeler(rexNameStr);\n \n var wordDoppel = new CSL.Doppeler(\"(?:[\\u00A0\\u0020\\u00A0\\u2000-\\u200B\\u205F\\u3000]+)\");\n \n /**\n * INTERNAL\n */\n\n var _tagParams = {\n \"<span style=\\\"font-variant: small-caps;\\\">\": \"</span>\",\n \"<span class=\\\"nocase\\\">\": \"</span>\",\n \"<span class=\\\"nodecor\\\">\": \"</span>\",\n \"<sc>\": \"</sc>\",\n \"<sub>\": \"</sub>\",\n \"<sup>\": \"</sup>\"\n };\n\n function _capitalise (word) {\n // Weird stuff is (.) transpiled with regexpu\n // https://github.com/mathiasbynens/regexpu\n var m = word.match(/(^\\s*)((?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]))(.*)/);\n // Do not uppercase lone Greek letters\n // (No case transforms in Greek citations, but chars used in titles to science papers)\n if (m && !(m[2].match(/^[\\u0370-\\u03FF]$/) && !m[3])) {\n return m[1] + CSL.toLocaleUpperCase.call(this, m[2]) + m[3];\n }\n return word;\n }\n\n function _textcaseEngine(config, string) {\n if (!string) {\n return \"\";\n }\n config.doppel = tagDoppel.split(string);\n var quoteParams = {\n \" \\\"\": {\n opener: \" \\'\",\n closer: \"\\\"\"\n },\n \" \\'\": {\n opener: \" \\\"\",\n closer: \"\\'\"\n },\n \"\\u2018\": {\n opener: \"\\u2018\",\n closer: \"\\u2019\"\n },\n \"\\u201C\": {\n opener: \"\\u201C\",\n closer: \"\\u201D\"\n },\n };\n function tryOpen(tag, pos) {\n if (config.quoteState.length === 0 || tag === config.quoteState[config.quoteState.length - 1].opener) {\n config.quoteState.push({\n opener: quoteParams[tag].opener,\n closer: quoteParams[tag].closer,\n pos: pos\n });\n return false;\n } else {\n var prevPos = config.quoteState[config.quoteState.length-1].pos;\n config.quoteState.pop();\n config.quoteState.push({\n opener: quoteParams[tag].opener,\n closer: quoteParams[tag].closer,\n positions: pos\n });\n return prevPos;\n }\n }\n function tryClose(tag, pos) {\n if (config.quoteState.length > 0 && tag === config.quoteState[config.quoteState.length - 1].closer) {\n config.quoteState.pop();\n } else {\n return pos;\n }\n }\n function pushQuoteState(tag, pos) {\n var isOpener = [\"\\u201C\", \"\\u2018\", \" \\\"\", \" \\'\"].indexOf(tag) > -1 ? true : false;\n if (isOpener) {\n return tryOpen(tag, pos);\n } else {\n return tryClose(tag, pos);\n }\n }\n function quoteFix (tag, positions) {\n var m = tag.match(/(^(?:\\u2018|\\u2019|\\u201C|\\u201D|\\\"|\\')|(?: \\\"| \\')$)/);\n if (m) {\n return pushQuoteState(m[1], positions);\n }\n }\n // Run state machine\n if (config.doppel.strings.length && config.doppel.strings[0].trim()) {\n config.doppel.strings[0] = config.capitaliseWords(config.doppel.strings[0], 0, config.doppel.tags[0]);\n }\n\n \tfor (var i=0,ilen=config.doppel.tags.length;i<ilen;i++) {\n var tag = config.doppel.tags[i];\n var str = config.doppel.strings[i+1];\n\n if (config.tagState !== null) {\n // Evaluate tag state for current string\n if (_tagParams[tag]) {\n config.tagState.push(_tagParams[tag]);\n } else if (config.tagState.length && tag === config.tagState[config.tagState.length - 1]) {\n config.tagState.pop();\n }\n }\n\n if (config.afterPunct !== null) {\n // Evaluate punctuation state of current string\n if (tag.match(/[\\!\\?\\:]$/)) {\n config.afterPunct = true;\n }\n }\n\n // Process if outside tag scope, else noop for upper-casing\n if (config.tagState.length === 0) {\n config.doppel.strings[i+1] = config.capitaliseWords(str, i+1, config.doppel,config.doppel.tags[i+1]);\n \n } else if (config.doppel.strings[i+1].trim()) {\n config.lastWordPos = null;\n }\n \n if (config.quoteState !== null) {\n // Evaluate quote state of current string and fix chars that have flown\n var quotePos = quoteFix(tag, i);\n if (quotePos || quotePos === 0) {\n var origChar = config.doppel.origStrings[quotePos+1].slice(0, 1);\n config.doppel.strings[quotePos+1] = origChar + config.doppel.strings[quotePos+1].slice(1);\n config.lastWordPos = null;\n }\n }\n\n // If there was a printable string, unset first-word and after-punctuation\n if (config.isFirst) {\n if (str.trim()) {\n config.isFirst = false;\n }\n }\n if (config.afterPunct) {\n if (str.trim()) {\n config.afterPunct = false;\n }\n }\n }\n if (config.quoteState) {\n for (var i=0,ilen=config.quoteState.length;i<ilen;i++) {\n var quotePos = config.quoteState[i].pos;\n // Test for quotePos avoids a crashing error:\n // https://github.com/citation-style-language/test-suite/blob/master/processor-tests/humans/flipflop_OrphanQuote.txt\n if (typeof quotePos !== 'undefined') {\n var origChar = config.doppel.origStrings[quotePos+1].slice(0, 1);\n config.doppel.strings[quotePos+1] = origChar + config.doppel.strings[quotePos+1].slice(1);\n }\n }\n }\n // Specially capitalize the last word if necessary (invert stop-word list)\n if (config.lastWordPos) {\n var lastWords = wordDoppel.split(config.doppel.strings[config.lastWordPos.strings]);\n var lastWord = lastWords.strings[config.lastWordPos.words];\n if (lastWord.length > 1 && CSL.toLocaleLowerCase.call(this, lastWord).match(config.skipWordsRex)) {\n lastWord = _capitalise.call(this, lastWord);\n lastWords.strings[config.lastWordPos.words] = lastWord;\n }\n config.doppel.strings[config.lastWordPos.strings] = wordDoppel.join(lastWords);\n }\n\n // Recombine the string\n return tagDoppel.join(config.doppel);\n }\n\n /**\n * PUBLIC\n */\n\n /**\n * A noop that just delivers the string.\n */\n function passthrough (state, str) {\n return str;\n }\n\n /**\n * Force all letters in the string to lowercase, skipping nocase spans\n */\n function lowercase(state, string) {\n var config = {\n quoteState: null,\n capitaliseWords: function(str) {\n var words = str.split(\" \");\n for (var i=0,ilen=words.length;i<ilen;i++) {\n var word = words[i];\n if (word) {\n words[i] = CSL.toLocaleLowerCase.call(state, word);\n }\n }\n return words.join(\" \");\n },\n skipWordsRex: null,\n tagState: [],\n afterPunct: null,\n isFirst: null\n };\n return _textcaseEngine.call(state, config, string);\n }\n\n /**\n * Force all letters in the string to uppercase.\n */\n function uppercase(state, string) {\n var config = {\n quoteState: null,\n capitaliseWords: function(str) {\n var words = str.split(\" \");\n for (var i=0,ilen=words.length;i<ilen;i++) {\n var word = words[i];\n if (word) {\n // Okay.\n // So we need to pick up an array of locales from state.tmp.\n // This function is invoked in the context of queue.js, so\n // the item is not available here. Three levels to be included\n // in the array:\n // 1. Field language tag, if any\n // 2. Item language tag, if any\n // 3. Value of state.opt.lang\n words[i] = CSL.toLocaleUpperCase.call(state, word);\n }\n }\n return words.join(\" \");\n },\n skipWordsRex: null,\n tagState: [],\n afterPunct: null,\n isFirst: null\n };\n return _textcaseEngine.call(state, config, string);\n }\n\n /**\n * Similar to <b>capitalize_first</b>, but force the\n * subsequent characters to lowercase.\n */\n function sentence(state, string) {\n var config = {\n quoteState: [],\n capitaliseWords: function(str) {\n var words = str.split(\" \");\n for (var i=0,ilen=words.length;i<ilen;i++) {\n var word = words[i];\n if (word) {\n if (config.isFirst) {\n words[i] = _capitalise.call(state, word);\n config.isFirst = false;\n } else {\n words[i] = CSL.toLocaleLowerCase.call(state, word);\n }\n }\n }\n return words.join(\" \");\n },\n skipWordsRex: null,\n tagState: [],\n afterPunct: null,\n isFirst: true\n };\n return _textcaseEngine.call(state, config, string);\n }\n\n function title(state, string) {\n var config = {\n quoteState: [],\n capitaliseWords: function(str, i, followingTag) {\n if (str.trim()) {\n var wordle = wordDoppel.split(str);\n var words = wordle.strings;\n for (var j=0,jlen=words.length;j<jlen;j++) {\n var word = words[j];\n if (!word) {\n continue;\n }\n let lcase = CSL.toLocaleLowerCase.call(state, word);\n let capitalize = false;\n if (word.length > 1 && !lcase.match(config.skipWordsRex)) {\n // Capitalize every word that is not a stop-word\n capitalize = true;\n } else if (j === (words.length - 1) && followingTag === \"-\") {\n capitalize = true;\n } else if (config.isFirst) {\n // Capitalize first word, even if a stop-word\n capitalize = true;\n } else if (config.afterPunct) {\n // Capitalize after punctuation\n capitalize = true;\n }\n // Don't capitalize if word already contains capitalization\n if (capitalize && word === lcase) {\n words[j] = _capitalise.call(state, word);\n }\n config.afterPunct = false;\n config.isFirst = false;\n config.lastWordPos = {\n strings: i,\n words: j\n };\n }\n str = wordDoppel.join(wordle);\n }\n return str;\n },\n skipWordsRex: state.locale[state.opt.lang].opts[\"skip-words-regexp\"],\n tagState: [],\n afterPunct: false,\n isFirst: true\n };\n return _textcaseEngine.call(state, config, string);\n }\n \n \n /**\n * Force capitalization of the first letter in the string, leave\n * the rest of the characters untouched.\n */\n function capitalizeFirst(state, string) {\n var config = {\n quoteState: [],\n capitaliseWords: function(str) {\n var wordle = wordDoppel.split(str);\n var words = wordle.strings;\n for (var i=0,ilen=words.length;i<ilen;i++) {\n var word = words[i];\n if (word) {\n if (config.isFirst) {\n // Don't capitalize if word already contains capitalization\n if (word === CSL.toLocaleLowerCase.call(state, word)) {\n words[i] = _capitalise.call(state, word);\n }\n config.isFirst = false;\n break;\n }\n }\n }\n return wordDoppel.join(wordle);\n },\n skipWordsRex: null,\n tagState: [],\n afterPunct: null,\n isFirst: true\n };\n return _textcaseEngine.call(state, config, string);\n }\n\n /**\n * Force the first letter of each space-delimited\n * word in the string to uppercase, and leave the remainder\n * of the string untouched. Single characters are forced\n * to uppercase.\n */\n function capitalizeAll (state, string) {\n var config = {\n quoteState: [],\n capitaliseWords: function(str) {\n var wordle = wordDoppel.split(str);\n var words = wordle.strings;\n for (var i=0,ilen=words.length;i<ilen;i++) {\n var word = words[i];\n if (word) {\n // Don't capitalize if word already contains capitalization\n if (word === CSL.toLocaleLowerCase.call(state, word)) {\n words[i] = _capitalise.call(state, word);\n }\n }\n }\n return wordDoppel.join(wordle);\n },\n skipWordsRex: null,\n tagState: [],\n afterPunct: null,\n isFirst: null\n };\n return _textcaseEngine.call(state, config, string);\n }\n return {\n nameDoppel: nameDoppel,\n passthrough: passthrough,\n lowercase: lowercase,\n uppercase: uppercase,\n sentence: sentence,\n title: title,\n \"capitalize-first\": capitalizeFirst,\n \"capitalize-all\": capitalizeAll\n };\n}());\n\n/*global CSL: true */\n\n\n/**\n * Output specifications.\n * @class\n */\nCSL.Output.Formats = function () {};\n\n/**\n * HTML output format specification.\n * <p>The headline says it all. The source code for this\n * object can be used as a template for producing other\n * output modes.</p>\n */\nCSL.Output.Formats.prototype.html = {\n //\n // text_escape: Format-specific function for escaping text destined\n // for output. Takes the text to be escaped as sole argument. Function\n // will be run only once across each portion of text to be escaped, it\n // need not be idempotent.\n //\n \"text_escape\": function (text) {\n // Numeric entities, in case the output is processed as\n // xml in an environment in which HTML named entities are\n // not declared.\n if (!text) {\n text = \"\";\n }\n return text.replace(/&/g, \"&#38;\")\n .replace(/</g, \"&#60;\")\n .replace(/>/g, \"&#62;\")\n .replace(/\\s\\s/g, \"\\u00A0 \")\n .replace(CSL.SUPERSCRIPTS_REGEXP,\n function(aChar) {\n // return \"&#60;sup&#62;\" + CSL.SUPERSCRIPTS[aChar] + \"&#60;/sup&#62;\";\n return \"<sup>\" + CSL.SUPERSCRIPTS[aChar] + \"</sup>\";\n });\n },\n \"bibstart\": \"<div class=\\\"csl-bib-body\\\">\\n\",\n \"bibend\": \"</div>\",\n \"@font-style/italic\": \"<i>%%STRING%%</i>\",\n \"@font-style/oblique\": \"<em>%%STRING%%</em>\",\n \"@font-style/normal\": \"<span style=\\\"font-style:normal;\\\">%%STRING%%</span>\",\n \"@font-variant/small-caps\": \"<span style=\\\"font-variant:small-caps;\\\">%%STRING%%</span>\",\n \"@passthrough/true\": CSL.Output.Formatters.passthrough,\n \"@font-variant/normal\": \"<span style=\\\"font-variant:normal;\\\">%%STRING%%</span>\",\n \"@font-weight/bold\": \"<b>%%STRING%%</b>\",\n \"@font-weight/normal\": \"<span style=\\\"font-weight:normal;\\\">%%STRING%%</span>\",\n \"@font-weight/light\": false,\n \"@text-decoration/none\": \"<span style=\\\"text-decoration:none;\\\">%%STRING%%</span>\",\n \"@text-decoration/underline\": \"<span style=\\\"text-decoration:underline;\\\">%%STRING%%</span>\",\n \"@vertical-align/sup\": \"<sup>%%STRING%%</sup>\",\n \"@vertical-align/sub\": \"<sub>%%STRING%%</sub>\",\n \"@vertical-align/baseline\": \"<span style=\\\"baseline\\\">%%STRING%%</span>\",\n \"@strip-periods/true\": CSL.Output.Formatters.passthrough,\n \"@strip-periods/false\": CSL.Output.Formatters.passthrough,\n \"@quotes/true\": function (state, str) {\n if (\"undefined\" === typeof str) {\n return state.getTerm(\"open-quote\");\n }\n return state.getTerm(\"open-quote\") + str + state.getTerm(\"close-quote\");\n },\n \"@quotes/inner\": function (state, str) {\n if (\"undefined\" === typeof str) {\n //\n // Mostly right by being wrong (for apostrophes)\n //\n return \"\\u2019\";\n }\n return state.getTerm(\"open-inner-quote\") + str + state.getTerm(\"close-inner-quote\");\n },\n \"@quotes/false\": false,\n //\"@bibliography/body\": function (state,str){\n // return \"<div class=\\\"csl-bib-body\\\">\\n\"+str+\"</div>\";\n //},\n \"@cite/entry\": function (state, str) {\n return state.sys.wrapCitationEntry(str, this.item_id, this.locator_txt, this.suffix_txt);\n\t},\n \"@bibliography/entry\": function (state, str) {\n // Test for this.item_id to add decorations to\n // bibliography output of individual entries.\n //\n // Full item content can be obtained from\n // state.registry.registry[id].ref, using\n // CSL variable keys.\n //\n // Example:\n //\n // print(state.registry.registry[this.item_id].ref[\"title\"]);\n //\n // At present, for parallel citations, only the\n // id of the master item is supplied on this.item_id.\n var insert = \"\";\n if (state.sys.embedBibliographyEntry) {\n insert = state.sys.embedBibliographyEntry(this.item_id) + \"\\n\";\n }\n return \" <div class=\\\"csl-entry\\\">\" + str + \"</div>\\n\" + insert;\n },\n \"@display/block\": function (state, str) {\n return \"\\n\\n <div class=\\\"csl-block\\\">\" + str + \"</div>\\n\";\n },\n \"@display/left-margin\": function (state, str) {\n return \"\\n <div class=\\\"csl-left-margin\\\">\" + str + \"</div>\";\n },\n \"@display/right-inline\": function (state, str) {\n return \"<div class=\\\"csl-right-inline\\\">\" + str + \"</div>\\n \";\n },\n \"@display/indent\": function (state, str) {\n return \"<div class=\\\"csl-indent\\\">\" + str + \"</div>\\n \";\n },\n \"@showid/true\": function (state, str, cslid) {\n if (!state.tmp.just_looking && ! state.tmp.suppress_decorations) {\n if (cslid) {\n return \"<span class=\\\"\" + state.opt.nodenames[cslid] + \"\\\" cslid=\\\"\" + cslid + \"\\\">\" + str + \"</span>\";\n } else if (this.params && \"string\" === typeof str) {\n var prePunct = \"\";\n if (str) {\n var m = str.match(CSL.VARIABLE_WRAPPER_PREPUNCT_REX);\n prePunct = m[1];\n str = m[2];\n }\n var postPunct = \"\";\n if (str && CSL.SWAPPING_PUNCTUATION.indexOf(str.slice(-1)) > -1) {\n postPunct = str.slice(-1);\n str = str.slice(0,-1);\n }\n return state.sys.variableWrapper(this.params, prePunct, str, postPunct);\n } else {\n return str;\n }\n } else {\n return str;\n }\n },\n \"@URL/true\": function (state, str) {\n return \"<a href=\\\"\" + str + \"\\\">\" + str + \"</a>\";\n },\n \"@DOI/true\": function (state, str) {\n var doiurl = str;\n if (!str.match(/^https?:\\/\\//)) {\n doiurl = \"https://doi.org/\" + str;\n }\n return \"<a href=\\\"\" + doiurl + \"\\\">\" + str + \"</a>\";\n }\n};\n\n/**\n * Plain text output specification.\n *\n * (Code contributed by Simon Kornblith, Center for History and New Media,\n * George Mason University.)\n */\nCSL.Output.Formats.prototype.text = {\n //\n // text_escape: Format-specific function for escaping text destined\n // for output. Takes the text to be escaped as sole argument. Function\n // will be run only once across each portion of text to be escaped, it\n // need not be idempotent.\n //\n \"text_escape\": function (text) {\n if (!text) {\n text = \"\";\n }\n return text;\n },\n \"bibstart\": \"\",\n \"bibend\": \"\",\n \"@font-style/italic\": false,\n \"@font-style/oblique\": false,\n \"@font-style/normal\": false,\n \"@font-variant/small-caps\": false,\n \"@passthrough/true\": CSL.Output.Formatters.passthrough,\n \"@font-variant/normal\": false,\n \"@font-weight/bold\": false,\n \"@font-weight/normal\": false,\n \"@font-weight/light\": false,\n \"@text-decoration/none\": false,\n \"@text-decoration/underline\": false,\n \"@vertical-align/baseline\": false,\n \"@vertical-align/sup\": false,\n \"@vertical-align/sub\": false,\n \"@strip-periods/true\": CSL.Output.Formatters.passthrough,\n \"@strip-periods/false\": CSL.Output.Formatters.passthrough,\n \"@quotes/true\": function (state, str) {\n if (\"undefined\" === typeof str) {\n return state.getTerm(\"open-quote\");\n }\n return state.getTerm(\"open-quote\") + str + state.getTerm(\"close-quote\");\n },\n \"@quotes/inner\": function (state, str) {\n if (\"undefined\" === typeof str) {\n //\n // Mostly right by being wrong (for apostrophes)\n //\n return \"\\u2019\";\n }\n return state.getTerm(\"open-inner-quote\") + str + state.getTerm(\"close-inner-quote\");\n },\n \"@quotes/false\": false,\n //\"@bibliography/body\": function (state,str){\n // return \"<div class=\\\"csl-bib-body\\\">\\n\"+str+\"</div>\";\n //},\n \"@cite/entry\": function (state, str) {\n\t\treturn state.sys.wrapCitationEntry(str, this.item_id, this.locator_txt, this.suffix_txt);\n\t},\n \"@bibliography/entry\": function (state, str) {\n return str+\"\\n\";\n },\n \"@display/block\": function (state, str) {\n return \"\\n\"+str;\n },\n \"@display/left-margin\": function (state, str) {\n return str + \" \";\n },\n \"@display/right-inline\": function (state, str) {\n return str;\n },\n \"@display/indent\": function (state, str) {\n return \"\\n \"+str;\n },\n \"@showid/true\": function (state, str) {\n return str;\n },\n \"@URL/true\": function (state, str) {\n return str;\n },\n \"@DOI/true\": function (state, str) {\n return str;\n }\n};\n\n/**\n * Plain text output specification.\n *\n * (Code contributed by Simon Kornblith, Center for History and New Media,\n * George Mason University.)\n */\nCSL.Output.Formats.prototype.rtf = {\n //\n // text_escape: Format-specific function for escaping text destined\n // for output. Takes the text to be escaped as sole argument. Function\n // will be run only once across each portion of text to be escaped, it\n // need not be idempotent.\n //\n \"text_escape\": function (text) {\n if (!text) {\n text = \"\";\n }\n return text\n .replace(/([\\\\{}])/g, \"\\\\$1\")\n .replace(CSL.SUPERSCRIPTS_REGEXP,\n function(aChar) {\n return \"\\\\super \" + CSL.SUPERSCRIPTS[aChar] + \"\\\\nosupersub{}\";\n })\n .replace(/[\\u007F-\\uFFFF]/g,\n function(aChar) { return \"\\\\uc0\\\\u\"+aChar.charCodeAt(0).toString()+\"{}\"; })\n .split(\"\\t\").join(\"\\\\tab{}\");\n },\n \"@passthrough/true\": CSL.Output.Formatters.passthrough,\n \"@font-style/italic\":\"{\\\\i{}%%STRING%%}\",\n \"@font-style/normal\":\"{\\\\i0{}%%STRING%%}\",\n \"@font-style/oblique\":\"{\\\\i{}%%STRING%%}\",\n \"@font-variant/small-caps\":\"{\\\\scaps %%STRING%%}\",\n \"@font-variant/normal\":\"{\\\\scaps0{}%%STRING%%}\",\n \"@font-weight/bold\":\"{\\\\b{}%%STRING%%}\",\n \"@font-weight/normal\":\"{\\\\b0{}%%STRING%%}\",\n \"@font-weight/light\":false,\n \"@text-decoration/none\":false,\n \"@text-decoration/underline\":\"{\\\\ul{}%%STRING%%}\",\n \"@vertical-align/baseline\":false,\n \"@vertical-align/sup\":\"\\\\super %%STRING%%\\\\nosupersub{}\",\n \"@vertical-align/sub\":\"\\\\sub %%STRING%%\\\\nosupersub{}\",\n \"@strip-periods/true\": CSL.Output.Formatters.passthrough,\n \"@strip-periods/false\": CSL.Output.Formatters.passthrough,\n \"@quotes/true\": function (state, str) {\n if (\"undefined\" === typeof str) {\n return CSL.Output.Formats.rtf.text_escape(state.getTerm(\"open-quote\"));\n }\n return CSL.Output.Formats.rtf.text_escape(state.getTerm(\"open-quote\")) + str + CSL.Output.Formats.rtf.text_escape(state.getTerm(\"close-quote\"));\n },\n \"@quotes/inner\": function (state, str) {\n if (\"undefined\" === typeof str) {\n return CSL.Output.Formats.rtf.text_escape(\"\\u2019\");\n }\n return CSL.Output.Formats.rtf.text_escape(state.getTerm(\"open-inner-quote\")) + str + CSL.Output.Formats.rtf.text_escape(state.getTerm(\"close-inner-quote\"));\n },\n \"@quotes/false\": false,\n \"bibstart\":\"{\\\\rtf \",\n \"bibend\":\"}\",\n \"@display/block\": \"\\\\line{}%%STRING%%\\\\line\\r\\n\",\n \"@cite/entry\": function (state, str) {\n // If wrapCitationEntry does not exist, cite/entry \n // is not applied.\n\t\treturn state.sys.wrapCitationEntry(str, this.item_id, this.locator_txt, this.suffix_txt);\n\t},\n \"@bibliography/entry\": function(state,str){\n return str;\n },\n \"@display/left-margin\": function(state,str){\n return str+\"\\\\tab \";\n },\n \"@display/right-inline\": function (state, str) {\n return str+\"\\r\\n\";\n },\n \"@display/indent\": function (state, str) {\n return \"\\n\\\\tab \"+str+\"\\\\line\\r\\n\";\n },\n \"@showid/true\": function (state, str) {\n if (!state.tmp.just_looking && ! state.tmp.suppress_decorations) {\n var prePunct = \"\";\n if (str) {\n var m = str.match(CSL.VARIABLE_WRAPPER_PREPUNCT_REX);\n prePunct = m[1];\n str = m[2];\n }\n var postPunct = \"\";\n if (str && CSL.SWAPPING_PUNCTUATION.indexOf(str.slice(-1)) > -1) {\n postPunct = str.slice(-1);\n str = str.slice(0,-1);\n }\n return state.sys.variableWrapper(this.params, prePunct, str, postPunct);\n } else {\n return str;\n }\n },\n \"@URL/true\": function (state, str) {\n return str;\n },\n \"@DOI/true\": function (state, str) {\n return str;\n }\n};\n\n/*\n\n This does not seem to work in Zotero plugins. For some reason the scope of the link does not\n close when interpreted by the LibreOffice. Perhaps this creates a field within a field,\n and that is not allowed?\n\n \"@URL/true\": function (state, str) {\n return \"\\\\field{\\\\*\\\\fldinst{HYPERLINK \\\"\" + str + \"\\\"}}{\\\\fldrslt{\"+ str +\"}}\";\n },\n \"@DOI/true\": function (state, str) {\n return \"\\\\field{\\\\*\\\\fldinst{HYPERLINK \\\"https://doi.org/\" + str + \"\\\"}}{\\\\fldrslt{\"+ str +\"}}\";\n }\n*/\n\n/**\n * AsciiDoc output specification.\n *\n * See http://asciidoc.org/ or https://asciidoctor.org/\n */\nCSL.Output.Formats.prototype.asciidoc = {\n \"text_escape\": function (text) {\n if (!text) {\n text = \"\";\n }\n return text.replace(\"*\", \"pass:[*]\", \"g\")\n .replace(\"_\", \"pass:[_]\", \"g\")\n .replace(\"#\", \"pass:[#]\", \"g\")\n .replace(\"^\", \"pass:[^]\", \"g\")\n .replace(\"~\", \"pass:[~]\", \"g\")\n .replace(\"[[\", \"pass:[[[]\", \"g\")\n .replace(\" \", \"&#160; \", \"g\")\n .replace(CSL.SUPERSCRIPTS_REGEXP, function(aChar) {\n return \"^\" + CSL.SUPERSCRIPTS[aChar] + \"^\";\n });\n },\n \"bibstart\": \"\",\n \"bibend\": \"\",\n \"@passthrough/true\": CSL.Output.Formatters.passthrough,\n \"@font-style/italic\": \"__%%STRING%%__\",\n \"@font-style/oblique\": \"__%%STRING%%__\",\n \"@font-style/normal\": false,\n \"@font-variant/small-caps\": \"[small-caps]#%%STRING%%#\",\n \"@font-variant/normal\": false,\n \"@font-weight/bold\": \"**%%STRING%%**\",\n \"@font-weight/normal\": false,\n \"@font-weight/light\": false,\n \"@text-decoration/none\": false,\n \"@text-decoration/underline\": \"[underline]##%%STRING%%##\",\n \"@vertical-align/sup\": \"^^%%STRING%%^^\",\n \"@vertical-align/sub\": \"~~%%STRING%%~~\",\n \"@vertical-align/baseline\": false,\n \"@strip-periods/true\": CSL.Output.Formatters.passthrough,\n \"@strip-periods/false\": CSL.Output.Formatters.passthrough,\n \"@quotes/true\": function (state, str) {\n if (\"undefined\" === typeof str) {\n return \"``\";\n }\n return \"``\" + str + \"''\";\n },\n \"@quotes/inner\": function (state, str) {\n if (\"undefined\" === typeof str) {\n return \"`\";\n }\n return \"`\" + str + \"'\";\n },\n \"@quotes/false\": false,\n \"@cite/entry\": function (state, str) {\n // if wrapCitationEntry does not exist, cite/entry is not applied\n return state.sys.wrapCitationEntry(str, this.item_id, this.locator_txt, this.suffix_txt);\n },\n \"@bibliography/entry\": function (state, str) {\n return str + \"\\n\";\n },\n \"@display/block\": function (state, str) {\n return str;\n },\n \"@display/left-margin\": function (state, str) {\n return str;\n },\n \"@display/right-inline\": function (state, str) {\n return \" \" + str;\n },\n \"@display/indent\": function (state, str) {\n return \" \" + str;\n },\n \"@showid/true\": function (state, str) {\n if (!state.tmp.just_looking && !state.tmp.suppress_decorations && this.params && \"string\" === typeof str) {\n var prePunct = \"\";\n if (str) {\n var m = str.match(CSL.VARIABLE_WRAPPER_PREPUNCT_REX);\n prePunct = m[1];\n str = m[2];\n }\n var postPunct = \"\";\n if (str && CSL.SWAPPING_PUNCTUATION.indexOf(str.slice(-1)) > -1) {\n postPunct = str.slice(-1);\n str = str.slice(0,-1);\n }\n return state.sys.variableWrapper(this.params, prePunct, str, postPunct);\n } else {\n return str;\n }\n },\n \"@URL/true\": function (state, str) {\n // AsciiDoc renders URLs automatically as links\n return str;\n },\n \"@DOI/true\": function (state, str) {\n var doiurl = str;\n if (!str.match(/^https?:\\/\\//)) {\n doiurl = \"https://doi.org/\" + str;\n }\n return doiurl + \"[\" + str + \"]\";\n }\n};\n\n/**\n * Output specification for XSL-FO (Extensible Stylesheet\n * Language - Formatting Objects)\n *\n * See https://www.w3.org/TR/xsl11/#fo-section\n */\nCSL.Output.Formats.prototype.fo = {\n \"text_escape\": function (text) {\n if (!text) {\n text = \"\";\n }\n return text.replace(/&/g, \"&#38;\")\n .replace(/</g, \"&#60;\")\n .replace(/>/g, \"&#62;\")\n .replace(\" \", \"&#160; \", \"g\")\n .replace(CSL.SUPERSCRIPTS_REGEXP, function(aChar) {\n return \"<fo:inline vertical-align=\\\"super\\\">\" + CSL.SUPERSCRIPTS[aChar] + \"</fo:inline>\";\n });\n },\n \"bibstart\": \"\",\n \"bibend\": \"\",\n \"@passthrough/true\": CSL.Output.Formatters.passthrough,\n \"@font-style/italic\": \"<fo:inline font-style=\\\"italic\\\">%%STRING%%</fo:inline>\",\n \"@font-style/oblique\": \"<fo:inline font-style=\\\"oblique\\\">%%STRING%%</fo:inline>\",\n \"@font-style/normal\": \"<fo:inline font-style=\\\"normal\\\">%%STRING%%</fo:inline>\",\n \"@font-variant/small-caps\": \"<fo:inline font-variant=\\\"small-caps\\\">%%STRING%%</fo:inline>\",\n \"@font-variant/normal\": \"<fo:inline font-variant=\\\"normal\\\">%%STRING%%</fo:inline>\",\n \"@font-weight/bold\": \"<fo:inline font-weight=\\\"bold\\\">%%STRING%%</fo:inline>\",\n \"@font-weight/normal\": \"<fo:inline font-weight=\\\"normal\\\">%%STRING%%</fo:inline>\",\n \"@font-weight/light\": \"<fo:inline font-weight=\\\"lighter\\\">%%STRING%%</fo:inline>\",\n \"@text-decoration/none\": \"<fo:inline text-decoration=\\\"none\\\">%%STRING%%</fo:inline>\",\n \"@text-decoration/underline\": \"<fo:inline text-decoration=\\\"underline\\\">%%STRING%%</fo:inline>\",\n \"@vertical-align/sup\": \"<fo:inline vertical-align=\\\"super\\\">%%STRING%%</fo:inline>\",\n \"@vertical-align/sub\": \"<fo:inline vertical-align=\\\"sub\\\">%%STRING%%</fo:inline>\",\n \"@vertical-align/baseline\": \"<fo:inline vertical-align=\\\"baseline\\\">%%STRING%%</fo:inline>\",\n \"@strip-periods/true\": CSL.Output.Formatters.passthrough,\n \"@strip-periods/false\": CSL.Output.Formatters.passthrough,\n \"@quotes/true\": function (state, str) {\n if (\"undefined\" === typeof str) {\n return state.getTerm(\"open-quote\");\n }\n return state.getTerm(\"open-quote\") + str + state.getTerm(\"close-quote\");\n },\n \"@quotes/inner\": function (state, str) {\n if (\"undefined\" === typeof str) {\n return \"\\u2019\";\n }\n return state.getTerm(\"open-inner-quote\") + str + state.getTerm(\"close-inner-quote\");\n },\n \"@quotes/false\": false,\n \"@cite/entry\": function (state, str) {\n return state.sys.wrapCitationEntry(str, this.item_id, this.locator_txt, this.suffix_txt);\n },\n \"@bibliography/entry\": function (state, str) {\n var indent = \"\";\n if (state.bibliography && state.bibliography.opt && state.bibliography.opt.hangingindent) {\n var hi = state.bibliography.opt.hangingindent;\n indent = \" start-indent=\\\"\" + hi +\"em\\\" text-indent=\\\"-\" + hi + \"em\\\"\";\n }\n var insert = \"\";\n if (state.sys.embedBibliographyEntry) {\n insert = state.sys.embedBibliographyEntry(this.item_id) + \"\\n\";\n }\n return \"<fo:block id=\\\"\" + this.system_id + \"\\\"\" + indent + \">\" + str + \"</fo:block>\\n\" + insert;\n },\n \"@display/block\": function (state, str) {\n return \"\\n <fo:block>\" + str + \"</fo:block>\\n\";\n },\n \"@display/left-margin\": function (state, str) {\n return \"\\n <fo:table table-layout=\\\"fixed\\\" width=\\\"100%\\\">\\n \" +\n \"<fo:table-column column-number=\\\"1\\\" column-width=\\\"$$$__COLUMN_WIDTH_1__$$$\\\"/>\\n \" +\n \"<fo:table-column column-number=\\\"2\\\" column-width=\\\"proportional-column-width(1)\\\"/>\\n \" +\n \"<fo:table-body>\\n \" +\n \"<fo:table-row>\\n \" +\n \"<fo:table-cell>\\n \" +\n \"<fo:block>\" + str + \"</fo:block>\\n \" +\n \"</fo:table-cell>\\n \";\n },\n \"@display/right-inline\": function (state, str) {\n return \"<fo:table-cell>\\n \" +\n \"<fo:block>\" + str + \"</fo:block>\\n \" +\n \"</fo:table-cell>\\n \" +\n \"</fo:table-row>\\n \" +\n \"</fo:table-body>\\n \" +\n \"</fo:table>\\n\";\n },\n \"@display/indent\": function (state, str) {\n return \"<fo:block margin-left=\\\"2em\\\">\" + str + \"</fo:block>\\n\";\n },\n \"@showid/true\": function (state, str) {\n if (!state.tmp.just_looking && !state.tmp.suppress_decorations && this.params && \"string\" === typeof str) {\n var prePunct = \"\";\n if (str) {\n var m = str.match(CSL.VARIABLE_WRAPPER_PREPUNCT_REX);\n prePunct = m[1];\n str = m[2];\n }\n var postPunct = \"\";\n if (str && CSL.SWAPPING_PUNCTUATION.indexOf(str.slice(-1)) > -1) {\n postPunct = str.slice(-1);\n str = str.slice(0,-1);\n }\n return state.sys.variableWrapper(this.params, prePunct, str, postPunct);\n } else {\n return str;\n }\n },\n \"@URL/true\": function (state, str) {\n return \"<fo:basic-link external-destination=\\\"url('\" + str + \"')\\\">\" + str + \"</fo:basic-link>\";\n },\n \"@DOI/true\": function (state, str) {\n var doiurl = str;\n if (!str.match(/^https?:\\/\\//)) {\n doiurl = \"https://doi.org/\" + str;\n }\n return \"<fo:basic-link external-destination=\\\"url('\" + doiurl + \"')\\\">\" + str + \"</fo:basic-link>\";\n }\n};\n\n/**\n * LaTeX .bbl output.\n *\n * (Code contributed by Egon Willighagen, based on the prototype.text code.)\n */\nCSL.Output.Formats.prototype.latex = {\n \"text_escape\": function (text) {\n if (!text) {\n text = \"\";\n }\n return text;\n },\n \"bibstart\": \"\\\\begin{thebibliography}{4}\",\n \"bibend\": \"\\\\end{thebibliography}\",\n \"@font-style/italic\": \"{\\\\em %%STRING%%}\",\n \"@font-style/oblique\": false,\n \"@font-style/normal\": false,\n \"@font-variant/small-caps\": false,\n \"@passthrough/true\": CSL.Output.Formatters.passthrough,\n \"@font-variant/normal\": false,\n \"@font-weight/bold\": \"{\\\\bf %%STRING%%}\",\n \"@font-weight/normal\": false,\n \"@font-weight/light\": false,\n \"@text-decoration/none\": false,\n \"@text-decoration/underline\": false,\n \"@vertical-align/baseline\": false,\n \"@vertical-align/sup\": false,\n \"@vertical-align/sub\": false,\n \"@strip-periods/true\": CSL.Output.Formatters.passthrough,\n \"@strip-periods/false\": CSL.Output.Formatters.passthrough,\n \"@quotes/true\": function (state, str) {\n if (\"undefined\" === typeof str) {\n return state.getTerm(\"open-quote\");\n }\n return state.getTerm(\"open-quote\") + str + state.getTerm(\"close-quote\");\n },\n \"@quotes/inner\": function (state, str) {\n if (\"undefined\" === typeof str) {\n //\n // Mostly right by being wrong (for apostrophes)\n //\n return \"\\u2019\";\n }\n return state.getTerm(\"open-inner-quote\") + str + state.getTerm(\"close-inner-quote\");\n },\n \"@quotes/false\": false,\n //\"@bibliography/body\": function (state,str){\n // return \"<div class=\\\"csl-bib-body\\\">\\n\"+str+\"</div>\";\n //},\n \"@cite/entry\": function (state, str) {\n\t\treturn state.sys.wrapCitationEntry(str, this.item_id, this.locator_txt, this.suffix_txt);\n\t},\n \"@bibliography/entry\": function (state, str) {\n return \"\\\\bibitem{\" + state.sys.embedBibliographyEntry(this.item_id) + \"}\\n\";\n },\n \"@display/block\": function (state, str) {\n return \"\\n\"+str;\n },\n \"@display/left-margin\": function (state, str) {\n return str;\n },\n \"@display/right-inline\": function (state, str) {\n return str;\n },\n \"@display/indent\": function (state, str) {\n return \"\\n \"+str;\n },\n \"@showid/true\": function (state, str, cslid) {\n return str;\n },\n \"@URL/true\": function (state, str) {\n return str;\n },\n \"@DOI/true\": function (state, str) {\n return str;\n }\n};\n\nCSL.Output.Formats = new CSL.Output.Formats();\n\n/*global CSL: true */\n\n\n//\n// Time for a rewrite of this module.\n//\n// Simon has pointed out that list and hash behavior can\n// be obtained by ... just using a list and a hash. This\n// is faster for batched operations, because sorting is\n// greatly optimized. Since most of the interaction\n// with plugins at runtime will involve batches of\n// references, there will be solid gains if the current,\n// one-reference-at-a-time approach implemented here\n// can be replaced with something that leverages the native\n// sort method of the Array() type.\n//\n// That's going to take some redesign, but it will simplify\n// things in the long run, so it might as well happen now.\n//\n// We'll keep makeCitationCluster and makeBibliography as\n// simple methods that return a string. Neither should\n// have any effect on internal state. This will be a change\n// in behavior for makeCitationCluster.\n//\n// A new updateItems command will be introduced, to replace\n// insertItems. It will be a simple list of IDs, in the\n// sequence of first reference in the document.\n//\n// The calling application should always invoke updateItems\n// before makeCitationCluster.\n//\n\n//\n// should allow batched registration of items by\n// key. should behave as an update, with deletion\n// of items and the tainting of disambiguation\n// partner sets affected by a deletes and additions.\n//\n//\n// we'll need a reset method, to clear the decks\n// in the citation area and start over.\n\n/**\n * Registry of cited items.\n * <p>This is a persistent store of disambiguation and\n * sort order information relating to individual items\n * for which rendering is requested. Item data is stored\n * in a hash, with the item key as hash key, for quick\n * retrieval. A virtual sequence within the hashed store\n * is maintained on the fly as items are added to the\n * store, using <code>*_next</code> and <code>*_prev</code>\n * attributes on each item. A separate hash of items\n * based on their undisambiguated cite form is\n * maintained, and the item id list and disambiguation\n * level for each set of disambiguation partners is shared\n * through the registry item.</p>\n * @class\n */\nCSL.Registry = function (state) {\n this.debug = false;\n this.state = state;\n this.registry = {};\n this.reflist = [];\n this.refhash = {};\n this.namereg = new CSL.Registry.NameReg(state);\n this.citationreg = new CSL.Registry.CitationReg(state);\n // See CSL.NameOutput.prototype.outputNames\n // and CSL.Registry.prototype.doinserts\n this.authorstrings = {};\n \n // for parallel delimiter support\n this.masterMap = {};\n \n //\n // shared scratch vars\n this.mylist = [];\n this.myhash = {};\n this.deletes = [];\n this.inserts = [];\n this.uncited = {};\n this.refreshes = {};\n this.akeys = {};\n this.oldseq = {};\n this.return_data = {};\n //\n // each ambig is a list of the ids of other objects\n // that have the same base-level rendering\n this.ambigcites = {};\n this.ambigresets = {};\n this.sorter = new CSL.Registry.Comparifier(state, \"bibliography_sort\");\n //this.modes = CSL.getModes.call(this.state);\n //this.checkerator = new CSL.Checkerator();\n\n this.getSortedIds = function () {\n var ret = [];\n for (var i = 0, ilen = this.reflist.length; i < ilen; i += 1) {\n ret.push(\"\" + this.reflist[i].id);\n }\n return ret;\n };\n\n this.getSortedRegistryItems = function () {\n var ret = [];\n for (var i = 0, ilen = this.reflist.length; i < ilen; i += 1) {\n ret.push(this.reflist[i]);\n }\n return ret;\n };\n};\n\n//\n// Here's the sequence of operations to be performed on\n// update:\n//\n// 1. (o) [init] Receive list as function argument, store as hash and as list.\n// 2. (o) [init] Initialize refresh list. Never needs sorting, only hash required.\n\n// 3. (o) [dodeletes] Delete loop.\n// 3a. (o) [dodeletes] Delete names in items to be deleted from names reg.\n// 3b. (o) [dodeletes] Complement refreshes list with items affected by\n// possible name changes. We'll actually perform the refresh once\n// all of the necessary data and parameters have been established\n// in the registry.\n// 3c. (o) [dodeletes] Delete all items to be deleted from their disambig pools.\n// 3d. (o) [dodeletes] Delete all items in deletion list from hash.\n\n// 4. (o) [doinserts] Insert loop.\n// 4a. (o) [doinserts] Retrieve entries for items to insert.\n// 4b. (o) [doinserts] Generate ambig key.\n// 4c. (o) [doinserts] Add names in items to be inserted to names reg\n// (implicit in getAmbiguousCite).\n// 4d. (o) [doinserts] Record ambig pool key on akey list (used for updating further\n// down the chain).\n// 4e. (o) [doinserts] Create registry token.\n// 4f. (o) [doinserts] Add item ID to hash.\n// 4g. (o) [doinserts] Set and record the base token to hold disambiguation\n// results (\"disambig\" in the object above).\n// 5. (o) [rebuildlist] Create \"new\" list of hash pointers, in the order given\n// in the argument to the update function.\n// 6. (o) [rebuildlist] Apply citation numbers to new list.\n// 7. (o) [dorefreshes] Refresh items requiring update.\n\n\n\n// 5. (o) [delnames] Delete names in items to be deleted from names reg, and obtain IDs\n// of other items that would be affected by changes around that surname.\n// 6. (o) [delnames] Complement delete and insert lists with items affected by\n// possible name changes.\n// 7. (o) [delambigs] Delete all items to be deleted from their disambig pools.\n// 8. (o) [delhash] Delete all items in deletion list from hash.\n\n// 9. (o) [addtohash] Retrieve entries for items to insert.\n// 10. (o) [addtohash] Add items to be inserted to their disambig pools.\n// 11. (o) [addtohash] Add names in items to be inserted to names reg\n// (implicit in getAmbiguousCite).\n// 12. (o) [addtohash] Create registry token for each item to be inserted.\n// 13. (o) [addtohash] Add items for insert to hash.\n\n// 14. (o) [buildlist] Create \"new\" list of hash pointers, in the order given in the argument\n// to the update function.\n// 15. (o) [renumber] Apply citation numbers to new list.\n// 16. (o) [setdisambigs] Set disambiguation parameters on each inserted item token.\n// 17. (o) [setsortkeys] Set sort keys on each item token.\n// 18. (o) [sorttokens] Resort token list\n// 19. (o) [renumber] Reset citation numbers on list items\n//\n\nCSL.Registry.prototype.init = function (itemIDs, uncited_flag) {\n var i, ilen;\n this.oldseq = {};\n // 1. Receive list as function argument, store as hash and as list.\n //\n // Result:\n // this.mylist: a list of all itemIDs of referenced items, cited and uncited.\n // this.myhash: a hash of index positions in this.mylist.\n // this.uncited: hash of uncited itemIDs.\n //\n // Proceed as follows.\n //\n if (uncited_flag) {\n // If uncited_flag is non-nil, add any missing itemIDs to this.mylist\n // from itemIDs input list, and set the itemIDs in itemIDs on this.uncited.\n this.uncited = {};\n for (var i=0,ilen=itemIDs.length;i<ilen; i += 1) {\n if (!this.myhash[itemIDs[i]]) {\n this.mylist.push(\"\" + itemIDs[i]);\n }\n this.uncited[itemIDs[i]] = true;\n this.myhash[itemIDs[i]] = true;\n }\n } else {\n // If uncited_flag is nil, remove duplicate itemIDs from itemIDs input\n // list, set the result on this.mylist, and add missing itemIDs to\n // this.mylist from itemIDs input list.\n for (var key in this.uncited) {\n itemIDs.push(key);\n }\n var myhash = {};\n for (i=itemIDs.length-1;i>-1; i += -1) {\n if (myhash[itemIDs[i]]) {\n itemIDs = itemIDs.slice(0, i).concat(itemIDs.slice(i + 1));\n } else {\n myhash[itemIDs[i]] = true;\n }\n }\n this.mylist = itemIDs;\n this.myhash = myhash;\n }\n //\n // 2. Initialize refresh list. Never needs sorting, only hash required.\n //\n this.refreshes = {};\n this.touched = {};\n this.ambigsTouched = {};\n this.ambigresets = {};\n};\n\nCSL.Registry.prototype.dopurge = function (myhash) {\n // Remove any uncited items not in myhash\n for (var i=this.mylist.length-1;i>-1;i+=-1) {\n // Might not want to be quite this restrictive.\n if (this.citationreg.citationsByItemId) {\n if ((!this.citationreg.citationsByItemId || !this.citationreg.citationsByItemId[this.mylist[i]]) && !myhash[this.mylist[i]]) {\n delete this.myhash[this.mylist[i]];\n delete this.uncited[this.mylist[i]];\n this.mylist = this.mylist.slice(0,i).concat(this.mylist.slice(i+1));\n }\n }\n }\n this.dodeletes(this.myhash);\n};\n\nCSL.Registry.prototype.dodeletes = function (myhash) {\n var otheritems, key, ambig, pos, len, items, kkey, mypos, id;\n if (\"string\" === typeof myhash) {\n var key = myhash;\n myhash = {};\n myhash[key] = true;\n }\n //\n // 3. Delete loop.\n //\n for (var key in this.registry) {\n if (!myhash[key]) {\n // skip items explicitly marked as uncited\n if (this.uncited[key]) {\n continue;\n }\n //\n // 3a. Delete names in items to be deleted from names reg.\n //\n otheritems = this.namereg.delitems(key);\n //\n // 3b. Complement refreshes list with items affected by\n // possible name changes. We'll actually perform the refresh once\n // all of the necessary data and parameters have been established\n // in the registry.\n //\n for (kkey in otheritems) {\n this.refreshes[kkey] = true;\n }\n //\n // 3c. Delete all items to be deleted from their disambig pools.\n //\n ambig = this.registry[key].ambig;\n mypos = this.ambigcites[ambig].indexOf(key);\n if (mypos > -1) {\n items = this.ambigcites[ambig].slice();\n this.ambigcites[ambig] = items.slice(0, mypos).concat(items.slice(mypos+1, items.length));\n this.ambigresets[ambig] = this.ambigcites[ambig].length;\n }\n //\n // XX. What we've missed is to provide an update of all\n // items sharing the same ambig += -1 the remaining items in\n // ambigcites. So let's do that here, just in case the\n // names update above doesn't catch them all.\n //\n len = this.ambigcites[ambig].length;\n for (pos = 0; pos < len; pos += 1) {\n id = \"\" + this.ambigcites[ambig][pos];\n this.refreshes[id] = true;\n }\n //\n // 3d-0. Remove parallel id references and realign\n // parallel ID refs.\n //\n if (this.registry[key].siblings) {\n if (this.registry[key].siblings.length == 1) {\n var loneSiblingID = this.registry[key].siblings[0];\n if (this.registry[loneSiblingID].siblings) {\n this.registry[loneSiblingID].siblings.pop();\n this.registry[loneSiblingID].master = true;\n // this.registry[loneSiblingID].parallel = false;\n }\n } else if (this.registry[key].siblings.length > 1) {\n var removeIDs = [key];\n if (this.registry[key].master) {\n var newmasterID = this.registry[key].siblings[0];\n var newmaster = this.registry[newmasterID];\n newmaster.master = true;\n // newmaster.parallel_delimiter is set externally, if at all\n // newmaster.parallel = false;\n removeIDs.push(newmasterID);\n // for (var k = 0, klen = this.registry[key].siblings.length; k < klen; k += 1) {\n // this.registry[this.registry[key].siblings[k]].parallel = newmasterID;\n // }\n }\n var buffer = [];\n for (var k = this.registry[key].siblings.length - 1; k > -1; k += -1) {\n var siblingID = this.registry[key].siblings.pop();\n if (removeIDs.indexOf(siblingID) === -1) {\n buffer.push(siblingID);\n }\n }\n for (var k = buffer.length - 1; k > -1; k += -1) {\n this.registry[key].siblings.push(buffer[k]);\n }\n }\n }\n //\n // 3d-1. Remove item from reflist\n for (var i=this.reflist.length-1;i>-1;i--) {\n if (this.reflist[i].id === key) {\n this.reflist = this.reflist.slice(0, i).concat(this.reflist.slice(i+1));\n }\n }\n //\n // 3d. Delete all items in deletion list from hash.\n //\n delete this.registry[key];\n delete this.refhash[key];\n\n // For processCitationCluster()\n this.return_data.bibchange = true;\n }\n }\n // Disabled. See formats.js for code.\n // this.state.fun.decorate.items_delete( this.state.output[this.state.opt.mode].tmp, myhash );\n};\n\nCSL.Registry.prototype.doinserts = function (mylist) {\n var item, Item, akey, newitem, abase, i, ilen;\n if (\"string\" === typeof mylist) {\n mylist = [mylist];\n }\n //\n // 4. Insert loop.\n //\n for (var i = 0, ilen = mylist.length; i < ilen; i += 1) {\n item = mylist[i];\n if (!this.registry[item]) {\n //\n // 4a. Retrieve entries for items to insert.\n //\n Item = this.state.retrieveItem(item);\n\n //\n // 4b. Generate ambig key.\n //\n // AND\n //\n // 4c. Add names in items to be inserted to names reg\n // (implicit in getAmbiguousCite).\n //\n akey = CSL.getAmbiguousCite.call(this.state, Item);\n this.ambigsTouched[akey] = true;\n //\n // 4d. Record ambig pool key on akey list (used for updating further\n // down the chain).\n //\n if (!Item.legislation_id) {\n this.akeys[akey] = true;\n }\n //\n // 4e. Create registry token.\n //\n newitem = {\n \"id\": \"\" + item,\n \"seq\": 0,\n \"offset\": 0,\n \"sortkeys\": false,\n \"ambig\": false,\n \"rendered\": false,\n \"disambig\": false,\n \"ref\": Item,\n \"newItem\": true\n };\n //\n //\n // 4f. Add item ID to hash.\n //\n this.registry[item] = newitem;\n //\n // 4f(a). Add first reference note number\n // (this may be redundant)\n if (this.citationreg.citationsByItemId && this.citationreg.citationsByItemId[item]) {\n this.registry[item][\"first-reference-note-number\"] = this.citationreg.citationsByItemId[item][0].properties.noteIndex;\n }\n\n //\n // 4g. Set and record the base token to hold disambiguation\n // results (\"disambig\" in the object above).\n //\n abase = CSL.getAmbigConfig.call(this.state);\n this.registerAmbigToken(akey, item, abase);\n\n //if (!this.ambigcites[akey]){\n // this.ambigcites[akey] = [];\n //}\n //CSL.debug(\"Run: \"+item+\"(\"+this.ambigcites[akey]+\")\");\n //if (this.ambigcites[akey].indexOf(item) === -1){\n // CSL.debug(\" Add: \"+item);\n // this.ambigcites[akey].push(item);\n //}\n //\n // 4h. Make a note that this item needs its sort keys refreshed.\n //\n this.touched[item] = true;\n // For processCitationCluster()\n this.return_data.bibchange = true;\n }\n }\n // Disabled. See formats.js for code.\n // this.state.fun.decorate.items_add( this.state.output[this.state.opt.mode].tmp, mylist );\n};\n\n/*\n// No longer required.\nCSL.Registry.prototype.douncited = function () {\n var pos, len;\n var cited_len = this.mylist.length - this.uncited.length;\n for (pos = 0, len = cited_len; pos < len; pos += 1) {\n this.registry[this.mylist[pos]].uncited = false;\n }\n for (pos = cited_len, len = this.mylist.length; pos < len; pos += 1) {\n this.registry[this.mylist[pos]].uncited = true;\n }\n};\n*/\n\nCSL.Registry.prototype.rebuildlist = function (nosort) {\n var len, pos, item, Item;\n //\n // 5. Create \"new\" list of hash pointers, in the order given in the argument\n // to the update function.\n //\n //\n // XXX Keep reflist in place.\n //\n if (!nosort) {\n this.reflist_inserts = [];\n //\n // 6. Apply citation numbers to new list,\n // saving off old sequence numbers as we go.\n //\n // XXX Just memo inserts -- actual insert happens below, at last \"sort\"\n //\n len = this.mylist.length;\n for (pos = 0; pos < len; pos += 1) {\n item = this.mylist[pos];\n Item = this.registry[item];\n if (Item.newItem) {\n this.reflist_inserts.push(Item);\n }\n this.oldseq[item] = this.registry[item].seq;\n this.registry[item].seq = (pos + 1);\n }\n } else {\n this.reflist = [];\n len = this.mylist.length;\n for (pos = 0; pos < len; pos += 1) {\n item = this.mylist[pos];\n Item = this.registry[item];\n this.reflist.push(Item);\n this.oldseq[item] = this.registry[item].seq;\n this.registry[item].seq = (pos + 1);\n }\n }\n};\n\n/*\n * Okay, at this point we should have a numbered list\n * of registry tokens in the notional order requested,\n * with sequence numbers to reconstruct the ordering\n * if the list is remangled. So far so good.\n */\n\nCSL.Registry.prototype.dorefreshes = function () {\n var key, regtoken, Item, akey, abase;\n //\n // 7. Refresh items requiring update.\n //\n // It looks like we need to do four things on each cite for refresh:\n // (1) Generate the akey for the cite.\n // (2) Register it on the ambig token.\n // (3) Register the akey in this.akeys\n // (4) Register the item ID in this.touched\n //\n for (var key in this.refreshes) {\n regtoken = this.registry[key];\n if (!regtoken) {\n continue;\n }\n regtoken.sortkeys = undefined;\n Item = this.state.refetchItem(key);\n var akey = regtoken.ambig;\n\n if (\"undefined\" === typeof akey) {\n this.state.tmp.disambig_settings = false;\n akey = CSL.getAmbiguousCite.call(this.state, Item);\n abase = CSL.getAmbigConfig.call(this.state);\n this.registerAmbigToken(akey, key, abase);\n }\n for (var akkey in this.ambigresets) {\n if (this.ambigresets[akkey] === 1) {\n var loneKey = this.ambigcites[akey][0];\n var Item = this.state.refetchItem(loneKey);\n this.registry[loneKey].disambig = new CSL.AmbigConfig();\n this.state.tmp.disambig_settings = false;\n var akey = CSL.getAmbiguousCite.call(this.state, Item);\n var abase = CSL.getAmbigConfig.call(this.state);\n this.registerAmbigToken(akey, loneKey, abase);\n }\n }\n this.state.tmp.taintedItemIDs[key] = true;\n this.ambigsTouched[akey] = true;\n if (!Item.legislation_id) {\n this.akeys[akey] = true;\n }\n this.touched[key] = true;\n }\n};\n\n/*\n * Main disambiguation += -1 can everything for disambiguation be\n * crunched into this function?\n */\nCSL.Registry.prototype.setdisambigs = function () {\n //\n // Okay, more changes. Here is where we resolve all disambiguation\n // issues for cites touched by the update. The this.ambigcites set is\n // based on the complete short form of citations, and is the basis on\n // which names are added and minimal adding of initials or given names\n // is performed.\n //\n\n //\n // 8. Set disambiguation parameters on each inserted item token.\n //\n for (var akey in this.ambigsTouched) {\n //\n // Disambiguation is fully encapsulated.\n // Disambiguator will run only if there are multiple\n // items, and at least one disambiguation mode is\n // in effect.\n this.state.disambiguate.run(akey);\n }\n this.ambigsTouched = {};\n this.akeys = {};\n};\n\n\n\nCSL.Registry.prototype.renumber = function () {\n var len, pos, item;\n //\n // 19. Reset citation numbers on list items\n //\n if (this.state.bibliography_sort.opt.citation_number_sort_direction === CSL.DESCENDING) {\n this.state.bibliography_sort.tmp.citation_number_map = {};\n }\n len = this.reflist.length;\n for (pos = 0; pos < len; pos += 1) {\n item = this.reflist[pos];\n // save the overhead of rerenderings if citation-number is not\n // used in the style.\n item.seq = (pos + 1);\n if (this.state.bibliography_sort.opt.citation_number_sort_direction === CSL.DESCENDING) {\n this.state.bibliography_sort.tmp.citation_number_map[item.seq] = (this.reflist.length - item.seq + 1);\n }\n // update_mode is set to CSL.NUMERIC if citation-number is rendered\n // in citations.\n if (this.state.opt.update_mode === CSL.NUMERIC && item.seq != this.oldseq[item.id]) {\n this.state.tmp.taintedItemIDs[item.id] = true;\n }\n if (item.seq != this.oldseq[item.id]) {\n this.return_data.bibchange = true;\n }\n }\n};\n\nCSL.Registry.prototype.setsortkeys = function () {\n var key;\n //\n // 17. Set sort keys on each item token.\n //\n for (var i = 0, ilen = this.mylist.length; i < ilen; i += 1) {\n var key = this.mylist[i];\n // The last of these conditions may create some thrashing on styles that do not require sorting.\n if (this.touched[key] || this.state.tmp.taintedItemIDs[key] || !this.registry[key].sortkeys) {\n this.registry[key].sortkeys = CSL.getSortKeys.call(this.state, this.state.retrieveItem(key), \"bibliography_sort\");\n }\n }\n};\n\nCSL.Registry.prototype._insertItem = function(element, array) {\n array.splice(this._locationOf(element, array) + 1, 0, element);\n return array;\n};\n\nCSL.Registry.prototype._locationOf = function(element, array, start, end) {\n if (array.length === 0) {\n return -1;\n }\n start = start || 0;\n end = end || array.length;\n var pivot = (start + end) >> 1; // should be faster than dividing by 2\n \n var c = this.sorter.compareKeys(element, array[pivot]);\n if (end - start <= 1) {\n return c == -1 ? pivot - 1 : pivot;\n }\n switch (c) {\n case -1: return this._locationOf(element, array, start, pivot);\n case 0: return pivot;\n case 1: return this._locationOf(element, array, pivot, end);\n }\n};\n\nCSL.Registry.prototype.sorttokens = function (nosort) {\n var len, item, Item, pos;\n //\n // 18. Resort token list.\n //\n if (!nosort) {\n this.reflist_inserts = [];\n len = this.mylist.length;\n for (pos = 0; pos < len; pos += 1) {\n item = this.mylist[pos];\n Item = this.registry[item];\n if (Item.newItem) {\n this.reflist_inserts.push(Item);\n }\n }\n // There is a thin possibility that tainted items in a sorted list\n // will change position due to disambiguation. We cover for that here.\n for (var key in this.state.tmp.taintedItemIDs) {\n if (this.registry[key] && !this.registry[key].newItem) {\n // Move tainted items from reflist to reflist_inserts\n for (var i=this.reflist.length-1;i>-1;i--) {\n if (this.reflist[i].id === key) {\n this.reflist_inserts.push(this.reflist[i]);\n this.reflist = this.reflist.slice(0, i).concat(this.reflist.slice(i+1));\n }\n }\n }\n }\n for (var i=0,ilen=this.reflist_inserts.length;i<ilen;i++) {\n var Item = this.reflist_inserts[i];\n delete Item.newItem;\n this.reflist = this._insertItem(Item, this.reflist);\n }\n for (pos = 0; pos < len; pos += 1) {\n item = this.mylist[pos];\n Item = this.registry[item];\n this.registry[item].seq = (pos + 1);\n }\n }\n};\n\n/**\n * Compare two sort keys\n * <p>Nested, because keys are an array.</p>\n */\nCSL.Registry.Comparifier = function (state, keyset) {\n var sort_directions, len, pos, compareKeys;\n var sortCompare = CSL.getSortCompare.call(state, state.opt[\"default-locale-sort\"]);\n sort_directions = state[keyset].opt.sort_directions;\n this.compareKeys = function (a, b) {\n len = a.sortkeys ? a.sortkeys.length : 0;\n for (pos = 0; pos < len; pos += 1) {\n //\n // for ascending sort 1 uses 1, -1 uses -1.\n // For descending sort, the values are reversed.\n //\n // Need to handle undefined values. No way around it.\n // So have to screen .localeCompare (which is also\n // needed) from undefined values. Everywhere, in all\n // compares.\n //\n var cmp = 0;\n if (a.sortkeys[pos] === b.sortkeys[pos]) {\n cmp = 0;\n } else if (\"undefined\" === typeof a.sortkeys[pos]) {\n cmp = sort_directions[pos][1];\n } else if (\"undefined\" === typeof b.sortkeys[pos]) {\n cmp = sort_directions[pos][0];\n } else {\n // cmp = a.sortkeys[pos].localeCompare(b.sortkeys[pos]);\n cmp = sortCompare(a.sortkeys[pos], b.sortkeys[pos]);\n }\n if (0 < cmp) {\n return sort_directions[pos][1];\n } else if (0 > cmp) {\n return sort_directions[pos][0];\n }\n }\n if (a.seq > b.seq) {\n return 1;\n } else if (a.seq < b.seq) {\n return -1;\n }\n return 0;\n };\n compareKeys = this.compareKeys;\n this.compareCompositeKeys = function (a, b) {\n return compareKeys(a[1], b[1]);\n };\n};\n\n\n/**\n * Compare two disambiguation tokens by their registry sort order\n * <p>Disambiguation lists need to be sorted this way, to\n * obtain the correct year-suffix when that's used.</p>\n */\nCSL.Registry.prototype.compareRegistryTokens = function (a, b) {\n if (a.seq > b.seq) {\n return 1;\n } else if (a.seq < b.seq) {\n return -1;\n }\n return 0;\n};\n\nCSL.Registry.prototype.registerAmbigToken = function (akey, id, ambig_config) {\n //SNIP-START\n if (!this.registry[id]) {\n CSL.debug(\"Warning: unregistered item: itemID=(\"+id+\"), akey=(\"+akey+\")\");\n }\n //SNIP-END\n // Taint if number of names to be included has changed\n if (this.registry[id] && this.registry[id].disambig && this.registry[id].disambig.names) {\n for (var i = 0, ilen = ambig_config.names.length; i < ilen; i += 1) {\n var new_names_params = ambig_config.names[i];\n var old_names_params = this.registry[id].disambig.names[i];\n if (new_names_params !== old_names_params) {\n this.state.tmp.taintedItemIDs[id] = true;\n } else if (ambig_config.givens[i]) {\n // Compare givenses only if the number of names is aligned.\n for (var j=0,jlen=ambig_config.givens[i].length;j<jlen;j+=1) {\n var new_gnames_params = ambig_config.givens[i][j];\n var old_gnames_params = this.registry[id].disambig.givens[i][j];\n if (new_gnames_params !== old_gnames_params) {\n this.state.tmp.taintedItemIDs[id] = true;\n }\n }\n }\n }\n }\n\n if (!this.ambigcites[akey]) {\n this.ambigcites[akey] = [];\n }\n if (this.ambigcites[akey].indexOf(\"\" + id) === -1) {\n this.ambigcites[akey].push(\"\" + id);\n }\n this.registry[id].ambig = akey;\n this.registry[id].disambig = CSL.cloneAmbigConfig(ambig_config);\n};\n\n\n/**\n * Get the sort key of an item, without decorations\n * <p>This is used internally by the Registry.</p>\n */\nCSL.getSortKeys = function (Item, key_type) {\n var area, root, extension, strip_prepositions, len, pos;\n //SNIP-START\n if (false) {\n CSL.debug(\"KEY TYPE: \" + key_type);\n }\n //SNIP-END\n area = this.tmp.area;\n root = this.tmp.root;\n extension = this.tmp.extension;\n strip_prepositions = CSL.Util.Sort.strip_prepositions;\n this.tmp.area = key_type;\n // Gawdawful, this.\n this.tmp.root = key_type.indexOf(\"_\") > -1 ? key_type.slice(0,-5) : key_type;\n this.tmp.extension = \"_sort\";\n this.tmp.disambig_override = true;\n this.tmp.disambig_request = false;\n this.tmp.suppress_decorations = true;\n CSL.getCite.call(this, Item);\n this.tmp.suppress_decorations = false;\n this.tmp.disambig_override = false;\n len = this[key_type].keys.length;\n for (pos = 0; pos < len; pos += 1) {\n this[key_type].keys[pos] = strip_prepositions(this[key_type].keys[pos]);\n }\n //SNIP-START\n if (false) {\n CSL.debug(\"sort keys (\" + key_type + \"): \" + this[key_type].keys);\n }\n //SNIP-END\n \n this.tmp.area = area;\n this.tmp.root = root;\n this.tmp.extension = extension;\n return this[key_type].keys;\n};\n\n\n/*global CSL: true */\n\nCSL.Registry.NameReg = function (state) {\n var pkey, ikey, skey, dagopt, gdropt, items, strip_periods, set_keys, evalname, delitems, addname, myitems;\n this.state = state;\n this.namereg = {};\n this.nameind = {};\n // used for restoring state following preview\n this.nameindpkeys = {};\n //\n // family, initials form, fullname (with given stripped of periods)\n //\n // keys registered, indexed by ID\n this.itemkeyreg = {};\n\n strip_periods = function (str) {\n if (!str) {\n str = \"\";\n }\n return str.replace(/\\./g, \" \").replace(/\\s+/g, \" \").replace(/\\s+$/,\"\");\n };\n\n set_keys = function (state, itemid, nameobj) {\n pkey = strip_periods(nameobj.family);\n\n if (state.opt[\"demote-non-dropping-particle\"] === \"never\" && nameobj[\"non-dropping-particle\"] && nameobj[\"family\"]) {\n pkey = `${pkey} ${nameobj[\"non-dropping-particle\"]}`;\n }\n \n skey = strip_periods(nameobj.given);\n // Drop lowercase suffixes (such as et al.) from given name field\n // for disambiguation purposes.\n var m = skey.match(/[,\\!]* ([^,]+)$/);\n if (m && m[1] === m[1].toLowerCase()) {\n skey = skey.replace(/[,\\!]* [^,]+$/, \"\");\n }\n // The %s terminator enables normal initialization behavior\n // with non-Byzantine names.\n ikey = CSL.Util.Names.initializeWith(state, skey, \"%s\");\n if (state.citation.opt[\"givenname-disambiguation-rule\"] === \"by-cite\") {\n pkey = \"\" + itemid + pkey;\n }\n };\n\n evalname = function (item_id, nameobj, namenum, request_base, form, initials) {\n var param;\n // XXX THIS CAN NO LONGER HAPPEN\n if (state.tmp.area.slice(0, 12) === \"bibliography\" && !form) {\n if (\"string\" === typeof initials) {\n return 1;\n } else {\n return 2;\n }\n }\n var res = state.nameOutput.getName(nameobj, \"locale-translit\", true);\n nameobj = res.name;\n set_keys(this.state, \"\" + item_id, nameobj);\n //\n // possible options are:\n //\n // <option disambiguate-add-givenname value=\"true\"/> (a)\n // <option disambiguate-add-givenname value=\"all-names\"/> (a)\n // <option disambiguate-add-givenname value=\"all-names-with-initials\"/> (b)\n // <option disambiguate-add-givenname value=\"primary-name\"/> (d)\n // <option disambiguate-add-givenname value=\"primary-name-with-initials\"/> (e)\n // <option disambiguate-add-givenname value=\"by-cite\"/> (g)\n //\n param = 2;\n dagopt = state.opt[\"disambiguate-add-givenname\"];\n gdropt = state.citation.opt[\"givenname-disambiguation-rule\"];\n var gdropt_orig = gdropt;\n if (gdropt === \"by-cite\") {\n gdropt = \"all-names\";\n }\n //\n // set initial value\n //\n if (\"short\" === form) {\n param = 0;\n } else if (\"string\" === typeof initials) {\n param = 1;\n }\n //\n // give literals a pass\n if (\"undefined\" === typeof this.namereg[pkey] || \"undefined\" === typeof this.namereg[pkey].ikey[ikey]) {\n return param;\n }\n //\n // adjust value upward if appropriate -- only if running\n // a non-names-global disambiguation strategy\n //\n if (gdropt_orig === \"by-cite\" && param <= request_base) {\n //param = request_base;\n return request_base;\n }\n if (!dagopt) {\n return param;\n }\n if (\"string\" === typeof gdropt && gdropt.slice(0, 12) === \"primary-name\" && namenum > 0) {\n return param;\n }\n //\n // the last composite condition is for backward compatibility\n //\n if (!gdropt || gdropt === \"all-names\" || gdropt === \"primary-name\") {\n if (this.namereg[pkey].count > 1) {\n param = 1;\n }\n if ((this.namereg[pkey].ikey \n && this.namereg[pkey].ikey[ikey].count > 1)\n || (this.namereg[pkey].count > 1 \n && \"string\" !== typeof initials)) {\n\n param = 2;\n }\n } else if (gdropt === \"all-names-with-initials\" || gdropt === \"primary-name-with-initials\") {\n if (this.namereg[pkey].count > 1) {\n param = 1;\n } else {\n param = 0;\n }\n }\n if (!state.registry.registry[item_id]) {\n if (form == \"short\") {\n return 0;\n } else if (\"string\" == typeof initials) {\n return 1;\n }\n } else {\n return param;\n }\n };\n\n //\n // The operation of this function does not show up in the\n // standard test suite, but it has been hand-tested with\n // a print trace, and seems to work okay.\n //\n delitems = function (ids) {\n var pos, len, posB, id, fullkey;\n if (\"string\" === typeof ids || \"number\" === typeof ids) {\n ids = [\"\" + ids];\n }\n // ret carries the IDs of other items using this name.\n var ret = {};\n len = ids.length;\n for (pos = 0; pos < len; pos += 1) {\n id = \"\" + ids[pos];\n if (!this.nameind[id]) {\n continue;\n }\n for (fullkey in this.nameind[id]) {\n if (this.nameind[id].hasOwnProperty(fullkey)) {\n var key = fullkey.split(\"::\");\n pkey = key[0];\n ikey = key[1];\n skey = key[2];\n // Skip names that have been deleted already.\n // Needed to clear integration DisambiguateAddGivenname1.txt\n // and integration DisambiguateAddGivenname2.txt\n if (\"undefined\" === typeof this.namereg[pkey]) {\n continue;\n }\n\n // ????\n //posA = this.namereg[pkey].items.indexOf(posA);\n\n items = this.namereg[pkey].items;\n // This was really, really unperceptive. They key elements\n // have absolutely nothing to do with whether there was ever\n // a registration at each key level.\n if (skey && this.namereg[pkey].ikey[ikey] && this.namereg[pkey].ikey[ikey].skey[skey]) {\n myitems = this.namereg[pkey].ikey[ikey].skey[skey].items;\n posB = myitems.indexOf(\"\" + id);\n if (posB > -1) {\n this.namereg[pkey].ikey[ikey].skey[skey].items = myitems.slice(0, posB).concat(myitems.slice([(posB + 1)]));\n }\n if (this.namereg[pkey].ikey[ikey].skey[skey].items.length === 0) {\n delete this.namereg[pkey].ikey[ikey].skey[skey];\n this.namereg[pkey].ikey[ikey].count += -1;\n if (this.namereg[pkey].ikey[ikey].count < 2) {\n for (var i = 0, ilen = this.namereg[pkey].ikey[ikey].items.length; i < ilen; i += 1) {\n state.tmp.taintedItemIDs[this.namereg[pkey].ikey[ikey].items[i]] = true;\n }\n }\n }\n }\n if (ikey && this.namereg[pkey].ikey[ikey]) {\n posB = this.namereg[pkey].ikey[ikey].items.indexOf(\"\" + id);\n if (posB > -1) {\n items = this.namereg[pkey].ikey[ikey].items.slice();\n this.namereg[pkey].ikey[ikey].items = items.slice(0, posB).concat(items.slice([posB + 1]));\n }\n if (this.namereg[pkey].ikey[ikey].items.length === 0) {\n delete this.namereg[pkey].ikey[ikey];\n this.namereg[pkey].count += -1;\n if (this.namereg[pkey].count < 2) {\n for (var i = 0, ilen = this.namereg[pkey].items.length; i < ilen; i += 1) {\n state.tmp.taintedItemIDs[this.namereg[pkey].items[i]] = true;\n }\n }\n }\n }\n if (pkey) {\n posB = this.namereg[pkey].items.indexOf(\"\" + id);\n if (posB > -1) {\n items = this.namereg[pkey].items.slice();\n this.namereg[pkey].items = items.slice(0, posB).concat(items.slice([posB + 1], items.length));\n }\n if (this.namereg[pkey].items.length < 2) {\n delete this.namereg[pkey];\n }\n }\n delete this.nameind[id][fullkey];\n }\n }\n delete this.nameind[id];\n delete this.nameindpkeys[id];\n }\n return ret;\n };\n //\n // Run ALL\n // renderings with disambiguate-add-givenname set to a value\n // with the by-cite behaviour, and then set the names-based\n // expanded form when the final makeCitationCluster rendering\n // is output. This could be done with a single var set on\n // the state object in the execution wrappers that run the\n // style.\n //\n addname = function (item_id, nameobj, pos) {\n var i, ilen;\n var res = state.nameOutput.getName(nameobj, \"locale-translit\", true);\n nameobj = res.name;\n\n if (state.citation.opt[\"givenname-disambiguation-rule\"]\n && state.citation.opt[\"givenname-disambiguation-rule\"].slice(0, 8) === \"primary-\"\n && pos !== 0) {\n return;\n }\n\n // A hack. Safe if the name object is used only here, for disambiguation purposes.\n /*\n */\n \n //CSL.debug(\"INS\");\n set_keys(this.state, \"\" + item_id, nameobj);\n // pkey, ikey and skey should be stored in separate cascading objects.\n // there should also be a kkey, on each, which holds the item ids using\n // that form of the name.\n //\n // (later note: well, we seem to have slipped a notch here.\n // Adding lists of IDs all over the place here makes no sense;\n // the lists need to include _only_ the items currently rendered\n // at the given level, and the place to do that is in evalname,\n // and in delnames, not here.)\n if (pkey) {\n if (\"undefined\" === typeof this.namereg[pkey]) {\n this.namereg[pkey] = {};\n this.namereg[pkey].count = 0;\n this.namereg[pkey].ikey = {};\n this.namereg[pkey].items = [item_id];\n } else if (this.namereg[pkey].items.indexOf(item_id) === -1) {\n this.namereg[pkey].items.push(item_id);\n }\n// if (this.namereg[pkey].items.indexOf(item_id) === -1) {\n// this.namereg[pkey].items.push(item_id);\n// }\n }\n if (pkey && ikey) {\n if (\"undefined\" === typeof this.namereg[pkey].ikey[ikey]) {\n this.namereg[pkey].ikey[ikey] = {};\n this.namereg[pkey].ikey[ikey].count = 0;\n this.namereg[pkey].ikey[ikey].skey = {};\n this.namereg[pkey].ikey[ikey].items = [item_id];\n this.namereg[pkey].count += 1;\n if (this.namereg[pkey].count === 2) {\n for (var i = 0, ilen = this.namereg[pkey].items.length; i < ilen; i += 1) {\n state.tmp.taintedItemIDs[this.namereg[pkey].items[i]] = true;\n }\n }\n } else if (this.namereg[pkey].ikey[ikey].items.indexOf(item_id) === -1) {\n this.namereg[pkey].ikey[ikey].items.push(item_id);\n }\n// if (this.namereg[pkey].ikey[ikey].items.indexOf(item_id) === -1) {\n// this.namereg[pkey].ikey[ikey].items.push(item_id);\n// }\n }\n if (pkey && ikey && skey) {\n if (\"undefined\" === typeof this.namereg[pkey].ikey[ikey].skey[skey]) {\n this.namereg[pkey].ikey[ikey].skey[skey] = {};\n this.namereg[pkey].ikey[ikey].skey[skey].items = [item_id];\n this.namereg[pkey].ikey[ikey].count += 1;\n if (this.namereg[pkey].ikey[ikey].count === 2) {\n for (var i = 0, ilen = this.namereg[pkey].ikey[ikey].items.length; i < ilen; i += 1) {\n state.tmp.taintedItemIDs[this.namereg[pkey].ikey[ikey].items[i]] = true;\n }\n }\n } else if (this.namereg[pkey].ikey[ikey].skey[skey].items.indexOf(item_id) === -1) {\n this.namereg[pkey].ikey[ikey].skey[skey].items.push(item_id);\n }\n// if (this.namereg[pkey].ikey[ikey].skey[skey].items.indexOf(item_id) === -1) {\n// this.namereg[pkey].ikey[ikey].skey[skey].items.push(item_id);\n// }\n }\n if (\"undefined\" === typeof this.nameind[item_id]) {\n this.nameind[item_id] = {};\n this.nameindpkeys[item_id] = {};\n }\n //CSL.debug(\"INS-A: [\" + pkey + \"] [\" + ikey + \"] [\" + skey + \"]\");\n if (pkey) {\n this.nameind[item_id][pkey + \"::\" + ikey + \"::\" + skey] = true;\n this.nameindpkeys[item_id][pkey] = this.namereg[pkey];\n }\n //CSL.debug(\"INS-B\");\n };\n this.addname = addname;\n this.delitems = delitems;\n this.evalname = evalname;\n};\n\n/*global CSL: true */\n\nCSL.Registry.CitationReg = function () {\n this.citationById = {};\n this.citationByIndex = [];\n};\n\n/*global CSL: true */\n\nCSL.Disambiguation = function (state) {\n this.state = state;\n this.sys = this.state.sys;\n this.registry = state.registry.registry;\n this.ambigcites = state.registry.ambigcites;\n this.configModes();\n this.debug = false;\n};\n\nCSL.Disambiguation.prototype.run = function(akey) {\n if (!this.modes.length) {\n return;\n }\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"[A] === RUN ===\");\n }\n //SNIP-END\n this.akey = akey;\n if (this.initVars(akey)) {\n this.runDisambig();\n }\n\n};\n\nCSL.Disambiguation.prototype.runDisambig = function () {\n var ismax;\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"[C] === runDisambig() ===\");\n }\n //SNIP-END\n this.initGivens = true;\n //\n // Length of list may change during processing\n while (this.lists.length) {\n this.gnameset = 0;\n this.gname = 0;\n this.clashes = [1, 0];\n // each list is scanned repeatedly until all\n // items either succeed or ultimately fail.\n while(this.lists[0][1].length) {\n this.listpos = 0;\n if (!this.base) {\n this.base = this.lists[0][0];\n }\n ismax = this.incrementDisambig();\n this.scanItems(this.lists[0]);\n this.evalScan(ismax);\n }\n this.lists = this.lists.slice(1);\n }\n};\n\nCSL.Disambiguation.prototype.scanItems = function (list) {\n var pos, len, otherItem;\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"[2] === scanItems() ===\");\n }\n //SNIP-END\n\n this.Item = list[1][0];\n this.ItemCite = CSL.getAmbiguousCite.call(this.state, this.Item, this.base, true);\n\n this.scanlist = list[1];\n this.partners = [];\n this.partners.push(this.Item);\n this.nonpartners = [];\n var clashes = 0;\n\n for (var pos = 1, len = list[1].length; pos < len; pos += 1) {\n otherItem = list[1][pos];\n var otherItemCite = CSL.getAmbiguousCite.call(this.state, otherItem, this.base, true);\n //SNIP-START\n if (this.debug) {\n if (pos > 1) {\n this.state.sys.print(\" -----------\");\n }\n }\n //SNIP-END\n if (this.ItemCite === otherItemCite) {\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\" [CLASH]--> \"+this.Item.id+\": \"+this.ItemCite);\n this.state.sys.print(\" \"+otherItem.id+\": \"+otherItemCite);\n }\n //SNIP-END\n clashes += 1;\n this.partners.push(otherItem);\n } else {\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\" [clear]--> \"+this.Item.id+\": \"+this.ItemCite);\n this.state.sys.print(\" \"+otherItem.id+\": \"+otherItemCite);\n }\n //SNIP-END\n this.nonpartners.push(otherItem);\n }\n }\n this.clashes[0] = this.clashes[1];\n this.clashes[1] = clashes;\n};\n\nCSL.Disambiguation.prototype.evalScan = function (maxed) {\n this[this.modes[this.modeindex]](maxed);\n if (maxed) {\n if (this.modeindex < this.modes.length - 1) {\n this.modeindex += 1;\n } else {\n this.lists[this.listpos + 1] = [this.base, []];\n }\n }\n};\n\nCSL.Disambiguation.prototype.disNames = function (ismax) {\n var i, ilen;\n \n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"[3] == disNames() ==\");\n //this.state.sys.print(\" partners: \"+[this.partners[i].id for (i in this.partners)].join(\", \"));\n //this.state.sys.print(\" nonpartners: \"+[this.nonpartners[i].id for (i in this.nonpartners)].join(\", \"));\n }\n //SNIP-END\n\n // New design\n // this.base is a forward-only counter. Values are never\n // reduced, and the counter object is never overwritten.\n // It is methodically pushed forward in single-unit increments\n // in incrementDisambig() until disNames() wipes out the list.\n\n // this.betterbase is cloned from this.base exactly once,\n // at the start of a disambiguation run. Whenever an operation\n // results in improvement, the just-incremented elements\n // identified as this.base.names[this.gnameset] (number of\n // names)and as this.base.givens[this.gnameset][this.gname]\n // (level of given name) are copied from this.base.\n\n // The this.base object is used to control disambiguation\n // renderings. These will be more fully expanded than the final\n // text, but the flip side of the fact that the extra data does\n // not contribute anything to disambiguation is that leaving\n // it in does no harm -- think of it as the Cold Dark Matter of\n // disambiguation.\n\n if (this.clashes[1] === 0 && this.nonpartners.length === 1) {\n this.captureStepToBase();\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\" ** RESOLUTION [a]: lone partner, one nonpartner\");\n this.state.sys.print(\" registering \"+this.partners[0].id+\" and \"+this.nonpartners[0].id);\n }\n //SNIP-END\n this.state.registry.registerAmbigToken(this.akey, \"\" + this.nonpartners[0].id, this.betterbase);\n this.state.registry.registerAmbigToken(this.akey, \"\" + this.partners[0].id, this.betterbase);\n this.lists[this.listpos] = [this.betterbase, []];\n } else if (this.clashes[1] === 0) {\n this.captureStepToBase();\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\" ** RESOLUTION [b]: lone partner, unknown number of remaining nonpartners\");\n this.state.sys.print(\" registering \"+this.partners[0].id);\n }\n //SNIP-END\n this.state.registry.registerAmbigToken(this.akey, \"\" + this.partners[0].id, this.betterbase);\n this.lists[this.listpos] = [this.betterbase, this.nonpartners];\n if (this.nonpartners.length) {\n this.initGivens = true;\n }\n } else if (this.nonpartners.length === 1) {\n this.captureStepToBase();\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\" ** RESOLUTION [c]: lone nonpartner, unknown number of partners remaining\");\n this.state.sys.print(\" registering \"+this.nonpartners[0].id);\n }\n //SNIP-END\n this.state.registry.registerAmbigToken(this.akey, \"\" + this.nonpartners[0].id, this.betterbase);\n //this.lists[this.listpos] = [this.betterbase, this.partners];\n this.lists[this.listpos] = [this.betterbase, this.partners];\n } else if (this.clashes[1] < this.clashes[0]) {\n this.captureStepToBase();\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\" ** RESOLUTION [d]: better result, but no entries safe to register\");\n }\n //SNIP-END\n this.lists[this.listpos] = [this.betterbase, this.partners];\n this.lists.push([this.betterbase, this.nonpartners]);\n } else {\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\" ** RESOLUTION [e]: no improvement, and clashes remain\");\n }\n //SNIP-END\n if (ismax) {\n this.lists[this.listpos] = [this.betterbase, this.nonpartners];\n this.lists.push([this.betterbase, this.partners]);\n if (this.modeindex === this.modes.length - 1) {\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\" (registering clashing entries because we've run out of options)\");\n }\n //SNIP-END\n for (var i = 0, ilen = this.partners.length; i < ilen; i += 1) {\n this.state.registry.registerAmbigToken(this.akey, \"\" + this.partners[i].id, this.betterbase);\n }\n this.lists[this.listpos] = [this.betterbase, []];\n }\n }\n }\n};\n\nCSL.Disambiguation.prototype.disExtraText = function () {\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"[3] === disExtraText ==\");\n }\n //SNIP-END\n \n var done = false;\n\n if (this.clashes[1] === 0 && this.nonpartners.length < 2) {\n done = true;\n }\n\n // If first encounter in this cycle and multiple modes are\n // available, decrement mode and reset base\n if (!done && (!this.base.disambiguate || this.state.tmp.disambiguate_count !== this.state.tmp.disambiguate_maxMax)) {\n // Rerun everything on each subcycle? This doesn't work currently.\n //this.initVars(this.akey)\n this.modeindex = 0;\n this.base.disambiguate = this.state.tmp.disambiguate_count;\n this.betterbase.disambiguate = this.state.tmp.disambiguate_count;\n if (!this.base.disambiguate) {\n // Evaluate here?\n this.initGivens = true;\n // If disambiguate is false set to true\n this.base.disambiguate = 1;\n // There may be changes\n for (var i = 0, ilen = this.lists[this.listpos][1].length; i < ilen; i += 1) {\n this.state.tmp.taintedItemIDs[this.lists[this.listpos][1][i].id] = true;\n }\n } else {\n this.disNames();\n }\n } else if (done || this.state.tmp.disambiguate_count === this.state.tmp.disambiguate_maxMax) {\n if (done || this.modeindex === this.modes.length - 1) {\n // If this is the end, disambiguation failed.\n // Discard disambiguate=true (?) and set parameters\n var base = this.lists[this.listpos][0];\n for (var i = 0, ilen = this.lists[this.listpos][1].length; i < ilen; i += 1) {\n this.state.tmp.taintedItemIDs[this.lists[this.listpos][1][i].id] = true;\n this.state.registry.registerAmbigToken(this.akey, \"\" + this.lists[this.listpos][1][i].id, base);\n }\n this.lists[this.listpos] = [this.betterbase, []];\n } else {\n // If this is followed by year-suffix, keep\n // parameters and set disambiguate=true since it MIGHT\n // include the date, needed for year-suffix.\n // This may be a bit over-aggressive for cases in which the\n // disambiguate condition does not add the date\n this.modeindex = this.modes.length - 1;\n var base = this.lists[this.listpos][0];\n base.disambiguate = true;\n for (var i = 0, ilen = this.lists[this.listpos][1].length; i < ilen; i += 1) {\n // Always tainting here might be a little over-aggressive, but a taint may be required.\n this.state.tmp.taintedItemIDs[this.lists[this.listpos][1][i].id] = true;\n this.state.registry.registerAmbigToken(this.akey, \"\" + this.lists[this.listpos][1][i].id, base);\n }\n }\n }\n};\n\nCSL.Disambiguation.prototype.disYears = function () {\n var pos, len, tokens, token;\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"[3] === disYears ==\");\n }\n //SNIP-END\n tokens = [];\n var base = this.lists[this.listpos][0];\n if (this.clashes[1]) {\n // That is, if the initial increment on the ambigs group returns no\n // clashes, don't apply suffix. The condition is a necessary failsafe.\n\t\t// In original submission order\n\t\tfor (var i = 0, ilen = this.state.registry.mylist.length; i < ilen; i += 1) {\n\t\t\tvar origid = this.state.registry.mylist[i];\n\t\t\tfor (var j = 0, jlen = this.lists[this.listpos][1].length; j < jlen; j += 1) {\n\t\t\t\tvar token = this.lists[this.listpos][1][j];\n\t\t\t\t// Warning: token.id can be number. This should be fixed at a higher level in citeproc-js if poss.\n\t\t\t\tif (token.id == origid) {\n\t\t\t\t\ttokens.push(this.registry[token.id]);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n }\n tokens.sort(this.state.registry.sorter.compareKeys);\n for (var pos = 0, len = tokens.length; pos < len; pos += 1) {\n base.year_suffix = \"\"+pos;\n var oldBase = this.state.registry.registry[tokens[pos].id].disambig;\n this.state.registry.registerAmbigToken(this.akey, \"\" + tokens[pos].id, base);\n if (CSL.ambigConfigDiff(oldBase,base)) {\n this.state.tmp.taintedItemIDs[tokens[pos].id] = true;\n }\n }\n this.lists[this.listpos] = [this.betterbase, []];\n};\n\nCSL.Disambiguation.prototype.incrementDisambig = function () {\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"\\n[1] === incrementDisambig() ===\");\n }\n //SNIP-END\n if (this.initGivens) {\n this.initGivens = false;\n return false;\n }\n var maxed = false;\n var increment_names = true;\n if (\"disNames\" === this.modes[this.modeindex]) {\n // this.gnameset: the index pos of the current nameset\n // this.gname: the index pos of the current name w/in the current nameset\n \n // Stages:\n // - Increment givenname (optional)\n // - Add a name (optional)\n // - Move to next nameset\n\n // Incrementing is done forward-only on this.base. Values\n // that improve disambiguation results are copied to\n // this.betterbase, which is used to set the disambig parameters\n // in the processor registry.\n \n\n // Increment\n // Max val is always true if a level is inactive.\n increment_names = false;\n if (\"number\" !== typeof this.givensMax) {\n increment_names = true;\n }\n var increment_namesets = false;\n if (\"number\" !== typeof this.namesMax) {\n increment_namesets = true;\n }\n if (\"number\" === typeof this.givensMax) {\n if (this.base.givens.length && this.base.givens[this.gnameset][this.gname] < this.givensMax) {\n this.base.givens[this.gnameset][this.gname] += 1;\n } else {\n increment_names = true;\n }\n }\n if (\"number\" === typeof this.namesMax \n && increment_names) {\n if (this.state.opt[\"disambiguate-add-names\"]) {\n increment_namesets = false;\n if (this.gname < this.namesMax) {\n this.base.names[this.gnameset] += 1;\n this.gname += 1;\n } else {\n increment_namesets = true;\n }\n } else {\n increment_namesets = true;\n }\n }\n if (\"number\" === typeof this.namesetsMax && increment_namesets) {\n if (this.gnameset < this.namesetsMax) {\n this.gnameset += 1;\n this.base.names[this.gnameset] = 1;\n this.gname = 0;\n }\n }\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\" ------------------\");\n this.state.sys.print(\" incremented values\");\n this.state.sys.print(\" ------------------\");\n this.state.sys.print(\" | gnameset: \"+this.gnameset);\n this.state.sys.print(\" | gname: \"+this.gname);\n this.state.sys.print(\" | names value: \"+this.base.names[this.gnameset]);\n if (this.base.givens.length) {\n this.state.sys.print(\" | givens value: \"+this.base.givens[this.gnameset][this.gname]);\n } else {\n this.state.sys.print(\" | givens value: nil\");\n }\n this.state.sys.print(\" | namesetsMax: \"+this.namesetsMax);\n this.state.sys.print(\" | namesMax: \"+this.namesMax);\n this.state.sys.print(\" | givensMax: \"+this.givensMax);\n }\n //SNIP-END\n if ((\"number\" !== typeof this.namesetsMax || this.namesetsMax === -1 || this.gnameset === this.namesetsMax)\n && (!this.state.opt[\"disambiguate-add-names\"] || \"number\" !== typeof this.namesMax || this.gname === this.namesMax)\n && (\"number\" != typeof this.givensMax || \"undefined\" === typeof this.base.givens[this.gnameset] || \"undefined\" === typeof this.base.givens[this.gnameset][this.gname] || this.base.givens[this.gnameset][this.gname] === this.givensMax)) {\n \n\n maxed = true;\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\" MAXED\");\n }\n //SNIP-END\n }\n } else if (\"disExtraText\" === this.modes[this.modeindex]) {\n this.base.disambiguate += 1;\n this.betterbase.disambiguate += 1;\n }\n return maxed;\n};\n\nCSL.Disambiguation.prototype.initVars = function (akey) {\n var i, ilen, myIds, myItemBundles, myItems;\n //SNIP-START\n if (this.debug) {\n this.state.sys.print(\"[B] === initVars() ===\");\n }\n //SNIP-END\n this.lists = [];\n this.base = false;\n this.betterbase = false;\n this.akey = akey;\n\n this.maxNamesByItemId = {};\n\n\n myItemBundles = [];\n myIds = this.ambigcites[akey];\n if (!myIds || !myIds.length) {\n return false;\n }\n var myItem = this.state.refetchItem(\"\" + myIds[0]);\n this.getCiteData(myItem);\n this.base = CSL.getAmbigConfig.call(this.state);\n if (myIds && myIds.length > 1) {\n myItemBundles.push([this.maxNamesByItemId[myItem.id], myItem]);\n // Build a composite list of Items and associated\n // max names. This is messy, but it's the only\n // way to get the items sorted by the number of names\n // to be disambiguated. If they are in descending order\n // with name expansions, the processor will hang.\n for (var i = 1, ilen = myIds.length; i < ilen; i += 1) {\n myItem = this.state.refetchItem(\"\" + myIds[i]);\n this.getCiteData(myItem, this.base);\n myItemBundles.push([this.maxNamesByItemId[myItem.id], myItem]);\n }\n myItemBundles.sort(\n function (a, b) {\n if (a[0] > b[0]) {\n return 1;\n } else if (a[0] < b[0]) {\n return -1;\n } else {\n if (a[1].id > b[1].id) {\n return 1;\n } else if (a[1].id < b[1].id) {\n return -1;\n } else {\n return 0;\n }\n }\n }\n );\n myItems = [];\n for (var i = 0, ilen = myItemBundles.length; i < ilen; i += 1) {\n myItems.push(myItemBundles[i][1]);\n }\n this.lists.push([this.base, myItems]);\n this.Item = this.lists[0][1][0];\n } else {\n this.Item = this.state.refetchItem(\"\" + myIds[0]);\n }\n\n this.modeindex = 0;\n if (this.state.citation.opt[\"disambiguate-add-names\"] || true) {\n this.namesMax = this.maxNamesByItemId[this.Item.id][0];\n } else {\n var namesMax = this.base.names[0];\n for (var i=1,ilen=this.base.names.length;i<ilen;i+=1){\n namesMax = Math.max(namesMax,this.base.names.names[i]);\n }\n }\n\n\n this.padBase(this.base);\n this.padBase(this.betterbase);\n this.base.year_suffix = false;\n this.base.disambiguate = false;\n this.betterbase.year_suffix = false;\n this.betterbase.disambiguate = false;\n if (this.state.citation.opt[\"givenname-disambiguation-rule\"] === \"by-cite\"\n && this.state.opt[\"disambiguate-add-givenname\"]) {\n this.givensMax = 2;\n }\n return true;\n};\n\n\nCSL.Disambiguation.prototype.padBase = function (base) {\n for (var i = 0, ilen = base.names.length; i < ilen; i += 1) {\n if (!base.givens[i]) {\n base.givens[i] = [];\n }\n for (var j=0,jlen=base.names[i];j<jlen;j+=1) {\n if (!base.givens[i][j]) {\n base.givens[i][j] = 0;\n }\n }\n }\n};\n\n/**\n * Set available modes for disambiguation\n */\nCSL.Disambiguation.prototype.configModes = function () {\n var dagopt, gdropt;\n // Modes are function names prototyped to this instance.\n this.modes = [];\n dagopt = this.state.opt[\"disambiguate-add-givenname\"];\n gdropt = this.state.citation.opt[\"givenname-disambiguation-rule\"];\n if (this.state.opt['disambiguate-add-names'] || (dagopt && gdropt === \"by-cite\")) {\n this.modes.push(\"disNames\");\n }\n\n if (this.state.opt.development_extensions.prioritize_disambiguate_condition) {\n if (this.state.opt.has_disambiguate) {\n this.modes.push(\"disExtraText\");\n }\n if (this.state.opt[\"disambiguate-add-year-suffix\"]) {\n this.modes.push(\"disYears\");\n }\n } else {\n if (this.state.opt[\"disambiguate-add-year-suffix\"]) {\n this.modes.push(\"disYears\");\n }\n if (this.state.opt.has_disambiguate) {\n this.modes.push(\"disExtraText\");\n }\n }\n};\n\nCSL.Disambiguation.prototype.getCiteData = function(Item, base) {\n // Initialize base if first set item seen\n if (!this.maxNamesByItemId[Item.id]) {\n CSL.getAmbiguousCite.call(this.state, Item, base);\n base = CSL.getAmbigConfig.call(this.state);\n this.maxNamesByItemId[Item.id] = CSL.getMaxVals.call(this.state);\n this.state.registry.registry[Item.id].disambig.givens = this.state.tmp.disambig_settings.givens.slice();\n // Slice the nested lists as well. Without this, disambiguate_YearSuffixFiftyTwoEntriesByCite fails.\n for (var i=0,ilen=this.state.registry.registry[Item.id].disambig.givens.length;i<ilen;i+=1) {\n this.state.registry.registry[Item.id].disambig.givens[i] = this.state.tmp.disambig_settings.givens[i].slice();\n }\n this.namesetsMax = this.state.registry.registry[Item.id].disambig.names.length - 1;\n if (!this.base) {\n this.base = base;\n this.betterbase = CSL.cloneAmbigConfig(base);\n }\n if (base.names.length < this.base.names.length) {\n // I don't know what would happen with discrepancies in the number\n // of namesets rendered on items, so we use the fewer of the two\n // and limit the other to that size.\n this.base = base;\n }\n // Padding. Within namesets, we use the longer of the two throughout.\n for (var i = 0, ilen = base.names.length; i < ilen; i += 1) {\n if (base.names[i] > this.base.names[i]) {\n // XXX The old must have been wrong surely. The new, I'm not sure.\n //this.base.givens[i] = this.base.givens[i].concat(this.base.givens[i].slice(this.base.names[i]));\n this.base.givens[i] = base.givens[i].slice();\n this.base.names[i] = base.names[i];\n this.betterbase.names = this.base.names.slice();\n this.betterbase.givens = this.base.givens.slice();\n this.padBase(this.base);\n this.padBase(this.betterbase);\n }\n }\n // This shouldn't be necessary\n // getAmbiguousCite() should return a valid and complete\n // givens segment under all conditions, but it does not\n // do so for institution authors, so we clean up after it\n // here.\n // Relevant test: sort_ChicagoYearSuffix2\n this.betterbase.givens = this.base.givens.slice();\n for (var j = 0, jlen = this.base.givens.length; j < jlen; j += 1) {\n this.betterbase.givens[j] = this.base.givens[j].slice();\n }\n }\n};\n\nCSL.Disambiguation.prototype.captureStepToBase = function() {\n // Be paranoid about the presence of givens\n if (this.state.citation.opt[\"givenname-disambiguation-rule\"] === \"by-cite\"\n && this.base.givens && this.base.givens.length) {\n if (\"undefined\" !== typeof this.base.givens[this.gnameset][this.gname]) {\n if (this.betterbase.givens.length < this.base.givens.length) {\n this.betterbase.givens = JSON.parse(JSON.stringify(this.base.givens));\n }\n this.betterbase.givens[this.gnameset][this.gname] = this.base.givens[this.gnameset][this.gname];\n }\n }\n this.betterbase.names[this.gnameset] = this.base.names[this.gnameset];\n};\n\nCSL.Engine.prototype.getJurisdictionList = function (jurisdiction) {\n var jurisdictionList = [];\n var jurisdictionElems = jurisdiction.split(\":\");\n for (var j=jurisdictionElems.length;j>0;j--) {\n var composedID = jurisdictionElems.slice(0,j).join(\":\");\n jurisdictionList.push(composedID);\n if (this.opt.jurisdiction_fallbacks[composedID]) {\n var fallback = this.opt.jurisdiction_fallbacks[composedID];\n jurisdictionList.push(fallback);\n }\n }\n if (jurisdictionList.indexOf(\"us\") === -1) {\n jurisdictionList.push(\"us\");\n }\n return jurisdictionList;\n};\n\nCSL.Engine.prototype.loadStyleModule = function (jurisdiction, xmlSource, skipFallback) {\n var myFallback = null;\n var macroCount = 0;\n this.juris[jurisdiction] = {};\n var myXml = CSL.setupXml(xmlSource);\n myXml.addMissingNameNodes(myXml.dataObj);\n myXml.addInstitutionNodes(myXml.dataObj);\n myXml.insertPublisherAndPlace(myXml.dataObj);\n myXml.flagDateMacros(myXml.dataObj);\n var myNodes = myXml.getNodesByName(myXml.dataObj, \"law-module\");\n for (var i=0,ilen=myNodes.length;i<ilen;i++) {\n var myTypes = myXml.getAttributeValue(myNodes[i],\"types\");\n if (myTypes) {\n this.juris[jurisdiction].types = {};\n myTypes = myTypes.split(/\\s+/);\n for (var j=0,jlen=myTypes.length;j<jlen;j++) {\n this.juris[jurisdiction].types[myTypes[j]] = true;\n }\n }\n if (!skipFallback) {\n myFallback = myXml.getAttributeValue(myNodes[i],\"fallback\");\n if (myFallback) {\n if (jurisdiction !== \"us\") {\n this.opt.jurisdiction_fallbacks[jurisdiction] = myFallback;\n }\n }\n }\n }\n var lang = this.opt.lang ? this.opt.lang : this.opt[\"default-locale\"][0];\n CSL.SET_COURT_CLASSES(this, lang, myXml, myXml.dataObj);\n \n if (!this.juris[jurisdiction].types) {\n this.juris[jurisdiction].types = CSL.MODULE_TYPES;\n }\n var myNodes = myXml.getNodesByName(myXml.dataObj, \"macro\");\n for (var i=0,ilen=myNodes.length;i<ilen;i++) {\n var myName = myXml.getAttributeValue(myNodes[i], \"name\");\n if (!CSL.MODULE_MACROS[myName]) {\n CSL.debug(\"CSL: skipping non-modular macro name \\\"\" + myName + \"\\\" in module context\");\n continue;\n }\n macroCount++;\n this.juris[jurisdiction][myName] = [];\n // Must use the same XML parser for style and modules.\n this.buildTokenLists(myNodes[i], this.juris[jurisdiction][myName]);\n this.configureTokenList(this.juris[jurisdiction][myName]);\n }\n //if (macroCount < Object.keys(CSL.MODULE_MACROS).length) {\n // var missing = [];\n // throw \"CSL ERROR: Incomplete jurisdiction style module for: \" + jurisdiction;\n //}\n return myFallback;\n};\n\nCSL.Engine.prototype.retrieveAllStyleModules = function (jurisdictionList) {\n var ret = {};\n var preferences = this.locale[this.opt.lang].opts[\"jurisdiction-preference\"];\n preferences = preferences ? preferences : [];\n preferences = [\"\"].concat(preferences);\n for (var i=preferences.length-1;i>-1;i--) {\n var preference = preferences[i];\n for (var j=0,jlen=jurisdictionList.length;j<jlen;j++) {\n var jurisdiction = jurisdictionList[j];\n // If we've \"seen\" it, we have it already, or we're not going to get it.\n if (this.opt.jurisdictions_seen[jurisdiction]) {\n continue;\n }\n // Try to get the module\n var res = this.sys.retrieveStyleModule(jurisdiction, preference);\n // If we fail and we've run out of preferences, mark as \"seen\"\n // Otherwise mark as \"seen\" if we get something.\n if ((!res && !preference) || res) {\n this.opt.jurisdictions_seen[jurisdiction] = true;\n }\n // Don't memo unless get got style code.\n if (!res) {\n continue;\n }\n ret[jurisdiction] = res;\n }\n }\n // Give 'em what we got.\n return ret;\n};\n\nCSL.ParticleList = (function() {\n\tvar always_dropping_1 = [[[0,1], null]];\n\tvar always_dropping_3 = [[[0,3], null]];\n\tvar always_non_dropping_1 = [[null, [0,1]]];\n\tvar always_non_dropping_2 = [[null, [0,2]]];\n\tvar always_non_dropping_3 = [[null, [0,3]]];\n\tvar either_1 = [[null, [0,1]],[[0,1],null]];\n\tvar either_2 = [[null, [0,2]],[[0,2],null]];\n\tvar either_1_dropping_best = [[[0,1],null],[null, [0,1]]];\n\tvar either_2_dropping_best = [[[0,2],null],[null, [0,2]]];\n\tvar either_3_dropping_best = [[[0,3],null],[null, [0,3]]];\n\tvar non_dropping_2_alt_dropping_1_non_dropping_1 = [[null, [0,2]], [[0,1], [1,2]]];\n\tvar PARTICLES = [\n\t\t[\"'s\", always_non_dropping_1],\n\t\t[\"'s-\", always_non_dropping_1],\n\t\t[\"'t\", always_non_dropping_1],\n\t\t[\"a\", \talways_non_dropping_1],\n\t\t[\"aan 't\", always_non_dropping_2],\n\t\t[\"aan de\", always_non_dropping_2],\n\t\t[\"aan den\", always_non_dropping_2],\n\t\t[\"aan der\", always_non_dropping_2],\n\t\t[\"aan het\", always_non_dropping_2],\n\t\t[\"aan t\", always_non_dropping_2],\n\t\t[\"aan\", always_non_dropping_1],\n\t\t[\"ad-\", either_1],\n\t\t[\"adh-\", either_1],\n\t\t[\"af\", either_1],\n\t\t[\"al\", either_1],\n\t\t[\"al-\", either_1],\n\t\t[\"am de\", always_non_dropping_2],\n\t\t[\"am\", always_non_dropping_1],\n\t\t[\"an-\", either_1],\n\t\t[\"ar-\", either_1],\n\t\t[\"as-\", either_1],\n\t\t[\"ash-\", either_1],\n\t\t[\"at-\", either_1],\n\t\t[\"ath-\", either_1],\n\t\t[\"auf dem\", either_2_dropping_best],\n\t\t[\"auf den\", either_2_dropping_best],\n\t\t[\"auf der\", either_2_dropping_best],\n\t\t[\"auf ter\", always_non_dropping_2],\n\t\t[\"auf\", either_1_dropping_best],\n\t\t[\"aus 'm\", either_2_dropping_best],\n\t\t[\"aus dem\", either_2_dropping_best],\n\t\t[\"aus den\", either_2_dropping_best],\n\t\t[\"aus der\", either_2_dropping_best],\n\t\t[\"aus m\", either_2_dropping_best],\n\t\t[\"aus\", either_1_dropping_best],\n\t\t[\"aus'm\", either_2_dropping_best],\n\t\t[\"az-\", either_1],\n\t\t[\"aš-\", either_1],\n\t\t[\"aḍ-\", either_1],\n\t\t[\"aḏ-\", either_1],\n\t\t[\"aṣ-\", either_1],\n\t\t[\"aṭ-\", either_1],\n\t\t[\"aṯ-\", either_1],\n\t\t[\"aẓ-\", either_1],\n\t\t[\"ben\", always_non_dropping_1],\n\t\t[\"bij 't\", always_non_dropping_2],\n\t\t[\"bij de\", always_non_dropping_2],\n\t\t[\"bij den\", always_non_dropping_2],\n\t\t[\"bij het\", always_non_dropping_2],\n\t\t[\"bij t\", always_non_dropping_2],\n\t\t[\"bij\", always_non_dropping_1],\n\t\t[\"bin\", always_non_dropping_1],\n\t\t[\"boven d\", always_non_dropping_2],\n\t\t[\"boven d'\", always_non_dropping_2],\n\t\t[\"d\", always_non_dropping_1],\n\t\t[\"d'\", either_1],\n\t\t[\"da\", either_1],\n\t\t[\"dal\", always_non_dropping_1],\n\t\t[\"dal'\", always_non_dropping_1],\n\t\t[\"dall'\", always_non_dropping_1],\n\t\t[\"dalla\", always_non_dropping_1],\n\t\t[\"das\", either_1],\n\t\t[\"de die le\", always_non_dropping_3],\n\t\t[\"de die\", always_non_dropping_2],\n\t\t[\"de l\", always_non_dropping_2],\n\t\t[\"de l'\", always_non_dropping_2],\n\t\t[\"de la\", non_dropping_2_alt_dropping_1_non_dropping_1],\n\t\t[\"de las\", non_dropping_2_alt_dropping_1_non_dropping_1],\n\t\t[\"de le\", always_non_dropping_2],\n\t\t[\"de li\", either_2],\n\t\t[\"de van der\", always_non_dropping_3],\n\t\t[\"de\", either_1],\n\t\t[\"de'\", either_1],\n\t\t[\"deca\", always_non_dropping_1],\n\t\t[\"degli\", either_1],\n\t\t[\"dei\", either_1],\n\t\t[\"del\", either_1],\n\t\t[\"dela\", always_dropping_1],\n\t\t[\"dell'\", either_1],\n\t\t[\"della\", either_1],\n\t\t[\"delle\", either_1],\n\t\t[\"dello\", either_1],\n\t\t[\"den\", either_1],\n\t\t[\"der\", either_1],\n\t\t[\"des\", either_1],\n\t\t[\"di\", either_1],\n\t\t[\"die le\", always_non_dropping_2],\n\t\t[\"do\", always_non_dropping_1],\n\t\t[\"don\", always_non_dropping_1],\n\t\t[\"dos\", either_1],\n\t\t[\"du\", either_1],\n\t\t[\"ed-\", either_1],\n\t\t[\"edh-\", either_1],\n\t\t[\"el\", either_1],\n\t\t[\"el-\", either_1],\n\t\t[\"en-\", either_1],\n\t\t[\"er-\", either_1],\n\t\t[\"es-\", either_1],\n\t\t[\"esh-\", either_1],\n\t\t[\"et-\", either_1],\n\t\t[\"eth-\", either_1],\n\t\t[\"ez-\", either_1],\n\t\t[\"eš-\", either_1],\n\t\t[\"eḍ-\", either_1],\n\t\t[\"eḏ-\", either_1],\n\t\t[\"eṣ-\", either_1],\n\t\t[\"eṭ-\", either_1],\n\t\t[\"eṯ-\", either_1],\n\t\t[\"eẓ-\", either_1],\n\t\t[\"het\", always_non_dropping_1],\n\t\t[\"i\", always_non_dropping_1],\n\t\t[\"il\", always_dropping_1],\n\t\t[\"im\", always_non_dropping_1],\n\t\t[\"in 't\", always_non_dropping_2],\n\t\t[\"in de\", always_non_dropping_2],\n\t\t[\"in den\", always_non_dropping_2],\n\t\t[\"in der\", either_2],\n\t\t[\"in het\", always_non_dropping_2],\n\t\t[\"in t\", always_non_dropping_2],\n\t\t[\"in\", always_non_dropping_1],\n\t\t[\"l\", always_non_dropping_1],\n\t\t[\"l'\", always_non_dropping_1],\n\t\t[\"la\", always_non_dropping_1],\n\t\t[\"las\", always_non_dropping_1],\n\t\t[\"le\", always_non_dropping_1],\n\t\t[\"les\", either_1],\n\t\t[\"lo\", either_1],\n\t\t[\"los\", always_non_dropping_1],\n\t\t[\"lou\", always_non_dropping_1],\n\t\t[\"of\", always_non_dropping_1],\n\t\t[\"onder 't\", always_non_dropping_2],\n\t\t[\"onder de\", always_non_dropping_2],\n\t\t[\"onder den\", always_non_dropping_2],\n\t\t[\"onder het\", always_non_dropping_2],\n\t\t[\"onder t\", always_non_dropping_2],\n\t\t[\"onder\", always_non_dropping_1],\n\t\t[\"op 't\", always_non_dropping_2],\n\t\t[\"op de\", either_2],\n\t\t[\"op den\", always_non_dropping_2],\n\t\t[\"op der\", always_non_dropping_2],\n\t\t[\"op gen\", always_non_dropping_2],\n\t\t[\"op het\", always_non_dropping_2],\n\t\t[\"op t\", always_non_dropping_2],\n\t\t[\"op ten\", always_non_dropping_2],\n\t\t[\"op\", always_non_dropping_1],\n\t\t[\"over 't\", always_non_dropping_2],\n\t\t[\"over de\", always_non_dropping_2],\n\t\t[\"over den\", always_non_dropping_2],\n\t\t[\"over het\", always_non_dropping_2],\n\t\t[\"over t\", always_non_dropping_2],\n\t\t[\"over\", always_non_dropping_1],\n\t\t[\"s\", always_non_dropping_1],\n\t\t[\"s'\", always_non_dropping_1],\n\t\t[\"sen\", always_dropping_1],\n\t\t[\"t\", always_non_dropping_1],\n\t\t[\"te\", always_non_dropping_1],\n\t\t[\"ten\", always_non_dropping_1],\n\t\t[\"ter\", always_non_dropping_1],\n\t\t[\"tho\", always_non_dropping_1],\n\t\t[\"thoe\", always_non_dropping_1],\n\t\t[\"thor\", always_non_dropping_1],\n\t\t[\"to\", always_non_dropping_1],\n\t\t[\"toe\", always_non_dropping_1],\n\t\t[\"tot\", always_non_dropping_1],\n\t\t[\"uijt 't\", always_non_dropping_2],\n\t\t[\"uijt de\", always_non_dropping_2],\n\t\t[\"uijt den\", always_non_dropping_2],\n\t\t[\"uijt te de\", always_non_dropping_3],\n\t\t[\"uijt ten\", always_non_dropping_2],\n\t\t[\"uijt\", always_non_dropping_1],\n\t\t[\"uit 't\", always_non_dropping_2],\n\t\t[\"uit de\", always_non_dropping_2],\n\t\t[\"uit den\", always_non_dropping_2],\n\t\t[\"uit het\", always_non_dropping_2],\n\t\t[\"uit t\", always_non_dropping_2],\n\t\t[\"uit te de\", always_non_dropping_3],\n\t\t[\"uit ten\", always_non_dropping_2],\n\t\t[\"uit\", always_non_dropping_1],\n\t\t[\"unter\", always_non_dropping_1],\n\t\t[\"v\", always_non_dropping_1],\n\t\t[\"v.\", always_non_dropping_1],\n\t\t[\"v.d.\", always_non_dropping_1],\n\t\t[\"van 't\", always_non_dropping_2],\n\t\t[\"van de l\", always_non_dropping_3],\n\t\t[\"van de l'\", always_non_dropping_3],\n\t\t[\"van de\", always_non_dropping_2],\n\t\t[\"van de\", always_non_dropping_2],\n\t\t[\"van den\", always_non_dropping_2],\n\t\t[\"van der\", always_non_dropping_2],\n\t\t[\"van gen\", always_non_dropping_2],\n\t\t[\"van het\", always_non_dropping_2],\n\t\t[\"van la\", always_non_dropping_2],\n\t\t[\"van t\", always_non_dropping_2],\n\t\t[\"van ter\", always_non_dropping_2],\n\t\t[\"van van de\", always_non_dropping_3],\n\t\t[\"van\", either_1],\n\t\t[\"vander\", always_non_dropping_1],\n\t\t[\"vd\", always_non_dropping_1],\n\t\t[\"ver\", always_non_dropping_1],\n\t\t[\"vom und zum\", always_dropping_3],\n\t\t[\"vom\", either_1],\n\t\t[\"von 't\", always_non_dropping_2],\n\t\t[\"von dem\", either_2_dropping_best],\n\t\t[\"von den\", either_2_dropping_best],\n\t\t[\"von der\", either_2_dropping_best],\n\t\t[\"von t\", always_non_dropping_2],\n\t\t[\"von und zu\", either_3_dropping_best],\n\t\t[\"von zu\", either_2_dropping_best],\n\t\t[\"von\", either_1_dropping_best],\n\t\t[\"voor 't\", always_non_dropping_2],\n\t\t[\"voor de\", always_non_dropping_2],\n\t\t[\"voor den\", always_non_dropping_2],\n\t\t[\"voor in 't\", always_non_dropping_3],\n\t\t[\"voor in t\", always_non_dropping_3],\n\t\t[\"voor\", always_non_dropping_1],\n\t\t[\"vor der\", either_2_dropping_best],\n\t\t[\"vor\", either_1_dropping_best],\n\t\t[\"z\", always_dropping_1],\n\t\t[\"ze\", always_dropping_1],\n\t\t[\"zu\", either_1_dropping_best],\n\t\t[\"zum\", either_1],\n\t\t[\"zur\", either_1]\n\t];\n return PARTICLES;\n}());\n\nCSL.parseParticles = (function(){\n function splitParticles(nameValue, firstNameFlag, caseOverride) {\n\t\t// Parse particles out from name fields.\n\t\t// * nameValue (string) is the field content to be parsed.\n\t\t// * firstNameFlag (boolean) parse trailing particles\n\t\t//\t (default is to parse leading particles)\n\t\t// * caseOverride (boolean) include all but one word in particle set\n\t\t//\t (default is to include only words with lowercase first char)\n // [caseOverride is not used in this application]\n\t\t// Returns an array with:\n\t\t// * (boolean) flag indicating whether a particle was found\n\t\t// * (string) the name after removal of particles\n\t\t// * (array) the list of particles found\n\t\tvar origNameValue = nameValue;\n\t\tnameValue = caseOverride ? nameValue.toLowerCase() : nameValue;\n\t\tvar particleList = [];\n\t\tvar rex;\n var hasParticle;\n\t\tif (firstNameFlag) {\n\t\t\tnameValue = nameValue.split(\"\").reverse().join(\"\");\n\t\t\trex = CSL.PARTICLE_GIVEN_REGEXP;\n\t\t} else {\n\t\t\trex = CSL.PARTICLE_FAMILY_REGEXP;\n\t\t}\n\t\tvar m = nameValue.match(rex);\n\t\twhile (m) {\n\t\t\tvar m1 = firstNameFlag ? m[1].split(\"\").reverse().join(\"\") : m[1];\n\t\t\tvar firstChar = m ? m1 : false;\n\t\t\tvar firstChar = firstChar ? m1.replace(/^[-\\'\\u02bb\\u2019\\s]*(.).*$/, \"$1\") : false;\n\t\t\thasParticle = firstChar ? firstChar.toUpperCase() !== firstChar : false;\n\t\t\tif (!hasParticle) {\n break;\n }\n\t\t\tif (firstNameFlag) {\n\t\t\t\tparticleList.push(origNameValue.slice(m1.length * -1));\n\t\t\t\torigNameValue = origNameValue.slice(0,m1.length * -1);\n\t\t\t} else {\n\t\t\t\tparticleList.push(origNameValue.slice(0,m1.length));\n\t\t\t\torigNameValue = origNameValue.slice(m1.length);\n\t\t\t}\n\t\t\t//particleList.push(m1);\n\t\t\tnameValue = m[2];\n\t\t\tm = nameValue.match(rex);\n\t\t}\n\t\tif (firstNameFlag) {\n\t\t\tnameValue = nameValue.split(\"\").reverse().join(\"\");\n\t\t\tparticleList.reverse();\n\t\t\tfor (var i=1,ilen=particleList.length;i<ilen;i++) {\n\t\t\t\tif (particleList[i].slice(0, 1) == \" \") {\n\t\t\t\t\tparticleList[i-1] += \" \";\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (var i=0,ilen=particleList.length;i<ilen;i++) {\n\t\t\t\tif (particleList[i].slice(0, 1) == \" \") {\n\t\t\t\t\tparticleList[i] = particleList[i].slice(1);\n\t\t\t\t}\n\t\t\t}\n\t\t\tnameValue = origNameValue.slice(0, nameValue.length);\n\t\t} else {\n\t\t\tnameValue = origNameValue.slice(nameValue.length * -1);\n\t\t}\n\t\treturn [hasParticle, nameValue, particleList];\n\t}\n function trimLast(str) {\n var lastChar = str.slice(-1);\n str = str.trim();\n if (lastChar === \" \" && [\"\\'\", \"\\u2019\"].indexOf(str.slice(-1)) > -1) {\n str += \" \";\n }\n return str;\n }\n function parseSuffix(nameObj) {\n if (!nameObj.suffix && nameObj.given) {\n var m = nameObj.given.match(/(\\s*,!*\\s*)/);\n if (m) {\n var idx = nameObj.given.indexOf(m[1]);\n var possible_suffix = nameObj.given.slice(idx + m[1].length);\n var possible_comma = nameObj.given.slice(idx, idx + m[1].length).replace(/\\s*/g, \"\");\n if (possible_suffix.replace(/\\./g, \"\") === 'et al' && !nameObj[\"dropping-particle\"]) {\n // This hack covers the case where \"et al.\" is explicitly used in the\n // authorship information of the work.\n nameObj[\"dropping-particle\"] = possible_suffix;\n nameObj[\"comma-dropping-particle\"] = \",\";\n } else {\n if (possible_comma.length === 2) {\n nameObj[\"comma-suffix\"] = true;\n }\n nameObj.suffix = possible_suffix;\n }\n nameObj.given = nameObj.given.slice(0, idx);\n }\n }\n }\n return function(nameObj) {\n // Extract and set non-dropping particle(s) from family name field\n var res = splitParticles(nameObj.family);\n var lastNameValue = res[1];\n var lastParticleList = res[2];\n nameObj.family = lastNameValue;\n var nonDroppingParticle = trimLast(lastParticleList.join(\"\"));\n if (nonDroppingParticle) {\n nameObj['non-dropping-particle'] = nonDroppingParticle;\n }\n // Split off suffix first of all\n parseSuffix(nameObj);\n // Extract and set dropping particle(s) from given name field\n var res = splitParticles(nameObj.given, true);\n var firstNameValue = res[1];\n var firstParticleList = res[2];\n nameObj.given = firstNameValue;\n var droppingParticle = firstParticleList.join(\"\").trim();\n if (droppingParticle) {\n nameObj['dropping-particle'] = droppingParticle;\n }\n };\n}());\n\n\nmodule.exports = CSL"],"names":["CSL","str","arr","state","lst","i","ilen","ret","country","lang","domain","globalDomainPreference","itemDomainPreference","j","item","idx","raw_locator","m","Item","validFieldsForType","allowDateOverride","elems","lines","line","splt","jlen","offset","names","mm","key","val","name","prefix","sp","test_prefix","test_char","suffix","seg","keys","fld","drop_or_demote","SKIP_WORDS","toEnd","start","end","narrowSpaceLocale","narrowSpace","segments","title","langs","vals","shortTitle","tail","top","splitTitle","punct","sentenceCase","mainTitle","subJoin","subTitle","splits","callbacks","txt","valueTerm","token","value","flags","testres","numbersOnly","locale_term","termStartAlpha","num","force_suppress","sortKey","cls","authority","classType","myxml","dataObj","nodes","pos","len","courtclass","attributes","courts","macroName","jurisdictionList","res","jurisdiction","fallback","json","myjson","styleName","tagName","children","grandkids","attrname","namespace","nodename","partname","attr","clone","nameattrval","parent","node","datejson","useme","mustHaves","haveVarname","isText","parents","myparents","addName","institution","insertPos","k","klen","xml","_obj","_stack","_listifyString","stylePos","stub","_decodeHtmlEntities","match","numStr","_getAttributes","elem","_getAttribute","rex","_getTagName","_castObjectFromOpeningTag","obj","_extractTextFromCompositeElement","_appendToChildren","_extendStackWithNewChildren","processElement","tag","contentType","xmldata","parser","doc","srcElement","allChildren","newNode","il","inst_doc","inst_node","inst_part_node","text","attrs","cloned_node","nodetree","datexml","group","skippers","twovars","child","subskippers","nameslist","namelist","thenames","theinstitution","theinstitutionpart","thename","attrval","nameparts","thenode","thedate","xmlObject","default_locale","me","strcmp","strcmp_opts","a","b","stripPunct","getBracketPreSort","bracketPreSort","sortCompare","ppos","llen","config","oldconfig","param","next","maybenext","exec","debug","record","result","macro_key_token","target","mkey","macro_nodes","end_of_macro","func","sort_direction","hasDate","macroid","mytarget","macro_name","text_node","builder","mynode","tokentype","explicitTarget","var_stack","decorations","e","epochPairs","epochMatchStrings","epochMap","pair","epochMatchString","epochSplitter","epochMatcher","kanjiMonthDay","kanjiYear","kanjiRange","yearLast","yearFirst","numberVal","rangeSeparator","fuzzyChar","chars","rexString","rexDash","rexDashSlash","rexSlashDash","monthString","abbrevLength","skip","insert","extendedSets","jKey","kKey","slicelen","part","delim","suff","month","day","orig","slashPos","dashPos","yearIsNegative","slst","mmx","mmpos","number","note","rangeDelim","dateDelim","slashCount","delimPos","delims","isRange","date","outer","element","parts","sys","style","forceLang","langspec","to","index","nextSource","nextKey","option","makeRegExp","area_nodes","node_stack","runStart","runEnd","runSingle","buildStyle","dummy","term","form","plural","gender","mode","forceDefaultLocale","arg","varname","ItemField","hash","forms","f","hashterm","area","tokens","dateparts_master","dateparts","pppos","lllen","ids","id","field","ctype","creator","dateobj","elements","legislation_id","container_id","isLegalType","normalizedKey","parentname","defaultValue","parentValue","inputList","sectionMasterLabel","space","firstword","firstlabel","template","list","template2","params","args","rexStr","stringMangler","matchRex","splitRex","split","blob","use_param","all_the_decor","n","label","myname","skipWords","year","ilst","tags","conv","opt","clientSegment","citeprocSegment","supplements","sortval","affixList","affixes","count","settings","tokenstore","drip","base","modifier","base_token","modifier_token","newtok","curr","tokname","notSerious","ignorePredecessor","noStripPeriods","useblob","blobPrefix","blobBlobs","myblobs","txt_esc","blobs","blob_delimiter","blobjr","use_suffix","use_prefix","blen","addtoret","numberSeen","span_split","blobs_start","blobs_end","in_cite","use_delim","doit","strlen","str_blob","count_offset_characters","addme","buf","punctInQuote","NO_SWAP_IN","NO_SWAP_OUT","LtoR_MAP","SWAP_IN","SWAP_OUT","PUNCT","PUNCT_OR_SPACE","RtoL_MAP","subkey","blobIsNumber","blobEndsInNumber","blobHasDecorations","includeQuotes","decorlist","blobHasDescendantQuotes","blobHasDescendantMergingPunctuation","parentChar","childChar","mergedChars","matchLastChar","chr","mergeChars","First","first","Second","second","merge_right","FirstStrings","SecondStrings","firstChar","secondChar","cullRight","cullLeft","addRight","addLeft","cull","matchOnRight","matchOnLeft","mergeToRight","mergeToLeft","merge","isDuplicate","upward","parentDecorations","parentStrings","childStrings","leftward","sibling","siblingChar","hasDecorations","hasNumber","suffixAndPrefixMatch","suffixAndFieldMatch","downward","delimChar","childDecorations","childIsNumber","allowMigration","siblingStrings","swapToTheLeft","swapToTheRight","fix","lastChar","quoteSwap","decoration","citation","citationsPre","citationsPost","newMode","oldMode","c","flag","preCitation","postCitation","nlen","noteCitations","textCitations","citationsInNote","oldCitationList","oldItemList","oldAmbigs","newCitationList","newItemIds","newItemIdsList","oldAkey","sortedItems","rerunAkeys","tryLabel","newitem","citationByIndex","citationById","lastNotePos","update_items","sortkeys","mydisambig","authorstring","lastauthor","thiskey","thisauthor","citations","first_ref","last_ref","first_container_ref","onecitation","item_id","first_id","last_id","myxloc","mylocator","mylabel","incitationid","incitationxloc","l","oldvalue","oldCount","newCount","oldCountCheck","newCountCheck","oldlastid","oldlastxloc","ibidme","suprame","prevCitation","thisCitation","old_last_id_offset","adjusted_offset","oldid","prevxloc","thisxloc","prev","prev_locator","prev_label","curr_locator","curr_label","note_distance","oldItemIds","rerunAkey","mycitation","firstChunk","secondChunk","thirdChunk","rawList","disambig","visualForm","oldTermSiblingLayer","itemSupp","origSuppressDecorations","last_locator","last_collapsed","alt_affixes","objects","myparams","composite","compie","preceding_item","error_object","citationID","authorOnly","suppressAuthor","citation_prefix","use_layout_prefix","suppressTrailingPunctuation","parasets","lastTitle","lastID","type","position","locatorInLastPosition","output","precedingEndsInPeriodOrComma","currentStartsWithPeriodOrComma","spaceidx","citation_suffix","last_locale","buffer","errStr","preStr","sufStr","tmpobj","tmpstr","prevItemID","blockShadowNumberReset","areaOrig","bibsection","tok","entry_ids","entry_strings","done","input","include","anymatch","allmatch","bib_entry","spec","topblobs","entry_item_ids","siblings","skips","entry_item_data","eval_string","eval_list","eval_spec","page_item_count","processed_item_ids","consolidatedIDs","o","err","last_expected_id","last_seen_id","force","direction","uncitedItemIDs","doneIDs","itemIDs","itemID","pre","post","citationList","itemList","indexNumbers","citationIds","oldCitations","idList","nosort","rerun_ambigs","implicitUpdate","oldArea","oldRoot","oldExtension","ambig","idHash","langstr","defaultLocale","langlst","beShy","localexml","localeLists","lang_in","lang_out","locale","termname","styleopts","genderform","foundLocale","style_options","jurispref","typenode","hasCslOrdinals101","ordinals101","ordinals101_toggle","genderized_terms","termstub","ikey","gender_segments","form_segments","jkey","jurisdiction_preference","skip_words","preferredLocale","stylexml","extendLocaleList","localeList","normalizedLocale","localeIDs","sniffLocaleOnOneNodeName","nodeName","nodeLocales","styleNode","nodeNames","firstkey","date_obj","dpx","mypos","dp","first_date","value_end","real","have_collapsed","invoked","precondition","known_year","bc","ad","ready","dcurr","formatter","date_variable","formatAndStrip","myform","last_string_output","monthnameid","myform_end","range_delimiter","realGroup","execs","condition","label_form","label_capitalize_if_first","context","non_parallel","parallel_first","parallel_last","publisher_lst","publisher_place_lst","choose_start","if_start","itemItem","if_end","else_start","citationNumberIdx","hasRepeat","info","doneVar","else_end","choose_end","test","counter","start_key","variable","names_start_token","name_token","institution_token","names_end_token","single_text","trigraph","abbrevfam","abbrfall","altvar","transfall","varval","end_key","keystring","year_suffix","termtxt","namevars","namelabels","prefix_token","suffix_token","setSuffix","topblob","cite_entry","my_tok","choose_tok","if_tok","newItem","locale_list","gotlang","tryspec","deleteme","checkCommonTerm","labelVariable","oldval","variables","blob_list","v","institution_sets","institutions","varblob","namesToken","name_node_string","nameobjs","substring","author_title","myqueue","mystr","oldchars","chopvar","container","limit","values","persons","has_affiliates","author","myLocalName","tokenname","delimiter","finalJoin","prevBlob","singleOrMultiple","newtoken","requireMatch","common_term","varnames","has_term","firstSet","secondSet","perfectMatch","vv","base_nameset","nameset","display_names","discretionary_names_length","sane","overlength","chk","myinitials","paramx","localesets","slot","slotnames","secondary","tertiary","long_style","short_style","institution_short","institution_long","primary","usedOrig","primary_tok","secondary_tok","tertiary_tok","hasItalic","institutionblob","secondary_outer","tertiary_outer","nameBlob","nameToken","personblob","top_locale","dropping_particle","family","non_dropping_particle","givenInfo","given","sort_sep","suffix_sep","romanesque","hasJoiningPunctuation","has_hyphenated_non_dropping_particle","nbspace","merged","apostrophes","decor_tok","ndp","formIsShort","initializeIsTurnedOn","hasInitializeWith","defaultLevel","useLevel","requestedLevel","gdropt","initialize_with","rendered","toSuffix","noparse","slotLocaleset","stopOrig","name_params","foundTag","langTag","langTags","isInstitution","try_locale","name_as_sort_order","name_as_reverse_order","name_never_short","field_lang_bare","strname","listpos","longNameStr","shortNameStr","abbrevKey","retShort","splitShort","trimmer","frag","refresh","static_ordering_val","subunits","use_first","stop_last","use_last","stop_first","s","ss","group_tok","and_term","no_delim","with_delim","publishers","myterm","theItem","oldTmpRoot","name_labels","mywith","with_default_prefix","with_suffix","thewith","sort_locales","langForItem","if_singleton","firstoutput","specialdelimiter","group_start","group_end","clonetoken","groupblob","prefixblob","valueblob","maketest","myitem","myvariable","trylabels","trylabel","tryposition","trypositions","testSubsequentNear","testSubsequentNotNear","types","mytype","tests","isValid","rawNames","rawMultiNames","creatorParent","creatorChild","tryjurisdictions","maketests","trycountries","trydates","trydate","nameList","last_is_person","locale_default","locale_data","locales","sort_locale","localeMaster","localeServant","locale_bares","tryclasses","tryclass","retval","namevar","subunit_count","length","citeForm","vars","literal","out","idxEnd","parallelMatchList","siblingRanges","currItem","nextItem","freshMatchList","tempMatchList","remainder","ididx","currVal","nextVal","currYear","nextYear","masterID","siblingID","getCountryOrJurisdiction","quashCountry","abbreviate","basevalue","family_var","use_field","myabbrev_family","preferredJurisdiction","abbrev","getFieldLocale","localeRex","getTextSubField","locale_type","use_default","opts","usingOrig","stickyLongForm","breakMe","firstValue","fieldsToTry","h","hlen","variantMatch","hasVal","loadAbbreviation","category","publisherCheck","citeFormCheck","quashCheck","fields","rawField","getOutputFunction","abbreviation_fallback","alternative_varname","langPrefs","primary_locale","secondary_locale","tertiary_locale","oldLangArray","primaryUsedOrig","primaryPrefix","conditional","levelname","particle","mother_token","textCase","last","subnode","subchildren","display","cslid","lingo","childNodes","isMacro","yr","macroFlag","exts","punctlist","terminator","normalizeOnly","nameSplits","mmm","tagstr","newstr","isAbbrev","extra","useSeason","element_trace","bib_first","nodetypes","variable_entry","positionMap","noteNumber","firstReferenceNoteNumber","firstContainerReferenceNoteNumber","citationNumber","bib_first_end","bib_other","substitution_name","subrule","printing","dosub","rendered_name","ordinal","trygenders","trygender","ordinfo","numstr","slist","N","X","ItemObject","realVariable","fullformAnd","symbolAnd","andRex","joinerMatchRex","joinerSplitRex","localeAnd","localeAmpersand","normalizeFieldValue","embeddedLabel","composeNumberInfo","origLabel","joiningSuffix","parsePosition","fixupSubsections","parseString","defaultLabel","jmrex","jsrex","recombine","slug","notAlabel","filteredOrigLabel","setSpaces","fixNumericAndCount","currentLabelInfo","master","isEscapedHyphen","mVal","mCurrentLabel","isCollapsible","fixLabelVisibility","groupStartPos","setPluralsAndNumerics","groupCount","lastVal","thisVal","stripHyphenBackslash","setStyling","masterNode","masterStyling","masterLabel","newnode","checkTerm","checkPage","fixupRangeDelimiter","rangeDelimiter","isNumeric","isPage","hasTerm","manglePageNumbers","currentInfo","fixRanges","setVariableParams","shadow_numbers","languageRole","localeType","normval","nums","labelForm","tryStatic","embeddedLabelForm","labelCapitalizeIfFirst","labelDecorations","lastLabelName","labelName","labelPlaceholderPos","numStyling","prefixLabelStyling","suffixLabelStyling","rangeType","rangerex","stringify","listify","expand","minimize","minimize_internal","chicago15","chicago16","begin","ret_func","hyphens","this_range_delimiter","delimRex","rexm","rexlst","minchars","isyear","front","divisor","sniff","_nestingState","_nestingData","localeOpenQuote","localeCloseQuote","localeOpenInnerQuote","localeCloseInnerQuote","_setOuterQuoteForm","quot","flip","_getNestingOpenerParams","opener","openers","_nestingParams","_tagRex","closers","closer","all","_tryOpen","_tryClose","_pushNestingState","_doppelString","forcedSpaces","TagReg","decor","_decor","allTheDecor","decorset","_apostropheForce","_undoppelToQueue","doppel","leadingSpace","firstString","tagReg","Stack","newblob","newdecorset","seen","_decorset","_olddecor","stack","quoteFormSeen","apostrophe","tagInfo","failedTag","tagPos","forcedSpace","tagDoppel","rexNameStr","nameDoppel","wordDoppel","_tagParams","_capitalise","word","_textcaseEngine","string","quoteParams","tryOpen","prevPos","tryClose","pushQuoteState","isOpener","quoteFix","positions","quotePos","origChar","lastWords","lastWord","passthrough","lowercase","words","uppercase","sentence","followingTag","wordle","lcase","capitalize","capitalizeFirst","capitalizeAll","aChar","prePunct","postPunct","doiurl","indent","hi","uncited_flag","myhash","otheritems","items","kkey","loneSiblingID","removeIDs","newmasterID","newmaster","mylist","akey","abase","regtoken","akkey","loneKey","array","pivot","keyset","sort_directions","compareKeys","cmp","ambig_config","new_names_params","old_names_params","new_gnames_params","old_gnames_params","key_type","root","extension","strip_prepositions","pkey","skey","dagopt","strip_periods","set_keys","evalname","delitems","addname","myitems","itemid","nameobj","namenum","request_base","initials","gdropt_orig","posB","fullkey","ismax","otherItem","clashes","otherItemCite","maxed","origid","oldBase","increment_names","increment_namesets","myIds","myItemBundles","myItems","myItem","jurisdictionElems","composedID","xmlSource","skipFallback","myFallback","myXml","myNodes","myTypes","myName","preferences","preference","always_dropping_1","always_dropping_3","always_non_dropping_1","always_non_dropping_2","always_non_dropping_3","either_1","either_2","either_1_dropping_best","either_2_dropping_best","either_3_dropping_best","non_dropping_2_alt_dropping_1_non_dropping_1","PARTICLES","splitParticles","nameValue","firstNameFlag","caseOverride","origNameValue","particleList","hasParticle","m1","trimLast","parseSuffix","nameObj","possible_suffix","possible_comma","lastNameValue","lastParticleList","nonDroppingParticle","firstNameValue","firstParticleList","droppingParticle","citeproc_commonjs"],"mappings":"6HA2DA,IAAIA,EAAM,CAEN,kBAAmB,SAEnB,MAAO,SAASC,EAAK,CACjB,MAAoB,OAAO,MAAvB,IACM,IAAI,MAAM,sBAAwBA,CAAG,EAErC,sBAAwBA,CAClC,EAEJ,MAAO,SAASA,EAAK,CACG,OAAO,QAAvB,IACA,KAAK,QAAUA,EAAM;AAAA,CAAI,EAEzB,QAAQ,IAAI,wBAA0BA,CAAG,CAC7C,EAGJ,kBAAkBA,EAAK,CACnB,IAAIC,EAAM,KAAK,IAAI,WACnB,GAAI,CACAD,EAAMA,EAAI,kBAAkBC,CAAG,CAAA,MACvB,CACRD,EAAMA,EAAI,YAAA,CAAY,CAE1B,OAAOA,CAAA,EAGX,kBAAkBA,EAAK,CACnB,IAAIC,EAAM,KAAK,IAAI,WACnB,GAAI,CACAD,EAAMA,EAAI,kBAAkBC,CAAG,CAAA,MACvB,CACRD,EAAMA,EAAI,YAAA,CAAY,CAE1B,OAAOA,CAAA,EAGX,sBAAuB,IAAI,OAAO,4NAA4N,EAE9P,2BAA4B,gOAC5B,iCAAkC,sOAElC,uBAAwB,CACpB,OAAQ,QACd,MAAO,YACD,WAAY,eACZ,MAAO,OACP,SAAU,aACV,OAAQ,WACR,SAAU,YACV,SAAU,aACV,OAAQ,WACR,OAAQ,UACR,WAAY,eACZ,MAAO,OACP,MAAO,UACP,MAAO,SACP,OAAQ,SACR,OAAQ,UACR,OAAQ,WACR,QAAS,aACT,MAAO,UACP,OAAQ,SACR,OAAQ,QACR,OAAQ,QACR,KAAM,OACN,QAAS,eACT,SAAU,eACV,SAAU,eACV,KAAM,OACN,MAAO,QACP,KAAM,OACN,MAAO,OACP,QAAS,YACT,MAAO,OACP,QAAS,WACT,SAAU,YACV,OAAQ,cACR,KAAM,OACN,MAAO,aACP,SAAU,WACV,OAAQ,UACR,OAAQ,UACR,UAAW,cACX,UAAW,aACX,QAAS,aACT,OAAQ,QACR,OAAQ,QACR,OAAQ,UAEZ,+BAAgC,CAC5B,MAAS,OACf,YAAa,MACP,YAAa,MACb,aAAgB,WAChB,KAAQ,MACR,WAAc,SACd,SAAY,OACZ,UAAa,SACb,WAAc,SACd,SAAY,OACZ,QAAW,OACX,aAAgB,WAChB,KAAQ,MACR,QAAW,MACX,OAAU,MACV,OAAU,OACV,QAAW,OACX,SAAY,OACZ,WAAc,QACd,QAAW,MACX,OAAU,OACV,MAAS,OACT,MAAS,OACT,KAAQ,KACR,aAAgB,QAChB,aAAgB,SAChB,aAAgB,SAChB,KAAQ,KACR,MAAS,MACT,KAAQ,KACR,UAAa,QACb,KAAQ,MACR,SAAY,QACZ,UAAa,SACb,YAAe,OACf,KAAQ,KACR,WAAc,MACd,SAAY,SACZ,QAAW,OACX,UAAW,OACX,YAAe,UACf,WAAc,UACd,WAAc,QACd,MAAS,OACT,MAAS,OACT,OAAU,QAGd,mBAAoB,CAChB,IAAO,QACb,GAAM,YACA,QAAW,eACX,GAAM,OACN,MAAS,aACT,IAAO,WACP,MAAS,YACT,MAAS,aACT,IAAO,WACP,IAAO,UACP,QAAW,eACX,GAAM,OACN,GAAM,UACN,GAAM,SACN,IAAO,SACP,IAAO,UACP,IAAO,WACP,KAAQ,aACR,GAAM,UACN,IAAO,SACP,IAAO,QACP,IAAO,QACP,EAAK,OACL,KAAQ,eACR,MAAS,eACT,MAAS,eACT,EAAK,OACL,GAAM,QACN,EAAK,OACL,GAAM,OACN,KAAQ,YACR,GAAM,OACN,KAAQ,WACR,MAAS,YACT,IAAO,cACP,EAAK,OACL,GAAM,aACN,MAAS,WACT,IAAO,UACP,IAAO,UACP,OAAU,cACV,OAAU,aACV,KAAQ,aACR,IAAO,QACP,IAAO,QACP,IAAO,UAEX,cAAe,CACX,iBAAkB,GAClB,cAAe,GACf,uBAAwB,GACxB,oBAAqB,GACrB,aAAc,GACd,mBAAoB,GACpB,aAAc,GACd,mBAAoB,GACpB,gBAAiB,IAErB,aAAc,CACV,WAAc,GACd,YAAe,GACf,KAAQ,GACR,QAAW,GACX,QAAW,GACX,OAAU,GACV,WAAc,GACd,SAAY,GACZ,OAAU,GACV,QAAW,IAEf,iBAAkB,SAASE,EAAO,CAC1BA,EAAM,IAAI,SAAW,QACrB,KAAK,MAAQ,EACb,KAAK,OAAS,SAASF,EAAK,CAMxB,QAFIA,EAAMA,GAAY,GAClBG,EAAMH,EAAI,MAAM,UAAU,EACrBI,EAAE,EAAEC,EAAKF,EAAI,OAAOC,EAAEC,EAAKD,GAAK,EACjCD,EAAIC,CAAC,IAAM,KACA,KAAK,MAAQ,IAApB,IACAD,EAAIC,CAAC,EAAI,KAEb,KAAK,OAAS,GACPD,EAAIC,CAAC,IAAM,MACP,KAAK,MAAQ,IAApB,IACAD,EAAIC,CAAC,EAAI,KAEb,KAAK,OAAS,GAGtB,IAAIE,EAAMH,EAAI,KAAK,EAAE,EACrB,OAAOG,CAAA,GAGX,KAAK,OAAS,SAASN,EAAK,CACxB,OAAOA,CAAA,CAEf,EAGJ,aAAc,CAAC,QAAS,YAAa,kBAAmB,cAAe,QAAS,kBAAmB,mBAAoB,YAAY,QAAQ,cAAc,SAAS,UAAU,eAAe,UAAU,eAAe,EAEpN,aAAc,CACV,MAAQ,SACR,cAAc,SACd,MAAQ,SACR,MAAQ,SACR,OAAS,SACT,kBAAkB,WAClB,mBAAmB,SACnB,QAAU,WACV,UAAY,aACZ,UAAY,aACZ,kBAAmB,SACnB,cAAe,SACf,gBAAiB,SACjB,aAAgB,SAChB,OAAU,SACV,QAAU,SACV,MAAQ,SACR,OAAS,UAGb,qBAAsB,UAAY,CAC9B,KAAK,iBAAiB,EAAI,CAAA,EAC1B,KAAK,kBAAkB,EAAI,CAAA,EAC3B,KAAK,oBAAoB,EAAI,CAAA,EAC7B,KAAK,kBAAkB,EAAI,CAAA,EAC3B,KAAK,SAAW,CAAA,EAChB,KAAK,OAAS,CAAA,EACd,KAAK,MAAQ,CAAA,EACb,KAAK,MAAQ,CAAA,EACb,KAAK,YAAc,CAAA,EACnB,KAAK,QAAU,CAAA,EACf,KAAK,kBAAkB,EAAI,CAAA,EAC3B,KAAK,cAAc,EAAI,CAAA,CAAC,EAG5B,iBAAkB,SAAUE,EAAOK,EAASC,EAAM,CACpD,IAAIC,EAAS,KACP,GAAIP,EAAM,IAAI,wBAA0BK,GAAWA,IAAY,UAAW,CACzE,IAAIG,EAAyBR,EAAM,OAAOA,EAAM,IAAI,IAAI,EAAE,KAAK,yBAAyB,EACvFS,EAAuB,KAI3B,GAHIT,EAAM,OAAOM,CAAI,IACpBG,EAAuBT,EAAM,OAAOM,CAAI,EAAE,KAAK,yBAAyB,GAErEG,GACH,QAASC,EAAED,EAAqB,OAAO,EAAGC,EAAI,GAAIA,IACjD,GAAIV,EAAM,IAAI,uBAAuBK,CAAO,EAAE,QAAQI,EAAqBC,CAAC,CAAC,EAAI,GAAI,CACpFH,EAASE,EAAqBC,CAAC,EAC/B,KAAA,EAIH,GAAI,CAACH,GAAUC,GACd,QAASE,EAAEF,EAAuB,OAAO,EAAGE,EAAI,GAAIA,IACnD,GAAIV,EAAM,IAAI,uBAAuBK,CAAO,EAAE,QAAQG,EAAuBE,CAAC,CAAC,EAAI,GAAI,CACtFH,EAASC,EAAuBE,CAAC,EACjC,KAAA,EAGH,CAEE,OAAOH,CAAA,EAGX,qBAAsB,CAClB,MAAS,QACT,kBAAmB,kBACnB,mBAAoB,mBACpB,QAAW,QACX,OAAU,SACV,MAAS,QACT,QAAW,kBACX,cAAe,QACf,MAAS,QACT,MAAS,QACT,OAAU,QAChB,gBAAiB,QACjB,kBAAmB,QACnB,cAAe,QACf,aAAgB,QAChB,gBAAiB,QACjB,yBAA0B,QACpB,cAAe,SACf,iBAAkB,SAClB,oBAAqB,SACrB,QAAW,SACX,KAAQ,SACR,MAAS,SACT,QAAW,SACX,gBAAiB,SACjB,kBAAmB,SACnB,oBAAqB,SACrB,OAAU,SACV,kBAAmB,SACnB,UAAa,oBAGjB,aAAc,SAASI,EAAM,CACzB,GAAI,KAAK,IAAI,uBAAuB,2BAE5BA,EAAK,QAAS,CACdA,EAAK,QAAU,GAAKA,EAAK,QACzB,IAAIC,EAAMD,EAAK,QAAQ,QAAQ,GAAG,EAClC,GAAIC,EAAM,GAAI,CACV,IAAIC,EAAcF,EAAK,QACvBA,EAAK,QAAUE,EAAY,MAAM,EAAGD,CAAG,EACvCC,EAAcA,EAAY,MAAMD,EAAM,CAAC,EACvC,IAAIE,EAAID,EAAY,MAAM,iCAAiC,EACvDC,IACAH,EAAK,cAAc,EAAI,KAAK,IAAI,WAAW,kBAAkBG,EAAE,CAAC,CAAC,EACjED,EAAcA,EAAY,MAAMC,EAAE,CAAC,EAAE,MAAM,GAE/CH,EAAK,eAAe,EAAIE,EAAY,QAAQ,OAAQ,EAAE,EAAE,QAAQ,OAAQ,EAAE,CAAA,CAC9E,CAGR,OAAIF,EAAK,UACLA,EAAK,SAAW,GAAKA,EAAK,SAAS,QAAQ,OAAQ,EAAE,GAElDA,CAAA,EAGX,mBAAoB,SAASb,EAAK,CAC9B,GAAKA,EAGL,KAAIG,EAAMH,EAAI,MAAM,GAAG,EACvB,OAAAG,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAE,YAAA,EACZA,EAAI,CAAC,IACLA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAE,YAAA,GAEbA,EAAI,KAAK,GAAG,EAAA,EAGvB,oBAAqB,SAASc,EAAMC,EAAoBC,EAAmB,CACvE,GAAiB,OAAOF,EAAK,MAAzB,SAMJ,SAHIG,EAAQ,CAAA,EACRC,EAAQJ,EAAK,KAAK,MAAM;AAAA,CAAI,EAEvBb,EAAE,EAAGC,EAAKgB,EAAM,OAAQjB,EAAEC,EAAMD,IAAK,CAC1C,IAAIkB,EAAOD,EAAMjB,CAAC,EACdgB,EAAQ,CAAA,EACRJ,EAAIM,EAAK,MAAMvB,EAAI,kBAAkB,EACzC,GAAIiB,EAAG,CAEH,QADIO,EAAOD,EAAK,MAAMvB,EAAI,kBAAkB,EACnCa,EAAE,EAAEY,EAAMD,EAAK,OAAO,EAAGX,EAAEY,EAAKZ,IACrCQ,EAAM,KAAKG,EAAKX,CAAC,CAAC,EAClBQ,EAAM,KAAKJ,EAAEJ,CAAC,CAAC,EAEnBQ,EAAM,KAAKG,EAAKA,EAAK,OAAO,CAAC,CAAC,EAC9B,QAASX,EAAE,EAAEY,EAAKJ,EAAM,OAAOR,EAAEY,GAEzB,EAAAJ,EAAMR,EAAE,CAAC,EAAE,SAAWR,EAAE,GAAKQ,EAAE,IAAM,CAACQ,EAAMR,EAAE,CAAC,EAAE,MAAMb,EAAI,iBAAiB,GAF9Ca,GAAK,EAKnCQ,EAAMR,CAAC,EAAI;AAAA,EAAOQ,EAAMR,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAA,EAAS;AAAA,EAGxDS,EAAMjB,CAAC,EAAIgB,EAAM,KAAK,EAAE,CAAA,CAC5B,CAGJC,EAAQA,EAAM,KAAK;AAAA,CAAI,EAAE,MAAM;AAAA,CAAI,EAGnC,QAFII,EAAS,EACTC,EAAQ,CAAA,EACHtB,EAAE,EAAEC,EAAKgB,EAAM,OAAOjB,EAAEC,EAAKD,IAAK,CACvC,IAAIkB,EAAOD,EAAMjB,CAAC,EACduB,EAAKL,EAAK,MAAMvB,EAAI,iBAAiB,EACzC,GAAKuB,EAAK,QAEV,GAAW,CAACK,EAAI,CACZ,GAAIvB,IAAM,EACN,SAEAqB,EAASrB,EACT,KACJ,MAPA,UASJ,IAAIwB,EAAMD,EAAG,CAAC,EACVE,EAAMF,EAAG,CAAC,EAAE,QAAQ,OAAQ,EAAE,EAAE,QAAQ,OAAQ,EAAE,EACtD,GAAIC,IAAQ,OACRX,EAAK,KAAOY,EACZR,EAAMjB,CAAC,EAAI,WACJL,EAAI,eAAe,QAAQ6B,EAAI,QAAQ,QAAS,EAAE,CAAC,EAAI,IAC1D,CAACX,EAAKW,CAAG,GAAKT,KACdF,EAAKW,CAAG,EAAI7B,EAAI,WAAW,iBAAiB8B,CAAG,GAC3C,CAACX,GAAuBA,EAAmBU,CAAG,GAAK,KAAK,aAAaC,CAAG,KACxER,EAAMjB,CAAC,EAAI,aAGZ,CAACa,EAAKW,CAAG,EAAG,CACnB,GAAI7B,EAAI,eAAe,QAAQ6B,EAAI,QAAQ,QAAS,EAAE,CAAC,EAAI,GAAI,CACtDF,EAAME,CAAG,IACVF,EAAME,CAAG,EAAI,CAAA,GAEjB,IAAIzB,EAAM0B,EAAI,MAAM,YAAY,EAChC,GAAI1B,EAAI,SAAW,EACfuB,EAAME,CAAG,EAAE,KAAK,CAAC,QAAQzB,EAAI,CAAC,EAAE,UACzBA,EAAI,SAAW,EAAG,CACzB,IAAI2B,EAAO,CAAC,OAAO3B,EAAI,CAAC,EAAE,MAAMA,EAAI,CAAC,CAAA,EACrCJ,EAAI,eAAe+B,CAAI,EACvBJ,EAAME,CAAG,EAAE,KAAKE,CAAI,CAAA,CACxB,MAEAb,EAAKW,CAAG,EAAIC,GAEZ,CAACX,GAAsBA,EAAmBU,CAAG,KAC7CP,EAAMjB,CAAC,EAAI,GACf,CACJ,CAEJ,QAASwB,KAAOF,EACZT,EAAKW,CAAG,EAAIF,EAAME,CAAG,EAGzB,GAAIV,EAAoB,CAChBG,EAAMI,CAAM,EAAE,SACdJ,EAAMI,CAAM,EAAI;AAAA,EAAOJ,EAAMI,CAAM,GAEvC,QAASrB,EAAEqB,EAAO,EAAErB,EAAE,GAAGA,IAChBiB,EAAMjB,CAAC,EAAE,SACViB,EAAQA,EAAM,MAAM,EAAGjB,CAAC,EAAE,OAAOiB,EAAM,MAAMjB,EAAI,CAAC,CAAC,EAE3D,CAEJa,EAAK,KAAOI,EAAM,KAAK;AAAA,CAAI,EAAE,KAAA,EAAK,EAGtC,uBAAwB,SAAUnB,EAAO6B,EAAQ,CACxCA,IACDA,EAAS,IAEb,IAAIC,EAAK,GAULC,EAAcF,EAAO,QAAQ,WAAY,EAAE,EAAE,QAAQ,yCAAyC,EAAE,EAChGG,EAAYD,EAAY,MAAM,EAAE,GAChCA,EAAY,MAAMlC,EAAI,0BAA0B,GAEzCA,EAAI,qBAAqB,MAAM,EAAE,EAAE,EAAE,QAAQmC,CAAS,EAAI,IAE1DA,EAAU,MAAM,YAAY,KACnCF,EAAK,KAIT,IAAID,GAAUA,EAASC,GAAI,QAAQ,OAAQ,GAAG,EAC9C,OAAOD,CAAA,EAGX,uBAAwB,SAAS7B,EAAO6B,EAAQ,CAE5C,IAAIE,EAAcF,EAAO,QAAQ,WAAY,EAAE,EAAE,QAAQ,yCAAyC,EAAE,EAChGG,EAAYD,EAAY,MAAM,EAAE,EACpC,OAAIlC,EAAI,qBAAqB,MAAM,EAAE,EAAE,EAAE,QAAQmC,CAAS,EAAI,IAAMH,EAAO,KAAA,EAAO,QAAQ,GAAG,EAAI,IAC7F7B,EAAM,IAAI,iBAAmB,GACtB,IAEJ,EAAA,EAGX,wBAAyB,SAASA,EAAOiC,EAAQ,CAC7C,OAAKA,IAGDA,EAAO,MAAMpC,EAAI,4BAA4B,GAAK,CAAC,IAAI,GAAG,EAAE,QAAQoC,EAAO,MAAM,EAAE,CAAC,CAAC,EAAI,MACzFA,EAAS,IAAMA,GAEZA,GALI,EAKJ,EAGX,QAAS,CAAC,YAAa,UAAU,EAEjC,uBAAwB,EAExB,QAAS,mBACT,4BAA6B,EAE7B,MAAO,EACP,IAAK,EACL,UAAW,EAEX,KAAM,EACN,UAAW,EACX,uBAAwB,EACxB,SAAU,EAEV,SAAU,EACV,OAAQ,EAER,QAAS,GAET,OAAQ,EACR,MAAO,EAEP,WAAY,EACZ,UAAW,EAEX,QAAS,EACT,UAAW,EAEX,eAAgB,EAChB,oBAAqB,EACrB,cAAe,EACf,2BAA4B,EAC5B,8BAA+B,EAE/B,aAAc,CACV,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GAGT,mBAAoB,CAAC,WAAY,8BAA+B,WAAW,EAE3E,MAAO,CAAC,WAAY,gBAAiB,eAAgB,oBAAqB,QAAQ,EAElF,YAAa,CAAC,8BAA+B,wCAAyC,UAAW,eAAe,EAEhH,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,GAAG,EAC9C,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAGnD,KAAM,EACN,QAAS,EACT,SAAU,EACV,SAAU,EAEV,WAAY,CAAC,OAAQ,QAAS,KAAK,EACnC,eAAgB,CAAC,OAAQ,QAAS,MAAO,QAAQ,EACjD,oBAAqB,CAAC,OAAQ,QAAS,MAAO,WAAY,YAAa,SAAS,EAEhF,WAAY,CAAC,wBAAyB,SAAU,QAAS,oBAAqB,SAAU,SAAS,EAEjG,qBAAsB,CAClB,yBACA,6BACA,gCAGJ,+BAAgC,CAC5B,YACA,0BACA,eACA,6BACA,WAGJ,gBAAiB,CACb,MACA,0BACA,2BACA,kBACA,aACA,qBACA,iBACA,YACA,kBACA,uBACA,6BACA,OACA,SACA,SACA,aAGJ,MAAO,EACP,OAAQ,EACR,SAAU,EAEV,mBAAoB,YACpB,mBAAoB,iBAEpB,cAAe,gBAcf,oBAAqB,gSACrB,kBAAmB,8KACnB,sBAAuB,4KACvB,6BAA8B,4KAC9B,2BAA4B,+KAC5B,sBAAuB,6KAEvB,oBAAqB,oOAErB,iBAAkB,ySAElB,mBAAoB,oCACpB,kBAAmB,mCAEtB,sBAAuB,2CACvB,uBAAwB,2CAErB,gBAAiB,CAAC,QAAS,cAAe,eAAgB,QAAQ,EAElE,eAAgB,CACZ,SACA,QACA,oBACA,WACA,WACA,mBACA,cACA,UACA,WACA,SACA,oBACA,qBACA,qBACA,QACA,OACA,cACA,cACA,WACA,YACA,kBACA,YACA,WACA,YACA,kBACA,gBACA,iBACA,aACA,aAEJ,SAAU,CACN,SACA,QACA,oBACA,WACA,WACA,mBACA,cACA,UACA,WACA,SACA,oBACA,qBACA,qBACA,QACA,OACA,cACA,cACA,WACA,YACA,kBACA,YACA,WACA,YACA,kBACA,gBACA,iBACA,aACA,aAEJ,kBAAmB,CACf,cACA,iBACA,oBACA,WACA,UACA,OACA,QACA,UACA,gBACA,SACA,kBACA,oBACA,cACA,kBACA,UACA,oBACA,UACA,SACA,aACA,mBAQJ,eAAgB,CACZ,eACA,SACA,aACA,WACA,gBACA,mBACA,iBACA,YACA,aACA,aAEJ,0BAA2B,CACvB,QACA,mBAEJ,mBAAoB,SAASC,EAAK,CAG9B,QAFIC,EAAO,CAAC,QAAS,QAAS,OAAQ,MAAO,SAAS,EAClD/B,EAAM,CAAA,EACDF,EAAE,EAAEC,EAAKgC,EAAK,OAAOjC,EAAEC,EAAKD,IACjCE,EAAI+B,EAAKjC,CAAC,CAAC,EAAIgC,EAAM,SAAWC,EAAKjC,CAAC,IAAM,QAAU,GAAK,IAAMiC,EAAKjC,CAAC,GAE3E,OAAOE,CAAA,EAGX,iBAAkB,SAAUJ,EAAOoC,EAAKC,EAAgB,CACpD,IAAIC,EAAatC,EAAM,OAAOA,EAAM,IAAI,IAAI,EAAE,KAAK,qBAAqB,EACxE,GAAIoC,GAAOC,EAAgB,CACvBD,EAAMA,EAAI,MAAM,KAAK,EACrBA,EAAI,QAAA,EAEJ,QADIG,EAAQ,CAAA,EACH7B,EAAK0B,EAAI,OAAS,EAAG1B,EAAI,IAC1B4B,EAAW,QAAQF,EAAI1B,CAAC,EAAE,YAAA,CAAa,EAAI,GADbA,GAAK,GAEnC6B,EAAM,KAAKH,EAAI,KAAK,EAK5BA,EAAI,QAAA,EACJ,IAAII,EAAQJ,EAAI,KAAK,GAAG,EACpBK,EAAMF,EAAM,KAAK,GAAG,EACTF,IAAX,QAA6B,CAACI,EAC9BL,EAAMI,EACcH,IAAb,WACPD,EAAM,CAACI,EAAOC,CAAG,EAAE,KAAK,IAAI,EAChC,CAEJ,OAAOL,CAAA,EAGX,wBAAyB,SAAUrB,EAAM2B,EAAmB,CACxD,IAAIC,EAAcD,EAAoB,IAAW,GAG7CE,EAAW,CAAC,EAAE,EACd,KAAK,IAAI,uBAAuB,uBAChCA,EAAS,KAAK,YAAY,EAE9B,QAAS1C,EAAE,EAAEC,EAAKyC,EAAS,OAAO1C,EAAEC,EAAKD,IAAK,CAC1C,IAAIgC,EAAMU,EAAS1C,CAAC,EAChB2C,EAAQhD,EAAI,mBAAmBqC,CAAG,EAClCY,EAAQ,CAAC,EAAK,EAClB,GAAI/B,EAAK,MACL,QAAST,KAAQS,EAAK,MAAM,MAAM8B,EAAM,KAAK,EACzCC,EAAM,KAAKxC,CAAI,EAGvB,QAASI,EAAE,EAAEY,EAAKwB,EAAM,OAAOpC,EAAEY,EAAKZ,IAAK,CACvC,IAAIJ,EAAOwC,EAAMpC,CAAC,EACdqC,EAAO,CAAA,EACPzC,GACIS,EAAK,MAAM,MAAM8B,EAAM,KAAK,IAC5BE,EAAKF,EAAM,KAAK,EAAI9B,EAAK,MAAM,MAAM8B,EAAM,KAAK,EAAEvC,CAAI,GAEtDS,EAAK,MAAM,MAAM8B,EAAM,KAAQ,IAC/BE,EAAKF,EAAM,KAAQ,EAAI9B,EAAK,MAAM,MAAM8B,EAAM,KAAQ,EAAEvC,CAAI,KAGhEyC,EAAKF,EAAM,KAAK,EAAI9B,EAAK8B,EAAM,KAAK,EACpCE,EAAKF,EAAM,KAAQ,EAAI9B,EAAK8B,EAAM,KAAQ,GAE9CE,EAAKF,EAAM,IAAI,EAAIE,EAAKF,EAAM,KAAK,EACnCE,EAAKF,EAAM,GAAG,EAAI,GAClB,IAAIG,EAAaD,EAAKF,EAAM,KAAQ,EACpC,GAAIE,EAAKF,EAAM,KAAK,EAAG,CAMnB,GAAIG,GAAcA,EAAW,YAAA,IAAkBD,EAAKF,EAAM,KAAK,EAAE,cAC7DE,EAAKF,EAAM,IAAI,EAAIE,EAAKF,EAAM,KAAK,EACnCE,EAAKF,EAAM,OAAO,EAAI,GACtBE,EAAKF,EAAM,GAAG,EAAI,WACXG,EAAY,CAEnB,IAAIC,EAAOF,EAAKF,EAAM,KAAK,EAAE,MAAMG,EAAW,QAAQ,WAAY,EAAE,EAAE,MAAM,EACxEE,EAAMH,EAAKF,EAAM,KAAK,EAAE,QAAQI,EAAK,QAAQ,WAAY,EAAE,EAAG,EAAE,EAAE,KAAA,EAClEnC,EAAIjB,EAAI,mBAAmB,WAAW,KAAKoD,CAAI,EACnD,GAAInC,GAAKoC,EAAI,YAAA,IAAkBF,EAAW,cACtCD,EAAKF,EAAM,IAAI,EAAIK,EACnBH,EAAKF,EAAM,OAAO,EAAI/B,EAAE,CAAC,EAAE,QAAQ,gBAAiB,IAAI,EACxDiC,EAAKF,EAAM,GAAG,EAAII,EAAK,QAAQpD,EAAI,mBAAmB,WAAY,EAAE,EAChE,KAAK,IAAI,uBAAuB,qCAChCkD,EAAKF,EAAM,KAAQ,EAAIE,EAAKF,EAAM,IAAI,OAEvC,CACH,IAAIM,EAAatD,EAAI,YAAYkD,EAAKF,EAAM,KAAK,CAAC,EAC9CM,EAAW,QAAU,GACrBJ,EAAKF,EAAM,IAAI,EAAIM,EAAW,CAAC,EAC/BJ,EAAKF,EAAM,OAAO,EAAIM,EAAW,CAAC,EAClCJ,EAAKF,EAAM,GAAG,EAAIM,EAAW,CAAC,IAE9BJ,EAAKF,EAAM,IAAI,EAAIE,EAAKF,EAAM,KAAK,EACnCE,EAAKF,EAAM,OAAO,EAAI,GACtBE,EAAKF,EAAM,GAAG,EAAI,GACtB,CACJ,KACG,CACH,IAAIM,EAAatD,EAAI,YAAYkD,EAAKF,EAAM,KAAK,CAAC,EAClD,GAAIM,EAAW,QAAU,GAIrB,GAHAJ,EAAKF,EAAM,IAAI,EAAIM,EAAW,CAAC,EAC/BJ,EAAKF,EAAM,OAAO,EAAIM,EAAW,CAAC,EAClCJ,EAAKF,EAAM,GAAG,EAAIM,EAAW,CAAC,EAC1B,KAAK,IAAI,uBAAuB,sBAAwBpC,EAAK,OAAS,cAClE,CAACA,EAAK8B,EAAM,KAAK,GAAK,CAACE,EAAKF,EAAM,IAAI,EAAE,MAAM,eAAe,EAAG,CAChE,IAAIO,EAAQL,EAAKF,EAAM,OAAO,EAAE,KAAA,EAC5B,CAAC,IAAK,GAAG,EAAE,QAAQO,CAAK,IAAM,KAC9BA,EAAQ,IAEZL,EAAKF,EAAM,KAAK,EAAIE,EAAKF,EAAM,IAAI,EAAIO,CAAA,OAI/CL,EAAKF,EAAM,IAAI,EAAIE,EAAKF,EAAM,KAAK,EACnCE,EAAKF,EAAM,OAAO,EAAI,GACtBE,EAAKF,EAAM,GAAG,EAAI,EACtB,CAEJ,GAAIE,EAAKF,EAAM,OAAO,GACdE,EAAKF,EAAM,OAAO,EAAE,MAAM,UAAU,EAAG,CACvC,IAAI/B,EAAIiC,EAAKF,EAAM,OAAO,EAAE,MAAM,QAAQ,EAC1CE,EAAKF,EAAM,IAAI,EAAIE,EAAKF,EAAM,IAAI,EAAIF,EAAaI,EAAKF,EAAM,OAAO,EAAE,KAAA,EACvEE,EAAKF,EAAM,OAAO,EAAI/B,EAAE,CAAC,CAAA,CAEjC,CAUJ,GARIiC,EAAKF,EAAM,OAAO,IACdE,EAAKF,EAAM,OAAO,EAAE,QAAQ,GAAG,EAAI,KACnCE,EAAKF,EAAM,OAAO,EAAIF,EAAc,OAEpCI,EAAKF,EAAM,OAAO,EAAE,QAAQ,GAAG,EAAI,IAAME,EAAKF,EAAM,OAAO,EAAE,QAAQ,GAAG,EAAI,MAC5EE,EAAKF,EAAM,OAAO,EAAI,MAG1BvC,EACA,QAASoB,KAAOqB,EACPhC,EAAK,MAAM,MAAMW,CAAG,IACrBX,EAAK,MAAM,MAAMW,CAAG,EAAI,CAAA,GAE5BX,EAAK,MAAM,MAAMW,CAAG,EAAEpB,CAAI,EAAIyC,EAAKrB,CAAG,MAG1C,SAASA,KAAOqB,EACZhC,EAAKW,CAAG,EAAIqB,EAAKrB,CAAG,CAE5B,CACJ,CACJ,EAGJ,0BAA2B,SAAS1B,EAAOe,EAAMmB,EAAK5B,EAAM+C,EAAc,CAOtE,IAAIR,EAAQhD,EAAI,mBAAmBqC,CAAG,EAClCa,EAAO,CAAA,EAoBX,GAnBIzC,GAAQS,EAAK,OACTA,EAAK,MAAM,MAAM8B,EAAM,KAAK,IAC5BE,EAAKF,EAAM,KAAK,EAAI9B,EAAK,MAAM,MAAM8B,EAAM,KAAK,EAAEvC,CAAI,GAEtDS,EAAK,MAAM,MAAM8B,EAAM,IAAI,IAC3BE,EAAKF,EAAM,IAAI,EAAI9B,EAAK,MAAM,MAAM8B,EAAM,IAAI,EAAEvC,CAAI,GAEpDS,EAAK,MAAM,MAAM8B,EAAM,GAAG,IAC1BE,EAAKF,EAAM,GAAG,EAAI9B,EAAK,MAAM,MAAM8B,EAAM,GAAG,EAAEvC,CAAI,GAElDS,EAAK,MAAM,MAAM8B,EAAM,OAAO,IAC9BE,EAAKF,EAAM,OAAO,EAAI9B,EAAK,MAAM,MAAM8B,EAAM,OAAO,EAAEvC,CAAI,KAG9DyC,EAAKF,EAAM,KAAK,EAAI9B,EAAK8B,EAAM,KAAK,EACpCE,EAAKF,EAAM,IAAI,EAAI9B,EAAK8B,EAAM,IAAI,EAClCE,EAAKF,EAAM,GAAG,EAAI9B,EAAK8B,EAAM,GAAG,EAChCE,EAAKF,EAAM,OAAO,EAAI9B,EAAK8B,EAAM,OAAO,GAExCE,EAAKF,EAAM,IAAI,GAAKE,EAAKF,EAAM,GAAG,EAAG,CACrC,IAAIS,EAAYP,EAAKF,EAAM,IAAI,EAC3BU,EAAUR,EAAKF,EAAM,OAAO,EAC5BW,EAAWT,EAAKF,EAAM,GAAG,EAC7B,OAAIQ,GACAC,EAAYzD,EAAI,OAAO,WAAW,SAASG,EAAOsD,CAAS,EAC3DE,EAAW3D,EAAI,OAAO,WAAW,SAASG,EAAOwD,CAAQ,GAClDxD,EAAM,IAAI,uBAAuB,sBACxCwD,EAAW3D,EAAI,OAAO,WAAW,kBAAkB,EAAEG,EAAOwD,CAAQ,GAEjE,CAACF,EAAWC,EAASC,CAAQ,EAAE,KAAK,EAAE,CAAA,SACtCT,EAAKF,EAAM,KAAK,EAAG,CAC1B,GAAIQ,EACA,OAAOxD,EAAI,OAAO,WAAW,SAASG,EAAO+C,EAAKF,EAAM,KAAK,CAAC,EAClE,GAAW7C,EAAM,IAAI,uBAAuB,oBAAqB,CAG7D,QADIyD,EAAS5D,EAAI,YAAYkD,EAAKF,EAAM,KAAK,CAAC,EACrC3C,EAAE,EAAEC,EAAKsD,EAAO,OAAQvD,EAAEC,EAAMD,GAAK,EAC1CuD,EAAOvD,CAAC,EAAIL,EAAI,OAAO,WAAW,kBAAkB,EAAEG,EAAOyD,EAAOvD,CAAC,CAAC,EAE1E,QAASA,EAAE,EAAGC,EAAKsD,EAAO,OAAO,EAAGvD,EAAIC,EAAMD,GAAK,EAAG,CAClD,IAAIY,EAAI2C,EAAOvD,CAAC,EAAE,MAAM,YAAY,EACpC,GAAIY,EAAG,CACH,IAAI6B,EAAc3C,EAAM,IAAI,gBAAgB,EAAE,CAAC,EAAE,MAAM,EAAG,CAAC,EAAE,YAAA,IAAkB,KAAO,IAAW,GACjGyD,EAAOvD,CAAC,EAAIyC,EAAc7B,EAAE,CAAC,CAAA,EAE7B2C,EAAOvD,CAAC,EAAE,QAAQ,GAAG,EAAI,IAAMuD,EAAOvD,CAAC,EAAE,QAAQ,GAAG,EAAI,MACxDuD,EAAOvD,CAAC,EAAI,IAChB,CAEJ,OAAA6C,EAAKF,EAAM,KAAK,EAAIY,EAAO,KAAK,EAAE,EAC3BV,EAAKF,EAAM,KAAK,CAAA,KAEvB,QAAOE,EAAKF,EAAM,KAAK,CAC3B,KAEA,OAAO,EACX,EAGJ,cAAe,SAAS7C,EAAO,CAC3B,GAAI,CAAC,eAAgB,UAAU,EAAE,QAAQA,EAAM,IAAI,IAAI,EAAI,GAAI,CAI3D,IAAI0D,EAAY,CAAA,EAMhB,OALI1D,EAAM,IAAI,uBAAuB,mCAAqCA,EAAM,IAAI,OAAS,QACzF0D,EAAU,KAAK,SAAUC,EAAK,CAC1B,OAAOA,EAAI,QAAQ,UAAW,kDAAkD,CAAA,CACnF,EAEDD,EAAU,OACH,SAAUC,EAAK,CAClB,QAASzD,EAAI,EAAGC,EAAOuD,EAAU,OAAQxD,EAAIC,EAAMD,GAAK,EACpDyD,EAAMD,EAAUxD,CAAC,EAAEyD,CAAG,EAE1B,OAAO9D,EAAI,OAAO,QAAQG,EAAM,IAAI,IAAI,EAAE,YAAY2D,CAAG,CAAA,EAGtD9D,EAAI,OAAO,QAAQG,EAAM,IAAI,IAAI,EAAE,WAC9C,KAEA,QAAO,SAAU2D,EAAK,CAAE,OAAOA,CAAA,CACnC,EAGJ,WAAY,CAAC,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,UAAU,KAAM,QAAQ,YAAY,OAAO,SAAS,QAAQ,UAAU,SAAS,UAAU,OAAO,SAAS,KAAK,QAAQ,UAAU,KAAK,UAAU,OAAO,UAAU,SAAS,SAAS,QAAQ,UAAU,SAAS,UAAU,UAAU,SAAS,MAAM,KAAK,QAAQ,UAAU,OAAO,SAAS,KAAM,SAAS,MAAM,YAAY,OAAO,QAAQ,KAAK,SAAS,OAAO,OAAO,OAAO,SAAS,OAAO,OAAO,kBAAkB,KAAK,MAAM,KAAK,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM,MAAM,OAAO,QAAQ,OAAO,UAAU,QAAQ,aAAa,UAAU,OAAO,KAAK,SAAS,UAAU,QAAQ,aAAa,QAAQ,OAAO,KAAK,OAAO,SAAS,MAAM,KAAK,KAAK,IAAI,MAAM,YAAY,OAAO,SAAS,UAAU,eAAe,WAAW,aAAa,SAAS,QAAQ,SAAS,aAAa,aAAa,UAAU,aAAa,WAAW,SAAS,aAAa,WAAW,YAAY,aAAa,UAAU,UAAU,QAAQ,WAAW,SAAS,aAAa,WAAW,cAAc,cAAc,gBAAgB,UAAU,UAAU,QAAQ,WAAW,KAAM,MAAO,KAAM,MAAO,MAAO,MAAO,IAAK,KAAM,MAAO,KAAM,KAAM,MAAO,MAAO,IAAK,IAAI,EAE5oC,oBAAqB,CACjB,iBACA,cACA,gBACA,eACA,mBACA,kBACA,WAGJ,iBAAkB,CACd,aACA,eACA,cACA,kBACA,aAGJ,aAAc,sDACd,eAAgB,CACZ,CAAE,GAAI,IAAK,KAAM,MAAO,KAAM,IAAK,KAAM,MAAO,OAAQ,IAAK,EAC7D,CAAE,GAAI,IAAK,KAAM,MAAO,KAAM,IAAK,KAAM,MAAO,OAAQ,IAAK,EAC7D,CAAE,GAAI,IAAK,KAAM,MAAO,KAAM,IAAK,KAAM,MAAO,OAAQ,IAAK,EAC7D,CAAE,GAAI,IAAK,KAAM,MAAO,OAAQ,OAAO,GAG3C,MAAO,CACH,QAAQ,YACR,GAAK,SACL,QAAQ,YACR,QAAQ,UACR,QAAQ,QACR,QAAQ,SACR,QAAQ,WACR,QAAQ,cACR,QAAQ,cACR,QAAQ,QACR,QAAQ,eACR,QAAQ,eACR,QAAQ,UACR,QAAQ,WACR,GAAK,WACL,QAAQ,UACR,QAAQ,UACR,QAAQ,cACR,QAAQ,cACR,QAAQ,SACR,QAAQ,WACR,QAAQ,YACR,QAAQ,YACR,QAAQ,UACR,QAAQ,WACR,QAAQ,QACR,QAAQ,SACR,QAAQ,aACR,QAAQ,UACR,QAAQ,YACR,QAAQ,qBACR,QAAQ,QACR,QAAQ,sBACR,QAAQ,SACR,QAAQ,kBACR,QAAQ,kBACR,QAAQ,WACR,QAAQ,UACR,QAAQ,SACR,QAAQ,YACR,QAAQ,UACR,QAAQ,UACR,QAAQ,OACR,QAAQ,UACR,QAAQ,YACR,QAAQ,aACR,QAAQ,eACR,QAAQ,gBAGZ,WAAY,CACR,GAAI,QACJ,GAAI,KACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,KACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGR,aAAc,CACV,EAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,EAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KAEd,oBAAqB,IAAI,OAAO,6GAAsnB,GAAG,EAOzpB,+BAAgC,SAAU3D,EAAOF,EAAK8D,EAAWC,EAAOC,EAAO,CAC3E,GAAK9D,EAAM,IAAI,sBACf,KAAI+D,EAAQ/D,EAAM,IAAI,cAAc,IAChC+D,EAAM,WACDA,EAAM,UAAU,UACjBA,EAAM,UAAU,QAAUjE,EAC1BiE,EAAM,UAAU,UAAYH,GAE5B,CAACG,EAAM,YAAcA,EAAM,UAAU,OAAS,2BAC1CD,IACAC,EAAM,WAAa,GACdD,EAAM,MAAM,QAAQ,IACrB9D,EAAM,IAAI,gBAAkB,MAOpC6D,GAASA,EAAM,YAAY,OAAO,GAAK,EAAE,CAAC,IAAM,iBAAiB,EAAE,OAAS,GAErEA,GAASA,EAAM,QAAQ,OAD9B7D,EAAM,IAAI,gBAAkB,GAGrBF,IACHA,EAAI,MAAM,QAAQ,EAClBE,EAAM,IAAI,gBAAkB,GAE5BA,EAAM,IAAI,gBAAkB,IAGxC,EAGJ,yBAA0B,SAASA,EAAO+D,EAAO,CAC7C,GAAK/D,EAAM,IAAI,sBACf,KAAIgE,EACAC,EAAcF,EAAM,UAAU,OAAS,0BAC3C,GAAIA,EAAM,UAAU,OAAS,cACzBC,EAAU,CAACD,EAAM,UAAU,gBACpBA,EAAM,UAAU,OAAS,uBAChCC,EAAU,CAACD,EAAM,UAAU,SAAWA,EAAM,UAAU,QAAQ,QAAQ,IAAI,EAAI,WACvE,CAAC,aAAc,yBAAyB,EAAE,QAAQA,EAAM,UAAU,IAAI,EAAI,GAAI,CACrF,IAAIG,EAAcH,EAAM,UAAU,QAC9BI,EAAiB,GACjBJ,EAAM,UAAU,UAChBI,EAAiBJ,EAAM,UAAU,QAAQ,MAAM,EAAE,CAAC,EAAE,MAAMlE,EAAI,qBAAqB,GAEvF,IAAIuE,EAAMpE,EAAM,IAAI,gBAChBoE,EACIL,EAAM,UAAU,UAChBC,EAAU,CAAAC,EACFC,EAEDC,EACPH,EAAU,CAAAC,EACH,CAAC,SAAU,cAAc,EAAE,QAAQjE,EAAM,IAAI,uBAAuB,EAAI,GAC/EgE,EAAU,GAEVA,EAAU,GANVA,EAAU,GASVD,EAAM,UAAU,UAChBC,EAAU,GACFE,EAEDC,EACPH,EAAU,CAAAC,EACHjE,EAAM,IAAI,0BAA4B,SAC7CgE,EAAU,GAEVA,EAAU,GANVA,EAAU,EAQlB,CAEJ,GAAIA,EACA,IAAIK,EAAiB,OAErB,KAAIA,EAAiB,GAEzB,OAAIN,EAAM,UAAU,MAChBM,EAAiB,CAACA,GAEfA,EAAA,EAGX,YAAa,CACT,oCACA,6BACA,8BACA,sBACA,qCACA,uBACA,yBAGJ,mBAAqB,UAAW,CAC5B,IAAIZ,EAAS,CACT,UACA,UACA,UACA,cACA,YACA,cACA,sBAEJ,MAAO,CACH,MAAO,IAAI,OAAO,IAAMA,EAAO,KAAK,GAAG,EAAI,IAAK,GAAG,EACnD,WAAY,IAAI,OAAO,KAAOA,EAAO,KAAK,GAAG,EAAI,GAAG,EACpD,MAAO,IAAI,OAAO,MAAQA,EAAO,KAAK,GAAG,EAAI,GAAG,EACpD,EACJ,EAEA,YAAa,SAAS3D,EAAK,CACvB,GAAI,CAACA,EACD,OAAOA,EAIX,QAFIgB,EAAIhB,EAAI,MAAMD,EAAI,mBAAmB,KAAK,EAC1CI,EAAMH,EAAI,MAAMD,EAAI,mBAAmB,KAAK,EACvCK,EAAED,EAAI,OAAO,EAAGC,EAAE,GAAIA,IAC3BD,EAAIC,CAAC,EAAID,EAAIC,CAAC,EAAE,KAAA,EACZD,EAAIC,CAAC,GAAKD,EAAIC,CAAC,EAAE,MAAM,EAAE,EAAE,YAAA,IAAkBD,EAAIC,CAAC,EAAE,MAAM,EAAE,GAE5DD,EAAIC,CAAC,EAAID,EAAIC,CAAC,EAAIY,EAAEZ,CAAC,EAAID,EAAIC,EAAE,CAAC,EAChCD,EAAMA,EAAI,MAAM,EAAGC,EAAE,CAAC,EAAE,OAAOD,EAAI,MAAMC,EAAE,CAAC,CAAC,GAG7CD,EAAMA,EAAI,MAAM,EAAGC,EAAE,CAAC,EAAE,OAAO,CAACY,EAAEZ,CAAC,CAAC,CAAC,EAAE,OAAOD,EAAI,MAAMC,EAAE,CAAC,CAAC,EAGpE,OAAOD,CAAA,EAGX,gBAAiB,SAASD,EAAOe,EAAMuD,EAAQ,CAE3C,IAAIC,EAAM,GACNC,EAAY,KACZnE,EAAUU,EAAK,aAAeA,EAAK,aAAa,MAAM,GAAG,EAAE,CAAC,EAAI,KAEhE0D,EAAY,0BAChB,OAAIH,IACAG,EAAY,qBAEZpE,GAAWU,EAAK,YACC,OAAOA,EAAK,WAAzB,SACAyD,EAAYzD,EAAK,UAEbA,EAAK,UAAU,CAAC,GAAKA,EAAK,UAAU,CAAC,EAAE,UACvCyD,EAAYzD,EAAK,UAAU,CAAC,EAAE,UAItCyD,IACI,KAAK,MAAQxE,EAAM,OAAO,KAAK,IAAI,EAAE,KAAKyE,CAAS,GAAKzE,EAAM,OAAO,KAAK,IAAI,EAAE,KAAKyE,CAAS,EAAEpE,CAAO,GAAKL,EAAM,OAAO,KAAK,IAAI,EAAE,KAAKyE,CAAS,EAAEpE,CAAO,EAAEmE,CAAS,EACtKD,EAAMvE,EAAM,OAAO,KAAK,IAAI,EAAE,KAAKyE,CAAS,EAAEpE,CAAO,EAAEmE,CAAS,EACzDxE,EAAM,OAAOA,EAAM,IAAI,gBAAgB,EAAE,CAAC,CAAC,EAAE,KAAKyE,CAAS,GAAKzE,EAAM,OAAOA,EAAM,IAAI,gBAAgB,EAAE,CAAC,CAAC,EAAE,KAAKyE,CAAS,EAAEpE,CAAO,GAAKL,EAAM,OAAOA,EAAM,IAAI,gBAAgB,EAAE,CAAC,CAAC,EAAE,KAAKyE,CAAS,EAAEpE,CAAO,EAAEmE,CAAS,IAC/ND,EAAMvE,EAAM,OAAOA,EAAM,IAAI,gBAAgB,EAAE,CAAC,CAAC,EAAE,KAAKyE,CAAS,EAAEpE,CAAO,EAAEmE,CAAS,IAGtFD,CAAA,EAGX,kBAAmB,SAASvE,EAAOM,EAAMoE,EAAOC,EAAS,CAErD,QADIC,EAAQF,EAAM,eAAeC,EAAS,aAAa,EAC9CE,EAAM,EAAGC,EAAMJ,EAAM,cAAcE,CAAK,EAAGC,EAAMC,EAAKD,GAAO,EAAG,CACrE,IAAIE,EAAaH,EAAMC,CAAG,EACtBG,EAAaN,EAAM,WAAWK,CAAU,EACxCR,EAAMS,EAAW,OAAO,EACxB3E,EAAU2E,EAAW,UAAU,EAC/BC,EAASD,EAAW,SAAS,EAK7BP,EAAY,oBAKhB,GAJIzE,EAAM,WACNyE,EAAY,2BAGZF,GAAOlE,GAAW4E,EAAQ,CAC1BA,EAASA,EAAO,OAAO,MAAM,KAAK,EAC7BjF,EAAM,OAAOM,CAAI,EAAE,KAAKmE,CAAS,IAClCzE,EAAM,OAAOM,CAAI,EAAE,KAAKmE,CAAS,EAAI,CAAA,GAEpCzE,EAAM,OAAOM,CAAI,EAAE,KAAKmE,CAAS,EAAEpE,CAAO,IAC3CL,EAAM,OAAOM,CAAI,EAAE,KAAKmE,CAAS,EAAEpE,CAAO,EAAI,CAAA,GAElD,QAASH,EAAE,EAAEC,EAAK8E,EAAO,OAAO/E,EAAEC,EAAKD,IACnCF,EAAM,OAAOM,CAAI,EAAE,KAAKmE,CAAS,EAAEpE,CAAO,EAAE4E,EAAO/E,CAAC,CAAC,EAAIqE,CAC7D,CACJ,CACJ,EAGJ,yBAA0B,SAAUvE,EAAOe,EAAMJ,EAAMuE,EAAW,CAC9D,GAAInE,EAAK,mBAAmB,EACxB,MAAO,GAEX,GAAI,CAACf,EAAM,IAAI,qBAAuB,CAACH,EAAI,cAAcqF,CAAS,GAAK,CAACnE,EAAK,aACzE,MAAO,GAEX,IAAIoE,EAAmBnF,EAAM,oBAAoBe,EAAK,YAAY,EAElE,GAAI,CAACf,EAAM,IAAI,mBAAmBmF,EAAiB,CAAC,CAAC,EAAG,CACpD,IAAIC,EAAMpF,EAAM,wBAAwBmF,CAAgB,EAGxD,QAASE,KAAgBD,EAAK,CAC1B,IAAIE,EAAWtF,EAAM,gBAAgBqF,EAAcD,EAAIC,CAAY,CAAC,EAChEC,IACKF,EAAIE,CAAQ,IACb,OAAO,OAAOF,EAAKpF,EAAM,wBAAwB,CAACsF,CAAQ,CAAC,CAAC,EAC5DtF,EAAM,gBAAgBsF,EAAUF,EAAIE,CAAQ,EAAG,EAAI,GAE3D,CACJ,CAEJ,IAAIH,EAAmBnF,EAAM,oBAAoBe,EAAK,YAAY,EAC9Df,EAAM,IAAI,SAAS,SACdA,EAAM,WACPA,EAAM,SAAW,IAAIH,EAAI,SAASG,CAAK,IAI/C,QAASE,EAAE,EAAEC,EAAKgF,EAAiB,OAAOjF,EAAEC,EAAKD,IAAK,CAClD,IAAImF,EAAeF,EAAiBjF,CAAC,EAMrC,GALIS,GACIX,EAAM,MAAMqF,CAAY,GAAK,CAAC1E,EAAK,mBAAmB,GAAKX,EAAM,MAAMqF,CAAY,EAAE,MAAM,UAC3FtE,EAAK,mBAAmB,EAAIsE,GAGjCrF,EAAM,MAAMqF,CAAY,GAAKrF,EAAM,MAAMqF,CAAY,EAAE,MAAMtE,EAAK,IAAI,EACrE,OAAAA,EAAK,mBAAmB,EAAIsE,EACrB,EACX,CAEJ,MAAO,EAAA,GA2Bf,OAAAxF,EAAI,QAAU,SAAU8E,EAAS,CAC7B,KAAK,QAAUA,EACf,KAAK,YAAc,CACf,KAAK,cACL,MAAM,CACF,oBAAoB,OACpB,UAAY,MAEhB,SAAS,CACL,CACI,KAAK,mBACL,MAAM,CACF,KAAK,QAET,SAAS,CAAA,CAAC,CACd,EAGZ,EAKA9E,EAAI,QAAQ,UAAU,MAAQ,SAAU0F,EAAM,CAC1C,OAAOA,CACX,EAMA1F,EAAI,QAAQ,UAAU,WAAa,SAAU2F,EAAQC,EAAW,CAC5D,IAAIC,EAAU,KACVD,IACAC,EAAU,SAId,QAFItF,EAAM,GACNuF,EAAWH,EAAO,SACbtF,EAAE,EAAEC,EAAKwF,EAAS,OAAOzF,EAAEC,EAAKD,IACrC,GAAIyF,EAASzF,CAAC,EAAE,OAAS,OAErB,QADI0F,EAAYD,EAASzF,CAAC,EAAE,SACnBQ,EAAE,EAAEY,EAAKsE,EAAU,OAAOlF,EAAEY,EAAKZ,IAClCkF,EAAUlF,CAAC,EAAE,OAASgF,IACtBtF,EAAMwF,EAAUlF,CAAC,EAAE,SAAS,CAAC,GAK7C,OAAON,CACX,EAEAP,EAAI,QAAQ,UAAU,SAAW,SAAU2F,EAAQ,CAE/C,OAAIA,GAAUA,EAAO,SAAS,OACnBA,EAAO,SAAS,MAAA,EAEhB,EAEf,EAEA3F,EAAI,QAAQ,UAAU,SAAW,SAAU2F,EAAQ,CAE/C,OAAOA,EAASA,EAAO,KAAO,IAClC,EAEA3F,EAAI,QAAQ,UAAU,WAAa,SAAU2F,EAAQ,CAEjD,IAAIpF,EAAM,CAAA,EACV,QAASyF,KAAYL,EAAO,MACxBpF,EAAI,IAAIyF,CAAQ,EAAIL,EAAO,MAAMK,CAAQ,EAE7C,OAAOzF,CACX,EAGAP,EAAI,QAAQ,UAAU,QAAU,SAAU2F,EAAQ,CAG9C,IAAIpF,EAAM,GAGV,GAAI,CAACoF,GAAU,CAACA,EAAO,SACnB,OAAOpF,EAEX,QAAS,EAAE,EAAGD,EAAKqF,EAAO,SAAS,OAAQ,EAAIrF,EAAM,GAAK,EACrC,OAAOqF,EAAO,SAAS,CAAC,GAArC,WACApF,GAAOoF,EAAO,SAAS,CAAC,GAGhC,OAAOpF,CACX,EAGAP,EAAI,QAAQ,UAAU,UAAY,CAAA,EAElCA,EAAI,QAAQ,UAAU,cAAgB,SAAU2F,EAAQ,CAEpD,OAAIA,GAAsB,OAAOA,EAAO,QAA1B,SACHA,EAAO,OAEP,CAEf,EAIA3F,EAAI,QAAQ,UAAU,kBAAoB,SAAU2F,EAAO5D,EAAKkE,EAAW,CAEvE,IAAI1F,EAAM,GACV,OAAI0F,IACAlE,EAAOkE,EAAU,IAAIlE,GAErB4D,GACIA,EAAO,QACHA,EAAO,MAAM5D,CAAI,EACjBxB,EAAMoF,EAAO,MAAM5D,CAAI,EAEvBxB,EAAM,IAIXA,CACX,EAEAP,EAAI,QAAQ,UAAU,aAAe,SAAU2F,EAAO5D,EAAM,CAExD,IAAIxB,EAAM,GACV,GAAIwB,EACA,QAAS1B,EAAE,EAAGC,EAAKqF,EAAO,SAAS,OAAQtF,EAAIC,EAAMD,GAAK,EAClDsF,EAAO,SAAStF,CAAC,EAAE,OAAS0B,IAExB4D,EAAO,SAAStF,CAAC,EAAE,SAAS,OAC5BE,EAAMoF,EAAO,SAAStF,CAAC,EAEvBE,EAAM,SAIXoF,IACPpF,EAAMoF,GAIV,OAAIpF,GAAOA,EAAI,UAAYA,EAAI,SAAS,QAAU,GAAkB,OAAOA,EAAI,SAAS,CAAC,GAAlC,WACnDA,EAAMA,EAAI,SAAS,CAAC,GAEjBA,CACX,EAEAP,EAAI,QAAQ,UAAU,4CAA8C,SAAU2F,EAAOO,EAASC,EAASH,EAASlE,EAAK,CAG7GkE,EAAS,MAAM,EAAE,CAAC,IAAM,MACxBA,EAAWA,EAAS,MAAM,CAAC,GAG/B,QAAS3F,EAAE,EAAEC,EAAKqF,EAAO,SAAS,OAAQtF,EAAEC,EAAMD,GAAK,EAC/CsF,EAAO,SAAStF,CAAC,EAAE,OAAS6F,GAAYP,EAAO,SAAStF,CAAC,EAAE,MAAM,OAAS8F,IAC1ER,EAAO,SAAStF,CAAC,EAAE,MAAM2F,CAAQ,EAAIlE,EAGjD,EAEA9B,EAAI,QAAQ,UAAU,0BAA4B,SAAU2F,EAAO7D,EAAK,CAEpE,IAAI,EAAGxB,EACP,IAAK,EAAI,EAAGA,EAAOqF,EAAO,SAAS,OAAQ,EAAIrF,EAAM,GAAK,EAClD,CAACqF,EAAO,SAAS,CAAC,GAAkB,OAAOA,EAAO,SAAS,CAAC,GAArC,UAGvBA,EAAO,SAAS,CAAC,EAAE,MAAM,MAAQ7D,IACjC6D,EAAO,SAAWA,EAAO,SAAS,MAAM,EAAE,CAAC,EAAE,OAAOA,EAAO,SAAS,MAAM,EAAE,CAAC,CAAC,EAG1F,EAEA3F,EAAI,QAAQ,UAAU,gBAAkB,SAAU2F,EAAOK,EAAU,CAG3C,OAAOL,EAAO,MAAMK,CAAQ,EAA5C,KACAL,EAAO,MAAM,IAAIK,CAAQ,CAEjC,EAEAhG,EAAI,QAAQ,UAAU,aAAe,SAAU2F,EAAOS,EAAKtE,EAAK,CAE5D,OAAA6D,EAAO,MAAMS,CAAI,EAAItE,EACd,EACX,EAEA9B,EAAI,QAAQ,UAAU,SAAW,SAAU2F,EAAOU,EAAO,CAErD,GAAI,CAACA,EACD,IAAIA,EAAQ,CAAA,EAEhB,GAAiB,OAAOA,GAApB,UAA6C,OAAOA,EAAM,OAA7B,IAE7B,QAASxE,KAAO8D,EACK,OAAOA,EAAO9D,CAAG,GAA9B,SACAwE,EAAMxE,CAAG,EAAI8D,EAAO9D,CAAG,EACH,OAAO8D,EAAO9D,CAAG,GAA9B,WACa,OAAO8D,EAAO9D,CAAG,EAAE,OAAnC,IACAwE,EAAMxE,CAAG,EAAI,KAAK,SAAS8D,EAAO9D,CAAG,EAAE,EAAE,EAEzCwE,EAAMxE,CAAG,EAAI,KAAK,SAAS8D,EAAO9D,CAAG,EAAE,EAAE,OAMrD,SAASxB,EAAE,EAAEC,EAAKqF,EAAO,OAAOtF,EAAEC,EAAMD,GAAK,EACxB,OAAOsF,EAAOtF,CAAC,GAA5B,SACAgG,EAAMhG,CAAC,EAAIsF,EAAOtF,CAAC,EAGnBgG,EAAMhG,CAAC,EAAI,KAAK,SAASsF,EAAOtF,CAAC,EAAE,EAAE,EAIjD,OAAOgG,CACX,EAEArG,EAAI,QAAQ,UAAU,eAAiB,SAAU2F,EAAO5D,EAAKuE,EAAY/F,EAAK,CAG1E,GAAI,CAACA,EACD,IAAIA,EAAM,CAAA,EAEd,GAAI,CAACoF,GAAU,CAACA,EAAO,SACnB,OAAOpF,EAEPwB,IAAS4D,EAAO,OACZW,EACIA,IAAgBX,EAAO,MAAM,MAC7BpF,EAAI,KAAKoF,CAAM,EAGnBpF,EAAI,KAAKoF,CAAM,GAGvB,QAAStF,EAAE,EAAEC,EAAKqF,EAAO,SAAS,OAAOtF,EAAEC,EAAKD,GAAG,EAC9B,OAAOsF,EAAO,SAAStF,CAAC,GAArC,UAGJ,KAAK,eAAesF,EAAO,SAAStF,CAAC,EAAE0B,EAAKuE,EAAY/F,CAAG,EAE/D,OAAOA,CACX,EAEAP,EAAI,QAAQ,UAAU,WAAa,SAAU2F,EAAO5D,EAAM,CAEtD,OAAI,OAAO4D,EAAW,IACX,GAEP5D,GAAQ4D,EAAO,IAIvB,EAEA3F,EAAI,QAAQ,UAAU,QAAU,SAAU2F,EAAQ,CAE9C,OAAiB,OAAOA,GAApB,WACIA,EAAO,MAAM,EAAG,CAAC,IAAM,IACvBA,EAAS,KAAK,iBAAiB,aAAaA,CAAM,EAElDA,EAAS,KAAK,MAAMA,CAAM,GAG3BA,CACX,EAEA3F,EAAI,QAAQ,UAAU,qBAAuB,SAAUuG,EAAOC,EAAKxB,EAAIyB,EAAU,CAG7E,QAASpG,EAAE,EAAEC,EAAKiG,EAAO,SAAS,OAAOlG,EAAEC,EAAKD,GAAG,EAC/C,GAAImG,IAASD,EAAO,SAASlG,CAAC,EAAG,CAC7BkG,EAAO,SAAWA,EAAO,SAAS,MAAM,EAAElG,CAAC,EAAE,OAAO,CAACoG,CAAQ,CAAC,EAAE,OAAOF,EAAO,SAAS,MAAMlG,EAAE,CAAC,CAAC,EACjG,KAAA,CAGR,OAAOkG,CACX,EAGAvG,EAAI,QAAQ,UAAU,wBAA0B,SAAS2F,EAAQ,CAC7D,GAAIA,EAAO,OAAS,QAAS,CAGzB,QAFIe,EAAQ,GACRC,EAAY,CAAC,YAAY,iBAAiB,EACrCtG,EAAE,EAAEC,EAAKqF,EAAO,SAAS,OAAOtF,EAAEC,EAAKD,GAAG,EAAG,CAClD,IAAIuG,EAAcD,EAAU,QAAQhB,EAAO,SAAStF,CAAC,EAAE,MAAM,QAAQ,EACjEwG,EAASlB,EAAO,SAAStF,CAAC,EAAE,OAAS,OACzC,GAAIwG,GAAUD,EAAc,IAAM,CAACjB,EAAO,SAAStF,CAAC,EAAE,MAAM,QAAU,CAACsF,EAAO,SAAStF,CAAC,EAAE,MAAM,OAC5FsG,EAAYA,EAAU,MAAM,EAAEC,CAAW,EAAE,OAAOD,EAAU,MAAMC,EAAY,CAAC,CAAC,MAC7E,CACHF,EAAQ,GACR,KAAA,CACJ,CAEAA,GAAS,CAACC,EAAU,SACpBhB,EAAO,MAAM,mCAAmC,EAAI,GACzD,CAEH,QAAStF,EAAE,EAAEC,EAAKqF,EAAO,SAAS,OAAOtF,EAAEC,EAAKD,GAAG,EAC9B,OAAOsF,EAAO,SAAStF,CAAC,GAArC,UACA,KAAK,wBAAwBsF,EAAO,SAAStF,CAAC,CAAC,CAG3D,EA0CAL,EAAI,QAAQ,UAAU,oBAAsB,SAAS8G,EAAS,CAC1D,GAAIA,EAAQ,OAAS,EAAG,CACpB,IAAIC,EAAYD,EAAQ,MAAA,EACpBP,EAASQ,EAAU,IAAA,EACvB,OAAIR,IAAW,aACJ,GAEA,KAAK,oBAAoBQ,CAAS,CAC7C,CAEJ,MAAO,EACX,EAEA/G,EAAI,QAAQ,UAAU,oBAAsB,SAAS2F,EAAOmB,EAAS,CAIjE,GAHKA,IACDA,EAAU,CAAA,GAEVnB,EAAO,OAAS,SAEZ,CAAC,KAAK,oBAAoBmB,CAAO,EAAG,CAEpC,QADIE,EAAU,GACL3G,EAAE,EAAEC,EAAKqF,EAAO,SAAS,OAAOtF,EAAEC,EAAKD,IAC5C,GAAIsF,EAAO,SAAStF,CAAC,EAAE,OAAS,OAAQ,CACpC2G,EAAU,GACV,KAAA,CAGJA,IACArB,EAAO,SAAW,CAAC,CAAC,KAAK,OAAO,MAAM,GAAG,SAAS,CAAA,CAAC,CAAE,EAAE,OAAOA,EAAO,QAAQ,EACjF,CAGRmB,EAAQ,KAAKnB,EAAO,IAAI,EACxB,QAAStF,EAAE,EAAEC,EAAKqF,EAAO,SAAS,OAAOtF,EAAEC,EAAKD,GAAG,EAC9B,OAAOsF,EAAO,SAAStF,CAAC,GAArC,UACA,KAAK,oBAAoBsF,EAAO,SAAStF,CAAC,EAAEyG,CAAO,EAG3DA,EAAQ,IAAA,CACZ,EAGA9G,EAAI,QAAQ,UAAU,oBAAsB,SAAS2F,EAAQ,KAEpCsB,EAIrB,GAAItB,EAAO,OAAS,QAAS,CAIzB,QAFIR,EAAa,CAAA,EACb+B,EAAY,GACP7G,EAAE,EAAEC,EAAKqF,EAAO,SAAS,OAAOtF,EAAEC,EAAKD,GAAG,EAAG,CAClD,GAAIsF,EAAO,SAAStF,CAAC,EAAE,MAAQ,OAAQ,CACnC,QAASwB,KAAO8D,EAAO,SAAStF,CAAC,EAAE,MAC/B8E,EAAWtD,CAAG,EAAI8D,EAAO,SAAStF,CAAC,EAAE,MAAMwB,CAAG,EAElDsD,EAAW,UAAYQ,EAAO,SAAStF,CAAC,EAAE,MAAM,UAChD8E,EAAW,IAAMQ,EAAO,SAAStF,CAAC,EAAE,MAAM,IAC1C6G,EAAY7G,EACZ,QAAS8G,EAAE,EAAEC,EAAKzB,EAAO,SAAStF,CAAC,EAAE,SAAS,OAAO8G,EAAEC,EAAKD,GAAG,EAC3D,GAAIxB,EAAO,SAAStF,CAAC,EAAE,SAAS8G,CAAC,EAAE,MAAM,OAAS,SAGlD,QAAStF,KAAO8D,EAAO,SAAStF,CAAC,EAAE,SAAS8G,CAAC,EAAE,MAC3ChC,EAAWtD,CAAG,EAAI8D,EAAO,SAAStF,CAAC,EAAE,SAAS8G,CAAC,EAAE,MAAMtF,CAAG,CAElE,CAEJ,GAAI8D,EAAO,SAAStF,CAAC,EAAE,MAAQ,cAAe,CAC1C6G,EAAY,GACZ,KAAA,CACJ,CAEJ,GAAIA,EAAY,GAAI,CAEhB,QADID,EAAc,KAAK,SAAS,KAAK,WAAW,EACvC5G,EAAE,EAAEC,EAAON,EAAI,iBAAiB,OAAOK,EAAEC,EAAKD,GAAG,EAAG,CACzD,IAAI2F,EAAWhG,EAAI,iBAAiBK,CAAC,EACjB,OAAO8E,EAAWa,CAAQ,EAA1C,MACAiB,EAAY,SAAS,CAAC,EAAE,MAAMjB,CAAQ,EAAIb,EAAWa,CAAQ,GAE7Db,EAAW,YACX8B,EAAY,MAAM,UAAY9B,EAAW,WAEzCA,EAAW,MACX8B,EAAY,MAAM,IAAM9B,EAAW,IACvC,CAEJQ,EAAO,SAAWA,EAAO,SAAS,MAAM,EAAEuB,EAAU,CAAC,EAAE,OAAO,CAACD,CAAW,CAAC,EAAE,OAAOtB,EAAO,SAAS,MAAMuB,EAAU,CAAC,CAAC,CAAA,CAC1H,CAEJ,QAAS7G,EAAE,EAAEC,EAAKqF,EAAO,SAAS,OAAOtF,EAAEC,EAAKD,GAAG,EAC9B,OAAOsF,EAAO,SAAStF,CAAC,GAArC,UAIJ,KAAK,oBAAoBsF,EAAO,SAAStF,CAAC,CAAC,CAEnD,EACAL,EAAI,QAAQ,UAAU,eAAiB,SAAS2F,EAAQ,CAEpD,QAAStF,EAAE,EAAEC,EAAKqF,EAAO,SAAS,OAAOtF,EAAEC,EAAKD,GAAG,EAC3CsF,EAAO,SAAStF,CAAC,EAAE,OAAS,SACxB,KAAK,kBAAkBsF,EAAO,SAAStF,CAAC,CAAC,IACzCsF,EAAO,SAAStF,CAAC,EAAE,MAAM,gBAAgB,EAAI,OAI7D,EACAL,EAAI,QAAQ,UAAU,kBAAoB,SAAS2F,EAAQ,CAEvD,GAAI,CAACA,GAAU,CAACA,EAAO,SACnB,MAAO,GAEX,GAAIA,EAAO,OAAS,OAChB,MAAO,GAEP,QAAStF,EAAE,EAAEC,EAAKqF,EAAO,SAAS,OAAOtF,EAAEC,EAAKD,GAAG,EAC/C,GAAI,KAAK,kBAAkBsF,EAAO,SAAStF,CAAC,CAAC,EACzC,MAAO,GAInB,MAAO,EACX,EAKAL,EAAI,8BAAgC,SAAUqH,EAAK,CAC/C,OAAKA,IAGLA,EAAMA,EAAI,QAAQ,eAAgB,EAAE,EACpCA,EAAMA,EAAI,QAAQ,gBAAiB,EAAE,EACrCA,EAAMA,EAAI,QAAQ,QAAS,EAAE,EAC7BA,EAAMA,EAAI,QAAQ,QAAS,EAAE,EACtBA,EACX,EAMArH,EAAI,SAAW,SAASC,EAAK,CAGzB,IAAIqH,EAAO,CAAC,SAAS,EAAC,EAClBC,EAAS,CAACD,EAAK,QAAQ,EAE3B,SAASE,EAAevH,EAAK,CACzBA,EAAMA,EAAI,MAAM,gBAAgB,EAAE,KAAK,GAAG,EAAE,QAAQ,WAAY,IAAI,EAAE,QAAQ,eAAgB,EAAE,EAGhG,QAFIG,EAAMH,EAAI,MAAM,IAAI,EACpBwH,EAAW,KACNpH,EAAE,EAAEC,EAAKF,EAAI,OAAOC,EAAEC,EAAKD,IAC5BA,EAAI,IACJD,EAAIC,CAAC,EAAI,IAAMD,EAAIC,CAAC,GAEpBA,EAAKD,EAAI,OAAO,IAChBA,EAAIC,CAAC,EAAID,EAAIC,CAAC,EAAI,KAEN,OAAOoH,GAAnB,WACIrH,EAAIC,CAAC,EAAE,MAAM,EAAG,CAAC,IAAM,WAAaD,EAAIC,CAAC,EAAE,MAAM,EAAG,CAAC,GAAK,cAC1DoH,EAAWpH,GAIvBD,EAAMA,EAAI,MAAMqH,CAAQ,EAIxB,QAASpH,EAAED,EAAI,OAAO,EAAEC,EAAE,GAAGA,IACzB,GAAID,EAAIC,CAAC,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,IAAM,GAAI,CACrC,IAAIqH,EAAOtH,EAAIC,CAAC,EAAE,MAAM,EAAG,CAAC,EACxBD,EAAIC,CAAC,EAAE,MAAM,EAAE,IAAM,OACjBqH,IAAS,QACLtH,EAAIC,EAAE,CAAC,EAAE,MAAM,EAAG,CAAC,IAAM,WACzBD,EAAIC,CAAC,EAAID,EAAIC,CAAC,EAAID,EAAIC,EAAE,CAAC,EACzBD,EAAMA,EAAI,MAAM,EAAGC,EAAE,CAAC,EAAE,OAAOD,EAAI,MAAMC,EAAE,CAAC,CAAC,GAE1C,CAAC,QAAS,OAAO,EAAE,QAAQqH,CAAI,EAAI,IACtCtH,EAAIC,CAAC,EAAE,MAAM,EAAE,IAAM,MAAQD,EAAIC,EAAE,CAAC,EAAE,MAAM,EAAG,CAAC,IAAM,MACtDD,EAAIC,CAAC,EAAID,EAAIC,CAAC,EAAID,EAAIC,EAAE,CAAC,EACzBD,EAAMA,EAAI,MAAM,EAAGC,EAAE,CAAC,EAAE,OAAOD,EAAI,MAAMC,EAAE,CAAC,CAAC,GAGzD,CAGR,OAAOD,CAAA,CAGX,SAASuH,EAAoB1H,EAAK,CAC9B,OAAOA,EACF,MAAM,OAAO,EAAE,KAAK,GAAG,EACvB,MAAM,QAAQ,EAAE,KAAK,GAAI,EACzB,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE,KAAK,GAAG,EAC9C,QAAQ,oBAAqB,SAAS2H,EAAOC,EAAQ,CAClD,IAAItD,EAAM,SAASsD,EAAQ,EAAE,EAC7B,OAAO,OAAO,aAAatD,CAAG,CAAA,CACjC,EACA,QAAQ,wBAAyB,SAASqD,EAAOC,EAAO,CACrD,IAAItD,EAAM,SAASsD,EAAQ,EAAE,EAC7B,OAAO,OAAO,aAAatD,CAAG,CAAA,CACjC,CAAA,CAGT,SAASuD,EAAeC,EAAM,CAC1B,IAAI9G,EAAI8G,EAAK,MAAM,0CAA0C,EAC7D,GAAI9G,EACA,QAASZ,EAAE,EAAEC,EAAKW,EAAE,OAAOZ,EAAEC,EAAKD,IAC9BY,EAAEZ,CAAC,EAAIY,EAAEZ,CAAC,EAAE,QAAQ,MAAO,EAAE,EAGrC,OAAOY,CAAA,CAGX,SAAS+G,EAAcD,EAAM3B,EAAM,CAC/B,IAAI6B,EAAM,OAAO,WAAa7B,EAAO,+BAAqC,EACtEnF,EAAI8G,EAAK,MAAME,CAAG,EACtB,OAAOhH,EAAIA,EAAE,CAAC,EAAE,MAAM,EAAG,EAAE,EAAI,IAAA,CAGnC,SAASiH,EAAYH,EAAM,CACvB,IAAIE,EAAM,OAAO,cAAc,EAC3BhH,EAAI8G,EAAK,MAAME,CAAG,EACtB,OAAOhH,EAAIA,EAAE,CAAC,EAAI,IAAA,CAItB,SAASkH,EAA0BJ,EAAM,CACrC,IAAIK,EAAM,CAAA,EACVA,EAAI,KAAOF,EAAYH,CAAI,EAC3BK,EAAI,MAAQ,CAAA,EACZ,IAAIjD,EAAa2C,EAAeC,CAAI,EACpC,GAAI5C,EACA,QAAS9E,EAAE,EAAEC,EAAK6E,EAAW,OAAO9E,EAAEC,EAAKD,IAAK,CAC5C,IAAI+F,EAAO,CACP,KAAMjB,EAAW9E,CAAC,EAClB,MAAO2H,EAAcD,EAAM5C,EAAW9E,CAAC,CAAC,GAE5C+H,EAAI,MAAMhC,EAAK,IAAI,EAAIuB,EAAoBvB,EAAK,KAAK,CAAA,CAG7D,OAAAgC,EAAI,SAAW,CAAA,EACRA,CAAA,CAGX,SAASC,EAAiCN,EAAM,CAC5C,IAAI9G,EAAI8G,EAAK,MAAM,iBAAiB,EACpC,OAAOJ,EAAoB1G,EAAE,CAAC,CAAC,CAAA,CAGnC,SAASqH,EAAkBF,EAAK,CAC5Bb,EAAO,MAAM,EAAE,EAAE,CAAC,EAAE,KAAKa,CAAG,CAAA,CAGhC,SAASG,EAA4BH,EAAK,CACtCb,EAAO,KAAKa,EAAI,QAAQ,CAAA,CAG5B,SAASI,EAAeT,EAAM,CAC1B,IAAIK,EACJ,GAAIL,EAAK,MAAM,CAAC,EAAE,QAAQ,GAAG,EAAI,GAAI,CAEjC,IAAIU,EAAMV,EAAK,MAAM,EAAGA,EAAK,QAAQ,GAAG,EAAE,CAAC,EAC3CK,EAAMD,EAA0BM,CAAG,EACnCL,EAAI,SAAW,CAACC,EAAiCN,CAAI,CAAC,EACtDO,EAAkBF,CAAG,CAAA,MACdL,EAAK,MAAM,EAAE,IAAM,MAE1BK,EAAMD,EAA0BJ,CAAI,EAEhCG,EAAYH,CAAI,IAAM,QACtBK,EAAI,SAAS,KAAK,EAAE,EAExBE,EAAkBF,CAAG,GACdL,EAAK,MAAM,EAAG,CAAC,IAAM,KAE5BR,EAAO,IAAA,GAGPa,EAAMD,EAA0BJ,CAAI,EACpCO,EAAkBF,CAAG,EACrBG,EAA4BH,CAAG,EACnC,CAKJ,QAFIhI,EAAMoH,EAAevH,CAAG,EAEnBI,EAAE,EAAEC,EAAKF,EAAI,OAAOC,EAAEC,EAAKD,IAAK,CACrC,IAAI0H,EAAO3H,EAAIC,CAAC,EAChBmI,EAAeT,CAAI,CAAA,CAEvB,OAAOT,EAAK,SAAS,CAAC,CAC1B,EAMAtH,EAAI,OAAS,SAAU8E,EAAS,CAC5B,KAAK,QAAUA,EACI,OAAO,UAAtB,KACA,UAAY,UAAW,CAAA,EACvB,UAAU,UAAU,gBAAkB,SAAS7E,EAAKyI,EAAa,CAC7D,GAAmB,OAAO,cAAtB,IAAqC,CACrC,IAAIC,EAAU,IAAI,cAAc,mBAAmB,EACnD,OAAAA,EAAQ,MAAQ,GAChBA,EAAQ,QAAQ1I,CAAG,EACZ0I,CAAA,SACe,OAAO,eAAtB,IAAsC,CAC7C,IAAIA,EAAU,IAAI,eAClB,OAAKD,IACDA,EAAc,YAElBC,EAAQ,KAAK,MAAO,QAAUD,EAAc,kBAAoB,mBAAmBzI,CAAG,EAAG,EAAK,EAC3F0I,EAAQ,kBACPA,EAAQ,iBAAiBD,CAAW,EAExCC,EAAQ,KAAK,IAAI,EACVA,EAAQ,WAAA,SACO,OAAO,SAAtB,IAAgC,CACvC,IAAIC,EAAS,IAAI,SAAS,OAC1B,OAAOA,EAAO,MAAM3I,CAAG,CAAA,CAC3B,EAEJ,KAAK,cAAgB,SAAUuG,EAAM,CACjC,IAAIjG,EACJ,OAAIiG,EAAK,YAAcA,EAAK,WAAW,OACnCjG,EAAM,GAENA,EAAM,GAEHA,CAAA,GAQX,KAAK,cAAgB,SAAUiG,EAAM,CACjC,IAAIjG,EACJ,OAAIiG,EAAK,YAAcA,EAAK,WAAW,OACnCjG,EAAM,GAENA,EAAM,GAEHA,CAAA,EAGf,KAAK,WAAa,SAAUsI,EAAKC,EAAY,CACzC,IAAIvI,EACJ,OAAmB,OAAOsI,EAAI,WAA1B,IACAtI,EAAM,KAAK,YAAYsI,EAAKC,EAAY,EAAI,EAE5CvI,EAAMsI,EAAI,WAAWC,EAAY,EAAI,EAElCvI,CAAA,EAMX,KAAK,YAAc,SAASsI,EAAKrC,EAAMuC,EAAa,CAChD,OAAQvC,EAAK,SAAA,CAET,IAAK,GACD,IAAIwC,EAAUH,EAAI,cAAcrC,EAAK,QAAQ,EAC7C,GAAIA,EAAK,YAAcA,EAAK,WAAW,OAAS,EAC5C,QAASnG,EAAI,EAAG4I,EAAKzC,EAAK,WAAW,OAAQnG,EAAI4I,GAC7CD,EAAQ,aAAaxC,EAAK,WAAWnG,CAAC,EAAE,SAAUmG,EAAK,aAAaA,EAAK,WAAWnG,GAAG,EAAE,QAAQ,CAAC,EACtG,GAAI0I,GAAevC,EAAK,YAAcA,EAAK,WAAW,OAAS,EAC3D,QAASnG,EAAI,EAAG4I,EAAKzC,EAAK,WAAW,OAAQnG,EAAI4I,GAC7CD,EAAQ,YAAY,KAAK,YAAYH,EAAKrC,EAAK,WAAWnG,GAAG,EAAG0I,CAAW,CAAC,EACxF,OAAOC,CAIN,CAIT,EAEJ,KAAK,OAAS,IAAI,UAIlB,IAAI/I,EAAM,0JACNiJ,EAAW,KAAK,OAAO,gBAAgBjJ,EAAK,UAAU,EACtDkJ,EAAYD,EAAS,qBAAqB,aAAa,EAC3D,KAAK,YAAcC,EAAU,KAAK,CAAC,EACnC,IAAIC,EAAiBF,EAAS,qBAAqB,kBAAkB,EACrE,KAAK,gBAAkBE,EAAe,KAAK,CAAC,EAC5C,KAAK,GAAK,iCACd,EAMApJ,EAAI,OAAO,UAAU,MAAQ,SAAUqH,EAAK,CACxC,OAAAA,EAAMA,EAAI,QAAQ,eAAgB,EAAE,EACpCA,EAAMA,EAAI,QAAQ,YAAa,EAAE,EACjCA,EAAMA,EAAI,QAAQ,OAAQ,EAAE,EAC5BA,EAAMA,EAAI,QAAQ,OAAQ,EAAE,EAC5BA,EAAMA,EAAI,QAAQ,OAAQ,EAAE,EACrBA,CACX,EAMArH,EAAI,OAAO,UAAU,WAAa,SAAU6E,EAAOe,EAAW,CAC1D,IAAIyD,EAAO,GACPxD,EAAU,KACVD,IACAC,EAAU,SAEd,IAAIW,EAAO3B,EAAM,qBAAqBgB,CAAO,EAC7C,OAAIW,GAAQA,EAAK,SACbA,EAAOA,EAAK,KAAK,CAAC,GAElBA,IAEA6C,EAAO7C,EAAK,aAEX6C,IAEDA,EAAO7C,EAAK,WAEX6C,IAEDA,EAAO7C,EAAK,WAET6C,CACX,EAEArJ,EAAI,OAAO,UAAU,SAAW,SAAU6E,EAAO,CAC7C,IAAIiB,EAAUd,EAAKC,EAAK1E,EACxB,GAAIsE,EAAO,CAGP,IAFAtE,EAAM,CAAA,EACNuF,EAAWjB,EAAM,WACZG,EAAM,EAAGC,EAAMa,EAAS,OAAQd,EAAMC,EAAKD,GAAO,EAC/Cc,EAASd,CAAG,EAAE,UAAY,SAC1BzE,EAAI,KAAKuF,EAASd,CAAG,CAAC,EAG9B,OAAOzE,CAAA,KAEP,OAAO,CAAA,CAEf,EAEAP,EAAI,OAAO,UAAU,SAAW,SAAU6E,EAAO,CAC7C,IAAItE,EAAMsE,EAAM,SAChB,OAAOtE,CACX,EAEAP,EAAI,OAAO,UAAU,WAAa,SAAU6E,EAAO,CAC/C,IAAItE,EAAK+I,EAAOlD,EAAgBpB,EAAKC,EAErC,GADA1E,EAAM,IAAI,OACNsE,GAAS,KAAK,cAAcA,CAAK,EAEjC,IADAyE,EAAQzE,EAAM,WACTG,EAAM,EAAGC,EAAIqE,EAAM,OAAQtE,EAAMC,EAAKD,GAAO,EAC9CoB,EAAOkD,EAAMtE,CAAG,EAChBzE,EAAI,IAAM6F,EAAK,IAAI,EAAIA,EAAK,MAGpC,OAAO7F,CACX,EAGAP,EAAI,OAAO,UAAU,QAAU,SAAU6E,EAAO,CAC5C,IAAItE,EACJ,OAAmB,OAAOsE,EAAM,YAA5B,IACAtE,EAAMsE,EAAM,YACU,OAAOA,EAAM,UAA5B,IACPtE,EAAMsE,EAAM,UAEZtE,EAAMsE,EAAM,IAETtE,CACX,EAGAP,EAAI,OAAO,UAAU,UAAY,CAC7B,IAAM,wCAGVA,EAAI,OAAO,UAAU,cAAgB,SAAU6E,EAAO,CAClD,OAAIA,EACOA,EAAM,OAEN,CAEf,EAEA7E,EAAI,OAAO,UAAU,iBAAmB,SAAUoG,EAAM,CACpD,IAAI7F,EAAM6F,EAAK,KACf,OAAO7F,CACX,EAEAP,EAAI,OAAO,UAAU,kBAAoB,SAAU6E,EAAM9C,EAAKkE,EAAW,CACrE,IAAI1F,EAAM,GACV,OAAI0F,IACAlE,EAAOkE,EAAU,IAAIlE,GAErB8C,GAAS,KAAK,cAAcA,CAAK,GAAKA,EAAM,aAAa9C,CAAI,IAC7DxB,EAAMsE,EAAM,aAAa9C,CAAI,GAE1BxB,CACX,EAKAP,EAAI,OAAO,UAAU,aAAe,SAAU6E,EAAM9C,EAAM,CACtD,IAAIxB,EAAM,KACV,GAAIwB,EAAK,CACL,IAAImB,EAAO2B,EAAM,qBAAqB9C,CAAI,EACtCmB,EAAK,OAAS,IACK,OAAOA,EAAK,CAAC,EAAE,YAA9B,IACA3C,EAAM2C,EAAK,CAAC,EAAE,YACQ,OAAOA,EAAK,CAAC,EAAE,UAA9B,IACP3C,EAAM2C,EAAK,CAAC,EAAE,UAEd3C,EAAM2C,EAAK,CAAC,EAAE,KAEtB,CAEJ,OAAI3C,IAAQ,MAAQsE,GAASA,EAAM,aAAeA,EAAM,WAAW,QAAU,GAAMA,EAAM,WAAW,QAAU,GAAKA,EAAM,WAAW,UAAY,WACzH,OAAOA,EAAM,YAA5B,IACAtE,EAAMsE,EAAM,YACU,OAAOA,EAAM,UAA5B,IACPtE,EAAMsE,EAAM,UAEZtE,EAAMsE,EAAM,MAGhBtE,IAAQ,OACRA,EAAMsE,GAEHtE,CACX,EAEAP,EAAI,OAAO,UAAU,4CAA8C,SAAU6E,EAAMqB,EAASC,EAASH,EAASlE,EAAK,CAC/G,IAAIkD,EAAKC,EAAUF,EAAOyB,EAK1B,IAJIR,EAAS,MAAM,EAAE,CAAC,IAAM,MACxBA,EAAWA,EAAS,MAAM,CAAC,GAE/BjB,EAAQF,EAAM,qBAAqBqB,CAAQ,EACtClB,EAAM,EAAGC,EAAMF,EAAM,OAAQC,EAAMC,EAAKD,GAAO,EAChDwB,EAAOzB,EAAMC,CAAG,EACZwB,EAAK,aAAa,MAAM,GAAKL,GAGjCK,EAAK,aAAaR,EAAUlE,CAAG,CAEvC,EAEA9B,EAAI,OAAO,UAAU,0BAA4B,SAAU6E,EAAM/C,EAAK,CAClE,IAAIkD,EAAKC,EAAKuB,EAAMzB,EAEpB,IADAA,EAAQF,EAAM,WACTG,EAAM,EAAGC,EAAMF,EAAM,OAAQC,EAAMC,EAAKD,GAAO,EAChDwB,EAAOzB,EAAMC,CAAG,EACZ,GAACwB,GAAQA,EAAK,UAAYA,EAAK,YAG/B,KAAK,cAAcA,CAAI,GAAKA,EAAK,aAAa,MAAM,GAAK1E,GACzD+C,EAAM,YAAYE,EAAMC,CAAG,CAAC,CAGxC,EAEAhF,EAAI,OAAO,UAAU,gBAAkB,SAAU6E,EAAMuB,EAAM,CACzDvB,EAAM,gBAAgBuB,CAAI,CAC9B,EAEApG,EAAI,OAAO,UAAU,aAAe,SAAU6E,EAAMuB,EAAKtE,EAAK,CAC1D,OAAK+C,EAAM,gBACPA,EAAQA,EAAM,YAMd,CAAC,WAAY,SAAS,EAAE,QAAQ,OAAOA,EAAM,YAAY,EAAI,IAC7DA,EAAM,aAAauB,EAAMtE,CAAG,EAEzB,EACX,EAEA9B,EAAI,OAAO,UAAU,SAAW,SAAU6E,EAAO,CAC7C,IAAI0E,EAAc1E,EAAM,UAAU,EAAI,EACtC,OAAO0E,CACX,EAEAvJ,EAAI,OAAO,UAAU,eAAiB,SAAU6E,EAAM9C,EAAKuE,EAAa,CACpE,IAAI/F,EAAKwE,EAAOyB,EAAMxB,EAAKC,EAG3B,IAFA1E,EAAM,CAAA,EACNwE,EAAQF,EAAM,qBAAqB9C,CAAI,EAClCiD,EAAM,EAAGC,EAAMF,EAAM,OAAQC,EAAMC,EAAKD,GAAO,EAChDwB,EAAOzB,EAAM,KAAKC,CAAG,EACjB,EAAAsB,GAAe,EAAE,KAAK,cAAcE,CAAI,GAAKA,EAAK,aAAa,MAAM,GAAKF,KAI9E/F,EAAI,KAAKiG,CAAI,EAEjB,OAAOjG,CACX,EAEAP,EAAI,OAAO,UAAU,WAAa,SAAU6E,EAAM9C,EAAM,CACpD,OAAIA,GAAQ8C,EAAM,QAItB,EAEA7E,EAAI,OAAO,UAAU,QAAU,SAAU6E,EAAO,CAEvCA,IACDA,EAAQ,2BAEZA,EAAQA,EAAM,QAAQ,wBAAyB,EAAE,EACjD,IAAI2E,EAAW,KAAK,OAAO,gBAAgB3E,EAAO,iBAAiB,EACnE,OAAO2E,EAAS,UACpB,EAEAxJ,EAAI,OAAO,UAAU,qBAAuB,SAAUuG,EAAOC,EAAKxB,EAAIyE,EAAS,CAC3E,IAAI5E,EACJ,OAAAA,EAAQ,KAAK,WAAW2B,EAAK,cAAeiD,CAAO,EACnDlD,EAAO,aAAa1B,EAAO2B,CAAI,EACvBD,CACZ,EAEAvG,EAAI,OAAO,UAAU,wBAA0B,SAAS6E,EAAO,CAE3D,QADI6E,EAAQ7E,EAAM,qBAAqB,OAAO,EACrC,EAAI,EAAGvE,EAAOoJ,EAAM,OAAQ,EAAIpJ,EAAM,GAAK,EAAG,CAGnD,QAFIkG,EAAOkD,EAAM,KAAK,CAAC,EACnBC,EAAW,CAAA,EACN9I,EAAI,EAAGY,EAAO+E,EAAK,WAAW,OAAQ3F,EAAIY,EAAMZ,GAAK,EACtD2F,EAAK,WAAW,KAAK3F,CAAC,EAAE,WAAa,GACrC8I,EAAS,KAAK9I,CAAC,EAGvB,GAAI2F,EAAK,WAAW,OAASmD,EAAS,SAAW,EAAG,CAEhD,QADIC,EAAU,CAAA,EACL/I,EAAI,EAAGY,EAAO,EAAGZ,EAAIY,EAAMZ,GAAK,EACrC,GAAI,EAAA8I,EAAS,QAAQ9I,CAAC,EAAI,IAK1B,SAFIgJ,EAAQrD,EAAK,WAAW,KAAK3F,CAAC,EAC9BiJ,EAAc,CAAA,EACT3C,EAAI,EAAGC,EAAOyC,EAAM,WAAW,OAAQ1C,EAAIC,EAAMD,GAAK,EACvD0C,EAAM,WAAW,KAAK1C,CAAC,EAAE,WAAa,GACtC2C,EAAY,KAAK3C,CAAC,EAG1B,GAAI0C,EAAM,WAAW,OAASC,EAAY,SAAW,IACjDF,EAAQ,KAAKC,EAAM,aAAa,UAAU,CAAC,EACvCA,EAAM,aAAa,QAAQ,GACxBA,EAAM,aAAa,QAAQ,GAAG,CACjCD,EAAU,CAAA,EACV,KAAA,EAIRA,EAAQ,QAAQ,WAAW,EAAI,IAAMA,EAAQ,QAAQ,iBAAiB,EAAI,IAC1EpD,EAAK,aAAa,oCAAqC,EAAI,CAC/D,CACJ,CAER,EAEAxG,EAAI,OAAO,UAAU,oBAAsB,SAASwG,EAAM,CACtD,OAAIA,EAAK,WACDA,EAAK,WAAW,QAAQ,YAAA,IAAkB,aACnC,GAEA,KAAK,oBAAoBA,EAAK,UAAU,EAGhD,EACX,EAEAxG,EAAI,OAAO,UAAU,oBAAsB,SAAS6E,EAAO,CAEvD,QADIkF,EAAYlF,EAAM,qBAAqB,OAAO,EACzC,EAAI,EAAGvE,EAAOyJ,EAAU,OAAQ,EAAIzJ,EAAM,GAAK,EAAG,CACvD,IAAIqB,EAAQoI,EAAU,KAAK,CAAC,EACxBC,EAAWrI,EAAM,qBAAqB,MAAM,EAChD,IAAK,CAACqI,GAAYA,EAAS,SAAW,IAC/B,CAAC,KAAK,oBAAoBrI,CAAK,EAAG,CAErC,IAAIkH,EAAMlH,EAAM,cACZI,EAAO8G,EAAI,cAAc,MAAM,EACnClH,EAAM,YAAYI,CAAI,CAAA,CAC1B,CAER,EAGA/B,EAAI,OAAO,UAAU,oBAAsB,SAAS6E,EAAO,KACnDlD,EAAOsI,EAAUhD,EAAaiD,EAAgBC,EAAoBpI,EAAMqI,EAAcpF,EAAKC,EAE/F,IADAtD,EAAQkD,EAAM,qBAAqB,OAAO,EACrCG,EAAM,EAAGC,EAAMtD,EAAM,OAAQqD,EAAMC,EAAKD,GAAO,EAGhD,GAFAiF,EAAWtI,EAAM,KAAKqD,CAAG,EACzBjD,EAAOkI,EAAS,qBAAqB,MAAM,EACvClI,EAAK,QAAU,IAGnBkF,EAAcgD,EAAS,qBAAqB,aAAa,EACrDhD,EAAY,QAAU,GAAG,CACzBiD,EAAiB,KAAK,WAAWrF,EAAM,cAAe,KAAK,WAAW,EACtEsF,EAAqBD,EAAe,qBAAqB,kBAAkB,EAAE,KAAK,CAAC,EACnFE,EAAUrI,EAAK,KAAK,CAAC,EACrBkI,EAAS,aAAaC,EAAgBE,EAAQ,WAAW,EACzD,QAASvJ,EAAI,EAAGY,EAAOzB,EAAI,iBAAiB,OAAQa,EAAIY,EAAMZ,GAAK,EAAG,CAClE,IAAImF,EAAWhG,EAAI,iBAAiBa,CAAC,EACjCwJ,EAAUD,EAAQ,aAAapE,CAAQ,EACvCqE,GACAF,EAAmB,aAAanE,EAAUqE,CAAO,CACrD,CAGJ,QADIC,EAAYF,EAAQ,qBAAqB,WAAW,EAC/CvJ,EAAI,EAAGY,EAAO6I,EAAU,OAAQzJ,EAAIY,EAAMZ,GAAK,EACpD,GAAiByJ,EAAUzJ,CAAC,EAAE,aAAa,MAAM,IAA7C,SACA,QAASsG,EAAI,EAAGC,EAAOpH,EAAI,iBAAiB,OAAQmH,EAAIC,EAAMD,GAAK,EAAG,CAClE,IAAInB,EAAWhG,EAAI,iBAAiBmH,CAAC,EACjCkD,EAAUC,EAAUzJ,CAAC,EAAE,aAAamF,CAAQ,EAC5CqE,GACAF,EAAmB,aAAanE,EAAUqE,CAAO,CACrD,CAGZ,CAGZ,EAGArK,EAAI,OAAO,UAAU,eAAiB,SAAS6E,EAAO,CAClD,IAAIG,EAAKC,EAAKsF,EAASC,EACnBzF,EAAQF,EAAM,qBAAqB,OAAO,EAC9C,IAAKG,EAAM,EAAGC,EAAMF,EAAM,OAAQC,EAAMC,EAAKD,GAAO,EAChDuF,EAAUxF,EAAM,KAAKC,CAAG,EACxBwF,EAAUD,EAAQ,qBAAqB,MAAM,EACzCC,EAAQ,QACRD,EAAQ,aAAa,iBAAkB,MAAM,CAGzD,EAKAvK,EAAI,SAAW,SAASyK,EAAW,CAC/B,IAAI3F,EAAU,CAAA,EACV8D,EAAS,KACb,OAAoB,OAAO6B,EAAvB,IACiB,OAAOA,GAApB,UACAA,EAAYA,EAAU,QAAQ,UAAW,EAAE,EACtC,QAAQ,OAAQ,EAAE,EACnBA,EAAU,MAAM,EAAG,CAAC,IAAM,IAE1B3F,EAAU9E,EAAI,SAASyK,CAAS,EAGhC3F,EAAU,KAAK,MAAM2F,CAAS,EAElC7B,EAAS,IAAI5I,EAAI,QAAQ8E,CAAO,GACT,OAAO2F,EAAU,aAAjC,IAEP7B,EAAS,IAAI5I,EAAI,OAAOyK,CAAS,EACV,OAAOA,EAAU,YAAjC,IAEP7B,EAAS,IAAI5I,EAAI,OAAOyK,CAAS,EAGjC7B,EAAS,IAAI5I,EAAI,QAAQyK,CAAS,EAGtCzK,EAAI,MAAM,2BAA2B,EAEpC4I,GACD5I,EAAI,MAAM,+DAA+D,EAEtE4I,CACX,EAIA5I,EAAI,eAAiB,SAAU0K,EAAgB,CAC3C,GAAI1K,EAAI,cACJ,OAAOA,EAAI,cAEf,IAAI2K,EAAK,KACLC,EACAC,EAAc,CACd,YAAY,OACZ,kBAAkB,GAClB,QAAQ,IAKPH,IACDA,EAAiB,SAErBE,EAAS,SAAUE,EAAGC,EAAG,CACrB,OAAO/K,EAAI,kBAAkB,KAAK2K,EAAIG,CAAC,EAAE,cAAc9K,EAAI,kBAAkB,KAAK2K,EAAII,CAAC,EAAEL,EAAeG,CAAW,CAAA,EAEvH,IAAIG,EAAa,SAAU/K,EAAK,CAC5B,OAAOA,EAAI,QAAQ,gBAAiB,EAAE,CAAA,EAEtCgL,EAAoB,UAAY,CAChC,OAAKL,EAAO,KAAK,GAAG,EAGT,SAAUE,EAAGC,EAAG,CACnB,OAAOH,EAAOI,EAAWF,CAAC,EAAGE,EAAWD,CAAC,CAAC,CAAA,EAHvC,EAKX,EAEAG,EAAiBD,EAAA,EACjBE,EAAc,SAAUL,EAAGC,EAAG,CAC9B,OAAIG,EACOA,EAAeJ,EAAGC,CAAC,EAEnBH,EAAOE,EAAGC,CAAC,CACtB,EAEJ,OAAOI,CACX,EAIAnL,EAAI,gBAAkB,SAAS8K,EAAGC,EAAG,CACjC,IAAI/F,EAAKC,EAAKmG,EAAMC,EAEpB,GAAIP,EAAE,MAAM,SAAWC,EAAE,MAAM,OAE3B,MAAO,GAEP,IAAK/F,EAAM,EAAGC,EAAM6F,EAAE,MAAM,OAAQ9F,EAAMC,EAAKD,GAAO,EAAG,CACrD,GAAI8F,EAAE,MAAM9F,CAAG,IAAM+F,EAAE,MAAM/F,CAAG,EAE5B,MAAO,GAEP,IAAKoG,EAAO,EAAGC,EAAOP,EAAE,OAAO9F,CAAG,EAAGoG,EAAOC,EAAMD,GAAQ,EACtD,GAAIN,EAAE,OAAO9F,CAAG,EAAEoG,CAAI,IAAML,EAAE,OAAO/F,CAAG,EAAEoG,CAAI,EAE1C,MAAO,EAGnB,CAOR,OAJIN,EAAE,cAAgBC,EAAE,cAIpBD,EAAE,cAAgBC,EAAE,YAEb,EAEJ,CACX,EAEA/K,EAAI,iBAAmB,SAAUsL,EAAQC,EAAW,CAChD,IAAI,EAAGjL,EAAMO,EAAGY,EAAM+J,EAClBjL,EAAM,CAAA,EAKV,IAJAA,EAAI,MAAQ,CAAA,EACZA,EAAI,OAAS,CAAA,EACbA,EAAI,YAAc,GAClBA,EAAI,aAAe,GACd,EAAI,EAAGD,EAAOgL,EAAO,MAAM,OAAQ,EAAIhL,EAAM,GAAK,EACnDkL,EAAQF,EAAO,MAAM,CAAC,EAItB/K,EAAI,MAAM,CAAC,EAAIiL,EAEnB,IAAK,EAAK,EAAGlL,EAAOgL,EAAO,OAAO,OAAQ,EAAIhL,EAAM,GAAK,EAAG,CAExD,IADAkL,EAAQ,CAAA,EACH3K,EAAI,EAAGY,EAAO6J,EAAO,OAAO,CAAC,EAAE,OAAQzK,EAAIY,EAAMZ,GAAK,EAGvD2K,EAAM,KAAKF,EAAO,OAAO,CAAC,EAAEzK,CAAC,CAAC,EAElCN,EAAI,OAAO,KAAKiL,CAAK,CAAA,CAGzB,OAAID,GACAhL,EAAI,YAAcgL,EAAU,YAC5BhL,EAAI,aAAegL,EAAU,eAE7BhL,EAAI,YAAc+K,EAAO,YACzB/K,EAAI,aAAe+K,EAAO,cAEvB/K,CACX,EAKAP,EAAI,eAAiB,UAAY,CAC7B,IAAIsL,EAAQ/K,EACZ+K,EAAS,KAAK,IAAI,iBACbA,IACDA,EAAS,KAAK,IAAI,mBAEtB,IAAI/K,EAAMP,EAAI,iBAAiBsL,CAAM,EACrC,OAAO/K,CACX,EAKAP,EAAI,WAAa,UAAY,CACzB,OAAO,KAAK,IAAI,UAAU,QAAQ,MAAA,CACtC,EAKAA,EAAI,UAAY,UAAY,CACxB,OAAO,KAAK,IAAI,WAAW,CAC/B,EAUAA,EAAI,UAAY,SAAUgE,EAAO9C,EAAMJ,EAAM,CAEzC,IAAI2K,EAAMC,EAAWC,EAAMC,EAC3BA,EAAQ,GACRH,EAAOzH,EAAM,KACb0H,EAAY,GAkBZ,IAAIG,EAAS,SAAUC,EAAQ,CAC3B,OAAIA,GACA,KAAK,IAAI,KAAK,QAAQ,SAAS,EACxB9H,EAAM,UAEb,KAAK,IAAI,KAAK,QAAQ,MAAM,EACrBA,EAAM,KACjB,EAEAA,EAAM,OACNyH,EAAOI,EAAO,KAAK,KAAK7H,EAAM,KAAK9C,EAAMJ,CAAI,CAAC,GAElD,QAAST,EAAE,EAAEC,EAAK0D,EAAM,MAAM,OAAO3D,EAAEC,EAAKD,IACxCsL,EAAO3H,EAAM,MAAM3D,CAAC,EACpBqL,EAAYC,EAAK,KAAK3H,EAAO,KAAM9C,EAAMJ,CAAI,EACzC4K,IACAD,EAAOC,GAIf,OAAIE,GACA5L,EAAI,MAAMgE,EAAM,KAAO,KAAOA,EAAM,UAAY,aAAa,EAG1DyH,CACX,EAMAzL,EAAI,YAAc,SAAU+L,EAAiBC,EAAQ,CACjD,IAAIC,EAAMC,EAAaC,EAAcC,EAErCH,EAAOF,EAAgB,gBAEvB,IAAIM,EAAiBN,EAAgB,QAAQ,eAG7CA,EAAkB,IAAI/L,EAAI,MAAM,QAASA,EAAI,KAAK,EAElD,IAAIsM,EAAU,GACVC,EAAU,GACdL,EAAc,KAAK,OAAO,eAAe,KAAK,OAAO,QAAS,QAASD,CAAI,EACvEC,EAAY,SACZK,EAAU,KAAK,OAAO,kBAAkBL,EAAY,CAAC,EAAE,OAAO,EAC9DI,EAAU,KAAK,OAAO,kBAAkBJ,EAAY,CAAC,EAAG,gBAAgB,GAExEI,IACAL,EAAOA,EAAO,IAAM,KAAK,MAAM,uBAC/BG,EAAO,SAAUjM,EAAO,CAChBA,EAAM,IAAI,YACVA,EAAM,IAAI,uBAAuB,EAAI,GACzC,EAEJ4L,EAAgB,MAAM,KAAKK,CAAI,GAG/B,KAAK,MAAM,YAAY,QAAQH,CAAI,EAAI,GACvCjM,EAAI,MAAM,uCAA0CiM,EAAO,gCAAiC,EAE5F,KAAK,MAAM,YAAY,KAAKA,CAAI,EAGpCF,EAAgB,MAAQQ,EAEpBvM,EAAI,cAAciM,CAAI,IACtBF,EAAgB,MAAQE,EACxB,KAAK,IAAI,YAAcjM,EAAI,UAG/BA,EAAI,KAAK,MAAM,MAAM,KAAK+L,EAAiB,KAAMC,EAAQ,EAAI,EAGxD,KAAK,OAAO,aAAaE,CAAW,GACrClM,EAAI,MAAM,qCAAwCiM,EAAO,GAAI,EAIjE,IAAIO,EAAWxM,EAAI,eAAe,KAAK,KAAMiM,CAAI,EAKjD,GAJIO,IACAxM,EAAI,WAAW,KAAK,KAAMwM,EAAUN,CAAW,EAC/ClM,EAAI,eAAe,KAAK,KAAMwM,CAAQ,GAEtC,CAAC,KAAK,MAAM,UAAW,CACvB,IAAIJ,WAAiBK,EAAY,CAC7B,OAAO,SAAUtM,EAAOe,EAAMJ,EAAM,CAEhC,QADI2K,EAAO,EACJA,EAAOtL,EAAM,OAAOsM,CAAU,EAAE,QACnChB,EAAOzL,EAAI,UAAU,KAAKG,EAAOA,EAAM,OAAOsM,CAAU,EAAEhB,CAAI,EAAGvK,EAAMJ,CAAI,CAC/E,CACJ,EACFmL,CAAI,EACFS,EAAY,IAAI1M,EAAI,MAAM,OAAQA,EAAI,SAAS,EACnD0M,EAAU,MAAM,KAAKN,CAAI,EACzBJ,EAAO,KAAKU,CAAS,CAAA,CAIzBP,EAAe,IAAInM,EAAI,MAAM,QAASA,EAAI,GAAG,EAC7CmM,EAAa,QAAQ,eAAiBE,EAElCC,IACAF,EAAO,SAAUjM,EAAO,CAChBA,EAAM,IAAI,YACVA,EAAM,IAAI,uBAAuB,EAAI,GACzC,EAEJgM,EAAa,MAAM,KAAKC,CAAI,GAE5BL,EAAgB,QAChBI,EAAa,MAAQF,GAGzBjM,EAAI,KAAK,MAAM,MAAM,KAAKmM,EAAc,KAAMH,EAAQ,EAAI,EAE1D,KAAK,MAAM,YAAY,IAAA,CAC3B,EAEAhM,EAAI,eAAiB,SAAUiM,EAAM,CACjC,IAAIO,EAAW,GACf,OAAI,KAAK,MAAM,UACXA,EAAW,KAAK,KAAK,MAAM,KAAO,KAAK,MAAM,SAAS,EAAE,OAChD,KAAK,OAAOP,CAAI,IACxBO,EAAW,CAAA,EACX,KAAK,OAAOP,CAAI,EAAIO,GAEjBA,CACX,EAEAxM,EAAI,WAAa,SAAUwM,EAAUN,EAAa,CAC9C,IAAIS,EAAU3M,EAAI,YAAY,KAAMwM,CAAQ,EACxCI,EACgB,OAAOV,EAAY,OAAnC,IACAU,EAASV,EAETU,EAASV,EAAY,CAAC,EAE1BS,EAAQC,CAAM,CAClB,EAEA5M,EAAI,eAAiB,SAAUwM,EAAU,CAChC,KAAK,MAAM,WACZ,KAAK,mBAAmBA,CAAQ,CAExC,EAkBAxM,EAAI,WAAa,SAAUG,EAAO0M,EAAWC,EAAgBC,EAAW,CACpE,IAAIhL,EAAM+B,EAAgBqB,EAAY6H,EAAahJ,EAAOnC,EAAKmK,EAG/D,GAFAjK,EAAO5B,EAAM,OAAO,SAAS,IAAI,EAE7B,EAAAA,EAAM,MAAM,MAAQA,EAAM,MAAM,OAAS4B,GAG7C,IAAI,CAACA,EAAM,CACP+B,EAAM3D,EAAM,OAAO,QAAQ,IAAI,EAC3B2D,IACA3D,EAAM,MAAM,KAAO2D,GAEvB,MAAA,CASJ,GAPK9D,EAAI,KAAKG,EAAM,OAAO,SAAS,IAAI,CAAC,GACrCH,EAAI,MAAM,wBAA2B+B,EAAO,IAAK,EAGrDoD,EAAahF,EAAM,OAAO,WAAW,IAAI,EACzC6M,EAAchN,EAAI,eAAe,KAAK,KAAMG,EAAOgF,CAAU,EAC7DnB,EAAQ,IAAIhE,EAAI,MAAM+B,EAAM8K,CAAS,EACjCA,IAAc7M,EAAI,KAAO+B,IAAS,MAAQA,IAAS,WAAaA,IAAS,SAAU,CAInF,QAASF,KAAOsD,EACZ,GAAIA,EAAW,eAAetD,CAAG,EAAG,CAChC,GAAIgL,IAAc7M,EAAI,KAAO6B,IAAQ,aAAeA,IAAQ,UACxD,SAEJ,GAAIsD,EAAW,eAAetD,CAAG,EAC7B,GAAI7B,EAAI,WAAW6B,CAAG,EAClB,GAAI,CACA7B,EAAI,WAAW6B,CAAG,EAAE,KAAKmC,EAAO7D,EAAO,GAAKgF,EAAWtD,CAAG,CAAC,CAAA,OACtDoL,EAAG,CACRjN,EAAI,MAAM6B,EAAM,eAAiBoL,CAAC,CAAA,MAGtCjN,EAAI,MAAM,iCAAkC6B,EAAI,YAAa,CAErE,CAGRmC,EAAM,YAAcgJ,EAChBhN,EAAI,eAAe,QAAQmF,EAAW,WAAW,CAAC,EAAI,IACtD4H,EAAU,KAAK/I,EAAM,SAAS,CAClC,MACO6I,IAAc7M,EAAI,KAAOmF,EAAW,WAAW,IACtDnB,EAAM,YAAc,GAChBhE,EAAI,eAAe,QAAQmF,EAAW,WAAW,CAAC,EAAI,KACtDnB,EAAM,UAAY+I,EAAU,IAAA,IAQhCD,EACAd,EAASc,EAETd,EAAS7L,EAAMA,EAAM,MAAM,IAAI,EAAE,OAGrCH,EAAI,KAAK+B,CAAI,EAAE,MAAM,KAAKiC,EAAO7D,EAAO6L,EAAQ,EAAI,EACxD,EAOAhM,EAAI,WAAa,UAAY,CAgBzB,QATIkN,EAAa,CACb,CAAC,KAAgB,IAAI,EACrB,CAAC,KAAgB,IAAI,EACrB,CAAC,KAAgB,IAAI,EACrB,CAAC,KAAgB,IAAI,GAKhB7M,EAAE,EAAEC,EAAK4M,EAAW,OAAQ7M,EAAEC,EAAMD,IAAK,CACpC6M,EAAW7M,CAAC,EAAE,CAAC,EACzB,IAAIyB,EAAMoL,EAAW7M,CAAC,EAAE,CAAC,CACF,CAK3B,QAFI8M,EAAoB,CAAA,EACpBC,EAAW,CAAA,EACN/M,EAAE,EAAEC,EAAK4M,EAAW,OAAQ7M,EAAEC,EAAMD,IAAK,CAC9C,IAAIgN,EAAOH,EAAW7M,CAAC,EACnByB,EAAMuL,EAAK,CAAC,EAChBF,EAAkB,KAAKrL,CAAG,EAC1BsL,EAASC,EAAK,CAAC,CAAC,EAAIA,EAAK,CAAC,CAAA,CAE9B,IAAIC,EAAmBH,EAAkB,KAAK,GAAG,EAI7CI,EAAgB,IAAI,OAAO,MAAQD,EAAmB,aAAa,EACnEE,EAAe,IAAI,OAAO,MAAQF,EAAmB,cAAe,GAAG,EAGvEG,EAAgB,mBAGhBC,EAAY,UAGZC,EAAa,UAIbC,EAAW,iDACXC,EAAY,iDACZC,EAAY,cACZC,EAAiB,cACjBC,EAAY,OACZC,EAAQ,cACRC,EAAY,IAAML,EAAY,IAAMD,EAAW,IAAME,EAAY,IAAMC,EAAiB,IAAMC,EAAY,IAAMC,EAAQ,IAExHE,EAAU,IAAI,OAAOD,EAAU,QAAQ,YAAa,GAAG,EAAE,QAAQ,aAAc,GAAG,CAAC,EACnFE,EAAe,IAAI,OAAOF,EAAU,QAAQ,YAAa,GAAG,EAAE,QAAQ,aAAc,GAAI,CAAC,EACzFG,EAAe,IAAI,OAAOH,EAAU,QAAQ,YAAa,GAAI,EAAE,QAAQ,aAAc,GAAG,CAAC,EAOzFI,EAAc,gIAClB,KAAK,aAAeA,EAAY,MAAM,GAAG,EAMzC,KAAK,iBAAmB,UAAW,CAE/B,KAAK,WAAa,EAClB,KAAK,SAAW,CAAA,EAGpB,KAAK,iBAAmB,UAAW,CAE/B,KAAK,WAAa,EAClB,KAAK,SAAW,CAAA,EAGpB,KAAK,sBAAwB,UAAW,CAEpC,KAAK,UAAY,CAAA,EACjB,QAASjO,EAAE,EAAEC,EAAK,KAAK,aAAa,OAAQD,EAAEC,EAAMD,IAChD,KAAK,UAAU,KAAK,CAAC,KAAK,aAAaA,CAAC,CAAC,CAAC,EAE9C,KAAK,aAAe,CAAA,EACpB,QAASA,EAAE,EAAEC,EAAK,KAAK,UAAU,OAAQD,EAAEC,EAAMD,IAAK,CAClD,KAAK,aAAa,KAAK,EAAE,EACzB,QAASQ,EAAE,EAAEY,EAAK,KAAK,UAAUpB,CAAC,EAAE,OAAQQ,EAAEY,EAAMZ,IAChD,KAAK,aAAaR,CAAC,EAAE,KAAK,KAAK,UAAUA,CAAC,EAAE,CAAC,EAAE,MAAM,EAAG,CAAC,CAAC,CAC9D,CAEJ,KAAK,WAAa,CAAA,EAClB,QAASA,EAAE,EAAEC,EAAK,KAAK,aAAa,OAAQD,EAAEC,EAAMD,IAChD,KAAK,WAAW,KAAK,IAAI,OAAO,MAAQ,KAAK,aAAaA,CAAC,EAAE,KAAK,GAAG,EAAI,GAAG,CAAC,CACjF,EAGJ,KAAK,oBAAsB,SAASD,EAAK,CAUrC,GALiB,OAAOA,GAApB,WACAA,EAAMA,EAAI,MAAM,KAAK,GAIrBA,EAAI,SAAW,IAAMA,EAAI,SAAW,GAAI,CACxCJ,EAAI,MAAM,2BAA2BI,EAAI,OAAO,gCAAgC,EAChF,MAAA,CAKJ,QAASC,EAAE,EAAEC,EAAKF,EAAI,OAAQC,EAAEC,EAAMD,IAAK,CAKvC,QAJIkO,EAAe,KACfC,EAAO,GACPC,EAAS,EACTC,EAAe,CAAA,EACV7N,EAAE,EAAEY,EAAK,KAAK,aAAa,OAAQZ,EAAEY,EAAMZ,IAAK,CAErD,GADA6N,EAAa7N,CAAC,EAAI,CAAA,EACdA,IAAMR,GAEN,QAAS8G,EAAE,EAAEC,EAAK,KAAK,aAAa/G,CAAC,EAAE,OAAQ8G,EAAEC,EAAMD,IACnD,GAAI,KAAK,aAAa9G,CAAC,EAAE8G,CAAC,IAAM/G,EAAIC,CAAC,EAAE,MAAM,EAAG,KAAK,aAAaA,CAAC,EAAE8G,CAAC,EAAE,MAAM,EAAG,CAC7EqH,EAAO,GACP,KAAA,MAKR,SAASrH,EAAE,EAAEC,EAAK,KAAK,aAAavG,CAAC,EAAE,OAAQsG,EAAEC,EAAMD,IAEnD,GADAoH,EAAe,KAAK,aAAa1N,CAAC,EAAEsG,CAAC,EAAE,OACnC,KAAK,aAAatG,CAAC,EAAEsG,CAAC,IAAM/G,EAAIC,CAAC,EAAE,MAAM,EAAGkO,CAAY,EAAG,CAC3D,KAAO,KAAK,UAAU1N,CAAC,EAAEsG,CAAC,EAAE,MAAM,EAAGoH,CAAY,IAAMnO,EAAIC,CAAC,EAAE,MAAM,EAAGkO,CAAY,GAE/E,GAAIA,EAAenO,EAAIC,CAAC,EAAE,QAAUkO,EAAe,KAAK,UAAU1N,CAAC,EAAEsG,CAAC,EAAE,OAAQ,CAC5EnH,EAAI,MAAM,uDAAuDI,EAAIC,CAAC,CAAC,EACvE,KAAA,MAGAkO,GAAgB,EAGxBE,EAASF,EACTG,EAAa7N,CAAC,EAAEsG,CAAC,EAAIoH,CAAA,CAIjC,QAASI,KAAQD,EACb,QAASE,KAAQF,EAAaC,CAAI,EAC9BJ,EAAeG,EAAaC,CAAI,EAAEC,CAAI,EACtCD,EAAO,SAASA,EAAM,EAAE,EACxBC,EAAO,SAASA,EAAM,EAAE,EACxB,KAAK,aAAaD,CAAI,EAAEC,CAAI,EAAI,KAAK,UAAUD,CAAI,EAAEC,CAAI,EAAE,MAAM,EAAGL,CAAY,CAExF,CAGCC,IACD,KAAK,UAAUnO,CAAC,EAAE,KAAKD,EAAIC,CAAC,CAAC,EAC7B,KAAK,aAAaA,CAAC,EAAE,KAAKD,EAAIC,CAAC,EAAE,MAAM,EAAGoO,CAAM,CAAC,EACrD,CAIJ,KAAK,WAAa,CAAA,EAClB,KAAK,aAAe,CAAA,EACpB,QAASpO,EAAE,EAAEC,EAAK,KAAK,aAAa,OAAQD,EAAEC,EAAMD,IAChD,KAAK,WAAW,KAAK,IAAI,OAAO,OAAS,KAAK,aAAaA,CAAC,EAAE,KAAK,GAAG,EAAI,GAAG,CAAC,EAC9E,KAAK,aAAa,KAAK,OAAS,KAAK,aAAaA,CAAC,EAAE,KAAK,GAAG,EAAI,GAAG,EAExE,GAAI,KAAK,aAAa,SAAW,GAC7B,QAASA,EAAE,GAAGC,EAAK,GAAID,EAAEC,EAAMD,IAC3B,KAAK,WAAWA,EAAE,CAAC,EAAI,IAAI,OAAO,OAAS,KAAK,aAAaA,CAAC,EAAE,KAAK,GAAG,EAAI,GAAG,EAC/E,KAAK,aAAaA,EAAE,CAAC,EAAI,OAAS,KAAK,aAAaA,CAAC,EAAE,KAAK,GAAG,EAAI,GAE3E,EAOJ,KAAK,yBAA2B,SAAUmK,EAAS,CAE/CA,EAAQ,YAAY,EAAI,CAAA,EACxBA,EAAQ,YAAY,EAAE,KAAK,EAAE,EAG7B,QAFIqE,EAAW,EACXC,EACKzO,EAAE,EAAEC,EAAK,EAAGD,EAAEC,IACnBwO,EAAO,CAAC,OAAQ,QAAS,KAAK,EAAEzO,CAAC,EAC7B,EAACmK,EAAQsE,CAAI,GAFQzO,IAKzBwO,GAAY,EACZrE,EAAQ,YAAY,EAAE,CAAC,EAAE,KAAKA,EAAQsE,CAAI,CAAC,EAC3C,OAAOtE,EAAQsE,CAAI,EAEvBtE,EAAQ,YAAY,EAAE,KAAK,EAAE,EAC7B,QAASnK,EAAE,EAAGC,EAAKuO,EAAUxO,EAAEC,IAC3BwO,EAAO,CAAC,WAAY,YAAa,SAAS,EAAEzO,CAAC,EACzC,EAACmK,EAAQsE,CAAI,GAFgBzO,IAKjCmK,EAAQ,YAAY,EAAE,CAAC,EAAE,KAAKA,EAAQsE,CAAI,CAAC,EAC3C,OAAOtE,EAAQsE,CAAI,EAEvB,OAAItE,EAAQ,YAAY,EAAE,CAAC,EAAE,SAAWA,EAAQ,YAAY,EAAE,CAAC,EAAE,QAC7DA,EAAQ,YAAY,EAAE,IAAA,EAEnBA,CAAA,EAIX,KAAK,0BAA4B,SAASA,EAAS,CAG/C,QADIjK,EAAM,CAAA,EACDF,EAAI,EAAGC,EAAO,EAAGD,EAAIC,GACtBkK,EAAQxK,EAAI,eAAeK,CAAC,CAAC,EADDA,GAAK,EAEjCE,EAAI,KAAKiK,EAAQxK,EAAI,eAAeK,CAAC,CAAC,CAAC,EAK/C,OAAOE,EAAI,KAAK,GAAG,CAAA,EAOvB,KAAK,kBAAoB,SAAUA,EAAKwO,EAAOC,EAAMlL,EAAK,CACjDkL,IACDA,EAAO,IAIX,QAFI5O,EAAM0D,EAAI,MAAMiL,CAAK,EAEhB1O,EAAE,EAAGC,EAAKF,EAAI,OAAQC,EAAEC,EAAMD,IACnC,GAAID,EAAIC,CAAC,EAAE,SAAW,EAAG,CACrBE,EAAK,OAASyO,CAAK,EAAI5O,EAAIC,CAAC,EAAE,QAAQ,MAAO,EAAE,EAC1CA,EAGDD,EAAMA,EAAI,MAAM,EAAGC,CAAC,EAFpBD,EAAMA,EAAI,MAAM,CAAC,EAIrB,KAAA,CAGR,QAASC,EAAE,EAAEC,EAAKF,EAAI,OAAQC,EAAEC,EAAMD,IAClCD,EAAIC,CAAC,EAAI,SAASD,EAAIC,CAAC,EAAG,EAAE,EAEhC,GAAID,EAAI,SAAW,GAAMA,EAAI,SAAW,GAAK,CAACA,EAAI,CAAC,EAAI,CACnD,IAAI6O,EAAQ7O,EAAI,CAAC,EACb6O,IACA1O,EAAK,QAAUyO,CAAK,EAAI,GAAK5O,EAAI,CAAC,EACtC,SACOA,EAAI,SAAW,EACtB,GAAIA,EAAI,KAAK,UAAU,EAAI,GAAI,CAC3B,IAAI6O,EAAQ7O,EAAI,KAAK,QAAQ,EACzB8O,EAAM9O,EAAI,KAAK,UAAU,EACzB6O,IACA1O,EAAK,QAAUyO,CAAK,EAAI,GAAKC,EACzBC,IACA3O,EAAK,MAAQyO,CAAK,EAAI,GAAKE,GAEnC,KACG,CACH,IAAID,EAAQ7O,EAAI,KAAK,UAAU,EAC3B8O,EAAM9O,EAAI,KAAK,QAAQ,EACvB6O,IACA1O,EAAK,QAAUyO,CAAK,EAAI,GAAKC,EACzBC,IACA3O,EAAK,MAAQyO,CAAK,EAAI,GAAKE,GAEnC,CAER,EAOJ,KAAK,kBAAoB,SAAUpL,EAAK,CAIpC,IAAIqL,EAAOrL,EACPsL,EAAW,GACXC,EAAU,GACVC,EAAiB,GACjBlP,EACJ,GAAI0D,EAAK,CASL,GARAA,EAAMA,EAAI,QAAQ,qBAAsB,IAAI,EAExCA,EAAI,MAAM,EAAG,CAAC,IAAM,MACpBwL,EAAiB,GACjBxL,EAAMA,EAAI,MAAM,CAAC,GAIjBA,EAAI,MAAM,cAAc,EACxB,KAAOA,EAAI,OAAS,GAChBA,EAAM,IAAMA,EAKpBA,EAAM,GAAKA,EAEXA,EAAMA,EAAI,QAAQ,kCAAkC,EAAE,EACtD,IAAI7C,EAAI6C,EAAI,MAAM2J,CAAa,EAC/B,GAAIxM,EAAG,CACH6C,EAAMA,EAAI,QAAQ,OAAQ,EAAE,EAC5BA,EAAMA,EAAI,QAAQ4J,EAAW,EAAE,EAC/B5J,EAAMA,EAAI,QAAQ2J,EAAe,GAAG,EACpC3J,EAAMA,EAAI,QAAQ6J,EAAY,GAAG,EACjC7J,EAAMA,EAAI,QAAQ,QAAS,GAAG,EAC9BA,EAAMA,EAAI,QAAQ,MAAM,EAAE,EAG1B,IAAIyL,EAAOzL,EAAI,MAAMyJ,CAAa,EAClCnN,EAAM,CAAA,EACN,IAAIwB,EAAKkC,EAAI,MAAM0J,CAAY,EAC/B,GAAI5L,EAAI,CAEJ,QADI4N,EAAM,CAAA,EACDnP,EAAE,EAAEC,EAAKsB,EAAG,OAAQvB,EAAEC,EAAMD,IACjCmP,EAAMA,EAAI,OAAO5N,EAAGvB,CAAC,EAAE,MAAM,mBAAmB,EAAE,MAAM,CAAC,CAAC,EAE9D,QAASA,EAAE,EAAEC,EAAKiP,EAAK,OAAQlP,EAAEC,EAAMD,IAEnC,GADAD,EAAI,KAAKmP,EAAKlP,CAAC,CAAC,EACZA,IAAOC,EAAO,EAAI,CAElB,IAAImP,EAASpP,EAAI,EACjBD,EAAI,KAAKoP,EAAIC,CAAK,CAAC,EACnBrP,EAAI,KAAKoP,EAAIC,EAAQ,CAAC,CAAC,CAAA,CAE/B,MAEArP,EAAMmP,EAGV,QAASlP,EAAE,EAAEC,EAAKF,EAAI,OAAQC,EAAEC,EAAMD,GAAG,EACrCD,EAAIC,EAAI,CAAC,EAAI+M,EAAShN,EAAIC,CAAC,CAAC,EAAI,SAASD,EAAIC,EAAI,CAAC,EAAG,EAAE,EACvDD,EAAIC,CAAC,EAAI,GAEbyD,EAAM1D,EAAI,KAAK,EAAE,EACjB0D,EAAMA,EAAI,QAAQ,WAAY,EAAE,EAAE,QAAQ,YAAa,GAAG,EAI1DA,EAAMA,EAAI,QAAQ,SAAU,EAAE,EAG9BA,EAAMA,EAAI,QAAQ,UAAW,EAAE,EAE/BsL,EAAWtL,EAAI,QAAQ,GAAG,EAC1BuL,EAAUvL,EAAI,QAAQ,GAAG,CAAA,CAC7B,CAGJA,EAAMA,EAAI,QAAQ,gBAAiB,IAAI,EAEvC,IAAI4L,EAAS,GACTC,EAAO,GACPnF,EAAU,CAAA,EACVoF,EACAC,EACJ,GAAI/L,EAAI,MAAM,EAAG,CAAC,IAAM,KAAQA,EAAI,MAAM,EAAE,IAAM,IAC9C,OAAA0G,EAAQ,QAAU1G,EAAI,MAAM,EAAG,EAAE,EAC1B0G,EAEX,GAAI4E,EAAW,IAAMC,EAAU,GAAI,CAC/B,IAAIS,EAAahM,EAAI,MAAM,GAAG,EAC1BgM,EAAW,OAAS,GACpBF,EAAa,IACb9L,EAAMA,EAAI,QAAQ,MAAO,GAAG,EAC5B+L,EAAY,IACZzP,EAAM0D,EAAI,MAAMuK,CAAY,IAE5BuB,EAAa,IACb9L,EAAMA,EAAI,QAAQ,MAAO,GAAG,EAC5B+L,EAAY,IACZzP,EAAM0D,EAAI,MAAMsK,CAAY,EAChC,MAEAtK,EAAMA,EAAI,QAAQ,MAAO,GAAG,EAC5BA,EAAMA,EAAI,QAAQ,MAAO,GAAG,EAC5B8L,EAAa,IACbC,EAAY,IACZzP,EAAM0D,EAAI,MAAMqK,CAAO,EAG3B,QADI5N,EAAM,CAAA,EACDF,EAAE,EAAEC,EAAKF,EAAI,OAAQC,EAAEC,EAAMD,IAAK,CACvC,IAAIY,EAAIb,EAAIC,CAAC,EAAE,MAAM,6CAA6C,EAC9DY,GACAV,EAAI,KAAKU,EAAE,CAAC,CAAC,CACjB,CAKJ,IAAI8O,EAAWxP,EAAI,QAAQqP,CAAU,EACjCI,EAAS,CAAA,EACTC,EAAU,GACVF,EAAW,IACXC,EAAO,KAAK,CAAC,EAAGD,CAAQ,CAAC,EACzBC,EAAO,KAAK,CAAED,EAAW,EAAIxP,EAAI,MAAM,CAAC,EACxC0P,EAAU,IAEVD,EAAO,KAAK,CAAC,EAAGzP,EAAI,MAAM,CAAC,EAO/B,QAFIyO,EAAO,GAEF3O,EAAE,EAAEC,EAAK0P,EAAO,OAAQ3P,EAAEC,EAAMD,IAAK,CAC1C,IAAI0O,EAAQiB,EAAO3P,CAAC,EAIhB6P,GAAO3P,EAAI,MAAMwO,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,EACvCoB,EACA,QAAStP,EAAE,EAAEY,EAAKyO,GAAK,OAAQrP,EAAEY,EAAMZ,IAAK,CACxC,IAAIuP,EAAUF,GAAKrP,CAAC,EAIpB,GAAIuP,EAAQ,QAAQP,CAAS,EAAI,GAAI,CACjC,KAAK,kBAAkBrF,EAASqF,EAAWb,EAAMoB,CAAO,EACxD,QAAA,CAKJ,GAAIA,EAAQ,MAAM,UAAU,EAAG,CAC3B5F,EAAS,OAASwE,CAAK,EAAIoB,EAAQ,QAAQ,MAAO,EAAE,EACpD,QAAA,EAKAA,IAAY,KAAOA,IAAY,KAAOA,IAAY,KAAOA,EAAQ,MAAM,MAAM,KAC7E5F,EAAQ,MAAQ,IAKpB,QAASrD,GAAE,EAAEC,GAAK,KAAK,WAAW,OAAQD,GAAEC,GAAMD,KAC9C,GAAIiJ,EAAQ,oBAAoB,MAAM,KAAK,WAAWjJ,EAAC,CAAC,EAAG,CACvDqD,EAAS,QAAUwE,CAAK,EAAI,IAAM,SAAS7H,GAAG,EAAE,EAAI,GACpD,SAASgJ,CAAA,CAcjB,GARIC,EAAQ,MAAM,UAAU,IACxBV,EAASU,GAOTA,EAAQ,kBAAA,EAAoB,MAAM,KAAK,GAAKV,EAAQ,CACpDlF,EAAS,OAASwE,CAAK,EAAI,GAAMU,EAAS,GAC1CA,EAAS,GACT,QAAA,CAEJ,GAAIU,EAAQ,kBAAA,EAAoB,MAAM,KAAK,GAAKV,EAAQ,CACpDlF,EAAS,OAASwE,CAAK,EAAI,GAAKU,EAChCA,EAAS,GACT,QAAA,CAKJ,GAAIU,EAAQ,kBAAA,EAAoB,MAAM,qBAAqB,GAAK,CAAC5F,EAAS,SAAWwE,CAAK,EAAG,CACzFW,EAAOS,EACP,QAAA,CACJ,CAMAV,IACAlF,EAAS,MAAQwE,CAAK,EAAIU,EAC1BA,EAAS,IAOTC,GAAQ,CAACnF,EAAS,SAAWwE,CAAK,IAClCxE,EAAS,SAAWwE,CAAK,EAAIW,EAAK,KAAA,EAClCA,EAAO,IAEXX,EAAO,MAAA,CAMX,GAAIiB,EACA,QAASpP,EAAE,EAAEY,EAAKzB,EAAI,eAAe,OAAQa,EAAEY,EAAMZ,IAAK,CACtD,IAAIC,EAAOd,EAAI,eAAea,CAAC,EAC3B2J,EAAQ1J,CAAI,GAAK,CAAC0J,EAAS1J,EAAO,MAAO,EACzC0J,EAAS1J,EAAO,MAAO,EAAI0J,EAAQ1J,CAAI,EAChC,CAAC0J,EAAQ1J,CAAI,GAAK0J,EAAS1J,EAAO,MAAO,IAChD0J,EAAQ1J,CAAI,EAAI0J,EAAS1J,EAAO,MAAO,EAC3C,EAMJ,CAAC0J,EAAQ,MAASA,EAAQ,MAAQA,EAAQ,KAAO,CAACA,EAAQ,SAC1DA,EAAU,CAAE,QAAW2E,CAAA,GAG3B,QADIkB,GAAQ,CAAC,OAAQ,QAAS,MAAO,WAAY,YAAa,SAAS,EAC9DhQ,EAAE,EAAEC,EAAK+P,GAAM,OAAQhQ,EAAEC,EAAMD,IAAK,CACzC,IAAIyO,GAAOuB,GAAMhQ,CAAC,EACD,OAAOmK,EAAQsE,EAAI,GAAhC,UAAqCtE,EAAQsE,EAAI,EAAE,MAAM,UAAU,IACnEtE,EAAQsE,EAAI,EAAI,SAAStE,EAAQsE,EAAI,EAAG,EAAE,EAC9C,CAGJ,OAAIQ,GAAkB,OAAO,KAAK9E,CAAO,EAAE,QAAQ,MAAM,EAAI,KACzDA,EAAQ,KAAQA,EAAQ,KAAO,IAE5BA,CAAA,EAGX,KAAK,iBAAmB,SAAS1G,EAAK,CAClC,OAAO,KAAK,yBAAyB,KAAK,kBAAkBA,CAAG,CAAC,CAAA,EAGpE,KAAK,kBAAoB,SAASA,EAAK,CACnC,OAAO,KAAK,0BAA0B,KAAK,kBAAkBA,CAAG,CAAC,CAAA,EAGrE,KAAK,MAAQ,SAASA,EAAK,CACvB,OAAO,KAAK,kBAAkBA,CAAG,CAAA,EAQrC,KAAK,iBAAA,EACL,KAAK,sBAAA,CACT,EACA9D,EAAI,WAAa,IAAIA,EAAI,WAIzBA,EAAI,OAAS,SAAUsQ,EAAKC,EAAO9P,EAAM+P,EAAW,CAChD,IAAIlH,EAAOmH,EACX,KAAK,kBAAoBzQ,EAAI,kBAC7B,KAAK,YAAc,MACnB,KAAK,IAAMsQ,EAEP,OAAO,OAAO,QAAU,YAExB,OAAO,eAAe,OAAQ,SAAU,CACpC,MAAO,SAAgBtE,EAAQ,CAE3B,GAAIA,GAAU,KACV,MAAM,IAAI,UAAU,4CAA4C,EAKpE,QAFI0E,EAAK,OAAO1E,CAAM,EAEb2E,EAAQ,EAAGA,EAAQ,UAAU,OAAQA,IAAS,CACnD,IAAIC,EAAa,UAAUD,CAAK,EAEhC,GAAIC,GAAc,KACd,QAASC,KAAWD,EAEZ,OAAO,UAAU,eAAe,KAAKA,EAAYC,CAAO,IACxDH,EAAGG,CAAO,EAAID,EAAWC,CAAO,EAG5C,CAEJ,OAAOH,CAAA,EAEX,SAAU,GACV,aAAc,EAAA,CACjB,EAMDJ,EAAI,kBACJtQ,EAAI,8BAAgC,IAAI,OAAO,MAAQ,CAAC,GAAG,EAAE,OAAOA,EAAI,oBAAoB,EAAE,KAAK,EAAE,EAAI,SAAS,GAGlHA,EAAI,sBACJ,KAAK,IAAI,oBAAsBA,EAAI,qBAEnCA,EAAI,kBACJ,KAAK,IAAI,gBAAkBA,EAAI,iBAE/B,KAAK,IAAI,gBACTA,EAAI,cAAgB,KAAK,IAAI,eAEjC,KAAK,IAAI,qBAAuBA,EAAI,qBAEpC,KAAK,UAAY,IAAIA,EAAI,UAAU,IAAI,EAEvC,KAAK,cAAgB,SAAU8B,EAAK,CAChC,KAAK,IAAI,aAAa,EAAIA,CAAA,EAG9B,KAAK,IAAM,IAAI9B,EAAI,OAAO,IAC1B,KAAK,IAAM,IAAIA,EAAI,OAAO,IAC1B,KAAK,MAAQ,IAAIA,EAAI,OAAO,MAC5B,KAAK,IAAM,IAAIA,EAAI,OAAO,IAAI,IAAI,EAElC,KAAK,UAAY,IAAIA,EAAI,OAAO,UAIhC,KAAK,cAAgB,IAAIA,EAAI,OAAO,aACpC,KAAK,kBAAoB,IAAIA,EAAI,OAAO,iBACxC,KAAK,SAAW,IAAIA,EAAI,OAAO,SAAS,IAAI,EAC5C,KAAK,aAAe,IAAIA,EAAI,OAAO,aACnC,KAAK,OAAS,IAAIA,EAAI,OAAO,OAE7B,KAAK,OAAS,IAAIA,EAAI,OAAO,MAAM,IAAI,EAOvC,KAAK,QAAU,IAAIA,EAAI,OAAO,MAAM,IAAI,EAExC,KAAK,OAASA,EAAI,SAASuQ,CAAK,EAEhC,QAASlQ,KAAKL,EAAI,YAAa,CAC3B,IAAI8Q,EAAS9Q,EAAI,YAAYK,CAAC,EACZ,OAAO,KAAK,IAAIyQ,CAAM,GAApC,YACA,KAAK,IAAI,uBAAuBA,CAAM,EAAI,KAAK,IAAIA,CAAM,EAC7D,EAGA,KAAK,IAAI,uBAAuB,qBAAuB,KAAK,IAAI,uBAAuB,wBACvF,KAAK,IAAI,uBAAuB,4BAA8B,IAE9D,KAAK,IAAI,uBAAuB,6BAChC,KAAK,MAAM,UAAY,EACvB,KAAK,cAAgB,SAASjM,EAAOqB,EAAU,CAC3C,IAAIJ,EAAW,KAAK,OAAO,SAASjB,CAAK,EACzC,KAAK,OAAO,aAAaA,EAAO,QAAS,KAAK,MAAM,SAAS,EAC7D,KAAK,IAAI,UAAU,KAAKqB,CAAQ,EAChC,KAAK,MAAM,WAAa,EACxB,QAAS7F,EAAI,EAAGC,EAAO,KAAK,OAAO,cAAcwF,CAAQ,EAAGzF,EAAIC,EAAMD,GAAK,EACvE6F,EAAW,KAAK,OAAO,SAASJ,EAASzF,CAAC,CAAC,EACvC6F,GACA,KAAK,cAAcJ,EAASzF,CAAC,EAAG6F,CAAQ,CAEhD,EAEJ,KAAK,cAAc,KAAK,OAAO,QAAS,OAAO,GAGnD,KAAK,OAAO,oBAAoB,KAAK,OAAO,OAAO,EACnD,KAAK,OAAO,oBAAoB,KAAK,OAAO,OAAO,EACnD,KAAK,OAAO,wBAAwB,KAAK,OAAO,OAAO,EACvD,KAAK,OAAO,eAAe,KAAK,OAAO,OAAO,EAC9CoD,EAAQ,KAAK,OAAO,WAAW,KAAK,OAAO,OAAO,EAC9B,OAAOA,EAAM,iBAAiB,EAA9C,KACA,KAAK,OAAO,aAAa,KAAK,OAAO,QAAS,iBAAkB,IAAI,EAGxE,KAAK,IAAI,wBAAwB,EAAI,GASrC,KAAK,mBAAA,EAEL,KAAK,IAAI,OAAS,KAAK,OAAO,kBAAkB,KAAK,OAAO,QAAS,OAAO,EAC5E,KAAK,IAAI,MAAW,KAAK,IAAI,OAC7B,KAAK,IAAI,QAAU,KAAK,OAAO,WAAW,KAAK,OAAO,OAAO,EAC7D,KAAK,IAAI,UAAY,KAAK,OAAO,WAAW,KAAK,OAAO,QAAS,EAAI,EAEjE,KAAK,IAAI,QAAQ,MAAM,EAAE,CAAC,IAAM,SAChC,KAAK,IAAI,uBAAuB,wBAA0B,GAC1D,KAAK,IAAI,uBAAuB,4BAA8B,GAC9D,KAAK,IAAI,uBAAuB,4BAA8B,GAC9D,KAAK,IAAI,uBAAuB,uBAAyB,GACzD,KAAK,IAAI,uBAAuB,wCAA0C,GAC1E,KAAK,IAAI,uBAAuB,mBAAqB,GACrD,KAAK,IAAI,uBAAuB,4BAA8B,IAM9D7I,IACAA,EAAOA,EAAK,QAAQ,IAAK,GAAG,EAC5BA,EAAOT,EAAI,mBAAmBS,CAAI,GAElC,KAAK,IAAI,gBAAgB,EAAE,CAAC,IAC5B,KAAK,IAAI,gBAAgB,EAAE,CAAC,EAAI,KAAK,IAAI,gBAAgB,EAAE,CAAC,EAAE,QAAQ,IAAK,GAAG,EAC9E,KAAK,IAAI,gBAAgB,EAAE,CAAC,EAAIT,EAAI,mBAAmB,KAAK,IAAI,gBAAgB,EAAE,CAAC,CAAC,GAEpFS,GAAQ+P,IACR,KAAK,IAAI,gBAAgB,EAAI,CAAC/P,CAAI,GAElCA,GAAQ,CAAC+P,GAAa,KAAK,IAAI,gBAAgB,EAAE,CAAC,IAClD/P,EAAO,KAAK,IAAI,gBAAgB,EAAE,CAAC,GAEnC,KAAK,IAAI,gBAAgB,EAAE,SAAW,IACjCA,IACDA,EAAO,SAEX,KAAK,IAAI,gBAAgB,EAAE,KAAK,OAAO,GAEtCA,IACDA,EAAO,KAAK,IAAI,gBAAgB,EAAE,CAAC,GAEvCgQ,EAAWzQ,EAAI,cAAcS,CAAI,EACjC,KAAK,IAAI,KAAOgQ,EAAS,KACzB,KAAK,IAAI,gBAAgB,EAAE,CAAC,EAAIA,EAAS,KACzC,KAAK,OAAS,CAAA,EACT,KAAK,IAAI,qBAAqB,IAC/B,KAAK,IAAI,qBAAqB,EAAI,KAAK,IAAI,gBAAgB,EAAE,CAAC,GAG9D,QAAQ,cAAc,QAAS,KAAK,IAAI,qBAAqB,CAAC,EAAI,GAClE,KAAK,IAAI,SAAW,IAEpB,KAAK,IAAI,SAAW,IAExB,KAAK,gBAAgBA,CAAQ,EAG7B,SAASM,EAAW3Q,EAAK,CACrB,IAAIA,EAAMA,EAAI,MAAA,EACVG,EAAM,IAAI,OAAQ,2BAA6BH,EAAI,KAAK,GAAG,EAAI,uBAAwB,GAAG,EAC9F,OAAOG,CAAA,CAEX,KAAK,OAAO,KAAK,IAAI,IAAI,EAAE,KAAK,mBAAmB,EAAIwQ,EAAW,KAAK,OAAO,KAAK,IAAI,IAAI,EAAE,KAAK,YAAY,CAAC,EAE/G,KAAK,OAAO,OAAS,IAAI/Q,EAAI,OAAO,MAAM,OAAO,KAAK,OAAO,sBAAsB,CAAC,EAEpF,KAAK,SAAW,IAAIA,EAAI,SAAS,IAAI,EAOrC,KAAK,OAAS,CAAA,EAEd,KAAK,MAAM,KAAO,WAClB,IAAIgR,EAAa,KAAK,OAAO,eAAe,KAAK,OAAO,QAAS,KAAK,MAAM,IAAI,EAChF,KAAK,gBAAgBA,EAAY,KAAK,KAAK,MAAM,IAAI,EAAE,MAAM,EAE7D,KAAK,MAAM,KAAO,eAClB,IAAIA,EAAa,KAAK,OAAO,eAAe,KAAK,OAAO,QAAS,KAAK,MAAM,IAAI,EAChF,KAAK,gBAAgBA,EAAY,KAAK,KAAK,MAAM,IAAI,EAAE,MAAM,EAE7D,KAAK,MAAM,KAAO,SAClB,IAAIA,EAAa,KAAK,OAAO,eAAe,KAAK,OAAO,QAAS,KAAK,MAAM,IAAI,EAChF,KAAK,gBAAgBA,EAAY,KAAK,KAAK,MAAM,IAAI,EAAE,MAAM,EAEzD,KAAK,IAAI,SAAS,SAClB,KAAK,SAAW,IAAIhR,EAAI,SAAS,IAAI,GAGzC,KAAK,MAAQ,CAAA,EAEb,KAAK,oBAAA,EAEL,KAAK,aAAe,IAAIA,EAAI,eAAe,IAAI,EAE/C,KAAK,iBAAmB,GAKxB,KAAK,IAAI,WAAaA,EAAI,WAI1B,KAAK,IAAI,YAAc,IAAIA,EAAI,KAAK,YAAY,IAAI,EAIpD,KAAK,oBAAA,EAIL,KAAK,IAAI,YAAY,KAAK,IAAI,EAI9B,KAAK,IAAI,iBAAiB,KAAK,IAAI,EAInC,KAAK,IAAI,aAAeA,EAAI,KAAK,iBAAiB,YAAY,KAAM,MAAM,EAC1E,KAAK,IAAI,aAAeA,EAAI,KAAK,iBAAiB,YAAY,KAAM,MAAM,EAE1E,KAAK,gBAAgB,MAAM,CAC/B,EAEAA,EAAI,OAAO,UAAU,oBAAsB,UAAY,CACnD,IAAIO,EACJA,EAAM,CAAA,EACNA,EAAI,KAAK,KAAK,QAAQ,aAAa,CAAC,EACpCA,EAAI,KAAK,KAAK,QAAQ,mBAAmB,CAAC,EAC1CA,EAAI,KAAK,GAAG,EACZA,EAAI,KAAK,GAAG,EACZ,KAAK,IAAI,mBAAqBA,CAClC,EAGAP,EAAI,YAAc,SAAU2K,EAAIqB,EAAQ,CACpC,IAAIe,EAAY,CAAA,EACZkE,EAAa,CAAA,EACjB,SAASC,EAAU1K,EAAM,CACrByK,EAAW,KAAKzK,CAAI,EACpBxG,EAAI,WAAW,KAAKwG,EAAMmE,EAAI3K,EAAI,MAAOgM,EAAQe,CAAS,CAAA,CAE9D,SAASoE,GAAU,CACf,IAAI3K,EAAOyK,EAAW,IAAA,EACtBjR,EAAI,WAAW,KAAKwG,EAAMmE,EAAI3K,EAAI,IAAKgM,EAAQe,CAAS,CAAA,CAE5D,SAASqE,EAAW5K,EAAM,CACtBxG,EAAI,WAAW,KAAKwG,EAAMmE,EAAI3K,EAAI,UAAWgM,EAAQe,CAAS,CAAA,CAElE,SAASsE,EAAYtM,EAAOwB,EAAQ0K,EAAY,CAIvClM,IACDA,EAAQ,CAAA,GAEQ,OAAOA,EAAM,OAA7B,MACAA,EAAQ,CAACA,CAAK,GAElB,QAAS1E,EAAE,EAAGA,EAAE0E,EAAM,OAAQ1E,IAAK,CAC/B,IAAImG,EAAOzB,EAAM1E,CAAC,EACdsK,EAAG,OAAO,SAASnE,CAAI,IAAM,OAG7BD,GAAUoE,EAAG,OAAO,SAASnE,CAAI,IAAM,SACvCxG,EAAI,KAAK,YAAY,KAAK2K,EAAIpE,EAAQlG,EAAGmG,CAAI,EAC7CA,EAAOmE,EAAG,OAAO,SAASpE,CAAM,EAAElG,CAAC,GAEnCsK,EAAG,OAAO,cAAcA,EAAG,OAAO,SAASnE,CAAI,CAAC,GAChD0K,EAAS1K,CAAI,EACb6K,EAAW1G,EAAG,OAAO,SAASnE,CAAI,EAAGA,CAAgB,EACrD2K,EAAA,GAEAC,EAAU5K,CAAI,EAClB,CACJ,CAEJ,OAAO6K,CACX,EAGArR,EAAI,OAAO,UAAU,gBAAkB,SAAUgR,EAAYhF,EAAQ,CACjE,GAAK,KAAK,OAAO,aAAagF,CAAU,EAGxC,KAAIrE,EAAU3M,EAAI,YAAY,KAAMgM,CAAM,EACtCY,EACgB,OAAOoE,EAAW,OAAlC,IACApE,EAASoE,EAETpE,EAASoE,EAAW,CAAC,EAEzBrE,EAAQC,CAAM,EAClB,EAGA5M,EAAI,OAAO,UAAU,mBAAqB,UAAY,CAClD,IAAIsR,EAAOnM,EAAYa,EASnBsL,EAAQ,CAAA,EACZA,EAAM,KAAO,KAAK,OAAO,SAAS,KAAK,OAAO,OAAO,EACrDnM,EAAa,KAAK,OAAO,WAAW,KAAK,OAAO,OAAO,EACvD,IAAKa,KAAYb,EACTA,EAAW,eAAea,CAAQ,GAElChG,EAAI,WAAWgG,CAAQ,EAAE,KAAKsL,EAAO,KAAMnM,EAAWa,CAAQ,CAAC,CAG3E,EAEAhG,EAAI,OAAO,UAAU,QAAU,SAAUuR,EAAMC,EAAMC,EAAQC,EAAQC,EAAMC,EAAoB,CACvFL,GAAQA,EAAK,MAAM,OAAO,GAAKA,IAASA,EAAK,gBAC7CvR,EAAI,MAAM,2CAA2CuR,CAAI,EACzDA,EAAOA,EAAK,YAAA,GAEhB,IAAI9Q,EACAmR,EACAnR,EAAO,KAAK,IAAI,gBAAgB,EAAE,CAAC,EAEnCA,EAAO,KAAK,IAAI,KAEpB,IAAIF,EAAMP,EAAI,OAAO,SAASA,EAAI,MAAO,KAAK,OAAOS,CAAI,EAAE,MAAO8Q,EAAMC,EAAMC,EAAQC,CAAM,EAE5F,MAAI,CAACnR,GAAOgR,IAAS,oBACjBhR,EAAM,KAGN,OAAOA,EAAQ,MACXoR,IAAS3R,EAAI,OACbA,EAAI,MAAM,2BAA8BuR,EAAO,mBAAoB,EAC5DI,IAAS3R,EAAI,WACpBO,EAAM,KAGVA,IACA,KAAK,IAAI,qBAAuB,IAE7BA,CACX,EAEAP,EAAI,OAAO,UAAU,QAAU,SAAUwR,EAAMI,EAAoB,CAC/D,IAAInR,EAMJ,OALImR,EACAnR,EAAO,KAAK,IAAI,gBAAgB,EAEhCA,EAAO,KAAK,IAAI,KAEhB,KAAK,OAAOA,CAAI,EAAE,MAAM+Q,CAAI,EACrB,KAAK,OAAO/Q,CAAI,EAAE,MAAM+Q,CAAI,EAE5B,EAEf,EAEAxR,EAAI,OAAO,UAAU,OAAS,SAAU6R,EAAK,CACzC,OAAoB,OAAO,KAAK,OAAO,KAAK,IAAI,IAAI,EAAE,KAAKA,CAAG,EAA1D,IACO,KAAK,OAAO,KAAK,IAAI,IAAI,EAAE,KAAKA,CAAG,EAEnC,EAEf,EAIA7R,EAAI,OAAO,UAAU,YAAc,SAAUkB,EAAM4Q,EAASN,EAAMC,EAAQ,CACtE,OAAOzR,EAAI,OAAO,SAASA,EAAI,MAAOkB,EAAM4Q,EAASN,EAAMC,CAAM,CACrE,EAEAzR,EAAI,OAAO,UAAU,WAAa,SAAU+R,EAAW5L,EAAU,CAC7D,OAAoB,OAAO4L,EAAvB,IACO,EAEAA,EAAU5L,CAAQ,CAEjC,EAEAnG,EAAI,OAAO,SAAW,SAAU2R,EAAMK,EAAMT,EAAMC,EAAMC,EAAQC,EAAQ,CACpE,IAAInR,EAAK0R,EAAOC,EAAGlN,EAAKC,EAAKkN,EAE7B,GADA5R,EAAM,GACc,OAAOyR,EAAKT,CAAI,EAAhC,IACA,GAAII,IAAS3R,EAAI,OACbA,EAAI,MAAM,4BAA+BuR,EAAO,mBAAoB,MAEpE,QAkBR,IAfIG,GAAUM,EAAKT,CAAI,EAAEG,CAAM,EAC3BS,EAAWH,EAAKT,CAAI,EAAEG,CAAM,EAE5BS,EAAWH,EAAKT,CAAI,EAExBU,EAAQ,CAAA,EACJT,IAAS,SACTS,EAAQ,CAAC,SAAU,OAAO,EACnBT,IAAS,aAChBS,EAAQ,CAAC,aAAc,MAAM,EACtBT,IAAS,SAChBS,EAAQ,CAACT,CAAI,GAEjBS,EAAQA,EAAM,OAAO,CAAC,MAAM,CAAC,EAC7BhN,EAAMgN,EAAM,OACPjN,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAE5B,GADAkN,EAAID,EAAMjN,CAAG,EACI,OAAOmN,GAApB,UAA6C,OAAOA,GAApB,SAChC5R,EAAM4R,UACiB,OAAOA,EAASD,CAAC,EAAjC,IAAoC,CAC1B,OAAOC,EAASD,CAAC,GAA9B,UAAgD,OAAOC,EAASD,CAAC,GAA9B,SACnC3R,EAAM4R,EAASD,CAAC,EAEC,OAAOT,GAApB,SACAlR,EAAM4R,EAASD,CAAC,EAAET,CAAM,EAExBlR,EAAM4R,EAASD,CAAC,EAAE,CAAC,EAG3B,KAAA,CAGR,OAAO3R,CACX,EAEAP,EAAI,OAAO,UAAU,oBAAsB,UAAY,CACnD,IAAIoS,EAAMpN,EAAKC,EAGf,IADAA,EAAMjF,EAAI,MAAM,OACXgF,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAAG,CAE/BoN,EAAOpS,EAAI,MAAMgF,CAAG,EACpB,IAAIqN,EAAS,KAAKD,CAAI,EAAE,OACxB,KAAK,mBAAmBC,CAAM,CAAA,CAElC,YAAK,QAAUrS,EAAI,QACZ,KAAK,KAChB,EAEAA,EAAI,OAAO,UAAU,mBAAqB,SAAUqS,EAAQ,CACxD,IAAIC,EAAkBtO,EAAOuO,EAAWzD,EAAM1D,EAAMoH,EAAOnH,EAAMoH,EAGjE,IAFAH,EAAmB,CAAC,OAAQ,QAAS,KAAK,EAC1CjH,EAAOgH,EAAO,OAAS,EAClBjH,EAAOC,EAAMD,EAAO,GAAIA,GAAQ,GAAI,CAOrC,GANApH,EAAQqO,EAAOjH,CAAI,EAGJpH,EAAM,OAAjB,QAAyBhE,EAAI,MAAQgE,EAAM,YAC3CuO,EAAY,CAAA,GAEIvO,EAAM,OAAtB,aAA8BA,EAAM,QAAQ,KAE5C,IADAyO,EAAQH,EAAiB,OACpBE,EAAQ,EAAGA,EAAQC,EAAOD,GAAS,EACpC1D,EAAOwD,EAAiBE,CAAK,EACzB1D,IAAS9K,EAAM,QAAQ,MACvBuO,EAAU,KAAKvO,EAAM,QAAQ,IAAI,EAI9BA,EAAM,OAAjB,QAAyBhE,EAAI,QAAUgE,EAAM,YAC7CuO,EAAU,QAAA,EACVvO,EAAM,UAAYuO,GAEtBvO,EAAM,KAAQoH,EAAO,EACjBpH,EAAM,MAAQhE,EAAI,KAAKgE,EAAM,IAAI,EAAE,WACnChE,EAAI,KAAKgE,EAAM,IAAI,EAAE,UAAU,KAAKA,EAAO,KAAMoH,CAAI,CACzD,CAER,EAEApL,EAAI,OAAO,UAAU,aAAe,SAAU0S,EAAK,CAE/C,QADInS,EAAM,CAAA,EACD,EAAI,EAAGD,EAAOoS,EAAI,OAAQ,EAAIpS,EAAM,GAAK,EAC9CC,EAAI,KAAK,KAAK,YAAY,GAAKmS,EAAI,CAAC,CAAC,CAAC,EAE1C,OAAOnS,CACX,EAEAP,EAAI,UAAY,EAKhBA,EAAI,OAAO,UAAU,aAAe,SAAU2S,EAAI,CAC9C,IAAIzR,EAAMD,EAAGZ,EAEb,GAAI,CAAC,KAAK,IAAI,cAAcsS,CAAE,EAC1B,KAAK,IAAI,cAAcA,CAAE,EAAI,OAE7B,QAAO,KAAK,SAAS,QAAQA,CAAE,EAGnC,GAAI,KAAK,IAAI,uBAAuB,kCAClB,OAAO,KAAK,IAAI,uBAAuB,kCAArD,UAAuF,CAEvF,QAAStS,EAAE,EAAEC,EAAK,KAAK,IAAI,gBAAgB,EAAE,OAAQD,EAAEC,EAAMD,GAAG,EAC5D,KAAK,IAAI,gBAAgB,EAAEA,CAAC,EAAI,KAAK,IAAI,gBAAgB,EAAEA,CAAC,EAAE,YAAA,EAElE,QAASA,EAAE,EAAEC,EAAK,KAAK,IAAI,iBAAiB,EAAE,OAAQD,EAAEC,EAAMD,GAAG,EAC7D,KAAK,IAAI,iBAAiB,EAAEA,CAAC,EAAI,KAAK,IAAI,iBAAiB,EAAEA,CAAC,EAAE,YAAA,EAEpE,QAASA,EAAE,EAAEC,EAAK,KAAK,IAAI,iBAAiB,EAAE,OAAQD,EAAEC,EAAMD,GAAG,EAC7D,KAAK,IAAI,iBAAiB,EAAEA,CAAC,EAAI,KAAK,IAAI,iBAAiB,EAAEA,CAAC,EAAE,YAAA,EAEpE,KAAK,IAAI,uBAAuB,iCAAmC,GAAA,CASvE,GALAL,EAAI,WAAa,EAEjBkB,EAAO,KAAK,MAAM,KAAK,UAAU,KAAK,IAAI,aAAa,GAAKyR,CAAE,CAAC,CAAC,EAG5D,KAAK,IAAI,uBAAuB,iCAAkC,CAClE,GAAIzR,EAAK,MAAO,CACZ,GAAIA,EAAK,MAAM,MACX,QAAS0R,KAAS1R,EAAK,MAAM,MACzB,QAASW,KAAOX,EAAK,MAAM,MAAM0R,CAAK,EAC9B/Q,IAAQA,EAAI,gBACZX,EAAK,MAAM,MAAM0R,CAAK,EAAE/Q,EAAI,aAAa,EAAIX,EAAK,MAAM,MAAM0R,CAAK,EAAE/Q,CAAG,EACxE,OAAOX,EAAK,MAAM,MAAM0R,CAAK,EAAE/Q,CAAG,GAKlD,GAAIX,EAAK,MAAM,KACX,QAAS0R,KAAS1R,EAAK,MAAM,KACzBA,EAAK,MAAM,KAAK0R,CAAK,EAAI1R,EAAK,MAAM,KAAK0R,CAAK,EAAE,YAAA,CAExD,CAEJ,QAASvS,EAAE,EAAGC,EAAKN,EAAI,eAAe,OAAQK,EAAEC,EAAMD,GAAG,EAAG,CACxD,IAAIwS,EAAQ7S,EAAI,eAAeK,CAAC,EAChC,GAAIa,EAAK2R,CAAK,GAAK3R,EAAK2R,CAAK,EAAE,MAC3B,QAAShS,EAAE,EAAGY,EAAKP,EAAK2R,CAAK,EAAE,OAAQhS,EAAEY,EAAMZ,GAAG,EAAG,CACjD,IAAIiS,EAAU5R,EAAK2R,CAAK,EAAEhS,CAAC,EAC3B,GAAIiS,EAAQ,MAAO,CACf,GAAIA,EAAQ,MAAM,KACd,QAASjR,KAAOiR,EAAQ,MAAM,KACtBjR,IAAQA,EAAI,gBACZiR,EAAQ,MAAM,KAAKjR,EAAI,aAAa,EAAIiR,EAAQ,MAAM,KAAKjR,CAAG,EAC9D,OAAOiR,EAAQ,MAAM,KAAKjR,CAAG,GAIrCiR,EAAQ,MAAM,OACdA,EAAQ,MAAM,KAAOA,EAAQ,MAAM,KAAK,YAAA,EAC5C,CACJ,CAER,CACJ,CAIJ,GAAI5R,EAAK,UAAYA,EAAK,SAAS,MAAM,MAAM,EAAG,CAE9C,IAAID,EAAIC,EAAK,SAAS,MAAM,iBAAiB,EACzCD,EAAE,CAAC,IAAM,KACTC,EAAK,eAAe,EAAID,EAAE,CAAC,EAC3BC,EAAK,wBAAwB,EAAID,EAAE,CAAC,IAEpCC,EAAK,eAAe,EAAID,EAAE,CAAC,EAC3BC,EAAK,wBAAwB,EAAID,EAAE,CAAC,GAEpC,KAAK,IAAI,aACLC,EAAK,wBAAwB,IAC7BA,EAAK,SAAWA,EAAK,wBAAwB,GAG7CA,EAAK,eAAe,IACpBA,EAAK,SAAWA,EAAK,eAAe,EAE5C,CAGJ,GAAIA,EAAK,KAAM,CACXA,EAAK,YAAY,EAAIA,EAAK,KAC1B,IAAIqD,EAAM,GAAKrD,EAAK,KAChBD,EAAIsD,EAAI,MAAM,yBAAyB,EACvCtD,EAAE,CAAC,EAAE,MAAM,EAAE,IAAM,OACnBC,EAAK,YAAY,EAAID,EAAE,CAAC,EAC5B,CAGA,KAAK,IAAI,uBAAuB,YAAcC,EAAK,MAEnDlB,EAAI,oBAAoBkB,EAAM,GAAO,KAAK,IAAI,uBAAuB,8BAA8B,EAGvG,QAASW,KAAOX,EACZ,GAAIlB,EAAI,eAAe,QAAQ6B,EAAI,QAAQ,QAAS,EAAE,CAAC,EAAI,GAAI,CAC3D,IAAIkR,EAAU7R,EAAKW,CAAG,EAClBkR,IAEI,KAAK,IAAI,uBAAuB,kBAC5BA,EAAQ,MAAQ,CAACA,EAAQ,YAAY,GAAKA,EAAQ,YAAY,EAAE,SAAW,KAC3EA,EAAU,KAAK,IAAI,WAAW,kBAAkBA,EAAQ,GAAG,GAGnE7R,EAAKW,CAAG,EAAI,KAAK,eAAekR,CAAO,EAC3C,CAGR,GAAI,KAAK,IAAI,uBAAuB,yBAC5B7R,EAAK,MAAQ,CAAC,OAAO,UAAU,cAAc,aAAa,QAAQ,EAAE,QAAQA,EAAK,IAAI,EAAI,GAAI,CAI7F,QAHI4Q,EACAkB,EAAW,CAAC,OAAQ,QAAS,eAAgB,QAAS,SAAU,iBAAiB,EACjFC,EAAiB,CAAA,EACZ5S,EAAI,EAAGC,EAAO0S,EAAS,OAAQ3S,EAAIC,EAAMD,GAAK,EACnDyR,EAAUkB,EAAS3S,CAAC,EAC5Ba,EAAK4Q,CAAO,GACfmB,EAAe,KAAK/R,EAAK4Q,CAAO,CAAC,EAG1BkB,EAAW,CAAC,gBAAiB,QAAQ,EAC9C,QAAS3S,EAAI,EAAGC,EAAK0S,EAAS,OAAQ3S,EAAIC,EAAMD,GAAK,EAEpD,GADYyR,EAAUkB,EAAS3S,CAAC,EAC5Ba,EAAK4Q,CAAO,GAAK5Q,EAAK4Q,CAAO,EAAE,KAAM,CACxC,IAAI7N,EAAQ/C,EAAK4Q,CAAO,EAAE,KAC1BmB,EAAe,KAAKhP,CAAK,EACzB,KAAA,CAGF/C,EAAK,eAAiB+R,EAAe,KAAK,IAAI,CAAA,CAG7C,GAAI,KAAK,aAAa,IAAI,uBAClB,KAAK,aAAa,IAAI,sBAAsB,QAAQ/R,EAAK,IAAI,EAAI,GAAI,CAIrE,QAHI4Q,EACAkB,EAAW,CAAC,OAAQ,kBAAmB,YAAa,SAAS,EAC7DE,EAAe,CAAA,EACV7S,EAAI,EAAGC,EAAO0S,EAAS,OAAQ3S,EAAIC,EAAMD,GAAK,EACnDyR,EAAUkB,EAAS3S,CAAC,EAC5Ba,EAAK4Q,CAAO,GACfoB,EAAa,KAAKhS,EAAK4Q,CAAO,CAAC,EAGjC5Q,EAAK,aAAegS,EAAa,KAAK,IAAI,CAAA,CAIzC,GAAI,KAAK,IAAI,uBAAuB,oBACf,OAAOhS,EAAK,WAAzB,WACAA,EAAK,UAAY,CACb,CACI,QAASA,EAAK,UACd,MAAO,CACH,KAAM,CAAA,CAAC,CACX,GAGJA,EAAK,OAASA,EAAK,MAAM,OAASA,EAAK,MAAM,MAAM,WAAW,CAC9DA,EAAK,UAAU,CAAC,EAAE,MAAM,KAAO,CAAA,EAC/B,QAASW,KAAOX,EAAK,MAAM,MAAM,UAC7BA,EAAK,UAAU,CAAC,EAAE,MAAM,KAAKW,CAAG,EAAI,CAChC,QAASX,EAAK,MAAM,MAAM,UAAUW,CAAG,EAE/C,CASZ,GAJKX,EAAK,aAAa,IACnBA,EAAK,aAAa,EAAIA,EAAK,YAG3B,KAAK,IAAI,uBAAuB,4BAA6B,CAC7D,IAAI2B,EAAoB,KAAK,IAAI,gBAAgB,EAAE,CAAC,EAAE,MAAM,EAAG,CAAC,EAAE,YAAA,IAAkB,KACpF7C,EAAI,wBAAwB,KAAK,KAAMkB,EAAM2B,CAAiB,CAAA,CAElE,IAAIsQ,EAAc,CAAC,OAAO,aAAa,cAAc,UAAU,YAAY,EAAE,QAAQjS,EAAK,IAAI,EAAI,GAC9F,KAAK,IAAI,uBAAuB,oBAAsBiS,IACjDjS,EAAK,eACNA,EAAK,aAAe,OAG5B,IAAIkS,EACJ,GAAI,CAACD,GAAejS,EAAK,OAAS,KAAK,IAAI,gBAAiB,CAEnDA,EAAK,aAGN,KAAK,IAAI,oBACRkS,EAAgB,KAAK,IAAI,oBAAoB,QAASlS,EAAK,KAAK,EAEjEkS,EAAgBlS,EAAK,MAEzB,IAAIsE,EAAe,KAAK,UAAU,iBAAiBtE,EAAK,aAAc,QAASkS,EAAelS,EAAK,QAAQ,EACvG,KAAK,UAAU,QAAQsE,CAAY,EAAE,OACjC,KAAK,UAAU,QAAQA,CAAY,EAAE,MAAM4N,CAAa,IACxDlS,EAAK,aAAa,EAAI,KAAK,UAAU,QAAQsE,CAAY,EAAE,MAAM4N,CAAa,EAEtF,CAKJ,GAHKlS,EAAK,uBAAuB,IAC7BA,EAAK,uBAAuB,EAAIA,EAAK,qBAErCA,EAAK,iBAAiB,GAAK,KAAK,IAAI,gBAAiB,CACjD,KAAK,IAAI,oBACTkS,EAAgB,KAAK,IAAI,oBAAoBlS,EAAK,iBAAiB,CAAC,EAEpEkS,EAAgBlS,EAAK,iBAAiB,EAE1C,IAAIsE,EAAe,KAAK,UAAU,iBAAiBtE,EAAK,aAAc,kBAAmBkS,EAAelS,EAAK,QAAQ,EACjH,KAAK,UAAU,QAAQsE,CAAY,EAAE,iBAAiB,GAClD,KAAK,UAAU,QAAQA,CAAY,EAAE,iBAAiB,EAAE4N,CAAa,IACrElS,EAAK,uBAAuB,EAAI,KAAK,UAAU,QAAQsE,CAAY,EAAE,iBAAiB,EAAE4N,CAAa,EAE7G,CAKJ,GAHIlS,EAAK,eACLA,EAAK,QAAUA,EAAK,aAAa,MAAM,GAAG,EAAE,CAAC,GAE7C,KAAK,SAAS,QAAQyR,CAAE,GACxB,GAAI,KAAK,UAAU,KAAK,SAAS,QAAQA,CAAE,CAAC,GAAK,KAAK,UAAUzR,CAAI,EAAG,CACnE,QAASW,KAAO,KAAK,SAAS,QAAQ8Q,CAAE,EACpC,OAAO,KAAK,SAAS,QAAQA,CAAE,EAAE9Q,CAAG,EAExC,KAAK,IAAI,eAAeX,EAAK,EAAE,EAAI,GACnC,OAAO,OAAO,KAAK,SAAS,QAAQyR,CAAE,EAAGzR,CAAI,CAAA,OAGjD,KAAK,SAAS,QAAQyR,CAAE,EAAIzR,EAEhC,OAAO,KAAK,SAAS,QAAQyR,CAAE,CACnC,EAEA3S,EAAI,OAAO,UAAU,YAAc,SAAU2S,EAAI,CAC7C,OAAO,KAAK,SAAS,QAAQA,CAAE,CACnC,EAGA3S,EAAI,OAAO,UAAU,OAAS,SAAUgE,EAAOjC,EAAMkC,EAAO,CACpDD,EAAM,OAAS,SAAWA,EAAM,OAAS,YACzC,KAAK,IAAI,oBAAoBjC,CAAI,EAAIkC,EACrC,KAAK,SAAS,IAAI,oBAAoBlC,CAAI,EAAIkC,EAC9C,KAAK,aAAa,IAAI,oBAAoBlC,CAAI,EAAIkC,GAC3C,CAAC,WAAY,cAAc,EAAE,QAAQD,EAAM,IAAI,EAAI,GAC1D,KAAKA,EAAM,IAAI,EAAE,IAAI,oBAAoBjC,CAAI,EAAIkC,EAEjDD,EAAM,QAAQjC,CAAI,EAAIkC,CAE9B,EAGAjE,EAAI,OAAO,UAAU,WAAa,SAAUgE,EAAOgC,EAAUqN,EAAYC,EAAc,CACnF,GAAoB,OAAOtP,EAAM,QAAQgC,CAAQ,EAA7C,IACA,OAAOhC,EAAM,QAAQgC,CAAQ,EAE7B,IAAIuN,EAAc,KAAK,KAAK,IAAI,IAAI,EAAE,IAAI,oBAAoBF,GAA0BrN,CAAQ,EAChG,OAAoB,OAAOuN,EAAvB,IACOA,EAEAD,CAGnB,EAEAtT,EAAI,OAAO,UAAU,qBAAuB,SAAUwT,EAAW,CAU7D,QAASnT,EAAI,EAAGC,EAAOkT,EAAU,OAAQnT,EAAIC,EAAMD,GAAK,EAAG,CACvD,IAAIa,EAAOsS,EAAUnT,CAAC,EAAE,CAAC,EACrBS,EAAO0S,EAAUnT,CAAC,EAAE,CAAC,EAEzB,GAAI,CAAC,OAAO,UAAU,cAAc,aAAa,QAAQ,EAAE,QAAQa,EAAK,IAAI,EAAI,GAAI,CAGhF,GAAIJ,EAAK,QAAS,CACdA,EAAK,QAAUA,EAAK,QAAQ,KAAA,EAC5B,IAAIG,EAAIH,EAAK,QAAQ,MAAMd,EAAI,gCAAgC,EAC1DiB,IACGH,EAAK,MACLA,EAAK,QAAUd,EAAI,+BAA+Bc,EAAK,KAAK,EAAI,IAAMA,EAAK,QAE3EA,EAAK,QAAU,MAAQA,EAAK,QAEpC,CAIJ,IAAI2S,EAAqB,KACzB,GAAIvS,EAAK,QAAS,CACdA,EAAK,QAAUA,EAAK,QAAQ,KAAA,EAC5B,IAAID,EAAIC,EAAK,QAAQ,MAAMlB,EAAI,gCAAgC,EAC1DiB,EAIDwS,EAAqBxS,EAAE,CAAC,EAAE,KAAA,GAH1BC,EAAK,QAAU,QAAUA,EAAK,QAC9BuS,EAAqB,OAGzB,CAIJ,GAAIvS,EAAK,QAGL,GAAI,CAACJ,EAAK,QACNA,EAAK,QAAUI,EAAK,YACjB,CAIH,IAAID,EAAIH,EAAK,QAAQ,MAAM,iBAAiB,EACxC4S,EAAQ,IACRzS,GACIA,EAAE,CAAC,IAAM,MAAQwS,IAAuB,OACxC3S,EAAK,QAAUG,EAAE,CAAC,GAElB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAE,QAAQH,EAAK,QAAQ,MAAM,EAAG,CAAC,CAAC,EAAI,KACxE4S,EAAQ,KAGbA,EAAQ,GAEX5S,EAAK,QAAUI,EAAK,QAAUwS,EAAQ5S,EAAK,OAAA,CAInDA,EAAK,MAAQ,EAAA,CAEjB,CAER,EAGAd,EAAI,OAAO,UAAU,gBAAkB,SAAUkB,EAAM,CAClD,GAAIA,EAAK,QACH,CAAC,OAAQ,UAAW,cAAc,aAAa,QAAQ,EAAE,QAAQA,EAAK,IAAI,EAAI,IAC9E,KAAK,IAAI,uBAAuB,yBAChC,CAAC,KAAK,IAAI,eAAe,OAAW,CAEvC,KAAK,IAAI,eAAe,OAAY,CAAA,EACpC,KAAK,IAAI,eAAe,OAAU,OAAS,CAAA,EAC3C,KAAK,IAAI,eAAe,OAAU,OAAS,EAC3C,KAAK,IAAI,eAAe,OAAU,QAAU,GAC5C,KAAK,IAAI,eAAe,OAAU,MAAQ,GAG1C,IAAI+C,EAAQ,GAAK/C,EAAK,OACtB+C,EAAQA,EAAM,MAAM,IAAI,EAAE,KAAK,EAAE,EAEjC,IAAI0P,EAAY1P,EAAM,MAAM,KAAK,EAAE,CAAC,EAChC2P,EAAa5T,EAAI,uBAAuB2T,CAAS,EACrD,GAAIC,EAAY,CAEZ,IAAIpS,EAAOyC,EAAM,MAAMjE,EAAI,0BAA0B,EACrD,GAAIwB,EAAK,OAAS,EAAG,CAGjB,QADIpB,EAAM,CAAA,EACDS,EAAE,EAAGY,EAAKD,EAAK,OAAQX,EAAIY,EAAMZ,GAAK,EAC3CT,EAAI,KAAKoB,EAAKX,CAAC,EAAE,QAAQ,OAAQ,EAAE,EAAE,QAAQ,OAAQ,EAAE,CAAC,EAG5DoD,EAAQ7D,EAAI,KAAK,GAAG,CAAA,MAEpB6D,EAAQzC,EAAK,CAAC,EAElB,KAAK,IAAI,eAAe,OAAU,MAAQoS,EAC1C,KAAK,IAAI,eAAe,OAAU,OAAO,KAAK,CAAC,OAAQ3P,EAAO,EAAK,CAAC,EACpE,KAAK,IAAI,eAAe,OAAU,QAAU,EAAA,MAE5C,KAAK,IAAI,eAAe,OAAU,OAAO,KAAK,CAAC,OAAQA,EAAO,EAAK,CAAC,EACpE,KAAK,IAAI,eAAe,OAAU,QAAU,EAChD,CAER,EAIAjE,EAAI,cAAgB,SAAU6T,EAAU,CACpC,OAAO,SAAU1T,EAAO2T,EAAM,CAC1B,OAAKA,EAIMD,EAAS,QAAQ,aAAcC,CAAI,EAHnC,EAIX,CAER,EAcA9T,EAAI,cAAgB,SAAU6T,EAAU,CACpC,OAAO,SAAUrI,EAAO,CACpB,IAAIuI,EAAYF,EAAS,QAAQ,YAAarI,CAAK,EACnD,OAAO,SAAUrL,EAAO2T,EAAM,CAC1B,OAAKA,EAIMC,EAAU,QAAQ,aAAcD,CAAI,EAHpC,EAIX,CACJ,CAER,EAOA9T,EAAI,KAAO,SAAU2R,EAAM,CACvB,IAAI3E,EAAagH,EAAQxI,EAAOY,EAAMtK,EAAKmS,EAC3CjH,EAAc,CAAA,EACdgH,EAAShU,EAAI,OAAO,QAAQ2R,CAAI,EAChC,IAAKnG,KAASwI,EACA,CAEN,GAAYxI,EAAM,MAAM,EAAG,CAAC,IAAxB,IAA2B,CAC3BwB,EAAYxB,CAAK,EAAIwI,EAAOxI,CAAK,EACjC,QAAA,CAEJY,EAAO,GACPtK,EAAMkS,EAAOxI,CAAK,EAClByI,EAAOzI,EAAM,MAAM,GAAG,EAElB,OAAO1J,GAAQ,UAAYA,EAAI,QAAQ,YAAY,EAAI,GACnDA,EAAI,QAAQ,WAAW,EAAI,GAC3BsK,EAAOpM,EAAI,cAAc8B,CAAG,EAE5BsK,EAAOpM,EAAI,cAAc8B,CAAG,EAEzB,OAAOA,GAAQ,WAAa,CAACA,EACpCsK,EAAOpM,EAAI,OAAO,WAAW,YACtB,OAAO8B,GAAQ,WACtBsK,EAAOtK,EAEP9B,EAAI,MAAM,OAAS2R,EAAO,qBAAuBnG,EAAQ,KAAO1J,CAAG,EAGnEmS,EAAK,SAAW,EAChBjH,EAAYiH,EAAK,CAAC,CAAC,EAAI7H,EAChB6H,EAAK,SAAW,IAClBjH,EAAYiH,EAAK,CAAC,CAAC,IACpBjH,EAAYiH,EAAK,CAAC,CAAC,EAAI,CAAA,GAE3BjH,EAAYiH,EAAK,CAAC,CAAC,EAAEA,EAAK,CAAC,CAAC,EAAI7H,EACpC,CAGR,OAAOY,CACX,EAgBAhN,EAAI,eAAiB,SAAUG,EAAOgF,EAAY,CAC9C,IAAI5E,EAAKsB,EAAKmD,EAEdzE,EAAM,CAAA,EACN,IAAKyE,KAAOhF,EAAI,oBACF,CACN,IAAI6B,EAAM7B,EAAI,oBAAoBgF,CAAG,EACjCG,EAAWtD,CAAG,IACdtB,EAAI,KAAK,CAACsB,EAAKsD,EAAWtD,CAAG,CAAC,CAAC,EAC/B,OAAOsD,EAAWtD,CAAG,EACzB,CAGR,OAAOtB,CACX,EAEAP,EAAI,SAAW,SAASkU,EAAQC,EAAe,CAC3C,IAAIC,EAAW,IAAI,OAAO,IAAMF,EAAS,IAAK,GAAG,EAC7CG,EAAW,IAAI,OAAOH,EAAQ,GAAG,EACrC,KAAK,MAAQ,SAAUjU,EAAK,CAEpBkU,IACAlU,EAAMkU,EAAclU,CAAG,GAE3B,IAAI2H,EAAQ3H,EAAI,MAAMmU,CAAQ,EAC9B,GAAI,CAACxM,EACD,MAAO,CACH,KAAM,CAAA,EACN,QAAS,CAAC3H,CAAG,GAIrB,QADIqU,EAAQrU,EAAI,MAAMoU,CAAQ,EACrBhU,EAAEuH,EAAM,OAAO,EAAGvH,EAAG,GAAIA,IAAK,CAC/B,OAAOuH,EAAMvH,CAAC,GAAM,WACpBuH,EAAMvH,CAAC,EAAI,IAEf,IAAIoI,EAAMb,EAAMvH,CAAC,EACboI,IAAQ,KAAQ6L,EAAMjU,EAAE,CAAC,EAAE,OAAS,IAEpCiU,EAAMjU,EAAE,CAAC,EAAIuH,EAAMvH,CAAC,EAAIiU,EAAMjU,EAAE,CAAC,EACjCuH,EAAMvH,CAAC,EAAI,GACf,CAEJ,MAAO,CACH,KAAMuH,EACN,QAAS0M,EACT,YAAaA,EAAM,MAAA,EACvB,EAEJ,KAAK,KAAO,SAAUlM,EAAK,CAEvB,QADIhI,EAAMgI,EAAI,QAAQ,MAAM,EAAE,EACrB/H,EAAE+H,EAAI,KAAK,OAAO,EAAG/H,EAAE,GAAIA,IAChCD,EAAI,KAAKgI,EAAI,KAAK/H,CAAC,CAAC,EACpBD,EAAI,KAAKgI,EAAI,QAAQ/H,CAAC,CAAC,EAE3B,OAAAD,EAAI,QAAA,EACGA,EAAI,KAAK,EAAE,CAAA,CAE1B,EAEAJ,EAAI,OAAO,UAAU,oBAAsB,SAAUuU,EAAMP,EAAQ,CAE/D,GAAIA,EAAO,CAAC,IAAM,SAAU,CACxB,IAAIQ,EAAY,GACZC,EACA,KAAK,IAAI,OAAS,WAClBA,EAAgB,CAAC,KAAK,SAAS,IAAI,kBAAkB,EAAE,OAAOF,EAAK,QAAQ,EAE3EE,EAAgBF,EAAK,SAEzB,QAASpN,EAAIsN,EAAc,OAAS,EAAGtN,EAAI,GAAIA,GAAK,GAEhD,QAASuN,EAAID,EAActN,CAAC,EAAE,OAAS,EAAGuN,EAAI,GAAIA,GAAK,GAE/CD,EAActN,CAAC,EAAEuN,CAAC,EAAE,CAAC,IAAMV,EAAO,CAAC,GAE/BS,EAActN,CAAC,EAAEuN,CAAC,EAAE,CAAC,IAAM,WAC3BF,EAAY,IAK5B,GAAI,CAACA,EACD,MAAO,EACX,CAEJ,MAAO,EACX,EAKAxU,EAAI,OAAO,UAAU,iBAAmB,SAAUkB,EAAM,CACpD,IAAIyT,EAAQ,GACRX,EAAS,KAAK,kBAAA,EACd1I,EAAS0I,EAAO,CAAC,EACjBY,EAAS,KAAK,QAAQ,YAAa,QAAS,CAAC,EAC7B,OAAOA,EAAvB,MACAA,EAAS,aAEbA,EAASA,EAAO,QAAQ,IAAK,EAAE,EAC/BA,EAASA,EAAO,MAAM,EAAG,CAAC,EAAE,cAAgBA,EAAO,MAAM,CAAC,EAC1D,QAASvU,EAAI,EAAGC,EAAON,EAAI,eAAe,OAAQK,EAAIC,EAAMD,GAAK,EAAG,CAChE,IAAIqU,EAAI1U,EAAI,eAAeK,CAAC,EAC5B,GAAIa,EAAKwT,CAAC,EAAG,CACT,IAAI/S,EAAQT,EAAKwT,CAAC,EACd/S,EAAM,OAASqS,EAAO,OACtB1I,EAAS0I,EAAOA,EAAO,OAAS,CAAC,EAEjC1I,EAAS0I,EAAOrS,EAAM,OAAS,CAAC,EAEpC,QAASd,EAAI,EAAGY,EAAOE,EAAM,OAAQd,EAAIY,GACjCZ,IAAMyK,EAAO,QAAQ,OADkBzK,GAAK,EAAG,CAInD,IAAI0E,EAAM,KAAK,WAAW,QAAQ5D,EAAMd,CAAC,EAAG,kBAAmB,EAAI,EAC/DkB,EAAOwD,EAAI,KACXxD,GAAQA,EAAK,QACb6S,EAAS7S,EAAK,OACd6S,EAASA,EAAO,QAAQ,wBAAyB,EAAE,GAE5C7S,GAAQA,EAAK,UACpB6S,EAAS7S,EAAK,SAElB,IAAId,EAAI2T,EAAO,YAAA,EAAc,MAAM,sBAAsB,EAKzD,GAJI3T,IACA2T,EAASA,EAAO,MAAM3T,EAAE,CAAC,EAAE,MAAM,GAErC2T,EAASA,EAAO,QAAQ5U,EAAI,sBAAuB,EAAE,EACjD,CAAC4U,EACD,MAEJA,EAASA,EAAO,MAAM,EAAGtJ,EAAO,QAAQzK,CAAC,CAAC,EACtC+T,EAAO,OAAS,EAChBA,EAASA,EAAO,MAAM,EAAG,CAAC,EAAE,YAAA,EAAgBA,EAAO,MAAM,CAAC,EAAE,YAAA,EACrDA,EAAO,SAAW,IACzBA,EAASA,EAAO,YAAA,GAEpBD,GAASC,CAAA,CAEb,KAAA,CACJ,CAEJ,GAAI,CAACD,GAEGzT,EAAK,MAAO,CAGZ,QAFI2T,EAAY,KAAK,OAAO,KAAK,IAAI,IAAI,EAAE,KAAK,YAAY,EACxDzU,EAAMc,EAAK,MAAM,MAAM,KAAK,EACvBb,EAAID,EAAI,OAAS,EAAGC,EAAI,GAAIA,IAC7BwU,EAAU,QAAQzU,EAAIC,CAAC,CAAC,EAAI,KAC5BD,EAAMA,EAAI,MAAM,EAAGC,CAAC,EAAE,OAAOD,EAAI,MAAMC,EAAI,CAAC,CAAC,GAGrD,IAAIJ,EAAMG,EAAI,KAAK,EAAE,EACrBH,EAAMA,EAAI,MAAM,EAAG+T,EAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,EACnC/T,EAAI,OAAS,EACbA,EAAMA,EAAI,MAAM,EAAG,CAAC,EAAE,YAAA,EAAgBA,EAAI,MAAM,CAAC,EAAE,YAAA,EAC5CA,EAAI,SAAW,IACtBA,EAAMA,EAAI,YAAA,GAEd0U,EAAQ1U,CAAA,CAGhB,IAAI6U,EAAO,OACX,OAAI5T,EAAK,QACDA,EAAK,OAAO,OACZ4T,EAAO,GAAK5T,EAAK,OAAO,MAGhC4T,EAAOA,EAAK,MAAOxJ,EAAO,KAAO,EAAG,EACpCqJ,EAAQA,EAAQG,EACTH,CACX,EAEA3U,EAAI,OAAO,UAAU,kBAAoB,UAAY,CACjD,IAAIgU,EAAS,CAAA,EACTe,EAAO,KAAK,IAAI,SAAS,MAAM,GAAG,GAClC,CAAC,KAAK,IAAI,UAAY,KAAK,IAAI,SAAS,MAAM,EAAE,CAAC,IAAM,MACvD/U,EAAI,MAAM,4BAA4B,KAAK,IAAI,QAAQ,EAE3D,QAAS,EAAI,EAAGM,EAAOyU,EAAK,OAAQ,EAAIzU,EAAM,GAAK,EAAG,CAGlD,QAFIL,EAAM8U,EAAK,CAAC,EACZzJ,EAAS,CAAC,QAAQ,CAAA,EAAI,KAAK,CAAA,EACtBzK,EAAI,EAAGY,EAAOxB,EAAI,OAAQY,EAAIY,EAAMZ,GAAK,EAC9C,OAAQZ,EAAI,MAAMY,EAAEA,EAAE,CAAC,EAAA,CACvB,IAAK,IACDyK,EAAO,QAAQ,KAAK,CAAC,EACrB,MACJ,IAAK,IACDA,EAAO,QAAQA,EAAO,QAAQ,OAAS,CAAC,GAAK,EAC7C,MACJ,IAAK,IACDA,EAAO,MAAQ,EACf,MACJ,QACItL,EAAI,MAAM,6CAA6C,KAAK,IAAI,QAAQ,CAAA,CAGhFgU,EAAO,KAAK1I,CAAM,CAAA,CAEtB,OAAO0I,CACX,EAIAhU,EAAI,OAAO,UAAU,gBAAkB,SAAU2R,EAAM,CACnD,KAAK,IAAI,KAAOA,EAChB,KAAK,IAAI,SAAW3R,EAAI,KAAK2R,CAAI,EAC5B,KAAK,OAAOA,CAAI,IACjB,KAAK,OAAOA,CAAI,EAAI,CAAA,EACpB,KAAK,OAAOA,CAAI,EAAE,IAAM,CAAA,EAEhC,EAEA3R,EAAI,OAAO,UAAU,YAAc,UAAY,CAC3C,OAAO,SAAU8K,EAAEC,EAAG,CAGlB,OAFAD,EAAIA,EAAE,MAAM,GAAG,EACfC,EAAIA,EAAE,MAAM,GAAG,EACXD,EAAE,OAASC,EAAE,OACN,EACAD,EAAE,OAASC,EAAE,OACb,IAEPD,EAAIA,EAAE,MAAM,EAAE,EAAE,CAAC,EACjBC,EAAIA,EAAE,MAAM,EAAE,EAAE,CAAC,EACbD,EAAE,OAASC,EAAE,OACN,EACAD,EAAE,OAASC,EAAE,OACb,GAEA,EAEf,CAER,EAEA/K,EAAI,OAAO,UAAU,sBAAwB,SAAUgV,EAAM,CACzD,IAAI3U,EAAGC,EACP,GAAI0U,EAEA,IADA,KAAK,IAAI,aAAa,EAAI,CAAA,EACrB3U,EAAI,EAAGC,EAAO0U,EAAK,OAAQ3U,EAAIC,EAAMD,GAAK,EAC3C,KAAK,IAAI,aAAa,EAAE,KAAK2U,EAAK3U,CAAC,CAAC,EAG5C,KAAK,IAAI,aAAa,EAAE,KAAK,KAAK,aAAa,CACnD,EAEAL,EAAI,OAAO,UAAU,iCAAmC,SAAUgV,EAAM,CACpE,IAAI3U,EAAGC,EAEP,GADA,KAAK,IAAI,iBAAiB,EAAI,CAAA,EAC1B0U,EACA,IAAK3U,EAAI,EAAGC,EAAO0U,EAAK,OAAQ3U,EAAIC,EAAMD,GAAK,EAC3C,KAAK,IAAI,iBAAiB,EAAE,KAAK2U,EAAK3U,CAAC,CAAC,EAGhD,KAAK,IAAI,iBAAiB,EAAE,KAAK,KAAK,aAAa,CACvD,EAEAL,EAAI,OAAO,UAAU,6BAA+B,SAAUgV,EAAM,CAChE,IAAI3U,EAAGC,EAEP,GADA,KAAK,IAAI,iBAAiB,EAAI,CAAA,EAC1B0U,EACA,IAAK3U,EAAI,EAAGC,EAAO0U,EAAK,OAAQ3U,EAAIC,EAAMD,GAAK,EAC3C,KAAK,IAAI,iBAAiB,EAAE,KAAK2U,EAAK3U,CAAC,CAAC,EAGhD,KAAK,IAAI,iBAAiB,EAAE,KAAK,KAAK,aAAa,CACvD,EAEAL,EAAI,OAAO,UAAU,qBAAuB,SAAUoI,EAAK6M,EAAM,CAC7D,IAAIC,EAAM,KAAK,IAAI,iBAAiB,EAC/BD,IACDA,EAAO,SAAUpT,EAAK,CAClB,OAAOA,EAAI,YAAA,CAAY,GAK/B,QAFIkB,EAAW,CAAC,UAAW,eAAgB,SAAU,WAAY,aAAc,QAAQ,EAE9E1C,EAAI,EAAGC,EAAOyC,EAAS,OAAQ1C,EAAIC,EAAMD,GAAK,EAAG,CACtD,IAAI8U,EAAgBF,EAAKlS,EAAS1C,CAAC,CAAC,EAChC+U,EAAkBrS,EAAS1C,CAAC,EAAE,YAAA,EAClC,GAAK+H,EAAI+M,CAAa,EAQtB,SADIE,EAAc,CAAA,EACXjN,EAAI+M,CAAa,EAAE,OAAS,GAC/BE,EAAY,KAAKjN,EAAI+M,CAAa,EAAE,KAAK,EAE7C,IAAIG,EAAU,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAA,EAI1C,IAHID,EAAY,SAAW,GAAKC,EAAQD,EAAY,CAAC,CAAC,EAAIC,EAAQD,EAAY,CAAC,CAAC,GAC5EA,EAAY,QAAA,EAETA,EAAY,QACfjN,EAAI+M,CAAa,EAAE,KAAKE,EAAY,KAAK,EAM7C,QADIjV,EAAM8U,EAAIE,CAAe,EACtBhV,EAAI,QACPA,EAAI,IAAA,EAER,QAASS,EAAI,EAAGY,EAAO2G,EAAI+M,CAAa,EAAE,OAAQtU,EAAIY,EAAMZ,GAAK,EAC7DT,EAAI,KAAKgI,EAAI+M,CAAa,EAAEtU,CAAC,CAAC,EAClC,CAER,EAEAb,EAAI,OAAO,UAAU,2BAA6B,SAAUuV,EAAW,CACnE,GAAIA,GAAaA,EAAU,SAAW,GAAI,CAMtC,QALIC,EAAU,KAAK,IAAI,YACnBC,EAAQ,EACRC,EAAW,CAAC,UAAW,eAAgB,SAAU,WAAY,aAAc,QAAQ,EACnFzD,EAAQ,CAAC,WAAY,OAAQ,WAAY,UAAU,EACnDhO,EACK5D,EAAI,EAAGC,EAAOoV,EAAS,OAAQrV,EAAIC,EAAMD,GAAK,EACnD,QAASQ,EAAI,EAAGY,EAAOwQ,EAAM,OAAQpR,EAAIY,EAAMZ,GAAK,EAChDoD,EAAQ,GACHwR,EAAQ,IAAO,EACZ,CAACD,EAAQE,EAASrV,CAAC,CAAC,EAAE,UAAU4R,EAAMpR,CAAC,CAAC,EAAE,QACvC,CAAC2U,EAAQE,EAASrV,CAAC,CAAC,EAAE,UAAU4R,EAAMpR,CAAC,CAAC,EAAE,SAE7CoD,EAAQsR,EAAUE,CAAK,EAAIF,EAAUE,CAAK,EAAI,GAC9CD,EAAQE,EAASrV,CAAC,CAAC,EAAE,UAAY4R,EAAMpR,CAAC,CAAC,EAAE,OAASoD,EACpDA,EAAQsR,EAAUE,CAAK,EAAIF,EAAUE,EAAQ,CAAC,EAAI,GAClDD,EAAQE,EAASrV,CAAC,CAAC,EAAE,UAAY4R,EAAMpR,CAAC,CAAC,EAAE,OAASoD,IAGxDA,EAAQsR,EAAUE,CAAK,EAAIF,EAAUE,CAAK,EAAI,GAC9CD,EAAQE,EAASrV,CAAC,CAAC,EAAE,UAAY4R,EAAMpR,CAAC,CAAC,EAAE,OAASoD,EACpDA,EAAQsR,EAAUE,CAAK,EAAIF,EAAUE,EAAQ,CAAC,EAAI,GAClDD,EAAQE,EAASrV,CAAC,CAAC,EAAE,UAAY4R,EAAMpR,CAAC,CAAC,EAAE,OAASoD,GAExDwR,GAAS,EAGjB,KAAK,IAAI,YAAcD,CAAA,CAE/B,EAEAxV,EAAI,OAAO,UAAU,6BAA+B,SAAU6R,EAAK,CAC3DA,EACA,KAAK,IAAI,uBAAuB,EAAI,GAEpC,KAAK,IAAI,uBAAuB,EAAI,EAE5C,EAEA7R,EAAI,OAAO,UAAU,iBAAmB,SAAU6R,EAAK,CAC/C,KAAK,IAAI,kBACT,KAAK,IAAI,iBAAiBA,CAAG,CAErC,EAEA7R,EAAI,OAAO,UAAU,+BAAiC,SAAU6R,EAAK,CACjE,KAAK,SAAS,IAAI,4BAA8B,CAAC,CAACA,CACtD,EAIA7R,EAAI,OAAS,CAAA,EAKbA,EAAI,OAAO,MAAQ,SAAUG,EAAO,CAChC,KAAK,UAAY,CAAC,KAAK,EACvB,KAAK,MAAQA,EACb,KAAK,MAAQ,CAAA,EACb,KAAK,MAAQ,IAAIH,EAAI,MAAM,OAAO,EAClC,IAAI2V,EAAa,CAAA,EACjBA,EAAW,MAAQ,KAAK,MACxB,KAAK,QAAU,IAAI3V,EAAI,MAAM2V,CAAU,EACvC,KAAK,QAAU,IAAI3V,EAAI,MAAM,KAAK,KAAK,CAC3C,EAOAA,EAAI,OAAO,MAAM,UAAU,IAAM,UAAY,CAGzC,IAAI4V,EAAO,KAAK,QAAQ,MAAA,EACxB,OAAIA,EAAK,OACEA,EAAK,IAAA,EAELA,EAAK,MAAM,IAAA,CAE1B,EAEA5V,EAAI,OAAO,MAAM,UAAU,SAAW,SAAU+B,EAAM,CAClD,IAAIxB,EAAM,KAAK,QAAQ,MAAA,EAAQwB,CAAI,EACnC,OAAOxB,CACX,EAEAP,EAAI,OAAO,MAAM,UAAU,kBAAoB,SAAU6V,EAAMC,EAAU,CACrE,IAAIC,EAAYC,EAAgBzV,EAAKsB,EAIrC,GAHAkU,EAAa,KAAK,QAAQ,MAAA,EAAQF,CAAI,EACtCG,EAAiB,KAAK,QAAQ,MAAA,EAAQF,CAAQ,EAC9CvV,EAAMwV,EACFC,EAAgB,CACXD,IACDA,EAAa,IAAI/V,EAAI,MAAM6V,EAAM7V,EAAI,SAAS,EAC9C+V,EAAW,YAAc,CAAA,GAE7BxV,EAAM,IAAIP,EAAI,MAAM6V,EAAM7V,EAAI,SAAS,EACvC,IAAI6B,EAAM,GACV,QAASA,KAAOkU,EAAW,QACnBA,EAAW,QAAQ,eAAelU,CAAG,IACrCtB,EAAI,QAAQsB,CAAG,EAAIkU,EAAW,QAAQlU,CAAG,GAGjD,QAASA,KAAOmU,EAAe,QACvBA,EAAe,QAAQ,eAAenU,CAAG,IACzCtB,EAAI,QAAQsB,CAAG,EAAImU,EAAe,QAAQnU,CAAG,GAGrDtB,EAAI,YAAcwV,EAAW,YAAY,OAAOC,EAAe,WAAW,CAAA,CAE9E,OAAOzV,CACX,EAGAP,EAAI,OAAO,MAAM,UAAU,SAAW,SAAU+B,EAAM+T,EAAU9R,EAAO,CACnE,IAAIiS,EAAQ7P,EAKZ,GAJA6P,EAAS,IAAIjW,EAAI,MAAM,QAAQ,EACd,OAAOgE,GAApB,WACAA,EAAQ,KAAK,QAAQ,MAAA,EAAQA,CAAK,GAElCA,GAASA,EAAM,QAAS,CACxB,IAAKoC,KAAQpC,EAAM,QACXA,EAAM,QAAQ,eAAeoC,CAAI,IACjC6P,EAAO,QAAQ7P,CAAI,EAAIpC,EAAM,QAAQoC,CAAI,GAGjD6P,EAAO,YAAcjS,EAAM,WAAA,CAGd,OAAO8R,GAApB,WACAG,EAAO,QAAQ,UAAYH,GAE/B,KAAK,QAAQ,QAAQ/T,CAAI,EAAIkU,CACjC,EAKAjW,EAAI,OAAO,MAAM,UAAU,YAAc,SAAU2V,EAAY,CACtDA,IACDA,EAAa,CAAA,GAEjBA,EAAW,MAAQ,KAAK,MACxB,KAAK,QAAQ,KAAKA,CAAU,CAChC,EAGA3V,EAAI,OAAO,MAAM,UAAU,WAAa,UAAY,CAChD,KAAK,QAAQ,IAAA,CACjB,EAEAA,EAAI,OAAO,MAAM,UAAU,SAAW,SAAU+B,EAAMiC,EAAO,CACzD,IAAI2R,EAAa,CAAA,EACb,KAAK,MAAM,IAAI,uBAAuB,GAAK,KAAK,MAAM,IAAI,YAC1D3R,EAAQ,KAAK,MACbjC,EAAO,SAEX4T,EAAW5T,CAAI,EAAIiC,EACnB,KAAK,YAAY2R,CAAU,EAC3B,KAAK,UAAU5T,CAAI,CACvB,EAEA/B,EAAI,OAAO,MAAM,UAAU,OAAS,SAAU+B,EAAM,CAChD,KAAK,WAAWA,CAAI,EACpB,KAAK,WAAA,CACT,EAOA/B,EAAI,OAAO,MAAM,UAAU,UAAY,SAAUgE,EAAO,CACpD,IAAIuQ,EAAM2B,EACO,OAAOlS,GAApB,SAEAuQ,EAAO,IAAIvU,EAAI,KAAK,OAAWgE,CAAK,EACb,OAAOA,EAAvB,IACPuQ,EAAO,IAAIvU,EAAI,KAAK,OAAW,KAAK,QAAQ,MAAA,EAAQ,MAAO,OAAO,IAE9D,CAAC,KAAK,QAAQ,MAAA,GAAW,CAAC,KAAK,QAAQ,QAAQgE,CAAK,IACpDhE,EAAI,MAAM,0DAA6DgE,EAAQ,GAAI,EAGvFuQ,EAAO,IAAIvU,EAAI,KAAK,OAAW,KAAK,QAAQ,MAAA,EAAQgE,CAAK,EAAGA,CAAK,GAErEkS,EAAO,KAAK,QAAQ,MAAA,EAChB,CAAC,KAAK,MAAM,IAAI,cAAgB,KAAK,mBACrC3B,EAAK,QAAQ,OAAS,KAAK,iBAAiB,OAAOA,EAAK,QAAQ,MAAM,GAE1E2B,EAAK,KAAK3B,CAAI,EACd,KAAK,QAAQ,KAAKA,CAAI,CAC1B,EAKAvU,EAAI,OAAO,MAAM,UAAU,WAAa,SAAU+B,EAAM,CAOhDA,GAAQA,IAAS,KAAK,QAAQ,MAAA,EAAQ,WACtC/B,EAAI,MAAM,iCAAmC+B,EAAO,cAAgB,KAAK,QAAQ,MAAA,EAAQ,SAAS,EAEtG,IAAIwS,EAAO,KAAK,QAAQ,IAAA,EACpB,CAAC,KAAK,MAAM,IAAI,cAAgB,KAAK,mBACrCA,EAAK,QAAQ,OAAS,KAAK,iBAAiB,OAAOA,EAAK,QAAQ,MAAM,EAE9E,EAOAvU,EAAI,OAAO,MAAM,UAAU,OAAS,SAAUC,EAAKkW,EAASC,EAAYC,EAAmBC,EAAgB,CACvG,IAAItS,EAAOuQ,EAAM2B,EACbK,EAAU,GAOd,GANIH,IACAC,EAAoB,IAKpB,KAAK,MAAM,IAAI,uBAAuB,GAAK,CAACD,EAAY,CACxD,GAAID,IAAY,kBACZ,MAAO,GAEPA,IAAY,oBACZA,EAAU,QACd,CAQJ,GANoB,OAAOlW,EAAvB,MAGa,OAAOA,GAApB,WACAA,EAAM,GAAKA,GAEX,CAACmW,GACE,KAAK,MAAM,IAAI,eACf,KAAK,MAAM,IAAI,cAAc,MAAA,IAAY,eAE5C,MAAO,GAiEX,GA/DA7B,EAAO,GACF4B,EAEMA,IAAY,WACnBnS,EAAQ,GACRuS,EAAU,IACU,OAAOJ,GAApB,SACPnS,EAAQ,KAAK,QAAQ,MAAA,EAAQmS,CAAO,EAEpCnS,EAAQmS,EAPRnS,EAAQ,KAAK,QAAQ,MAAA,EAAQ,MAS5BA,GACDhE,EAAI,MAAM,mDAAqDmW,CAAO,EAKtEnS,EAAM,SAA2B,OAAOA,EAAM,QAAQ,UAArC,MACjBA,EAAM,QAAQ,UAAY,IAEb,OAAO/D,GAApB,UAA2BA,EAAI,SAI/BA,EAAMA,EAAI,QAAQ,mBAAoB,KAAU,EAAE,QAAQ,WAAY,IAAc,EAEpF,KAAK,mBAAqBA,EAAI,MAAM,EAAE,EAGtCA,EAAMA,EAAI,QAAQ,QAAS,IAAK,EAC3BmW,IAEDnW,EAAMA,EAAI,QAAQ,MAAO,IAAK,GAI7BoW,EAGMD,IACP,KAAK,MAAM,IAAI,sBAAwB,KAHvC,KAAK,MAAM,IAAI,iBAAmB,GAClC,KAAK,MAAM,IAAI,oBAAsB,KAK7C7B,EAAO,IAAIvU,EAAI,KAAKC,EAAK+D,CAAK,EAC9BkS,EAAO,KAAK,QAAQ,MAAA,EACA,OAAOA,EAAvB,KAA+B,KAAK,QAAQ,QAAQ,SAAW,IAG/D,KAAK,QAAQ,QAAQ,KAAK,CAAA,CAAE,EAC5BA,EAAO,KAAK,QAAQ,MAAA,GAEP,OAAO3B,EAAK,OAAzB,WACK8B,EAGMD,IACP,KAAK,MAAM,IAAI,sBAAwB,KAHvC,KAAK,MAAM,IAAI,iBAAmB,GAClC,KAAK,MAAM,IAAI,oBAAsB,KAS5B,OAAOnW,GAApB,SAAyB,CACzB,GAAiB,OAAOsU,EAAK,OAAzB,UACIA,EAAK,MAAM,MAAM,EAAG,CAAC,IAAM,IAAK,CAGhC,QAFIiC,EAAa,GACbC,EAAYlC,EAAK,MACdvU,EAAI,qBAAqB,QAAQyW,EAAU,MAAM,EAAG,CAAC,CAAC,EAAI,IAC7DD,EAAaA,EAAaC,EAAU,MAAM,EAAG,CAAC,EAC9CA,EAAYA,EAAU,MAAM,CAAC,EAE7BA,GAAaD,IACbjC,EAAK,QAAQ,OAASA,EAAK,QAAQ,OAASiC,EAC5CjC,EAAK,MAAQkC,EACjB,CAGJlC,EAAK,QAAQ,WAAW,IASxBA,EAAK,MAAQvU,EAAI,OAAO,WAAWuU,EAAK,QAAQ,WAAW,CAAC,EAAE,KAAK,MAAOtU,CAAG,GAE7E,KAAK,MAAM,IAAI,eAAiB,CAACqW,IACjC/B,EAAK,MAAQA,EAAK,MAAM,QAAQ,gBAAiB,IAAI,GAEzD,QAASlU,EAAIkU,EAAK,YAAY,OAAS,EAAGlU,EAAI,GAAIA,GAAK,GAC/CkU,EAAK,YAAYlU,CAAC,EAAE,CAAC,IAAM,WAAakU,EAAK,YAAYlU,CAAC,EAAE,CAAC,IAAM,UACnEkU,EAAK,qBAAuB,KAAK,MAAM,OAAO,sBAAsB,GAEnEA,EAAK,MAAM,MAAMvU,EAAI,iBAAiB,GACnCuU,EAAK,YAAYlU,CAAC,EAAE,CAAC,IAAM,gBAC3BkU,EAAK,YAAcA,EAAK,YAAY,MAAM,EAAGlU,CAAC,EAAE,OAAOkU,EAAK,YAAY,MAAMlU,EAAI,CAAC,CAAC,GAShG6V,EAAK,KAAK3B,CAAI,EACd,KAAK,MAAM,IAAI,YAAY,YAAYA,CAAI,CAAA,MACpCgC,EACPL,EAAK,KAAK3B,CAAI,EAEd2B,EAAK,KAAKjW,CAAG,EAEjB,MAAO,EACX,EAEAD,EAAI,OAAO,MAAM,UAAU,OAAS,SAAUG,EAAOuW,EAASnC,EAAM,CAChE,IAAIlU,EAAGC,EAAMO,EAAGY,EAAMsJ,EAKlB4L,EAAU3W,EAAI,cAAc,KAAK,KAAK,EACtC4W,EAAQF,EAAQ,MAAA,EAChBnW,EAAM,CAAA,EAEV,GAAIqW,EAAM,SAAW,EACjB,OAAOrW,EAGX,IAAIsW,EAAiB,GACjBtC,EACAsC,EAAiBtC,EAAK,QAAQ,WAG9BpU,EAAM,IAAI,wBAA0B,GACpCA,EAAM,IAAI,kBAAoB,GAG9BoU,GAAQA,EAAK,aACbA,EAAK,WAAapU,EAAM,IAAI,KAC5BA,EAAM,IAAI,KAAOoU,EAAK,YAI1B,QADIuC,EAAQC,EAAYC,EAAYhD,EAC3B3T,EAAI,EAAGC,EAAOsW,EAAM,OAAQvW,EAAIC,EAAMD,GAAK,EAAG,CASnD,GARAyW,EAASF,EAAMvW,CAAC,EAEZyW,EAAO,QAAQ,aAGf3W,EAAM,IAAI,wBAA0B2W,EAAO,QAAQ,YAGtC,OAAOA,EAAO,OAA3B,UACA,GAAiB,OAAOA,EAAO,KAA3B,SACAvW,EAAI,KAAKuW,CAAM,UACRA,EAAO,MAAO,CACjBA,EAAO,WACPA,EAAO,MAAQA,EAAO,SAAWA,EAAO,MACxCA,EAAO,SAAW,IAItB/L,EAAI4L,EAAQG,EAAO,KAAK,EACxB,IAAIG,EAAOlM,EAAE,OAEb,GAAI,CAAC5K,EAAM,IAAI,qBACX,IAAKU,EAAI,EAAGY,EAAOqV,EAAO,YAAY,OAAQjW,EAAIY,EAAMZ,GAAK,EACzDmT,EAAS8C,EAAO,YAAYjW,CAAC,EACzBmT,EAAO,CAAC,IAAM,YAGd7T,EAAM,oBAAoB2W,EAAQ9C,CAAM,IAG5CjJ,EAAI5K,EAAM,IAAI,SAAS6T,EAAO,CAAC,CAAC,EAAEA,EAAO,CAAC,CAAC,EAAE,KAAK8C,EAAQ3W,EAAO4K,EAAGiJ,EAAO,CAAC,CAAC,IAQrF,GAAIjJ,GAAKA,EAAE,OAAQ,CAEf,GADAA,EAAI4L,EAAQG,EAAO,QAAQ,MAAM,EAAI/L,EAAI4L,EAAQG,EAAO,QAAQ,MAAM,EAClE3W,EAAM,IAAI,uBAAuB,4BAA8B,CAACA,EAAM,IAAI,qBAC1E,IAAKU,EAAI,EAAGY,EAAOqV,EAAO,YAAY,OAAQjW,EAAIY,EAAMZ,GAAK,EACzDmT,EAAS8C,EAAO,YAAYjW,CAAC,EAEzBmT,EAAO,CAAC,IAAM,YACdjJ,EAAI5K,EAAM,IAAI,SAAS6T,EAAO,CAAC,CAAC,EAAEA,EAAO,CAAC,CAAC,EAAE,KAAK8C,EAAQ3W,EAAO4K,EAAGiJ,EAAO,CAAC,CAAC,GAIzFzT,EAAI,KAAKwK,CAAC,EACN5K,EAAM,IAAI,0BACVA,EAAM,IAAI,mBAAsB8W,EAAOH,EAAO,QAAQ,OAAO,OAASA,EAAO,QAAQ,OAAO,OAChG,CACJ,UAEGA,EAAO,MAAM,OAAQ,CAC5B,IAAII,EAAW/W,EAAM,OAAO,OAAOA,EAAO2W,EAAO,MAAOA,CAAM,EAC9D,GAAIvC,GAEiB2C,IAAb,UAAyBA,EAAS,OAAS,GAAKJ,EAAO,QAAQ,UAE/D,QADIK,EAAa,GACRtW,EAAE,EAAEY,EAAKyV,EAAS,OAAOrW,EAAEY,EAAKZ,IACpB,OAAOqW,EAASrW,CAAC,GAA9B,SACAsW,EAAa,GACNA,IACPD,EAASrW,CAAC,EAAKiW,EAAO,QAAQ,UAAYI,EAASrW,CAAC,GAKpEN,EAAMA,EAAI,OAAO2W,CAAQ,CAAA,CAEzBJ,EAAO,QAAQ,YAAc3W,EAAM,SAAS,SAAS2W,EAAO,QAAQ,UAAU,IAE9E3W,EAAM,SAAS,SAAS2W,EAAO,QAAQ,UAAU,EAAE,OAAS3W,EAAM,IAAI,kBACtEA,EAAM,IAAI,wBAA0B,GACxC,CAIJ,IAAKE,EAAE,EAAEC,EAAKC,EAAI,OAAS,EAAEF,EAAEC,EAAKD,GAAG,EAClB,OAAOE,EAAIF,CAAC,EAAE,KAA3B,UAA+C,OAAOE,EAAIF,EAAE,CAAC,EAAE,KAA7B,UAAoC,CAACE,EAAIF,EAAE,CAAC,EAAE,+BAEhFE,EAAIF,CAAC,EAAE,QAAQ,OAASE,EAAIF,CAAC,EAAE,QAAQ,QAAUwW,GAAkC,IACnFtW,EAAIF,EAAE,CAAC,EAAE,iBAAmB,GAC5BE,EAAIF,EAAE,CAAC,EAAE,6BAA+B,IAKhD,QADI+W,EAAa,EACR/W,EAAI,EAAGC,EAAOC,EAAI,OAAQF,EAAIC,EAAMD,GAAK,EAC7B,OAAOE,EAAIF,CAAC,GAAzB,WACA+W,EAAc,SAAS/W,EAAG,EAAE,EAAI,EAC5BA,EAAIE,EAAI,OAAS,GAAmB,OAAOA,EAAIF,EAAI,CAAC,GAA7B,WACnBwW,GAAkB,CAACtW,EAAIF,EAAI,CAAC,EAAE,+BAC9BE,EAAIF,CAAC,GAAKsW,EAAQE,CAAc,GAGpCtW,EAAIF,EAAI,CAAC,EAAE,6BAA+B,KAWtD,GAAIkU,IAASA,EAAK,YAAY,QAAUA,EAAK,QAAQ,QACjD6C,EAAa7W,EAAI,eACVgU,GAAQA,EAAK,QAAQ,QAC5B,QAASlU,EAAE,EAAEC,EAAKC,EAAI,OAAOF,EAAEC,EAAKD,IAChC,GAAoB,OAAOE,EAAIF,CAAC,EAAE,IAA9B,IAAmC,CACnC+W,EAAa/W,EACTA,IAAM,IACNE,EAAIF,CAAC,EAAE,QAAQ,OAASkU,EAAK,QAAQ,OAAShU,EAAIF,CAAC,EAAE,QAAQ,QAEjE,KAAA,EAKZ,IAAIgX,EAAclX,EAAM,OAAO,YAAYI,EAAI,MAAM,EAAG6W,CAAU,EAAGP,EAAgB,GAAOtC,CAAI,EAChG,GAAI8C,GAAe9C,IAASA,EAAK,YAAY,QAAUA,EAAK,QAAQ,QAAUA,EAAK,QAAQ,QAAS,CAChG,GAAI,CAACpU,EAAM,IAAI,qBACX,QAASE,EAAI,EAAGC,EAAOiU,EAAK,YAAY,OAAQlU,EAAIC,EAAMD,GAAK,EAC3D2T,EAASO,EAAK,YAAYlU,CAAC,EACvB,GAAC,QAAQ,gBAAiB,WAAY,SAAS,EAAE,QAAQ2T,EAAO,CAAC,CAAC,EAAI,MAGtE7T,EAAM,oBAAoB2W,EAAQ9C,CAAM,GAGvCA,EAAO,CAAC,GACI,OAAOqD,GAApB,WACAA,EAAclX,EAAM,IAAI,SAAS6T,EAAO,CAAC,CAAC,EAAEA,EAAO,CAAC,CAAC,EAAE,KAAKO,EAAMpU,EAAOkX,EAAarD,EAAO,CAAC,CAAC,IAiB3G,GAVAjJ,EAAIsM,EACJN,EAAaxC,EAAK,QAAQ,OACtBxJ,GAAKA,EAAE,SACPiM,EAAazC,EAAK,QAAQ,OAC1BxJ,EAAI4L,EAAQK,CAAU,EAAIjM,EAAI4L,EAAQI,CAAU,EAC5C5W,EAAM,IAAI,0BACVA,EAAM,IAAI,mBAAsB6W,EAAW,OAASD,EAAW,SAGvEM,EAActM,EACV,CAAC5K,EAAM,IAAI,qBACX,QAASE,EAAI,EAAGC,EAAOiU,EAAK,YAAY,OAAQlU,EAAIC,EAAMD,GAAK,EAC3D2T,EAASO,EAAK,YAAYlU,CAAC,EACvB,CAAC,QAAQ,gBAAiB,WAAY,SAAS,EAAE,QAAQ2T,EAAO,CAAC,CAAC,IAAM,IAG3D,OAAOqD,GAApB,WACAA,EAAclX,EAAM,IAAI,SAAS6T,EAAO,CAAC,CAAC,EAAEA,EAAO,CAAC,CAAC,EAAE,KAAKO,EAAMpU,EAAOkX,EAAarD,EAAO,CAAC,CAAC,EAG3G,CAGJ,IAAIsD,EAAY/W,EAAI,MAAM6W,EAAY7W,EAAI,MAAM,EAChD,MAAI,CAAC+W,EAAU,QAAUD,EACrB9W,EAAM,CAAC8W,CAAW,EACXC,EAAU,QAAU,CAACD,EAC5B9W,EAAM+W,EACCD,GAAeC,EAAU,SAChC/W,EAAM,CAAC8W,CAAW,EAAE,OAAOC,CAAS,GAKpB,OAAO/C,EAAvB,KACA,KAAK,MAAQ,CAAA,EACb,KAAK,QAAQ,QAAU,CAAA,EACvB,KAAK,QAAQ,QAAQ,KAAK,KAAK,KAAK,EAChCpU,EAAM,IAAI,uBACVI,EAAMJ,EAAM,OAAO,YAAYI,EAAK,OAAW,EAAK,IAEnC,OAAOgU,GAArB,YACPhU,EAAMJ,EAAM,OAAO,YAAYI,EAAK,OAAW,EAAI,GAGnDgU,GAAQA,EAAK,aACbpU,EAAM,IAAI,KAAOoU,EAAK,YAKnBhU,CACX,EAEAP,EAAI,OAAO,MAAM,UAAU,WAAa,UAAY,CAChD,IAAIuU,EAAMvP,EAAKC,EAGf,IAFAsP,EAAO,KAAK,QAAQ,MAAA,EACpBtP,EAAMsP,EAAK,MAAM,OACZvP,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAC5BuP,EAAK,MAAM,IAAA,CAEnB,EAEAvU,EAAI,OAAO,MAAM,UAAU,YAAc,SAAU4W,EAAO7H,EAAOwI,EAAShR,EAAQ,CAC9E,IAAIpG,EAAOI,EAAoBiX,EAAWjD,EAAMvP,EAAKC,EAAKmG,EAAMC,EAAMpL,EAAK+T,EAAQ2C,EAUnF,GATAA,EAAU3W,EAAI,cAAc,KAAK,KAAK,EACjC+O,IACDA,EAAQ,IAEZ5O,EAAQ,KAAK,MACbI,EAAM,GAENiX,EAAY,GACZvS,EAAM2R,EAAM,OACR,KAAK,MAAM,IAAI,OAAS,YAAc,CAAC,KAAK,MAAM,IAAI,cAAgB3R,IAAQ,GAAK,OAAO2R,EAAM,CAAC,GAAM,UAAYrQ,EACnH,OAAAqQ,EAAM,CAAC,EAAE,QAAQ,OAASrQ,EAAO,QAAQ,OAASqQ,EAAM,CAAC,EAAE,QAAQ,OACnEA,EAAM,CAAC,EAAE,QAAQ,OAASA,EAAM,CAAC,EAAE,QAAQ,OAASrQ,EAAO,QAAQ,OACnEqQ,EAAM,CAAC,EAAE,YAAcA,EAAM,CAAC,EAAE,YAAY,OAAOrQ,EAAO,WAAW,EACrEqQ,EAAM,CAAC,EAAE,OAASrQ,EAAO,OAClBqQ,EAAM,CAAC,EAElB,IAAIjU,EAAQ,GACZ,IAAKqC,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EACxB4R,EAAM5R,CAAG,EAAE,WACX4R,EAAM5R,CAAG,EAAE,UAAU4R,EAAM5R,EAAM,CAAC,EAAErC,CAAK,EACzCA,EAAQ,IACDiU,EAAM5R,EAAI,CAAC,GAAK4R,EAAM5R,EAAI,CAAC,EAAE,cACpCrC,EAAQ,GAGRA,EAAQ,GAMhB,IAAI8U,EAAO,GACX,IAAKzS,EAAM4R,EAAM,OAAS,EAAG5R,EAAM,EAAGA,GAAO,GACrC4R,EAAM5R,CAAG,EAAE,UACPyS,GAAQb,EAAM5R,CAAG,EAAE,UAAU4R,EAAM5R,EAAM,CAAC,CAAC,IAC3CyS,EAAO,IAGXA,EAAO,GAIf,IADAxS,EAAM2R,EAAM,OACP5R,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAK5B,GAJAuP,EAAOqC,EAAM5R,CAAG,EACZzE,IACAiX,EAAYzI,GAEC,OAAOwF,GAApB,SACAhU,GAAOoW,EAAQa,CAAS,EAIxBjX,GAAOgU,EACHpU,EAAM,IAAI,0BAEVA,EAAM,IAAI,mBAAsBqX,EAAU,gBAEvCD,EAGHhX,EACAA,EAAM,CAACA,EAAKgU,CAAI,EAEhBhU,EAAM,CAACgU,CAAI,UAERA,EAAK,SAAWvU,EAAI,SAAU,CACjCuU,EAAK,SACLtU,EAAMsU,EAAK,SAAWA,EAAK,IAE3BtU,EAAMsU,EAAK,UAAU,OAAOA,EAAK,IAAKA,EAAK,MAAM,EAGrD,IAAImD,EAASzX,EAAI,QAAQ,WAAY,EAAE,EAAE,OAEzC,KAAK,OAAOA,EAAK,QAAS,EAAI,EAC9B,IAAI0X,EAAW,KAAK,IAAA,EAChBC,EAA0BzX,EAAM,IAAI,wBASxC,GARAF,EAAM,KAAK,OAAOE,EAAO,CAACwX,CAAQ,EAAG,EAAK,EAC1CxX,EAAM,IAAI,wBAA0ByX,EAChCrD,EAAK,QAAQ,WAAW,IACxBtU,EAAMD,EAAI,OAAO,WAAWuU,EAAK,QAAQ,WAAW,CAAC,EAAE,KAAK,MAAOtU,CAAG,GAEtEA,GAAO,KAAK,MAAM,IAAI,gBACtBA,EAAMA,EAAI,QAAQ,gBAAiB,IAAI,GAEvC,CAACE,EAAM,IAAI,qBAEX,IADAkL,EAAOkJ,EAAK,YAAY,OACnBnJ,EAAO,EAAGA,EAAOC,EAAMD,GAAQ,EAChC4I,EAASO,EAAK,YAAYnJ,CAAI,EAC1B,CAAAjL,EAAM,oBAAoBoU,EAAMP,CAAM,IAG1C/T,EAAME,EAAM,IAAI,SAAS6T,EAAO,CAAC,CAAC,EAAEA,EAAO,CAAC,CAAC,EAAE,KAAKO,EAAMpU,EAAOF,EAAK+T,EAAO,CAAC,CAAC,GAGvF/T,EAAM0W,EAAQpC,EAAK,QAAQ,MAAM,EAAItU,EAAM0W,EAAQpC,EAAK,QAAQ,MAAM,EACtE,IAAIsD,EAAQ,GACRtD,EAAK,SAAWvU,EAAI,IAEpB6X,EAAQlB,EAAQpC,EAAK,YAAY,EAC1BA,EAAK,SAAWvU,EAAI,UAE3B6X,EAAQlB,EAAQpC,EAAK,gBAAgB,EAC9BA,EAAK,SAAWvU,EAAI,MAEvBgF,EAAM,GAAK,CAACuP,EAAK,uBACjBsD,EAAQlB,EAAQpC,EAAK,aAAa,EAElCsD,EAAQ,GAELtD,EAAK,SAAWvU,EAAI,OAK3B6X,EAAQlB,EAAQpC,EAAK,aAAa,GAEtChU,GAAOsX,EACPtX,GAAON,EACHE,EAAM,IAAI,0BACVA,EAAM,IAAI,mBAAsB0X,EAAM,OAAStD,EAAK,QAAQ,OAAO,OAASmD,EAASnD,EAAK,QAAQ,OAAO,OAC7G,CAGR,OAAOhU,CACX,EAEAP,EAAI,OAAO,MAAM,gBAAkB,SAAUuG,EAAQ,CAEjD,GAAI,EAAa,OAAOA,GAApB,UAA2C,OAAOA,EAAO,OAA3B,UAAoC,CAACA,EAAO,MAAM,QAIpF,QAASlG,EAAEkG,EAAO,MAAM,OAAO,EAAElG,EAAE,GAAGA,IAAK,CACvCL,EAAI,OAAO,MAAM,gBAAgBuG,EAAO,MAAMlG,CAAC,CAAC,EAChD,IAAIwJ,EAAQtD,EAAO,MAAMlG,CAAC,EAC1B,GAAI,CAACwJ,GAAS,CAACA,EAAM,OAAS,CAACA,EAAM,MAAM,OAAQ,CAE/C,QADIiO,EAAM,CAAA,EACFvR,EAAO,MAAM,OAAO,EAAKlG,GAC7ByX,EAAI,KAAKvR,EAAO,MAAM,IAAA,CAAK,EAG/B,IADAA,EAAO,MAAM,IAAA,EACNuR,EAAI,QACPvR,EAAO,MAAM,KAAKuR,EAAI,IAAA,CAAK,CAC/B,CACJ,CAGR,EAOA9X,EAAI,OAAO,MAAM,OAAS,SAAU+X,EAAc,CAE9C,IAAIC,EAAa,CACb,IAAK,GACL,IAAK,IAGLC,EAAc,CACd,IAAK,GACL,IAAK,GACL,IAAK,IAGLC,EAAW,CACX,IAAK,CACD,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,MAET,IAAK,CACD,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,MAET,IAAK,CACD,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,MAET,IAAK,CACD,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,MAET,IAAK,CACD,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,MAET,IAAK,CACD,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,GAAA,GAITC,EAAU,CAAA,EACVC,EAAW,CAAA,EACXC,EAAQ,CAAA,EACRC,EAAiB,CAAA,EACrB,QAASzW,KAAOqW,EACZG,EAAMxW,CAAG,EAAI,GACbyW,EAAezW,CAAG,EAAI,GACjBmW,EAAWnW,CAAG,IACfsW,EAAQtW,CAAG,EAAI,IAEdoW,EAAYpW,CAAG,IAChBuW,EAASvW,CAAG,EAAI,IAGxByW,EAAe,GAAG,EAAI,GACtBA,EAAe,GAAG,EAAI,GAEtB,IAAIC,EAAW,CAAA,EACf,QAAS1W,KAAOqW,EACZ,QAASM,KAAUN,EAASrW,CAAG,EACtB0W,EAASC,CAAM,IAChBD,EAASC,CAAM,EAAI,CAAA,GAEvBD,EAASC,CAAM,EAAE3W,CAAG,EAAIqW,EAASrW,CAAG,EAAE2W,CAAM,EAIpD,SAASC,EAAalE,EAAM,CACxB,OAAqB,OAAOA,EAAK,KAAzB,UAAiCA,EAAK,OAASA,EAAK,MAAM,SAAW,GAAkB,OAAOA,EAAK,MAAM,CAAC,EAAE,KAAlC,QAAkC,CAGxH,SAASmE,EAAiBnE,EAAM,CAC5B,GAAiB,OAAOA,EAAK,KAAzB,SACA,MAAO,GAEX,GAAI,CAACA,EAAK,OAAuB,OAAOA,EAAK,OAA1B,SACf,MAAO,GAEX,GAAImE,EAAiBnE,EAAK,MAAMA,EAAK,MAAM,OAAO,CAAC,CAAC,EAChD,MAAO,EACX,CAGJ,SAASoE,EAAmBpE,EAAKqE,EAAe,CAC5C,IAAIrY,EAAM,GACNsY,EAAY,CAAC,cAAc,gBAAgB,eAAe,mBAAmB,iBAAiB,EAIlG,GAHID,GACAC,EAAU,KAAK,SAAS,EAExBtE,EAAK,aACL,QAASlU,EAAE,EAAEC,EAAKiU,EAAK,YAAY,OAAOlU,EAAEC,EAAKD,IAC7C,GAAIwY,EAAU,QAAQtE,EAAK,YAAYlU,CAAC,EAAE,CAAC,CAAC,EAAI,GAAI,CAChDE,EAAM,GACN,KAAA,EAIZ,OAAOA,CAAA,CAGX,SAASuY,EAAwBvE,EAAM,CACnC,GAAIA,EAAK,aACL,QAASlU,EAAE,EAAEC,EAAKiU,EAAK,YAAY,OAAOlU,EAAEC,EAAKD,IAC7C,GAAIkU,EAAK,YAAYlU,CAAC,EAAE,CAAC,IAAM,WAAakU,EAAK,YAAYlU,CAAC,EAAE,CAAC,IAAM,QACnE,MAAO,GAInB,OAAiB,OAAOkU,EAAK,OAAzB,SACO,GAEJuE,EAAwBvE,EAAK,MAAMA,EAAK,MAAM,OAAO,CAAC,CAAC,CAAA,CAOlE,SAASwE,EAAoCC,EAAWzE,EAAM,CAC1D,IAAI0E,EAAY1E,EAAK,QAAQ,OAAO,MAAM,EAAE,EACxC,CAAC0E,GAA0B,OAAO1E,EAAK,OAAzB,WACd0E,EAAY1E,EAAK,MAAM,MAAM,EAAE,GAEnC,IAAI2E,EAAcX,EAASS,CAAU,EAAEC,CAAS,EAChD,OAAIC,GAAeA,EAAY,SAAW,EAC/B,GAEM,OAAO3E,EAAK,OAAzB,SACO,GAEP,EAAAwE,EAAoCC,EAAWzE,EAAK,MAAMA,EAAK,MAAM,OAAO,CAAC,CAAC,CAG3E,CAGX,SAAS4E,EAAc5E,EAAM6E,EAAK,CAC9B,GAAI,CAACf,EAAMe,CAAG,EACV,MAAO,GAEX,GAAiB,OAAO7E,EAAK,OAAzB,SAEA,OAAIA,EAAK,MAAM,MAAM,EAAE,IAAM6E,EAM7B,IAAIvP,EAAQ0K,EAAK,MAAMA,EAAK,MAAM,OAAO,CAAC,EAC1C,GAAI1K,EAAO,CACP,IAAIoP,EAAYpP,EAAM,QAAQ,OAAO,MAAM,EAAE,EAC7C,OAAKoP,EAEMpP,EAAM,QAAQ,OAAO,MAAM,EAAE,GAAKuP,EADlCD,EAActP,EAAMuP,CAAG,CAKlC,KAEA,OAAO,EAEf,CAGJ,SAASC,EAAYC,EAAOC,EAAOC,EAAQC,EAAQC,EAAa,CAC5D,IAAIC,EAA2BJ,IAAZ,QAAoBD,EAAQA,EAAM,QACjDM,EAA4BH,IAAZ,QAAqBD,EAAQA,EAAO,QACpDK,EAAYF,EAAaJ,CAAK,EAAE,MAAM,EAAE,EACxCO,EAAaF,EAAcH,CAAM,EAAE,MAAM,EAAE,CAAC,EAChD,SAASM,GAAa,CAClBH,EAAcH,CAAM,EAAIG,EAAcH,CAAM,EAAE,MAAM,CAAC,CAAA,CAEzD,SAASO,GAAY,CACjBL,EAAaJ,CAAK,EAAII,EAAaJ,CAAK,EAAE,MAAM,EAAE,EAAE,CAAA,CAExD,SAASU,EAAUb,EAAK,CACpBQ,EAAcH,CAAM,EAAIL,EAAMQ,EAAcH,CAAM,CAAA,CAEtD,SAASS,EAASd,EAAK,CACnBO,EAAaJ,CAAK,GAAKH,CAAA,CAE3B,IAAIe,EAAOT,EAAcM,EAAWD,EACpC,SAASK,GAAgB,CACrB,OAAO7B,EAASuB,CAAU,CAAA,CAE9B,SAASO,GAAe,CACpB,OAAOnC,EAAS2B,CAAS,CAAA,CAE7B,IAAIjS,EAAQ8R,EAAcW,EAAcD,EACxC,SAASE,GAAgB,CACrB,IAAIlB,EAAMlB,EAAS2B,CAAS,EAAEC,CAAU,EACvB,OAAOV,GAApB,UACAY,EAAA,EACAD,EAAA,EACAE,EAASb,CAAG,IAEZa,EAASJ,CAAS,EAClBG,EAAA,EACJ,CAEJ,SAASO,GAAe,CACpB,IAAInB,EAAMb,EAASuB,CAAU,EAAED,CAAS,EACvB,OAAOT,GAApB,UACAY,EAAA,EACAD,EAAA,EACAG,EAAQd,CAAG,IAEXc,EAAQJ,CAAU,EAClBC,EAAA,EACJ,CAEJ,IAAIS,EAAQd,EAAcY,EAAcC,EAEpCE,EAAcZ,IAAcC,EAC5BW,EACAN,EAAA,EAEIvS,KACA4S,EAAA,CAER,CAGJ,SAASE,EAAQnU,EAAQ,CAGrB,GAAIA,EAAO,OAAqB,OAAOA,EAAO,OAA1B,SAAiC,CAC7C8R,EAAM9R,EAAO,QAAQ,OAAO,MAAM,EAAE,CAAC,CAAC,GACnCA,EAAO,QAAQ,OAAO,MAAM,EAAE,CAAC,IAAMA,EAAO,MAAM,MAAM,EAAE,IAE7DA,EAAO,QAAQ,OAASA,EAAO,QAAQ,OAAO,MAAM,CAAC,GAEzD,MAAA,SACoB,OAAOA,GAApB,UAA2C,OAAOA,EAAO,OAA3B,UAAoC,CAACA,EAAO,MAAM,OACvF,OAKJ,QADIoU,EAAoBhC,EAAmBpS,EAAO,EAAI,EAC7ClG,EAAEkG,EAAO,MAAM,OAAO,EAAElG,EAAE,GAAGA,IAAK,CACvC,KAAK,OAAOkG,EAAO,MAAMlG,CAAC,CAAC,EAC3B,IAAIua,EAAgBrU,EAAO,QACvBsU,EAAetU,EAAO,MAAMlG,CAAC,EAAE,QACnC,GAAIA,IAAM,EAAG,CAEGua,EAAc,OAAO,MAAM,EAAE,IAArC,KAAkDC,EAAa,OAAO,MAAM,EAAG,CAAC,IAAtC,MAC1CA,EAAa,OAASA,EAAa,OAAO,MAAM,CAAC,GAGrD,IAAI5B,EAAY4B,EAAa,OAAO,MAAM,EAAG,CAAC,EAC1C,CAACF,GAAqBrC,EAAeW,CAAS,GAAK,CAAC2B,EAAc,SAClEA,EAAc,QAAU3B,EACxB4B,EAAa,OAASA,EAAa,OAAO,MAAM,CAAC,EACrD,CAEJ,GAAIxa,IAAOkG,EAAO,MAAM,OAAS,EAAI,CAEjC,IAAI0S,EAAY4B,EAAa,OAAO,MAAM,EAAE,EAExC,CAACF,GAAqB,CAAC,GAAG,EAAE,QAAQ1B,CAAS,EAAI,KAC7C2B,EAAc,OAAO,MAAM,EAAE,CAAC,IAAM3B,IACpC2B,EAAc,OAAS3B,EAAY2B,EAAc,QAErDC,EAAa,OAASA,EAAa,OAAO,MAAM,EAAG,EAAE,EACzD,CAEAD,EAAc,WAAava,EAAI,GAE3BiY,EAAesC,EAAc,UAAU,MAAM,EAAE,CAAC,GAC7CA,EAAc,UAAU,MAAM,EAAE,IAAMC,EAAa,OAAO,MAAM,EAAG,CAAC,IAEvEA,EAAa,OAASA,EAAa,OAAO,MAAM,CAAC,EAEzD,CAEJ,CAIJ,SAASC,EAAUvU,EAAQ,CAEvB,GAAI,EAAa,OAAOA,GAApB,UAA2C,OAAOA,EAAO,OAA3B,UAAoC,CAACA,EAAO,MAAM,SAIpF,QAASlG,EAAEkG,EAAO,MAAM,OAAO,EAAElG,EAAE,GAAGA,IAalC,GAZA,KAAK,SAASkG,EAAO,MAAMlG,CAAC,CAAC,EAYxBA,EAAIkG,EAAO,MAAM,OAAQ,GAAM,CAACA,EAAO,QAAQ,UAAW,CAG3D,IAAIsD,EAAQtD,EAAO,MAAMlG,CAAC,EACtB4Y,EAAYpP,EAAM,QAAQ,OAAO,MAAM,EAAE,EACzCkR,EAAUxU,EAAO,MAAMlG,EAAE,CAAC,EAC1B2a,EAAcD,EAAQ,QAAQ,OAAO,MAAM,EAAG,CAAC,EAC/CE,EAAiBtC,EAAmB9O,CAAK,GAAK8O,EAAmBoC,CAAO,EACxEG,EAAyB,OAAOjC,GAApB,UAA8C,OAAO+B,GAApB,SAEjD,GAAI,CAACC,GAAkB,CAACC,GAAa7C,EAAM2C,CAAW,GAAK,CAACE,EAAW,CACnE,IAAIC,EAAuBH,IAAgBnR,EAAM,QAAQ,OAAO,MAAM,EAAE,EACpEuR,EAAuB,CAACvR,EAAM,QAAQ,QAAuB,OAAOA,EAAM,OAA1B,UAAmCA,EAAM,MAAM,MAAM,EAAE,IAAMmR,EAC7G,CAACG,GAAwB,CAACC,EAC1B/B,EAAWxP,EAAO,SAAUkR,EAAS,QAAQ,EAG7CA,EAAQ,QAAQ,OAASA,EAAQ,QAAQ,OAAO,MAAM,CAAC,CAC3D,CACJ,EAER,CAGJ,SAASM,EAAU9U,EAAQ,CAGvB,GAAIA,EAAO,OAAqB,OAAOA,EAAO,OAA1B,SAAiC,CAC7C8R,EAAM9R,EAAO,QAAQ,OAAO,MAAM,EAAE,CAAC,CAAC,GACnCA,EAAO,QAAQ,OAAO,MAAM,EAAE,CAAC,IAAMA,EAAO,MAAM,MAAM,EAAE,IAE7DA,EAAO,QAAQ,OAASA,EAAO,QAAQ,OAAO,MAAM,CAAC,GAEzD,MAAA,SACoB,OAAOA,GAApB,UAA2C,OAAOA,EAAO,OAA3B,UAAoC,CAACA,EAAO,MAAM,OACvF,OASJ,QAHIqU,EAAgBrU,EAAO,QAGlBlG,EAAE,EAAEC,EAAKiG,EAAO,MAAM,OAAOlG,EAAEC,GAChC,CAAAmY,EAAalS,EAAO,MAAMlG,CAAC,CAAC,EADSA,IACzC,CAOA,GAAIua,EAAc,WAAavC,EAAMuC,EAAc,UAAU,MAAM,EAAG,CAAC,CAAC,EAAG,CAEvE,QADIU,EAAYV,EAAc,UAAU,MAAM,EAAG,CAAC,EACzCva,EAAEkG,EAAO,MAAM,OAAO,EAAElG,EAAE,GAAGA,IAAK,CACvC,IAAIwa,EAAetU,EAAO,MAAMlG,CAAC,EAAE,QAC/Bwa,EAAa,OAAO,MAAM,EAAE,IAAMS,IAClCT,EAAa,QAAUS,EAC3B,CAEJV,EAAc,UAAYA,EAAc,UAAU,MAAM,CAAC,CAAA,CAIjE,QAASva,EAAEkG,EAAO,MAAM,OAAO,EAAElG,EAAE,GAAGA,IAAK,CACvC,IAAIwJ,EAAQtD,EAAO,MAAMlG,CAAC,EACtBwa,EAAetU,EAAO,MAAMlG,CAAC,EAAE,QAC/Bkb,EAAmB5C,EAAmB9O,EAAO,EAAI,EACjD2R,EAAgB/C,EAAa5O,CAAK,EAEtC,GAAIxJ,IAAOkG,EAAO,MAAM,OAAS,EAAI,CAMI,CAKjC,IAAIyS,EAAa4B,EAAc,OAAO,MAAM,EAAG,CAAC,EAM5Ca,EAAiB,GACjBpD,EAAMW,CAAU,IAChByC,EAAiB1C,EAAoCC,EAAWnP,CAAK,EACjE,CAAC4R,GAAkB1D,IACnB0D,EAAiB3C,EAAwBjP,CAAK,IAGlD4R,GACIpD,EAAMW,CAAU,IACXN,EAAiB7O,CAAK,IACN,OAAOA,EAAM,OAA1B,SACAwP,EAAWxP,EAAO,QAAStD,EAAQ,QAAQ,EAE3C8S,EAAWxP,EAAO,SAAUtD,EAAQ,QAAQ,EAE5CqU,EAAc,OAAO,MAAM,EAAE,CAAC,IAAM,MACpCC,EAAa,QAAUD,EAAc,OAAO,MAAM,EAAE,CAAC,EACrDA,EAAc,OAASA,EAAc,OAAO,MAAM,CAAC,KAK/DC,EAAa,OAAO,MAAM,EAAE,IAAM,KAAOD,EAAc,OAAO,MAAM,EAAE,CAAC,IAAM,MAC7EA,EAAc,OAASA,EAAc,OAAO,MAAM,CAAC,GAGnDtC,EAAeuC,EAAa,OAAO,MAAM,EAAE,CAAC,CAAC,IAC5B,OAAOhR,EAAM,OAA1B,UAAmCA,EAAM,MAAM,MAAM,EAAE,IAAMgR,EAAa,OAAO,MAAM,EAAE,CAAC,IAE1FA,EAAa,OAASA,EAAa,OAAO,MAAM,CAAC,GAEjDA,EAAa,OAAO,MAAM,EAAE,IAAMD,EAAc,OAAO,MAAM,EAAG,CAAC,IAEjEA,EAAc,OAASA,EAAc,OAAO,MAAM,EAAG,EAAE,GAE/D,CAGAzB,EAAc5S,EAAOA,EAAO,QAAQ,OAAO,MAAM,EAAE,CAAC,CAAC,IACrDA,EAAO,QAAQ,OAASA,EAAO,QAAQ,OAAO,MAAM,CAAC,EACzD,SACOqU,EAAc,UAEjBtC,EAAesC,EAAc,UAAU,MAAM,EAAE,CAAC,CAAC,GAC9CA,EAAc,UAAU,MAAM,EAAG,CAAC,IAAMC,EAAa,OAAO,MAAM,EAAE,IAEvEtU,EAAO,MAAMlG,CAAC,EAAE,QAAQ,OAASkG,EAAO,MAAMlG,CAAC,EAAE,QAAQ,OAAO,MAAM,EAAG,EAAE,OAG5E,CAEH,IAAIqb,EAAiBnV,EAAO,MAAMlG,EAAE,CAAC,EAAE,QACnC,CAACoY,EAAa5O,CAAK,GAChB,CAAC0R,GACDjD,EAAeuC,EAAa,OAAO,MAAM,EAAE,CAAC,GAC5CA,EAAa,OAAO,MAAM,EAAE,IAAMa,EAAe,OAAO,MAAM,EAAG,CAAC,IAErEA,EAAe,OAASA,EAAe,OAAO,MAAM,CAAC,EACzD,CAGA,CAACF,GAAiB,CAACD,GAAoBlD,EAAMwC,EAAa,OAAO,MAAM,EAAE,CAAC,CAAC,GAC3D,OAAOhR,EAAM,OAA1B,UAEHwP,EAAWxP,EAAO,QAASA,EAAO,QAAQ,EAE9C,KAAK,SAAStD,EAAO,MAAMlG,CAAC,CAAC,CAAA,CACjC,CAoBJ,SAASsb,EAAe9R,EAAO,CAC3B,IAAIoP,EAAYpP,EAAM,QAAQ,OAAO,MAAM,EAAE,CAAC,EAC9C,GAAiB,OAAOA,EAAM,OAA1B,SACA,KAAOsO,EAAQc,CAAS,GACpBI,EAAWxP,EAAO,QAASA,EAAO,QAAQ,EAC1CoP,EAAYpP,EAAM,QAAQ,OAAO,MAAM,EAAE,CAAC,MAG9C,MAAOsO,EAAQc,CAAS,GACpBI,EAAWxP,EAAM,MAAMA,EAAM,MAAM,OAAO,CAAC,EAAG,SAAUA,EAAO,QAAQ,EACvEoP,EAAYpP,EAAM,QAAQ,OAAO,MAAM,EAAE,CAAC,CAElD,CAEJ,SAAS+R,EAAgB/R,EAAO,CAC5B,GAAiB,OAAOA,EAAM,OAA1B,SAEA,QADIoP,EAAYpP,EAAM,MAAM,MAAM,EAAE,EAC7BuO,EAASa,CAAS,GACrBI,EAAWxP,EAAO,QAASA,EAAO,SAAU,EAAI,EAChDoP,EAAYpP,EAAM,MAAM,MAAM,EAAE,MAIpC,SADIoP,EAAYpP,EAAM,MAAMA,EAAM,MAAM,OAAO,CAAC,EAAE,QAAQ,OAAO,MAAM,EAAE,EAClEuO,EAASa,CAAS,GACrBI,EAAWxP,EAAM,MAAMA,EAAM,MAAM,OAAO,CAAC,EAAG,SAAUA,EAAO,SAAU,EAAI,EAC7EoP,EAAYpP,EAAM,MAAMA,EAAM,MAAM,OAAO,CAAC,EAAE,QAAQ,OAAO,MAAM,EAAE,CAE7E,CAGJ,SAASgS,EAAKtV,EAAQ,CAElB,GAAI,EAAa,OAAOA,GAApB,UAA2C,OAAOA,EAAO,OAA3B,UAAoC,CAACA,EAAO,MAAM,QAYpF,SANIuV,EAMKzb,EAAE,EAAEC,EAAKiG,EAAO,MAAM,OAAOlG,EAAEC,EAAKD,IAAK,CAG9C,QAFIwJ,EAAQtD,EAAO,MAAMlG,CAAC,EACtB0b,EAAY,GACPlb,EAAE,EAAEY,EAAKoI,EAAM,YAAY,OAAOhJ,EAAEY,EAAKZ,IAAK,CACnD,IAAImb,EAAanS,EAAM,YAAYhJ,CAAC,EAChCmb,EAAW,CAAC,IAAM,WAAaA,EAAW,CAAC,IAAM,UACjDD,EAAY,GAChB,CAEAA,IACIhE,EACA4D,EAAc9R,CAAK,EAEnB+R,EAAe/R,CAAK,GAG5BiS,EAAW,KAAK,IAAIvV,EAAO,MAAMlG,CAAC,CAAC,EAC/BwJ,EAAM,OAAsB,OAAOA,EAAM,OAA1B,WACfiS,EAAWjS,EAAM,MAAM,MAAM,EAAE,EACnC,CAEJ,OAAOiS,EAAA,CAEX,KAAK,OAASpB,EACd,KAAK,SAAWI,EAChB,KAAK,SAAWO,EAChB,KAAK,IAAMQ,CACf,EAIA7b,EAAI,OAAO,IAAM,UAAY,CACzB,KAAK,SAAW,CACZ,OAAQ,EAAA,EAEZ,KAAK,iBAAmB,GACxB,KAAK,KAAO,OACZ,KAAK,MAAQ,CAAA,EACb,KAAK,mBAAqB,CAAA,EAC1B,KAAK,wBAA0B,CAAA,EAC/B,KAAK,oBAAsB,CAAA,EAC3B,KAAK,aAAa,EAAI,CAAA,EACtB,KAAK,iBAAiB,EAAI,CAAA,EAC1B,KAAK,iBAAiB,EAAI,CAAA,EAC1B,KAAK,YAAc,CACf,QAAQ,CACJ,cAAc,CACV,OAAO,GACP,OAAO,IAEX,kBAAkB,CACd,OAAO,GACP,OAAO,IAEX,kBAAkB,CACd,OAAO,GACP,OAAO,EAAA,GAGf,aAAa,CACT,cAAc,CACV,OAAO,GACP,OAAO,IAEX,kBAAkB,CACd,OAAO,GACP,OAAO,IAEX,kBAAkB,CACd,OAAO,GACP,OAAO,EAAA,GAGf,OAAO,CACH,cAAc,CACV,OAAO,GACP,OAAO,IAEX,kBAAkB,CACd,OAAO,GACP,OAAO,IAEX,kBAAkB,CACd,OAAO,GACP,OAAO,EAAA,GAGf,SAAS,CACL,cAAc,CACV,OAAO,GACP,OAAO,IAEX,kBAAkB,CACd,OAAO,GACP,OAAO,IAEX,kBAAkB,CACd,OAAO,GACP,OAAO,EAAA,GAGf,WAAW,CACP,cAAc,CACV,OAAO,GACP,OAAO,IAEX,kBAAkB,CACd,OAAO,GACP,OAAO,IAEX,kBAAkB,CACd,OAAO,GACP,OAAO,EAAA,GAGf,OAAO,CACH,cAAc,CACV,OAAO,GACP,OAAO,IAEX,kBAAkB,CACd,OAAO,GACP,OAAO,IAEX,kBAAkB,CACd,OAAO,GACP,OAAO,EAAA,CACX,GAGR,KAAK,gBAAgB,EAAI,CAAA,EACzB,KAAK,YAAcA,EAAI,KACvB,KAAK,SAAWA,EAAI,KACpB,KAAK,eAAiB,GAQtB,KAAK,WAAW,EAAI,EACpB,KAAK,iBAAiB,EAAI,EAC1B,KAAK,gBAAgB,EAAI,GACzB,KAAK,sBAAsB,EAAI,GAC/B,KAAK,4BAA4B,EAAI,GAErC,KAAK,8BAA8B,EAAI,mBAIvC,KAAK,aAAa,EAAI,GAGtB,KAAK,qBAAuB,GAC5B,KAAK,SAAW,8BAEhB,KAAK,UAAY,CAAA,EAEjB,KAAK,OAAS,CAAA,EACd,KAAK,iBAAiB,EAAI,CACtB,QAAQ,CAAC,MAAM,EACf,aAAa,CAAC,MAAM,EACpB,OAAO,CAAC,MAAM,EACd,SAAS,CAAC,MAAM,EAChB,WAAW,CAAC,MAAM,EAClB,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,MAAM,GAGlB,KAAK,kBAAoB,GACzB,KAAK,mCAAqC,CAAA,EAC1C,KAAK,sBAAwB,GAE7B,KAAK,uBAAyB,CAAA,EAE9B,KAAK,uBAAyB,CAAA,EAC9B,KAAK,uBAAuB,WAAa,GACzC,KAAK,uBAAuB,+BAAiC,GAC7D,KAAK,uBAAuB,0BAA4B,GACxD,KAAK,uBAAuB,oBAAsB,GAClD,KAAK,uBAAuB,iBAAmB,GAC/C,KAAK,uBAAuB,mBAAqB,GACjD,KAAK,uBAAuB,wBAA0B,GACtD,KAAK,uBAAuB,2BAA6B,GACzD,KAAK,uBAAuB,iBAAmB,GAC/C,KAAK,uBAAuB,kCAAoC,GAChE,KAAK,uBAAuB,uBAAyB,GACrD,KAAK,uBAAuB,4BAA8B,GAC1D,KAAK,uBAAuB,oBAAsB,GAClD,KAAK,uBAAuB,iCAAmC,GAC/D,KAAK,uBAAuB,yBAA2B,GACvD,KAAK,uBAAuB,uBAAyB,GACrD,KAAK,uBAAuB,wCAA0C,GACtE,KAAK,uBAAuB,iCAAmC,GAC/D,KAAK,uBAAuB,mBAAqB,GACjD,KAAK,uBAAuB,YAAc,GAC1C,KAAK,uBAAuB,6BAA+B,GAC3D,KAAK,uBAAuB,eAAiB,GAC7C,KAAK,uBAAuB,cAAgB,GAC5C,KAAK,uBAAuB,kCAAoC,GAChE,KAAK,uBAAuB,mCAAqC,GACjE,KAAK,uBAAuB,qBAAuB,GACnD,KAAK,uBAAuB,4BAA8B,GAC1D,KAAK,uBAAuB,sBAAwB,GACpD,KAAK,uBAAuB,iCAAmC,GAC/D,KAAK,uBAAuB,4BAA8B,EAC9D,EAEAA,EAAI,OAAO,IAAM,UAAY,CAOzB,KAAK,UAAY,IAAIA,EAAI,MACzB,KAAK,WAAa,IAAIA,EAAI,MAC1B,KAAK,YAAc,IAAIA,EAAI,MAK3B,KAAK,MAAQ,CAAA,EAKb,KAAK,qBAAuB,CAAA,EAK5B,KAAK,cAAgB,GAMrB,KAAK,KAAO,WACZ,KAAK,KAAO,WACZ,KAAK,UAAY,GAQjB,KAAK,eAAiB,IAAIA,EAAI,MAAM,EAAGA,EAAI,OAAO,EAKlD,KAAK,oBAAsB,GAK3B,KAAK,cAAgB,IAAIA,EAAI,MAAM,OAAO,EAG1C,KAAK,gBAAkB,EAOvB,KAAK,cAAgB,IAAIA,EAAI,MAAM,CAC/B,cAAe,GACf,iBAAkB,GAClB,iBAAkB,GAClB,WAAY,OACZ,WAAa,OACb,eAAgB,OAChB,cAAe,OACf,4BAA6B,OAC7B,UAAW,GACX,eAAgB,GAChB,UAAW,CAAA,CAAC,CACf,EAMD,KAAK,iBAAmB,GAKxB,KAAK,oBAAsB,GAI3B,KAAK,KAAO,IAAIA,EAAI,MAAM,EAAGA,EAAI,OAAO,EAIxC,KAAK,YAAc,IAAIA,EAAI,MAG3B,KAAK,iBAAmB,IAAIA,EAAI,MAGhC,KAAK,iBAAmB,GACxB,KAAK,gBAAkB,CAAA,EACvB,KAAK,gBAAkB,CAAA,EACvB,KAAK,WAAa,CAAA,EAClB,KAAK,WAAa,CAAA,EAElB,KAAK,eAAiB,CAAA,EACtB,KAAK,mBAAqB,CAAA,EAG1B,KAAK,gBAAkB,IAAIA,EAAI,MAY/B,KAAK,iBAAmB,GAKxB,KAAK,oBAAoB,EAAI,GAI7B,KAAK,qBAAuB,GAI5B,KAAK,kBAAoB,IAAIA,EAAI,YAGjC,KAAK,cAAgB,CAAA,EAIrB,KAAK,OAAS,IAAIA,EAAI,MAAM,GAAIA,EAAI,OAAO,EAI3C,KAAK,OAAS,IAAIA,EAAI,MAAM,GAAIA,EAAI,OAAO,EAI3C,KAAK,UAAY,IAAIA,EAAI,MAAM,GAAIA,EAAI,OAAO,EAG9C,KAAK,aAAe,CAAA,EACpB,KAAK,aAAe,CAChB,SAAU,GACV,aAAc,GACd,cAAe,GACf,kBAAmB,IAEvB,KAAK,cAAgB,EACrB,KAAK,eAAiB,CAAA,EACtB,KAAK,oBAAsB,EAC3B,KAAK,cAAgB,CAAA,EAYrB,KAAK,kBAAoB,EACzB,KAAK,uBAAyB,CAAA,EAC9B,KAAK,2BAA6B,CAAA,CACtC,EAGAA,EAAI,OAAO,IAAM,SAAUG,EAAO,CAG9B,KAAK,MAAQ,IAAIH,EAAI,KAAK,MAG1B,KAAK,WAAa,IAAIA,EAAI,KAAK,WAAWA,EAAI,YAAY,EAG1D,KAAK,UAAY,IAAIA,EAAI,KAAK,UAG9B,KAAK,YAAc,IAAIA,EAAI,KAAK,YAAYG,CAAK,EAGjD,KAAK,iBAAmB,IAAIH,EAAI,KAAK,eACzC,EAGAA,EAAI,OAAO,MAAQ,UAAY,CAM3B,KAAK,gBAAgB,EAAI,GAIzB,KAAK,gBAAkB,GAIvB,KAAK,SAAW,GAGhB,KAAK,KAAO,GASZ,KAAK,gBAAkB,GAIvB,KAAK,YAAc,GAKnB,KAAK,KAAO,GACZ,KAAK,gBAAkB,CAAC,EAAE,EAC1B,KAAK,WAAa,CAAC,EAAE,EAKrB,KAAK,KAAO,GACZ,KAAK,KAAO,GAGZ,KAAK,MAAQ,CAAA,EAIb,KAAK,YAAc,CAAA,EAGnB,KAAK,KAAO,GAIZ,KAAK,KAAO,GAIZ,KAAK,KAAO,WACZ,KAAK,KAAO,WACZ,KAAK,UAAY,GAQjB,KAAK,iBAAmB,IAAIA,EAAI,MAAM,EAAGA,EAAI,OAAO,EACpD,KAAK,YAAc,EACnB,KAAK,qBAAuB,EAC5B,KAAK,YAAc,GACnB,KAAK,qBAAuB,CAChC,EAGAA,EAAI,OAAO,UAAY,UAAY,CAI/B,KAAK,MAAQ,CAAA,EACb,KAAK,KAAO,CAAA,EACZ,KAAK,QAAU,CAAA,CACnB,EAGAA,EAAI,OAAO,SAAW,SAAUG,EAAO,CAKnC,KAAK,IAAM,CACP,oBAAqB,CAAA,GAGzB,KAAK,OAAS,CAAA,EAEd,KAAK,IAAM,IAAIH,EAAI,SAAS,YAAYG,EAAO,eAAe,EAI9D,KAAK,IAAI,SAAW,CAAA,EAGpB,KAAK,IAAI,wBAAwB,EAAI,GACrC,KAAK,IAAI,4BAA4B,EAAI,GACzC,KAAK,IAAI,8BAA8B,EAAI,GAC3C,KAAK,IAAI,+BAA+B,EAAI,UAC5C,KAAK,IAAI,oBAAoB,EAAI,EAEjC,KAAK,IAAI,SAAW,CAAA,EACpB,KAAK,IAAI,mBAAqB,CAAA,EAC9B,KAAK,IAAI,cAAgB,GACzB,KAAK,IAAI,cAAgB,GACzB,KAAK,IAAI,iBAAmB,GAG5B,KAAK,IAAI,aAAe,CAAA,EACxB,KAAK,IAAI,oBAAsB,EAC/B,KAAK,KAAO,UAChB,EAGAH,EAAI,OAAO,aAAe,UAAY,CAClC,KAAK,IAAM,CACP,oBAAqB,CAAA,GAEzB,KAAK,OAAS,CAAA,EAEd,KAAK,IAAI,SAAW,CAAA,EAEpB,KAAK,IAAI,SAAW,CAAA,EACpB,KAAK,IAAI,mBAAqB,CAAA,EAC9B,KAAK,IAAI,cAAgB,GACzB,KAAK,IAAI,cAAgB,GACzB,KAAK,IAAI,iBAAmB,GAC5B,KAAK,IAAI,cAAc,EAAI,EAC3B,KAAK,IAAI,eAAe,EAAI,EAG5B,KAAK,IAAI,aAAe,CAAA,EACxB,KAAK,IAAI,oBAAsB,EAC/B,KAAK,KAAO,cAChB,EAGAA,EAAI,OAAO,iBAAmB,UAAY,CACtC,KAAK,OAAS,CAAA,EACd,KAAK,IAAM,CAAA,EACX,KAAK,IAAI,gBAAkB,CAAA,EAC3B,KAAK,IAAI,SAAW,CAAA,EAIpB,KAAK,IAAI,+BAAiCA,EAAI,UAC9C,KAAK,IAAI,0BAA4B,GACrC,KAAK,IAAM,CAAA,EACX,KAAK,KAAO,CAAA,EACZ,KAAK,KAAO,cAChB,EAGAA,EAAI,OAAO,aAAe,UAAY,CAClC,KAAK,OAAS,CAAA,EACd,KAAK,IAAM,CAAA,EACX,KAAK,IAAI,gBAAkB,CAAA,EAC3B,KAAK,KAAO,CAAA,EACZ,KAAK,IAAI,SAAW,CAAA,EACpB,KAAK,KAAO,UAChB,EAEAA,EAAI,OAAO,OAAS,UAAY,CAK5B,KAAK,IAAM,CACP,oBAAqB,CAAA,GAGzB,KAAK,OAAS,CAAA,EAMd,KAAK,IAAI,SAAW,CAAA,EAGpB,KAAK,IAAI,wBAAwB,EAAI,GACrC,KAAK,IAAI,4BAA4B,EAAI,GACzC,KAAK,IAAI,8BAA8B,EAAI,GAC3C,KAAK,IAAI,+BAA+B,EAAI,UAC5C,KAAK,IAAI,oBAAoB,EAAI,EAEjC,KAAK,IAAI,SAAW,CAAA,EACpB,KAAK,IAAI,mBAAqB,CAAA,EAC9B,KAAK,IAAI,cAAgB,GACzB,KAAK,IAAI,cAAgB,GACzB,KAAK,IAAI,iBAAmB,GAG5B,KAAK,IAAI,aAAe,CAAA,EACxB,KAAK,IAAI,oBAAsB,EAC/B,KAAK,KAAO,QAChB,EAIAA,EAAI,OAAO,UAAU,uBAAyB,SAAUic,EAAUC,EAAcC,EAAeC,EAAS,CAIpG,IAAIC,EAAU,KAAK,IAAI,KACvB,KAAK,gBAAgBD,CAAO,EAE3BH,EAAS,YACZ,OAAOA,EAAS,WAEd,IAAI1b,EAAM,KAAK,uBAAuB0b,EAAUC,EAAcC,EAAenc,EAAI,OAAO,EAExF,YAAK,gBAAgBqc,CAAO,EACrB9b,EAAI,CAAC,CAChB,EAEAP,EAAI,OAAO,UAAU,sBAAwB,SAAUic,EAAU,CAG7D,QAFIC,EAAe,CAAA,EACfjX,EAAM,KAAK,SAAS,YAAY,gBAAgB,OAC3CD,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAAG,CACnC,IAAIsX,EAAI,KAAK,SAAS,YAAY,gBAAgBtX,CAAG,EACrDkX,EAAa,KAAK,CAAC,GAAKI,EAAE,WAAYA,EAAE,WAAW,SAAS,CAAC,CAAA,CAGjE,OAAO,KAAK,uBAAuBL,EAAUC,EAAc,CAAA,CAAE,EAAE,CAAC,CACpE,EAGAlc,EAAI,OAAO,UAAU,uBAAyB,SAAUic,EAAUC,EAAcC,EAAeI,EAAM,CACjG,IAAID,EAAGE,EAAaC,EAAcpc,EAAGC,EAAMO,EAAGY,EAAM0F,EAAGC,EAAMsN,EAAGgI,EAAM7a,EAAKX,EAAMJ,EAAM6b,EAAeC,EAAe3b,EAAG4b,EACxH,KAAK,MAAQ,GACb,KAAK,IAAI,cAAgB,CAAA,EAMzB,KAAK,IAAI,gBAAkB,CAAA,EAC3B,KAAK,SAAS,YAAc,CAAC,UAAa,EAAA,EAG1C,KAAK,cAAcZ,CAAQ,EAE3B,IAAIa,EACAC,EACAC,EACJ,GAAIT,IAASvc,EAAI,QAAS,CAElB,KAAK,OACLA,EAAI,MAAM,mCAAmC,EAOjD8c,EAAkB,KAAK,SAAS,YAAY,gBAAgB,MAAA,EAG5DC,EAAc,KAAK,SAAS,QAAQ,MAAA,EAcpC,QARIE,EAAkBf,EAAa,OAAOC,CAAa,EAMnDe,EAAa,CAAA,EACbC,EAAiB,CAAA,EACZ9c,EAAI,EAAGC,EAAO2c,EAAgB,OAAQ5c,EAAIC,EAAMD,GAAK,EAE1D,IADAic,EAAI,KAAK,SAAS,YAAY,aAAaW,EAAgB5c,CAAC,EAAE,CAAC,CAAC,EAC3DQ,EAAI,EAAGY,EAAO6a,EAAE,cAAc,OAAQzb,EAAIY,EAAMZ,GAAK,EACtDqc,EAAWZ,EAAE,cAAczb,CAAC,EAAE,EAAE,EAAI,GACpCsc,EAAe,KAAK,GAAKb,EAAE,cAAczb,CAAC,EAAE,EAAE,EAGtD,IAAKA,EAAI,EAAGY,EAAOwa,EAAS,cAAc,OAAQpb,EAAIY,EAAMZ,GAAK,EAC7Dqc,EAAWjB,EAAS,cAAcpb,CAAC,EAAE,EAAE,EAAI,GAC3Csc,EAAe,KAAK,GAAKlB,EAAS,cAAcpb,CAAC,EAAE,EAAE,EAIzDmc,EAAY,CAAA,EACZ,QAAS3c,EAAI,EAAGC,EAAOyc,EAAY,OAAQ1c,EAAIC,EAAMD,GAAK,EACtD,GAAI,CAAC6c,EAAWH,EAAY1c,CAAC,EAAE,EAAE,EAAG,CAChC,IAAI+c,EAAU,KAAK,SAAS,SAASL,EAAY1c,CAAC,EAAE,EAAE,EAAE,MACpDqS,EAAM,KAAK,SAAS,WAAW0K,CAAO,EAC1C,GAAI1K,EACA,IAAK7R,EAAI,EAAGY,EAAOiR,EAAI,OAAQ7R,EAAIY,EAAMZ,GAAK,EAC1Cmc,EAAUtK,EAAI7R,CAAC,CAAC,EAAIb,EAAI,iBAAiB,KAAK,SAAS,SAAS0S,EAAI7R,CAAC,CAAC,EAAE,QAAQ,CAExF,CASJ,KAAK,OACLb,EAAI,MAAM,iCAAiC,CAC/C,CAIJ,KAAK,IAAI,mBAAqB,CAAA,EAc9B,QAbIqd,EAAc,CAAA,EASdC,EAAa,CAAA,EAIRjd,EAAI,EAAGC,EAAO2b,EAAS,cAAc,OAAQ5b,EAAIC,EAAMD,GAAK,EAAG,CAEpES,EAAO,CAAA,EACP,QAASe,KAAOoa,EAAS,cAAc5b,CAAC,EACpCS,EAAKe,CAAG,EAAIoa,EAAS,cAAc5b,CAAC,EAAEwB,CAAG,EAU7C,GARAX,EAAO,KAAK,aAAa,GAAKJ,EAAK,EAAE,EACjCI,EAAK,IACL,KAAK,UAAU,iBAAiB,UAAW,cAAeA,EAAK,GAAIA,EAAK,QAAQ,EAEpFJ,EAAOd,EAAI,aAAa,KAAK,KAAMc,CAAI,EACnC,KAAK,IAAI,uBAAuB,yBAChC,KAAK,qBAAqB,CAAC,CAACI,EAAKJ,CAAI,CAAC,CAAC,EAEvC,KAAK,IAAI,uBAAuB,qBAC5BA,EAAK,SAAW,CAAC,OAAO,UAAU,cAAc,aAAa,QAAQ,EAAE,QAAQI,EAAK,IAAI,IAAM,KAAO,CAACJ,EAAK,OAASA,EAAK,QAAU,QAAS,CAC5I,IAAIG,EAAIjB,EAAI,sBAAsB,KAAKc,EAAK,OAAO,EACnD,GAAIG,EAAG,CACH,IAAIsc,EAAWvd,EAAI,mBAAmBiB,EAAE,CAAC,CAAC,EACtC,KAAK,QAAQsc,CAAQ,IACrBzc,EAAK,MAAQyc,EACbzc,EAAK,QAAUG,EAAE,CAAC,EACtB,CACJ,CAGR,IAAIuc,EAAU,CAACtc,EAAMJ,CAAI,EACzBuc,EAAY,KAAKG,CAAO,EACxBvB,EAAS,cAAc5b,CAAC,EAAE,KAAOa,CAAA,CAMrC+a,EAAS,YAAcoB,EAGvB,IAAII,EAAkB,CAAA,EAClBC,EAAe,CAAA,EACfC,EACJ,IAAKtd,EAAE,EAAGC,EAAK4b,EAAa,OAAQ7b,EAAEC,EAAMD,GAAK,EAC7Cmc,EAAcN,EAAa7b,CAAC,EACxB,KAAK,IAAI,uBAAuB,gBAC5Bqd,EAAalB,EAAY,CAAC,CAAC,GAC3Bxc,EAAI,MAAM,oCAAsCwc,EAAY,CAAC,EAAI,8BAA8B,EAE/FA,EAAY,CAAC,IACTmB,EAAcnB,EAAY,CAAC,GAC3Bxc,EAAI,MAAM,mDAAqDK,EAAI,GAAG,EAE1Esd,EAAcnB,EAAY,CAAC,IAGnC,KAAK,SAAS,YAAY,aAAaA,EAAY,CAAC,CAAC,EAAE,WAAW,UAAYA,EAAY,CAAC,EAC3FiB,EAAgB,KAAK,KAAK,SAAS,YAAY,aAAajB,EAAY,CAAC,CAAC,CAAC,EAC3EkB,EAAalB,EAAY,CAAC,CAAC,EAAI,KAAK,SAAS,YAAY,aAAaA,EAAY,CAAC,CAAC,EAoBxF,IAlBKP,EAAS,aACVA,EAAS,WAAa,CAClB,UAAW,IAGf,KAAK,IAAI,uBAAuB,gBAC5ByB,EAAazB,EAAS,UAAU,GAChCjc,EAAI,MAAM,kDAAoDic,EAAS,UAAU,EAEjFA,EAAS,WAAW,YAChB0B,EAAc1B,EAAS,WAAW,WAClCjc,EAAI,MAAM,gDAAkDic,EAAS,UAAU,EAEnF0B,EAAc1B,EAAS,WAAW,YAG1CwB,EAAgB,KAAKxB,CAAQ,EAC7ByB,EAAazB,EAAS,UAAU,EAAIA,EAC/B5b,EAAE,EAAGC,EAAK6b,EAAc,OAAQ9b,EAAEC,EAAMD,GAAK,EAC9Coc,EAAeN,EAAc9b,CAAC,EAC1B,KAAK,IAAI,uBAAuB,gBAC5Bqd,EAAajB,EAAa,CAAC,CAAC,GAC5Bzc,EAAI,MAAM,oCAAsCyc,EAAa,CAAC,EAAI,+BAA+B,EAEjGA,EAAa,CAAC,IACVkB,EAAclB,EAAa,CAAC,GAC5Bzc,EAAI,MAAM,mDAAqDK,EAAI,GAAG,EAE1Esd,EAAclB,EAAa,CAAC,IAGpC,KAAK,SAAS,YAAY,aAAaA,EAAa,CAAC,CAAC,EAAE,WAAW,UAAYA,EAAa,CAAC,EAC7FgB,EAAgB,KAAK,KAAK,SAAS,YAAY,aAAahB,EAAa,CAAC,CAAC,CAAC,EAC5EiB,EAAajB,EAAa,CAAC,CAAC,EAAI,KAAK,SAAS,YAAY,aAAaA,EAAa,CAAC,CAAC,EAE1F,KAAK,SAAS,YAAY,gBAAkBgB,EAC5C,KAAK,SAAS,YAAY,aAAeC,EA2BzC,KAAK,SAAS,YAAY,kBAAoB,CAAA,EAC1C,KAAK,IAAI,cAAgB1d,EAAI,WAC7B4c,EAAgB,CAAA,EAChBD,EAAgB,CAAA,EAChBE,EAAkB,CAAA,GAGtB,QADIe,EAAe,CAAA,EACVvd,EAAI,EAAGC,EAAOmd,EAAgB,OAAQpd,EAAIC,EAAMD,GAAK,EAAG,CAE7D,IADAod,EAAgBpd,CAAC,EAAE,WAAW,MAAQA,EACjCQ,EAAI,EAAGY,EAAOgc,EAAgBpd,CAAC,EAAE,YAAY,OAAQQ,EAAIY,EAAMZ,GAAK,EACrEC,EAAO2c,EAAgBpd,CAAC,EAAE,YAAYQ,CAAC,EAClC,KAAK,SAAS,YAAY,kBAAkBC,EAAK,CAAC,EAAE,EAAE,IACvD,KAAK,SAAS,YAAY,kBAAkBA,EAAK,CAAC,EAAE,EAAE,EAAI,CAAA,EAC1D8c,EAAa,KAAK,GAAK9c,EAAK,CAAC,EAAE,EAAE,GAEjC,KAAK,SAAS,YAAY,kBAAkBA,EAAK,CAAC,EAAE,EAAE,EAAE,QAAQ2c,EAAgBpd,CAAC,CAAC,IAAM,IACxF,KAAK,SAAS,YAAY,kBAAkBS,EAAK,CAAC,EAAE,EAAE,EAAE,KAAK2c,EAAgBpd,CAAC,CAAC,EAGnF,KAAK,IAAI,cAAgBL,EAAI,WACzByd,EAAgBpd,CAAC,EAAE,WAAW,UAC9Bsc,EAAc,KAAKc,EAAgBpd,CAAC,CAAC,GAErCod,EAAgBpd,CAAC,EAAE,WAAW,UAAY,EAC1Cuc,EAAc,KAAKa,EAAgBpd,CAAC,CAAC,GAE7C,CAoBJ,GAfIkc,IAASvc,EAAI,8BAET,KAAK,OACLA,EAAI,MAAM,qCAAqC,EAInD,KAAK,YAAY4d,EAAc,KAAM,KAAM,EAAI,EAE3C,KAAK,OACL5d,EAAI,MAAM,oCAAoC,GAKlD,CAAC,KAAK,IAAI,sBAAwBqd,GAAeA,EAAY,OAAS,GAAK,KAAK,cAAc,OAAO,OAAS,EAAG,CACjH,QAAShd,EAAI,EAAGC,EAAO+c,EAAY,OAAQhd,EAAIC,EAAMD,GAAK,EACtDgd,EAAYhd,CAAC,EAAE,CAAC,EAAE,SAAWL,EAAI,YAAY,KAAK,KAAMqd,EAAYhd,CAAC,EAAE,CAAC,EAAG,eAAe,EAO9F,GAAI,KAAK,IAAI,cAAiB,CAAC4b,EAAS,WAAW,SAAU,CAEzD,QAAS5b,EAAI,EAAGC,EAAO+c,EAAY,OAAQhd,EAAIC,EAAMD,GAAK,EAAG,CACzD,IAAIwd,EAAWR,EAAYhd,CAAC,EAAE,CAAC,EAAE,SACjC,KAAK,IAAI,qBAAuB,GAGhC,IAAIyd,EAAa,KAAK,SAAS,SAAST,EAAYhd,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,SAE9D,KAAK,IAAI,qBAAuB,GAChCL,EAAI,iBAAiB,KAAK,KAAMqd,EAAYhd,CAAC,EAAE,CAAC,EAAGyd,CAAU,EAC7D,IAAIC,EAAe,KAAK,SAAS,cAAcV,EAAYhd,CAAC,EAAE,CAAC,EAAE,EAAE,EACnE,KAAK,IAAI,qBAAuB,GAEhCgd,EAAYhd,CAAC,EAAE,CAAC,EAAE,SAAW,CAAC0d,CAAY,EAAE,OAAOF,CAAQ,CAAA,CAG/DR,EAAY,KAAK,KAAK,SAAS,IAAI,oBAAoB,EAQvD,QAHIW,EAAa,GACbC,EAAU,GACVC,EAAa,GACR7d,EAAI,EAAGC,EAAO+c,EAAY,OAAQhd,EAAIC,EAAMD,GAAK,EAClDgd,EAAYhd,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,IAAM2d,IAClCE,EAAab,EAAYhd,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,EACzC4d,EAAWZ,EAAYhd,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,GAE3Cgd,EAAYhd,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,EAAI,GAAK4d,EAAU5d,EAC/C2d,EAAaE,CACjB,CAMCjC,EAAS,WAAW,UACrBoB,EAAY,KAAK,KAAK,SAAS,IAAI,oBAAoB,CAC3D,CAKA,KAAK,IAAI,SAAS,QAClB,KAAK,SAAS,cAAcpB,EAAS,WAAW,EAGpD,IAAIkC,EACJ,GAAI,KAAK,IAAI,cAAgBne,EAAI,SAC7B,QAASK,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAAG,CAC3B,IAAI+d,EAAY,CAAA,EACZC,EAAW,CAAA,EACXC,EAAsB,CAAA,EAE1B,IADAH,EAAY,CAACvB,EAAeD,CAAa,EAAEtc,CAAC,EACvCQ,EAAI,EAAGY,EAAO0c,EAAU,OAAQtd,EAAIY,EAAMZ,GAAK,EAAG,CACnD,IAAI0d,EAAcJ,EAAUtd,CAAC,EAW7B,IAVKsd,EAAUtd,CAAC,EAAE,WAAW,YACzBsd,EAAUtd,CAAC,EAAE,WAAW,UAAY,GAExCsd,EAAUtd,CAAC,EAAE,WAAW,UAAY,SAASsd,EAAUtd,CAAC,EAAE,WAAW,UAAW,EAAE,EAC9EA,EAAI,GAAK0d,EAAY,WAAW,WAAaJ,EAAUtd,EAAI,CAAC,EAAE,WAAW,UAAY0d,EAAY,WAAW,YAC5G1B,EAAkB,CAAA,EAClBuB,EAAY,CAAA,EACZC,EAAW,CAAA,EACXC,EAAsB,CAAA,GAErBnX,EAAI,EAAGC,EAAOmX,EAAY,YAAY,OAAQpX,EAAIC,EAAMD,GAAK,EAC1DoX,EAAY,YAAYpX,CAAC,EAAE,CAAC,EAAE,UAAYoX,EAAY,YAAYpX,CAAC,EAAE,CAAC,EAAE,WAAa,UAGpF0V,EAAgB0B,EAAY,WAAW,SAAS,EAGjD1B,EAAgB0B,EAAY,WAAW,SAAS,GAAK,EAFrD1B,EAAgB0B,EAAY,WAAW,SAAS,EAAI,GAkB5D,IAAKpX,EAAI,EAAGC,EAAO+W,EAAUtd,CAAC,EAAE,YAAY,OAAQsG,EAAIC,EAAMD,GAAK,EAAG,CAClErG,EAAOqd,EAAUtd,CAAC,EAAE,YAAYsG,CAAC,EAOjC,IAAIqX,GAAU1d,EAAK,CAAC,EAAE,GAClB2d,EAAW3d,EAAK,CAAC,EAAE,eAAiBA,EAAK,CAAC,EAAE,eAAiBA,EAAK,CAAC,EAAE,GACrE4d,EAAU5d,EAAK,CAAC,EAAE,eAAiBA,EAAK,CAAC,EAAE,eAAiBA,EAAK,CAAC,EAAE,aAAeA,EAAK,CAAC,EAAE,aAAeA,EAAK,CAAC,EAAE,GAClH6d,EAAS7d,EAAK,CAAC,EAAE,eAAe,EAChC8d,GAAY9d,EAAK,CAAC,EAAE,QACpB+d,GAAU/d,EAAK,CAAC,EAAE,MAClBge,EACAC,GACJ,GAAI5X,EAAI,EAIJ,GAAIoX,EAAY,YAAYpX,EAAI,CAAC,EAAE,CAAC,EAAE,eAClC2X,EAAeP,EAAY,YAAYpX,EAAI,CAAC,EAAE,CAAC,EAAE,mBAC9C,CACH2X,EAAeP,EAAY,YAAYpX,EAAI,CAAC,EAAE,CAAC,EAAE,GACjD4X,GAAiBR,EAAY,YAAYpX,EAAI,CAAC,EAAE,CAAC,EAAE,eAAe,EAE9D,QAAS6X,GAAE7X,EAAE,EAAG6X,GAAE,GAAIA,KACdT,EAAY,YAAYS,EAAC,EAAE,CAAC,EAAE,WAAa,UAC3CF,EAAeP,EAAY,YAAYS,EAAC,EAAE,CAAC,EAAE,GAC7CD,GAAiBR,EAAY,YAAYS,EAAC,EAAE,CAAC,EAAE,eAAe,EAEtE,CAKZ,GAAIzC,IAASvc,EAAI,SACTue,EAAY,YAActC,EAAS,WAAY,CAC3B,OAAOmC,EAAUtd,EAAK,CAAC,EAAE,EAAE,EAA3C,MACAsd,EAAUK,CAAQ,EAAIF,EAAY,WAAW,WAC7CF,EAASK,CAAO,EAAIH,EAAY,WAAW,UAI/C,QAAA,CAGR,IAAIU,GAAW,CAAA,EAQf,GAPAA,GAAS,SAAWne,EAAK,CAAC,EAAE,SAC5Bme,GAAS,6BAA6B,EAAIne,EAAK,CAAC,EAAE,6BAA6B,EAC/Eme,GAAS,uCAAuC,EAAIne,EAAK,CAAC,EAAE,uCAAuC,EACnGme,GAAS,WAAW,EAAIne,EAAK,CAAC,EAAE,WAAW,EAC3CA,EAAK,CAAC,EAAE,6BAA6B,EAAI,EACzCA,EAAK,CAAC,EAAE,uCAAuC,EAAI,EACnDA,EAAK,CAAC,EAAE,WAAW,EAAI,GACnB,KAAK,SAAS,YAAY,kBAAkB0d,EAAO,GAC/C,KAAK,IAAI,SAAW,QAAU,KAAK,IAAI,iBAAkB,CACzD,IAAIU,GAAW,KAAK,SAAS,SAASpe,EAAK,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAC9Dqe,GAAW,KAAK,SAAS,YAAY,kBAAkBX,EAAO,EAAE,OAEpE,GADA,KAAK,SAAS,SAAS1d,EAAK,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAI,KAAK,SAAS,YAAY,kBAAkB0d,EAAO,EAAE,OAC3F,OAAOU,IAApB,SAA8B,CAC9B,IAAIE,GAAiBF,GAAW,EAC5BG,GAAiBF,GAAW,EAChC,GAAIC,KAAkBC,GAClB,QAASL,GAAE,EAAE3T,GAAK,KAAK,SAAS,YAAY,kBAAkBmT,EAAO,EAAE,OAAOQ,GAAE3T,GAAK2T,KACjF1B,EAAW,KAAK,SAAS,SAASxc,EAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAI,GACvD,KAAK,IAAI,mBAAmB,KAAK,SAAS,YAAY,kBAAkB0d,EAAO,EAAEQ,EAAC,EAAE,UAAU,EAAI,EAE1G,KAEA,SAASA,GAAE,EAAE3T,GAAK,KAAK,SAAS,YAAY,kBAAkBmT,EAAO,EAAE,OAAOQ,GAAE3T,GAAK2T,KACjF1B,EAAW,KAAK,SAAS,SAASxc,EAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAI,GACvD,KAAK,IAAI,mBAAmB,KAAK,SAAS,YAAY,kBAAkB0d,EAAO,EAAEQ,EAAC,EAAE,UAAU,EAAI,EAE1G,CAGR,IAAIM,GACAC,GAeJ,GAAoB,OAAOlB,EAASK,CAAO,EAAvC,KAA4CH,EAAY,WAAW,OAAS,cAC5EH,EAAUK,CAAQ,EAAIF,EAAY,WAAW,UAC7CF,EAASK,CAAO,EAAIH,EAAY,WAAW,UAC3CD,EAAoBI,CAAO,EAAIH,EAAY,WAAW,UACtDzd,EAAK,CAAC,EAAE,SAAWd,EAAI,mBACpB,CAMH,IAAIwf,GAAS,GACTC,GAAU,GACVC,GAAe,KACnB,GAAI7e,EAAI,EACJ,IAAI6e,GAAevB,EAAUtd,EAAE,CAAC,EAEpC,IAAI8e,GAAexB,EAAUtd,CAAC,EAE9B,GAAIA,EAAI,EAAG,CACP,IAAI+e,GAAqB,EACrBF,GAAa,WAAW,OAAS,eAAiB7e,EAAI,IACtD+e,GAAqB,GAEzB,IAAIC,GAAmBhf,EAAI+e,GACvBzB,EAAU0B,EAAe,EAAE,YAAY,SACvCP,GAAanB,EAAU0B,EAAe,EAAE,YAAY,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GACpEN,GAAepB,EAAUtd,EAAI+e,EAAkB,EAAE,YAAY,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,GAE5FF,GAAa,YAAY,QACrBA,GAAa,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,iBACzCJ,GAAYI,GAAa,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,eAE7D,CAEJ,GAAI7e,EAAI,GAAKsG,IAAM,GAAKuY,GAAa,WAAW,YAAcC,GAAa,WAAW,UAAW,CAS7F,IAAIjZ,GAAQ,GAERoZ,GAAQJ,GAAa,YAAY,CAAC,EAAE,CAAC,EAAE,GAI3C,GAHIA,GAAa,YAAY,CAAC,EAAE,CAAC,EAAE,iBAC/BI,GAAQJ,GAAa,YAAY,CAAC,EAAE,CAAC,EAAE,gBAEtCI,IAAUrB,GAAYiB,GAAa,WAAW,WAAcC,GAAa,WAAW,UAAY,EAAK,CACtG,IAAII,GAAWL,GAAa,YAAY,CAAC,EAAE,CAAC,EAAE,eAAe,EACzDM,GAAWL,GAAa,YAAY,CAAC,EAAE,CAAC,EAAE,eAAe,GACxD9C,EAAgB6C,GAAa,WAAW,SAAS,IAAM,GAAKA,GAAa,WAAW,YAAc,IAAMK,KAAaC,KACtHtZ,GAAQ,GACZ,CAEAA,GACA8Y,GAAS,GAETC,GAAU,EACd,MACOtY,EAAI,GAAK2X,GAAgBL,GAAYM,IAAkBJ,GAMvDxX,IAAM,GAAKtG,EAAI,GAAK6e,GAAa,WAAW,WAAaC,GAAa,WAAW,WAC9ED,GAAa,YAAY,QACzBJ,IAAab,GAAYc,IAAeZ,EAHlDa,GAAS,GAYTC,GAAU,GAGd,IAAIQ,GAAMC,GAAcC,GAAYC,GAAcC,GAC9Cb,KACIrY,EAAI,EACJ8Y,GAAO1B,EAAY,YAAapX,EAAI,CAAE,EAAE,CAAC,EAEzC8Y,GAAO9B,EAAWtd,EAAI,CAAE,EAAE,YAAY,CAAC,EAAE,CAAC,EAE1Cof,GAAK,SACDA,GAAK,MACLE,GAAaF,GAAK,MAElBE,GAAa,GAEjBD,GAAe,GAAKD,GAAK,QAAUE,IAEnCD,GAAeD,GAAK,QAEpBrB,IACIC,GACAwB,GAAaxB,GAEbwB,GAAa,GAEjBD,GAAe,GAAKxB,GAAYyB,IAEhCD,GAAexB,IAInBY,IAAUU,IAAgB,CAACE,KAC3BZ,GAAS,GACTC,GAAU,IAGVD,KACI,CAACU,IAAgBE,GAGjBtf,EAAK,CAAC,EAAE,SAAWd,EAAI,2BAChB,CAACkgB,IAAgB,CAACE,IAKlBF,IAAgBE,KAAiBF,GAFxCpf,EAAK,CAAC,EAAE,SAAWd,EAAI,cAShBkgB,IAAgBE,IAAgBA,KAAiBF,GAIxDpf,EAAK,CAAC,EAAE,SAAWd,EAAI,4BAMvBwf,GAAS,GACTC,GAAU,KAGdA,KACA3e,EAAK,CAAC,EAAE,SAAWd,EAAI,8BACH,OAAOoe,EAAUK,CAAQ,EAAzC,IACAL,EAAUK,CAAQ,EAAIF,EAAY,WAAW,UAE7Czd,EAAK,CAAC,EAAE,SAAWd,EAAI,sBAG3Byf,IAAWD,MACPjB,EAAY,WAAW,OAAS,gBAChCzd,EAAK,CAAC,EAAE,SAAWd,EAAI,gBAEvBse,EAAoBI,CAAO,GAAKH,EAAY,WAAW,YACvDzd,EAAK,CAAC,EAAE,uCAAuC,EAAIwd,EAAoBI,CAAO,EAC1E,KAAK,SAAS,SAAS5d,EAAK,CAAC,EAAE,EAAE,IACjC,KAAK,SAAS,SAASA,EAAK,CAAC,EAAE,EAAE,EAAE,uCAAuC,EAAIwd,EAAoBI,CAAO,IAG7GN,EAAUK,CAAQ,GAAKF,EAAY,WAAW,YAC9Czd,EAAK,CAAC,EAAE,6BAA6B,EAAIsd,EAAUK,CAAQ,EACvD,KAAK,SAAS,SAAS3d,EAAK,CAAC,EAAE,EAAE,IAQjC,KAAK,SAAS,SAASA,EAAK,CAAC,EAAE,EAAE,EAAE,6BAA6B,EAAIsd,EAAUK,CAAQ,IAGlG,CAEJ,GAAIF,EAAY,WAAW,UAAW,CAClC,IAAI+B,GAAgB,SAAS/B,EAAY,WAAW,UAAW,EAAE,EAAI,SAASF,EAASK,CAAO,EAAG,EAAE,EAC/F5d,EAAK,CAAC,EAAE,WAAad,EAAI,gBACtBsgB,IAAiB,KAAK,SAAS,IAAI,oBAAoB,IAC1Dxf,EAAK,CAAC,EAAE,WAAW,EAAI,IAE3Bud,EAASK,CAAO,EAAIH,EAAY,WAAW,SAAA,MACpCzd,EAAK,CAAC,EAAE,WAAad,EAAI,iBAChCc,EAAK,CAAC,EAAE,WAAW,EAAI,IAE3B,GAAIyd,EAAY,YAActC,EAAS,WACnC,IAAKvH,EAAI,EAAGgI,EAAO1c,EAAI,mBAAmB,OAAQ0U,EAAIgI,EAAMhI,GAAK,EAAG,CAChE,IAAIlJ,GAAQxL,EAAI,mBAAmB0U,CAAC,EAChC5T,EAAK,CAAC,EAAE0K,EAAK,IAAMyT,GAASzT,EAAK,IAC7B,KAAK,SAAS,SAAS1K,EAAK,CAAC,EAAE,EAAE,GAC7B0K,KAAU,gCACV8R,EAAW,KAAK,SAAS,SAASxc,EAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAI,GACvD,KAAK,IAAI,eAAeA,EAAK,CAAC,EAAE,EAAE,EAAI,IAG9C,KAAK,IAAI,mBAAmByd,EAAY,UAAU,EAAI,GAC1D,CAGJ,KAAK,IAAI,kBACTzd,EAAK,CAAC,EAAE,MAAQyd,EAAY,WAAW,MACvCzd,EAAK,CAAC,EAAE,UAAYyd,EAAY,WAAW,UAC/C,CACJ,CACJ,CAGR,GAAI,KAAK,IAAI,sBAAwBlB,GAAeA,EAAY,OAAS,GAAK,KAAK,cAAc,OAAO,OAAS,GACzG,CAACpB,EAAS,WAAW,SAAU,CAC/B,QAAS5b,EAAI,EAAGC,EAAO+c,EAAY,OAAQhd,EAAIC,EAAMD,GAAK,EACtDgd,EAAYhd,CAAC,EAAE,CAAC,EAAE,SAAWL,EAAI,YAAY,KAAK,KAAMqd,EAAYhd,CAAC,EAAE,CAAC,EAAG,eAAe,EAE9Fgd,EAAY,KAAK,KAAK,SAAS,IAAI,oBAAoB,CAAA,CAG/D,QAASxb,KAAO,KAAK,IAAI,eACrB,GAAI,KAAK,IAAI,eAAe,eAAeA,CAAG,IAC1Csc,EAAY,KAAK,SAAS,YAAY,kBAAkBtc,CAAG,EAGvDsc,GACA,QAAS9d,EAAI,EAAGC,EAAO6d,EAAU,OAAQ9d,EAAIC,EAAMD,GAAK,EACpD,KAAK,IAAI,mBAAmB8d,EAAU9d,CAAC,EAAE,UAAU,EAAI,GAMvE,IAAIE,GAAM,CAAA,EACV,GAAIgc,IAASvc,EAAI,QAAS,CAGlB,KAAK,OACLA,EAAI,MAAM,sCAAsC,EAGpD,GAAI,CACAO,GAAM,KAAK,wBAAwB,KAAK,KAAM0b,EAAS,YAAaA,CAAQ,CAAA,OACvEhP,GAAG,CACRjN,EAAI,MAAM,4CAA4CiN,EAAC,CAAA,CAIvD,KAAK,QACLjN,EAAI,MAAM,oCAAoC,EAC9CA,EAAI,MAAM,sCAAsC,GAUpD,KAAK,SAAS,YAAY,gBAAkB8c,EAC5C,KAAK,SAAS,YAAY,aAAe,CAAA,EACzC,QAASzc,EAAI,EAAGC,EAAOwc,EAAgB,OAAQzc,EAAIC,EAAMD,GAAK,EAC1D,KAAK,SAAS,YAAY,aAAayc,EAAgBzc,CAAC,EAAE,UAAU,EAAIyc,EAAgBzc,CAAC,EAIzF,KAAK,OACLL,EAAI,MAAM,qCAAqC,EAInD,QADIugB,GAAa,CAAA,EACRlgB,EAAI,EAAGC,EAAOyc,EAAY,OAAQ1c,EAAIC,EAAMD,GAAK,EACtDkgB,GAAW,KAAK,GAAKxD,EAAY1c,CAAC,EAAE,EAAE,EAE1C,KAAK,YAAYkgB,GAAY,KAAM,KAAM,EAAI,EAEzC,KAAK,OACLvgB,EAAI,MAAM,mCAAmC,EAIjD,QAAS6B,KAAOmb,EACRA,EAAU,eAAenb,CAAG,IAC5B,KAAK,SAAS,SAASA,CAAG,EAAE,SAAWmb,EAAUnb,CAAG,GAIxD,KAAK,OACL7B,EAAI,MAAM,oCAAoC,CAClD,KAEG,CAKH,QAASwgB,MAAalD,EAClB,KAAK,aAAa,IAAIkD,GAAWvE,CAAQ,EAM7C,IAAI7T,GACJ,QAASvG,KAAO,KAAK,IAAI,mBACrB,GAAIA,GAAOoa,EAAS,WAGpB,KAAIwE,GAAa,KAAK,SAAS,YAAY,aAAa5e,CAAG,EAC3D,GAAI,CAAC4e,GAAW,WAAW,SAAU,CACjC,QAASpgB,EAAI,EAAGC,EAAOmgB,GAAW,YAAY,OAAQpgB,EAAIC,EAAMD,GAAK,EACjEogB,GAAW,YAAYpgB,CAAC,EAAE,CAAC,EAAE,SAAWL,EAAI,YAAY,KAAK,KAAMygB,GAAW,YAAYpgB,CAAC,EAAE,CAAC,EAAG,eAAe,EAEpHogB,GAAW,YAAY,KAAK,KAAK,SAAS,IAAI,oBAAoB,CAAA,CAGtE,KAAK,IAAI,aAAeA,GAAW,WAAW,MAC9C,KAAK,IAAI,oBAAsBA,GAAW,WAAW,UACrD,KAAK,IAAI,YAAc,GAAKA,GAAW,WACvCrY,GAAM,CAAA,EACNA,GAAI,KAAKqY,GAAW,WAAW,KAAK,EACpCrY,GAAI,KAAK,KAAK,wBAAwB,KAAK,KAAMqY,GAAW,YAAaA,EAAU,CAAC,EACpFrY,GAAI,KAAKqY,GAAW,UAAU,EAC9BlgB,GAAI,KAAK6H,EAAG,EAEhB,KAAK,IAAI,eAAiB,CAAA,EAC1B,KAAK,IAAI,mBAAqB,CAAA,EAG9B,KAAK,IAAI,aAAe6T,EAAS,WAAW,MAC5C,KAAK,IAAI,oBAAsBA,EAAS,WAAW,UACnD,KAAK,IAAI,YAAc,GAAKA,EAAS,WAErC7T,GAAM,CAAA,EACNA,GAAI,KAAK8T,EAAa,MAAM,EAC5B9T,GAAI,KAAK,KAAK,wBAAwB,KAAK,KAAMiV,EAAapB,CAAQ,CAAC,EACvE7T,GAAI,KAAK6T,EAAS,UAAU,EAC5B1b,GAAI,KAAK6H,EAAG,EAOZ7H,GAAI,KAAK,SAAUuK,GAAGC,GAAG,CACrB,OAAID,GAAE,CAAC,EAAIC,GAAE,CAAC,EACH,EACAD,GAAE,CAAC,EAAIC,GAAE,CAAC,EACV,GAEA,CACX,CACH,CAAA,CAML,YAAK,SAAS,YAAY,gBAAkB,KAAK,IAAI,gBAAgB,MAAA,EAC9D,CAAC,KAAK,SAAS,YAAaxK,EAAG,CAC1C,EAEAP,EAAI,OAAO,UAAU,wBAA0B,SAAUqd,EAAapB,EAAU,CAC5E,IAAIhc,EAAM,GACV,GAAIgc,GAAYA,EAAS,YAAcA,EAAS,WAAW,OAAS,YAAa,CAC7EA,EAAS,WAAW,KAAO,cAC3B,IAAIyE,EAAa1gB,EAAI,mBAAmB,KAAK,KAAMqd,EAAapB,CAAQ,EACxEA,EAAS,WAAW,KAAO,kBAC3B,IAAI0E,EAAc,GACd1E,EAAS,WAAW,QACpB,KAAK,OAAO,OAAOA,EAAS,WAAW,KAAK,EAC5C0E,EAAc,KAAK,OAAO,OAAO,KAAM,KAAK,OAAO,KAAK,EAEvC,OAAOA,GAApB,WACAA,EAAcA,EAAY,KAAK,EAAE,IAGzC,IAAIC,EAAa5gB,EAAI,mBAAmB,KAAK,KAAMqd,EAAapB,CAAQ,EACxEA,EAAS,WAAW,KAAO,YACvByE,GAAcC,GAAe3gB,EAAI,qBAAqB,OAAO,CAAC,IAAU,GAAI,CAAC,EAAE,QAAQ2gB,EAAY,CAAC,CAAC,EAAI,KACzGD,GAAcC,EACdA,EAAc,IAElB1gB,EAAM,CAACygB,EAAYC,EAAaC,CAAU,EAAE,OAAO,SAASxY,EAAK,CAC7D,OAAOA,CAAA,CACV,EAAE,KAAK,GAAG,CAAA,MAEXnI,EAAMD,EAAI,mBAAmB,KAAK,KAAMqd,EAAapB,CAAQ,EAEjE,OAAOhc,CACX,EAEAD,EAAI,OAAO,UAAU,oBAAsB,SAAU6gB,EAAS,CAC1D,IAAIrN,EAAWgK,EAASvd,EAAK+E,EAAKC,EAAKnE,EAAMI,EAG7C,IAFAsS,EAAY,CAAA,EACZvO,EAAM4b,EAAQ,OACT7b,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAAG,CAC/BlE,EAAO,CAAA,EACP,QAASe,KAAOgf,EAAQ7b,CAAG,EACvBlE,EAAKe,CAAG,EAAIgf,EAAQ7b,CAAG,EAAEnD,CAAG,EAIhC,GAFAX,EAAO,KAAK,aAAa,GAAKJ,EAAK,EAAE,EAEjC,KAAK,IAAI,uBAAuB,qBAC5BA,EAAK,SAAW,CAAC,OAAO,UAAU,cAAc,aAAa,QAAQ,EAAE,QAAQI,EAAK,IAAI,IAAM,KAAO,CAACJ,EAAK,OAASA,EAAK,QAAU,QAAS,CAC5I,IAAIG,EAAIjB,EAAI,sBAAsB,KAAKc,EAAK,OAAO,EACnD,GAAIG,EAAG,CACH,IAAIsc,EAAWvd,EAAI,mBAAmBiB,EAAE,CAAC,CAAC,EACtC,KAAK,QAAQsc,CAAQ,IACrBzc,EAAK,MAAQyc,EACbzc,EAAK,QAAUG,EAAE,CAAC,EACtB,CACJ,CAGJH,EAAK,UACLA,EAAK,SAAW,GAAKA,EAAK,SAAS,QAAQ,OAAQ,EAAE,GAEzD0c,EAAU,CAACtc,EAAMJ,CAAI,EACrB0S,EAAU,KAAKgK,CAAO,CAAA,CAK1B,GAHI,KAAK,IAAI,uBAAuB,yBAChC,KAAK,qBAAqBhK,CAAS,EAEnCA,GAAaA,EAAU,OAAS,GAAK,KAAK,cAAc,OAAO,OAAS,EAAG,CAE3E,IADAvO,EAAMuO,EAAU,OACXxO,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAC5BwO,EAAUxO,CAAG,EAAE,CAAC,EAAE,SAAWhF,EAAI,YAAY,KAAK,KAAMwT,EAAUxO,CAAG,EAAE,CAAC,EAAG,eAAe,EAE9FwO,EAAU,KAAK,KAAK,SAAS,IAAI,oBAAoB,CAAA,CAEzD,KAAK,IAAI,gBAAkB,CAAA,EAC3B,IAAIvT,EAAMD,EAAI,mBAAmB,KAAK,KAAMwT,CAAS,EACrD,OAAOvT,CACX,EAWAD,EAAI,iBAAmB,SAAUkB,EAAM4f,EAAUC,EAAYjgB,EAAM,CAC/D,IAAIP,EACA2D,EAAQ,KAAK,IAAI,cAAc,IAC/B8c,EAAsB,CACtB,cAAe9c,EAAM,cACrB,iBAAkBA,EAAM,iBACxB,iBAAkBA,EAAM,iBACxB,WAAYA,EAAM,WAClB,WAAYA,EAAM,WAClB,aAAcA,EAAM,aACpB,cAAeA,EAAM,cACrB,eAAgBA,EAAM,eACtB,uBAAwBA,EAAM,uBAC9B,4BAA6BA,EAAM,4BACnC,wCAAyCA,EAAM,wCAC/C,UAAWA,EAAM,UACjB,eAAgBA,EAAM,eACtB,UAAWA,EAAM,UAAU,MAAA,GAE3B4c,EACA,KAAK,IAAI,iBAAmBA,EAE5B,KAAK,IAAI,iBAAmB,GAEhC,IAAIG,EAAW,CACX,SAAUjhB,EAAI,oBACd,YAAa,IAGbc,IACAmgB,EAAS,QAAUngB,EAAK,QACxBmgB,EAAS,MAAQngB,EAAK,OAGtB,KAAK,SAAS,SAASI,EAAK,EAAE,GAC3B,KAAK,SAAS,YAAY,mBAC1B,KAAK,SAAS,YAAY,kBAAkBA,EAAK,EAAE,GACnD,KAAK,SAAS,YAAY,kBAAkBA,EAAK,EAAE,EAAE,QACrD6f,GACC,KAAK,SAAS,IAAI,+BAA+B,IAAM,YACvDE,EAAS,6BAA6B,EAAI,KAAK,SAAS,SAAS/f,EAAK,EAAE,EAAE,6BAA6B,GAG/G,KAAK,IAAI,KAAO,WAChB,KAAK,IAAI,KAAO,WAChB,IAAIggB,EAA0B,KAAK,IAAI,qBACvC,KAAK,IAAI,qBAAuB,GAChC,KAAK,IAAI,aAAe,GAExBlhB,EAAI,QAAQ,KAAK,KAAMkB,EAAM+f,EAAU,KAAM,EAAK,EAElD,QAAS5gB,EAAE,EAAEC,EAAK,KAAK,OAAO,MAAM,OAAOD,EAAEC,EAAKD,GAAG,EACjDL,EAAI,OAAO,MAAM,gBAAgB,KAAK,OAAO,MAAMK,CAAC,CAAC,EAEzD,GAAI,KAAK,IAAI,uBAAuB,mBAChC,QAASQ,EAAE,EAAEY,EAAK,KAAK,OAAO,MAAM,OAAOZ,EAAEY,EAAKZ,GAAG,EACjD,KAAK,OAAO,OAAO,OAAO,KAAK,OAAO,MAAMA,CAAC,CAAC,EAC9C,KAAK,OAAO,OAAO,SAAS,KAAK,OAAO,MAAMA,CAAC,CAAC,EAChD,KAAK,OAAO,OAAO,SAAS,KAAK,OAAO,MAAMA,CAAC,CAAC,EAChD,KAAK,OAAO,OAAO,IAAI,KAAK,OAAO,MAAMA,CAAC,CAAC,EAGnD,IAAIN,EAAM,KAAK,OAAO,OAAO,KAAM,KAAK,OAAO,KAAK,EACpD,YAAK,IAAI,aAAe,GACxB,KAAK,IAAI,qBAAuB2gB,EAEhC,KAAK,IAAI,cAAc,QAAQF,CAAmB,EAC3CzgB,CACX,EAgBAP,EAAI,mBAAqB,SAAUmhB,EAAcC,EAAgBpc,EAAK,CAElE,GAAkB,KAAK,SAAS,IAAI,0BAA0B,IAA1D,OACImc,EACA,KAAK,IAAI,iBAAmB,KAAK,SAAS,IAAI,0BAA0B,EACjEC,GAAkB,CAAC,KAAK,IAAI,eACnC,KAAK,IAAI,iBAAmB,KAAK,SAAS,IAAI,0BAA0B,EACjE,CAACA,GAAkB,CAAC,KAAK,IAAI,gBAAkB,KAAK,SAAS,IAAI,WAAa,cACrF,KAAK,IAAI,iBAAmB,KAAK,SAAS,IAAI,0BAA0B,EAExE,KAAK,IAAI,iBAAmB,KAAK,SAAS,IAAI,yBAE3C,KAAK,IAAI,yBAChB,KAAK,IAAI,iBAAmB,KAAK,SAAS,IAAI,6BAE1C,KAAK,IAAI,gBAAkB,KAAK,IAAI,SAAW,WAAa,KAAK,IAAI,cAAgBphB,EAAI,QACzF,KAAK,IAAI,iBAAmB,aACrB,KAAK,IAAI,aAAagF,EAAM,CAAC,EAAG,CAGvC,IAAIqc,EAAc,KAAK,IAAI,aAAa,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,aAAarc,EAAM,CAAC,CAAC,EACjFqc,GAAeA,EAAY,YAC3B,KAAK,IAAI,iBAAmBA,EAAY,UAC5C,MACQ,KAAK,IAAI,mBAEjB,KAAK,IAAI,iBAAmB,IA+BpC,OAAO,KAAK,IAAI,gBACpB,EAMArhB,EAAI,mBAAqB,SAAUwT,EAAWyI,EAAU,KAChDnQ,EAAQwV,EAASC,EAAUtc,EAAKD,EAAKlE,EAAMsgB,EAAgBpN,EAAiBwN,EAAWC,EAAQ/K,EAASxV,EAAMmK,EAAMD,EAAMhD,EAAKsZ,EAAgB/K,EAASgL,EAAcC,EAAYC,EAAYC,EAC9LC,EAAkB,GACtB,KAAK,OAAO,iBAAmB,IAAI/hB,EAAI,iBAAiB,IAAI,EACxDic,IACA2F,EAAa3F,EAAS,WACtB4F,EAAa5F,EAAS,WAAW,OAAS,cAAgB,CAAC,CAACA,EAAS,WAAW,KAAO,GACnF,KAAK,IAAI,SAAW,SACpB6F,EAAiB7F,EAAS,WAAW,OAAS,kBAAoB,CAAC,CAACA,EAAS,WAAW,KAAO,IAE/FA,EAAS,WAAW,SACpB8F,EAAkB/hB,EAAI,uBAAuB,KAAMic,EAAS,WAAW,MAAM,IAGrFzI,EAAYA,GAAwB,CAAA,EACpC,KAAK,IAAI,0BAA4B,GACrCmD,EAAU3W,EAAI,cAAc,IAAI,EAChC,KAAK,IAAI,KAAO,WAChB,KAAK,IAAI,KAAO,WAChB8L,EAAS,GACTwV,EAAU,CAAA,EACV,KAAK,IAAI,iBAAmB,GAC5B,KAAK,IAAI,gBAAkB,CAAA,EAC3B,KAAK,IAAI,gBAAkB,CAAA,EAC3B,KAAK,IAAI,cAAgB,CAAA,EACzB,KAAK,IAAI,aAAe,CAAA,EACnB,KAAK,IAAI,eACV,KAAK,IAAI,eAAiB,CACtB,QAAS,CAAA,IAIjB,IAAIU,EAAoB,KAAK,OAAO,iBAAiB,OAAO,KAAK,SAAS,IAAI,cAAgBD,CAAe,EAGzGE,EAA8B,GAalC,GAZI,KAAK,SAAS,IAAI,8BAClBA,EAA8B,IAE9BL,GAGI,KAAK,SAAS,YAAY,aAAaA,CAAU,EAAE,WAAW,+BAA+B,IAC7FK,EAA8B,IAKlC,KAAK,IAAI,SAAW,OAAQ,CAM5B,QALIC,EAAW,CAAA,EACXC,EAAY,GAEZC,EAAS,GACThiB,EAAM,CAAA,EACDC,EAAE,EAAGC,EAAOkT,EAAU,OAAQnT,EAAIC,EAAMD,GAAK,EAAG,CACrD,IAAIgiB,EAAO7O,EAAUnT,CAAC,EAAE,CAAC,EAAE,KACvB2C,EAAQwQ,EAAUnT,CAAC,EAAE,CAAC,EAAE,MACxBiiB,EAAW9O,EAAUnT,CAAC,EAAE,CAAC,EAAE,SAC3BsS,EAAKa,EAAUnT,CAAC,EAAE,CAAC,EAAE,GACrB2C,GAASqf,IAAS,cAAgB1P,IAAOyP,GAAUE,KAE/Ctf,IAAUmf,GAAaD,EAAS,SAAW,KAC3C9hB,EAAM,CAAA,EACN8hB,EAAS,KAAK9hB,CAAG,GAErBA,EAAI,KAAKoT,EAAUnT,CAAC,EAAE,CAAC,CAAC,GAE5B8hB,EAAYnf,EAEZof,EAASzP,CAAA,CAGb,IAAKtS,EAAE,EAAGC,EAAK4hB,EAAS,OAAQ7hB,EAAIC,EAAMD,GAAK,EAE3C,GADAD,EAAM8hB,EAAS7hB,CAAC,EACZ,EAAAD,EAAI,OAAS,GAIjB,KAAImiB,EAAwBniB,EAAI,MAAM,EAAE,EAAE,CAAC,EAAE,QAC7C,GAAImiB,EACA,QAAS1hB,EAAE,EAAGY,EAAKrB,EAAI,OAAS,EAAGS,EAAIY,EAAMZ,GAAK,EAC1CT,EAAIS,CAAC,EAAE,UACP0hB,EAAwB,IAKhCA,IACAniB,EAAI,CAAC,EAAE,QAAUmiB,EACjB,OAAOniB,EAAI,MAAM,EAAE,EAAE,CAAC,EAAE,QACxBA,EAAI,CAAC,EAAE,MAAQA,EAAI,MAAM,EAAE,EAAE,CAAC,EAAE,MAC5BA,EAAI,MAAM,EAAE,EAAE,CAAC,EAAE,OACjB,OAAOA,EAAI,MAAM,EAAE,EAAE,CAAC,EAAE,OAGrC,CAgBH,IAdAmhB,EAAW,CAAA,EACXtc,EAAMuO,EAAU,OACZA,EAAU,CAAC,GAAKA,EAAU,CAAC,EAAE,CAAC,IAC1BqO,GACA,OAAOrO,EAAU,CAAC,EAAE,CAAC,EAAE,iBAAiB,EACxCA,EAAU,CAAC,EAAE,CAAC,EAAE,aAAa,EAAI,IAC1BsO,IACP,OAAOtO,EAAU,CAAC,EAAE,CAAC,EAAE,aAAa,EACpCA,EAAU,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAI,KAGzC,KAAK,IAAI,SAAS,QAClB,KAAK,SAAS,cAAcA,CAAS,EAEpCxO,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAAG,CAG/B,KAAK,IAAI,WAAaA,EAEtB9D,EAAOsS,EAAUxO,CAAG,EAAE,CAAC,EACvBlE,EAAO0S,EAAUxO,CAAG,EAAE,CAAC,EACvBlE,EAAOd,EAAI,aAAa,KAAK,KAAMc,CAAI,EACvCsgB,EAAiB,KAAK,IAAI,eAC1B,IAAID,EAAe,GAQnB,GAPInc,EAAM,GAAKwO,EAAUxO,EAAI,CAAC,EAAE,CAAC,IAC7Bmc,EAAe,CAAC,CAAC3N,EAAUxO,EAAI,CAAC,EAAE,CAAC,EAAE,SAEzCgP,EAAS,CAAA,EAGT,KAAK,IAAI,eAAiB,CAAA,EACtB,CAAC,KAAK,IAAI,cAAgB,KAAK,IAAI,mBAAoB,CACvD,IAAIwO,EAAS,KAAK,OAClB,KAAK,OAAS,IAAIxiB,EAAI,OAAO,MAAM,IAAI,EACvC,KAAK,OAAO,OAAS,IAAIA,EAAI,OAAO,MAAM,OAC1CA,EAAI,iBAAiB,KAAK,KAAMkB,EAAM,KAAM,GAAOJ,CAAI,EACvD,KAAK,OAAS0hB,CAAA,CAgClB,GA7BA,KAAK,IAAI,oBAAsB,GAI3Bxd,EAAM,EACNhF,EAAI,QAAQ,KAAK,KAAMkB,EAAMJ,EAAM,GAAK0S,EAAWxO,EAAM,CAAE,EAAE,CAAC,EAAE,GAAI,EAAI,GAExE,KAAK,IAAI,iBAAmB,GAC5BhF,EAAI,QAAQ,KAAK,KAAMkB,EAAMJ,EAAM,KAAM,EAAI,GAI5C,KAAK,IAAI,uBACV6gB,EAAe,CACX,WAAY,GAAK,KAAK,IAAI,YAC1B,MAAO,KAAK,IAAI,aAChB,UAAW,KAAK,IAAI,oBACpB,OAAQ,GAAKzgB,EAAK,GAClB,kBAAmB8D,EACnB,WAAYhF,EAAI,wBAEpB,KAAK,IAAI,gBAAgB,KAAK2hB,CAAY,GAE9C3N,EAAO,iBAAmBhU,EAAI,mBAAmB,KAAK,KAAMmhB,EAAcC,EAAgBpc,CAAG,EAEzFlE,GAAQA,EAAK,aAAa,IAC1B,KAAK,IAAI,qBAAuB,IAGhCkE,EAAM,EAAG,CACT0c,EAAiBlO,EAAUxO,EAAM,CAAC,EAAE,CAAC,EAIrC,IAAIyd,EAA+Bf,EAAe,QAAU,CAAC,IAAK,IAAK,GAAG,EAAE,QAAQA,EAAe,OAAO,MAAM,EAAE,CAAC,EAAI,GACnHgB,EAAiC,CAAChB,EAAe,QAAU5gB,EAAK,QAAU,CAAC,IAAK,IAAK,GAAG,EAAE,QAAQA,EAAK,OAAO,MAAM,EAAG,CAAC,CAAC,EAAI,GACjI,GAAI2hB,GAAgCC,EAAgC,CAChE,IAAIC,EAAW3O,EAAO,iBAAiB,QAAQ,GAAG,EAC9C2O,EAAW,IAAM,CAACD,EAClB1O,EAAO,iBAAmBA,EAAO,iBAAiB,MAAM2O,CAAQ,EAEhE3O,EAAO,iBAAmB,EAC9B,CACJ,CAUJ,GARAA,EAAO,qBAAuB,KAAK,IAAI,qBACvCA,EAAO,eAAiB,KAAK,IAAI,eAMjCuN,EAAS,KAAKvN,CAAM,EAChBlT,EAAK,aAAa,EAClB,KACJ,CAQJ4V,EAAU,KAAK,OAAO,MAAM,MAAA,EAE5B,IAAIkM,EAAkB,GAClB3G,IACA2G,EAAkB5iB,EAAI,wBAAwB,KAAMic,EAAS,WAAW,MAAM,GAElF,IAAI7Z,EAAS,KAAK,SAAS,IAAI,cAC3BygB,EAAc,KAAK,IAAI,aAAa,KAAK,IAAI,aAAa,OAAS,CAAC,EAGpEA,GAAe,KAAK,IAAI,aAAa,KAAK,IAAI,IAAI,EAAEA,CAAW,GAAK,KAAK,IAAI,aAAa,KAAK,IAAI,IAAI,EAAEA,CAAW,EAAE,SACtHzgB,EAAS,KAAK,IAAI,aAAa,KAAK,IAAI,IAAI,EAAEygB,CAAW,EAAE,QAE3D7iB,EAAI,qBAAqB,MAAM,EAAG,EAAE,EAAE,QAAQoC,EAAO,MAAM,EAAG,CAAC,CAAC,EAAI,KACpEA,EAASA,EAAO,MAAM,EAAG,CAAC,GAG9BA,EAAS,KAAK,OAAO,iBAAiB,OAAOwgB,EAAkBxgB,CAAM,EAGrE,QAAS/B,EAAE,EAAEC,EAAK,KAAK,OAAO,MAAM,OAAOD,EAAEC,EAAKD,GAAG,EACjDL,EAAI,OAAO,MAAM,gBAAgB,KAAK,OAAO,MAAMK,CAAC,CAAC,EAczD,GAZI,CAAC,KAAK,IAAI,sBAAwB,KAAK,OAAO,MAAM,SAC9C,KAAK,IAAI,uBAAuB,wBAC7B,KAAK,IAAI,mBACR,CAAC,KAAK,IAAI,cACX,KAAK,IAAI,OAAS,aAElB4hB,IACD,KAAK,OAAO,MAAM,KAAK,OAAO,MAAM,OAAS,CAAC,EAAE,QAAQ,OAAS7f,GAErE,KAAK,OAAO,MAAM,CAAC,EAAE,QAAQ,OAAS4f,IAG1C,KAAK,IAAI,uBAAuB,mBAChC,QAASnhB,EAAE,EAAEY,EAAK,KAAK,OAAO,MAAM,OAAOZ,EAAEY,EAAKZ,GAAG,EAEjD,KAAK,OAAO,OAAO,OAAO,KAAK,OAAO,MAAMA,CAAC,CAAC,EAE9C,KAAK,OAAO,OAAO,SAAS,KAAK,OAAO,MAAMA,CAAC,CAAC,EAEhD,KAAK,OAAO,OAAO,SAAS,KAAK,OAAO,MAAMA,CAAC,CAAC,EAEhD,KAAK,IAAI,SAAW,KAAK,OAAO,OAAO,IAAI,KAAK,OAAO,MAAMA,CAAC,CAAC,EAKvE,IAAKmE,EAAM,EAAGC,EAAMyR,EAAQ,OAAQ1R,EAAMC,EAAKD,GAAO,EAAG,CACrD,IAAI8d,EAAS,CAAA,EAkBb,GAjBA,KAAK,OAAO,MAAQ,CAACpM,EAAQ1R,CAAG,CAAC,EACjC,KAAK,IAAI,qBAAuBuc,EAASvc,CAAG,EAAE,qBAC9C,KAAK,IAAI,iBAAmBuc,EAASvc,CAAG,EAAE,iBAKtC0R,EAAQ1R,CAAG,EAAE,qBACb,KAAK,IAAI,iBAAmB0R,EAAQ1R,CAAG,EAAE,oBAE7C,KAAK,IAAI,eAAiBuc,EAASvc,CAAG,EAAE,eAExCwc,EAAY,KAAK,OAAO,OAAO,KAAM,KAAK,OAAO,KAAK,EAEtD,KAAK,IAAI,qBAAuB,GAGf,OAAOA,GAApB,SACA,YAAK,IAAI,qBAAuB,GAC3BA,IACG,KAAK,IAAI,uBAAuB,eAChCxhB,EAAI,MAAM,kCAAkC,EAE5CwhB,EAAY,qBAGbA,EAEX,GAAiB,OAAOA,GAApB,UAAiCA,EAAU,SAAW,GAAK,CAAC1gB,EAAK,iBAAiB,GAClF,GAAIkE,IAAQ,EAAG,CACX,IAAI+d,EAAS,qDACTC,GAAShe,IAAQ,EAAI2R,EAAQ,KAAK,SAAS,IAAI,aAAa,EAAI,GAChEsM,EAASje,IAAS0R,EAAQ,OAAS,EAAKC,EAAQ,KAAK,SAAS,IAAI,aAAa,EAAI,GACvF6K,EAAU,KAAKwB,GAASD,EAASE,CAAM,CAAA,SAChCje,IAAQ0R,EAAQ,OAAS,EAAG,CACnC,IAAIwM,EAAS5B,EAAQA,EAAQ,OAAS,CAAC,EACnC,OAAO4B,GAAW,SAClB5B,EAAQA,EAAQ,OAAQ,CAAC,GAAM3K,EAAQ,KAAK,SAAS,IAAI,aAAa,EAC/D,OAAOuM,GAAW,WACzBA,EAAO,QAAQ,QAAWvM,EAAQ,KAAK,SAAS,IAAI,aAAa,EACrE,EAGR,GAAImM,EAAO,QAAuB,OAAOtB,EAAU,CAAC,GAA/B,SAAkC,CACnDA,EAAU,QAAA,EACV,IAAI2B,EAAS3B,EAAU,IAAA,EACnB2B,GAAUA,EAAO,MAAM,EAAG,CAAC,IAAM,IACjCL,EAAO,KAAKK,CAAM,EACC,OAAOL,EAAO,MAAM,EAAE,EAAE,CAAC,GAArC,UAA0CA,EAAO,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,IAAM,IACnFA,EAAO,KAAK,IAAMK,CAAM,EACjBA,GACPL,EAAO,KAAKnM,EAAQ,KAAK,IAAI,gBAAgB,EAAIwM,CAAM,CAC3D,MAEA3B,EAAU,QAAA,EACVC,EAASD,EAAU,IAAA,EACC,OAAOC,EAAvB,MACIqB,EAAO,QAAuB,OAAOA,EAAOA,EAAO,OAAS,CAAC,GAA5C,WACjBA,EAAOA,EAAO,OAAS,CAAC,GAAKrB,EAAO,kBAExCqB,EAAO,KAAKrB,CAAM,GAM1B,IADApW,EAAOmW,EAAU,OACZpW,EAAO,EAAGA,EAAOC,EAAMD,GAAQ,EAAG,CAEnC,GADAhD,EAAMoZ,EAAUpW,CAAI,EACH,OAAOhD,GAApB,SAAyB,CACzB0a,EAAO,KAAKnM,EAAQ,KAAK,IAAI,gBAAgB,EAAIvO,CAAG,EACpD,QAAA,CAEJqZ,EAASD,EAAU,IAAA,EACC,OAAOC,EAAvB,KACAqB,EAAO,KAAKrB,CAAM,CACtB,CAEAqB,EAAO,SAAW,GAAMtP,EAAUxO,CAAG,EAAE,CAAC,EAAE,iBAAiB,EAG3D8d,EAAO,OAAS,GAAK,OAAOA,EAAO,CAAC,GAAM,WAC1CA,EAAS,CAAC,KAAK,OAAO,YAAYA,CAAM,CAAC,GAEzCA,EAAO,SACU,OAAOA,EAAO,CAAC,GAA5B,SACI9d,EAAM,IACN8d,EAAO,CAAC,EAAInM,EAAQ,KAAK,IAAI,gBAAgB,EAAImM,EAAO,CAAC,GAGzD9d,EAAM,EACN8d,EAAO,CAAC,EAAE,cAAgB,KAAK,IAAI,iBAEnCA,EAAO,CAAC,EAAE,cAAgB,IAItCxB,EAAUA,EAAQ,OAAOwB,CAAM,CAAA,CAKnC,GAFAhX,GAAU,KAAK,OAAO,YAAYwV,CAAO,EAErCxV,GAKI,CAAC,KAAK,IAAI,qBAEV,IADA7G,EAAM,KAAK,SAAS,IAAI,mBAAmB,OACtCD,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAC5BgP,EAAS,KAAK,SAAS,IAAI,mBAAmBhP,CAAG,EAI7CgP,EAAO,CAAC,IAAM,WAGd,CAAClT,GAAQ,CAACA,EAAK,aAAa,KAC5BgL,EAAS,KAAK,IAAI,SAASkI,EAAO,CAAC,CAAC,EAAEA,EAAO,CAAC,CAAC,EAAE,KAAMlI,CAAM,GAK7E,YAAK,IAAI,qBAAuB,GAC3BA,IACG,KAAK,IAAI,uBAAuB,eAChC9L,EAAI,MAAM,kCAAkC,EAE5C8L,EAAS,qBAGVA,CACX,EAcA9L,EAAI,QAAU,SAAUkB,EAAMJ,EAAMsiB,EAAYC,EAAwB,CACpE,IAAI5X,EAAMkW,EACN2B,EAAW,KAAK,IAAI,KAcxB,IAbIxiB,GAAQA,EAAK,aAAa,GAAK,KAAK,QAAU,KAAK,OAAO,OAAO,OAAS,IACtE,KAAK,IAAI,KAAO,UAExB,KAAK,IAAI,qBAAuB,GAChC,KAAK,IAAI,4BAA8B,GACvC,KAAK,IAAI,WAAasiB,EAEtBpjB,EAAI,UAAU,KAAK,KAAMkB,EAAMJ,EAAMuiB,CAAsB,EAC3D5X,EAAO,EACP,KAAK,IAAI,UAAY,CAAA,EACrB,KAAK,WAAa,IAAIzL,EAAI,WAAW,KAAMkB,EAAMJ,CAAI,EAG9C2K,EAAO,KAAK,KAAK,IAAI,IAAI,EAAE,OAAO,QACrCA,EAAOzL,EAAI,UAAU,KAAK,KAAM,KAAK,KAAK,IAAI,IAAI,EAAE,OAAOyL,CAAI,EAAGvK,EAAMJ,CAAI,EAGhF,OAAAd,EAAI,QAAQ,KAAK,KAAMkB,EAAMJ,CAAI,EAE7B,CAAC,KAAK,IAAI,sBAAwB,CAAC,KAAK,IAAI,cACxC,KAAK,IAAI,OAAS,iBAClB6gB,EAAe,CACX,MAAO,KAAK,IAAI,iBAChB,OAAQ,GAAKzgB,EAAK,GAClB,WAAYlB,EAAI,wBAEpB,KAAK,IAAI,oBAAoB,KAAK2hB,CAAY,GAGtD,KAAK,IAAI,KAAO2B,EACT,GAAKpiB,EAAK,EACrB,EAGAlB,EAAI,UAAY,SAAUkB,EAAMJ,EAAMuiB,EAAwB,CAE1D,GADA,KAAK,IAAI,WAAa,CAAA,EAClBniB,EAAK,SAAU,CAEf,IAAID,EAAIC,EAAK,SAAS,MAAM,gBAAgB,EACxCD,GACA,KAAK,IAAI,WAAW,KAAKA,EAAE,CAAC,EAAE,aAAa,CAC/C,CA+BJ,GA7BA,KAAK,IAAI,WAAW,KAAK,KAAK,IAAI,IAAI,EACjCoiB,IACD,KAAK,IAAI,eAAiB,CAAA,GAG9B,KAAK,IAAI,mBAAqB,EAC9B,KAAK,IAAI,oBAAsB,EAC/B,KAAK,IAAI,6BAA+B,GACnC,KAAK,IAAI,qBAGV,KAAK,IAAI,gCAAkC,GAF3C,KAAK,IAAI,gCAAkC,GAI/C,KAAK,IAAI,QAAU,GACf,KAAK,IAAI,OAAS,YAAc,KAAK,SAAS,IAAI,UAAY,KAAK,SAAS,IAAI,SAAS,OAEzF,KAAK,IAAI,eAAiB,GAE1B,KAAK,IAAI,eAAiB,GAE9B,KAAK,IAAI,YAAc,GACnB,KAAK,IAAI,kBAAqB,CAAE,KAAK,IAAI,kBACzC,KAAK,IAAI,kBAAoB,KAAK,IAAI,iBAC/B,KAAK,SAAS,SAASniB,EAAK,EAAE,GAAK,CAAE,KAAK,IAAI,mBACrD,KAAK,IAAI,iBAAmB,KAAK,SAAS,SAASA,EAAK,EAAE,EAAE,SAC5D,KAAK,IAAI,kBAAoB,KAAK,SAAS,SAASA,EAAK,EAAE,EAAE,UAE7D,KAAK,IAAI,kBAAoB,IAAIlB,EAAI,YAErC,KAAK,IAAI,OAAS,YAClB,GAAI,CAAC,KAAK,SAAS,SAASkB,EAAK,EAAE,EAC/B,KAAK,IAAI,iBAAmB,IAAIlB,EAAI,oBAEpC,KAAK,IAAI,iBAAmBA,EAAI,iBAAiB,KAAK,SAAS,SAASkB,EAAK,EAAE,EAAE,QAAQ,EACrF,KAAK,IAAI,OAAS,gBAAkB,KAAK,IAAI,mBAAqB,KAAK,IAAI,oBACvE,KAAK,IAAI,wBAAwB,IACjC,KAAK,IAAI,kBAAkB,MAAQ,KAAK,SAAS,SAASA,EAAK,EAAE,EAAE,SAAS,MAAM,MAAA,EAC9E,KAAK,IAAI,mBACT,KAAK,IAAI,iBAAiB,MAAQ,KAAK,SAAS,SAASA,EAAK,EAAE,EAAE,SAAS,MAAM,MAAA,IAGrF,KAAK,IAAI,4BAA4B,GAAG,CAExC,KAAK,IAAI,iBAAmB,KAAK,IAAI,kBACrC,KAAK,IAAI,kBAAkB,OAAS,KAAK,SAAS,SAASA,EAAK,EAAE,EAAE,SAAS,OAAO,MAAA,EACpF,KAAK,IAAI,iBAAiB,OAAS,KAAK,SAAS,SAASA,EAAK,EAAE,EAAE,SAAS,OAAO,MAAA,EACnF,QAASb,EAAE,EAAEC,EAAK,KAAK,IAAI,kBAAkB,OAAO,OAAOD,EAAEC,EAAKD,GAAG,EACjE,KAAK,IAAI,kBAAkB,OAAOA,CAAC,EAAI,KAAK,SAAS,SAASa,EAAK,EAAE,EAAE,SAAS,OAAOb,CAAC,EAAE,MAAA,EAE9F,QAASA,EAAE,EAAEC,EAAK,KAAK,IAAI,iBAAiB,OAAO,OAAOD,EAAEC,EAAKD,GAAG,EAChE,KAAK,IAAI,iBAAiB,OAAOA,CAAC,EAAI,KAAK,SAAS,SAASa,EAAK,EAAE,EAAE,SAAS,OAAOb,CAAC,EAAE,MAAA,CAC7F,EAMhB,KAAK,IAAI,WAAa,CAAA,EACtB,KAAK,IAAI,gBAAkB,EAC3B,KAAK,IAAI,WAAa,CAAA,EACtB,KAAK,IAAI,UAAU,MAAA,EACd,KAAK,IAAI,eACN,CAACS,GAAQA,EAAK,WAAa,SAAW,CAACA,EAAK,YAC5C,KAAK,IAAI,eAAiB,CACtB,QAAS,CAAA,IAKrB,KAAK,IAAI,iBAAmB,KAAK,KAAK,IAAI,IAAI,EAAE,IAAI,iBAGpD,KAAK,kBAAkB,KAAO,CAAA,EAC9B,KAAK,cAAc,KAAO,CAAA,EAE1B,KAAK,IAAI,qBAAuB,GAChC,KAAK,IAAI,iBAAmB,GAGxB,CAAC,KAAK,IAAI,cAAgBA,GAAQ,CAACA,EAAK,UAAY,KAAK,SAAS,SAASI,EAAK,EAAE,IAClF,KAAK,IAAI,iBAAmBlB,EAAI,iBAAiB,KAAK,SAAS,SAASkB,EAAK,EAAE,EAAE,QAAQ,GAI7F,KAAK,IAAI,kBAAoB,GAC7B,KAAK,IAAI,oBAAsB,CACnC,EAEAlB,EAAI,QAAU,SAAUkB,EAAMJ,EAAM,CAEhC,GAAI,KAAK,IAAI,kBAAoB,KAAK,SAAS,SAASI,EAAK,EAAE,EAAG,CAC9D,KAAK,SAAS,SAASA,EAAK,EAAE,EAAE,SAAS,MAAQ,KAAK,IAAI,iBAAiB,MAAM,MAAA,EACjF,KAAK,SAAS,SAASA,EAAK,EAAE,EAAE,SAAS,OAAS,KAAK,IAAI,iBAAiB,OAAO,MAAA,EACnF,QAAS,EAAE,EAAEZ,EAAK,KAAK,SAAS,SAASY,EAAK,EAAE,EAAE,SAAS,OAAO,OAAO,EAAEZ,EAAK,GAAG,EAC/E,KAAK,SAAS,SAASY,EAAK,EAAE,EAAE,SAAS,OAAO,CAAC,EAAI,KAAK,IAAI,iBAAiB,OAAO,CAAC,EAAE,MAAA,CAC7F,CA0BJ,GAxBA,KAAK,IAAI,iBAAmB,GAExBJ,GAAQA,EAAK,OAEb,KAAK,IAAI,iBAAmBA,EAAK,OAEjC,KAAK,IAAI,iBAAmB,GAEhC,KAAK,IAAI,gBAAkB,KAAK,IAAI,WAAW,MAAA,EAC/C,KAAK,IAAI,gBAAkB,KAAK,IAAI,WAAW,MAAA,EAC/C,KAAK,IAAI,QAAU,GAUnB,KAAK,IAAI,iBAAmB,GAE5B,KAAK,IAAI,aAAa,KAAK,KAAK,IAAI,gBAAgB,EAEhD,KAAK,IAAI,aAAe,KAAK,IAAI,0BAA2B,CAE5D,QADIgX,EAAM,CAAA,EACD,EAAI,KAAK,IAAI,YAAY,KAAK,OAAS,EAAG,EAAI,KAAK,IAAI,YAAY,IAAK,GAAK,GAClFA,EAAI,KAAK,KAAK,IAAI,YAAY,KAAK,KAAK,EAK5C,IAFA,KAAK,IAAI,YAAY,KAAK,IAAA,EAErB,EAAIA,EAAI,OAAS,EAAG,EAAI,GAAI,GAAK,GAClC,KAAK,IAAI,YAAY,KAAK,KAAKA,EAAI,KAAK,CAC5C,CAEJ,KAAK,IAAI,YAAc,GACvB,KAAK,IAAI,0BAA4B,EAEzC,EAIA9X,EAAI,OAAO,UAAU,iBAAmB,SAAUujB,EAAY,CAC1D,IAAI3X,EAAOrL,EAAKyT,EAAmBlT,EAAMmE,EAAKD,EAAKwe,EAAkBC,EAAWC,EAEhF,GADA9X,EAAQ,GACJ,CAAC2X,IAAe,KAAK,aAAa,IAAI,eAAiB,KAAK,aAAa,IAAI,qBAAsB,CAInG,GAHAA,EAAa,CACT,QAAS,CAAA,GAET,KAAK,aAAa,IAAI,cACtB,QAASljB,KAAK,KAAK,aAAa,IAAI,cAAe,CAC/C,IAAIyB,EAAM,KAAK,aAAa,IAAI,cAAczB,CAAC,EAC/CkjB,EAAW,QAAQ,KAAK,CACpB,MAAO,OACP,MAAOzhB,CAAA,CACV,CAAA,CAGT,GAAI,KAAK,aAAa,IAAI,oBACtB,QAASzB,KAAK,KAAK,aAAa,IAAI,oBAAqB,CACrD,IAAIuS,EAAQ,KAAK,aAAa,IAAI,oBAAoBvS,CAAC,EACvDkjB,EAAW,QAAQ,KAAK,CACpB,MAAA3Q,EAAc,MAAO,EAAA,CACxB,CAAA,CAET,CAGJ,GAAI,CAAC,KAAK,aAAa,OAAO,OAC1B,MAAO,GAOX,GALiB,OAAO2Q,GAApB,WACA,KAAK,IAAI,qBAAuBA,EAChCA,EAAa,IAGb3X,EAAO,CAEP,IADA3G,EAAM,KAAK,aAAa,OAAO,OAC1BD,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAC5Bwe,EAAM,KAAK,aAAa,OAAOxe,CAAG,EAClChF,EAAI,MAAM,WAAawjB,EAAI,IAAI,EAInC,IAFAxjB,EAAI,MAAM,KAAK,EACfiF,EAAM,KAAK,SAAS,OAAO,OACtBD,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EACrB,KAAK,SAAS,OAAOA,CAAG,EAC/BhF,EAAI,MAAM,WAAawjB,EAAI,IAAI,EAInC,IAFAxjB,EAAI,MAAM,KAAK,EACfiF,EAAM,KAAK,kBAAkB,OAAO,OAC/BD,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EACpB,KAAK,kBAAkB,OAAOA,CAAG,EACzChF,EAAI,MAAM,eAAiBwjB,EAAI,IAAI,CACvC,CAKJjjB,EAAMP,EAAI,uBAAuB,KAAK,KAAMujB,CAAU,EACtDE,EAAYljB,EAAI,CAAC,EACjBmjB,EAAgBnjB,EAAI,CAAC,EAGrB,IAAIojB,EAAOpjB,EAAI,CAAC,EAgBhB,IAdAyT,EAAS,CACL,UAAa,EACb,aAAgB,KAAK,aAAa,IAAI,eAAe,EACrD,YAAe,KAAK,aAAa,IAAI,cAAc,EACnD,qBAAsB,GACtB,UAAayP,EACb,oBAAuB,KAAK,IAAI,oBAAoB,MAAA,EACpD,KAAQE,GAER,KAAK,aAAa,IAAI,oBAAoB,IAC1C3P,EAAO,oBAAoB,EAAI,KAAK,aAAa,IAAI,oBAAoB,GAG7E/O,EAAM,KAAK,SAAS,QAAQ,OACvBD,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAC5BlE,EAAO,KAAK,SAAS,QAAQkE,CAAG,EAC5BlE,EAAK,OAASkT,EAAO,YACrBA,EAAO,UAAYlT,EAAK,QAGhC,OAAI,KAAK,aAAa,IAAI,gBACtBkT,EAAO,cAAgB,KAAK,aAAa,IAAI,eAEjDA,EAAO,SAAW,KAAK,IAAI,SAAS,SACpCA,EAAO,OAAS,KAAK,IAAI,SAAS,OAElC,KAAK,IAAI,qBAAuB,GACzB,CAACA,EAAQ0P,CAAa,CACjC,EAKA1jB,EAAI,uBAAyB,SAAUujB,EAAY,CAC/C,IAAIhjB,EAAKqjB,EAAOC,EAASC,EAAUC,EAAUC,EAAWze,EAAKzE,EAAMmjB,EAAMxR,EAAOD,EAAO0R,EAAUC,EAAuB9jB,EAAGC,EAAM8jB,EAAUC,EAAOhH,EAAqBiH,EAAiBzjB,EAAGY,EAC3LlB,EAAM,CAAA,EACN+jB,EAAkB,CAAA,EAClB,KAAK,IAAI,KAAO,eAChB,KAAK,IAAI,KAAO,eAChB,KAAK,IAAI,mBAAqB,GAC9B,KAAK,IAAI,oBAAsB,CAAA,EAC/B,KAAK,IAAI,iBAAmB,EAKxBf,GAAcA,EAAW,YAAcA,EAAW,YAClDK,EAAQ,KAAK,SAAS,aAAA,EAEtBA,EAAQ,KAAK,aAAa,KAAK,SAAS,cAAc,EAG1D,KAAK,IAAI,kBAAoB,GAC7B,SAASW,EAAYzZ,EAAGC,EAAG,CACvB,OAAID,IAAMC,CAGH,CAEX,SAASyZ,EAAU1Z,EAAG1K,EAAK,CAEvB,IADAqS,EAAQrS,EAAI,OACPoS,EAAQ,EAAGA,EAAQC,EAAOD,GAAS,EACpC,GAAI+R,EAAYzZ,EAAG1K,EAAIoS,CAAK,CAAC,EACzB,MAAO,GAGf,MAAO,EAAA,CAEX,SAASiS,EAAU3Z,EAAGC,EAAG,CACrB,OAAkB,OAAOD,GAArB,WAA0B,CAACA,EACvBA,EACO,CAAC,CAACC,EAEF,CAACA,EAGK,OAAOA,GAApB,SACOwZ,EAAYzZ,EAAGC,CAAC,EACfA,EAGDyZ,EAAU1Z,EAAGC,CAAC,EAFd,EAIf,CAGJsZ,EAAQ,CAAA,EAGR,IAAIK,EACJ,GAAInB,GAAcA,EAAW,YAAcA,EAAW,cAClDmB,EAAkB,EACdnB,EAAW,aAAe,IAC1B,IAAKljB,EAAI,EAAGC,EAAOsjB,EAAM,OAAQvjB,EAAIC,IACjC+jB,EAAMT,EAAMvjB,CAAC,CAAC,EAAI,GACdkjB,EAAW,YAAcK,EAAMvjB,CAAC,GAFGA,GAAK,EAE5C,CAOZ,IAAIskB,EAAqB,CAAA,EAErBC,EAAkB,CAAA,EA4BtB,IA3BA,KAAK,IAAI,qBAAuB,CAAA,EAChChB,EAAQA,EAAM,OAAOiB,GAAK,CACtB,IAAItkB,EAAMskB,EACV,OAAIA,EAAE,eACED,EAAgBC,EAAE,cAAc,EAChCtkB,EAAM,GAENqkB,EAAgBC,EAAE,cAAc,EAAI,GAEjCA,EAAE,eACJ,KAAK,IAAI,qBAAqBA,EAAE,YAAY,IAC7C,KAAK,IAAI,qBAAqBA,EAAE,YAAY,EAAI,GAEpD,KAAK,IAAI,qBAAqBA,EAAE,YAAY,IACxC,KAAK,aAAa,IAAI,uBAAuB,QAAQA,EAAE,IAAI,EAAI,KAC3DD,EAAgBC,EAAE,YAAY,EAC9BtkB,EAAM,GAENqkB,EAAgBC,EAAE,YAAY,EAAI,KAIvCtkB,CAAA,CACV,EAED,KAAK,IAAI,mBAAqB,CAAA,EAEzBF,EAAI,EAAGC,EAAOsjB,EAAM,OAAQvjB,EAAIC,EAAMD,GAAK,EAAG,CAG/C,GAAIkjB,GAAcA,EAAW,YAAcA,EAAW,YAAa,CAC/D,GAAIc,EAAMT,EAAMvjB,CAAC,CAAC,EACd,SAGJ,GADAS,EAAO,KAAK,YAAY8iB,EAAMvjB,CAAC,CAAC,EAC5BqkB,IAAoBnB,EAAW,YAC/B,KACJ,SAEAziB,EAAO8iB,EAAMvjB,CAAC,EACVgkB,EAAMvjB,EAAK,EAAE,EACb,SAGR,GAAIyiB,EAAY,CAEZ,GADAM,EAAU,GACNN,EAAW,SAKX,IADAM,EAAU,GACLhjB,EAAI,EAAGY,EAAO8hB,EAAW,QAAQ,OAAQ1iB,EAAIY,EAAMZ,GAAK,EAEzD,GADAojB,EAAOV,EAAW,QAAQ1iB,CAAC,EACvB4jB,EAAUR,EAAK,MAAOnjB,EAAKmjB,EAAK,KAAK,CAAC,EAAG,CACzCJ,EAAU,GACV,KAAA,UAGDN,EAAW,QAAS,CAK3B,IADAO,EAAW,GACNjjB,EAAI,EAAGY,EAAO8hB,EAAW,QAAQ,OAAQ1iB,EAAIY,EAAMZ,GAAK,EAEzD,GADAojB,EAAOV,EAAW,QAAQ1iB,CAAC,EACvB4jB,EAAUR,EAAK,MAAOnjB,EAAKmjB,EAAK,KAAK,CAAC,EAAG,CACzCH,EAAW,GACX,KAAA,CAGJA,IACAD,EAAU,GACd,SACON,EAAW,OAAQ,CAM1B,IAFAM,EAAU,GACVE,EAAW,GACNljB,EAAI,EAAGY,EAAO8hB,EAAW,OAAO,OAAQ1iB,EAAIY,EAAMZ,GAAK,EACxDojB,EAAOV,EAAW,OAAO1iB,CAAC,EACrB4jB,EAAUR,EAAK,MAAOnjB,EAAKmjB,EAAK,KAAK,CAAC,IACvCF,EAAW,IAGfA,IACAF,EAAU,GACd,CAEJ,GAAIN,EAAW,MAAO,CAKlB,IADAQ,EAAW,GACNljB,EAAI,EAAGY,EAAO8hB,EAAW,MAAM,OAAQ1iB,EAAIY,EAAMZ,GAAK,EACvDojB,EAAOV,EAAW,MAAM1iB,CAAC,EACpB4jB,EAAUR,EAAK,MAAOnjB,EAAKmjB,EAAK,KAAK,CAAC,IACvCF,EAAW,IAGfA,IACAF,EAAU,GACd,CAEJ,GAAI,CAACA,EACD,QACJ,CA2BJ,GApBI/iB,EAAK,eACA,KAAK,IAAI,mBAAmBA,EAAK,YAAY,IAC9C,KAAK,IAAI,mBAAmBA,EAAK,YAAY,EAAI,GAErD,KAAK,IAAI,mBAAmBA,EAAK,YAAY,KAIjDkjB,EAAY,IAAIhkB,EAAI,MAAM,QAASA,EAAI,KAAK,EAC5CgkB,EAAU,YAAc,CAAC,CAAC,gBAAiB,OAAO,CAAC,EAAE,OAAO,KAAK,aAAa,IAAI,kBAAkB,EACpG,KAAK,OAAO,SAAS,YAAaA,CAAS,EACvCljB,EAAK,WAAa,KAAK,IAAI,uBAC3B,KAAK,OAAO,QAAQ,MAAA,EAAQ,QAAUA,EAAK,UAE3C,KAAK,OAAO,QAAQ,MAAA,EAAQ,UAAYA,EAAK,GAKjDqjB,EAAiB,CAAA,EACb,KAAK,SAAS,SAASrjB,EAAK,EAAE,EAAE,QAC7B,EAAEyiB,GAAcA,EAAW,YAAcA,EAAW,aAAc,CAErElG,EAAc,CAAC,CAACvc,EAAM,CAAC,GAAIA,EAAK,EAAA,CAAG,CAAC,EACpCsjB,EAAW,KAAK,SAAS,SAAStjB,EAAK,EAAE,EAAE,SAC3C,QAASD,EAAE,EAAEY,EAAK2iB,EAAS,OAAQvjB,EAAEY,EAAMZ,IACxCwc,EAAY,KAAK,CAAC,KAAK,YAAY+G,EAASvjB,CAAC,CAAC,EAAG,CAAC,GAAIujB,EAASvjB,CAAC,CAAA,CAAE,CAAC,EAYtE,IATA,KAAK,SAAS,cAAcwc,CAAW,EACnC,KAAK,SAAS,SAASvc,EAAK,EAAE,EAAE,4BAChC,KAAK,OAAO,MAAM,CAAC,EAAE,QAAQ,UAAY,KAAK,SAAS,SAASA,EAAK,EAAE,EAAE,4BAEzE,KAAK,OAAO,MAAM,CAAC,EAAE,QAAQ,UAAY,KAE7C,KAAK,IAAI,iBAAmB,GAC5B,KAAK,IAAI,WAAa,EAEjBD,EAAI,EAAGY,EAAO4b,EAAY,OAAQxc,EAAIY,EAAMZ,GAAK,EAC9CA,EAAKwc,EAAY,OAAS,EAC1B,KAAK,IAAI,sBAAwB,GAEjC,OAAO,KAAK,IAAI,sBAEpB8G,EAAe,KAAK,GAAKnkB,EAAI,QAAQ,KAAK,KAAMqd,EAAYxc,CAAC,EAAE,CAAC,EAAGwc,EAAYxc,CAAC,EAAE,CAAC,CAAC,CAAC,EACrF,KAAK,IAAI,aACTwjB,EAAMhH,EAAYxc,CAAC,EAAE,CAAC,EAAE,EAAE,EAAI,EAClC,MACQ,KAAK,SAAS,SAASC,EAAK,EAAE,EAAE,WACxC,KAAK,IAAI,iBAAmB,GAC5B,KAAK,IAAI,WAAa,EACtBqjB,EAAe,KAAK,GAAKnkB,EAAI,QAAQ,KAAK,KAAMc,CAAI,CAAC,EACjDyiB,GAAcA,EAAW,YAAcA,EAAW,cAClDmB,GAAmB,IAiC3B,IA5BAJ,EAAgB,KAAK,EAAE,EAEvB,KAAK,IAAI,kBAAoB,EAE7BK,EAAmB,KAAKR,CAAc,EAKtC,KAAK,OAAO,OAAO,WAAW,EAM1B,KAAK,OAAO,MAAM,CAAC,EAAE,MAAM,QAAU,KAAK,OAAO,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,SAMpE,KAAK,OAAO,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,QAGxCD,EAAW,KAAK,OAAO,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,MAFzCA,EAAW,KAAK,OAAO,MAAM,CAAC,EAAE,MAIpCA,EAAS,CAAC,EAAE,QAAQ,OAAS,KAAK,aAAa,IAAI,cAAgBA,EAAS,CAAC,EAAE,QAAQ,QAEtFrjB,EAAE,EAAEY,EAAK,KAAK,OAAO,MAAM,OAAOZ,EAAEY,EAAKZ,GAAG,EAC7Cb,EAAI,OAAO,MAAM,gBAAgB,KAAK,OAAO,MAAMa,CAAC,CAAC,EAGzD,IAAKA,EAAE,EAAEY,EAAK,KAAK,OAAO,MAAM,OAAOZ,EAAEY,EAAKZ,GAAG,EAC7C,KAAK,OAAO,OAAO,OAAO,KAAK,OAAO,MAAMA,CAAC,CAAC,EAC9C,KAAK,OAAO,OAAO,SAAS,KAAK,OAAO,MAAMA,CAAC,CAAC,EAChD,KAAK,OAAO,OAAO,SAAS,KAAK,OAAO,MAAMA,CAAC,EAAE,EAAI,EACrD,KAAK,OAAO,OAAO,IAAI,KAAK,OAAO,MAAMA,CAAC,CAAC,EAe/C,GAFA0E,EAAM,KAAK,OAAO,OAAO,KAAM,KAAK,OAAO,KAAK,EAAE,CAAC,EAE/C,CAACA,GAAO,KAAK,IAAI,cAAgBvF,EAAI,QAAS,CAC9C,IAAI8kB,EAAOvkB,EAAI,OAAS,EAAK,uDAC7BgF,EAAMvF,EAAI,OAAO,QAAQ,KAAK,IAAI,IAAI,EAAE,qBAAqB,EAAE,KAAM8kB,CAAG,CAAA,CAExEvf,GACAhF,EAAI,KAAKgF,CAAG,CAChB,CAGJ,IAAIoe,EAAO,GACX,GAAIJ,GAAcA,EAAW,YAAcA,EAAW,YAAa,CAC/D,IAAIwB,EAAmBnB,EAAM,MAAM,EAAE,EAAE,CAAC,EACpCoB,EAAeL,EAAmB,MAAM,EAAE,EAAE,CAAC,GAC7C,CAACI,GAAoB,CAACC,GAAgBD,GAAoBC,KAC1DrB,EAAO,GACX,CAEJ,YAAK,IAAI,kBAAoB,GAGtB,CAACgB,EAAoBpkB,EAAKojB,CAAI,CACzC,EAKA3jB,EAAI,OAAO,UAAU,cAAgB,SAAUic,EAAUgJ,EAAO,CAC5D,IAAI1kB,EAAKoS,EAAIuS,EAEb,GADA3kB,EAAM,GACF,CAAC0b,EAAS,YAAcgJ,EAAO,CAE/B,IADAtS,EAAK,KAAK,MAAM,KAAK,OAAA,EAAW,IAAe,IAClC,CAET,GADAuS,EAAY,EACP,KAAK,SAAS,YAAY,aAAavS,CAAE,EAMnC,CAACuS,GAAavS,EAAK,KAC1BuS,EAAY,EAEZA,EAAY,OATiC,CAI7CjJ,EAAS,WAAa,IAAMtJ,EAAG,SAAS,EAAE,EAC1C,KAAA,CAMAuS,IAAc,EACdvS,GAAM,EAENA,GAAM,EACV,CAEJpS,EAAM,GAAKoS,CAAA,CAEf,YAAK,SAAS,YAAY,aAAasJ,EAAS,UAAU,EAAIA,EACvD1b,CACX,EAEAP,EAAI,OAAO,UAAU,sBAAwB,SAAUme,EAAWxM,EAAMwT,EAAgB,CAY/EhH,IACDA,EAAY,CAAA,GAEXxM,IACDA,EAAO,QAIX,QAFIyT,EAAU,CAAA,EACVC,EAAU,CAAA,EACLhlB,EAAE,EAAEC,EAAK6d,EAAU,OAAO9d,EAAEC,EAAKD,GAAG,EACzC,QAASQ,EAAE,EAAEY,EAAK0c,EAAU9d,CAAC,EAAE,cAAc,OAAOQ,EAAEY,EAAKZ,GAAG,EAAG,CAC7D,IAAIykB,EAAS,GAAKnH,EAAU9d,CAAC,EAAE,cAAcQ,CAAC,EAAE,GAC3CukB,EAAQE,CAAM,GACfD,EAAQ,KAAKC,CAAM,EAEvBF,EAAQE,CAAM,EAAI,EAAA,CAG1B,KAAK,YAAYD,CAAO,EACxB,IAAIE,EAAM,CAAA,EACNC,EAAO,CAAA,EACPjlB,EAAM,CAAA,EACN8b,EAAU,KAAK,IAAI,KACvB,KAAK,gBAAgB1K,CAAI,EACzB,QAAStR,EAAE,EAAEC,EAAK6d,EAAU,OAAO9d,EAAEC,EAAKD,GAAG,EAAG,CAG5C,IAAIkF,EAAM,KAAK,uBAAuB4Y,EAAU9d,CAAC,EAAEklB,EAAIC,EAAKxlB,EAAI,2BAA2B,EAC3FulB,EAAI,KAAK,CAACpH,EAAU9d,CAAC,EAAE,WAAW8d,EAAU9d,CAAC,EAAE,WAAW,SAAS,CAAC,EACpE,QAASQ,EAAE,EAAEY,EAAK8D,EAAI,CAAC,EAAE,OAAO1E,EAAEY,EAAKZ,GAAG,EAAG,CACzC,IAAI8P,EAAQpL,EAAI,CAAC,EAAE1E,CAAC,EAAE,CAAC,EACvBN,EAAIoQ,CAAK,EAAI,CACT4U,EAAI5U,CAAK,EAAE,CAAC,EACZ4U,EAAI5U,CAAK,EAAE,CAAC,EACZpL,EAAI,CAAC,EAAE1E,CAAC,EAAE,CAAC,EACf,CACJ,CAEJ,YAAK,mBAAmBskB,CAAc,EACtC,KAAK,gBAAgB9I,CAAO,EACrB9b,CACX,EAGAP,EAAI,OAAO,UAAU,sBAAwB,SAAUme,EAAW,CAC9D,IAAI9d,EAAGC,EAAMO,EAAGY,EAAMX,EAAMI,EAAMsc,EAASiI,EAAcC,EAAUrI,EAenEoI,EAAe,CAAA,EACfC,EAAW,CAAA,EACNvH,IACDA,EAAY,CAAA,GAGhB,IAAIwH,EAAe,CAAA,EACfC,EAAc,CAAA,EAClB,IAAKvlB,EAAI,EAAGC,EAAO6d,EAAU,OAAQ9d,EAAIC,EAAMD,GAAK,EAC5CulB,EAAYzH,EAAU9d,CAAC,EAAE,UAAU,GACnC,KAAK,cAAc8d,EAAU9d,CAAC,EAAG,EAAI,EAEzCulB,EAAYzH,EAAU9d,CAAC,EAAE,UAAU,EAAI,GACvCslB,EAAa,KAAKxH,EAAU9d,CAAC,EAAE,WAAW,KAAK,EAInD,IAAIwlB,EAAe1H,EAAU,MAAA,EAY7B,IAXA0H,EAAa,KACT,SAAU/a,EAAEC,EAAG,CACX,OAAID,EAAE,WAAW,MAAQC,EAAE,WAAW,MAC3B,GACAD,EAAE,WAAW,MAAQC,EAAE,WAAW,MAClC,EAEA,CACX,GAGH1K,EAAI,EAAGC,EAAOulB,EAAa,OAAQxlB,EAAIC,EAAMD,GAAK,EACnDwlB,EAAaxlB,CAAC,EAAE,WAAW,MAAQA,EAEvC,IAAKA,EAAI,EAAGC,EAAOulB,EAAa,OAAQxlB,EAAIC,EAAMD,GAAK,EAAG,CAEtD,IADAgd,EAAc,CAAA,EACTxc,EAAI,EAAGY,EAAOokB,EAAaxlB,CAAC,EAAE,cAAc,OAAQQ,EAAIY,EAAMZ,GAAK,EACpEC,EAAO+kB,EAAaxlB,CAAC,EAAE,cAAcQ,CAAC,EAClB,OAAOC,EAAK,SAA5B,MACAA,EAAK,SAAW,CAAA,GAEpBI,EAAO,KAAK,aAAa,GAAKJ,EAAK,EAAE,EACrC0c,EAAU,CAACtc,EAAMJ,CAAI,EACrBuc,EAAY,KAAKG,CAAO,EACxBqI,EAAaxlB,CAAC,EAAE,cAAcQ,CAAC,EAAE,KAAOK,EACxCwkB,EAAS,KAAK,GAAK5kB,EAAK,EAAE,EAEzB+kB,EAAaxlB,CAAC,EAAE,WAAW,UAC5Bgd,EAAY,KAAK,KAAK,SAAS,IAAI,oBAAoB,EAE3DwI,EAAaxlB,CAAC,EAAE,YAAcgd,EAE9B,KAAK,SAAS,YAAY,aAAawI,EAAaxlB,CAAC,EAAE,UAAU,EAAIwlB,EAAaxlB,CAAC,CAAA,CAMvF,IAHA,KAAK,YAAYqlB,CAAQ,EAGpBrlB,EAAI,EAAGC,EAAO6d,EAAU,OAAQ9d,EAAIC,EAAMD,GAAK,EAChDolB,EAAa,KAAK,CAAC,GAAKtH,EAAU9d,CAAC,EAAE,WAAY8d,EAAU9d,CAAC,EAAE,WAAW,SAAS,CAAC,EAGvF,IAAIE,EAAM,CAAA,EACV,OAAI4d,GAAaA,EAAU,OAGvB5d,EAAM,KAAK,uBAAuB4d,EAAU,CAAC,EAAG,CAAA,EAAIsH,EAAa,MAAM,CAAC,CAAC,GAEzE,KAAK,SAAW,IAAIzlB,EAAI,SAAS,IAAI,EACrC,KAAK,IAAM,IAAIA,EAAI,OAAO,IAC1B,KAAK,aAAe,IAAIA,EAAI,eAAe,IAAI,GAE5CO,CACX,EAGAP,EAAI,OAAO,UAAU,YAAc,SAAU8lB,EAAQC,EAAQC,EAAcC,EAAgB,CAEvF,IAAIC,EAAU,KAAK,IAAI,KACnBC,EAAU,KAAK,IAAI,KACnBC,EAAe,KAAK,IAAI,UAkB/B,GAjBO,KAAK,kBAAkB,OAAO,SAAW,IACzCL,EAAS,IAEb,KAAK,IAAI,KAAO,WAChB,KAAK,IAAI,KAAO,WAChB,KAAK,IAAI,UAAY,GAChBE,IACD,KAAK,IAAI,cAAgB,CAAA,GAQ7B,KAAK,SAAS,KAAKH,CAAM,EAExBE,EACH,QAASK,KAAS,KAAK,SAAS,WAC/B,KAAK,SAAS,cAAcA,CAAK,EAAI,GAIpC,YAAK,SAAS,UAAU,KAAK,SAAS,MAAM,EAE5C,KAAK,SAAS,UAAU,KAAK,SAAS,MAAM,EAE5C,KAAK,SAAS,YAAA,EAGd,KAAK,SAAS,YAAYN,CAAM,EAEhC,KAAK,SAAS,YAAA,EAGd,KAAK,SAAS,aAAA,EAGd,KAAK,SAAS,WAAWA,CAAM,EAI/B,KAAK,SAAS,SAAA,EAKd,KAAK,IAAI,UAAYK,EACrB,KAAK,IAAI,KAAOF,EAChB,KAAK,IAAI,KAAOC,EAET,KAAK,SAAS,aAAA,CACzB,EAEAnmB,EAAI,OAAO,UAAU,mBAAqB,SAAU8lB,EAAQC,EAAQ,CAChE,IAAIO,EACAJ,EAAU,KAAK,IAAI,KACnBC,EAAU,KAAK,IAAI,KACnBC,EAAe,KAAK,IAAI,UAY5B,GAXI,KAAK,kBAAkB,OAAO,SAAW,IACzCL,EAAS,IAEb,KAAK,IAAI,KAAO,WAChB,KAAK,IAAI,KAAO,WAChB,KAAK,IAAI,UAAY,GACrB,KAAK,IAAI,cAAgB,CAAA,EAEpBD,IACDA,EAAS,CAAA,GAEG,OAAOA,GAAnB,UACA,GAAmB,OAAOA,EAAO,OAA7B,IAAqC,CACrCQ,EAASR,EACTA,EAAS,CAAA,EACT,QAASjkB,KAAOykB,EACZR,EAAO,KAAKjkB,CAAG,CACnB,SACmB,OAAOikB,EAAO,QAA1B,SAAkC,CACzCQ,EAAS,CAAA,EACT,QAASjmB,EAAE,EAAEC,EAAKwlB,EAAO,OAAOzlB,EAAEC,EAAKD,GAAG,EACtCimB,EAAOR,EAAOzlB,CAAC,CAAC,EAAI,EACxB,EAKR,YAAK,SAAS,KAAKylB,EAAQ,EAAI,EAI/B,KAAK,SAAS,QAAQQ,CAAM,EAG5B,KAAK,SAAS,UAAU,KAAK,SAAS,MAAM,EAE5C,KAAK,SAAS,YAAA,EAEd,KAAK,SAAS,YAAYP,CAAM,EAEhC,KAAK,SAAS,YAAA,EAEd,KAAK,SAAS,aAAA,EAEd,KAAK,SAAS,WAAWA,CAAM,EAE/B,KAAK,SAAS,SAAA,EAEd,KAAK,IAAI,UAAYK,EACrB,KAAK,IAAI,KAAOF,EAChB,KAAK,IAAI,KAAOC,EAET,KAAK,SAAS,aAAA,CACzB,EAIAnmB,EAAI,cAAgB,SAAUumB,EAASC,EAAe,CAClD,IAAIjmB,EAAKkmB,EAaT,OAZKD,IACDA,EAAgB,SAEfD,IACDA,EAAUC,GAEdjmB,EAAM,CAAA,EAINkmB,EAAUF,EAAQ,MAAM,OAAO,EAC/BhmB,EAAI,KAAOP,EAAI,WAAWymB,EAAQ,CAAC,CAAC,EAChB,OAAOlmB,EAAI,KAA3B,IAEO,CAAC,KAAKimB,EAAe,KAAKD,EAAS,KAAKE,EAAQ,CAAC,CAAA,GAExDA,EAAQ,SAAW,IACnBlmB,EAAI,QAAU,IAEdkmB,EAAQ,SAAW,GAAKA,EAAQ,CAAC,IAAM,IACvClmB,EAAI,KAAOA,EAAI,KAAK,QAAQ,IAAK,GAAG,EAEpCA,EAAI,KAAOkmB,EAAQ,MAAM,EAAG,CAAC,EAAE,KAAK,GAAG,EAE3ClmB,EAAI,KAAOA,EAAI,KAAK,QAAQ,IAAK,GAAG,EACpCA,EAAI,KAAOkmB,EAAQ,CAAC,EACblmB,EACX,EAGAP,EAAI,OAAO,UAAU,gBAAkB,SAAUyQ,EAAUiW,EAAO,CAC9D,IAAIC,EACJ,GAAI,EAAAD,GAAS,KAAK,OAAOjW,EAAS,IAAI,KAGlCA,EAAS,OAAS,SAClBkW,EAAY3mB,EAAI,SAAS,KAAK,IAAI,eAAe,OAAO,CAAC,EACzD,KAAK,UAAU2mB,EAAW,QAASlW,EAAS,IAAI,GACzCA,EAAS,OAAS,UACrBA,EAAS,OAASA,EAAS,OAC3BkW,EAAY3mB,EAAI,SAAS,KAAK,IAAI,eAAeyQ,EAAS,IAAI,CAAC,EAC/D,KAAK,UAAUkW,EAAWlW,EAAS,KAAMA,EAAS,IAAI,GAE1DkW,EAAY3mB,EAAI,SAAS,KAAK,IAAI,eAAeyQ,EAAS,IAAI,CAAC,EAC/D,KAAK,UAAUkW,EAAWlW,EAAS,KAAMA,EAAS,IAAI,GAE1D,KAAK,UAAU,KAAK,OAAQ,GAAIA,EAAS,IAAI,EAC7C,KAAK,UAAU,KAAK,OAAQA,EAAS,KAAMA,EAAS,IAAI,EACpDA,EAAS,OAASA,EAAS,MAC3B,KAAK,UAAU,KAAK,OAAQA,EAAS,KAAMA,EAAS,IAAI,EAE5D,KAAK,UAAU,KAAK,OAAQA,EAAS,KAAMA,EAAS,IAAI,EACpC,OAAO,KAAK,OAAOA,EAAS,IAAI,EAAE,MAAM,sBAAsB,EAA9E,MACI,CAAC,KAAM,IAAI,EAAE,QAAQA,EAAS,KAAK,MAAM,EAAG,CAAC,EAAE,YAAA,CAAa,EAAI,GAChE,KAAK,OAAOA,EAAS,IAAI,EAAE,MAAM,sBAAsB,EAAI,IAE3D,KAAK,OAAOA,EAAS,IAAI,EAAE,MAAM,sBAAsB,EAAI,KAG/C,OAAO,KAAK,OAAOA,EAAS,IAAI,EAAE,MAAM,sBAAsB,EAA9E,MACA,KAAK,OAAOA,EAAS,IAAI,EAAE,MAAM,sBAAsB,EAAI,KAE3C,OAAO,KAAK,OAAOA,EAAS,IAAI,EAAE,MAAM,0BAA0B,EAAlF,MACA,KAAK,OAAOA,EAAS,IAAI,EAAE,MAAM,0BAA0B,EAAI,KAE/D,KAAK,IAAI,uBAAuB,kCAAkC,CAElE,QADImW,EAAc,CAAC,iBAAiB,cAAc,kBAAkB,iBAAiB,EAC5EvmB,EAAE,EAAEC,EAAKsmB,EAAY,OAAOvmB,EAAEC,EAAKD,GAAG,EAC3C,QAASQ,EAAE,EAAEY,EAAK,KAAK,IAAImlB,EAAYvmB,CAAC,CAAC,EAAE,OAAOQ,EAAEY,EAAKZ,GAAG,EACxD,KAAK,IAAI+lB,EAAYvmB,CAAC,CAAC,EAAEQ,CAAC,EAAI,KAAK,IAAI+lB,EAAYvmB,CAAC,CAAC,EAAEQ,CAAC,EAAE,YAAA,EAGlE,KAAK,IAAI,KAAO,KAAK,IAAI,KAAK,YAAA,CAAY,CAElD,EAOAb,EAAI,OAAO,UAAU,UAAY,SAAU6E,EAAOgiB,EAASC,EAAU,CACjE,IAAIvS,EAAMwS,EAAQhiB,EAAOI,EAAYH,EAAKuM,EAAMC,EAAMwV,EAAUC,EAAW/W,EAAMlK,EAAUf,EAAKiiB,EAAYlb,EAAQ3L,EAAGC,EA8BvH,GA7BAumB,EAAUA,EAAQ,QAAQ,IAAK,GAAG,EAClCC,EAAWA,EAAS,QAAQ,IAAK,GAAG,EAEhC,KAAK,IAAI,uBAAuB,mCAChCD,EAAUA,EAAQ,YAAA,EAClBC,EAAWA,EAAS,YAAA,GAGnB,KAAK,OAAOA,CAAQ,IACrB,KAAK,OAAOA,CAAQ,EAAI,CAAA,EACxB,KAAK,OAAOA,CAAQ,EAAE,MAAQ,CAAA,EAC9B,KAAK,OAAOA,CAAQ,EAAE,KAAO,CAAA,EAE7B,KAAK,OAAOA,CAAQ,EAAE,KAAK,YAAY,EAAI9mB,EAAI,WAE1C,KAAK,OAAO8mB,CAAQ,EAAE,KAAK,qBAAqB,IACjD,KAAK,OAAOA,CAAQ,EAAE,KAAK,qBAAqB,EAAI,CAAA,GAExD,KAAK,OAAOA,CAAQ,EAAE,MAAQ,CAAA,EAE9B,KAAK,OAAOA,CAAQ,EAAE,IAAM,CAAC,QAAQ,GAAM,KAAK,EAAC,EACjD,KAAK,OAAOA,CAAQ,EAAE,cAAc,EAAI,CAAA,GAO5CC,EAASliB,EAAM,QAAA,EACXA,EAAM,WAAWA,EAAM,QAAS,QAAQ,EACxCkiB,EAASliB,EAAM,YACZ,CAIHE,EAAQF,EAAM,eAAeA,EAAM,QAAS,QAAQ,EACpD,IAAIsiB,EAAc,GAClB,IAAKniB,EAAM,EAAGC,EAAMJ,EAAM,cAAcE,CAAK,EAAGC,EAAMC,EAAKD,GAAO,EAS9D,GARAuP,EAAOxP,EAAMC,CAAG,EAQZ,CAACmiB,GAAetiB,EAAM,kBAAkB0P,EAAM,OAAQ,KAAK,IAAMsS,EACjEE,EAASxS,EACT4S,EAAc,OACX,CACH,IAAI1mB,EAAOoE,EAAM,kBAAkB0P,EAAM,OAAQ,KAAK,EAClD6S,EAAgBviB,EAAM,eAAe0P,EAAM,eAAe,EAC9D,GAAI9T,GAAQ2mB,GAAiBA,EAAc,OAAQ,CAC/C,IAAIC,EAAYxiB,EAAM,kBAAkBuiB,EAAc,CAAC,EAAG,yBAAyB,EAC/EC,IACK,KAAK,OAAO5mB,CAAI,IACjB,KAAK,OAAOA,CAAI,EAAI,CAChB,KAAM,CAAA,IAGd,KAAK,OAAOA,CAAI,EAAE,KAAK,yBAAyB,EAAI4mB,EAAU,MAAM,KAAK,EAC7E,CACJ,CAER,CAMJ,IADAtiB,EAAQF,EAAM,eAAekiB,EAAQ,MAAM,EACtC1mB,EAAI,EAAGC,EAAOuE,EAAM,cAAcE,CAAK,EAAG1E,EAAIC,EAAMD,GAAK,EAAG,CAC7D,IAAIinB,EAAWviB,EAAM1E,CAAC,EAClBgiB,EAAOxd,EAAM,kBAAkByiB,EAAU,MAAM,EAC/C5V,EAAS7M,EAAM,kBAAkByiB,EAAU,QAAQ,EACvD,KAAK,IAAI,OAAOjF,CAAI,EAAI3Q,CAAA,CAQ5B,IAAI6V,EAAoB1iB,EAAM,eAAekiB,EAAQ,OAAQ,SAAS,EAAE,OACxE,GAAIQ,EAAmB,CACnB,QAAS1lB,KAAO,KAAK,OAAOilB,CAAQ,EAAE,IAAI,KACtC,OAAO,KAAK,OAAOA,CAAQ,EAAE,MAAMjlB,CAAG,EAE1C,KAAK,OAAOilB,CAAQ,EAAE,IAAM,CAAC,QAAQ,GAAM,KAAK,EAAC,CAAC,CAGtD/hB,EAAQF,EAAM,eAAekiB,EAAQ,MAAM,EAE3C,IAAIS,EAAc,CAAC,aAAa,CAAA,EAAG,kBAAkB,CAAA,EAAG,eAAe,EAAC,EACpEC,EAAqB,GACrBC,EAAmB,CAAA,EACvB,IAAK1iB,EAAM,EAAGC,EAAMJ,EAAM,cAAcE,CAAK,EAAGC,EAAMC,EAAKD,GAAO,EAAG,CASjE,GARAuM,EAAOxM,EAAMC,CAAG,EAIhBgiB,EAAWniB,EAAM,kBAAkB0M,EAAM,MAAM,EAC3CyV,IAAa,cACbA,EAAW,aAEXA,EAAS,MAAM,EAAE,CAAC,IAAM,UAAW,CACnC,GAAIA,IAAa,UACbS,EAAqB,OAClB,CACH,IAAI7f,EAAQ/C,EAAM,kBAAkB0M,EAAM,OAAO,EAC7CoW,EAAWX,EAAS,MAAM,CAAC,EAC3BE,EAAariB,EAAM,kBAAkB0M,EAAM,aAAa,EACvD2V,IACDA,EAAa,UAEZtf,IACDA,EAAQ,kBACJ+f,EAAS,MAAM,EAAE,CAAC,IAAM,MACxB/f,EAAQ,eAGZ+f,EAAS,MAAM,EAAE,CAAC,IAAM,MACxBA,EAAWA,EAAS,MAAM,CAAC,GAE1BH,EAAY5f,CAAK,EAAE+f,CAAQ,IAC5BH,EAAY5f,CAAK,EAAE+f,CAAQ,EAAI,CAAA,GAEnCH,EAAY5f,CAAK,EAAE+f,CAAQ,EAAET,CAAU,EAAIF,CAAA,CAE/C,KAAK,OAAOF,CAAQ,EAAE,IAAI,KAAKE,CAAQ,EAAI,EAAA,CAE3B,OAAO,KAAK,OAAOF,CAAQ,EAAE,MAAME,CAAQ,EAA3D,MACA,KAAK,OAAOF,CAAQ,EAAE,MAAME,CAAQ,EAAI,CAAA,GAE5CxV,EAAO,OACP0V,EAAa,GAITriB,EAAM,kBAAkB0M,EAAM,MAAM,IACpCC,EAAO3M,EAAM,kBAAkB0M,EAAM,MAAM,GAK3C1M,EAAM,kBAAkB0M,EAAM,aAAa,IAC3C2V,EAAariB,EAAM,kBAAkB0M,EAAM,aAAa,GAMxD1M,EAAM,kBAAkB0M,EAAM,QAAQ,IACtC,KAAK,OAAOuV,CAAQ,EAAE,cAAc,EAAEE,CAAQ,EAAIniB,EAAM,kBAAkB0M,EAAM,QAAQ,GAGxF2V,GACA,KAAK,OAAOJ,CAAQ,EAAE,MAAME,CAAQ,EAAEE,CAAU,EAAI,CAAA,EACpD,KAAK,OAAOJ,CAAQ,EAAE,MAAME,CAAQ,EAAEE,CAAU,EAAE1V,CAAI,EAAI,CAAA,EAC1DxF,EAAS,KAAK,OAAO8a,CAAQ,EAAE,MAAME,CAAQ,EAAEE,CAAU,EACzDQ,EAAiBV,CAAQ,EAAI,KAE7B,KAAK,OAAOF,CAAQ,EAAE,MAAME,CAAQ,EAAExV,CAAI,EAAI,CAAA,EAC9CxF,EAAS,KAAK,OAAO8a,CAAQ,EAAE,MAAME,CAAQ,GAK7CniB,EAAM,cAAcA,EAAM,eAAe0M,EAAM,UAAU,CAAC,GAK1DvF,EAAOwF,CAAI,EAAE,CAAC,EAAI3M,EAAM,aAAa0M,EAAM,QAAQ,EAC/CvF,EAAOwF,CAAI,EAAE,CAAC,EAAE,QAAQ,IAAI,EAAI,KAChC,KAAK,IAAI,mBAAqB,IAMlCxF,EAAOwF,CAAI,EAAE,CAAC,EAAI3M,EAAM,aAAa0M,EAAM,UAAU,EACjDvF,EAAOwF,CAAI,EAAE,CAAC,EAAE,QAAQ,IAAI,EAAI,KAChC,KAAK,IAAI,mBAAqB,MAOlCxF,EAAOwF,CAAI,EAAI3M,EAAM,aAAa0M,CAAI,EAClCvF,EAAOwF,CAAI,EAAE,QAAQ,IAAI,EAAI,KAC7B,KAAK,IAAI,mBAAqB,IAEtC,CAUJ,GARK,KAAK,OAAOsV,CAAQ,EAAE,MAAM,aAC7B,KAAK,OAAOA,CAAQ,EAAE,MAAM,WAAa,CAAA,GAExC,KAAK,OAAOA,CAAQ,EAAE,MAAM,WAAW,OACxC,KAAK,OAAOA,CAAQ,EAAE,MAAM,WAAW,KAAU,CAAC,aAAc,aAAa,GAI7EW,EAAoB,CACpB,QAASG,KAAQF,EAAkB,CAC/B,IAAIG,EAAkB,CAAA,EAClBC,EAAgB,EACpB,QAASC,KAAQ,KAAK,OAAOjB,CAAQ,EAAE,MAAMc,CAAI,EACzC,CAAC,YAAY,UAAU,EAAE,QAAQG,CAAI,EAAI,GACzCF,EAAgBE,CAAI,EAAI,KAAK,OAAOjB,CAAQ,EAAE,MAAMc,CAAI,EAAEG,CAAI,EAE9DD,GAAiB,EAGzB,GAAI,CAACA,GACD,GAAID,EAAgB,SAGhB,QAASE,KAAQF,EAAgB,SAC7B,KAAK,OAAOf,CAAQ,EAAE,MAAMc,CAAI,EAAEG,CAAI,EAAIF,EAAgB,SAASE,CAAI,UAEpEF,EAAgB,UAEvB,QAASE,KAAQF,EAAgB,UAC7B,KAAK,OAAOf,CAAQ,EAAE,MAAMc,CAAI,EAAEG,CAAI,EAAIF,EAAgB,UAAUE,CAAI,EAGpF,CAEJ,KAAK,OAAOjB,CAAQ,EAAE,IAAI,OAAO,EAAIU,CAAA,CAKzC,IAAKR,KAAY,KAAK,OAAOF,CAAQ,EAAE,MACnC,IAAKzmB,EAAI,EAAGC,EAAO,EAAGD,EAAIC,EAAMD,GAAK,EAEjC,GADA6mB,EAAalnB,EAAI,QAAQK,CAAC,EACtB,KAAK,OAAOymB,CAAQ,EAAE,MAAME,CAAQ,EAAEE,CAAU,EAChD,IAAK1V,KAAQ,KAAK,OAAOsV,CAAQ,EAAE,MAAME,CAAQ,EACxC,KAAK,OAAOF,CAAQ,EAAE,MAAME,CAAQ,EAAEE,CAAU,EAAE1V,CAAI,IACvD,KAAK,OAAOsV,CAAQ,EAAE,MAAME,CAAQ,EAAEE,CAAU,EAAE1V,CAAI,EAAI,KAAK,OAAOsV,CAAQ,EAAE,MAAME,CAAQ,EAAExV,CAAI,GAUxH,IADAzM,EAAQF,EAAM,eAAekiB,EAAQ,eAAe,EAC/C/hB,EAAM,EAAGC,EAAMJ,EAAM,cAAcE,CAAK,EAAGC,EAAMC,EAAKD,GAAO,EACpD,CACNiiB,EAAYliB,EAAMC,CAAG,EAIrBG,EAAaN,EAAM,WAAWoiB,CAAS,EACvC,IAAKjhB,KAAYb,EACb,GAAIA,EAAW,eAAea,CAAQ,GAClC,GAAIA,IAAa,yBAA2BA,IAAa,+BACjDb,EAAWa,CAAQ,IAAM,OAEzB,KAAK,OAAO8gB,CAAQ,EAAE,KAAK9gB,EAAS,MAAM,CAAC,CAAC,EAAI,GAGhD,KAAK,OAAO8gB,CAAQ,EAAE,KAAK9gB,EAAS,MAAM,CAAC,CAAC,EAAI,WAE7CA,IAAa,2BAA4B,CAChD,IAAIgiB,EAA0B7iB,EAAWa,CAAQ,EAAE,MAAM,KAAK,EAC9D,KAAK,OAAO8gB,CAAQ,EAAE,KAAK9gB,EAAS,MAAM,CAAC,CAAC,EAAIgiB,CAAA,SACzChiB,IAAa,cAAe,CACnC,IAAIiiB,EAAa9iB,EAAWa,CAAQ,EAAE,MAAM,SAAS,EACrD,KAAK,OAAO8gB,CAAQ,EAAE,KAAK9gB,EAAS,MAAM,CAAC,CAAC,EAAIiiB,CAAA,SACzCjiB,IAAa,uBAAwB,CAC5C,IAAIlE,EAAMqD,EAAWa,CAAQ,EAAE,MAAM,SAAS,EAC9C,KAAK,OAAO8gB,CAAQ,EAAE,KAAK,qBAAqB,EAAIhlB,CAAA,SAC7CkE,IAAa,sBAAuB,CAE3C,KAAK,OAAO8gB,CAAQ,EAAE,KAAK,oBAAoB,EAAI,CAAA,EAEnD,QADI1mB,EAAM+E,EAAWa,CAAQ,EAAE,MAAM,KAAK,EACjC3F,EAAE,EAAEC,EAAKF,EAAI,OAAOC,EAAEC,EAAKD,GAAG,EACnC,KAAK,OAAOymB,CAAQ,EAAE,KAAK,oBAAoB,EAAE1mB,EAAIC,CAAC,CAAC,EAAI,EAC/D,SACO2F,IAAa,yBAA0B,CAE9C,KAAK,OAAO8gB,CAAQ,EAAE,KAAK,uBAAuB,EAAI,CAAA,EAEtD,QADI1mB,EAAM+E,EAAWa,CAAQ,EAAE,MAAM,KAAK,EACjC3F,EAAE,EAAEC,EAAKF,EAAI,OAAOC,EAAEC,EAAKD,GAAG,EACnC,KAAK,OAAOymB,CAAQ,EAAE,KAAK,uBAAuB,EAAE1mB,EAAIC,CAAC,CAAC,EAAI,EAClE,SACO2F,IAAa,oBAAqB,CAEzC,KAAK,OAAO8gB,CAAQ,EAAE,KAAK,kBAAkB,EAAI,CAAA,EAEjD,QADI1mB,EAAM+E,EAAWa,CAAQ,EAAE,MAAM,KAAK,EACjC3F,EAAE,EAAEC,EAAKF,EAAI,OAAOC,EAAEC,EAAKD,GAAG,EACnC,KAAK,OAAOymB,CAAQ,EAAE,KAAK,kBAAkB,EAAE1mB,EAAIC,CAAC,CAAC,EAAI,EAC7D,EAGZ,CAOR,IADA0E,EAAQF,EAAM,eAAekiB,EAAQ,MAAM,EACtC/hB,EAAM,EAAGC,EAAMJ,EAAM,cAAcE,CAAK,EAAGC,EAAMC,EAAKD,GAAO,EACpD,CACN,IAAIkL,EAAOnL,EAAMC,CAAG,EAIpB,KAAK,OAAO8hB,CAAQ,EAAE,MAAMjiB,EAAM,kBAAkBqL,EAAM,MAAM,CAAC,EAAIA,CAAA,CAM7ElQ,EAAI,kBAAkB,KAAM8mB,EAAUjiB,EAAOkiB,CAAM,CACvD,EAGA/mB,EAAI,eAAiB,SAAU6E,EAAOqjB,EAAiB,CACnD,IAAIC,EAAWnoB,EAAI,SAAS6E,CAAK,EAEjC,SAASujB,EAAiBC,EAAYtB,EAAQ,CAC1C,IAAI9U,EAAQ,CAAC,OAAQ,MAAM,EAC3B,GAAI8U,EAEA,QADIuB,EAAmBtoB,EAAI,cAAc+mB,CAAM,EACtC1mB,EAAE,EAAEC,EAAK2R,EAAM,OAAO5R,EAAEC,EAAKD,IAC9BioB,EAAiBrW,EAAM5R,CAAC,CAAC,GAAKgoB,EAAW,QAAQC,EAAiBrW,EAAM5R,CAAC,CAAC,CAAC,IAAM,IACjFgoB,EAAW,KAAKC,EAAiBrW,EAAM5R,CAAC,CAAC,CAAC,CAGtD,CAGJ,IAAIkoB,EAAY,CAAC,OAAO,EAExB,SAASC,EAAyBC,EAAU,CAExC,QADI1jB,EAAQojB,EAAS,eAAeA,EAAS,QAASM,CAAQ,EACrDpoB,EAAE,EAAEC,EAAKyE,EAAM,OAAO1E,EAAEC,EAAKD,IAAK,CACvC,IAAIqoB,EAAcP,EAAS,kBAAkBpjB,EAAM1E,CAAC,EAAG,QAAQ,EAC/D,GAAIqoB,EAAa,CACbA,EAAcA,EAAY,MAAM,IAAI,EACpC,QAAS7nB,EAAE,EAAEY,EAAKinB,EAAY,OAAO7nB,EAAEY,EAAKZ,IACxC,KAAK,iBAAiB0nB,EAAWG,EAAY7nB,CAAC,CAAC,CACnD,CACJ,CACJ,CAGJunB,EAAiBG,EAAWL,CAAe,EAE3C,IAAIS,EAAYR,EAAS,eAAeA,EAAS,QAAS,OAAO,EAAE,CAAC,EAChE3B,EAAgB2B,EAAS,kBAAkBQ,EAAW,gBAAgB,EAC1EP,EAAiBG,EAAW/B,CAAa,EAGzC,QADIoC,EAAY,CAAC,SAAU,KAAM,UAAW,WAAW,EAC9CvoB,EAAE,EAAEC,EAAKsoB,EAAU,OAAOvoB,EAAEC,EAAKD,IACtCmoB,EAAyBL,CAAiC,EAE9D,OAAOI,CACX,EAIAvoB,EAAI,KAAO,CAAA,EAEXA,EAAI,KAAK,aAAe,CACpB,MAAO,SAAUG,EAAO6L,EAAQ,CAC5B,GAAI,KAAK,YAAchM,EAAI,MAAO,CAE9BG,EAAM,MAAM,KAAO,eACnBA,EAAM,MAAM,KAAO,eACnBA,EAAM,MAAM,UAAY,GAExB,IAAIiM,EAAO,SAASjM,EAAO,CACvBA,EAAM,IAAI,KAAO,eACjBA,EAAM,IAAI,KAAO,eACjBA,EAAM,IAAI,UAAY,EAAA,EAE1B,KAAK,MAAM,KAAKiM,CAAI,CAAA,CAGxBJ,EAAO,KAAK,IAAI,CAAA,GAOxBhM,EAAI,KAAK,OAAS,CACd,MAAO,SAAUG,EAAO6L,EAAQ,CAC5B,IAAII,EACA,KAAK,YAAcpM,EAAI,QAEvBoM,EAAO,SAAUjM,EAAO,CACpBA,EAAM,IAAI,KAAK,KAAK,OAAWH,EAAI,OAAO,CAAA,GAG9C,KAAK,YAAcA,EAAI,MAEvBoM,EAAO,SAAUjM,EAAO,CACpBA,EAAM,IAAI,KAAK,IAAA,CAAI,GAG3B,KAAK,MAAM,KAAKiM,CAAI,EACpBJ,EAAO,KAAK,IAAI,CAAA,EAGpB,UAAW,SAAU7L,EAAO6E,EAAK,CACzB,KAAK,YAAchF,EAAI,KACvBG,EAAM,UAAU,KAAK,KAAM6E,CAAI,EAC/B7E,EAAM,UAAU,QAAQ,KAAM6E,CAAI,IAElC7E,EAAM,UAAU,KAAK,IAAA,EACrBA,EAAM,UAAU,QAAQ,IAAA,EAC5B,GAMRH,EAAI,KAAK,SAAW,CAChB,MAAO,SAAUG,EAAO6L,EAAQ,CAC5B,GAAI,KAAK,YAAchM,EAAI,MAAO,CAE9BG,EAAM,MAAM,KAAO,WACnBA,EAAM,MAAM,KAAO,WACnBA,EAAM,MAAM,UAAY,GAGxB,IAAIiM,EAAO,SAASjM,EAAO,CACvBA,EAAM,IAAI,KAAO,WACjBA,EAAM,IAAI,KAAO,WACjBA,EAAM,IAAI,UAAY,EAAA,EAE1B,KAAK,MAAM,KAAKiM,CAAI,CAAA,CAuBxB,GAAI,KAAK,YAAcpM,EAAI,IAAK,CAa5B,GARAG,EAAM,IAAI,aAAeA,EAAM,IAAI,SAAW,WACtCA,EAAM,SAAS,IAAI,UAChBA,EAAM,SAAS,IAAI,SAAS,QAC/BA,EAAM,SAAS,IAAI,sBAChBA,EAAM,SAAS,IAAI,qBAAqB,QAC5CA,EAAM,IAAI,cAAgBH,EAAI,UAC9BG,EAAM,IAAI,cAAgBH,EAAI,QAEjCG,EAAM,IAAI,cACPA,EAAM,cAAc,IAAI,gBAAgB,OAAQ,CAEnD,IAAI0oB,EAAW1oB,EAAM,cAAc,IAAI,gBAAgB,CAAC,EAAE,MAAA,EAE1DA,EAAM,cAAc,IAAI,gBAAkB,CAAC0oB,CAAQ,EAAE,OAAO1oB,EAAM,cAAc,IAAI,eAAe,CAAA,CAIvGA,EAAM,SAAS,IAAM,IAAIH,EAAI,SAAS,YAAYG,EAAO,eAAe,CAAA,CAE5E6L,EAAO,KAAK,IAAI,CAAA,GAOxBhM,EAAI,KAAK,UAAU,EAAI,CAEhB,MAAO,UAAY,CAAA,GAQ1BA,EAAI,KAAK,KAAO,CACZ,MAAO,SAAUG,EAAO6L,EAAQ,CAC5B,IAAII,EAAM0c,EAAU7jB,EAAKD,EAAK8J,EAAMia,EAAK1Y,EAAO2Y,EAAOrmB,EAAOC,GAC1D,KAAK,YAAc5C,EAAI,OAAS,KAAK,YAAcA,EAAI,aAIvDG,EAAM,QAAQ,OAAOA,EAAOA,EAAM,QAAQ,KAAK,EAC/CA,EAAM,IAAI,WAAaH,EAAI,KAAK,WAAW,IAAI,EAC/CG,EAAM,IAAI,WAAW,QAAQ,OAAS,GACtCA,EAAM,IAAI,WAAW,QAAQ,OAAS,GACtCA,EAAM,QAAQ,UAAU,IAAI,EAC5BA,EAAM,MAAM,WAAa,CAAA,EACzBA,EAAM,MAAM,eAAiB,KAAK,UAC7BA,EAAM,MAAM,WACbH,EAAI,KAAK,gBAAgB,KAAK,KAAMG,EAAO6L,CAAM,EAEjD7L,EAAM,MAAM,UACZiM,EAAOpM,EAAI,mBAEXoM,EAAO,SAAUjM,EAAOe,EAAMJ,EAAM,CAChC,IAAImoB,EAMJ,GALA9oB,EAAM,IAAI,oBAAsB,GAChCA,EAAM,IAAI,SAAW,CAAA,EACrBA,EAAM,IAAI,UAAY,CAAA,EACtB8oB,EAAK,CAAA,EAED,KAAK,UAAU,QACZ,EAAE9oB,EAAM,IAAI,cACP,KAAK,UAAU,CAAC,IAAM,YAAa,CA2B3C,IAzBA2oB,EAAW5nB,EAAK,KAAK,UAAU,CAAC,CAAC,EACb,OAAO4nB,EAAvB,MACAA,EAAW,CAAC,aAAc,CAAC,CAAC,CAAC,CAAC,CAAA,EAC1B3oB,EAAM,IAAI,uBAAuB,2BAC7BW,GAAQ,KAAK,UAAU,CAAC,IAAM,gBAAkBA,EAAK,cAAc,IACnEgoB,EAAWhoB,EAAK,cAAc,IAI1CX,EAAM,IAAI,YAAc2oB,EAexB7jB,EAAM,KAAK,UAAU,OAChBD,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAC5B8J,EAAO,KAAK,UAAU9J,CAAG,GACL,OAAO7E,EAAM,IAAI,YAAa2O,EAAQ,MAAO,EAA7D,KAEOA,IAAS,SAA2B,OAAO3O,EAAM,IAAI,YAAY,WAA7C,MAC3B8oB,EAAG,KAAKna,CAAI,EAMpB,IAHAia,EAAM,CAAA,EACN1Y,EAAQ,CAAC,OAAQ,QAAS,KAAK,EAC/BpL,EAAMoL,EAAM,OACPrL,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EACxBikB,EAAG,QAAQ5Y,EAAMrL,CAAG,CAAC,EAAI,IACzB+jB,EAAI,KAAK1Y,EAAMrL,CAAG,CAAC,EAU3B,IAPAikB,EAAKF,EAAI,MAAA,EAKTC,EAAQ,EACR/jB,EAAMgkB,EAAG,OACJjkB,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAI5B,GAHA8J,EAAOma,EAAGjkB,CAAG,EACbrC,EAAQxC,EAAM,IAAI,YAAY2O,CAAI,EAClClM,EAAMzC,EAAM,IAAI,YAAa2O,EAAO,MAAO,EACvCnM,IAAUC,EAAK,CACfomB,EAAQhkB,EACR,KAAA,CAUR7E,EAAM,IAAI,iBAAmB8oB,EAAG,MAAMD,CAAK,CAAA,MAgB3C7oB,EAAM,IAAI,YAAc,EAC5B,EAGR,KAAK,MAAM,KAAKiM,CAAI,EAGpBA,EAAO,SAAUjM,EAAOe,EAAM,CAC1B,GAAKA,EAAK,KAAK,UAAU,CAAC,CAAC,IAG3Bf,EAAM,OAAO,SAAS,OAAQ,IAAI,EAC9B,KAAK,UAAU,CAAC,IAAM,WAClBe,EAAK,OAAS,cAAgBA,EAAK,OAAS,gBAC7Cf,EAAM,IAAI,mCAAmC,QAAQe,EAAK,OAAO,IAAM,IACvE,CAACf,EAAM,IAAI,WACX,GAAKe,EAAK,mBAAmB,GAAM,GAAKf,EAAM,IAAI,YAAY,MAC9D,KAAK,UAAU,SAAW,GAC1B,KAAK,UAAU,CAAC,IAAM,SASzB,QAAS0B,KAAO1B,EAAM,IAAI,YACtB,GAAIA,EAAM,IAAI,YAAY,eAAe0B,CAAG,GACpCA,EAAI,MAAM,EAAG,CAAC,IAAM,OAAQ,CAC5B1B,EAAM,IAAI,YAAc,CAAA,EACxB,IAAIC,EAAMD,EAAM,OAAO,QAAQ,QAAQ,MAAM,EAAE,EAAE,CAAC,EAAE,MACpDA,EAAM,IAAI,YAAY,KAAOC,EAC7BD,EAAM,IAAI,YAAY,IAAMC,EAAI,OAAS,CAAA,EAIzD,EAEJ,KAAK,MAAM,KAAKgM,CAAI,GAGpB,CAACjM,EAAM,MAAM,YAAc,KAAK,YAAcH,EAAI,KAAO,KAAK,YAAcA,EAAI,aAEhFoM,EAAO,SAAUjM,EAAOe,EAAM,CACrBA,EAAK,KAAK,UAAU,CAAC,CAAC,GAG3Bf,EAAM,OAAO,OAAA,CAAO,EAExB,KAAK,MAAM,KAAKiM,CAAI,GAExBJ,EAAO,KAAK,IAAI,GAEZ,KAAK,YAAchM,EAAI,KAAO,KAAK,YAAcA,EAAI,aAChDG,EAAM,MAAM,WACbH,EAAI,KAAK,cAAc,KAAK,KAAMG,EAAO6L,CAAM,EAEvD,GAMRhM,EAAI,KAAK,WAAW,EAAI,CACpB,MAAO,SAAUG,EAAO6L,EAAQ,CAC5B,IAAII,EAAMpH,EAAKC,EAAKikB,EAAYjlB,EAAOklB,EAAWC,EAAMC,EAAgBC,EAASC,EAAcC,EAAYC,EAAIC,EAAoBC,EAAOzT,EAAM0T,EAAOla,EAAQnL,EAAKslB,EAAW/oB,EAAMyT,EAChL,KAAK,QAAQ,OACd,KAAK,QAAQ,KAAO,QAIxBpU,EAAM,MAAM,WAAW,KAAK,KAAK,QAAQ,IAAI,EAK7C,IAAI2pB,EAAgB3pB,EAAM,MAAM,eAAe,CAAC,EAEhD,SAAS4pB,EAAeC,EAAQtY,EAAQ5P,EAAK,CACzC,GAAI,CAACA,EACD,OAAOA,EAGX,GADAA,EAAM,GAAK9B,EAAI,KAAK,MAAM,KAAK,QAAQ,IAAI,EAAEgqB,CAAM,EAAE7pB,EAAO2B,EAAK4P,EAAQ,KAAK,cAAc,EAC5E,KAAK,QAAQ,OAAzB,SACA,GAAIvR,EAAM,IAAI,cACV2B,EAAMA,EAAI,QAAQ,MAAO,EAAE,MAE3B,SAASzB,EAAI,EAAGC,EAAO,KAAK,YAAY,OAAQD,EAAIC,EAAMD,GAAK,EAC3D,GAAyB,KAAK,YAAYA,CAAC,EAAE,CAAC,IAA1C,kBAA0D,KAAK,YAAYA,CAAC,EAAE,CAAC,IAAhC,OAAmC,CAClFyB,EAAMA,EAAI,QAAQ,MAAO,EAAE,EAC3B,KAAA,EAKhB,OAAOA,CAAA,CAGXsK,EAAO,SAAUjM,EAAOe,EAAM,CAE1B,GAAKf,EAAM,IAAI,YAGXA,EAAM,IAAI,4BAA8B,OAFxC,QAKJ,IAAI8pB,EAAqB,GAiCzB,GA/BAf,EAAa,GACbjlB,EAAQ,GACRklB,EAAY,GACZhpB,EAAM,IAAI,SAAS,KAAK,KAAK,QAAQ,IAAI,EAGrCA,EAAM,IAAI,YAAY,SAAsB,KAAK,QAAQ,OAAxB,SACjC8pB,EAAqB9pB,EAAM,IAAI,YAAY,QAC3CA,EAAM,OAAO,OAAOA,EAAM,IAAI,YAAY,QAAS,IAAI,GAGvDA,EAAM,IAAI,cACV8D,EAAQ9D,EAAM,IAAI,YAAY,KAAK,QAAQ,IAAI,EAC/CgpB,EAAYhpB,EAAM,IAAI,YAAa,KAAK,QAAQ,KAAO,MAAO,GAEnD,KAAK,QAAQ,OAAxB,QAAgC8D,IAAU,GAAK,CAAC9D,EAAM,IAAI,uBAC1D8D,EAAQ,IAEZmlB,EAAO,CAACjpB,EAAM,IAAI,qBAClBkpB,EAAiBlpB,EAAM,IAAI,eAC3BmpB,EAAUnpB,EAAMA,EAAM,IAAI,IAAI,EAAE,IAAI,WAAa,eAAiBA,EAAMA,EAAM,IAAI,IAAI,EAAE,IAAI,WAAa,qBACzGopB,EAAeppB,EAAM,IAAI,8BAA8B,EACnDipB,GAAQG,GAAgBD,IACxBnpB,EAAM,IAAI,WAAW,KAAK8D,CAAK,EAC/BulB,EAAarpB,EAAM,IAAI,gBAAgB,QAAUA,EAAM,IAAI,WAAW,OAClEqpB,GAAcH,GACVlpB,EAAM,IAAI,gBAAiBA,EAAM,IAAI,WAAW,OAAS,CAAE,IAAM8D,IACjEA,EAAQ,KAIA,OAAOA,EAAvB,IAA8B,CAC9BwlB,EAAK,GACLC,EAAK,GAGU,KAAK,QAAQ,OAAxB,SACI,SAASzlB,EAAO,EAAE,EAAI,KAAO,SAASA,EAAO,EAAE,EAAI,IACnDylB,EAAKvpB,EAAM,QAAQ,IAAI,GAEvB,SAAS8D,EAAO,EAAE,EAAI,IACtBwlB,EAAKtpB,EAAM,QAAQ,IAAI,EACvB8D,EAAS,SAASA,EAAO,EAAE,EAAI,IAE/BklB,IACI,SAASA,EAAW,EAAE,EAAI,KAAO,SAASA,EAAW,EAAE,EAAI,GAClDhpB,EAAM,QAAQ,IAAI,EAE3B,SAASgpB,EAAW,EAAE,EAAI,IACjBhpB,EAAM,QAAQ,IAAI,EAC3BgpB,EAAa,SAASA,EAAW,EAAE,EAAI,MAOnD,QADIe,EAAc,GAAG/pB,EAAM,IAAI,YAAY,MACpC+pB,EAAY,OAAS,GACxBA,EAAc,IAAIA,EAEtBA,EAAc,SAASA,EACvB,IAAIxY,EAASvR,EAAM,OAAOA,EAAM,IAAI,IAAI,EAAE,cAAc,EAAE+pB,CAAW,EACrE,GAAI,KAAK,QAAQ,KAAM,CACnB,IAAIF,EAAS,KAAK,QAAQ,KACtBG,EAAa,KAAK,QAAQ,KAC1B,KAAK,QAAQ,OAAS,OAClBH,IAAW,WAAa7pB,EAAM,OAAOA,EAAM,IAAI,IAAI,EAAE,KAAK,6BAA6B,IACnF8D,GAAS,IACT+lB,EAAS,WAETb,GAAa,IACbgB,EAAa,YAIzBlmB,EAAQ8lB,EAAe,KAAK,KAAMC,EAAQtY,EAAQzN,CAAK,EACvDklB,EAAYY,EAAe,KAAK,KAAMI,EAAYzY,EAAQyX,CAAS,CAAA,CAGvE,GADAhpB,EAAM,OAAO,UAAU,OAAO,EAC1BA,EAAM,IAAI,iBAAiB,OAAQ,CAInC,IAFAwpB,EAAQ,GACR1kB,EAAM9E,EAAM,IAAI,iBAAiB,OAC5B6E,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAE5B,GADAlE,EAAOX,EAAM,IAAI,iBAAiB6E,CAAG,EACjC7E,EAAM,IAAI,SAAS,QAAQW,CAAI,IAAM,GAAI,CACzC6oB,EAAQ,GACR,KAAA,CAGR,GAAIA,EAAO,CACP,GAAI,GAAKR,GAAc,IAAK,CAUxB,GATIhpB,EAAM,QAAQ,MAAM,SAAW,IAC/B+oB,EAAa,IAQb/oB,EAAM,IAAI,mBAAmB,GAC1BA,EAAM,IAAI,mBAAmB,IAAM,YACnC,CAACA,EAAM,IAAI,YAAY,KACvB,CAACA,EAAM,IAAI,YAAY,OACvB,CAACA,EAAM,IAAI,YAAY,QACvB,KAAK,QAAQ,OAAS,QACtB8D,GAASklB,EAAW,CAIvBA,EAAYhpB,EAAM,IAAI,aAAa8D,EAAQ,IAAMklB,EAAW,EAAI,EAChE,IAAIiB,EAAkBjqB,EAAM,QAAQ,sBAAsB,EAC1DgpB,EAAYA,EAAU,MAAMA,EAAU,QAAQiB,CAAe,EAAI,CAAC,CAAA,CAEtEH,EAAqBd,EACrBhpB,EAAM,QAAQ,OAAOgpB,EAAW,IAAI,EAChCD,IACA3U,EAAOpU,EAAM,QAAQ,QAAQ,MAAA,EAAQ,MAAM,CAAC,EACxCoU,IACAA,EAAK,QAAQ,OAAS,IAG9B,CAEJ0V,EAAqBhmB,EACrB9D,EAAM,OAAO,OAAO8D,EAAO,IAAI,EAC/BiS,EAAO/V,EAAM,OAAO,QAAQ,MAAA,EAC5BoU,EAAO2B,EAAK,MAAOA,EAAK,MAAM,OAAS,CAAE,EACrC3B,IACAA,EAAK,QAAQ,OAAS,IAGtB,KAAK,QAAQ,iBAAiB,EAC9BpU,EAAM,OAAO,OAAO,KAAK,QAAQ,iBAAiB,CAAC,EAEnDA,EAAM,OAAO,OAAOA,EAAM,QAAQ,sBAAsB,EAAG,OAAO,EAEtEA,EAAM,QAAQ,WAAA,EACdypB,EAAQzpB,EAAM,QAAQ,QAAQ,MAAA,EAC9B+V,EAAK,MAAQA,EAAK,MAAM,OAAO0T,CAAK,EAIpCzpB,EAAM,QAAQ,OAAOA,EAAOA,EAAM,QAAQ,KAAK,EAC/CA,EAAM,QAAQ,UAAUA,EAAM,IAAI,UAAU,EAC5CA,EAAM,IAAI,iBAAmB,CAAA,CAAC,MAE9B8pB,EAAqBhmB,EACrB9D,EAAM,OAAO,OAAO8D,EAAO,IAAI,EAE3B9D,EAAM,IAAI,iBAAiB,QAAQ,KAAK,QAAQ,IAAI,EAAI,IAIpD,GAAKgpB,GAAc,MAKfhpB,EAAM,QAAQ,MAAM,SAAW,IAC/B+oB,EAAa,IAEjB/oB,EAAM,QAAQ,UAAU,OAAO,EAC/B8pB,EAAqBd,EACrBhpB,EAAM,QAAQ,OAAOgpB,EAAW,IAAI,EAChCD,IACA3U,EAAOpU,EAAM,QAAQ,QAAQ,MAAA,EAAQ,MAAM,CAAC,EACxCoU,IACAA,EAAK,QAAQ,OAAS,KAG1BkV,IACAQ,EAAqBR,EACrBtpB,EAAM,QAAQ,OAAOspB,CAAE,GAEvBC,IACAO,EAAqBP,EACrBvpB,EAAM,QAAQ,OAAOupB,CAAE,GAE3BvpB,EAAM,QAAQ,WAAA,EAG1B,MAEA8pB,EAAqBhmB,EACrB9D,EAAM,OAAO,OAAO8D,EAAO,IAAI,EAG/BwlB,IACAQ,EAAqBR,EACrBtpB,EAAM,OAAO,OAAOspB,CAAE,GAEtBC,IACAO,EAAqBP,EACrBvpB,EAAM,OAAO,OAAOupB,CAAE,GAE1BvpB,EAAM,OAAO,WAAA,CAAW,MAEL,KAAK,QAAQ,OAAzB,SAWHA,EAAM,IAAI,YAAY,SACtB8D,EAAQ,GAAK9D,EAAM,IAAI,YAAY,OAC/B8D,GAASA,EAAM,MAAM,SAAS,GAG9B9D,EAAM,IAAI,cAAc,IAAI,iBAAmB,GAC/C8pB,EAAqB,SACrB9pB,EAAM,OAAO,OAAOA,EAAM,QAAS,WAAa8D,CAAM,EAAG,IAAI,GACtDA,IACPgmB,EAAqBhmB,EACrB9D,EAAM,OAAO,OAAO8D,EAAO,IAAI,IAI3C9D,EAAM,IAAI,MAAQ,CAAA,EACde,EAAK4oB,CAAa,IAAM7lB,GAAS9D,EAAM,IAAI,iBAAmB,CAACA,EAAM,IAAI,iBAA8B,KAAK,QAAQ,OAAxB,QAAgC,CAACA,EAAM,IAAI,cACnIA,EAAM,SAAS,SAASe,EAAK,EAAE,GAAKf,EAAM,SAAS,SAASe,EAAK,EAAE,EAAE,SAAS,cAAgB,IAAS,CAACf,EAAM,IAAI,uBAClHA,EAAM,IAAI,qBAAuB,GACjC8pB,EAAqB,IACrB1lB,EAAM,SAASpE,EAAM,SAAS,SAASe,EAAK,EAAE,EAAE,SAAS,YAAa,EAAE,EAExEwO,EAAS,IAAI1P,EAAI,YAAYG,EAAO,GAAOoE,EAAK,KAAMrD,EAAK,EAAE,EAC7D,KAAK,iBAAmBf,EAAMA,EAAM,MAAM,IAAI,EAAE,IAAI,iBACpD,KAAK,cAAgBA,EAAMA,EAAM,MAAM,IAAI,EAAE,IAAI,iBACjD0pB,EAAY,IAAI7pB,EAAI,KAAK,WAAWA,EAAI,YAAY,EACpD0P,EAAO,aAAama,CAAS,EACzB1pB,EAAMA,EAAM,IAAI,IAAI,EAAE,IAAI,WAAa,uBACvCuP,EAAO,aAAevP,EAAM,QAAQ,0BAA0B,GAE9DA,EAAMA,EAAM,IAAI,IAAI,EAAE,IAAI,qBAC1BuP,EAAO,iBAAmBvP,EAAMA,EAAM,IAAI,IAAI,EAAE,IAAI,qBAC7CA,EAAMA,EAAM,IAAI,IAAI,EAAE,IAAI,uBAAuB,EACxDuP,EAAO,iBAAmBvP,EAAMA,EAAM,IAAI,IAAI,EAAE,IAAI,uBAAuB,EAE3EuP,EAAO,iBAAmBvP,EAAMA,EAAM,IAAI,IAAI,EAAE,IAAI,iBAExDuP,EAAO,6BAA+B,GACtCvP,EAAM,OAAO,OAAOuP,EAAQ,SAAS,GAGzCua,GAAsB,CAAC9pB,EAAM,IAAI,cAAc,IAAI,YACnDA,EAAM,IAAI,gBAAkB8pB,EAAmB,MAAM,QAAQ,EACzD9pB,EAAM,OAAO,QAAQ,IAAI,QAAQ,SACjCA,EAAM,IAAI,gBAAkB,IAEpC,EAEJ,KAAK,MAAM,KAAKiM,CAAI,EACpBJ,EAAO,KAAK,IAAI,CAAA,GAMxBhM,EAAI,KAAK,SAAS,EAAI,CAGlB,MAAO,SAAUG,EAAO6L,EAAQ,CAC5BhM,EAAI,WAAW,QAAQ,KAAK,KAAMG,EAAO6L,CAAM,EAC/CA,EAAO,KAAK,IAAI,CAAA,EAEpB,UAAW,SAAU7L,EAAO6E,EAAK,CAC7BhF,EAAI,WAAW,UAAU,KAAK,KAAMG,EAAO6E,CAAG,CAAA,GAMtDhF,EAAI,KAAK,KAAU,CACf,MAAO,SAAUG,EAAO6L,EAAQ,CAC5BA,EAAO,KAAK,IAAI,CAAA,EAEpB,UAAW,SAAU7L,EAAO6E,EAAK,CACzB,KAAK,YAAchF,EAAI,QACvBG,EAAM,UAAU,KAAMA,EAAM,UAAU,KAAK,OAAS,CAAE,EAAI6E,EAC9D,GAORhF,EAAI,KAAK,OAAO,EAAI,CAChB,MAAO,SAAUG,EAAO6L,EAAQ,CAC5B,GAAI7L,EAAM,MAAM,OAAS,YAAcA,EAAM,MAAM,OAAS,eAAgB,CACxE,IAAIiM,EAAO,SAAUjM,EAAO,CACxBA,EAAM,IAAI,UAAY,KACL,OAAO,KAAK,QAAQ,MAAjC,WACAA,EAAM,IAAI,UAAY,KAAK,QAAQ,KACvC,EAEJ,KAAK,MAAM,KAAKiM,CAAI,CAAA,CAExBJ,EAAO,KAAK,IAAI,CAAA,GAMxBhM,EAAI,KAAK,MAAQ,CACb,MAAO,SAAUG,EAAO6L,EAAQqe,EAAW,CACvC,IAAIje,EAAMke,EAEV,GADA,KAAK,UAAYD,EACb,KAAK,YAAcrqB,EAAI,QACvBA,EAAI,KAAK,gBAAgB,KAAK,KAAMG,EAAO6L,CAAM,EAC7C7L,EAAM,MAAM,iBAAiB,MAAA,GAC7BA,EAAM,MAAM,iBAAiB,QAASA,EAAM,MAAM,iBAAiB,MAAA,EAAU,CAAE,EAE9E,KAAK,OACN6L,EAAO,KAAK,IAAI,EAIpBI,EAAO,SAAUjM,EAAO,CAepB,GAdAA,EAAM,OAAO,SAAS,QAAS,IAAI,EAE/B,KAAK,QAAQ,sBACRA,EAAM,IAAI,cAAc,IAAI,aAC7BA,EAAM,IAAI,cAAc,IAAI,WAAa,KAAK,QAAQ,sBAI1D,KAAK,QAAQ,qCACRA,EAAM,IAAI,cAAc,IAAI,4BAC7BA,EAAM,IAAI,cAAc,IAAI,0BAA4B,KAAK,QAAQ,qCAIzE,KAAK,UAAW,CAEZA,EAAM,IAAI,cAAc,IAAI,WAC5BH,EAAI,+BAA+BG,EAAO,KAAK,QAAQ,OAAQ,KAAM,IAAI,EAG7E,IAAIoqB,EAAY,GACZ/lB,EAAiB,GAGjBrE,EAAM,IAAI,cAAc,QAAQ,SAChCA,EAAM,OAAO,QAAQ,MAAA,EAAQ,OAASA,EAAM,IAAI,cAAc,IAAI,YAItE,IAAIqqB,EAAarqB,EAAM,IAAI,cAAc,IAAI,WACxCqqB,IACDA,EAAa,KAAK,QAAQ,qBAG9B,IAAIC,EAA4BtqB,EAAM,IAAI,cAAc,IAAI,0BACvDsqB,IACDA,EAA4B,KAAK,QAAQ,2BAEzCtqB,EAAM,IAAI,cAAc,IAAI,WAC5BoqB,EAAYpqB,EAAM,IAAI,cAAc,IAAI,UACxCqE,EAAiBrE,EAAM,IAAI,cAAc,IAAI,gBAEtC,KAAK,QAAQ,OACpBoqB,EAAY,CACR,KAAM,KAAK,QAAQ,OACnB,IAAK,IAEF,KAAK,QAAQ,UACpBA,EAAY,CACR,KAAM,KAAK,QAAQ,QACnB,IAAK,KAGb,IAAIG,EAAU,CACV,qBAAsBvqB,EAAM,IAAI,iBAChC,cAAe,GACf,iBAAkB,GAClB,iBAAkB,GAClB,wBAAyBA,EAAM,IAAI,cAAc,IAAI,iBACrD,WAAYA,EAAM,OAAO,QAAQ,IACjC,WAAAqqB,EACA,aAAcrqB,EAAM,IAAI,cAAc,IAAI,aAC1C,0BAAAsqB,EACA,4BAA6B,KAAK,QAAQ,gCAC1C,wCAAyC,KAAK,QAAQ,4CACtD,UAAAF,EACA,eAAA/lB,EACA,UAAWrE,EAAM,IAAI,cAAc,IAAI,UAAU,MAAA,GAErD,GAAG,KAAK,aAAc,CAClB,IAAIwqB,EAAexqB,EAAM,IAAI,cAAc,IAAI,aAC1CwqB,IACDA,EAAe,CAAA,GAEnB,OAAO,OAAOA,EAAc,KAAK,YAAY,EAC7CD,EAAQ,aAAeC,CAAA,CAE3B,GAAG,KAAK,eAAgB,CACpB,IAAIC,EAAiBzqB,EAAM,IAAI,cAAc,IAAI,eAC5CyqB,IACDA,EAAiB,CAAA,GAErB,OAAO,OAAOA,EAAgB,KAAK,cAAc,EACjDF,EAAQ,eAAiBE,CAAA,CAE7B,GAAG,KAAK,cAAe,CACnB,IAAIC,EAAgB1qB,EAAM,IAAI,cAAc,IAAI,cAC3C0qB,IACDA,EAAgB,CAAA,GAEpB,OAAO,OAAOA,EAAe,KAAK,aAAa,EAC/CH,EAAQ,cAAgBG,CAAA,CAE5B,GAAI1qB,EAAM,IAAI,gBAAkBA,EAAM,IAAI,eAAe,eAAiBuqB,EAAQ,cAAe,CACxFA,EAAQ,iBACTA,EAAQ,eAAiB,CAAA,GAE7B,QAAS5Y,KAAW3R,EAAM,IAAI,eAAe,cACrCuqB,EAAQ,cAAc5Y,CAAO,IAC7B4Y,EAAQ,eAAe5Y,CAAO,EAAI,GAClC,OAAO4Y,EAAQ,cAAc5Y,CAAO,EAE5C,CAeJ,GAFA3R,EAAM,IAAI,cAAc,KAAKuqB,CAAO,EAEhCvqB,EAAM,IAAI,gBAAkB,KAAK,uBAAwB,CACpDA,EAAM,IAAI,eAAe,gBAC1BA,EAAM,IAAI,eAAe,cAAgB,CAAA,GAE7C,QAAS2R,KAAW,KAAK,uBACrB3R,EAAM,IAAI,eAAe,cAAc2R,CAAO,EAAI,EACtD,CACJ,CAKJ,EAIJwY,EAAQ,CAAA,EACRA,EAAM,KAAKle,CAAI,EACf,KAAK,MAAQke,EAAM,OAAO,KAAK,KAAK,EAOhC,KAAK,QAAQ,mCAAmC,IAGhDnqB,EAAM,MAAM,mBAAmB,EAAI,GAC/B,KAAK,QAAQ,oBAAoB,IAIjCiM,EAAO,SAAUjM,EAAOe,EAAM,CAC1B,GAAIA,EAAK,WAAaA,EAAK,iBAAiB,EAAG,CAC3C,IAAI4pB,EAAgB5pB,EAAK,UAAU,MAAM,MAAM,EAC3C6pB,EAAsB7pB,EAAK,iBAAiB,EAAE,MAAM,MAAM,EAC1D4pB,EAAc,OAAS,GACpBA,EAAc,SAAWC,EAAoB,SAChD5qB,EAAM,gBAAkB,IAAIH,EAAI,gBAAgBG,EAAO,IAAI,EAC3DA,EAAM,gBAAgB,gBAAgB,EAAI2qB,EAC1C3qB,EAAM,gBAAgB,sBAAsB,EAAI4qB,EACpD,CACJ,EAEJ,KAAK,MAAM,KAAK3e,CAAI,IAIxB,KAAK,OAAO,CAyBZ,IAAI4e,EAAe,IAAIhrB,EAAI,MAAM,SAAUA,EAAI,KAAK,EACpDA,EAAI,KAAK,OAAO,MAAM,KAAKgrB,EAAc7qB,EAAO6L,CAAM,EAEtD,IAAIif,EAAW,IAAIjrB,EAAI,MAAM,KAAMA,EAAI,KAAK,EAE5CoM,WAAkB/G,EAAW,CACzB,OAAO,SAAUnE,EAAMJ,EAAM,CACzB,OAAOd,EAAI,yBAAyBG,EAAOe,EAAMJ,EAAMuE,CAAS,CAAA,CACpE,EACF,KAAK,KAAK,EAEZ4lB,EAAS,QAAaA,EAAS,MAAQ,CAAA,GACvCA,EAAS,MAAM,KAAK7e,CAAI,EACxB6e,EAAS,KAAO9qB,EAAM,IAAI,MAAM,IAAI8qB,EAAU9qB,EAAO8qB,EAAS,KAAK,EACnEjf,EAAO,KAAKif,CAAQ,EACpB,IAAIve,EAAY,IAAI1M,EAAI,MAAM,OAAQA,EAAI,SAAS,EACnDoM,EAAO,SAAUjM,EAAOe,EAAMJ,EAAM,CAEhC,IAAIoqB,EAAWhqB,EACXJ,GAAQA,EAAK,mBAAmB,GAAK,KAAK,QAAU,kBACpDoqB,EAAWpqB,GAEf,IAAI2K,EAAO,EACX,GAAItL,EAAM,MAAM+qB,EAAS,mBAAmB,CAAC,EAAE,KAAK,KAAK,EACrD,KAAOzf,EAAOtL,EAAM,MAAM+qB,EAAS,mBAAmB,CAAC,EAAE,KAAK,KAAK,EAAE,QACjEzf,EAAOzL,EAAI,UAAU,KAAKG,EAAOA,EAAM,MAAM+qB,EAAS,mBAAmB,CAAC,EAAE,KAAK,KAAK,EAAEzf,CAAI,EAAGvK,EAAMJ,CAAI,CAEjH,EAEJ4L,EAAU,MAAQ,KAAK,MACvBA,EAAU,MAAM,KAAKN,CAAI,EACzBJ,EAAO,KAAKU,CAAS,EAErB,IAAIye,EAAS,IAAInrB,EAAI,MAAM,KAAMA,EAAI,GAAG,EACxCA,EAAI,KAAK,GAAM,MAAM,KAAKmrB,EAAQhrB,EAAO6L,CAAM,EAC/C,IAAIof,EAAa,IAAIprB,EAAI,MAAM,OAAQA,EAAI,KAAK,EAChDA,EAAI,KAAK,KAAQ,MAAM,KAAKorB,EAAYjrB,EAAO6L,CAAM,CAAA,CAI7D,GAAI,KAAK,YAAchM,EAAI,MAOnBG,EAAM,MAAM,mBAAmB,IAC/BA,EAAM,MAAM,mBAAmB,EAAI,GACnCiM,EAAO,SAAUjM,EAAO,CAChBA,EAAM,kBACNA,EAAM,gBAAgB,OAAA,EACtBA,EAAM,gBAAkB,GAC5B,EAEJ,KAAK,MAAM,KAAKiM,CAAI,GAIxBA,EAAO,SAAUjM,EAAOe,EAAMJ,EAAM,CAOhC,GANKX,EAAM,IAAI,cAAc,IAAI,WACzBA,EAAM,OAAO,QAAQ,IAAI,QAAQ,SACjCA,EAAM,IAAI,gBAAkB,IAGpCA,EAAM,OAAO,OAAA,EACT,KAAK,UAAW,CAChB,IAAI+D,EAAQ/D,EAAM,IAAI,cAAc,IAAA,EAUpC,GATI+D,EAAM,8BACN/D,EAAM,IAAI,cAAc,IAAI,4BAA8B+D,EAAM,4BAC5D,CAAC/D,EAAM,IAAI,cAAgBA,EAAM,SAAS,SAASe,EAAK,EAAE,EAAE,SAC5Df,EAAM,SAAS,SAASe,EAAK,EAAE,EAAE,4BAA8BgD,EAAM,8BAGzEA,EAAM,0CACN/D,EAAM,IAAI,cAAc,IAAI,wCAA0C+D,EAAM,yCAE5E/D,EAAM,IAAI,OAAS,oBAAqB,CACxC,IAAIkrB,EAAoBnnB,EAAM,UAAU,QAAQ,iBAAiB,EAC7D,KAAK,QAAQ,gBAAkBmnB,EAAoB,IAAMlrB,EAAM,IAAI,cAAc,OAAA,GAAY,IACzF,KAAK,QAAQ,iBAAmBH,EAAI,WACpCG,EAAM,kBAAkB,IAAI,+BAAiCH,EAAI,WAEjEG,EAAM,kBAAkB,IAAI,+BAAiCH,EAAI,UAErEkE,EAAM,UAAYA,EAAM,UAAU,MAAM,EAAGmnB,CAAiB,EAAE,OAAOnnB,EAAM,UAAU,MAAMmnB,EAAoB,CAAC,CAAC,EACrH,CAcJ,GAPInnB,EAAM,YACNA,EAAM,eAAiBlE,EAAI,yBAAyBG,EAAO+D,CAAK,GAEhE/D,EAAM,IAAI,cAAc,IAAI,YAC5BA,EAAM,IAAI,cAAc,IAAI,eAAiB+D,EAAM,gBAGnD,CAACA,EAAM,iBAAmBA,EAAM,kBAAqBA,EAAM,eAAiB,CAACA,EAAM,kBAAoB,CAClG,KAAK,sBACN/D,EAAM,IAAI,cAAc,IAAI,iBAAmB,IAEnD,IAAIyW,EAAQzW,EAAM,OAAO,QAAQ,QAAQ,MAGzC,GAFUA,EAAM,OAAO,QAAQ,MAAA,EAAQ,MAAM,OAAS,EAElD,CAACA,EAAM,IAAI,eAAiB+D,EAAM,cAAgBA,EAAM,eAAiBA,EAAM,gBAAkBA,EAAM,6BAA+BA,EAAM,yCAA0C,CAKtL,IAAIonB,EAAYnrB,EAAM,SAAS,aAAa+D,CAAK,EAMjD,GALIonB,GACI1U,GACAA,EAAM,IAAA,EAGVzW,EAAM,IAAI,WAAa,IAAMmrB,GAAc,CAACpnB,EAAM,gBAAkB,CAACA,EAAM,eAAiB,CAACA,EAAM,cAAgB,CAEnH,IAAIqnB,EAAOprB,EAAM,IAAI,iBAAiBA,EAAM,IAAI,WAAW,CAAC,EACxDmrB,GAAapnB,EAAM,0CAA4CqnB,EAAK,SAAWA,EAAK,QACpFprB,EAAM,OAAO,MAAM,MAAM,EAAE,EAAE,CAAC,EAAE,mBAAqB+D,EAAM,wCACpDA,EAAM,6BAA+BqnB,EAAK,UACjDprB,EAAM,OAAO,MAAM,MAAM,EAAE,EAAE,CAAC,EAAE,mBAAqB+D,EAAM,4BAC/D,CACJ,CACJ,KACG,CAOH,GANA/D,EAAM,IAAI,iBAAmB+D,EAAM,qBACnC/D,EAAM,IAAI,cAAc,IAAI,iBAAmB+D,EAAM,iBACjDA,EAAM,gBAAkB,CAAC/D,EAAM,IAAI,cAAc,IAAI,YACrDA,EAAM,IAAI,cAAc,IAAI,iBAAmB,GAC/CA,EAAM,IAAI,cAAc,IAAI,iBAAmB+D,EAAM,yBAErDA,EAAM,eAON,QAAS7D,EAAE,EAAEC,EAAK4D,EAAM,UAAU,OAAO7D,EAAEC,EAAKD,IAE5C,QADImrB,EAAUtnB,EAAM,UAAU7D,CAAC,EACtBQ,EAAE,EAAEY,EAAKtB,EAAM,IAAI,UAAU,OAAQU,EAAEY,EAAMZ,IAC9CV,EAAM,IAAI,UAAUU,CAAC,IAAM2qB,IAC3BrrB,EAAM,IAAI,UAAYA,EAAM,IAAI,UAAU,MAAM,EAAGU,CAAC,EAAE,OAAOV,EAAM,IAAI,UAAU,MAAMU,EAAE,CAAC,CAAC,GAKvGV,EAAM,OAAO,QAAQ,MAAA,EAAQ,OAC7BA,EAAM,OAAO,QAAQ,MAAA,EAAQ,MAAM,IAAA,CACvC,CACJ,CACJ,EAEJ,KAAK,MAAM,KAAKiM,CAAI,EAEhB,KAAK,OAAO,CACZ,IAAIqf,EAAW,IAAIzrB,EAAI,MAAM,OAAQA,EAAI,GAAG,EAC5CA,EAAI,KAAK,KAAQ,MAAM,KAAKyrB,EAAUtrB,EAAO6L,CAAM,EACnD,IAAI0f,EAAa,IAAI1rB,EAAI,MAAM,SAAUA,EAAI,GAAG,EAChDA,EAAI,KAAK,OAAO,MAAM,KAAK0rB,EAAYvrB,EAAO6L,CAAM,CAAA,CAIxD,KAAK,YAAchM,EAAI,MAClB,KAAK,OACNgM,EAAO,KAAK,IAAI,EAEhB7L,EAAM,MAAM,iBAAiB,MAAA,GAC7BA,EAAM,MAAM,iBAAiB,QAASA,EAAM,MAAM,iBAAiB,MAAA,EAAU,CAAE,EAEnFH,EAAI,KAAK,cAAc,KAAK,KAAMG,EAAO6L,CAAM,EACnD,GAMRhM,EAAI,KAAK,GAAQ,CACb,MAAO,SAAUG,EAAO6L,EAAQ,CAC5BhM,EAAI,WAAW,QAAQ,KAAK,KAAMG,EAAO6L,CAAM,EAC/CA,EAAO,KAAK,IAAI,CAAA,EAEpB,UAAW,SAAU7L,EAAO6E,EAAK,CAC7BhF,EAAI,WAAW,UAAU,KAAK,KAAMG,EAAO6E,CAAG,CAAA,GAKtDhF,EAAI,KAAK,WAAgB,CACrB,MAAO,SAAUG,EAAO,CAChB,KAAK,YAAcH,EAAI,OACvBG,EAAM,IAAI,WAAW,SAAS,KAAK,KAAK,EAExC,KAAK,YAAcH,EAAI,KACvBG,EAAM,IAAI,WAAW,aAAA,CACzB,GAIRH,EAAI,KAAK,UAAe,CACpB,MAAO,SAAUG,EAAO,CACpB,GAAI,KAAK,YAAcH,EAAI,UAAW,CAClC,IAAI2rB,EAAOxrB,EAAM,IAAI,MAAM,KAAK,KAAK,EAAE,KAAMA,EAAO,KAAK,KAAK,EAC9DA,EAAM,IAAI,WAAW,QAAQwrB,CAAI,CAAA,CACrC,GAIR3rB,EAAI,WAAa,CAAA,EAEjBA,EAAI,WAAW,QAAU,SAAUG,EAAO,CACtC,IAAIiM,GACA,KAAK,YAAcpM,EAAI,OAAS,KAAK,YAAcA,EAAI,aACnD,KAAK,SACLG,EAAM,IAAI,KAAO,KAAK,QAEtB,CAAC,KAAK,OAAS,CAAC,KAAK,MAAM,OAE3BA,EAAM,IAAI,WAAa,IAAIH,EAAI,WAAW,OAAOG,EAAO,IAAI,EAG5D,KAAK,KAAOA,EAAM,IAAI,MAAM,KAAK,KAAK,EAAE,KAAMA,EAAO,KAAK,KAAK,EAE/DA,EAAM,MAAM,iBAAiB,MAAA,IAAY,IACzCiM,EAAO,SAASjM,EAAO,CACnBA,EAAM,IAAI,mBAAA,EAEd,KAAK,MAAM,KAAKiM,CAAI,KAGxB,KAAK,YAAcpM,EAAI,KAAO,KAAK,YAAcA,EAAI,aACjDG,EAAM,MAAM,iBAAiB,MAAA,IAAY,IACzCiM,EAAO,SAAUjM,EAAO,CAEpB,GADAA,EAAM,IAAI,oBACNA,EAAM,IAAI,2BAA2B,OAAS,EAAG,CACjD,IAAIyrB,EAAUzrB,EAAM,IAAI,2BAA2B,MAAM,EAAE,EAAE,CAAC,EAC1DyrB,IAAYzrB,EAAM,IAAI,oBACtBA,EAAM,IAAI,KAAOA,EAAM,IAAI,uBAAuB,IAAA,EAClDA,EAAM,IAAI,2BAA2B,IAAA,EACzC,CAEA,KAAK,iBAELA,EAAM,OAAO,QAAQ,MAAA,EAAQ,WAAa,KAAK,eAC/CA,EAAM,OAAO,WAAW,OAAO,EAC/BA,EAAM,IAAI,KAAO,KAAK,eAC1B,EAEJ,KAAK,MAAM,KAAKiM,CAAI,GAGxBA,EAAO,SAAUjM,EAAO,CACpB,IAAIsL,EAAO,KAAKtL,EAAM,IAAI,KAAK,OAAO,EACtC,OAAOsL,CAAA,EAEX,KAAK,MAAM,KAAKW,CAAI,EAChB,KAAK,iBACLjM,EAAM,IAAI,KAAO,KAAK,gBAGlC,EAEAH,EAAI,WAAW,UAAY,SAAUG,EAAO6E,EAAK,CACzC,KAAK,YAAchF,EAAI,OAEvB,KAAK,KAAOG,EAAM,UAAU,KAAK,MAAM,EAAE,EAAE,CAAC,EAC5C,KAAK,QAAU,KAAK,KACpBA,EAAM,UAAU,KAAMA,EAAM,UAAU,KAAK,OAAS,CAAE,EAAI6E,GACnD,KAAK,YAAchF,EAAI,WAE9B,KAAK,KAAO,KAAK,KACjB,KAAK,QAAUG,EAAM,UAAU,QAAQ,MAAM,EAAE,EAAE,CAAC,EAClDA,EAAM,UAAU,KAAMA,EAAM,UAAU,KAAK,OAAS,CAAE,EAAI6E,IAG1D,KAAK,QAAU7E,EAAM,UAAU,QAAQ,MAAM,EAAE,EAAE,CAAC,EAClD,KAAK,KAAO,KAAK,KAEzB,EAEAH,EAAI,WAAW,OAAS,SAAUG,EAAO6D,EAAO,CAC5C,KAAK,MAAQA,EACb,KAAK,MAAQ7D,CACjB,EAEAH,EAAI,WAAW,OAAO,UAAU,QAAU,SAAU2rB,EAAM,CACtD,KAAK,MAAM,QAAa,KAAK,MAAM,MAAQ,CAAA,GAC3C,KAAK,MAAM,MAAM,KAAKA,CAAI,CAC9B,EAEA3rB,EAAI,WAAW,OAAO,UAAU,SAAW,SAAU4H,EAAO,CACxD,KAAK,MAAM,MAAQA,CACvB,EAEA5H,EAAI,WAAW,OAAO,UAAU,aAAe,UAAY,CACvD,KAAK,MAAM,KAAO,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,KAAK,EAAE,KAAK,MAAO,KAAK,MAAO,KAAK,MAAM,KAAK,CACrG,EAIAA,EAAI,KAAK,KAAO,CACZ,MAAO,SAAUG,EAAO,CAChB,KAAK,YAAcH,EAAI,MACvBG,EAAM,MAAM,KAAO,OAEnBA,EAAM,MAAM,KAAO,EACvB,GAORH,EAAI,KAAK,YAAc,CACnB,MAAO,SAAUG,EAAO6L,EAAQ,CAC5B,GAAI,CAAChM,EAAI,UAAWA,EAAI,KAAK,EAAE,QAAQ,KAAK,SAAS,EAAI,GAAI,CAEzD,IAAIoM,EAAO,SAAUjM,EAAO,CACP,OAAO,KAAK,QAAQ,WAAjC,SACAA,EAAM,IAAI,sBAAwB,KAAK,QAAQ,UAE/CA,EAAM,IAAI,sBAAwBA,EAAM,IAAI,eAMjCA,EAAM,WAAW,KAAM,KAAK,IAAvC,OACA,KAAK,SAAWA,EAAM,QAAQ,MAAO,OAAQ,CAAC,EAC1BA,EAAM,WAAW,KAAM,KAAK,IAAzC,SACHA,EAAM,IAAI,uBAAuB,uBACjC,KAAK,SAAWA,EAAM,QAAQ,MAAO,SAAU,CAAC,EAEhD,KAAK,SAAW,IAEFA,EAAM,WAAW,KAAM,KAAK,IAAvC,SACP,KAAK,SAAWA,EAAM,IAAI,uBAEV,OAAO,KAAK,SAA5B,KAAwCA,EAAM,IAAI,WAElD,KAAK,SAAWA,EAAM,IAAI,UAE1BH,EAAI,6BAA6B,KAAK,KAAK,QAAQ,GACnD,KAAK,kBAAoB,IACzB,KAAK,oBAAsB,KACV,OAAOG,EAAM,IAAI,uBAA9B,WACA,KAAK,oBAAsBA,EAAM,IAAI,uBAEzC,KAAK,WAAa,MAElB,KAAK,kBAAoB,GACzB,KAAK,oBAAsB,GAC3B,KAAK,WAAa,IAElBA,EAAM,WAAW,KAAM,yBAAyB,IAAM,SACtD,KAAK,kBAAoBA,EAAM,IAAI,sBAC5BA,EAAM,WAAW,KAAM,yBAAyB,IAAM,SAGzD,KAAK,sBACL,KAAK,oBAAsB,KAInC,KAAK,IAAM,CAAA,EACS,OAAO,KAAK,SAA5B,KACAA,EAAM,OAAO,OAAO,KAAK,SAAU,QAAS,EAAI,EAChD,KAAK,IAAI,OAASA,EAAM,OAAO,IAAA,EAC/B,KAAK,IAAI,OAAO,QAAQ,OAAS,KAAK,kBACtC,KAAK,IAAI,OAAO,QAAQ,OAAS,KAAK,WACtCA,EAAM,OAAO,OAAO,KAAK,SAAU,QAAS,EAAI,EAChD,KAAK,IAAI,SAAWA,EAAM,OAAO,IAAA,EACjC,KAAK,IAAI,SAAS,QAAQ,OAAS,KAAK,oBACxC,KAAK,IAAI,SAAS,QAAQ,OAAS,KAAK,YACjB,KAAK,QAAQ,YAA7B,cACP,KAAK,IAAI,OAAS,IAAIH,EAAI,KAAKG,EAAM,IAAI,qBAAqB,EAC9D,KAAK,IAAI,OAAO,QAAQ,OAAS,GACjC,KAAK,IAAI,OAAO,QAAQ,OAAS,GACjC,KAAK,IAAI,SAAW,IAAIH,EAAI,KAAKG,EAAM,IAAI,qBAAqB,EAChE,KAAK,IAAI,SAAS,QAAQ,OAAS,GACnC,KAAK,IAAI,SAAS,QAAQ,OAAS,IAEvCA,EAAM,WAAW,YAAc,IAAA,EAEnC,KAAK,MAAM,KAAKiM,CAAI,CAAA,CAExBJ,EAAO,KAAK,IAAI,CAAA,EAEpB,UAAW,SAAU7L,EAAO,CACpB,CAACH,EAAI,UAAWA,EAAI,KAAK,EAAE,QAAQ,KAAK,SAAS,EAAI,KACrDG,EAAM,MAAM,gBAAkB,GAClC,GAMRH,EAAI,KAAK,kBAAkB,EAAI,CAC3B,MAAO,SAAUG,EAAO6L,EAAQ,CAC5B,IAAII,EACW,KAAK,QAAQ,OAAxB,OACI,KAAK,QAAQ,UAAU,EACvBA,EAAO,SAAUjM,EAAO,CACpBA,EAAM,WAAW,gBAAgB,iBAAiB,EAAI,IAAA,EAG1DiM,EAAO,SAAUjM,EAAO,CACpBA,EAAM,WAAW,gBAAgB,KAAU,IAAA,EAGhC,KAAK,QAAQ,OAAzB,UACPiM,EAAO,SAAUjM,EAAO,CACpBA,EAAM,WAAW,gBAAgB,MAAW,IAAA,GAGpD,KAAK,MAAM,KAAKiM,CAAI,EACpBJ,EAAO,KAAK,IAAI,CAAA,GAMxBhM,EAAI,KAAK,IAAM,CACX,MAAO,SAAUG,EAAO6L,EAAQ,CAE5BA,EAAS7L,EAAMA,EAAM,MAAM,KAAO,OAAO,EAAE,OAE3C,IAAIiM,EAEAyf,EAAY,IAAI7rB,EAAI,MAAM,MAAOA,EAAI,KAAK,EAE9CG,EAAM,IAAI,KAAOA,EAAM,MAAM,KAI7B0rB,EAAU,QAAQ,WAAW,EAAI1rB,EAAM,WAAW,KAAM,WAAW,EACnE0rB,EAAU,QAAQ,iBAAiB,EAAI1rB,EAAM,WAAW,KAAM,iBAAiB,EAC/E0rB,EAAU,QAAQ,gBAAgB,EAAI1rB,EAAM,WAAW,KAAM,gBAAgB,EAI7EiM,EAAO,SAAUjM,EAAO,CACpBA,EAAM,IAAI,UAAY,CAAA,CAAC,EAE3B0rB,EAAU,MAAM,KAAKzf,CAAI,EAGzBA,EAAO,SAAUjM,EAAO,CACpBA,EAAM,OAAO,UAAU,OAAO,CAAA,EAElC0rB,EAAU,MAAM,KAAKzf,CAAI,EAGzB,IAAIC,EAAiB,CAAA,EAoCrB,GAnCI,KAAK,QAAQ,iBAAmBrM,EAAI,YAEpCqM,EAAe,KAAK,CAAC,EACrBA,EAAe,KAAK,EAAE,IAGtBA,EAAe,KAAK,EAAE,EACtBA,EAAe,KAAK,CAAC,GAEzBlM,EAAMA,EAAM,MAAM,IAAI,EAAE,IAAI,gBAAgB,KAAKkM,CAAc,EAE3DrM,EAAI,eAAe,QAAQ,KAAK,UAAU,CAAC,CAAC,EAAI,KAChDG,EAAM,MAAM,SAAW,IAI3BiM,EAAO,SAAUjM,EAAO,CACpBA,EAAM,IAAI,cAAgB,GAEtBA,EAAM,WAAW,KAAM,WAAW,IAClCA,EAAM,IAAI,WAAW,EAAIA,EAAM,WAAW,KAAM,WAAW,GAE3DA,EAAM,WAAW,KAAM,iBAAiB,IACxCA,EAAM,IAAI,iBAAiB,EAAIA,EAAM,WAAW,KAAM,iBAAiB,GAEzD,OAAOA,EAAM,WAAW,KAAM,gBAAgB,GAA5D,YACAA,EAAM,IAAI,gBAAgB,EAAIA,EAAM,WAAW,KAAM,gBAAgB,EAEzE,EAEJ0rB,EAAU,MAAM,KAAKzf,CAAI,EACzBJ,EAAO,KAAK6f,CAAS,EAIjB,KAAK,UAAU,OAAQ,CACvB,IAAIC,EAAW,KAAK,UAAU,CAAC,EAC/B,GAAI9rB,EAAI,eAAe,QAAQ8rB,CAAQ,EAAI,GAAI,CAG3C,IAAIC,EAAoB,IAAI/rB,EAAI,MAAM,QAASA,EAAI,KAAK,EACxD+rB,EAAkB,UAAY/rB,EAAI,MAClC+rB,EAAkB,UAAY,KAAK,UACnC/rB,EAAI,KAAK,MAAM,MAAM,KAAK+rB,EAAmB5rB,EAAO6L,CAAM,EAG1D,IAAIggB,EAAa,IAAIhsB,EAAI,MAAM,OAAQA,EAAI,SAAS,EACpDgsB,EAAW,UAAYhsB,EAAI,UAC3BgsB,EAAW,QAAQ,oBAAoB,EAAI,MAC3CA,EAAW,QAAQ,gBAAgB,EAAI,IACvCA,EAAW,QAAQ,gBAAgB,EAAI7rB,EAAM,WAAW,KAAM,gBAAgB,EAC9E6rB,EAAW,QAAQ,WAAW,EAAI7rB,EAAM,WAAW,KAAM,WAAW,EACpE6rB,EAAW,QAAQ,iBAAiB,EAAI7rB,EAAM,WAAW,KAAM,iBAAiB,EAChFH,EAAI,KAAK,KAAK,MAAM,KAAKgsB,EAAY7rB,EAAO6L,CAAM,EAGlD,IAAIigB,EAAoB,IAAIjsB,EAAI,MAAM,cAAeA,EAAI,SAAS,EAClEisB,EAAkB,UAAYjsB,EAAI,UAClCA,EAAI,KAAK,YAAY,MAAM,KAAKisB,EAAmB9rB,EAAO6L,CAAM,EAGhE,IAAIkgB,EAAkB,IAAIlsB,EAAI,MAAM,QAASA,EAAI,GAAG,EACpDksB,EAAgB,UAAYlsB,EAAI,IAChCA,EAAI,KAAK,MAAM,MAAM,KAAKksB,EAAiB/rB,EAAO6L,CAAM,CAAA,KACrD,CACH,IAAImgB,EAAc,IAAInsB,EAAI,MAAM,OAAQA,EAAI,SAAS,EAGrD,GAFAmsB,EAAY,QAAQ,eAAiB,KAAK,QAAQ,eAClDA,EAAY,UAAY,KAAK,UACzBnsB,EAAI,kBAAkB,QAAQ8rB,CAAQ,EAAI,GAItCA,IAAa,kBACb1f,EAAO,SAAUjM,EAAOe,EAAM,CAQ1B,GAPIf,EAAM,IAAI,OAAS,sBACf,KAAK,QAAQ,iBAAmBH,EAAI,WACpCG,EAAM,kBAAkB,IAAI,+BAAiCH,EAAI,WAEjEG,EAAM,kBAAkB,IAAI,+BAAiCH,EAAI,WAGrEG,EAAM,IAAI,OAAS,iBAAmBA,EAAM,kBAAkB,IAAI,oBAClE,IAAIoE,EAAMpE,EAAM,kBAAkB,IAAI,oBAAoBA,EAAM,SAAS,SAASe,EAAK,EAAE,EAAE,GAAG,MAE9F,KAAIqD,EAAMpE,EAAM,SAAS,SAASe,EAAK,EAAE,EAAE,IAE3CqD,IAEAA,EAAMvE,EAAI,KAAK,QAAQ,GAAKuE,CAAG,GAEnCpE,EAAM,OAAO,OAAOoE,EAAK,IAAI,CAAA,EAGjC6H,EAAO,SAAUjM,EAAOe,EAAM,CAC1B,IAAIqD,EAAM,GACVA,EAAMrD,EAAK4qB,CAAQ,EAEfvnB,IAEAA,EAAMvE,EAAI,KAAK,QAAQuE,CAAG,GAE9BpE,EAAM,OAAO,OAAOoE,EAAK,IAAI,CAAA,UAG9BunB,IAAa,iBACpB1f,EAAO,SAAUjM,EAAOe,EAAM,CAC1B,IAAIkrB,EAAWjsB,EAAM,iBAAiBe,CAAI,EAC1Cf,EAAM,OAAO,OAAOisB,EAAU,IAAI,CAAA,UAE/BpsB,EAAI,eAAe,QAAQ8rB,CAAQ,EAAI,GAC9C1f,EAAOpM,EAAI,cACXmsB,EAAY,UAAY,KAAK,kBACVL,IAAZ,QAAsB,CAC7B,IAAIO,EAAY,QACZC,EAAW,GACXC,EAAS,GACTC,EAAY,GAChBpgB,EAAOjM,EAAM,UAAU,kBAAkB,KAAK,UAAWksB,EAAWC,EAAUC,EAAQC,CAAS,CAAA,MACtEV,IAAlB,cACP1f,EAAO,SAASjM,EAAOe,EAAMJ,EAAM,CAC/Bd,EAAI,yBAAyBG,EAAOe,EAAMJ,EAAM,YAAY,EAE5D,IAAI4D,EAAM1E,EAAI,gBAAgBG,EAAOe,EAAM,EAAI,EAC/Cf,EAAM,OAAO,OAAOuE,EAAK,OAAO,CAAA,EAGpC0H,EAAO,SAAUjM,EAAOe,EAAM,CAC1B,IAAIurB,EAASvrB,EAAK4qB,CAAQ,EAC1B3rB,EAAM,OAAO,OAAOssB,EAAQ,OAAO,CAAA,EAG3CN,EAAY,MAAM,KAAK/f,CAAI,EAC3BJ,EAAO,KAAKmgB,CAAW,CAAA,CAC3B,KACG,CAGH,IAAInoB,EAAQ,IAAIhE,EAAI,MAAM,OAAQA,EAAI,SAAS,EAC/CgE,EAAM,QAAQ,eAAiB,KAAK,QAAQ,eAC5CA,EAAM,gBAAkB,KAAK,gBAC7BhE,EAAI,YAAY,KAAKG,EAAO6D,EAAOgI,CAAM,CAAA,CAM7C,IAAI0gB,EAAU,IAAI1sB,EAAI,MAAM,MAAOA,EAAI,GAAG,EAW1CoM,EAAO,SAAUjM,EAAO,CACpB,IAAIwsB,EAAYxsB,EAAM,OAAO,OAAOA,EAAOA,EAAM,OAAO,KAAK,EACzDA,EAAM,IAAI,mBACVwsB,EAAYxsB,EAAM,IAAI,iBAAiBwsB,CAAS,GAEpDA,EAAYA,EAAaA,EAAU,MAAM,GAAG,EAAE,KAAKxsB,EAAM,IAAI,QAAQ,EAAIA,EAAM,IAAI,SAAY,GAQpFwsB,IAAP,KACAA,EAAY,QAEC,OAAOA,GAApB,WACAA,EAAY,QAGhBxsB,EAAMA,EAAMA,EAAM,IAAI,IAAI,EAAE,KAAO,OAAO,EAAE,KAAK,KAAKwsB,CAAS,EAC/DxsB,EAAM,IAAI,MAAQ,CAAA,CAAC,EAEvBusB,EAAQ,MAAM,KAAKtgB,CAAI,EAGnBjM,EAAM,MAAM,WACRA,EAAM,MAAM,OAAS,YAAcA,EAAM,MAAM,YAAc,UAE7DA,EAAMA,EAAM,MAAM,IAAI,EAAE,IAAI,gBAAgB,KAAK,CAAC,GAAG,CAAC,CAAC,EACvDiM,EAAO,SAAUjM,EAAOe,EAAM,CAE1B,IAAI0rB,EAAczsB,EAAM,SAAS,SAASe,EAAK,EAAE,EAAE,SAAS,YACvD0rB,IACDA,EAAc,GAElB,IAAI/qB,EAAM7B,EAAI,KAAK,QAAQ,GAAK4sB,CAAW,EAC3CzsB,EAAMA,EAAM,IAAI,IAAI,EAAE,KAAK,KAAK0B,CAAG,CAAA,EAEvC6qB,EAAQ,MAAM,KAAKtgB,CAAI,GAE3BjM,EAAM,MAAM,SAAW,IAI3BiM,EAAO,SAAUjM,EAAO,CAMpBA,EAAM,IAAI,WAAW,EAAI,OACzBA,EAAM,IAAI,iBAAiB,EAAI,OAC/BA,EAAM,IAAI,gBAAgB,EAAI,OAC9BA,EAAM,IAAI,cAAgB,EAAA,EAE9BusB,EAAQ,MAAM,KAAKtgB,CAAI,EACvBJ,EAAO,KAAK0gB,CAAO,CAAA,GAM3B1sB,EAAI,KAAK,MAAQ,CACb,MAAO,SAAUG,EAAO6L,EAAQ,CAE5B,GAAI,KAAK,QAAQ,KAAM,CAEnB,IAAII,EAAO,SAAUjM,EAAOe,EAAMJ,EAAM,CASpC,IAAI+rB,EAAU7sB,EAAI,cAAc,KAAMG,EAAOe,EAAMJ,CAAI,EACnDA,GAAQ,KAAK,QAAQ,OAAS,YAE9BA,EAAK,sBAAwB,KAAK,QAAQ,MAG1C+rB,IACA1sB,EAAM,IAAI,cAAc,IAAI,cAAgB,IAEhDH,EAAI,+BAA+BG,EAAO0sB,EAAS,KAAM,IAAI,EACzDA,EAAQ,QAAQ,IAAI,IAAM,KAEtB,KAAK,QAAQ,qBACT,CAAC1sB,EAAM,IAAI,kBAAoB,EAAEA,EAAM,IAAI,QAAa,WAAaA,EAAM,IAAI,OAAS,cACxF0sB,EAAU7sB,EAAI,OAAO,WAAW,kBAAkB,EAAEG,EAAO0sB,CAAO,GAG1E1sB,EAAM,OAAO,OAAO0sB,EAAS,IAAI,EACrC,EAEJ,KAAK,MAAM,KAAKzgB,CAAI,CAAA,KACjB,CACE,KAAK,QAAQ,OACd,KAAK,QAAQ,KAAO,QAMxB,QAFI0gB,EAAW3sB,EAAM,MAAM,gBAAgBA,EAAM,MAAM,gBAAgB,OAAO,CAAC,EAC3E4sB,EAAa5sB,EAAM,MAAM,WAAWA,EAAM,MAAM,WAAW,OAAO,CAAC,EAC9DE,EAAI,EAAGC,EAAOwsB,EAAS,OAAQzsB,EAAIC,EAAMD,GAAK,EAC9C0sB,EAAWD,EAASzsB,CAAC,CAAC,IACvB0sB,EAAWD,EAASzsB,CAAC,CAAC,EAAI,CAAA,GAGlC,GAAKF,EAAM,MAAM,UAKb,QAASE,EAAI,EAAGC,EAAOwsB,EAAS,OAAQzsB,EAAIC,EAAMD,GAAK,EACnD0sB,EAAWD,EAASzsB,CAAC,CAAC,EAAE,MAAQ,SALpC,SAASA,EAAI,EAAGC,EAAOwsB,EAAS,OAAQzsB,EAAIC,EAAMD,GAAK,EACnD0sB,EAAWD,EAASzsB,CAAC,CAAC,EAAE,OAAS,IAMzC,CAEJ2L,EAAO,KAAK,IAAI,CAAA,GAMxBhM,EAAI,KAAK,OAAS,CACd,MAAO,SAAUG,EAAO6L,EAAQ,CAC5B,IAAII,EAAM4gB,EAAcC,EAAczJ,EAEtC,SAAS0J,GAAY,CACb/sB,EAAM,MAAM,OAAS,iBACrB8sB,EAAe,IAAIjtB,EAAI,MAAM,OAAQA,EAAI,SAAS,EAClDoM,EAAO,SAASjM,EAAO,CAEnB,GAAI,CAACA,EAAM,IAAI,sBAAuB,CAClC,IAAIiC,EACAjC,EAAM,IAAI,aAAaA,EAAM,IAAI,IAAI,EAAEA,EAAM,IAAI,gBAAgB,EACjEiC,EAASjC,EAAM,IAAI,aAAaA,EAAM,IAAI,IAAI,EAAEA,EAAM,IAAI,gBAAgB,EAAE,OAE5EiC,EAASjC,EAAM,aAAa,IAAI,cAMpC,IAAIgtB,EAAUhtB,EAAM,OAAO,QAAQ,MAAA,EAC/BA,EAAM,IAAI,cACVgtB,EAAQ,MAAMA,EAAQ,MAAM,OAAO,CAAC,EAAE,QAAQ,OAAS/qB,EAEvD+qB,EAAQ,QAAQ,OAAS/qB,CAC7B,CAEAjC,EAAM,aAAa,IAAI,oBAAoB,GAE3CA,EAAM,OAAO,OAAO,WAAW,CACnC,EAEJ8sB,EAAa,MAAM,KAAK7gB,CAAI,EAC5BJ,EAAO,KAAKihB,CAAY,EAC5B,CAGA,KAAK,YAAcjtB,EAAI,QAEnB,KAAK,WACLG,EAAM,MAAM,uBAAyB,KAAK,WAE1CA,EAAM,MAAM,uBAAyBA,EAAM,IAAI,gBAAgB,EAGnEiM,EAAO,SAAUjM,EAAOe,EAAMJ,EAAM,CAChC,GAAIX,EAAM,IAAI,uBAAuB,wBAC9BA,EAAM,IAAI,mBACV,CAACA,EAAM,IAAI,cACXe,EAAK,WACLf,EAAM,IAAI,OAAS,WAAY,CAElC,IAAIitB,EAAa,IAAIptB,EAAI,MAAM,QAASA,EAAI,KAAK,EACjDotB,EAAW,YAAc,CAAC,CAAC,QAAS,OAAO,CAAC,EAC5CjtB,EAAM,OAAO,SAAS,aAAcitB,CAAU,EAC9CjtB,EAAM,OAAO,QAAQ,MAAA,EAAQ,QAAUe,EAAK,UACxCJ,IACAX,EAAM,OAAO,QAAQ,MAAA,EAAQ,YAAcW,EAAK,YAChDX,EAAM,OAAO,QAAQ,MAAA,EAAQ,WAAaW,EAAK,WACnD,CACJ,EAEJ,KAAK,MAAM,KAAKsL,CAAI,GAIpB,KAAK,YAAcpM,EAAI,OAAS,CAACG,EAAM,IAAI,aAAaA,EAAM,MAAM,IAAI,IAMxEiM,EAAO,SAAUjM,EAAOe,EAAMJ,EAAM,CAgBhC,GAdAX,EAAM,IAAI,UAAY,CAAA,EAClBW,GAAQA,EAAK,aAAa,GAC1BX,EAAM,IAAI,UAAU,KAAK,SAAS,EAElCA,EAAM,IAAI,wBAAwBe,EAAK,OAAU,GAC9CA,EAAK,SACL,CAAC,SAAU,QAAQ,EAAE,QAAQA,EAAK,IAAI,IAAM,IAE/Cf,EAAM,IAAI,UAAU,KAAK,SAAS,EAElC,CAACA,EAAM,IAAI,cAAgBA,EAAM,SAAS,SAASe,EAAK,EAAE,GAAKf,EAAM,SAAS,SAASe,EAAK,EAAE,EAAE,UAChGf,EAAM,IAAI,UAAU,KAAK,6BAA6B,EAGtD,CAACA,EAAM,IAAI,cAAgBA,EAAM,IAAI,gBAAkBe,EAAK,aAC5D,QAAS0R,KAASzS,EAAM,IAAI,eAAe,QAAQe,EAAK,YAAY,EAChEf,EAAM,IAAI,UAAU,KAAKyS,CAAK,EAKtCzS,EAAM,IAAI,cAAgB,EAAA,EAE9B,KAAK,MAAM,KAAKiM,CAAI,EAEpBA,EAAO,SAAUjM,EAAO,CAEpBA,EAAM,IAAI,cAAgB,EAAA,EAE9B,KAAK,MAAM,KAAKiM,CAAI,EAGpBA,EAAO,SAAUjM,EAAO,CACpBA,EAAM,IAAI,gBAAkB,CAAA,EAEhC,KAAK,MAAM,KAAKiM,CAAI,EAEpBA,EAAO,SAAUjM,EAAOe,EAAM,CAC1B,IAAIsiB,EAAM,IAAIxjB,EAAI,MAClBG,EAAM,OAAO,UAAUqjB,CAAG,CAAA,EAE9B,KAAK,MAAM,KAAKpX,CAAI,EACpBJ,EAAO,KAAK,IAAI,EAEZ7L,EAAM,MAAM,OAAS,aACrB6sB,EAAe,IAAIhtB,EAAI,MAAM,OAAQA,EAAI,SAAS,EAClDoM,EAAO,SAAUjM,EAAOe,EAAMJ,EAAM,CAChC,GAAIA,GAAQA,EAAK,OAAQ,CACrB,IAAIkB,EAAShC,EAAI,uBAAuBG,EAAOW,EAAK,MAAM,EACrDX,EAAM,IAAI,eACX6B,EAAS7B,EAAM,OAAO,iBAAiB,OAAO6B,CAAM,GAExD,IAAIqU,EAAoBrW,EAAI,uBAAuBG,EAAO6B,CAAM,EAChE7B,EAAM,OAAO,OAAO6B,EAAQ,KAAM,GAAOqU,CAAiB,CAAA,CAC9D,EAEJ2W,EAAa,MAAM,KAAK5gB,CAAI,EAC5BJ,EAAO,KAAKghB,CAAY,IAKhC,IAAIK,EAWJ,GAVI,KAAK,aACLA,EAAS,IAAIrtB,EAAI,MAAM,QAASA,EAAI,KAAK,EACzCqtB,EAAO,OAAS,KAAK,WACrBA,EAAO,QAAQ,UAAY,KAAK,QAAQ,UACxCA,EAAO,QAAQ,OAAS,KAAK,QAAQ,OAChCltB,EAAM,IAAI,aAAaA,EAAM,MAAM,IAAI,IACxCA,EAAM,IAAI,aAAaA,EAAM,MAAM,IAAI,EAAI,CAAA,IAI/C,KAAK,YAAcH,EAAI,QACvBG,EAAM,MAAM,YAAc,GAGrB,KAAK,aAINA,EAAMA,EAAM,IAAI,IAAI,EAAE,IAAI,SAAW,CAAC,KAAK,WAAW,EACtDA,EAAOA,EAAM,IAAI,KAAO,OAAQ,EAAE,IAAI,SAAW,CAAC,KAAK,WAAW,EAElEA,EAAMA,EAAM,MAAM,IAAI,EAAE,IAAI,cAAgB,KAAK,QAAQ,OACzDA,EAAMA,EAAM,MAAM,IAAI,EAAE,IAAI,cAAgB,KAAK,QAAQ,OACzDA,EAAMA,EAAM,MAAM,IAAI,EAAE,IAAI,iBAAmB,KAAK,QAAQ,UAE5DA,EAAMA,EAAM,MAAM,IAAI,EAAE,IAAI,mBAAqB,KAAK,YAGlDA,EAAM,IAAI,aAAaA,EAAM,MAAM,IAAI,IAGvCqjB,EAAM,IAAIxjB,EAAI,MAAM,OAAQA,EAAI,KAAK,EACrCA,EAAI,KAAK,KAAQ,MAAM,KAAKwjB,EAAKrjB,EAAO6L,CAAM,IAMlD,KAAK,YAAY,CACjB,GAAK7L,EAAM,MAAM,mBAYbktB,EAAO,KAAO,UACdrtB,EAAI,WAAW,kBAAkB,EAAE,KAAKqtB,EAAQltB,EAAO,KAAK,UAAU,EACtEH,EAAI,KAAK,SAAS,EAAE,MAAM,KAAKqtB,EAAQltB,EAAO6L,CAAM,MAdnB,CAIjC,IAAIshB,EAAa,IAAIttB,EAAI,MAAM,SAAUA,EAAI,KAAK,EAClDA,EAAI,KAAK,OAAO,MAAM,KAAKstB,EAAYntB,EAAO6L,CAAM,EACpDqhB,EAAO,KAAO,KACdrtB,EAAI,WAAW,kBAAkB,EAAE,KAAKqtB,EAAQltB,EAAO,KAAK,UAAU,EACtEH,EAAI,KAAK,GAAM,MAAM,KAAKqtB,EAAQltB,EAAO6L,CAAM,CAAA,CASnD7L,EAAM,IAAI,aAAaA,EAAM,MAAM,IAAI,EAAEktB,EAAO,MAAM,EAAI,CAAA,EAC1DltB,EAAM,IAAI,aAAaA,EAAM,MAAM,IAAI,EAAEktB,EAAO,MAAM,EAAE,UAAY,KAAK,QAAQ,UACjFltB,EAAM,IAAI,aAAaA,EAAM,MAAM,IAAI,EAAEktB,EAAO,MAAM,EAAE,OAAS,KAAK,QAAQ,MAAA,CAGlF,KAAK,YAAcrtB,EAAI,MACnB,KAAK,aACLktB,EAAA,EACK/sB,EAAM,MAAM,oBAWbktB,EAAO,KAAO,UACdA,EAAO,UAAYrtB,EAAI,IACvBA,EAAI,WAAW,kBAAkB,EAAE,KAAKqtB,EAAQltB,EAAO,KAAK,UAAU,EACtEH,EAAI,KAAK,SAAS,EAAE,MAAM,KAAKqtB,EAAQltB,EAAO6L,CAAM,IAXpDqhB,EAAO,KAAO,KACdA,EAAO,UAAYrtB,EAAI,IACvBA,EAAI,WAAW,kBAAkB,EAAE,KAAKqtB,EAAQltB,EAAO,KAAK,UAAU,EACtEH,EAAI,KAAK,GAAM,MAAM,KAAKqtB,EAAQltB,EAAO6L,CAAM,EAC/C7L,EAAM,MAAM,mBAAqB,KAUpC,KAAK,aACN+sB,EAAA,EAEI/sB,EAAM,IAAI,aAAaA,EAAM,MAAM,IAAI,GAGnCA,EAAM,MAAM,qBACZqjB,EAAM,IAAIxjB,EAAI,MAAM,OAAQA,EAAI,GAAG,EACnCA,EAAI,KAAK,KAAQ,MAAM,KAAKwjB,EAAKrjB,EAAO6L,CAAM,EAC9CwX,EAAM,IAAIxjB,EAAI,MAAM,SAAUA,EAAI,GAAG,EACrCA,EAAI,KAAK,OAAO,MAAM,KAAKwjB,EAAKrjB,EAAO6L,CAAM,GAGrD7L,EAAM,yBAA2B,GAC7BA,EAAM,MAAM,OAAS,aACrB8sB,EAAe,IAAIjtB,EAAI,MAAM,OAAQA,EAAI,SAAS,EAClDoM,EAAO,SAAUjM,EAAOe,EAAMJ,EAAM,CAEhC,GAAIA,GAAQA,EAAK,OAAQ,CACrB,IAAIsB,EAASpC,EAAI,wBAAwBG,EAAOW,EAAK,MAAM,EACtDX,EAAM,IAAI,eACXiC,EAASjC,EAAM,OAAO,iBAAiB,OAAOiC,CAAM,GAExDjC,EAAM,OAAO,OAAQiC,EAAS,IAAI,CAAA,CACtC,EAEJ6qB,EAAa,MAAM,KAAK7gB,CAAI,EAC5BJ,EAAO,KAAKihB,CAAY,GAI5B7gB,EAAO,SAAUjM,EAAO,CACpBA,EAAM,OAAO,WAAA,CAAW,EAE5B,KAAK,MAAM,KAAKiM,CAAI,EACpBA,EAAO,SAAUjM,EAAOe,EAAM,CACtBf,EAAM,IAAI,uBAAuB,wBAC9BA,EAAM,IAAI,mBACV,CAACA,EAAM,IAAI,cACXe,EAAK,WACLf,EAAM,IAAI,OAAS,YAEtBA,EAAM,OAAO,OAAA,CACjB,EAEJ,KAAK,MAAM,KAAKiM,CAAI,EACpBJ,EAAO,KAAK,IAAI,EAChB7L,EAAM,MAAM,YAAc,GAC1BA,EAAM,MAAM,mBAAqB,IAEzC,GAMRH,EAAI,KAAK,MAAQ,CACb,MAAO,UAAY,CAAA,GAKvBA,EAAI,KAAK,YAAc,CACnB,MAAO,SAAUG,EAAO6L,EAAQ,CAC5B,GAAI,KAAK,YAAchM,EAAI,MAAO,CAE9B,IAAIstB,EAAa,IAAIttB,EAAI,MAAM,SAAUA,EAAI,KAAK,EAClDA,EAAI,KAAK,OAAU,MAAM,KAAKstB,EAAYntB,EAAO6L,CAAM,EAEvD,IAAIuhB,EAAS,IAAIvtB,EAAI,MAAM,KAAMA,EAAI,KAAK,EAC1CA,EAAI,WAAW,4BAA4B,EAAE,KAAKutB,EAAQptB,CAAK,EAC/DH,EAAI,KAAK,GAAM,MAAM,KAAKutB,EAAQptB,EAAO6L,CAAM,EAE/C,IAAII,EAAO,SAASjM,EAAOe,EAAM,CAM7B,GAJAf,EAAM,IAAI,QAAUe,EACpBf,EAAM,IAAI,QAAUA,EAAM,IAAI,KAC9BA,EAAM,IAAI,kBAAoB,GAE1Be,EAAK,eAAe,GAAKA,EAAK,wBAAwB,EAAG,CAEzD,IAAIssB,EAAU,KAAK,MAAM,KAAK,UAAUtsB,CAAI,CAAC,EAE7CssB,EAAQ,SAAWA,EAAQ,eAAe,EAC1C,IAAI/c,EAAWzQ,EAAI,cAAcwtB,EAAQ,SAAUrtB,EAAM,IAAI,gBAAgB,EAAE,CAAC,CAAC,EAEjF,GAAIA,EAAM,IAAI,aACV,QAASE,KAAKF,EAAM,IAAI,aAAc,CAClC,IAAIstB,EAActtB,EAAM,IAAI,aAAaE,CAAC,EACtCqtB,EAAU,GACd,QAAS7sB,KAAK4sB,EAAa,CACvB,IAAIE,EAAUF,EAAY5sB,CAAC,EAC3B,GAAI4P,EAAS,OAASkd,EAAQ,MAAQld,EAAS,OAASkd,EAAQ,MAAQld,EAAS,OAASkd,EAAQ,KAAM,CACpGD,EAAUD,EAAY,CAAC,EAAE,KACzB,KAAA,CACJ,CAECC,IACDA,EAAUvtB,EAAM,IAAI,gBAAgB,EAAE,CAAC,GAE3CA,EAAM,IAAI,KAAOutB,CAAA,CAIzB,QAAS7rB,KAAO2rB,EACZ,GAAI,CAAC,KAAM,OAAQ,WAAY,OAAO,EAAE,QAAQ3rB,CAAG,IAAM,IAAMA,EAAI,MAAM,EAAG,CAAC,IAAM,OAC/E,GAAI2rB,EAAQ,OAASA,EAAQ,MAAM,MAAM3rB,CAAG,EAAG,CAC3C,IAAI+rB,EAAW,GACf,QAASntB,KAAQ+sB,EAAQ,MAAM,MAAM3rB,CAAG,EACpC,GAAI4O,EAAS,OAAShQ,EAAK,QAAQ,iBAAkB,IAAI,EAAG,CACxDmtB,EAAW,GACX,KAAA,CAGJA,GACA,OAAOJ,EAAQ3rB,CAAG,CACtB,MAEA,OAAO2rB,EAAQ3rB,CAAG,EAI9B,QAASA,KAAO2rB,EACR3rB,EAAI,MAAM,EAAG,CAAC,IAAM,QACpB2rB,EAAQ3rB,EAAI,MAAM,CAAC,CAAC,EAAI2rB,EAAQ3rB,CAAG,EACnC1B,EAAM,IAAI,kBAAoB,IAE1BqtB,EAAQ,OAASA,EAAQ,MAAM,OAC3B,CAACA,EAAQ,OAAS3rB,CAAG,GAAK2rB,EAAQ,MAAM,MAAM3rB,CAAG,IAC7C2rB,EAAQ,MAAM,MAAM3rB,CAAG,EAAE4O,EAAS,IAAI,GACtC+c,EAAQ3rB,CAAG,EAAI2rB,EAAQ,MAAM,MAAM3rB,CAAG,EAAE4O,EAAS,IAAI,EACrDtQ,EAAM,IAAI,kBAAoB,IACvBqtB,EAAQ,MAAM,MAAM3rB,CAAG,EAAE4O,EAAS,IAAI,GAC7C+c,EAAQ3rB,CAAG,EAAI2rB,EAAQ,MAAM,MAAM3rB,CAAG,EAAE4O,EAAS,IAAI,EACrDtQ,EAAM,IAAI,kBAAoB,IACvBqtB,EAAQ,MAAM,MAAM3rB,CAAG,EAAE4O,EAAS,IAAI,IAC7C+c,EAAQ3rB,CAAG,EAAI2rB,EAAQ,MAAM,MAAM3rB,CAAG,EAAE4O,EAAS,IAAI,EACrDtQ,EAAM,IAAI,kBAAoB,IAKlD,CAGJA,EAAM,OAAO,UAAU,IAAI,EAC3BA,EAAM,SAAS,QAAQe,EAAK,EAAE,EAAIssB,EAClCrtB,EAAM,WAAa,IAAIH,EAAI,WAAWG,EAAOqtB,CAAO,CAAA,EAExD,KAAK,MAAM,KAAKphB,CAAI,EACpBJ,EAAO,KAAK,IAAI,EAEhB,IAAIshB,EAAa,IAAIttB,EAAI,MAAM,SAAUA,EAAI,KAAK,EAClDA,EAAI,KAAK,OAAU,MAAM,KAAKstB,EAAYntB,EAAO6L,CAAM,EAEvD,IAAIuhB,EAAS,IAAIvtB,EAAI,MAAM,KAAMA,EAAI,KAAK,EAC1CA,EAAI,WAAW,4BAA4B,EAAE,KAAKutB,EAAQptB,CAAK,EAC/D,IAAIiM,EAAO,SAASjM,EAAO,CACvBA,EAAM,IAAI,kBAAoB,EAAA,EAElCotB,EAAO,MAAM,KAAKnhB,CAAI,EACtBpM,EAAI,KAAK,GAAM,MAAM,KAAKutB,EAAQptB,EAAO6L,CAAM,CAAA,SAExC,KAAK,YAAchM,EAAI,IAAK,CAEnC,IAAIutB,EAAS,IAAIvtB,EAAI,MAAM,KAAMA,EAAI,GAAG,EACxCA,EAAI,KAAK,GAAM,MAAM,KAAKutB,EAAQptB,EAAO6L,CAAM,EAE/C,IAAIshB,EAAa,IAAIttB,EAAI,MAAM,SAAUA,EAAI,GAAG,EAChDA,EAAI,KAAK,OAAU,MAAM,KAAKstB,EAAYntB,EAAO6L,CAAM,EAEvD,IAAII,EAAO,SAASjM,EAAOe,EAAM,CAC7Bf,EAAM,OAAO,WAAA,EACbA,EAAM,SAAS,QAAQe,EAAK,EAAE,EAAIf,EAAM,IAAI,QAC5CA,EAAM,IAAI,KAAOA,EAAM,IAAI,QAC3BA,EAAM,WAAa,IAAIH,EAAI,WAAWG,EAAOA,EAAM,IAAI,OAAO,EAC9DA,EAAM,IAAI,kBAAoB,EAAA,EAElC,KAAK,MAAM,KAAKiM,CAAI,EACpBJ,EAAO,KAAK,IAAI,EAEhB,IAAIuhB,EAAS,IAAIvtB,EAAI,MAAM,KAAMA,EAAI,GAAG,EACxCA,EAAI,KAAK,GAAM,MAAM,KAAKutB,EAAQptB,EAAO6L,CAAM,EAE/C,IAAIshB,EAAa,IAAIttB,EAAI,MAAM,SAAUA,EAAI,GAAG,EAChDA,EAAI,KAAK,OAAU,MAAM,KAAKstB,EAAYntB,EAAO6L,CAAM,CAAA,CAE3D,GAIRhM,EAAI,KAAK,kBAAkB,EAAI,CAC3B,MAAO,SAAUG,EAAO6L,EAAQ,CAC5B,GAAI,KAAK,YAAchM,EAAI,UAAW,CAElC,IAAIoM,EAAO,SAASjM,EAAOe,EAAM,CAC7B,IAAIA,EAAOf,EAAM,YAAYe,EAAK,EAAE,EACpClB,EAAI,QAAQ,KAAKG,EAAOe,CAAI,CAAA,EAEhC,KAAK,MAAM,KAAKkL,CAAI,CAAA,CAExBJ,EAAO,KAAK,IAAI,CAAA,GAQxBhM,EAAI,WAAa,SAASG,EAAOe,EAAMJ,EAAM,CACzC,KAAK,MAAQ,GACb,KAAK,MAAQX,EAET,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,KAAK,EAG9B,KAAK,KAAOe,EACZ,KAAK,KAAOJ,EACZ,KAAK,aAAe,EACpB,KAAK,UAAY,CAAA,EACjB,KAAK,wBAA0B,GAC/B,KAAK,aAAe,EACxB,EAEAd,EAAI,WAAW,UAAU,KAAO,SAAU2B,EAAO,CAC7C,KAAK,aAAeA,EAAM,aACtB,KAAK,MAAM,IAAI,mBACf,KAAK,MAAM,IAAI,gCAAkC,IAEjD,KAAK,iBACL,KAAK,aAAe,KAAK,aAAe,KAAK,gBAEjD,KAAK,eAAiB,EACtB,KAAK,MAAQA,EACb,KAAK,UAAYA,EAAM,UAEvB,KAAK,MAAM,IAAI,MAAQ,CAAA,EACvB,KAAK,MAAM,IAAI,cAAgB,CAAA,EAC/B,KAAK,MAAM,IAAI,WAAa,GAC5B,KAAK,MAAM,IAAI,UAAY,GAC3B,KAAK,MAAM,IAAI,UAAY,GAC3B,QAAStB,EAAI,EAAGC,EAAO,KAAK,UAAU,OAAQD,EAAIC,EAAMD,GAAK,EACrD,KAAK,KAAK,KAAK,UAAUA,CAAC,CAAC,GAAK,KAAK,KAAK,KAAK,UAAUA,CAAC,CAAC,EAAE,SAC7D,KAAK,MAAM,IAAI,MAAQ,KAAK,MAAM,IAAI,MAAM,OAAO,KAAK,KAAK,KAAK,UAAUA,CAAC,CAAC,CAAC,GAmBvF,GAhBA,KAAK,OAAO,EAAI,OAEhB,KAAK,KAAU,OAEf,KAAK,KAAO,OAEZ,KAAK,gBAAkB,CAAA,EAMvB,KAAK,MAAM,IAAI,cAAc,IAAI,iBAAmB,GAEpD,KAAK,cAAgB,KAAK,UAAU,CAAC,EAEjC,EAAC,KAAK,MAAM,IAAI,MAAM,OAM1B,KAAIwtB,EAAkB,KAAK,kBAAkB,KAAK,YAAY,EAC9D,GAAIA,EAAiB,CACjB,KAAK,MAAM,IAAI,eAAe,IAAA,EAC9B,KAAK,MAAM,IAAI,eAAe,KAAK,EAAI,EAEvC,QAASxtB,KAAK,KAAK,UAAW,CAC1B,IAAIU,EAAM,KAAK,MAAM,IAAI,UAAU,QAAQ,KAAK,UAAUV,CAAC,CAAC,EACxDU,EAAM,KACN,KAAK,MAAM,IAAI,UAAY,KAAK,MAAM,IAAI,UAAU,MAAM,EAAGA,CAAG,EAAE,OAAO,KAAK,MAAM,IAAI,UAAU,MAAMV,EAAE,CAAC,CAAC,EAChH,CAEJ,KAAK,MAAM,IAAI,uBAAyB,GACxC,KAAK,UAAY,CAAA,CAAC,EAE1B,EAGAL,EAAI,WAAW,UAAU,OAAS,SAAU2B,EAAOmsB,EAAe,CAI9D,GAHA,KAAK,aAAensB,EAAM,aAC1B,KAAK,cAAgBmsB,EAEjB,KAAK,MAAM,IAAI,eAAe,QAAS,CACvC,KAAK,eAAiB,EAItB,KAAK,UAAYnsB,EAAM,UAGvB,IAAIosB,EAAS,KAAK,MAAM,IAAI,MAAM,MAAA,EAClC,KAAK,MAAM,IAAI,MAAQ,CAAA,EAEvB,QAAS1tB,EAAI,EAAGC,EAAO,KAAK,UAAU,OAAQD,EAAIC,EAAMD,GAAK,EACrD,KAAK,KAAK,KAAK,UAAUA,CAAC,CAAC,GAAK,KAAK,KAAK,KAAK,UAAUA,CAAC,CAAC,EAAE,SAC7D,KAAK,MAAM,IAAI,MAAQ,KAAK,MAAM,IAAI,MAAM,OAAO,KAAK,KAAK,KAAK,UAAUA,CAAC,CAAC,CAAC,GAGnF,KAAK,MAAM,IAAI,MAAM,QACrB,KAAK,MAAM,IAAI,eAAe,QAAQ,GAAOL,EAAI,OAAO,EAG5D,KAAK,MAAM,IAAI,MAAQ+tB,CAAA,CAK3B,IAAIF,EAAkB,KAAK,kBAAkB,KAAK,YAAY,EAC9D,GAAIA,EAAiB,CACjB,KAAK,MAAM,IAAI,eAAe,IAAA,EAC9B,KAAK,MAAM,IAAI,eAAe,KAAK,EAAI,EACvC,QAASxtB,KAAK,KAAK,UAAW,CAC1B,IAAIU,EAAM,KAAK,MAAM,IAAI,UAAU,QAAQ,KAAK,UAAUV,CAAC,CAAC,EACxDU,EAAM,KACN,KAAK,MAAM,IAAI,UAAY,KAAK,MAAM,IAAI,UAAU,MAAM,EAAGA,CAAG,EAAE,OAAO,KAAK,MAAM,IAAI,UAAU,MAAMV,EAAE,CAAC,CAAC,EAChH,CAEJ,KAAK,UAAY,CAAA,CAAC,CAE1B,EAEAL,EAAI,WAAW,UAAU,YAAc,UAAY,CAC/C,IAAIK,EAAGC,EACH0tB,EAAY,KAAK,UAWrB,GAVI,KAAK,YAAY,OACb,CAAC,KAAK,YAAY,IAAI,OAAO,OAAS,CAAC,KAAK,YAAY,IAAI,OAAO,MAAM,UACzE,KAAK,YAAY,IAAI,OAAO,MAAQ,KAAK,KAAK,IAAI,OAAO,QAEzD,CAAC,KAAK,YAAY,IAAI,SAAS,OAAS,CAAC,KAAK,YAAY,IAAI,SAAS,MAAM,UAC7E,KAAK,YAAY,IAAI,SAAS,MAAQ,KAAK,KAAK,IAAI,SAAS,QAIrE,KAAK,gBAAkB,CAAA,EACnB,KAAK,OAML,IALA,KAAK,aAAehuB,EAAI,KAAK,WAAW,KAAK,MAAM,EACnD,KAAK,aAAa,QAAQ,OAAS,GACnC,KAAK,aAAa,QAAQ,OAAS,GAG9BK,EAAI,EAAGC,EAAO,KAAK,OAAO,MAAM,OAAQD,EAAIC,EAAMD,GAAK,EACxD,KAAK,OAAO,MAAMA,CAAC,EAAE,KAAK,KAAK,aAAc,KAAK,MAAO,KAAK,IAAI,OAGtE,KAAK,aAAe,GAGxB,GAAI,KAAK,MAML,IALA,KAAK,YAAcL,EAAI,KAAK,WAAW,KAAK,KAAK,EACjD,KAAK,YAAY,QAAQ,OAAS,GAClC,KAAK,YAAY,QAAQ,OAAS,GAG7BK,EAAI,EAAGC,EAAO,KAAK,MAAM,MAAM,OAAQD,EAAIC,EAAMD,GAAK,EACvD,KAAK,MAAM,MAAMA,CAAC,EAAE,KAAK,KAAK,YAAa,KAAK,MAAO,KAAK,IAAI,OAGpE,KAAK,YAAc,GA+CvB,GA3CI,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,KAAK,EAI9B,KAAK,cAAA,EAED,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,KAAK,EAI9B,KAAK,4BAAA,EAED,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,KAAK,EAK9B,KAAK,0BAAA,EAED,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,KAAK,EAK1B,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,KAAK,EAI9B,KAAK,cAAA,EAGL,KAAK,eAAA,EAED,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,KAAK,EAI1B,KAAK,KAAK,QAAQ,OAAS,QAAS,EAChC,KAAK,MAAM,IAAI,WAAa,KAAK,aAAe,KAChD,KAAK,MAAM,OAAO,OAAO,KAAK,YAAa,OAAO,EAClD,KAAK,MAAM,IAAI,cAAc,IAAI,iBAAmB,IAExD,MAAA,CAIA,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,KAAK,EAG9B,KAAK,kBAAA,EAED,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,KAAK,EAG9B,KAAK,cAAc,KAAK,YAAY,EAEhC,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,MAAM,EAG/B,KAAK,eAAA,EAED,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,MAAM,EAG/B,IAAI4tB,EAAY,CAAA,EAChB,IAAK5tB,EAAI,EAAGC,EAAO0tB,EAAU,OAAQ3tB,EAAIC,EAAMD,GAAK,EAAG,CACnD,IAAI6tB,EAAIF,EAAU3tB,CAAC,EACf8tB,EAAmB,CAAA,EACnBC,EAAe,GACfC,EAAU,KACd,GAAI,CAAC,KAAK,MAAM,IAAI,uBAAuB,iCACvCA,EAAU,KAAK,MAAM,CAAC,KAAK,SAASH,CAAC,CAAC,EAAG,EAAE,MACxC,CAEC,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,OAAO,EAGhC,QAASrtB,EAAI,EAAGY,EAAO,KAAK,aAAaysB,CAAC,EAAE,OAAQrtB,EAAIY,EAAMZ,GAAK,EAC/DstB,EAAiB,KAAK,KAAK,2BAA2B,CAAC,KAAK,QAAQD,CAAC,EAAErtB,CAAC,EAAG,KAAK,aAAaqtB,CAAC,EAAErtB,CAAC,CAAC,CAAC,CAAC,EAOxG,GAJI,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,OAAO,EAG5B,KAAK,aAAaqtB,CAAC,EAAE,OAAQ,CAC7B,IAAIlpB,EAAM,KAAK,aAAe,KAAK,gBAAgBkpB,CAAC,EAChD,KAAK,SAASA,CAAC,EAAE,SACjBlpB,GAAO,GAEXopB,EAAe,KAAK,oBAAoBD,EAAkBnpB,CAAG,CAAA,CAG7D,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,OAAO,EAGhC,IAAIqpB,EAAU,KAAK,+BAA+B,CAAC,KAAK,SAASH,CAAC,EAAGE,CAAY,CAAC,EAE9E,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,OAAO,CAChC,CAeJ,GAZIC,IAEK,KAAK,MAAM,IAAI,YAChBA,EAAU,KAAK,aAAaA,EAASH,CAAC,GAE1CD,EAAU,KAAKI,CAAO,GAGtB,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,OAAO,EAG5B,KAAK,YACL,KACJ,CAcJ,IAXI,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,MAAM,EAG/B,KAAK,MAAM,OAAO,UAAU,OAAO,EACnC,KAAK,MAAM,OAAO,QAAQ,MAAA,EAAQ,QAAQ,UAAY,KAAK,MAAM,WAAW,KAAK,MAAO,YAAa,iBAAiB,EAElH,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,MAAM,EAG1BhuB,EAAI,EAAGC,EAAO2tB,EAAU,OAAQ5tB,EAAIC,EAAMD,GAAK,EAEhD,KAAK,MAAM,OAAO,OAAO4tB,EAAU5tB,CAAC,EAAG,UAAW,EAAI,EAEtD,CAAC,KAAK,MAAM,IAAI,cAAgB4tB,EAAU,OAAS,IACnD,KAAK,MAAM,IAAI,4BAA8B,IAG7C,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,MAAM,EAG/B,KAAK,MAAM,OAAO,WAAW,OAAO,EAEhC,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,MAAM,EAG/B,IAAI1Z,EAAO,KAAK,MAAM,OAAO,IAAA,EAC7B,KAAK,MAAM,IAAI,UAAU,IAAMA,EAE3B,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,MAAM,EAO/B,IAAI+Z,EAAatuB,EAAI,KAAK,WAAW,KAAK,KAAK,EAoB/C,GAnBI,KAAK,MAAM,IAAI,cAAc,IAAI,WACjCA,EAAI,+BAA+B,KAAK,MAAO,KAAK,MAAM,QAAQ,OAAQ,KAAM,KAAK,KAAK,EAE9F,KAAK,MAAM,OAAO,OAAOuU,EAAM+Z,CAAU,EACrC,KAAK,MAAM,IAAI,wBACf,KAAK,MAAM,IAAI,iBAAmB,IAGlC,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,MAAM,EAM3B,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,MAAM,EAG3BN,EAAU,CAAC,IAAM,YAAa,CAE9B,IAAIO,EAAmB,CAAA,EACnBC,EAAW,KAAK,KAAKR,EAAU,CAAC,CAAC,EACrC,GAAIQ,EACA,QAASnuB,EAAI,EAAGC,EAAOkuB,EAAS,OAAQnuB,EAAIC,EAAMD,GAAK,EAAG,CACtD,IAAIouB,EAAYzuB,EAAI,KAAK,MAAM,WAAWwuB,EAASnuB,CAAC,CAAC,EACjDouB,GACAF,EAAiB,KAAKE,CAAS,CACnC,CAGRF,EAAmBA,EAAiB,KAAK,IAAI,EACzCA,IACA,KAAK,MAAM,IAAI,UAAU,OAASA,EACtC,CAYJ,GAHI,KAAK,MAAM,IAAI,UAAU,QAAU,CAAC,KAAK,MAAM,IAAI,oBACnD,KAAK,MAAM,IAAI,kBAAoB,KAAK,MAAM,IAAI,UAAU,QAE9C,KAAK,KAAK,OAAxB,WACI,KAAK,MAAM,IAAI,kBAAmB,CAClC,IAAIG,EAAe,CAAA,EACnBA,EAAa,KAAK,KAAK,MAAM,IAAI,iBAAiB,EAC9C,KAAK,KAAK,OACVA,EAAa,KAAK,KAAK,KAAK,KAAK,EAErCA,EAAeA,EAAa,KAAK,IAAI,EACjCA,GAAgB,KAAK,MAAM,IAAI,kBAC3B,KAAK,MAAM,IAAI,sBACfA,EAAe,KAAK,MAAM,IAAI,oBAAoB,UAAWA,CAAY,GAE7E,KAAK,MAAM,UAAU,iBAAiB,UAAW,UAAWA,EAAc,KAAK,KAAK,QAAQ,EACxF,KAAK,MAAM,UAAU,QAAQ,QAAW,QAAQA,CAAY,IAC5D,KAAK,MAAM,IAAI,UAAU,KAAK,OAAO,EACrC,KAAK,MAAM,OAAO,OAAO,KAAK,MAAM,UAAU,QAAQ,QAAW,QAAQA,CAAY,EAAG,QAAS,EAAI,EACrGna,EAAO,KAAK,MAAM,OAAO,IAAA,EACrC,KAAK,MAAM,IAAI,UAAU,IAAI,MAAM,IAAA,EACvB,KAAK,MAAM,IAAI,UAAU,IAAI,MAAM,KAAKA,CAAI,GAEpD,CAKR,KAAK,gBAAA,EAGL,KAAK,UAAY,CAAA,EAGjB,KAAK,MAAM,IAAI,oBAAsB,EAGjC,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,MAAM,CAGnC,EAEAvU,EAAI,WAAW,UAAU,aAAe,SAAUuU,EAAM2Z,EAAG,CACvD,IAAIpqB,EACJ,GAAI,CAAC,KAAK,OAAS,CAAC,KAAK,MAAM,KAAK,aAAa,EAC7C,OAAOyQ,EAEX,IAAI9C,EAAS,EACTlN,EAAM,KAAK,eAAe2pB,CAAC,EAAI,KAAK,mBAAmBA,CAAC,EAC5D,GAAI3pB,EAAM,EACNkN,EAAS,MACN,CACH,QAASpR,EAAI,EAAGC,EAAO,KAAK,QAAQ4tB,CAAC,EAAE,OAAQ7tB,EAAIC,EAAMD,GAAK,EAC1DkE,GAAO,KAAK,cAAc2pB,CAAC,EAAE7tB,CAAC,EAE9BkE,EAAM,IACNkN,EAAS,EACb,CAGJ,OAAI,KAAK,MAAM,KAAK,aAAa,EAAE,QACd,OAAO,KAAK,MAAM,KAAK,aAAa,EAAE,OAAO,QAAQ,QAAlE,WACAA,EAAS,KAAK,MAAM,KAAK,aAAa,EAAE,OAAO,QAAQ,QAE3D3N,EAAM,KAAK,YAAYoqB,EAAGzc,EAAQ,SAAU,KAAK,aAAa,EAC9D,KAAK,MAAM,OAAO,UAAU,OAAO,EACnC,KAAK,MAAM,OAAO,OAAO3N,EAAK,KAAK,MAAM,KAAK,aAAa,EAAE,OAAQ,EAAI,EACzE,KAAK,MAAM,OAAO,OAAOyQ,EAAM,UAAW,EAAI,EAC9C,KAAK,MAAM,OAAO,WAAW,OAAO,EACpCA,EAAO,KAAK,MAAM,OAAO,IAAA,GAClB,KAAK,MAAM,KAAK,aAAa,EAAE,QACrB,OAAO,KAAK,MAAM,KAAK,aAAa,EAAE,MAAM,QAAQ,QAAjE,WACA9C,EAAS,KAAK,MAAM,KAAK,aAAa,EAAE,MAAM,QAAQ,QAE1D3N,EAAM,KAAK,YAAYoqB,EAAGzc,EAAQ,QAAS,KAAK,aAAa,EAC7D,KAAK,MAAM,OAAO,UAAU,OAAO,EACnC,KAAK,MAAM,OAAO,OAAO8C,EAAM,UAAW,EAAI,EAC9C,KAAK,MAAM,OAAO,OAAOzQ,EAAK,KAAK,MAAM,KAAK,aAAa,EAAE,MAAO,EAAI,EACxE,KAAK,MAAM,IAAI,WAAa,KAAK,MAAM,OAAO,IAAA,EAC9C,KAAK,MAAM,OAAO,OAAO,KAAK,MAAM,IAAI,WAAW,UAAU,EAAI,EACjE,KAAK,MAAM,OAAO,WAAW,OAAO,EACpCyQ,EAAO,KAAK,MAAM,OAAO,IAAA,GAEtBA,CACX,EAEAvU,EAAI,WAAW,UAAU,YAAc,SAAUuR,EAAME,EAAQ6Q,EAAU4L,EAAG,CACpE,KAAK,cACL3c,EAAO,KAAK,aAGhB,IAAIhR,EAAM,GACNiG,EAAO,KAAK,MAAM0nB,CAAC,EAAE5L,CAAQ,EACjC,OAAI9b,IACAjG,EAAMP,EAAI,UAAU,KAAK,MAAOwG,EAAM+K,EAAME,EAAQzR,EAAI,QAAQ,GAE7DO,CACX,EAGAP,EAAI,WAAW,UAAU,gBAAkB,UAAY,CACnD,IAAI2uB,EAASC,EAAOC,EAGhB,KAAK,MAAM,IAAI,UAAU,IAAI,MAAM,SAAW,IAG9C,KAAK,eAAiB,GAAK,KAAK,KAAK,KAAK,UAAU,CAAC,CAAC,GAAK,CAAC,KAAK,0BACjE,KAAK,wBAA0B,KAAK,UAAU,CAAC,IAE9C,KAAK,MAAM,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,UAC9B,KAAK,MAAM,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,SAAS,QAChD,KAAK,MAAM,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,sBACjC,KAAK,MAAM,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,qBAAqB,UAE5D,KAAK,MAAM,IAAI,sBAEfD,EAAQ,GACRD,EAAU,KAAK,MAAM,IAAI,UAAU,IAAI,MAAM,MAAM,EAAE,EAAE,CAAC,EAAE,MAC1DE,EAAW,KAAK,MAAM,IAAI,kBACtBF,IACAC,EAAQ,KAAK,MAAM,OAAO,OAAO,KAAK,MAAOD,EAAS,EAAK,GAI/D,KAAK,MAAM,IAAI,kBAAoBE,EACnC,KAAK,MAAM,SAAS,cAAc,KAAK,KAAK,EAAE,EAAID,GAC3C,CAAC,KAAK,MAAM,IAAI,cACb,CAAC,KAAK,MAAM,IAAI,uBAA0B,KAAK,MAAM,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,UAAY,KAAK,MAAM,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,SAAS,QAAW,KAAK,MAAM,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,sBAAwB,KAAK,MAAM,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,wBAE5PA,EAAQ,GACRD,EAAU,KAAK,MAAM,IAAI,UAAU,IAAI,MAAM,MAAM,EAAE,EAAE,CAAC,EAAE,MAC1DE,EAAW,KAAK,MAAM,IAAI,kBACtBF,IACAC,EAAQ,KAAK,MAAM,OAAO,OAAO,KAAK,MAAOD,EAAS,EAAK,GAE3DC,IAAU,KAAK,MAAM,IAAI,4BACrB,KAAK,KAAK,iBAAiB,GAAM,KAAK,MAAM,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,UAAY,KAAK,MAAM,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,SAAS,UAE9H,KAAK,MAAM,IAAI,UAAU,IAAI,MAAM,IAAA,EACnC,KAAK,MAAM,IAAI,UAAU,SAAW,CAAA,EAGpC,KAAK,MAAM,IAAI,kBAAoBC,GAGnC,KAAK,MAAM,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,sBAAwB,KAAK,MAAM,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,uBAChG,KAAK,MAAM,IAAI,yBAA2B,MAI9C,KAAK,MAAM,IAAI,0BAA4BD,EAIvC,KAAK,UAAU,QAAQ,KAAK,uBAAuB,EAAI,IAAM,KAAK,MAAQ,KAAK,KAAK,iBAAiB,GAAK,KAAK,KAAK,OAAS,eAC7H,KAAK,MAAM,IAAI,UAAU,IAAI,MAAM,IAAA,EACnC,KAAK,MAAM,IAAI,UAAU,SAAW,CAAA,EAGpC,KAAK,MAAM,IAAI,kBAAoBC,EAGnC,KAAK,MAAM,IAAI,iBAAmB,IAGtC,KAAK,MAAM,IAAI,eAAiB,GAE5B,KAAK,MAAM,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,sBAAwB,KAAK,MAAM,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,uBAChG,KAAK,MAAM,IAAI,yBAA2B,OAK9D,EAaA7uB,EAAI,WAAW,UAAU,SAAW,SAAUiE,EAAO,CACjD,MAAI,EAAAA,EAAM,SACF,CAACA,EAAM,OAASA,EAAM,QAAUA,EAAM,cAMlD,EAIAjE,EAAI,WAAW,UAAU,0BAA4B,UAAY,CAC7D,IAAIkuB,EAAG7tB,EAAGC,EAAMO,EAAGY,EAAMqtB,EAGzB,KAAK,eAAiB,CAAA,EACtB,KAAK,cAAgB,CAAA,EACrB,KAAK,mBAAqB,CAAA,EAE1B,IAAKZ,KAAK,KAAK,SACP,KAAK,SAAS,eAAeA,CAAC,IAC9B,KAAK,eAAeA,CAAC,EAAI,KAAK,SAASA,CAAC,EAAE,OAC1C,KAAK,SAASA,CAAC,EAAI,KAAK,kBAAkB,KAAK,SAAUA,CAAC,GAIlE,IAAKA,KAAK,KAAK,QACX,GAAI,KAAK,QAAQ,eAAeA,CAAC,EAK7B,IAJA,KAAK,mBAAmBA,CAAC,EAAI,KAAK,aAAaA,CAAC,EAAE,OAClD,KAAK,kBAAkB,KAAK,aAAcA,CAAC,EAC3C,KAAK,QAAQA,CAAC,EAAI,KAAK,QAAQA,CAAC,EAAE,MAAM,EAAG,KAAK,aAAaA,CAAC,EAAE,MAAM,EACtE,KAAK,cAAcA,CAAC,EAAI,CAAA,EACnBrtB,EAAI,EAAGY,EAAO,KAAK,QAAQysB,CAAC,EAAE,OAAQrtB,EAAIY,EAAMZ,GAAK,EACtD,KAAK,cAAcqtB,CAAC,EAAErtB,CAAC,EAAI,KAAK,QAAQqtB,CAAC,EAAErtB,CAAC,EAAE,OAC9C,KAAK,QAAQqtB,CAAC,EAAErtB,CAAC,EAAI,KAAK,kBAAkB,KAAK,QAASqtB,EAAGrtB,CAAC,EAY1E,GARI,KAAK,MAAM,IAAI,uBAAuB,6BACnC,KAAK,WAAa,GAAK,KAAK,iBAAmB,GAC/C,EAAE,KAAK,MAAM,IAAI,WACZ,KAAK,MAAM,IAAI,cACvBiuB,EAAUZ,EAEVY,EAAU,GAEVA,GAAW,KAAK,aAChB,IAAKzuB,EAAI,EAAGC,EAAO,KAAK,UAAU,OAAQD,EAAIC,EAAMD,GAAK,EAAG,CACxD6tB,EAAI,KAAK,UAAU7tB,CAAC,EAChB,KAAK,SAAS6tB,CAAC,EAAE,SACb,KAAK,eAAiBA,GACtB,KAAK,SAASA,CAAC,EAAI,KAAK,SAASA,CAAC,EAAE,MAAM,CAAC,EAC3C,KAAK,eAAeA,CAAC,GAAK,GAC1B,KAAK,aAAe,IACbY,GAAW,CAAC,KAAK,eACxB,KAAK,SAASZ,CAAC,EAAI,KAAK,SAASA,CAAC,EAAE,MAAM,EAAG,CAAC,EAC9C,KAAK,eAAeA,CAAC,EAAI,EACzB,KAAK,aAAaA,CAAC,EAAI,CAAA,EACvB,KAAK,QAAQA,CAAC,EAAI,CAAA,EAClB,KAAK,aAAeY,IAG5B,QAASjuB,EAAE,EAAEY,EAAO,KAAK,QAAQysB,CAAC,EAAE,OAAOrtB,EAAEY,EAAKZ,IAC9C,GAAI,KAAK,QAAQqtB,CAAC,EAAErtB,CAAC,EAAE,QACnB,GAAI,KAAK,eAAiBqtB,EAAG,CACzB,KAAK,QAAQA,CAAC,EAAErtB,CAAC,EAAI,KAAK,QAAQqtB,CAAC,EAAErtB,CAAC,EAAE,MAAM,CAAC,EAC/C,KAAK,cAAcqtB,CAAC,EAAErtB,CAAC,GAAK,GAC5B,KAAK,aAAe,GACpB,KAAA,SACOiuB,GAAW,CAAC,KAAK,aAAc,CACtC,KAAK,SAASZ,CAAC,EAAI,KAAK,QAAQA,CAAC,EAAErtB,CAAC,EAAE,MAAM,EAAG,CAAC,EAChD,KAAK,eAAeqtB,CAAC,EAAI,EACzB,KAAK,aAAaA,CAAC,EAAI,CAAA,EACvB,KAAK,QAAQA,CAAC,EAAI,CAAA,EAElB,KAAK,aAAeY,EACpB,KAAA,EAIR,KAAK,aAAaZ,CAAC,EAAE,SACjB,KAAK,eAAiBA,GACtB,KAAK,aAAaA,CAAC,EAAI,KAAK,aAAaA,CAAC,EAAE,MAAM,CAAC,EACnD,KAAK,mBAAmBA,CAAC,GAAK,GAC9B,KAAK,aAAe,IACbY,GAAW,CAAC,KAAK,eACxB,KAAK,aAAaZ,CAAC,EAAI,KAAK,aAAaA,CAAC,EAAE,MAAM,EAAG,CAAC,EACtD,KAAK,mBAAmBA,CAAC,EAAI,EAE7B,KAAK,aAAeY,GAE5B,CAiCR,IAAKzuB,EAAI,EAAGC,EAAO,KAAK,UAAU,OAAQD,EAAIC,EAAMD,GAAK,EAAG,CACpD,KAAK,aAAa6tB,CAAC,EAAE,SACrB,KAAK,gBAAkB,GAE3B,QAASrtB,EAAE,EAAEY,EAAK,KAAK,QAAQysB,CAAC,EAAE,OAAOrtB,EAAEY,EAAKZ,IACxC,KAAK,QAAQqtB,CAAC,EAAErtB,CAAC,EAAE,SACnB,KAAK,gBAAkB,EAG/B,CAER,EAEAb,EAAI,WAAW,UAAU,kBAAoB,SAAU+uB,EAAWjD,EAAUnb,EAAO,CAC/E,IAAIvQ,EAMJ,GALoB,OAAOuQ,EAAvB,IACAvQ,EAAM2uB,EAAUjD,CAAQ,EAExB1rB,EAAM2uB,EAAUjD,CAAQ,EAAEnb,CAAK,EAE/B,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,qBAClDvQ,EAAI,OAAS,IACbA,EAAI,OAAU,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,oBAAsB,EAAI,CAGhG,IAAI4uB,EAAQ,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,oBACjE5uB,EAAMA,EAAI,MAAM,EAAG4uB,EAAM,CAAC,EAAE,OAAO5uB,EAAI,MAAM,EAAE,CAAC,CAAA,CAEpD,OAAOA,CACX,EAKAJ,EAAI,WAAW,UAAU,4BAA8B,UAAY,CAC/D,IAAIK,EAAGC,EAAMO,EAAGY,EACZP,EAAO,KAAK,KACZ8sB,EAAY,KAAK,UAKrB,IAJA,KAAK,SAAWA,EAAU,MAAA,EAC1B,KAAK,SAAW,CAAA,EAChB,KAAK,QAAU,CAAA,EACf,KAAK,aAAe,CAAA,EACf3tB,EAAI,EAAGC,EAAO0tB,EAAU,OAAQ3tB,EAAIC,EAAMD,GAAK,EAAG,CACnD,IAAI6tB,EAAIF,EAAU3tB,CAAC,EACnB,KAAK,gBAAgB6tB,CAAC,EAAI,KAAK,eAC/B,IAAIe,EAAS,KAAK,wBAAwB/tB,EAAMgtB,CAAC,EASjD,GARI,KAAK,KAAK,QAAQ,cAAc,GAAKe,EAAO,QAAU,KAAK,KAAK,QAAQ,cAAc,IACtFA,EAAS,CAAA,GAET,KAAK,KAAK,QAAQ,cAAc,GAAKA,EAAO,QAAU,KAAK,KAAK,QAAQ,cAAc,IACtFA,EAAS,CAAA,GAEb,KAAK,aAAaf,EAAGe,CAAM,EAC3B,KAAK,2BAA2Bf,EAAGe,CAAM,EACrC,KAAK,MAAM,IAAI,uBAAuB,kCACtC,GAAI,KAAK,KAAK,QAAQ,cAAc,IAAM,EAEtC,IADA,KAAK,SAASf,CAAC,EAAI,CAAA,EACdrtB,EAAI,EAAGY,EAAO,KAAK,QAAQysB,CAAC,EAAE,OAAQrtB,EAAIY,EAAMZ,GAAK,EACtD,KAAK,QAAQqtB,CAAC,EAAErtB,CAAC,EAAI,CAAA,UAElB,KAAK,YAAY,QAAQ,cAAc,IAAM,EAAG,CAGvD,IAFA,KAAK,aAAaqtB,CAAC,EAAI,CAAA,EACvB,KAAK,SAASA,CAAC,EAAI,KAAK,SAASA,CAAC,EAAE,OAAO,KAAK,QAAQA,CAAC,CAAC,EACrDrtB,EAAI,EAAGY,EAAO,KAAK,QAAQysB,CAAC,EAAE,OAAQrtB,EAAIY,EAAMZ,GAAK,EACtD,QAASsG,EAAI,EAAGC,EAAO,KAAK,QAAQ8mB,CAAC,EAAErtB,CAAC,EAAE,OAAQsG,EAAIC,EAAMD,GAAK,EAC7D,KAAK,SAAS+mB,CAAC,EAAE,KAAK,KAAK,QAAQA,CAAC,EAAErtB,CAAC,EAAEsG,CAAC,CAAC,EAGnD,KAAK,QAAQ+mB,CAAC,EAAI,CAAA,CAAC,EAE3B,CAER,EAEAluB,EAAI,WAAW,UAAU,wBAA0B,SAAUkB,EAAM4qB,EAAU,CACzE,IAAInqB,EACJ,OAAiB,OAAOT,EAAK4qB,CAAQ,GAAjC,UAAmD,OAAO5qB,EAAK4qB,CAAQ,GAAjC,UACtC9rB,EAAI,MAAM,kBAAqB8rB,EAAW,sDAAuD,EACjGnqB,EAAQ,CAAC,CAAC,QAAST,EAAK4qB,CAAQ,EAAI,GAAG,GAC/B5qB,EAAK4qB,CAAQ,GAED,OAAO5qB,EAAK4qB,CAAQ,EAAE,QAAnC,WACP9rB,EAAI,MAAM,kBAAqB8rB,EAAW,4CAA6C,EACvF5qB,EAAK4qB,CAAQ,EAAI,CAAC5qB,EAAK4qB,CAAQ,CAAC,GAChCnqB,EAAQT,EAAK4qB,CAAQ,EAAE,MAAA,GAJvBnqB,EAAQ,CAAA,EAQLA,CACX,EAEA3B,EAAI,WAAW,UAAU,aAAe,SAAUkuB,EAAGe,EAAQ,CAEzD,GADA,KAAK,SAASf,CAAC,EAAI,CAAA,EACf,KAAK,MAAM,IAAI,uBAAuB,iCACtC,QAAS,EAAEe,EAAO,OAAO,EAAE,EAAE,IACrB,KAAK,SAASA,EAAO,CAAC,CAAC,EADC,IACE,CAC1B,IAAIhrB,EAAQ,KAAK,eAAegrB,EAAO,KAAK,EACxChrB,GACA,KAAK,SAASiqB,CAAC,EAAE,KAAKjqB,CAAK,CAC/B,KAMR,SAAS,EAAEgrB,EAAO,OAAO,EAAE,EAAE,GAAG,IAAK,CACjC,IAAIhrB,EAAQgrB,EAAO,IAAA,EACnB,GAAI,KAAK,SAAShrB,CAAK,EACnB,IAAIA,EAAQ,KAAK,eAAeA,CAAK,EAEzC,KAAK,SAASiqB,CAAC,EAAE,KAAKjqB,CAAK,CAAA,CAGnC,KAAK,SAASiqB,CAAC,EAAE,QAAA,EACb,KAAK,SAASA,CAAC,EAAE,SACjB,KAAK,gBAAkB,EAE/B,EAEAluB,EAAI,WAAW,UAAU,2BAA6B,SAAUkuB,EAAGe,EAAQ,CAGvE,GAFA,KAAK,QAAQf,CAAC,EAAI,CAAA,EAClB,KAAK,aAAaA,CAAC,EAAI,CAAA,EACnB,EAAC,KAAK,MAAM,IAAI,uBAAuB,iCAM3C,SAHIgB,EAAU,CAAA,EACVC,EAAiB,GACjB5V,EAAQ,GACHlZ,EAAI4uB,EAAO,OAAS,EAAG5uB,EAAI,GAAIA,GAAK,GACzC,GAAI,KAAK,SAAS4uB,EAAO5uB,CAAC,CAAC,EAAG,CAC1B,IAAI4D,EAAQ,KAAK,eAAegrB,EAAO5uB,CAAC,CAAC,EACrC4D,GACAirB,EAAQ,KAAKjrB,CAAK,CACtB,MAEAkrB,EAAiB,GACjB,KAAK,aAAajB,CAAC,EAAE,KAAKe,EAAO5uB,CAAC,CAAC,EAC9BkZ,IACD2V,EAAQ,QAAA,EACR,KAAK,QAAQhB,CAAC,EAAE,KAAKgB,CAAO,EAC5BA,EAAU,CAAA,GAEd3V,EAAQ,GAGZ4V,IACAD,EAAQ,QAAA,EACR,KAAK,QAAQhB,CAAC,EAAE,KAAKgB,CAAO,EAC5B,KAAK,QAAQhB,CAAC,EAAE,QAAA,EAChB,KAAK,aAAaA,CAAC,EAAE,QAAA,GAE7B,EAEAluB,EAAI,WAAW,UAAU,aAAe,SAAUivB,EAAQ,CACtD,QAAS5uB,EAAI4uB,EAAO,OAAS,EAAG5uB,EAAI,GAAIA,GAAK,GACzC4uB,EAAO,IAAA,CAEf,EAEAjvB,EAAI,WAAW,UAAU,eAAiB,SAAU+B,EAAM,CACtD,GAAI,CAAC,YAAa,wBAAwB,EAAE,QAAQ,KAAK,KAAK,IAAI,EAAI,GAAI,CACtE,IAAIqtB,EAAS,GAEb,GADAA,EAASpvB,EAAI,KAAK,MAAM,WAAW+B,CAAI,EACnCqtB,GAAU,KAAK,MAAM,IAAI,iBAAmB,EAAE,KAAK,MAAQ,KAAK,KAAK,iBAAiB,GAAI,CAC1F,IAAIhc,EAAgBgc,EAChB,KAAK,MAAM,IAAI,sBAEfhc,EAAgB,KAAK,MAAM,IAAI,oBAAoB,SAAUgc,CAAM,GAEvE,KAAK,MAAM,UAAU,iBAAiB,UAAW,WAAYhc,EAAe,KAAK,KAAK,QAAQ,EAE9F,IAAIic,EAAc,KAAK,MAAM,UAAU,QAAQ,QAAW,SAASjc,CAAa,EAC5Eic,IACIA,IAAgB,WAChBttB,EAAO,GAEPA,EAAO,CAAC,OAAOstB,EAAY,MAAM,EAAA,EAEzC,CACJ,CAEJ,OAAOttB,CACX,EAIA/B,EAAI,WAAW,UAAU,iBAAmB,SAAU4W,EAAO,CACzD,QAASvW,EAAIuW,EAAM,OAAS,EAAGvW,EAAI,GAAIA,GAAK,IACpC,CAACuW,EAAMvW,CAAC,GAAKuW,EAAMvW,CAAC,EAAE,SAAW,GAAK,CAACuW,EAAMvW,CAAC,EAAE,MAAM,UACtDuW,EAAQA,EAAM,MAAM,EAAGvW,CAAC,EAAE,OAAOuW,EAAM,MAAMvW,EAAI,CAAC,CAAC,GAG3D,OAAOuW,CACX,EAEA5W,EAAI,WAAW,UAAU,YAAc,SAAU4W,EAAO5R,EAAKnE,EAAGyuB,EAAW,CACvE,IAAI/uB,EACJ,OAAAqW,EAAQ,KAAK,iBAAiBA,CAAK,EAIf,OAAO/V,EAAvB,IACI,KAAK,UAAUmE,CAAG,EAAE,WAAa,EAClCzE,EAAM,KAAK,UAAUqW,CAAK,EAClB,KAAK,UAAU5R,CAAG,EAAE,WAAa,EACxCzE,EAAM,KAAK,cAAcqW,CAAK,EACtB,KAAK,MAAM,IAAI,cAGvBrW,EAAM,KAAK,MAAMqW,EAAO,KAAK,MAAM,WAAW,KAAK,KAAM,YAAa,iBAAkB,IAAI,CAAC,EAF7FrW,EAAM,KAAK,SAASqW,CAAK,EAKzB,KAAK,UAAU5R,CAAG,EAAE,QAAQnE,CAAC,IAAM,EACnCN,EAAM,KAAK,UAAUqW,CAAK,EACnB,KAAK,UAAU5R,CAAG,EAAE,QAAQnE,CAAC,IAAM,EAC1CN,EAAM,KAAK,cAAcqW,CAAK,EACtB,KAAK,MAAM,IAAI,cAGvBrW,EAAM,KAAK,MAAMqW,EAAO,KAAK,MAAM,WAAW,KAAK,KAAM,YAAa,iBAAkB,IAAI,CAAC,EAF7FrW,EAAM,KAAK,SAASqW,CAAK,EAK1BrW,CACX,EAGAP,EAAI,WAAW,UAAU,oBAAsB,SAAU4W,EAAO5R,EAAK,CACjE,IAAIzE,EACJ,OAAAqW,EAAQ,KAAK,iBAAiBA,CAAK,EAC/B,KAAK,UAAU5R,CAAG,EAAE,eAAiB,EACrCzE,EAAM,KAAK,UAAUqW,EAAO,aAAa,EAClC,KAAK,UAAU5R,CAAG,EAAE,eAAiB,EAC5CzE,EAAM,KAAK,cAAcqW,EAAO,aAAa,EAE7CrW,EAAM,KAAK,SAASqW,CAAK,EAEtBrW,CACX,EAGAP,EAAI,WAAW,UAAU,2BAA6B,SAAU4W,EAAO,CAEnEA,EAAQ,KAAK,iBAAiBA,CAAK,EACnC,IAAIrW,EAAM,KAAK,MAAMqW,EAAO,KAAK,MAAM,IAAI,cAAc,EACzD,OAAArW,EAAI,cAAgB,GACbA,CACX,EAIAP,EAAI,WAAW,UAAU,+BAAiC,SAAU4W,EAAO,CAEvEA,EAAQ,KAAK,iBAAiBA,CAAK,EACnC,IAAIrW,EAAM,KAAK,MAAMqW,EAAO,eAAgB,KAAK,KAAQ,OAAQ,KAAK,KAAQ,QAAQ,EAEtF,OAAOrW,CACX,EAEAP,EAAI,WAAW,UAAU,sBAAwB,SAAS4W,EAAO2Y,EAAWC,EAAW,CACnF,GAAIA,GAAa5Y,EAAM,OAAS,GACxB,KAAK,MAAM,WAAW,KAAK,KAAM,yBAAyB,IAAM,sBAAuB,CACvF,IAAI6Y,EAAW7Y,EAAMA,EAAM,OAAS,CAAC,EACjC6Y,EAAS,MAAM,OAAS,GAAKA,EAAS,MAAM,CAAC,EAAE,aAC/CD,EAAU,QAAQ,OAASD,EAC/B,CAGR,OAAOC,CACX,EAEAxvB,EAAI,WAAW,UAAU,YAAc,SAAU4W,EAAO2Y,EAAW,CAC/D,IAAIC,EAAY,GAChB,GAAI5Y,EAAM,OAAS,EAAG,CAClB,IAAI8Y,EAAmB,SACnB9Y,EAAM,OAAS,IACf8Y,EAAmB,YAEnB9Y,EAAMA,EAAM,OAAS,CAAC,EAAE,cACxB4Y,EAAY,KAAK,YAAY,IAAIE,CAAgB,EAEjDF,EAAY,KAAK,KAAK,IAAIE,CAAgB,EAG9CF,EAAY,KAAK,MAAM,KAAK,UAAUA,CAAS,CAAC,EAChDA,EAAY,KAAK,sBAAsB5Y,EAAO2Y,EAAWC,CAAS,CAAA,CAEtE,OAAOA,CACX,EAEAxvB,EAAI,WAAW,UAAU,UAAY,SAAU4W,EAAO,CAClD,IAAI2Y,EAAY,KAAK,MAAM,WAAW,KAAK,KAAM,YAAa,iBAAkB,IAAI,EAChFhb,EAAO,KAAK,MAAMqC,EAAO2Y,CAAS,EAGtC,YAAK,MAAM,OAAO,UAAU,KAAK,UAAU,MAAM,CAAC,EAGlD,KAAK,MAAM,OAAO,QAAQ,QAAQ,QAAQ,UAAY,GACtD,KAAK,MAAM,OAAO,OAAOhb,EAAM,UAAW,EAAI,EAC1CqC,EAAM,OAAS,EACf,KAAK,MAAM,OAAO,OAAO,KAAK,OAAO,EAAE,SAAU,UAAW,EAAI,EACzDA,EAAM,SAAW,GACxB,KAAK,MAAM,OAAO,OAAO,KAAK,OAAO,EAAE,OAAQ,UAAW,EAAI,EAElE,KAAK,MAAM,OAAO,WAAA,EACX,KAAK,MAAM,OAAO,IAAA,CAC7B,EAGA5W,EAAI,WAAW,UAAU,cAAgB,SAAU4W,EAAO,CACtD,IAAI2Y,EAAY,KAAK,MAAM,WAAW,KAAK,KAAM,YAAa,iBAAkB,IAAI,EAChFC,EAAY,GAChB,GAAI5Y,EAAM,OAAS,EAAG,CAClB,IAAI8Y,EAAmB,SACnB9Y,EAAM,OAAS,IACf8Y,EAAmB,YAEvBF,EAAY,KAAK,MAAM,KAAK,UAAU,KAAK,KAAK,SAASE,CAAgB,CAAC,CAAC,EAC3EF,EAAY,KAAK,sBAAsB5Y,EAAO2Y,EAAYC,CAAS,CAAA,CAGvE,OAAO,KAAK,MAAM5Y,EAAO2Y,EAAWC,CAAS,CACjD,EAEAxvB,EAAI,WAAW,UAAU,SAAW,SAAU4W,EAAO,CACjD,IAAI2Y,EAAY,KAAK,MAAM,WAAW,KAAK,KAAM,YAAa,iBAAkB,IAAI,EAChFC,EAAY,KAAK,YAAY5Y,EAAO2Y,CAAS,EACjD,OAAO,KAAK,MAAM3Y,EAAO2Y,EAAWC,CAAS,CACjD,EAGAxvB,EAAI,WAAW,UAAU,MAAQ,SAAU4W,EAAO2Y,EAAWC,EAAW,CACpE,IAAInvB,EAAGC,EAKP,GAJI,CAACsW,IAGLA,EAAQ,KAAK,iBAAiBA,CAAK,EAC/B,CAACA,EAAM,QACP,MAAO,GAEX,GAAIA,EAAM,OAAS,EACf,GAAIA,EAAM,SAAW,EACZ4Y,EAGD5Y,EAAQ,CAACA,EAAM,CAAC,EAAG4Y,EAAW5Y,EAAM,CAAC,CAAC,EAFtCA,EAAM,CAAC,EAAE,QAAQ,QAAU2Y,MAI5B,CACH,IAAI7tB,EACA8tB,EACA9tB,EAAS,EAETA,EAAS,EAGb,QADI6S,EAAOqC,EAAM,IAAA,EACRvW,EAAE,EAAEC,EAAKsW,EAAM,OAASlV,EAAOrB,EAAEC,EAAKD,IAC3CuW,EAAMvW,CAAC,EAAE,QAAQ,QAAUkvB,EAE/B3Y,EAAM,KAAK4Y,CAAS,EACpB5Y,EAAM,KAAKrC,CAAI,CAAA,CAUvB,IALA,KAAK,MAAM,OAAO,UAAA,EAKblU,EAAI,EAAGC,EAAOsW,EAAM,OAAQvW,EAAIC,EAAMD,GAAK,EAC5C,KAAK,MAAM,OAAO,OAAOuW,EAAMvW,CAAC,EAAG,GAAO,EAAI,EAElD,YAAK,MAAM,OAAO,WAAA,EACX,KAAK,MAAM,OAAO,IAAA,CAC7B,EAGAL,EAAI,WAAW,UAAU,UAAY,SAAUsvB,EAAW,CACtD,IAAItrB,EAAQ,KAAKsrB,CAAS,EAC1B,GAAIA,IAAc,cAAe,CAC7B,IAAIK,EAAW,IAAI3vB,EAAI,MAKvB,OAAO2vB,CAAA,CAEX,OAAO3rB,CACX,EAIAhE,EAAI,WAAW,UAAU,kBAAoB,SAAS4vB,EAAc,CAChE,GAAI,CAACA,EACD,MAAO,GAEX,IAAIC,EAAc,GAClB,GAAI,KAAK,UAAU,SAAW,EAAG,CAC7B,IAAI7B,EAAY,KAAK,UACjB8B,EAAW9B,EAAU,MAAA,EACzB8B,EAAS,KAAA,EACTD,EAAcC,EAAS,KAAK,EAAE,CAAA,CAElC,GAAI,CAACD,EACD,MAAO,GAEX,IAAIE,EAAW,GAIf,GAHI,KAAK,MAAM,OAAO,KAAK,MAAM,IAAI,IAAI,EAAE,MAAMF,CAAW,IACxDE,EAAW,IAEX,CAACA,EACD,YAAK,MAAM,IAAI,UAAU,KAAK,KAAK,UAAU,CAAC,CAAC,EAC/C,KAAK,MAAM,IAAI,UAAU,KAAK,KAAK,UAAU,CAAC,CAAC,EACxC,GAEX,IAAIC,EAAW,KAAK,KAAK,KAAK,UAAU,CAAC,CAAC,EACtCC,EAAY,KAAK,KAAK,KAAK,UAAU,CAAC,CAAC,EACvCC,EAAe,KAAK,iBAAiBF,EAAUC,CAAS,EAC5D,OAAIC,IAAiB,KACjB,KAAK,MAAM,IAAI,UAAU,KAAK,KAAK,UAAU,CAAC,CAAC,EAC/C,KAAK,MAAM,IAAI,UAAU,KAAK,KAAK,UAAU,CAAC,CAAC,GAM5C,CAACA,CACZ,EAEAlwB,EAAI,WAAW,UAAU,cAAgB,UAAY,CACjD,IAAIguB,EAAY,KAAK,UACjB8B,EAAW9B,EAAU,MAAA,EAIzB,GAHA8B,EAAS,KAAA,EACT,KAAK,YAAcA,EAAS,KAAK,EAAE,EAE/B,EAAC,KAAK,YAGV,KAAIC,EAAW,GAUf,GATI,KAAK,OAAS,KAAK,MAAM,KAAK,UAAU,CAAC,CAAC,IACtC,KAAK,MAAM,KAAK,UAAU,CAAC,CAAC,EAAE,OAC9BA,EAAW,KAAK,MAAM,QAAQ,KAAK,YAAa,KAAK,MAAM,KAAK,UAAU,CAAC,CAAC,EAAE,OAAO,QAAQ,KAAM,CAAC,EAC7F,KAAK,MAAM,KAAK,UAAU,CAAC,CAAC,EAAE,QACrCA,EAAW,KAAK,MAAM,QAAQ,KAAK,YAAa,KAAK,MAAM,KAAK,UAAU,CAAC,CAAC,EAAE,MAAM,QAAQ,KAAM,CAAC,IAKvG,CAAC,KAAK,MAAM,OAAO,KAAK,MAAM,IAAI,IAAI,EAAE,MAAM,KAAK,WAAW,GAC3D,CAACA,GACD,KAAK,UAAU,OAAS,EAAG,CAC9B,KAAK,YAAc,GACnB,MAAA,CAGJ,QAAS1vB,EAAI,EAAGC,EAAO,KAAK,UAAU,OAAS,EAAGD,EAAIC,EAAMD,GAAK,EAAG,CAChE,IAAI6tB,EAAI,KAAK,UAAU7tB,CAAC,EACpB8vB,EAAK,KAAK,UAAU9vB,EAAI,CAAC,EAC7B,IAAI,KAAK,SAAS6tB,CAAC,EAAE,QAAU,KAAK,SAASiC,CAAE,EAAE,UACzC,KAAK,UAAUjC,CAAC,EAAE,WAAa,KAAK,UAAUiC,CAAE,EAAE,UAC/C,CAAC,KAAK,iBAAiB,KAAK,SAASjC,CAAC,EAAG,KAAK,SAASiC,CAAE,CAAC,GAAG,CAChE,KAAK,YAAc,GACnB,MAAA,CAIR,GAAI,KAAK,QAAQjC,CAAC,EAAE,SAAW,KAAK,QAAQiC,CAAE,EAAE,OAAQ,CACpD,KAAK,YAAc,GACnB,MAAA,CAEJ,QAAStvB,EAAI,EAAGY,EAAO,KAAK,QAAQysB,CAAC,EAAE,OAAQrtB,EAAIY,EAAMZ,GAAK,EAC1D,GAAI,KAAK,UAAUqtB,CAAC,EAAE,QAAQrtB,CAAC,IAAM,KAAK,UAAUsvB,CAAE,EAAE,QAAQtvB,CAAC,GAC1D,CAAC,KAAK,iBAAiB,KAAK,QAAQqtB,CAAC,EAAErtB,CAAC,EAAG,KAAK,QAAQsvB,CAAE,EAAEtvB,CAAC,CAAC,EAAG,CACpE,KAAK,YAAc,GACnB,MAAA,CAER,EAER,EAEAb,EAAI,WAAW,UAAU,iBAAmB,SAAUowB,EAAcC,EAAS,CACzE,GAAI,CAACD,GAAgB,CAACC,GAAWD,EAAa,SAAWC,EAAQ,OAC7D,MAAO,GAEX,QAAS,EAAI,EAAG/vB,EAAO+vB,EAAQ,OAAQ,EAAI/vB,EAAM,GAAK,EAClD,QAASO,EAAI,EAAGY,EAAOzB,EAAI,WAAW,OAAQa,EAAIY,EAAMZ,GAAK,EAAG,CAC5D,IAAIiO,EAAO9O,EAAI,WAAWa,CAAC,EAC3B,GAAI,CAACuvB,EAAa,CAAC,GAAKA,EAAa,CAAC,EAAEthB,CAAI,GAAKuhB,EAAQ,CAAC,EAAEvhB,CAAI,EAC5D,MAAO,EACX,CAGR,MAAO,EACX,EAIA9O,EAAI,WAAW,UAAU,eAAiB,UAAY,CAGlD,KAAK,YAAc,EAGnB,QADIgF,EACK3E,EAAI,EAAGC,EAAO,KAAK,UAAU,OAAQD,EAAIC,EAAMD,GAAK,EAAG,CAC5D,IAAI6tB,EAAI,KAAK,UAAU7tB,CAAC,EACxB2E,EAAM,KAAK,aAAe3E,EAEtB,KAAK,SAAS6tB,CAAC,EAAE,SACjB,KAAK,MAAM,IAAI,UAAU,KAAK,KAAK,SAASA,CAAC,EAAE,OAAQ,SAAS,EAChE,KAAK,uBAAuB,KAAK,SAAU,KAAK,eAAgBA,EAAGlpB,CAAG,EACtE,KAAK,aAAe,KAAK,SAASkpB,CAAC,EAAE,QAIrC,KAAK,aAAaA,CAAC,EAAE,SACrB,KAAK,MAAM,IAAI,UAAU,KAAK,KAAK,aAAaA,CAAC,EAAE,OAAQ,SAAS,EACpE,KAAK,uBAAuB,KAAK,aAAc,KAAK,mBAAoBA,EAAGlpB,CAAG,EAC9E,KAAK,QAAQkpB,CAAC,EAAI,KAAK,QAAQA,CAAC,EAAE,MAAM,EAAG,KAAK,aAAaA,CAAC,EAAE,MAAM,EACtE,KAAK,aAAe,KAAK,aAAaA,CAAC,EAAE,QAG7C,QAASrtB,EAAI,EAAGY,EAAO,KAAK,QAAQysB,CAAC,EAAE,OAAQrtB,EAAIY,EAAMZ,GAAK,EAEtD,KAAK,QAAQqtB,CAAC,EAAErtB,CAAC,EAAE,SACnB,KAAK,MAAM,IAAI,UAAU,KAAK,KAAK,QAAQqtB,CAAC,EAAErtB,CAAC,EAAE,OAAQ,SAAS,EAClE,KAAK,uBAAuB,KAAK,QAAQqtB,CAAC,EAAG,KAAK,cAAcA,CAAC,EAAGrtB,EAAGmE,CAAG,EAC1E,KAAK,aAAe,KAAK,QAAQkpB,CAAC,EAAErtB,CAAC,EAAE,OAE/C,CAER,EAEAb,EAAI,WAAW,UAAU,uBAAyB,SAAUI,EAAKqV,EAAO5T,EAAKmD,EAAK,CAE9E,IAAIsrB,EAAgBlwB,EAAIyB,CAAG,EACvB0uB,EAA6B,KAAK,MAAM,IAAI,WAAW,EAIvD,KAAK,MAAM,IAAI,qBACX,KAAK,MAAM,IAAI,kBAAoB,KAAK,MAAM,IAAI,iBAAiB,MAAMvrB,CAAG,EAI5EurB,EAA6B,KAAK,MAAM,IAAI,iBAAiB,MAAMvrB,CAAG,EAC/DyQ,EAAM5T,CAAG,GAAK,KAAK,WAC1B0uB,EAA6B,KAAK,iBAGlC,KAAK,MAAM,IAAI,kBACZ,KAAK,MAAM,IAAI,iBAAiB,MAAMvrB,CAAG,EAAI,KAAK,eAEjDyQ,EAAM5T,CAAG,EAAI,KAAK,SAClB0uB,EAA6B9a,EAAM5T,CAAG,EAEtC0uB,EAA6B,KAAK,MAAM,IAAI,iBAAiB,MAAMvrB,CAAG,EAEnEyQ,EAAM5T,CAAG,GAAK,KAAK,WAE1B0uB,EAA6B,KAAK,gBASlC,KAAK,eAAiBA,EAA8B,KAAK,SAAW,IACpEA,EAA6B,KAAK,SAAW,IAGrD,IAAIC,EAAO,KAAK,UAAY,KAAK,eAC7BC,EAAahb,EAAM5T,CAAG,EAAI0uB,EAI1BA,EAA6B9a,EAAM5T,CAAG,IAGtC0uB,EAA6BD,EAAc,QAI3CE,GAAQC,IACJ,KAAK,cACLrwB,EAAIyB,CAAG,EAAIyuB,EAAc,MAAM,EAAGC,CAA0B,EAAE,OAAOD,EAAc,MAAM,EAAE,CAAC,EAE5FlwB,EAAIyB,CAAG,EAAIyuB,EAAc,MAAM,EAAGC,CAA0B,GAGpE,KAAK,MAAM,IAAI,kBAAkB,MAAMvrB,CAAG,EAAI5E,EAAIyB,CAAG,EAAE,OACvD,KAAK,MAAM,aAAa,QAAQ,KAAK,MAAM,IAAI,iBAAiB,CAOpE,EAOA7B,EAAI,WAAW,UAAU,cAAgB,UAAY,CAEjD,QADIgF,EACK3E,EAAI,EAAGC,EAAO,KAAK,UAAU,OAAQD,EAAIC,EAAMD,GAAK,EAAG,CAC5D,IAAI6tB,EAAI,KAAK,UAAU7tB,CAAC,EAMxB,GALA2E,EAAM,KAAK,aAAe3E,EACtB,KAAK,SAAS6tB,CAAC,EAAE,QACjB,KAAK,kBAAkB,KAAK,SAASA,CAAC,EAAGlpB,CAAG,EAG5C,KAAK,aAAakpB,CAAC,EAAE,OAAQ,CACT,OAAO,KAAK,MAAM,IAAI,kBAAkB,OAAOlpB,CAAG,EAAlE,MACA,KAAK,MAAM,IAAI,kBAAkB,OAAOA,CAAG,EAAI,CAAA,GAEnD,QAASnE,EAAE,EAAEY,EAAK,KAAK,aAAaysB,CAAC,EAAE,OAAOrtB,EAAEY,EAAKZ,GAAG,EAChC,OAAO,KAAK,MAAM,IAAI,kBAAkB,OAAOmE,CAAG,EAAEnE,CAAC,EAArE,KACA,KAAK,MAAM,IAAI,kBAAkB,OAAOmE,CAAG,EAAE,KAAK,CAAC,CAE3D,CAEJ,QAASnE,EAAI,EAAGY,EAAO,KAAK,QAAQysB,CAAC,EAAE,OAAQrtB,EAAIY,EAAMZ,GAAK,EACtD,KAAK,QAAQqtB,CAAC,EAAErtB,CAAC,EAAE,QACnB,KAAK,kBAAkB,KAAK,QAAQqtB,CAAC,EAAErtB,CAAC,EAAGmE,CAAG,CAEtD,CAER,EAEAhF,EAAI,WAAW,UAAU,kBAAoB,SAAUI,EAAK4E,EAAK,CAC7D,IAAI0rB,EAAK1G,EAAQ2G,EAAYnlB,EAAOnL,EAAGC,EAAMswB,EAI7C,IAAKvwB,EAAI,EAAGC,EAAOF,EAAI,OAAQC,EAAIC,EAAMD,GAAK,EAK1C,GAAI,GAACD,EAAIC,CAAC,EAAE,OAAS,CAACD,EAAIC,CAAC,EAAE,QAO7B,IAHAswB,EAAa,KAAK,MAAM,WAAW,KAAK,KAAM,iBAAiB,EAC/D,KAAK,MAAM,SAAS,QAAQ,QAAQ,GAAK,KAAK,KAAK,GAAIvwB,EAAIC,CAAC,EAAGA,CAAC,EAChEqwB,EAAM,KAAK,MAAM,IAAI,kBAAkB,OAAO1rB,CAAG,EAC7B,OAAO0rB,EAAvB,IAGA,QAAS7vB,EAAI,EAAGY,EAAOuD,EAAM,EAAGnE,EAAIY,EAAMZ,GAAK,EACtC,KAAK,MAAM,IAAI,kBAAkB,OAAOA,CAAC,IAC1C,KAAK,MAAM,IAAI,kBAAkB,OAAOA,CAAC,EAAI,CAAA,GAmBzD,GAfA6vB,EAAM,KAAK,MAAM,IAAI,kBAAkB,OAAO1rB,CAAG,EAAE3E,CAAC,EAKhC,OAAOqwB,EAAvB,MACA1G,EAAS,KAAK,MAAM,WAAW,KAAK,KAAM,OAAQ,YAAa,MAAM,EACrExe,EAAQ,KAAK,MAAM,SAAS,QAAQ,SAAS,GAAK,KAAK,KAAK,GAAIpL,EAAIC,CAAC,EAAGA,EAAG,EAAG2pB,EAAQ2G,CAAU,EAChG,KAAK,MAAM,IAAI,kBAAkB,OAAO3rB,CAAG,EAAE,KAAKwG,CAAK,GAI3Dwe,EAAS,KAAK,MAAM,WAAW,KAAK,KAAM,OAAQ,YAAa,MAAM,EACrE4G,EAAS,KAAK,MAAM,SAAS,QAAQ,SAAS,GAAK,KAAK,KAAK,GAAIxwB,EAAIC,CAAC,EAAGA,EAAG,EAAG2pB,EAAQ2G,CAAU,EAE7F,KAAK,MAAM,IAAI,iBAAkB,CAKjC,IAAI7uB,EAAM,KAAK,MAAM,IAAI,kBAAkB,OAAOkD,CAAG,EAAE3E,CAAC,EAGpDyB,IAAQ,GACR,KAAK,MAAM,SAAS,IAAI,+BAA+B,IAAM,YAC5C,OAAO,KAAK,MAAM,WAAW,KAAK,KAAM,iBAAiB,EAAzE,KACmB,OAAO1B,EAAIC,CAAC,EAAE,MAA9B,OACJyB,EAAM,GAEV0J,EAAQ1J,EAIJ,KAAK,MAAM,IAAI,4BAA4B,GAAK1B,EAAIC,CAAC,EAAE,QACvDmL,EAAQ,KAAK,MAAM,SAAS,QAAQ,SAAS,GAAK,KAAK,KAAK,GAAIpL,EAAIC,CAAC,EAAGA,EAAGmL,EAAO,KAAK,MAAM,WAAW,KAAK,KAAM,OAAQ,YAAa,MAAM,EAAG,KAAK,MAAM,WAAW,KAAK,KAAM,iBAAiB,CAAC,EACxM,MAOAA,EAAQolB,EAIR,CAAC,KAAK,MAAM,IAAI,cAAgB,KAAK,MAAQ,KAAK,KAAK,WAAa5wB,EAAI,gBACpE4wB,EAASplB,IACTA,EAAQolB,GAGX,KAAK,MAAM,IAAI,gBAChB,KAAK,MAAM,IAAI,kBAAkB,OAAO5rB,CAAG,EAAE3E,CAAC,EAAImL,EACjC,OAAOmlB,GAApB,WACoB,OAAO,KAAK,KAAK,QAAQ,WAAzC,KACY,KAAK,KAAK,QAAQ,aAA3B,MAEP,KAAK,MAAM,IAAI,kBAAkB,aAAe,KAKhE,EAIA3wB,EAAI,WAAW,UAAU,cAAgB,UAAY,CACjD,IAAIc,EAAO,KAAK,KAChB,KAAK,OAAO,EAAI,CAAA,EAEhB,KAAK,MAAM,OAAO,OAAO,KAAK,UAAW,KAAK,WAAY,EAAI,EAC9D,KAAK,OAAO,EAAE,OAAS,KAAK,MAAM,OAAO,IAAA,EACzC,KAAK,OAAO,EAAE,OAAO,QAAQ,OAAS,KAAK,YAC3C,KAAK,OAAO,EAAE,OAAO,QAAQ,OAAS,KAAK,mBAE3C,KAAK,MAAM,OAAO,OAAO,KAAK,UAAW,KAAK,WAAY,EAAI,EAC9D,KAAK,OAAO,EAAE,SAAW,KAAK,MAAM,OAAO,IAAA,EAC3C,KAAK,OAAO,EAAE,SAAS,QAAQ,OAAS,KAAK,YAC7C,KAAK,OAAO,EAAE,SAAS,QAAQ,OAAS,KAAK,qBAIzB,OAAOA,EAAvB,MACAA,EAAO,CAAA,GAIPA,EAAK,UACD,KAAK,MAAM,WAAW,KAAK,KAAM,sBAAsB,EAEvD,KAAK,SAAW,KAAK,MAAM,WAAW,KAAK,KAAM,sBAAsB,EAGvE,KAAK,SAAW,KAAK,MAAM,WAAW,KAAK,KAAM,WAAW,EAE5D,KAAK,MAAM,WAAW,KAAK,KAAM,4BAA4B,EAE7D,KAAK,eAAiB,KAAK,MAAM,WAAW,KAAK,KAAM,4BAA4B,EAGnF,KAAK,eAAiB,KAAK,MAAM,WAAW,KAAK,KAAM,iBAAiB,IAGxE,KAAK,MAAM,IAAI,WAAW,EAC1B,KAAK,SAAW,KAAK,MAAM,IAAI,WAAW,EAG1C,KAAK,SAAW,KAAK,MAAM,WAAW,KAAK,KAAM,WAAW,EAE5D,KAAK,MAAM,IAAI,iBAAiB,EAChC,KAAK,eAAiB,KAAK,MAAM,IAAI,iBAAiB,EAGtD,KAAK,eAAiB,KAAK,MAAM,WAAW,KAAK,KAAM,iBAAiB,EAE1D,OAAO,KAAK,MAAM,IAAI,gBAAgB,GAApD,UAEA,KAAK,cAAgB,KAAK,MAAM,IAAI,gBAAgB,EAIpD,KAAK,cAAgB,KAAK,MAAM,WAAW,KAAK,KAAM,gBAAgB,GAKzE,KAAK,MAAM,IAAI,WAAW,IAC3B,KAAK,MAAM,IAAI,WAAW,EAAI,KAAK,SAE3C,EAIAd,EAAI,WAAW,UAAU,kBAAoB,UAAY,CACrD,IAAIK,EAAGC,EAAMO,EAAGY,EAChB,IAAKpB,EAAI,EAAGC,EAAO,KAAK,UAAU,OAAQD,EAAIC,EAAMD,GAAK,EAAG,CACxD,IAAI6tB,EAAI,KAAK,UAAU7tB,CAAC,EAQxB,IAPoB,OAAO,KAAK,UAAU6tB,CAAC,EAAvC,MACA,KAAK,UAAUA,CAAC,EAAI,CAAC,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAC,GAE5D,KAAK,UAAU,KAAK,aAAe7tB,CAAC,EAAI,KAAK,UAAU6tB,CAAC,EACpD,KAAK,SAASA,CAAC,EAAE,QACjB,KAAK,kBAAkB,WAAYA,CAAC,EAEnCrtB,EAAI,EAAGY,EAAO,KAAK,QAAQysB,CAAC,EAAE,OAAQrtB,EAAIY,EAAMZ,GAAK,EAClC,OAAO,KAAK,UAAUqtB,CAAC,EAAErtB,CAAC,EAA1C,MACA,KAAK,UAAUqtB,CAAC,EAAE,QAAQrtB,CAAC,EAAI,GAEnC,KAAK,kBAAkB,UAAWqtB,EAAGrtB,CAAC,EAEtC,KAAK,aAAaqtB,CAAC,EAAE,QACrB,KAAK,kBAAkB,eAAgBA,CAAC,CAC5C,CAER,EAEAluB,EAAI,WAAW,UAAU,kBAAoB,SAAUqiB,EAAM6L,EAAGrtB,EAAG,CAC/D,IAAIT,EAAKqV,EACL4M,IAAS,WACTjiB,EAAM,KAAK,QAAQ8tB,CAAC,EAAErtB,CAAC,EACvB4U,EAAQ,KAAK,cAAcyY,CAAC,EAAErtB,CAAC,IAE/BT,EAAM,KAAKiiB,CAAI,EAAE6L,CAAC,EAClBzY,EAAQ,KAAK4M,EAAO,QAAQ,EAAE6L,CAAC,GAE/B9tB,EAAI,OAASqV,GAAS,CAAC,KAAK,MAAM,IAAI,cAClC,KAAK,cACD4M,IAAS,UACT,KAAK,UAAU6L,CAAC,EAAE,QAAQrtB,CAAC,EAAI,EAE/B,KAAK,UAAUqtB,CAAC,EAAE7L,CAAI,EAAI,EAG1BA,IAAS,UACT,KAAK,UAAU6L,CAAC,EAAE,QAAQrtB,CAAC,EAAI,EAE/B,KAAK,UAAUqtB,CAAC,EAAE7L,CAAI,EAAI,EAI9BA,IAAS,UACT,KAAK,UAAU6L,CAAC,EAAE,QAAQrtB,CAAC,EAAI,EAE/B,KAAK,UAAUqtB,CAAC,EAAE7L,CAAI,EAAI,CAGtC,EAIAriB,EAAI,WAAW,UAAU,eAAiB,UAAY,CAIlD,QADIgF,EACK3E,EAAI,EAAGC,EAAO,KAAK,UAAU,OAAQD,EAAIC,EAAMD,GAAK,EAAG,CAC5D,IAAI6tB,EAAI,KAAK,UAAU7tB,CAAC,GAEpB,KAAK,SAAS6tB,CAAC,EAAE,QAAU,KAAK,aAAaA,CAAC,EAAE,UAC3C,KAAK,MAAM,IAAI,cAAc,IAAI,YAClC,KAAK,MAAM,IAAI,gBAAkB,KAIzClpB,EAAM,KAAK,aAAe3E,EACtB,KAAK,SAAS6tB,CAAC,EAAE,SACjB,KAAK,SAASA,CAAC,EAAI,KAAK,aAAaA,EAAG,KAAK,SAASA,CAAC,EAAGlpB,CAAG,GAEjE,QAASnE,EAAI,EAAGY,EAAO,KAAK,aAAaysB,CAAC,EAAE,OAAQrtB,EAAIY,EAAMZ,GAAK,EAC/D,KAAK,QAAQqtB,CAAC,EAAErtB,CAAC,EAAI,KAAK,aAAaqtB,EAAG,KAAK,QAAQA,CAAC,EAAErtB,CAAC,EAAGmE,EAAKnE,CAAC,CACxE,CAEJ,KAAK,uBAAA,CACT,EAEAb,EAAI,WAAW,UAAU,uBAAyB,UAAY,CAG1D,QAASK,EAAI,EAAGC,EAAO,KAAK,UAAU,OAAQD,EAAIC,EAAMD,GAAK,EAEzD,QADI6tB,EAAI,KAAK,UAAU7tB,CAAC,EACfQ,EAAI,EAAGY,EAAO,KAAK,aAAaysB,CAAC,EAAE,OAAQrtB,EAAIY,EAAMZ,GAAK,EAAG,CAClE,IAAIoG,EAEAlF,EAAO,KAAK,aAAamsB,CAAC,EAAErtB,CAAC,EAM7BA,EAAGY,EAAMovB,EACT,KAAK,MAAM,IAAI,UACfA,EAAa,CAAC,MAAM,EACb9uB,EAAK,eAAiBA,EAAK,QAGlC8uB,EAAa,KAAK,MAAM,IAAI,iBAAiB,EAAE,aAE/CA,EAAa,KAAK,MAAM,IAAI,iBAAiB,EAAE,QAGnD,IAAIC,EAAO,CAAC,QAAQ,cAAc,UAAU,GAAM,SAAS,EAAA,EAC9D,GAAID,EAEH,QADIE,EAAY,CAAC,UAAW,YAAa,UAAU,EAC1C5pB,EAAI,EAAGC,EAAO2pB,EAAU,OAAQ5pB,EAAIC,GACxC,EAAAypB,EAAW,OAAS,EAAK1pB,GADqBA,GAAK,EAI1C0pB,EAAW1pB,CAAC,IACrB2pB,EAAKC,EAAU5pB,CAAC,CAAC,EAAI,UAAY0pB,EAAW1pB,CAAC,QAIlD2pB,EAAK,QAAU,kBAEZ,KAAK,MAAM,IAAI,OAAS,gBACxB,EAAE,KAAK,MAAM,IAAI,OAAS,YACxB,KAAK,MAAM,IAAI,SAAW,QAC1B,KAAK,MAAQ,CAAC,KAAK,KAAK,YAE7BA,EAAK,UAAY,GACjBA,EAAK,SAAW,IAId,KAAK,gBAAgB/uB,CAAI,EAGzB,IAAIkF,EAAc,KAAK,uBAAuBinB,EAAGnsB,EAAM+uB,EAAMjwB,CAAC,EAG9D,KAAK,aAAaqtB,CAAC,EAAErtB,CAAC,EAAIoG,CAAA,CAGtC,EAEAjH,EAAI,WAAW,UAAU,uBAAyB,SAAUkuB,EAAGnsB,EAAM+uB,EAAMjwB,EAAG,CAC1E,IAAImwB,EAAWC,EAAUC,EAAYC,EAAalqB,EAAamqB,EAAmBC,EAC9E9rB,EAAM,KAAK,QAAQxD,EAAM+uB,EAAK,QAAS,EAAI,EAC3CQ,EAAU/rB,EAAI,KACdgsB,EAAWhsB,EAAI,SAMtB,GALO+rB,IAEAA,EAAU,KAAK,iBAAiBA,EAASpD,EAAGrtB,CAAC,GAEpDmwB,EAAY,GACRF,EAAK,UAAW,CACbvrB,EAAM,KAAK,QAAQxD,EAAM+uB,EAAK,UAAW,GAAOS,CAAQ,EACxD,IAAIP,EAAYzrB,EAAI,KACpBgsB,EAAWhsB,EAAI,SACXyrB,IACTA,EAAY,KAAK,iBAAiBA,EAAW9C,EAAGrtB,CAAC,EAC5C,CAGPowB,EAAW,GACPH,EAAK,WACFvrB,EAAM,KAAK,QAAQxD,EAAM+uB,EAAK,SAAU,GAAOS,CAAQ,EACvDN,EAAW1rB,EAAI,KACX0rB,IACTA,EAAW,KAAK,iBAAiBA,EAAU/C,EAAGrtB,CAAC,IAG9C,IAAI6T,EAAI,CACJ,EAAG,CACC,IAAK,GACL,IAAK,GACL,IAAK,IAET,EAAG,CACC,IAAK,GACL,IAAK,GACL,IAAK,EAAA,GAeb,OAZI4c,IACA5c,EAAE,EAAE,IAAM4c,EAAQ,KAClB5c,EAAE,EAAE,IAAM4c,EAAQ,MAAS,OAASA,EAAQ,MAAWA,EAAQ,MAE/DN,IACAtc,EAAE,EAAE,IAAMsc,EAAU,KACpBtc,EAAE,EAAE,IAAMsc,EAAU,MAAS,OAASA,EAAU,MAAWA,EAAU,MAErEC,IACAvc,EAAE,EAAE,IAAMuc,EAAS,KACnBvc,EAAE,EAAE,IAAMuc,EAAS,MAAS,OAASA,EAAS,MAAWA,EAAS,MAE9D,KAAK,YAAY,QAAQ,mBAAmB,EAAA,CACpD,IAAK,QAEGK,EAAQ,MAAS,QACjBH,EAAc,KAAK,eAAA,EACnBlqB,EAAc,CAAC,KAAK,2BAA2B,CAACyN,EAAE,EAAE,IAAKA,EAAE,EAAE,IAAKA,EAAE,EAAE,GAAG,EAAGoc,EAAMK,EAAajD,CAAC,CAAC,IAGjGgD,EAAa,KAAK,cAAcI,EAASpD,EAAGrtB,CAAC,EAC7CoG,EAAc,CAAC,KAAK,2BAA2B,CAACyN,EAAE,EAAE,IAAKA,EAAE,EAAE,IAAKA,EAAE,EAAE,GAAG,EAAGoc,EAAMI,EAAYhD,CAAC,CAAC,GAEpG,MACJ,IAAK,aACDgD,EAAa,KAAK,cAAcI,EAASpD,EAAGrtB,CAAC,EAC7CswB,EAAc,KAAK,eAAA,EACnBC,EAAoB,KAAK,0BAA0BE,EAAQ,MAAUH,CAAW,EAEhFE,EAAmB,KAAK,2BAA2B,CAAC3c,EAAE,EAAE,IAAKA,EAAE,EAAE,IAAKA,EAAE,EAAE,GAAG,EAAGoc,EAAMI,EAAYhD,CAAC,EACnGjnB,EAAc,CAACmqB,EAAmBC,CAAgB,EAClD,MACJ,IAAK,aACDH,EAAa,KAAK,cAAcI,EAASpD,EAAGrtB,CAAC,EAC7CswB,EAAc,KAAK,eAAA,EACnBC,EAAoB,KAAK,0BAA0BE,EAAQ,MAAUH,CAAW,EAEhFE,EAAmB,KAAK,2BAA2B,CAAC3c,EAAE,EAAE,IAAKA,EAAE,EAAE,IAAKA,EAAE,EAAE,GAAG,EAAGoc,EAAMI,EAAYhD,CAAC,EACnGjnB,EAAc,CAACoqB,EAAkBD,CAAiB,EAClD,MACJ,QACIF,EAAa,KAAK,cAAcI,EAASpD,EAAGrtB,CAAC,EAE7CoG,EAAc,CAAC,KAAK,2BAA2B,CAACyN,EAAE,EAAE,IAAKA,EAAE,EAAE,IAAKA,EAAE,EAAE,GAAG,EAAGoc,EAAMI,EAAYhD,CAAC,CAAC,EAChG,KAAA,CAEJ,IAAI3Z,EAAO,KAAK,MAAMtN,EAAa,GAAG,EACtC,OAAIsN,IACAA,EAAK,cAAgB,IAEzB,KAAK,MAAM,IAAI,UAAU,SAAS,KAAKA,CAAI,EACpCA,CACX,EAEAvU,EAAI,WAAW,UAAU,2BAA6B,SAAU2B,EAAOmvB,EAAMvgB,EAAO,CAChF,IAAI+gB,EAAU,GAAON,EAAY,GAAOC,EAAW,GAAOO,EAAaC,EAAeC,EACtF,GAAI/vB,EAAM,CAAC,EAAG,CAEV,GADA6vB,EAAcxxB,EAAI,KAAK,WAAWuQ,CAAK,EACnC,KAAK,MAAM,IAAI,YAAYugB,EAAK,OAAO,GACzB,KAAK,MAAM,IAAI,YAAY,aAAaA,EAAK,OAAO,EAAE,SAAhE,MAAwE,CAExE,QADIa,EAAY,GACPtxB,EAAI,EAAGC,EAAOkxB,EAAY,YAAY,OAAQnxB,EAAIC,EAAMD,GAAK,EAC9DkQ,EAAM,YAAYlQ,CAAC,EAAE,CAAC,IAAM,eACzBmxB,EAAY,YAAYnxB,CAAC,EAAE,CAAC,IAAM,WACrCsxB,EAAY,IAGfA,GACDH,EAAY,YAAY,KAAK,CAAC,cAAe,QAAQ,CAAC,CAC1D,CAGRF,EAAU,KAAK,0BAA0B3vB,EAAM,CAAC,EAAG6vB,CAAW,CAAA,CAE9D7vB,EAAM,CAAC,IACPqvB,EAAY,KAAK,0BAA0BrvB,EAAM,CAAC,EAAG4O,CAAK,GAE1D5O,EAAM,CAAC,IACPsvB,EAAW,KAAK,0BAA0BtvB,EAAM,CAAC,EAAG4O,CAAK,GAG7D,IAAIqhB,EACJ,GAAIZ,GAAaC,EAAU,CACvB,KAAK,MAAM,OAAO,UAAU,OAAO,EAEnC,KAAK,MAAM,OAAO,OAAOK,CAAO,EAEhCG,EAAgBzxB,EAAI,KAAK,WAAWuQ,CAAK,EACrCugB,EAAK,YACLW,EAAc,QAAQ,OAAS,KAAK,MAAM,IAAI,YAAY,aAAaX,EAAK,SAAS,EAAE,OACvFW,EAAc,QAAQ,OAAS,KAAK,MAAM,IAAI,YAAY,aAAaX,EAAK,SAAS,EAAE,OAElFW,EAAc,QAAQ,SACvBA,EAAc,QAAQ,OAAS,MAGvC,IAAII,EAAkB,IAAI7xB,EAAI,MAC9B6xB,EAAgB,YAAY,KAAK,CAAC,cAAe,QAAQ,CAAC,EAC1DA,EAAgB,YAAY,KAAK,CAAC,eAAgB,QAAQ,CAAC,EAC3D,KAAK,MAAM,OAAO,UAAUA,CAAe,EAC3C,KAAK,MAAM,OAAO,OAAOb,EAAWS,CAAa,EACjD,KAAK,MAAM,OAAO,WAAA,EAElBC,EAAe1xB,EAAI,KAAK,WAAWuQ,CAAK,EACpCugB,EAAK,WACLY,EAAa,QAAQ,OAAS,KAAK,MAAM,IAAI,YAAY,aAAaZ,EAAK,QAAQ,EAAE,OACrFY,EAAa,QAAQ,OAAS,KAAK,MAAM,IAAI,YAAY,aAAaZ,EAAK,QAAQ,EAAE,OAEhFY,EAAa,QAAQ,SACtBA,EAAa,QAAQ,OAAS,MAGtC,IAAII,EAAiB,IAAI9xB,EAAI,MAC7B8xB,EAAe,YAAY,KAAK,CAAC,cAAe,QAAQ,CAAC,EACzDA,EAAe,YAAY,KAAK,CAAC,eAAgB,QAAQ,CAAC,EAC1D,KAAK,MAAM,OAAO,UAAUA,CAAc,EAC1C,KAAK,MAAM,OAAO,OAAOb,EAAUS,CAAY,EAC/C,KAAK,MAAM,OAAO,WAAA,EAElB,KAAK,MAAM,OAAO,WAAA,EAElBE,EAAkB,KAAK,MAAM,OAAO,IAAA,CAAI,MAExCA,EAAkBN,EAEtB,OAAOM,CACX,EAEA5xB,EAAI,WAAW,UAAU,0BAA4B,SAAU4W,EAAOrG,EAAO,CACzE,QAAS,EAAI,EAAGjQ,EAAOsW,EAAM,OAAQ,EAAItW,EAAM,GAAK,EAChD,GAAIsW,EAAM,CAAC,EAAG,CACV,IAAI3W,EAAM2W,EAAM,CAAC,EAIjB,GAAI,KAAK,MAAM,IAAI,cACf3W,EAAMA,EAAI,QAAQ,MAAO,EAAE,MAE3B,SAASY,EAAI,EAAGY,EAAO8O,EAAM,YAAY,OAAQ1P,EAAIY,EAAMZ,GAAK,EAC5D,GAAyB0P,EAAM,YAAY1P,CAAC,EAAE,CAAC,IAA3C,kBAA2D0P,EAAM,YAAY1P,CAAC,EAAE,CAAC,IAAjC,OAAoC,CACpFZ,EAAMA,EAAI,QAAQ,MAAO,EAAE,EAC3B,KAAA,CAKZ,KAAK,MAAM,IAAI,cAAc,IAAI,iBAAmB,GACpD,KAAK,MAAM,IAAI,eAAe,QAAQ,GAAOD,EAAI,OAAO,EACpDC,IAAQ,WACR2W,EAAM,CAAC,EAAI,IAEX,KAAK,MAAM,OAAO,OAAO3W,EAAKsQ,EAAO,EAAI,EACzCqG,EAAM,CAAC,EAAI,KAAK,MAAM,OAAO,IAAA,EACjC,CAGR,OAAoB,OAAO,KAAK,YAAY,QAAQ,gBAAgB,EAAhE,MACA,KAAK,YAAY,QAAQ,gBAAgB,EAAI,KAAK,MAAM,IAAI,gBAEzD,KAAK,MAAMA,EAAO,KAAK,YAAY,QAAQ,gBAAgB,CAAC,CACvE,EAEA5W,EAAI,WAAW,UAAU,aAAe,SAAUkuB,EAAGe,EAAQjqB,EAAKnE,EAAG,CAEjE,IAAIN,EAAM,GACV,GAAI0uB,EAAO,OAAQ,CAEf,QADIttB,EAAQ,CAAA,EACHtB,EAAI,EAAGC,EAAO2uB,EAAO,OAAQ5uB,EAAIC,EAAMD,GAAK,EAAG,CACpD,IAAI0B,EAAOktB,EAAO5uB,CAAC,EAIfE,EAAKswB,EAEL,KAAK,MAAM,IAAI,UACfA,EAAa,CAAC,MAAM,EACb9uB,EAAK,eAAiBA,EAAK,QAGlC8uB,EAAa,KAAK,MAAM,IAAI,iBAAiB,EAAE,aAE/CA,EAAa,KAAK,MAAM,IAAI,iBAAiB,EAAE,QAEnD,IAAIC,EAAO,CAAC,QAAQ,cAAc,UAAU,GAAM,SAAS,EAAA,EAC9D,GAAID,EAEH,QADIE,EAAY,CAAC,UAAW,YAAa,UAAU,EAC1C5pB,EAAI,EAAGC,EAAO2pB,EAAU,OAAQ5pB,EAAIC,GACxC,EAAAypB,EAAW,OAAS,EAAK1pB,GADqBA,GAAK,EAIvD2pB,EAAKC,EAAU5pB,CAAC,CAAC,EAAI,UAAY0pB,EAAW1pB,CAAC,OAG9C2pB,EAAK,QAAU,kBAeb,IAbC,KAAK,MAAM,IAAI,eAAkB,KAAK,MAAM,IAAI,OAAS,gBACzD,EAAE,KAAK,MAAM,IAAI,OAAS,YACxB,KAAK,MAAM,IAAI,SAAW,QAC1B,KAAK,MAAQ,CAAC,KAAK,KAAK,aAE7BA,EAAK,UAAY,GACjBA,EAAK,SAAW,IAKd,KAAK,gBAAgB/uB,CAAI,EAErB,CAACA,EAAK,SAAW,CAACA,EAAK,cAAe,CACtC,IAAIgwB,EAAW,KAAK,oBAAoB7D,EAAGnsB,EAAM+uB,EAAM9rB,EAAK3E,EAAGQ,CAAC,EAC5DmxB,EAAYhyB,EAAI,KAAK,WAAW,KAAK,IAAI,EAC7C,KAAK,MAAM,OAAO,OAAO+xB,EAAUC,EAAW,EAAI,EAClDrwB,EAAM,KAAK,KAAK,MAAM,OAAO,KAAK,CAAA,MAElCA,EAAM,KAAK,KAAK,uBAAuBusB,EAAGnsB,EAAM+uB,EAAMjwB,CAAC,CAAC,CAC5D,CAGJN,EAAM,KAAK,YAAYoB,EAAOqD,EAAKnE,CAAC,CAAA,CAExC,OAAON,CACX,EAGAP,EAAI,WAAW,UAAU,oBAAsB,SAAUkuB,EAAGnsB,EAAM+uB,EAAM9rB,EAAK3E,EAAGQ,EAAG,CAG/E,IAAI0E,EAAM,KAAK,QAAQxD,EAAM+uB,EAAK,QAAS,EAAI,EAC3CQ,EAAU,KAAK,uBAAuB/rB,EAAI,KAAMP,EAAK3E,EAAGQ,CAAC,EAC5DmwB,EAAY,GACZF,EAAK,YACFvrB,EAAM,KAAK,QAAQxD,EAAM+uB,EAAK,UAAW,GAAOvrB,EAAI,QAAQ,EACxDA,EAAI,OACbyrB,EAAY,KAAK,uBAAuBzrB,EAAI,KAAMP,EAAK3E,EAAGQ,CAAC,IAG7D,IAAIowB,EAAW,GACXH,EAAK,WACFvrB,EAAM,KAAK,QAAQxD,EAAM+uB,EAAK,SAAU,GAAOvrB,EAAI,QAAQ,EACvDA,EAAI,OACb0rB,EAAW,KAAK,uBAAuB1rB,EAAI,KAAMP,EAAK3E,EAAGQ,CAAC,IAIzD,IAAIoxB,EACJ,GAAIjB,GAAaC,EAAU,CAEvB,KAAK,MAAM,OAAO,UAAU,OAAO,EAEnC,KAAK,MAAM,OAAO,OAAOK,CAAO,EAEhC,IAAIG,EAAgB,IAAIzxB,EAAI,MACxB8wB,EAAK,YACLW,EAAc,QAAQ,OAAS,KAAK,MAAM,IAAI,YAAY,QAAQX,EAAK,SAAS,EAAE,OAClFW,EAAc,QAAQ,OAAS,KAAK,MAAM,IAAI,YAAY,QAAQX,EAAK,SAAS,EAAE,OAE7EW,EAAc,QAAQ,SACvBA,EAAc,QAAQ,OAAS,MAGvC,KAAK,MAAM,OAAO,OAAOT,EAAWS,CAAa,EAEjD,IAAIC,EAAe,IAAI1xB,EAAI,MACvB8wB,EAAK,WACLY,EAAa,QAAQ,OAAS,KAAK,MAAM,IAAI,YAAY,QAAQZ,EAAK,QAAQ,EAAE,OAChFY,EAAa,QAAQ,OAAS,KAAK,MAAM,IAAI,YAAY,QAAQZ,EAAK,QAAQ,EAAE,OAE3EY,EAAa,QAAQ,SACtBA,EAAa,QAAQ,OAAS,MAGtC,KAAK,MAAM,OAAO,OAAOT,EAAUS,CAAY,EAE/C,KAAK,MAAM,OAAO,WAAA,EAElBO,EAAa,KAAK,MAAM,OAAO,IAAA,CAAI,MAEnCA,EAAaX,EAEjB,OAAOW,CACX,EAEAjyB,EAAI,WAAW,UAAU,cAAgB,SAAU+B,EAAM,CAIrD,IAAIxB,EAAM,EACLwB,EAAK,OAAO,QAAQ,MAAO,EAAE,EAAE,MAAM/B,EAAI,iBAAiB,IAC3DO,EAAM,GAEN,CAACA,GAAOwB,EAAK,OAASA,EAAK,MAAM,MAAM/B,EAAI,4BAA4B,IACvEO,EAAM,GAEV,IAAI2xB,EACJ,OAAI3xB,GAAO,IACHwB,EAAK,OAASA,EAAK,MAAM,KACzBmwB,EAAanwB,EAAK,MAAM,KAAK,MAAM,EAAG,CAAC,EAChC,KAAK,KAAK,WACjBmwB,EAAa,KAAK,KAAK,SAAS,MAAM,EAAG,CAAC,GAE1C,CAAC,KAAM,IAAI,EAAE,QAAQA,CAAU,EAAI,KACnC3xB,EAAM,IAIPA,CACX,EAEAP,EAAI,WAAW,UAAU,uBAAyB,SAAUiE,EAAOe,EAAK,EAAGnE,EAAG,CAC1E,IAAIkB,EAAOkC,EACPkuB,EAAoB,KAAK,kBAAkBpwB,EAAMiD,EAAKnE,CAAC,EACvDuxB,EAAS,KAAK,YAAYrwB,CAAI,EAC9BswB,EAAwB,KAAK,qBAAqBtwB,CAAI,EACtDuwB,EAAY,KAAK,WAAWvwB,EAAMiD,EAAK,CAAC,EACxCutB,EAAQD,EAAU,KAClBlwB,EAAS,KAAK,YAAYL,CAAI,EAC9BwwB,IAAU,KACVJ,EAAoB,GACpB/vB,EAAS,IAEb,IAAIowB,EAAW,KAAK,MAAM,WAAW,KAAK,KAAM,gBAAgB,EAC3DA,IACDA,EAAW,IAEf,IAAIC,EACA1wB,EAAK,cAAc,EACnB0wB,EAAa,KAEbA,EAAa,IAEjB,IAAIC,EAAa,KAAK,cAAc3wB,CAAI,EACxC,SAAS4wB,EAAsBpe,EAAM,CACjC,OAAKA,EAEmB,OAAOA,EAAK,OAAzB,SACH,CAAC,IAAU,IAAM,IAAK,GAAG,EAAE,QAAQA,EAAK,MAAM,MAAM,EAAE,CAAC,EAAI,GAMxDoe,EAAsBpe,EAAK,MAAMA,EAAK,MAAM,OAAO,CAAC,CAAC,EARrD,EASX,CAGJ,IAAIqe,EAAuCD,EAAsBN,CAAqB,EAElFQ,EACA,CAAC,KAAM,KAAM,IAAI,EAAE,QAAQ,KAAK,MAAM,IAAI,gBAAgB,EAAE,CAAC,EAAE,MAAM,EAAG,CAAC,CAAC,EAAI,GAC9EA,EAAU,IAEVA,EAAU,IAGd,IAAIte,EAAMue,EAAQvZ,EAAOE,EACzB,GAAIiZ,IAAe,EAEfne,EAAO,KAAK,MAAM,CAAC8d,EAAuBD,EAAQG,CAAK,EAAG,EAAE,UACrDG,IAAe,GAAK3wB,EAAK,iBAAiB,EACjD+wB,EAAS,KAAK,MAAM,CAACT,EAAuBD,CAAM,EAAGS,CAAO,EAC5Dte,EAAO,KAAK,MAAM,CAACue,EAAQP,CAAK,EAAG,GAAG,UAC/BxwB,EAAK,kBAAkB,EAC9B+wB,EAAS,KAAK,MAAM,CAACT,EAAuBD,CAAM,EAAGS,CAAO,EAC5Dte,EAAO,KAAK,MAAM,CAACge,EAAOO,CAAM,EAAG,GAAG,UAC/B,KAAK,MAAM,IAAI,cAElB,KAAK,MAAM,IAAI,8BAA8B,IAAM,SACnDA,EAAS,KAAK,MAAM,CAACT,EAAuBD,CAAM,EAAGS,CAAO,EAC5DC,EAAS,KAAK,MAAM,CAACA,EAAQX,CAAiB,EAAG,GAAG,EACpDW,EAAS,KAAK,MAAM,CAACA,EAAQP,CAAK,EAAG,KAAK,MAAM,IAAI,QAAQ,EAC5Dhe,EAAO,KAAK,MAAM,CAACue,EAAQ1wB,CAAM,EAAG,GAAG,IAEvCqX,EAAS,KAAK,MAAM,CAAC8Y,EAAOJ,EAAmBE,CAAqB,EAAG,GAAG,EAC1ES,EAAS,KAAK,MAAM,CAACV,EAAQ3Y,CAAM,EAAG,KAAK,MAAM,IAAI,QAAQ,EAC7DlF,EAAO,KAAK,MAAM,CAACue,EAAQ1wB,CAAM,EAAG,GAAG,WAEpC,KAAK,MAAM,WAAW,KAAK,KAAM,oBAAoB,IAAM,OAAU,KAAK,MAAM,WAAW,KAAK,KAAM,oBAAoB,IAAM,SAAW,IAAM,IAAMvB,IAAM,GAAqB,OAAOA,EAAvB,KAIrK,CAAC,OAAQ,MAAM,EAAE,QAAQkB,EAAK,KAAK,EAAI,KACvCywB,EAAW,MAOX,CAAC,SAAU,kBAAkB,EAAE,QAAQ,KAAK,MAAM,IAAI,8BAA8B,CAAC,EAAI,IAGzF/Y,EAAS,KAAK,MAAM,CAAC8Y,EAAOJ,CAAiB,EAAIpwB,EAAK,yBAAyB,EAAI,GAAI,EAGvF0X,EAAS,KAAK,MAAM,CAACA,EAAQ4Y,CAAqB,EAAG,GAAG,EACpD5Y,GAAU,KAAK,QACfA,EAAO,QAAQ,OAAS,KAAK,MAAM,QAAQ,OAC3CA,EAAO,QAAQ,OAAS,KAAK,MAAM,QAAQ,QAE3C2Y,GAAU,KAAK,SACfA,EAAO,QAAQ,OAAS,KAAK,OAAO,QAAQ,OAC5CA,EAAO,QAAQ,OAAS,KAAK,OAAO,QAAQ,QAEhDU,EAAS,KAAK,MAAM,CAACV,EAAQ3Y,CAAM,EAAG+Y,CAAQ,EAC9Cje,EAAO,KAAK,MAAM,CAACue,EAAQ1wB,CAAM,EAAGowB,CAAQ,IASxCI,EACArZ,EAAQ,KAAK,MAAM,CAAC8Y,EAAuBD,CAAM,EAAG,EAAE,EAEtD7Y,EAAQ,KAAK,MAAM,CAAC8Y,EAAuBD,CAAM,EAAGS,CAAO,EAE3DtZ,GAAS,KAAK,SACdA,EAAM,QAAQ,OAAS,KAAK,OAAO,QAAQ,OAC3CA,EAAM,QAAQ,OAAS,KAAK,OAAO,QAAQ,QAG/CE,EAAS,KAAK,MAAM,CAAC8Y,EAAOJ,CAAiB,EAAIpwB,EAAK,yBAAyB,EAAI,GAAI,EAEnF0X,GAAU,KAAK,QACfA,EAAO,QAAQ,OAAS,KAAK,MAAM,QAAQ,OAC3CA,EAAO,QAAQ,OAAS,KAAK,MAAM,QAAQ,QAG/CqZ,EAAS,KAAK,MAAM,CAACvZ,EAAOE,CAAM,EAAG+Y,CAAQ,EAC7Cje,EAAO,KAAK,MAAM,CAACue,EAAQ1wB,CAAM,EAAGowB,CAAQ,GAEhDje,EAAK,WAAa,OACf,CACH,GAAIxS,EAAK,mBAAmB,GAAKA,EAAK,QAAU,CAACA,EAAK,uBAAuB,EAAG,CAC5E,IAAIknB,EAAKlnB,EAAK,mBAAmB,EAC7BgxB,EAAc,CAAC,IAAI,IAAS,IAAS,GAAG,EACxCA,EAAY,QAAQ9J,EAAG,MAAM,EAAE,CAAC,EAAI,IAAMA,EAAG,MAAM,EAAG,EAAE,IAAM,OAC9DmJ,EAAS,KAAK,MAAM,CAACD,EAAmBC,CAAM,EAAG,EAAE,EACnDD,EAAoB,GACxB,CAGAS,GACAnZ,EAAS,KAAK,MAAM,CAAC4Y,EAAuBD,CAAM,EAAG,EAAE,EACvD3Y,EAAS,KAAK,MAAM,CAAC0Y,EAAmB1Y,CAAM,EAAGoZ,CAAO,GAExDpZ,EAAS,KAAK,MAAM,CAAC0Y,EAAmBE,EAAuBD,CAAM,EAAGS,CAAO,EAEnFpZ,EAAS,KAAK,MAAM,CAACA,EAAQrX,CAAM,EAAGqwB,CAAU,EAC5ChZ,GAAU,KAAK,SACfA,EAAO,QAAQ,OAAS,KAAK,OAAO,QAAQ,OAC5CA,EAAO,QAAQ,OAAS,KAAK,OAAO,QAAQ,QAE5C8Y,GAAS,KAAK,QACdA,EAAM,QAAQ,OAAS,KAAK,MAAM,QAAQ,OAC1CA,EAAM,QAAQ,OAAS,KAAK,MAAM,QAAQ,QAE1C9Y,EAAO,QAAQ,SACf1X,EAAK,yBAAyB,EAAI,IAGtC,IAAI2R,EACA,KAAK,MAAM,WAAW,KAAK,KAAM,iBAAiB,GAC/C,KAAK,MAAM,WAAW,KAAK,KAAM,iBAAiB,EAAE,MAAM,gBAAgB,GAC1E4e,EAAU,sBAAwB,EAErC5e,EAAQmf,EAERnf,EAAQ,IAEZa,EAAO,KAAK,MAAM,CAACge,EAAO9Y,CAAM,EAAI1X,EAAK,yBAAyB,EAAI2R,CAAM,CAAA,CAGhF,YAAK,MAAM,IAAI,cAAc,IAAI,iBAAmB,GACpD,KAAK,MAAM,IAAI,eAAe,QAAQ,GAAO1T,EAAI,OAAO,EACxD,KAAK,MAAM,IAAI,iBAAmB,GAIlC,KAAK,MAAM,IAAI,UAAU,SAAS,KAAKuU,CAAI,EACpCA,CACX,EAUAvU,EAAI,WAAW,UAAU,oBAAsB,SAAUiE,EAAO,CAC5D,IAAIlC,EAAO,CACP,QAAQkC,EAAM,QACd,OAAOA,EAAM,OACb,cAAcA,EAAM,cACpB,MAAMA,EAAM,MACZ,OAAOA,EAAM,OACb,eAAeA,EAAM,cAAc,EACnC,wBAAwBA,EAAM,uBAAuB,EACrD,oBAAoBA,EAAM,mBAAmB,EAC7C,kBAAkBA,EAAM,iBAAiB,EACzC,mBAAmBA,EAAM,kBAAkB,EAC3C,mBAAmBA,EAAM,kBAAkB,EAC3C,mBAAoBA,EAAM,kBAAkB,EAC5C,cAAcA,EAAM,aAAa,EACjC,0BAA2B,GAC3B,iBAAiBA,EAAM,iBACvB,MAAMA,EAAM,OAEhB,YAAK,WAAWlC,CAAI,EACbA,CACX,EAIA/B,EAAI,WAAW,UAAU,cAAgB,SAAUmW,EAASlW,EAAK,CAC7D,IAAI+yB,EAAY,KAAK7c,EAAU,QAAQ,EACvC,GAAIlW,GACA,GAAI,KAAK,MAAM,IAAI,cACfA,EAAMA,EAAI,QAAQ,MAAO,EAAE,UACnB+yB,GACR,QAAS3yB,EAAI,EAAGC,EAAO0yB,EAAU,YAAY,OAAQ3yB,EAAIC,EAAMD,GAAK,EAChE,GAAyB2yB,EAAU,YAAY3yB,CAAC,EAAE,CAAC,IAA/C,kBAA+D2yB,EAAU,YAAY3yB,CAAC,EAAE,CAAC,IAArC,OAAwC,CAC5FJ,EAAMA,EAAI,QAAQ,MAAO,EAAE,EAC3B,KAAA,GAKhB,OAAOA,CACX,EAEAD,EAAI,WAAW,UAAU,qBAAuB,SAAU+B,EAAM,CAC5D,IAAIkxB,EAAMlxB,EAAK,uBAAuB,EAClCkxB,GAAO,KAAK,MAAM,IAAI,gBACtBA,EAAMA,EAAI,QAAQ,aAAc,EAAE,GAEtC,IAAIhzB,EAAM,KAAK,cAAc,SAAUgzB,CAAG,EAC1C,OAAI,KAAK,MAAM,OAAO,OAAOhzB,EAAK,KAAK,aAAc,EAAI,EAC9C,KAAK,MAAM,OAAO,IAAA,EAEtB,EACX,EAEAD,EAAI,WAAW,UAAU,kBAAoB,SAAU+B,EAAMiD,EAAKnE,EAAG,CACjE,IAAIooB,EAAKlnB,EAAK,mBAAmB,EAC7BknB,GAAM,KAAK,MAAM,IAAI,gBACrBA,EAAKA,EAAG,QAAQ,aAAc,EAAE,GAEpC,IAAIhpB,EAAM,KAAK,cAAc,QAASgpB,CAAE,EACxC,GAAIlnB,EAAK,mBAAmB,GAAKA,EAAK,mBAAmB,EAAE,MAAM,gBAAgB,EACzE,KAAK,MAAM,WAAW,KAAK,KAAM,gBAAgB,EAC7B,OAAOlB,EAAvB,IACA,KAAK,UAAUmE,CAAG,EAAE,SAAW,EAE/B,KAAK,UAAUA,CAAG,EAAE,QAAU,EAGd,OAAOnE,EAAvB,IACA,KAAK,UAAUmE,CAAG,EAAE,SAAW,EAE/B,KAAK,UAAUA,CAAG,EAAE,QAAU,EAGtCjD,EAAK,yBAAyB,EAAI,WAC3B,KAAK,MAAM,OAAO,OAAO9B,EAAK,KAAK,YAAa,EAAI,EAC3D,OAAO,KAAK,MAAM,OAAO,IAAA,EAE7B,MAAO,EACX,EAEAD,EAAI,WAAW,UAAU,YAAc,SAAU+B,EAAM,CACnD,IAAI9B,EAAM,KAAK,cAAc,SAAU8B,EAAK,MAAM,EAClD,OAAI,KAAK,MAAM,OAAO,OAAO9B,EAAK,KAAK,aAAc,EAAI,EAC9C,KAAK,MAAM,OAAO,IAAA,EAEtB,EACX,EAEAD,EAAI,WAAW,UAAU,WAAa,SAAU+B,EAAMiD,EAAK,EAAG,CAC1D,IAAIzE,EASA2yB,EAAc,KAAK,MAAM,WAAW,KAAK,KAAM,OAAQ,YAAa,MAAM,IAAM,OAChFC,EAAuB,KAAK,MAAM,WAAW,KAAK,KAAM,YAAY,IAAM,GAC1EC,EAAiC,OAAO,KAAK,MAAM,WAAW,KAAK,KAAM,iBAAiB,GAAtE,UAA2E,CAACrxB,EAAK,iBACrGsxB,EACAC,EACJ,GAAIvxB,EAAK,kBAAkB,EACvBuxB,EAAW,MACR,CACCJ,EACAG,EAAe,EACRD,EACPC,EAAe,EAEfA,EAAe,EAEnB,IAAIE,EAAiB,KAAK,MAAM,IAAI,kBAAkB,OAAOvuB,CAAG,EAAE,CAAC,EAC/DuuB,EAAiBF,EACjBC,EAAWC,EAEXD,EAAWD,CACf,CAEJ,IAAIG,EAAS,KAAK,MAAM,SAAS,IAAI,+BAA+B,EAIpE,GAHGA,GAAUA,EAAO,MAAM,GAAG,IAAM,mBAC/BJ,EAAoB,IAEpBrxB,EAAK,QAAUuxB,IAAa,EAC5B,GAAIF,EAAmB,CACnB,IAAIK,EAAkB,KAAK,MAAM,WAAW,KAAK,KAAM,kBAAmB,GAAO,EAAE,EACnF1xB,EAAK,MAAQ/B,EAAI,KAAK,MAAM,eAAe,KAAK,MAAO+B,EAAK,MAAO0xB,EAAiB,CAACN,CAAoB,CAAA,MAEzGpxB,EAAK,MAAQ/B,EAAI,KAAK,MAAM,aAAa,KAAK,MAAO+B,EAAK,KAAK,MAEvE,IAAWuxB,IAAa,EACpB,MAAO,CACH,KAAM,IAEHA,IAAa,IACpBvxB,EAAK,MAAQ/B,EAAI,KAAK,MAAM,aAAa,KAAK,MAAO+B,EAAK,KAAK,GAGnE,IAAI9B,EAAM,KAAK,cAAc,QAAS8B,EAAK,KAAK,EAC5C2xB,EAAW,KAAK,MAAM,OAAO,OAAOzzB,EAAK,KAAK,YAAa,EAAI,EACnE,OAAIyzB,GACAnzB,EAAM,KAAK,MAAM,OAAO,IAAA,EACpB,CACA,KAAMA,EACN,oBAAqB+yB,IAGtB,CACH,KAAM,GAEd,EAEAtzB,EAAI,WAAW,UAAU,YAAc,SAAU+B,EAAM,CAEnD,IAAI9B,EAAM8B,EAAK,OAAQxB,EAEnBN,GAAoB,OAAO,KAAK,MAAM,WAAW,KAAK,KAAM,iBAAiB,GAAtE,WACPA,EAAMD,EAAI,KAAK,MAAM,eAAe,KAAK,MAAOC,EAAK,KAAK,MAAM,WAAW,KAAK,KAAM,iBAAiB,EAAG,EAAI,GAGlHA,EAAM,KAAK,cAAc,SAAUA,CAAG,EACtC,IAAI0zB,EAAW,GACX1zB,GAAOA,EAAI,MAAM,EAAE,IAAM,MAChCA,EAAMA,EAAI,MAAM,EAAG,EAAE,EACrB0zB,EAAW,KAER,IAAID,EAAW,KAAK,MAAM,OAAO,OAAOzzB,EAAK,QAAS,EAAI,EAC1D,OAAIyzB,GACAnzB,EAAM,KAAK,MAAM,OAAO,IAAA,EAC/BA,EAAI,QAAQ,OAASozB,EAAWpzB,EAAI,QAAQ,OACrCA,GAEG,EACX,EAEAP,EAAI,WAAW,UAAU,cAAgB,SAAU+B,EAAM,CACrD,IAAImvB,EACJ,OAAInvB,EAAK,MAAS,OACV,KAAK,gBAAgB,iBAAiB,EACtCmvB,EAAa,KAAK,gBAAgB,iBAAiB,EAEnDA,EAAa,KAAK,gBAAgB,KAGtCA,EAAa,KAAK,gBAAgB,KAEjCA,IACDA,EAAa,IAAIlxB,EAAI,OAElBkxB,CACX,EAEAlxB,EAAI,WAAW,UAAU,eAAiB,UAAY,CAClD,IAAImxB,EACJ,OAAI,KAAK,gBAAgB,MACrBA,EAAc,KAAK,gBAAgB,MAEnCA,EAAc,IAAInxB,EAAI,MAEnBmxB,CACX,EAEAnxB,EAAI,WAAW,UAAU,WAAa,SAAU+B,EAAM,CAClD,GAAI,CAACA,EAAK,aAAa,GAAqB,OAAOA,EAAK,aAAa,EAAzC,IACxB,OAAOA,EAEPA,EAAK,QAAU,CAACA,EAAK,OAASA,EAAK,gBACnCA,EAAK,QAAUA,EAAK,OACpBA,EAAK,OAAS,OACdA,EAAK,cAAgB,QAEzB,IAAI6xB,EACA7xB,EAAK,QACDA,EAAK,OAAO,MAAM,EAAG,CAAC,IAAM,KAAOA,EAAK,OAAO,MAAM,EAAE,IAAM,KAC7D,CAACA,EAAK,aAAa,GAAqB,OAAOA,EAAK,aAAa,EAAzC,KAE5BA,EAAK,OAASA,EAAK,OAAO,MAAM,EAAG,EAAE,EACrC6xB,EAAU,GACV7xB,EAAK,aAAa,EAAI,GAEtB6xB,EAAU,GAEV,KAAK,MAAM,IAAI,uBAAuB,aAClC,CAAC7xB,EAAK,uBAAuB,GAAKA,EAAK,QAAU,CAAC6xB,GAAW7xB,EAAK,QAC7DA,EAAK,kBAAkB,GACxB/B,EAAI,eAAe+B,EAAM,EAAI,EAI7C,EAQA/B,EAAI,WAAW,UAAU,QAAU,SAAU+B,EAAM8xB,EAAepuB,EAAUquB,EAAU,CAIlF,GAAIA,GAAYD,IAAkB,cAC9B,MAAO,CAAC,KAAK,GAAM,SAASC,CAAA,EAI3B/xB,EAAK,SACNA,EAAK,OAAS,IAEbA,EAAK,QACNA,EAAK,MAAQ,IAUjB,IAAIgyB,EAAc,CAAA,EAIlBA,EAAY,iBAAiB,EAAI,KAAK,eAAehyB,CAAI,EAEzD,IAAIiyB,EAAW,GACXC,EACJ,GAAIJ,IAAkB,gBAClBG,EAAW,GACPjyB,EAAK,QAEL,QADImyB,EAAW,KAAK,MAAM,IAAIL,CAAa,EAClCxzB,EAAI,EAAGC,EAAO4zB,EAAS,OAAQ7zB,EAAIC,EAAMD,GAAK,EAEnD,GADA4zB,EAAUC,EAAS7zB,CAAC,EAChB0B,EAAK,MAAM,KAAKkyB,CAAO,EAAG,CAC1BD,EAAW,GACX,IAAIG,EAAgBpyB,EAAK,cACzBA,EAAOA,EAAK,MAAM,KAAKkyB,CAAO,EAC9BlyB,EAAK,cAAgBoyB,EAErBJ,EAAc,KAAK,cAAcE,CAAO,EACxCF,EAAY,eAAiB,GAC7B,KAAA,EAkBhB,GAZKC,IACDC,EAAU,GACNlyB,EAAK,OAASA,EAAK,MAAM,KACzBkyB,EAAUlyB,EAAK,MAAM,KACd,KAAK,KAAK,WACjBkyB,EAAU,KAAK,KAAK,UAEpBA,IACAF,EAAc,KAAK,cAAcE,CAAO,IAI5C,CAACxuB,GAAY,CAACuuB,EACd,MAAO,CAAC,KAAK,GAAM,SAASF,CAAA,EAI3B/xB,EAAK,SACNA,EAAK,OAAS,IAEbA,EAAK,QACNA,EAAK,MAAQ,IAEbA,EAAK,UACL,OAAOA,EAAK,OACZ,OAAOA,EAAK,OAGhBA,EAAO,CACH,OAAOA,EAAK,OACZ,MAAMA,EAAK,MACX,wBAAwBA,EAAK,uBAAuB,EACpD,oBAAoBA,EAAK,mBAAmB,EAC5C,OAAOA,EAAK,OACZ,kBAAkBgyB,EAAY,iBAAiB,EAC/C,mBAAmBhyB,EAAK,kBAAkB,EAC1C,mBAAmBgyB,EAAY,kBAAkB,EACjD,mBAAoBA,EAAY,kBAAkB,EAClD,cAAchyB,EAAK,aAAa,EAChC,eAAeA,EAAK,cAAc,EAClC,0BAA0BA,EAAK,yBAAyB,EACxD,eAAgBgyB,EAAY,eAC5B,iBAAkBA,EAAY,kBAAkB,EAChD,QAAQhyB,EAAK,QACb,cAAcA,EAAK,cACnB,MAAMA,EAAK,OAGX,CAACA,EAAK,SAAY,CAACA,EAAK,OAASA,EAAK,QAAUA,EAAK,gBACrDA,EAAK,QAAUA,EAAK,QAEpBA,EAAK,UACL,OAAOA,EAAK,OACZ,OAAOA,EAAK,OAEhBA,EAAO,KAAK,oBAAoBA,CAAI,EACpC,IAAIwvB,EACJ,OAAIuC,EACAvC,EAAWuC,EAEXvC,EAAW,CAACyC,EAET,CAAC,KAAAjyB,EAAU,SAAAwvB,CAAA,CACtB,EAEAvxB,EAAI,WAAW,UAAU,cAAgB,SAAUi0B,EAAS,CACxD,IAAI1zB,EAAM,CAAA,EACNkQ,EAAWzQ,EAAI,cAAc,KAAK,KAAK,SAAU,KAAK,MAAM,IAAI,gBAAgB,EAAE,CAAC,CAAC,EACpFo0B,EAAa,KAAK,MAAM,OAAO3jB,EAAS,IAAI,EAAIA,EAAS,KAAO,KAAK,MAAM,IAAI,gBAAgB,EAAE,CAAC,EAClG4jB,EAAqB,KAAK,MAAM,OAAOD,CAAU,EAAE,KAAK,oBAAoB,EAC5EE,EAAwB,KAAK,MAAM,OAAOF,CAAU,EAAE,KAAK,uBAAuB,EAClFG,EAAmB,KAAK,MAAM,OAAOH,CAAU,EAAE,KAAK,kBAAkB,EACxEI,EAAkBP,EAAQ,MAAM,GAAG,EAAE,CAAC,EAC1C,OAAII,GAAsBA,EAAmBG,CAAe,IACxDj0B,EAAI,iBAAiB,EAAI,GACzBA,EAAI,kBAAkB,EAAI,IAE1B+zB,GAAyBA,EAAsBE,CAAe,IAC9Dj0B,EAAI,kBAAkB,EAAI,GAC1BA,EAAI,iBAAiB,EAAI,IAEzBg0B,GAAoBA,EAAiBC,CAAe,IACpDj0B,EAAI,kBAAkB,EAAI,IAG1BA,EAAI,iBAAiB,IACrBA,EAAI,kBAAkB,EAAI,IAEvBA,CACX,EAEAP,EAAI,WAAW,UAAU,gBAAkB,SAAU+B,EAAM,CACvD,GAAI,KAAK,MAAM,IAAI,OAAS,eAAgB,CAExC,QADI0yB,EAAU,GACL5zB,EAAE,EAAEY,EAAKzB,EAAI,WAAW,OAAOa,EAAEY,EAAKZ,GAAG,EAC1CkB,EAAK/B,EAAI,WAAWa,CAAC,CAAC,IACtB4zB,GAAW1yB,EAAK/B,EAAI,WAAWa,CAAC,CAAC,GAGzC,KAAK,MAAM,IAAI,cAAc,KAAK4zB,CAAO,CAAA,CAEjD,EAEAz0B,EAAI,WAAW,UAAU,iBAAmB,SAAU+B,EAAM+P,EAAS4iB,EAAS,CACtE,CAAC3yB,EAAK,SAAWA,EAAK,SACtBA,EAAK,QAAUA,EAAK,OACpB,OAAOA,EAAK,QAEhB,IAAI4yB,EAAc5yB,EAAK,QACnB6yB,EAAeD,EACfp0B,EAAM,CACN,KAAQo0B,EAAY,MAAM,UAAU,EACpC,MAASC,EAAa,MAAM,UAAU,GAE1C,GAAI,KAAK,MAAM,IAAI,gBAAiB,CAEhC,GAAI,KAAK,YAAY,QAAQ,OAAS,QAAS,CAC3C,IAAIpvB,EAAe,KAAK,KAAK,aAC7BA,EAAe,KAAK,MAAM,UAAU,iBAAiBA,EAAc,qBAAsBmvB,EAAa,KAAK,KAAK,QAAQ,EACpH,KAAK,MAAM,UAAU,QAAQnvB,CAAY,EAAE,oBAAoB,EAAEmvB,CAAW,EAC5EA,EAAc,KAAK,MAAM,UAAU,QAAQnvB,CAAY,EAAE,oBAAoB,EAAEmvB,CAAW,GAE1FnvB,EAAe,KAAK,KAAK,aACzBA,EAAe,KAAK,MAAM,UAAU,iBAAiBA,EAAc,mBAAoBmvB,EAAa,KAAK,KAAK,QAAQ,EAClH,KAAK,MAAM,UAAU,QAAQnvB,CAAY,EAAE,kBAAkB,EAAEmvB,CAAW,IAC1EA,EAAc,KAAK,MAAM,UAAU,QAAQnvB,CAAY,EAAE,kBAAkB,EAAEmvB,CAAW,IAGhGA,EAAc,KAAK,aAAanvB,EAAcmvB,CAAW,CAAA,CAE7D,GAAI,CAAC,QAAS,aAAc,YAAY,EAAE,QAAQ,KAAK,YAAY,QAAQ,mBAAmB,CAAC,EAAI,GAAI,CACnG,IAAInvB,EAAe,KAAK,KAAK,aAC7BA,EAAe,KAAK,MAAM,UAAU,iBAAiBA,EAAc,mBAAoBovB,EAAc,KAAK,KAAK,QAAQ,EACnH,KAAK,MAAM,UAAU,QAAQpvB,CAAY,EAAE,kBAAkB,EAAEovB,CAAY,IAC3EA,EAAe,KAAK,MAAM,UAAU,QAAQpvB,CAAY,EAAE,kBAAkB,EAAEovB,CAAY,GAE9FA,EAAe,KAAK,aAAapvB,EAAcovB,CAAY,EACvD,CAAC,aAAc,YAAY,EAAE,QAAQ,KAAK,YAAY,QAAQ,mBAAmB,CAAC,EAAI,IAClFA,IAAiBD,IACjBC,EAAe,GAEvB,CAOJ,GAHAr0B,EAAI,KAAUo0B,EAAY,MAAM,UAAU,EAE1Cp0B,EAAI,MAAWq0B,EAAa,MAAM,UAAU,EACxC,CAAC,QAAS,aAAc,YAAY,EAAE,QAAQ,KAAK,YAAY,QAAQ,mBAAmB,CAAC,EAAI,GAC/F,QAAS/zB,EAAEN,EAAI,MAAS,OAAO,EAAGM,EAAE,GAAIA,IAAK,CACzC,IAAI2E,EAAe,KAAK,KAAK,aAC7B,IAAIqvB,EAAYt0B,EAAI,MAASM,CAAC,EAK9B,GAJA2E,EAAe,KAAK,MAAM,UAAU,iBAAiBA,EAAc,mBAAoBqvB,EAAW,KAAK,KAAK,QAAQ,EAChH,KAAK,MAAM,UAAU,QAAQrvB,CAAY,EAAE,kBAAkB,EAAEqvB,CAAS,IACxEt0B,EAAI,MAASM,CAAC,EAAI,KAAK,MAAM,UAAU,QAAQ2E,CAAY,EAAE,kBAAkB,EAAEqvB,CAAS,GAE1Ft0B,EAAI,MAASM,CAAC,EAAE,QAAQ,GAAG,EAAI,GAAI,CACnC,IAAIi0B,EAAWv0B,EAAI,MACfw0B,EAAaD,EAASj0B,CAAC,EAAE,MAAM,UAAU,EAC7CN,EAAI,MAAWu0B,EAAS,MAAM,EAAGj0B,CAAC,EAAE,OAAOk0B,CAAU,EAAE,OAAOD,EAAS,MAAMj0B,EAAE,CAAC,CAAC,CAAA,CACrF,CAWR,GARI,KAAK,MAAM,IAAI,uBAAuB,kCACtCN,EAAI,MAAS,QAAA,EAEjBA,EAAI,MAAW,KAAK,iBAAiBA,EAAI,KAAQ,EAC7C,KAAK,YAAY,QAAQ,eAAe,GACxCA,EAAI,MAAS,QAAA,EAGb,CAAC,KAAK,MAAM,IAAI,cACZ,KAAK,KAAK,aAAc,CACxB,IAAIiF,EAAe,KAAK,KAAK,aAC7B,IAAIwvB,EAAU,KAAK,MAAM,IAAI,eAC7B,GAAIA,GAAWA,EAAQxvB,CAAY,GAAKwvB,EAAQxvB,CAAY,EAAEsM,CAAO,EACjE,QAASzR,EAAE,EAAEC,EAAKC,EAAI,MAAS,OAAOF,EAAEC,EAAKD,IAAK,CAC9C,IAAI40B,EAAO10B,EAAI,MAASF,CAAC,EACzBE,EAAI,MAASF,CAAC,EAAI40B,EAAK,QAAQD,EAAQxvB,CAAY,EAAEsM,CAAO,EAAG,EAAE,EAAE,KAAA,CAAK,CAEhF,CAER,CAEJ,OAAI,KAAK,MAAM,IAAI,uBAAuB,kCACtCvR,EAAI,KAAQ,QAAA,EAEhBA,EAAI,KAAU,KAAK,iBAAiBA,EAAI,IAAO,EAC3C,KAAK,YAAY,QAAQ,eAAe,GACxCA,EAAI,KAAQ,QAAA,EAGTA,CACX,EAGAP,EAAI,WAAW,UAAU,eAAiB,SAAU+B,EAAMmzB,EAAS,CAC/D,IAAIC,EAAsB,GAC1B,OAAI,CAACD,GAAWnzB,EAAK,iBAAiB,GAE3B,KAAK,cAAcA,CAAI,IAAM,IAE5B,CAACA,EAAK,OAAS,CAACA,EAAK,MAAM,OAAS,KAAK,KAAK,UAAY,CAAC,KAAM,IAAI,EAAE,QAAQ,KAAK,KAAK,QAAQ,EAAI,IAEtGA,EAAK,OAASA,EAAK,MAAM,MAAQ,CAAC,KAAM,IAAI,EAAE,QAAQA,EAAK,MAAM,KAAK,MAAM,EAAE,CAAC,CAAC,EAAI,IAGvF,KAAK,MAAM,IAAI,uBAAuB,GAClC/B,EAAI,iBAAiB,KAAK+B,EAAK,OAAS,IAAMA,EAAK,KAAK,GACrD/B,EAAI,oBAAoB,KAAK+B,EAAK,OAASA,EAAK,KAAK,KAE5DozB,EAAsB,IAGvBA,CACX,EAEAn1B,EAAI,WAAW,UAAU,aAAe,SAAUwF,EAAcvF,EAAK,CACjE,IAAIA,EAAM,KAAK,MAAM,UAAU,WAAWuF,EAAcvF,CAAG,EAGvDG,EAAMH,EAAI,MAAM,cAAc,EAC9BgB,EAAIhB,EAAI,MAAM,gBAAgB,EAClCA,EAAMG,EAAI,IAAA,EACV,IAAI8P,EAAO,KAAK,KAAK,eAAe,EAAI,KAAK,KAAK,eAAe,EAAI,KAAK,KAAK,OAK/E,GAJIA,IACAA,EAAO,SAASA,EAAK,KAAM,EAAE,EAC7BA,EAAO,MAAMA,CAAI,EAAI,GAAQA,GAE7BA,EAAM,CACN,GAAI9P,EAAI,OAAS,EACb,QAAS+G,EAAElG,EAAE,OAAO,EAAGkG,EAAE,GACjB,EAAA+I,GAAQ,SAASjP,EAAEkG,CAAC,EAAG,EAAE,GADLA,IAIxBlH,EAAMG,EAAI,IAAA,EAGlBH,EAAMA,EAAI,QAAQ,YAAa,GAAG,CAAA,CAEtC,OAAOA,CACX,EAEAD,EAAI,WAAW,UAAU,iBAAmB,SAAUo1B,EAAU,CAI5D,IAAIC,EAAY,GACZC,EAAY,GACZC,EAAW,GACXC,EAAa,GACbC,EAAIL,EAAS,MAAA,EACjB,GAAI,KAAK,YAAa,CA0BlB,GAvBoB,OAAO,KAAK,YAAY,QAAQ,WAAW,EAA3D,MAEAC,EAAY,KAAK,YAAY,QAAQ,WAAW,GAEhC,OAAO,KAAK,YAAY,QAAQ,UAAU,EAA1D,MAEAE,EAAW,KAAK,YAAY,QAAQ,UAAU,GAE9B,OAAO,KAAK,YAAY,QAAQ,YAAY,EAA5D,MAEAC,EAAa,KAAK,YAAY,QAAQ,YAAY,GAElC,OAAO,KAAK,YAAY,QAAQ,WAAW,EAA3D,MACAF,EAAY,KAAK,YAAY,QAAQ,WAAW,GAGhDD,IACIC,IACAG,EAAIA,EAAE,MAAM,EAAGH,EAAY,EAAE,GAEjCG,EAAIA,EAAE,MAAM,EAAGJ,CAAS,GAGxBE,EAAU,CACV,IAAIG,EAAKN,EAAS,MAAA,EACdC,EACAG,EAAaH,EAEbI,EAAI,CAAA,EAEJD,IACAE,EAAKA,EAAG,MAAMF,CAAU,GAE5BE,EAAKA,EAAG,MAAMH,EAAW,EAAE,EAC3BE,EAAIA,EAAE,OAAOC,CAAE,CAAA,CAEnBN,EAAWK,CAAA,CAEf,OAAOL,CACX,EAIAp1B,EAAI,gBAAkB,SAAUG,EAAOw1B,EAAW,CAC9C,KAAK,MAAQx1B,EACb,KAAK,UAAYw1B,EACjB,KAAK,QAAU,CAAA,CACnB,EAEA31B,EAAI,gBAAgB,UAAU,OAAS,UAAY,CAC/C,KAAK,UAAA,EACL,KAAK,eAAA,EACL,KAAK,gBAAA,EACL,KAAK,kBAAA,EACL,KAAK,eAAA,CACT,EAUAA,EAAI,gBAAgB,UAAU,eAAiB,UAAY,CACvD,KAAK,SAAW,CAAA,EAChB,IAAI41B,EAAW,GACX,KAAK,UAAU,QAAQ,MAAQ,OAC/BA,EAAW,KAAK,MAAM,QAAQ,KAAK,EAC5B,KAAK,UAAU,QAAQ,MAAQ,WACtCA,EAAW,KAEf,IAAIpS,EAAM,IAAIxjB,EAAI,MAClBwjB,EAAI,QAAQ,OAAS,IACrBA,EAAI,QAAQ,OAAS,IACrB,KAAK,MAAM,OAAO,OAAOoS,EAAUpS,EAAK,EAAI,EAC5C,IAAIqS,EAAW,KAAK,MAAM,OAAO,IAAA,EAEjCrS,EAAI,QAAQ,OAAS,KAAK,UAAU,QAAQ,oBAAoB,EAChE,KAAK,MAAM,OAAO,OAAOoS,EAAUpS,EAAK,EAAI,EAC5C,IAAIsS,EAAa,KAAK,MAAM,OAAO,IAAA,EAEnC,KAAK,SAAS,OAAS,GACvB,KAAK,SAAS,SAAW,GACrBF,IACI,KAAK,UAAU,QAAQ,kCAAkC,IAAM,SAC/D,KAAK,SAAS,OAASE,EAChB,KAAK,UAAU,QAAQ,kCAAkC,IAAM,SACtE,KAAK,SAAS,OAASD,EACvB,KAAK,SAAS,SAAWA,IAEzB,KAAK,SAAS,OAASA,EACvB,KAAK,SAAS,SAAWC,GAGrC,EAGA91B,EAAI,gBAAgB,UAAU,gBAAkB,UAAY,CACxD,QAASK,EAAI,EAAGC,EAAO,EAAGD,EAAIC,EAAMD,GAAK,EAErC,QADIyR,EAAU,CAAC,YAAa,iBAAiB,EAAEzR,CAAC,EACvCQ,EAAI,EAAGY,EAAO,KAAK,gBAAgB,EAAE,OAAQZ,EAAIY,EAAMZ,GAAK,EAAG,CACpE,IAAIZ,EAAM,KAAK6R,EAAU,OAAO,EAAEjR,CAAC,EAC/B2iB,EAAM,KAAK1R,EAAU,QAAQ,EAEjC,KAAK,MAAM,OAAO,OAAO7R,EAAKujB,EAAK,EAAI,EACvC,KAAK1R,EAAU,OAAO,EAAEjR,CAAC,EAAI,KAAK,MAAM,OAAO,IAAA,CAAI,CAG/D,EAGAb,EAAI,gBAAgB,UAAU,kBAAoB,UAAY,CAE1D,QADI4W,EACKvW,EAAI,EAAGC,EAAO,KAAK,gBAAgB,EAAE,OAAQD,EAAIC,EAAMD,GAAK,EACjEuW,EAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,EAAI,OAAO,EAAEvW,CAAC,EAAG,KAAK,KAAK,QAAQ,CAAC,EAAI,OAAO,EAAEA,CAAC,CAAC,EAC/E,KAAK,gBAAgB,EAAEA,CAAC,EAAI,KAAK,MAAMuW,EAAO,KAAK,UAAU,QAAQ,SAAS,CAEtF,EAGA5W,EAAI,gBAAgB,UAAU,eAAiB,UAAY,CACvD,IAAI4W,EAAQ,KAAK,gBAAgB,EAC7Bmf,EAAa,KAAK,MAAMnf,EAAO,KAAK,UAAU,QAAQ,oBAAoB,EAAG,KAAK,SAAS,OAAQ,KAAK,SAAS,SAAU,KAAK,SAAS,EAC7I,KAAK,MAAM,OAAO,OAAOmf,EAAY,SAAS,CAClD,EAKA/1B,EAAI,gBAAgB,UAAU,MAAQA,EAAI,WAAW,UAAU,MAC/DA,EAAI,gBAAgB,UAAU,UAAYA,EAAI,WAAW,UAAU,UAGnEA,EAAI,gBAAgB,UAAU,UAAY,UAAY,CAClD,KAAK,MAAM,IAAI,gBAAgB,EAAI,GACnC,KAAK,MAAM,IAAI,sBAAsB,EAAI,GACzC,KAAK,MAAM,IAAI,uBAAuB,EAAI,GAC1C,KAAK,MAAM,IAAI,iBAAiB,EAAI,GACpC,KAAK,MAAM,IAAI,uBAAuB,EAAI,EAC9C,EAIAA,EAAI,cAAgB,SAAUwG,EAAMrG,EAAOe,EAAMJ,EAAM,CACnD,IAAIk1B,EACcxvB,EAAK,QAAQ,OAA3B,WACI1F,GAAQA,EAAK,QACTA,EAAK,QAAU,YACfk1B,EAAS,YAETA,EAASl1B,EAAK,OAGjBk1B,IACDA,EAAS,SAGbA,EAASxvB,EAAK,QAAQ,KAI1B,IAAIiL,EAASjL,EAAK,QAAQ,OAC1B,GAAiB,OAAOiL,GAApB,SAA4B,CAE5B,IAAIwkB,EAAWn1B,GAAQ0F,EAAK,QAAQ,OAAS,UAAa1F,EAAOI,EAC7D+0B,EAAQzvB,EAAK,QAAQ,IAAI,IACzBrG,EAAM,cAAc,GAAO81B,EAASzvB,EAAK,QAAQ,KAAMtF,EAAK,IAAI,EAChEuQ,EAAStR,EAAM,IAAI,eAAeqG,EAAK,QAAQ,IAAI,EAAE,OACjD,CAACrG,EAAM,IAAI,eAAeqG,EAAK,QAAQ,IAAI,EAAE,WAC1C,CAACrG,EAAM,IAAI,eAAeqG,EAAK,QAAQ,IAAI,EAAE,mBAC5CA,EAAK,QAAQ,KACbrG,EAAM,IAAI,eAAeqG,EAAK,QAAQ,IAAI,EAAE,UAAYA,EAAK,QAAQ,KAC9DrG,EAAM,IAAI,cAAc,IAAI,aACnCA,EAAM,IAAI,eAAeqG,EAAK,QAAQ,IAAI,EAAE,UAAYrG,EAAM,IAAI,cAAc,IAAI,YAExFA,EAAM,IAAI,eAAeqG,EAAK,QAAQ,IAAI,EAAE,uBAAyBA,EAAK,QAAQ,oBAClFrG,EAAM,IAAI,eAAeqG,EAAK,QAAQ,IAAI,EAAE,iBAAmBA,EAAK,YAAY,MAAA,GAGhF,CAAC,UAAW,SAAU,MAAM,EAAE,QAAQA,EAAK,QAAQ,IAAI,EAAI,IAAMrG,EAAM,IAAI,eAAeqG,EAAK,QAAQ,IAAI,EAAE,QAC7GwvB,EAAS71B,EAAM,IAAI,eAAeqG,EAAK,QAAQ,IAAI,EAAE,OAErDA,EAAK,aAAerG,EAAM,IAAI,uBAAuB,6BACrDqG,EAAK,YAAY,QAAA,EACjBA,EAAK,YAAY,KAAK,CAAC,UAAU,OAAQA,EAAK,KAAK,CAAC,EACpDA,EAAK,YAAY,QAAA,GAEzB,CAEJ,OAAOxG,EAAI,UAAUG,EAAOqG,EAAMwvB,EAAQvkB,EAAQzR,EAAI,QAAQ,CAClE,EAEAA,EAAI,UAAY,SAAUG,EAAOqG,EAAM+K,EAAME,EAAQE,EAAM,CACvD,IAAI6Y,EAAahkB,EAAK,QAAQ,KAC1BikB,EAA4BjkB,EAAK,QAAQ,oBACzCrG,EAAM,IAAI,cAAc,IAAI,aACxBqqB,IAAe,SACfrqB,EAAM,IAAI,cAAc,IAAI,aAAe,GAE3CqqB,EAAarqB,EAAM,IAAI,cAAc,IAAI,YAI7CA,EAAM,IAAI,cAAc,IAAI,4BAC5BsqB,EAA4BtqB,EAAM,IAAI,cAAc,IAAI,2BAE5D,IAAII,EAAMJ,EAAM,QAAQoR,EAAMiZ,EAAY/Y,EAAQ,GAAOE,EAAMnL,EAAK,cAAc,EAOlF,GANIikB,IACAlqB,EAAMP,EAAI,OAAO,WAAW,kBAAkB,EAAEG,EAAOI,CAAG,GAK1DJ,EAAM,IAAI,cACVI,EAAMA,EAAI,QAAQ,MAAO,EAAE,MAE3B,SAASF,EAAI,EAAGC,EAAOkG,EAAK,YAAY,OAAQnG,EAAIC,EAAMD,GAAK,EAC3D,GAAyBmG,EAAK,YAAYnG,CAAC,EAAE,CAAC,IAA1C,kBAA0DmG,EAAK,YAAYnG,CAAC,EAAE,CAAC,IAAhC,OAAmC,CAClFE,EAAMA,EAAI,QAAQ,MAAO,EAAE,EAC3B,KAAA,CAIZ,OAAOA,CACX,EAIAP,EAAI,KAAK,KAAO,CACZ,MAAO,SAAUG,EAAO6L,EAAQ,CAC5B,IAAII,EACJ,GAAI,CAACpM,EAAI,UAAWA,EAAI,KAAK,EAAE,QAAQ,KAAK,SAAS,EAAI,GAAI,CACzD,IAAIk2B,EACgB,OAAO/1B,EAAM,IAAI,KAAjC,KACA+1B,EAAa,OACb/1B,EAAM,IAAI,KAAO,YAEjB+1B,EAAa/1B,EAAM,IAAI,KASvBA,EAAM,WAAW,KAAM,sBAAsB,GACzCA,EAAM,WAAW,KAAM,sBAAsB,IAAMA,EAAM,WAAW,KAAM,WAAW,IAEzFA,EAAM,IAAI,YAAcH,EAAI,UAE5BG,EAAM,WAAW,KAAM,4BAA4B,GAC/CA,EAAM,WAAW,KAAM,4BAA4B,IAAMA,EAAM,WAAW,KAAM,iBAAiB,IAErGA,EAAM,IAAI,YAAcH,EAAI,UAGhCG,EAAM,IAAI,KAAO+1B,EAEjB9pB,EAAO,SAAUjM,EAAO,CAGpBA,EAAM,IAAI,UAAY,QAItBA,EAAM,IAAI,eAAiBA,EAAM,WAAW,KAAM,YAAa,iBAAkB,IAAI,EACrFA,EAAM,IAAI,0BAA0B,EAAIA,EAAM,WAAW,KAAM,0BAA0B,EAG1EA,EAAM,WAAW,KAAM,KAAK,IAAvC,OACA,KAAK,SAAWA,EAAM,QAAQ,MAAO,OAAQ,CAAC,EAC1BA,EAAM,WAAW,KAAM,KAAK,IAAzC,WACHA,EAAM,IAAI,uBAAuB,uBACjC,KAAK,SAAWA,EAAM,QAAQ,MAAO,SAAU,CAAC,EAEhD,KAAK,SAAW,KAGxBA,EAAM,IAAI,SAAW,KAAK,SACtBH,EAAI,6BAA6B,KAAK,KAAK,QAAQ,GACnD,KAAK,kBAAoB,IACzB,KAAK,oBAAsB,KAGV,OAAOG,EAAM,IAAI,gBAA9B,WACA,KAAK,oBAAsBA,EAAM,IAAI,gBAEzC,KAAK,WAAa,MAMlB,KAAK,kBAAoB,GACzB,KAAK,oBAAsB,GAC3B,KAAK,WAAa,IAElBA,EAAM,WAAW,KAAM,yBAAyB,IAAM,SACtD,KAAK,kBAAoBA,EAAM,IAAI,eAC5BA,EAAM,WAAW,KAAM,yBAAyB,IAAM,QAGzD,KAAK,sBACL,KAAK,oBAAsB,KAExBA,EAAM,WAAW,KAAM,yBAAyB,IAAM,wBACzD,KAAK,oBACL,KAAK,kBAAoBA,EAAM,IAAI,gBAEnC,KAAK,sBACL,KAAK,oBAAsB,MAInC,KAAK,IAAM,CAAA,EACPA,EAAM,WAAW,KAAM,KAAK,GAC5BA,EAAM,OAAO,OAAO,KAAK,SAAU,QAAS,EAAI,EAChD,KAAK,IAAI,OAASA,EAAM,OAAO,IAAA,EAC/B,KAAK,IAAI,OAAO,QAAQ,OAAS,KAAK,kBACtC,KAAK,IAAI,OAAO,QAAQ,OAAS,KAAK,WACtCA,EAAM,OAAO,OAAO,KAAK,SAAU,QAAS,EAAI,EAChD,KAAK,IAAI,SAAWA,EAAM,OAAO,IAAA,EACjC,KAAK,IAAI,SAAS,QAAQ,OAAS,KAAK,oBACxC,KAAK,IAAI,SAAS,QAAQ,OAAS,KAAK,YACjCA,EAAM,IAAI,iBAEjB,KAAK,IAAI,OAAS,IAAIH,EAAI,KAAKG,EAAM,IAAI,cAAc,EACvD,KAAK,IAAI,OAAO,QAAQ,OAAS,GACjC,KAAK,IAAI,OAAO,QAAQ,OAAS,GACjC,KAAK,IAAI,SAAW,IAAIH,EAAI,KAAKG,EAAM,IAAI,cAAc,EACzD,KAAK,IAAI,SAAS,QAAQ,OAAS,GACnC,KAAK,IAAI,SAAS,QAAQ,OAAS,IAGvC,KAAK,SAAW,CAAA,EACZA,EAAM,WAAW,KAAM,gBAAgB,IAUvC,KAAK,cAAgB,IAGrB,KAAK,uBAAyB,IAC9B,KAAK,yBAA4BA,EAAM,WAAW,KAAM,YAAa,iBAAkB,IAAI,EAC3F,KAAK,gBAAkB,IACvB,KAAK,SAAS,OAAS,IAAIH,EAAI,KAAK,KAAK,aAAa,EACtD,KAAK,SAAS,OAAO,QAAQ,OAAS,KAAK,uBAC3C,KAAK,SAAS,OAAO,QAAQ,OAAS,KAAK,gBAC3C,KAAK,SAAS,SAAW,IAAIA,EAAI,KAAK,KAAK,aAAa,EACxD,KAAK,SAAS,SAAS,QAAQ,OAAS,KAAK,yBAC7C,KAAK,SAAS,SAAS,QAAQ,OAAS,KAAK,iBAkB7B,OAAOG,EAAM,IAAI,WAAW,EAA5C,MACAA,EAAM,IAAI,WAAW,EAAIA,EAAM,WAAW,KAAM,WAAW,GAE3C,OAAOA,EAAM,IAAI,iBAAiB,EAAlD,MACAA,EAAM,IAAI,iBAAiB,EAAIA,EAAM,WAAW,KAAM,iBAAiB,GAEvD,OAAOA,EAAM,IAAI,gBAAgB,EAAjD,MAEAA,EAAM,IAAI,gBAAgB,EAAIA,EAAM,WAAW,KAAM,gBAAgB,GAGzEA,EAAM,WAAW,KAAO,IAAA,EAG5BA,EAAM,MAAM,UAAY,GAExB,KAAK,MAAM,KAAKiM,CAAI,CAAA,CAExBJ,EAAO,KAAK,IAAI,CAAA,GAQxBhM,EAAI,KAAK,WAAW,EAAI,CACpB,MAAO,SAAUG,EAAO,CACpBA,EAAM,MAAM,KAAK,QAAQ,IAAI,EAAI,IAAA,GAMzCH,EAAI,KAAK,MAAQ,CACb,MAAO,SAAUG,EAAO6L,EAAQ,CAC5B,IAAII,EAQJ,IALI,KAAK,YAAcpM,EAAI,OAAS,KAAK,YAAcA,EAAI,aACvDA,EAAI,KAAK,gBAAgB,KAAK,KAAMG,EAAO6L,CAAM,EACjD7L,EAAM,MAAM,iBAAiB,KAAK,CAAC,GAGnC,KAAK,YAAcH,EAAI,UAAW,CAClCG,EAAM,MAAM,gBAAgBA,EAAM,MAAM,gBAAgB,OAAO,CAAC,EAAE,OAAO,KAAK,SAAS,EACvF,QAASE,KAAK,KAAK,UAAW,CAC1B,IAAIyrB,EAAW,KAAK,UAAUzrB,CAAC,EAC3B81B,EAAch2B,EAAM,MAAM,WAAWA,EAAM,MAAM,WAAW,OAAO,CAAC,EACpE,OAAO,KAAKg2B,CAAW,EAAE,SACzBA,EAAYrK,CAAQ,EAAIqK,EAAY,OAAO,KAAKA,CAAW,EAAE,CAAC,CAAC,EACnE,CAEJ/pB,EAAO,SAAUjM,EAAO,CACpBA,EAAM,WAAW,OAAO,KAAM,KAAK,eAAe,CAAC,CAAC,CAAA,EAExD,KAAK,MAAM,KAAKiM,CAAI,CAAA,CAsBxB,GAnBI,KAAK,YAAcpM,EAAI,QAEvBG,EAAM,MAAM,WAAa,GACzBA,EAAM,MAAM,UAAY,GACxBA,EAAM,MAAM,aAAe,EAC3BA,EAAM,MAAM,gBAAgB,KAAK,KAAK,SAAS,EAC/CA,EAAM,MAAM,WAAW,KAAK,CAAA,CAAE,EAG9BiM,EAAO,SAAUjM,EAAO,CACpBA,EAAM,IAAI,eAAe,KAAK,EAAI,EAClCA,EAAM,IAAI,UAAY,CAAA,EACtBA,EAAM,IAAI,UAAU,SAAW,CAAA,EAC/BA,EAAM,WAAW,KAAK,IAAI,CAAA,EAE9B,KAAK,MAAM,KAAKiM,CAAI,GAIpB,KAAK,YAAcpM,EAAI,IAAK,CAI5B,QAASK,EAAI,EAAGC,EAAO,EAAGD,EAAIC,EAAMD,GAAK,EAAG,CACxC,IAAIwB,EAAM,CAAC,SAAU,QAAS,OAAO,EAAExB,CAAC,EACxC,KAAKwB,CAAG,EAAI1B,EAAM,MAAM0B,CAAG,EACvB1B,EAAM,MAAM,cAAgB,IAC5BA,EAAM,MAAM0B,CAAG,EAAI,OACvB,CAGJ,KAAK,MAAQ1B,EAAM,MAAM,WAAWA,EAAM,MAAM,WAAW,OAAO,CAAC,EACnEA,EAAM,MAAM,aAAe,GAC3BA,EAAM,MAAM,gBAAgB,IAAA,EAC5BA,EAAM,MAAM,WAAW,IAAA,EAOvBiM,EAAO,SAAUjM,EAAO,CAKhBA,EAAM,IAAI,UACV,KAAK,WAAaA,EAAM,IAAI,UAE5B,KAAK,WAAa,QAGtB,KAAK,UAAYA,EAAM,QAAQA,EAAM,IAAI,UAAW,OAAQ,CAAC,EAC7D,KAAK,mBAAqB,IAE1B,KAAK,qBAAuBA,EAAM,IAAI,eAClCA,EAAM,IAAI,0BAA0B,IAAM,SAC1C,KAAK,mBAAqBA,EAAM,IAAI,eAC7BA,EAAM,IAAI,0BAA0B,IAAM,QACjD,KAAK,qBAAuB,IACrBA,EAAM,IAAI,0BAA0B,IAAM,wBACjD,KAAK,mBAAqBA,EAAM,IAAI,eACpC,KAAK,qBAAuB,KAEhC,KAAK,YAAc,GACdH,EAAI,6BAA6B,KAAK,KAAK,SAAS,IAIjD,KAAK,qBAAuB,MAC5B,KAAK,mBAAqB,IAE1B,KAAK,uBAAyB,MAC9B,KAAK,qBAAuB,IAE5B,KAAK,cAAgB,MACrB,KAAK,YAAc,KAO3B,QAASK,EAAI,EAAGC,EAAO,EAAGD,EAAIC,EAAMD,GAAK,EAAG,CACxC,IAAIwB,EAAM,CAAC,SAAU,OAAO,EAAExB,CAAC,EAC/BF,EAAM,WAAW0B,CAAG,EAAI,KAAKA,CAAG,CAAA,CAEpC1B,EAAM,WAAW,KAAU,KAAK,KAGhC,IAAIi2B,EAAS,OACTC,EAAsB,GACtBC,EAAc,GACdt2B,EAAI,6BAA6B,KAAKo2B,CAAM,IAC5CC,EAAsB,IACtBC,EAAc,KAElB,IAAIC,EAAU,CAAA,EACdA,EAAQ,OAAS,IAAIv2B,EAAI,KAAKo2B,CAAM,EACpCG,EAAQ,OAAO,QAAQ,OAASD,EAChCC,EAAQ,SAAW,IAAIv2B,EAAI,KAAKo2B,CAAM,EACtCG,EAAQ,SAAS,QAAQ,OAASD,EAC9Bn2B,EAAM,WAAWA,EAAM,WAAW,KAAM,yBAAyB,IAAM,UACvEo2B,EAAQ,OAAO,QAAQ,OAASp2B,EAAM,WAAW,KAAM,YAAa,iBAAiB,EACrFo2B,EAAQ,SAAS,QAAQ,OAASp2B,EAAM,WAAW,KAAM,YAAa,iBAAiB,GAChFA,EAAM,WAAWA,EAAM,WAAW,KAAM,yBAAyB,IAAM,cAC9Eo2B,EAAQ,OAAO,QAAQ,OAASF,EAChCE,EAAQ,SAAS,QAAQ,OAASp2B,EAAM,WAAW,KAAM,YAAa,iBAAiB,GAChFA,EAAM,WAAWA,EAAM,WAAW,KAAM,yBAAyB,IAAM,uBAC9Eo2B,EAAQ,OAAO,QAAQ,OAASp2B,EAAM,WAAW,KAAM,YAAa,iBAAiB,EACrFo2B,EAAQ,SAAS,QAAQ,OAASF,IAElCE,EAAQ,OAAO,QAAQ,OAASF,EAChCE,EAAQ,SAAS,QAAQ,OAASF,GAEtCl2B,EAAM,WAAW,KAAUo2B,EAK3Bp2B,EAAM,WAAW,MAAQ,KAAK,MAE9BA,EAAM,WAAW,WAAa,KAAK,WACnCA,EAAM,WAAW,UAAY,KAAK,UAClCA,EAAM,WAAW,mBAAqB,KAAK,mBAC3CA,EAAM,WAAW,qBAAuB,KAAK,qBAC7CA,EAAM,WAAW,YAAc,KAAK,YACpCA,EAAM,WAAW,YAAA,EACjBA,EAAM,IAAI,iBAAiB,EAAI,OAC/BA,EAAM,IAAI,WAAW,EAAI,OACzBA,EAAM,IAAI,gBAAgB,EAAI,MAAA,EAElC,KAAK,MAAM,KAAKiM,CAAI,EAGpBA,EAAO,SAAUjM,EAAO,CACfA,EAAM,IAAI,eAAe,OAC1BA,EAAM,IAAI,eAAe,QAAQ,GAAOH,EAAI,OAAO,EAenDG,EAAM,IAAI,eAAe,QAAQ,SAAW,IAC5CA,EAAM,IAAI,qBAAuB,GACrC,EAEJ,KAAK,MAAM,KAAKiM,CAAI,EAEpBjM,EAAM,MAAM,UAAY,EAAA,CAE5B6L,EAAO,KAAK,IAAI,GAEZ,KAAK,YAAchM,EAAI,KAAO,KAAK,YAAcA,EAAI,aACrDG,EAAM,MAAM,iBAAiB,IAAA,EAC7BH,EAAI,KAAK,cAAc,KAAK,KAAMG,EAAO6L,CAAM,EACnD,GAMRhM,EAAI,KAAK,OAAS,CACd,MAAO,SAAUG,EAAO6L,EAAQ,CAC5B,IAAII,EACJpM,EAAI,KAAK,gBAAgB,KAAK,KAAMG,EAAO6L,CAAM,EAI7C,KAAK,QAAQ,OAAS,QACtB,KAAK,UAAY7L,EAAM,IAAI,UACpB,KAAK,QAAQ,OAAS,UAC7B,KAAK,UAAYA,EAAM,IAAI,YACpB,KAAK,QAAQ,OAAS,iBAC7B,KAAK,UAAYA,EAAM,IAAI,kBAEX,OAAO,KAAK,iBAA5B,MACA,KAAK,iBAAmBA,EAAMA,EAAM,MAAM,IAAI,EAAE,IAAI,kBAEpC,OAAO,KAAK,cAA5B,MACA,KAAK,cAAgBA,EAAMA,EAAM,MAAM,IAAI,EAAE,IAAI,kBAYrDiM,EAAO,SAAUjM,EAAOe,EAAMJ,EAAM,CAIhC,GAAI,KAAK,UAAU,SAAW,EAG9B,KAAIgR,EAEJ,GADAA,EAAU,KAAK,UAAU,CAAC,EACN,OAAOhR,EAAvB,IACA,IAAIA,EAAO,CAAA,EAEf,GAAI,CAAC,UAAW,eAAe,EAAE,QAAQgR,CAAO,EAAI,IAIhD,GAHI3R,EAAM,IAAI,cAGV,CAACW,EAAKgR,CAAO,EACb,eAGA,CAAC5Q,EAAK4Q,CAAO,EACb,OAIJA,IAAY,qBAAuB5Q,EAAK,OAAS,eACjDf,EAAM,IAAI,0BAA4B,IA2B1C,IAAIqG,EAAO,KAEX,GAAIrG,EAAM,IAAI,cAAc,IAAI,eAC5B,MAAO,GAcX,GAXI,CAAC,UAAW,eAAe,EAAE,QAAQ2R,CAAO,EAAI,GAEhD3R,EAAM,cAAc,KAAKA,EAAOqG,EAAM1F,EAAMgR,EAAS5Q,EAAK,IAAI,GAE1D,CAACf,EAAM,IAAI,cAAc,IAAI,WAAae,EAAK4Q,CAAO,IACtD3R,EAAM,IAAI,iBAAmB,GAAKe,EAAK4Q,CAAO,GAAG,MAAM,QAAQ,GAGnE3R,EAAM,cAAc,KAAKA,EAAOqG,EAAMtF,EAAM4Q,EAAS5Q,EAAK,IAAI,GAG9D,KAAK,UAAW,CAChB,IAAIY,EAAMZ,EAAK4Q,CAAO,EAAE,MAAM,KAAK,SAAS,EAC5C3R,EAAM,OAAO,OAAO2B,EAAK0E,CAAI,CAAA,MAE7BxG,EAAI,KAAK,mBAAmBG,EAAO2R,EAAS5Q,EAAK,EAAE,EAGnD,CAAC,UAAW,eAAe,EAAE,QAAQ,KAAK,eAAe,CAAC,CAAC,EAAI,IAC7D,CAACf,EAAM,IAAI,eACbA,EAAM,IAAI,UAAU,KAAK,KAAK,eAAe,CAAC,CAAC,EAC/CA,EAAM,IAAI,cAAc,IAAI,UAAU,KAAK,KAAK,eAAe,CAAC,CAAC,GACrE,EAEJ,KAAK,MAAM,KAAKiM,CAAI,EACpBJ,EAAO,KAAK,IAAI,EAEhBhM,EAAI,KAAK,cAAc,KAAK,KAAMG,EAAO6L,CAAM,CAAA,GAavDhM,EAAI,KAAK,KAAO,CACZ,MAAO,SAAUG,EAAO6L,EAAQ,CAE5B,GADAA,EAAS7L,EAAMA,EAAM,MAAM,KAAO,OAAO,EAAE,OACvC,KAAK,YAAcH,EAAI,MAAO,CAC1BG,EAAM,MAAM,OAAS,aACrBA,EAAM,IAAI,eAAiB,IAE/BA,EAAM,MAAM,KAAOA,EAAM,MAAM,KAAO,QACtCA,EAAM,MAAM,UAAY,QAExB,IAAIiM,EAAO,SAAUjM,EAAOe,EAAM,CAG9B,GAAIf,EAAM,IAAI,kBAAmB,CAI7B,QAHIsQ,EAAWzQ,EAAI,cAAckB,EAAK,SAAUf,EAAM,IAAI,gBAAgB,EAAE,CAAC,CAAC,EAC1Eq2B,EAAer2B,EAAMA,EAAM,IAAI,KAAK,MAAM,EAAE,EAAE,CAAC,EAAE,IAAI,aACrDs2B,EACKp2B,EAAE,EAAEC,EAAKk2B,EAAa,OAAOn2B,EAAEC,IACpCm2B,EAAcD,EAAan2B,CAAC,EAAEoQ,EAAS,IAAI,EACtCgmB,IACDA,EAAcD,EAAan2B,CAAC,EAAEoQ,EAAS,IAAI,GAE3C,CAAAgmB,GALqCp2B,GAAG,EAK5C,CAICo2B,IACDA,EAAct2B,EAAM,IAAI,gBAAgB,EAAE,CAAC,GAE/CA,EAAM,IAAI,eAAiBA,EAAM,IAAI,KACrCA,EAAM,IAAI,KAAOs2B,CAAA,CACrB,EAEJ,KAAK,MAAM,KAAKrqB,CAAI,CAAA,CAGxB,GAAI,KAAK,YAAcpM,EAAI,IAAK,CAC5BG,EAAM,MAAM,KAAOA,EAAM,MAAM,KAC/BA,EAAM,MAAM,UAAY,GACxB,IAAIiM,EAAO,SAAUjM,EAAO,CACpBA,EAAM,IAAI,oBACVA,EAAM,IAAI,KAAOA,EAAM,IAAI,eAC3B,OAAOA,EAAM,IAAI,eACrB,EAIJ,KAAK,MAAM,KAAKiM,CAAI,CAAA,CASxBJ,EAAO,KAAK,IAAI,CAAA,GAQxBhM,EAAI,KAAK,WAAa,CAClB,MAAO,SAAUG,EAAO6L,EAAQ,CAC5B,IAAII,EACJ,GAAI,KAAK,YAAcpM,EAAI,MAAO,CAG9B,IAAIgrB,EAAe,IAAIhrB,EAAI,MAAM,SAAUA,EAAI,KAAK,EACpDA,EAAI,KAAK,OAAO,MAAM,KAAKgrB,EAAc7qB,EAAO6L,CAAM,EACtD,IAAI0qB,EAAe,IAAI12B,EAAI,MAAM,KAAMA,EAAI,SAAS,EACpDoM,EAAO,UAAW,CACd,MAAI,GAAAjM,EAAM,IAAI,MAAM,QAAU,CAACA,EAAM,IAAI,uBAGlC,EAEXu2B,EAAa,MAAQ,CAACtqB,CAAI,EAC1BsqB,EAAa,KAAOv2B,EAAM,IAAI,MAAM,IAAIu2B,EAAcv2B,EAAOu2B,EAAa,KAAK,EAC/E1qB,EAAO,KAAK0qB,CAAY,EAExBtqB,EAAO,SAAUjM,EAAO,CACpBA,EAAM,IAAI,qBAAuB,GAC7BA,EAAM,IAAI,MAAM,QAAU,CAACA,EAAM,IAAI,wBACrCA,EAAM,IAAI,eAAe,QAAQ,GAAOH,EAAI,OAAO,EAEvDG,EAAM,IAAI,uBAAyB,EAAA,EAEvC,KAAK,MAAM,KAAKiM,CAAI,EACpBJ,EAAO,KAAK,IAAI,CAAA,CAGpB,GAAI,KAAK,YAAchM,EAAI,IAAK,CAI5BgM,EAAO,KAAK,IAAI,EAChB,IAAI0f,EAAa,IAAI1rB,EAAI,MAAM,SAAUA,EAAI,GAAG,EAChDA,EAAI,KAAK,OAAO,MAAM,KAAK0rB,EAAYvrB,EAAO6L,CAAM,CAAA,CAExD,GAQRhM,EAAI,KAAK,KAAO,CACZ,MAAO,SAAUG,EAAO6L,EAAQ,CAC5B,IAAII,EAAMoF,EAAMC,EAAQkB,EAAIpO,EAAKmL,EAAQma,EAAW8M,EAAaC,EAAkBjiB,EAAOvS,EAC1F,GAAI,KAAK,gBAAiB,CACtB,IAAIy0B,EAAc72B,EAAI,KAAK,WAAW,IAAI,EAC1C62B,EAAY,KAAO,QACnBA,EAAY,UAAY72B,EAAI,MAC5BA,EAAI,KAAK,MAAM,MAAM,KAAK62B,EAAa12B,EAAO6L,CAAM,EAEpDhM,EAAI,YAAY,KAAKG,EAAO,KAAM6L,CAAM,EAExC,IAAI8qB,EAAY92B,EAAI,KAAK,WAAW,IAAI,EACxC82B,EAAU,KAAO,QACjBA,EAAU,UAAY92B,EAAI,IACtB,KAAK,kBAAoB,wBACzB82B,EAAU,oBAAsB,IAEpC92B,EAAI,KAAK,MAAM,MAAM,KAAK82B,EAAW32B,EAAO6L,CAAM,CAAA,KAE/C,CAyBH,GAxBAhM,EAAI,KAAK,gBAAgB,KAAK,KAAMG,EAAO6L,CAAM,EAS5C,KAAK,iBACN,KAAK,eAAiB,CAAA,GAErB,KAAK,YACN,KAAK,UAAY,CAAA,GAGrBwF,EAAO,OACPC,EAAS,EACL,KAAK,QAAQ,OACbD,EAAO,KAAK,QAAQ,MAEpB,KAAK,QAAQ,SACbC,EAAS,KAAK,QAAQ,QAEA,KAAK,eAAe,CAAC,IAA3C,mBAAkE,KAAK,eAAe,CAAC,IAAvC,eAAiE,KAAK,eAAe,CAAC,IAA1C,iBAMxF,KAAK,eAAe,CAAC,IAAM,mBAEvBtR,EAAM,MAAM,OAAS,aACrBA,EAAM,IAAI,YAAcH,EAAI,SAE5BG,EAAM,MAAM,OAAS,iBACrBA,EAAM,IAAI,SAAWH,EAAI,SAGHG,EAAMA,EAAM,IAAI,IAAI,EAAE,IAAI,WAAhD,oBACA,KAAK,aAAeA,EAAM,QAAQ,0BAA0B,GAEhE,KAAK,iBAAmBA,EAAMA,EAAM,MAAM,IAAI,EAAE,IAAI,iBACpD,KAAK,cAAgBA,EAAMA,EAAM,MAAM,IAAI,EAAE,IAAI,iBACjDiM,EAAO,SAAUjM,EAAOe,EAAMJ,EAAM,CAGhC,GADA6R,EAAK,GAAKzR,EAAK,GACX,CAACf,EAAM,IAAI,aAAc,CACzB,GAAIA,EAAM,IAAI,KAAK,MAAM,EAAE,IAAM,SAAW,KAAK,UAAU,CAAC,IAAM,kBAAmB,CAIjF,GAHIA,EAAM,IAAI,OAAS,qBACnBA,EAAM,IAAI,cAAc,IAAI,UAAU,KAAK,iBAAiB,EAE5DA,EAAM,IAAI,OAAS,iBAAmBA,EAAM,kBAAkB,IAAI,oBAClE,IAAIoE,EAAMpE,EAAM,kBAAkB,IAAI,oBAAoBA,EAAM,SAAS,SAASe,EAAK,EAAE,EAAE,GAAG,MAE9F,KAAIqD,EAAMpE,EAAM,SAAS,SAASe,EAAK,EAAE,EAAE,IAE3CqD,IAEAA,EAAMvE,EAAI,KAAK,QAAQ,GAAKuE,CAAG,GAEnCpE,EAAM,OAAO,OAAOoE,EAAK,IAAI,EAC7B,MAAA,CAEAzD,GAAQA,EAAK,aAAa,GAC1BX,EAAM,IAAI,cAAc,QAAQ,aAAa,EAE7CA,EAAM,IAAI,OAAS,qBAAuBA,EAAM,kBAAkB,IAAI,qBAAuBA,EAAM,kBAAkB,IAAI,iCAAmCH,EAAI,WAChKuE,EAAMpE,EAAM,kBAAkB,IAAI,oBAAoBA,EAAM,SAAS,SAASwS,CAAE,EAAE,GAAG,EAErFpO,EAAMpE,EAAM,SAAS,SAASwS,CAAE,EAAE,IAElCxS,EAAM,IAAI,qBACVA,EAAM,OAAO,OAAOA,EAAM,IAAI,qBAAsB,IAAI,GAExDuP,EAAS,IAAI1P,EAAI,YAAYG,EAAO,GAAOoE,EAAK,KAAMrD,EAAK,EAAE,EACzDf,EAAM,IAAI,sBACVuP,EAAO,uBAAyB,IAEpCvP,EAAM,OAAO,OAAOuP,EAAQ,SAAS,EACzC,CACJ,EAEJ,KAAK,MAAM,KAAKtD,CAAI,GACb,KAAK,eAAe,CAAC,IAAM,eAElCjM,EAAM,IAAI,gBAAkB,GAExBA,EAAMA,EAAM,IAAI,IAAI,EAAE,IAAI,WAAa,uBAEvC,KAAK,aAAeA,EAAM,QAAQ,0BAA0B,GAEhE,KAAK,iBAAmBA,EAAMA,EAAM,MAAM,IAAI,EAAE,IAAI,iBAChDA,EAAMA,EAAM,IAAI,IAAI,EAAE,IAAI,uBAAuB,IACjD,KAAK,iBAAmBA,EAAMA,EAAM,MAAM,IAAI,EAAE,IAAI,uBAAuB,GAE/EiM,EAAO,SAAUjM,EAAOe,EAAM,CAC1B,GAAIf,EAAM,SAAS,SAASe,EAAK,EAAE,GAAKf,EAAM,SAAS,SAASe,EAAK,EAAE,EAAE,SAAS,cAAgB,IAAS,CAACf,EAAM,IAAI,aAAc,CAEhIoE,EAAM,SAASpE,EAAM,SAAS,SAASe,EAAK,EAAE,EAAE,SAAS,YAAa,EAAE,EAOpEf,EAAMA,EAAM,IAAI,IAAI,EAAE,IAAI,uBAC1B,KAAK,iBAAmBA,EAAMA,EAAM,IAAI,IAAI,EAAE,IAAI,sBAEtDuP,EAAS,IAAI1P,EAAI,YAAYG,EAAO,GAAOoE,EAAK,KAAMrD,EAAK,EAAE,EAC7D2oB,EAAY,IAAI7pB,EAAI,KAAK,WAAWA,EAAI,YAAY,EACpD0P,EAAO,aAAama,CAAS,EAC7B1pB,EAAM,OAAO,OAAOuP,EAAQ,SAAS,EACrCinB,EAAc,GAEd,QAASt2B,EAAE,EAAEC,EAAKH,EAAM,IAAI,cAAc,QAAQ,OAAQE,EAAEC,EAAMD,IAAK,CACnE,IAAI6D,EAAQ/D,EAAM,IAAI,cAAc,QAAQE,CAAC,EAC7C,GAAI,CAAC6D,EAAM,mBAAqBA,EAAM,kBAAqB,CAACA,EAAM,kBAAoB,CAACA,EAAM,eAAiB,CAC1GyyB,EAAc,GACd,KAAA,CACJ,CAEJC,EAAmBz2B,EAAMA,EAAM,IAAI,IAAI,EAAE,IAAI,uBAAuB,EAChEw2B,GAAeC,GAAoB,CAACz2B,EAAM,IAAI,gBAC9CA,EAAM,IAAI,iBAAmBA,EAAMA,EAAM,IAAI,IAAI,EAAE,IAAI,uBAAuB,EAClF,CACJ,EAEJ,KAAK,MAAM,KAAKiM,CAAI,GACb,KAAK,eAAe,CAAC,IAAM,mBAC9BjM,EAAM,MAAM,OAAS,iBACrBA,EAAM,IAAI,SAAWH,EAAI,UAE7BG,EAAM,IAAI,gBAAkB,GAC5BiM,EAAO,SAAUjM,EAAOe,EAAM,CAC1ByT,EAAQzT,EAAK,gBAAgB,EACxByT,IACDA,EAAQxU,EAAM,iBAAiBe,CAAI,GAElCf,EAAM,IAAI,eACXiC,EAAS,GACLjC,EAAM,SAAS,SAASe,EAAK,EAAE,GAAKf,EAAM,SAAS,SAASe,EAAK,EAAE,EAAE,SAAS,cAAgB,KAC9FqD,EAAM,SAASpE,EAAM,SAAS,SAASe,EAAK,EAAE,EAAE,SAAS,YAAa,EAAE,EACxEkB,EAASjC,EAAM,IAAI,WAAW,OAAOoE,CAAG,GAE5CoQ,GAASvS,GAEbjC,EAAM,OAAO,OAAOwU,EAAO,IAAI,CAAA,EAEnC,KAAK,MAAM,KAAKvI,CAAI,WAGpB,KAAK,QAAQ,KAGbA,EAAO,SAAUjM,EAAOe,EAAM,CAC1B,IAAIwQ,EAASvR,EAAM,IAAI,OAAOe,EAAK,IAAI,EACnCqQ,EAAO,KAAK,QAAQ,KACxBA,EAAOpR,EAAM,QAAQoR,EAAMC,EAAMC,EAAQC,EAAQ1R,EAAI,SAAU,KAAK,cAAc,EAClF,IAAIg2B,EAsBJ,GAnBIzkB,IAAS,KACTpR,EAAM,IAAI,cAAc,IAAI,cAAgB,IAEhDH,EAAI,+BAA+BG,EAAOoR,EAAM,KAAM,IAAI,EAMtD,CAACpR,EAAM,IAAI,kBAAoB,EAAEA,EAAM,IAAI,QAAa,WAAaA,EAAM,IAAI,OAAS,YACxF61B,EAASh2B,EAAI,OAAO,WAAW,kBAAkB,EAAEG,EAAOoR,CAAI,EAG9DykB,EAASzkB,EAMTpR,EAAM,IAAI,cACV61B,EAASA,EAAO,QAAQ,MAAO,EAAE,MAEjC,SAAS31B,EAAI,EAAGC,EAAO,KAAK,YAAY,OAAQD,EAAIC,EAAMD,GAAK,EAC3D,GAAyB,KAAK,YAAYA,CAAC,EAAE,CAAC,IAA1C,kBAA0D,KAAK,YAAYA,CAAC,EAAE,CAAC,IAAhC,OAAmC,CAClF21B,EAASA,EAAO,QAAQ,MAAO,EAAE,EACjC,KAAA,CAIZ71B,EAAM,OAAO,OAAO61B,EAAQ,IAAI,EAC5B71B,EAAM,IAAI,sBAGVA,EAAM,IAAI,eAAe,QAAQ,GAAOH,EAAI,OAAO,CACvD,EAEJ,KAAK,MAAM,KAAKoM,CAAI,EACpBjM,EAAM,MAAM,KAAO,GACnBA,EAAM,MAAM,KAAO,GACnBA,EAAM,MAAM,OAAS,WACd,KAAK,eAAe,OAAQ,CAyBnC,GAxBAiM,EAAO,SAAUjM,EAAOe,EAAM,CAGtB,KAAK,eAAe,CAAC,IAAM,YAC3Bf,EAAM,IAAI,eAAiB,IAG3B,CAACA,EAAM,IAAI,cAAc,IAAI,WAAae,EAAK,KAAK,UAAU,CAAC,CAAC,IAChEf,EAAM,IAAI,gBAAkB,IAEhC,IAAI2B,EAAMZ,EAAK,KAAK,UAAU,CAAC,CAAC,EAC5BY,GAAO,CAAC3B,EAAM,IAAI,cAAc,IAAI,aAC/B,GAAK2B,GAAK,MAAM,EAAE,EAAE,MAAM,OAAO,EAClC3B,EAAM,IAAI,gBAAkB,GAE5BA,EAAM,IAAI,gBAAkB,GAEpC,EAEJ,KAAK,MAAM,KAAKiM,CAAI,EAKhBpM,EAAI,aAAa,QAAQ,KAAK,eAAe,CAAC,CAAC,EAAI,IAChD,KAAK,eAAe,CAAC,EAAE,QAAQ,OAAO,EAAI,IAC1C,KAAK,eAAe,CAAC,EAAE,QAAQ,MAAM,EAAI,IACzC,CAAC,gBAAiB,wBAAwB,EAAE,QAAQ,KAAK,eAAe,CAAC,CAAC,EAAI,GAChF,CAKD,IAAIqsB,EAAY,KAAK,UAAU,CAAC,EAC5BC,EAAW,GACXC,EAAS,GACTC,EAAY,GACZhb,IAAS,QACL,KAAK,eAAe,CAAC,EAAE,MAAM,EAAE,IAAM,WACrC+a,EAAS,KAAK,eAAe,CAAC,EAAI,UAGtCF,EAAY,GAEZlsB,EAAM,MAAM,UAGZqsB,EAAY,IAEZA,EAAY,GACZF,EAAW,IAGflgB,EAAOjM,EAAM,UAAU,kBAAkB,KAAK,UAAWksB,EAAWC,EAAUC,EAAQC,CAAS,CAAA,MAG3FxsB,EAAI,YAAY,QAAQ,KAAK,eAAe,CAAC,CAAC,EAAI,GAElDoM,EAAO,SAAUjM,EAAOe,EAAMJ,EAAM,CAC5BA,GAAQA,EAAK,KAAK,UAAU,CAAC,CAAC,IAU9BX,EAAM,cAAc,KAAMW,EAAM,KAAK,UAAU,CAAC,EAAGI,EAAK,IAAI,EAC5DlB,EAAI,KAAK,mBAAmBG,EAAO,KAAK,UAAU,CAAC,EAAGe,EAAK,EAAE,EAGzD,CAAC,UAAW,eAAe,EAAE,QAAQ,KAAK,eAAe,CAAC,CAAC,EAAI,IAC7D,CAACf,EAAM,IAAI,cACbA,EAAM,IAAI,UAAU,KAAK,KAAK,eAAe,CAAC,CAAC,EAEvD,EAEI,CAAC,OAAQ,aAAc,iBAAkB,oBAAqB,UAAW,QAAS,SAAU,kBAAmB,oBAAqB,QAAQ,EAAE,QAAQ,KAAK,eAAe,CAAC,CAAC,EAAI,GAGxLiM,EAAO,SAASjM,EAAOe,EAAM,CACzBf,EAAM,cAAc,KAAMe,EAAM,KAAK,UAAU,CAAC,EAAGA,EAAK,IAAI,EAC5DlB,EAAI,KAAK,mBAAmBG,EAAO,KAAK,UAAU,CAAC,EAAGe,EAAK,EAAE,CAAA,EAE1D,CAAC,MAAO,KAAK,EAAE,QAAQ,KAAK,eAAe,CAAC,CAAC,EAAI,GACxDkL,EAAO,SAAUjM,EAAOe,EAAM,CAC1B,IAAI+C,EACJ,GAAI,KAAK,UAAU,CAAC,IAChBA,EAAQ9D,EAAM,YAAYe,EAAM,KAAK,UAAU,CAAC,EAAGsQ,CAAI,EACnDvN,GAQA,GAPI,KAAK,UAAU,CAAC,IAAM,OAASuN,IAAS,UACxCvN,EAAQA,EAAM,QAAQ,mBAAoB,IAAI,EAC1CA,EAAM,MAAM,WAAW,IACvBA,EAAQA,EAAM,QAAQ,cAAe,EAAE,IAI3C9D,EAAM,IAAI,uBAAuB,iBACjC,GAAI,CAAC,KAAK,YAAY,QAAU,KAAK,YAAY,CAAC,EAAE,CAAC,IAAM,IAAM,KAAK,UAAU,CAAC,EAAG,CAGhF,IAAI42B,EAAa/2B,EAAI,KAAK,WAAW,IAAI,EAErCg3B,EAAY,IAAIh3B,EAAI,KAAK,KAAM,KAAM,aAAa,EAGtD,GADAg3B,EAAU,YAAY,KAAK,CAAC,OAAQ,MAAM,CAAC,EACvC,KAAK,eAAe,CAAC,IAAM,MAAO,CAElC,IAAIh1B,EACA,KAAK,QAAQ,QAAU,KAAK,QAAQ,OAAO,MAAM,0BAA0B,IAC3EiC,EAAQA,EAAM,QAAQ,yBAA0B,EAAE,EAC9CA,EAAM,MAAM,cAAc,EAE1BjC,EAAS,GAGTA,EAAS,mBAGb+0B,EAAW,QAAQ,OAAS,KAAK,QAAQ,OAAO,MAAM,EAAGA,EAAW,QAAQ,OAAO,OAAO,EAAE,GAIhG,IAAIE,EAAa,IAAIj3B,EAAI,KAAKgC,CAAM,EAGhCk1B,EAAY,IAAIl3B,EAAI,KAAKiE,CAAK,EAElC+yB,EAAU,KAAKC,CAAU,EACzBD,EAAU,KAAKE,CAAS,EAExB/2B,EAAM,OAAO,OAAO62B,EAAWD,EAAY,GAAO,GAAO,EAAI,CAAA,KAC1D,CACH,IAAIG,EAAY,IAAIl3B,EAAI,KAAKiE,CAAK,EAElC+yB,EAAU,KAAKE,CAAS,EAGxB/2B,EAAM,OAAO,OAAO62B,EAAWD,EAAY,GAAO,GAAO,EAAI,CAAA,CACjE,MAEA52B,EAAM,OAAO,OAAO8D,EAAO,KAAM,GAAO,GAAO,EAAI,MAEpD,CAEH,GAAI,KAAK,YAAY,OACjB,QAAS5D,EAAE,KAAK,YAAY,OAAO,EAAGA,EAAE,GAAIA,IACpC,KAAK,YAAYA,CAAC,EAAE,CAAC,IAAM,IAAM,KAAK,UAAU,CAAC,IACjD,KAAK,YAAc,KAAK,YAAY,MAAM,EAAGA,CAAC,EAAE,OAAO,KAAK,YAAY,MAAMA,EAAE,CAAC,CAAC,GAI9FF,EAAM,OAAO,OAAO8D,EAAO,KAAM,GAAO,GAAO,EAAI,CAAA,CAG/D,EAEG,KAAK,eAAe,CAAC,IAAM,UAIlCmI,EAAO,SAAUjM,EAAOe,EAAM,CAC1B,IAAI+C,EACJA,EAAQ9D,EAAM,YAAYe,EAAM,KAAK,UAAU,CAAC,EAAGsQ,CAAI,EACnDvN,GACA9D,EAAM,OAAO,OAAO8D,EAAO,IAAI,CACnC,EAEG,KAAK,eAAe,CAAC,IAAM,cAClCmI,EAAO,SAAUjM,EAAOe,EAAM,CAC1B,IAAI+C,EAAQ9D,EAAM,UAAU,QAAQ,QAAW,YAAee,EAAK,EAAE,EACjE+C,IACA9D,EAAM,OAAO,OAAO8D,EAAO,IAAI,EAC/B9D,EAAM,IAAI,cAAc,IAAI,iBAAmB,GACnD,EAIJiM,EAAO,SAAUjM,EAAOe,EAAM,CAC1B,IAAI+C,EACA,KAAK,UAAU,CAAC,IAChBA,EAAQ9D,EAAM,YAAYe,EAAM,KAAK,UAAU,CAAC,EAAGsQ,CAAI,EACnDvN,IACAA,EAAQ,GAAKA,EACbA,EAAQA,EAAM,MAAM,IAAI,EAAE,KAAK,EAAE,EACjC9D,EAAM,OAAO,OAAO8D,EAAO,IAAI,GAEvC,EAIZ,KAAK,MAAM,KAAKmI,CAAI,CAAA,MACb,KAAK,QAAQ,QAEpBA,EAAO,SAAUjM,EAAO,CACpBA,EAAM,IAAI,cAAc,IAAI,cAAgB,GAE5CH,EAAI,+BAA+BG,EAAO,KAAK,QAAQ,MAAO,GAAM,IAAI,EACxEA,EAAM,OAAO,OAAO,KAAK,QAAQ,MAAO,IAAI,EACxCA,EAAM,IAAI,sBAGVA,EAAM,IAAI,eAAe,QAAQ,GAAOH,EAAI,OAAO,CACvD,EAEJ,KAAK,MAAM,KAAKoM,CAAI,GAI5BJ,EAAO,KAAK,IAAI,EAChBhM,EAAI,KAAK,cAAc,KAAK,KAAMG,EAAO6L,CAAM,CAAA,CACnD,GAQRhM,EAAI,KAAK,OAAS,CACd,MAAO,SAAUG,EAAO6L,EAAQ,CAC5B,GAAI,KAAK,YAAchM,EAAI,MAAO,CAE9BG,EAAM,MAAM,KAAO,SACnBA,EAAM,MAAM,KAAO,SACnBA,EAAM,MAAM,UAAY,GAExB,IAAIiM,EAAO,SAASjM,EAAOe,EAAM,CAC7Bf,EAAM,IAAI,KAAO,SACjBA,EAAM,IAAI,KAAO,SACjBA,EAAM,IAAI,UAAY,EAAA,EAE1B,KAAK,MAAM,KAAKiM,CAAI,CAAA,CAEpB,KAAK,YAAcpM,EAAI,MAGvBG,EAAM,YAAc,CAChB,IAAK,CACD,gBAAiBA,EAAM,cAAc,IAAI,eAAA,GAGjDA,EAAM,OAAO,IAAMA,EAAM,SAAS,KAEtC6L,EAAO,KAAK,IAAI,CAAA,GAOxBhM,EAAI,WAAa,CAAA,EAEjBA,EAAI,WAAW,eAAe,EAAI,SAAUG,EAAO0R,EAAK,CAEpD,GADK,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAC3BA,IAAQ,OAAQ,CAChB1R,EAAM,IAAI,iBAAmB,GAC7B,IAAIiM,EAAO,SAAUlL,EAAM,CACvB,GAAIf,EAAM,IAAI,OAAS,gBACnB,GAAIA,EAAM,IAAI,mBAAqBA,EAAM,SAAS,SAASe,EAAK,EAAE,EAAE,SAAS,aACzE,OAAAf,EAAM,IAAI,oBAAsB,EACzB,WAGXA,EAAM,IAAI,qBAAuB,EAC7BA,EAAM,IAAI,kBAAkB,cACzBA,EAAM,IAAI,mBAAqBA,EAAM,IAAI,kBAAkB,aAC9D,OAAAA,EAAM,IAAI,oBAAsB,EACzB,GAGf,MAAO,EAAA,EAEX,KAAK,MAAM,KAAKiM,CAAI,CAAA,SACbyF,IAAQ,oCAAqC,CACpD,IAAIzF,EAAO,SAAUlL,EAAM,CACvB,MAAI,GAAAf,EAAM,SAAS,SAASe,EAAK,EAAE,EAAE,SAAS,cAAgBf,EAAM,SAAS,SAASe,EAAK,EAAE,EAAE,gBAAgB,EAAI,EAG5G,EAEX,KAAK,MAAM,KAAKkL,CAAI,CAAA,CAE5B,EAEApM,EAAI,WAAW,aAAa,EAAI,SAAUG,EAAO0R,EAAK,CAC7C,KAAK,QAAQ,KAAK,MAAQ,CAAA,GA0B/B,QAzBImc,EAAYnc,EAAI,MAAM,KAAK,EAC3BslB,EAAW,SAASrL,EAAU,CAC9B,OAAO,SAAU5qB,EAAMJ,EAAM,CACzB,IAAIs2B,EAASl2B,EAIb,GAHIJ,GAAQ,CAAC,UAAU,eAAe,EAAE,QAAQgrB,CAAQ,EAAI,KACxDsL,EAASt2B,GAET,CAACs2B,EAAOtL,CAAQ,EAChB,MAAO,GAEX,GAAI9rB,EAAI,kBAAkB,QAAQ8rB,CAAQ,EAAI,IAI1C,GAHK3rB,EAAM,IAAI,eAAe2rB,CAAQ,GAClC3rB,EAAM,cAAc,GAAOi3B,EAAQtL,EAAU5qB,EAAK,IAAI,EAEtDf,EAAM,IAAI,eAAe2rB,CAAQ,EAAE,QACnC,MAAO,WAEJ,CAAC,QAAQ,SAAS,EAAE,QAAQA,CAAQ,EAAI,IAC3CsL,EAAOtL,CAAQ,EAAE,MAAM,EAAE,IAAM,GAAK,SAASsL,EAAOtL,CAAQ,EAAE,MAAM,EAAE,EAAG,EAAE,EAC3E,MAAO,GAGf,MAAO,EAAA,CACX,EAEKzrB,EAAE,EAAGA,EAAE2tB,EAAU,OAAQ3tB,GAAG,EACjC,KAAK,MAAM,KAAK82B,EAASnJ,EAAU3tB,CAAC,CAAC,CAAC,CAE9C,EAGAL,EAAI,WAAW,oBAAoB,EAAI,SAAUG,EAAO0R,EAAK,CACpD,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAY/B,QAXImc,EAAYnc,EAAI,MAAM,KAAK,EAE3BslB,EAAW,SAAUE,EAAY,CACjC,OAAO,SAASn2B,EAAM,CAClB,MAAI,GAAAA,EAAKm2B,CAAU,GAAKn2B,EAAKm2B,CAAU,EAAE,MAIzC,CACJ,EAEKh3B,EAAE,EAAEC,EAAK0tB,EAAU,OAAO3tB,EAAEC,EAAKD,GAAG,EACzC,KAAK,MAAM,KAAK82B,EAASnJ,EAAU3tB,CAAC,CAAC,CAAC,CAE9C,EAGAL,EAAI,WAAW,UAAU,EAAI,SAAUG,EAAO0R,EAAK,CAC1C,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAC/B,IAAIylB,EAAYzlB,EAAI,QAAQ,YAAa,WAAW,EACpDylB,EAAYA,EAAU,MAAM,KAAK,EAcjC,QAZIH,EAAW,SAAUI,EAAU,CAC/B,OAAO,SAASr2B,EAAMJ,EAAM,CACxB,IAAI6T,EAGJ,OAFAxU,EAAM,cAAc,GAAOW,EAAM,SAAS,EAC1C6T,EAAQxU,EAAM,IAAI,eAAe,QAAQ,MACrC,GAAAwU,GAAS4iB,IAAa5iB,EAI1B,CACJ,EAEKtU,EAAE,EAAEC,EAAKg3B,EAAU,OAAOj3B,EAAEC,EAAKD,GAAG,EACzC,KAAK,MAAM,KAAK82B,EAASG,EAAUj3B,CAAC,CAAC,CAAC,CAE9C,EAGAL,EAAI,WAAW,WAAW,EAAI,SAAUG,EAAO0R,EAAK,CAC3C,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAC/B,IAAI2lB,EACJr3B,EAAM,IAAI,YAAcH,EAAI,SAkC5B,QAjCIy3B,EAAe5lB,EAAI,MAAM,KAAK,EAC9B6lB,EAAqB,SAAUx2B,EAAMJ,EAAM,CAC3C,MAAI,GAAAA,GAAQd,EAAI,aAAac,EAAK,QAAQ,GAAKd,EAAI,aAAaA,EAAI,mBAAmB,GAAKc,EAAK,WAAW,EAGrG,EAEP62B,EAAwB,SAAUz2B,EAAMJ,EAAM,CAC9C,MAAI,GAAAA,GAAQd,EAAI,aAAac,EAAK,QAAQ,GAAKd,EAAI,aAAaA,EAAI,mBAAmB,GAAK,CAACc,EAAK,WAAW,EAGtG,EAEPq2B,EAAW,SAASK,EAAa,CACjC,OAAO,SAAUt2B,EAAMJ,EAAM,CACzB,GAAIX,EAAM,IAAI,OAAS,eACnB,MAAO,GAKX,GAHIW,GAAwB,OAAOA,EAAK,SAA5B,MACRA,EAAK,SAAW,GAEhBA,GAAQ,OAAOA,EAAK,UAAa,SAAU,CAC3C,GAAIA,EAAK,WAAa,GAAK02B,IAAgB,EACvC,MAAO,GACX,GAAWA,EAAc,GAAKx3B,EAAI,aAAac,EAAK,QAAQ,GAAKd,EAAI,aAAaw3B,CAAW,EACzF,MAAO,EACX,SACOA,IAAgB,EACvB,MAAO,GAEX,MAAO,EAAA,CACX,EAEKn3B,EAAE,EAAEC,EAAKm3B,EAAa,OAAOp3B,EAAEC,EAAKD,GAAG,EAAG,CAC/C,IAAIm3B,EAAcC,EAAap3B,CAAC,EAC5Bm3B,IAAgB,QAChBA,EAAcx3B,EAAI,eACXw3B,IAAgB,uBACvBA,EAAcx3B,EAAI,8BACXw3B,IAAgB,aACvBA,EAAcx3B,EAAI,oBACXw3B,IAAgB,OACvBA,EAAcx3B,EAAI,cACXw3B,IAAgB,sBACvBA,EAAcx3B,EAAI,4BAEFw3B,IAAhB,YACA,KAAK,MAAM,KAAKE,CAAkB,EACZF,IAAf,WACP,KAAK,MAAM,KAAKG,CAAqB,EAErC,KAAK,MAAM,KAAKR,EAASK,CAAW,CAAC,CACzC,CAER,EAEAx3B,EAAI,WAAW,OAAO,EAAI,SAAUG,EAAO0R,EAAK,CACvC,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAe/B,QAbI+lB,EAAQ/lB,EAAI,MAAM,KAAK,EAEvBslB,EAAW,SAAUU,EAAQ,CAC7B,OAAO,SAAS32B,EAAM,CAClB,IAAIX,EAAOW,EAAK,OAAS22B,EACzB,MAAI,EAAAt3B,CAIJ,CACJ,EAEAu3B,EAAQ,CAAA,EACHz3B,EAAE,EAAEC,EAAKs3B,EAAM,OAAOv3B,EAAEC,EAAKD,GAAG,EACrCy3B,EAAM,KAAKX,EAASS,EAAMv3B,CAAC,CAAC,CAAC,EAEjC,KAAK,MAAM,KAAKF,EAAM,IAAI,MAAM,IAAI,KAAMA,EAAO23B,CAAK,CAAC,CAC3D,EAEA93B,EAAI,WAAW,WAAW,EAAI,SAAUG,EAAO0R,EAAK,CAC3C,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAC/B,IAAIzF,EAKJ,GAJA,KAAK,UAAYyF,EAAI,MAAM,KAAK,EAChC,KAAK,eAAiB,KAAK,UAAU,MAAA,EAGrB,KAAK,OAAjB,SAAyB,KAAK,UAAU,CAAC,EACzC,KAAK,QAAQ,KAAO,KAAK,UAAU,CAAC,UAC7B,CAAC,QAAS,OAAQ,OAAQ,QAAQ,EAAE,QAAQ,KAAK,IAAI,EAAI,GAShEzF,EAAO,SAAUjM,EAAOe,EAAMJ,EAAM,CAEhC,QAAST,EAAI,KAAK,UAAU,OAAS,EAAGA,EAAI,GAAIA,GAAK,GACjD,KAAK,UAAU,IAAA,EAEnB,QAASA,EAAE,EAAEC,EAAK,KAAK,eAAe,OAAOD,EAAEC,EAAKD,IAE5CF,EAAM,IAAI,UAAU,QAAQ,KAAK,eAAeE,CAAC,CAAC,IAAM,IAIxD,KAAK,UAAU,KAAK,KAAK,eAAeA,CAAC,CAAC,EAE1CF,EAAM,IAAI,sBACVA,EAAM,IAAI,UAAU,KAAK,KAAK,eAAeE,CAAC,CAAC,CAEvD,EAEJ,KAAK,MAAM,KAAK+L,CAAI,EAGpBA,EAAO,SAAUjM,EAAOe,EAAMJ,EAAM,CAEhC,QADI0hB,EAAS,GACJniB,EAAE,EAAEC,EAAK,KAAK,UAAU,OAAOD,EAAEC,EAAKD,IAAK,CAChD,IAAIyrB,EAAW,KAAK,UAAUzrB,CAAC,EAC/B,GAAI,CAAC,YAAa,WAAW,EAAE,QAAQyrB,CAAQ,EAAI,IAC/B,OAAO5qB,EAAK4qB,CAAQ,GAAjC,UACY,KAAK,OAAjB,QAAuB,CAO1B,IAAIiM,EAAU,GACVC,EAAW92B,EAAK4qB,CAAQ,EAAE,MAAM,SAAS,EACzCmM,EAAgB,CAAA,EACpB,GAAI/2B,EAAK,OAASA,EAAK,MAAM,MAAM4qB,CAAQ,GACvC,QAASmI,KAAW/yB,EAAK,MAAM,MAAM4qB,CAAQ,EAEzC,GADAmM,EAAchE,CAAO,EAAI/yB,EAAK,MAAM,MAAM4qB,CAAQ,EAAEmI,CAAO,EAAE,MAAM,SAAS,EACxEgE,EAAchE,CAAO,EAAE,SAAW+D,EAAS,OAAQ,CACnDD,EAAU,GACV,KAAA,EAIPA,IACDC,EAAW,CAAC92B,EAAK4qB,CAAQ,CAAC,EAC1BmM,EAAgB/2B,EAAK,MAAM,MAAM4qB,CAAQ,GAE7C,QAASjrB,EAAI,EAAGY,EAAOu2B,EAAS,OAAQn3B,EAAIY,EAAMZ,IAAK,CACnD,IAAIq3B,EAAgB,CAChB,QAAQF,EAASn3B,CAAC,EAClB,MAAM,CACF,KAAK,CAAA,CAAC,GAGd,QAASozB,KAAWgE,EAAe,CAC/B,IAAIE,EAAe,CACf,QAAQF,EAAchE,CAAO,EAAEpzB,CAAC,GAEpCq3B,EAAc,MAAM,KAAKjE,CAAO,EAAIkE,CAAA,CAExCH,EAASn3B,CAAC,EAAIq3B,CAAA,CAElBh3B,EAAK4qB,CAAQ,EAAIkM,CAAA,CASrB,GAPI,KAAK,QAAQ,OAAS,SAAW,CAAC92B,EAAK4qB,CAAQ,IAC3CA,IAAa,QACbA,EAAW,cACJA,IAAa,oBACpBA,EAAW,0BAGfA,IAAa,cAAe,CAK5BtJ,EAAS,GACT,KAAA,SACOxiB,EAAI,eAAe,QAAQ8rB,CAAQ,EAAI,GAAI,CAClD,GAAI3rB,EAAM,IAAI,uBAAuB,2BAAgD2rB,IAAnB,eAA6B,CAE3FtJ,EAAS,GACT,KAAA,CAEJ,GAAIthB,EAAK4qB,CAAQ,EAAG,CAChB,QAASjqB,KAAOX,EAAK4qB,CAAQ,EACzB,GAAI,OAAK,UAAU,QAAQjqB,CAAG,IAAM,IAAoBA,IAAd,YAGtCX,EAAK4qB,CAAQ,EAAEjqB,CAAG,EAAG,CACrB2gB,EAAS,GACT,KAAA,CAGR,GAAIA,EACA,KACJ,CACJ,SACqBsJ,IAAd,UAAwB,CAC3BhrB,GAAQA,EAAK,UACb0hB,EAAS,IAEb,KAAA,SAC2BsJ,IAApB,gBAA8B,CACjChrB,GAAQA,EAAK,eAAe,IAC5B0hB,EAAS,IAEb,KAAA,SACO,CAAC,kBAAkB,gBAAgB,EAAE,QAAQsJ,CAAQ,EAAI,GAAI,CACpEtJ,EAAS,GACT,KAAA,SACyCsJ,IAAlC,8BAA4C,CAC/ChrB,GAAQA,EAAK,6BAA6B,IAC1C0hB,EAAS,IAEb,KAAA,SACmDsJ,IAA5C,wCAAsD,CACzDhrB,GAAQA,EAAK,uCAAuC,IACpD0hB,EAAS,IAEb,KAAA,SACyBsJ,IAAlB,cAA4B,CAC/B3rB,EAAM,UAAU,QAAQ,QAAW,YAAYe,EAAK,EAAE,GACnDf,EAAM,IAAI,iBACVe,EAAK,KAERshB,EAAS,IAEb,KAAA,KACJ,IAAwB,OAAOthB,EAAK4qB,CAAQ,GAAjC,SACP,MACJ,GAAwB,OAAO5qB,EAAK4qB,CAAQ,GAAjC,UAAsC5qB,EAAK4qB,CAAQ,EAAG,CAC7DtJ,EAAS,GACT,KAAA,SACoB,OAAOthB,EAAK4qB,CAAQ,GAAjC,SAAoC,CAC3CtJ,EAAS,GACT,KAAA,EAEJ,GAAIA,EACA,KACJ,CAIJ,GAAIA,EAAQ,CACR,QAASniB,EAAE,EAAEC,EAAK,KAAK,eAAe,OAAOD,EAAEC,EAAKD,IAAK,CACrD,IAAIyrB,EAAW,KAAK,eAAezrB,CAAC,GAChCyrB,IAAa,mBAAqB3rB,EAAM,IAAI,OAAS,kBACrDA,EAAM,IAAI,qBAAuB,IAGrCA,EAAM,IAAI,cAAc,IAAI,iBAAmB,GAE3CA,EAAM,IAAI,eAAe,MAAA,GACtBA,EAAM,IAAI,OAAS,gBACN,OAAOe,EAAK4qB,CAAQ,GAAjC,WAEH3rB,EAAM,IAAI,UAAU,IAAMA,EAAM,OAAO,QAAQ,MAAA,EAC/CA,EAAM,IAAI,cAAc,KAAKe,EAAK4qB,CAAQ,CAAC,EAC/C,CAEJ3rB,EAAM,IAAI,eAAe,QAAQ,GAAQH,EAAI,OAAO,CAAA,MAGpDG,EAAM,IAAI,cAAc,IAAI,iBAAmB,EACnD,EAGJ,KAAK,MAAM,KAAKiM,CAAI,UACb,CAAC,KAAO,UAAW,WAAW,EAAE,QAAQ,KAAK,IAAI,EAAI,GAmC5D,QAhCI+qB,EAAW,SAAUrL,EAAU,CAC/B,OAAO,SAAS5qB,EAAKJ,EAAK,CACtB,IAAIs2B,EAASl2B,EAOb,GANIJ,GAAQ,CAAC,UAAW,gBAAiB,8BAA+B,wCAAyC,cAAc,EAAE,QAAQgrB,CAAQ,EAAI,KACjJsL,EAASt2B,GAKTgrB,IAAa,eAAiB3rB,EAAM,IAAI,iBAAmBi3B,EAAO,IAClE,GAAIj3B,EAAM,UAAU,QAAQ,QAAW,YAAYi3B,EAAO,EAAE,EACxD,MAAO,WAEJA,EAAOtL,CAAQ,EAAG,CACzB,GAAiB,OAAOsL,EAAOtL,CAAQ,GAAnC,UAAqD,OAAOsL,EAAOtL,CAAQ,GAAnC,SACxC,MAAO,GACX,GAAwB,OAAOsL,EAAOtL,CAAQ,GAAnC,UAMP,QAASjqB,KAAOu1B,EAAOtL,CAAQ,EAC3B,GAAIsL,EAAOtL,CAAQ,EAAEjqB,CAAG,EACpB,MAAO,GAGnB,CAEJ,MAAO,EAAA,CACX,EAEKxB,EAAE,EAAEC,EAAK,KAAK,UAAU,OAAOD,EAAEC,EAAKD,GAAG,EAC9C,KAAK,MAAM,KAAK82B,EAAS,KAAK,UAAU92B,CAAC,CAAC,CAAC,CAGvD,EAGAL,EAAI,WAAW,OAAO,EAAI,SAAUG,EAAO0R,EAAK,CACvC,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAC/B,IAAIylB,EAAYzlB,EAAI,QAAQ,YAAa,WAAW,EACpDylB,EAAYA,EAAU,MAAM,KAAK,EAyBjC,QAvBIH,EAAW,SAAUI,EAAU,CAC/B,OAAO,SAASr2B,EAAM,CAClB,IAAIyT,EAcJ,OAbAxU,EAAM,cAAc,GAAOe,EAAM,OAAQA,EAAK,IAAI,EAC7Cf,EAAM,IAAI,eAAe,KAAK,MAExBA,EAAM,IAAI,eAAe,KAAK,QAAU,YAC/CwU,EAAQ,YAERA,EAAQxU,EAAM,IAAI,eAAe,KAAK,MAJtCwU,EAAQ,OAMRxU,EAAM,IAAI,eAAe,KAAK,OAAO,OAAS,GAC1CA,EAAM,IAAI,eAAe,KAAK,OAAO,CAAC,EAAE,mBACxCA,EAAM,IAAI,eAAe,KAAK,OAAO,CAAC,EAAE,gBAAkB,IAG9Do3B,IAAa5iB,CAIjB,CACJ,EAEKtU,EAAE,EAAEC,EAAKg3B,EAAU,OAAOj3B,EAAEC,EAAKD,GAAG,EACzC,KAAK,MAAM,KAAK82B,EAASG,EAAUj3B,CAAC,CAAC,CAAC,CAE9C,EAIAL,EAAI,WAAW,SAAS,EAAI,SAAUG,EAAO0R,EAAK,CACzC,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAkB/B,QAjBIylB,EAAYzlB,EAAI,MAAM,KAAK,EAC3BslB,EAAW,SAASI,EAAU,CAC9B,OAAO,SAAUr2B,EAAM,CACnB,IAAIyT,EAOJ,OANAxU,EAAM,cAAc,GAAOe,EAAM,SAAUA,EAAK,IAAI,EAC/Cf,EAAM,IAAI,eAAe,OAAO,MAGjCwU,EAAQxU,EAAM,IAAI,eAAe,OAAO,MAFxCwU,EAAQ,SAIR4iB,IAAa5iB,CAIjB,CACJ,EAEKtU,EAAE,EAAEC,EAAKg3B,EAAU,OAAOj3B,EAAEC,EAAKD,GAAG,EACzC,KAAK,MAAM,KAAK82B,EAASG,EAAUj3B,CAAC,CAAC,CAAC,CAE9C,EAEAL,EAAI,WAAW,eAAe,EAAI,SAAUG,EAAO0R,EAAK,CAC/C,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAC/B,IAAIumB,EAAmBvmB,EAAI,MAAM,KAAK,EAGlCwmB,EAAY,SAAUD,EAAkB,CACxC,OAAO,SAASl3B,EAAM,CAClB,GAAI,CAACA,EAAK,aACN,MAAO,GAGX,QADIsE,EAAetE,EAAK,aACfb,EAAE,EAAEC,EAAK83B,EAAiB,OAAO/3B,EAAEC,EAAKD,IAC7C,GAAImF,IAAiB4yB,EAAiB/3B,CAAC,EACnC,MAAO,GAGf,MAAO,EAAA,CACX,EAEJ,KAAK,MAAM,KAAKg4B,EAAUD,CAAgB,CAAC,CAC/C,EAEAp4B,EAAI,WAAW,UAAU,EAAI,SAAUG,EAAO0R,EAAK,CAC1C,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAC/B,IAAIymB,EAAezmB,EAAI,MAAM,KAAK,EAG9BwmB,EAAY,SAAUC,EAAc,CACpC,OAAO,SAASp3B,EAAM,CAClB,GAAI,CAACA,EAAK,QACN,MAAO,GAGX,QADIV,EAAUU,EAAK,QACVb,EAAE,EAAEC,EAAKg4B,EAAa,OAAOj4B,EAAEC,EAAKD,IACzC,GAAIG,IAAY83B,EAAaj4B,CAAC,EAC1B,MAAO,GAGf,MAAO,EAAA,CACX,EAEJ,KAAK,MAAM,KAAKg4B,EAAUC,CAAY,CAAC,CAC3C,EAEAt4B,EAAI,WAAW,UAAU,EAAI,SAAUG,EAAO0R,EAAK,CAC1C,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAC/B,IAAIzF,EAAO,UAAY,CACnB,GAAI,CAAC,eAAgB,UAAU,EAAE,QAAQyF,CAAG,EAAI,GAAI,CACtD,IAAIO,EAAOjS,EAAM,IAAI,KAAK,MAAM,EAAG0R,EAAI,MAAM,EAC7C,OAAIO,IAASP,CAGN,SACwBA,IAAlB,cACP,MAAO,CAAC,CAAC1R,EAAM,IAAI,iBACvB,EAEJ,KAAK,MAAM,KAAKiM,CAAI,CACxB,EAEApM,EAAI,WAAW,gBAAgB,EAAI,SAAUG,EAAO0R,EAAK,CAChD,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAY/B,QAXI0mB,EAAW1mB,EAAI,MAAM,KAAK,EAC1BslB,EAAW,SAAUqB,EAAS,CAC9B,OAAO,SAASt3B,EAAM,CAClB,IAAIgP,EAAOhP,EAAKs3B,CAAO,EACvB,MAAI,GAACtoB,GAAQA,EAAK,OAASA,EAAK,OAIhC,CACJ,EAEK7P,EAAE,EAAEC,EAAKi4B,EAAS,OAAOl4B,EAAEC,EAAKD,GAAG,EACxC,KAAK,MAAM,KAAK82B,EAASoB,EAASl4B,CAAC,CAAC,CAAC,CAE7C,EAEAL,EAAI,WAAW,yBAAyB,EAAI,SAAUG,EAAO0R,EAAK,CACzD,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAY/B,QAXI0mB,EAAW1mB,EAAI,MAAM,KAAK,EAC1BslB,EAAW,SAAUqB,EAAS,CAC9B,OAAO,SAASt3B,EAAM,CAClB,IAAIgP,EAAOhP,EAAKs3B,CAAO,EACvB,MAAI,GAACtoB,GAAS,CAACA,EAAK,OAAS,CAACA,EAAK,QAAWA,EAAK,IAInD,CACJ,EAEK7P,EAAE,EAAEC,EAAKi4B,EAAS,OAAOl4B,EAAEC,EAAKD,GAAG,EACxC,KAAK,MAAM,KAAK82B,EAASoB,EAASl4B,CAAC,CAAC,CAAC,CAE7C,EAEAL,EAAI,WAAW,UAAU,EAAI,SAAUG,EAAO0R,EAAK,CAC1C,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAY/B,QAXI0mB,EAAW1mB,EAAI,MAAM,KAAK,EAC1BslB,EAAW,SAAUqB,EAAS,CAC9B,OAAO,SAASt3B,EAAM,CAClB,IAAIgP,EAAOhP,EAAKs3B,CAAO,EACvB,MAAI,GAACtoB,GAAQ,CAACA,EAAK,IAInB,CACJ,EAEK7P,EAAE,EAAEC,EAAKi4B,EAAS,OAAOl4B,EAAEC,EAAKD,GAAG,EACxC,KAAK,MAAM,KAAK82B,EAASoB,EAASl4B,CAAC,CAAC,CAAC,CAE7C,EAEAL,EAAI,WAAW,YAAY,EAAI,SAAUG,EAAO0R,EAAK,CAC5C,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAC/B,IAAIzF,EAAO,SAAUlL,EAAM,CACvB,IAAIu3B,EAAWv3B,EAAK2Q,CAAG,EACvB,GAAI4mB,GAAYA,EAAS,OAAQ,CAI7B,QAHIvJ,EAAU,EACVd,EAAe,EACfsK,EAAiB,GACZr4B,EAAI,EAAGC,EAAOm4B,EAAS,OAAQp4B,EAAIC,EAAMD,GAAK,EAC/CF,EAAM,IAAI,uBAAuB,mCAC7Bs4B,EAASp4B,CAAC,EAAE,SAAYo4B,EAASp4B,CAAC,EAAE,eAAiBo4B,EAASp4B,CAAC,EAAE,QAAU,CAACo4B,EAASp4B,CAAC,EAAE,QAC5F+tB,GAAgB,EAChBsK,EAAiB,KAEjBxJ,GAAW,EACXwJ,EAAiB,IAGzB,GAAIxJ,EAAU,EACV,MAAO,GACX,GAAWd,EAAe,EACtB,MAAO,GACX,GAAWA,GAAgBsK,EACvB,MAAO,EACX,CAEJ,MAAO,EAAA,EAEX,KAAK,MAAM,KAAKtsB,CAAI,CACxB,EAEApM,EAAI,WAAW,cAAc,EAAI,SAAUG,EAAO0R,EAAK,CAC9C,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAC/B,IAAIzF,EAAO,SAAUlL,EAAM,CACvB,IAAIY,EAAO,GAAKZ,EAAK2Q,CAAG,EACpBzR,EAAM0B,EAAI,MAAM,8HAA8H,EAClJ,OAAI1B,EAAI,OAAS,CAGV,EAEX,KAAK,MAAM,KAAKgM,CAAI,CACxB,EAKApM,EAAI,WAAW,SAAS,EAAI,SAAUG,EAAO0R,EAAK,CACzC,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAC/B,IAASpB,EAAUhQ,EAAML,EAAKC,EAAGC,EAE7Bq4B,EAAiBx4B,EAAM,IAAI,gBAAgB,EAAE,CAAC,EAElD,GAAI,KAAK,OAAS,SAAU,CAGxB,GADA,KAAK,WAAa0R,EACd,KAAK,YAAc7R,EAAI,MAAO,CACzBG,EAAM,IAAI,eACXA,EAAM,IAAI,aAAe,CAAA,GAE7B,IAAIy4B,EAAc,CAAA,EAIdC,EAAUhnB,EAAI,MAAM,KAAK,EACzBinB,EAAc,CAAA,EACdC,EAAe/4B,EAAI,cAAc64B,EAAQ,CAAC,EAAGF,CAAc,EAC/DC,EAAY,KAAKG,CAAY,EACzBA,EAAa,QACbD,EAAYC,EAAa,OAAO,EAAIA,EAAa,KAEjDD,EAAYC,EAAa,IAAI,EAAIA,EAAa,KAElD,QAAS14B,EAAE,EAAEC,EAAKu4B,EAAQ,OAAOx4B,EAAEC,EAAKD,GAAG,EAAG,CAC1C,IAAI24B,EAAgBh5B,EAAI,cAAc64B,EAAQx4B,CAAC,EAAGs4B,CAAc,EAChEC,EAAY,KAAKI,CAAa,EAC1BA,EAAc,QACdF,EAAYE,EAAc,OAAO,EAAID,EAAa,KAElDD,EAAYE,EAAc,IAAI,EAAID,EAAa,IACnD,CAGJ54B,EAAMA,EAAM,MAAM,IAAI,EAAE,IAAI,aAAa,KAAK24B,CAAW,EACzD34B,EAAM,IAAI,aAAa,KAAKy4B,CAAW,CAAA,CAE3Cz4B,EAAM,IAAI,kBAAoB,EAAA,KAC3B,CAIHC,EAAMyR,EAAI,MAAM,KAAK,EAGrB,IAAIonB,EAAe,CAAA,EACnB,IAAK54B,EAAI,EAAGC,EAAOF,EAAI,OAAQC,EAAIC,EAAMD,GAAK,EAE1CI,EAAOL,EAAIC,CAAC,EAGZoQ,EAAWzQ,EAAI,cAAcS,EAAMk4B,CAAc,EAC7Cv4B,EAAIC,CAAC,EAAE,SAAW,GAElB44B,EAAa,KAAKxoB,EAAS,IAAI,EAInCtQ,EAAM,gBAAgBsQ,EAAU,EAAI,EAGpCrQ,EAAIC,CAAC,EAAIoQ,EAGb,IAAIgd,EAAcrtB,EAAI,MAAA,EAIlB+2B,EAAW,SAAU1J,EAAakL,EAAeM,EAAc,CAC/D,OAAO,SAAU/3B,EAAM,CACnB,IAAIqE,EAEJA,EAAM,GACN,IAAIkL,EAAW,GAEXhQ,EAOJ,IANKS,EAAK,SAGNT,EAAOS,EAAK,SAFZT,EAAOk4B,EAIXloB,EAAWzQ,EAAI,cAAcS,EAAMk4B,CAAc,EAC5Ct4B,EAAI,EAAGC,EAAOmtB,EAAY,OAAQptB,EAAIC,EAAMD,GAAK,EAClD,GAAIoQ,EAAS,OAASgd,EAAYptB,CAAC,EAAE,KAAM,CACvCF,EAAM,IAAI,2BAA2B,KAAKA,EAAM,IAAI,iBAAiB,EACrEA,EAAM,IAAI,uBAAuB,KAAKA,EAAM,IAAI,IAAI,EACpDA,EAAM,IAAI,KAAOstB,EAAY,CAAC,EAAE,KAChCloB,EAAM,GACN,KAAA,CAGR,MAAI,CAACA,GAAO0zB,EAAa,QAAQxoB,EAAS,IAAI,EAAI,KAC9CtQ,EAAM,IAAI,2BAA2B,KAAKA,EAAM,IAAI,iBAAiB,EACrEA,EAAM,IAAI,uBAAuB,KAAKA,EAAM,IAAI,IAAI,EACpDA,EAAM,IAAI,KAAOstB,EAAY,CAAC,EAAE,KAChCloB,EAAM,IAEHA,CAAA,CACX,EAEJ,KAAK,MAAM,KAAK4xB,EAAS1J,EAAYkL,EAAeM,CAAY,CAAC,CAAA,CAEzE,EAEAj5B,EAAI,WAAW,4BAA4B,EAAI,SAAUG,EAAO,CACvD,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAC/B,IAAIg3B,EAAW,UAAY,CACvB,OAAO,UAAW,CACd,MAAO,CAACh3B,EAAM,IAAI,iBAAA,CACtB,EAGJ,KAAK,MAAM,KAAKg3B,EAAW,CAAC,CAChC,EAEAn3B,EAAI,WAAW,kBAAkB,EAAI,SAAUG,EAAO0R,EAAK,CAClD,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAC/B,IAAIpB,EAAUhQ,EAAML,EAAKC,EAAGC,EAQxB,IAJAF,EAAMyR,EAAI,MAAM,KAAK,EAGrB,KAAK,aAAe,CAAA,EACfxR,EAAI,EAAGC,EAAOF,EAAI,OAAQC,EAAIC,EAAMD,GAAK,EAE1CI,EAAOL,EAAIC,CAAC,EAGZoQ,EAAWzQ,EAAI,cAAcS,EAAMN,EAAM,IAAI,gBAAgB,EAAE,CAAC,CAAC,EAC7DC,EAAIC,CAAC,EAAE,SAAW,GAElB,KAAK,aAAa,KAAKoQ,EAAS,IAAI,EAGxCtQ,EAAM,gBAAgBsQ,CAAQ,EAG9BrQ,EAAIC,CAAC,EAAIoQ,EAGb,KAAK,eAAiBtQ,EAAM,IAAI,gBAAgB,EAAE,CAAC,EAEnD,KAAK,OAASC,EAAI,CAAC,EAAE,KAErB,KAAK,YAAcA,EAAI,MAAA,EAIvB,IAAI+2B,EAAW,SAAUxsB,EAAI,CACzB,OAAO,SAAUzJ,EAAM,CACnB,IAASqE,EAETA,EAAM,GACN,IAAIkL,EAAW,GAQf,GAPIvP,EAAK,WACLT,EAAOS,EAAK,SACZuP,EAAWzQ,EAAI,cAAcS,EAAMN,EAAM,IAAI,gBAAgB,EAAE,CAAC,CAAC,EAC7DsQ,EAAS,OAAStQ,EAAM,IAAI,gBAAgB,EAAE,CAAC,IAC/CsQ,EAAW,KAGfA,EAAU,CAOV,IAAKpQ,EAAI,EAAGC,EAAOqK,EAAG,YAAY,OAAQtK,EAAIC,EAAMD,GAAK,EACrD,GAAIoQ,EAAS,OAAS9F,EAAG,YAAYtK,CAAC,EAAE,KAAM,CAC1CF,EAAM,IAAI,KAAOwK,EAAG,OACpBxK,EAAM,IAAI,iBAAmBwK,EAAG,OAEhCxK,EAAM,OAAO,UAAU,OAAO,EAC9BA,EAAM,OAAO,QAAQ,MAAA,EAAQ,WAAawK,EAAG,OAC7CpF,EAAM,GACN,KAAA,CAGJ,CAACA,GAAOoF,EAAG,aAAa,QAAQ8F,EAAS,IAAI,EAAI,KACjDtQ,EAAM,IAAI,KAAOwK,EAAG,OACpBxK,EAAM,IAAI,iBAAmBwK,EAAG,OAEhCxK,EAAM,OAAO,UAAU,OAAO,EAC9BA,EAAM,OAAO,QAAQ,MAAA,EAAQ,WAAawK,EAAG,OAC7CpF,EAAM,GACV,CAEJ,OAAOA,CAAA,CACX,EAEAoF,EAAK,KACT,KAAK,MAAM,KAAKwsB,EAASxsB,CAAE,CAAC,CACpC,EAGA3K,EAAI,WAAW,cAAc,EAAI,SAAUG,EAAO0R,EAAK,CAC9C,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAY/B,QAXCqnB,EAAarnB,EAAI,MAAM,KAAK,EACzBslB,EAAW,SAAUgC,EAAU,CAC/B,OAAO,SAASj4B,EAAM,CAClB,IAAIwD,EAAM1E,EAAI,gBAAgBG,EAAOe,CAAI,EACzC,OAAIwD,IAAQy0B,CAIZ,CACJ,EAEK94B,EAAE,EAAEC,EAAK44B,EAAW,OAAQ74B,EAAEC,EAAMD,IACzC,KAAK,MAAM,KAAK82B,EAAS+B,EAAW74B,CAAC,CAAC,CAAC,CAE/C,EAEAL,EAAI,WAAW,qBAAqB,EAAI,SAAUG,EAAO0R,EAAK,CACrD,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAClC,IAAIunB,EAAoBvnB,IAAX,OACNslB,EAAW,SAAUiC,EAAQ,CAC7B,OAAO,SAASl4B,EAAM,CAClB,GAAKf,EAAM,IAAI,qBAAqBe,EAAK,YAAY,MAE1Cf,EAAM,IAAI,qBAAqBe,EAAK,YAAY,EAAI,EAC3D,OAAOk4B,MAFP,OAAO,CAACA,EAIZ,MAAO,CAACA,CAAA,CACZ,EAEJ,KAAK,MAAM,KAAKjC,EAASiC,CAAM,CAAC,CACpC,EAEAp5B,EAAI,WAAW,uBAAuB,EAAI,SAAUG,EAAO0R,EAAK,CACvD,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAClC,IAAIunB,EAAoBvnB,IAAX,OACNslB,EAAW,SAAUiC,EAAQ,CAC7B,OAAO,SAASl4B,EAAM,CAClB,OAAIf,EAAM,IAAI,mBAAmBe,EAAK,YAAY,EAAI,EAC3Ck4B,EAEJ,CAACA,CAAA,CACZ,EAEJ,KAAK,MAAM,KAAKjC,EAASiC,CAAM,CAAC,CACpC,EAEAp5B,EAAI,WAAW,cAAc,EAAI,SAAUG,EAAO0R,EAAK,CAC9C,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAC/B,IAAIslB,EAAW,SAASkC,EAAS,CAC7B,OAAO,SAAUn4B,EAAM,CACnB,IAAIo4B,EAAgB,EACpB,QAASj5B,KAAKa,EAAKm4B,CAAO,EAAG,CACzB,IAAIt3B,EAAOb,EAAKm4B,CAAO,EAAEh5B,CAAC,EAC1B,GAAI,CAAC0B,EAAK,MAAO,CACb,IAAIkF,EAAclF,EAAK,QAAUA,EAAK,QAAUA,EAAK,OACjDw3B,EAAStyB,EAAY,MAAM,GAAG,EAAE,QAChCqyB,IAAkB,GAAKC,EAASD,KAChCA,EAAgBC,EACpB,CACJ,CAEJ,OAAQD,EAAgB,CAAA,CAC5B,EAEJ,KAAK,MAAM,KAAKnC,EAAStlB,CAAG,CAAC,CACjC,EAEA7R,EAAI,WAAW,YAAY,EAAI,SAAUG,EAAO0R,EAAK,CAC5C,KAAK,QAAQ,KAAK,MAAQ,CAAA,GAC/B,IAAIslB,EAAW,SAASqC,EAAU,CAC9B,OAAO,SAAUt4B,EAAM,CACnB,OAAIA,EAAK,WAAW,IAAMs4B,CAGnB,CACX,EAEJ,KAAK,MAAM,KAAKrC,EAAStlB,CAAG,CAAC,CACjC,EAEA7R,EAAI,WAAW,qCAAqC,EAAI,SAAUG,EAAO0R,EAAK,CAC7E1R,EAAM,IAAI,mCAAqC0R,EAAI,MAAM,KAAK,CAC/D,EAEA7R,EAAI,WAAW,yBAAyB,EAAI,SAAUG,EAAO0R,EAAK,CAC9D7R,EAAI,WAAW,mBAAmB,EAAEG,EAAO0R,CAAG,EAC9C,IAAIoC,EAAOpC,EAAI,MAAM,KAAK,EAC1B1R,EAAM,aAAa,IAAI,uBAAyB8T,CACpD,EAEAjU,EAAI,WAAW,mBAAmB,EAAI,SAAUG,EAAO0R,EAAK,CACxD,IAAIoC,EAAOpC,EAAI,MAAM,KAAK,EACrB1R,EAAM,aAAa,IAAI,wBACxBA,EAAM,aAAa,IAAI,sBAAwB,CAAA,GAE9CA,EAAM,aAAa,IAAI,yBACxBA,EAAM,aAAa,IAAI,uBAAyB,CAAA,GAEpDA,EAAM,aAAa,IAAI,sBAAwBA,EAAM,aAAa,IAAI,sBAAsB,OAAO8T,CAAI,CAC3G,EAIAjU,EAAI,WAAW,iBAAiB,EAAI,SAAUG,EAAO0R,EAAK,CACtD1R,EAAM,IAAI,SAAS,OAAS,GAC5B,IAAIs5B,EAAO5nB,EAAI,MAAM,KAAK,EACrB1R,EAAM,IAAI,eACXA,EAAM,IAAI,aAAe,CAAA,GAE7B,KAAK,eAAiB,CAAA,EACtB,QAASE,KAAKo5B,EAAM,CAChB,IAAIvL,EAAIuL,EAAKp5B,CAAC,EACd,KAAK,eAAe6tB,CAAC,EAAI,GACzB/tB,EAAM,IAAI,aAAa+tB,CAAC,EAAI,EAAA,CAEpC,EACAluB,EAAI,WAAW,gBAAgB,EAAI,SAAUG,EAAO0R,EAAK,CACrD1R,EAAM,IAAI,SAAS,OAAS,GAC5B,IAAIs5B,EAAO5nB,EAAI,MAAM,KAAK,EACrB1R,EAAM,IAAI,eACXA,EAAM,IAAI,aAAe,CAAA,GAE7B,KAAK,cAAgB,CAAA,EACrB,QAASE,KAAKo5B,EAAM,CAChB,IAAIvL,EAAIuL,EAAKp5B,CAAC,EACd,KAAK,cAAc6tB,CAAC,EAAI,GACxB/tB,EAAM,IAAI,aAAa+tB,CAAC,EAAI,EAAA,CAEpC,EACAluB,EAAI,WAAW,yBAAyB,EAAI,SAAUG,EAAO0R,EAAK,CAC9D1R,EAAM,IAAI,SAAS,OAAS,GAC5B,IAAIs5B,EAAO5nB,EAAI,MAAM,KAAK,EAC1B,KAAK,uBAAyB,CAAA,EAC9B,QAASxR,EAAE,EAAEC,EAAKm5B,EAAK,OAAOp5B,EAAEC,EAAKD,IACjC,KAAK,uBAAuBo5B,EAAKp5B,CAAC,CAAC,EAAI,EAE/C,EACAL,EAAI,WAAW,8BAA8B,EAAI,SAAUG,EAAO0R,EAAK,CACnE1R,EAAM,IAAI,SAAS,OAAS,GAC5B,KAAK,QAAQ,gCAAkC0R,CACnD,EACA7R,EAAI,WAAW,0CAA0C,EAAI,SAAUG,EAAO0R,EAAK,CAC/E1R,EAAM,IAAI,SAAS,OAAS,GAC5B,KAAK,QAAQ,4CAA8C0R,CAC/D,EACA7R,EAAI,WAAW,YAAY,EAAI,SAAUG,EAAO0R,EAAK,CACjD1R,EAAM,IAAI,SAAS,OAAS,GAC5B,IAAIs5B,EAAO5nB,EAAI,MAAM,KAAK,EACrB1R,EAAM,IAAI,eACXA,EAAM,IAAI,aAAe,CAAA,GAE7B,KAAK,aAAe,CAAA,EACpB,QAASE,KAAKo5B,EAAM,CAChB,IAAIvL,EAAIuL,EAAKp5B,CAAC,EACd,KAAK,aAAa6tB,CAAC,EAAI,GACvB/tB,EAAM,IAAI,aAAa+tB,CAAC,EAAI,EAAA,CAEpC,EAEAluB,EAAI,WAAW,UAAU,EAAI,SAAUG,EAAO0R,EAAK,CAC/C1R,EAAM,IAAI,sBAAwB,GAClC,KAAK,QAAQ,QAAU0R,CAU3B,EAEA7R,EAAI,WAAW,SAAS,EAAI,SAAUG,EAAO0R,EAAK,CAC9C1R,EAAM,IAAI,sBAAwB,GAClC,KAAK,QAAQ,OAAS0R,CAU1B,EAEA7R,EAAI,WAAW,0BAA0B,EAAI,SAAUG,EAAO0R,EAAK,CAC/D1R,EAAM,IAAI,wBAA0B0R,CACxC,EAEA7R,EAAI,WAAW,SAAS,EAAI,SAAUG,EAAO0R,EAAK,CAC9C,KAAK,OAASA,CAClB,EAEA7R,EAAI,WAAW,QAAQ,EAAI,SAAUG,EAAO0R,EAAK,CAW7C,KAAK,MAAQ,SAASA,EAAK,EAAE,CACjC,EAEA7R,EAAI,WAAW,sBAAsB,EAAI,SAAUG,EAAO0R,EAAK,CAC3D,KAAK,QAAQ,6BAA+BA,CAChD,EAEA7R,EAAI,WAAW,4BAA4B,EAAI,SAAUG,EAAO0R,EAAK,CACjE,KAAK,QAAQ,mCAAqCA,CACtD,EAEA7R,EAAI,WAAW,aAAa,EAAI,SAAUG,EAAO0R,EAAK,CAClD,KAAK,QAAQ,oBAAsBA,CACvC,EAEA7R,EAAI,WAAW,iBAAiB,EAAI,SAAUG,EAAO0R,EAAK,CACtD,KAAK,QAAQ,gBAAgB,EAAIA,CACrC,EAEA7R,EAAI,WAAW,sBAAsB,EAAI,SAAUG,EAAO0R,EAAK,CAC3D,KAAK,qBAAqB,EAAIA,CAClC,EAEA7R,EAAI,WAAW,mBAAmB,EAAI,SAAUG,EAAO0R,EAAK,CACxD,KAAK,kBAAkB,EAAIA,CAC/B,EAEA7R,EAAI,WAAW,QAAQ,EAAI,SAAUG,EAAO0R,EAAK,CAC7C1R,EAAM,IAAI,MAAW0R,CACzB,EAEA7R,EAAI,WAAW,UAAU,EAAI,SAAUG,EAAO0R,EAAK,CAC/C1R,EAAM,IAAI,QAAU0R,CACxB,EAOA7R,EAAI,WAAW,QAAQ,EAAI,SAAUG,EAAO0R,EAAK,CAC7C,KAAK,QAAQ,MAAQA,CACzB,EAWA7R,EAAI,WAAW,OAAO,EAAI,SAAUG,EAAO0R,EAAK,CAC5C,KAAK,QAAQ,KAAOA,CACxB,EASA7R,EAAI,WAAW,OAAO,EAAI,SAAUG,EAAO0R,EAAK,CAC5C,KAAK,QAAQ,KAAOA,CACxB,EAEA7R,EAAI,WAAW,aAAa,EAAI,SAAUG,EAAO0R,EAAK,CAClD,KAAK,QAAQ,YAAY,EAAIA,CACjC,EAEA7R,EAAI,WAAW,kBAAkB,EAAI,SAAUG,EAAO0R,EAAK,CACvD,KAAK,QAAQ,iBAAiB,EAAIA,CACtC,EASA7R,EAAI,WAAW,QAAQ,EAAI,SAAUG,EAAO0R,EAAK,CAC7C,KAAK,gBAAkBA,CAC3B,EAQA7R,EAAI,WAAW,OAAO,EAAI,SAAUG,EAAO0R,EAAK,CACxCA,IAAQ,YACR,KAAK,QAAQ,KAAO,YAEpB,KAAK,QAAQ,KAAOA,CAE5B,EAWA7R,EAAI,WAAW,QAAQ,EAAI,UAAY,CAAC,EAUxCA,EAAI,WAAW,OAAO,EAAI,SAAUG,EAAO0R,EAAK,CACxCA,IACA1R,EAAM,MAAM,KAAO0R,EAE3B,EAIA7R,EAAI,WAAW,QAAQ,EAAI,UAAY,CAAC,EAGxCA,EAAI,WAAW,iBAAiB,EAAI,UAAY,CAC5C,KAAK,gBAAgB,EAAI,EAC7B,EAOAA,EAAI,WAAW,SAAS,EAAI,SAAUG,EAAO0R,EAAK,CAC9C,KAAK,QAAQ,OAASA,CAC1B,EAQA7R,EAAI,WAAW,SAAS,EAAI,SAAUG,EAAO0R,EAAK,CAC9C,KAAK,QAAQ,OAASA,CAC1B,EAQA7R,EAAI,WAAW,YAAY,EAAI,SAAUG,EAAO0R,EAAK,CACjD,KAAK,QAAQ,UAAYA,CAC7B,EAMA7R,EAAI,WAAW,QAAQ,EAAI,SAAUG,EAAO0R,EAAK,CAC7C,KAAK,MAAQA,CACjB,EAGA7R,EAAI,WAAW,YAAY,EAAI,SAAUG,EAAO0R,EAAK,CACjD,IAAI/P,EAAM,SAAS+P,EAAK,EAAE,EACtB1R,EAAMA,EAAM,MAAM,IAAI,EAAE,IAAI,oBAAsB2B,IAClD3B,EAAMA,EAAM,MAAM,IAAI,EAAE,IAAI,oBAAsB2B,GAEtD,KAAK,QAAQ,WAAW,EAAIA,CAChC,EAEA9B,EAAI,WAAW,kBAAkB,EAAI,SAAUG,EAAO0R,EAAK,CACvD,KAAK,QAAQ,iBAAiB,EAAI,SAASA,EAAK,EAAE,CACtD,EAEA7R,EAAI,WAAW,iBAAiB,EAAI,SAAUG,EAAO0R,EAAK,CAClDA,IAAQ,OACR,KAAK,QAAQ,gBAAgB,EAAI,GAEjC,KAAK,QAAQ,gBAAgB,EAAI,EAEzC,EAEA7R,EAAI,WAAW,OAAO,EAAI,SAAUG,EAAO0R,EAAK,CACxCA,IAAQ,eACR,KAAK,QAAQ,eAAiB7R,EAAI,WAE1C,EAEAA,EAAI,WAAW,SAAS,EAAI,SAAUG,EAAO0R,EAAK,CAG7BA,IAAb,UAA+BA,IAAX,OACpB,KAAK,QAAQ,OAAS,EACHA,IAAZ,SAA+BA,IAAZ,QAC1B,KAAK,QAAQ,OAAS,EACEA,IAAjB,eACP,KAAK,QAAQ,OAAS,GAE9B,EAEA7R,EAAI,WAAW,oCAAoC,EAAI,UAAY,CAC/D,KAAK,QAAQ,mCAAmC,EAAI,EACxD,EAEAA,EAAI,WAAW,oCAAoC,EAAI,SAAUG,EAAO0R,EAAK,CACzE,KAAK,QAAQ,mCAAmC,EAAIA,CACxD,EAEA7R,EAAI,WAAW,sBAAsB,EAAI,SAAUG,EAAO0R,EAAK,CAC3D,KAAK,QAAQ,qBAAqB,EAAIA,CAC1C,EAEA7R,EAAI,WAAW,gBAAgB,EAAI,SAAUG,EAAO0R,EAAK,CACrD,KAAK,QAAQ,eAAe,EAAIA,CACpC,EAEA7R,EAAI,WAAW,gCAAgC,EAAI,SAAUG,EAAO0R,EAAK,CACjE7R,EAAI,+BAA+B,QAAQ6R,CAAG,EAAI,KAClD1R,EAAM,SAAS,IAAI,+BAA+B,EAAI0R,EAE9D,EAEA7R,EAAI,WAAW,WAAW,EAAI,SAAUG,EAAO0R,EAAK,CAE5CA,IACA1R,EAAM,KAAK,IAAI,EAAE,IAAI,SAAW0R,EAExC,EAEA7R,EAAI,WAAW,uBAAuB,EAAI,SAAUG,EAAO0R,EAAK,CACxDA,IACA1R,EAAMA,EAAM,IAAI,IAAI,EAAE,IAAI,qBAAuB0R,EAEzD,EAIA7R,EAAI,WAAW,kBAAkB,EAAI,SAAUG,EAAO0R,EAAK,CACvD1R,EAAM,OAAO,KAAM,kBAAmB0R,CAAG,CAC7C,EAEA7R,EAAI,WAAW,YAAY,EAAI,SAAUG,EAAO0R,EAAK,CACjD1R,EAAM,OAAO,KAAM,YAAa0R,CAAG,CACvC,EAEA7R,EAAI,WAAW,qBAAqB,EAAI,SAAUG,EAAO0R,EAAK,CAC1D,KAAK,QAAQ,oBAAoB,EAAIA,CACzC,EAEA7R,EAAI,WAAW,mCAAmC,EAAI,SAAUG,EAAO0R,EAAK,CACxE,KAAK,QAAQ,kCAAkC,EAAIA,CACvD,EAGA7R,EAAI,WAAW,iBAAiB,EAAI,SAAUG,EAAO0R,EAAK,CACtD1R,EAAM,OAAO,KAAM,iBAAkB0R,CAAG,CAC5C,EAEA7R,EAAI,WAAW,YAAY,EAAI,SAAUG,EAAO0R,EAAK,CACjD,IAAI/P,EAAM,SAAS+P,EAAK,EAAE,EACtB1R,EAAMA,EAAM,MAAM,IAAI,EAAE,IAAI,oBAAsB2B,IAClD3B,EAAMA,EAAM,MAAM,IAAI,EAAE,IAAI,oBAAsB2B,GAEtD3B,EAAM,OAAO,KAAM,YAAa2B,CAAG,CACvC,EAEA9B,EAAI,WAAW,kBAAkB,EAAI,SAAUG,EAAO0R,EAAK,CACvD1R,EAAM,OAAO,KAAM,kBAAmB,SAAS0R,EAAK,EAAE,CAAC,CAC3D,EAEA7R,EAAI,WAAW,iBAAiB,EAAI,SAAUG,EAAO0R,EAAK,CAClDA,IAAQ,OACR1R,EAAM,OAAO,KAAM,iBAAkB,EAAI,EAEzCA,EAAM,OAAO,KAAM,iBAAkB,EAAK,CAElD,EAEAH,EAAI,WAAW,uBAAuB,EAAI,SAAUG,EAAO0R,EAAK,CAC5D,IAAI/P,EAAM,SAAS+P,EAAK,EAAE,EACtB1R,EAAMA,EAAM,MAAM,IAAI,EAAE,IAAI,oBAAsB2B,IAClD3B,EAAMA,EAAM,MAAM,IAAI,EAAE,IAAI,oBAAsB2B,GAEtD3B,EAAM,OAAO,KAAM,uBAAwB2B,CAAG,CAClD,EAEA9B,EAAI,WAAW,6BAA6B,EAAI,SAAUG,EAAO0R,EAAK,CAClE1R,EAAM,OAAO,KAAM,6BAA8B,SAAS0R,EAAK,EAAE,CAAC,CACtE,EAEA7R,EAAI,WAAW,eAAe,EAAI,SAAUG,EAAO0R,EAAK,CACpD,KAAK,QAAQ,cAAc,EAAI,SAASA,EAAK,EAAE,CACnD,EAEA7R,EAAI,WAAW,eAAe,EAAI,SAAUG,EAAO0R,EAAK,CACpD,KAAK,QAAQ,cAAc,EAAI,SAASA,EAAK,EAAE,CACnD,EAGA7R,EAAI,WAAW,MAAM,EAAI,SAAUG,EAAO0R,EAAK,CAC3C1R,EAAM,OAAO,KAAM,MAAO0R,CAAG,CACjC,EAEA7R,EAAI,WAAW,0BAA0B,EAAI,SAAUG,EAAO0R,EAAK,CAC/D1R,EAAM,OAAO,KAAM,0BAA2B0R,CAAG,CACrD,EAEA7R,EAAI,WAAW,2BAA2B,EAAI,SAAUG,EAAO0R,EAAK,CAChE1R,EAAM,OAAO,KAAM,2BAA4B0R,CAAG,CACtD,EAEA7R,EAAI,WAAW,kBAAkB,EAAI,SAAUG,EAAO0R,EAAK,CACvD1R,EAAM,OAAO,KAAM,kBAAmB0R,CAAG,CAC7C,EAEA7R,EAAI,WAAW,aAAa,EAAI,SAAUG,EAAO0R,EAAK,CAC9CA,IAAQ,SACR1R,EAAM,OAAO,KAAM,aAAc,EAAK,CAE9C,EAEAH,EAAI,WAAW,wBAAwB,EAAI,SAAUG,EAAO0R,EAAK,CAC7D,KAAK,uBAAuB,EAAIA,CACpC,EAEA7R,EAAI,WAAW,qBAAqB,EAAI,SAAUG,EAAO0R,EAAK,CACtD,KAAK,OAAS,gBACd,KAAK,oBAAoB,EAAIA,EAE7B1R,EAAM,OAAO,KAAM,qBAAsB0R,CAAG,CAEpD,EAEA7R,EAAI,WAAW,iBAAiB,EAAI,SAAUG,EAAO0R,EAAK,CACtD1R,EAAM,OAAO,KAAM,iBAAkB0R,CAAG,CAC5C,EAEA7R,EAAI,WAAW,gBAAgB,EAAI,SAAUG,EAAO0R,EAAK,CACjDA,IAAQ,SACR,KAAK,aAAe,GAE5B,EAEA7R,EAAI,WAAW,gBAAgB,EAAI,SAAUG,EAAO0R,EAAK,CACrD1R,EAAM,aAAa,IAAI,cAAgB0R,EAAI,MAAM,KAAK,CAC1D,EAEA7R,EAAI,WAAW,sBAAsB,EAAI,SAAUG,EAAO0R,EAAK,CAC3D1R,EAAM,aAAa,IAAI,oBAAsB0R,EAAI,MAAM,KAAK,CAChE,EAGA7R,EAAI,WAAW,wBAAwB,EAAI,SAAUG,EAAO0R,EAAK,CAC7D1R,EAAM,KAAK,IAAI,EAAE,IAAI,uBAAuB,EAAI0R,CACpD,EAEA7R,EAAI,WAAW,2BAA2B,EAAI,SAAUG,EAAO0R,EAAK,CAChE1R,EAAM,KAAK,IAAI,EAAE,IAAI,0BAA0B,EAAI0R,CACvD,EAEA7R,EAAI,WAAW,+BAA+B,EAAI,SAAUG,EAAO0R,EAAK,CACpE1R,EAAM,KAAK,IAAI,EAAE,IAAI,8BAA8B,EAAI0R,CAC3D,EAEA7R,EAAI,WAAW,oCAAoC,EAAI,SAAUG,EAAO0R,EAAK,CACzE1R,EAAM,KAAK,IAAI,EAAE,IAAI,mCAAmC,EAAI0R,CAChE,EAEA7R,EAAI,WAAW,yBAAyB,EAAI,SAAUG,EAAO0R,EAAK,CAC1DA,IAAQ,SACR1R,EAAM,IAAI,wBAAwB,EAAI,GAE9C,EAEAH,EAAI,WAAW,6BAA6B,EAAI,SAAUG,EAAO0R,EAAK,CAC9DA,IAAQ,SACR1R,EAAM,IAAI,4BAA4B,EAAI,GAElD,EAEAH,EAAI,WAAW,+BAA+B,EAAI,SAAUG,EAAO0R,EAAK,CAChEA,IAAQ,QAAU1R,EAAM,IAAI,SAAW,YACvCA,EAAM,IAAI,8BAA8B,EAAI,GAEpD,EAGAH,EAAI,WAAW,qBAAqB,EAAI,SAAUG,EAAO0R,EAAK,EACtDA,IAAQ,SAAWA,IAAQ,YAC3B1R,EAAM,KAAK,IAAI,EAAE,IAAI,oBAAoB,EAAI0R,EAErD,EAGA7R,EAAI,WAAW,iBAAiB,EAAI,SAAUG,EAAO0R,EAAK,CAClDA,IAAQ,SACJ1R,EAAM,IAAI,uBAAuB,6BACjCA,EAAM,KAAK,IAAI,EAAE,IAAI,cAAgB,EAErCA,EAAM,KAAK,IAAI,EAAE,IAAI,cAAgB,GAGjD,EAGAH,EAAI,WAAW,eAAe,EAAI,SAAUG,EAAO0R,EAAK,CAChDA,GAAOA,EAAI,MAAM,WAAW,IAC5B1R,EAAM,KAAK,IAAI,EAAE,IAAI,cAAc,EAAI,WAAW0R,EAAK,EAAE,EAEjE,EAGA7R,EAAI,WAAW,gBAAgB,EAAI,SAAUG,EAAO0R,EAAK,CACjDA,GAAOA,EAAI,MAAM,WAAW,IAC5B1R,EAAM,KAAK,IAAI,EAAE,IAAI,eAAe,EAAI,WAAW0R,EAAK,EAAE,EAElE,EAGA7R,EAAI,WAAW,qBAAqB,EAAI,SAAUG,EAAO0R,EAAK,CAC1D1R,EAAM,KAAK,IAAI,EAAE,IAAI,oBAAoB,EAAI,SAAS0R,EAAK,EAAE,CACjE,EAEA7R,EAAI,WAAW,YAAY,EAAI,SAAUG,EAAO0R,EAAK,CACjD,KAAK,UAAY,SAASA,EAAK,EAAE,CACrC,EAEA7R,EAAI,WAAW,YAAY,EAAI,SAAUG,EAAO0R,EAAK,CACjD,IAAIzF,EAAO,SAAUjM,EAAOe,EAAM,CAC1B2Q,IAAQ,SACR,KAAK,iBAAmB,IAExB,KAAK,QAAQ,WAAW,EAAIA,EACxBA,IAAQ,SACJ3Q,EAAK,eACL,KAAK,QAAQ,WAAW,EAAI,eAGxC,EAEJ,KAAK,MAAM,KAAKkL,CAAI,CACxB,EAGApM,EAAI,WAAW,oBAAoB,EAAI,SAAUG,EAAO0R,EAAK,CACzD1R,EAAM,IAAI,mBAAmB,EAAI0R,CACrC,EAGA7R,EAAI,WAAW,oBAAoB,EAAI,SAAUG,EAAO0R,EAAK,CACzD1R,EAAM,IAAI,mBAAmB,EAAI0R,CACrC,EAGA7R,EAAI,WAAW,iBAAiB,EAAI,SAAUG,EAAO0R,EAAK,CACtD,GAAI,KAAK,OAAS,QAAS,CACvB,IAAIzR,EAAK6E,EAAKD,EAAK/D,EAAGV,EAKlBU,EAAI4Q,EAAI,MAAM,+BAA+B,EACjD,GAAI5Q,EACA,IAAK+D,EAAM,EAAGC,EAAMhE,EAAE,OAAQ+D,EAAMC,EAAKD,GAAO,EAC5C/D,EAAE+D,CAAG,EAAI/D,EAAE+D,CAAG,EAAE,QAAQ,OAAQ,EAAE,EAAE,QAAQ,KAAM,EAAE,EAK5D,IAFA5E,EAAMyR,EAAI,MAAM,gCAAgC,EAChDtR,EAAM,CAACH,EAAI,CAAC,CAAC,EACR4E,EAAM,EAAGC,EAAM7E,EAAI,OAAQ4E,EAAMC,EAAKD,GAAO,EAC9CzE,EAAI,KAAKU,EAAE+D,EAAM,CAAC,CAAC,EACnBzE,EAAI,KAAKH,EAAI4E,CAAG,CAAC,EAIrB,IAFA5E,EAAMG,EAAI,MAAA,EACV0E,EAAM7E,EAAI,OACL4E,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAC5B7E,EAAM,IAAK,UAAYC,EAAI4E,CAAG,CAAE,EAAE,KAAK5E,EAAK4E,EAAM,CAAE,EAAE,QAAQ,QAAS,EAAE,EAAE,QAAQ,QAAS,EAAE,CAAC,EAE/F5E,EAAI,OACJD,EAAM,IAAI,gBAAgB,EAAIC,EAAI,MAAM,EAAG,CAAC,EAE5CD,EAAM,IAAI,gBAAgB,EAAI,CAAC,IAAI,CACvC,MACO0R,IAAQ,SACf,KAAK,eAAiB,GAE9B,EAEA7R,EAAI,WAAW,sBAAsB,EAAI,SAAUG,EAAO0R,EAAK,CAC3D1R,EAAM,IAAI,qBAAqB,EAAI0R,CACvC,EAEA7R,EAAI,WAAW,+BAA+B,EAAI,SAAUG,EAAO0R,EAAK,CACpE1R,EAAM,IAAI,8BAA8B,EAAI0R,CAChD,EAEA7R,EAAI,WAAW,yBAAyB,EAAI,SAAUG,EAAO0R,EAAK,CAC1DA,IAAQ,UACR1R,EAAM,IAAI,wBAAwB,EAAI,GAE9C,EAEAH,EAAI,WAAW,oBAAoB,EAAI,SAAUG,EAAO0R,EAAK,CACzD,KAAK,QAAQ,mBAAmB,EAAIA,CACxC,EAEA7R,EAAI,WAAW,WAAW,EAAI,SAAUG,EAAO0R,EAAK,CAC5CA,IAAQ,SACR,KAAK,QAAQ,UAAU,EAAI,GAEnC,EAEA7R,EAAI,WAAW,uBAAuB,EAAI,SAAUG,EAAO0R,EAAK,CAC5D,KAAK,QAAQ,sBAAsB,EAAI,SAASA,EAAK,EAAE,CAC3D,EAEA7R,EAAI,WAAW,YAAY,EAAI,SAAUG,EAAO0R,EAAK,CACjD,KAAK,QAAQ,WAAW,EAAI,SAASA,EAAK,EAAE,CAChD,EAEA7R,EAAI,WAAW,WAAW,EAAI,SAAUG,EAAO0R,EAAK,CAChD,KAAK,QAAQ,UAAU,EAAI,SAASA,EAAK,EAAE,CAC/C,EAEA7R,EAAI,WAAW,aAAa,EAAI,SAAUG,EAAO0R,EAAK,CAClD,KAAK,QAAQ,YAAY,EAAI,SAASA,EAAK,EAAE,CACjD,EAEA7R,EAAI,WAAW,YAAY,EAAI,SAAUG,EAAO0R,EAAK,CACjD,KAAK,QAAQ,WAAW,EAAI,SAASA,EAAK,EAAE,EAAI,EACpD,EAGA7R,EAAI,WAAW,gBAAgB,EAAI,SAAUG,EAAO0R,EAAK,CACtCA,IAAX,SACA,KAAK,QAAQ,eAAe,EAAI,GAExC,EAEA7R,EAAI,WAAW,UAAU,EAAI,SAAUG,EAAO0R,EAAK,CAC3C1R,EAAM,aAAa,OAAO,SAAW,IACrCA,EAAM,IAAI,cAAgB,IAE9B,KAAK,QAAQ,IAAM0R,CACvB,EAcA7R,EAAI,MAAQ,SAAU8B,EAAK43B,EAAS,CAChC,KAAK,QAAU,CAAA,GACXA,GAAW53B,IACX,KAAK,QAAQ,KAAKA,CAAG,EAEzB,KAAK,IAAM,KAAK,QAAQ,CAAC,CAC7B,EAMA9B,EAAI,MAAM,UAAU,KAAO,SAAU8B,EAAK43B,EAAS,CAC3CA,GAAW53B,EACX,KAAK,QAAQ,KAAKA,CAAG,EAErB,KAAK,QAAQ,KAAK,EAAE,EAExB,KAAK,IAAM,KAAK,QAAQ,KAAK,QAAQ,OAAS,CAAC,CACnD,EAKA9B,EAAI,MAAM,UAAU,MAAQ,UAAY,CACpC,KAAK,QAAU,CAAA,EACf,KAAK,IAAM,CAAA,CACf,EAOAA,EAAI,MAAM,UAAU,QAAU,SAAU8B,EAAK43B,EAAS,CAI9C,KAAK,QAAQ,SAAW,GACxB15B,EAAI,MAAM,gFAAkF8B,CAAG,EAE/F43B,GAAW53B,EACX,KAAK,QAAS,KAAK,QAAQ,OAAS,CAAE,EAAIA,EAE1C,KAAK,QAAS,KAAK,QAAQ,OAAS,CAAE,EAAI,GAE9C,KAAK,IAAM,KAAK,QAAQ,KAAK,QAAQ,OAAS,CAAC,CACnD,EAOA9B,EAAI,MAAM,UAAU,IAAM,UAAY,CAClC,IAAIO,EAAM,KAAK,QAAQ,IAAA,EACvB,OAAI,KAAK,QAAQ,OACb,KAAK,IAAM,KAAK,QAAQ,KAAK,QAAQ,OAAS,CAAC,EAE/C,KAAK,IAAM,CAAA,EAERA,CACX,EAQAP,EAAI,MAAM,UAAU,MAAQ,UAAY,CACpC,OAAO,KAAK,QAAQ,MAAM,EAAE,EAAE,CAAC,CACnC,EAQAA,EAAI,MAAM,UAAU,OAAS,UAAY,CACrC,OAAO,KAAK,QAAQ,MACxB,EAOAA,EAAI,SAAW,SAAUG,EAAO,CAC5B,KAAK,MAAQA,CACjB,EAEAH,EAAI,SAAS,UAAU,cAAgB,SAAUqd,EAAasc,EAAK,CAG/D,GADA,KAAK,MAAM,IAAI,iBAAmB,CAAA,EAC9B,EAAAtc,EAAY,OAAS,GAKzB,SAJIuc,EAAS,EACTC,EAAoB,GACpBC,EAAgB,CAAA,EAEXz5B,EAAE,EAAEC,EAAK+c,EAAY,OAAO,EAAEhd,EAAEC,EAAKD,IAAK,CAC/C,IAAI05B,EAAW1c,EAAYhd,CAAC,EAAE,CAAC,EAC3B25B,EAAW3c,EAAYhd,EAAE,CAAC,EAAE,CAAC,EAC7B45B,EAAiB,GACjB1O,EAAO,CAAA,EACX,GAAIlO,EAAYhd,CAAC,EAAE,CAAC,EAAE,SAAWgd,EAAYhd,CAAC,EAAE,CAAC,EAAE,QAAQ,OAAS,GAAK,CAACw5B,EAAmB,CACzFI,EAAiB,GACjBJ,EAAoB,CAACxc,EAAYhd,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,OAAOgd,EAAYhd,CAAC,EAAE,CAAC,EAAE,OAAO,EAC3E,IAAI65B,EAAgBL,EAAkB,MAAA,EAClCM,EAAY9c,EAAY,MAAMhd,CAAC,EACnC85B,EAAU,CAAC,EAAE,CAAC,EAAE,SAAW,QAC3B,QAASt5B,EAAE,EAAEY,EAAK04B,EAAU,OAAOt5B,EAAEY,EAAKZ,IAAK,CAC3C,IAAIykB,EAAS6U,EAAUt5B,CAAC,EAAE,CAAC,EAAE,GACzBu5B,EAAQF,EAAc,QAAQ5U,CAAM,EAOxC,GANAsU,EAAS,GACLQ,IAAU,GACVR,EAAUv5B,EAAEQ,EAAE,EACNR,EAAEQ,IAAQwc,EAAY,OAAO,IACrCuc,EAAUv5B,EAAEQ,GAEZ+4B,EAAQ,CACRE,EAAc,KAAK,CAACz5B,EAAGu5B,CAAM,CAAC,EAC9B,KAAA,MAEAM,EAAgBA,EAAc,MAAM,EAAGE,CAAK,EAAE,OAAOF,EAAc,MAAME,EAAM,CAAC,CAAC,CACrF,CACJ,CAIA/5B,EAAI,GAAK45B,IACT,KAAK,MAAM,IAAI,iBAAiB55B,EAAE,CAAC,EAAE,MAAQ,GAC7C45B,EAAiB,IAErB,QAASnoB,KAAW,KAAK,MAAM,IAAI,aAC/B,GAAI,CAACioB,EAASjoB,CAAO,GAAK,CAACkoB,EAASloB,CAAO,EAEvCyZ,EAAKzZ,CAAO,EAAI,WACI,OAAOkoB,EAASloB,CAAO,GAApC,UAAsD,OAAOkoB,EAASloB,CAAO,GAApC,SAAuC,CAEvF,GAAIA,IAAY,SAAWioB,EAAS,aAAa,GAAKC,EAAS,aAAa,EACxE,IAAIK,EAAUN,EAAS,aAAa,EAChCO,EAAUN,EAAS,aAAa,MAEpC,KAAIK,EAAUN,EAASjoB,CAAO,EAC1BwoB,EAAUN,EAASloB,CAAO,EAE9BuoB,GAAWC,EACX/O,EAAKzZ,CAAO,EAAI,GAEhByZ,EAAKzZ,CAAO,EAAI,EACpB,SACuB,OAAOioB,EAASjoB,CAAO,EAAE,OAAzC,IAAiD,CAExDyZ,EAAKzZ,CAAO,EAAI,GAChB,IAAIyoB,EAAWR,EAASjoB,CAAO,EAAE,KAC7B0oB,EAAWR,EAASloB,CAAO,EAAE,KAC7ByoB,GAAYC,GACRD,GAAYC,IACZjP,EAAKzZ,CAAO,EAAI,GAExB,KACG,CAEH,IAAIuoB,EAAU,KAAK,UAAUN,EAASjoB,CAAO,CAAC,EAC1CwoB,EAAU,KAAK,UAAUN,EAASloB,CAAO,CAAC,EAC1CuoB,IAAYC,EACZ/O,EAAKzZ,CAAO,EAAI,GAEhByZ,EAAKzZ,CAAO,EAAI,EACpB,CAGH+nB,IACDtO,EAAK,OAAS,IAEdqO,IAAWv5B,IACXkrB,EAAK,IAAM,GACXsO,EAAoB,IAExB,KAAK,MAAM,IAAI,iBAAiB,KAAKtO,CAAI,CAAA,CAQ7C,QAAS1qB,EAAE,EAAEY,EAAKq4B,EAAc,OAAOj5B,EAAEY,EAAKZ,IAAK,CAC/C,IAAI45B,EAAWpd,EAAYyc,EAAcj5B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GACnD,KAAK,MAAM,SAAS,SAAS45B,CAAQ,EAAE,OAAS,GAChD,KAAK,MAAM,SAAS,SAASA,CAAQ,EAAE,SAAW,CAAA,EAGlD,QAFI93B,EAAQm3B,EAAcj5B,CAAC,EAAE,CAAC,EAC1B+B,EAAMk3B,EAAcj5B,CAAC,EAAE,CAAC,EACnBsG,EAAExE,EAAOwE,EAAEvE,EAAKuE,IAAK,CAC1B,KAAK,MAAM,IAAI,iBAAiBA,CAAC,EAAE,QAAU,GAC7C,IAAIuzB,EAAYrd,EAAYlW,EAAE,CAAC,EAAE,CAAC,EAAE,GACpCkW,EAAYlW,EAAE,CAAC,EAAE,CAAC,EAAE,SAAW,QAC/B,KAAK,MAAM,SAAS,SAASszB,CAAQ,EAAE,SAAS,KAAKC,CAAS,CAAA,CAClE,EAGR,EAEA16B,EAAI,SAAS,UAAU,aAAe,SAASgU,EAAQ,CACnD,IAAIjT,EAAM,KAAK,MAAM,IAAI,WACzB,GAAI,KAAK,MAAM,IAAI,iBAAkB,CACjC,GAAIiT,EAAO,gBAAkB,OAAO,KAAKA,EAAO,cAAc,EAAE,OAAS,EAAG,CACxE,IAAI9T,EAAM,CAAC,CAAA,CAAE,EAAE,OAAO,KAAK,MAAM,IAAI,gBAAgB,EACjDK,EAAM,GACV,QAASuR,KAAWkC,EAAO,gBACnB,CAAC9T,EAAIa,CAAG,EAAE+Q,CAAO,GAAK5R,EAAIa,CAAG,EAAE,SAG/BR,EAAM,IAGd,OAAOA,CAAA,CAEX,GAAIyT,EAAO,eAAiB,OAAO,KAAKA,EAAO,aAAa,EAAE,OAAS,EAAG,CACtE,IAAI9T,EAAM,KAAK,MAAM,IAAI,iBAAiB,OAAO,CAAC,CAAA,CAAE,CAAC,EACjDK,EAAM,OAAO,KAAKyT,EAAO,aAAa,EAAE,OAAS,EACrD,QAASlC,KAAWkC,EAAO,eACnB,CAAC9T,EAAIa,CAAG,EAAE+Q,CAAO,GAAK5R,EAAIa,CAAG,EAAE,OAE/BR,EAAM,IAGd,OAAOA,CAAA,CAEX,GAAIyT,EAAO,cAAgB,OAAO,KAAKA,EAAO,YAAY,EAAE,OAAS,EAAG,CACpE,IAAI9T,EAAM,CAAC,CAAA,CAAE,EAAE,OAAO,KAAK,MAAM,IAAI,gBAAgB,EACjDK,EAAM,GACV,QAASuR,KAAWkC,EAAO,aAClB9T,EAAIa,CAAG,EAAE+Q,CAAO,IACjBvR,EAAM,IAGd,OAAOA,CAAA,CACX,CAEJ,MAAO,EACX,EAKAP,EAAI,KAAO,CAAA,EAEXA,EAAI,KAAK,MAAQ,UAAY,CAEzB,KAAK,IAAM,SAAUgE,EAAO7D,EAAO23B,EAAO,CACtC,OAAO,SAAU52B,EAAMJ,EAAM,CACzB,QAAST,EAAE,EAAGC,EAAKw3B,EAAM,OAAQz3B,EAAIC,EAAMD,GAAK,EAAG,CAC/C,IAAIyL,EAASgsB,EAAMz3B,CAAC,EAAEa,EAAMJ,CAAI,EAChC,GAAIgL,EACA,MAAO,EACX,CAEJ,MAAO,EAAA,CACX,EAGJ,KAAK,KAAO,SAAU9H,EAAO7D,EAAO23B,EAAO,CACvC,OAAO,SAAU52B,EAAMJ,EAAM,CACzB,QAAST,EAAE,EAAEC,EAAKw3B,EAAM,OAAOz3B,EAAEC,EAAKD,GAAG,EAAG,CACxC,IAAIyL,EAASgsB,EAAMz3B,CAAC,EAAEa,EAAKJ,CAAI,EAC/B,GAAIgL,EACA,MAAO,EACX,CAEJ,MAAO,EAAA,CACX,EAGJ,KAAK,IAAM,SAAU9H,EAAO7D,EAAO23B,EAAO,CACtC,OAAO,SAAU52B,EAAMJ,EAAM,CACzB,QAAST,EAAE,EAAEC,EAAKw3B,EAAM,OAAOz3B,EAAEC,EAAKD,GAAG,EAAG,CACxC,IAAIyL,EAASgsB,EAAMz3B,CAAC,EAAEa,EAAKJ,CAAI,EAC/B,GAAI,CAACgL,EACD,MAAO,EACX,CAEJ,MAAO,EAAA,CACX,EAGJ,KAAK,MAAS,EAAI,KAAK,IAEvB,KAAK,KAAO,SAAU9H,EAAO7D,EAAO23B,EAAO,CACvC,OAAO,SAAU52B,EAAMJ,EAAM,CACzB,QAAST,EAAE,EAAEC,EAAKw3B,EAAM,OAAOz3B,EAAEC,EAAKD,GAAG,EAAG,CACxC,IAAIyL,EAASgsB,EAAMz3B,CAAC,EAAEa,EAAKJ,CAAI,EAC/B,GAAI,CAACgL,EACD,MAAO,EACX,CAEJ,MAAO,EAAA,CACX,CAGR,EAuDA9L,EAAI,UAAY,SAAUG,EAAO,CAE7B,KAAK,QAAU,CAAA,EACf,KAAK,QAAQ,QAAa,IAAIA,EAAM,IAAI,qBAExC,SAASw6B,EAAyB7O,EAAU1Y,EAAewnB,EAAc,CACrE,IAAI32B,EAAQ,GACZ,OAAI9D,EAAM,IAAI,eACN2rB,IAAa,WACb7nB,EAAQ9D,EAAM,IAAI,aAAaiT,EAAc,YAAA,EAAe,GAAO,EAAI,EACvEnP,EAAQA,EAAM,MAAM,GAAG,EAAE,CAAC,GACnB6nB,IAAa,iBACpB7nB,EAAQ9D,EAAM,IAAI,aAAaiT,EAAc,YAAA,EAAe,GAAO,EAAI,EAClEwnB,EAID32B,EAAQ,GAHRA,EAAQA,EAAM,MAAM,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,IAAI,IAOnDA,CAAA,CAIR,SAAS42B,EAAW16B,EAAOqjB,EAAKtiB,EAAMqrB,EAAQuO,EAAWC,EAAYC,EAAW,CAE5E,IAAI/2B,EAAQ,GACRg3B,EAAkBj7B,EAAI,qBAAqB+6B,CAAU,EACrDG,EACJ,GAAI,CAACD,EACD,OAAOH,EAGX,IAAIhP,EAAWiP,EACX3nB,EAAgB0nB,EAEhB36B,EAAM,IAAI,sBACViT,EAAgBjT,EAAM,IAAI,oBAAoB46B,EAAYD,CAAS,GAEvE,IAAIF,EAAe,GAWnB,GAVI9O,IAAa,gBAAkB1Y,IAC/BwnB,EAAexnB,EAAc,QAAQ,GAAG,IAAM,IAG9C,CAAC,eAAgB,SAAS,EAAE,QAAQ2nB,CAAU,EAAI,IAAMD,IAAcA,EAAU,gBAChF1nB,EAAgB0nB,EAAU,YAAA,GAK1B36B,EAAM,IAAI,gBAAiB,CAEvB,CAAC,eAAgB,UAAW,gBAAiB,wBAAwB,EAAE,QAAQ2rB,CAAQ,EAAI,GAC3FoP,EAAwB,UACjBh6B,EAAK,aACZg6B,EAAwBh6B,EAAK,aAE7Bg6B,EAAwB,UAE5B,IAAI11B,EAAerF,EAAM,UAAU,iBAAiB+6B,EAAuBD,EAAiB7nB,EAAelS,EAAK,QAAQ,EAsBxH,GAAIf,EAAM,UAAU,QAAQqF,CAAY,EAAEy1B,CAAe,GAAK7nB,EAAe,CAEzE,IAAI+nB,EAASh7B,EAAM,UAAU,QAAQqF,CAAY,EAAEy1B,CAAe,EAAE7nB,CAAa,EAC7EoQ,EAAI,QAAQ,OAAS,SAAW2X,EAC5BP,EACA32B,EAAQ,GAERA,EAAQk3B,EAGfl3B,EAAQ02B,EAAyB7O,EAAU1Y,EAAewnB,CAAY,CACvE,CACJ,CAIJ,MAAI,CAAC32B,IACG,CAAC9D,EAAM,IAAI,uBAAuB,yCAA2Ce,EAAK,OAAS,eAC5FqrB,GAAUrrB,EAAKqrB,CAAM,GAAKyO,IAC7B/2B,EAAQ/C,EAAKqrB,CAAM,GAEnB,CAACtoB,GAAS,CAAC9D,EAAM,IAAI,iBAAmBA,EAAM,IAAI,eACrD8D,EAAQ02B,EAAyB7O,EAAU1Y,EAAewnB,CAAY,GAEnE,CAAC32B,GAAS,CAAC22B,IAAiB,CAACz6B,EAAM,IAAI,cAAgB2rB,IAAa,kBACpE7nB,EAAQ62B,GAER36B,EAAM,IAAI,uBAAuB,6BAC7B2rB,IAAa,SAAW7nB,IAAU62B,GAAa55B,EAAK,aAAa,IACjE+C,EAAQ/C,EAAK,aAAa,GAG3B+C,CAAA,CAGX,SAASm3B,EAAel6B,EAAK0R,EAAO,CAChC,IAAIrS,EAAMJ,EAAM,IAAI,gBAAgB,EAAE,CAAC,EAAE,MAAM,EAAG,CAAC,EAC/Ck7B,EAMJ,GALIl7B,EAAM,IAAI,uBAAuB,yBACjCk7B,EAAY,IAAI,OAAO,6BAA6B,EAEpDA,EAAY,IAAI,OAAO,4BAA4B,EAEnDn6B,EAAK,SAAU,CACf,IAAID,GAAK,GAAKC,EAAK,UAAU,MAAMm6B,CAAS,EACxCp6B,EACAV,EAAMU,EAAE,CAAC,EAGTV,EAAM,KACV,CAEJ,OAAIW,EAAK,OAASA,EAAK,OAASA,EAAK,MAAM,MAAQA,EAAK,MAAM,KAAK0R,CAAK,IACpErS,EAAMW,EAAK,MAAM,KAAK0R,CAAK,IAE3B,CAACzS,EAAM,IAAI,uBAAuB,0BAC/BA,EAAM,IAAI,uBAAuB,oCAEpCI,EAAMA,EAAI,YAAA,GAEPA,CAAA,CAIX,SAAS+6B,EAAiBp6B,EAAM0R,EAAO2oB,EAAaC,EAAa1H,EAAUiH,EAAY,CACnF,IAAI7lB,EAAK2P,EAAGtkB,EAAKk7B,EACblK,EAAWuC,EACX4H,EAAY,GAEhB,GAAI,CAACx6B,EAAK0R,CAAK,EACX,MAAO,CACH,KAAK,GACL,SAASkhB,EACT,MAAO9zB,EAAI,KAAK,WAAW,IAAI,GAOvC,IAAI27B,EAAiB,GACjB37B,EAAI,0BAA0B,QAAQ4S,CAAK,EAAI,IAC5CmoB,IAEHnoB,EAAQA,EAAQ,SAChB+oB,EAAiB,IAErB,IAAIC,EAAU,GACVC,EAAa,KACbC,EAAc,CAAA,EACdlpB,EAAM,MAAM,EAAE,IAAM,UACpBkpB,EAAY,KAAKlpB,CAAK,EACtBkpB,EAAY,KAAKlpB,EAAM,MAAM,EAAG,EAAE,CAAC,GAEnCkpB,EAAY,KAAKlpB,CAAK,EAG1B,QAASmpB,EAAE,EAAEC,EAAKF,EAAY,OAAQC,EAAEC,EAAMD,IAAK,CAC/C,IAAIE,EAAe,GACfrpB,EAAQkpB,EAAYC,CAAC,EAEzBx7B,EAAM,CAAC,KAAK,GAAI,SAASuzB,EAAS,OAAOsH,EAAel6B,EAAK0R,CAAK,CAAA,EAElE6oB,EAAOt7B,EAAM,IAAIo7B,CAAW,EAAIp7B,EAAM,IAAIo7B,CAAW,EAAE,MAAA,EAAU,CAAA,EACjE,IAAIW,EAAS,GAkBb,GAhBIX,IAAgB,eACXzH,IACDvzB,EAAI,KAAOW,EAAK0R,CAAK,EACrBrS,EAAI,SAAW,IAEnB27B,EAAS,GACTR,EAAY,IACLF,IAAgC,OAAOC,EAAvB,KAA+BA,EAAK,SAAW,KAGtEl7B,EAAI,KAAOW,EAAK0R,CAAK,EACrBrS,EAAI,SAAW,GACf27B,EAAS,GACTR,EAAY,IAGZ,CAACQ,EAAQ,CACT,QAAS77B,EAAI,EAAGC,EAAOm7B,EAAK,OAAQp7B,EAAIC,EAAMD,GAAK,EAG/C,GAFA6U,EAAMumB,EAAKp7B,CAAC,EACZwkB,EAAI3P,EAAI,MAAM,OAAO,EAAE,CAAC,EACpBA,GAAOhU,EAAK,OAASA,EAAK,MAAM,MAAM0R,CAAK,GAAK1R,EAAK,MAAM,MAAM0R,CAAK,EAAEsC,CAAG,EAAG,CAC9E3U,EAAI,KAAOW,EAAK,MAAM,MAAM0R,CAAK,EAAEsC,CAAG,EACtC3U,EAAI,OAAS2U,EACbgnB,EAAS,GACTD,EAAe,GACfP,EAAY,GACZ,KAAA,SACO7W,GAAK3jB,EAAK,OAASA,EAAK,MAAM,MAAM0R,CAAK,GAAK1R,EAAK,MAAM,MAAM0R,CAAK,EAAEiS,CAAC,EAAG,CACjFtkB,EAAI,KAAOW,EAAK,MAAM,MAAM0R,CAAK,EAAEiS,CAAC,EACpCtkB,EAAI,OAASskB,EACbqX,EAAS,GACTD,EAAe,GACfP,EAAY,GACZ,KAAA,CAGJ,CAACn7B,EAAI,MAAQi7B,IACbj7B,EAAM,CAAC,KAAKW,EAAK0R,CAAK,EAAG,SAAS,GAAM,OAAOwoB,EAAel6B,EAAK0R,CAAK,CAAA,EACxE8oB,EAAY,GAChB,CAsBJ,GApBAn7B,EAAI,MAAQP,EAAI,KAAK,WAAW,IAAI,EAChC+7B,IAAM,GACFE,IACA17B,EAAI,iBAAmB,IAE3Bs7B,EAAat7B,EACT,CAACo7B,IAAmC,OAAOF,EAAvB,KAA+BA,EAAK,SAAW,KACnEG,EAAU,IAEVK,IACAL,EAAU,KAGV,CAACD,GAAkB,CAACM,GAAgBJ,GACpCt7B,EAAMs7B,EACNjpB,EAAQkpB,EAAY,CAAC,GACdG,IACP17B,EAAI,iBAAmB,IAG3B,CAAC,QAAS,iBAAiB,EAAE,QAAQqS,CAAK,EAAI,IAC1C,CAAC2e,IACG,CAAChxB,EAAI,MAAM,QAAQ,WAAW,GAC3BA,EAAI,MAAM,QAAQ,WAAW,IAAM,YACnCA,EAAI,MAAM,QAAQ,WAAW,IAAM,UAAW,CACxCJ,EAAM,IAAI,KACvB,IAAIM,EACAi7B,EACAj7B,EAAO,GAEPA,EAAOF,EAAI,OAEf,IAAI8B,EAAMuQ,EAAM,MAAM,EAAE,EAAE,EACtBpP,EAAejD,EAAI,MAAM,QAAQ,WAAW,IAAM,WACtDA,EAAI,KAAOP,EAAI,0BAA0BG,EAAOe,EAAMmB,EAAK5B,EAAM+C,CAAY,EAC7E,OAAOjD,EAAI,MAAM,QAAQ,WAAW,CAAA,CAG5C,GAAIq7B,EACA,KACJ,CAEJ,OAAOr7B,CAAA,CAEX,KAAK,gBAAkB+6B,EAKvB,SAASa,EAAiB32B,EAAc42B,EAAUjtB,EAAM1O,EAAM,CACrD+E,IACDA,EAAe,WAEnB,IAAIhF,EAAUgF,EAAa,MAAM,GAAG,EAAE,CAAC,EACnC9E,EAASV,EAAI,iBAAiBG,EAAOK,EAASC,CAAI,EAItD,OAHIC,IACA8E,GAAiB,IAAM9E,GAEtByO,GAgBDhP,EAAM,IAAI,kBACVqF,EAAerF,EAAM,IAAI,gBAAgBA,EAAM,IAAI,QAASA,EAAM,UAAU,QAASqF,EAAc42B,EAAUjtB,CAAI,EAC5G3J,IACDA,EAAe,UACX9E,IACA8E,GAAiB,IAAM9E,KAI5B8E,IAxBErF,EAAM,UAAU,QAAQqF,CAAY,IACrCrF,EAAM,UAAU,QAAQqF,CAAY,EAAI,IAAIrF,EAAM,IAAI,sBAErDA,EAAM,UAAU,QAAQqF,CAAY,EAAE42B,CAAQ,IAC/Cj8B,EAAM,UAAU,QAAQqF,CAAY,EAAE42B,CAAQ,EAAI,CAAA,GAE/C52B,EAkBJ,CAEX,KAAK,iBAAmB22B,EAExB,SAASE,EAAgB7Y,EAAKtiB,EAAMowB,EAASyJ,EAAY,CACrD,IAAIjpB,EAAU0R,EAAI,UAAU,CAAC,EAC7B,GAAIrjB,EAAM,iBAAmBmxB,EAAS,CAClC,GAAI,CAAC,YAAY,iBAAiB,EAAE,QAAQxf,CAAO,IAAM,GACrD,MAAO,GAIP3R,EAAM,gBAAgB2R,EAAU,QAAQ,EAAI0R,EAC5CrjB,EAAM,gBAAgB,QAAQ,KAAK2R,CAAO,EAC1C,IAAI1R,EAAMkxB,EAAQ,MAAM,MAAM,EAC1BlxB,EAAI,SAAWD,EAAM,gBAAgB2R,EAAU,OAAO,EAAE,SACxD3R,EAAM,gBAAgB2R,EAAU,OAAO,EAAI1R,GAG/C,QAASC,EAAI,EAAGC,EAAOF,EAAI,OAAQC,EAAIC,EAAMD,GAAK,EAC9CD,EAAIC,CAAC,EAAIw6B,EAAW16B,EAAOqjB,EAAKtiB,EAAM,GAAOd,EAAIC,CAAC,EAAG06B,EAAY,EAAI,EAEzE,OAAA56B,EAAM,IAAI2R,EAAU,QAAQ,EAAI0R,EACzB,EACX,CAEJ,MAAO,EAAA,CAGX,SAAS8Y,EAAcp7B,EAAM+C,EAAO,CAChC,IAAIhD,EAAIgD,EAAM,MAAM,iBAAiB,EACjChD,GAAKA,EAAE,CAAC,IACRC,EAAK,WAAW,EAAID,EAAE,CAAC,EAC3B,CAMJ,SAASs7B,EAAW/2B,EAAcvB,EAAO,CACrC,IAAIhD,EAAIgD,EAAM,MAAM,4EAA4E,EAChG,GAAIhD,IACAgD,EAAQA,EAAM,MAAMhD,EAAE,CAAC,EAAE,MAAM,EAC3BA,EAAE,CAAC,GAEH,QADIu7B,EAASv7B,EAAE,CAAC,EAAE,MAAM,GAAG,EAClBZ,EAAI,EAAGC,EAAOk8B,EAAO,OAAQn8B,EAAIC,EAAMD,GAAK,EAAG,CACpD,IAAIo8B,EAAWD,EAAOn8B,CAAC,EACnBuB,EAAK66B,EAAS,MAAM,yBAAyB,EAC7C7pB,EAAQhR,EAAG,CAAC,EAEZozB,EAAU70B,EAAM,IAAI,eACpByB,EAAG,CAAC,EACAozB,GAAWxvB,IACNwvB,EAAQxvB,CAAY,IACrBwvB,EAAQxvB,CAAY,EAAI,CAAA,GAE5BwvB,EAAQxvB,CAAY,EAAEoN,CAAK,EAAIhR,EAAG,CAAC,GAEhCzB,EAAM,IAAI,UAAU,QAAQyS,CAAK,IAAM,KAC1CoiB,GAAWxvB,IACNwvB,EAAQ,QAAQxvB,CAAY,IAC7BwvB,EAAQ,QAAQxvB,CAAY,EAAI,CAAA,GAEpCwvB,EAAQ,QAAQxvB,CAAY,EAAEoN,CAAK,EAAI,IAE3CzS,EAAM,IAAI,UAAU,KAAKyS,CAAK,EAClC,CAIZ,OAAO3O,CAAA,CAEX,KAAK,WAAas4B,EAGlB,SAASG,EAAkB1O,EAAW+M,EAAY4B,EAAuBC,EAAqB,CAO1F,IAAI/L,EACAgM,EAAY78B,EAAI,aAAaguB,EAAU,CAAC,CAAC,EAC7C,OAAK6O,EAGDhM,EAAa1wB,EAAM,IAAI,iBAAiB,EAAE08B,CAAS,EAFnDhM,EAAa,GAKV,SAAU1wB,EAAOe,EAAMJ,EAAM,CAChC,IAAIwwB,EAASwL,EAAgB9L,EAAW+L,EAAkB9L,EAAU+L,EAAiBxL,EAQrF,GAPI,CAACxD,EAAU,CAAC,GAAM,CAAC9sB,EAAK8sB,EAAU,CAAC,CAAC,GAAK,CAAC9sB,EAAK07B,CAAmB,GAOlE,CAACz8B,EAAM,IAAI,cAAgBW,GAAQA,EAAK,iBAAiB,GACrD,CAACX,EAAM,IAAI,6BAA+BA,EAAM,IAAI,eAAe,OAAA,EAAW,EAC9E,OAAO,KAGf,IAAI2wB,EAAO,CAAC,QAAQ,GAAO,UAAU,GAAO,SAAS,EAAA,EACrD,GAAI3wB,EAAM,IAAI,KAAK,MAAM,EAAE,IAAM,QAC7B2wB,EAAK,QAAU,sBAEXD,GAAcA,EAAW,SAAW,GAAKA,EAAW,CAAC,IAAM,cAC3DC,EAAK,QAAU,cACfD,EAAa,WACNA,GAAc,CAAC1wB,EAAM,IAAI,aAEhC,QADI4wB,EAAY,CAAC,UAAW,YAAa,UAAU,EAC1C1wB,EAAI,EAAGC,EAAOywB,EAAU,OAAQ1wB,EAAIC,GACrC,EAAAuwB,EAAW,OAAS,EAAKxwB,GADkBA,GAAK,EAIhDwwB,EAAWxwB,CAAC,IACZywB,EAAKC,EAAU1wB,CAAC,CAAC,EAAI,UAAYwwB,EAAWxwB,CAAC,QAIrDywB,EAAK,QAAU,cAsBvB,IAlBI9C,EAAU,CAAC,IAAM,eACb7tB,EAAM,IAAI,OAAS,gBAChB,EAAEA,EAAM,IAAI,OAAS,YAChBA,EAAM,IAAI,SAAW,QACrBW,GAAQ,CAACA,EAAK,aAE1BgwB,EAAK,UAAY,GACjBA,EAAK,SAAW,IAGhB3wB,EAAM,IAAI,eACV2wB,EAAK,UAAY,GACjBA,EAAK,SAAW,IAMhB3wB,EAAM,IAAI,gBAAgB,EAC1B,OAAI6tB,EAAU,CAAC,IAAM,YACjB7tB,EAAM,IAAI,iBAAiB,EAAI,KACxB6tB,EAAU,CAAC,IAAM,oBACxB7tB,EAAM,IAAI,uBAAuB,EAAI,MAElC,KAMX,IAAI88B,EAAe98B,EAAM,IAAI,WAAW,MAAA,EAGpCoF,EAAM+1B,EAAgB,KAAK,KAAMp6B,EAAM8sB,EAAU,CAAC,EAAG8C,EAAK,QAAS,GAAM,KAAMiK,CAAU,EAC7FzJ,EAAU/rB,EAAI,KACdu3B,EAAiBv3B,EAAI,OACrB,IAAIisB,EAAcjsB,EAAI,MAClB23B,EAAkB33B,EAAI,SAa1B,GAZIw1B,GAAc,CAACx1B,EAAI,mBACnB+rB,EAAUuJ,EAAW16B,EAAOqxB,EAAatwB,EAAM07B,EAAqBtL,EAASyJ,EAAY,EAAI,EAGzFzJ,IAEAgL,EAAcp7B,EAAMowB,CAAO,EACtBnxB,EAAM,IAAI,eACXmxB,EAAUiL,EAAWr7B,EAAK,aAAcowB,CAAO,KAIvD+K,EAAe,KAAMn7B,EAAMowB,EAASyJ,CAAU,EAC9C56B,OAAAA,EAAM,IAAI,WAAa88B,EAChB,KAIXjM,EAAY,GACZC,EAAW,GACX,IAAIQ,EACAC,EACAZ,EAAK,YACLvrB,EAAM+1B,EAAgB,KAAK,KAAMp6B,EAAM8sB,EAAU,CAAC,EAAG8C,EAAK,UAAW,GAAOvrB,EAAI,SAAU,KAAMw1B,CAAU,EAC1G/J,EAAYzrB,EAAI,KAChBw3B,EAAmBx3B,EAAI,OACvBksB,EAAgBlsB,EAAI,MAChBw1B,GAAc,CAACx1B,EAAI,kBACfyrB,IAEAA,EAAY6J,EAAW16B,EAAOsxB,EAAevwB,EAAM,GAAO8vB,EAAW+J,EAAY,EAAI,IAK7FjK,EAAK,WACLvrB,EAAM+1B,EAAgB,KAAK,KAAMp6B,EAAM8sB,EAAU,CAAC,EAAG8C,EAAK,SAAU,GAAOvrB,EAAI,SAAU,KAAMw1B,CAAU,EACzG9J,EAAW1rB,EAAI,KACfy3B,EAAkBz3B,EAAI,OACtBmsB,EAAensB,EAAI,MACfw1B,GAAc,CAACx1B,EAAI,kBACf0rB,IAEAA,EAAW4J,EAAW16B,EAAOuxB,EAAcxwB,EAAM,GAAO+vB,EAAU8J,EAAY,EAAI,IAO9F,IAAIoC,EAOJ,GANIrM,EAAK,UAAY,oBACjBqM,EAAgBh9B,EAAM,IAAI,YAAY08B,CAAS,EAAE/L,EAAK,OAAO,EAAE,QAK/DqM,IAAkB,OAASnP,EAAU,CAAC,IAAM,SAAW,CAACkP,EAAiB,CAEzE,QADIvL,EAAY,GACPtxB,EAAI,EAAGC,EAAOkxB,EAAY,YAAY,OAAQnxB,EAAIC,EAAMD,GAAK,EAC9DmxB,EAAY,YAAYnxB,CAAC,EAAE,CAAC,IAAM,eAC/BmxB,EAAY,YAAYnxB,CAAC,EAAE,CAAC,IAAM,WAErCsxB,EAAY,IAGfA,GACDH,EAAY,YAAY,KAAK,CAAC,cAAe,QAAQ,CAAC,CAC1D,CAWJ,GAPIsL,IAAmB,MAAQtL,EAAY,QAAQ,WAAW,IAAM,UAChEA,EAAY,QAAQ,WAAW,EAAI,eAGvBxD,EAAU,CAAC,IAAvB,UACAsD,EAAUtxB,EAAI,iBAAiBG,EAAOmxB,EAAS,KAAK,qBAAqB,CAAC,GAE1EN,GAAaC,EAAU,CAgBvB,GAdA9wB,EAAM,OAAO,UAAU,OAAO,EAG9BqxB,EAAY,QAAQ,OAASA,EAAY,QAAQ,OAAO,QAAQ,UAAU,EAAE,EACxEsL,IACA38B,EAAM,IAAI,WAAa,CAAC28B,CAAc,EAAE,OAAOG,CAAY,GAE/Dj9B,EAAI,+BAA+BG,EAAO,KAAM,KAAMqxB,EAAaA,EAAY,QAAQ,OAASF,CAAO,EACvGnxB,EAAM,OAAO,OAAOmxB,EAASE,CAAW,EACxCrxB,EAAM,IAAI,4BAA8B,GAEpCmxB,IAAYN,IACZA,EAAY,IAEZA,EAAW,CACXS,EAAc,QAAQ,OAAStxB,EAAM,IAAI,YAAY08B,CAAS,EAAE/L,EAAK,SAAS,EAAE,OAChFW,EAAc,QAAQ,OAAStxB,EAAM,IAAI,YAAY08B,CAAS,EAAE/L,EAAK,SAAS,EAAE,OAE3EW,EAAc,QAAQ,SACvBA,EAAc,QAAQ,OAAS,KAGnC,QAASpxB,EAAIoxB,EAAc,YAAY,OAAS,EAAGpxB,EAAI,GAAIA,GAAK,GACxD,CAAC,eAAgB,qBAAsB,sBAAuB,mBAAmB,EAAE,QAAQoxB,EAAc,YAAYpxB,CAAC,EAAE,KAAK,GAAG,CAAC,EAAI,KACrIoxB,EAAc,YAAcA,EAAc,YAAY,MAAM,EAAGpxB,CAAC,EAAE,OAAOoxB,EAAc,YAAY,MAAMpxB,EAAI,CAAC,CAAC,GAGnH08B,IAAqB,MAAQtL,EAAc,QAAQ,WAAW,IAAM,UACpEA,EAAc,QAAQ,WAAW,EAAI,eAErCsL,IACA58B,EAAM,IAAI,WAAa,CAAC48B,CAAgB,EAAE,OAAOE,CAAY,GAEjE,IAAIpL,EAAkB,IAAI7xB,EAAI,MAC9B6xB,EAAgB,YAAY,KAAK,CAAC,cAAe,QAAQ,CAAC,EAC1DA,EAAgB,YAAY,KAAK,CAAC,eAAgB,QAAQ,CAAC,EAC3D1xB,EAAM,OAAO,UAAU0xB,CAAe,EACtC1xB,EAAM,OAAO,OAAO6wB,EAAWS,CAAa,EAC5CtxB,EAAM,OAAO,WAAA,EAEEA,EAAM,OAAO,QAAQ,MAAA,EACpBA,EAAM,OAAO,QAAQ,MAAA,EAAQ,MAAM,OAAS,CAAA,CAQhE,GAJImxB,IAAYL,IACZA,EAAW,IAGXA,EAAU,CACVS,EAAa,QAAQ,OAASvxB,EAAM,IAAI,YAAY08B,CAAS,EAAE/L,EAAK,QAAQ,EAAE,OAC9EY,EAAa,QAAQ,OAASvxB,EAAM,IAAI,YAAY08B,CAAS,EAAE/L,EAAK,QAAQ,EAAE,OAEzEY,EAAa,QAAQ,SACtBA,EAAa,QAAQ,OAAS,KAGlC,QAASrxB,EAAIqxB,EAAa,YAAY,OAAS,EAAGrxB,EAAI,GAAIA,GAAK,GACvD,CAAC,eAAgB,qBAAsB,sBAAuB,mBAAmB,EAAE,QAAQqxB,EAAa,YAAYrxB,CAAC,EAAE,KAAK,GAAG,CAAC,EAAI,KACpIqxB,EAAa,YAAcA,EAAa,YAAY,MAAM,EAAGrxB,CAAC,EAAE,OAAOqxB,EAAa,YAAY,MAAMrxB,EAAI,CAAC,CAAC,GAGhH28B,IAAoB,MAAQtL,EAAa,QAAQ,WAAW,IAAM,UAClEA,EAAa,QAAQ,WAAW,EAAI,eAEpCsL,IACA78B,EAAM,IAAI,WAAa,CAAC68B,CAAe,EAAE,OAAOC,CAAY,GAEhE,IAAInL,EAAiB,IAAI9xB,EAAI,MAC7B8xB,EAAe,YAAY,KAAK,CAAC,cAAe,QAAQ,CAAC,EACzDA,EAAe,YAAY,KAAK,CAAC,eAAgB,QAAQ,CAAC,EAC1D3xB,EAAM,OAAO,UAAU2xB,CAAc,EACrC3xB,EAAM,OAAO,OAAO8wB,EAAUS,CAAY,EAC1CvxB,EAAM,OAAO,WAAA,EAEEA,EAAM,OAAO,QAAQ,MAAA,EACpBA,EAAM,OAAO,QAAQ,MAAA,EAAQ,MAAM,OAAS,CAAA,CAMhEA,EAAM,OAAO,WAAA,CAAW,MAEpB28B,IACA38B,EAAM,IAAI,WAAa,CAAC28B,CAAc,EAAE,OAAOG,CAAY,GAE/Dj9B,EAAI,+BAA+BG,EAAO,KAAM,KAAMqxB,EAAaA,EAAY,QAAQ,OAASF,CAAO,EACvGnxB,EAAM,OAAO,OAAOmxB,EAASE,CAAW,EACxCrxB,EAAM,IAAI,4BAA8B,GAG5CA,OAAAA,EAAM,IAAI,WAAa88B,EAEnB98B,EAAM,IAAI,sBACVA,EAAM,IAAI,UAAU,SAAS,KAAKA,EAAM,OAAO,QAAQ,OAAO,EAE3D,IAAA,CACX,CAEJ,KAAK,kBAAoBu8B,CAC7B,EAiBA18B,EAAI,MAAQ,SAAU+B,EAAM8K,EAAWuwB,EAAa,CAMhD,KAAK,KAAOr7B,EAIZ,KAAK,QAAU,CAAA,EACf,KAAK,QAAQ,UAAY,OACzB,KAAK,QAAQ,OAAS,GACtB,KAAK,QAAQ,OAAS,GAatB,KAAK,YAAc,CAAA,EACnB,KAAK,UAAY,CAAA,EAMjB,KAAK,MAAQ,CAAA,EAMb,KAAK,UAAY8K,CAmDrB,EAGA7M,EAAI,KAAK,WAAa,SAAUgE,EAAO,CACnC,IAAIiS,EAAQpU,EAAKmD,EAAKC,EACtB,GAAiB,OAAOjB,GAApB,SACA,OAAOA,EAEXiS,EAAS,IAAIjW,EAAI,MAAMgE,EAAM,KAAMA,EAAM,SAAS,EAClD,QAASnC,KAAOmC,EAAM,QACdA,EAAM,QAAQ,eAAenC,CAAG,IAChCoU,EAAO,QAAQpU,CAAG,EAAImC,EAAM,QAAQnC,CAAG,GAG/C,GAAImC,EAAM,YAEN,IADAiS,EAAO,YAAc,CAAA,EAChBjR,EAAM,EAAGC,EAAMjB,EAAM,YAAY,OAAQgB,EAAMC,EAAKD,GAAO,EAC5DiR,EAAO,YAAY,KAAKjS,EAAM,YAAYgB,CAAG,EAAE,OAAO,EAG9D,OAAIhB,EAAM,YACNiS,EAAO,UAAYjS,EAAM,UAAU,MAAA,GAInCA,EAAM,QACNiS,EAAO,MAAQjS,EAAM,MAAM,MAAA,EACvBA,EAAM,QACNiS,EAAO,MAAQjS,EAAM,MAAM,MAAA,IAG5BiS,CACX,EAQAjW,EAAI,YAAc,UAAY,CAC1B,KAAK,QAAU,CAAA,EACf,KAAK,OAAS,EACd,KAAK,MAAQ,CAAA,EACb,KAAK,OAAS,CAAA,EACd,KAAK,YAAc,GACnB,KAAK,aAAe,CACxB,EAIAA,EAAI,KAAO,SAAUC,EAAK+D,EAAOq5B,EAAW,CACxC,IAAIp4B,EAAKD,EAAKnD,EAGd,GAFA,KAAK,UAAYw7B,EAEbr5B,EAAO,CACP,KAAK,QAAU,CAAC,OAAS,GAAG,OAAS,EAAA,EACrC,QAASnC,KAAOmC,EAAM,QACdA,EAAM,QAAQ,eAAenC,CAAG,IAChC,KAAK,QAAQA,CAAG,EAAImC,EAAM,QAAQnC,CAAG,GAS7C,IANA,KAAK,YAAc,CAAA,EACfmC,EAAM,cAAgB,OACtBiB,EAAM,EAENA,EAAMjB,EAAM,YAAY,OAEvBgB,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAC5B,KAAK,YAAY,KAAKhB,EAAM,YAAYgB,CAAG,EAAE,OAAO,CACxD,MAEA,KAAK,QAAU,CAAA,EACf,KAAK,QAAQ,OAAS,GACtB,KAAK,QAAQ,OAAS,GACtB,KAAK,QAAQ,UAAY,GACzB,KAAK,YAAc,CAAA,EAEN,OAAO/E,GAApB,SACA,KAAK,MAAQA,EACNA,EACP,KAAK,MAAQ,CAACA,CAAG,EAEjB,KAAK,MAAQ,CAAA,EAEjB,KAAK,SAAW,CAAC,KAAK,WAAW,CACrC,EAGAD,EAAI,KAAK,UAAU,KAAO,SAAUuU,EAAM,CACrB,OAAO,KAAK,OAAzB,SACAvU,EAAI,MAAM,yCAAyC,EAClCuU,IAAV,KACPA,EAAK,SAAWA,EAAK,SAAS,OAAO,KAAK,QAAQ,EAClD,KAAK,MAAM,KAAKA,CAAI,EAE5B,EAgBAvU,EAAI,YAAc,SAAUG,EAAOm9B,EAAU/4B,EAAKg5B,EAAc5qB,EAAI,CAUhE,GAPA,KAAK,GAAKA,EACV,KAAK,SAAW,CAAA,EAChB,KAAK,IAAMpO,EACX,KAAK,SAAW+4B,EAChB,KAAK,MAAQ/4B,EAAI,SAAA,EACjB,KAAK,OAASvE,EAAI,MAClB,KAAK,QAAU,CAAA,EACXu9B,EAAc,CACd,GAAIA,EAAa,QAAQ,WAAW,EAAG,CACnC,IAAIC,EAAWD,EAAa,QAAQ,WAAW,EAC/C,KAAK,SAAWv9B,EAAI,OAAO,WAAWw9B,CAAQ,EAAEr9B,EAAO,KAAK,QAAQ,EACpE,KAAK,MAAQH,EAAI,OAAO,WAAWw9B,CAAQ,EAAEr9B,EAAO,KAAK,KAAK,CAAA,CAElE,KAAK,OAASo9B,EAAa,OAC3B,KAAK,YAAcA,EAAa,YAChC,KAAK,QAAQ,OAASA,EAAa,QAAQ,OAC3C,KAAK,QAAQ,OAASA,EAAa,QAAQ,OAC3C,KAAK,QAAQ,WAAW,EAAIA,EAAa,QAAQ,WAAW,EAC5D,KAAK,iBAAmBA,EAAa,iBACrC,KAAK,aAAeA,EAAa,aACjC,KAAK,cAAgBA,EAAa,cAClC,KAAK,UAAYA,EAAa,UACzB,KAAK,YACN,KAAK,UAAa,IAAIv9B,EAAI,OAAO,kBAEjC,KAAK,YACL,KAAK,KAAO,KAAK,UAAU,OAAO,CAAC,EACvC,MAEA,KAAK,YAAc,CAAA,EACnB,KAAK,QAAQ,OAAS,GACtB,KAAK,QAAQ,OAAS,GACtB,KAAK,iBAAmB,GACxB,KAAK,aAAe,GACpB,KAAK,cAAgB,GACrB,KAAK,UAAY,IAAIA,EAAI,OAAO,gBAExC,EAGAA,EAAI,YAAY,UAAU,aAAe,SAAU6pB,EAAW,CAC1D,KAAK,UAAYA,EACjB,KAAK,KAAO,KAAK,UAAU,OAAO,CAAC,CACvC,EAGA7pB,EAAI,OAAO,iBAAmB,UAAY,CAAC,EAE3CA,EAAI,OAAO,iBAAiB,UAAU,OAAS,SAAUuE,EAAK,CAC1D,OAAOA,EAAI,SAAA,CACf,EAEAvE,EAAI,YAAY,UAAU,UAAY,SAAUyL,EAAK9I,EAAO,CACpDA,GACA,KAAK,OAAS3C,EAAI,MACD,OAAOyL,GAApB,WACIA,EAAK,MAAS,KAAK,IAAM,EACzBA,EAAK,OAASzL,EAAI,UAElByL,EAAK,OAASzL,EAAI,OAGnB,CAAEyL,GAAQ,CAACA,EAAK,KAAO,KAAK,OAASA,EAAK,MAAQA,EAAK,MAAS,KAAK,IAAM,GAC9E,KAAK,SAAWzL,EAAI,yBACpB,KAAK,OAASA,EAAI,KAEL,OAAOyL,GAApB,WACDA,EAAK,OAASzL,EAAI,OAGjB,KAAK,SAAWA,EAAI,OAAS,KAAK,SAAWA,EAAI,KACjDyL,EAAK,OAASzL,EAAI,WACX,KAAK,SAAWA,EAAI,WAAa,KAAK,SAAWA,EAAI,0BACxD,KAAK,cACLyL,EAAK,OAASzL,EAAI,uBAClB,KAAK,OAASA,EAAI,UAElByL,EAAK,OAASzL,EAAI,UAQlC,EAGAA,EAAI,YAAY,UAAU,UAAY,SAAUy9B,EAAM,CAElD,OAAI,KAAK,SAAWz9B,EAAI,MACpBy9B,EAAK,MAAS,KAAK,IAAM,GAAM,KAAK,SAAWz9B,EAAI,WACnD,KAAK,OAASA,EAAI,UACX,IAEJ,EACX,EAIAA,EAAI,KAAK,YAAc,SAAUuG,EAAQvB,EAAKwB,EAAM,CAChD,IAAIgL,EAAMsa,EAAUriB,EAASi0B,EAASv3B,EAAUC,EAAMtE,EAAKE,EAAQI,EAAQ0D,EAAU63B,EAAaC,EAASC,EAEvGC,EAAQ,KAAK,OAAO,kBAAkBt3B,EAAM,OAAO,EAEnDkE,EAAiB,KAAK,OAAO,kBAAkBlE,EAAM,gBAAgB,EAIzE,KAAK,MAAM,SAAW,GAEtBgL,EAAO,KAAK,OAAO,kBAAkBhL,EAAM,MAAM,EACjD,IAAIs3B,EAOJ,GANIpzB,EACAozB,EAAQ,KAAK,IAAI,gBAAgB,EAAE,CAAC,EAEpCA,EAAQ,KAAK,OAAO,kBAAkBt3B,EAAM,OAAO,EAGnD,CAAC,KAAK,QAAQgL,EAAM9G,CAAc,EAClC,OAAOnE,EAGX,IAAIgM,EAAY,KAAK,OAAO,kBAAkB/L,EAAM,YAAY,EAEhEslB,EAAW,KAAK,OAAO,kBAAkBtlB,EAAM,UAAU,EACzDxE,EAAS,KAAK,OAAO,kBAAkBwE,EAAM,QAAQ,EACrDpE,EAAS,KAAK,OAAO,kBAAkBoE,EAAM,QAAQ,EACrDo3B,EAAU,KAAK,OAAO,kBAAkBp3B,EAAM,SAAS,EACvDq3B,EAAQ,KAAK,OAAO,kBAAkBr3B,EAAM,OAAO,EAKnDiD,EAAU,KAAK,OAAO,SAAS,KAAK,QAAQ+H,EAAM9G,CAAc,CAAC,EACjE,KAAK,OAAO,aAAajB,EAAS,QAAS,KAAK,IAAI,IAAI,EACxD,KAAK,OAAO,aAAaA,EAAS,OAAQ+H,CAAI,EAC9C,KAAK,OAAO,aAAa/H,EAAS,aAAc8I,CAAS,EACzD,KAAK,OAAO,aAAa9I,EAAS,QAASo0B,CAAK,EAIhD,KAAK,OAAO,aAAap0B,EAAS,WAAYqiB,CAAQ,EACtD,KAAK,OAAO,aAAariB,EAAS,iBAAkBiB,CAAc,EAI9D1I,GAIA,KAAK,OAAO,aAAayH,EAAS,SAAUzH,CAAM,EAElDI,GAIA,KAAK,OAAO,aAAaqH,EAAS,SAAUrH,CAAM,EAElDw7B,GAIA,KAAK,OAAO,aAAan0B,EAAS,UAAWm0B,CAAO,EAUxD93B,EAAW,KAAK,OAAO,SAAS2D,CAAO,EACvC,QAAS5H,KAAOiE,EACZ43B,EAAU53B,EAASjE,CAAG,EACF,KAAK,OAAO,SAAS67B,CAAO,IAA5C,cACAv3B,EAAW,KAAK,OAAO,kBAAkBu3B,EAAS,MAAM,EACpDhzB,GACA,KAAK,OAAO,4CAA4CjB,EAAS,YAAatD,EAAU,kBAAmB,MAAM,GAK7HL,EAAW,KAAK,OAAO,SAASU,CAAI,EACpC,QAAS3E,KAAOiE,EAEZ,GADA43B,EAAU53B,EAASjE,CAAG,EACF,KAAK,OAAO,SAAS67B,CAAO,IAA5C,YAA+C,CAC/Cv3B,EAAW,KAAK,OAAO,kBAAkBu3B,EAAS,MAAM,EACxDC,EAAc,KAAK,OAAO,WAAWD,CAAO,EAC5C,IAAKt3B,KAAQu3B,EACOv3B,IAAZ,UAGA03B,GAASA,IAAU,KAAK,IAAI,MACxB,CAAC,UAAW,UAAW,OAAO,EAAE,QAAQ13B,CAAI,EAAI,KAIxDtE,EAAM67B,EAAYv3B,CAAI,EACtB,KAAK,OAAO,4CAA4CqD,EAAS,YAAatD,EAAUC,EAAMtE,CAAG,GACrG,CAIR,GAAe,KAAK,OAAO,kBAAkB0E,EAAM,YAAY,IAA3D,OAKA,KAAK,OAAO,0BAA0BiD,EAAS,OAAO,EAItD,KAAK,OAAO,0BAA0BA,EAAS,KAAK,UAE5B,KAAK,OAAO,kBAAkBjD,EAAM,YAAY,IAAjE,aAIP,KAAK,OAAO,0BAA0BiD,EAAS,KAAK,UAC7B,KAAK,OAAO,kBAAkBjD,EAAM,YAAY,IAAhE,YAAmE,CAK1E,QADIu3B,EAAa,KAAK,OAAO,SAASt0B,CAAO,EACpCpJ,EAAE,EAAEC,EAAK,KAAK,OAAO,cAAcy9B,CAAU,EAAE19B,EAAEC,EAAKD,IAI3D,GAAI,KAAK,OAAO,kBAAkB09B,EAAW19B,CAAC,EAAG,MAAM,IAAM,OAAQ,CAIjE,KAAK,OAAO,aAAa09B,EAAW19B,EAAE,CAAC,EAAG,SAAU,EAAE,EACtD,KAAA,CAMR,KAAK,OAAO,0BAA0BoJ,EAAS,MAAM,CAAA,CAEzD,OAAO,KAAK,OAAO,qBAAqBlD,EAAQC,EAAMxB,EAAKyE,CAAO,CACtE,EAIAzJ,EAAI,mBAAqB,SAAUG,EAAOe,EAAM,CAC5ClB,EAAI,cAAc,KAAK,KAAMG,EAAOe,EAAM,EAAI,CAClD,EAGAlB,EAAI,cAAgB,SAAUG,EAAOe,EAAM88B,EAAS,CAChD,IAAI/U,EAAIlhB,EAAM9D,EAAOgJ,EAAGgxB,EAAIj8B,EAAQ3B,EAAGC,EACnCwrB,EAAW,KAAK,UAAU,CAAC,EAC3BoS,EAAY,QAmBhB,GAlBIF,GAAW79B,EAAM,IAAI,YACrB+9B,EAAY,mBAEhBjV,EAAK/nB,EAAK4qB,CAAQ,EACE,OAAO7C,EAAvB,MACAA,EAAK,CAAC,aAAc,CAAC,CAAC,CAAC,CAAC,CAAA,GAER,OAAO,KAAK,UAA5B,MACA,KAAK,UAAY,CAAC,OAAQ,QAAS,KAAK,GAExCA,EAAG,IACHA,EAAK9oB,EAAM,IAAI,WAAW,iBAAiB8oB,EAAG,GAAG,EAC1CA,EAAG,YAAY,IACtBA,EAAK9oB,EAAM,eAAe8oB,CAAE,GAEZ,OAAOA,EAAvB,MACAA,EAAK,CAAA,GAELA,EAAG,KACH,IAAK5oB,EAAI,EAAGC,EAAON,EAAI,oBAAoB,OAAQK,EAAIC,EAAMD,GAAK,EAU9D,GATA0H,EAAO/H,EAAI,oBAAoBK,CAAC,EAChC4D,EAAQ,EACRgJ,EAAIlF,EACAkF,EAAE,MAAM,EAAE,IAAM,SAChBA,EAAIA,EAAE,MAAM,EAAG,EAAE,GAEjBgc,EAAGlhB,CAAI,GAAK,KAAK,UAAU,QAAQkF,CAAC,EAAI,KACxChJ,EAAQglB,EAAGlhB,CAAI,GAEfA,EAAK,MAAM,EAAG,CAAC,IAAM,OAAQ,CAC7Bk2B,EAAKj+B,EAAI,KAAK,MAAMiN,CAAC,EAAE,QAAQ9M,EAAO8D,CAAK,EAC3C,IAAIjC,EAAS,IACTi8B,EAAG,CAAC,IAAM,MACVj8B,EAAS,IACTi8B,EAAKA,EAAG,MAAM,CAAC,EACfA,EAAK,KAAO,SAASA,EAAI,EAAE,GAE/B99B,EAAM,OAAO,OAAOH,EAAI,KAAK,MAAM+H,EAAK,MAAM,EAAG,CAAC,CAAC,EAAE,QAAQ5H,EAAQ6B,EAASi8B,CAAG,EAAGC,CAAS,CAAA,MAE7Fj6B,EAAQjE,EAAI,KAAK,MAAMiN,CAAC,EAAE,uBAAuB,EAAE9M,EAAO8D,CAAK,EAE1DA,IACDA,EAAQ,MAEZ9D,EAAM,OAAO,OAAO8D,EAAOi6B,CAAS,CAIpD,EAEAl+B,EAAI,OAAO,UAAU,eAAiB,SAAU8oB,EAAU,CACtD,IAAIvoB,EAAKqS,EAAOqW,EAAIkV,EACpB59B,EAAM,CAAA,EACN,IAAKqS,KAASkW,EACV,GAAIlW,IAAU,aAAc,CACxBqW,EAAKH,EAAS,YAAY,EACtBG,EAAG,OAAS,GACRA,EAAG,CAAC,EAAE,SAAWA,EAAG,CAAC,EAAE,QACvBjpB,EAAI,MAAM,uDAAuD,EAGzEm+B,EAAO,CAAC,GAAI,MAAM,EAClB,QAAS99B,EAAI,EAAGC,EAAO2oB,EAAG,OAAQ5oB,EAAIC,EAAMD,GAAK,EAC7C,QAASQ,EAAI,EAAGY,EAAOzB,EAAI,WAAW,OAAQa,EAAIY,EAAMZ,GAAK,EACrD,MAAM,SAASooB,EAAG5oB,CAAC,EAAEQ,CAAC,EAAG,EAAE,CAAC,EAC5BN,EAAKP,EAAI,WAAWa,CAAC,EAAIs9B,EAAK99B,CAAC,CAAE,EAAI,OAErCE,EAAKP,EAAI,WAAWa,CAAC,EAAIs9B,EAAK99B,CAAC,CAAE,EAAI,SAAS4oB,EAAG5oB,CAAC,EAAEQ,CAAC,EAAG,EAAE,CAGtE,MACOioB,EAAS,eAAelW,CAAK,IAIhCA,IAAU,WAA0B,OAAOkW,EAAS,SAA7B,UAAqD,OAAOA,EAAS,QAAQ,MAArC,UAC/D9oB,EAAI,MAAM,6CAA6C,EACvDO,EAAI,QAAUuoB,EAAS,QAAQ,MAE/BvoB,EAAIqS,CAAK,EAAIkW,EAASlW,CAAK,GAIvC,OAAOrS,CACX,EAIAP,EAAI,KAAK,MAAQ,CAAA,EAEjBA,EAAI,KAAK,MAAM,gBAAkBA,EAAI,WAAW,UAAU,iBAK1DA,EAAI,KAAK,MAAM,aAAe,SAAUG,EAAO4B,EAAM,CACjD,IAAI,EAAGzB,EAAM0J,EAAUo0B,EAAW79B,EAClC,GAAI,CAACwB,EACD,MAAO,GAKX,IAHAiI,EAAWjI,EAAK,MAAM,YAAY,EAClCq8B,EAAYr8B,EAAK,MAAM,WAAW,EAClCxB,EAAM,GACD,EAAI,EAAGD,EAAO0J,EAAS,OAAQ,EAAI1J,EAAM,GAAK,EAa/CC,GAAOyJ,EAAS,CAAC,EACb,EAAI1J,EAAO,IACXC,GAAO69B,EAAU,CAAC,GAG1B,OAAO79B,CACX,EAKAP,EAAI,KAAK,MAAM,eAAiB,SAAUG,EAAO4B,EAAMs8B,EAAYC,EAAe,CAC9E,IAAIj+B,EAAGC,EAAeC,EACtB,GAAI,CAACwB,EACD,MAAO,GAKX,GAHKs8B,IACDA,EAAa,IAEb,CAAC,OAAQ,MAAM,EAAE,QAAQt8B,CAAI,EAAI,IAC7B,CAACA,EAAK,QAAQ,gBAAiB,EAAE,EAAE,MAAM/B,EAAI,4BAA4B,GACtE,CAACq+B,EAAW,MAAM,IAAI,EAC7B,OAAOt8B,EAGP5B,EAAM,IAAI,wBAAwB,IAAM,KACxC4B,EAAOA,EAAK,QAAQ,MAAO,GAAG,GAYlCA,EAAOA,EAAK,QAAQ,YAAa,GAAG,EAAE,QAAQ,OAAQ,GAAG,EACzDA,EAAOA,EAAK,QAAQ,YAAa,KAAU,EAE3C,QAAS1B,EAAE0B,EAAK,OAAO,EAAG1B,EAAE,GAAIA,GAAK,GAC7B0B,EAAK,MAAM1B,EAAGA,EAAE,CAAC,IAAM,KAAO0B,EAAK,MAAM1B,EAAE,EAAGA,EAAE,CAAC,IAAM,MACvD0B,EAAOA,EAAK,MAAM,EAAG1B,CAAC,EAAI,KAAO0B,EAAK,MAAM1B,EAAE,CAAC,GAKvD,IAAIk+B,EAAav+B,EAAI,OAAO,WAAW,WAAW,MAAM+B,CAAI,EACxDiI,EAAW,CAAA,EAGf,GAFAA,EAAW,CAACu0B,EAAW,QAAQ,CAAC,CAAC,EAE7BA,EAAW,KAAK,SAAW,EAAG,CAC9B,IAAIC,EAAMx0B,EAAS,CAAC,EAAE,MAAM,SAAS,EACjCw0B,GAAOA,EAAI,CAAC,EAAE,SAAW,GAAKA,EAAI,CAAC,IAAMA,EAAI,CAAC,EAAE,gBAChDx0B,EAAS,CAAC,GAAK,IACnB,CAGJ,IAAK3J,EAAI,EAAGC,EAAOi+B,EAAW,QAAQ,OAAQl+B,EAAIC,EAAMD,GAAK,EACzD2J,EAAS,KAAKu0B,EAAW,KAAKl+B,EAAI,CAAC,CAAC,EACpC2J,EAAS,KAAKu0B,EAAW,QAAQl+B,CAAC,CAAC,EAIvC,OAAIi+B,EACA/9B,EAAM,KAAK,YAAYJ,EAAO6J,EAAUq0B,CAAU,EAElD99B,EAAM,KAAK,aAAaJ,EAAO6J,EAAUq0B,CAAU,EAEvD99B,EAAMA,EAAI,QAAQ,iBAAkB,KAAK,EAClCA,CACX,EAEAP,EAAI,KAAK,MAAM,MAAQ,SAASC,EAAK,CACjC,OAAOA,EAAI,QAAQ,gBAAiB,EAAE,CAC1C,EAEAD,EAAI,KAAK,MAAM,SAAW,SAASG,EAAOs+B,EAAQC,EAAQ,CACtD,IAAIz9B,EAAIw9B,EAAO,MAAM,kBAAkB,EACvC,GAAKx9B,EAGDw9B,EAASx9B,EAAE,KAAK,EAAE,MAFlB,QAAOy9B,EAIX,OAAAz9B,EAAIy9B,EAAO,MAAM,mBAAmB,EAChCz9B,GACAA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAI,GACrBy9B,EAASz9B,EAAE,CAAC,EAAIw9B,EAASx9B,EAAE,CAAC,GAE5By9B,EAASA,EAASD,EAEfC,CACX,EAEA1+B,EAAI,KAAK,MAAM,QAAU,SAASG,EAAOF,EAAK,CAC1C,IAAIgB,EAAIhB,EAAI,MAAM,cAAc,EAChC,OAAKgB,EAGMA,EAAE,KAAK,EAAE,EAFThB,CAIf,EAEAD,EAAI,KAAK,MAAM,YAAc,SAAUG,EAAO6J,EAAUq0B,EAAY,CAChE,IAAIh+B,EAAGC,EAEP+9B,EAAaA,GAA0B,GAEvC,IAAIM,EAAW,CAAA,EACf,IAAKt+B,EAAI,EAAGC,EAAO0J,EAAS,OAAQ3J,EAAIC,EAAMD,GAAK,EAC3C,KAAK,MAAM2J,EAAS3J,CAAC,CAAC,EAAE,OAAS,GAAK,KAAK,MAAM2J,EAAS3J,CAAC,CAAC,EAAE,MAAM,EAAE,IAAM,KAE5E2J,EAAS3J,CAAC,EAAI2J,EAAS3J,CAAC,EAAE,QAAQ,eAAgB,MAAM,EACxDs+B,EAAS,KAAK,EAAI,GACX30B,EAAS3J,CAAC,EAAE,SAAW,GAAK2J,EAAS3J,CAAC,EAAE,YAAA,IAAkB2J,EAAS3J,CAAC,EAC3Es+B,EAAS,KAAK,EAAI,EAElBA,EAAS,KAAK,EAAK,EAI3B,IAAKt+B,EAAI,EAAGC,EAAO0J,EAAS,OAAQ3J,EAAIC,EAAMD,GAAK,EAE3Cs+B,EAASt+B,CAAC,IAENA,EAAI2J,EAAS,OAAS,IAEtBA,EAAS3J,EAAI,CAAC,EAAI,KAAK,QAAQF,EAAO6J,EAAS3J,EAAE,CAAC,CAAC,EAC9Cs+B,EAASt+B,EAAE,CAAC,IACb2J,EAAS3J,EAAI,CAAC,EAAI,KAAK,QAAQF,EAAO6J,EAAS3J,EAAE,CAAC,CAAC,EAAI,KAMvD2J,EAAS3J,EAAI,CAAC,EAAE,OAAS,EACzB2J,EAAS3J,EAAE,CAAC,EAAIg+B,EAAW,QAAQ,UAAW,EAAE,EAAIr0B,EAAS3J,EAAE,CAAC,EAEhE2J,EAAS3J,EAAE,CAAC,EAAI,KAAK,SAASF,EAAO6J,EAAS3J,EAAE,CAAC,EAAGg+B,CAAU,GAIlEh+B,IAAM2J,EAAS,OAAS,IACxBA,EAAS3J,CAAC,EAAI2J,EAAS3J,CAAC,EAAIg+B,IAKxC,OAAOr0B,EAAS,KAAK,EAAE,EAAE,QAAQ,uDAAuD,EAAE,EAAE,QAAQ,YAAa,GAAG,EAAE,QAAQ,2CAA4C,GAAG,CACjL,EAEAhK,EAAI,KAAK,MAAM,aAAe,SAAUG,EAAO6J,EAAUq0B,EAAY,CACjE,IAAIh+B,EAAGC,EAAMW,EAAGJ,EAAGY,EAAMrB,EAAKsU,EAC9B,IAAKrU,EAAI,EAAGC,EAAO0J,EAAS,OAAQ3J,EAAIC,EAAMD,GAAK,EAE/C,GADAqU,EAAI1K,EAAS3J,CAAC,EACV,EAACqU,EAWL,GARAzT,EAAIyT,EAAE,MAAM1U,EAAI,mBAAmB,EAC/B,CAACiB,GAAM,CAACyT,EAAE,MAAM1U,EAAI,4BAA4B,GAAK0U,EAAE,OAAS,GAAK2pB,EAAW,MAAM,IAAI,IAC1Fp9B,EAAIyT,EAAE,MAAM,SAAS,GAErBzT,GAAKA,EAAE,CAAC,GAAKA,EAAE,CAAC,IAChBA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,EACjBA,EAAE,CAAC,EAAI,IAEPA,GAAKA,EAAE,CAAC,EAAE,MAAM,EAAG,CAAC,IAAMA,EAAE,CAAC,EAAE,MAAM,EAAG,CAAC,EAAE,cAAe,CAC1D,IAAI29B,EAAQ,GACZ,GAAI39B,EAAE,CAAC,EAAG,CACN,IAAIw0B,EAAI,GAER,IADAr1B,EAAMa,EAAE,CAAC,EAAE,MAAM,EAAE,EACdJ,EAAI,EAAGY,EAAOrB,EAAI,OAAQS,EAAIY,EAAMZ,GAAK,EAAG,CAC7C,IAAIyb,EAAIlc,EAAIS,CAAC,EACb,GAAIyb,IAAMA,EAAE,cACRmZ,GAAKnZ,MAEL,MACJ,CAEAmZ,EAAE,OAASx0B,EAAE,CAAC,EAAE,SAChB29B,EAAQ5+B,EAAI,kBAAkB,KAAKG,EAAOs1B,CAAC,EAC/C,CAEJzrB,EAAS3J,CAAC,EAAIY,EAAE,CAAC,EAAI29B,EACjBv+B,EAAKC,EAAO,EACR+9B,EAAW,MAAM,IAAI,EACrBr0B,EAAS3J,CAAC,EAAIg+B,EAAW,QAAQ,KAAMr0B,EAAS3J,CAAC,CAAC,EAE9C2J,EAAS3J,EAAI,CAAC,EAAE,QAAQ,GAAG,EAAI,GAC/B2J,EAAS3J,EAAI,CAAC,EAAI,KAAK,SAASF,EAAO6J,EAAS3J,EAAE,CAAC,EAAE,QAAQ,IAAK,EAAE,EAAGg+B,CAAU,EAAI,IAErFr0B,EAAS3J,EAAI,CAAC,EAAI,KAAK,SAASF,EAAO6J,EAAS3J,EAAE,CAAC,EAAGg+B,CAAU,EAIpEA,EAAW,MAAM,IAAI,EACrBr0B,EAAS3J,CAAC,EAAIg+B,EAAW,QAAQ,KAAMr0B,EAAS3J,CAAC,CAAC,EAElD2J,EAAS,KAAKq0B,CAAU,CAEhC,MACO3pB,EAAE,MAAM1U,EAAI,iBAAiB,IAAM,CAACiB,GAAK,CAACA,EAAE,CAAC,KACpD+I,EAAS3J,CAAC,EAAI,IAAMqU,GAG5B,IAAInU,EAAMyJ,EAAS,KAAK,EAAE,EAC1B,OAAAzJ,EAAMA,EAAI,QAAQ,uDAAuD,EAAE,EAAE,QAAQ,YAAa,GAAG,EAAE,QAAQ,2CAA4C,GAAG,EACvJA,CACX,EAEAP,EAAI,KAAK,MAAM,WAAa,SAAU+B,EAAM,CACxC,IAAIxB,EAAM,CAAA,EACV,OAAIwB,EAAK,QACLxB,EAAI,KAAKwB,EAAK,OAAO,GAEjBA,EAAK,OACLxB,EAAI,KAAKwB,EAAK,KAAK,EAEnBA,EAAK,QACLxB,EAAI,KAAKwB,EAAK,MAAM,GAGrBxB,EAAI,KAAK,GAAG,CACvB,EAQAP,EAAI,KAAK,MAAQ,CAAA,EAMjBA,EAAI,KAAK,MAAM,KAAO,CAAA,EAMtBA,EAAI,KAAK,MAAM,KAAK,KAAU,SAAUG,EAAOoE,EAAK,CAChD,OAAKA,IACiB,OAAOA,GAArB,UACAA,EAAM,GAENA,EAAM,GAGPA,EAAI,SAAA,CACf,EAMAvE,EAAI,KAAK,MAAM,KAAK,SAAW,SAAUG,EAAOoE,EAAK3B,EAAK,CACtD,IAAIkS,EAAO,GACNvQ,IACiB,OAAOA,GAArB,UACAA,EAAM,GAENA,EAAM,GAGd3B,EAAMA,EAAM,OAAS,GACrB,IAAIqM,EAAQ9O,EAAM,IAAI,YAAY,QAAUyC,CAAG,EAE/C,IADAqM,EAAQA,EAAQ,GAAGA,EAAQ,IACpBA,EAAM,OAAS,GAClBA,EAAQ,IAAMA,EAElB,IAAIC,EAAM/O,EAAM,IAAI,YAAY,MAAQyC,CAAG,EAE3C,IADAsM,EAAMA,EAAM,GAAGA,EAAM,IACdA,EAAI,OAAS,GAChBA,EAAM,IAAMA,EAEhB,IAAIgB,EAAO,SAAS3L,EAAM0K,EAAQC,EAAK,EAAE,EACrCyF,EACAjT,EAgBJ,GAfIwO,GAAQ,UAAYA,EAAO,UAC3ByE,EAAQ,KACRjT,EAAS,MACFwO,GAAQ,UAAYA,EAAO,UAClCyE,EAAQ,KACRjT,EAAS,MACFwO,GAAQ,UAAYA,EAAO,UAClCyE,EAAQ,KACRjT,EAAS,MACFwO,GAAQ,WACfyE,EAAQ,KACRjT,EAAS,MAITiT,GAASjT,EAAQ,CACjB,IAAI0R,EAAgBuB,EAChBxU,EAAM,IAAI,sBAGViT,EAAgBjT,EAAM,IAAI,oBAAoB,SAAUwU,CAAK,GAE5DxU,EAAM,UAAU,QAAQ,QAAW,OAAUiT,CAAa,GAG3DjT,EAAM,UAAU,iBAAiB,UAAW,SAAUiT,EAAe,IAAI,EAEzEjT,EAAM,UAAU,QAAQ,QAAW,OAAUiT,CAAa,IAC1DuB,EAAQxU,EAAM,UAAU,QAAQ,QAAW,OAAUiT,CAAa,GAEtE0B,EAAOH,GAASpQ,EAAM7C,EAAA,CAE1B,OAAOoT,CACX,EAMA9U,EAAI,KAAK,MAAM,KAAK,MAAW,SAAUG,EAAOoE,EAAK,CAEjD,GADAA,EAAMA,EAAI,SAAA,EACNA,GAAOA,EAAI,SAAW,EACtB,OAAOA,EAAI,OAAO,CAAC,CAE3B,EAOAvE,EAAI,KAAK,MAAM,KAAK,QAAU,SAAUG,EAAOoE,EAAK,CAChD,IAAItD,EAAGskB,EACPhhB,EAAM,GAAKA,EACX,IAAItD,EAAIsD,EAAI,MAAM,WAAW,EAQ7B,IAPItD,GACAskB,EAAMhhB,EAAI,MAAM,EAAGtD,EAAE,CAAC,EAAE,OAAS,EAAE,EACnCsD,EAAMtD,EAAE,CAAC,IAETskB,EAAMhhB,EACNA,EAAM,IAEHA,EAAI,OAAS,GAChBA,EAAM,IAAMA,EAEhB,OAAQghB,EAAMhhB,CAClB,EAQAvE,EAAI,KAAK,MAAM,eAAiB,SAAUuE,EAAKs6B,EAAW,CACtD,IAAIt+B,EASJ,GARKgE,IACDA,EAAM,GAEVA,EAAM,GAAKA,EACNA,EAAI,MAAM,UAAU,IACrBA,EAAM,GAEVA,EAAM,SAASA,EAAK,EAAE,EAClBs6B,EAAW,CACX,IAAIt5B,EAAM,CAAC,KAAM,SAAU,IAAAhB,CAAA,EAC3B,GAAIgB,EAAI,IAAM,GAAKA,EAAI,IAAM,GACzBA,EAAI,IAAM,MACP,CACH,KAAOA,EAAI,IAAM,IACbA,EAAI,IAAMA,EAAI,IAAM,EAEpBA,EAAI,IAAM,KACVA,EAAI,KAAO,UACXA,EAAI,IAAMA,EAAI,IAAM,GACxB,CAEJhF,EAAMgF,CAAA,MAEFhB,EAAM,GAAKA,EAAM,MACjBA,EAAM,GAEVhE,EAAMgE,EAEV,OAAOhE,CACX,EAEAP,EAAI,KAAK,MAAM,MAAQ,CAAA,EAMvBA,EAAI,KAAK,MAAM,MAAM,QAAU,SAAUG,EAAOoE,EAAK,CACjD,IAAIA,EAAMvE,EAAI,KAAK,MAAM,eAAeuE,CAAG,EAC3C,OAAKA,IACDA,EAAM,IAEHA,CACX,EAMAvE,EAAI,KAAK,MAAM,MAAM,uBAAuB,EAAI,SAAUG,EAAOoE,EAAK,CAClE,IAAIA,EAAMvE,EAAI,KAAK,MAAM,eAAeuE,CAAG,EAC3C,GAAI,CAACA,EACDA,EAAM,OAGN,KADAA,EAAM,GAAKA,EACJA,EAAI,OAAS,GAChBA,EAAM,IAAMA,EAGpB,OAAOA,CACX,EASAvE,EAAI,KAAK,MAAM,MAAM,KAAU,SAAUG,EAAOoE,EAAKmN,EAAQE,EAAoB,CAC7E,IAAIrM,EAAMvF,EAAI,KAAK,MAAM,eAAeuE,EAAK,EAAI,EAC7CA,EAAMgB,EAAI,IACd,GAAI,CAAChB,EACDA,EAAM,OACH,CAEH,IADAA,EAAM,GAAKA,EACJA,EAAI,OAAS,GAChBA,EAAM,IAAMA,EAEhBA,EAAMpE,EAAM,QAAQoF,EAAI,KAAOhB,EAAK,OAAQ,EAAG,EAAG,GAAOqN,CAAkB,CAAA,CAE/E,OAAOrN,CACX,EASAvE,EAAI,KAAK,MAAM,MAAM,MAAW,SAAUG,EAAOoE,EAAKmN,EAAQE,EAAoB,CAC9E,IAAIrM,EAAMvF,EAAI,KAAK,MAAM,eAAeuE,EAAK,EAAI,EAC7CA,EAAMgB,EAAI,IACd,GAAI,CAAChB,EACDA,EAAM,OACH,CAEH,IADAA,EAAM,GAAKA,EACJA,EAAI,OAAS,GAChBA,EAAM,IAAMA,EAEhBA,EAAMpE,EAAM,QAAQoF,EAAI,KAAOhB,EAAK,QAAS,EAAG,EAAG,GAAOqN,CAAkB,CAAA,CAEhF,OAAOrN,CACX,EAMAvE,EAAI,KAAK,MAAM,IAAM,CAAA,EAMrBA,EAAI,KAAK,MAAM,IAAI,QAAU,SAAUG,EAAOoE,EAAK,CAC/C,OAAOA,EAAI,SAAA,CACf,EAEAvE,EAAI,KAAK,MAAM,IAAI,KAAUA,EAAI,KAAK,MAAM,IAAI,QAMhDA,EAAI,KAAK,MAAM,IAAI,uBAAuB,EAAI,SAAUG,EAAOoE,EAAK,CAKhE,IAJKA,IACDA,EAAM,GAEVA,EAAMA,EAAI,SAAA,EACHA,EAAI,OAAS,GAChBA,EAAM,IAAMA,EAEhB,OAAOA,EAAI,SAAA,CACf,EAQAvE,EAAI,KAAK,MAAM,IAAI,QAAU,SAAUG,EAAOoE,EAAKmN,EAAQ,CACvD,OAAOvR,EAAM,IAAI,YAAY,OAAOoE,EAAKmN,CAAM,CACnD,EAQA1R,EAAI,KAAK,KAAO,CAAA,EAMhBA,EAAI,KAAK,KAAK,mBAAqB,SAAUC,EAAK,CAC9C,IAAIgB,EACJ,OAAiB,OAAOhB,GAApB,WACAgB,EAAIhB,EAAI,MAAM,oCAAoC,GAElDgB,IACAhB,EAAMA,EAAI,OAAOgB,EAAE,CAAC,EAAE,MAAM,GAEzBhB,CACX,EAIAD,EAAI,KAAK,gBAAkB,SAAUG,EAAO6L,EAAQ,CAChD,IAAI8yB,EAAelB,EAASmB,EAAW3yB,EAAM4e,EAAcC,EAAU+T,EACrE5yB,EAAO,SAAUjM,EAAOe,EAAMJ,EAAM,CAChC,QAAST,EAAI,EAAGC,EAAO,KAAK,YAAY,OAAQD,EAAIC,EAAMD,GAAK,EAC3D,GAAyB,KAAK,YAAYA,CAAC,EAAE,CAAC,IAA1C,kBAA0D,KAAK,YAAYA,CAAC,EAAE,CAAC,IAAhC,OAAmC,CAClFF,EAAM,IAAI,eAAiB,EAC3B,KAAA,CAER,EAEJ,KAAK,MAAM,KAAKiM,CAAI,EAChB,KAAK,aAAejM,EAAM,IAAI,uBAAuB,6BACrD,KAAK,YAAY,QAAA,EACjB,KAAK,YAAY,KAAK,CAAC,UAAU,OAAQ,KAAK,KAAK,CAAC,EACpD,KAAK,YAAY,QAAA,GAOrB6+B,EAAY,CAAC,SAAU,OAAQ,OAAO,GACtB,KAAK,OAAhB,QAAwB,CAAC,KAAK,iBAAoBA,EAAU,QAAQ,KAAK,IAAI,EAAI,MAClFF,EAAgB,SAAU3+B,EAAOe,EAAMJ,EAAM,CACrCX,EAAM,IAAI,cAAc,MAAA,IAAY,UAAwB,KAAK,OAAjB,SAC5C,CAACA,EAAM,IAAI,cAAgBW,GAAQA,EAAK,aAAa,GAAKX,EAAM,IAAI,OAAS,UACxEA,EAAM,IAAI,6BAEXA,EAAM,IAAI,cAAc,KAAK,aAAa,EAG9C,CAACA,EAAM,IAAI,cAAgBW,GAAQA,EAAK,iBAAiB,IACpDX,EAAM,IAAI,6BACXA,EAAM,IAAI,cAAc,KAAK,aAAa,IAIlC,KAAK,OAAhB,OACD,CAACA,EAAM,IAAI,cAAgBW,GAAQA,EAAK,aAAa,GAAKX,EAAM,IAAI,OAAS,UACzEA,EAAM,IAAI,6BACVA,EAAM,IAAI,cAAc,KAAK,aAAa,EAW9C,CAACA,EAAM,IAAI,cAAgBW,GAAQA,EAAK,aAAa,GAAKX,EAAM,IAAI,OAAS,SAEzE,CAACA,EAAM,IAAI,6BAA+BA,EAAM,IAAI,sBAEpDA,EAAM,IAAI,cAAc,KAAK,aAAa,EAEvCW,GAAQA,EAAK,iBAAiB,GACrCX,EAAM,IAAI,cAAc,KAAK,oBAAoB,CAEzD,EAEJ,KAAK,MAAM,KAAK2+B,CAAa,GAEjClB,EAAU,KAAK,QAAQ,IACvB,KAAK,QAAQ,IAAM,GACfz9B,EAAM,MAAM,uBAAyB,IAQjCA,EAAM,MAAM,OAAS,gBAAkBA,EAAM,aAAa,IAAI,oBAAoB,GAClF4+B,EAAY,IAAI/+B,EAAI,MAAM,QAASA,EAAI,KAAK,EAC5C++B,EAAU,YAAc,CAAC,CAAC,WAAY,aAAa,CAAC,EACpD3yB,EAAO,SAAUjM,EAAOe,EAAM,CACrBf,EAAM,IAAI,cACX4+B,EAAU,QAAQ,WAAa79B,EAAK,GACpCf,EAAM,OAAO,SAAS,YAAa4+B,CAAS,EAChD,EAEJA,EAAU,MAAM,KAAK3yB,CAAI,EACzBJ,EAAO,KAAK+yB,CAAS,GACd/+B,EAAI,gBAAgB,QAAQ49B,CAAO,EAAI,KAC9CmB,EAAY,IAAI/+B,EAAI,MAAM,QAASA,EAAI,KAAK,EAC5C++B,EAAU,YAAc,CAAC,CAAC,WAAYnB,CAAO,CAAC,EAC9CxxB,EAAO,SAAUjM,EAAOe,EAAM,CAC1B69B,EAAU,QAAQ,WAAa79B,EAAK,GACpCf,EAAM,OAAO,SAAS,YAAa4+B,CAAS,CAAA,EAEhDA,EAAU,MAAM,KAAK3yB,CAAI,EACzBJ,EAAO,KAAK+yB,CAAS,GAEzB5+B,EAAM,MAAM,IAAMy9B,GAEtBz9B,EAAM,MAAM,sBAAwB,EAGhCA,EAAM,MAAM,iBAAiB,MAAA,IAAY,IAUzC6qB,EAAe,IAAIhrB,EAAI,MAAM,SAAUA,EAAI,KAAK,EAChDA,EAAI,KAAK,OAAO,MAAM,KAAKgrB,EAAc7qB,EAAO6L,CAAM,EACtDif,EAAW,IAAIjrB,EAAI,MAAM,KAAMA,EAAI,KAAK,EAMxCoM,EAAO,UAAY,CACf,MAAI,EAAAjM,EAAM,IAAI,eAAe,MAAA,CAGtB,EAEX8qB,EAAS,QAAaA,EAAS,MAAQ,CAAA,GACvCA,EAAS,MAAM,KAAK7e,CAAI,EACxB6e,EAAS,KAAO9qB,EAAM,IAAI,MAAM,IAAI,KAAMA,EAAO8qB,EAAS,KAAK,EAC/Djf,EAAO,KAAKif,CAAQ,GAGpB9qB,EAAM,IAAI,iBACP,KAAK,gBACL,KAAK,eAAe,SAEvBiM,EAAO,SAAUjM,EAAOe,EAAMJ,EAAM,CAChC,GAAI,CAACX,EAAM,IAAI,cAAgB,CAACA,EAAM,IAAI,qBAAsB,CAG5D,IAAI8+B,EAAiB,IAAIj/B,EAAI,MAAM,OAAQA,EAAI,KAAK,EACpDi/B,EAAe,YAAc,CAAC,CAAC,UAAW,MAAM,CAAC,EACjD9+B,EAAM,OAAO,SAAS,iBAAkB8+B,CAAc,EACtD,IAAI3c,EAAW,KACXxhB,IACAwhB,EAAWxhB,EAAK,UAEfwhB,IACDA,EAAW,GAEf,IAAI4c,EAAc,CACd,QACA,uBACA,aACA,OACA,qBAEAC,EAAa,EACbr+B,GAAQA,EAAK,YACbq+B,EAAar+B,EAAK,WAEtB,IAAIs+B,EAA2B,EAC3Bt+B,GAAQA,EAAK,6BAA6B,IAC1Cs+B,EAA2Bt+B,EAAK,6BAA6B,GAEjE,IAAIu+B,EAAoC,EACpCv+B,GAAQA,EAAK,uCAAuC,IACpDu+B,EAAoCv+B,EAAK,uCAAuC,GAEpF,IAAIw+B,EAAiB,EAEjBx+B,GAAQA,EAAK,iBAAiB,IAC9Bw+B,EAAiBx+B,EAAK,iBAAiB,GAE3C,IAAI6P,EAAQ,EACR7P,GAAQA,EAAK,QACb6P,EAAQ7P,EAAK,OAEjB,IAAIkT,EAAS,CACT,SAAU9S,EACV,cAAe,KAAK,UACpB,QAASf,EAAM,IAAI,KACnB,OAAQA,EAAM,IAAI,OAClB,SAAU++B,EAAY5c,CAAQ,EAC9B,cAAe6c,EACf,8BAA+BC,EAC/B,wCAAyCC,EACzC,kBAAmBC,EACnB,MAAS3uB,EACT,KAAQxQ,EAAM,IAAI,MAEtBA,EAAM,OAAO,QAAQ,MAAA,EAAQ,OAAS6T,CAAA,CAC1C,EAEJ,KAAK,MAAM,KAAK5H,CAAI,EAE5B,EAGApM,EAAI,KAAK,cAAgB,SAAUG,EAAO6L,EAAQ,CAC9C,IAAII,EAAMmzB,EAAeC,EAAWrU,EAAQO,EAA+BzrB,EA4D3E,GA1DIE,EAAM,IAAI,kBACN,KAAK,aAAgB,KAAK,gBAAkB,KAAK,eAAe,UAEpEiM,EAAO,SAAUjM,EAAO,CAChB,CAACA,EAAM,IAAI,cAAgB,CAACA,EAAM,IAAI,sBACtCA,EAAM,OAAO,OAAO,gBAAgB,CACxC,EAEJ,KAAK,MAAM,KAAKiM,CAAI,GAGxBA,EAAO,SAAUjM,EAAO,CACpB,QAASE,EAAI,EAAGC,EAAO,KAAK,YAAY,OAAQD,EAAIC,EAAMD,GAAK,EAC3D,GAAyB,KAAK,YAAYA,CAAC,EAAE,CAAC,IAA1C,kBAA0D,KAAK,YAAYA,CAAC,EAAE,CAAC,IAAhC,OAAmC,CAClFF,EAAM,IAAI,eAAiB,GAC3B,KAAA,CAER,EAEJ,KAAK,MAAM,KAAKiM,CAAI,EAEpBjM,EAAM,MAAM,sBAAwB,GAChCA,EAAM,MAAM,uBAAyB,IACjCA,EAAM,MAAM,KACZiM,EAAO,SAAUjM,EAAO,CACpBA,EAAM,OAAO,OAAO,WAAW,CAAA,EAEnC,KAAK,MAAM,KAAKiM,CAAI,EACpBjM,EAAM,MAAM,IAAM,IACXA,EAAM,MAAM,OAAS,gBAAkBA,EAAM,aAAa,IAAI,oBAAoB,IACzFo/B,EAAgB,IAAIv/B,EAAI,MAAM,QAASA,EAAI,GAAG,EAE9CoM,EAAO,SAAUjM,EAAO,CACfA,EAAM,IAAI,aACXA,EAAM,OAAO,OAAO,WAAW,CACnC,EAEJo/B,EAAc,MAAM,KAAKnzB,CAAI,EAC7BJ,EAAO,KAAKuzB,CAAa,EACzBC,EAAY,IAAIx/B,EAAI,MAAM,QAASA,EAAI,KAAK,EAC5Cw/B,EAAU,YAAc,CAAC,CAAC,WAAY,cAAc,CAAC,EACrDpzB,EAAO,SAAUjM,EAAO,CACfA,EAAM,IAAI,cACXA,EAAM,IAAI,YAAc,GACxBA,EAAM,OAAO,SAAS,YAAaq/B,CAAS,EAChD,EAEJA,EAAU,MAAM,KAAKpzB,CAAI,EACzBJ,EAAO,KAAKwzB,CAAS,IAGzBr/B,EAAM,MAAM,iBAAiB,MAAA,IAAY,IACzCgrB,EAAS,IAAInrB,EAAI,MAAM,KAAMA,EAAI,GAAG,EACpCgM,EAAO,KAAKmf,CAAM,EAClBO,EAAa,IAAI1rB,EAAI,MAAM,SAAUA,EAAI,GAAG,EAC5CA,EAAI,KAAK,OAAO,MAAM,KAAK0rB,EAAYvrB,EAAO6L,CAAM,GAGxC,KAAK,OAAjB,SAAqC,KAAK,OAAhB,QAAwB,KAAK,iBAAmB,QAAU,CAChE,IAAIhM,EAAI,MAAM,OAAQA,EAAI,SAAS,EACvD,IAAIy/B,EAAoB,KAAK,KAC7BrzB,EAAO,SAAUjM,EAAOe,EAAM,CAC1B,GAAIf,EAAM,IAAI,OAAS,gBAGN,OAAOA,EAAM,aAAa,IAAI,8BAA8B,GAAzE,UAGA,OAAK,gBAAkB,CAACe,EAAK,KAAK,cAAc,IAMhD,OAAK,gBAAkBu+B,IAAsB,SAIjD,KAAIC,EAAUv/B,EAAM,aAAa,IAAI,mCAAmC,EACpEE,EAAGC,EAEHq/B,EAAW,CAACx/B,EAAM,IAAI,qBAC1B,GAAIw/B,GAAYx/B,EAAM,IAAI,iCAClBA,EAAM,IAAI,cAAe,CACzB,GAAuBu/B,IAAnB,gBAAkDA,IAApB,gBAA6B,CAC3D,IAAIE,EAAQ,GACRC,EAAgB,CAAA,EAIpB,IAAKx/B,EAAI,EAAGC,EAAOH,EAAM,IAAI,UAAU,SAAS,OAAQE,EAAIC,EAAMD,GAAK,EAAG,CACtE,IAAI0B,EAAO5B,EAAM,IAAI,cAAcE,CAAC,EAChCu/B,GACGz/B,EAAM,IAAI,oBAAsBA,EAAM,IAAI,mBAAmB,OAAUE,EAAI,GAC3E0B,GAAQ,CAACA,EAAK,cAAc5B,EAAM,IAAI,mBAAmBE,CAAC,CAAC,GAC9DJ,EAAM,IAAID,EAAI,KAAKG,EAAMA,EAAM,IAAI,IAAI,EAAE,IAAI,8BAA8B,CAAC,EAC5EA,EAAM,IAAI,UAAU,SAASE,CAAC,EAAE,MAAQ,CAACJ,CAAG,EACpBy/B,IAApB,kBACAE,EAAQ,KAGZA,EAAQ,GAEZC,EAAc,KAAK99B,CAAI,CAAA,CAG3B5B,EAAM,IAAI,mBAAqB0/B,CAAA,SACJH,IAApB,gBAA6B,CACpC,IAAIG,EAAgB1/B,EAAM,IAAI,cAAc,KAAK,GAAG,EACpD,GAAI0/B,EAAe,CACf,GAAI1/B,EAAM,IAAI,oBAAsB,CAAC0/B,EAAc,cAAc1/B,EAAM,IAAI,kBAAkB,EACzF,IAAKE,EAAI,EAAGC,EAAOH,EAAM,IAAI,UAAU,SAAS,OAAQE,EAAIC,EAAMD,GAAK,EACnEJ,EAAM,IAAID,EAAI,KAAKG,EAAMA,EAAM,IAAI,IAAI,EAAE,IAAI,8BAA8B,CAAC,EAC5EA,EAAM,IAAI,UAAU,SAASE,CAAC,EAAE,MAAQ,CAACJ,CAAG,EAGpDE,EAAM,IAAI,mBAAqB0/B,CAAA,CACnC,KACG,CACH,IAAIA,EAAgB1/B,EAAM,IAAI,cAAc,KAAK,GAAG,EAChD0/B,IACI1/B,EAAM,IAAI,oBAAsB,CAAC0/B,EAAc,cAAc1/B,EAAM,IAAI,kBAAkB,IACzFF,EAAM,IAAID,EAAI,KAAKG,EAAMA,EAAM,IAAI,IAAI,EAAE,IAAI,8BAA8B,CAAC,EACxEA,EAAM,IAAI,WACVA,EAAM,IAAI,UAAU,IAAI,MAAQ,CAACF,EAAIE,EAAM,IAAI,UAAU,EAClDA,EAAM,IAAI,UAAU,IAAI,MAAM,OACrCA,EAAM,IAAI,UAAU,IAAI,MAAM,CAAC,EAAE,MAAQ,CAACF,CAAG,EAE7CE,EAAM,IAAI,UAAU,IAAI,MAAQ,CAACF,CAAG,EAExCE,EAAM,IAAI,qBAAuBs/B,GAErCt/B,EAAM,IAAI,mBAAqB0/B,EACnC,CAEJ1/B,EAAM,IAAI,gCAAkC,EAAA,EAEpD,EAEJ,KAAK,MAAM,KAAKiM,CAAI,CAAA,EAGR,KAAK,OAAhB,QAAwB,CAAC,KAAK,iBAAoB,CAAC,SAAU,OAAQ,OAAO,EAAE,QAAQ,KAAK,IAAI,EAAI,MAEpGA,EAAO,SAAUjM,EAAOe,EAAM,CAQtBf,EAAM,IAAI,cAAc,QAAQ,OAAO,GACvCA,EAAM,IAAI,cAAc,IAAA,CAC5B,EAEJ,KAAK,MAAM,KAAKiM,CAAI,EAE5B,EAIApM,EAAI,KAAK,QAAU,SAAUuE,EAAK,CAC9B,IAAItD,EAAIsD,EAAI,MAAM,mBAAmB,EACrC,GAAItD,EAMA,IALAsD,EAAM,SAAStD,EAAE,CAAC,EAAG,EAAE,EACnBsD,EAAM,IACNA,EAAM,KAAuBA,GAEjCA,EAAM,GAAKA,EACJA,EAAI,OAAS,IAChBA,EAAM,IAAMA,EAGpB,OAAOA,CACX,EAEAvE,EAAI,KAAK,gBAAkB,UAAY,CAAC,EAExCA,EAAI,KAAK,gBAAgB,UAAU,KAAO,SAAUG,EAAO,CACvD,KAAK,MAAQA,CACjB,EAEAH,EAAI,KAAK,gBAAgB,UAAU,OAAS,SAAUuE,EAAKmN,EAAQ,CAC3DnN,EAAM,KACNA,EAAM,IAAMA,GAGhB,IAAIhE,EAAMP,EAAI,OAAO,SACjBA,EAAI,MACJ,KAAK,MAAM,OAAO,KAAK,MAAM,IAAI,IAAI,EAAE,MACvC,gBAAkBuE,EAClB,OACA,EACAmN,GAEJ,OAAKnR,IACDA,EAAM,KAAK,MAAM,IAAI,YAAY,OAAOgE,EAAKmN,CAAM,GAGvD,KAAK,MAAM,IAAI,qBAAuB,GAC/BnR,CACX,EAGAP,EAAI,KAAK,YAAc,SAAUG,EAAO,CACpC,KAAK,MAAQA,EACb,KAAK,SAAW,CAAA,CACpB,EAEAH,EAAI,KAAK,YAAY,UAAU,KAAO,UAAY,CAC9C,GAAI,CAAC,KAAK,SAAS,KAAK,MAAM,IAAI,IAAI,EAAG,CACrC,KAAK,SAAS,KAAK,MAAM,IAAI,IAAI,EAAI,CAAA,EACrC,QAASK,EAAI,EAAGC,EAAO,EAAGD,EAAIC,EAAMD,GAAK,EAAG,CACxC,IAAIqR,EAAS,CAAC,OAAW,YAAa,UAAU,EAAErR,CAAC,EACnD,KAAK,SAAS,KAAK,MAAM,IAAI,IAAI,EAAEqR,CAAM,EAAI,CAAA,EAC7C,QAAS7Q,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAAG,CAC3B,IAAIi/B,EAAU,KAAK,MAAM,QAAQ,YAAcj/B,EAAG,OAAQ,GAAO6Q,CAAM,EACvE,GAAoB,OAAOouB,EAAvB,IAAgC,CAChC,OAAO,KAAK,SAAS,KAAK,MAAM,IAAI,IAAI,EAAEpuB,CAAM,EAChD,KAAA,CAEJ,KAAK,SAAS,KAAK,MAAM,IAAI,IAAI,EAAEA,CAAM,EAAE,KAAKouB,CAAO,CAAA,CAC3D,CACJ,CAER,EAEA9/B,EAAI,KAAK,YAAY,UAAU,OAAS,SAAUuE,EAAKmN,EAAQ,CAC3D,IAAIzR,EACJsE,EAAM,SAASA,EAAK,EAAE,EACtBtE,EAAM,GAAKsE,EACX,IAAInC,EAAS,GACT29B,EAAa,CAAA,EAKjB,GAJIruB,GACAquB,EAAW,KAAKruB,CAAM,EAE1BquB,EAAW,KAAK,QAAQ,EACpB,KAAK,MAAM,OAAO,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,OAAO,EAAG,CACrD39B,EAAS,KAAK,MAAM,QAAQ,UAAU,GAAM,EAAEsP,CAAM,EAEpD,QADIsuB,EACK3/B,EAAI,EAAGC,EAAOy/B,EAAW,OAAQ1/B,EAAIC,EAAMD,GAAK,EAAG,CACxD2/B,EAAYD,EAAW1/B,CAAC,EACxB,IAAI4/B,EAAU,KAAK,MAAM,OAAO,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,OAAO,EAQhE,GAPIA,EAAQ,cAAc,EAAEhgC,CAAG,GAAKggC,EAAQ,cAAc,EAAEhgC,CAAG,EAAE+/B,CAAS,EACtE59B,EAAS,KAAK,MAAM,QAAQ,KAAK,MAAM,OAAO,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,OAAO,EAAE,cAAc,EAAEnC,CAAG,EAAE+/B,CAAS,EAAE,GAAM,EAAEtuB,CAAM,EACvHuuB,EAAQ,iBAAiB,EAAEhgC,EAAI,MAAMA,EAAI,OAAS,CAAC,CAAC,GAAKggC,EAAQ,iBAAiB,EAAEhgC,EAAI,MAAMA,EAAI,OAAS,CAAC,CAAC,EAAE+/B,CAAS,EAC/H59B,EAAS,KAAK,MAAM,QAAQ,KAAK,MAAM,OAAO,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,OAAO,EAAE,iBAAiB,EAAEnC,EAAI,MAAMA,EAAI,OAAS,CAAC,CAAC,EAAE+/B,CAAS,EAAE,GAAM,EAAEtuB,CAAM,EAChJuuB,EAAQ,YAAY,EAAEhgC,EAAI,MAAMA,EAAI,OAAS,CAAC,CAAC,GAAKggC,EAAQ,YAAY,EAAEhgC,EAAI,MAAMA,EAAI,OAAS,CAAC,CAAC,EAAE+/B,CAAS,IACrH59B,EAAS,KAAK,MAAM,QAAQ,KAAK,MAAM,OAAO,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,OAAO,EAAE,YAAY,EAAEnC,EAAI,MAAMA,EAAI,OAAS,CAAC,CAAC,EAAE+/B,CAAS,EAAE,GAAM,EAAEtuB,CAAM,GAElJtP,EACA,KACJ,CACJ,MAEKsP,IAGDA,EAAS,QAEb,KAAK,MAAM,IAAI,YAAY,KAAA,EACtBnN,EAAM,GAAM,KAAO,GAAMA,EAAM,IAAMA,EAAM,GAC5CnC,EAAS,KAAK,SAAS,KAAK,MAAM,IAAI,IAAI,EAAEsP,CAAM,EAAE,CAAC,EAC9CnN,EAAM,KAAO,GAAKA,EAAM,MAAQ,GACvCnC,EAAS,KAAK,SAAS,KAAK,MAAM,IAAI,IAAI,EAAEsP,CAAM,EAAE,CAAC,EAC9CnN,EAAM,KAAO,GAAKA,EAAM,MAAQ,GACvCnC,EAAS,KAAK,SAAS,KAAK,MAAM,IAAI,IAAI,EAAEsP,CAAM,EAAE,CAAC,EAC9CnN,EAAM,KAAO,GAAKA,EAAM,MAAQ,GACvCnC,EAAS,KAAK,SAAS,KAAK,MAAM,IAAI,IAAI,EAAEsP,CAAM,EAAE,CAAC,EAErDtP,EAAS,KAAK,SAAS,KAAK,MAAM,IAAI,IAAI,EAAEsP,CAAM,EAAE,CAAC,EAG7D,OAAAzR,EAAMA,GAAOmC,EACNnC,CACX,EAEAD,EAAI,KAAK,UAAY,UAAY,CAAC,EAElCA,EAAI,KAAK,UAAU,UAAU,OAAS,SAAUuE,EAAK,CACjD,IAAIhE,EAAKyE,EAAK0P,EAAGwrB,EAAQj7B,EAEzB,GADA1E,EAAM,GACFgE,EAAM,IAMN,IALA27B,EAAS37B,EAAI,WAAW,MAAM,EAAE,EAChC27B,EAAO,QAAA,EACPl7B,EAAM,EACN0P,EAAI,EACJzP,EAAMi7B,EAAO,OACRl7B,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAC5B0P,EAAI,SAASwrB,EAAOl7B,CAAG,EAAG,EAAE,EAC5BzE,EAAMP,EAAI,eAAegF,CAAG,EAAE0P,CAAC,EAAInU,EAG3C,OAAOA,CACX,EAOAP,EAAI,KAAK,WAAa,SAAUmgC,EAAO,CAC9BA,IACDA,EAAQngC,EAAI,cAEhB,KAAK,MAAQmgC,EAAM,MAAM,GAAG,CAChC,EASAngC,EAAI,KAAK,WAAW,UAAU,OAAS,SAAUogC,EAAG,CAGhD,IAAIC,EACJD,GAAK,EACL,IAAIv+B,EAAM,GACV,EAAG,CACCw+B,EAAMD,EAAI,KAAQ,EAAK,GAAMA,EAAI,GACjC,IAAIv+B,EAAM,KAAK,MAAMw+B,EAAE,CAAC,EAAIx+B,EAC5Bu+B,GAAKA,EAAIC,GAAK,EAAA,OACRD,IAAM,GAChB,OAAOv+B,CACX,EAGA7B,EAAI,OAAO,UAAU,cAAgB,SAAUwG,EAAM85B,EAAYxU,EAAU,CAEvE,IAAIhqB,EAEA6I,EAAK,KAEL41B,EAAezU,EACnBA,EAAYA,IAAa,aAAgB,OAASA,EAElD,IAAI0U,EAAc,2BACd,KAAK,IAAI,KAAK,MAAM,EAAG,CAAC,IAAM,OAC9BA,GAAe,SAAW,KAAK,QAAQ,KAAK,EAAI,YAAc,KAAK,QAAQ,KAAK,EAAI,QAExF,IAAIC,EAAY,YACZC,EAAS,IAAI,OAAO,IAAMD,EAAW,GAAG,EACxCE,EAAiB,IAAI,OAAO,IAAMF,EAAY,IAAMD,EAAc,2CAA4C,GAAG,EACjHI,EAAiB,IAAI,OAAO,MAAQH,EAAY,IAAMD,EAAc,0CAA0C,EAK9GK,EAAY,KAAK,QAAQ,KAAK,EAC9BC,EAAkB,KAAK,QAAQ,MAAO,QAAQ,EAC9CD,IAAcC,IACdA,EAAkB,KAgCtB,SAASC,EAAoB9gC,EAAK,CAC9BA,EAAMA,EAAI,KAAA,EACV,IAAIgB,EAAIhB,EAAI,MAAM,UAAU,EAC5B,GAAIgB,GAAK,CAACjB,EAAI,uBAAuBiB,EAAE,CAAC,CAAC,EAAG,CACxC,IAAI+/B,EAAgB,KAChB,CAAC,UAAW,gBAAiB,MAAM,EAAE,QAAQlV,CAAQ,EAAI,GACrDwU,EAAW,MACXU,EAAgBhhC,EAAI,+BAA+BsgC,EAAW,KAAK,EAEnEU,EAAgB,KAGpBA,EAAgBhhC,EAAI,+BAA+B8rB,CAAQ,EAE3DkV,IACA/gC,EAAM+gC,EAAgB,IAAM/gC,EAChC,CAEJ,OAAOA,CAAA,CAIX,SAASghC,EAAkBC,EAAWvsB,EAAO7S,EAAKq/B,EAAeC,EAAe,CAC5ED,EAAgBA,GAAgC,GAChD,IAAI5V,EAAO,CAAA,EAMX,GAJI,CAAC5W,GAAS,CAAC3U,EAAI,+BAA+B8rB,CAAQ,IACtDnX,EAAQ,OAAQmX,GAGhBnX,EAAO,CACP,IAAI1T,EAAI0T,EAAM,MAAM,oBAAoB,EACpC4rB,IAAiB,QAAUa,IAAkB,GAAK,CAAC,KAAM,KAAK,EAAE,QAAQngC,EAAE,CAAC,CAAC,IAAM,IAClFsqB,EAAK,iBAAmB,GACxBA,EAAK,gBAAkB,IAEvBA,EAAK,gBAAkB,GAE3BA,EAAK,MAAQtqB,EAAE,CAAC,EAChBsqB,EAAK,UAAY2V,EACjB3V,EAAK,YAActqB,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAI,GACjCsqB,EAAK,OAAS,CAAA,CAGlB,IAAItqB,EAAIa,EAAI,MAAM,yDAAyD,EAE3E,OAAIb,GACAsqB,EAAK,SAAWtqB,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAI,GAC9BsqB,EAAK,MAAQtqB,EAAE,CAAC,IAEhBsqB,EAAK,SAAW,GAChBA,EAAK,MAAQzpB,GAEjBypB,EAAK,cAAgB4V,EAAc,QAAQ,UAAW,GAAG,EAClD5V,CAAA,CAGX,SAAS8V,EAAiBhgC,EAAO,CAG7B,QAAShB,EAAEgB,EAAM,OAAO,EAAEhB,EAAE,GAAGA,GAAG,EAC1BgB,EAAMhB,CAAC,IAAM,KACXgB,EAAMhB,EAAE,CAAC,EAAE,MAAM,uFAAuF,GACxGgB,EAAMhB,EAAE,CAAC,EAAE,MAAM,cAAc,IACjCgB,EAAMhB,EAAE,CAAC,EAAIgB,EAAM,MAAMhB,EAAE,EAAEA,EAAE,CAAC,EAAE,KAAK,EAAE,EACzCgB,EAAQA,EAAM,MAAM,EAAEhB,CAAC,EAAE,OAAOgB,EAAM,MAAMhB,EAAE,CAAC,CAAC,GAGxD,OAAOgB,CAAA,CAGX,SAASigC,EAAYrhC,EAAKshC,EAAc,CACpCA,EAAeA,GAA8B,GAE7CthC,EAAM8gC,EAAoB9gC,CAAiB,EAE3C,IAAIuhC,EAAOC,EAAO7S,EAMlB,GALe9C,IAAX,QACI7rB,EAAI,QAAQ,GAAQ,EAAI,KACxBA,EAAMA,EAAI,QAAQ,UAAW,GAAG,GAGpCA,EAAI,QAAQ,KAAK,EAAI,GAAI,CACzBuhC,EAAQ,IAAI,OAAOb,EAAe,OAAO,QAAQ,MAAO,EAAE,CAAC,EAC3Dc,EAAQ,IAAI,OAAOb,EAAe,OAAO,QAAQ,MAAO,EAAE,CAAC,EAE3D,QADIxgC,EAAMH,EAAI,MAAM,KAAK,EAChBI,EAAE,EAAEC,EAAKF,EAAI,OAAOC,EAAEC,EAAKD,IAChCD,EAAIC,CAAC,EAAID,EAAIC,CAAC,EAAE,QAAQ,MAAO,GAAQ,EAE3CuuB,EAAQxuB,EAAI,KAAK,KAAK,EACtBwuB,EAAQA,EAAM,QAAQ,MAAO,EAAE,CAAA,MAE/B4S,EAAQb,EACRc,EAAQb,EACRhS,EAAQ3uB,EAMZ,IAAIoB,EAAQ,CAAA,EACRJ,EAAI2tB,EAAM,MAAM4S,CAAK,EACzB,GAAIvgC,EAAG,CAEH,QADIb,EAAMwuB,EAAM,MAAM6S,CAAK,EAClBphC,EAAE,EAAGC,EAAKW,EAAE,OAAQZ,EAAEC,EAAMD,IAC7BY,EAAEZ,CAAC,EAAE,MAAMqgC,CAAM,IACbtgC,EAAIC,CAAC,EAAE,MAAM,WAAW,GAAKD,EAAIC,CAAC,EAAE,MAAM,WAAW,EACrDY,EAAEZ,CAAC,EAAIygC,EAEP7/B,EAAEZ,CAAC,EAAI,IAAMygC,EAAkB,KAI3C,IAAIY,EAAY,GAChB,QAASrhC,KAAKD,EACV,IAAK,GAAKA,EAAIC,CAAC,GAAG,QAAQ,cAAe,EAAE,EAAE,MAAM,sBAAsB,EAErE,MAGR,GAAIqhC,EACArgC,EAAQ,CAACutB,CAAK,MACX,CACH,QAASvuB,EAAE,EAAEC,EAAKF,EAAI,OAAO,EAAGC,EAAEC,EAAMD,IACpCgB,EAAM,KAAKjB,EAAIC,CAAC,CAAC,EACjBgB,EAAM,KAAKJ,EAAEZ,CAAC,CAAC,EAEnBgB,EAAM,KAAKjB,EAAIA,EAAI,OAAO,CAAC,CAAC,EAE5BiB,EAAQggC,EAAiBhgC,CAAK,CAAA,CAElC,KAEA,KAAIA,EAAQ,CAACutB,CAAK,EAMtB,QAHIK,EAAS,CAAA,EACTta,GAAQ4sB,EACRL,EAAY,GACP7gC,EAAE,EAAEC,EAAKe,EAAM,OAAOhB,EAAEC,EAAKD,GAAK,EAAG,CAM1C,IAAIY,EAAII,EAAMhB,CAAC,EAAE,MAAM,uJAAuJ,EAC9K,GAAIY,EAAG,CAGH,QAFIb,EAAMiB,EAAMhB,CAAC,EAAE,MAAM,wJAAwJ,EAExKQ,EAAET,EAAI,OAAO,EAAES,EAAE,EAAEA,IACpBT,EAAIS,EAAE,CAAC,IAAM,CAACT,EAAIS,CAAC,EAAE,MAAM,yBAAyB,GAAK,CAACT,EAAIS,EAAE,CAAC,EAAE,MAAM,yBAAyB,KAClGT,EAAIS,EAAE,CAAC,EAAIT,EAAIS,EAAE,CAAC,EAAII,EAAEJ,EAAE,CAAC,EAAIT,EAAIS,CAAC,EACpCT,EAAMA,EAAI,MAAM,EAAES,CAAC,EAAE,OAAOT,EAAI,MAAMS,EAAE,CAAC,CAAC,EAC1CI,EAAIA,EAAE,MAAM,EAAEJ,EAAE,CAAC,EAAE,OAAOI,EAAE,MAAMJ,CAAC,CAAC,GAI5C,GAAII,EAAE,OAAS,EAAG,CACd,IAAI0gC,EAAO1gC,EAAE,CAAC,EAAE,KAAA,EACZ2gC,GAAY,CAAC5hC,EAAI,uBAAuB2hC,CAAI,GACzB,OAAOh3B,EAAG,QAAQ3K,EAAI,uBAAuB2hC,CAAI,CAAC,EAAlE,KACC,CAAC,UAAW,SAAU,gBAAiB,MAAM,EAAE,QAAQ7V,CAAQ,IAAM,IAAM9rB,EAAI,uBAAuB2hC,CAAI,IAAM7V,EACpH8V,GACIvhC,IAAM,IACNY,EAAIA,EAAE,MAAM,CAAC,EACbb,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAI,IAAMuhC,EAAO,IAAMvhC,EAAI,CAAC,EAC1CA,EAAMA,EAAI,MAAM,EAAE,CAAC,EAAE,OAAOA,EAAI,MAAM,CAAC,CAAC,GAG5C8gC,EAAYS,CAChB,CAGJ,QAAS9gC,EAAE,EAAEY,GAAKrB,EAAI,OAAQS,EAAEY,GAAMZ,IAClC,GAAIT,EAAIS,CAAC,GAAKA,IAAOT,EAAI,OAAO,EAAI,CAChC,IAAIyhC,EACJltB,GAAQ1T,EAAEJ,EAAE,CAAC,EAAII,EAAEJ,EAAE,CAAC,EAAI8T,GACtBusB,IAAcvsB,GAAM,OACpBktB,EAAoB,GAEpBA,EAAoBX,EAGxBtS,EAAQxuB,EAAIS,CAAC,EAAIT,EAAIS,CAAC,EAAE,OAAS,GAC7BA,IAAOT,EAAI,OAAO,EAClB6uB,EAAO,KAAKgS,EAAkBY,EAAmBltB,GAAOia,EAAOvtB,EAAMhB,EAAE,CAAC,EAAGA,CAAC,CAAC,EAE7E4uB,EAAO,KAAKgS,EAAkBY,EAAmBltB,GAAOia,EAAO,KAAMvuB,CAAC,CAAC,CAC3E,CAER,KACG,CACH,IAAIwhC,EACAX,IAAcvsB,GAAM,OACpBktB,EAAoB,GAEpBA,EAAoBX,EAExBjS,EAAO,KAAKgS,EAAkBY,EAAmBltB,GAAOtT,EAAMhB,CAAC,EAAGgB,EAAMhB,EAAE,CAAC,CAAC,CAAC,CAAA,CACjF,CAEJ,OAAO4uB,CAAA,CAGX,SAAS6S,EAAU7S,EAAQ,CAEvB,QAAS5uB,EAAE,EAAEC,EAAK2uB,EAAO,OAAO,EAAE5uB,EAAEC,EAAKD,IACjC,CAAC4uB,EAAO5uB,CAAC,EAAE,eAAiB4uB,EAAO5uB,EAAE,CAAC,EAAE,QACxC4uB,EAAO5uB,CAAC,EAAE,cAAgB,IAElC,CAGJ,SAAS0hC,EAAmB9S,EAAQ5uB,EAAG2hC,EAAkB,CACrD,IAAIC,EAAShT,EAAO+S,EAAiB,GAAG,EACpClgC,EAAMmtB,EAAO5uB,CAAC,EAAE,MAChB6hC,EAAkBD,EAAO,gBAAkB,MAC3CngC,EAAI,UAAYA,EAAI,WAAamgC,EAAO,WACxCD,EAAiB,YAAc,IAEnC,IAAIG,EAAOrgC,EAAI,MAAM,wBAAwB,EACzCsgC,EAAgBH,EAAO,MAAM,MAAM,8CAA8C,EAarF,IAZI,CAACngC,GAAO,CAACqgC,GAAQ,CAACC,GAAiBF,KACnCF,EAAiB,YAAc,IAC3B,CAAClgC,GAAO,CAACsgC,KACTJ,EAAiB,QAAU,IAE3BE,GACAF,EAAiB,UAGpBG,GAAQA,EAAK,CAAC,GAAOC,GAAiBA,EAAc,CAAC,KACtDJ,EAAiB,YAAc,IAEjB/S,EAAO5uB,CAAC,EAAE,cAAxB,OAAqC,CACrC,QAASQ,EAAER,EAAEoB,EAAKpB,EAAE2hC,EAAiB,MAAMnhC,EAAEY,EAAKZ,IAC1C,MAAM,SAASouB,EAAOpuB,CAAC,EAAE,KAAK,CAAC,GAAK,CAACouB,EAAOpuB,CAAC,EAAE,MAAM,MAAM,mBAAmB,EAC9EouB,EAAOpuB,CAAC,EAAE,YAAc,GAExBouB,EAAOpuB,CAAC,EAAE,YAAc,GAGhCmhC,EAAiB,YAAc/S,EAAO5uB,CAAC,EAAE,WAAA,CAG7C,QADIgiC,EAAgBL,EAAiB,YAC5BnhC,EAAEmhC,EAAiB,IAAIvgC,EAAMugC,EAAiB,IAAMA,EAAiB,MAAQnhC,EAAEY,EAAMZ,IACtFmhC,EAAiB,MAAQ,GAAKK,IAC9BpT,EAAOpuB,CAAC,EAAE,OAAS,GAEvBouB,EAAOpuB,CAAC,EAAE,QAAUmhC,EAAiB,QACrC/S,EAAOpuB,CAAC,EAAE,YAAcmhC,EAAiB,WAC7C,CAGJ,SAASM,EAAmBrT,EAAQsT,EAAeP,EAAkB,CAC7DA,EAAiB,MAAM,MAAM,EAAG,CAAC,IAAM,SACnCA,EAAiB,MAAQ,GACrB,CAAC,UAAW,SAAU,gBAAiB,MAAM,EAAE,QAAQlW,CAAQ,EAAI,IAE/C,OAAOnhB,EAAG,QAAQ3K,EAAI,uBAAuBgiC,EAAiB,KAAK,CAAC,EAApF,MACA/S,EAAO+S,EAAiB,GAAG,EAAE,gBAAkB,IAOnD,CAAC,UAAW,SAAU,gBAAiB,MAAM,EAAE,QAAQlW,CAAQ,IAAM,IACjE9rB,EAAI,uBAAuBgiC,EAAiB,KAAK,IAAMlW,IACvDmD,EAAO,CAAC,EAAE,gBAAkB,KAOpCA,EAAO+S,EAAiB,GAAG,EAAE,gBAAkB,GAGvD,CAGJ,SAASQ,EAAsBvT,EAAQ,CACnC,GAAIA,EAAO,SAAW,EAMtB,SAHIsT,EAAgB,EAChBE,EAAa,EAERpiC,EAAE,EAAEC,EAAK2uB,EAAO,OAAO5uB,EAAEC,EAAKD,IAAK,CACxC,IAAIqiC,EAAUzT,EAAO5uB,EAAE,CAAC,EACpBsiC,EAAU1T,EAAO5uB,CAAC,EACtB,GAAIqiC,EAAQ,QAAUC,EAAQ,OAASD,EAAQ,WAAaA,EAAQ,SAChED,QACG,CACH,IAAIT,EAAmB,KAAK,MAAM,KAAK,UAAU/S,EAAOsT,CAAa,CAAC,CAAC,EACvEP,EAAiB,IAAMO,EACvBP,EAAiB,MAAQS,EACzBT,EAAiB,QAAU,GAC3BD,EAAmB9S,EAAQsT,EAAeP,CAAgB,EACtDU,EAAQ,QAAUC,EAAQ,OAC1BL,EAAmBrT,EAAQsT,EAAeP,CAAgB,EAE9DO,EAAgBliC,EAChBoiC,EAAa,CAAA,CACjB,CAGJ,IAAIT,EAAmB,KAAK,MAAM,KAAK,UAAU/S,EAAOsT,CAAa,CAAC,CAAC,EACvEP,EAAiB,IAAMO,EACvBP,EAAiB,MAAQS,EACzBT,EAAiB,QAAU,GAC3BD,EAAmB9S,EAAQsT,EAAeP,CAAgB,EAC1DM,EAAmBrT,EAAQsT,EAAeP,CAAgB,EACtD/S,EAAO,QAAUA,EAAO,CAAC,EAAE,SAAWnD,EAAS,MAAM,EAAG,EAAE,IAAM,cAC5D,SAASwU,EAAWC,CAAY,EAAG,EAAE,EAAI,IACzCtR,EAAO,CAAC,EAAE,OAAS,GAE3B,CAGJ,SAAS2T,EAAqBzB,EAAe,CACzC,OAAOA,EAAc,QAAQ,MAAO,GAAG,CAAA,CAG3C,SAAS0B,EAAW5T,EAAQ,CACxB,IAAI6T,EAAa9iC,EAAI,KAAK,WAAWwG,CAAI,EACrCu8B,EAAgB,IAAI/iC,EAAI,MACvB2K,EAAG,IAAI,eAERo4B,EAAc,YAAcD,EAAW,YACvCA,EAAW,YAAc,CAAA,EASzBC,EAAc,QAAQ,OAASD,EAAW,QAAQ,OAClDA,EAAW,QAAQ,OAAS,GAC5BC,EAAc,QAAQ,OAASD,EAAW,QAAQ,OAClDA,EAAW,QAAQ,OAAS,IAEhC,IAAIE,EAAc/T,EAAO,OAASA,EAAO,CAAC,EAAE,MAAQ,KACpD,GAAIA,EAAO,OAAQ,CACf,QAAS5uB,EAAE,EAAEC,EAAK2uB,EAAO,OAAQ5uB,EAAEC,EAAMD,IAAK,CAC1C,IAAIyB,EAAMmtB,EAAO5uB,CAAC,EAEd4iC,EAAUjjC,EAAI,KAAK,WAAW8iC,CAAU,EAC5CG,EAAQ,OAASz8B,EAAK,OAClBw8B,IAAgBlhC,EAAI,QACpBmhC,EAAQ,UAAYz8B,EAAK,WAEzB1E,EAAI,UACJmhC,EAAQ,iBAAmBnhC,EAAI,kBAEnCmhC,EAAQ,QAAQ,OAASA,EAAQ,QAAQ,OAASL,EAAqB9gC,EAAI,aAAa,EACxFA,EAAI,QAAUmhC,CAAA,CAEbt4B,EAAG,IAAI,cACJskB,EAAO,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC,IAAM,KAAQA,EAAOA,EAAO,OAAO,CAAC,EAAE,MAAM,MAAM,EAAE,IAAM,MACnFA,EAAO,CAAC,EAAE,MAAQA,EAAO,CAAC,EAAE,MAAM,MAAM,CAAC,EACzCA,EAAOA,EAAO,OAAO,CAAC,EAAE,MAAQA,EAAOA,EAAO,OAAO,CAAC,EAAE,MAAM,MAAM,EAAE,EAAE,EACxE8T,EAAc,YAAY,KAAK,CAAC,UAAW,EAAI,CAAC,EAExD,CAEJ,OAAOA,CAAA,CAGX,SAASG,EAAUpX,EAAUhqB,EAAK,CAC9B,IAAIvB,EAAM,GACV,GAAI,CAAC,UAAW,gBAAiB,MAAM,EAAE,QAAQurB,CAAQ,EAAI,GAAI,CAC7D,IAAInX,EACA7S,EAAI,UACJ6S,EAAQ7S,EAAI,UAEZ6S,EAAQ7S,EAAI,MAEhBvB,EAAM,CAAC,CAACoK,EAAG,QAAQ3K,EAAI,uBAAuB2U,CAAK,CAAC,CAAA,CAExD,OAAOpU,CAAA,CAGX,SAAS4iC,EAAUrX,EAAUhqB,EAAK,CAC9B,OAAkBgqB,IAAX,QACC,CAAC,UAAW,eAAe,EAAE,QAAQA,CAAQ,EAAI,KAAO,CAAC,IAAI,EAAE,QAAQhqB,EAAI,KAAK,EAAI,IAAM,CAAC,IAAI,EAAE,QAAQA,EAAI,SAAS,EAAI,GAAA,CAGtI,SAASshC,EAAoBtX,EAAUhqB,EAAKuhC,EAAgBC,EAAW,CACnE,IAAIC,EAASJ,EAAUrX,EAAUhqB,CAAG,EAChC0hC,EAAUN,EAAUpX,EAAUhqB,CAAG,EACrC,OAAI0hC,GAAWH,IAAmB,KAC1BC,KACIC,GAAU,CAAC,UAAW,gBAAiB,QAAS,SAAU,UAAW,QAAQ,EAAE,QAAQzX,CAAQ,EAAI,MACnGuX,EAAiB14B,EAAG,QAAQ,sBAAsB,EAC7C04B,IACDA,EAAiB,MAGrBvX,IAAa,sBACbuX,EAAiB14B,EAAG,QAAQ,sBAAsB,EAC7C04B,IACDA,EAAiB,OAQ1BA,CAAA,CAGX,SAASI,EAAkBxU,EAAQ5uB,EAAGqjC,EAAa,CAC/C,GAAI,EAAArjC,EAAE,IAGFqjC,EAAY,QAAU,GAGtBzU,EAAO5uB,EAAE,CAAC,EAAE,WAAa4uB,EAAO5uB,CAAC,EAAE,SAGvC,IAAI4uB,EAAO5uB,EAAE,CAAC,EAAE,gBAAkB,IAAK,CACnCqjC,EAAY,MAAQ,EACpB,MAAA,CAEJ,GAAI,CAAC/4B,EAAG,IAAI,mBAAmB,GAAM,SAASskB,EAAO5uB,EAAE,CAAC,EAAE,MAAO,EAAE,EAAI,SAAS4uB,EAAO5uB,CAAC,EAAE,MAAO,EAAE,EAAI,CACnG4uB,EAAO5uB,EAAE,CAAC,EAAE,cAAgB+iC,EAAoBtX,EAAUmD,EAAO5uB,CAAC,EAAG4uB,EAAO5uB,EAAE,CAAC,EAAE,cAAe,EAAI,EACpG,MAAA,CAEJ,IAAIyB,EAAMmtB,EAAO5uB,CAAC,EAEdkjC,EAASJ,EAAUrX,EAAUhqB,CAAG,EAChC7B,EACAsjC,GAAU,CAAC,MAAM,SAAStU,EAAO5uB,EAAE,CAAC,EAAE,KAAK,CAAC,GAAK,CAAC,MAAM,SAAS4uB,EAAO5uB,CAAC,EAAE,KAAK,CAAC,GACjFJ,EAAMgvB,EAAO5uB,EAAE,CAAC,EAAE,SAAW4uB,EAAO5uB,EAAE,CAAC,EAAE,MAAQ,MAAQ4uB,EAAO5uB,CAAC,EAAE,SAAW4uB,EAAO5uB,CAAC,EAAE,MACxFJ,EAAM0K,EAAG,IAAI,aAAa1K,CAAG,KAGxB,GAAKgvB,EAAO5uB,EAAE,CAAC,EAAE,OAAO,MAAM,4BAA4B,IAAM,GAAK4uB,EAAO5uB,CAAC,EAAE,OAAO,MAAM,4BAA4B,IACzH4uB,EAAO5uB,EAAE,CAAC,EAAE,cAAgBsK,EAAG,QAAQ,sBAAsB,GAEjE1K,EAAMgvB,EAAO5uB,EAAE,CAAC,EAAE,MAAQuiC,EAAqB3T,EAAO5uB,EAAE,CAAC,EAAE,aAAa,EAAI4uB,EAAO5uB,CAAC,EAAE,OAE1F,IAAIY,EAAIhB,EAAI,MAAM,sFAAsF,EAExG,GAAIgB,EAAG,CACH,IAAIoiC,EAAiBpiC,EAAE,CAAC,EACxBoiC,EAAiBD,EAAoBtX,EAAUhqB,EAAKuhC,EAAgBpU,EAAO5uB,CAAC,EAAE,OAAO,EACrF4uB,EAAO5uB,EAAE,CAAC,EAAE,SAAWY,EAAE,CAAC,EAC1BguB,EAAO5uB,EAAE,CAAC,EAAE,MAAQY,EAAE,CAAC,EACvBguB,EAAO5uB,EAAE,CAAC,EAAE,cAAgBgjC,EAC5BpU,EAAO5uB,CAAC,EAAE,SAAWY,EAAE,CAAC,EACxBguB,EAAO5uB,CAAC,EAAE,MAAQY,EAAE,CAAC,CAAA,CAEzByiC,EAAY,MAAQ,EAAA,CAGxB,SAASC,EAAU1U,EAAQ,CAEvB,GAAKzoB,GAGD,CAAC,OAAQ,iBAAkB,oBAAqB,UAAW,QAAS,SAAU,kBAAmB,oBAAqB,SAAU,UAAW,eAAe,EAAE,QAAQslB,CAAQ,IAAM,GAUtL,SANI4X,EAAc,CACd,MAAO,EACP,MAAO,IACgB,EAGlBrjC,EAAE,EAAEC,EAAK2uB,EAAO,OAAQ5uB,EAAEC,EAAMD,IAAK,CAC1C,IAAIyB,EAAMmtB,EAAO5uB,CAAC,EAClB,GAAKyB,EAAI,YAKE4hC,EAAY,QAAU5hC,EAAI,OAASA,EAAI,gBAAkB,IAEhE4hC,EAAY,MAAQ,EACbA,EAAY,QAAU5hC,EAAI,OAASA,EAAI,gBAAkB,KAEhE4hC,EAAY,QACRA,EAAY,QAAU,GACtBD,EAAkBxU,EAAQ5uB,EAAGqjC,CAAW,GAErCA,EAAY,QAAU5hC,EAAI,OAEjC4hC,EAAY,MAAQ5hC,EAAI,MACxB4hC,EAAY,MAAQ,IAIpBA,EAAY,MAAQ,EACpBA,EAAY,MAAQ5hC,EAAI,WAtBN,CAClB4hC,EAAY,MAAQ,EACpBA,EAAY,MAAQ,KACpB,IAAIJ,EAAYxhC,EAAI,QACpBA,EAAI,cAAgBshC,EAAoBtX,EAAUhqB,EAAKA,EAAI,cAAewhC,CAAS,CAAA,CAmBvF,CAGAI,EAAY,QAAU,GACtBD,EAAkBxU,EAAQA,EAAO,OAAO,EAAGyU,CAAW,EAC1D,CAGJ,SAASE,EAAkBC,EAAgBtD,EAActR,EAAQ,CAC7D,IAAI7mB,EAAMy7B,EAAetD,CAAY,EACjCtR,EAAO,SACP7mB,EAAI,QAAU6mB,EAAO,CAAC,EAAE,QACxB7mB,EAAI,YAAc6mB,EAAO,CAAC,EAAE,YAC5B7mB,EAAI,OAAS6mB,EAAO,CAAC,EAAE,OACvB7mB,EAAI,MAAQpI,EAAI,uBAAuBivB,EAAO,CAAC,EAAE,KAAK,EAClDnD,IAAa,UAAY1jB,EAAI,QAAU,SAAWuC,EAAG,QAAQ,QAAQ,IACrEvC,EAAI,MAAQ,UAEpB,CAMJ,GAAI5B,GAAQ,KAAK,IAAI,eAAe+5B,CAAY,GAAK,KAAK,IAAI,eAAeA,CAAY,EAAE,OAAO,OAAQ,CACtG,IAAItR,EAAS,KAAK,IAAI,eAAesR,CAAY,EAAE,OACnDoD,EAAU1U,CAAM,EAEZ,KAAK,IAAI,eAAesR,CAAY,EAAE,cAAgBsC,EAAW5T,CAAM,EAE3E,MAAA,CAkBJ,GAVK,KAAK,IAAI,eAAesR,CAAY,IACrC,KAAK,IAAI,eAAeA,CAAY,EAAI,CACpC,OAAO,CAAA,IAQX,EAACD,EAKL,KAAIwD,EAAe9jC,EAAI,aAAa8rB,CAAQ,EAC5C,GAAIgY,EAAc,CACd,IAAIC,EAAa,KAAK,IAAI,iBAAiB,EAAED,CAAY,EAAE,CAAC,EAC5DhiC,EAAM,KAAK,UAAU,gBAAgBw+B,EAAYC,EAAc,UAAUwD,EAAY,EAAI,EACzFjiC,EAAMA,EAAI,IAAA,MAEVA,EAAMw+B,EAAWC,CAAY,EASjC,GANIz+B,GAAOy+B,IAAiB,UAAYD,EAAW,OAAS,eACxDx+B,EAAMA,EAAI,QAAQ,UAAW,KAAK,GAKlCA,GAAO,KAAK,IAAI,gBAAiB,CAMjC,GAAI,KAAK,IAAI,oBACT,IAAIkiC,EAAU,KAAK,IAAI,oBAAoBzD,EAAcz+B,CAAG,MAE5D,KAAIkiC,EAAUliC,EAElB,IAAI0D,EAAe,KAAK,UAAU,iBAAiB86B,EAAW,aAAc,SAAU0D,EAAS1D,EAAW,QAAQ,EAC9G,KAAK,UAAU,QAAQ96B,CAAY,EAAE,SACjC,KAAK,UAAU,QAAQA,CAAY,EAAE,OAAOw+B,CAAO,EACnDliC,EAAM,KAAK,UAAU,QAAQ0D,CAAY,EAAE,OAAOw+B,CAAO,EAOrC,OAAO,KAAK,UAAU,QAAQx+B,CAAY,EAAE,OAAOw+B,CAAO,EAA1E,KACA,OAAO,KAAK,UAAU,QAAQx+B,CAAY,EAAE,OAAOw+B,CAAO,EAGtE,CAcJ,GAAoB,OAAOliC,EAAvB,MAA4C,OAAOA,GAApB,UAAwC,OAAOA,GAApB,UAA0B,CACnE,OAAOA,GAApB,WACAA,EAAM,GAAKA,GAEf,IAAIy/B,EAAevhC,EAAI,+BAA+B8rB,CAAQ,EAE9D,GAAI,KAAK,IAAI,eAAeyU,CAAY,EAAE,OAAO,SAAW,EAAG,CAE3D,IAAItR,EAASqS,EAAYx/B,EAAKy/B,CAAY,EAE1CO,EAAU7S,CAAM,EAGhBuT,EAAsBvT,CAAM,EAG5B,QAAS7mB,KAAO6mB,EACP7mB,EAAI,UAASA,EAAI,OAAS,GAEnC,KAAK,IAAI,eAAem4B,CAAY,EAAE,OAAStR,EAG3CzoB,IACAm9B,EAAU1U,CAAM,EAEhB,KAAK,IAAI,eAAesR,CAAY,EAAE,cAAgBsC,EAAW5T,CAAM,GAG3E2U,EAAkB,KAAK,IAAI,eAAgBrD,EAActR,CAAM,CAAA,CAInE,IAAI1D,EAAO,KAAK,IAAI,eAAegV,CAAY,EAC3CzU,IAAa,UACTP,EAAK,OAAO,SAAW,GAAKA,EAAK,OAAO,CAAC,EAAE,MAAM,QAAQ,GAAG,EAAI,KAChEA,EAAK,OAAO,CAAC,EAAE,MAAQA,EAAK,OAAO,CAAC,EAAE,MAAM,QAAQ,MAAO,IAAI,EAC/DA,EAAK,OAAO,CAAC,EAAE,QAAU,GACzBA,EAAK,OAAO,CAAC,EAAE,OAAS,EACxBA,EAAK,OAAO,CAAC,EAAE,YAAc,GAC7BA,EAAK,QAAU,GACfA,EAAK,OAAS,EACdA,EAAK,YAAc,IAGvBA,EAAK,OAAO,SAAW,GACnBA,EAAK,OAAO,CAAC,EAAE,MAAM,MAAM,uBAAuB,IAClDA,EAAK,OAAO,CAAC,EAAE,QAAU,GACzBA,EAAK,OAAO,CAAC,EAAE,OAAS,EACxBA,EAAK,OAAO,CAAC,EAAE,YAAc,GAC7BA,EAAK,QAAU,GACfA,EAAK,OAAS,EACdA,EAAK,YAAc,IAGvBO,IAAa,QACTP,EAAK,OAAO,OAAS,GACjBA,EAAK,OAAO,CAAC,EAAE,mBACfA,EAAK,UAAY,QAG7B,EAGR,EAEAvrB,EAAI,KAAK,mBAAqB,SAASG,EAAO2R,EAASwT,EAAQ,CAE3DnlB,EAAM,OAAO,UAAUA,EAAM,IAAI,eAAe2R,CAAO,EAAE,aAAa,EACtE,IAAIixB,EAAgB5iC,EAAM,IAAI,eAAe2R,CAAO,EAAE,cAClDmyB,EAAO9jC,EAAM,IAAI,eAAe2R,CAAO,EAAE,OACzCkxB,EAAciB,EAAK,OAASA,EAAK,CAAC,EAAE,MAAQ,KAC5CC,EAAY/jC,EAAM,IAAI,eAAe2R,CAAO,EAAE,UAC9CqyB,EAAYhkC,EAAM,IAAI,cAAc,IAAI,aACxCikC,EACAF,EACAE,EAAoBF,EAEpBE,EAAoB,QAOxB,QAJIC,EAAyBlkC,EAAM,IAAI,eAAe2R,CAAO,EAAE,uBAC3DwyB,EAAmBnkC,EAAM,IAAI,eAAe2R,CAAO,EAAE,iBACrDyyB,EAAgB,KAEXlkC,EAAE,EAAEC,EAAK2jC,EAAK,OAAO5jC,EAAEC,EAAKD,IAAK,CACtC,IAAIkE,EAAM0/B,EAAK5jC,CAAC,EACZsU,EAAQ,GACR6vB,EACAjgC,EAAI,QACWA,EAAI,MAAM,MAAM,EAAE,CAAC,IAA9B,OACAigC,EAAYjgC,EAAI,MAAM,MAAM,CAAC,EAE7BigC,EAAYxkC,EAAI,uBAAuBuE,EAAI,KAAK,EAEhDigC,IAEIjgC,EAAI,QAAUy+B,GACVmB,IACAxvB,EAAQxU,EAAM,QAAQqkC,EAAW,SAAUjgC,EAAI,MAAM,EACjDoQ,EAAM,QAAQ,IAAI,IAAM,KACxBA,EAAQ,KAGXA,IACDA,EAAQxU,EAAM,QAAQqkC,EAAWN,EAAW3/B,EAAI,MAAM,KAGtD4/B,IACAxvB,EAAQxU,EAAM,QAAQqkC,EAAW,SAAUjgC,EAAI,MAAM,EACjDoQ,EAAM,QAAQ,IAAI,IAAM,KACxBA,EAAQ,KAGXA,IACDA,EAAQxU,EAAM,QAAQqkC,EAAWJ,EAAmB7/B,EAAI,MAAM,IAGlE8/B,IACA1vB,EAAQ3U,EAAI,OAAO,WAAW,kBAAkB,EAAEG,EAAOwU,CAAK,KAI1E,IAAI8vB,EAAsB,GACtB9vB,IACA8vB,EAAsB9vB,EAAM,QAAQ,IAAI,GAE5C,IAAI+vB,EAAa1kC,EAAI,KAAK,WAAWuE,EAAI,OAAO,EAMhD,GALAmgC,EAAW,UAAYngC,EAAI,QAAQ,UACnCmgC,EAAW,KAAOngC,EAAI,QAAQ,KAC9BmgC,EAAW,IAAMngC,EAAI,QAAQ,IAC7BmgC,EAAW,OAASngC,EAAI,QAAQ,OAE5BkgC,EAAsB,GAAKA,EAAuB9vB,EAAM,OAAO,EAC/D+vB,EAAW,QAAQ,QAAU/vB,EAAM,MAAM,EAAE8vB,CAAmB,EAC9DC,EAAW,QAAQ,OAAS/vB,EAAM,MAAM8vB,EAAoB,CAAC,EAAIC,EAAW,QAAQ,eAC7EngC,EAAI,gBAKX,GAJKoQ,IACDA,EAAQpQ,EAAI,MACZigC,EAAYjgC,EAAI,OAEhBkgC,EAAsB,EAAG,CACzB,IAAIE,EAAqB,IAAI3kC,EAAI,MACjC2kC,EAAmB,YAAcL,EACjCnkC,EAAM,OAAO,OAAOwU,EAAM,MAAM,EAAE8vB,CAAmB,EAAGE,CAAkB,CAAA,MACnEF,IAAyB9vB,EAAM,OAAO,GAAM8vB,IAAwB,KAE3EtkC,EAAM,OAAO,OAAOwU,EAAMpQ,EAAI,YAAa,OAAO,EAI1D,GADAvE,EAAI,+BAA+BG,EAAO4iC,EAAc,QAAQ,OAAQ,KAAMA,EAAe,GAAGx+B,EAAI,QAAQ,GAAGA,EAAI,KAAK,EAAE,EACtHA,EAAI,YAAa,CACjB,IAAIgQ,EACAhQ,EAAI,MAAM,MAAM,eAAe,GAAK,OAAO,cAAc,SAASA,EAAI,MAAO,EAAE,CAAC,EAChFgQ,EAAO,IAAIvU,EAAI,YAAYG,EAAOoE,EAAI,SAAU,SAASA,EAAI,MAAO,EAAE,EAAGmgC,EAAYpf,CAAM,EAE3F/Q,EAAO,IAAIvU,EAAI,YAAYG,EAAOoE,EAAI,SAAUA,EAAI,MAAOmgC,EAAYpf,CAAM,EAE7D,OAAO/Q,EAAK,OAA5B,MACAA,EAAK,OAASpU,EAAM,OAAOA,EAAM,IAAI,IAAI,EAAE,cAAc,EAAE2R,CAAO,GAEtE3R,EAAM,OAAO,OAAOoU,EAAM,SAAS,CAAA,MAEnCpU,EAAM,OAAO,OAAOoE,EAAI,SAAWA,EAAI,MAAOmgC,CAAU,EAE5D,GAAID,IAAwB,GAAKA,EAAuB9vB,EAAM,OAAO,IAE7D4vB,IAAkB,OAClBA,EAAgBC,GAEhBA,IAAcD,GAAiBlkC,IAAO4jC,EAAK,OAAO,GAAI,CACtD,IAAIW,EAAqB,IAAI5kC,EAAI,MACjC4kC,EAAmB,YAAcN,EACjCnkC,EAAM,OAAO,OAAOwU,EAAM,MAAM8vB,EAAoB,CAAC,EAAGG,CAAkB,CAAA,CAGlFL,EAAgBC,EAChBrkC,EAAM,IAAI,iBAAmB,EAAA,CAEjCA,EAAM,OAAO,WAAA,CACjB,EAIAH,EAAI,KAAK,iBAAmB,CAAA,EAE5BA,EAAI,KAAK,iBAAiB,YAAc,SAAUG,EAAO0kC,EAAW,CAChE,IAAIC,EAAU9/B,EAAKC,EAAK8/B,EAAWC,EAASC,EAAQC,EAAUC,EAAmBC,EAAWC,EAAWjlC,EAAKa,EAAG8J,EAAGkC,EAAG1M,EAAK+kC,EAAO1iC,EAAK2iC,EAElInb,EAAkBjqB,EAAM,QAAQ0kC,EAAY,kBAAkB,EAElEC,EAAW,yFAEXC,EAAY,SAAU3kC,EAAK,CAEvB,IADA6E,EAAM7E,EAAI,OACL4E,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EACX,OAAO5E,EAAI4E,CAAG,GAA3B,WACA5E,EAAI4E,CAAG,EAAI5E,EAAI4E,CAAG,EAAE,KAAK,EAAE,GAGnC,IAAIzE,EAAMH,EAAI,KAAK,EAAE,EACrBG,OAAAA,EAAMA,EAAI,QAAQ,aAAc,KAAKJ,EAAM,QAAQ0kC,EAAY,kBAAkB,CAAC,EAC3EtkC,CAAA,EAGXykC,EAAU,SAAU/kC,EAAK,CACrB,IAAIgB,EAAGb,EAAKG,EAERilC,EAAU,cAEVC,EAAuBrb,IAAoB,IAAM,GAAKA,EACtDsb,EAAW,IAAI,OAAO,cAAgBD,EAAuB,WAAY,GAAG,EAChFxlC,EAAMA,EAAI,QAAQylC,EAAU,OAAO,EAAE,QAAQ,WAAY,KAAK,EAI9D,IAAIC,EAAO,IAAI,OAAO,sCAAwCH,EAAU,sCAAuC,GAAG,EAC9GI,EAAS,IAAI,OAAO,qCAAuCJ,EAAU,oCAAoC,EAG7G,GAFAvkC,EAAIhB,EAAI,MAAM0lC,CAAI,EAClBvlC,EAAMH,EAAI,MAAM2lC,CAAM,EAClBxlC,EAAI,SAAW,EACfG,EAAMU,MAGN,KADAV,EAAM,CAACH,EAAI,CAAC,CAAC,EACR4E,EAAM,EAAGC,EAAM7E,EAAI,OAAQ4E,EAAMC,EAAKD,GAAO,EAC9CzE,EAAI,KAAKU,EAAE+D,EAAM,CAAC,EAAE,QAAQ,YAAa,GAAG,CAAC,EAC7CzE,EAAI,KAAKH,EAAI4E,CAAG,CAAC,EAGzB,OAAOzE,CAAA,EAGX0kC,EAAS,SAAUhlC,EAAK,CAIpB,IAHAA,EAAM,GAAKA,EACXG,EAAM4kC,EAAQ/kC,CAAG,EACjBgF,EAAM7E,EAAI,OACL4E,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAC5B/D,EAAIb,EAAI4E,CAAG,EAAE,MAAM8/B,CAAQ,EACvB7jC,IACI,CAACA,EAAE,CAAC,GAAKA,EAAE,CAAC,IAAMA,EAAE,CAAC,KACjBA,EAAE,CAAC,EAAE,OAASA,EAAE,CAAC,EAAE,SACnBA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAE,MAAM,EAAIA,EAAE,CAAC,EAAE,OAASA,EAAE,CAAC,EAAE,MAAO,EAAIA,EAAE,CAAC,GAEvD,SAASA,EAAE,CAAC,EAAG,EAAE,EAAI,SAASA,EAAE,CAAC,EAAG,EAAE,IACtCA,EAAE,CAAC,EAAImpB,GAAmBnpB,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAI,IACxCb,EAAI4E,CAAG,EAAI/D,EAAE,MAAM,CAAC,IAIf,OAAOb,EAAI4E,CAAG,GAA3B,WACA5E,EAAI4E,CAAG,EAAI5E,EAAI4E,CAAG,EAAE,QAAQ,MAAOolB,CAAe,GAG1D,OAAOhqB,CAAA,EAGX8kC,EAAW,SAAU9kC,EAAKylC,EAAUC,EAAQ,CACxC7gC,EAAM7E,EAAI,OACV,QAASC,EAAI,EAAGC,EAAOF,EAAI,OAAQC,EAAIC,EAAMD,GAAK,EAC7B,OAAOD,EAAIC,CAAC,GAAzB,WACAD,EAAIC,CAAC,EAAE,CAAC,EAAI8kC,EAAkB/kC,EAAIC,CAAC,EAAE,CAAC,EAAGD,EAAIC,CAAC,EAAE,CAAC,EAAGwlC,EAAUC,CAAM,EAChE1lC,EAAIC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAMD,EAAIC,CAAC,EAAE,CAAC,IAC/BD,EAAIC,CAAC,EAAE,CAAC,EAAI+pB,IAIxB,OAAO2a,EAAU3kC,CAAG,CAAA,EAGxB+kC,EAAoB,SAAUG,EAAO1iC,EAAKijC,EAAUC,EAAQ,CAQxD,GAPKD,IACDA,EAAW,GAEf96B,GAAK,GAAKu6B,GAAO,MAAM,EAAE,EACzBr4B,GAAK,GAAKrK,GAAK,MAAM,EAAE,EACvBrC,EAAM0M,EAAE,MAAA,EACR1M,EAAI,QAAA,EACAwK,EAAE,SAAWkC,EAAE,OACf,QAAS5M,EAAI,EAAGC,EAAOyK,EAAE,OAAQ1K,EAAIC,EAAMD,GAAK,EAC5C,GAAI0K,EAAE1K,CAAC,IAAM4M,EAAE5M,CAAC,GAAKE,EAAI,OAASslC,EAC9BtlC,EAAI,IAAA,MACD,CACH,GAAIslC,GAAYC,GAAUvlC,EAAI,SAAW,EAAG,CACxC,IAAIwlC,EAAQh7B,EAAE,MAAM,EAAG1K,CAAC,EACxB0lC,EAAM,QAAA,EACNxlC,EAAMA,EAAI,OAAOwlC,CAAK,CAAA,CAE1B,KAAA,CAIZ,OAAAxlC,EAAI,QAAA,EACGA,EAAI,KAAK,EAAE,CAAA,EAGtB6kC,EAAY,SAAUhlC,EAAK,CAEvB,IADA6E,EAAM7E,EAAI,OACL4E,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EACX,OAAO5E,EAAI4E,CAAG,GAA3B,WACA/D,EAAIb,EAAI4E,CAAG,EACXsgC,EAAQ,SAASrkC,EAAE,CAAC,EAAG,EAAE,EACzB2B,EAAM,SAAS3B,EAAE,CAAC,EAAG,EAAE,EACnBqkC,EAAQ,KAAOA,EAAQ,KAAO,SAAUA,EAAQ,IAAM,EAAE,IAAM,SAAU1iC,EAAM,IAAM,EAAE,EACtF3B,EAAE,CAAC,EAAI,GAAM2B,EAAM,IACZ0iC,GAAS,MAChBrkC,EAAE,CAAC,EAAI,GAAM2B,EAAM,MAGvB3B,EAAE,CAAC,EAAE,MAAM,CAAC,IAAMA,EAAE,CAAC,IACrBA,EAAE,CAAC,EAAImpB,GAGf,OAAO2a,EAAU3kC,CAAG,CAAA,EAGxBilC,EAAY,SAAUjlC,EAAK,CAEvB,IADA6E,EAAM7E,EAAI,OACL4E,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAAG,CAC/B,GAAiB,OAAO5E,EAAI4E,CAAG,GAA3B,WACA/D,EAAIb,EAAI4E,CAAG,EACXsgC,EAAQ,SAASrkC,EAAE,CAAC,EAAG,EAAE,EACzB2B,EAAM,SAAS3B,EAAE,CAAC,EAAG,EAAE,EACvBgM,EAAI,GAAKrK,EACL0iC,EAAQ,KAAOA,EAAQ,KACvB,QAASjlC,EAAI,EAAGA,EAAI4M,EAAE,OAAQ5M,IAAK,CAC/B,IAAI2lC,EAAU,KAAK,IAAI,GAAI3lC,CAAC,EAC5B,GAAI,KAAK,MAAMilC,EAAQU,CAAO,IAAM,KAAK,MAAMpjC,EAAMojC,CAAO,EAAG,CAC3D/kC,EAAE,CAAC,EAAI,GAAM2B,EAAMojC,EACnB,KAAA,CACJ,CAIR/kC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAMA,EAAE,CAAC,IACrBA,EAAE,CAAC,EAAImpB,EACX,CAEJ,OAAO2a,EAAU3kC,CAAG,CAAA,EAMxB,IAAI6lC,EAAQ,SAAUhmC,EAAKmM,EAAMy5B,EAAUC,EAAQ,CAC/C,IAAIvlC,EACVN,EAAM,GAAKA,EACX,IAAIG,EAAM6kC,EAAOhlC,CAAG,EACVM,EAAM6L,EAAKhM,EAAKylC,EAAUC,CAAM,EACpC,OAAOvlC,CAAA,EAEX,OAAKJ,EAAM,IAAI0kC,EAAY,eAAe,EAK/B1kC,EAAM,IAAI0kC,EAAY,eAAe,IAAM,WAClDU,EAAW,SAAUtlC,EAAK,CACtB,OAAOgmC,EAAMhmC,EAAK8kC,CAAS,CAAA,EAExB5kC,EAAM,IAAI0kC,EAAY,eAAe,IAAM,UAClDU,EAAW,SAAUtlC,EAAK,CACtB,OAAOgmC,EAAMhmC,EAAKilC,CAAQ,CAAA,EAEvB/kC,EAAM,IAAI0kC,EAAY,eAAe,IAAM,cAClDU,EAAW,SAAUtlC,EAAK6lC,EAAQ,CAC9B,OAAOG,EAAMhmC,EAAKilC,EAAU,EAAGY,CAAM,CAAA,EAElC3lC,EAAM,IAAI0kC,EAAY,eAAe,IAAM,UAClDU,EAAW,SAAUtlC,EAAK,CACtB,OAAOgmC,EAAMhmC,EAAKmlC,CAAS,CAAA,EAExBjlC,EAAM,IAAI0kC,EAAY,eAAe,IAAM,aAClDU,EAAW,SAAUtlC,EAAK,CACtB,OAAOgmC,EAAMhmC,EAAKmlC,CAAS,CAAA,EAExBjlC,EAAM,IAAI0kC,EAAY,eAAe,IAAM,eAClDU,EAAW,SAAUtlC,EAAK,CACtB,OAAOgmC,EAAMhmC,EAAKolC,CAAS,CAAA,GA1B/BE,EAAW,SAAUtlC,EAAK,CAEtB,OAAOgmC,EAAMhmC,EAAK8kC,CAAS,CAAA,EA4B5BQ,CACX,EAaAvlC,EAAI,KAAK,YAAc,SAASG,EAAO,CAMnC,IAAI+lC,EAAgB,CAAA,EAEhBC,EAAe,CACf,wBAA2B,CACvB,KAAM,SACN,OAAQ,wBACR,OAAQ,UACR,KAAM,KACN,MAAO,KACP,SAAU,MAEd,yBAA4B,CACxB,KAAM,UACN,OAAQ,yBACR,OAAQ,UACR,KAAM,SACN,MAAO,UACP,SAAU,CACN,QAAW,SAAA,GAGnB,0CAA6C,CACzC,KAAM,MACN,OAAQ,0CACR,OAAQ,UACR,KAAM,gBACN,MAAO,aACP,SAAU,CACN,aAAc,SACd,OAAU,YAAA,GAGlB,OAAQ,CACJ,KAAM,MACN,OAAQ,OACR,OAAQ,QACR,KAAM,gBACN,MAAO,aACP,SAAU,CACN,aAAc,SACd,OAAU,YAAA,GAGlB,MAAO,CACH,KAAM,MACN,OAAQ,MACR,OAAQ,OACR,KAAM,cACN,MAAO,SACP,SAAU,CACN,OAAU,SACV,OAAU,QAAA,GAGlB,MAAO,CACH,KAAM,MACN,OAAQ,MACR,OAAQ,OACR,KAAM,eACN,MAAO,OACP,SAAU,CACN,KAAQ,SACR,OAAU,MAAA,GAGlB,QAAS,CACL,KAAM,MACN,OAAQ,QACR,OAAQ,SACR,KAAM,kBACN,MAAO,MACP,SAAU,CACN,IAAO,MACP,IAAO,KAAA,GAGf,QAAS,CACL,KAAM,MACN,OAAQ,QACR,OAAQ,SACR,KAAM,kBACN,MAAO,MACP,SAAU,CACN,IAAO,MACP,IAAO,KAAA,GAGf,KAAO,CACH,KAAM,QACN,OAAQ,KACR,OAAQ,IACR,KAAM,UACN,MAAO,OACP,SAAU,CACN,KAAQ,QACR,MAAS,OACT,MAAS,MAAA,GAGjB,KAAO,CACH,KAAM,QACN,OAAQ,KACR,OAAQ,IACR,KAAM,UACN,MAAO,QACP,SAAU,CACN,KAAQ,QACR,MAAS,OACT,MAAS,MAAA,CACb,GAIRA,EAAa,IAAK,EAAIA,EAAa,IAAK,EACxCA,EAAa,IAAK,EAAIA,EAAa,IAAK,EAExC,IAAIC,EAAkBjmC,EAAM,QAAQ,YAAY,EAC5CkmC,EAAmBlmC,EAAM,QAAQ,aAAa,EAC9CmmC,EAAuBnmC,EAAM,QAAQ,kBAAkB,EACvDomC,EAAwBpmC,EAAM,QAAQ,mBAAmB,EAIzDimC,GAAmBC,GAAoB,CAAC,KAAM,KAAM,IAAK,GAAI,EAAE,QAAQD,CAAe,IAAM,KAC5FD,EAAaC,CAAe,EAAI,KAAK,MAAM,KAAK,UAAUD,EAAa,IAAK,CAAC,CAAC,EAC9EA,EAAaC,CAAe,EAAE,OAASA,EACvCD,EAAaC,CAAe,EAAE,OAASC,GAGvCC,GAAwBC,GAAyB,CAAC,KAAM,KAAM,IAAK,GAAI,EAAE,QAAQD,CAAoB,IAAM,KAC3GH,EAAaG,CAAoB,EAAI,KAAK,MAAM,KAAK,UAAUH,EAAa,IAAK,CAAC,CAAC,EACnFA,EAAaG,CAAoB,EAAE,OAASA,EAC5CH,EAAaG,CAAoB,EAAE,OAASC,GAGhD,SAASC,EAAmBC,EAAM,CAC9B,IAAIC,EAAO,CACP,KAAO,KACP,KAAO,KACP,KAAO,KACP,KAAO,MAEXP,EAAaM,CAAI,EAAE,MAAQ,OAC3BN,EAAaO,EAAKD,CAAI,CAAC,EAAE,MAAQ,OAAA,CAGrC,SAASE,EAAwBC,EAAQ,CAGrC,QAFIC,EAAU,CAAA,EACVvkC,EAAO,OAAO,KAAK6jC,CAAY,EAC1B9lC,EAAI,EAAG2e,EAAI1c,EAAK,OAAQjC,EAAI2e,EAAG3e,IAAK,CACzC,IAAIwB,EAAMS,EAAKjC,CAAC,GACZ8lC,EAAaS,CAAM,EAAE,OAAS,SAAW,CAACT,EAAaS,CAAM,IAC7DC,EAAQ,KAAKhlC,CAAG,CACpB,CAEJ,IAAItB,EAAM4lC,EAAaS,CAAM,EAC7B,OAAArmC,EAAI,OAAS,IAAI,OAAO,OAASsmC,EAAQ,IAAI,SAAS5mC,EAAI,CACtD,OAAOA,EAAI,QAAQ,IAAK,KAAK,CAAA,CAChC,EAAE,KAAK,GAAG,EAAI,GAAG,EACXM,CAAA,CAGX,IAAIumC,EAAkB,UAAW,CAG7B,QAFIvmC,EAAM,CAAA,EACN+B,EAAO,OAAO,KAAK6jC,CAAY,EAC1B9lC,EAAI,EAAG2e,EAAI1c,EAAK,OAAQjC,EAAI2e,EAAG3e,IAAK,CACzC,IAAIwB,EAAMS,EAAKjC,CAAC,EAChBE,EAAIsB,CAAG,EAAI8kC,EAAwB9kC,CAAG,CAAA,CAE1C,OAAOtB,CAAA,EACX,EAEIwmC,EAAW,UAAW,CACtB,IAAIF,EAAU,CAAA,EACVG,EAAU,CAAA,EACV9jC,EAAO,CAAA,EACX,QAAS0jC,KAAUE,EACfD,EAAQ,KAAKD,CAAM,EACnB1jC,EAAK4jC,EAAeF,CAAM,EAAE,MAAM,EAAI,GAG1C,QADItkC,EAAO,OAAO,KAAKY,CAAI,EAClB7C,EAAI,EAAG2e,EAAI1c,EAAK,OAAQjC,EAAI2e,EAAG3e,IAAK,CACzC,IAAI4mC,EAAS3kC,EAAKjC,CAAC,EACnB2mC,EAAQ,KAAKC,CAAM,CAAA,CAGvB,IAAIC,EAAML,EAAQ,OAAOG,CAAO,EAAE,IAAI,SAAS/mC,EAAI,CAC/C,OAAOA,EAAI,QAAQ,IAAK,KAAK,CAAA,CAChC,EAAE,KAAK,GAAG,EAEX,MAAO,CACH,SAAU,IAAI,OAAO,OAASinC,EAAM,KAAM,GAAG,EAC7C,SAAU,IAAI,OAAO,MAAQA,EAAM,IAAK,GAAG,EAC3C,KAAM,IAAI,OAAO,QAAUL,EAAQ,IAAI,SAAS5mC,EAAI,CAChD,OAAOA,EAAI,QAAQ,IAAK,KAAK,CAAA,CAChC,EAAE,KAAK,GAAG,EAAI,KAAK,EACpB,MAAO,IAAI,OAAO,QAAU+mC,EAAQ,KAAK,GAAG,EAAI,KAAK,EACzD,EACJ,EAEA,SAASG,EAAS1+B,EAAKzD,EAAK,CACxB,IAAIgP,EAASkyB,EAAcA,EAAc,OAAS,CAAC,EACnD,MAAI,CAAClyB,GAAUvL,EAAI,MAAMuL,EAAO,MAAM,GAClCkyB,EAAc,KAAK,CACf,KAAMY,EAAer+B,CAAG,EAAE,KAC1B,OAAQq+B,EAAer+B,CAAG,EAAE,OAC5B,OAAQq+B,EAAer+B,CAAG,EAAE,OAC5B,IAAAzD,CAAA,CACH,EACM,KAEPkhC,EAAc,IAAA,EACdA,EAAc,KAAK,CACf,KAAMY,EAAer+B,CAAG,EAAE,KAC1B,OAAQq+B,EAAer+B,CAAG,EAAE,OAC5B,OAAQq+B,EAAer+B,CAAG,EAAE,OAC5B,IAAAzD,CAAA,CACH,EACM,CACH,OAAQgP,EAAO,KAEvB,CAGJ,SAASozB,EAAU3+B,EAAKzD,EAAK,CACzB,IAAIgP,EAASkyB,EAAcA,EAAc,OAAS,CAAC,EACnD,OAAIlyB,GAAUvL,IAAQuL,EAAO,QACzBkyB,EAAc,IAAA,EACVlyB,EAAO,OAAS,SACT,CACH,OAAQ,CACJ,KAAMA,EAAO,IACb,MAAOhP,CAAA,GAIR,IAGPgP,EACO,CACH,OAAQA,EAAO,KAGZ,CACH,OAAQhP,EAGpB,CAGJ,SAASqiC,EAAkB5+B,EAAKzD,EAAK,CACjC,OAAIyD,EAAI,MAAMs+B,EAAQ,IAAI,EACfI,EAAS1+B,EAAKzD,CAAG,EAEjBoiC,EAAU3+B,EAAKzD,CAAG,CAC7B,CAGJ,SAASsiC,EAAcrnC,EAAK,CACxB,IAAIsnC,EAAe,CAAA,EAEnBtnC,EAAMA,EAAI,QAAQ,gEAAiE,aAAc,EACjGA,EAAMA,EAAI,QAAQ,kDAAmD,SAAS,EAE9E,IAAI2H,EAAQ3H,EAAI,MAAM8mC,EAAQ,QAAQ,EACtC,GAAI,CAACn/B,EACD,MAAO,CACH,KAAM,CAAA,EACN,QAAS,CAAC3H,CAAG,EACb,aAAc,CAAA,GAKtB,QAFIqU,EAAQrU,EAAI,MAAM8mC,EAAQ,QAAQ,EAE7B1mC,EAAE,EAAEC,EAAKsH,EAAM,OAAO,EAAEvH,EAAEC,EAAKD,IAChC8lC,EAAav+B,EAAMvH,CAAC,CAAC,IACjBiU,EAAMjU,EAAE,CAAC,IAAM,IAAM,CAAC,IAAM,GAAG,EAAE,QAAQuH,EAAMvH,EAAE,CAAC,CAAC,EAAI,IACvDuH,EAAMvH,EAAE,CAAC,EAAI,IAAMuH,EAAMvH,EAAE,CAAC,EAC5BknC,EAAa,KAAK,EAAI,GAEtBA,EAAa,KAAK,EAAK,GAInC,MAAO,CACH,KAAM3/B,EACN,QAAS0M,EACT,aAAAizB,EACJ,CAGJ,IAAIC,EAAS,SAASjzB,EAAM,CACxB,IAAIhN,EAAS,CAAA,EACb,KAAK,IAAM,SAAUkB,EAAK,CAGtB,QAFIrC,EAAO+/B,EAAa19B,CAAG,EAAE,KACzBg/B,EAAQ,KACHpnC,EAAEkH,EAAO,OAAO,EAAElH,EAAE,GAAGA,IAAK,CACjC,IAAIqnC,EAASngC,EAAOlH,CAAC,EACrB,GAAIqnC,EAAO,CAAC,IAAMthC,EAAM,CACpBqhC,EAAQC,EACR,KAAA,CACJ,CAEJ,GAAI,CAACD,EAAO,CACR,IAAIE,EAAc,CAACxnC,EAAMA,EAAM,IAAI,IAAI,EAAE,IAAI,kBAAkB,EAAE,OAAOoU,EAAK,QAAQ,EACrFpE,EACA,QAAS9P,EAAEsnC,EAAY,OAAO,EAAEtnC,EAAE,GAAGA,IAAK,CACtC,IAAIunC,EAAWD,EAAYtnC,CAAC,EAC5B,GAAKunC,EAGL,QAAS/mC,EAAE+mC,EAAS,OAAO,EAAE/mC,EAAE,GAAGA,IAAK,CACnC,IAAI6mC,EAASE,EAAS/mC,CAAC,EACvB,GAAI6mC,EAAO,CAAC,IAAMthC,EAAM,CACpBqhC,EAAQC,EACR,MAAMv3B,CAAA,CACV,CACJ,CACJ,CAECs3B,EAGDA,EAAQ,CAACrhC,EAAM+/B,EAAa19B,CAAG,EAAE,SAASg/B,EAAM,CAAC,CAAC,CAAC,EAFnDA,EAAQ,CAACrhC,EAAM+/B,EAAa19B,CAAG,EAAE,KAAK,EAI1ClB,EAAO,KAAKkgC,CAAK,CAAA,EAErB,KAAK,KAAO,UAAY,CACpB,OAAOlgC,EAAOA,EAAO,OAAO,CAAC,CAAA,EAEjC,KAAK,IAAM,UAAY,CACnBA,EAAO,IAAA,CAAI,CACf,EAGJ,SAASsgC,EAAiBp/B,EAAKxI,EAAK,CAChC,GAAIwI,IAAQ,KACR,GAAIxI,GAAOA,EAAI,MAAM,kBAAkB,EACnC,MAAO,YAEJwI,IAAQ,MAASxI,GAAOA,EAAI,MAAM,OAAO,EAChD,MAAO,KAEX,MAAO,EAAA,CAGX,SAAS6nC,EAAiBvzB,EAAMwzB,EAAQC,EAAc,CAClD,IAAIC,EAAc,GACdC,EAAS,IAAIV,EAAOjzB,CAAI,EAC5BA,EAAK,MAAQ,CAAA,EACb,SAAS4zB,EAAO5zB,EAAM,CAClB,KAAK,MAAQ,CAACA,CAAI,EAClB,KAAK,OAASA,EACd,KAAK,WAAa,SAAStU,EAAKwnC,EAAO,CAWnC,GAVIQ,IACIhoC,EAAI,MAAM,EAAG,CAAC,IAAM,MACpBA,EAAMA,EAAI,MAAM,CAAC,GAEjBA,EAAI,MAAM,EAAG,CAAC,IAAM,MACpBA,EAAMA,EAAI,MAAM,CAAC,GAErBgoC,EAAc,IAElB,KAAK,OAAS,KAAK,MAAM,KAAK,MAAM,OAAO,CAAC,EACxCR,EAAO,CACP,GAAiB,OAAO,KAAK,OAAO,OAAhC,SAAuC,CACvC,IAAI59B,EAAQ,IAAI7J,EAAI,KACpB6J,EAAM,MAAQ,KAAK,OAAO,MAC1BA,EAAM,SAAW,KAAK,OAAO,SAAS,MAAA,EACtC,KAAK,OAAO,MAAQ,CAACA,CAAK,CAAA,CAE9B,IAAI2Z,EAAM,IAAIxjB,EAAI,MACdooC,EAAU,IAAIpoC,EAAI,KAAK,KAAMwjB,CAAG,EAOpC,GANA4kB,EAAQ,SAAW,KAAK,OAAO,SAAS,MAAA,EAMpCX,EAAM,CAAC,IAAM,UAAYA,EAAM,CAAC,IAAM,UAAW,CAIjD,QAHIY,EAAc,CAAA,EACdC,EAAO,CAAA,EACPX,EAAc,CAACxnC,EAAMA,EAAM,IAAI,IAAI,EAAE,IAAI,kBAAkB,EAAE,OAAOioC,EAAQ,QAAQ,EAC/E/nC,EAAEsnC,EAAY,OAAO,EAAEtnC,EAAE,GAAGA,IAAK,CACtC,IAAIkoC,EAAYZ,EAAYtnC,CAAC,EAC7B,GAAKkoC,EAGL,QAAS1nC,EAAE0nC,EAAU,OAAO,EAAE1nC,EAAE,GAAGA,IAAK,CACpC,IAAI2nC,EAAYD,EAAU1nC,CAAC,EACvB,CAAC,eAAgB,cAAe,eAAe,EAAE,QAAQ2nC,EAAU,CAAC,CAAC,EAAI,IACtE,CAACF,EAAKE,EAAU,CAAC,CAAC,IAEjBf,EAAM,CAAC,IAAM,WACbW,EAAQ,YAAY,KAAK,CAACI,EAAU,CAAC,EAAG,QAAQ,CAAC,EACjDH,EAAY,KAAK,CAACG,EAAU,CAAC,EAAG,QAAQ,CAAC,GAE7CF,EAAKE,EAAU,CAAC,CAAC,EAAI,GACzB,CACJ,CAEJJ,EAAQ,SAAS,KAAKC,CAAW,CAAA,MAGjCD,EAAQ,YAAY,KAAKX,CAAK,EAC9BW,EAAQ,SAAS,KAAK,CAACX,CAAK,CAAC,EAKjC,GAHA,KAAK,OAAO,MAAM,KAAKW,CAAO,EAC9B,KAAK,MAAM,KAAKA,CAAO,EACvB,KAAK,OAASA,EACVnoC,EAAK,CACL,IAAIujB,EAAM,IAAIxjB,EAAI,MACdooC,EAAU,IAAIpoC,EAAI,KAAK,KAAMwjB,CAAG,EACpC4kB,EAAQ,MAAQnoC,EAChBmoC,EAAQ,SAAW,KAAK,OAAO,SAAS,MAAA,EACxC,KAAK,OAAO,MAAM,KAAKA,CAAO,CAAA,CAClC,SAEInoC,EAAK,CACL,IAAI4J,EAAQ,IAAI7J,EAAI,KACpB6J,EAAM,MAAQ5J,EACd4J,EAAM,SAAW,KAAK,OAAO,SAAS,MAAA,EACtC,KAAK,OAAO,MAAM,KAAKA,CAAK,CAAA,CAEpC,EAEJ,KAAK,WAAa,UAAW,CACzB,KAAK,MAAM,IAAA,CAAI,CACnB,CAEJ,IAAI4+B,EAAQ,IAAIN,EAAM5zB,CAAI,EAC1B,GAAIwzB,EAAO,QAAQ,OAAQ,CACvB,IAAI9nC,EAAM8nC,EAAO,QAAQ,CAAC,EACtBC,IACA/nC,EAAM,IAAMA,GAEhBwoC,EAAM,WAAWxoC,CAAG,CAAA,CAExB,QAASI,EAAE,EAAEC,EAAKynC,EAAO,KAAK,OAAO1nC,EAAEC,EAAKD,IAAK,CAC7C,IAAIoI,EAAMs/B,EAAO,KAAK1nC,CAAC,EACnBJ,EAAM8nC,EAAO,QAAQ1nC,EAAE,CAAC,EACxBoI,EAAI,MAAMs+B,EAAQ,IAAI,GACtBmB,EAAO,IAAIz/B,CAAG,EACdggC,EAAM,WAAWxoC,EAAKioC,EAAO,KAAA,CAAM,IAEnCA,EAAO,IAAA,EACPO,EAAM,WAAA,EACNA,EAAM,WAAWxoC,CAAG,EACxB,CACJ,CAOJ,KAAK,YAAc,SAAUsU,EAAM,CAC/B,IAAItU,EAAMsU,EAAK,MACXyzB,EAAe,GACf/nC,EAAI,MAAM,EAAG,CAAC,IAAM,KAAO,CAACA,EAAI,MAAM,YAAY,IAClD+nC,EAAe,IAEnB,IAAI//B,EAAM,IAAI,OAAO,IAAMjI,EAAI,kBAAkB,OAAS,MAAaA,EAAI,kBAAkB,OAAS,IAAK,GAAG,EAC1GC,EAAM,IAAMA,EAAI,QAAQgI,EAAK,OAAQ,EACrC8/B,EAAST,EAAcrnC,CAAG,EAC9B,GAAI8nC,EAAO,KAAK,SAAW,EAK9B,SAFOW,EAAgB,GAEdroC,EAAE,EAAEC,EAAKynC,EAAO,KAAK,OAAO1nC,EAAEC,EAAKD,IAAK,CAC1C,IAAIoI,EAAMs/B,EAAO,KAAK1nC,CAAC,EACnBJ,EAAM8nC,EAAO,QAAQ1nC,EAAE,CAAC,EACxBsoC,EAAad,EAAiBp/B,EAAKxI,CAAG,EAC1C,GAAI0oC,EACAZ,EAAO,QAAQ1nC,EAAE,CAAC,EAAIsoC,EAAaZ,EAAO,QAAQ1nC,EAAE,CAAC,EACrD0nC,EAAO,KAAK1nC,CAAC,EAAI,OACd,CAEH,QADIuoC,EAEAA,EAAUvB,EAAkB5+B,EAAKpI,CAAC,EAC9BuoC,GACA,GAAI,OAAO,KAAKA,CAAO,EAAE,QAAQ,QAAQ,EAAI,GAAI,CAC7C,GAAIngC,EAAI,MAAMs+B,EAAQ,KAAK,GACpBt+B,IAAQ,IAEXs/B,EAAO,QAAQ1nC,EAAE,CAAC,EAAI,IAAW0nC,EAAO,QAAQ1nC,EAAE,CAAC,EACnD0nC,EAAO,KAAK1nC,CAAC,EAAI,OACd,CACH,IAAIwoC,EAAYd,EAAO,KAAKa,EAAQ,MAAM,EACtCb,EAAO,aAAaa,EAAQ,OAAO,CAAC,IACpCC,EAAYA,EAAU,MAAM,CAAC,GAEjCd,EAAO,QAAQa,EAAQ,OAAO,CAAC,EAAIC,EAAYd,EAAO,QAAQa,EAAQ,OAAO,CAAC,EAC9Eb,EAAO,KAAKa,EAAQ,MAAM,EAAI,EAAA,CAElC,GAAI1C,EAAc,OAAS,EACvB,GAAIz9B,IAAQ,IACRy9B,EAAc,IAAA,MAEd,WAGJ,MACJ,SACO0C,EAAQ,OAAQ,CACvBb,EAAO,KAAKa,EAAQ,OAAO,IAAI,EAAI,GACnCb,EAAO,KAAKa,EAAQ,OAAO,KAAK,EAAI,GACpC,KAAA,KAEA,OAMRA,IAAYA,EAAQ,QAASA,EAAQ,SAAW,KAChDb,EAAO,QAAQ1nC,EAAE,CAAC,EAAI0nC,EAAO,KAAK1nC,CAAC,EAAI0nC,EAAO,QAAQ1nC,EAAE,CAAC,EACzD0nC,EAAO,KAAK1nC,CAAC,EAAI,GACrB,CACJ,CAGJ,QAASA,EAAE6lC,EAAc,OAAO,EAAE7lC,EAAE,GAAGA,IAAK,CACxC,IAAIyoC,EAAS5C,EAAc7lC,CAAC,EAAE,IAC1BoI,EAAMs/B,EAAO,KAAKe,CAAM,EACxBrgC,IAAQ,MAASA,IAAQ,IAEzBs/B,EAAO,QAAQe,EAAO,CAAC,EAAI,KAAYf,EAAO,QAAQe,EAAO,CAAC,EAE9Df,EAAO,QAAQe,EAAO,CAAC,EAAIf,EAAO,KAAKe,CAAM,EAAIf,EAAO,QAAQe,EAAO,CAAC,EAE5Ef,EAAO,KAAKe,CAAM,EAAI,GACtB5C,EAAc,IAAA,CAAI,CAEtB,QAAS7lC,EAAE0nC,EAAO,KAAK,OAAO,EAAE1nC,EAAE,GAAGA,IAC5B0nC,EAAO,KAAK1nC,CAAC,IACd0nC,EAAO,KAAOA,EAAO,KAAK,MAAM,EAAE1nC,CAAC,EAAE,OAAO0nC,EAAO,KAAK,MAAM1nC,EAAE,CAAC,CAAC,EAClE0nC,EAAO,QAAQ1nC,CAAC,EAAI0nC,EAAO,QAAQ1nC,CAAC,EAAI0nC,EAAO,QAAQ1nC,EAAE,CAAC,EAC1D0nC,EAAO,QAAUA,EAAO,QAAQ,MAAM,EAAE1nC,EAAE,CAAC,EAAE,OAAO0nC,EAAO,QAAQ,MAAM1nC,EAAE,CAAC,CAAC,GAKrF,QAASA,EAAE,EAAEC,EAAKynC,EAAO,KAAK,OAAO1nC,EAAEC,EAAKD,IAAK,CAC7C,IAAIoI,EAAMs/B,EAAO,KAAK1nC,CAAC,EACnB0oC,EAAchB,EAAO,aAAa1nC,EAAE,CAAC,EACrC,CAAC,KAAO,KAAO,KAAO,IAAK,EAAE,QAAQoI,CAAG,EAAI,KACvCigC,IACDlC,EAAmB/9B,CAAG,EACtBigC,EAAgB,IAEfK,IACDhB,EAAO,QAAQ1nC,CAAC,GAAKoI,EAAI,MAAM,EAAG,CAAC,GAE3C,CAIJq/B,EAAiBvzB,EAAMwzB,EAAQC,CAAY,EAAA,CAEnD,EAIAhoC,EAAI,OAAO,WAAc,UAAY,CACjC,IAAIkU,EAAS,6JACT80B,EAAY,IAAIhpC,EAAI,SAASkU,EAAQ,SAASjU,EAAK,CACnD,OAAOA,EAAI,QAAQ,kDAAmD,SAAS,EAAE,QAAQ,kEAAmE,eAAe,CAAA,CAC9K,EACGgpC,EAAa,oFACbC,EAAa,IAAIlpC,EAAI,SAASipC,CAAU,EAExCE,EAAa,IAAInpC,EAAI,SAAS,iBAAoD,EAMlFopC,EAAa,CACb,2CAA8C,UAC9C,wBAA2B,UAC3B,yBAA4B,UAC5B,OAAQ,QACR,QAAS,SACT,QAAS,UAGb,SAASC,EAAaC,EAAM,CAGxB,IAAIroC,EAAIqoC,EAAK,MAAM,4KAA4K,EAG/L,OAAIroC,GAAK,EAAEA,EAAE,CAAC,EAAE,MAAM,mBAAmB,GAAK,CAACA,EAAE,CAAC,GACvCA,EAAE,CAAC,EAAIjB,EAAI,kBAAkB,KAAK,KAAMiB,EAAE,CAAC,CAAC,EAAIA,EAAE,CAAC,EAEvDqoC,CAAA,CAGX,SAASC,EAAgBj+B,EAAQk+B,EAAQ,CACrC,GAAI,CAACA,EACD,MAAO,GAEXl+B,EAAO,OAAS09B,EAAU,MAAMQ,CAAM,EACtC,IAAIC,EAAc,CACd,KAAO,CACH,OAAQ,KACR,OAAQ,KAEZ,KAAO,CACH,OAAQ,KACR,OAAQ,KAEZ,IAAU,CACN,OAAQ,IACR,OAAQ,KAEZ,IAAU,CACN,OAAQ,IACR,OAAQ,GAAA,GAGhB,SAASC,EAAQjhC,EAAKzD,EAAK,CACvB,GAAIsG,EAAO,WAAW,SAAW,GAAK7C,IAAQ6C,EAAO,WAAWA,EAAO,WAAW,OAAS,CAAC,EAAE,OAC1F,OAAAA,EAAO,WAAW,KAAK,CACnB,OAAQm+B,EAAYhhC,CAAG,EAAE,OACzB,OAAQghC,EAAYhhC,CAAG,EAAE,OACzB,IAAAzD,CAAA,CACH,EACM,GAEP,IAAI2kC,EAAUr+B,EAAO,WAAWA,EAAO,WAAW,OAAO,CAAC,EAAE,IAC5D,OAAAA,EAAO,WAAW,IAAA,EAClBA,EAAO,WAAW,KAAK,CACnB,OAAQm+B,EAAYhhC,CAAG,EAAE,OACzB,OAAQghC,EAAYhhC,CAAG,EAAE,OACzB,UAAWzD,CAAA,CACd,EACM2kC,CACX,CAEJ,SAASC,EAASnhC,EAAKzD,EAAK,CACxB,GAAIsG,EAAO,WAAW,OAAS,GAAK7C,IAAQ6C,EAAO,WAAWA,EAAO,WAAW,OAAS,CAAC,EAAE,OACxFA,EAAO,WAAW,IAAA,MAElB,QAAOtG,CACX,CAEJ,SAAS6kC,EAAephC,EAAKzD,EAAK,CAC9B,IAAI8kC,EAAW,CAAC,IAAU,IAAU,KAAO,IAAK,EAAE,QAAQrhC,CAAG,EAAI,GACjE,OAAIqhC,EACOJ,EAAQjhC,EAAKzD,CAAG,EAEhB4kC,EAASnhC,EAAKzD,CAAG,CAC5B,CAEJ,SAAS+kC,EAAUthC,EAAKuhC,EAAW,CAC/B,IAAI/oC,EAAIwH,EAAI,MAAM,uDAAuD,EACzE,GAAIxH,EACA,OAAO4oC,EAAe5oC,EAAE,CAAC,EAAG+oC,CAAS,CACzC,CAGA1+B,EAAO,OAAO,QAAQ,QAAUA,EAAO,OAAO,QAAQ,CAAC,EAAE,SACzDA,EAAO,OAAO,QAAQ,CAAC,EAAIA,EAAO,gBAAgBA,EAAO,OAAO,QAAQ,CAAC,EAAG,EAAGA,EAAO,OAAO,KAAK,CAAC,CAAC,GAG3G,QAASjL,EAAE,EAAEC,EAAKgL,EAAO,OAAO,KAAK,OAAOjL,EAAEC,EAAKD,IAAK,CACjD,IAAIoI,EAAM6C,EAAO,OAAO,KAAKjL,CAAC,EAC1BJ,EAAMqL,EAAO,OAAO,QAAQjL,EAAE,CAAC,EA0BnC,GAxBIiL,EAAO,WAAa,OAEhB89B,EAAW3gC,CAAG,EACd6C,EAAO,SAAS,KAAK89B,EAAW3gC,CAAG,CAAC,EAC7B6C,EAAO,SAAS,QAAU7C,IAAQ6C,EAAO,SAASA,EAAO,SAAS,OAAS,CAAC,GACnFA,EAAO,SAAS,IAAA,GAIpBA,EAAO,aAAe,MAElB7C,EAAI,MAAM,WAAW,IACrB6C,EAAO,WAAa,IAKxBA,EAAO,SAAS,SAAW,EAC3BA,EAAO,OAAO,QAAQjL,EAAE,CAAC,EAAIiL,EAAO,gBAAgBrL,EAAKI,EAAE,EAAGiL,EAAO,OAAOA,EAAO,OAAO,KAAKjL,EAAE,CAAC,CAAC,EAE5FiL,EAAO,OAAO,QAAQjL,EAAE,CAAC,EAAE,SAClCiL,EAAO,YAAc,MAGrBA,EAAO,aAAe,KAAM,CAE5B,IAAI2+B,EAAWF,EAASthC,EAAKpI,CAAC,EAC9B,GAAI4pC,GAAYA,IAAa,EAAG,CAC5B,IAAIC,EAAW5+B,EAAO,OAAO,YAAY2+B,EAAS,CAAC,EAAE,MAAM,EAAG,CAAC,EAC/D3+B,EAAO,OAAO,QAAQ2+B,EAAS,CAAC,EAAIC,EAAW5+B,EAAO,OAAO,QAAQ2+B,EAAS,CAAC,EAAE,MAAM,CAAC,EACxF3+B,EAAO,YAAc,IAAA,CACzB,CAIAA,EAAO,SACHrL,EAAI,SACJqL,EAAO,QAAU,IAGrBA,EAAO,YACHrL,EAAI,SACJqL,EAAO,WAAa,GAE5B,CAEJ,GAAIA,EAAO,WACP,QAASjL,EAAE,EAAEC,EAAKgL,EAAO,WAAW,OAAOjL,EAAEC,EAAKD,IAAK,CACnD,IAAI4pC,EAAW3+B,EAAO,WAAWjL,CAAC,EAAE,IAGpC,GAAI,OAAO4pC,EAAa,IAAa,CACjC,IAAIC,EAAW5+B,EAAO,OAAO,YAAY2+B,EAAS,CAAC,EAAE,MAAM,EAAG,CAAC,EAC/D3+B,EAAO,OAAO,QAAQ2+B,EAAS,CAAC,EAAIC,EAAW5+B,EAAO,OAAO,QAAQ2+B,EAAS,CAAC,EAAE,MAAM,CAAC,CAAA,CAC5F,CAIR,GAAI3+B,EAAO,YAAa,CACpB,IAAI6+B,EAAYhB,EAAW,MAAM79B,EAAO,OAAO,QAAQA,EAAO,YAAY,OAAO,CAAC,EAC9E8+B,EAAWD,EAAU,QAAQ7+B,EAAO,YAAY,KAAK,EACrD8+B,EAAS,OAAS,GAAKpqC,EAAI,kBAAkB,KAAK,KAAMoqC,CAAQ,EAAE,MAAM9+B,EAAO,YAAY,IAC3F8+B,EAAWf,EAAY,KAAK,KAAMe,CAAQ,EAC1CD,EAAU,QAAQ7+B,EAAO,YAAY,KAAK,EAAI8+B,GAElD9+B,EAAO,OAAO,QAAQA,EAAO,YAAY,OAAO,EAAI69B,EAAW,KAAKgB,CAAS,CAAA,CAIjF,OAAOnB,EAAU,KAAK19B,EAAO,MAAM,CAAA,CAUvC,SAAS++B,EAAalqC,EAAOF,EAAK,CAC9B,OAAOA,CAAA,CAMX,SAASqqC,EAAUnqC,EAAOqpC,EAAQ,CAC9B,IAAIl+B,EAAS,CACT,WAAY,KACZ,gBAAiB,SAASrL,EAAK,CAE3B,QADIsqC,EAAQtqC,EAAI,MAAM,GAAG,EAChBI,EAAE,EAAEC,EAAKiqC,EAAM,OAAOlqC,EAAEC,EAAKD,IAAK,CACvC,IAAIipC,EAAOiB,EAAMlqC,CAAC,EACdipC,IACAiB,EAAMlqC,CAAC,EAAIL,EAAI,kBAAkB,KAAKG,EAAOmpC,CAAI,EACrD,CAEJ,OAAOiB,EAAM,KAAK,GAAG,CAAA,EAEzB,aAAc,KACd,SAAU,CAAA,EACV,WAAY,KACZ,QAAS,MAEb,OAAOhB,EAAgB,KAAKppC,EAAOmL,EAAQk+B,CAAM,CAAA,CAMrD,SAASgB,EAAUrqC,EAAOqpC,EAAQ,CAC9B,IAAIl+B,EAAS,CACT,WAAY,KACZ,gBAAiB,SAASrL,EAAK,CAE3B,QADIsqC,EAAQtqC,EAAI,MAAM,GAAG,EAChBI,EAAE,EAAEC,EAAKiqC,EAAM,OAAOlqC,EAAEC,EAAKD,IAAK,CACvC,IAAIipC,EAAOiB,EAAMlqC,CAAC,EACdipC,IASAiB,EAAMlqC,CAAC,EAAIL,EAAI,kBAAkB,KAAKG,EAAOmpC,CAAI,EACrD,CAEJ,OAAOiB,EAAM,KAAK,GAAG,CAAA,EAEzB,aAAc,KACd,SAAU,CAAA,EACV,WAAY,KACZ,QAAS,MAEb,OAAOhB,EAAgB,KAAKppC,EAAOmL,EAAQk+B,CAAM,CAAA,CAOrD,SAASiB,EAAStqC,EAAOqpC,EAAQ,CAC7B,IAAIl+B,EAAS,CACT,WAAY,CAAA,EACZ,gBAAiB,SAASrL,EAAK,CAE3B,QADIsqC,EAAQtqC,EAAI,MAAM,GAAG,EAChBI,EAAE,EAAEC,EAAKiqC,EAAM,OAAOlqC,EAAEC,EAAKD,IAAK,CACvC,IAAIipC,EAAOiB,EAAMlqC,CAAC,EACdipC,IACIh+B,EAAO,SACPi/B,EAAMlqC,CAAC,EAAIgpC,EAAY,KAAKlpC,EAAOmpC,CAAI,EACvCh+B,EAAO,QAAU,IAEjBi/B,EAAMlqC,CAAC,EAAIL,EAAI,kBAAkB,KAAKG,EAAOmpC,CAAI,EAEzD,CAEJ,OAAOiB,EAAM,KAAK,GAAG,CAAA,EAEzB,aAAc,KACd,SAAU,CAAA,EACV,WAAY,KACZ,QAAS,IAEb,OAAOhB,EAAgB,KAAKppC,EAAOmL,EAAQk+B,CAAM,CAAA,CAGrD,SAASxmC,EAAM7C,EAAOqpC,EAAQ,CAC1B,IAAIl+B,EAAS,CACT,WAAY,CAAA,EACZ,gBAAiB,SAASrL,EAAKI,EAAGqqC,EAAc,CAC5C,GAAIzqC,EAAI,OAAQ,CAGZ,QAFI0qC,EAASxB,EAAW,MAAMlpC,CAAG,EAC7BsqC,EAAQI,EAAO,QACV9pC,EAAE,EAAEY,EAAK8oC,EAAM,OAAO1pC,EAAEY,EAAKZ,IAAK,CACvC,IAAIyoC,EAAOiB,EAAM1pC,CAAC,EAClB,GAAI,CAACyoC,EACD,SAEJ,IAAIsB,EAAQ5qC,EAAI,kBAAkB,KAAKG,EAAOmpC,CAAI,EAC9CuB,EAAa,IACbvB,EAAK,OAAS,GAAK,CAACsB,EAAM,MAAMt/B,EAAO,YAAY,GAG5CzK,IAAO0pC,EAAM,OAAS,GAAMG,IAAiB,KAE7Cp/B,EAAO,SAGPA,EAAO,cAEdu/B,EAAa,IAGbA,GAAcvB,IAASsB,IACvBL,EAAM1pC,CAAC,EAAIwoC,EAAY,KAAKlpC,EAAOmpC,CAAI,GAE3Ch+B,EAAO,WAAa,GACpBA,EAAO,QAAU,GACjBA,EAAO,YAAc,CACjB,QAASjL,EACT,MAAOQ,EACX,CAEJZ,EAAMkpC,EAAW,KAAKwB,CAAM,CAAA,CAEhC,OAAO1qC,CAAA,EAEX,aAAcE,EAAM,OAAOA,EAAM,IAAI,IAAI,EAAE,KAAK,mBAAmB,EACnE,SAAU,CAAA,EACV,WAAY,GACZ,QAAS,IAEb,OAAOopC,EAAgB,KAAKppC,EAAOmL,EAAQk+B,CAAM,CAAA,CAQrD,SAASsB,EAAgB3qC,EAAOqpC,EAAQ,CACpC,IAAIl+B,EAAS,CACT,WAAY,CAAA,EACZ,gBAAiB,SAASrL,EAAK,CAG3B,QAFI0qC,EAASxB,EAAW,MAAMlpC,CAAG,EAC7BsqC,EAAQI,EAAO,QACVtqC,EAAE,EAAEC,EAAKiqC,EAAM,OAAOlqC,EAAEC,EAAKD,IAAK,CACvC,IAAIipC,EAAOiB,EAAMlqC,CAAC,EAClB,GAAIipC,GACIh+B,EAAO,QAAS,CAEZg+B,IAAStpC,EAAI,kBAAkB,KAAKG,EAAOmpC,CAAI,IAC/CiB,EAAMlqC,CAAC,EAAIgpC,EAAY,KAAKlpC,EAAOmpC,CAAI,GAE3Ch+B,EAAO,QAAU,GACjB,KAAA,CAER,CAEJ,OAAO69B,EAAW,KAAKwB,CAAM,CAAA,EAEjC,aAAc,KACd,SAAU,CAAA,EACV,WAAY,KACZ,QAAS,IAEb,OAAOpB,EAAgB,KAAKppC,EAAOmL,EAAQk+B,CAAM,CAAA,CASrD,SAASuB,EAAe5qC,EAAOqpC,EAAQ,CACnC,IAAIl+B,EAAS,CACT,WAAY,CAAA,EACZ,gBAAiB,SAASrL,EAAK,CAG3B,QAFI0qC,EAASxB,EAAW,MAAMlpC,CAAG,EAC7BsqC,EAAQI,EAAO,QACVtqC,EAAE,EAAEC,EAAKiqC,EAAM,OAAOlqC,EAAEC,EAAKD,IAAK,CACvC,IAAIipC,EAAOiB,EAAMlqC,CAAC,EACdipC,GAEIA,IAAStpC,EAAI,kBAAkB,KAAKG,EAAOmpC,CAAI,IAC/CiB,EAAMlqC,CAAC,EAAIgpC,EAAY,KAAKlpC,EAAOmpC,CAAI,EAE/C,CAEJ,OAAOH,EAAW,KAAKwB,CAAM,CAAA,EAEjC,aAAc,KACd,SAAU,CAAA,EACV,WAAY,KACZ,QAAS,MAEb,OAAOpB,EAAgB,KAAKppC,EAAOmL,EAAQk+B,CAAM,CAAA,CAErD,MAAO,CACH,WAAAN,EACA,YAAAmB,EACA,UAAAC,EACA,UAAAE,EACA,SAAAC,EACA,MAAAznC,EACA,mBAAoB8nC,EACpB,iBAAkBC,EAE1B,EAAA,EASA/qC,EAAI,OAAO,QAAU,UAAY,CAAC,EAQlCA,EAAI,OAAO,QAAQ,UAAU,KAAO,CAOhC,YAAe,SAAUqJ,EAAM,CAI3B,OAAKA,IACDA,EAAO,IAEJA,EAAK,QAAQ,KAAM,OAAO,EAC5B,QAAQ,KAAM,OAAO,EACrB,QAAQ,KAAM,OAAO,EACrB,QAAQ,QAAS,IAAS,EAC1B,QAAQrJ,EAAI,oBACJ,SAASgrC,EAAO,CAEZ,MAAO,QAAUhrC,EAAI,aAAagrC,CAAK,EAAI,QAAA,EAC9C,EAElB,SAAY;AAAA,EACZ,OAAU,SACV,qBAAsB,oBACtB,sBAAuB,sBACvB,qBAAsB,qDACtB,2BAA4B,2DAC5B,oBAAqBhrC,EAAI,OAAO,WAAW,YAC3C,uBAAwB,uDACxB,oBAAqB,oBACrB,sBAAuB,sDACvB,qBAAsB,GACtB,wBAAyB,wDACzB,6BAA8B,6DAC9B,sBAAuB,wBACvB,sBAAuB,wBACvB,2BAA4B,2CAC5B,sBAAuBA,EAAI,OAAO,WAAW,YAC7C,uBAAwBA,EAAI,OAAO,WAAW,YAC9C,eAAgB,SAAUG,EAAOF,EAAK,CAClC,OAAoB,OAAOA,EAAvB,IACOE,EAAM,QAAQ,YAAY,EAE9BA,EAAM,QAAQ,YAAY,EAAIF,EAAME,EAAM,QAAQ,aAAa,CAAA,EAE1E,gBAAiB,SAAUA,EAAOF,EAAK,CACnC,OAAoB,OAAOA,EAAvB,IAIO,IAEJE,EAAM,QAAQ,kBAAkB,EAAIF,EAAME,EAAM,QAAQ,mBAAmB,CAAA,EAEtF,gBAAiB,GAIjB,cAAe,SAAUA,EAAOF,EAAK,CACjC,OAAOE,EAAM,IAAI,kBAAkBF,EAAK,KAAK,QAAS,KAAK,YAAa,KAAK,UAAU,CAAA,EAE3F,sBAAuB,SAAUE,EAAOF,EAAK,CAczC,IAAIwO,EAAS,GACb,OAAItO,EAAM,IAAI,yBACVsO,EAAStO,EAAM,IAAI,uBAAuB,KAAK,OAAO,EAAI;AAAA,GAEvD,4BAAgCF,EAAM;AAAA,EAAawO,CAAA,EAE9D,iBAAkB,SAAUtO,EAAOF,EAAK,CACpC,MAAO;AAAA;AAAA,6BAAsCA,EAAM;AAAA,CAAA,EAEvD,uBAAwB,SAAUE,EAAOF,EAAK,CAC1C,MAAO;AAAA,mCAA0CA,EAAM,QAAA,EAE3D,wBAAyB,SAAUE,EAAOF,EAAK,CAC3C,MAAO,iCAAqCA,EAAM;AAAA,GAAA,EAEtD,kBAAmB,SAAUE,EAAOF,EAAK,CACrC,MAAO,2BAA+BA,EAAM;AAAA,GAAA,EAEhD,eAAgB,SAAUE,EAAOF,EAAK49B,EAAO,CACzC,GAAI,CAAC19B,EAAM,IAAI,cAAgB,CAAEA,EAAM,IAAI,qBAAsB,CAC7D,GAAI09B,EACA,MAAO,gBAAmB19B,EAAM,IAAI,UAAU09B,CAAK,EAAI,YAAgBA,EAAQ,KAAQ59B,EAAM,UACjG,GAAW,KAAK,QAAuB,OAAOA,GAApB,SAAyB,CAC/C,IAAIgrC,EAAW,GACf,GAAIhrC,EAAK,CACL,IAAIgB,EAAIhB,EAAI,MAAMD,EAAI,6BAA6B,EACnDirC,EAAWhqC,EAAE,CAAC,EACdhB,EAAMgB,EAAE,CAAC,CAAA,CAEb,IAAIiqC,EAAY,GAChB,OAAIjrC,GAAOD,EAAI,qBAAqB,QAAQC,EAAI,MAAM,EAAE,CAAC,EAAI,KACzDirC,EAAYjrC,EAAI,MAAM,EAAE,EACxBA,EAAMA,EAAI,MAAM,EAAE,EAAE,GAEjBE,EAAM,IAAI,gBAAgB,KAAK,OAAQ8qC,EAAUhrC,EAAKirC,CAAS,CAAA,KAEtE,QAAOjrC,CACX,KAEA,QAAOA,CACX,EAEJ,YAAa,SAAUE,EAAOF,EAAK,CAC/B,MAAO,YAAeA,EAAM,KAAQA,EAAM,MAAA,EAE9C,YAAa,SAAUE,EAAOF,EAAK,CAC/B,IAAIkrC,EAASlrC,EACb,OAAKA,EAAI,MAAM,cAAc,IACzBkrC,EAAS,mBAAqBlrC,GAE3B,YAAekrC,EAAS,KAAQlrC,EAAM,MAAA,GAUrDD,EAAI,OAAO,QAAQ,UAAU,KAAO,CAOhC,YAAe,SAAUqJ,EAAM,CAC3B,OAAKA,IACDA,EAAO,IAEJA,CAAA,EAEX,SAAY,GACZ,OAAU,GACV,qBAAsB,GACtB,sBAAuB,GACvB,qBAAsB,GACtB,2BAA4B,GAC5B,oBAAqBrJ,EAAI,OAAO,WAAW,YAC3C,uBAAwB,GACxB,oBAAqB,GACrB,sBAAuB,GACvB,qBAAsB,GACtB,wBAAyB,GACzB,6BAA8B,GAC9B,2BAA4B,GAC5B,sBAAuB,GACvB,sBAAuB,GACvB,sBAAuBA,EAAI,OAAO,WAAW,YAC7C,uBAAwBA,EAAI,OAAO,WAAW,YAC9C,eAAgB,SAAUG,EAAOF,EAAK,CAClC,OAAoB,OAAOA,EAAvB,IACOE,EAAM,QAAQ,YAAY,EAE9BA,EAAM,QAAQ,YAAY,EAAIF,EAAME,EAAM,QAAQ,aAAa,CAAA,EAE1E,gBAAiB,SAAUA,EAAOF,EAAK,CACnC,OAAoB,OAAOA,EAAvB,IAIO,IAEJE,EAAM,QAAQ,kBAAkB,EAAIF,EAAME,EAAM,QAAQ,mBAAmB,CAAA,EAEtF,gBAAiB,GAIjB,cAAe,SAAUA,EAAOF,EAAK,CACvC,OAAOE,EAAM,IAAI,kBAAkBF,EAAK,KAAK,QAAS,KAAK,YAAa,KAAK,UAAU,CAAA,EAErF,sBAAuB,SAAUE,EAAOF,EAAK,CACzC,OAAOA,EAAI;AAAA,CAAA,EAEf,iBAAkB,SAAUE,EAAOF,EAAK,CACpC,MAAO;AAAA,EAAKA,CAAA,EAEhB,uBAAwB,SAAUE,EAAOF,EAAK,CAC1C,OAAOA,EAAM,GAAA,EAEjB,wBAAyB,SAAUE,EAAOF,EAAK,CAC3C,OAAOA,CAAA,EAEX,kBAAmB,SAAUE,EAAOF,EAAK,CACrC,MAAO;AAAA,MAASA,CAAA,EAEpB,eAAgB,SAAUE,EAAOF,EAAK,CAClC,OAAOA,CAAA,EAEX,YAAa,SAAUE,EAAOF,EAAK,CAC/B,OAAOA,CAAA,EAEX,YAAa,SAAUE,EAAOF,EAAK,CAC/B,OAAOA,CAAA,GAUfD,EAAI,OAAO,QAAQ,UAAU,IAAM,CAO/B,YAAe,SAAUqJ,EAAM,CAC3B,OAAKA,IACDA,EAAO,IAEJA,EACN,QAAQ,YAAa,MAAM,EAC3B,QAAQrJ,EAAI,oBACJ,SAASgrC,EAAO,CACZ,MAAO,WAAahrC,EAAI,aAAagrC,CAAK,EAAI,gBAAA,CAClD,EACR,QAAQ,mBACA,SAASA,EAAO,CAAE,MAAO,WAAWA,EAAM,WAAW,CAAC,EAAE,WAAW,IAAA,GAC3E,MAAM,GAAI,EAAE,KAAK,SAAS,CAAA,EAE/B,oBAAqBhrC,EAAI,OAAO,WAAW,YAC3C,qBAAqB,oBACrB,qBAAqB,qBACrB,sBAAsB,oBACtB,2BAA2B,uBAC3B,uBAAuB,yBACvB,oBAAoB,oBACpB,sBAAsB,qBACtB,qBAAqB,GACrB,wBAAwB,GACxB,6BAA6B,qBAC7B,2BAA2B,GAC3B,sBAAsB,mCACtB,sBAAsB,iCACtB,sBAAuBA,EAAI,OAAO,WAAW,YAC7C,uBAAwBA,EAAI,OAAO,WAAW,YAC9C,eAAgB,SAAUG,EAAOF,EAAK,CAClC,OAAoB,OAAOA,EAAvB,IACOD,EAAI,OAAO,QAAQ,IAAI,YAAYG,EAAM,QAAQ,YAAY,CAAC,EAElEH,EAAI,OAAO,QAAQ,IAAI,YAAYG,EAAM,QAAQ,YAAY,CAAC,EAAIF,EAAMD,EAAI,OAAO,QAAQ,IAAI,YAAYG,EAAM,QAAQ,aAAa,CAAC,CAAA,EAElJ,gBAAiB,SAAUA,EAAOF,EAAK,CACnC,OAAoB,OAAOA,EAAvB,IACOD,EAAI,OAAO,QAAQ,IAAI,YAAY,GAAQ,EAE/CA,EAAI,OAAO,QAAQ,IAAI,YAAYG,EAAM,QAAQ,kBAAkB,CAAC,EAAIF,EAAMD,EAAI,OAAO,QAAQ,IAAI,YAAYG,EAAM,QAAQ,mBAAmB,CAAC,CAAA,EAE9J,gBAAiB,GACjB,SAAW,UACX,OAAS,IACT,iBAAkB;AAAA,EAClB,cAAe,SAAUA,EAAOF,EAAK,CAGvC,OAAOE,EAAM,IAAI,kBAAkBF,EAAK,KAAK,QAAS,KAAK,YAAa,KAAK,UAAU,CAAA,EAErF,sBAAuB,SAASE,EAAMF,EAAI,CACtC,OAAOA,CAAA,EAEX,uBAAwB,SAASE,EAAMF,EAAI,CACvC,OAAOA,EAAI,QAAA,EAEf,wBAAyB,SAAUE,EAAOF,EAAK,CAC3C,OAAOA,EAAI;AAAA,CAAA,EAEf,kBAAmB,SAAUE,EAAOF,EAAK,CACrC,MAAO;AAAA,QAAWA,EAAI;AAAA,CAAA,EAE1B,eAAgB,SAAUE,EAAOF,EAAK,CAClC,GAAI,CAACE,EAAM,IAAI,cAAgB,CAAEA,EAAM,IAAI,qBAAsB,CAC7D,IAAI8qC,EAAW,GACf,GAAIhrC,EAAK,CACL,IAAIgB,EAAIhB,EAAI,MAAMD,EAAI,6BAA6B,EACnDirC,EAAWhqC,EAAE,CAAC,EACdhB,EAAMgB,EAAE,CAAC,CAAA,CAEb,IAAIiqC,EAAY,GAChB,OAAIjrC,GAAOD,EAAI,qBAAqB,QAAQC,EAAI,MAAM,EAAE,CAAC,EAAI,KACzDirC,EAAYjrC,EAAI,MAAM,EAAE,EACxBA,EAAMA,EAAI,MAAM,EAAE,EAAE,GAEjBE,EAAM,IAAI,gBAAgB,KAAK,OAAQ8qC,EAAUhrC,EAAKirC,CAAS,CAAA,KAEtE,QAAOjrC,CACX,EAEJ,YAAa,SAAUE,EAAOF,EAAK,CAC/B,OAAOA,CAAA,EAEX,YAAa,SAAUE,EAAOF,EAAK,CAC/B,OAAOA,CAAA,GAuBfD,EAAI,OAAO,QAAQ,UAAU,SAAW,CACpC,YAAe,SAAUqJ,EAAM,CAC3B,OAAKA,IACDA,EAAO,IAEJA,EAAK,QAAQ,IAAK,WAAY,GAAG,EACnC,QAAQ,IAAK,WAAY,GAAG,EAC5B,QAAQ,IAAK,WAAY,GAAG,EAC5B,QAAQ,IAAK,WAAY,GAAG,EAC5B,QAAQ,IAAK,WAAY,GAAG,EAC5B,QAAQ,KAAM,YAAa,GAAG,EAC9B,QAAQ,KAAM,UAAW,GAAG,EAC5B,QAAQrJ,EAAI,oBAAqB,SAASgrC,EAAO,CAC9C,MAAO,IAAMhrC,EAAI,aAAagrC,CAAK,EAAI,GAAA,CAC1C,CAAA,EAET,SAAY,GACZ,OAAU,GACV,oBAAqBhrC,EAAI,OAAO,WAAW,YAC3C,qBAAsB,iBACtB,sBAAuB,iBACvB,qBAAsB,GACtB,2BAA4B,2BAC5B,uBAAwB,GACxB,oBAAqB,iBACrB,sBAAuB,GACvB,qBAAsB,GACtB,wBAAyB,GACzB,6BAA8B,4BAC9B,sBAAuB,iBACvB,sBAAuB,iBACvB,2BAA4B,GAC5B,sBAAuBA,EAAI,OAAO,WAAW,YAC7C,uBAAwBA,EAAI,OAAO,WAAW,YAC9C,eAAgB,SAAUG,EAAOF,EAAK,CAClC,OAAoB,OAAOA,EAAvB,IACO,KAEJ,KAAOA,EAAM,IAAA,EAExB,gBAAiB,SAAUE,EAAOF,EAAK,CACnC,OAAoB,OAAOA,EAAvB,IACO,IAEJ,IAAMA,EAAM,GAAA,EAEvB,gBAAiB,GACjB,cAAe,SAAUE,EAAOF,EAAK,CAEjC,OAAOE,EAAM,IAAI,kBAAkBF,EAAK,KAAK,QAAS,KAAK,YAAa,KAAK,UAAU,CAAA,EAE3F,sBAAuB,SAAUE,EAAOF,EAAK,CACzC,OAAOA,EAAM;AAAA,CAAA,EAEjB,iBAAkB,SAAUE,EAAOF,EAAK,CACpC,OAAOA,CAAA,EAEX,uBAAwB,SAAUE,EAAOF,EAAK,CAC1C,OAAOA,CAAA,EAEX,wBAAyB,SAAUE,EAAOF,EAAK,CAC3C,MAAO,IAAMA,CAAA,EAEjB,kBAAmB,SAAUE,EAAOF,EAAK,CACrC,MAAO,IAAMA,CAAA,EAEjB,eAAgB,SAAUE,EAAOF,EAAK,CAClC,GAAI,CAACE,EAAM,IAAI,cAAgB,CAACA,EAAM,IAAI,sBAAwB,KAAK,QAAuB,OAAOF,GAApB,SAAyB,CACtG,IAAIgrC,EAAW,GACf,GAAIhrC,EAAK,CACL,IAAIgB,EAAIhB,EAAI,MAAMD,EAAI,6BAA6B,EACnDirC,EAAWhqC,EAAE,CAAC,EACdhB,EAAMgB,EAAE,CAAC,CAAA,CAEb,IAAIiqC,EAAY,GAChB,OAAIjrC,GAAOD,EAAI,qBAAqB,QAAQC,EAAI,MAAM,EAAE,CAAC,EAAI,KACzDirC,EAAYjrC,EAAI,MAAM,EAAE,EACxBA,EAAMA,EAAI,MAAM,EAAE,EAAE,GAEjBE,EAAM,IAAI,gBAAgB,KAAK,OAAQ8qC,EAAUhrC,EAAKirC,CAAS,CAAA,KAEtE,QAAOjrC,CACX,EAEJ,YAAa,SAAUE,EAAOF,EAAK,CAE/B,OAAOA,CAAA,EAEX,YAAa,SAAUE,EAAOF,EAAK,CAC/B,IAAIkrC,EAASlrC,EACb,OAAKA,EAAI,MAAM,cAAc,IACzBkrC,EAAS,mBAAqBlrC,GAE3BkrC,EAAS,IAAMlrC,EAAM,GAAA,GAUpCD,EAAI,OAAO,QAAQ,UAAU,GAAK,CAC9B,YAAe,SAAUqJ,EAAM,CAC3B,OAAKA,IACDA,EAAO,IAEJA,EAAK,QAAQ,KAAM,OAAO,EAC5B,QAAQ,KAAM,OAAO,EACrB,QAAQ,KAAM,OAAO,EACrB,QAAQ,KAAM,UAAW,GAAG,EAC5B,QAAQrJ,EAAI,oBAAqB,SAASgrC,EAAO,CAC9C,MAAO,qCAAyChrC,EAAI,aAAagrC,CAAK,EAAI,cAAA,CAC7E,CAAA,EAET,SAAY,GACZ,OAAU,GACV,oBAAqBhrC,EAAI,OAAO,WAAW,YAC3C,qBAAsB,wDACtB,sBAAuB,yDACvB,qBAAsB,wDACtB,2BAA4B,8DAC5B,uBAAwB,0DACxB,oBAAqB,uDACrB,sBAAuB,yDACvB,qBAAsB,0DACtB,wBAAyB,2DACzB,6BAA8B,gEAC9B,sBAAuB,2DACvB,sBAAuB,yDACvB,2BAA4B,8DAC5B,sBAAuBA,EAAI,OAAO,WAAW,YAC7C,uBAAwBA,EAAI,OAAO,WAAW,YAC9C,eAAgB,SAAUG,EAAOF,EAAK,CAClC,OAAoB,OAAOA,EAAvB,IACOE,EAAM,QAAQ,YAAY,EAE9BA,EAAM,QAAQ,YAAY,EAAIF,EAAME,EAAM,QAAQ,aAAa,CAAA,EAE1E,gBAAiB,SAAUA,EAAOF,EAAK,CACnC,OAAoB,OAAOA,EAAvB,IACO,IAEJE,EAAM,QAAQ,kBAAkB,EAAIF,EAAME,EAAM,QAAQ,mBAAmB,CAAA,EAEtF,gBAAiB,GACjB,cAAe,SAAUA,EAAOF,EAAK,CACjC,OAAOE,EAAM,IAAI,kBAAkBF,EAAK,KAAK,QAAS,KAAK,YAAa,KAAK,UAAU,CAAA,EAE3F,sBAAuB,SAAUE,EAAOF,EAAK,CACzC,IAAImrC,EAAS,GACb,GAAIjrC,EAAM,cAAgBA,EAAM,aAAa,KAAOA,EAAM,aAAa,IAAI,cAAe,CACtF,IAAIkrC,EAAKlrC,EAAM,aAAa,IAAI,cAChCirC,EAAS,kBAAqBC,EAAI,qBAAyBA,EAAK,KAAA,CAEpE,IAAI58B,EAAS,GACb,OAAItO,EAAM,IAAI,yBACVsO,EAAStO,EAAM,IAAI,uBAAuB,KAAK,OAAO,EAAI;AAAA,GAEvD,iBAAoB,KAAK,UAAY,IAAOirC,EAAS,IAAMnrC,EAAM;AAAA,EAAkBwO,CAAA,EAE9F,iBAAkB,SAAUtO,EAAOF,EAAK,CACpC,MAAO;AAAA,cAAmBA,EAAM;AAAA,CAAA,EAEpC,uBAAwB,SAAUE,EAAOF,EAAK,CAC1C,MAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAM4BA,EAAM;AAAA;AAAA,SAAA,EAG7C,wBAAyB,SAAUE,EAAOF,EAAK,CAC3C,MAAO;AAAA,sBACgBA,EAAM;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA,EAMjC,kBAAmB,SAAUE,EAAOF,EAAK,CACrC,MAAO,+BAAmCA,EAAM;AAAA,CAAA,EAEpD,eAAgB,SAAUE,EAAOF,EAAK,CAClC,GAAI,CAACE,EAAM,IAAI,cAAgB,CAACA,EAAM,IAAI,sBAAwB,KAAK,QAAuB,OAAOF,GAApB,SAAyB,CACtG,IAAIgrC,EAAW,GACf,GAAIhrC,EAAK,CACL,IAAIgB,EAAIhB,EAAI,MAAMD,EAAI,6BAA6B,EACnDirC,EAAWhqC,EAAE,CAAC,EACdhB,EAAMgB,EAAE,CAAC,CAAA,CAEb,IAAIiqC,EAAY,GAChB,OAAIjrC,GAAOD,EAAI,qBAAqB,QAAQC,EAAI,MAAM,EAAE,CAAC,EAAI,KACzDirC,EAAYjrC,EAAI,MAAM,EAAE,EACxBA,EAAMA,EAAI,MAAM,EAAE,EAAE,GAEjBE,EAAM,IAAI,gBAAgB,KAAK,OAAQ8qC,EAAUhrC,EAAKirC,CAAS,CAAA,KAEtE,QAAOjrC,CACX,EAEJ,YAAa,SAAUE,EAAOF,EAAK,CAC/B,MAAO,6CAAgDA,EAAM,OAAUA,EAAM,kBAAA,EAEjF,YAAa,SAAUE,EAAOF,EAAK,CAC/B,IAAIkrC,EAASlrC,EACb,OAAKA,EAAI,MAAM,cAAc,IACzBkrC,EAAS,mBAAqBlrC,GAE3B,6CAAgDkrC,EAAS,OAAUlrC,EAAM,kBAAA,GASxFD,EAAI,OAAO,QAAQ,UAAU,MAAQ,CACjC,YAAe,SAAUqJ,EAAM,CAC3B,OAAKA,IACDA,EAAO,IAEJA,CAAA,EAEX,SAAY,8BACZ,OAAU,yBACV,qBAAsB,oBACtB,sBAAuB,GACvB,qBAAsB,GACtB,2BAA4B,GAC5B,oBAAqBrJ,EAAI,OAAO,WAAW,YAC3C,uBAAwB,GACxB,oBAAqB,oBACrB,sBAAuB,GACvB,qBAAsB,GACtB,wBAAyB,GACzB,6BAA8B,GAC9B,2BAA4B,GAC5B,sBAAuB,GACvB,sBAAuB,GACvB,sBAAuBA,EAAI,OAAO,WAAW,YAC7C,uBAAwBA,EAAI,OAAO,WAAW,YAC9C,eAAgB,SAAUG,EAAOF,EAAK,CAClC,OAAoB,OAAOA,EAAvB,IACOE,EAAM,QAAQ,YAAY,EAE9BA,EAAM,QAAQ,YAAY,EAAIF,EAAME,EAAM,QAAQ,aAAa,CAAA,EAE1E,gBAAiB,SAAUA,EAAOF,EAAK,CACnC,OAAoB,OAAOA,EAAvB,IAIO,IAEJE,EAAM,QAAQ,kBAAkB,EAAIF,EAAME,EAAM,QAAQ,mBAAmB,CAAA,EAEtF,gBAAiB,GAIjB,cAAe,SAAUA,EAAOF,EAAK,CACvC,OAAOE,EAAM,IAAI,kBAAkBF,EAAK,KAAK,QAAS,KAAK,YAAa,KAAK,UAAU,CAAA,EAErF,sBAAuB,SAAUE,EAAOF,EAAK,CACzC,MAAO,aAAeE,EAAM,IAAI,uBAAuB,KAAK,OAAO,EAAI;AAAA,CAAA,EAE3E,iBAAkB,SAAUA,EAAOF,EAAK,CACpC,MAAO;AAAA,EAAKA,CAAA,EAEhB,uBAAwB,SAAUE,EAAOF,EAAK,CAC1C,OAAOA,CAAA,EAEX,wBAAyB,SAAUE,EAAOF,EAAK,CAC3C,OAAOA,CAAA,EAEX,kBAAmB,SAAUE,EAAOF,EAAK,CACrC,MAAO;AAAA,MAASA,CAAA,EAEpB,eAAgB,SAAUE,EAAOF,EAAK49B,EAAO,CACzC,OAAO59B,CAAA,EAEX,YAAa,SAAUE,EAAOF,EAAK,CAC/B,OAAOA,CAAA,EAEX,YAAa,SAAUE,EAAOF,EAAK,CAC/B,OAAOA,CAAA,GAIfD,EAAI,OAAO,QAAU,IAAIA,EAAI,OAAO,QA4DpCA,EAAI,SAAW,SAAUG,EAAO,CAC5B,KAAK,MAAQ,GACb,KAAK,MAAQA,EACb,KAAK,SAAW,CAAA,EAChB,KAAK,QAAU,CAAA,EACf,KAAK,QAAU,CAAA,EACf,KAAK,QAAU,IAAIH,EAAI,SAAS,QAAQG,CAAK,EAC7C,KAAK,YAAc,IAAIH,EAAI,SAAS,YAAYG,CAAK,EAGrD,KAAK,cAAgB,CAAA,EAGrB,KAAK,UAAY,CAAA,EAIjB,KAAK,OAAS,CAAA,EACd,KAAK,OAAS,CAAA,EACd,KAAK,QAAU,CAAA,EACf,KAAK,QAAU,CAAA,EACf,KAAK,QAAU,CAAA,EACf,KAAK,UAAY,CAAA,EACjB,KAAK,MAAQ,CAAA,EACb,KAAK,OAAS,CAAA,EACd,KAAK,YAAc,CAAA,EAInB,KAAK,WAAa,CAAA,EAClB,KAAK,YAAc,CAAA,EACnB,KAAK,OAAS,IAAIH,EAAI,SAAS,YAAYG,EAAO,mBAAmB,EAIrE,KAAK,aAAe,UAAY,CAE5B,QADII,EAAM,CAAA,EACD,EAAI,EAAGD,EAAO,KAAK,QAAQ,OAAQ,EAAIA,EAAM,GAAK,EACvDC,EAAI,KAAK,GAAK,KAAK,QAAQ,CAAC,EAAE,EAAE,EAEpC,OAAOA,CAAA,EAGX,KAAK,uBAAyB,UAAY,CAEtC,QADIA,EAAM,CAAA,EACD,EAAI,EAAGD,EAAO,KAAK,QAAQ,OAAQ,EAAIA,EAAM,GAAK,EACvDC,EAAI,KAAK,KAAK,QAAQ,CAAC,CAAC,EAE5B,OAAOA,CAAA,CAEf,EA2DAP,EAAI,SAAS,UAAU,KAAO,SAAUqlB,EAASimB,EAAc,CAC3D,IAAI,EAAGhrC,EAWP,GAVA,KAAK,OAAS,CAAA,EAUVgrC,EAAc,CAGd,KAAK,QAAU,CAAA,EACf,QAAS,EAAE,EAAEhrC,EAAK+kB,EAAQ,OAAO,EAAE/kB,EAAM,GAAK,EACrC,KAAK,OAAO+kB,EAAQ,CAAC,CAAC,GACvB,KAAK,OAAO,KAAK,GAAKA,EAAQ,CAAC,CAAC,EAEpC,KAAK,QAAQA,EAAQ,CAAC,CAAC,EAAI,GAC3B,KAAK,OAAOA,EAAQ,CAAC,CAAC,EAAI,EAC9B,KACG,CAIH,QAASxjB,KAAO,KAAK,QACjBwjB,EAAQ,KAAKxjB,CAAG,EAEpB,IAAI0pC,EAAS,CAAA,EACb,IAAK,EAAElmB,EAAQ,OAAO,EAAE,EAAE,GAAI,GAAK,GAC3BkmB,EAAOlmB,EAAQ,CAAC,CAAC,EACjBA,EAAUA,EAAQ,MAAM,EAAG,CAAC,EAAE,OAAOA,EAAQ,MAAM,EAAI,CAAC,CAAC,EAEzDkmB,EAAOlmB,EAAQ,CAAC,CAAC,EAAI,GAG7B,KAAK,OAASA,EACd,KAAK,OAASkmB,CAAA,CAKlB,KAAK,UAAY,CAAA,EACjB,KAAK,QAAU,CAAA,EACf,KAAK,cAAgB,CAAA,EACrB,KAAK,YAAc,CAAA,CACvB,EAEAvrC,EAAI,SAAS,UAAU,QAAU,SAAUurC,EAAQ,CAE/C,QAASlrC,EAAE,KAAK,OAAO,OAAO,EAAEA,EAAE,GAAGA,GAAG,GAEhC,KAAK,YAAY,oBACZ,CAAC,KAAK,YAAY,mBAAqB,CAAC,KAAK,YAAY,kBAAkB,KAAK,OAAOA,CAAC,CAAC,IAAM,CAACkrC,EAAO,KAAK,OAAOlrC,CAAC,CAAC,IACtH,OAAO,KAAK,OAAO,KAAK,OAAOA,CAAC,CAAC,EACjC,OAAO,KAAK,QAAQ,KAAK,OAAOA,CAAC,CAAC,EAClC,KAAK,OAAS,KAAK,OAAO,MAAM,EAAEA,CAAC,EAAE,OAAO,KAAK,OAAO,MAAMA,EAAE,CAAC,CAAC,GAI9E,KAAK,UAAU,KAAK,MAAM,CAC9B,EAEAL,EAAI,SAAS,UAAU,UAAY,SAAUurC,EAAQ,CACjD,IAAIC,EAAY3pC,EAAKwkB,EAAOrhB,EAAKC,EAAKwmC,EAAOC,EAAM1iB,EAAOrW,EAC1D,GAAiB,OAAO44B,GAApB,SAA4B,CAC5B,IAAI1pC,EAAM0pC,EACVA,EAAS,CAAA,EACTA,EAAO1pC,CAAG,EAAI,EAAA,CAKlB,QAASA,KAAO,KAAK,SACjB,GAAI,CAAC0pC,EAAO1pC,CAAG,EAAG,CAEd,GAAI,KAAK,QAAQA,CAAG,EAChB,SAKJ2pC,EAAa,KAAK,QAAQ,SAAS3pC,CAAG,EAOtC,IAAK6pC,KAAQF,EACT,KAAK,UAAUE,CAAI,EAAI,GAmB3B,IAdArlB,EAAQ,KAAK,SAASxkB,CAAG,EAAE,MAC3BmnB,EAAQ,KAAK,WAAW3C,CAAK,EAAE,QAAQxkB,CAAG,EACtCmnB,EAAQ,KACRyiB,EAAQ,KAAK,WAAWplB,CAAK,EAAE,MAAA,EAC/B,KAAK,WAAWA,CAAK,EAAIolB,EAAM,MAAM,EAAGziB,CAAK,EAAE,OAAOyiB,EAAM,MAAMziB,EAAM,EAAGyiB,EAAM,MAAM,CAAC,EACxF,KAAK,YAAYplB,CAAK,EAAI,KAAK,WAAWA,CAAK,EAAE,QAQrDphB,EAAM,KAAK,WAAWohB,CAAK,EAAE,OACxBrhB,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAC5B2N,EAAK,GAAK,KAAK,WAAW0T,CAAK,EAAErhB,CAAG,EACpC,KAAK,UAAU2N,CAAE,EAAI,GAMzB,GAAI,KAAK,SAAS9Q,CAAG,EAAE,UACnB,GAAI,KAAK,SAASA,CAAG,EAAE,SAAS,QAAU,EAAG,CACzC,IAAI8pC,EAAgB,KAAK,SAAS9pC,CAAG,EAAE,SAAS,CAAC,EAC7C,KAAK,SAAS8pC,CAAa,EAAE,WAC7B,KAAK,SAASA,CAAa,EAAE,SAAS,IAAA,EACtC,KAAK,SAASA,CAAa,EAAE,OAAS,GAE1C,SACO,KAAK,SAAS9pC,CAAG,EAAE,SAAS,OAAS,EAAG,CAC/C,IAAI+pC,EAAY,CAAC/pC,CAAG,EACpB,GAAI,KAAK,SAASA,CAAG,EAAE,OAAQ,CAC3B,IAAIgqC,EAAc,KAAK,SAAShqC,CAAG,EAAE,SAAS,CAAC,EAC3CiqC,EAAY,KAAK,SAASD,CAAW,EACzCC,EAAU,OAAS,GAGnBF,EAAU,KAAKC,CAAW,CAAA,CAM9B,QADI/oB,EAAS,CAAA,EACJ3b,EAAI,KAAK,SAAStF,CAAG,EAAE,SAAS,OAAS,EAAGsF,EAAI,GAAIA,GAAK,GAAI,CAClE,IAAIuzB,EAAY,KAAK,SAAS74B,CAAG,EAAE,SAAS,IAAA,EACxC+pC,EAAU,QAAQlR,CAAS,IAAM,IACjC5X,EAAO,KAAK4X,CAAS,CACzB,CAEJ,QAASvzB,EAAI2b,EAAO,OAAS,EAAG3b,EAAI,GAAIA,GAAK,GACzC,KAAK,SAAStF,CAAG,EAAE,SAAS,KAAKihB,EAAO3b,CAAC,CAAC,CAC9C,EAKR,QAAS9G,EAAE,KAAK,QAAQ,OAAO,EAAEA,EAAE,GAAGA,IAC9B,KAAK,QAAQA,CAAC,EAAE,KAAOwB,IACvB,KAAK,QAAU,KAAK,QAAQ,MAAM,EAAGxB,CAAC,EAAE,OAAO,KAAK,QAAQ,MAAMA,EAAE,CAAC,CAAC,GAM9E,OAAO,KAAK,SAASwB,CAAG,EACxB,OAAO,KAAK,QAAQA,CAAG,EAGvB,KAAK,YAAY,UAAY,EAAA,CAKzC,EAEA7B,EAAI,SAAS,UAAU,UAAY,SAAU+rC,EAAQ,CACjD,IAAIjrC,EAAMI,EAAM8qC,EAAMxuB,EAASyuB,EAAO5rC,EAAGC,EACxB,OAAOyrC,GAApB,WACAA,EAAS,CAACA,CAAM,GAKpB,QAAS1rC,EAAI,EAAGC,EAAOyrC,EAAO,OAAQ1rC,EAAIC,EAAMD,GAAK,EACjDS,EAAOirC,EAAO1rC,CAAC,EACV,KAAK,SAASS,CAAI,IAInBI,EAAO,KAAK,MAAM,aAAaJ,CAAI,EAUnCkrC,EAAOhsC,EAAI,iBAAiB,KAAK,KAAK,MAAOkB,CAAI,EACjD,KAAK,cAAc8qC,CAAI,EAAI,GAKtB9qC,EAAK,iBACN,KAAK,MAAM8qC,CAAI,EAAI,IAKvBxuB,EAAU,CACN,GAAM,GAAK1c,EACX,IAAO,EACP,OAAU,EACV,SAAY,GACZ,MAAS,GACT,SAAY,GACZ,SAAY,GACZ,IAAOI,EACP,QAAW,IAMf,KAAK,SAASJ,CAAI,EAAI0c,EAIlB,KAAK,YAAY,mBAAqB,KAAK,YAAY,kBAAkB1c,CAAI,IAC7E,KAAK,SAASA,CAAI,EAAE,6BAA6B,EAAI,KAAK,YAAY,kBAAkBA,CAAI,EAAE,CAAC,EAAE,WAAW,WAOhHmrC,EAAQjsC,EAAI,eAAe,KAAK,KAAK,KAAK,EAC1C,KAAK,mBAAmBgsC,EAAMlrC,EAAMmrC,CAAK,EAazC,KAAK,QAAQnrC,CAAI,EAAI,GAErB,KAAK,YAAY,UAAY,GAKzC,EAgBAd,EAAI,SAAS,UAAU,YAAc,SAAU+lB,EAAQ,CACnD,IAAI9gB,EAAKD,EAAKlE,EAAMI,EAQpB,GAAK6kB,EAqBD,IAFA,KAAK,QAAU,CAAA,EACf9gB,EAAM,KAAK,OAAO,OACbD,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAC5BlE,EAAO,KAAK,OAAOkE,CAAG,EACtB9D,EAAO,KAAK,SAASJ,CAAI,EACzB,KAAK,QAAQ,KAAKI,CAAI,EACtB,KAAK,OAAOJ,CAAI,EAAI,KAAK,SAASA,CAAI,EAAE,IACxC,KAAK,SAASA,CAAI,EAAE,IAAOkE,EAAM,MAjBrC,KARA,KAAK,gBAAkB,CAAA,EAOvBC,EAAM,KAAK,OAAO,OACbD,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAC5BlE,EAAO,KAAK,OAAOkE,CAAG,EACtB9D,EAAO,KAAK,SAASJ,CAAI,EACrBI,EAAK,SACL,KAAK,gBAAgB,KAAKA,CAAI,EAElC,KAAK,OAAOJ,CAAI,EAAI,KAAK,SAASA,CAAI,EAAE,IACxC,KAAK,SAASA,CAAI,EAAE,IAAOkE,EAAM,CAa7C,EASAhF,EAAI,SAAS,UAAU,YAAc,UAAY,CAC7C,IAAI6B,EAAKqqC,EAAUhrC,EAAM8qC,EAAMC,EAU/B,QAASpqC,KAAO,KAAK,UAEjB,GADAqqC,EAAW,KAAK,SAASrqC,CAAG,EACxB,EAACqqC,EAGL,CAAAA,EAAS,SAAW,OACpBhrC,EAAO,KAAK,MAAM,YAAYW,CAAG,EACjC,IAAImqC,EAAOE,EAAS,MAEA,OAAOF,EAAvB,MACA,KAAK,MAAM,IAAI,kBAAoB,GACnCA,EAAOhsC,EAAI,iBAAiB,KAAK,KAAK,MAAOkB,CAAI,EACjD+qC,EAAQjsC,EAAI,eAAe,KAAK,KAAK,KAAK,EAC1C,KAAK,mBAAmBgsC,EAAMnqC,EAAKoqC,CAAK,GAE5C,QAASE,KAAS,KAAK,YACnB,GAAI,KAAK,YAAYA,CAAK,IAAM,EAAG,CAC/B,IAAIC,EAAU,KAAK,WAAWJ,CAAI,EAAE,CAAC,EACjC9qC,EAAO,KAAK,MAAM,YAAYkrC,CAAO,EACzC,KAAK,SAASA,CAAO,EAAE,SAAW,IAAIpsC,EAAI,YAC1C,KAAK,MAAM,IAAI,kBAAoB,GACnC,IAAIgsC,EAAOhsC,EAAI,iBAAiB,KAAK,KAAK,MAAOkB,CAAI,EACjD+qC,EAAQjsC,EAAI,eAAe,KAAK,KAAK,KAAK,EAC9C,KAAK,mBAAmBgsC,EAAMI,EAASH,CAAK,CAAA,CAGpD,KAAK,MAAM,IAAI,eAAepqC,CAAG,EAAI,GACrC,KAAK,cAAcmqC,CAAI,EAAI,GACtB9qC,EAAK,iBACN,KAAK,MAAM8qC,CAAI,EAAI,IAEvB,KAAK,QAAQnqC,CAAG,EAAI,GAE5B,EAMA7B,EAAI,SAAS,UAAU,aAAe,UAAY,CAY9C,QAASgsC,KAAQ,KAAK,cAMlB,KAAK,MAAM,aAAa,IAAIA,CAAI,EAEpC,KAAK,cAAgB,CAAA,EACrB,KAAK,MAAQ,CAAA,CACjB,EAIAhsC,EAAI,SAAS,UAAU,SAAW,UAAY,CAC1C,IAAIiF,EAAKD,EAAKlE,EAQd,IAJI,KAAK,MAAM,kBAAkB,IAAI,iCAAmCd,EAAI,aACxE,KAAK,MAAM,kBAAkB,IAAI,oBAAsB,CAAA,GAE3DiF,EAAM,KAAK,QAAQ,OACdD,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAC5BlE,EAAO,KAAK,QAAQkE,CAAG,EAGvBlE,EAAK,IAAOkE,EAAM,EACd,KAAK,MAAM,kBAAkB,IAAI,iCAAmChF,EAAI,aACxE,KAAK,MAAM,kBAAkB,IAAI,oBAAoBc,EAAK,GAAG,EAAK,KAAK,QAAQ,OAASA,EAAK,IAAM,GAInG,KAAK,MAAM,IAAI,cAAgBd,EAAI,SAAWc,EAAK,KAAO,KAAK,OAAOA,EAAK,EAAE,IAC7E,KAAK,MAAM,IAAI,eAAeA,EAAK,EAAE,EAAI,IAEzCA,EAAK,KAAO,KAAK,OAAOA,EAAK,EAAE,IAC/B,KAAK,YAAY,UAAY,GAGzC,EAEAd,EAAI,SAAS,UAAU,YAAc,UAAY,CAK7C,QAJI6B,EAIKxB,EAAI,EAAGC,EAAO,KAAK,OAAO,OAAQD,EAAIC,EAAMD,GAAK,EAAG,CACzD,IAAIwB,EAAM,KAAK,OAAOxB,CAAC,GAEnB,KAAK,QAAQwB,CAAG,GAAK,KAAK,MAAM,IAAI,eAAeA,CAAG,GAAK,CAAC,KAAK,SAASA,CAAG,EAAE,YAC/E,KAAK,SAASA,CAAG,EAAE,SAAW7B,EAAI,YAAY,KAAK,KAAK,MAAO,KAAK,MAAM,aAAa6B,CAAG,EAAG,mBAAmB,EACpH,CAER,EAEA7B,EAAI,SAAS,UAAU,YAAc,SAASoQ,EAASi8B,EAAO,CAC1D,OAAAA,EAAM,OAAO,KAAK,YAAYj8B,EAASi8B,CAAK,EAAI,EAAG,EAAGj8B,CAAO,EACtDi8B,CACX,EAEArsC,EAAI,SAAS,UAAU,YAAc,SAASoQ,EAASi8B,EAAO1pC,EAAOC,EAAK,CACtE,GAAIypC,EAAM,SAAW,EACjB,MAAO,GAEX1pC,EAAQA,GAAS,EACjBC,EAAMA,GAAOypC,EAAM,OACnB,IAAIC,EAAS3pC,EAAQC,GAAQ,EAEzB0Z,EAAI,KAAK,OAAO,YAAYlM,EAASi8B,EAAMC,CAAK,CAAC,EACrD,GAAI1pC,EAAMD,GAAS,EACf,OAAO2Z,GAAK,GAAKgwB,EAAQ,EAAIA,EAEjC,OAAQhwB,EAAA,CACJ,IAAK,GAAI,OAAO,KAAK,YAAYlM,EAASi8B,EAAO1pC,EAAO2pC,CAAK,EAC7D,IAAK,GAAG,OAAOA,EACf,IAAK,GAAG,OAAO,KAAK,YAAYl8B,EAASi8B,EAAOC,EAAO1pC,CAAG,CAAA,CAElE,EAEA5C,EAAI,SAAS,UAAU,WAAa,SAAU+lB,EAAQ,CAClD,IAAI9gB,EAAKnE,EAAMI,EAAM8D,EAIrB,GAAI,CAAC+gB,EAAQ,CAGT,IAFA,KAAK,gBAAkB,CAAA,EACvB9gB,EAAM,KAAK,OAAO,OACbD,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAC5BlE,EAAO,KAAK,OAAOkE,CAAG,EACtB9D,EAAO,KAAK,SAASJ,CAAI,EACrBI,EAAK,SACL,KAAK,gBAAgB,KAAKA,CAAI,EAKtC,QAASW,KAAO,KAAK,MAAM,IAAI,eAC3B,GAAI,KAAK,SAASA,CAAG,GAAK,CAAC,KAAK,SAASA,CAAG,EAAE,QAE1C,QAASxB,EAAE,KAAK,QAAQ,OAAO,EAAEA,EAAE,GAAGA,IAC9B,KAAK,QAAQA,CAAC,EAAE,KAAOwB,IACvB,KAAK,gBAAgB,KAAK,KAAK,QAAQxB,CAAC,CAAC,EACzC,KAAK,QAAU,KAAK,QAAQ,MAAM,EAAGA,CAAC,EAAE,OAAO,KAAK,QAAQ,MAAMA,EAAE,CAAC,CAAC,GAKtF,QAASA,EAAE,EAAEC,EAAK,KAAK,gBAAgB,OAAOD,EAAEC,EAAKD,IAAK,CACtD,IAAIa,EAAO,KAAK,gBAAgBb,CAAC,EACjC,OAAOa,EAAK,QACZ,KAAK,QAAU,KAAK,YAAYA,EAAM,KAAK,OAAO,CAAA,CAEtD,IAAK8D,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAC5BlE,EAAO,KAAK,OAAOkE,CAAG,EACtB9D,EAAO,KAAK,SAASJ,CAAI,EACzB,KAAK,SAASA,CAAI,EAAE,IAAOkE,EAAM,CACrC,CAER,EAMAhF,EAAI,SAAS,YAAc,SAAUG,EAAOosC,EAAQ,CAChD,IAAIC,EAAiBvnC,EAAKD,EAAKynC,EAC3BthC,EAAcnL,EAAI,eAAe,KAAKG,EAAOA,EAAM,IAAI,qBAAqB,CAAC,EACjFqsC,EAAkBrsC,EAAMosC,CAAM,EAAE,IAAI,gBACpC,KAAK,YAAc,SAAUzhC,EAAGC,EAAG,CAE/B,IADA9F,EAAM6F,EAAE,SAAWA,EAAE,SAAS,OAAS,EAClC9F,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAAG,CAU/B,IAAI0nC,EAAM,EAWV,GAVI5hC,EAAE,SAAS9F,CAAG,IAAM+F,EAAE,SAAS/F,CAAG,EAClC0nC,EAAM,EACiB,OAAO5hC,EAAE,SAAS9F,CAAG,EAArC,IACP0nC,EAAMF,EAAgBxnC,CAAG,EAAE,CAAC,EACL,OAAO+F,EAAE,SAAS/F,CAAG,EAArC,IACP0nC,EAAMF,EAAgBxnC,CAAG,EAAE,CAAC,EAG5B0nC,EAAMvhC,EAAYL,EAAE,SAAS9F,CAAG,EAAG+F,EAAE,SAAS/F,CAAG,CAAC,EAElD,EAAI0nC,EACJ,OAAOF,EAAgBxnC,CAAG,EAAE,CAAC,EACjC,GAAW,EAAI0nC,EACX,OAAOF,EAAgBxnC,CAAG,EAAE,CAAC,CACjC,CAEJ,OAAI8F,EAAE,IAAMC,EAAE,IACH,EACAD,EAAE,IAAMC,EAAE,IACV,GAEJ,CAAA,EAEX0hC,EAAc,KAAK,YACnB,KAAK,qBAAuB,SAAU3hC,EAAGC,EAAG,CACxC,OAAO0hC,EAAY3hC,EAAE,CAAC,EAAGC,EAAE,CAAC,CAAC,CAAA,CAErC,EAQA/K,EAAI,SAAS,UAAU,sBAAwB,SAAU8K,EAAGC,EAAG,CAC3D,OAAID,EAAE,IAAMC,EAAE,IACH,EACAD,EAAE,IAAMC,EAAE,IACV,GAEJ,CACX,EAEA/K,EAAI,SAAS,UAAU,mBAAqB,SAAUgsC,EAAMr5B,EAAIg6B,EAAc,CAO1E,GALK,KAAK,SAASh6B,CAAE,GACjB3S,EAAI,MAAM,uCAAuC2S,EAAG,YAAYq5B,EAAK,GAAG,EAIxE,KAAK,SAASr5B,CAAE,GAAK,KAAK,SAASA,CAAE,EAAE,UAAY,KAAK,SAASA,CAAE,EAAE,SAAS,MAC9E,QAAStS,EAAI,EAAGC,EAAOqsC,EAAa,MAAM,OAAQtsC,EAAIC,EAAMD,GAAK,EAAG,CAChE,IAAIusC,EAAmBD,EAAa,MAAMtsC,CAAC,EACvCwsC,EAAmB,KAAK,SAASl6B,CAAE,EAAE,SAAS,MAAMtS,CAAC,EACzD,GAAIusC,IAAqBC,EACrB,KAAK,MAAM,IAAI,eAAel6B,CAAE,EAAI,WAC7Bg6B,EAAa,OAAOtsC,CAAC,EAE5B,QAASQ,EAAE,EAAEY,EAAKkrC,EAAa,OAAOtsC,CAAC,EAAE,OAAOQ,EAAEY,EAAKZ,GAAG,EAAG,CACzD,IAAIisC,EAAoBH,EAAa,OAAOtsC,CAAC,EAAEQ,CAAC,EAC5CksC,EAAoB,KAAK,SAASp6B,CAAE,EAAE,SAAS,OAAOtS,CAAC,EAAEQ,CAAC,EAC1DisC,IAAsBC,IACtB,KAAK,MAAM,IAAI,eAAep6B,CAAE,EAAI,GACxC,CAER,CAIH,KAAK,WAAWq5B,CAAI,IACrB,KAAK,WAAWA,CAAI,EAAI,CAAA,GAExB,KAAK,WAAWA,CAAI,EAAE,QAAQ,GAAKr5B,CAAE,IAAM,IAC3C,KAAK,WAAWq5B,CAAI,EAAE,KAAK,GAAKr5B,CAAE,EAEtC,KAAK,SAASA,CAAE,EAAE,MAAQq5B,EAC1B,KAAK,SAASr5B,CAAE,EAAE,SAAW3S,EAAI,iBAAiB2sC,CAAY,CAClE,EAOA3sC,EAAI,YAAc,SAAUkB,EAAM8rC,EAAU,CACxC,IAAI56B,EAAM66B,EAAMC,EAAWC,EAAoBloC,EAAKD,EAqBpD,IAfAoN,EAAO,KAAK,IAAI,KAChB66B,EAAO,KAAK,IAAI,KAChBC,EAAY,KAAK,IAAI,UACrBC,EAAqBntC,EAAI,KAAK,KAAK,mBACnC,KAAK,IAAI,KAAOgtC,EAEhB,KAAK,IAAI,KAAOA,EAAS,QAAQ,GAAG,EAAI,GAAKA,EAAS,MAAM,EAAE,EAAE,EAAIA,EACpE,KAAK,IAAI,UAAY,QACrB,KAAK,IAAI,kBAAoB,GAC7B,KAAK,IAAI,iBAAmB,GAC5B,KAAK,IAAI,qBAAuB,GAChChtC,EAAI,QAAQ,KAAK,KAAMkB,CAAI,EAC3B,KAAK,IAAI,qBAAuB,GAChC,KAAK,IAAI,kBAAoB,GAC7B+D,EAAM,KAAK+nC,CAAQ,EAAE,KAAK,OACrBhoC,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAC5B,KAAKgoC,CAAQ,EAAE,KAAKhoC,CAAG,EAAImoC,EAAmB,KAAKH,CAAQ,EAAE,KAAKhoC,CAAG,CAAC,EAQ1E,YAAK,IAAI,KAAOoN,EAChB,KAAK,IAAI,KAAO66B,EAChB,KAAK,IAAI,UAAYC,EACd,KAAKF,CAAQ,EAAE,IAC1B,EAKAhtC,EAAI,SAAS,QAAU,SAAUG,EAAO,CACpC,IAAIitC,EAAMxlB,EAAMylB,EAAMC,EAAQ9Z,EAAQiY,EAAO8B,EAAeC,EAAUC,EAAUC,EAAUC,EAASC,EACnG,KAAK,MAAQztC,EACb,KAAK,QAAU,CAAA,EACf,KAAK,QAAU,CAAA,EAEf,KAAK,aAAe,CAAA,EAKpB,KAAK,WAAa,CAAA,EAElBotC,EAAgB,SAAUttC,EAAK,CAC3B,OAAKA,IACDA,EAAM,IAEHA,EAAI,QAAQ,MAAO,GAAG,EAAE,QAAQ,OAAQ,GAAG,EAAE,QAAQ,OAAO,EAAE,CAAA,EAGzEutC,EAAW,SAAUrtC,EAAO0tC,EAAQC,EAAS,CACzCV,EAAOG,EAAcO,EAAQ,MAAM,EAE/B3tC,EAAM,IAAI,8BAA8B,IAAM,SAAW2tC,EAAQ,uBAAuB,GAAKA,EAAQ,SACrGV,EAAO,GAAGA,CAAI,IAAIU,EAAQ,uBAAuB,CAAC,IAGtDT,EAAOE,EAAcO,EAAQ,KAAK,EAGlC,IAAI7sC,EAAIosC,EAAK,MAAM,iBAAiB,EAChCpsC,GAAKA,EAAE,CAAC,IAAMA,EAAE,CAAC,EAAE,gBACnBosC,EAAOA,EAAK,QAAQ,gBAAiB,EAAE,GAI3CzlB,EAAO5nB,EAAI,KAAK,MAAM,eAAeG,EAAOktC,EAAM,IAAI,EAClDltC,EAAM,SAAS,IAAI,+BAA+B,IAAM,YACxDitC,EAAO,GAAKS,EAAST,EACzB,EAGJK,EAAW,SAAUjvB,EAASsvB,EAASC,EAASC,EAAcx8B,EAAMy8B,EAAU,CAC1E,IAAIziC,EAEJ,GAAIrL,EAAM,IAAI,KAAK,MAAM,EAAG,EAAE,IAAM,gBAAkB,CAACqR,EACnD,OAAiB,OAAOy8B,GAApB,SACO,EAEA,EAGf,IAAI1oC,EAAMpF,EAAM,WAAW,QAAQ2tC,EAAS,kBAAmB,EAAI,EACnEA,EAAUvoC,EAAI,KACdioC,EAAS,KAAK,MAAO,GAAKhvB,EAASsvB,CAAO,EAW1CtiC,EAAQ,EACR8hC,EAASntC,EAAM,IAAI,4BAA4B,EAC/CqzB,EAASrzB,EAAM,SAAS,IAAI,+BAA+B,EAC3D,IAAI+tC,EAAc1a,EAclB,GAbIA,IAAW,YACXA,EAAS,aAKGhiB,IAAZ,QACAhG,EAAQ,EACY,OAAOyiC,GAApB,WACPziC,EAAQ,GAIQ,OAAO,KAAK,QAAQ4hC,CAAI,EAAxC,KAA6D,OAAO,KAAK,QAAQA,CAAI,EAAE,KAAKxlB,CAAI,EAAnD,IAC7C,OAAOpc,EAMX,GAAI0iC,IAAgB,WAAa1iC,GAASwiC,EAEtC,OAAOA,EA6BX,GA3BI,CAACV,GAGY,OAAO9Z,GAApB,UAA8BA,EAAO,MAAM,EAAG,EAAE,IAAM,gBAAkBua,EAAU,IAMlF,CAACva,GAAUA,IAAW,aAAeA,IAAW,gBAC5C,KAAK,QAAQ4Z,CAAI,EAAE,MAAQ,IAC3B5hC,EAAQ,IAEP,KAAK,QAAQ4hC,CAAI,EAAE,MAChB,KAAK,QAAQA,CAAI,EAAE,KAAKxlB,CAAI,EAAE,MAAQ,GACtC,KAAK,QAAQwlB,CAAI,EAAE,MAAQ,GACX,OAAOa,GAApB,YAEPziC,EAAQ,KAELgoB,IAAW,2BAA6BA,IAAW,gCACtD,KAAK,QAAQ4Z,CAAI,EAAE,MAAQ,EAC3B5hC,EAAQ,EAERA,EAAQ,GAGXrL,EAAM,SAAS,SAASqe,CAAO,GAOhC,OAAOhT,EANP,GAAIgG,GAAQ,QACR,MAAO,GACX,GAAuB,OAAOy8B,GAAnB,SACP,MAAO,EAIf,EAQJP,EAAW,SAAUh7B,EAAK,CACtB,IAAI1N,EAAKC,EAAKkpC,EAAMx7B,EAAIy7B,GACP,OAAO17B,GAApB,UAAwC,OAAOA,GAApB,YAC3BA,EAAM,CAAC,GAAKA,CAAG,GAGnB,IAAInS,EAAM,CAAA,EAEV,IADA0E,EAAMyN,EAAI,OACL1N,EAAM,EAAGA,EAAMC,EAAKD,GAAO,EAE5B,GADA2N,EAAK,GAAKD,EAAI1N,CAAG,EACb,EAAC,KAAK,QAAQ2N,CAAE,EAGpB,KAAKy7B,KAAW,KAAK,QAAQz7B,CAAE,EAC3B,GAAI,KAAK,QAAQA,CAAE,EAAE,eAAey7B,CAAO,EAAG,CAC1C,IAAIvsC,EAAMusC,EAAQ,MAAM,IAAI,EAO5B,GANAhB,EAAOvrC,EAAI,CAAC,EACZ+lB,EAAO/lB,EAAI,CAAC,EACZwrC,EAAOxrC,EAAI,CAAC,EAIQ,OAAO,KAAK,QAAQurC,CAAI,EAAxC,IACA,SAUJ,GAJA3B,EAAQ,KAAK,QAAQ2B,CAAI,EAAE,MAIvBC,GAAQ,KAAK,QAAQD,CAAI,EAAE,KAAKxlB,CAAI,GAAK,KAAK,QAAQwlB,CAAI,EAAE,KAAKxlB,CAAI,EAAE,KAAKylB,CAAI,IAChFO,EAAU,KAAK,QAAQR,CAAI,EAAE,KAAKxlB,CAAI,EAAE,KAAKylB,CAAI,EAAE,MACnDc,EAAOP,EAAQ,QAAQ,GAAKj7B,CAAE,EAC1Bw7B,EAAO,KACP,KAAK,QAAQf,CAAI,EAAE,KAAKxlB,CAAI,EAAE,KAAKylB,CAAI,EAAE,MAAQO,EAAQ,MAAM,EAAGO,CAAI,EAAE,OAAOP,EAAQ,MAAM,CAAEO,EAAO,CAAE,CAAC,CAAC,GAE1G,KAAK,QAAQf,CAAI,EAAE,KAAKxlB,CAAI,EAAE,KAAKylB,CAAI,EAAE,MAAM,SAAW,IAC1D,OAAO,KAAK,QAAQD,CAAI,EAAE,KAAKxlB,CAAI,EAAE,KAAKylB,CAAI,EAC9C,KAAK,QAAQD,CAAI,EAAE,KAAKxlB,CAAI,EAAE,OAAS,GACnC,KAAK,QAAQwlB,CAAI,EAAE,KAAKxlB,CAAI,EAAE,MAAQ,IACtC,QAASvnB,EAAI,EAAGC,EAAO,KAAK,QAAQ8sC,CAAI,EAAE,KAAKxlB,CAAI,EAAE,MAAM,OAAQvnB,EAAIC,EAAMD,GAAK,EAC9EF,EAAM,IAAI,eAAe,KAAK,QAAQitC,CAAI,EAAE,KAAKxlB,CAAI,EAAE,MAAMvnB,CAAC,CAAC,EAAI,GAKnF,GAAIunB,GAAQ,KAAK,QAAQwlB,CAAI,EAAE,KAAKxlB,CAAI,IACpCumB,EAAO,KAAK,QAAQf,CAAI,EAAE,KAAKxlB,CAAI,EAAE,MAAM,QAAQ,GAAKjV,CAAE,EACtDw7B,EAAO,KACP1C,EAAQ,KAAK,QAAQ2B,CAAI,EAAE,KAAKxlB,CAAI,EAAE,MAAM,MAAA,EAC5C,KAAK,QAAQwlB,CAAI,EAAE,KAAKxlB,CAAI,EAAE,MAAQ6jB,EAAM,MAAM,EAAG0C,CAAI,EAAE,OAAO1C,EAAM,MAAM,CAAC0C,EAAO,CAAC,CAAC,CAAC,GAEzF,KAAK,QAAQf,CAAI,EAAE,KAAKxlB,CAAI,EAAE,MAAM,SAAW,IAC/C,OAAO,KAAK,QAAQwlB,CAAI,EAAE,KAAKxlB,CAAI,EACnC,KAAK,QAAQwlB,CAAI,EAAE,OAAS,GACxB,KAAK,QAAQA,CAAI,EAAE,MAAQ,IAC3B,QAAS/sC,EAAI,EAAGC,EAAO,KAAK,QAAQ8sC,CAAI,EAAE,MAAM,OAAQ/sC,EAAIC,EAAMD,GAAK,EACnEF,EAAM,IAAI,eAAe,KAAK,QAAQitC,CAAI,EAAE,MAAM/sC,CAAC,CAAC,EAAI,GAKpE+sC,IACAe,EAAO,KAAK,QAAQf,CAAI,EAAE,MAAM,QAAQ,GAAKz6B,CAAE,EAC3Cw7B,EAAO,KACP1C,EAAQ,KAAK,QAAQ2B,CAAI,EAAE,MAAM,MAAA,EACjC,KAAK,QAAQA,CAAI,EAAE,MAAQ3B,EAAM,MAAM,EAAG0C,CAAI,EAAE,OAAO1C,EAAM,MAAM,CAAC0C,EAAO,CAAC,EAAG1C,EAAM,MAAM,CAAC,GAE5F,KAAK,QAAQ2B,CAAI,EAAE,MAAM,OAAS,GAClC,OAAO,KAAK,QAAQA,CAAI,GAGhC,OAAO,KAAK,QAAQz6B,CAAE,EAAEy7B,CAAO,CAAA,CAGvC,OAAO,KAAK,QAAQz7B,CAAE,EACtB,OAAO,KAAK,aAAaA,CAAE,EAE/B,OAAOpS,CAAA,EAWXotC,EAAU,SAAUnvB,EAASsvB,EAAS9oC,EAAK,CACvC,IAAI3E,EAAGC,EACHiF,EAAMpF,EAAM,WAAW,QAAQ2tC,EAAS,kBAAmB,EAAI,EAGnE,GAFAA,EAAUvoC,EAAI,KAEV,EAAApF,EAAM,SAAS,IAAI,+BAA+B,GAC/CA,EAAM,SAAS,IAAI,+BAA+B,EAAE,MAAM,EAAG,CAAC,IAAM,YACpE6E,IAAQ,GAgCf,IAvBAwoC,EAAS,KAAK,MAAO,GAAKhvB,EAASsvB,CAAO,EAUtCV,IACoB,OAAO,KAAK,QAAQA,CAAI,EAAxC,KACA,KAAK,QAAQA,CAAI,EAAI,CAAA,EACrB,KAAK,QAAQA,CAAI,EAAE,MAAQ,EAC3B,KAAK,QAAQA,CAAI,EAAE,KAAO,CAAA,EAC1B,KAAK,QAAQA,CAAI,EAAE,MAAQ,CAAC5uB,CAAO,GAC5B,KAAK,QAAQ4uB,CAAI,EAAE,MAAM,QAAQ5uB,CAAO,IAAM,IACrD,KAAK,QAAQ4uB,CAAI,EAAE,MAAM,KAAK5uB,CAAO,GAMzC4uB,GAAQxlB,EACR,GAAoB,OAAO,KAAK,QAAQwlB,CAAI,EAAE,KAAKxlB,CAAI,EAAnD,KAMA,GALA,KAAK,QAAQwlB,CAAI,EAAE,KAAKxlB,CAAI,EAAI,CAAA,EAChC,KAAK,QAAQwlB,CAAI,EAAE,KAAKxlB,CAAI,EAAE,MAAQ,EACtC,KAAK,QAAQwlB,CAAI,EAAE,KAAKxlB,CAAI,EAAE,KAAO,CAAA,EACrC,KAAK,QAAQwlB,CAAI,EAAE,KAAKxlB,CAAI,EAAE,MAAQ,CAACpJ,CAAO,EAC9C,KAAK,QAAQ4uB,CAAI,EAAE,OAAS,EACxB,KAAK,QAAQA,CAAI,EAAE,QAAU,EAC7B,QAAS/sC,EAAI,EAAGC,EAAO,KAAK,QAAQ8sC,CAAI,EAAE,MAAM,OAAQ/sC,EAAIC,EAAMD,GAAK,EACnEF,EAAM,IAAI,eAAe,KAAK,QAAQitC,CAAI,EAAE,MAAM/sC,CAAC,CAAC,EAAI,QAGzD,KAAK,QAAQ+sC,CAAI,EAAE,KAAKxlB,CAAI,EAAE,MAAM,QAAQpJ,CAAO,IAAM,IAChE,KAAK,QAAQ4uB,CAAI,EAAE,KAAKxlB,CAAI,EAAE,MAAM,KAAKpJ,CAAO,EAMxD,GAAI4uB,GAAQxlB,GAAQylB,EAChB,GAAoB,OAAO,KAAK,QAAQD,CAAI,EAAE,KAAKxlB,CAAI,EAAE,KAAKylB,CAAI,EAA9D,KAIA,GAHA,KAAK,QAAQD,CAAI,EAAE,KAAKxlB,CAAI,EAAE,KAAKylB,CAAI,EAAI,CAAA,EAC3C,KAAK,QAAQD,CAAI,EAAE,KAAKxlB,CAAI,EAAE,KAAKylB,CAAI,EAAE,MAAQ,CAAC7uB,CAAO,EACzD,KAAK,QAAQ4uB,CAAI,EAAE,KAAKxlB,CAAI,EAAE,OAAS,EACnC,KAAK,QAAQwlB,CAAI,EAAE,KAAKxlB,CAAI,EAAE,QAAU,EACxC,QAASvnB,EAAI,EAAGC,EAAO,KAAK,QAAQ8sC,CAAI,EAAE,KAAKxlB,CAAI,EAAE,MAAM,OAAQvnB,EAAIC,EAAMD,GAAK,EAC9EF,EAAM,IAAI,eAAe,KAAK,QAAQitC,CAAI,EAAE,KAAKxlB,CAAI,EAAE,MAAMvnB,CAAC,CAAC,EAAI,QAGpE,KAAK,QAAQ+sC,CAAI,EAAE,KAAKxlB,CAAI,EAAE,KAAKylB,CAAI,EAAE,MAAM,QAAQ7uB,CAAO,IAAM,IAC3E,KAAK,QAAQ4uB,CAAI,EAAE,KAAKxlB,CAAI,EAAE,KAAKylB,CAAI,EAAE,MAAM,KAAK7uB,CAAO,EAM/C,OAAO,KAAK,QAAQA,CAAO,EAA3C,MACA,KAAK,QAAQA,CAAO,EAAI,CAAA,EACxB,KAAK,aAAaA,CAAO,EAAI,CAAA,GAG7B4uB,IACA,KAAK,QAAQ5uB,CAAO,EAAE4uB,EAAO,KAAOxlB,EAAO,KAAOylB,CAAI,EAAI,GAC1D,KAAK,aAAa7uB,CAAO,EAAE4uB,CAAI,EAAI,KAAK,QAAQA,CAAI,GACxD,EAGJ,KAAK,QAAUO,EACf,KAAK,SAAWD,EAChB,KAAK,SAAWD,CACpB,EAIAztC,EAAI,SAAS,YAAc,UAAY,CACnC,KAAK,aAAe,CAAA,EACpB,KAAK,gBAAkB,CAAA,CAC3B,EAIAA,EAAI,eAAiB,SAAUG,EAAO,CAClC,KAAK,MAAQA,EACb,KAAK,IAAM,KAAK,MAAM,IACtB,KAAK,SAAWA,EAAM,SAAS,SAC/B,KAAK,WAAaA,EAAM,SAAS,WACjC,KAAK,YAAA,EACL,KAAK,MAAQ,EACjB,EAEAH,EAAI,eAAe,UAAU,IAAM,SAASgsC,EAAM,CACzC,KAAK,MAAM,SAIZ,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,iBAAiB,EAG1C,KAAK,KAAOA,EACR,KAAK,SAASA,CAAI,GAClB,KAAK,YAAA,EAGb,EAEAhsC,EAAI,eAAe,UAAU,YAAc,UAAY,CACnD,IAAIquC,EASJ,IAPI,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,2BAA2B,EAGpD,KAAK,WAAa,GAGX,KAAK,MAAM,QAAQ,CAMtB,IALA,KAAK,SAAW,EAChB,KAAK,MAAQ,EACb,KAAK,QAAU,CAAC,EAAG,CAAC,EAGd,KAAK,MAAM,CAAC,EAAE,CAAC,EAAE,QACnB,KAAK,QAAU,EACV,KAAK,OACN,KAAK,KAAO,KAAK,MAAM,CAAC,EAAE,CAAC,GAE/BA,EAAQ,KAAK,kBAAA,EACb,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC,EAC5B,KAAK,SAASA,CAAK,EAEvB,KAAK,MAAQ,KAAK,MAAM,MAAM,CAAC,CAAA,CAEvC,EAEAruC,EAAI,eAAe,UAAU,UAAY,SAAU8T,EAAM,CACrD,IAAI9O,EAAKC,EAAKqpC,EAEV,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,yBAAyB,EAIlD,KAAK,KAAOx6B,EAAK,CAAC,EAAE,CAAC,EACrB,KAAK,SAAW9T,EAAI,iBAAiB,KAAK,KAAK,MAAO,KAAK,KAAM,KAAK,KAAM,EAAI,EAEhF,KAAK,SAAW8T,EAAK,CAAC,EACtB,KAAK,SAAW,CAAA,EAChB,KAAK,SAAS,KAAK,KAAK,IAAI,EAC5B,KAAK,YAAc,CAAA,EAGnB,QAFIy6B,EAAU,EAELvpC,EAAM,EAAGC,EAAM6O,EAAK,CAAC,EAAE,OAAQ9O,EAAMC,EAAKD,GAAO,EAAG,CACzDspC,EAAYx6B,EAAK,CAAC,EAAE9O,CAAG,EACvB,IAAIwpC,EAAgBxuC,EAAI,iBAAiB,KAAK,KAAK,MAAOsuC,EAAW,KAAK,KAAM,EAAI,EAEhF,KAAK,OACDtpC,EAAM,GACN,KAAK,MAAM,IAAI,MAAM,eAAe,EAIxC,KAAK,WAAawpC,GAEd,KAAK,QACL,KAAK,MAAM,IAAI,MAAM,gBAAgB,KAAK,KAAK,GAAG,KAAK,KAAK,QAAQ,EACpE,KAAK,MAAM,IAAI,MAAM,gBAAgBF,EAAU,GAAG,KAAKE,CAAa,GAGxED,GAAW,EACX,KAAK,SAAS,KAAKD,CAAS,IAGxB,KAAK,QACL,KAAK,MAAM,IAAI,MAAM,gBAAgB,KAAK,KAAK,GAAG,KAAK,KAAK,QAAQ,EACpE,KAAK,MAAM,IAAI,MAAM,gBAAgBA,EAAU,GAAG,KAAKE,CAAa,GAGxE,KAAK,YAAY,KAAKF,CAAS,EACnC,CAEJ,KAAK,QAAQ,CAAC,EAAI,KAAK,QAAQ,CAAC,EAChC,KAAK,QAAQ,CAAC,EAAIC,CACtB,EAEAvuC,EAAI,eAAe,UAAU,SAAW,SAAUyuC,EAAO,CACrD,KAAK,KAAK,MAAM,KAAK,SAAS,CAAC,EAAEA,CAAK,EAClCA,IACI,KAAK,UAAY,KAAK,MAAM,OAAS,EACrC,KAAK,WAAa,EAElB,KAAK,MAAM,KAAK,QAAU,CAAC,EAAI,CAAC,KAAK,KAAM,EAAE,EAGzD,EAEAzuC,EAAI,eAAe,UAAU,SAAW,SAAUquC,EAAO,CACrD,IAAIhuC,EAAGC,EA8BP,GA3BI,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,sBAAsB,EA0B3C,KAAK,QAAQ,CAAC,IAAM,GAAK,KAAK,YAAY,SAAW,EACrD,KAAK,kBAAA,EAED,KAAK,QACL,KAAK,MAAM,IAAI,MAAM,mDAAmD,EACxE,KAAK,MAAM,IAAI,MAAM,iBAAiB,KAAK,SAAS,CAAC,EAAE,GAAG,QAAQ,KAAK,YAAY,CAAC,EAAE,EAAE,GAG5F,KAAK,MAAM,SAAS,mBAAmB,KAAK,KAAM,GAAK,KAAK,YAAY,CAAC,EAAE,GAAI,KAAK,UAAU,EAC9F,KAAK,MAAM,SAAS,mBAAmB,KAAK,KAAM,GAAK,KAAK,SAAS,CAAC,EAAE,GAAI,KAAK,UAAU,EAC3F,KAAK,MAAM,KAAK,OAAO,EAAI,CAAC,KAAK,WAAY,EAAE,UACxC,KAAK,QAAQ,CAAC,IAAM,EAC3B,KAAK,kBAAA,EAED,KAAK,QACL,KAAK,MAAM,IAAI,MAAM,4EAA4E,EACjG,KAAK,MAAM,IAAI,MAAM,iBAAiB,KAAK,SAAS,CAAC,EAAE,EAAE,GAG7D,KAAK,MAAM,SAAS,mBAAmB,KAAK,KAAM,GAAK,KAAK,SAAS,CAAC,EAAE,GAAI,KAAK,UAAU,EAC3F,KAAK,MAAM,KAAK,OAAO,EAAI,CAAC,KAAK,WAAY,KAAK,WAAW,EACzD,KAAK,YAAY,SACjB,KAAK,WAAa,YAEf,KAAK,YAAY,SAAW,EACnC,KAAK,kBAAA,EAED,KAAK,QACL,KAAK,MAAM,IAAI,MAAM,4EAA4E,EACjG,KAAK,MAAM,IAAI,MAAM,iBAAiB,KAAK,YAAY,CAAC,EAAE,EAAE,GAGhE,KAAK,MAAM,SAAS,mBAAmB,KAAK,KAAM,GAAK,KAAK,YAAY,CAAC,EAAE,GAAI,KAAK,UAAU,EAE9F,KAAK,MAAM,KAAK,OAAO,EAAI,CAAC,KAAK,WAAY,KAAK,QAAQ,UACnD,KAAK,QAAQ,CAAC,EAAI,KAAK,QAAQ,CAAC,EACvC,KAAK,kBAAA,EAED,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,qEAAqE,EAG9F,KAAK,MAAM,KAAK,OAAO,EAAI,CAAC,KAAK,WAAY,KAAK,QAAQ,EAC1D,KAAK,MAAM,KAAK,CAAC,KAAK,WAAY,KAAK,WAAW,CAAC,UAG/C,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,yDAAyD,EAG9E+tC,IACA,KAAK,MAAM,KAAK,OAAO,EAAI,CAAC,KAAK,WAAY,KAAK,WAAW,EAC7D,KAAK,MAAM,KAAK,CAAC,KAAK,WAAY,KAAK,QAAQ,CAAC,EAC5C,KAAK,YAAc,KAAK,MAAM,OAAS,GAAG,CAEtC,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,sEAAsE,EAG/F,QAAShuC,EAAI,EAAGC,EAAO,KAAK,SAAS,OAAQD,EAAIC,EAAMD,GAAK,EACxD,KAAK,MAAM,SAAS,mBAAmB,KAAK,KAAM,GAAK,KAAK,SAASA,CAAC,EAAE,GAAI,KAAK,UAAU,EAE/F,KAAK,MAAM,KAAK,OAAO,EAAI,CAAC,KAAK,WAAY,EAAE,CAAA,CAI/D,EAEAL,EAAI,eAAe,UAAU,aAAe,UAAY,CAEhD,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,yBAAyB,EAIlD,IAAI2jB,EAAO,GAQX,GANI,KAAK,QAAQ,CAAC,IAAM,GAAK,KAAK,YAAY,OAAS,IACnDA,EAAO,IAKP,CAACA,IAAS,CAAC,KAAK,KAAK,cAAgB,KAAK,MAAM,IAAI,qBAAuB,KAAK,MAAM,IAAI,qBAM1F,GAHA,KAAK,UAAY,EACjB,KAAK,KAAK,aAAe,KAAK,MAAM,IAAI,mBACxC,KAAK,WAAW,aAAe,KAAK,MAAM,IAAI,mBACzC,KAAK,KAAK,aAUX,KAAK,SAAA,MAVoB,CAEzB,KAAK,WAAa,GAElB,KAAK,KAAK,aAAe,EAEzB,QAAStjB,EAAI,EAAGC,EAAO,KAAK,MAAM,KAAK,OAAO,EAAE,CAAC,EAAE,OAAQD,EAAIC,EAAMD,GAAK,EACtE,KAAK,MAAM,IAAI,eAAe,KAAK,MAAM,KAAK,OAAO,EAAE,CAAC,EAAEA,CAAC,EAAE,EAAE,EAAI,EACvE,SAIGsjB,GAAQ,KAAK,MAAM,IAAI,qBAAuB,KAAK,MAAM,IAAI,oBACpE,GAAIA,GAAQ,KAAK,YAAc,KAAK,MAAM,OAAS,EAAG,CAIlD,QADI9N,EAAO,KAAK,MAAM,KAAK,OAAO,EAAE,CAAC,EAC5BxV,EAAI,EAAGC,EAAO,KAAK,MAAM,KAAK,OAAO,EAAE,CAAC,EAAE,OAAQD,EAAIC,EAAMD,GAAK,EACtE,KAAK,MAAM,IAAI,eAAe,KAAK,MAAM,KAAK,OAAO,EAAE,CAAC,EAAEA,CAAC,EAAE,EAAE,EAAI,GACnE,KAAK,MAAM,SAAS,mBAAmB,KAAK,KAAM,GAAK,KAAK,MAAM,KAAK,OAAO,EAAE,CAAC,EAAEA,CAAC,EAAE,GAAIwV,CAAI,EAElG,KAAK,MAAM,KAAK,OAAO,EAAI,CAAC,KAAK,WAAY,EAAE,CAAA,KAC5C,CAMH,KAAK,UAAY,KAAK,MAAM,OAAS,EACrC,IAAIA,EAAO,KAAK,MAAM,KAAK,OAAO,EAAE,CAAC,EACrCA,EAAK,aAAe,GACpB,QAASxV,EAAI,EAAGC,EAAO,KAAK,MAAM,KAAK,OAAO,EAAE,CAAC,EAAE,OAAQD,EAAIC,EAAMD,GAAK,EAEtE,KAAK,MAAM,IAAI,eAAe,KAAK,MAAM,KAAK,OAAO,EAAE,CAAC,EAAEA,CAAC,EAAE,EAAE,EAAI,GACnE,KAAK,MAAM,SAAS,mBAAmB,KAAK,KAAM,GAAK,KAAK,MAAM,KAAK,OAAO,EAAE,CAAC,EAAEA,CAAC,EAAE,GAAIwV,CAAI,CAClG,CAGZ,EAEA7V,EAAI,eAAe,UAAU,SAAW,UAAY,CAChD,IAAIgF,EAAKC,EAAKoN,EAAQrO,EAElB,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,qBAAqB,EAG9CqO,EAAS,CAAA,EACT,IAAIwD,EAAO,KAAK,MAAM,KAAK,OAAO,EAAE,CAAC,EACrC,GAAI,KAAK,QAAQ,CAAC,EAIpB,QAASxV,EAAI,EAAGC,EAAO,KAAK,MAAM,SAAS,OAAO,OAAQD,EAAIC,EAAMD,GAAK,EAExE,QADIquC,EAAS,KAAK,MAAM,SAAS,OAAOruC,CAAC,EAChCQ,EAAI,EAAGY,EAAO,KAAK,MAAM,KAAK,OAAO,EAAE,CAAC,EAAE,OAAQZ,EAAIY,EAAMZ,GAAK,EAAG,CAC5E,IAAImD,EAAQ,KAAK,MAAM,KAAK,OAAO,EAAE,CAAC,EAAEnD,CAAC,EAEzC,GAAImD,EAAM,IAAM0qC,EAAQ,CACvBr8B,EAAO,KAAK,KAAK,SAASrO,EAAM,EAAE,CAAC,EACnC,KAAA,CACD,CAIAqO,EAAO,KAAK,KAAK,MAAM,SAAS,OAAO,WAAW,EAClD,QAASrN,EAAM,EAAGC,EAAMoN,EAAO,OAAQrN,EAAMC,EAAKD,GAAO,EAAG,CACxD6Q,EAAK,YAAc,GAAG7Q,EACtB,IAAI2pC,EAAU,KAAK,MAAM,SAAS,SAASt8B,EAAOrN,CAAG,EAAE,EAAE,EAAE,SAC3D,KAAK,MAAM,SAAS,mBAAmB,KAAK,KAAM,GAAKqN,EAAOrN,CAAG,EAAE,GAAI6Q,CAAI,EACvE7V,EAAI,gBAAgB2uC,EAAQ94B,CAAI,IAChC,KAAK,MAAM,IAAI,eAAexD,EAAOrN,CAAG,EAAE,EAAE,EAAI,GACpD,CAEJ,KAAK,MAAM,KAAK,OAAO,EAAI,CAAC,KAAK,WAAY,EAAE,CACnD,EAEAhF,EAAI,eAAe,UAAU,kBAAoB,UAAY,CAMzD,GAJI,KAAK,OACL,KAAK,MAAM,IAAI,MAAM;AAAA,gCAAmC,EAGxD,KAAK,WACL,YAAK,WAAa,GACX,GAEX,IAAIyuC,EAAQ,GACRG,EAAkB,GACtB,GAAmB,KAAK,MAAM,KAAK,SAAS,IAAxC,WAA2C,CAiB3CA,EAAkB,GACD,OAAO,KAAK,WAAzB,WACAA,EAAkB,IAEtB,IAAIC,EAAqB,GACR,OAAO,KAAK,UAAzB,WACAA,EAAqB,IAER,OAAO,KAAK,WAAzB,WACI,KAAK,KAAK,OAAO,QAAU,KAAK,KAAK,OAAO,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAI,KAAK,UAC9E,KAAK,KAAK,OAAO,KAAK,QAAQ,EAAE,KAAK,KAAK,GAAK,EAE/CD,EAAkB,IAGT,OAAO,KAAK,UAAzB,UACGA,IACC,KAAK,MAAM,IAAI,wBAAwB,GACvCC,EAAqB,GACjB,KAAK,MAAQ,KAAK,UAClB,KAAK,KAAK,MAAM,KAAK,QAAQ,GAAK,EAClC,KAAK,OAAS,GAEdA,EAAqB,IAGzBA,EAAqB,IAGZ,OAAO,KAAK,aAAzB,UAAwCA,GACpC,KAAK,SAAW,KAAK,cACrB,KAAK,UAAY,EACjB,KAAK,KAAK,MAAM,KAAK,QAAQ,EAAI,EACjC,KAAK,MAAQ,GAIjB,KAAK,QACL,KAAK,MAAM,IAAI,MAAM,wBAAwB,EAC7C,KAAK,MAAM,IAAI,MAAM,wBAAwB,EAC7C,KAAK,MAAM,IAAI,MAAM,wBAAwB,EAC7C,KAAK,MAAM,IAAI,MAAM,mBAAmB,KAAK,QAAQ,EACrD,KAAK,MAAM,IAAI,MAAM,gBAAgB,KAAK,KAAK,EAC/C,KAAK,MAAM,IAAI,MAAM,sBAAsB,KAAK,KAAK,MAAM,KAAK,QAAQ,CAAC,EACrE,KAAK,KAAK,OAAO,OACjB,KAAK,MAAM,IAAI,MAAM,uBAAuB,KAAK,KAAK,OAAO,KAAK,QAAQ,EAAE,KAAK,KAAK,CAAC,EAEvF,KAAK,MAAM,IAAI,MAAM,yBAAyB,EAElD,KAAK,MAAM,IAAI,MAAM,sBAAsB,KAAK,WAAW,EAC3D,KAAK,MAAM,IAAI,MAAM,mBAAmB,KAAK,QAAQ,EACrD,KAAK,MAAM,IAAI,MAAM,oBAAoB,KAAK,SAAS,IAGzC,OAAO,KAAK,aAAzB,UAAwC,KAAK,cAAgB,IAAM,KAAK,WAAa,KAAK,eACvF,CAAC,KAAK,MAAM,IAAI,wBAAwB,GAAkB,OAAO,KAAK,UAAzB,UAAqC,KAAK,QAAU,KAAK,YAC1F,OAAO,KAAK,WAAxB,UAAqD,OAAO,KAAK,KAAK,OAAO,KAAK,QAAQ,EAArD,KAA0E,OAAO,KAAK,KAAK,OAAO,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAjE,KAAsE,KAAK,KAAK,OAAO,KAAK,QAAQ,EAAE,KAAK,KAAK,IAAM,KAAK,aAG9NJ,EAAQ,GAEJ,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,WAAW,EAGxC,MAC0B,KAAK,MAAM,KAAK,SAAS,IAA5C,iBACP,KAAK,KAAK,cAAgB,EAC1B,KAAK,WAAW,cAAgB,GAEpC,OAAOA,CACX,EAEAzuC,EAAI,eAAe,UAAU,SAAW,SAAUgsC,EAAM,CACpD,IAAI3rC,EAAGC,EAAMwuC,EAAOC,EAAeC,EAgBnC,GAdI,KAAK,OACL,KAAK,MAAM,IAAI,MAAM,wBAAwB,EAGjD,KAAK,MAAQ,CAAA,EACb,KAAK,KAAO,GACZ,KAAK,WAAa,GAClB,KAAK,KAAOhD,EAEZ,KAAK,iBAAmB,CAAA,EAGxB+C,EAAgB,CAAA,EAChBD,EAAQ,KAAK,WAAW9C,CAAI,EACxB,CAAC8C,GAAS,CAACA,EAAM,OACjB,MAAO,GAEX,IAAIG,EAAS,KAAK,MAAM,YAAY,GAAKH,EAAM,CAAC,CAAC,EAGjD,GAFA,KAAK,YAAYG,CAAM,EACvB,KAAK,KAAOjvC,EAAI,eAAe,KAAK,KAAK,KAAK,EAC1C8uC,GAASA,EAAM,OAAS,EAAG,CAC3BC,EAAc,KAAK,CAAC,KAAK,iBAAiBE,EAAO,EAAE,EAAGA,CAAM,CAAC,EAM7D,QAAS5uC,EAAI,EAAGC,EAAOwuC,EAAM,OAAQzuC,EAAIC,EAAMD,GAAK,EAChD4uC,EAAS,KAAK,MAAM,YAAY,GAAKH,EAAMzuC,CAAC,CAAC,EAC7C,KAAK,YAAY4uC,EAAQ,KAAK,IAAI,EAClCF,EAAc,KAAK,CAAC,KAAK,iBAAiBE,EAAO,EAAE,EAAGA,CAAM,CAAC,EAEjEF,EAAc,KACV,SAAUjkC,EAAGC,EAAG,CACZ,OAAID,EAAE,CAAC,EAAIC,EAAE,CAAC,EACH,EACAD,EAAE,CAAC,EAAIC,EAAE,CAAC,EACV,GAEHD,EAAE,CAAC,EAAE,GAAKC,EAAE,CAAC,EAAE,GACR,EACAD,EAAE,CAAC,EAAE,GAAKC,EAAE,CAAC,EAAE,GACf,GAEA,CAEf,GAGRikC,EAAU,CAAA,EACV,QAAS3uC,EAAI,EAAGC,EAAOyuC,EAAc,OAAQ1uC,EAAIC,EAAMD,GAAK,EACxD2uC,EAAQ,KAAKD,EAAc1uC,CAAC,EAAE,CAAC,CAAC,EAEpC,KAAK,MAAM,KAAK,CAAC,KAAK,KAAM2uC,CAAO,CAAC,EACpC,KAAK,KAAO,KAAK,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA,MAE9B,KAAK,KAAO,KAAK,MAAM,YAAY,GAAKF,EAAM,CAAC,CAAC,EAGpD,KAAK,UAAY,EACjB,IAAAzuC,EAAAC,EAAI,YAAK,MAAM,SAAS,IAAI,wBAAwB,EAChD,KAAK,SAAW,KAAK,iBAAiB,KAAK,KAAK,EAAE,EAAE,CAAC,EASzD,KAAK,QAAQ,KAAK,IAAI,EACtB,KAAK,QAAQ,KAAK,UAAU,EAC5B,KAAK,KAAK,YAAc,GACxB,KAAK,KAAK,aAAe,GACzB,KAAK,WAAW,YAAc,GAC9B,KAAK,WAAW,aAAe,GAC3B,KAAK,MAAM,SAAS,IAAI,+BAA+B,IAAM,WAC3D,KAAK,MAAM,IAAI,4BAA4B,IAC7C,KAAK,UAAY,GAEd,EACX,EAGAN,EAAI,eAAe,UAAU,QAAU,SAAU6V,EAAM,CACnD,QAASxV,EAAI,EAAGC,EAAOuV,EAAK,MAAM,OAAQxV,EAAIC,EAAMD,GAAK,EAAG,CACnDwV,EAAK,OAAOxV,CAAC,IACdwV,EAAK,OAAOxV,CAAC,EAAI,CAAA,GAErB,QAASQ,EAAE,EAAEY,EAAKoU,EAAK,MAAMxV,CAAC,EAAEQ,EAAEY,EAAKZ,GAAG,EACjCgV,EAAK,OAAOxV,CAAC,EAAEQ,CAAC,IACjBgV,EAAK,OAAOxV,CAAC,EAAEQ,CAAC,EAAI,EAE5B,CAER,EAKAb,EAAI,eAAe,UAAU,YAAc,UAAY,CACnD,IAAIstC,EAAQ9Z,EAEZ,KAAK,MAAQ,CAAA,EACb8Z,EAAS,KAAK,MAAM,IAAI,4BAA4B,EACpD9Z,EAAS,KAAK,MAAM,SAAS,IAAI,+BAA+B,GAC5D,KAAK,MAAM,IAAI,wBAAwB,GAAM8Z,GAAU9Z,IAAW,YAClE,KAAK,MAAM,KAAK,UAAU,EAG1B,KAAK,MAAM,IAAI,uBAAuB,mCAClC,KAAK,MAAM,IAAI,kBACf,KAAK,MAAM,KAAK,cAAc,EAE9B,KAAK,MAAM,IAAI,8BAA8B,GAC7C,KAAK,MAAM,KAAK,UAAU,IAG1B,KAAK,MAAM,IAAI,8BAA8B,GAC7C,KAAK,MAAM,KAAK,UAAU,EAE1B,KAAK,MAAM,IAAI,kBACf,KAAK,MAAM,KAAK,cAAc,EAG1C,EAEAxzB,EAAI,eAAe,UAAU,YAAc,SAASkB,EAAM2U,EAAM,CAE5D,GAAI,CAAC,KAAK,iBAAiB3U,EAAK,EAAE,EAAG,CACjClB,EAAI,iBAAiB,KAAK,KAAK,MAAOkB,EAAM2U,CAAI,EAChDA,EAAO7V,EAAI,eAAe,KAAK,KAAK,KAAK,EACzC,KAAK,iBAAiBkB,EAAK,EAAE,EAAIlB,EAAI,WAAW,KAAK,KAAK,KAAK,EAC/D,KAAK,MAAM,SAAS,SAASkB,EAAK,EAAE,EAAE,SAAS,OAAS,KAAK,MAAM,IAAI,kBAAkB,OAAO,MAAA,EAEhG,QAAS,EAAE,EAAEZ,EAAK,KAAK,MAAM,SAAS,SAASY,EAAK,EAAE,EAAE,SAAS,OAAO,OAAO,EAAEZ,EAAK,GAAG,EACrF,KAAK,MAAM,SAAS,SAASY,EAAK,EAAE,EAAE,SAAS,OAAO,CAAC,EAAI,KAAK,MAAM,IAAI,kBAAkB,OAAO,CAAC,EAAE,MAAA,EAE1G,KAAK,YAAc,KAAK,MAAM,SAAS,SAASA,EAAK,EAAE,EAAE,SAAS,MAAM,OAAS,EAC5E,KAAK,OACN,KAAK,KAAO2U,EACZ,KAAK,WAAa7V,EAAI,iBAAiB6V,CAAI,GAE3CA,EAAK,MAAM,OAAS,KAAK,KAAK,MAAM,SAIpC,KAAK,KAAOA,GAGhB,QAAS,EAAI,EAAGvV,EAAOuV,EAAK,MAAM,OAAQ,EAAIvV,EAAM,GAAK,EACjDuV,EAAK,MAAM,CAAC,EAAI,KAAK,KAAK,MAAM,CAAC,IAGjC,KAAK,KAAK,OAAO,CAAC,EAAIA,EAAK,OAAO,CAAC,EAAE,MAAA,EACrC,KAAK,KAAK,MAAM,CAAC,EAAIA,EAAK,MAAM,CAAC,EACjC,KAAK,WAAW,MAAQ,KAAK,KAAK,MAAM,MAAA,EACxC,KAAK,WAAW,OAAS,KAAK,KAAK,OAAO,MAAA,EAC1C,KAAK,QAAQ,KAAK,IAAI,EACtB,KAAK,QAAQ,KAAK,UAAU,GASpC,KAAK,WAAW,OAAS,KAAK,KAAK,OAAO,MAAA,EAC1C,QAAShV,EAAI,EAAGY,EAAO,KAAK,KAAK,OAAO,OAAQZ,EAAIY,EAAMZ,GAAK,EAC3D,KAAK,WAAW,OAAOA,CAAC,EAAI,KAAK,KAAK,OAAOA,CAAC,EAAE,MAAA,CACpD,CAER,EAEAb,EAAI,eAAe,UAAU,kBAAoB,UAAW,CAEpD,KAAK,MAAM,SAAS,IAAI,+BAA+B,IAAM,WAC1D,KAAK,KAAK,QAAU,KAAK,KAAK,OAAO,QACpB,OAAO,KAAK,KAAK,OAAO,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAjE,MACI,KAAK,WAAW,OAAO,OAAS,KAAK,KAAK,OAAO,SACjD,KAAK,WAAW,OAAS,KAAK,MAAM,KAAK,UAAU,KAAK,KAAK,MAAM,CAAC,GAExE,KAAK,WAAW,OAAO,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAI,KAAK,KAAK,OAAO,KAAK,QAAQ,EAAE,KAAK,KAAK,GAGtG,KAAK,WAAW,MAAM,KAAK,QAAQ,EAAI,KAAK,KAAK,MAAM,KAAK,QAAQ,CACxE,EAEAA,EAAI,OAAO,UAAU,oBAAsB,SAAUwF,EAAc,CAG/D,QAFIF,EAAmB,CAAA,EACnB4pC,EAAoB1pC,EAAa,MAAM,GAAG,EACrC3E,EAAEquC,EAAkB,OAAOruC,EAAE,EAAEA,IAAK,CACzC,IAAIsuC,EAAaD,EAAkB,MAAM,EAAEruC,CAAC,EAAE,KAAK,GAAG,EAEtD,GADAyE,EAAiB,KAAK6pC,CAAU,EAC5B,KAAK,IAAI,uBAAuBA,CAAU,EAAG,CAC7C,IAAI1pC,EAAW,KAAK,IAAI,uBAAuB0pC,CAAU,EACzD7pC,EAAiB,KAAKG,CAAQ,CAAA,CAClC,CAEJ,OAAIH,EAAiB,QAAQ,IAAI,IAAM,IACnCA,EAAiB,KAAK,IAAI,EAEvBA,CACX,EAEAtF,EAAI,OAAO,UAAU,gBAAkB,SAAUwF,EAAc4pC,EAAWC,EAAc,CACpF,IAAIC,EAAa,KAEjB,KAAK,MAAM9pC,CAAY,EAAI,CAAA,EAC3B,IAAI+pC,EAAQvvC,EAAI,SAASovC,CAAS,EAClCG,EAAM,oBAAoBA,EAAM,OAAO,EACvCA,EAAM,oBAAoBA,EAAM,OAAO,EACvCA,EAAM,wBAAwBA,EAAM,OAAO,EAC3CA,EAAM,eAAeA,EAAM,OAAO,EAElC,QADIC,EAAUD,EAAM,eAAeA,EAAM,QAAS,YAAY,EACrDlvC,EAAE,EAAEC,EAAKkvC,EAAQ,OAAOnvC,EAAEC,EAAKD,IAAK,CACzC,IAAIovC,EAAUF,EAAM,kBAAkBC,EAAQnvC,CAAC,EAAE,OAAO,EACxD,GAAIovC,EAAS,CACT,KAAK,MAAMjqC,CAAY,EAAE,MAAQ,CAAA,EACjCiqC,EAAWA,EAAQ,MAAM,KAAK,EAC9B,QAAS5uC,EAAE,EAAEY,EAAKguC,EAAQ,OAAO5uC,EAAEY,EAAKZ,IACpC,KAAK,MAAM2E,CAAY,EAAE,MAAMiqC,EAAQ5uC,CAAC,CAAC,EAAI,EACjD,CAECwuC,IACDC,EAAaC,EAAM,kBAAkBC,EAAQnvC,CAAC,EAAE,UAAU,EACtDivC,GACI9pC,IAAiB,OACjB,KAAK,IAAI,uBAAuBA,CAAY,EAAI8pC,GAG5D,CAEJ,IAAI7uC,EAAO,KAAK,IAAI,KAAO,KAAK,IAAI,KAAO,KAAK,IAAI,gBAAgB,EAAE,CAAC,EACvET,EAAI,kBAAkB,KAAMS,EAAM8uC,EAAOA,EAAM,OAAO,EAEjD,KAAK,MAAM/pC,CAAY,EAAE,QAC1B,KAAK,MAAMA,CAAY,EAAE,MAAQxF,EAAI,cAGzC,QADIwvC,EAAUD,EAAM,eAAeA,EAAM,QAAS,OAAO,EAChDlvC,EAAE,EAAEC,EAAKkvC,EAAQ,OAAOnvC,EAAEC,EAAKD,IAAK,CACzC,IAAIqvC,EAASH,EAAM,kBAAkBC,EAAQnvC,CAAC,EAAG,MAAM,EACvD,GAAI,CAACL,EAAI,cAAc0vC,CAAM,EAAG,CAC5B1vC,EAAI,MAAM,yCAA4C0vC,EAAS,qBAAsB,EACrF,QAAA,CAGJ,KAAK,MAAMlqC,CAAY,EAAEkqC,CAAM,EAAI,CAAA,EAEnC,KAAK,gBAAgBF,EAAQnvC,CAAC,EAAG,KAAK,MAAMmF,CAAY,EAAEkqC,CAAM,CAAC,EACjE,KAAK,mBAAmB,KAAK,MAAMlqC,CAAY,EAAEkqC,CAAM,CAAC,CAAA,CAM5D,OAAOJ,CACX,EAEAtvC,EAAI,OAAO,UAAU,wBAA0B,SAAUsF,EAAkB,CACvE,IAAI/E,EAAM,CAAA,EACNovC,EAAc,KAAK,OAAO,KAAK,IAAI,IAAI,EAAE,KAAK,yBAAyB,EAC3EA,EAAcA,GAA4B,CAAA,EAC1CA,EAAc,CAAC,EAAE,EAAE,OAAOA,CAAW,EACrC,QAAStvC,EAAEsvC,EAAY,OAAO,EAAEtvC,EAAE,GAAGA,IAEjC,QADIuvC,EAAaD,EAAYtvC,CAAC,EACrBQ,EAAE,EAAEY,EAAK6D,EAAiB,OAAOzE,EAAEY,EAAKZ,IAAK,CAClD,IAAI2E,EAAeF,EAAiBzE,CAAC,EAErC,GAAI,MAAK,IAAI,mBAAmB2E,CAAY,EAI5C,KAAID,EAAM,KAAK,IAAI,oBAAoBC,EAAcoqC,CAAU,GAG1D,CAACrqC,GAAO,CAACqqC,GAAerqC,KACzB,KAAK,IAAI,mBAAmBC,CAAY,EAAI,IAG3CD,IAGLhF,EAAIiF,CAAY,EAAID,GAAA,CAI5B,OAAOhF,CACX,EAEAP,EAAI,aAAgB,UAAW,CAC9B,IAAI6vC,EAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAG,IAAI,CAAC,EAClCC,EAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAG,IAAI,CAAC,EAClCC,EAAwB,CAAC,CAAC,KAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EACtCC,EAAwB,CAAC,CAAC,KAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EACtCC,EAAwB,CAAC,CAAC,KAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EACtCC,EAAW,CAAC,CAAC,KAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACtCC,EAAW,CAAC,CAAC,KAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACtCC,EAAyB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EACpDC,EAAyB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EACpDC,EAAyB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EACpDC,EAA+C,CAAC,CAAC,KAAM,CAAC,EAAE,CAAC,CAAC,EAAG,CAAC,CAAC,EAAE,CAAC,EAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAC7EC,EAAY,CACf,CAAC,KAAMT,CAAqB,EAC5B,CAAC,MAAOA,CAAqB,EAC7B,CAAC,KAAMA,CAAqB,EAC5B,CAAC,IAAMA,CAAqB,EAC5B,CAAC,SAAUC,CAAqB,EAChC,CAAC,SAAUA,CAAqB,EAChC,CAAC,UAAWA,CAAqB,EACjC,CAAC,UAAWA,CAAqB,EACjC,CAAC,UAAWA,CAAqB,EACjC,CAAC,QAASA,CAAqB,EAC/B,CAAC,MAAOD,CAAqB,EAC7B,CAAC,MAAOG,CAAQ,EAChB,CAAC,OAAQA,CAAQ,EACjB,CAAC,KAAMA,CAAQ,EACf,CAAC,KAAMA,CAAQ,EACf,CAAC,MAAOA,CAAQ,EAChB,CAAC,QAASF,CAAqB,EAC/B,CAAC,KAAMD,CAAqB,EAC5B,CAAC,MAAOG,CAAQ,EAChB,CAAC,MAAOA,CAAQ,EAChB,CAAC,MAAOA,CAAQ,EAChB,CAAC,OAAQA,CAAQ,EACjB,CAAC,MAAOA,CAAQ,EAChB,CAAC,OAAQA,CAAQ,EACjB,CAAC,UAAWG,CAAsB,EAClC,CAAC,UAAWA,CAAsB,EAClC,CAAC,UAAWA,CAAsB,EAClC,CAAC,UAAWL,CAAqB,EACjC,CAAC,MAAOI,CAAsB,EAC9B,CAAC,SAAUC,CAAsB,EACjC,CAAC,UAAWA,CAAsB,EAClC,CAAC,UAAWA,CAAsB,EAClC,CAAC,UAAWA,CAAsB,EAClC,CAAC,QAASA,CAAsB,EAChC,CAAC,MAAOD,CAAsB,EAC9B,CAAC,QAASC,CAAsB,EAChC,CAAC,MAAOH,CAAQ,EAChB,CAAC,MAAOA,CAAQ,EAChB,CAAC,MAAOA,CAAQ,EAChB,CAAC,MAAOA,CAAQ,EAChB,CAAC,MAAOA,CAAQ,EAChB,CAAC,MAAOA,CAAQ,EAChB,CAAC,MAAOA,CAAQ,EAChB,CAAC,MAAOA,CAAQ,EAChB,CAAC,MAAOH,CAAqB,EAC7B,CAAC,SAAUC,CAAqB,EAChC,CAAC,SAAUA,CAAqB,EAChC,CAAC,UAAWA,CAAqB,EACjC,CAAC,UAAWA,CAAqB,EACjC,CAAC,QAASA,CAAqB,EAC/B,CAAC,MAAOD,CAAqB,EAC7B,CAAC,MAAOA,CAAqB,EAC7B,CAAC,UAAWC,CAAqB,EACjC,CAAC,WAAYA,CAAqB,EAClC,CAAC,IAAKD,CAAqB,EAC3B,CAAC,KAAMG,CAAQ,EACf,CAAC,KAAMA,CAAQ,EACf,CAAC,MAAOH,CAAqB,EAC7B,CAAC,OAAQA,CAAqB,EAC9B,CAAC,QAASA,CAAqB,EAC/B,CAAC,QAASA,CAAqB,EAC/B,CAAC,MAAOG,CAAQ,EAChB,CAAC,YAAaD,CAAqB,EACnC,CAAC,SAAUD,CAAqB,EAChC,CAAC,OAAQA,CAAqB,EAC9B,CAAC,QAASA,CAAqB,EAC/B,CAAC,QAASO,CAA4C,EACtD,CAAC,SAAUA,CAA4C,EACvD,CAAC,QAASP,CAAqB,EAC/B,CAAC,QAASG,CAAQ,EAClB,CAAC,aAAcF,CAAqB,EACpC,CAAC,KAAMC,CAAQ,EACf,CAAC,MAAOA,CAAQ,EAChB,CAAC,OAAQH,CAAqB,EAC9B,CAAC,QAASG,CAAQ,EAClB,CAAC,MAAOA,CAAQ,EAChB,CAAC,MAAOA,CAAQ,EAChB,CAAC,OAAQL,CAAiB,EAC1B,CAAC,QAASK,CAAQ,EAClB,CAAC,QAASA,CAAQ,EAClB,CAAC,QAASA,CAAQ,EAClB,CAAC,QAASA,CAAQ,EAClB,CAAC,MAAOA,CAAQ,EAChB,CAAC,MAAOA,CAAQ,EAChB,CAAC,MAAOA,CAAQ,EAChB,CAAC,KAAMA,CAAQ,EACf,CAAC,SAAUF,CAAqB,EAChC,CAAC,KAAMD,CAAqB,EAC5B,CAAC,MAAOA,CAAqB,EAC7B,CAAC,MAAOG,CAAQ,EAChB,CAAC,KAAMA,CAAQ,EACf,CAAC,MAAOA,CAAQ,EAChB,CAAC,OAAQA,CAAQ,EACjB,CAAC,KAAMA,CAAQ,EACf,CAAC,MAAOA,CAAQ,EAChB,CAAC,MAAOA,CAAQ,EAChB,CAAC,MAAOA,CAAQ,EAChB,CAAC,MAAOA,CAAQ,EAChB,CAAC,OAAQA,CAAQ,EACjB,CAAC,MAAOA,CAAQ,EAChB,CAAC,OAAQA,CAAQ,EACjB,CAAC,MAAOA,CAAQ,EAChB,CAAC,MAAOA,CAAQ,EAChB,CAAC,MAAOA,CAAQ,EAChB,CAAC,MAAOA,CAAQ,EAChB,CAAC,MAAOA,CAAQ,EAChB,CAAC,MAAOA,CAAQ,EAChB,CAAC,MAAOA,CAAQ,EAChB,CAAC,MAAOA,CAAQ,EAChB,CAAC,MAAOH,CAAqB,EAC7B,CAAC,IAAKA,CAAqB,EAC3B,CAAC,KAAMF,CAAiB,EACxB,CAAC,KAAME,CAAqB,EAC5B,CAAC,QAASC,CAAqB,EAC/B,CAAC,QAASA,CAAqB,EAC/B,CAAC,SAAUA,CAAqB,EAChC,CAAC,SAAUG,CAAQ,EACnB,CAAC,SAAUH,CAAqB,EAChC,CAAC,OAAQA,CAAqB,EAC9B,CAAC,KAAMD,CAAqB,EAC5B,CAAC,IAAKA,CAAqB,EAC3B,CAAC,KAAMA,CAAqB,EAC5B,CAAC,KAAMA,CAAqB,EAC5B,CAAC,MAAOA,CAAqB,EAC7B,CAAC,KAAMA,CAAqB,EAC5B,CAAC,MAAOG,CAAQ,EAChB,CAAC,KAAMA,CAAQ,EACf,CAAC,MAAOH,CAAqB,EAC7B,CAAC,MAAOA,CAAqB,EAC7B,CAAC,KAAMA,CAAqB,EAC5B,CAAC,WAAYC,CAAqB,EAClC,CAAC,WAAYA,CAAqB,EAClC,CAAC,YAAaA,CAAqB,EACnC,CAAC,YAAaA,CAAqB,EACnC,CAAC,UAAWA,CAAqB,EACjC,CAAC,QAASD,CAAqB,EAC/B,CAAC,QAASC,CAAqB,EAC/B,CAAC,QAASG,CAAQ,EAClB,CAAC,SAAUH,CAAqB,EAChC,CAAC,SAAUA,CAAqB,EAChC,CAAC,SAAUA,CAAqB,EAChC,CAAC,SAAUA,CAAqB,EAChC,CAAC,OAAQA,CAAqB,EAC9B,CAAC,SAAUA,CAAqB,EAChC,CAAC,KAAMD,CAAqB,EAC5B,CAAC,UAAWC,CAAqB,EACjC,CAAC,UAAWA,CAAqB,EACjC,CAAC,WAAYA,CAAqB,EAClC,CAAC,WAAYA,CAAqB,EAClC,CAAC,SAAUA,CAAqB,EAChC,CAAC,OAAQD,CAAqB,EAC9B,CAAC,IAAKA,CAAqB,EAC3B,CAAC,KAAMA,CAAqB,EAC5B,CAAC,MAAOF,CAAiB,EACzB,CAAC,IAAKE,CAAqB,EAC3B,CAAC,KAAMA,CAAqB,EAC5B,CAAC,MAAOA,CAAqB,EAC7B,CAAC,MAAOA,CAAqB,EAC7B,CAAC,MAAOA,CAAqB,EAC7B,CAAC,OAAQA,CAAqB,EAC9B,CAAC,OAAQA,CAAqB,EAC9B,CAAC,KAAMA,CAAqB,EAC5B,CAAC,MAAOA,CAAqB,EAC7B,CAAC,MAAOA,CAAqB,EAC7B,CAAC,UAAWC,CAAqB,EACjC,CAAC,UAAWA,CAAqB,EACjC,CAAC,WAAYA,CAAqB,EAClC,CAAC,aAAcC,CAAqB,EACpC,CAAC,WAAYD,CAAqB,EAClC,CAAC,OAAQD,CAAqB,EAC9B,CAAC,SAAUC,CAAqB,EAChC,CAAC,SAAUA,CAAqB,EAChC,CAAC,UAAWA,CAAqB,EACjC,CAAC,UAAWA,CAAqB,EACjC,CAAC,QAASA,CAAqB,EAC/B,CAAC,YAAaC,CAAqB,EACnC,CAAC,UAAWD,CAAqB,EACjC,CAAC,MAAOD,CAAqB,EAC7B,CAAC,QAASA,CAAqB,EAC/B,CAAC,IAAKA,CAAqB,EAC3B,CAAC,KAAMA,CAAqB,EAC5B,CAAC,OAAQA,CAAqB,EAC9B,CAAC,SAAUC,CAAqB,EAChC,CAAC,WAAYC,CAAqB,EAClC,CAAC,YAAaA,CAAqB,EACnC,CAAC,SAAUD,CAAqB,EAChC,CAAC,SAAUA,CAAqB,EAChC,CAAC,UAAWA,CAAqB,EACjC,CAAC,UAAWA,CAAqB,EACjC,CAAC,UAAWA,CAAqB,EACjC,CAAC,UAAWA,CAAqB,EACjC,CAAC,SAAUA,CAAqB,EAChC,CAAC,QAASA,CAAqB,EAC/B,CAAC,UAAWA,CAAqB,EACjC,CAAC,aAAcC,CAAqB,EACpC,CAAC,MAAOC,CAAQ,EAChB,CAAC,SAAUH,CAAqB,EAChC,CAAC,KAAMA,CAAqB,EAC5B,CAAC,MAAOA,CAAqB,EAC7B,CAAC,cAAeD,CAAiB,EACjC,CAAC,MAAOI,CAAQ,EAChB,CAAC,SAAUF,CAAqB,EAChC,CAAC,UAAWK,CAAsB,EAClC,CAAC,UAAWA,CAAsB,EAClC,CAAC,UAAWA,CAAsB,EAClC,CAAC,QAASL,CAAqB,EAC/B,CAAC,aAAcM,CAAsB,EACrC,CAAC,SAAUD,CAAsB,EACjC,CAAC,MAAOD,CAAsB,EAC9B,CAAC,UAAWJ,CAAqB,EACjC,CAAC,UAAWA,CAAqB,EACjC,CAAC,WAAYA,CAAqB,EAClC,CAAC,aAAcC,CAAqB,EACpC,CAAC,YAAaA,CAAqB,EACnC,CAAC,OAAQF,CAAqB,EAC9B,CAAC,UAAWM,CAAsB,EAClC,CAAC,MAAOD,CAAsB,EAC9B,CAAC,IAAKP,CAAiB,EACvB,CAAC,KAAMA,CAAiB,EACxB,CAAC,KAAMO,CAAsB,EAC7B,CAAC,MAAOF,CAAQ,EAChB,CAAC,MAAOA,CAAQ,GAEd,OAAOM,CACX,EAAA,EAEAxwC,EAAI,eAAkB,UAAU,CAC5B,SAASywC,EAAeC,EAAWC,EAAeC,EAAc,CAYlE,IAAIC,EAAgBH,EACpBA,EAAqDA,EACrD,IAAII,EAAe,CAAA,EACf7oC,EACM8oC,EACNJ,GACHD,EAAYA,EAAU,MAAM,EAAE,EAAE,QAAA,EAAU,KAAK,EAAE,EACjDzoC,EAAMjI,EAAI,uBAEViI,EAAMjI,EAAI,uBAGX,QADIiB,EAAIyvC,EAAU,MAAMzoC,CAAG,EACpBhH,GAAG,CACT,IAAI+vC,EAAKL,EAAgB1vC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,QAAA,EAAU,KAAK,EAAE,EAAIA,EAAE,CAAC,EAC5D4Y,EAAY5Y,EAAI+vC,EAAK,GACrBn3B,EAAYA,EAAYm3B,EAAG,QAAQ,8BAA+B,IAAI,EAAI,GAE9E,GADAD,EAAcl3B,EAAYA,EAAU,YAAA,IAAkBA,EAAY,GAC9D,CAACk3B,EACQ,MAETJ,GACHG,EAAa,KAAKD,EAAc,MAAMG,EAAG,OAAS,EAAE,CAAC,EACrDH,EAAgBA,EAAc,MAAM,EAAEG,EAAG,OAAS,EAAE,IAEpDF,EAAa,KAAKD,EAAc,MAAM,EAAEG,EAAG,MAAM,CAAC,EAClDH,EAAgBA,EAAc,MAAMG,EAAG,MAAM,GAG9CN,EAAYzvC,EAAE,CAAC,EACfA,EAAIyvC,EAAU,MAAMzoC,CAAG,CAAA,CAExB,GAAI0oC,EAAe,CAClBD,EAAYA,EAAU,MAAM,EAAE,EAAE,QAAA,EAAU,KAAK,EAAE,EACjDI,EAAa,QAAA,EACb,QAASzwC,EAAE,EAAEC,EAAKwwC,EAAa,OAAOzwC,EAAEC,EAAKD,IACxCywC,EAAazwC,CAAC,EAAE,MAAM,EAAG,CAAC,GAAK,MAClCywC,EAAazwC,EAAE,CAAC,GAAK,KAGvB,QAASA,EAAE,EAAEC,EAAKwwC,EAAa,OAAOzwC,EAAEC,EAAKD,IACxCywC,EAAazwC,CAAC,EAAE,MAAM,EAAG,CAAC,GAAK,MAClCywC,EAAazwC,CAAC,EAAIywC,EAAazwC,CAAC,EAAE,MAAM,CAAC,GAG3CqwC,EAAYG,EAAc,MAAM,EAAGH,EAAU,MAAM,CAAA,MAEnDA,EAAYG,EAAc,MAAMH,EAAU,OAAS,EAAE,EAEtD,MAAO,CAACK,EAAaL,EAAWI,CAAY,CAAA,CAE1C,SAASG,EAAShxC,EAAK,CACnB,IAAI6b,EAAW7b,EAAI,MAAM,EAAE,EAC3B,OAAAA,EAAMA,EAAI,KAAA,EACN6b,IAAa,KAAO,CAAC,IAAM,GAAQ,EAAE,QAAQ7b,EAAI,MAAM,EAAE,CAAC,EAAI,KAC9DA,GAAO,KAEJA,CAAA,CAEX,SAASixC,EAAYC,EAAS,CAC1B,GAAI,CAACA,EAAQ,QAAUA,EAAQ,MAAO,CAClC,IAAIlwC,EAAIkwC,EAAQ,MAAM,MAAM,aAAa,EACzC,GAAIlwC,EAAG,CACH,IAAIF,EAAMowC,EAAQ,MAAM,QAAQlwC,EAAE,CAAC,CAAC,EAChCmwC,EAAkBD,EAAQ,MAAM,MAAMpwC,EAAME,EAAE,CAAC,EAAE,MAAM,EACvDowC,EAAiBF,EAAQ,MAAM,MAAMpwC,EAAKA,EAAME,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,OAAQ,EAAE,EAC/EmwC,EAAgB,QAAQ,MAAO,EAAE,IAAM,SAAW,CAACD,EAAQ,mBAAmB,GAG9EA,EAAQ,mBAAmB,EAAIC,EAC/BD,EAAQ,yBAAyB,EAAI,MAEjCE,EAAe,SAAW,IAC1BF,EAAQ,cAAc,EAAI,IAE9BA,EAAQ,OAASC,GAErBD,EAAQ,MAAQA,EAAQ,MAAM,MAAM,EAAGpwC,CAAG,CAAA,CAC9C,CACJ,CAEJ,OAAO,SAASowC,EAAS,CAErB,IAAI5rC,EAAMkrC,EAAeU,EAAQ,MAAM,EACnCG,EAAgB/rC,EAAI,CAAC,EACrBgsC,EAAmBhsC,EAAI,CAAC,EAC5B4rC,EAAQ,OAASG,EACjB,IAAIE,EAAsBP,EAASM,EAAiB,KAAK,EAAE,CAAC,EACxDC,IACAL,EAAQ,uBAAuB,EAAIK,GAGvCN,EAAYC,CAAO,EAEnB,IAAI5rC,EAAMkrC,EAAeU,EAAQ,MAAO,EAAI,EACxCM,EAAiBlsC,EAAI,CAAC,EACtBmsC,EAAoBnsC,EAAI,CAAC,EAC7B4rC,EAAQ,MAAQM,EAChB,IAAIE,EAAmBD,EAAkB,KAAK,EAAE,EAAE,KAAA,EAC9CC,IACAR,EAAQ,mBAAmB,EAAIQ,EACnC,CAER,EAAA,EAGAC,GAAiB5xC","x_google_ignoreList":[0]}