Content-addressed version deploy system for Diffuse elements.diffuse.sh
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

chore: deploy 4.0.0-alpha update

+7278 -5
+16 -2
_config.ts
··· 2 2 3 3 import date from "lume/plugins/date.ts"; 4 4 import postcss from "lume/plugins/postcss.ts"; 5 - import purgecss from "lume/plugins/purgecss.ts"; 6 5 7 6 const site = lume({ 8 7 dest: "./dist", ··· 16 15 17 16 site.use(date()); 18 17 site.use(postcss()); 19 - // site.use(purgecss()); 20 18 21 19 site.add([".css"]); 22 20 site.add([".woff2"]); ··· 83 81 phosphor("fill/Phosphor-Fill.ttf"); 84 82 phosphor("fill/Phosphor-Fill.woff"); 85 83 phosphor("fill/Phosphor-Fill.woff2"); 84 + 85 + // Post-build copies 86 + site.addEventListener("afterBuild", async () => { 87 + const faviconsDir = site.dest("favicons"); 88 + 89 + for await (const entry of Deno.readDir(faviconsDir)) { 90 + if (entry.isFile) { 91 + await Deno.copyFile( 92 + `${faviconsDir}/${entry.name}`, 93 + site.dest(entry.name), 94 + ); 95 + } 96 + } 97 + 98 + await Deno.remove(faviconsDir, { recursive: true }); 99 + });
+5
artifacts/artifacts.json
··· 308 308 "cid": "bafybeibqqkingsvabbigdzqis4onfv7whabex4r5m6ziajvzo3nhh4f4e4", 309 309 "createdAt": "2026-03-28T10:38:33.551Z", 310 310 "version": "4.0.0-alpha" 311 + }, 312 + "bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi": { 313 + "cid": "bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi", 314 + "createdAt": "2026-03-28T17:12:56.306Z", 315 + "version": "4.0.0-alpha" 311 316 } 312 317 }
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/APEv2Parser-3DAOWBBI.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/APEv2Parser-3DAOWBBI.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/APEv2Parser-3DAOWBBI.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/APEv2Parser-3DAOWBBI.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/APEv2Parser-3DAOWBBI.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/APEv2Parser-3DAOWBBI.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/AiffParser-75ZZVNXQ.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/AiffParser-75ZZVNXQ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/AiffParser-75ZZVNXQ.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/AiffParser-75ZZVNXQ.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/AiffParser-75ZZVNXQ.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/AiffParser-75ZZVNXQ.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/AsfParser-L3HWBCWE.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/AsfParser-L3HWBCWE.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/AsfParser-L3HWBCWE.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/AsfParser-L3HWBCWE.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/AsfParser-L3HWBCWE.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/AsfParser-L3HWBCWE.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/DsdiffParser-MWVE427X.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/DsdiffParser-MWVE427X.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/DsdiffParser-MWVE427X.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/DsdiffParser-MWVE427X.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/DsdiffParser-MWVE427X.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/DsdiffParser-MWVE427X.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/DsfParser-2WH6ZWS3.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/DsfParser-2WH6ZWS3.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/DsfParser-2WH6ZWS3.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/DsfParser-2WH6ZWS3.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/DsfParser-2WH6ZWS3.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/DsfParser-2WH6ZWS3.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/FlacParser-XESAW54U.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/FlacParser-XESAW54U.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/FlacParser-XESAW54U.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/FlacParser-XESAW54U.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/FlacParser-XESAW54U.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/FlacParser-XESAW54U.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/MP4Parser-ECXHOMJW.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/MP4Parser-ECXHOMJW.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/MP4Parser-ECXHOMJW.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/MP4Parser-ECXHOMJW.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/MP4Parser-ECXHOMJW.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/MP4Parser-ECXHOMJW.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/MatroskaParser-NDBVNZPG.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/MatroskaParser-NDBVNZPG.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/MatroskaParser-NDBVNZPG.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/MatroskaParser-NDBVNZPG.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/MatroskaParser-NDBVNZPG.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/MatroskaParser-NDBVNZPG.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/MpegParser-JKEB5YCN.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/MpegParser-JKEB5YCN.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/MpegParser-JKEB5YCN.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/MpegParser-JKEB5YCN.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/MpegParser-JKEB5YCN.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/MpegParser-JKEB5YCN.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/MusepackParser-HGJOS4KX.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/MusepackParser-HGJOS4KX.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/MusepackParser-HGJOS4KX.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/MusepackParser-HGJOS4KX.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/MusepackParser-HGJOS4KX.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/MusepackParser-HGJOS4KX.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/OggParser-7RLN5U3F.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/OggParser-7RLN5U3F.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/OggParser-7RLN5U3F.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/OggParser-7RLN5U3F.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/OggParser-7RLN5U3F.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/OggParser-7RLN5U3F.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/WavPackParser-ZXDV5ACJ.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/WavPackParser-ZXDV5ACJ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/WavPackParser-ZXDV5ACJ.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/WavPackParser-ZXDV5ACJ.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/WavPackParser-ZXDV5ACJ.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/WavPackParser-ZXDV5ACJ.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/WaveParser-K3YQ6MR6.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/WaveParser-K3YQ6MR6.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/WaveParser-K3YQ6MR6.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/WaveParser-K3YQ6MR6.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/WaveParser-K3YQ6MR6.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/WaveParser-K3YQ6MR6.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/android-chrome-192x192.png
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/android-chrome-192x192.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/android-chrome-512x512.png
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/android-chrome-512x512.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/apple-touch-icon.png
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/apple-touch-icon.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/base-5RGOBUOU.js
··· 1 + ../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/base-5RGOBUOU.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/base-5RGOBUOU.js.br
··· 1 + ../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/base-5RGOBUOU.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/base-5RGOBUOU.js.map
··· 1 + ../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/base-5RGOBUOU.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/browserconfig.xml
··· 1 + ../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/browserconfig.xml
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/browserconfig.xml.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/browserconfig.xml.br
+216
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/browsing/index.html
··· 1 + <html lang="en"> 2 + <head> 3 + <meta charset="UTF-8" /> 4 + 5 + <meta name="color-scheme" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + 8 + <meta name="media-controllable" /> 9 + <meta name="mobile-web-app-capable" content="yes" /> 10 + 11 + <title>Browsing | Diffuse</title> 12 + 13 + <!-- Base --> 14 + <base href="../" /> 15 + 16 + <!-- Favicons & Mobile --> 17 + <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" /> 18 + <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" /> 19 + <link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png" /> 20 + <!-- TODO: <link rel="manifest" href="site.webmanifest" />--> 21 + <link rel="mask-icon" href="safari-pinned-tab.svg" color="#8a90a9" /> 22 + <meta name="msapplication-TileColor" content="#8a90a9" /> 23 + <meta name="theme-color" content="#8a90a9" /> 24 + 25 + <!-- Preloads --> 26 + 27 + <!-- Styles --> 28 + <link rel="stylesheet" href="styles/base.css" /> 29 + <link rel="stylesheet" href="styles/diffuse/page.css" /> 30 + <link rel="stylesheet" href="styles/diffuse/code-editor.css" /> 31 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/bold/style.css" /> 32 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/fill/style.css" /> 33 + </head> 34 + <body> 35 + <style> 36 + .construct, h2 { 37 + color: var(--accent); 38 + } 39 + </style> 40 + 41 + <header style="overflow: hidden"> 42 + <div> 43 + <div class="diffuse-logo-container diffuse-logo-container--condensed"> 44 + <a href="./" style="display: inline-block;"> 45 + <svg viewBox="0 0 902 134" width="160"> 46 + <title>Diffuse</title> 47 + <use 48 + xlink:href="images/diffuse-current.svg#diffuse" 49 + href="images/diffuse-current.svg#diffuse"></use> 50 + </svg> 51 + 52 + </a> 53 + </div> 54 + </div> 55 + <div class="dither-mask filler"> 56 + <div id="status--filler-container"> 57 + <span id="status"> 58 + <a href="/latest/" title="Upgrade to latest" class="animate-spin"> 59 + <i class="ph-bold ph-spinner"></i> 60 + </a> 61 + <a href="/chronicle/" title="Browse versions of Diffuse"> 62 + <i class="ph-fill ph-star-four"></i> 63 + </a> 64 + </span> 65 + 66 + </div> 67 + </div> 68 + </header> 69 + 70 + <main> 71 + 72 + <div class="nav-container"> 73 + <nav id="diffuse-nav"> 74 + <a href="dashboard/" class="button button--transparent button--border"> 75 + <span> 76 + <i class="ph-fill ph-person"></i> 77 + Your Diffuse 78 + </span> 79 + </a> 80 + 81 + <a href="guide/" class="button button--transparent button--border"> 82 + <span> 83 + <i class="ph-fill ph-book-open-text"></i> 84 + Guide 85 + </span> 86 + </a> 87 + 88 + <a href="featured/" class="button button--transparent button--border"> 89 + <span> 90 + <i class="ph-fill ph-sparkle"></i> 91 + Featured 92 + </span> 93 + </a> 94 + 95 + <a href="build/" class="button button--transparent button--border"> 96 + <span> 97 + <i class="ph-fill ph-hammer"></i> 98 + Build 99 + </span> 100 + </a> 101 + 102 + <div class="divider"></div> 103 + 104 + <a href="data/" class="button button--transparent button--border"> 105 + <span>Input & Output</span> 106 + </a> 107 + 108 + <a href="playback/" class="button button--transparent button--border"> 109 + <span>Playback</span> 110 + </a> 111 + 112 + <a href="browsing/" class="button button--border"> 113 + <span>Browsing</span> 114 + </a> 115 + 116 + <a href="themes/" class="button button--transparent button--border"> 117 + <span>Themes</span> 118 + </a> 119 + 120 + <a href="misc/" class="button button--transparent button--border"> 121 + <span> 122 + <i class="ph-fill ph-treasure-chest"></i> 123 + </span> 124 + </a> 125 + </nav> 126 + 127 + <button 128 + id="nav-overflow-btn" 129 + class="button button--transparent button--border" 130 + style="display: none; flex-shrink: 0" 131 + popovertarget="nav-overflow-menu" 132 + > 133 + <span class="with-icon"> 134 + <i class="ph-fill ph-dots-three-outline"></i> 135 + </span> 136 + </button> 137 + 138 + <div id="nav-overflow-menu" class="dropdown" popover></div> 139 + </div> 140 + 141 + 142 + <section> 143 + <div class="grid-filter"> 144 + <span class="grid-filter--label">Filter by</span> 145 + 146 + <button class="button--border button--tiny" data-filter="all">All</button> 147 + <button class="button--border button--tiny button--bg-twist-4 button--tr-twist-4 button--transparent" data-filter="prelude">Features</button> 148 + <button class="button--border button--tiny button--bg-twist-2 button--tr-twist-2 button--transparent" data-filter="interface">Interfaces</button> 149 + 150 + <div style="flex: 1"></div> 151 + 152 + <span class="grid-filter--label grid-filter--label-output">Userdata from</span> 153 + <span class="grid-filter--output"></span> 154 + </div> 155 + 156 + <ul class="grid" style="margin-top: var(--space-xs);"> 157 + 158 + 159 + <li 160 + class="grid-item" 161 + data-active-color="var(--accent-twist-2)" 162 + data-description="Collection browser and search." 163 + data-name="Winamp / Browser" 164 + data-kind="interface" 165 + data-uri="diffuse://themes/winamp/browser/facet/index.html" 166 + > 167 + <div 168 + class="grid-item__contents" 169 + style="--grid-item-color: var(--accent-twist-2)" 170 + > 171 + <div class="grid-item__title"> 172 + <a href="l/?path=themes%2Fwinamp%2Fbrowser%2Ffacet%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 173 + Winamp / Browser 174 + </a> 175 + <span style="flex: 1"></span> 176 + </div> 177 + <div class="list-description"> 178 + Collection browser and search. 179 + </div> 180 + </div> 181 + </li> 182 + </ul> 183 + 184 + </section> 185 + 186 + </main> 187 + 188 + 189 + <!-- Import map --> 190 + <script type="importmap"> 191 + { 192 + "imports": { 193 + "~/": "./", 194 + 195 + "@awesome.me/webawesome/dist/": "./vendor/@awesome.me/webawesome/", 196 + "@awesome.me/webawesome/dist-cdn/": "./vendor/@awesome.me/webawesome/", 197 + "@phosphor-icons/web/": "./vendor/@phosphor-icons/web/", 198 + 199 + "@atcute/cbor": "./vendor/@atcute/cbor/index.js", 200 + "@atcute/tid": "./vendor/@atcute/tid/index.js", 201 + "idb-keyval": "./vendor/idb-keyval/index.js", 202 + "lit-html": "./vendor/lit-html/index.js", 203 + "throttle-debounce": "./vendor/throttle-debounce/index.js" 204 + } 205 + } 206 + </script> 207 + 208 + <!-- Make every touched URL available offline --> 209 + <do-offline></do-offline> 210 + <script src="components/orchestrator/offline/element.js" type="module"></script> 211 + 212 + <!-- Scripts --> 213 + <script src="common/pages/ppr.js" type="module"></script> 214 + <script src="common/pages/version-upgrade.js" type="module"></script> 215 + </body> 216 + </html>
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/browsing/index.html.br

This is a binary file and will not be displayed.

+305
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/build/index.html
··· 1 + <html lang="en"> 2 + <head> 3 + <meta charset="UTF-8" /> 4 + 5 + <meta name="color-scheme" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + 8 + <meta name="media-controllable" /> 9 + <meta name="mobile-web-app-capable" content="yes" /> 10 + 11 + <title>Build | Diffuse</title> 12 + 13 + <!-- Base --> 14 + <base href="../" /> 15 + 16 + <!-- Favicons & Mobile --> 17 + <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" /> 18 + <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" /> 19 + <link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png" /> 20 + <!-- TODO: <link rel="manifest" href="site.webmanifest" />--> 21 + <link rel="mask-icon" href="safari-pinned-tab.svg" color="#8a90a9" /> 22 + <meta name="msapplication-TileColor" content="#8a90a9" /> 23 + <meta name="theme-color" content="#8a90a9" /> 24 + 25 + <!-- Preloads --> 26 + 27 + <!-- Styles --> 28 + <link rel="stylesheet" href="styles/base.css" /> 29 + <link rel="stylesheet" href="styles/diffuse/page.css" /> 30 + <link rel="stylesheet" href="styles/diffuse/code-editor.css" /> 31 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/bold/style.css" /> 32 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/fill/style.css" /> 33 + </head> 34 + <body> 35 + <style> 36 + .construct, h2 { 37 + color: var(--accent); 38 + } 39 + </style> 40 + 41 + <header style="overflow: hidden"> 42 + <div> 43 + <div class="diffuse-logo-container diffuse-logo-container--condensed"> 44 + <a href="./" style="display: inline-block;"> 45 + <svg viewBox="0 0 902 134" width="160"> 46 + <title>Diffuse</title> 47 + <use 48 + xlink:href="images/diffuse-current.svg#diffuse" 49 + href="images/diffuse-current.svg#diffuse"></use> 50 + </svg> 51 + 52 + </a> 53 + </div> 54 + </div> 55 + <div class="dither-mask filler"> 56 + <div id="status--filler-container"> 57 + <span id="status"> 58 + <a href="/latest/" title="Upgrade to latest" class="animate-spin"> 59 + <i class="ph-bold ph-spinner"></i> 60 + </a> 61 + <a href="/chronicle/" title="Browse versions of Diffuse"> 62 + <i class="ph-fill ph-star-four"></i> 63 + </a> 64 + </span> 65 + 66 + </div> 67 + </div> 68 + </header> 69 + 70 + <main> 71 + 72 + <div class="nav-container"> 73 + <nav id="diffuse-nav"> 74 + <a href="dashboard/" class="button button--transparent button--border"> 75 + <span> 76 + <i class="ph-fill ph-person"></i> 77 + Your Diffuse 78 + </span> 79 + </a> 80 + 81 + <a href="guide/" class="button button--transparent button--border"> 82 + <span> 83 + <i class="ph-fill ph-book-open-text"></i> 84 + Guide 85 + </span> 86 + </a> 87 + 88 + <a href="featured/" class="button button--transparent button--border"> 89 + <span> 90 + <i class="ph-fill ph-sparkle"></i> 91 + Featured 92 + </span> 93 + </a> 94 + 95 + <a href="build/" class="button button--border"> 96 + <span> 97 + <i class="ph-fill ph-hammer"></i> 98 + Build 99 + </span> 100 + </a> 101 + 102 + <div class="divider"></div> 103 + 104 + <a href="data/" class="button button--transparent button--border"> 105 + <span>Input & Output</span> 106 + </a> 107 + 108 + <a href="playback/" class="button button--transparent button--border"> 109 + <span>Playback</span> 110 + </a> 111 + 112 + <a href="browsing/" class="button button--transparent button--border"> 113 + <span>Browsing</span> 114 + </a> 115 + 116 + <a href="themes/" class="button button--transparent button--border"> 117 + <span>Themes</span> 118 + </a> 119 + 120 + <a href="misc/" class="button button--transparent button--border"> 121 + <span> 122 + <i class="ph-fill ph-treasure-chest"></i> 123 + </span> 124 + </a> 125 + </nav> 126 + 127 + <button 128 + id="nav-overflow-btn" 129 + class="button button--transparent button--border" 130 + style="display: none; flex-shrink: 0" 131 + popovertarget="nav-overflow-menu" 132 + > 133 + <span class="with-icon"> 134 + <i class="ph-fill ph-dots-three-outline"></i> 135 + </span> 136 + </button> 137 + 138 + <div id="nav-overflow-menu" class="dropdown" popover></div> 139 + </div> 140 + 141 + 142 + <h1 id="build" hidden>Build</h1> 143 + 144 + 145 + <!-- BUILD --> 146 + <section style="margin-top: var(--space-lg);"> 147 + <form id="build-form" class="columns"> 148 + <div class="flex" style="flex-basis: 35%"> 149 + <div id="html-input-container" class="code-editor monospace-font"> 150 + </div> 151 + </div> 152 + 153 + <div style="flex: 1; font-size: var(--fs-sm); max-width: var(--container-sm)"> 154 + <p style="margin-top: 0"> 155 + Your code here builds on the <a href="#foundation">foundation</a> listed below, and will be injected into a <span style="white-space: nowrap"><code>&lt;div id="container"&gt;</code></span> element in the body. 156 + </p> 157 + <p> 158 + <input id="name-input" type="text" placeholder="Name" name="name" required /> 159 + </p> 160 + <p> 161 + <select id="kind-input" name="kind"> 162 + <option value="interactive" selected>Interactive</option> 163 + <option value="prelude">Prelude</option> 164 + </select> 165 + </p> 166 + <p> 167 + <textarea id="description-input" placeholder="Description" name="description" rows="5"></textarea> 168 + </p> 169 + <p> 170 + <span class="button-row"> 171 + <button class="button--bg-accent" name="save">Save</button> 172 + <button class="button--bg-accent" name="save+open">Save &amp; Open</button> 173 + </span> 174 + </p> 175 + </div> 176 + </form> 177 + </section> 178 + 179 + <!-- FOUNDATION --> 180 + <div class="columns"> 181 + <section class="flex"> 182 + <h2 id="foundation">Foundation</h2> 183 + 184 + <p> 185 + <strong>Diffuse comes with a foundation that preconfigures a lot of elements so you don't have to set them up yourself</strong>, along with a combination of elements for certain features. It internally tracks the DOM addition of the custom elements, so no need to worry about setting up an element multiple times. It also provides signals which can be used to track element creations. An example of this can be found in the "scrobbles" feature. 186 + </p> 187 + <p> 188 + That said, you are not required not use this! You can, for example, setup a Diffuse audio engine element yourself that's in a different group so that it doesn't communicate with the default one; in case you want to make a dj-deck, or something like that, which would have multiple audio items playing at the same time. This does mean you will need to pay attention to more things, such as, how does this interact with other features the user has enabled. 189 + </p> 190 + <p> 191 + <small><i class="ph-fill ph-info"></i> Refer to the <a href="elements/">elements index</a> to find out what each element does.</small> 192 + </p> 193 + <div class="code-block"> 194 + <code>import foundation from "common/foundation.js" 195 + 196 + await foundation.configurator.input() 197 + await foundation.configurator.scrobbles() 198 + 199 + await foundation.engine.audio() 200 + await foundation.engine.queue() 201 + await foundation.engine.repeatShuffle() 202 + await foundation.engine.scope() 203 + 204 + await foundation.orchestrator.autoQueue() 205 + await foundation.orchestrator.favourites() 206 + await foundation.orchestrator.mediaSession() 207 + await foundation.orchestrator.output() 208 + await foundation.orchestrator.queueAudio() 209 + await foundation.orchestrator.processTracks() 210 + await foundation.orchestrator.scopedTracks() 211 + await foundation.orchestrator.scrobbleAudio() 212 + await foundation.orchestrator.sources() 213 + 214 + await foundation.processor.artwork() 215 + await foundation.processor.metadata() 216 + await foundation.processor.search()</code> 217 + </div> 218 + </section> 219 + 220 + <section class="flex"> 221 + <h2 id="examples">Examples</h2> 222 + 223 + <p> 224 + Some simple examples to help you understand how to build your own facet. Click the edit button to load them into the code editor above. 225 + </p> 226 + 227 + <ul> 228 + <li data-uri="diffuse://facets/examples/now-playing/index.html" data-name="Now playing" style="margin-top: var(--space-md)"> 229 + <div style="display: flex; gap: var(--space-xs); justify-content: space-between;"> 230 + <a href="l/?path=facets%2Fexamples%2Fnow-playing%2Findex.html"> 231 + Now playing 232 + </a> 233 + <button class="button--tiny button--bg-accent" rel="edit"> 234 + <span class="with-icon"> 235 + <i class="ph-fill ph-code-block"></i> 236 + Edit 237 + </span> 238 + </button> 239 + </div> 240 + <div class="list-description"> 241 + Shows what's currently set to &quot;now playing&quot; in the queue, along with a button to shift the queue to the next track. 242 + </div> 243 + </li> 244 + <li data-uri="diffuse://facets/examples/generate-playlist/index.html" data-name="Generate playlist" style="margin-top: var(--space-md)"> 245 + <div style="display: flex; gap: var(--space-xs); justify-content: space-between;"> 246 + <a href="l/?path=facets%2Fexamples%2Fgenerate-playlist%2Findex.html"> 247 + Generate playlist 248 + </a> 249 + <button class="button--tiny button--bg-accent" rel="edit"> 250 + <span class="with-icon"> 251 + <i class="ph-fill ph-code-block"></i> 252 + Edit 253 + </span> 254 + </button> 255 + </div> 256 + <div class="list-description"> 257 + Make a list of what previously played in the queue. 258 + </div> 259 + </li> 260 + </ul> 261 + 262 + 263 + <h2 id="notes">Notes</h2> 264 + <p> 265 + While you have the ability to do whatever you want in a custom facet, the existing facets are designed to work a certain way; so here's some things to keep in mind: 266 + </p> 267 + <ul> 268 + <li><span>Prelude (feature) facets are loaded in alphabetical order by the facet loader.</span></li> 269 + <li><span>Most elements are configured in broadcast mode so they communicate across tabs. There are a few exceptions such as inputs, where we prefer parallelisation.</span></li> 270 + <li><span>All URLs in a facet are relative to the root of Diffuse (not the root of the server) due to the base element in the header of the facet loader.</span></li> 271 + </ul> 272 + </section> 273 + </div> 274 + 275 + </main> 276 + 277 + 278 + <!-- Import map --> 279 + <script type="importmap"> 280 + { 281 + "imports": { 282 + "~/": "./", 283 + 284 + "@awesome.me/webawesome/dist/": "./vendor/@awesome.me/webawesome/", 285 + "@awesome.me/webawesome/dist-cdn/": "./vendor/@awesome.me/webawesome/", 286 + "@phosphor-icons/web/": "./vendor/@phosphor-icons/web/", 287 + 288 + "@atcute/cbor": "./vendor/@atcute/cbor/index.js", 289 + "@atcute/tid": "./vendor/@atcute/tid/index.js", 290 + "idb-keyval": "./vendor/idb-keyval/index.js", 291 + "lit-html": "./vendor/lit-html/index.js", 292 + "throttle-debounce": "./vendor/throttle-debounce/index.js" 293 + } 294 + } 295 + </script> 296 + 297 + <!-- Make every touched URL available offline --> 298 + <do-offline></do-offline> 299 + <script src="components/orchestrator/offline/element.js" type="module"></script> 300 + 301 + <!-- Scripts --> 302 + <script src="common/pages/ppr.js" type="module"></script> 303 + <script src="common/pages/version-upgrade.js" type="module"></script> 304 + </body> 305 + </html>
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/build/index.html.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/butterchurn-OCY4IPUN.js
··· 1 + ../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/butterchurn-OCY4IPUN.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/butterchurn-OCY4IPUN.js.br
··· 1 + ../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/butterchurn-OCY4IPUN.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/butterchurn-OCY4IPUN.js.map
··· 1 + ../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/butterchurn-OCY4IPUN.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-22LCXWVK.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-22LCXWVK.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-22LCXWVK.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-22LCXWVK.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-22LCXWVK.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-22LCXWVK.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-2CFBJKYZ.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-2CFBJKYZ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-2CFBJKYZ.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-2CFBJKYZ.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-2CFBJKYZ.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-2CFBJKYZ.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-2DWM2TAZ.js
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-2DWM2TAZ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-2DWM2TAZ.js.br
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-2DWM2TAZ.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-2DWM2TAZ.js.map
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-2DWM2TAZ.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-2KN47T7R.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-2KN47T7R.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-2KN47T7R.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-2KN47T7R.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-2KN47T7R.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-2KN47T7R.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-3LV5SNYF.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-3LV5SNYF.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-3LV5SNYF.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-3LV5SNYF.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-3LV5SNYF.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-3LV5SNYF.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-3QGTS6VV.js
··· 1 + ../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/chunk-3QGTS6VV.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-3QGTS6VV.js.br
··· 1 + ../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/chunk-3QGTS6VV.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-3QGTS6VV.js.map
··· 1 + ../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/chunk-3QGTS6VV.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-3UJOKQHZ.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-3UJOKQHZ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-3UJOKQHZ.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-3UJOKQHZ.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-3UJOKQHZ.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-3UJOKQHZ.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-46J3YOS4.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-46J3YOS4.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-46J3YOS4.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-46J3YOS4.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-46J3YOS4.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-46J3YOS4.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-4I6PUBR2.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-4I6PUBR2.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-4I6PUBR2.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-4I6PUBR2.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-4I6PUBR2.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-4I6PUBR2.js.map
+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-4KWB43C2.js
··· 1 + import{b as a}from"./chunk-DFKPZAA6.js";import{a as r}from"./chunk-BFIVCPQF.js";async function m(l,o){o??=document.body;let n=document.createRange();n.selectNode(o);let c=l.filter(e=>e.kind==="prelude").sort((e,t)=>e.name.localeCompare(t.name));for(let e of c){let t=e.html??(e.uri?await a(e.uri):"");if(!t)continue;let d=n.createContextualFragment(t);o.append(d)}}r(m,"insertPreludes");export{m as a}; 2 + 3 + //# sourceMappingURL=./chunk-4KWB43C2.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-4KWB43C2.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-4KWB43C2.js.map
··· 1 + {"version":3,"sources":["/common/facets/prelude.js"],"sourcesContent":["/**\n * @import {Facet} from \"~/definitions/types.d.ts\"\n */\n\nimport { loadURI } from \"../loader.js\";\n\n/**\n * @param {Facet[]} facets\n * @param {HTMLElement} [container]\n */\nexport async function insertPreludes(facets, container) {\n container ??= document.body;\n\n const range = document.createRange();\n range.selectNode(container);\n\n const preludes = facets\n .filter((f) => f.kind === \"prelude\")\n .sort((a, b) => a.name.localeCompare(b.name));\n\n for (const prelude of preludes) {\n const html = prelude.html ??\n (prelude.uri ? await loadURI(prelude.uri) : \"\");\n if (!html) continue;\n const preludeFragment = range.createContextualFragment(html);\n container.append(preludeFragment);\n }\n}\n"],"mappings":"gFAUA,eAAsBA,EAAeC,EAAQC,EAAW,CACtDA,IAAc,SAAS,KAEvB,IAAMC,EAAQ,SAAS,YAAY,EACnCA,EAAM,WAAWD,CAAS,EAE1B,IAAME,EAAWH,EACd,OAAQI,GAAMA,EAAE,OAAS,SAAS,EAClC,KAAK,CAACC,EAAGC,IAAMD,EAAE,KAAK,cAAcC,EAAE,IAAI,CAAC,EAE9C,QAAWC,KAAWJ,EAAU,CAC9B,IAAMK,EAAOD,EAAQ,OAClBA,EAAQ,IAAM,MAAME,EAAQF,EAAQ,GAAG,EAAI,IAC9C,GAAI,CAACC,EAAM,SACX,IAAME,EAAkBR,EAAM,yBAAyBM,CAAI,EAC3DP,EAAU,OAAOS,CAAe,CAClC,CACF,CAjBsBC,EAAAZ,EAAA","names":["insertPreludes","facets","container","range","preludes","f","a","b","prelude","html","loadURI","preludeFragment","__name"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-4KWB43C2.js.map"}
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-4M37HRVT.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-4M37HRVT.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-4M37HRVT.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-4M37HRVT.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-4M37HRVT.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-4M37HRVT.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-4MC3BFQS.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-4MC3BFQS.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-4MC3BFQS.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-4MC3BFQS.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-4MC3BFQS.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-4MC3BFQS.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-524HX7V4.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-524HX7V4.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-524HX7V4.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-524HX7V4.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-524HX7V4.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-524HX7V4.js.map
+188
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-66S4I3DC.js
··· 1 + import{a as de}from"./chunk-CVJ7NIWC.js";import{a as he,b as ue,c as ge}from"./chunk-RC5PZNFM.js";import{a as be}from"./chunk-L4VK33Z2.js";import{a as m,d as pe,e as v,g as N}from"./chunk-MWEXZQ4O.js";import{a as fe}from"./chunk-ZMYK46VQ.js";import{a as ke}from"./chunk-HB7BQ45T.js";import{a as oe,b as ce}from"./chunk-ALTFDO6Y.js";import{k as F,o as ae}from"./chunk-4I6PUBR2.js";import{a as h}from"./chunk-BFIVCPQF.js";function G(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}h(G,"M");var z=G();function Se(n){z=n}h(Se,"G");var S={exec:h(()=>null,"exec")};function g(n,e=""){let r=typeof n=="string"?n:n.source,s={replace:h((t,l)=>{let i=typeof l=="string"?l:l.source;return i=i.replace(x.caret,"$1"),r=r.replace(t,i),s},"replace"),getRegex:h(()=>new RegExp(r,e),"getRegex")};return s}h(g,"k");var He=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),x={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:h(n=>new RegExp(`^( {0,3}${n})((?:[ ][^\\n]*)?(?:\\n|$))`),"listItemRegex"),nextBulletRegex:h(n=>new RegExp(`^ {0,${Math.min(3,n-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),"nextBulletRegex"),hrRegex:h(n=>new RegExp(`^ {0,${Math.min(3,n-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),"hrRegex"),fencesBeginRegex:h(n=>new RegExp(`^ {0,${Math.min(3,n-1)}}(?:\`\`\`|~~~)`),"fencesBeginRegex"),headingBeginRegex:h(n=>new RegExp(`^ {0,${Math.min(3,n-1)}}#`),"headingBeginRegex"),htmlBeginRegex:h(n=>new RegExp(`^ {0,${Math.min(3,n-1)}}<(?:[a-z].*>|!--)`,"i"),"htmlBeginRegex"),blockquoteBeginRegex:h(n=>new RegExp(`^ {0,${Math.min(3,n-1)}}>`),"blockquoteBeginRegex")},Qe=/^(?:[ \t]*(?:\n|$))+/,Fe=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Ne=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,P=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Oe=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,X=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,Te=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,ze=g(Te).replace(/bull/g,X).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),Ue=g(Te).replace(/bull/g,X).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),W=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,je=/^[^\n]+/,Y=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Ge=g(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Y).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Xe=g(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,X).getRegex(),Z="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",K=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,We=g("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",K).replace("tag",Z).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Ae=g(W).replace("hr",P).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Z).getRegex(),Ye=g(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Ae).getRegex(),J={blockquote:Ye,code:Fe,def:Ge,fences:Ne,heading:Oe,hr:P,html:We,lheading:ze,list:Xe,newline:Qe,paragraph:Ae,table:S,text:je},xe=g("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",P).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Z).getRegex(),Ke={...J,lheading:Ue,table:xe,paragraph:g(W).replace("hr",P).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",xe).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Z).getRegex()},Je={...J,html:g(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",K).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:S,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:g(W).replace("hr",P).replace("heading",` *#{1,6} *[^ 2 + ]`).replace("lheading",ze).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Ve=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,et=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,ve=/^( {2,}|\\)\n(?!\s*$)/,tt=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,H=/[\p{P}\p{S}]/u,V=/[\s\p{P}\p{S}]/u,_e=/[^\s\p{P}\p{S}]/u,rt=g(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,V).getRegex(),Le=/(?!~)[\p{P}\p{S}]/u,nt=/(?!~)[\s\p{P}\p{S}]/u,st=/(?:[^\s\p{P}\p{S}]|~)/u,Ie=/(?![*_])[\p{P}\p{S}]/u,it=/(?![*_])[\s\p{P}\p{S}]/u,lt=/(?:[^\s\p{P}\p{S}]|[*_])/u,at=g(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",He?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),Pe=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,ot=g(Pe,"u").replace(/punct/g,H).getRegex(),ct=g(Pe,"u").replace(/punct/g,Le).getRegex(),Ce="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",pt=g(Ce,"gu").replace(/notPunctSpace/g,_e).replace(/punctSpace/g,V).replace(/punct/g,H).getRegex(),ht=g(Ce,"gu").replace(/notPunctSpace/g,st).replace(/punctSpace/g,nt).replace(/punct/g,Le).getRegex(),ut=g("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,_e).replace(/punctSpace/g,V).replace(/punct/g,H).getRegex(),gt=g(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,Ie).getRegex(),dt="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",kt=g(dt,"gu").replace(/notPunctSpace/g,lt).replace(/punctSpace/g,it).replace(/punct/g,Ie).getRegex(),ft=g(/\\(punct)/,"gu").replace(/punct/g,H).getRegex(),bt=g(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),xt=g(K).replace("(?:-->|$)","-->").getRegex(),mt=g("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",xt).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),B=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,wt=g(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",B).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Ee=g(/^!?\[(label)\]\[(ref)\]/).replace("label",B).replace("ref",Y).getRegex(),qe=g(/^!?\[(ref)\](?:\[\])?/).replace("ref",Y).getRegex(),yt=g("reflink|nolink(?!\\()","g").replace("reflink",Ee).replace("nolink",qe).getRegex(),me=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,ee={_backpedal:S,anyPunctuation:ft,autolink:bt,blockSkip:at,br:ve,code:et,del:S,delLDelim:S,delRDelim:S,emStrongLDelim:ot,emStrongRDelimAst:pt,emStrongRDelimUnd:ut,escape:Ve,link:wt,nolink:qe,punctuation:rt,reflink:Ee,reflinkSearch:yt,tag:mt,text:tt,url:S},$t={...ee,link:g(/^!?\[(label)\]\((.*?)\)/).replace("label",B).getRegex(),reflink:g(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",B).getRegex()},O={...ee,emStrongRDelimAst:ht,emStrongLDelim:ct,delLDelim:gt,delRDelim:kt,url:g(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",me).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:g(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",me).getRegex()},Rt={...O,br:g(ve).replace("{2,}","*").getRegex(),text:g(O.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},q={normal:J,gfm:Ke,pedantic:Je},_={normal:ee,gfm:O,breaks:Rt,pedantic:$t},St={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},we=h(n=>St[n],"de");function $(n,e){if(e){if(x.escapeTest.test(n))return n.replace(x.escapeReplace,we)}else if(x.escapeTestNoEncode.test(n))return n.replace(x.escapeReplaceNoEncode,we);return n}h($,"O");function ye(n){try{n=encodeURI(n).replace(x.percentDecode,"%")}catch{return null}return n}h(ye,"X");function $e(n,e){let r=n.replace(x.findPipe,(l,i,c)=>{let a=!1,o=i;for(;--o>=0&&c[o]==="\\";)a=!a;return a?"|":" |"}),s=r.split(x.splitPipe),t=0;if(s[0].trim()||s.shift(),s.length>0&&!s.at(-1)?.trim()&&s.pop(),e)if(s.length>e)s.splice(e);else for(;s.length<e;)s.push("");for(;t<s.length;t++)s[t]=s[t].trim().replace(x.slashPipe,"|");return s}h($e,"J");function L(n,e,r){let s=n.length;if(s===0)return"";let t=0;for(;t<s;){let l=n.charAt(s-t-1);if(l===e&&!r)t++;else if(l!==e&&r)t++;else break}return n.slice(0,s-t)}h(L,"E");function Tt(n,e){if(n.indexOf(e[1])===-1)return-1;let r=0;for(let s=0;s<n.length;s++)if(n[s]==="\\")s++;else if(n[s]===e[0])r++;else if(n[s]===e[1]&&(r--,r<0))return s;return r>0?-2:-1}h(Tt,"ge");function zt(n,e=0){let r=e,s="";for(let t of n)if(t===" "){let l=4-r%4;s+=" ".repeat(l),r+=l}else s+=t,r++;return s}h(zt,"fe");function Re(n,e,r,s,t){let l=e.href,i=e.title||null,c=n[1].replace(t.other.outputLinkReplace,"$1");s.state.inLink=!0;let a={type:n[0].charAt(0)==="!"?"image":"link",raw:r,href:l,title:i,text:c,tokens:s.inlineTokens(c)};return s.state.inLink=!1,a}h(Re,"me");function At(n,e,r){let s=n.match(r.other.indentCodeCompensation);if(s===null)return e;let t=s[1];return e.split(` 3 + `).map(l=>{let i=l.match(r.other.beginningSpace);if(i===null)return l;let[c]=i;return c.length>=t.length?l.slice(t.length):l}).join(` 4 + `)}h(At,"it");var D=class{static{h(this,"w")}options;rules;lexer;constructor(n){this.options=n||z}space(n){let e=this.rules.block.newline.exec(n);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(n){let e=this.rules.block.code.exec(n);if(e){let r=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?r:L(r,` 5 + `)}}}fences(n){let e=this.rules.block.fences.exec(n);if(e){let r=e[0],s=At(r,e[3]||"",this.rules);return{type:"code",raw:r,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:s}}}heading(n){let e=this.rules.block.heading.exec(n);if(e){let r=e[2].trim();if(this.rules.other.endingHash.test(r)){let s=L(r,"#");(this.options.pedantic||!s||this.rules.other.endingSpaceChar.test(s))&&(r=s.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:r,tokens:this.lexer.inline(r)}}}hr(n){let e=this.rules.block.hr.exec(n);if(e)return{type:"hr",raw:L(e[0],` 6 + `)}}blockquote(n){let e=this.rules.block.blockquote.exec(n);if(e){let r=L(e[0],` 7 + `).split(` 8 + `),s="",t="",l=[];for(;r.length>0;){let i=!1,c=[],a;for(a=0;a<r.length;a++)if(this.rules.other.blockquoteStart.test(r[a]))c.push(r[a]),i=!0;else if(!i)c.push(r[a]);else break;r=r.slice(a);let o=c.join(` 9 + `),p=o.replace(this.rules.other.blockquoteSetextReplace,` 10 + $1`).replace(this.rules.other.blockquoteSetextReplace2,"");s=s?`${s} 11 + ${o}`:o,t=t?`${t} 12 + ${p}`:p;let u=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(p,l,!0),this.lexer.state.top=u,r.length===0)break;let d=l.at(-1);if(d?.type==="code")break;if(d?.type==="blockquote"){let b=d,f=b.raw+` 13 + `+r.join(` 14 + `),R=this.blockquote(f);l[l.length-1]=R,s=s.substring(0,s.length-b.raw.length)+R.raw,t=t.substring(0,t.length-b.text.length)+R.text;break}else if(d?.type==="list"){let b=d,f=b.raw+` 15 + `+r.join(` 16 + `),R=this.list(f);l[l.length-1]=R,s=s.substring(0,s.length-d.raw.length)+R.raw,t=t.substring(0,t.length-b.raw.length)+R.raw,r=f.substring(l.at(-1).raw.length).split(` 17 + `);continue}}return{type:"blockquote",raw:s,tokens:l,text:t}}}list(n){let e=this.rules.block.list.exec(n);if(e){let r=e[1].trim(),s=r.length>1,t={type:"list",raw:"",ordered:s,start:s?+r.slice(0,-1):"",loose:!1,items:[]};r=s?`\\d{1,9}\\${r.slice(-1)}`:`\\${r}`,this.options.pedantic&&(r=s?r:"[*+-]");let l=this.rules.other.listItemRegex(r),i=!1;for(;n;){let a=!1,o="",p="";if(!(e=l.exec(n))||this.rules.block.hr.test(n))break;o=e[0],n=n.substring(o.length);let u=zt(e[2].split(` 18 + `,1)[0],e[1].length),d=n.split(` 19 + `,1)[0],b=!u.trim(),f=0;if(this.options.pedantic?(f=2,p=u.trimStart()):b?f=e[1].length+1:(f=u.search(this.rules.other.nonSpaceChar),f=f>4?1:f,p=u.slice(f),f+=e[1].length),b&&this.rules.other.blankLine.test(d)&&(o+=d+` 20 + `,n=n.substring(d.length+1),a=!0),!a){let R=this.rules.other.nextBulletRegex(f),se=this.rules.other.hrRegex(f),ie=this.rules.other.fencesBeginRegex(f),le=this.rules.other.headingBeginRegex(f),Me=this.rules.other.htmlBeginRegex(f),Ze=this.rules.other.blockquoteBeginRegex(f);for(;n;){let Q=n.split(` 21 + `,1)[0],A;if(d=Q,this.options.pedantic?(d=d.replace(this.rules.other.listReplaceNesting," "),A=d):A=d.replace(this.rules.other.tabCharGlobal," "),ie.test(d)||le.test(d)||Me.test(d)||Ze.test(d)||R.test(d)||se.test(d))break;if(A.search(this.rules.other.nonSpaceChar)>=f||!d.trim())p+=` 22 + `+A.slice(f);else{if(b||u.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||ie.test(u)||le.test(u)||se.test(u))break;p+=` 23 + `+d}b=!d.trim(),o+=Q+` 24 + `,n=n.substring(Q.length+1),u=A.slice(f)}}t.loose||(i?t.loose=!0:this.rules.other.doubleBlankLine.test(o)&&(i=!0)),t.items.push({type:"list_item",raw:o,task:!!this.options.gfm&&this.rules.other.listIsTask.test(p),loose:!1,text:p,tokens:[]}),t.raw+=o}let c=t.items.at(-1);if(c)c.raw=c.raw.trimEnd(),c.text=c.text.trimEnd();else return;t.raw=t.raw.trimEnd();for(let a of t.items){if(this.lexer.state.top=!1,a.tokens=this.lexer.blockTokens(a.text,[]),a.task){if(a.text=a.text.replace(this.rules.other.listReplaceTask,""),a.tokens[0]?.type==="text"||a.tokens[0]?.type==="paragraph"){a.tokens[0].raw=a.tokens[0].raw.replace(this.rules.other.listReplaceTask,""),a.tokens[0].text=a.tokens[0].text.replace(this.rules.other.listReplaceTask,"");for(let p=this.lexer.inlineQueue.length-1;p>=0;p--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[p].src)){this.lexer.inlineQueue[p].src=this.lexer.inlineQueue[p].src.replace(this.rules.other.listReplaceTask,"");break}}let o=this.rules.other.listTaskCheckbox.exec(a.raw);if(o){let p={type:"checkbox",raw:o[0]+" ",checked:o[0]!=="[ ]"};a.checked=p.checked,t.loose?a.tokens[0]&&["paragraph","text"].includes(a.tokens[0].type)&&"tokens"in a.tokens[0]&&a.tokens[0].tokens?(a.tokens[0].raw=p.raw+a.tokens[0].raw,a.tokens[0].text=p.raw+a.tokens[0].text,a.tokens[0].tokens.unshift(p)):a.tokens.unshift({type:"paragraph",raw:p.raw,text:p.raw,tokens:[p]}):a.tokens.unshift(p)}}if(!t.loose){let o=a.tokens.filter(u=>u.type==="space"),p=o.length>0&&o.some(u=>this.rules.other.anyLine.test(u.raw));t.loose=p}}if(t.loose)for(let a of t.items){a.loose=!0;for(let o of a.tokens)o.type==="text"&&(o.type="paragraph")}return t}}html(n){let e=this.rules.block.html.exec(n);if(e)return{type:"html",block:!0,raw:e[0],pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:e[0]}}def(n){let e=this.rules.block.def.exec(n);if(e){let r=e[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),s=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",t=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:r,raw:e[0],href:s,title:t}}}table(n){let e=this.rules.block.table.exec(n);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let r=$e(e[1]),s=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),t=e[3]?.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(` 25 + `):[],l={type:"table",raw:e[0],header:[],align:[],rows:[]};if(r.length===s.length){for(let i of s)this.rules.other.tableAlignRight.test(i)?l.align.push("right"):this.rules.other.tableAlignCenter.test(i)?l.align.push("center"):this.rules.other.tableAlignLeft.test(i)?l.align.push("left"):l.align.push(null);for(let i=0;i<r.length;i++)l.header.push({text:r[i],tokens:this.lexer.inline(r[i]),header:!0,align:l.align[i]});for(let i of t)l.rows.push($e(i,l.header.length).map((c,a)=>({text:c,tokens:this.lexer.inline(c),header:!1,align:l.align[a]})));return l}}lheading(n){let e=this.rules.block.lheading.exec(n);if(e)return{type:"heading",raw:e[0],depth:e[2].charAt(0)==="="?1:2,text:e[1],tokens:this.lexer.inline(e[1])}}paragraph(n){let e=this.rules.block.paragraph.exec(n);if(e){let r=e[1].charAt(e[1].length-1)===` 26 + `?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:r,tokens:this.lexer.inline(r)}}}text(n){let e=this.rules.block.text.exec(n);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(n){let e=this.rules.inline.escape.exec(n);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(n){let e=this.rules.inline.tag.exec(n);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(n){let e=this.rules.inline.link.exec(n);if(e){let r=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(r)){if(!this.rules.other.endAngleBracket.test(r))return;let l=L(r.slice(0,-1),"\\");if((r.length-l.length)%2===0)return}else{let l=Tt(e[2],"()");if(l===-2)return;if(l>-1){let i=(e[0].indexOf("!")===0?5:4)+e[1].length+l;e[2]=e[2].substring(0,l),e[0]=e[0].substring(0,i).trim(),e[3]=""}}let s=e[2],t="";if(this.options.pedantic){let l=this.rules.other.pedanticHrefTitle.exec(s);l&&(s=l[1],t=l[3])}else t=e[3]?e[3].slice(1,-1):"";return s=s.trim(),this.rules.other.startAngleBracket.test(s)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(r)?s=s.slice(1):s=s.slice(1,-1)),Re(e,{href:s&&s.replace(this.rules.inline.anyPunctuation,"$1"),title:t&&t.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(n,e){let r;if((r=this.rules.inline.reflink.exec(n))||(r=this.rules.inline.nolink.exec(n))){let s=(r[2]||r[1]).replace(this.rules.other.multipleSpaceGlobal," "),t=e[s.toLowerCase()];if(!t){let l=r[0].charAt(0);return{type:"text",raw:l,text:l}}return Re(r,t,r[0],this.lexer,this.rules)}}emStrong(n,e,r=""){let s=this.rules.inline.emStrongLDelim.exec(n);if(!(!s||s[3]&&r.match(this.rules.other.unicodeAlphaNumeric))&&(!(s[1]||s[2])||!r||this.rules.inline.punctuation.exec(r))){let t=[...s[0]].length-1,l,i,c=t,a=0,o=s[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(o.lastIndex=0,e=e.slice(-1*n.length+t);(s=o.exec(e))!=null;){if(l=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!l)continue;if(i=[...l].length,s[3]||s[4]){c+=i;continue}else if((s[5]||s[6])&&t%3&&!((t+i)%3)){a+=i;continue}if(c-=i,c>0)continue;i=Math.min(i,i+c+a);let p=[...s[0]][0].length,u=n.slice(0,t+s.index+p+i);if(Math.min(t,i)%2){let b=u.slice(1,-1);return{type:"em",raw:u,text:b,tokens:this.lexer.inlineTokens(b)}}let d=u.slice(2,-2);return{type:"strong",raw:u,text:d,tokens:this.lexer.inlineTokens(d)}}}}codespan(n){let e=this.rules.inline.code.exec(n);if(e){let r=e[2].replace(this.rules.other.newLineCharGlobal," "),s=this.rules.other.nonSpaceChar.test(r),t=this.rules.other.startingSpaceChar.test(r)&&this.rules.other.endingSpaceChar.test(r);return s&&t&&(r=r.substring(1,r.length-1)),{type:"codespan",raw:e[0],text:r}}}br(n){let e=this.rules.inline.br.exec(n);if(e)return{type:"br",raw:e[0]}}del(n,e,r=""){let s=this.rules.inline.delLDelim.exec(n);if(s&&(!s[1]||!r||this.rules.inline.punctuation.exec(r))){let t=[...s[0]].length-1,l,i,c=t,a=this.rules.inline.delRDelim;for(a.lastIndex=0,e=e.slice(-1*n.length+t);(s=a.exec(e))!=null;){if(l=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!l||(i=[...l].length,i!==t))continue;if(s[3]||s[4]){c+=i;continue}if(c-=i,c>0)continue;i=Math.min(i,i+c);let o=[...s[0]][0].length,p=n.slice(0,t+s.index+o+i),u=p.slice(t,-t);return{type:"del",raw:p,text:u,tokens:this.lexer.inlineTokens(u)}}}}autolink(n){let e=this.rules.inline.autolink.exec(n);if(e){let r,s;return e[2]==="@"?(r=e[1],s="mailto:"+r):(r=e[1],s=r),{type:"link",raw:e[0],text:r,href:s,tokens:[{type:"text",raw:r,text:r}]}}}url(n){let e;if(e=this.rules.inline.url.exec(n)){let r,s;if(e[2]==="@")r=e[0],s="mailto:"+r;else{let t;do t=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(t!==e[0]);r=e[0],e[1]==="www."?s="http://"+e[0]:s=e[0]}return{type:"link",raw:e[0],text:r,href:s,tokens:[{type:"text",raw:r,text:r}]}}}inlineText(n){let e=this.rules.inline.text.exec(n);if(e){let r=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:r}}}},w=class U{static{h(this,"u")}tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||z,this.options.tokenizer=this.options.tokenizer||new D,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let r={other:x,block:q.normal,inline:_.normal};this.options.pedantic?(r.block=q.pedantic,r.inline=_.pedantic):this.options.gfm&&(r.block=q.gfm,this.options.breaks?r.inline=_.breaks:r.inline=_.gfm),this.tokenizer.rules=r}static get rules(){return{block:q,inline:_}}static lex(e,r){return new U(r).lex(e)}static lexInline(e,r){return new U(r).inlineTokens(e)}lex(e){e=e.replace(x.carriageReturn,` 27 + `),this.blockTokens(e,this.tokens);for(let r=0;r<this.inlineQueue.length;r++){let s=this.inlineQueue[r];this.inlineTokens(s.src,s.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,r=[],s=!1){for(this.options.pedantic&&(e=e.replace(x.tabCharGlobal," ").replace(x.spaceLine,""));e;){let t;if(this.options.extensions?.block?.some(i=>(t=i.call({lexer:this},e,r))?(e=e.substring(t.raw.length),r.push(t),!0):!1))continue;if(t=this.tokenizer.space(e)){e=e.substring(t.raw.length);let i=r.at(-1);t.raw.length===1&&i!==void 0?i.raw+=` 28 + `:r.push(t);continue}if(t=this.tokenizer.code(e)){e=e.substring(t.raw.length);let i=r.at(-1);i?.type==="paragraph"||i?.type==="text"?(i.raw+=(i.raw.endsWith(` 29 + `)?"":` 30 + `)+t.raw,i.text+=` 31 + `+t.text,this.inlineQueue.at(-1).src=i.text):r.push(t);continue}if(t=this.tokenizer.fences(e)){e=e.substring(t.raw.length),r.push(t);continue}if(t=this.tokenizer.heading(e)){e=e.substring(t.raw.length),r.push(t);continue}if(t=this.tokenizer.hr(e)){e=e.substring(t.raw.length),r.push(t);continue}if(t=this.tokenizer.blockquote(e)){e=e.substring(t.raw.length),r.push(t);continue}if(t=this.tokenizer.list(e)){e=e.substring(t.raw.length),r.push(t);continue}if(t=this.tokenizer.html(e)){e=e.substring(t.raw.length),r.push(t);continue}if(t=this.tokenizer.def(e)){e=e.substring(t.raw.length);let i=r.at(-1);i?.type==="paragraph"||i?.type==="text"?(i.raw+=(i.raw.endsWith(` 32 + `)?"":` 33 + `)+t.raw,i.text+=` 34 + `+t.raw,this.inlineQueue.at(-1).src=i.text):this.tokens.links[t.tag]||(this.tokens.links[t.tag]={href:t.href,title:t.title},r.push(t));continue}if(t=this.tokenizer.table(e)){e=e.substring(t.raw.length),r.push(t);continue}if(t=this.tokenizer.lheading(e)){e=e.substring(t.raw.length),r.push(t);continue}let l=e;if(this.options.extensions?.startBlock){let i=1/0,c=e.slice(1),a;this.options.extensions.startBlock.forEach(o=>{a=o.call({lexer:this},c),typeof a=="number"&&a>=0&&(i=Math.min(i,a))}),i<1/0&&i>=0&&(l=e.substring(0,i+1))}if(this.state.top&&(t=this.tokenizer.paragraph(l))){let i=r.at(-1);s&&i?.type==="paragraph"?(i.raw+=(i.raw.endsWith(` 35 + `)?"":` 36 + `)+t.raw,i.text+=` 37 + `+t.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=i.text):r.push(t),s=l.length!==e.length,e=e.substring(t.raw.length);continue}if(t=this.tokenizer.text(e)){e=e.substring(t.raw.length);let i=r.at(-1);i?.type==="text"?(i.raw+=(i.raw.endsWith(` 38 + `)?"":` 39 + `)+t.raw,i.text+=` 40 + `+t.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=i.text):r.push(t);continue}if(e){let i="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(i);break}else throw new Error(i)}}return this.state.top=!0,r}inline(e,r=[]){return this.inlineQueue.push({src:e,tokens:r}),r}inlineTokens(e,r=[]){let s=e,t=null;if(this.tokens.links){let a=Object.keys(this.tokens.links);if(a.length>0)for(;(t=this.tokenizer.rules.inline.reflinkSearch.exec(s))!=null;)a.includes(t[0].slice(t[0].lastIndexOf("[")+1,-1))&&(s=s.slice(0,t.index)+"["+"a".repeat(t[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(t=this.tokenizer.rules.inline.anyPunctuation.exec(s))!=null;)s=s.slice(0,t.index)+"++"+s.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let l;for(;(t=this.tokenizer.rules.inline.blockSkip.exec(s))!=null;)l=t[2]?t[2].length:0,s=s.slice(0,t.index+l)+"["+"a".repeat(t[0].length-l-2)+"]"+s.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);s=this.options.hooks?.emStrongMask?.call({lexer:this},s)??s;let i=!1,c="";for(;e;){i||(c=""),i=!1;let a;if(this.options.extensions?.inline?.some(p=>(a=p.call({lexer:this},e,r))?(e=e.substring(a.raw.length),r.push(a),!0):!1))continue;if(a=this.tokenizer.escape(e)){e=e.substring(a.raw.length),r.push(a);continue}if(a=this.tokenizer.tag(e)){e=e.substring(a.raw.length),r.push(a);continue}if(a=this.tokenizer.link(e)){e=e.substring(a.raw.length),r.push(a);continue}if(a=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(a.raw.length);let p=r.at(-1);a.type==="text"&&p?.type==="text"?(p.raw+=a.raw,p.text+=a.text):r.push(a);continue}if(a=this.tokenizer.emStrong(e,s,c)){e=e.substring(a.raw.length),r.push(a);continue}if(a=this.tokenizer.codespan(e)){e=e.substring(a.raw.length),r.push(a);continue}if(a=this.tokenizer.br(e)){e=e.substring(a.raw.length),r.push(a);continue}if(a=this.tokenizer.del(e,s,c)){e=e.substring(a.raw.length),r.push(a);continue}if(a=this.tokenizer.autolink(e)){e=e.substring(a.raw.length),r.push(a);continue}if(!this.state.inLink&&(a=this.tokenizer.url(e))){e=e.substring(a.raw.length),r.push(a);continue}let o=e;if(this.options.extensions?.startInline){let p=1/0,u=e.slice(1),d;this.options.extensions.startInline.forEach(b=>{d=b.call({lexer:this},u),typeof d=="number"&&d>=0&&(p=Math.min(p,d))}),p<1/0&&p>=0&&(o=e.substring(0,p+1))}if(a=this.tokenizer.inlineText(o)){e=e.substring(a.raw.length),a.raw.slice(-1)!=="_"&&(c=a.raw.slice(-1)),i=!0;let p=r.at(-1);p?.type==="text"?(p.raw+=a.raw,p.text+=a.text):r.push(a);continue}if(e){let p="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(p);break}else throw new Error(p)}}return r}},M=class{static{h(this,"y")}options;parser;constructor(n){this.options=n||z}space(n){return""}code({text:n,lang:e,escaped:r}){let s=(e||"").match(x.notSpaceStart)?.[0],t=n.replace(x.endingNewline,"")+` 41 + `;return s?'<pre><code class="language-'+$(s)+'">'+(r?t:$(t,!0))+`</code></pre> 42 + `:"<pre><code>"+(r?t:$(t,!0))+`</code></pre> 43 + `}blockquote({tokens:n}){return`<blockquote> 44 + ${this.parser.parse(n)}</blockquote> 45 + `}html({text:n}){return n}def(n){return""}heading({tokens:n,depth:e}){return`<h${e}>${this.parser.parseInline(n)}</h${e}> 46 + `}hr(n){return`<hr> 47 + `}list(n){let e=n.ordered,r=n.start,s="";for(let i=0;i<n.items.length;i++){let c=n.items[i];s+=this.listitem(c)}let t=e?"ol":"ul",l=e&&r!==1?' start="'+r+'"':"";return"<"+t+l+`> 48 + `+s+"</"+t+`> 49 + `}listitem(n){return`<li>${this.parser.parse(n.tokens)}</li> 50 + `}checkbox({checked:n}){return"<input "+(n?'checked="" ':"")+'disabled="" type="checkbox"> '}paragraph({tokens:n}){return`<p>${this.parser.parseInline(n)}</p> 51 + `}table(n){let e="",r="";for(let t=0;t<n.header.length;t++)r+=this.tablecell(n.header[t]);e+=this.tablerow({text:r});let s="";for(let t=0;t<n.rows.length;t++){let l=n.rows[t];r="";for(let i=0;i<l.length;i++)r+=this.tablecell(l[i]);s+=this.tablerow({text:r})}return s&&(s=`<tbody>${s}</tbody>`),`<table> 52 + <thead> 53 + `+e+`</thead> 54 + `+s+`</table> 55 + `}tablerow({text:n}){return`<tr> 56 + ${n}</tr> 57 + `}tablecell(n){let e=this.parser.parseInline(n.tokens),r=n.header?"th":"td";return(n.align?`<${r} align="${n.align}">`:`<${r}>`)+e+`</${r}> 58 + `}strong({tokens:n}){return`<strong>${this.parser.parseInline(n)}</strong>`}em({tokens:n}){return`<em>${this.parser.parseInline(n)}</em>`}codespan({text:n}){return`<code>${$(n,!0)}</code>`}br(n){return"<br>"}del({tokens:n}){return`<del>${this.parser.parseInline(n)}</del>`}link({href:n,title:e,tokens:r}){let s=this.parser.parseInline(r),t=ye(n);if(t===null)return s;n=t;let l='<a href="'+n+'"';return e&&(l+=' title="'+$(e)+'"'),l+=">"+s+"</a>",l}image({href:n,title:e,text:r,tokens:s}){s&&(r=this.parser.parseInline(s,this.parser.textRenderer));let t=ye(n);if(t===null)return $(r);n=t;let l=`<img src="${n}" alt="${$(r)}"`;return e&&(l+=` title="${$(e)}"`),l+=">",l}text(n){return"tokens"in n&&n.tokens?this.parser.parseInline(n.tokens):"escaped"in n&&n.escaped?n.text:$(n.text)}},te=class{static{h(this,"$")}strong({text:n}){return n}em({text:n}){return n}codespan({text:n}){return n}del({text:n}){return n}html({text:n}){return n}text({text:n}){return n}link({text:n}){return""+n}image({text:n}){return""+n}br(){return""}checkbox({raw:n}){return n}},y=class j{static{h(this,"u")}options;renderer;textRenderer;constructor(e){this.options=e||z,this.options.renderer=this.options.renderer||new M,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new te}static parse(e,r){return new j(r).parse(e)}static parseInline(e,r){return new j(r).parseInline(e)}parse(e){let r="";for(let s=0;s<e.length;s++){let t=e[s];if(this.options.extensions?.renderers?.[t.type]){let i=t,c=this.options.extensions.renderers[i.type].call({parser:this},i);if(c!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(i.type)){r+=c||"";continue}}let l=t;switch(l.type){case"space":{r+=this.renderer.space(l);break}case"hr":{r+=this.renderer.hr(l);break}case"heading":{r+=this.renderer.heading(l);break}case"code":{r+=this.renderer.code(l);break}case"table":{r+=this.renderer.table(l);break}case"blockquote":{r+=this.renderer.blockquote(l);break}case"list":{r+=this.renderer.list(l);break}case"checkbox":{r+=this.renderer.checkbox(l);break}case"html":{r+=this.renderer.html(l);break}case"def":{r+=this.renderer.def(l);break}case"paragraph":{r+=this.renderer.paragraph(l);break}case"text":{r+=this.renderer.text(l);break}default:{let i='Token with "'+l.type+'" type was not found.';if(this.options.silent)return console.error(i),"";throw new Error(i)}}}return r}parseInline(e,r=this.renderer){let s="";for(let t=0;t<e.length;t++){let l=e[t];if(this.options.extensions?.renderers?.[l.type]){let c=this.options.extensions.renderers[l.type].call({parser:this},l);if(c!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(l.type)){s+=c||"";continue}}let i=l;switch(i.type){case"escape":{s+=r.text(i);break}case"html":{s+=r.html(i);break}case"link":{s+=r.link(i);break}case"image":{s+=r.image(i);break}case"checkbox":{s+=r.checkbox(i);break}case"strong":{s+=r.strong(i);break}case"em":{s+=r.em(i);break}case"codespan":{s+=r.codespan(i);break}case"br":{s+=r.br(i);break}case"del":{s+=r.del(i);break}case"text":{s+=r.text(i);break}default:{let c='Token with "'+i.type+'" type was not found.';if(this.options.silent)return console.error(c),"";throw new Error(c)}}}return s}},I=class{static{h(this,"P")}options;block;constructor(n){this.options=n||z}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(n){return n}postprocess(n){return n}processAllTokens(n){return n}emStrongMask(n){return n}provideLexer(){return this.block?w.lex:w.lexInline}provideParser(){return this.block?y.parse:y.parseInline}},vt=class{static{h(this,"B")}defaults=G();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=y;Renderer=M;TextRenderer=te;Lexer=w;Tokenizer=D;Hooks=I;constructor(...n){this.use(...n)}walkTokens(n,e){let r=[];for(let s of n)switch(r=r.concat(e.call(this,s)),s.type){case"table":{let t=s;for(let l of t.header)r=r.concat(this.walkTokens(l.tokens,e));for(let l of t.rows)for(let i of l)r=r.concat(this.walkTokens(i.tokens,e));break}case"list":{let t=s;r=r.concat(this.walkTokens(t.items,e));break}default:{let t=s;this.defaults.extensions?.childTokens?.[t.type]?this.defaults.extensions.childTokens[t.type].forEach(l=>{let i=t[l].flat(1/0);r=r.concat(this.walkTokens(i,e))}):t.tokens&&(r=r.concat(this.walkTokens(t.tokens,e)))}}return r}use(...n){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return n.forEach(r=>{let s={...r};if(s.async=this.defaults.async||s.async||!1,r.extensions&&(r.extensions.forEach(t=>{if(!t.name)throw new Error("extension name required");if("renderer"in t){let l=e.renderers[t.name];l?e.renderers[t.name]=function(...i){let c=t.renderer.apply(this,i);return c===!1&&(c=l.apply(this,i)),c}:e.renderers[t.name]=t.renderer}if("tokenizer"in t){if(!t.level||t.level!=="block"&&t.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let l=e[t.level];l?l.unshift(t.tokenizer):e[t.level]=[t.tokenizer],t.start&&(t.level==="block"?e.startBlock?e.startBlock.push(t.start):e.startBlock=[t.start]:t.level==="inline"&&(e.startInline?e.startInline.push(t.start):e.startInline=[t.start]))}"childTokens"in t&&t.childTokens&&(e.childTokens[t.name]=t.childTokens)}),s.extensions=e),r.renderer){let t=this.defaults.renderer||new M(this.defaults);for(let l in r.renderer){if(!(l in t))throw new Error(`renderer '${l}' does not exist`);if(["options","parser"].includes(l))continue;let i=l,c=r.renderer[i],a=t[i];t[i]=(...o)=>{let p=c.apply(t,o);return p===!1&&(p=a.apply(t,o)),p||""}}s.renderer=t}if(r.tokenizer){let t=this.defaults.tokenizer||new D(this.defaults);for(let l in r.tokenizer){if(!(l in t))throw new Error(`tokenizer '${l}' does not exist`);if(["options","rules","lexer"].includes(l))continue;let i=l,c=r.tokenizer[i],a=t[i];t[i]=(...o)=>{let p=c.apply(t,o);return p===!1&&(p=a.apply(t,o)),p}}s.tokenizer=t}if(r.hooks){let t=this.defaults.hooks||new I;for(let l in r.hooks){if(!(l in t))throw new Error(`hook '${l}' does not exist`);if(["options","block"].includes(l))continue;let i=l,c=r.hooks[i],a=t[i];I.passThroughHooks.has(l)?t[i]=o=>{if(this.defaults.async&&I.passThroughHooksRespectAsync.has(l))return(async()=>{let u=await c.call(t,o);return a.call(t,u)})();let p=c.call(t,o);return a.call(t,p)}:t[i]=(...o)=>{if(this.defaults.async)return(async()=>{let u=await c.apply(t,o);return u===!1&&(u=await a.apply(t,o)),u})();let p=c.apply(t,o);return p===!1&&(p=a.apply(t,o)),p}}s.hooks=t}if(r.walkTokens){let t=this.defaults.walkTokens,l=r.walkTokens;s.walkTokens=function(i){let c=[];return c.push(l.call(this,i)),t&&(c=c.concat(t.call(this,i))),c}}this.defaults={...this.defaults,...s}}),this}setOptions(n){return this.defaults={...this.defaults,...n},this}lexer(n,e){return w.lex(n,e??this.defaults)}parser(n,e){return y.parse(n,e??this.defaults)}parseMarkdown(n){return(e,r)=>{let s={...r},t={...this.defaults,...s},l=this.onError(!!t.silent,!!t.async);if(this.defaults.async===!0&&s.async===!1)return l(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return l(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return l(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(t.hooks&&(t.hooks.options=t,t.hooks.block=n),t.async)return(async()=>{let i=t.hooks?await t.hooks.preprocess(e):e,c=await(t.hooks?await t.hooks.provideLexer():n?w.lex:w.lexInline)(i,t),a=t.hooks?await t.hooks.processAllTokens(c):c;t.walkTokens&&await Promise.all(this.walkTokens(a,t.walkTokens));let o=await(t.hooks?await t.hooks.provideParser():n?y.parse:y.parseInline)(a,t);return t.hooks?await t.hooks.postprocess(o):o})().catch(l);try{t.hooks&&(e=t.hooks.preprocess(e));let i=(t.hooks?t.hooks.provideLexer():n?w.lex:w.lexInline)(e,t);t.hooks&&(i=t.hooks.processAllTokens(i)),t.walkTokens&&this.walkTokens(i,t.walkTokens);let c=(t.hooks?t.hooks.provideParser():n?y.parse:y.parseInline)(i,t);return t.hooks&&(c=t.hooks.postprocess(c)),c}catch(i){return l(i)}}}onError(n,e){return r=>{if(r.message+=` 59 + Please report this to https://github.com/markedjs/marked.`,n){let s="<p>An error occurred:</p><pre>"+$(r.message+"",!0)+"</pre>";return e?Promise.resolve(s):s}if(e)return Promise.reject(r);throw r}}},T=new vt;function k(n,e){return T.parse(n,e)}h(k,"g");k.options=k.setOptions=function(n){return T.setOptions(n),k.defaults=T.defaults,Se(k.defaults),k};k.getDefaults=G;k.defaults=z;k.use=function(...n){return T.use(...n),k.defaults=T.defaults,Se(k.defaults),k};k.walkTokens=function(n,e){return T.walkTokens(n,e)};k.parseInline=T.parseInline;k.Parser=y;k.parser=y.parse;k.Renderer=M;k.TextRenderer=te;k.Lexer=w;k.lexer=w.lex;k.Tokenizer=D;k.Hooks=I;k.parse=k;var It=k.options,Pt=k.setOptions,Ct=k.use,Et=k.walkTokens,qt=k.parseInline;var Bt=y.parse,Dt=w.lex;var C=class extends ge{static{h(this,"e")}constructor(e){if(super(e),this.it=v,e.type!==he.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(e){if(e===v||e==null)return this._t=void 0,this.it=e;if(e===pe)return e;if(typeof e!="string")throw Error(this.constructor.directiveName+"() called with a non-string value");if(e===this.it)return this._t;this.it=e;let r=[e];return r.raw=r,this._t={_$litType$:this.constructor.resultType,strings:r,values:[]}}};C.directiveName="unsafeHTML",C.resultType=1;var Be=ue(C);var De="diffuse/dashboard/filter",re=localStorage.getItem(De),E=ae(re==="prelude"||re==="interface"?re:"all");F(()=>{localStorage.setItem(De,E.get())});var _t=h(()=>m` 60 + <p> 61 + <span> 62 + You haven't saved anything yet. Add a facet by browsing the <a 63 + href="featured/" 64 + >featured ones</a> or any of the other categories. You can click the toggle 65 + to quickly add or remove from your collection. Alternatively, add one using 66 + an URI: 67 + </span> 68 + </p> 69 + `,"emptyFacetsList"),ne;async function ir(){ne&&ne();let n=document.querySelector("#list");if(!n)throw new Error("List element not found");n.getAttribute("data-rendered")==="f"&&(n.innerHTML="",n.removeAttribute("data-rendered"));let e=await ke();ne=F(()=>{Lt(e,n)})}h(ir,"renderList");function Lt(n,e){let r=n.facets.collection();if(r.state!=="loaded"){let o=m` 70 + <div class="with-icon" style="font-size: var(--fs-sm)"> 71 + <i class="ph-bold ph-spinner animate-spin"></i> 72 + Loading your software 73 + </div> 74 + `;N(o,e);return}let s=E.get(),t=r.state==="loaded"?[...r.data].filter(o=>s==="all"||(s==="prelude"?o.kind==="prelude":o.kind!=="prelude")).sort((o,p)=>o.name.toLocaleLowerCase().localeCompare(p.name.toLocaleLowerCase())):[],l=n.selected(),i=l?.label??l?.getAttribute?.("label")??"Local storage",c=m` 75 + <div class="grid-filter"> 76 + <span class="grid-filter--label">Filter by</span> 77 + <button 78 + class="button--border button--tiny ${s==="all"?"":"button--transparent"}" 79 + @click="${()=>E.set("all")}" 80 + > 81 + All 82 + </button> 83 + <button 84 + class="button--border button--tiny button--bg-twist-4 button--tr-twist-4 ${s==="prelude"?"":"button--transparent"}" 85 + @click="${()=>E.set("prelude")}" 86 + > 87 + Features 88 + </button> 89 + <button 90 + class="button--border button--tiny button--bg-twist-2 button--tr-twist-2 ${s==="interface"?"":"button--transparent"}" 91 + @click="${()=>E.set("interface")}" 92 + > 93 + Interfaces 94 + </button> 95 + 96 + <span class="divider"></span> 97 + 98 + <button 99 + class="button--border button--tiny button--bg-accent button--tr-accent button--transparent with-icon" 100 + @click="${()=>be()}" 101 + > 102 + <i class="ph-fill ph-plus-circle"></i> 103 + <span class="button__supplementary-text">Add from URI</span> 104 + </button> 105 + 106 + <div style="flex: 1"></div> 107 + 108 + <span class="grid-filter--label grid-filter--label-output" 109 + >Userdata from</span> 110 + <span class="grid-filter--output">${i}</span> 111 + </div> 112 + `,a=t.length||s!=="all"?m` 113 + ${c} 114 + <ul class="grid" style="margin: 0"> 115 + ${t.map((o,p)=>{let u=oe(o),d=ce(o),b=o.kind==="prelude"?m` 116 + <span style="display: inline-block; padding: var(--space-3xs) 0"> 117 + ${o.name} 118 + </span> 119 + `:m` 120 + <a 121 + href="l/?id=${o.id}" 122 + style="display: inline-block; padding: var(--space-3xs) 0" 123 + > 124 + ${o.name} 125 + </a> 126 + `;return de(o.id,m` 127 + <li class="grid-item"> 128 + <div 129 + class="grid-item__contents" 130 + style="--grid-item-color: ${u}" 131 + > 132 + <div class="grid-item__title" style="color: ${u}"> 133 + ${b} 134 + </div> 135 + <div class="list-description"> 136 + <div> 137 + ${o.description?.trim().length?Be(k.parse(o.description,{async:!1})):v} 138 + </div> 139 + <div> 140 + ${o.uri&&!o.html?m` 141 + <span class="with-icon"> 142 + <i class="ph-fill ph-binoculars"></i> 143 + <span>Tracking the original <a href="${o.uri}">URI</a></span> 144 + </span> 145 + `:m` 146 + <span class="with-icon"> 147 + <i class="ph-fill ph-code-simple"></i> 148 + <span>Custom code</span> 149 + </span> 150 + `} 151 + </div> 152 + </div> 153 + </div> 154 + 155 + <div class="grid-item__menu"> 156 + <a 157 + class="button button--transparent" 158 + title="Edit" 159 + href="build/?id=${encodeURIComponent(o.id)}" 160 + > 161 + <i class="ph-fill ph-code-block"></i> 162 + </a> 163 + <hr /> 164 + <button 165 + class="button--transparent" 166 + title="Delete" 167 + @click="${fe({id:o.id})}" 168 + > 169 + <i class="ph-fill ph-skull"></i> 170 + </button> 171 + </div> 172 + </li> 173 + `)})} 174 + </ul> 175 + `:m` 176 + ${c} ${_t()} 177 + `;N(a,e),setTimeout(()=>{let o=e.querySelector(".grid-filter--label-output"),p=e.querySelector(".grid-filter--output");p&&o&&(o.style.opacity="0.4",p.style.opacity="1")},250)}h(Lt,"_renderList");export{ir as a}; 178 + /*! Bundled license information: 179 + 180 + lit-html/node/directives/unsafe-html.js: 181 + (** 182 + * @license 183 + * Copyright 2017 Google LLC 184 + * SPDX-License-Identifier: BSD-3-Clause 185 + *) 186 + */ 187 + 188 + //# sourceMappingURL=./chunk-66S4I3DC.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-66S4I3DC.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-66S4I3DC.js.map
··· 1 + {"version":3,"sources":["/node_modules/.deno/marked@17.0.4/node_modules/marked/src/defaults.ts","/node_modules/.deno/marked@17.0.4/node_modules/marked/src/rules.ts","/node_modules/.deno/marked@17.0.4/node_modules/marked/src/helpers.ts","/node_modules/.deno/marked@17.0.4/node_modules/marked/src/Tokenizer.ts","/node_modules/.deno/marked@17.0.4/node_modules/marked/src/Lexer.ts","/node_modules/.deno/marked@17.0.4/node_modules/marked/src/Renderer.ts","/node_modules/.deno/marked@17.0.4/node_modules/marked/src/TextRenderer.ts","/node_modules/.deno/marked@17.0.4/node_modules/marked/src/Parser.ts","/node_modules/.deno/marked@17.0.4/node_modules/marked/src/Hooks.ts","/node_modules/.deno/marked@17.0.4/node_modules/marked/src/Instance.ts","/node_modules/.deno/marked@17.0.4/node_modules/marked/src/marked.ts","/node_modules/.deno/lit-html@3.3.2/node_modules/lit-html/src/directives/unsafe-html.ts","/common/pages/dashboard.js"],"sourcesContent":["import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults<ParserOutput = string, RendererOutput = string>(): MarkedOptions<ParserOutput, RendererOutput> {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null,\n };\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport let _defaults: MarkedOptions<any, any> = _getDefaults();\n\nexport function changeDefaults<ParserOutput = string, RendererOutput = string>(newDefaults: MarkedOptions<ParserOutput, RendererOutput>) {\n _defaults = newDefaults;\n}\n","const noopTest = { exec: () => null } as unknown as RegExp;\n\nfunction edit(regex: string | RegExp, opt = '') {\n let source = typeof regex === 'string' ? regex : regex.source;\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(other.caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n },\n };\n return obj;\n}\n\nconst supportsLookbehind = (() => {\ntry {\n // eslint-disable-next-line prefer-regex-literals\n return !!new RegExp('(?<=1)(?<!1)');\n} catch {\n // See browser support here:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookbehind_assertion\n return false;\n}\n})();\n\nexport const other = {\n codeRemoveIndent: /^(?: {1,4}| {0,3}\\t)/gm,\n outputLinkReplace: /\\\\([\\[\\]])/g,\n indentCodeCompensation: /^(\\s+)(?:```)/,\n beginningSpace: /^\\s+/,\n endingHash: /#$/,\n startingSpaceChar: /^ /,\n endingSpaceChar: / $/,\n nonSpaceChar: /[^ ]/,\n newLineCharGlobal: /\\n/g,\n tabCharGlobal: /\\t/g,\n multipleSpaceGlobal: /\\s+/g,\n blankLine: /^[ \\t]*$/,\n doubleBlankLine: /\\n[ \\t]*\\n[ \\t]*$/,\n blockquoteStart: /^ {0,3}>/,\n blockquoteSetextReplace: /\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,\n blockquoteSetextReplace2: /^ {0,3}>[ \\t]?/gm,\n listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g,\n listIsTask: /^\\[[ xX]\\] +\\S/,\n listReplaceTask: /^\\[[ xX]\\] +/,\n listTaskCheckbox: /\\[[ xX]\\]/,\n anyLine: /\\n.*\\n/,\n hrefBrackets: /^<(.*)>$/,\n tableDelimiter: /[:|]/,\n tableAlignChars: /^\\||\\| *$/g,\n tableRowBlankLine: /\\n[ \\t]*$/,\n tableAlignRight: /^ *-+: *$/,\n tableAlignCenter: /^ *:-+: *$/,\n tableAlignLeft: /^ *:-+ *$/,\n startATag: /^<a /i,\n endATag: /^<\\/a>/i,\n startPreScriptTag: /^<(pre|code|kbd|script)(\\s|>)/i,\n endPreScriptTag: /^<\\/(pre|code|kbd|script)(\\s|>)/i,\n startAngleBracket: /^</,\n endAngleBracket: />$/,\n pedanticHrefTitle: /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,\n unicodeAlphaNumeric: /[\\p{L}\\p{N}]/u,\n escapeTest: /[&<>\"']/,\n escapeReplace: /[&<>\"']/g,\n escapeTestNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,\n escapeReplaceNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,\n caret: /(^|[^\\[])\\^/g,\n percentDecode: /%25/g,\n findPipe: /\\|/g,\n splitPipe: / \\|/,\n slashPipe: /\\\\\\|/g,\n carriageReturn: /\\r\\n|\\r/g,\n spaceLine: /^ +$/gm,\n notSpaceStart: /^\\S*/,\n endingNewline: /\\n$/,\n listItemRegex: (bull: string) => new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`),\n nextBulletRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`),\n hrRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),\n fencesBeginRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`),\n headingBeginRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`),\n htmlBeginRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}<(?:[a-z].*>|!--)`, 'i'),\n blockquoteBeginRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}>`),\n};\n\n/**\n * Block-Level Grammar\n */\n\nconst newline = /^(?:[ \\t]*(?:\\n|$))+/;\nconst blockCode = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = / {0,3}(?:[*+-]|\\d{1,9}[.)])/;\nconst lheadingCore = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/;\nconst lheading = edit(lheadingCore)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .replace(/\\|table/g, '') // table not in commonmark\n .getRegex();\nconst lheadingGfm = edit(lheadingCore)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .replace(/table/g, / {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/) // table can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\n\nconst list = edit(/^(bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\n\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n + '|tr|track|ul';\nconst _comment = /<!--(?:-?>|[\\s\\S]*?(?:-->|$))/;\nconst html = edit(\n '^ {0,3}(?:' // optional indentation\n+ '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n+ '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n+ '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n+ '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n+ '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n+ '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (6)\n+ '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) open tag\n+ '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) closing tag\n+ ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)])[ \\\\t]') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText,\n};\n\ntype BlockKeys = keyof typeof blockNormal;\n\n/**\n * GFM Block Grammar\n */\n\nconst gfmTable = edit(\n '^ *([^\\\\n ].*)\\\\n' // Header\n+ ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n+ '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', '(?: {4}| {0,3}\\t)[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)])[ \\\\t]') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nconst blockGfm: Record<BlockKeys, RegExp> = {\n ...blockNormal,\n lheading: lheadingGfm,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)])[ \\\\t]') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex(),\n};\n\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nconst blockPedantic: Record<BlockKeys, RegExp> = {\n ...blockNormal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex(),\n};\n\n/**\n * Inline-Level Grammar\n */\n\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/;\n\n// list of unicode punctuation marks, plus any missing characters from CommonMark spec\nconst _punctuation = /[\\p{P}\\p{S}]/u;\nconst _punctuationOrSpace = /[\\s\\p{P}\\p{S}]/u;\nconst _notPunctuationOrSpace = /[^\\s\\p{P}\\p{S}]/u;\nconst punctuation = edit(/^((?![*_])punctSpace)/, 'u')\n .replace(/punctSpace/g, _punctuationOrSpace).getRegex();\n\n// GFM allows ~ inside strong and em for strikethrough\nconst _punctuationGfmStrongEm = /(?!~)[\\p{P}\\p{S}]/u;\nconst _punctuationOrSpaceGfmStrongEm = /(?!~)[\\s\\p{P}\\p{S}]/u;\nconst _notPunctuationOrSpaceGfmStrongEm = /(?:[^\\s\\p{P}\\p{S}]|~)/u;\n\n// GFM allows * and _ inside strikethrough\nconst _punctuationGfmDel = /(?![*_])[\\p{P}\\p{S}]/u;\nconst _punctuationOrSpaceGfmDel = /(?![*_])[\\s\\p{P}\\p{S}]/u;\nconst _notPunctuationOrSpaceGfmDel = /(?:[^\\s\\p{P}\\p{S}]|[*_])/u;\n\n// sequences em should skip over [title](link), `code`, <html>\nconst blockSkip = edit(/link|precode-code|html/, 'g')\n .replace('link', /\\[(?:[^\\[\\]`]|(?<a>`+)[^`]+\\k<a>(?!`))*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)/)\n .replace('precode-', supportsLookbehind ? '(?<!`)()' : '(^^|[^`])')\n .replace('code', /(?<b>`+)[^`]+\\k<b>(?!`)/)\n .replace('html', /<(?! )[^<>]*?>/)\n .getRegex();\n\nconst emStrongLDelimCore = /^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/;\n\nconst emStrongLDelim = edit(emStrongLDelimCore, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\n\nconst emStrongLDelimGfm = edit(emStrongLDelimCore, 'u')\n .replace(/punct/g, _punctuationGfmStrongEm)\n .getRegex();\n\nconst emStrongRDelimAstCore =\n '^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n+ '|[^*]+(?=[^*])' // Consume to delim\n+ '|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n+ '|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)' // (2) a***#, a*** can only be a Right Delimiter\n+ '|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)' // (3) #***a, ***a can only be Left Delimiter\n+ '|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)' // (4) ***# can only be Left Delimiter\n+ '|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)' // (5) #***# can be either Left or Right Delimiter\n+ '|notPunctSpace(\\\\*+)(?=notPunctSpace)'; // (6) a***a can be either Left or Right Delimiter\n\nconst emStrongRDelimAst = edit(emStrongRDelimAstCore, 'gu')\n .replace(/notPunctSpace/g, _notPunctuationOrSpace)\n .replace(/punctSpace/g, _punctuationOrSpace)\n .replace(/punct/g, _punctuation)\n .getRegex();\n\nconst emStrongRDelimAstGfm = edit(emStrongRDelimAstCore, 'gu')\n .replace(/notPunctSpace/g, _notPunctuationOrSpaceGfmStrongEm)\n .replace(/punctSpace/g, _punctuationOrSpaceGfmStrongEm)\n .replace(/punct/g, _punctuationGfmStrongEm)\n .getRegex();\n\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit(\n '^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n+ '|[^_]+(?=[^_])' // Consume to delim\n+ '|(?!_)punct(_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n+ '|notPunctSpace(_+)(?!_)(?=punctSpace|$)' // (2) a___#, a___ can only be a Right Delimiter\n+ '|(?!_)punctSpace(_+)(?=notPunctSpace)' // (3) #___a, ___a can only be Left Delimiter\n+ '|[\\\\s](_+)(?!_)(?=punct)' // (4) ___# can only be Left Delimiter\n+ '|(?!_)punct(_+)(?!_)(?=punct)', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/notPunctSpace/g, _notPunctuationOrSpace)\n .replace(/punctSpace/g, _punctuationOrSpace)\n .replace(/punct/g, _punctuation)\n .getRegex();\n\n// Tilde left delimiter for strikethrough (similar to emStrongLDelim for asterisk)\nconst delLDelim = edit(/^~~?(?:((?!~)punct)|[^\\s~])/, 'u')\n .replace(/punct/g, _punctuationGfmDel)\n .getRegex();\n\n// Tilde delimiter patterns for strikethrough (similar to asterisk)\nconst delRDelimCore =\n '^[^~]+(?=[^~])' // Consume to delim\n+ '|(?!~)punct(~~?)(?=[\\\\s]|$)' // (1) #~~ can only be a Right Delimiter\n+ '|notPunctSpace(~~?)(?!~)(?=punctSpace|$)' // (2) a~~#, a~~ can only be a Right Delimiter\n+ '|(?!~)punctSpace(~~?)(?=notPunctSpace)' // (3) #~~a, ~~a can only be Left Delimiter\n+ '|[\\\\s](~~?)(?!~)(?=punct)' // (4) ~~# can only be Left Delimiter\n+ '|(?!~)punct(~~?)(?!~)(?=punct)' // (5) #~~# can be either Left or Right Delimiter\n+ '|notPunctSpace(~~?)(?=notPunctSpace)'; // (6) a~~a can be either Left or Right Delimiter\n\nconst delRDelim = edit(delRDelimCore, 'gu')\n .replace(/notPunctSpace/g, _notPunctuationOrSpaceGfmDel)\n .replace(/punctSpace/g, _punctuationOrSpaceGfmDel)\n .replace(/punct/g, _punctuationGfmDel)\n .getRegex();\n\nconst anyPunctuation = edit(/\\\\(punct)/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\n\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\n\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit(\n '^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nconst _inlineLabel = /(?:\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+[^`]*?`+(?!`)|[^\\[\\]\\\\`])*?/;\n\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]+(?:\\n[ \\t]*)?|\\n[ \\t]*)(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\n\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\n\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\n\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n\nconst _caseInsensitiveProtocol = /[hH][tT][tT][pP][sS]?|[fF][tT][pP]/;\n\n/**\n * Normal Inline Grammar\n */\n\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n delLDelim: noopTest,\n delRDelim: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest,\n};\n\ntype InlineKeys = keyof typeof inlineNormal;\n\n/**\n * Pedantic Inline Grammar\n */\n\nconst inlinePedantic: Record<InlineKeys, RegExp> = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex(),\n};\n\n/**\n * GFM Inline Grammar\n */\n\nconst inlineGfm: Record<InlineKeys, RegExp> = {\n ...inlineNormal,\n emStrongRDelimAst: emStrongRDelimAstGfm,\n emStrongLDelim: emStrongLDelimGfm,\n delLDelim,\n delRDelim,\n url: edit(/^((?:protocol):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/)\n .replace('protocol', _caseInsensitiveProtocol)\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])((?:\\\\[\\s\\S]|[^\\\\])*?(?:\\\\[\\s\\S]|[^\\s~\\\\]))\\1(?=[^~]|$)/,\n text: edit(/^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|protocol:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/)\n .replace('protocol', _caseInsensitiveProtocol)\n .getRegex(),\n};\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\nconst inlineBreaks: Record<InlineKeys, RegExp> = {\n ...inlineGfm,\n br: edit(br).replace('{2,}', '*').getRegex(),\n text: edit(inlineGfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex(),\n};\n\n/**\n * exports\n */\n\nexport const block = {\n normal: blockNormal,\n gfm: blockGfm,\n pedantic: blockPedantic,\n};\n\nexport const inline = {\n normal: inlineNormal,\n gfm: inlineGfm,\n breaks: inlineBreaks,\n pedantic: inlinePedantic,\n};\n\nexport interface Rules {\n other: typeof other\n block: Record<BlockKeys, RegExp>\n inline: Record<InlineKeys, RegExp>\n}\n","import { other } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeReplacements: { [index: string]: string } = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escapeHtmlEntities(html: string, encode?: boolean) {\n if (encode) {\n if (other.escapeTest.test(html)) {\n return html.replace(other.escapeReplace, getEscapeReplacement);\n }\n } else {\n if (other.escapeTestNoEncode.test(html)) {\n return html.replace(other.escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nexport function cleanUrl(href: string) {\n try {\n href = encodeURI(href).replace(other.percentDecode, '%');\n } catch {\n return null;\n }\n return href;\n}\n\nexport function splitCells(tableRow: string, count?: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(other.findPipe, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(other.splitPipe);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells.at(-1)?.trim()) {\n cells.pop();\n }\n\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(other.slashPipe, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n if (level > 0) {\n return -2;\n }\n\n return -1;\n}\n\nexport function expandTabs(line: string, indent = 0) {\n let col = indent;\n let expanded = '';\n for (const char of line) {\n if (char === '\\t') {\n const added = 4 - (col % 4);\n expanded += ' '.repeat(added);\n col += added;\n } else {\n expanded += char;\n col++;\n }\n }\n\n return expanded;\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n findClosingBracket,\n expandTabs,\n} from './helpers.ts';\nimport type { Rules } from './rules.ts';\nimport type { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens, Token } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick<Tokens.Link, 'href' | 'title'>, raw: string, lexer: _Lexer, rules: Rules): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title || null;\n const text = cap[1].replace(rules.other.outputLinkReplace, '$1');\n\n lexer.state.inLink = true;\n const token: Tokens.Link | Tokens.Image = {\n type: cap[0].charAt(0) === '!' ? 'image' : 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text),\n };\n lexer.state.inLink = false;\n return token;\n}\n\nfunction indentCodeCompensation(raw: string, text: string, rules: Rules) {\n const matchIndentToCode = raw.match(rules.other.indentCodeCompensation);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(rules.other.beginningSpace);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer<ParserOutput = string, RendererOutput = string> {\n options: MarkedOptions<ParserOutput, RendererOutput>;\n rules!: Rules; // set by the lexer\n lexer!: _Lexer<ParserOutput, RendererOutput>; // set by the lexer\n\n constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0],\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(this.rules.other.codeRemoveIndent, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text,\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '', this.rules);\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text,\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (this.rules.other.endingHash.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || this.rules.other.endingSpaceChar.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: rtrim(cap[0], '\\n'),\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n let lines = rtrim(cap[0], '\\n').split('\\n');\n let raw = '';\n let text = '';\n const tokens: Token[] = [];\n\n while (lines.length > 0) {\n let inBlockquote = false;\n const currentLines = [];\n\n let i;\n for (i = 0; i < lines.length; i++) {\n // get lines up to a continuation\n if (this.rules.other.blockquoteStart.test(lines[i])) {\n currentLines.push(lines[i]);\n inBlockquote = true;\n } else if (!inBlockquote) {\n currentLines.push(lines[i]);\n } else {\n break;\n }\n }\n lines = lines.slice(i);\n\n const currentRaw = currentLines.join('\\n');\n const currentText = currentRaw\n // precede setext continuation with 4 spaces so it isn't a setext\n .replace(this.rules.other.blockquoteSetextReplace, '\\n $1')\n .replace(this.rules.other.blockquoteSetextReplace2, '');\n raw = raw ? `${raw}\\n${currentRaw}` : currentRaw;\n text = text ? `${text}\\n${currentText}` : currentText;\n\n // parse blockquote lines as top level tokens\n // merge paragraphs if this is a continuation\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n this.lexer.blockTokens(currentText, tokens, true);\n this.lexer.state.top = top;\n\n // if there is no continuation then we are done\n if (lines.length === 0) {\n break;\n }\n\n const lastToken = tokens.at(-1);\n\n if (lastToken?.type === 'code') {\n // blockquote continuation cannot be preceded by a code block\n break;\n } else if (lastToken?.type === 'blockquote') {\n // include continuation in nested blockquote\n const oldToken = lastToken as Tokens.Blockquote;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.blockquote(newText)!;\n tokens[tokens.length - 1] = newToken;\n\n raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n break;\n } else if (lastToken?.type === 'list') {\n // include continuation in nested list\n const oldToken = lastToken as Tokens.List;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.list(newText)!;\n tokens[tokens.length - 1] = newToken;\n\n raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n lines = newText.substring(tokens.at(-1)!.raw.length).split('\\n');\n continue;\n }\n }\n\n return {\n type: 'blockquote',\n raw,\n tokens,\n text,\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [],\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = this.rules.other.listItemRegex(bull);\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n let raw = '';\n let itemContents = '';\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n let line = expandTabs(cap[2].split('\\n', 1)[0], cap[1].length);\n let nextLine = src.split('\\n', 1)[0];\n let blankLine = !line.trim();\n\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n } else if (blankLine) {\n indent = cap[1].length + 1;\n } else {\n indent = line.search(this.rules.other.nonSpaceChar); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n if (blankLine && this.rules.other.blankLine.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = this.rules.other.nextBulletRegex(indent);\n const hrRegex = this.rules.other.hrRegex(indent);\n const fencesBeginRegex = this.rules.other.fencesBeginRegex(indent);\n const headingBeginRegex = this.rules.other.headingBeginRegex(indent);\n const htmlBeginRegex = this.rules.other.htmlBeginRegex(indent);\n const blockquoteBeginRegex = this.rules.other.blockquoteBeginRegex(indent);\n\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n let nextLineWithoutTabs;\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(this.rules.other.listReplaceNesting, ' ');\n nextLineWithoutTabs = nextLine;\n } else {\n nextLineWithoutTabs = nextLine.replace(this.rules.other.tabCharGlobal, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of html block\n if (htmlBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of blockquote\n if (blockquoteBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(nextLine)) {\n break;\n }\n\n if (nextLineWithoutTabs.search(this.rules.other.nonSpaceChar) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLineWithoutTabs.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.replace(this.rules.other.tabCharGlobal, ' ').search(this.rules.other.nonSpaceChar) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n blankLine = !nextLine.trim();\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLineWithoutTabs.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (this.rules.other.doubleBlankLine.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!this.options.gfm && this.rules.other.listIsTask.test(itemContents),\n loose: false,\n text: itemContents,\n tokens: [],\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n const lastItem = list.items.at(-1);\n if (lastItem) {\n lastItem.raw = lastItem.raw.trimEnd();\n lastItem.text = lastItem.text.trimEnd();\n } else {\n // not a list since there were no items\n return;\n }\n list.raw = list.raw.trimEnd();\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (const item of list.items) {\n this.lexer.state.top = false;\n item.tokens = this.lexer.blockTokens(item.text, []);\n if (item.task) {\n // Remove checkbox markdown from item tokens\n item.text = item.text.replace(this.rules.other.listReplaceTask, '');\n if (item.tokens[0]?.type === 'text' || item.tokens[0]?.type === 'paragraph') {\n item.tokens[0].raw = item.tokens[0].raw.replace(this.rules.other.listReplaceTask, '');\n item.tokens[0].text = item.tokens[0].text.replace(this.rules.other.listReplaceTask, '');\n for (let i = this.lexer.inlineQueue.length - 1; i >= 0; i--) {\n if (this.rules.other.listIsTask.test(this.lexer.inlineQueue[i].src)) {\n this.lexer.inlineQueue[i].src = this.lexer.inlineQueue[i].src.replace(this.rules.other.listReplaceTask, '');\n break;\n }\n }\n }\n\n const taskRaw = this.rules.other.listTaskCheckbox.exec(item.raw);\n if (taskRaw) {\n const checkboxToken: Tokens.Checkbox = {\n type: 'checkbox',\n raw: taskRaw[0] + ' ',\n checked: taskRaw[0] !== '[ ]',\n };\n item.checked = checkboxToken.checked;\n if (list.loose) {\n if (item.tokens[0] && ['paragraph', 'text'].includes(item.tokens[0].type) && 'tokens' in item.tokens[0] && item.tokens[0].tokens) {\n item.tokens[0].raw = checkboxToken.raw + item.tokens[0].raw;\n item.tokens[0].text = checkboxToken.raw + item.tokens[0].text;\n item.tokens[0].tokens.unshift(checkboxToken);\n } else {\n item.tokens.unshift({\n type: 'paragraph',\n raw: checkboxToken.raw,\n text: checkboxToken.raw,\n tokens: [checkboxToken],\n });\n }\n } else {\n item.tokens.unshift(checkboxToken);\n }\n }\n }\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = item.tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => this.rules.other.anyLine.test(t.raw));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (const item of list.items) {\n item.loose = true;\n for (const token of item.tokens) {\n if (token.type === 'text') {\n token.type = 'paragraph';\n }\n }\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0],\n };\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal, ' ');\n const href = cap[2] ? cap[2].replace(this.rules.other.hrefBrackets, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title,\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n\n if (!this.rules.other.tableDelimiter.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(this.rules.other.tableAlignChars, '').split('|');\n const rows = cap[3]?.trim() ? cap[3].replace(this.rules.other.tableRowBlankLine, '').split('\\n') : [];\n\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: [],\n };\n\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n\n for (const align of aligns) {\n if (this.rules.other.tableAlignRight.test(align)) {\n item.align.push('right');\n } else if (this.rules.other.tableAlignCenter.test(align)) {\n item.align.push('center');\n } else if (this.rules.other.tableAlignLeft.test(align)) {\n item.align.push('left');\n } else {\n item.align.push(null);\n }\n }\n\n for (let i = 0; i < headers.length; i++) {\n item.header.push({\n text: headers[i],\n tokens: this.lexer.inline(headers[i]),\n header: true,\n align: item.align[i],\n });\n }\n\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell),\n header: false,\n align: item.align[i],\n };\n }));\n }\n\n return item;\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1]),\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0]),\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: cap[1],\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && this.rules.other.startATag.test(cap[0])) {\n this.lexer.state.inLink = true;\n } else if (this.lexer.state.inLink && this.rules.other.endATag.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0],\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && this.rules.other.startAngleBracket.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(this.rules.other.endAngleBracket.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex === -2) {\n // more open parens than closed\n return;\n }\n\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = this.rules.other.pedanticHrefTitle.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (this.rules.other.startAngleBracket.test(href)) {\n if (this.options.pedantic && !(this.rules.other.endAngleBracket.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title,\n }, cap[0], this.lexer, this.rules);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(this.rules.other.multipleSpaceGlobal, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text,\n };\n }\n return outputLink(cap, link, cap[0], this.lexer, this.rules);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(this.rules.other.unicodeAlphaNumeric)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = [...rDelim].length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(this.rules.other.newLineCharGlobal, ' ');\n const hasNonSpaceChars = this.rules.other.nonSpaceChar.test(text);\n const hasSpaceCharsOnBothEnds = this.rules.other.startingSpaceChar.test(text) && this.rules.other.endingSpaceChar.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n return {\n type: 'codespan',\n raw: cap[0],\n text,\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0],\n };\n }\n }\n\n del(src: string, maskedSrc: string, prevChar = ''): Tokens.Del | undefined {\n let match = this.rules.inline.delLDelim.exec(src);\n if (!match) return;\n\n const nextChar = match[1] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength;\n\n const endReg = this.rules.inline.delRDelim;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue;\n\n rLength = [...rDelim].length;\n\n if (rLength !== lLength) continue;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters\n rLength = Math.min(rLength, rLength + delimTotal);\n // char length can be >1 for unicode characters\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n\n // Create del token - only single ~ or double ~~ supported\n const text = raw.slice(lLength, -lLength);\n return {\n type: 'del',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n }\n }\n\n autolink(src: string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = cap[1];\n href = 'mailto:' + text;\n } else {\n text = cap[1];\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n\n url(src: string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = cap[0];\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = cap[0];\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n\n inlineText(src: string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n const escaped = this.lexer.state.inRawBlock;\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n escaped,\n };\n }\n }\n}\n","import { _Tokenizer } from './Tokenizer.ts';\nimport { _defaults } from './defaults.ts';\nimport { other, block, inline } from './rules.ts';\nimport type { Token, TokensList, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Block Lexer\n */\nexport class _Lexer<ParserOutput = string, RendererOutput = string> {\n tokens: TokensList;\n options: MarkedOptions<ParserOutput, RendererOutput>;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n public inlineQueue: { src: string, tokens: Token[] }[];\n\n private tokenizer: _Tokenizer<ParserOutput, RendererOutput>;\n\n constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n // TokenList cannot be created in one go\n this.tokens = [] as unknown as TokensList;\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer<ParserOutput, RendererOutput>();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true,\n };\n\n const rules = {\n other,\n block: block.normal,\n inline: inline.normal,\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline,\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex<ParserOutput = string, RendererOutput = string>(src: string, options?: MarkedOptions<ParserOutput, RendererOutput>) {\n const lexer = new _Lexer<ParserOutput, RendererOutput>(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline<ParserOutput = string, RendererOutput = string>(src: string, options?: MarkedOptions<ParserOutput, RendererOutput>) {\n const lexer = new _Lexer<ParserOutput, RendererOutput>(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src.replace(other.carriageReturn, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n for (let i = 0; i < this.inlineQueue.length; i++) {\n const next = this.inlineQueue[i];\n this.inlineTokens(next.src, next.tokens);\n }\n this.inlineQueue = [];\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[], lastParagraphClipped?: boolean): Token[];\n blockTokens(src: string, tokens?: TokensList, lastParagraphClipped?: boolean): TokensList;\n blockTokens(src: string, tokens: Token[] = [], lastParagraphClipped = false) {\n if (this.options.pedantic) {\n src = src.replace(other.tabCharGlobal, ' ').replace(other.spaceLine, '');\n }\n\n while (src) {\n let token: Tokens.Generic | undefined;\n\n if (this.options.extensions?.block?.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (token.raw.length === 1 && lastToken !== undefined) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n lastToken.raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n // An indented code block cannot interrupt a paragraph.\n if (lastToken?.type === 'paragraph' || lastToken?.type === 'text') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === 'paragraph' || lastToken?.type === 'text') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title,\n };\n tokens.push(token);\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n let cutSrc = src;\n if (this.options.extensions?.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n const lastToken = tokens.at(-1);\n if (lastParagraphClipped && lastToken?.type === 'paragraph') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === 'text') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match: RegExpExecArray | null = null;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index)\n + '[' + 'a'.repeat(match[0].length - 2) + ']'\n + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n // Mask out other blocks\n let offset;\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n offset = match[2] ? match[2].length : 0;\n maskedSrc = maskedSrc.slice(0, match.index + offset) + '[' + 'a'.repeat(match[0].length - offset - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out blocks from extensions\n maskedSrc = this.options.hooks?.emStrongMask?.call({ lexer: this }, maskedSrc) ?? maskedSrc;\n\n let keepPrevChar = false;\n let prevChar = '';\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n let token: Tokens.Generic | undefined;\n\n // extensions\n if (this.options.extensions?.inline?.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (token.type === 'text' && lastToken?.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n let cutSrc = src;\n if (this.options.extensions?.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n const lastToken = tokens.at(-1);\n if (lastToken?.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escapeHtmlEntities,\n} from './helpers.ts';\nimport { other } from './rules.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport type { Tokens } from './Tokens.ts';\nimport type { _Parser } from './Parser.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer<ParserOutput = string, RendererOutput = string> {\n options: MarkedOptions<ParserOutput, RendererOutput>;\n parser!: _Parser<ParserOutput, RendererOutput>; // set by the parser\n constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n this.options = options || _defaults;\n }\n\n space(token: Tokens.Space): RendererOutput {\n return '' as RendererOutput;\n }\n\n code({ text, lang, escaped }: Tokens.Code): RendererOutput {\n const langString = (lang || '').match(other.notSpaceStart)?.[0];\n\n const code = text.replace(other.endingNewline, '') + '\\n';\n\n if (!langString) {\n return '<pre><code>'\n + (escaped ? code : escapeHtmlEntities(code, true))\n + '</code></pre>\\n' as RendererOutput;\n }\n\n return '<pre><code class=\"language-'\n + escapeHtmlEntities(langString)\n + '\">'\n + (escaped ? code : escapeHtmlEntities(code, true))\n + '</code></pre>\\n' as RendererOutput;\n }\n\n blockquote({ tokens }: Tokens.Blockquote): RendererOutput {\n const body = this.parser.parse(tokens);\n return `<blockquote>\\n${body}</blockquote>\\n` as RendererOutput;\n }\n\n html({ text }: Tokens.HTML | Tokens.Tag): RendererOutput {\n return text as RendererOutput;\n }\n\n def(token: Tokens.Def): RendererOutput {\n return '' as RendererOutput;\n }\n\n heading({ tokens, depth }: Tokens.Heading): RendererOutput {\n return `<h${depth}>${this.parser.parseInline(tokens)}</h${depth}>\\n` as RendererOutput;\n }\n\n hr(token: Tokens.Hr): RendererOutput {\n return '<hr>\\n' as RendererOutput;\n }\n\n list(token: Tokens.List): RendererOutput {\n const ordered = token.ordered;\n const start = token.start;\n\n let body = '';\n for (let j = 0; j < token.items.length; j++) {\n const item = token.items[j];\n body += this.listitem(item);\n }\n\n const type = ordered ? 'ol' : 'ul';\n const startAttr = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startAttr + '>\\n' + body + '</' + type + '>\\n' as RendererOutput;\n }\n\n listitem(item: Tokens.ListItem): RendererOutput {\n return `<li>${this.parser.parse(item.tokens)}</li>\\n` as RendererOutput;\n }\n\n checkbox({ checked }: Tokens.Checkbox): RendererOutput {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\"> ' as RendererOutput;\n }\n\n paragraph({ tokens }: Tokens.Paragraph): RendererOutput {\n return `<p>${this.parser.parseInline(tokens)}</p>\\n` as RendererOutput;\n }\n\n table(token: Tokens.Table): RendererOutput {\n let header = '';\n\n // header\n let cell = '';\n for (let j = 0; j < token.header.length; j++) {\n cell += this.tablecell(token.header[j]);\n }\n header += this.tablerow({ text: cell as ParserOutput });\n\n let body = '';\n for (let j = 0; j < token.rows.length; j++) {\n const row = token.rows[j];\n\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.tablecell(row[k]);\n }\n\n body += this.tablerow({ text: cell as ParserOutput });\n }\n if (body) body = `<tbody>${body}</tbody>`;\n\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n' as RendererOutput;\n }\n\n tablerow({ text }: Tokens.TableRow<ParserOutput>): RendererOutput {\n return `<tr>\\n${text}</tr>\\n` as RendererOutput;\n }\n\n tablecell(token: Tokens.TableCell): RendererOutput {\n const content = this.parser.parseInline(token.tokens);\n const type = token.header ? 'th' : 'td';\n const tag = token.align\n ? `<${type} align=\"${token.align}\">`\n : `<${type}>`;\n return tag + content + `</${type}>\\n` as RendererOutput;\n }\n\n /**\n * span level renderer\n */\n strong({ tokens }: Tokens.Strong): RendererOutput {\n return `<strong>${this.parser.parseInline(tokens)}</strong>` as RendererOutput;\n }\n\n em({ tokens }: Tokens.Em): RendererOutput {\n return `<em>${this.parser.parseInline(tokens)}</em>` as RendererOutput;\n }\n\n codespan({ text }: Tokens.Codespan): RendererOutput {\n return `<code>${escapeHtmlEntities(text, true)}</code>` as RendererOutput;\n }\n\n br(token: Tokens.Br): RendererOutput {\n return '<br>' as RendererOutput;\n }\n\n del({ tokens }: Tokens.Del): RendererOutput {\n return `<del>${this.parser.parseInline(tokens)}</del>` as RendererOutput;\n }\n\n link({ href, title, tokens }: Tokens.Link): RendererOutput {\n const text = this.parser.parseInline(tokens) as string;\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text as RendererOutput;\n }\n href = cleanHref;\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + (escapeHtmlEntities(title)) + '\"';\n }\n out += '>' + text + '</a>';\n return out as RendererOutput;\n }\n\n image({ href, title, text, tokens }: Tokens.Image): RendererOutput {\n if (tokens) {\n text = this.parser.parseInline(tokens, this.parser.textRenderer) as string;\n }\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return escapeHtmlEntities(text) as RendererOutput;\n }\n href = cleanHref;\n\n let out = `<img src=\"${href}\" alt=\"${escapeHtmlEntities(text)}\"`;\n if (title) {\n out += ` title=\"${escapeHtmlEntities(title)}\"`;\n }\n out += '>';\n return out as RendererOutput;\n }\n\n text(token: Tokens.Text | Tokens.Escape): RendererOutput {\n return 'tokens' in token && token.tokens\n ? this.parser.parseInline(token.tokens) as unknown as RendererOutput\n : ('escaped' in token && token.escaped ? token.text as RendererOutput : escapeHtmlEntities(token.text) as RendererOutput);\n }\n}\n","import type { Tokens } from './Tokens.ts';\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer<RendererOutput = string> {\n // no need for block level renderers\n strong({ text }: Tokens.Strong): RendererOutput {\n return text as RendererOutput;\n }\n\n em({ text }: Tokens.Em): RendererOutput {\n return text as RendererOutput;\n }\n\n codespan({ text }: Tokens.Codespan): RendererOutput {\n return text as RendererOutput;\n }\n\n del({ text }: Tokens.Del): RendererOutput {\n return text as RendererOutput;\n }\n\n html({ text }: Tokens.HTML | Tokens.Tag): RendererOutput {\n return text as RendererOutput;\n }\n\n text({ text }: Tokens.Text | Tokens.Escape | Tokens.Tag): RendererOutput {\n return text as RendererOutput;\n }\n\n link({ text }: Tokens.Link): RendererOutput {\n return '' + text as RendererOutput;\n }\n\n image({ text }: Tokens.Image): RendererOutput {\n return '' + text as RendererOutput;\n }\n\n br(): RendererOutput {\n return '' as RendererOutput;\n }\n\n checkbox({ raw }: Tokens.Checkbox): RendererOutput {\n return raw as RendererOutput;\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _defaults } from './defaults.ts';\nimport type { MarkedToken, Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser<ParserOutput = string, RendererOutput = string> {\n options: MarkedOptions<ParserOutput, RendererOutput>;\n renderer: _Renderer<ParserOutput, RendererOutput>;\n textRenderer: _TextRenderer<RendererOutput>;\n constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer<ParserOutput, RendererOutput>();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.renderer.parser = this;\n this.textRenderer = new _TextRenderer<RendererOutput>();\n }\n\n /**\n * Static Parse Method\n */\n static parse<ParserOutput = string, RendererOutput = string>(tokens: Token[], options?: MarkedOptions<ParserOutput, RendererOutput>) {\n const parser = new _Parser<ParserOutput, RendererOutput>(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline<ParserOutput = string, RendererOutput = string>(tokens: Token[], options?: MarkedOptions<ParserOutput, RendererOutput>) {\n const parser = new _Parser<ParserOutput, RendererOutput>(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[]): ParserOutput {\n let out = '';\n\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions?.renderers?.[anyToken.type]) {\n const genericToken = anyToken as Tokens.Generic;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'def', 'paragraph', 'text'].includes(genericToken.type)) {\n out += ret || '';\n continue;\n }\n }\n\n const token = anyToken as MarkedToken;\n\n switch (token.type) {\n case 'space': {\n out += this.renderer.space(token);\n break;\n }\n case 'hr': {\n out += this.renderer.hr(token);\n break;\n }\n case 'heading': {\n out += this.renderer.heading(token);\n break;\n }\n case 'code': {\n out += this.renderer.code(token);\n break;\n }\n case 'table': {\n out += this.renderer.table(token);\n break;\n }\n case 'blockquote': {\n out += this.renderer.blockquote(token);\n break;\n }\n case 'list': {\n out += this.renderer.list(token);\n break;\n }\n case 'checkbox': {\n out += this.renderer.checkbox(token);\n break;\n }\n case 'html': {\n out += this.renderer.html(token);\n break;\n }\n case 'def': {\n out += this.renderer.def(token);\n break;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(token);\n break;\n }\n case 'text': {\n out += this.renderer.text(token);\n break;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '' as ParserOutput;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out as ParserOutput;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer: _Renderer<ParserOutput, RendererOutput> | _TextRenderer<RendererOutput> = this.renderer): ParserOutput {\n let out = '';\n\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions?.renderers?.[anyToken.type]) {\n const ret = this.options.extensions.renderers[anyToken.type].call({ parser: this }, anyToken);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(anyToken.type)) {\n out += ret || '';\n continue;\n }\n }\n\n const token = anyToken as MarkedToken;\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token);\n break;\n }\n case 'html': {\n out += renderer.html(token);\n break;\n }\n case 'link': {\n out += renderer.link(token);\n break;\n }\n case 'image': {\n out += renderer.image(token);\n break;\n }\n case 'checkbox': {\n out += renderer.checkbox(token);\n break;\n }\n case 'strong': {\n out += renderer.strong(token);\n break;\n }\n case 'em': {\n out += renderer.em(token);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token);\n break;\n }\n case 'br': {\n out += renderer.br(token);\n break;\n }\n case 'del': {\n out += renderer.del(token);\n break;\n }\n case 'text': {\n out += renderer.text(token);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '' as ParserOutput;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out as ParserOutput;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport class _Hooks<ParserOutput = string, RendererOutput = string> {\n options: MarkedOptions<ParserOutput, RendererOutput>;\n block?: boolean;\n\n constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens',\n 'emStrongMask',\n ]);\n\n static passThroughHooksRespectAsync = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens',\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: ParserOutput) {\n return html;\n }\n\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens: Token[] | TokensList) {\n return tokens;\n }\n\n /**\n * Mask contents that should not be interpreted as em/strong delimiters\n */\n emStrongMask(src: string) {\n return src;\n }\n\n /**\n * Provide function to tokenize markdown\n */\n provideLexer() {\n return this.block ? _Lexer.lex : _Lexer.lexInline;\n }\n\n /**\n * Provide function to parse tokens\n */\n provideParser() {\n return this.block ? _Parser.parse<ParserOutput, RendererOutput> : _Parser.parseInline<ParserOutput, RendererOutput>;\n }\n}\n","import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { escapeHtmlEntities } from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, Tokens, TokensList } from './Tokens.ts';\n\nexport type MaybePromise = void | Promise<void>;\n\ntype UnknownFunction = (...args: unknown[]) => unknown;\ntype GenericRendererFunction = (...args: unknown[]) => string | false;\n\nexport class Marked<ParserOutput = string, RendererOutput = string> {\n defaults = _getDefaults<ParserOutput, RendererOutput>();\n options = this.setOptions;\n\n parse = this.parseMarkdown(true);\n parseInline = this.parseMarkdown(false);\n\n Parser = _Parser<ParserOutput, RendererOutput>;\n Renderer = _Renderer<ParserOutput, RendererOutput>;\n TextRenderer = _TextRenderer<RendererOutput>;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer<ParserOutput, RendererOutput>;\n Hooks = _Hooks<ParserOutput, RendererOutput>;\n\n constructor(...args: MarkedExtension<ParserOutput, RendererOutput>[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) {\n let values: MaybePromise[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token as Tokens.Table;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token as Tokens.List;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token as Tokens.Generic;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n const tokens = genericToken[childTokens].flat(Infinity) as Token[] | TokensList;\n values = values.concat(this.walkTokens(tokens, callback));\n });\n } else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension<ParserOutput, RendererOutput>[]) {\n const extensions: MarkedOptions<ParserOutput, RendererOutput>['extensions'] = this.defaults.extensions || { renderers: {}, childTokens: {} };\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions<ParserOutput, RendererOutput>;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer<ParserOutput, RendererOutput>(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (['options', 'parser'].includes(prop)) {\n // ignore options property\n continue;\n }\n const rendererProp = prop as Exclude<keyof _Renderer<ParserOutput, RendererOutput>, 'options' | 'parser'>;\n const rendererFunc = pack.renderer[rendererProp] as GenericRendererFunction;\n const prevRenderer = renderer[rendererProp] as GenericRendererFunction;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args: unknown[]) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return (ret || '') as RendererOutput;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer<ParserOutput, RendererOutput>(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop as Exclude<keyof _Tokenizer<ParserOutput, RendererOutput>, 'options' | 'rules' | 'lexer'>;\n const tokenizerFunc = pack.tokenizer[tokenizerProp] as UnknownFunction;\n const prevTokenizer = tokenizer[tokenizerProp] as UnknownFunction;\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks<ParserOutput, RendererOutput>();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (['options', 'block'].includes(prop)) {\n // ignore options and block properties\n continue;\n }\n const hooksProp = prop as Exclude<keyof _Hooks<ParserOutput, RendererOutput>, 'options' | 'block'>;\n const hooksFunc = pack.hooks[hooksProp] as UnknownFunction;\n const prevHook = hooks[hooksProp] as UnknownFunction;\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg: unknown) => {\n if (this.defaults.async && _Hooks.passThroughHooksRespectAsync.has(prop)) {\n return (async() => {\n const ret = await hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n })();\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args: unknown[]) => {\n if (this.defaults.async) {\n return (async() => {\n let ret = await hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = await prevHook.apply(hooks, args);\n }\n return ret;\n })();\n }\n\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function(token) {\n let values: MaybePromise[] = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions<ParserOutput, RendererOutput>) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n lexer(src: string, options?: MarkedOptions<ParserOutput, RendererOutput>) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n\n parser(tokens: Token[], options?: MarkedOptions<ParserOutput, RendererOutput>) {\n return _Parser.parse<ParserOutput, RendererOutput>(tokens, options ?? this.defaults);\n }\n\n private parseMarkdown(blockType: boolean) {\n type overloadedParse = {\n (src: string, options: MarkedOptions<ParserOutput, RendererOutput> & { async: true }): Promise<ParserOutput>;\n (src: string, options: MarkedOptions<ParserOutput, RendererOutput> & { async: false }): ParserOutput;\n (src: string, options?: MarkedOptions<ParserOutput, RendererOutput> | null): ParserOutput | Promise<ParserOutput>;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const parse: overloadedParse = (src: string, options?: MarkedOptions<ParserOutput, RendererOutput> | null): any => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n\n const throwError = this.onError(!!opt.silent, !!opt.async);\n\n // throw error if an extension set async to true but parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.'));\n }\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n opt.hooks.block = blockType;\n }\n\n if (opt.async) {\n return (async() => {\n const processedSrc = opt.hooks ? await opt.hooks.preprocess(src) : src;\n const lexer = opt.hooks ? await opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline);\n const tokens = await lexer(processedSrc, opt);\n const processedTokens = opt.hooks ? await opt.hooks.processAllTokens(tokens) : tokens;\n if (opt.walkTokens) {\n await Promise.all(this.walkTokens(processedTokens, opt.walkTokens));\n }\n const parser = opt.hooks ? await opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline);\n const html = await parser(processedTokens, opt);\n return opt.hooks ? await opt.hooks.postprocess(html) : html;\n })().catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n const lexer = opt.hooks ? opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline);\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n const parser = opt.hooks ? opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline);\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch(e) {\n return throwError(e as Error);\n }\n };\n\n return parse;\n }\n\n private onError(silent: boolean, async: boolean) {\n return (e: Error): string | Promise<string> => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '<p>An error occurred:</p><pre>'\n + escapeHtmlEntities(e.message + '', true)\n + '</pre>';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults,\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\nimport type { MaybePromise } from './Instance.ts';\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise<string>;\n\n/**\n * Compiles markdown to HTML.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML. Will be a Promise of string if async is set to true by any extensions.\n */\nexport function marked(src: string, options: MarkedOptions & { async: false }): string;\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise<string>;\nexport function marked(src: string, options?: MarkedOptions | null): string | Promise<string>;\nexport function marked(src: string, opt?: MarkedOptions | null): string | Promise<string> {\n return markedInstance.parse(src, opt);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './Tokens.ts';\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {nothing, TemplateResult, noChange} from '../lit-html.js';\nimport {directive, Directive, PartInfo, PartType} from '../directive.js';\n\nconst HTML_RESULT = 1;\n\nexport class UnsafeHTMLDirective extends Directive {\n static directiveName = 'unsafeHTML';\n static resultType = HTML_RESULT;\n\n private _value: unknown = nothing;\n private _templateResult?: TemplateResult;\n\n constructor(partInfo: PartInfo) {\n super(partInfo);\n if (partInfo.type !== PartType.CHILD) {\n throw new Error(\n `${\n (this.constructor as typeof UnsafeHTMLDirective).directiveName\n }() can only be used in child bindings`\n );\n }\n }\n\n render(value: string | typeof nothing | typeof noChange | undefined | null) {\n if (value === nothing || value == null) {\n this._templateResult = undefined;\n return (this._value = value);\n }\n if (value === noChange) {\n return value;\n }\n if (typeof value != 'string') {\n throw new Error(\n `${\n (this.constructor as typeof UnsafeHTMLDirective).directiveName\n }() called with a non-string value`\n );\n }\n if (value === this._value) {\n return this._templateResult;\n }\n this._value = value;\n const strings = [value] as unknown as TemplateStringsArray;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (strings as any).raw = strings;\n // WARNING: impersonating a TemplateResult like this is extremely\n // dangerous. Third-party directives should not do this.\n return (this._templateResult = {\n // Cast to a known set of integers that satisfy ResultType so that we\n // don't have to export ResultType and possibly encourage this pattern.\n // This property needs to remain unminified.\n ['_$litType$']: (this.constructor as typeof UnsafeHTMLDirective)\n .resultType as 1 | 2,\n strings,\n values: [],\n });\n }\n}\n\n/**\n * Renders the result as HTML, rather than text.\n *\n * The values `undefined`, `null`, and `nothing`, will all result in no content\n * (empty string) being rendered.\n *\n * Note, this is unsafe to use with any user-provided input that hasn't been\n * sanitized or escaped, as it may lead to cross-site-scripting\n * vulnerabilities.\n */\nexport const unsafeHTML = directive(UnsafeHTMLDirective);\n","import { html, render } from \"lit-html\";\nimport { keyed } from \"lit-html/directives/keyed.js\";\nimport { marked } from \"marked\";\nimport { unsafeHTML } from \"lit-html/directives/unsafe-html.js\";\n\nimport * as FacetCategory from \"~/common/facets/category.js\";\nimport { effect, signal } from \"~/common/signal.js\";\n\nimport { nothing } from \"~/common/element.js\";\n\nimport { deleteFacet } from \"./crud.js\";\nimport { output } from \"./output.js\";\nimport { openAddFromURIModal } from \"./from-uri.js\";\n\n// Signals\nconst FILTER_STORAGE_KEY = \"diffuse/dashboard/filter\";\nconst storedFilter = localStorage.getItem(FILTER_STORAGE_KEY);\nconst activeFilter = signal(\n storedFilter === \"prelude\" || storedFilter === \"interface\"\n ? storedFilter\n : \"all\",\n);\n\neffect(() => {\n localStorage.setItem(FILTER_STORAGE_KEY, activeFilter.get());\n});\n\n/**\n * @import OutputOrchestrator from \"~/components/orchestrator/output/element.js\";\n */\n\nconst emptyFacetsList = () =>\n html`\n <p>\n <span>\n You haven't saved anything yet. Add a facet by browsing the <a\n href=\"featured/\"\n >featured ones</a> or any of the other categories. You can click the toggle\n to quickly add or remove from your collection. Alternatively, add one using\n an URI:\n </span>\n </p>\n `;\n\n////////////////////////////////////////////\n// LIST\n////////////////////////////////////////////\n\n/** @type {() => void | undefined} */\nlet stopMonitor;\n\n/** */\nexport async function renderList() {\n if (stopMonitor) stopMonitor();\n\n /** @type {HTMLElement | null} */\n const listEl = document.querySelector(\"#list\");\n if (!listEl) throw new Error(\"List element not found\");\n\n if (listEl.getAttribute(\"data-rendered\") === \"f\") {\n listEl.innerHTML = \"\";\n listEl.removeAttribute(\"data-rendered\");\n }\n\n const out = await output();\n\n stopMonitor = effect(() => {\n _renderList(out, listEl);\n });\n}\n\n/**\n * @param {OutputOrchestrator} output\n * @param {HTMLElement} listEl\n */\nfunction _renderList(output, listEl) {\n const facetsCol = output.facets.collection();\n\n if (facetsCol.state !== \"loaded\") {\n const loading = html`\n <div class=\"with-icon\" style=\"font-size: var(--fs-sm)\">\n <i class=\"ph-bold ph-spinner animate-spin\"></i>\n Loading your software\n </div>\n `;\n\n render(loading, listEl);\n return;\n }\n\n const filter = activeFilter.get();\n\n const col = facetsCol.state === \"loaded\"\n ? [...facetsCol.data]\n .filter((c) =>\n filter === \"all\" ||\n (filter === \"prelude\" ? c.kind === \"prelude\" : c.kind !== \"prelude\")\n )\n .sort((a, b) => {\n return a.name.toLocaleLowerCase().localeCompare(\n b.name.toLocaleLowerCase(),\n );\n })\n : [];\n\n const selected = output.selected();\n const outputLabel = selected?.label ?? selected?.getAttribute?.(\"label\") ??\n \"Local storage\";\n\n const filterBar = html`\n <div class=\"grid-filter\">\n <span class=\"grid-filter--label\">Filter by</span>\n <button\n class=\"button--border button--tiny ${filter === \"all\"\n ? \"\"\n : \"button--transparent\"}\"\n @click=\"${() => activeFilter.set(\"all\")}\"\n >\n All\n </button>\n <button\n class=\"button--border button--tiny button--bg-twist-4 button--tr-twist-4 ${filter ===\n \"prelude\"\n ? \"\"\n : \"button--transparent\"}\"\n @click=\"${() => activeFilter.set(\"prelude\")}\"\n >\n Features\n </button>\n <button\n class=\"button--border button--tiny button--bg-twist-2 button--tr-twist-2 ${filter ===\n \"interface\"\n ? \"\"\n : \"button--transparent\"}\"\n @click=\"${() => activeFilter.set(\"interface\")}\"\n >\n Interfaces\n </button>\n\n <span class=\"divider\"></span>\n\n <button\n class=\"button--border button--tiny button--bg-accent button--tr-accent button--transparent with-icon\"\n @click=\"${() => openAddFromURIModal()}\"\n >\n <i class=\"ph-fill ph-plus-circle\"></i>\n <span class=\"button__supplementary-text\">Add from URI</span>\n </button>\n\n <div style=\"flex: 1\"></div>\n\n <span class=\"grid-filter--label grid-filter--label-output\"\n >Userdata from</span>\n <span class=\"grid-filter--output\">${outputLabel}</span>\n </div>\n `;\n\n const h = col.length || filter !== \"all\"\n ? html`\n ${filterBar}\n <ul class=\"grid\" style=\"margin: 0\">\n ${col.map((c, index) => {\n const color = FacetCategory.color(c);\n const kind = FacetCategory.name(c);\n\n const title = c.kind === \"prelude\"\n ? html`\n <span style=\"display: inline-block; padding: var(--space-3xs) 0\">\n ${c.name}\n </span>\n `\n : html`\n <a\n href=\"l/?id=${c\n .id}\"\n style=\"display: inline-block; padding: var(--space-3xs) 0\"\n >\n ${c.name}\n </a>\n `;\n\n return keyed(\n c.id,\n html`\n <li class=\"grid-item\">\n <div\n class=\"grid-item__contents\"\n style=\"--grid-item-color: ${color}\"\n >\n <div class=\"grid-item__title\" style=\"color: ${color}\">\n ${title}\n </div>\n <div class=\"list-description\">\n <div>\n ${c.description?.trim().length\n ? unsafeHTML(\n marked.parse(c.description, { async: false }),\n )\n : nothing}\n </div>\n <div>\n ${c.uri && !c.html\n ? html`\n <span class=\"with-icon\">\n <i class=\"ph-fill ph-binoculars\"></i>\n <span>Tracking the original <a href=\"${c\n .uri}\">URI</a></span>\n </span>\n `\n : html`\n <span class=\"with-icon\">\n <i class=\"ph-fill ph-code-simple\"></i>\n <span>Custom code</span>\n </span>\n `}\n </div>\n </div>\n </div>\n\n <div class=\"grid-item__menu\">\n <a\n class=\"button button--transparent\"\n title=\"Edit\"\n href=\"build/?id=${encodeURIComponent(c.id)}\"\n >\n <i class=\"ph-fill ph-code-block\"></i>\n </a>\n <hr />\n <button\n class=\"button--transparent\"\n title=\"Delete\"\n @click=\"${deleteFacet({ id: c.id })}\"\n >\n <i class=\"ph-fill ph-skull\"></i>\n </button>\n </div>\n </li>\n `,\n );\n })}\n </ul>\n `\n : html`\n ${filterBar} ${emptyFacetsList()}\n `;\n\n render(h, listEl);\n\n setTimeout(() => {\n /** @type {HTMLElement | null} */\n const l = listEl.querySelector(\".grid-filter--label-output\");\n\n /** @type {HTMLElement | null} */\n const o = listEl.querySelector(\".grid-filter--output\");\n\n if (o && l) {\n l.style.opacity = \"0.4\";\n o.style.opacity = \"1\";\n }\n }, 250);\n}\n"],"mappings":"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","names":["_getDefaults","_defaults","changeDefaults","newDefaults","noopTest","__name","edit","regex","opt","source","obj","name","val","valSource","other","supportsLookbehind","bull","indent","newline","blockCode","fences","hr","heading","bullet","lheadingCore","lheading","lheadingGfm","_paragraph","blockText","_blockLabel","def","list","_tag","_comment","html","paragraph","blockquote","blockNormal","gfmTable","blockGfm","blockPedantic","escape","inlineCode","br","inlineText","_punctuation","_punctuationOrSpace","_notPunctuationOrSpace","punctuation","_punctuationGfmStrongEm","_punctuationOrSpaceGfmStrongEm","_notPunctuationOrSpaceGfmStrongEm","_punctuationGfmDel","_punctuationOrSpaceGfmDel","_notPunctuationOrSpaceGfmDel","blockSkip","emStrongLDelimCore","emStrongLDelim","emStrongLDelimGfm","emStrongRDelimAstCore","emStrongRDelimAst","emStrongRDelimAstGfm","emStrongRDelimUnd","delLDelim","delRDelimCore","delRDelim","anyPunctuation","autolink","_inlineComment","tag","_inlineLabel","link","reflink","nolink","reflinkSearch","_caseInsensitiveProtocol","inlineNormal","inlinePedantic","inlineGfm","inlineBreaks","block","inline","escapeReplacements","getEscapeReplacement","ch","escapeHtmlEntities","encode","cleanUrl","href","splitCells","tableRow","count","row","match","offset","str","escaped","curr","cells","i","rtrim","c","invert","l","suffLen","currChar","findClosingBracket","b","level","expandTabs","line","col","expanded","char","added","outputLink","cap","raw","lexer","rules","title","text","token","indentCodeCompensation","matchIndentToCode","indentToCode","node","matchIndentInNode","indentInNode","_Tokenizer","options","src","trimmed","lines","tokens","inBlockquote","currentLines","currentRaw","currentText","top","lastToken","oldToken","newText","newToken","isordered","itemRegex","endsWithBlankLine","endEarly","itemContents","nextLine","blankLine","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","htmlBeginRegex","blockquoteBeginRegex","rawLine","nextLineWithoutTabs","lastItem","item","taskRaw","checkboxToken","spacers","t","hasMultipleLineBreaks","headers","aligns","rows","align","cell","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","links","linkString","maskedSrc","prevChar","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","lastCharLength","hasNonSpaceChars","hasSpaceCharsOnBothEnds","prevCapZero","_Lexer","__Lexer","next","lastParagraphClipped","extTokenizer","cutSrc","startIndex","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","_Renderer","lang","langString","code","depth","ordered","start","body","j","type","startAttr","checked","header","k","content","cleanHref","out","_TextRenderer","_Parser","__Parser","anyToken","genericToken","ret","renderer","_Hooks","markdown","Marked","args","callback","values","tableToken","listToken","childTokens","extensions","pack","opts","ext","prevRenderer","extLevel","prop","rendererProp","rendererFunc","tokenizer","tokenizerProp","tokenizerFunc","prevTokenizer","hooks","hooksProp","hooksFunc","prevHook","arg","walkTokens","packWalktokens","blockType","origOpt","throwError","processedSrc","processedTokens","e","silent","async","msg","markedInstance","marked","setOptions","use","parseInline","parser","_Parser","lexer","_Lexer","UnsafeHTMLDirective","Directive","partInfo","super","this","_value","nothing","type","PartType","CHILD","Error","constructor","directiveName","value","_templateResult","noChange","strings","raw","_$litType$","resultType","values","unsafeHTML","directive","FILTER_STORAGE_KEY","storedFilter","activeFilter","signal","effect","emptyFacetsList","__name","T","stopMonitor","renderList","listEl","out","output","_renderList","facetsCol","loading","B","filter","col","c","a","b","selected","outputLabel","filterBar","openAddFromURIModal","h","index","color","kind","name","title","i","o","g","A","deleteFacet","l"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-66S4I3DC.js.map"}
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-6NC6NOLO.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-6NC6NOLO.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-6NC6NOLO.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-6NC6NOLO.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-6NC6NOLO.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-6NC6NOLO.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-6NXS3EXH.js
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-6NXS3EXH.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-6NXS3EXH.js.br
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-6NXS3EXH.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-6NXS3EXH.js.map
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-6NXS3EXH.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-6TMSPXBP.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-6TMSPXBP.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-6TMSPXBP.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-6TMSPXBP.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-6TMSPXBP.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-6TMSPXBP.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-6WW6Q6YW.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-6WW6Q6YW.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-6WW6Q6YW.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-6WW6Q6YW.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-6WW6Q6YW.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-6WW6Q6YW.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-74D5IDBG.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-74D5IDBG.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-74D5IDBG.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-74D5IDBG.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-74D5IDBG.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-74D5IDBG.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-75BXHJJB.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-75BXHJJB.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-75BXHJJB.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-75BXHJJB.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-75BXHJJB.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-75BXHJJB.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-7EUCOO7A.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-7EUCOO7A.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-7EUCOO7A.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-7EUCOO7A.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-7EUCOO7A.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-7EUCOO7A.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-7FH34WAQ.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-7FH34WAQ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-7FH34WAQ.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-7FH34WAQ.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-7FH34WAQ.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-7FH34WAQ.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-7TWDCRON.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-7TWDCRON.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-7TWDCRON.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-7TWDCRON.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-7TWDCRON.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-7TWDCRON.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-7VVACK5Z.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-7VVACK5Z.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-7VVACK5Z.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-7VVACK5Z.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-7VVACK5Z.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-7VVACK5Z.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-ALTFDO6Y.js
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-ALTFDO6Y.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-ALTFDO6Y.js.br
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-ALTFDO6Y.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-ALTFDO6Y.js.map
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-ALTFDO6Y.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-AXYB47AY.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-AXYB47AY.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-AXYB47AY.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-AXYB47AY.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-AXYB47AY.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-AXYB47AY.js.map
+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-B4ATHCVD.js
··· 1 + import{a as b}from"./chunk-TPYPBODG.js";import{a as p}from"./chunk-HB7BQ45T.js";import{a as h}from"./chunk-IGGXGJJG.js";import{k as m}from"./chunk-4I6PUBR2.js";import{a as d}from"./chunk-BFIVCPQF.js";function L(){let c=document.querySelectorAll(".grid-filter button[data-filter]"),n=document.querySelectorAll(".grid-item");function o(e){c.forEach(t=>{t.dataset.filter===e?t.classList.remove("button--transparent"):t.classList.add("button--transparent")}),n.forEach(t=>{let r=t.dataset.kind,l=e==="all"||r===e;t.hidden=!l})}d(o,"applyFilter"),c.forEach(e=>{e.addEventListener("click",()=>{let t=e.dataset.filter??"all",r=new URL(location.href);t==="all"?r.searchParams.delete("filter"):r.searchParams.set("filter",t),history.replaceState(null,"",r),o(t)})});let i=new URL(location.href).searchParams.get("filter")??"all";o(i)}d(L,"setupFilter");var g;async function k(){g&&g();let c=document.querySelector(".grid-filter");if(!c)return;let n=await p(),o=c.querySelector(".grid-filter--output");if(!o)return;let i=c.querySelector(".grid-filter--label-output");i&&(setTimeout(()=>{o.style.opacity="1",i.style.opacity="0.4"},250),g=m(()=>{let e=n.selected(),t=e?.label??e?.getAttribute?.("label")??"Local storage";o.textContent=t}))}d(k,"setupOutputIndicator");function E(){let c=document.querySelectorAll(".grid li");for(let n of c){let o=n.querySelector(".grid-item__title");if(!o)continue;let i=document.createElement("button");i.className="button--transparent",i.style.cssText="color: oklch(from currentColor l c h / 0.4); font-size: var(--fs-md); opacity: 0; padding: 0;",i.innerHTML='<i class="ph-fill ph-toggle-left"></i>',i.addEventListener("click",async e=>{e.preventDefault();let t=n.getAttribute("data-uri"),r=n.getAttribute("data-name"),l=n.getAttribute("data-kind")??void 0,f=n.getAttribute("data-description")??void 0;if(!t||!r)return;let s=await p(),a=await b(s.facets);if(a.some(u=>u.uri===t&&u.html===void 0))s.facets.save(a.filter(u=>u.uri!==t));else{let u=await h({description:f,kind:l,name:r,uri:t},{fetchHTML:!1});s.facets.save([...a,u])}}),o.appendChild(i)}}d(E,"insertToggleButtons");var y;async function x(){y&&y();let c=await p();y=m(()=>{let n=document.querySelectorAll(".grid li"),o=c.facets.collection(),i=o.state==="loaded"?o.data:[],e=new Map(i.map(t=>[t.uri,t]));for(let t of n){let r=t.getAttribute("data-uri"),l=t.querySelector("button"),f=l?.querySelector("i");if(!l||!f||!r)continue;l.style.opacity="revert-layer";let s=e.get(r),a=s&&s.html===void 0;l.title=a?"Remove from your collection":"Add to your collection",f.className=a?"ph-fill ph-toggle-right":"ph-fill ph-toggle-left",f.style.color=a?t.dataset.activeColor??"var(--accent-twist-2)":""}})}d(x,"monitorToggleButtonStates");export{L as a,k as b,E as c,x as d}; 2 + 3 + //# sourceMappingURL=./chunk-B4ATHCVD.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-B4ATHCVD.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-B4ATHCVD.js.map
··· 1 + {"version":3,"sources":["/common/pages/grid.js"],"sourcesContent":["import * as Output from \"~/common/output.js\";\nimport { facetFromURI } from \"~/common/facets/utils.js\";\nimport { effect } from \"~/common/signal.js\";\n\nimport { output } from \"./output.js\";\n\n////////////////////////////////////////////\n// FILTER\n////////////////////////////////////////////\n\nexport function setupFilter() {\n /** @type {NodeListOf<HTMLElement>} */\n const buttons = document.querySelectorAll(\".grid-filter button[data-filter]\");\n\n /** @type {NodeListOf<HTMLElement>} */\n const items = document.querySelectorAll(\".grid-item\");\n\n /** @param {string} filter */\n function applyFilter(filter) {\n buttons.forEach((b) => {\n if (b.dataset.filter === filter) b.classList.remove(\"button--transparent\");\n else b.classList.add(\"button--transparent\");\n });\n items.forEach((item) => {\n const kind = item.dataset.kind;\n const show = filter === \"all\" || kind === filter;\n item.hidden = !show;\n });\n }\n\n buttons.forEach((b) => {\n b.addEventListener(\"click\", () => {\n const filter = b.dataset.filter ?? \"all\";\n const url = new URL(location.href);\n if (filter === \"all\") url.searchParams.delete(\"filter\");\n else url.searchParams.set(\"filter\", filter);\n history.replaceState(null, \"\", url);\n applyFilter(filter);\n });\n });\n\n const initial = new URL(location.href).searchParams.get(\"filter\") ?? \"all\";\n applyFilter(initial);\n}\n\n////////////////////////////////////////////\n// OUTPUT INDICATOR\n////////////////////////////////////////////\n\n/** @type {() => void | undefined} */\nlet stopOutputIndicator;\n\nexport async function setupOutputIndicator() {\n if (stopOutputIndicator) stopOutputIndicator();\n\n const filterEl = document.querySelector(\".grid-filter\");\n if (!filterEl) return;\n\n const out = await output();\n\n /** @type {HTMLElement | null} */\n const indicator = filterEl.querySelector(\".grid-filter--output\");\n if (!indicator) return;\n\n /** @type {HTMLElement | null} */\n const label = filterEl.querySelector(\".grid-filter--label-output\");\n if (!label) return;\n\n setTimeout(() => {\n indicator.style.opacity = \"1\";\n label.style.opacity = \"0.4\";\n }, 250);\n\n stopOutputIndicator = effect(() => {\n const selected = out.selected();\n const label = selected?.label ?? selected?.getAttribute?.(\"label\") ??\n \"Local storage\";\n indicator.textContent = label;\n });\n}\n\n////////////////////////////////////////////\n// TOGGLE BUTTONS\n////////////////////////////////////////////\n\nexport function insertToggleButtons() {\n const gridItems = /** @type {NodeListOf<HTMLLIElement>} */ (\n document.querySelectorAll(\".grid li\")\n );\n\n for (const li of gridItems) {\n const container = li.querySelector(\".grid-item__title\");\n if (!container) continue;\n\n const button = document.createElement(\"button\");\n button.className = \"button--transparent\";\n button.style.cssText =\n `color: oklch(from currentColor l c h / 0.4); font-size: var(--fs-md); opacity: 0; padding: 0;`;\n button.innerHTML = `<i class=\"ph-fill ph-toggle-left\"></i>`;\n\n button.addEventListener(\"click\", async (event) => {\n event.preventDefault();\n\n const uri = li.getAttribute(\"data-uri\");\n const name = li.getAttribute(\"data-name\");\n const kind = li.getAttribute(\"data-kind\") ?? undefined;\n const description = li.getAttribute(\"data-description\") ?? undefined;\n\n if (!uri || !name) return;\n\n const out = await output();\n const collection = await Output.data(out.facets);\n const isActive = collection.some((f) =>\n f.uri === uri && f.html === undefined\n );\n\n if (isActive) {\n out.facets.save(collection.filter((f) => f.uri !== uri));\n } else {\n const facet = await facetFromURI({ description, kind, name, uri }, {\n fetchHTML: false,\n });\n out.facets.save([...collection, facet]);\n }\n });\n\n container.appendChild(button);\n }\n}\n\n////////////////////////////////////////////\n// SYNC ACTIVE STATES\n////////////////////////////////////////////\n\n/** @type {() => void | undefined} */\nlet stopMonitor;\n\nexport async function monitorToggleButtonStates() {\n if (stopMonitor) stopMonitor();\n const out = await output();\n\n stopMonitor = effect(() => {\n const gridItems = /** @type {NodeListOf<HTMLLIElement>} */ (\n document.querySelectorAll(\".grid li\")\n );\n\n const col = out.facets.collection();\n const collection = col.state === \"loaded\" ? col.data : [];\n const colMap = new Map(collection.map((f) => [f.uri, f]));\n\n for (const li of gridItems) {\n const uri = li.getAttribute(\"data-uri\");\n const button =\n /** @type {HTMLElement | null} */ (li.querySelector(\"button\"));\n const icon = button?.querySelector(\"i\");\n\n if (!button || !icon || !uri) continue;\n\n button.style.opacity = \"revert-layer\";\n\n const item = colMap.get(uri);\n const isActive = item && item.html === undefined;\n\n button.title = isActive\n ? \"Remove from your collection\"\n : \"Add to your collection\";\n icon.className = isActive\n ? \"ph-fill ph-toggle-right\"\n : \"ph-fill ph-toggle-left\";\n /** @type {HTMLElement} */ (icon).style.color = isActive\n ? li.dataset.activeColor ?? \"var(--accent-twist-2)\"\n : \"\";\n }\n });\n}\n"],"mappings":"wMAUO,SAASA,GAAc,CAE5B,IAAMC,EAAU,SAAS,iBAAiB,kCAAkC,EAGtEC,EAAQ,SAAS,iBAAiB,YAAY,EAGpD,SAASC,EAAYC,EAAQ,CAC3BH,EAAQ,QAASI,GAAM,CACjBA,EAAE,QAAQ,SAAWD,EAAQC,EAAE,UAAU,OAAO,qBAAqB,EACpEA,EAAE,UAAU,IAAI,qBAAqB,CAC5C,CAAC,EACDH,EAAM,QAASI,GAAS,CACtB,IAAMC,EAAOD,EAAK,QAAQ,KACpBE,EAAOJ,IAAW,OAASG,IAASH,EAC1CE,EAAK,OAAS,CAACE,CACjB,CAAC,CACH,CAVSC,EAAAN,EAAA,eAYTF,EAAQ,QAASI,GAAM,CACrBA,EAAE,iBAAiB,QAAS,IAAM,CAChC,IAAMD,EAASC,EAAE,QAAQ,QAAU,MAC7BK,EAAM,IAAI,IAAI,SAAS,IAAI,EAC7BN,IAAW,MAAOM,EAAI,aAAa,OAAO,QAAQ,EACjDA,EAAI,aAAa,IAAI,SAAUN,CAAM,EAC1C,QAAQ,aAAa,KAAM,GAAIM,CAAG,EAClCP,EAAYC,CAAM,CACpB,CAAC,CACH,CAAC,EAED,IAAMO,EAAU,IAAI,IAAI,SAAS,IAAI,EAAE,aAAa,IAAI,QAAQ,GAAK,MACrER,EAAYQ,CAAO,CACrB,CAjCgBF,EAAAT,EAAA,eAwChB,IAAIY,EAEJ,eAAsBC,GAAuB,CACvCD,GAAqBA,EAAoB,EAE7C,IAAME,EAAW,SAAS,cAAc,cAAc,EACtD,GAAI,CAACA,EAAU,OAEf,IAAMC,EAAM,MAAMC,EAAO,EAGnBC,EAAYH,EAAS,cAAc,sBAAsB,EAC/D,GAAI,CAACG,EAAW,OAGhB,IAAMC,EAAQJ,EAAS,cAAc,4BAA4B,EAC5DI,IAEL,WAAW,IAAM,CACfD,EAAU,MAAM,QAAU,IAC1BC,EAAM,MAAM,QAAU,KACxB,EAAG,GAAG,EAENN,EAAsBO,EAAO,IAAM,CACjC,IAAMC,EAAWL,EAAI,SAAS,EACxBG,EAAQE,GAAU,OAASA,GAAU,eAAe,OAAO,GAC/D,gBACFH,EAAU,YAAcC,CAC1B,CAAC,EACH,CA3BsBT,EAAAI,EAAA,wBAiCf,SAASQ,GAAsB,CACpC,IAAMC,EACJ,SAAS,iBAAiB,UAAU,EAGtC,QAAWC,KAAMD,EAAW,CAC1B,IAAME,EAAYD,EAAG,cAAc,mBAAmB,EACtD,GAAI,CAACC,EAAW,SAEhB,IAAMC,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,UAAY,sBACnBA,EAAO,MAAM,QACX,gGACFA,EAAO,UAAY,yCAEnBA,EAAO,iBAAiB,QAAS,MAAOC,GAAU,CAChDA,EAAM,eAAe,EAErB,IAAMC,EAAMJ,EAAG,aAAa,UAAU,EAChCK,EAAOL,EAAG,aAAa,WAAW,EAClChB,EAAOgB,EAAG,aAAa,WAAW,GAAK,OACvCM,EAAcN,EAAG,aAAa,kBAAkB,GAAK,OAE3D,GAAI,CAACI,GAAO,CAACC,EAAM,OAEnB,IAAMb,EAAM,MAAMC,EAAO,EACnBc,EAAa,MAAaC,EAAKhB,EAAI,MAAM,EAK/C,GAJiBe,EAAW,KAAME,GAChCA,EAAE,MAAQL,GAAOK,EAAE,OAAS,MAC9B,EAGEjB,EAAI,OAAO,KAAKe,EAAW,OAAQE,GAAMA,EAAE,MAAQL,CAAG,CAAC,MAClD,CACL,IAAMM,EAAQ,MAAMC,EAAa,CAAE,YAAAL,EAAa,KAAAtB,EAAM,KAAAqB,EAAM,IAAAD,CAAI,EAAG,CACjE,UAAW,EACb,CAAC,EACDZ,EAAI,OAAO,KAAK,CAAC,GAAGe,EAAYG,CAAK,CAAC,CACxC,CACF,CAAC,EAEDT,EAAU,YAAYC,CAAM,CAC9B,CACF,CA3CgBhB,EAAAY,EAAA,uBAkDhB,IAAIc,EAEJ,eAAsBC,GAA4B,CAC5CD,GAAaA,EAAY,EAC7B,IAAMpB,EAAM,MAAMC,EAAO,EAEzBmB,EAAchB,EAAO,IAAM,CACzB,IAAMG,EACJ,SAAS,iBAAiB,UAAU,EAGhCe,EAAMtB,EAAI,OAAO,WAAW,EAC5Be,EAAaO,EAAI,QAAU,SAAWA,EAAI,KAAO,CAAC,EAClDC,EAAS,IAAI,IAAIR,EAAW,IAAKE,GAAM,CAACA,EAAE,IAAKA,CAAC,CAAC,CAAC,EAExD,QAAWT,KAAMD,EAAW,CAC1B,IAAMK,EAAMJ,EAAG,aAAa,UAAU,EAChCE,EAC+BF,EAAG,cAAc,QAAQ,EACxDgB,EAAOd,GAAQ,cAAc,GAAG,EAEtC,GAAI,CAACA,GAAU,CAACc,GAAQ,CAACZ,EAAK,SAE9BF,EAAO,MAAM,QAAU,eAEvB,IAAMnB,EAAOgC,EAAO,IAAIX,CAAG,EACrBa,EAAWlC,GAAQA,EAAK,OAAS,OAEvCmB,EAAO,MAAQe,EACX,8BACA,yBACJD,EAAK,UAAYC,EACb,0BACA,yBACwBD,EAAM,MAAM,MAAQC,EAC5CjB,EAAG,QAAQ,aAAe,wBAC1B,EACN,CACF,CAAC,CACH,CArCsBd,EAAA2B,EAAA","names":["setupFilter","buttons","items","applyFilter","filter","b","item","kind","show","__name","url","initial","stopOutputIndicator","setupOutputIndicator","filterEl","out","output","indicator","label","effect","selected","insertToggleButtons","gridItems","li","container","button","event","uri","name","description","collection","data","f","facet","facetFromURI","stopMonitor","monitorToggleButtonStates","col","colMap","icon","isActive"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-B4ATHCVD.js.map"}
+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-B4XMDCCS.js
··· 1 + import{o as n}from"./chunk-4I6PUBR2.js";import{a as s}from"./chunk-BFIVCPQF.js";var P=new URL(document.location.href),a=P.searchParams.get("group")??"facets",r={configurator:{input:n(null),scrobbles:n(null)},engine:{audio:n(null),queue:n(null),repeatShuffle:n(null),scope:n(null)},orchestrator:{autoQueue:n(null),favourites:n(null),mediaSession:n(null),output:n(null),processTracks:n(null),queueAudio:n(null),scopedTracks:n(null),scrobbleAudio:n(null),sources:n(null)},processor:{artwork:n(null),metadata:n(null),search:n(null)}},h={GROUP:a,configurator:{input:f,scrobbles:m},engine:{audio:b,queue:g,repeatShuffle:A,scope:w},orchestrator:{autoQueue:T,favourites:O,mediaSession:v,output:d,queueAudio:x,processTracks:Q,scopedTracks:k,scrobbleAudio:E,sources:R},processor:{artwork:y,metadata:q,search:S},signals:{configurator:{input:r.configurator.input.get,scrobbles:r.configurator.scrobbles.get},engine:{audio:r.engine.audio.get,queue:r.engine.queue.get,repeatShuffle:r.engine.repeatShuffle.get,scope:r.engine.scope.get},orchestrator:{autoQueue:r.orchestrator.autoQueue.get,favourites:r.orchestrator.favourites.get,mediaSession:r.orchestrator.mediaSession.get,output:r.orchestrator.output.get,processTracks:r.orchestrator.processTracks.get,queueAudio:r.orchestrator.queueAudio.get,scopedTracks:r.orchestrator.scopedTracks.get,scrobbleAudio:r.orchestrator.scrobbleAudio.get,sources:r.orchestrator.sources.get},processor:{artwork:r.processor.artwork.get,metadata:r.processor.metadata.get,search:r.processor.search.get}},container:s(()=>document.body.querySelector("#container"),"container"),hideLoader:s(()=>{let e=document.querySelector("#diffuse-loader");e&&(e.classList.add("loaded"),setTimeout(()=>{e.remove(),e.parentElement?.remove()},750))},"hideLoader"),setup:s(({title:e})=>{document.title=e,h.hideLoader()},"setup")},C=h;async function f(){let{default:e}=await import("./components/configurator/input/element.js"),t=new e;return t.setAttribute("group",a),t.setAttribute("id","input"),i(t,r.configurator.input)}s(f,"input");async function m(){let{default:e}=await import("./components/configurator/scrobbles/element.js"),t=new e;t.setAttribute("group",a),t.setAttribute("id","scrobbles");let o=document.body.querySelector(t.selector);return o||(document.body.append(t),t)}s(m,"scrobbles");async function b(){let{default:e}=await import("./components/engine/audio/element.js"),t=new e;return t.setAttribute("group",a),i(t,r.engine.audio)}s(b,"audio");async function g(){let{default:e}=await import("./components/engine/queue/element.js"),t=new e;return t.setAttribute("group",a),i(t,r.engine.queue)}s(g,"queue");async function A(){let{default:e}=await import("./components/engine/repeat-shuffle/element.js"),t=new e;return t.setAttribute("group",a),i(t,r.engine.repeatShuffle)}s(A,"repeatShuffle");async function w(){let{default:e}=await import("./components/engine/scope/element.js"),t=new e;return t.setAttribute("group",a),i(t,r.engine.scope)}s(w,"scope");async function y(){let{default:e}=await import("./components/processor/artwork/element.js"),t=new e;return t.setAttribute("group",a),i(t,r.processor.artwork)}s(y,"artwork");async function q(){let{default:e}=await import("./components/processor/metadata/element.js"),t=new e;return t.setAttribute("group",a),i(t,r.processor.metadata)}s(q,"metadata");async function S(){let{default:e}=await import("./components/processor/search/element.js"),t=new e;return t.setAttribute("group",a),i(t,r.processor.search)}s(S,"search");async function T(){let[{default:e},t,o,c]=await Promise.all([import("./components/orchestrator/auto-queue/element.js"),g(),A(),k()]),l=new e;return l.setAttribute("group",a),l.setAttribute("queue-engine-selector",t.selector),l.setAttribute("repeat-shuffle-engine-selector",o.selector),l.setAttribute("tracks-selector",c.selector),i(l,r.orchestrator.autoQueue)}s(T,"autoQueue");async function O(){let[{default:e},t]=await Promise.all([import("./components/orchestrator/favourites/element.js"),d()]),o=new e;return o.setAttribute("group",a),o.setAttribute("output-selector",t.selector),i(o,r.orchestrator.favourites)}s(O,"favourites");async function v(){let[{default:e},t,o,c,l]=await Promise.all([import("./components/orchestrator/media-session/element.js"),b(),y(),d(),g()]),u=new e;return u.setAttribute("group",a),u.setAttribute("audio-engine-selector",t.selector),u.setAttribute("artwork-processor-selector",o.selector),u.setAttribute("output-selector",c.selector),u.setAttribute("queue-engine-selector",l.selector),i(u,r.orchestrator.mediaSession)}s(v,"mediaSession");async function d(){let{default:e}=await import("./components/orchestrator/output/element.js"),t=new e;return t.setAttribute("group",a),t.setAttribute("id","output"),i(t,r.orchestrator.output)}s(d,"output");async function Q(e={disableWhenReady:!1}){let[{default:t},o,c,l]=await Promise.all([import("./components/orchestrator/process-tracks/element.js"),f(),d(),q()]),u=new t;return u.setAttribute("group",a),u.setAttribute("input-selector",o.selector),u.setAttribute("output-selector",c.selector),u.setAttribute("metadata-processor-selector",l.selector),e.disableWhenReady||u.toggleAttribute("process-when-ready"),i(u,r.orchestrator.processTracks)}s(Q,"processTracks");async function x(){let[{default:e},t,o,c,l,u]=await Promise.all([import("./components/orchestrator/queue-audio/element.js"),b(),f(),d(),g(),A()]),p=new e;return p.setAttribute("group",a),p.setAttribute("audio-engine-selector",t.selector),p.setAttribute("input-selector",o.selector),p.setAttribute("output-selector",c.selector),p.setAttribute("queue-engine-selector",l.selector),p.setAttribute("repeat-shuffle-engine-selector",u.selector),i(p,r.orchestrator.queueAudio)}s(x,"queueAudio");async function k(){let[{default:e},t,o,c,l]=await Promise.all([import("./components/orchestrator/scoped-tracks/element.js"),f(),d(),w(),S()]),u=new e;return u.setAttribute("group",a),u.setAttribute("input-selector",t.selector),u.setAttribute("output-selector",o.selector),u.setAttribute("scope-engine-selector",c.selector),u.setAttribute("search-processor-selector",l.selector),i(u,r.orchestrator.scopedTracks)}s(k,"scopedTracks");async function E(){let[{default:e},t,o]=await Promise.all([import("./components/orchestrator/scrobble-audio/element.js"),b(),m()]),c=new e;return c.setAttribute("group",a),c.setAttribute("audio-engine-selector",t.selector),c.setAttribute("scrobble-selector",o.selector),i(c,r.orchestrator.scrobbleAudio)}s(E,"scrobbleAudio");async function R(){let[{default:e},t,o]=await Promise.all([import("./components/orchestrator/sources/element.js"),f(),d()]),c=new e;return c.setAttribute("group",a),c.setAttribute("input-selector",t.selector),c.setAttribute("output-selector",o.selector),i(c,r.orchestrator.sources)}s(R,"sources");function i(e,t){let o=document.body.querySelector(e.selector);return o?(t.value=o,o):(document.body.append(e),t.value=e,e)}s(i,"findExistingOrAdd");export{a,h as b,C as c,i as d}; 2 + 3 + //# sourceMappingURL=./chunk-B4XMDCCS.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-B4XMDCCS.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-6WVAG6DE.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-B4XMDCCS.js.map
··· 1 + {"version":3,"sources":["/common/foundation.js"],"sourcesContent":["import { signal } from \"~/common/signal.js\";\n\n/**\n * @import { DiffuseElement } from \"~/common/element.js\";\n * @import { Signal } from \"~/common/signal.d.ts\";\n * @import { ScrobbleElement } from \"~/components/supplement/types.d.ts\";\n */\n\nconst url = new URL(document.location.href);\nexport const GROUP = url.searchParams.get(\"group\") ?? \"facets\";\n\n/**\n * [PRIVATE] Signals.\n */\nconst signals = {\n configurator: {\n input: signal(\n /** @type {import(\"~/components/configurator/input/element.js\").CLASS | null} */ (null),\n ),\n scrobbles: signal(\n /** @type {import(\"~/components/configurator/scrobbles/element.js\").CLASS | null} */ (null),\n ),\n },\n\n engine: {\n audio: signal(\n /** @type {import(\"~/components/engine/audio/element.js\").CLASS | null} */ (null),\n ),\n queue: signal(\n /** @type {import(\"~/components/engine/queue/element.js\").CLASS | null} */ (null),\n ),\n repeatShuffle: signal(\n /** @type {import(\"~/components/engine/repeat-shuffle/element.js\").CLASS | null} */ (null),\n ),\n scope: signal(\n /** @type {import(\"~/components/engine/scope/element.js\").CLASS | null} */ (null),\n ),\n },\n\n orchestrator: {\n autoQueue: signal(\n /** @type {import(\"~/components/orchestrator/auto-queue/element.js\").CLASS | null} */ (null),\n ),\n favourites: signal(\n /** @type {import(\"~/components/orchestrator/favourites/element.js\").CLASS | null} */ (null),\n ),\n mediaSession: signal(\n /** @type {import(\"~/components/orchestrator/media-session/element.js\").CLASS | null} */ (null),\n ),\n output: signal(\n /** @type {import(\"~/components/orchestrator/output/element.js\").CLASS | null} */ (null),\n ),\n processTracks: signal(\n /** @type {import(\"~/components/orchestrator/process-tracks/element.js\").CLASS | null} */ (null),\n ),\n queueAudio: signal(\n /** @type {import(\"~/components/orchestrator/queue-audio/element.js\").CLASS | null} */ (null),\n ),\n scopedTracks: signal(\n /** @type {import(\"~/components/orchestrator/scoped-tracks/element.js\").CLASS | null} */ (null),\n ),\n scrobbleAudio: signal(\n /** @type {import(\"~/components/orchestrator/scrobble-audio/element.js\").CLASS | null} */ (null),\n ),\n sources: signal(\n /** @type {import(\"~/components/orchestrator/sources/element.js\").CLASS | null} */ (null),\n ),\n },\n\n processor: {\n artwork: signal(\n /** @type {import(\"~/components/processor/artwork/element.js\").CLASS | null} */ (null),\n ),\n metadata: signal(\n /** @type {import(\"~/components/processor/metadata/element.js\").CLASS | null} */ (null),\n ),\n search: signal(\n /** @type {import(\"~/components/processor/search/element.js\").CLASS | null} */ (null),\n ),\n },\n};\n\n/**\n * Default config for facets.\n */\nexport const config = {\n GROUP,\n\n // Elements\n configurator: {\n input,\n scrobbles,\n },\n\n engine: {\n audio,\n queue,\n repeatShuffle,\n scope,\n },\n\n orchestrator: {\n autoQueue,\n favourites,\n mediaSession,\n output,\n queueAudio,\n // TODO: Path collections orchestrator\n processTracks,\n scopedTracks,\n scrobbleAudio,\n sources,\n },\n\n processor: {\n artwork,\n metadata,\n search,\n },\n\n /**\n * Element signals\n */\n signals: {\n configurator: {\n input: signals.configurator.input.get,\n scrobbles: signals.configurator.scrobbles.get,\n },\n\n engine: {\n audio: signals.engine.audio.get,\n queue: signals.engine.queue.get,\n repeatShuffle: signals.engine.repeatShuffle.get,\n scope: signals.engine.scope.get,\n },\n\n orchestrator: {\n autoQueue: signals.orchestrator.autoQueue.get,\n favourites: signals.orchestrator.favourites.get,\n mediaSession: signals.orchestrator.mediaSession.get,\n output: signals.orchestrator.output.get,\n processTracks: signals.orchestrator.processTracks.get,\n queueAudio: signals.orchestrator.queueAudio.get,\n scopedTracks: signals.orchestrator.scopedTracks.get,\n scrobbleAudio: signals.orchestrator.scrobbleAudio.get,\n sources: signals.orchestrator.sources.get,\n },\n\n processor: {\n artwork: signals.processor.artwork.get,\n metadata: signals.processor.metadata.get,\n search: signals.processor.search.get,\n },\n },\n\n // Utilities\n\n container: () => {\n return document.body.querySelector(\"#container\");\n },\n\n hideLoader: () => {\n const loader = document.querySelector(\"#diffuse-loader\");\n\n if (loader) {\n loader.classList.add(\"loaded\");\n setTimeout(() => {\n loader.remove();\n loader.parentElement?.remove();\n }, 750);\n }\n },\n\n /**\n * @param {{ title: string }} options\n */\n setup: ({ title }) => {\n document.title = title;\n config.hideLoader();\n },\n};\n\nexport default config;\n\n// 🥡\n\n// Configurators\n\nasync function input() {\n const { default: InputConfigurator } = await import(\n \"~/components/configurator/input/element.js\"\n );\n\n const i = new InputConfigurator();\n i.setAttribute(\"group\", GROUP);\n i.setAttribute(\"id\", \"input\");\n\n return findExistingOrAdd(i, signals.configurator.input);\n}\n\n/**\n * @returns {Promise<ScrobbleElement>}\n */\nasync function scrobbles() {\n const { default: ScrobblesConfigurator } = await import(\n \"~/components/configurator/scrobbles/element.js\"\n );\n\n const sc = new ScrobblesConfigurator();\n sc.setAttribute(\"group\", GROUP);\n sc.setAttribute(\"id\", \"scrobbles\");\n\n const existing = document.body.querySelector(sc.selector);\n\n if (existing) {\n return /** @type {ScrobbleElement} */ (existing);\n }\n\n document.body.append(sc);\n return /** @type {ScrobbleElement} */ (/** @type {unknown} */ (sc));\n}\n\n// Engines\nasync function audio() {\n const { default: AudioEngine } = await import(\n \"~/components/engine/audio/element.js\"\n );\n\n const a = new AudioEngine();\n a.setAttribute(\"group\", GROUP);\n\n return findExistingOrAdd(a, signals.engine.audio);\n}\n\nasync function queue() {\n const { default: Queue } = await import(\n \"~/components/engine/queue/element.js\"\n );\n\n const q = new Queue();\n q.setAttribute(\"group\", GROUP);\n\n return findExistingOrAdd(q, signals.engine.queue);\n}\n\nasync function repeatShuffle() {\n const { default: RepeatShuffleEngine } = await import(\n \"~/components/engine/repeat-shuffle/element.js\"\n );\n\n const r = new RepeatShuffleEngine();\n r.setAttribute(\"group\", GROUP);\n\n return findExistingOrAdd(r, signals.engine.repeatShuffle);\n}\n\nasync function scope() {\n const { default: ScopeEngine } = await import(\n \"~/components/engine/scope/element.js\"\n );\n\n const s = new ScopeEngine();\n s.setAttribute(\"group\", GROUP);\n\n return findExistingOrAdd(s, signals.engine.scope);\n}\n\n// Processors\nasync function artwork() {\n const { default: ArtworkProcessor } = await import(\n \"~/components/processor/artwork/element.js\"\n );\n\n const a = new ArtworkProcessor();\n a.setAttribute(\"group\", GROUP);\n\n return findExistingOrAdd(a, signals.processor.artwork);\n}\n\nasync function metadata() {\n const { default: MetadataProcessor } = await import(\n \"~/components/processor/metadata/element.js\"\n );\n\n const m = new MetadataProcessor();\n m.setAttribute(\"group\", GROUP);\n\n return findExistingOrAdd(m, signals.processor.metadata);\n}\n\nasync function search() {\n const { default: SearchProcessor } = await import(\n \"~/components/processor/search/element.js\"\n );\n\n const s = new SearchProcessor();\n s.setAttribute(\"group\", GROUP);\n\n return findExistingOrAdd(s, signals.processor.search);\n}\n\n// Orchestrators\nasync function autoQueue() {\n const [{ default: AutoQueueOrchestrator }, q, r, t] = await Promise.all([\n import(\"~/components/orchestrator/auto-queue/element.js\"),\n queue(),\n repeatShuffle(),\n scopedTracks(),\n ]);\n\n const aqo = new AutoQueueOrchestrator();\n aqo.setAttribute(\"group\", GROUP);\n aqo.setAttribute(\"queue-engine-selector\", q.selector);\n aqo.setAttribute(\"repeat-shuffle-engine-selector\", r.selector);\n aqo.setAttribute(\"tracks-selector\", t.selector);\n\n return findExistingOrAdd(aqo, signals.orchestrator.autoQueue);\n}\n\nasync function favourites() {\n const [{ default: FavouritesOrchestrator }, o] = await Promise.all([\n import(\"~/components/orchestrator/favourites/element.js\"),\n output(),\n ]);\n\n const fo = new FavouritesOrchestrator();\n fo.setAttribute(\"group\", GROUP);\n fo.setAttribute(\"output-selector\", o.selector);\n\n return findExistingOrAdd(fo, signals.orchestrator.favourites);\n}\n\nasync function mediaSession() {\n const [{ default: MediaSessionOrchestrator }, a, aw, o, q] = await Promise\n .all([\n import(\"~/components/orchestrator/media-session/element.js\"),\n audio(),\n artwork(),\n output(),\n queue(),\n ]);\n\n const mso = new MediaSessionOrchestrator();\n mso.setAttribute(\"group\", GROUP);\n mso.setAttribute(\"audio-engine-selector\", a.selector);\n mso.setAttribute(\"artwork-processor-selector\", aw.selector);\n mso.setAttribute(\"output-selector\", o.selector);\n mso.setAttribute(\"queue-engine-selector\", q.selector);\n\n return findExistingOrAdd(mso, signals.orchestrator.mediaSession);\n}\n\nasync function output() {\n const { default: OutputOrchestrator } = await import(\n \"~/components/orchestrator/output/element.js\"\n );\n\n const o = new OutputOrchestrator();\n o.setAttribute(\"group\", GROUP);\n o.setAttribute(\"id\", \"output\");\n\n return findExistingOrAdd(o, signals.orchestrator.output);\n}\n\n/**\n * @param {Object} opts - Options\n * @param {boolean} [opts.disableWhenReady] - Whether to disable processing when ready.\n */\nasync function processTracks(opts = { disableWhenReady: false }) {\n const [{ default: ProcessTracksOrchestrator }, i, o, m] = await Promise.all([\n import(\"~/components/orchestrator/process-tracks/element.js\"),\n input(),\n output(),\n metadata(),\n ]);\n\n const opt = new ProcessTracksOrchestrator();\n opt.setAttribute(\"group\", GROUP);\n opt.setAttribute(\"input-selector\", i.selector);\n opt.setAttribute(\"output-selector\", o.selector);\n opt.setAttribute(\"metadata-processor-selector\", m.selector);\n\n if (!opts.disableWhenReady) {\n opt.toggleAttribute(\"process-when-ready\");\n }\n\n return findExistingOrAdd(opt, signals.orchestrator.processTracks);\n}\n\nasync function queueAudio() {\n const [{ default: QueueAudioOrchestrator }, a, i, o, q, r] = await Promise\n .all([\n import(\"~/components/orchestrator/queue-audio/element.js\"),\n audio(),\n input(),\n output(),\n queue(),\n repeatShuffle(),\n ]);\n\n const oqa = new QueueAudioOrchestrator();\n oqa.setAttribute(\"group\", GROUP);\n oqa.setAttribute(\"audio-engine-selector\", a.selector);\n oqa.setAttribute(\"input-selector\", i.selector);\n oqa.setAttribute(\"output-selector\", o.selector);\n oqa.setAttribute(\"queue-engine-selector\", q.selector);\n oqa.setAttribute(\"repeat-shuffle-engine-selector\", r.selector);\n\n return findExistingOrAdd(oqa, signals.orchestrator.queueAudio);\n}\n\nasync function scopedTracks() {\n const [{ default: ScopedTracksOrchestrator }, i, o, e, s] = await Promise.all(\n [\n import(\"~/components/orchestrator/scoped-tracks/element.js\"),\n input(),\n output(),\n scope(),\n search(),\n ],\n );\n\n const sto = new ScopedTracksOrchestrator();\n sto.setAttribute(\"group\", GROUP);\n sto.setAttribute(\"input-selector\", i.selector);\n sto.setAttribute(\"output-selector\", o.selector);\n sto.setAttribute(\"scope-engine-selector\", e.selector);\n sto.setAttribute(\"search-processor-selector\", s.selector);\n\n return findExistingOrAdd(sto, signals.orchestrator.scopedTracks);\n}\n\nasync function scrobbleAudio() {\n const [{ default: ScrobbleAudioOrchestrator }, a, sc] = await Promise.all([\n import(\"~/components/orchestrator/scrobble-audio/element.js\"),\n audio(),\n scrobbles(),\n ]);\n\n const sao = new ScrobbleAudioOrchestrator();\n sao.setAttribute(\"group\", GROUP);\n sao.setAttribute(\"audio-engine-selector\", a.selector);\n sao.setAttribute(\"scrobble-selector\", sc.selector);\n\n return findExistingOrAdd(sao, signals.orchestrator.scrobbleAudio);\n}\n\nasync function sources() {\n const [{ default: SourcesOrchestrator }, i, o] = await Promise.all([\n import(\"~/components/orchestrator/sources/element.js\"),\n input(),\n output(),\n ]);\n\n const so = new SourcesOrchestrator();\n so.setAttribute(\"group\", GROUP);\n so.setAttribute(\"input-selector\", i.selector);\n so.setAttribute(\"output-selector\", o.selector);\n\n return findExistingOrAdd(so, signals.orchestrator.sources);\n}\n\n// 🛠️\n\n/**\n * @template {DiffuseElement} T\n * @param {T} element\n * @param {Signal<T | null>} signal\n * @returns {T}\n */\nexport function findExistingOrAdd(element, signal) {\n /** @type {T | null} */\n const alreadyAdded = document.body.querySelector(element.selector);\n\n if (!alreadyAdded) {\n document.body.append(element);\n signal.value = element;\n return element;\n }\n\n signal.value = alreadyAdded;\n return alreadyAdded;\n}\n"],"mappings":"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","names":["url","GROUP","signals","signal","config","input","scrobbles","audio","queue","repeatShuffle","scope","autoQueue","favourites","mediaSession","output","queueAudio","processTracks","scopedTracks","scrobbleAudio","sources","artwork","metadata","search","__name","loader","title","foundation_default","InputConfigurator","i","findExistingOrAdd","ScrobblesConfigurator","sc","existing","AudioEngine","a","Queue","q","RepeatShuffleEngine","r","ScopeEngine","s","ArtworkProcessor","MetadataProcessor","m","SearchProcessor","AutoQueueOrchestrator","t","aqo","FavouritesOrchestrator","o","fo","MediaSessionOrchestrator","aw","mso","OutputOrchestrator","opts","ProcessTracksOrchestrator","opt","QueueAudioOrchestrator","oqa","ScopedTracksOrchestrator","e","sto","ScrobbleAudioOrchestrator","sao","SourcesOrchestrator","so","element","alreadyAdded"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-B4XMDCCS.js.map"}
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-BFIVCPQF.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-BFIVCPQF.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-BFIVCPQF.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-BFIVCPQF.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-BFIVCPQF.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-BFIVCPQF.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-BK2GLO6Y.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-BK2GLO6Y.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-BK2GLO6Y.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-BK2GLO6Y.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-BK2GLO6Y.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-BK2GLO6Y.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-BM2NDIFW.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-BM2NDIFW.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-BM2NDIFW.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-BM2NDIFW.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-BM2NDIFW.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-BM2NDIFW.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-BUMY6KL7.js
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-BUMY6KL7.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-BUMY6KL7.js.br
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-BUMY6KL7.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-BUMY6KL7.js.map
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-BUMY6KL7.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-CPZNM23P.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-CPZNM23P.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-CPZNM23P.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-CPZNM23P.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-CPZNM23P.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-CPZNM23P.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-CVJ7NIWC.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-CVJ7NIWC.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-CVJ7NIWC.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-CVJ7NIWC.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-CVJ7NIWC.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-CVJ7NIWC.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-DF2QQKWM.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-DF2QQKWM.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-DF2QQKWM.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-DF2QQKWM.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-DF2QQKWM.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-DF2QQKWM.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-DFARJRPB.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-DFARJRPB.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-DFARJRPB.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-DFARJRPB.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-DFARJRPB.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-DFARJRPB.js.map
+10
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-DFKPZAA6.js
··· 1 + import{a as x,b as R,c as D}from"./chunk-6NXS3EXH.js";import{b as g,c as I,d as L,e as $,f as U}from"./chunk-YI4JYMVI.js";import{c as h}from"./chunk-N6NGHZ4B.js";import{a as C}from"./chunk-2CFBJKYZ.js";import{k as H}from"./chunk-4I6PUBR2.js";import{a as E}from"./chunk-GSG5OS62.js";import{a,f as A}from"./chunk-BFIVCPQF.js";var P=A(E());function z(e){let t=new URL(document.location.href),o=t.searchParams.get("id"),l=t.searchParams.get("cid"),d=t.searchParams.get("name"),p=t.searchParams.get("uri"),s=t.searchParams.get("path"),u=document.querySelector("#container");if(!u)throw new Error("Container not found");let n=u,w=null,c=null;H(async()=>{let r;if(s)r={$type:e.$type,id:h(),name:"temporary",uri:`diffuse://${s}`},c="path";else if(p)r={$type:e.$type,id:h(),name:"temporary",uri:p},c="uri";else{let y=e.source().collection();if(y.state!=="loaded")return;let f=y.data;o?(r=f.find(i=>i.id===o),c="id"):l?(r=f.find(i=>i.cid===l),c="cid"):d&&(r=f.find(i=>i.name===d),c="name")}if(c){if(!r)return m(n,`${e.label} not found`)}else return m(n,"No loader specified");await M(r).catch(v=>{m(n,`Failed to load URI: ${r.uri}`,{context:v,throw:!0})}),r.cid!==w&&(w=r.cid??null,e.render(r))})}a(z,"createLoader");async function T(e){let t=P.parse(e);switch(t.scheme){case"at":return V(e);case"diffuse":return b(e.replace(/^diffuse:\/\//,""));case"http":case"https":return b(e);default:throw new Error(`Unsupported scheme: ${t.scheme}`)}}a(T,"loadURI");async function M(e){if(!e.html&&e.uri){let t=await T(e.uri),o=await C(85,new TextEncoder().encode(t));e.html=t,e.cid=o}return e}a(M,"ensureHTML");function m(e,t,o){if(e.innerHTML=` 2 + <div class="diffuse"> 3 + <a href="./" class="flex" style="color: inherit; text-decoration: none;"> 4 + <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" viewBox="0 0 256 256"><path d="M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16h64a8,8,0,0,0,7.59-5.47l14.83-44.48L163,151.43a8.07,8.07,0,0,0,4.46-4.46l14.62-36.55,44.48-14.83A8,8,0,0,0,232,88V56A16,16,0,0,0,216,40ZM117,152.57a8,8,0,0,0-4.62,4.9L98.23,200H40V160.69l46.34-46.35a8,8,0,0,1,11.32,0l32.84,32.84Zm115-30.84V200a16,16,0,0,1-16,16H137.73a8,8,0,0,1-7.59-10.53l7.94-23.8a8,8,0,0,1,4.61-4.9l35.77-14.31,14.31-35.77a8,8,0,0,1,4.9-4.61l23.8-7.94A8,8,0,0,1,232,121.73Z"></path></svg> 5 + <span style="font-size: var(--fs-base); font-weight: 700;">${t}</span> 6 + </a> 7 + </div> 8 + `,o?.throw)throw o.context??new Error(t)}a(m,"renderError");async function V(e){let t=e.replace(/at:\/\//,"").split("/"),[o,l,d]=t,s=await new g({handleResolver:new U({serviceUrl:"https://public.api.bsky.app"}),didDocumentResolver:new I({methods:{plc:new L,web:new $}})}).resolve(o),u=new R({handler:x({service:s.pds})}),{value:n}=await D(u.get("com.atproto.repo.getRecord",{params:{repo:s.did,collection:l,rkey:d}}));return n.html?n.html:n.uri?T(n.uri):""}a(V,"atprotoLoader");async function b(e){return fetch(e).then(t=>t.text())}a(b,"httpLoader");export{z as a,T as b,M as c,m as d}; 9 + 10 + //# sourceMappingURL=./chunk-DFKPZAA6.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-DFKPZAA6.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-DFKPZAA6.js.map
··· 1 + {"version":3,"sources":["/common/loader.js"],"sourcesContent":["import * as URI from \"fast-uri\";\nimport * as TID from \"@atcute/tid\";\nimport { Client, ok, simpleFetchHandler } from \"@atcute/client\";\nimport {\n CompositeDidDocumentResolver,\n LocalActorResolver,\n PlcDidDocumentResolver,\n WebDidDocumentResolver,\n XrpcHandleResolver,\n} from \"@atcute/identity-resolver\";\n\nimport * as CID from \"~/common/cid.js\";\nimport { effect } from \"~/common/signal.js\";\n\n/**\n * @import {SignalReader} from \"~/common/signal.d.ts\"\n */\n\n/**\n * @typedef {{ html?: string; uri?: string; cid?: string; id: string; name: string; $type: string }} LoadableItem\n */\n\n/**\n * @typedef {object} LoaderConfig\n * @property {string} $type - The atproto $type\n * @property {string} label - Human-readable label for error messages (e.g. \"Facet\", \"Theme\")\n * @property {() => { collection: SignalReader<{ state: \"loading\" } | { state: \"loaded\"; data: LoadableItem[] }> }} source - The collection source\n * @property {(item: LoadableItem) => void} render - Renders the loaded item\n */\n\n/**\n * Sets up the full loader effect: reads URL params, resolves the item\n * from the collection or creates a temporary one, ensures HTML is loaded,\n * and calls the render callback.\n *\n * @param {LoaderConfig} config\n */\nexport function createLoader(config) {\n const docUrl = new URL(document.location.href);\n\n const id = docUrl.searchParams.get(\"id\");\n const cid = docUrl.searchParams.get(\"cid\");\n const name = docUrl.searchParams.get(\"name\");\n const uri = docUrl.searchParams.get(\"uri\");\n const path = docUrl.searchParams.get(\"path\");\n\n const containerNull = document.querySelector(\"#container\");\n if (!containerNull) throw new Error(\"Container not found\");\n\n const container = /** @type {HTMLDivElement} */ (containerNull);\n\n /** @type {string | null} */\n let loadedCid = null;\n\n /** @type {string | null} */\n let loader = null;\n\n effect(async () => {\n /** @type {LoadableItem | undefined} */\n let item = undefined;\n\n if (path) {\n item = {\n $type: config.$type,\n id: TID.now(),\n name: \"temporary\",\n uri: `diffuse://${path}`,\n };\n\n loader = \"path\";\n } else if (uri) {\n item = {\n $type: config.$type,\n id: TID.now(),\n name: \"temporary\",\n uri,\n };\n\n loader = \"uri\";\n } else {\n const source = config.source();\n const col = source.collection();\n if (col.state !== \"loaded\") return;\n const collection = col.data;\n\n if (id) {\n item = collection.find((c) => c.id === id);\n loader = \"id\";\n } else if (cid) {\n item = collection.find((c) => c.cid === cid);\n loader = \"cid\";\n } else if (name) {\n item = collection.find((c) => c.name === name);\n loader = \"name\";\n }\n }\n\n if (!loader) {\n return renderError(container, \"No loader specified\");\n } else if (!item) {\n return renderError(container, `${config.label} not found`);\n }\n\n // Make sure HTML is loaded when a URI is specified\n await ensureHTML(item).catch((err) => {\n renderError(container, `Failed to load URI: ${item.uri}`, {\n context: err,\n throw: true,\n });\n });\n\n if (item.cid === loadedCid) return;\n\n loadedCid = item.cid ?? null;\n config.render(item);\n });\n}\n\n/**\n * @param {string} uri\n */\nexport async function loadURI(uri) {\n const u = URI.parse(uri);\n\n switch (u.scheme) {\n case \"at\":\n return atprotoLoader(uri);\n case \"diffuse\":\n return httpLoader(uri.replace(/^diffuse:\\/\\//, \"\"));\n case \"http\":\n case \"https\":\n return httpLoader(uri);\n default:\n throw new Error(`Unsupported scheme: ${u.scheme}`);\n }\n}\n\n/**\n * Ensures the item has HTML loaded. If it has a URI but no HTML,\n * fetches the HTML and computes the CID.\n *\n * @template {{ html?: string; uri?: string; cid?: string }} T\n * @param {T} item\n * @returns {Promise<T>}\n */\nexport async function ensureHTML(item) {\n if (!item.html && item.uri) {\n const html = await loadURI(item.uri);\n const cid = await CID.create(0x55, new TextEncoder().encode(html));\n\n item.html = html;\n item.cid = cid;\n }\n\n return item;\n}\n\n/**\n * @param {HTMLElement} container\n * @param {string} error\n * @param {{ context?: Error; throw?: boolean }} [options]\n */\nexport function renderError(container, error, options) {\n container.innerHTML = `\n <div class=\"diffuse\">\n <a href=\"./\" class=\"flex\" style=\"color: inherit; text-decoration: none;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"currentColor\" viewBox=\"0 0 256 256\"><path d=\"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16h64a8,8,0,0,0,7.59-5.47l14.83-44.48L163,151.43a8.07,8.07,0,0,0,4.46-4.46l14.62-36.55,44.48-14.83A8,8,0,0,0,232,88V56A16,16,0,0,0,216,40ZM117,152.57a8,8,0,0,0-4.62,4.9L98.23,200H40V160.69l46.34-46.35a8,8,0,0,1,11.32,0l32.84,32.84Zm115-30.84V200a16,16,0,0,1-16,16H137.73a8,8,0,0,1-7.59-10.53l7.94-23.8a8,8,0,0,1,4.61-4.9l35.77-14.31,14.31-35.77a8,8,0,0,1,4.9-4.61l23.8-7.94A8,8,0,0,1,232,121.73Z\"></path></svg>\n <span style=\"font-size: var(--fs-base); font-weight: 700;\">${error}</span>\n </a>\n </div>\n `;\n\n if (options?.throw) {\n throw options.context ?? new Error(error);\n }\n}\n\n////////////////////////////////////////////\n// 🛠️ | LOADERS\n////////////////////////////////////////////\n\n/**\n * @param {string} uri\n * @returns {Promise<string>}\n */\nasync function atprotoLoader(uri) {\n const parts = uri.replace(/at:\\/\\//, \"\").split(\"/\");\n const [repo, collection, rkey] = parts;\n\n const resolver = new LocalActorResolver({\n handleResolver: new XrpcHandleResolver({\n serviceUrl: \"https://public.api.bsky.app\",\n }),\n didDocumentResolver: new CompositeDidDocumentResolver({\n methods: {\n plc: new PlcDidDocumentResolver(),\n web: new WebDidDocumentResolver(),\n },\n }),\n });\n\n const identity = await resolver.resolve(\n /** @type {import(\"@atcute/lexicons/syntax\").ActorIdentifier} */ (repo),\n );\n\n const rpc = new Client({\n handler: simpleFetchHandler({ service: identity.pds }),\n });\n\n /** @type {any} */\n const { value } = await ok(\n /** @type {any} */ (rpc).get(\"com.atproto.repo.getRecord\", {\n params: { repo: identity.did, collection, rkey },\n }),\n );\n\n if (value.html) {\n return value.html;\n }\n\n if (value.uri) {\n return loadURI(value.uri);\n }\n\n return \"\";\n}\n\n/**\n * @param {string} url\n * @returns {Promise<string>}\n */\nasync function httpLoader(url) {\n return fetch(url).then((res) => res.text());\n}\n"],"mappings":"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","names":["URI","createLoader","config","docUrl","id","cid","name","uri","path","containerNull","container","loadedCid","loader","effect","item","now","col","collection","c","renderError","ensureHTML","err","__name","loadURI","u","atprotoLoader","httpLoader","html","create","error","options","parts","repo","rkey","identity","LocalActorResolver","XrpcHandleResolver","CompositeDidDocumentResolver","PlcDidDocumentResolver","WebDidDocumentResolver","rpc","Client","simpleFetchHandler","value","ok","url","res"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-DFKPZAA6.js.map"}
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-EUC5N2NK.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-EUC5N2NK.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-EUC5N2NK.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-EUC5N2NK.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-EUC5N2NK.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-EUC5N2NK.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-FIEVBWUE.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-FIEVBWUE.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-FIEVBWUE.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-FIEVBWUE.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-FIEVBWUE.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-FIEVBWUE.js.map
+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-G2MFBCD7.js
··· 1 + import{a as g}from"./chunk-46J3YOS4.js";import{a as y}from"./chunk-YEYXC3F5.js";import{c as h,d as o}from"./chunk-7VVACK5Z.js";import{a as I}from"./chunk-74D5IDBG.js";import{a as p,b as m}from"./chunk-JQ2XTL3Q.js";import{j as u,n as c,o as n,p as f}from"./chunk-4I6PUBR2.js";import{a as r}from"./chunk-BFIVCPQF.js";var d="diffuse/transformer/output/refiner/initial-contents/initialized",i=class extends y{static{r(this,"InitialContentsTransformer")}static NAME="diffuse/transformer/output/refiner/initial-contents";#e=n(!1);#t=n(!1);constructor(){super();let e=this.base();h(d).then(t=>{c(()=>{this.#t.value=!!t,this.#e.value=!0})});let s={facets:{...e.facets,collection:u(()=>{if(!this.#e.get())return{state:"loading"};let t=e.facets.collection();return t.state!=="loaded"?t:t.data.length>0?(f(()=>this.#t.value)||(this.#t.value=!0,o(d,!0)),{state:"loaded",data:t.data}):this.#t.get()?{state:"loaded",data:t.data}:{state:"loaded",data:g.flatMap(a=>m.includes(a.url)?[{$type:p,id:v("diffuse://"+a.url),description:a.desc,kind:a.kind==="prelude"?"prelude":"interactive",name:a.title,uri:"diffuse://"+a.url}]:[])}}),save:r(async t=>{this.#t.value||(this.#t.value=!0,o(d,!0)),await e.facets.save(t)},"save")},playlistItems:e.playlistItems,tracks:e.tracks,ready:e.ready};this.facets=s.facets,this.playlistItems=s.playlistItems,this.tracks=s.tracks,this.ready=s.ready}},w=i;function v(l){return I(new TextEncoder().encode(l)).toString(16).padStart(8,"0")}r(v,"uriToRkey");var k=i,x="dtor-initial-contents";customElements.define(x,k);export{w as a,k as b,x as c}; 2 + 3 + //# sourceMappingURL=./chunk-G2MFBCD7.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-G2MFBCD7.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-G2MFBCD7.js.map
··· 1 + {"version":3,"sources":["/components/transformer/output/refiner/initial-contents/element.js"],"sourcesContent":["import * as IDB from \"idb-keyval\";\nimport { xxh32r } from \"xxh32/dist/raw.js\";\n\nimport { batch, computed, signal, untracked } from \"~/common/signal.js\";\nimport { OutputTransformer } from \"../../base.js\";\n\nimport { STARTING_SET_URIS, TYPE } from \"~/common/facets/constants.js\";\nimport facets from \"~/_data/facets.json\" with {\n type: \"json\",\n};\n\n/**\n * @import {OutputManagerDeputy} from \"~/components/output/types.d.ts\"\n */\n\nconst IDB_KEY =\n \"diffuse/transformer/output/refiner/initial-contents/initialized\";\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\n/**\n * @extends {OutputTransformer}\n */\nclass InitialContentsTransformer extends OutputTransformer {\n static NAME = \"diffuse/transformer/output/refiner/initial-contents\";\n\n #flagLoaded = signal(false);\n #initialized = signal(false);\n\n constructor() {\n super();\n\n const base = this.base();\n\n // Load flag from IDB; gate collection() until resolved to prevent\n // a flash of defaults for a user who has previously cleared their collection.\n IDB.get(IDB_KEY).then((v) => {\n batch(() => {\n this.#initialized.value = !!v;\n this.#flagLoaded.value = true;\n });\n });\n\n /** @type {OutputManagerDeputy} */\n const manager = {\n facets: {\n ...base.facets,\n collection: computed(() => {\n if (!this.#flagLoaded.get()) return { state: \"loading\" };\n\n const col = base.facets.collection();\n if (col.state !== \"loaded\") return col;\n\n if (col.data.length > 0) {\n // Set the flag the first time we observe non-empty data.\n // Covers data arriving from another device via sync.\n // untracked read avoids a circular dependency; the write still\n // notifies subscribers and queues a re-evaluation.\n if (!untracked(() => this.#initialized.value)) {\n this.#initialized.value = true;\n IDB.set(IDB_KEY, true); // fire-and-forget\n }\n\n return { state: \"loaded\", data: col.data };\n }\n\n // Tracked read: keeps the computed subscribed to #initialized\n // so it re-runs if save() sets it to true with an empty array.\n if (this.#initialized.get()) {\n return { state: \"loaded\", data: col.data };\n }\n\n // Determine starting set\n const data = facets.flatMap((facet) => {\n if (STARTING_SET_URIS.includes(facet.url)) {\n return [{\n $type: TYPE,\n id: uriToRkey(\"diffuse://\" + facet.url),\n description: facet.desc,\n kind: facet.kind === \"prelude\"\n ? /** @type {const} */ (\"prelude\")\n : /** @type {const} */ (\"interactive\"),\n name: facet.title,\n uri: \"diffuse://\" + facet.url,\n }];\n }\n\n return [];\n });\n\n return { state: \"loaded\", data };\n }),\n\n save: async (newFacets) => {\n // Set the flag on any explicit save (covers the case where the\n // user's first action is removing a default from the list).\n if (!this.#initialized.value) {\n this.#initialized.value = true;\n IDB.set(IDB_KEY, true); // fire-and-forget\n }\n\n await base.facets.save(newFacets);\n },\n },\n\n playlistItems: base.playlistItems,\n tracks: base.tracks,\n ready: base.ready,\n };\n\n this.facets = manager.facets;\n this.playlistItems = manager.playlistItems;\n this.tracks = manager.tracks;\n this.ready = manager.ready;\n }\n}\n\nexport default InitialContentsTransformer;\n\n/** @param {string} uri */\nfunction uriToRkey(uri) {\n return xxh32r(new TextEncoder().encode(uri)).toString(16).padStart(8, \"0\");\n}\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = InitialContentsTransformer;\nexport const NAME = \"dtor-initial-contents\";\n\ncustomElements.define(NAME, CLASS);\n"],"mappings":"2TAeA,IAAMA,EACJ,kEASIC,EAAN,cAAyCC,CAAkB,CAzB3D,MAyB2D,CAAAC,EAAA,mCACzD,OAAO,KAAO,sDAEdC,GAAcC,EAAO,EAAK,EAC1BC,GAAeD,EAAO,EAAK,EAE3B,aAAc,CACZ,MAAM,EAEN,IAAME,EAAO,KAAK,KAAK,EAInBC,EAAIR,CAAO,EAAE,KAAMS,GAAM,CAC3BC,EAAM,IAAM,CACV,KAAKJ,GAAa,MAAQ,CAAC,CAACG,EAC5B,KAAKL,GAAY,MAAQ,EAC3B,CAAC,CACH,CAAC,EAGD,IAAMO,EAAU,CACd,OAAQ,CACN,GAAGJ,EAAK,OACR,WAAYK,EAAS,IAAM,CACzB,GAAI,CAAC,KAAKR,GAAY,IAAI,EAAG,MAAO,CAAE,MAAO,SAAU,EAEvD,IAAMS,EAAMN,EAAK,OAAO,WAAW,EACnC,OAAIM,EAAI,QAAU,SAAiBA,EAE/BA,EAAI,KAAK,OAAS,GAKfC,EAAU,IAAM,KAAKR,GAAa,KAAK,IAC1C,KAAKA,GAAa,MAAQ,GACtBS,EAAIf,EAAS,EAAI,GAGhB,CAAE,MAAO,SAAU,KAAMa,EAAI,IAAK,GAKvC,KAAKP,GAAa,IAAI,EACjB,CAAE,MAAO,SAAU,KAAMO,EAAI,IAAK,EAqBpC,CAAE,MAAO,SAAU,KAjBbG,EAAO,QAASC,GACvBC,EAAkB,SAASD,EAAM,GAAG,EAC/B,CAAC,CACN,MAAOE,EACP,GAAIC,EAAU,aAAeH,EAAM,GAAG,EACtC,YAAaA,EAAM,KACnB,KAAMA,EAAM,OAAS,UACK,UACA,cAC1B,KAAMA,EAAM,MACZ,IAAK,aAAeA,EAAM,GAC5B,CAAC,EAGI,CAAC,CACT,CAE8B,CACjC,CAAC,EAED,KAAMd,EAAA,MAAOkB,GAAc,CAGpB,KAAKf,GAAa,QACrB,KAAKA,GAAa,MAAQ,GACtBS,EAAIf,EAAS,EAAI,GAGvB,MAAMO,EAAK,OAAO,KAAKc,CAAS,CAClC,EATM,OAUR,EAEA,cAAed,EAAK,cACpB,OAAQA,EAAK,OACb,MAAOA,EAAK,KACd,EAEA,KAAK,OAASI,EAAQ,OACtB,KAAK,cAAgBA,EAAQ,cAC7B,KAAK,OAASA,EAAQ,OACtB,KAAK,MAAQA,EAAQ,KACvB,CACF,EAEOW,EAAQrB,EAGf,SAASmB,EAAUG,EAAK,CACtB,OAAOC,EAAO,IAAI,YAAY,EAAE,OAAOD,CAAG,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CAC3E,CAFSpB,EAAAiB,EAAA,aAQF,IAAMK,EAAQxB,EACRyB,EAAO,wBAEpB,eAAe,OAAOA,EAAMD,CAAK","names":["IDB_KEY","InitialContentsTransformer","OutputTransformer","__name","#flagLoaded","signal","#initialized","base","get","v","batch","manager","computed","col","untracked","set","facets_default","facet","STARTING_SET_URIS","TYPE","uriToRkey","newFacets","element_default","uri","xxh32r","CLASS","NAME"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-G2MFBCD7.js.map"}
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-GCMRUHRX.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-GCMRUHRX.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-GCMRUHRX.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-GCMRUHRX.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-GCMRUHRX.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-GCMRUHRX.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-GDPVB5VQ.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-GDPVB5VQ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-GDPVB5VQ.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-GDPVB5VQ.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-GDPVB5VQ.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-GDPVB5VQ.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-GEPOAB4D.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-GEPOAB4D.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-GEPOAB4D.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-GEPOAB4D.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-GEPOAB4D.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-GEPOAB4D.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-GKONEEZQ.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-GKONEEZQ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-GKONEEZQ.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-GKONEEZQ.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-GKONEEZQ.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-GKONEEZQ.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-GSG5OS62.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-GSG5OS62.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-GSG5OS62.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-GSG5OS62.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-GSG5OS62.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-GSG5OS62.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-GUCS2UX4.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-GUCS2UX4.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-GUCS2UX4.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-GUCS2UX4.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-GUCS2UX4.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-GUCS2UX4.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-H2A3SXZU.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-H2A3SXZU.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-H2A3SXZU.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-H2A3SXZU.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-H2A3SXZU.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-H2A3SXZU.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-H2EOMKTB.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-H2EOMKTB.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-H2EOMKTB.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-H2EOMKTB.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-H2EOMKTB.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-H2EOMKTB.js.map
+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-HB7BQ45T.js
··· 1 + import{c as r}from"./chunk-B4XMDCCS.js";import{a}from"./chunk-4KWB43C2.js";import{k as o}from"./chunk-4I6PUBR2.js";import{a as l}from"./chunk-BFIVCPQF.js";var n=document.createElement("div");n.id="elements-container";document.body.appendChild(n);var u=!1,c=!1;o(()=>{let e=r.signals.orchestrator.output();if(!e)return;let t=e.facets.collection();t.state==="loaded"&&u===!1&&(u=!0,a(t.data,n).then(()=>{c=!0}))});async function h(){let e=await r.orchestrator.output();return e.hasSelected()&&!e.selected()&&!c&&await new Promise(t=>{let s=!1,d=o(()=>{if(s){d();return}e.selected()&&(s=!0,t(null))})}),e}l(h,"output");export{h as a}; 2 + 3 + //# sourceMappingURL=./chunk-HB7BQ45T.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-HB7BQ45T.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-HB7BQ45T.js.map
··· 1 + {"version":3,"sources":["/common/pages/output.js"],"sourcesContent":["import { effect } from \"~/common/signal.js\";\nimport { insertPreludes } from \"~/common/facets/prelude.js\";\nimport foundation from \"~/common/foundation.js\";\n\nconst elements = document.createElement(\"div\");\nelements.id = \"elements-container\";\ndocument.body.appendChild(elements);\n\nlet preludeInserted = false;\nlet preludeLoaded = false;\n\neffect(() => {\n const out = foundation.signals.orchestrator.output();\n if (!out) return;\n\n const col = out.facets.collection();\n if (col.state !== \"loaded\") return;\n\n if (preludeInserted === false) {\n preludeInserted = true;\n insertPreludes(col.data, elements).then(() => {\n preludeLoaded = true;\n });\n }\n});\n\nexport async function output() {\n const out = await foundation.orchestrator.output();\n\n if (out.hasSelected() && !out.selected() && !preludeLoaded) {\n await new Promise((resolve) => {\n let resolved = false;\n\n const stop = effect(() => {\n if (resolved) {\n stop();\n return;\n }\n\n const s = out.selected();\n\n if (s) {\n resolved = true;\n resolve(null);\n }\n });\n });\n }\n\n return out;\n}\n"],"mappings":"2JAIA,IAAMA,EAAW,SAAS,cAAc,KAAK,EAC7CA,EAAS,GAAK,qBACd,SAAS,KAAK,YAAYA,CAAQ,EAElC,IAAIC,EAAkB,GAClBC,EAAgB,GAEpBC,EAAO,IAAM,CACX,IAAMC,EAAMC,EAAW,QAAQ,aAAa,OAAO,EACnD,GAAI,CAACD,EAAK,OAEV,IAAME,EAAMF,EAAI,OAAO,WAAW,EAC9BE,EAAI,QAAU,UAEdL,IAAoB,KACtBA,EAAkB,GAClBM,EAAeD,EAAI,KAAMN,CAAQ,EAAE,KAAK,IAAM,CAC5CE,EAAgB,EAClB,CAAC,EAEL,CAAC,EAED,eAAsBM,GAAS,CAC7B,IAAMJ,EAAM,MAAMC,EAAW,aAAa,OAAO,EAEjD,OAAID,EAAI,YAAY,GAAK,CAACA,EAAI,SAAS,GAAK,CAACF,GAC3C,MAAM,IAAI,QAASO,GAAY,CAC7B,IAAIC,EAAW,GAETC,EAAOR,EAAO,IAAM,CACxB,GAAIO,EAAU,CACZC,EAAK,EACL,MACF,CAEUP,EAAI,SAAS,IAGrBM,EAAW,GACXD,EAAQ,IAAI,EAEhB,CAAC,CACH,CAAC,EAGIL,CACT,CAxBsBQ,EAAAJ,EAAA","names":["elements","preludeInserted","preludeLoaded","effect","out","foundation_default","col","insertPreludes","output","resolve","resolved","stop","__name"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-HB7BQ45T.js.map"}
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-HDWT7CXU.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-HDWT7CXU.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-HDWT7CXU.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-HDWT7CXU.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-HDWT7CXU.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-HDWT7CXU.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-HWJBSPKT.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-HWJBSPKT.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-HWJBSPKT.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-HWJBSPKT.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-HWJBSPKT.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-HWJBSPKT.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-HXFUI6RJ.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-HXFUI6RJ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-HXFUI6RJ.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-HXFUI6RJ.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-HXFUI6RJ.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-HXFUI6RJ.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-HY7Y7RUV.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-HY7Y7RUV.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-HY7Y7RUV.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-HY7Y7RUV.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-HY7Y7RUV.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-HY7Y7RUV.js.map
+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-IGGXGJJG.js
··· 1 + import{b as r}from"./chunk-DFKPZAA6.js";import{c}from"./chunk-N6NGHZ4B.js";import{a as d}from"./chunk-2CFBJKYZ.js";import{a}from"./chunk-BFIVCPQF.js";async function D({description:i,kind:t,name:f,uri:n},{fetchHTML:m}){let e=m?await r(n):void 0,s=e?await d(85,new TextEncoder().encode(e)):void 0,o=new Date().toISOString();return{$type:"sh.diffuse.output.facet",createdAt:o,id:c(),cid:s,description:i,html:e,name:f,kind:t==="interactive"||t==="prelude"?t:void 0,updatedAt:o,uri:n}}a(D,"facetFromURI");export{D as a}; 2 + 3 + //# sourceMappingURL=./chunk-IGGXGJJG.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-IGGXGJJG.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-IGGXGJJG.js.map
··· 1 + {"version":3,"sources":["/common/facets/utils.js"],"sourcesContent":["import * as TID from \"@atcute/tid\";\n\nimport { loadURI } from \"../loader.js\";\nimport * as CID from \"../cid.js\";\n\n/**\n * @import {Facet} from \"~/definitions/types.d.ts\"\n */\n\n/**\n * @param {{ description?: string; kind: string | undefined; name: string; uri: string }} _args\n * @param {{ fetchHTML: boolean }} options\n */\nexport async function facetFromURI(\n { description, kind, name, uri },\n { fetchHTML },\n) {\n const html = fetchHTML ? await loadURI(uri) : undefined;\n const cid = html\n ? await CID.create(0x55, new TextEncoder().encode(html))\n : undefined;\n const timestamp = new Date().toISOString();\n\n /** @type {Facet} */\n const facet = {\n $type: \"sh.diffuse.output.facet\",\n createdAt: timestamp,\n id: TID.now(),\n cid,\n description,\n html,\n name,\n kind: kind === \"interactive\" || kind === \"prelude\" ? kind : undefined,\n updatedAt: timestamp,\n uri,\n };\n\n return facet;\n}\n"],"mappings":"sJAaA,eAAsBA,EACpB,CAAE,YAAAC,EAAa,KAAAC,EAAM,KAAAC,EAAM,IAAAC,CAAI,EAC/B,CAAE,UAAAC,CAAU,EACZ,CACA,IAAMC,EAAOD,EAAY,MAAME,EAAQH,CAAG,EAAI,OACxCI,EAAMF,EACR,MAAUG,EAAO,GAAM,IAAI,YAAY,EAAE,OAAOH,CAAI,CAAC,EACrD,OACEI,EAAY,IAAI,KAAK,EAAE,YAAY,EAgBzC,MAbc,CACZ,MAAO,0BACP,UAAWA,EACX,GAAQC,EAAI,EACZ,IAAAH,EACA,YAAAP,EACA,KAAAK,EACA,KAAAH,EACA,KAAMD,IAAS,eAAiBA,IAAS,UAAYA,EAAO,OAC5D,UAAWQ,EACX,IAAAN,CACF,CAGF,CAzBsBQ,EAAAZ,EAAA","names":["facetFromURI","description","kind","name","uri","fetchHTML","html","loadURI","cid","create","timestamp","now","__name"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-IGGXGJJG.js.map"}
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-IUBFNQRH.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-IUBFNQRH.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-IUBFNQRH.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-IUBFNQRH.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-IUBFNQRH.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-IUBFNQRH.js.map
+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-JQ2XTL3Q.js
··· 1 + var t="sh.diffuse.output.facet",e=["facets/connect/index.html","themes/blur/artwork-controller/facet/index.html","facets/data/input-bundle/index.html","facets/data/output-bundle/index.html","facets/data/process-tracks/prelude/index.html","facets/playback/auto-queue/prelude/index.html"];export{t as a,e as b}; 2 + 3 + //# sourceMappingURL=./chunk-JQ2XTL3Q.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-JQ2XTL3Q.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-JQ2XTL3Q.js.map
··· 1 + {"version":3,"sources":["/common/facets/constants.js"],"sourcesContent":["export const TYPE = /** @type {const} */ (\"sh.diffuse.output.facet\");\n\nexport const STARTING_SET_URIS = [\n // INTERACTIVE\n \"facets/connect/index.html\",\n \"themes/blur/artwork-controller/facet/index.html\",\n\n // PRELUDES\n \"facets/data/input-bundle/index.html\",\n \"facets/data/output-bundle/index.html\",\n \"facets/data/process-tracks/prelude/index.html\",\n \"facets/playback/auto-queue/prelude/index.html\",\n];\n"],"mappings":"AAAO,IAAMA,EAA6B,0BAE7BC,EAAoB,CAE/B,4BACA,kDAGA,sCACA,uCACA,gDACA,+CACF","names":["TYPE","STARTING_SET_URIS"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-JQ2XTL3Q.js.map"}
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-K2CRUTCH.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-K2CRUTCH.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-K2CRUTCH.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-K2CRUTCH.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-K2CRUTCH.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-K2CRUTCH.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-K6BH4SFA.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-K6BH4SFA.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-K6BH4SFA.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-K6BH4SFA.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-K6BH4SFA.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-K6BH4SFA.js.map
+47
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-L4VK33Z2.js
··· 1 + import{a as n,g as c}from"./chunk-MWEXZQ4O.js";import{b as u}from"./chunk-ZMYK46VQ.js";import{a as l}from"./chunk-IGGXGJJG.js";import{a as o}from"./chunk-BFIVCPQF.js";function E(){let e=document.getElementById("add-from-uri-dialog");e||(e=document.createElement("dialog"),e.id="add-from-uri-dialog",e.style.cssText="position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); margin: 0;",c(n` 2 + <form id="add-from-uri-form"> 3 + <p style="font-size: var(--fs-sm)"> 4 + <strong>Load a facet from a URI.</strong> Currently supported URI schemes: 5 + <code>https</code>, <code>at</code> (AT Protocol) and <code>diffuse</code> 6 + (references internal facets). 7 + </p> 8 + 9 + <div style="display: flex; flex-direction: column; gap: var(--space-xs)"> 10 + <div> 11 + <label>Name</label> 12 + <input 13 + id="add-uri-name" 14 + type="text" 15 + placeholder="My Feature Name" 16 + required 17 + autocomplete="off" 18 + /> 19 + </div> 20 + <div> 21 + <label>Kind</label> 22 + <select id="add-uri-kind"> 23 + <option value="interactive">interface</option> 24 + <option value="prelude">feature</option> 25 + </select> 26 + </div> 27 + <div> 28 + <label>URI</label> 29 + <input 30 + id="add-uri-uri" 31 + type="url" 32 + placeholder="at://..." 33 + required 34 + autocomplete="off" 35 + /> 36 + </div> 37 + </div> 38 + <div style="display: flex; gap: var(--space-xs); margin-top: var(--space-sm)"> 39 + <button type="submit" class="button--bg-accent">Add</button> 40 + <button type="button" id="add-uri-cancel"> 41 + Cancel 42 + </button> 43 + </div> 44 + </form> 45 + `,e),document.body.appendChild(e),e.querySelector("#add-uri-cancel")?.addEventListener("click",()=>{e.close()}),e.querySelector("#add-from-uri-form")?.addEventListener("submit",async s=>{s.preventDefault();let m=e?.querySelector("#add-uri-name"),f=e?.querySelector("#add-uri-kind"),p=e?.querySelector("#add-uri-uri"),d=m?.value.trim()??"",v=f?.value??"interactive",i=p?.value.trim()??"";if(!d||!i)return;let y=await l({kind:v,name:d,uri:i},{fetchHTML:!1});await u(y),e.close()}));let t=e.querySelector("#add-uri-name"),a=e.querySelector("#add-uri-kind"),r=e.querySelector("#add-uri-uri");t&&(t.value=""),a&&(a.value="interactive"),r&&(r.value=""),e.showModal()}o(E,"openAddFromURIModal");export{E as a}; 46 + 47 + //# sourceMappingURL=./chunk-L4VK33Z2.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-L4VK33Z2.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-L4VK33Z2.js.map
··· 1 + {"version":3,"sources":["/common/pages/from-uri.js"],"sourcesContent":["import { html, render } from \"lit-html\";\n\nimport { facetFromURI } from \"~/common/facets/utils.js\";\nimport { saveFacet } from \"./crud.js\";\n\n////////////////////////////////////////////\n// DIALOG\n////////////////////////////////////////////\n\nexport function openAddFromURIModal() {\n let dialog = /** @type {HTMLDialogElement | null} */ (\n document.getElementById(\"add-from-uri-dialog\")\n );\n\n if (!dialog) {\n dialog = /** @type {HTMLDialogElement} */ (\n document.createElement(\"dialog\")\n );\n\n dialog.id = \"add-from-uri-dialog\";\n dialog.style.cssText =\n \"position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); margin: 0;\";\n\n render(\n html`\n <form id=\"add-from-uri-form\">\n <p style=\"font-size: var(--fs-sm)\">\n <strong>Load a facet from a URI.</strong> Currently supported URI schemes:\n <code>https</code>, <code>at</code> (AT Protocol) and <code>diffuse</code>\n (references internal facets).\n </p>\n\n <div style=\"display: flex; flex-direction: column; gap: var(--space-xs)\">\n <div>\n <label>Name</label>\n <input\n id=\"add-uri-name\"\n type=\"text\"\n placeholder=\"My Feature Name\"\n required\n autocomplete=\"off\"\n />\n </div>\n <div>\n <label>Kind</label>\n <select id=\"add-uri-kind\">\n <option value=\"interactive\">interface</option>\n <option value=\"prelude\">feature</option>\n </select>\n </div>\n <div>\n <label>URI</label>\n <input\n id=\"add-uri-uri\"\n type=\"url\"\n placeholder=\"at://...\"\n required\n autocomplete=\"off\"\n />\n </div>\n </div>\n <div style=\"display: flex; gap: var(--space-xs); margin-top: var(--space-sm)\">\n <button type=\"submit\" class=\"button--bg-accent\">Add</button>\n <button type=\"button\" id=\"add-uri-cancel\">\n Cancel\n </button>\n </div>\n </form>\n `,\n dialog,\n );\n\n document.body.appendChild(dialog);\n\n dialog.querySelector(\"#add-uri-cancel\")?.addEventListener(\"click\", () => {\n /** @type {HTMLDialogElement} */ (dialog).close();\n });\n\n dialog.querySelector(\"#add-from-uri-form\")?.addEventListener(\n \"submit\",\n async (e) => {\n e.preventDefault();\n\n const nameEl = /** @type {HTMLInputElement} */ (\n dialog?.querySelector(\"#add-uri-name\")\n );\n\n const kindEl = /** @type {HTMLSelectElement} */ (\n dialog?.querySelector(\"#add-uri-kind\")\n );\n\n const uriEl = /** @type {HTMLInputElement} */ (\n dialog?.querySelector(\"#add-uri-uri\")\n );\n\n const name = nameEl?.value.trim() ?? \"\";\n const kind = kindEl?.value ?? \"interactive\";\n const uri = uriEl?.value.trim() ?? \"\";\n if (!name || !uri) return;\n\n const facet = await facetFromURI({ kind, name, uri }, {\n fetchHTML: false,\n });\n\n await saveFacet(facet);\n\n /** @type {HTMLDialogElement} */ (dialog).close();\n },\n );\n }\n\n const nameEl = /** @type {HTMLInputElement} */ (\n dialog.querySelector(\"#add-uri-name\")\n );\n const kindEl = /** @type {HTMLSelectElement} */ (\n dialog.querySelector(\"#add-uri-kind\")\n );\n const uriEl = /** @type {HTMLInputElement} */ (\n dialog.querySelector(\"#add-uri-uri\")\n );\n if (nameEl) nameEl.value = \"\";\n if (kindEl) kindEl.value = \"interactive\";\n if (uriEl) uriEl.value = \"\";\n\n dialog.showModal();\n}\n"],"mappings":"uKASO,SAASA,GAAsB,CACpC,IAAIC,EACF,SAAS,eAAe,qBAAqB,EAG1CA,IACHA,EACE,SAAS,cAAc,QAAQ,EAGjCA,EAAO,GAAK,sBACZA,EAAO,MAAM,QACX,qFAEFC,EACEC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QA6CAF,CACF,EAEA,SAAS,KAAK,YAAYA,CAAM,EAEhCA,EAAO,cAAc,iBAAiB,GAAG,iBAAiB,QAAS,IAAM,CACrCA,EAAQ,MAAM,CAClD,CAAC,EAEDA,EAAO,cAAc,oBAAoB,GAAG,iBAC1C,SACA,MAAOG,GAAM,CACXA,EAAE,eAAe,EAEjB,IAAMC,EACJJ,GAAQ,cAAc,eAAe,EAGjCK,EACJL,GAAQ,cAAc,eAAe,EAGjCM,EACJN,GAAQ,cAAc,cAAc,EAGhCO,EAAOH,GAAQ,MAAM,KAAK,GAAK,GAC/BI,EAAOH,GAAQ,OAAS,cACxBI,EAAMH,GAAO,MAAM,KAAK,GAAK,GACnC,GAAI,CAACC,GAAQ,CAACE,EAAK,OAEnB,IAAMC,EAAQ,MAAMC,EAAa,CAAE,KAAAH,EAAM,KAAAD,EAAM,IAAAE,CAAI,EAAG,CACpD,UAAW,EACb,CAAC,EAED,MAAMG,EAAUF,CAAK,EAEaV,EAAQ,MAAM,CAClD,CACF,GAGF,IAAMI,EACJJ,EAAO,cAAc,eAAe,EAEhCK,EACJL,EAAO,cAAc,eAAe,EAEhCM,EACJN,EAAO,cAAc,cAAc,EAEjCI,IAAQA,EAAO,MAAQ,IACvBC,IAAQA,EAAO,MAAQ,eACvBC,IAAOA,EAAM,MAAQ,IAEzBN,EAAO,UAAU,CACnB,CApHgBa,EAAAd,EAAA","names":["openAddFromURIModal","dialog","B","T","e","nameEl","kindEl","uriEl","name","kind","uri","facet","facetFromURI","saveFacet","__name"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-L4VK33Z2.js.map"}
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-M33EQ5FN.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-M33EQ5FN.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-M33EQ5FN.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-M33EQ5FN.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-M33EQ5FN.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-M33EQ5FN.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-MWEXZQ4O.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-MWEXZQ4O.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-MWEXZQ4O.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-MWEXZQ4O.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-MWEXZQ4O.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-MWEXZQ4O.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-N6NGHZ4B.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-N6NGHZ4B.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-N6NGHZ4B.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-N6NGHZ4B.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-N6NGHZ4B.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-N6NGHZ4B.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-NBKJT6AU.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-NBKJT6AU.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-NBKJT6AU.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/blur/index.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-NBKJT6AU.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-NBKJT6AU.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-NCKFDOQK.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-NCKFDOQK.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-NCKFDOQK.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-NCKFDOQK.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-NCKFDOQK.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-NCKFDOQK.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-NQMEX7CZ.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-NQMEX7CZ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-NQMEX7CZ.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-NQMEX7CZ.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-NQMEX7CZ.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-NQMEX7CZ.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-PARSEOEI.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-PARSEOEI.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-PARSEOEI.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-PARSEOEI.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-PARSEOEI.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-PARSEOEI.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-PBZITCUN.js
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-PBZITCUN.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-PBZITCUN.js.br
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-PBZITCUN.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-PBZITCUN.js.map
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-PBZITCUN.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-QVM63RP5.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-QVM63RP5.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-QVM63RP5.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-QVM63RP5.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-QVM63RP5.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-QVM63RP5.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-RC5PZNFM.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-RC5PZNFM.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-RC5PZNFM.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-RC5PZNFM.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-RC5PZNFM.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-RC5PZNFM.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-RCK53RB4.js
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-RCK53RB4.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-RCK53RB4.js.br
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-RCK53RB4.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-RCK53RB4.js.map
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-RCK53RB4.js.map
+14
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-RHKSCICU.js
··· 1 + import{a as i}from"./chunk-4KWB43C2.js";import{a as n}from"./chunk-BFIVCPQF.js";async function p(){let t=document.querySelector("#add-sample-content");if(!t)return;t.setAttribute("disabled",""),t.innerHTML=`<span> 2 + <i class="ph-fill ph-hourglass-medium"></i> 3 + Loading dependencies 4 + </span>`;let{default:a}=await import("./common/foundation.js"),s=await import("./common/output.js"),r=await a.configurator.input(),e=await a.orchestrator.output(),c=await a.orchestrator.processTracks({disableWhenReady:!0});await i(await s.data(e.facets));let o=r.querySelector("di-s3");if(!o)throw new Error("S3 input not found");t.innerHTML=`<span> 5 + <i class="ph-fill ph-hourglass-medium"></i> 6 + Adding source 7 + </span>`;let d=await o.demo();await e.tracks.save([...await s.data(e.tracks),d.track]),t.innerHTML=`<span> 8 + <i class="ph-fill ph-hourglass-medium"></i> 9 + Processing source 10 + </span>`,await c.process(),t.innerHTML=`<span> 11 + <i class="ph-fill ph-check-fat"></i> Added 12 + </span>`}n(p,"addSampleContent");function l(){document.querySelector("#add-sample-content")?.addEventListener("click",p)}n(l,"setupSampleButton");export{l as a}; 13 + 14 + //# sourceMappingURL=./chunk-RHKSCICU.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-RHKSCICU.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-RHKSCICU.js.map
··· 1 + {"version":3,"sources":["/common/pages/guide.js"],"sourcesContent":["import { insertPreludes } from \"../facets/prelude.js\";\n\n////////////////////////////////////////////\n// DEMO\n////////////////////////////////////////////\n\nasync function addSampleContent() {\n const addDemoBtn = document.querySelector(\"#add-sample-content\");\n if (!addDemoBtn) return;\n\n addDemoBtn.setAttribute(\"disabled\", \"\");\n addDemoBtn.innerHTML = `<span>\n <i class=\"ph-fill ph-hourglass-medium\"></i>\n Loading dependencies\n </span>`;\n\n const { default: foundation } = await import(\"~/common/foundation.js\");\n const Output = await import(\"~/common/output.js\");\n\n const input = await foundation.configurator.input();\n const output = await foundation.orchestrator.output();\n const pto = await foundation.orchestrator.processTracks({\n disableWhenReady: true,\n });\n\n // Execute prelude\n await insertPreludes(\n await Output.data(output.facets),\n );\n\n /** @type {import(\"~/components/input/s3/element.js\").CLASS | null} */\n const s3 = input.querySelector(\"di-s3\");\n\n if (!s3) {\n throw new Error(\"S3 input not found\");\n }\n\n addDemoBtn.innerHTML = `<span>\n <i class=\"ph-fill ph-hourglass-medium\"></i>\n Adding source\n </span>`;\n\n const demo = await s3.demo();\n\n await output.tracks.save([\n ...(await Output.data(output.tracks)),\n demo.track,\n ]);\n\n addDemoBtn.innerHTML = `<span>\n <i class=\"ph-fill ph-hourglass-medium\"></i>\n Processing source\n </span>`;\n\n await pto.process();\n\n addDemoBtn.innerHTML = `<span>\n <i class=\"ph-fill ph-check-fat\"></i> Added\n </span>`;\n}\n\nexport function setupSampleButton() {\n const addDemoBtn = document.querySelector(\"#add-sample-content\");\n addDemoBtn?.addEventListener(\"click\", addSampleContent);\n}\n"],"mappings":"gFAMA,eAAeA,GAAmB,CAChC,IAAMC,EAAa,SAAS,cAAc,qBAAqB,EAC/D,GAAI,CAACA,EAAY,OAEjBA,EAAW,aAAa,WAAY,EAAE,EACtCA,EAAW,UAAY;AAAA;AAAA;AAAA,WAKvB,GAAM,CAAE,QAASC,CAAW,EAAI,KAAM,QAAO,wBAAwB,EAC/DC,EAAS,KAAM,QAAO,oBAAoB,EAE1CC,EAAQ,MAAMF,EAAW,aAAa,MAAM,EAC5CG,EAAS,MAAMH,EAAW,aAAa,OAAO,EAC9CI,EAAM,MAAMJ,EAAW,aAAa,cAAc,CACtD,iBAAkB,EACpB,CAAC,EAGD,MAAMK,EACJ,MAAMJ,EAAO,KAAKE,EAAO,MAAM,CACjC,EAGA,IAAMG,EAAKJ,EAAM,cAAc,OAAO,EAEtC,GAAI,CAACI,EACH,MAAM,IAAI,MAAM,oBAAoB,EAGtCP,EAAW,UAAY;AAAA;AAAA;AAAA,WAKvB,IAAMQ,EAAO,MAAMD,EAAG,KAAK,EAE3B,MAAMH,EAAO,OAAO,KAAK,CACvB,GAAI,MAAMF,EAAO,KAAKE,EAAO,MAAM,EACnCI,EAAK,KACP,CAAC,EAEDR,EAAW,UAAY;AAAA;AAAA;AAAA,WAKvB,MAAMK,EAAI,QAAQ,EAElBL,EAAW,UAAY;AAAA;AAAA,UAGzB,CArDeS,EAAAV,EAAA,oBAuDR,SAASW,GAAoB,CACf,SAAS,cAAc,qBAAqB,GACnD,iBAAiB,QAASX,CAAgB,CACxD,CAHgBU,EAAAC,EAAA","names":["addSampleContent","addDemoBtn","foundation","Output","input","output","pto","insertPreludes","s3","demo","__name","setupSampleButton"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-RHKSCICU.js.map"}
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-RJJBOBOS.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-RJJBOBOS.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-RJJBOBOS.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-RJJBOBOS.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-RJJBOBOS.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-RJJBOBOS.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-SVXEMCXP.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-SVXEMCXP.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-SVXEMCXP.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-SVXEMCXP.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-SVXEMCXP.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-SVXEMCXP.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-TAWLQTA5.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-TAWLQTA5.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-TAWLQTA5.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-TAWLQTA5.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-TAWLQTA5.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-TAWLQTA5.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-TPYPBODG.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-TPYPBODG.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-TPYPBODG.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-TPYPBODG.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-TPYPBODG.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-TPYPBODG.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-TTDW3IDD.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-TTDW3IDD.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-TTDW3IDD.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-TTDW3IDD.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-TTDW3IDD.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-TTDW3IDD.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-U2FEVQ4T.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-U2FEVQ4T.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-U2FEVQ4T.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-U2FEVQ4T.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-U2FEVQ4T.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-U2FEVQ4T.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-U34JFBGC.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-U34JFBGC.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-U34JFBGC.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-U34JFBGC.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-U34JFBGC.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-U34JFBGC.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-U6O2MSBF.js
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-U6O2MSBF.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-U6O2MSBF.js.br
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-U6O2MSBF.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-U6O2MSBF.js.map
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-U6O2MSBF.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-UYT7NSKP.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-UYT7NSKP.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-UYT7NSKP.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-UYT7NSKP.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-UYT7NSKP.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-UYT7NSKP.js.map
+34
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-V7SGZC62.js
··· 1 + import{b as _r}from"./chunk-ZMYK46VQ.js";import{a as wh}from"./chunk-TPYPBODG.js";import{a as kh}from"./chunk-HB7BQ45T.js";import{a as xh}from"./chunk-IGGXGJJG.js";import{b as bh}from"./chunk-DFKPZAA6.js";import{c as yh}from"./chunk-N6NGHZ4B.js";import{a as Yr}from"./chunk-2CFBJKYZ.js";import{o as Vr}from"./chunk-4I6PUBR2.js";import{a as c}from"./chunk-BFIVCPQF.js";var Lr=[],Th=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,t=0;e<n.length;e++)(e%2?Th:Lr).push(t=t+n[e])})();function gp(n){if(n<768)return!1;for(let e=0,t=Lr.length;;){let i=e+t>>1;if(n<Lr[i])t=i;else if(n>=Th[i])e=i+1;else return!0;if(e==t)return!1}}c(gp,"isExtendingChar");function vh(n){return n>=127462&&n<=127487}c(vh,"isRegionalIndicator");var Ph=8205;function Ch(n,e,t=!0,i=!0){return(t?Zh:Sp)(n,e,i)}c(Ch,"findClusterBreak");function Zh(n,e,t){if(e==n.length)return e;e&&Ah(n.charCodeAt(e))&&Xh(n.charCodeAt(e-1))&&e--;let i=Dr(n,e);for(e+=$h(i);e<n.length;){let s=Dr(n,e);if(i==Ph||s==Ph||t&&gp(s))e+=$h(s),i=s;else if(vh(s)){let r=0,o=e-2;for(;o>=0&&vh(Dr(n,o));)r++,o-=2;if(r%2==0)break;e+=2}else break}return e}c(Zh,"nextClusterBreak");function Sp(n,e,t){for(;e>0;){let i=Zh(n,e-2,t);if(i<e)return i;e--}return 0}c(Sp,"prevClusterBreak");function Dr(n,e){let t=n.charCodeAt(e);if(!Xh(t)||e+1==n.length)return t;let i=n.charCodeAt(e+1);return Ah(i)?(t-55296<<10)+(i-56320)+65536:t}c(Dr,"codePointAt");function Ah(n){return n>=56320&&n<57344}c(Ah,"surrogateLow");function Xh(n){return n>=55296&&n<56320}c(Xh,"surrogateHigh");function $h(n){return n<65536?1:2}c($h,"codePointSize");var V=class n{static{c(this,"Text")}lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,i){[e,t]=mi(this,e,t);let s=[];return this.decompose(0,e,s,2),i.length&&i.decompose(0,i.length,s,3),this.decompose(t,this.length,s,1),di.from(s,this.length-(t-e)+i.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=mi(this,e,t);let i=[];return this.decompose(e,t,i,0),di.from(i,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),i=this.length-this.scanIdentical(e,-1),s=new It(this),r=new It(e);for(let o=t,l=t;;){if(s.next(o),r.next(o),o=0,s.lineBreak!=r.lineBreak||s.done!=r.done||s.value!=r.value)return!1;if(l+=s.value.length,s.done||l>=i)return!0}}iter(e=1){return new It(this,e)}iterRange(e,t=this.length){return new Hn(this,e,t)}iterLines(e,t){let i;if(e==null)i=this.iter();else{t==null&&(t=this.lines+1);let s=this.line(e).from;i=this.iterRange(s,Math.max(s,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new Kn(i)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?n.empty:e.length<=32?new Ce(e):di.from(Ce.split(e,[]))}},Ce=class n extends V{static{c(this,"TextLeaf")}constructor(e,t=Qp(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,i,s){for(let r=0;;r++){let o=this.text[r],l=s+o.length;if((t?i:l)>=e)return new Wr(s,l,i,o);s=l+1,i++}}decompose(e,t,i,s){let r=e<=0&&t>=this.length?this:new n(Rh(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(s&1){let o=i.pop(),l=Fn(r.text,o.text.slice(),0,r.length);if(l.length<=32)i.push(new n(l,o.length+r.length));else{let a=l.length>>1;i.push(new n(l.slice(0,a)),new n(l.slice(a)))}}else i.push(r)}replace(e,t,i){if(!(i instanceof n))return super.replace(e,t,i);[e,t]=mi(this,e,t);let s=Fn(this.text,Fn(i.text,Rh(this.text,0,e)),t),r=this.length+i.length-(t-e);return s.length<=32?new n(s,r):di.from(n.split(s,[]),r)}sliceString(e,t=this.length,i=` 2 + `){[e,t]=mi(this,e,t);let s="";for(let r=0,o=0;r<=t&&o<this.text.length;o++){let l=this.text[o],a=r+l.length;r>e&&o&&(s+=i),e<a&&t>r&&(s+=l.slice(Math.max(0,e-r),t-r)),r=a+1}return s}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let i=[],s=-1;for(let r of e)i.push(r),s+=r.length+1,i.length==32&&(t.push(new n(i,s)),i=[],s=-1);return s>-1&&t.push(new n(i,s)),t}},di=class n extends V{static{c(this,"TextNode")}constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let i of e)this.lines+=i.lines}lineInner(e,t,i,s){for(let r=0;;r++){let o=this.children[r],l=s+o.length,a=i+o.lines-1;if((t?a:l)>=e)return o.lineInner(e,t,i,s);s=l+1,i=a+1}}decompose(e,t,i,s){for(let r=0,o=0;o<=t&&r<this.children.length;r++){let l=this.children[r],a=o+l.length;if(e<=a&&t>=o){let h=s&((o<=e?1:0)|(a>=t?2:0));o>=e&&a<=t&&!h?i.push(l):l.decompose(e-o,t-o,i,h)}o=a+1}}replace(e,t,i){if([e,t]=mi(this,e,t),i.lines<this.lines)for(let s=0,r=0;s<this.children.length;s++){let o=this.children[s],l=r+o.length;if(e>=r&&t<=l){let a=o.replace(e-r,t-r,i),h=this.lines-o.lines+a.lines;if(a.lines<h>>4&&a.lines>h>>6){let f=this.children.slice();return f[s]=a,new n(f,this.length-(t-e)+i.length)}return super.replace(r,l,a)}r=l+1}return super.replace(e,t,i)}sliceString(e,t=this.length,i=` 3 + `){[e,t]=mi(this,e,t);let s="";for(let r=0,o=0;r<this.children.length&&o<=t;r++){let l=this.children[r],a=o+l.length;o>e&&r&&(s+=i),e<a&&t>o&&(s+=l.sliceString(e-o,t-o,i)),o=a+1}return s}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof n))return 0;let i=0,[s,r,o,l]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;s+=t,r+=t){if(s==o||r==l)return i;let a=this.children[s],h=e.children[r];if(a!=h)return i+a.scanIdentical(h,t);i+=a.length+1}}static from(e,t=e.reduce((i,s)=>i+s.length+1,-1)){let i=0;for(let O of e)i+=O.lines;if(i<32){let O=[];for(let p of e)p.flatten(O);return new Ce(O,t)}let s=Math.max(32,i>>5),r=s<<1,o=s>>1,l=[],a=0,h=-1,f=[];function u(O){let p;if(O.lines>r&&O instanceof n)for(let m of O.children)u(m);else O.lines>o&&(a>o||!a)?(d(),l.push(O)):O instanceof Ce&&a&&(p=f[f.length-1])instanceof Ce&&O.lines+p.lines<=32?(a+=O.lines,h+=O.length+1,f[f.length-1]=new Ce(p.text.concat(O.text),p.length+1+O.length)):(a+O.lines>s&&d(),a+=O.lines,h+=O.length+1,f.push(O))}c(u,"add");function d(){a!=0&&(l.push(f.length==1?f[0]:n.from(f,h)),h=-1,a=f.length=0)}c(d,"flush");for(let O of e)u(O);return d(),l.length==1?l[0]:new n(l,t)}};V.empty=new Ce([""],0);function Qp(n){let e=-1;for(let t of n)e+=t.length+1;return e}c(Qp,"textLength");function Fn(n,e,t=0,i=1e9){for(let s=0,r=0,o=!0;r<n.length&&s<=i;r++){let l=n[r],a=s+l.length;a>=t&&(a>i&&(l=l.slice(0,i-s)),s<t&&(l=l.slice(t-s)),o?(e[e.length-1]+=l,o=!1):e.push(l)),s=a+1}return e}c(Fn,"appendText");function Rh(n,e,t){return Fn(n,[""],e,t)}c(Rh,"sliceText");var It=class{static{c(this,"RawTextCursor")}constructor(e,t=1){this.dir=t,this.done=!1,this.lineBreak=!1,this.value="",this.nodes=[e],this.offsets=[t>0?1:(e instanceof Ce?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,s=this.nodes[i],r=this.offsets[i],o=r>>1,l=s instanceof Ce?s.text.length:s.children.length;if(o==(t>0?l:0)){if(i==0)return this.done=!0,this.value="",this;t>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((r&1)==(t>0?0:1)){if(this.offsets[i]+=t,e==0)return this.lineBreak=!0,this.value=` 4 + `,this;e--}else if(s instanceof Ce){let a=s.text[o+(t<0?-1:0)];if(this.offsets[i]+=t,a.length>Math.max(0,e))return this.value=e==0?a:t>0?a.slice(e):a.slice(0,a.length-e),this;e-=a.length}else{let a=s.children[o+(t<0?-1:0)];e>a.length?(e-=a.length,this.offsets[i]+=t):(t<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(t>0?1:(a instanceof Ce?a.text.length:a.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},Hn=class{static{c(this,"PartialTextCursor")}constructor(e,t,i){this.value="",this.done=!1,this.cursor=new It(e,t>i?-1:1),this.pos=t>i?e.length:0,this.from=Math.min(t,i),this.to=Math.max(t,i)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let i=t<0?this.pos-this.from:this.to-this.pos;e>i&&(e=i),i-=e;let{value:s}=this.cursor.next(e);return this.pos+=(s.length+e)*t,this.value=s.length<=i?s:t<0?s.slice(s.length-i):s.slice(0,i),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},Kn=class{static{c(this,"LineCursor")}constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:i,value:s}=this.inner.next(e);return t&&this.afterBreak?(this.value="",this.afterBreak=!1):t?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<"u"&&(V.prototype[Symbol.iterator]=function(){return this.iter()},It.prototype[Symbol.iterator]=Hn.prototype[Symbol.iterator]=Kn.prototype[Symbol.iterator]=function(){return this});var Wr=class{static{c(this,"Line")}constructor(e,t,i,s){this.from=e,this.to=t,this.number=i,this.text=s}get length(){return this.to-this.from}};function mi(n,e,t){return e=Math.max(0,Math.min(n.length,e)),[e,Math.max(e,Math.min(n.length,t))]}c(mi,"clip");function ne(n,e,t=!0,i=!0){return Ch(n,e,t,i)}c(ne,"findClusterBreak");function yp(n){return n>=56320&&n<57344}c(yp,"surrogateLow");function bp(n){return n>=55296&&n<56320}c(bp,"surrogateHigh");function ce(n,e){let t=n.charCodeAt(e);if(!bp(t)||e+1==n.length)return t;let i=n.charCodeAt(e+1);return yp(i)?(t-55296<<10)+(i-56320)+65536:t}c(ce,"codePointAt");function tn(n){return n<=65535?String.fromCharCode(n):(n-=65536,String.fromCharCode((n>>10)+55296,(n&1023)+56320))}c(tn,"fromCodePoint");function Ae(n){return n<65536?1:2}c(Ae,"codePointSize");var Br=/\r\n?|\n/,oe=(function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n})(oe||(oe={})),ut=class n{static{c(this,"ChangeDesc")}constructor(e){this.sections=e}get length(){let e=0;for(let t=0;t<this.sections.length;t+=2)e+=this.sections[t];return e}get newLength(){let e=0;for(let t=0;t<this.sections.length;t+=2){let i=this.sections[t+1];e+=i<0?this.sections[t]:i}return e}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]<0}iterGaps(e){for(let t=0,i=0,s=0;t<this.sections.length;){let r=this.sections[t++],o=this.sections[t++];o<0?(e(i,s,r),s+=r):s+=o,i+=r}}iterChangedRanges(e,t=!1){Ir(this,e,t)}get invertedDesc(){let e=[];for(let t=0;t<this.sections.length;){let i=this.sections[t++],s=this.sections[t++];s<0?e.push(i,s):e.push(s,i)}return new n(e)}composeDesc(e){return this.empty?e:e.empty?this:Vh(this,e)}mapDesc(e,t=!1){return e.empty?this:jr(this,e,t)}mapPos(e,t=-1,i=oe.Simple){let s=0,r=0;for(let o=0;o<this.sections.length;){let l=this.sections[o++],a=this.sections[o++],h=s+l;if(a<0){if(h>e)return r+(e-s);r+=l}else{if(i!=oe.Simple&&h>=e&&(i==oe.TrackDel&&s<e&&h>e||i==oe.TrackBefore&&s<e||i==oe.TrackAfter&&h>e))return null;if(h>e||h==e&&t<0&&!l)return e==s||t<0?r:r+a;r+=a}s=h}if(e>s)throw new RangeError(`Position ${e} is out of range for changeset of length ${s}`);return r}touchesRange(e,t=e){for(let i=0,s=0;i<this.sections.length&&s<=t;){let r=this.sections[i++],o=this.sections[i++],l=s+r;if(o>=0&&s<=t&&l>=e)return s<e&&l>t?"cover":!0;s=l}return!1}toString(){let e="";for(let t=0;t<this.sections.length;){let i=this.sections[t++],s=this.sections[t++];e+=(e?" ":"")+i+(s>=0?":"+s:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new n(e)}static create(e){return new n(e)}},Se=class n extends ut{static{c(this,"ChangeSet")}constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return Ir(this,(t,i,s,r,o)=>e=e.replace(s,s+(i-t),o),!1),e}mapDesc(e,t=!1){return jr(this,e,t,!0)}invert(e){let t=this.sections.slice(),i=[];for(let s=0,r=0;s<t.length;s+=2){let o=t[s],l=t[s+1];if(l>=0){t[s]=l,t[s+1]=o;let a=s>>1;for(;i.length<a;)i.push(V.empty);i.push(o?e.slice(r,r+o):V.empty)}r+=o}return new n(t,i)}compose(e){return this.empty?e:e.empty?this:Vh(this,e,!0)}map(e,t=!1){return e.empty?this:jr(this,e,t,!0)}iterChanges(e,t=!1){Ir(this,e,t)}get desc(){return ut.create(this.sections)}filter(e){let t=[],i=[],s=[],r=new jt(this);e:for(let o=0,l=0;;){let a=o==e.length?1e9:e[o++];for(;l<a||l==a&&r.len==0;){if(r.done)break e;let f=Math.min(r.len,a-l);Oe(s,f,-1);let u=r.ins==-1?-1:r.off==0?r.ins:0;Oe(t,f,u),u>0&&xt(i,t,r.text),r.forward(f),l+=f}let h=e[o++];for(;l<h;){if(r.done)break e;let f=Math.min(r.len,h-l);Oe(t,f,-1),Oe(s,f,r.ins==-1?-1:r.off==0?r.ins:0),r.forward(f),l+=f}}return{changes:new n(t,i),filtered:ut.create(s)}}toJSON(){let e=[];for(let t=0;t<this.sections.length;t+=2){let i=this.sections[t],s=this.sections[t+1];s<0?e.push(i):s==0?e.push([i]):e.push([i].concat(this.inserted[t>>1].toJSON()))}return e}static of(e,t,i){let s=[],r=[],o=0,l=null;function a(f=!1){if(!f&&!s.length)return;o<t&&Oe(s,t-o,-1);let u=new n(s,r);l=l?l.compose(u.map(l)):u,s=[],r=[],o=0}c(a,"flush");function h(f){if(Array.isArray(f))for(let u of f)h(u);else if(f instanceof n){if(f.length!=t)throw new RangeError(`Mismatched change set length (got ${f.length}, expected ${t})`);a(),l=l?l.compose(f.map(l)):f}else{let{from:u,to:d=u,insert:O}=f;if(u>d||u<0||d>t)throw new RangeError(`Invalid change range ${u} to ${d} (in doc of length ${t})`);let p=O?typeof O=="string"?V.of(O.split(i||Br)):O:V.empty,m=p.length;if(u==d&&m==0)return;u<o&&a(),u>o&&Oe(s,u-o,-1),Oe(s,d-u,m),xt(r,s,p),o=d}}return c(h,"process"),h(e),a(!l),l}static empty(e){return new n(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let t=[],i=[];for(let s=0;s<e.length;s++){let r=e[s];if(typeof r=="number")t.push(r,-1);else{if(!Array.isArray(r)||typeof r[0]!="number"||r.some((o,l)=>l&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)t.push(r[0],0);else{for(;i.length<s;)i.push(V.empty);i[s]=V.of(r.slice(1)),t.push(r[0],i[s].length)}}}return new n(t,i)}static createSet(e,t){return new n(e,t)}};function Oe(n,e,t,i=!1){if(e==0&&t<=0)return;let s=n.length-2;s>=0&&t<=0&&t==n[s+1]?n[s]+=e:s>=0&&e==0&&n[s]==0?n[s+1]+=t:i?(n[s]+=e,n[s+1]+=t):n.push(e,t)}c(Oe,"addSection");function xt(n,e,t){if(t.length==0)return;let i=e.length-2>>1;if(i<n.length)n[n.length-1]=n[n.length-1].append(t);else{for(;n.length<i;)n.push(V.empty);n.push(t)}}c(xt,"addInsert");function Ir(n,e,t){let i=n.inserted;for(let s=0,r=0,o=0;o<n.sections.length;){let l=n.sections[o++],a=n.sections[o++];if(a<0)s+=l,r+=l;else{let h=s,f=r,u=V.empty;for(;h+=l,f+=a,a&&i&&(u=u.append(i[o-2>>1])),!(t||o==n.sections.length||n.sections[o+1]<0);)l=n.sections[o++],a=n.sections[o++];e(s,h,r,f,u),s=h,r=f}}}c(Ir,"iterChanges");function jr(n,e,t,i=!1){let s=[],r=i?[]:null,o=new jt(n),l=new jt(e);for(let a=-1;;){if(o.done&&l.len||l.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);Oe(s,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len<o.len||l.len==o.len&&!t))){let h=l.len;for(Oe(s,l.ins,-1);h;){let f=Math.min(o.len,h);o.ins>=0&&a<o.i&&o.len<=f&&(Oe(s,0,o.ins),r&&xt(r,s,o.text),a=o.i),o.forward(f),h-=f}l.next()}else if(o.ins>=0){let h=0,f=o.len;for(;f;)if(l.ins==-1){let u=Math.min(f,l.len);h+=u,f-=u,l.forward(u)}else if(l.ins==0&&l.len<f)f-=l.len,l.next();else break;Oe(s,h,a<o.i?o.ins:0),r&&a<o.i&&xt(r,s,o.text),a=o.i,o.forward(o.len-f)}else{if(o.done&&l.done)return r?Se.createSet(s,r):ut.create(s);throw new Error("Mismatched change set lengths")}}}c(jr,"mapSet");function Vh(n,e,t=!1){let i=[],s=t?[]:null,r=new jt(n),o=new jt(e);for(let l=!1;;){if(r.done&&o.done)return s?Se.createSet(i,s):ut.create(i);if(r.ins==0)Oe(i,r.len,0,l),r.next();else if(o.len==0&&!o.done)Oe(i,0,o.ins,l),s&&xt(s,i,o.text),o.next();else{if(r.done||o.done)throw new Error("Mismatched change set lengths");{let a=Math.min(r.len2,o.len),h=i.length;if(r.ins==-1){let f=o.ins==-1?-1:o.off?0:o.ins;Oe(i,a,f,l),s&&f&&xt(s,i,o.text)}else o.ins==-1?(Oe(i,r.off?0:r.len,a,l),s&&xt(s,i,r.textBit(a))):(Oe(i,r.off?0:r.len,o.off?0:o.ins,l),s&&!o.off&&xt(s,i,o.text));l=(r.ins>a||o.ins>=0&&o.len>a)&&(l||i.length>h),r.forward2(a),o.forward(a)}}}}c(Vh,"composeSets");var jt=class{static{c(this,"SectionIter")}constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i<e.length?(this.len=e[this.i++],this.ins=e[this.i++]):(this.len=0,this.ins=-2),this.off=0}get done(){return this.ins==-2}get len2(){return this.ins<0?this.len:this.ins}get text(){let{inserted:e}=this.set,t=this.i-2>>1;return t>=e.length?V.empty:e[t]}textBit(e){let{inserted:t}=this.set,i=this.i-2>>1;return i>=t.length&&!e?V.empty:t[i].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}},ui=class n{static{c(this,"SelectionRange")}constructor(e,t,i){this.from=e,this.to=t,this.flags=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(e,t=-1){let i,s;return this.empty?i=s=e.mapPos(this.from,t):(i=e.mapPos(this.from,1),s=e.mapPos(this.to,-1)),i==this.from&&s==this.to?this:new n(i,s,this.flags)}extend(e,t=e){if(e<=this.anchor&&t>=this.anchor)return y.range(e,t);let i=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return y.range(this.anchor,i)}eq(e,t=!1){return this.anchor==e.anchor&&this.head==e.head&&this.goalColumn==e.goalColumn&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return y.range(e.anchor,e.head)}static create(e,t,i){return new n(e,t,i)}},y=class n{static{c(this,"EditorSelection")}constructor(e,t){this.ranges=e,this.mainIndex=t}map(e,t=-1){return e.empty?this:n.create(this.ranges.map(i=>i.map(e,t)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let i=0;i<this.ranges.length;i++)if(!this.ranges[i].eq(e.ranges[i],t))return!1;return!0}get main(){return this.ranges[this.mainIndex]}asSingle(){return this.ranges.length==1?this:new n([this.main],0)}addRange(e,t=!0){return n.create([e].concat(this.ranges),t?0:this.mainIndex+1)}replaceRange(e,t=this.mainIndex){let i=this.ranges.slice();return i[t]=e,n.create(i,this.mainIndex)}toJSON(){return{ranges:this.ranges.map(e=>e.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new n(e.ranges.map(t=>ui.fromJSON(t)),e.main)}static single(e,t=e){return new n([n.range(e,t)],0)}static create(e,t=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,s=0;s<e.length;s++){let r=e[s];if(r.empty?r.from<=i:r.from<i)return n.normalized(e.slice(),t);i=r.to}return new n(e,t)}static cursor(e,t=0,i,s){return ui.create(e,e,(t==0?0:t<0?8:16)|(i==null?7:Math.min(6,i))|(s??16777215)<<6)}static range(e,t,i,s){let r=(i??16777215)<<6|(s==null?7:Math.min(6,s));return t<e?ui.create(t,e,48|r):ui.create(e,t,(t>e?8:0)|r)}static normalized(e,t=0){let i=e[t];e.sort((s,r)=>s.from-r.from),t=e.indexOf(i);for(let s=1;s<e.length;s++){let r=e[s],o=e[s-1];if(r.empty?r.from<=o.to:r.from<o.to){let l=o.from,a=Math.max(r.to,o.to);s<=t&&t--,e.splice(--s,2,r.anchor>r.head?n.range(a,l):n.range(l,a))}}return new n(e,t)}};function _h(n,e){for(let t of n.ranges)if(t.to>e)throw new RangeError("Selection points outside of document")}c(_h,"checkSelection");var io=0,T=class n{static{c(this,"Facet")}constructor(e,t,i,s,r){this.combine=e,this.compareInput=t,this.compare=i,this.isStatic=s,this.id=io++,this.default=e([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(e={}){return new n(e.combine||(t=>t),e.compareInput||((t,i)=>t===i),e.compare||(e.combine?(t,i)=>t===i:no),!!e.static,e.enables)}of(e){return new Oi([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new Oi(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new Oi(e,this,2,t)}from(e,t){return t||(t=c(i=>i,"get")),this.compute([e],i=>t(i.field(e)))}};function no(n,e){return n==e||n.length==e.length&&n.every((t,i)=>t===e[i])}c(no,"sameArray");var Oi=class{static{c(this,"FacetProvider")}constructor(e,t,i,s){this.dependencies=e,this.facet=t,this.type=i,this.value=s,this.id=io++}dynamicSlot(e){var t;let i=this.value,s=this.facet.compareInput,r=this.id,o=e[r]>>1,l=this.type==2,a=!1,h=!1,f=[];for(let u of this.dependencies)u=="doc"?a=!0:u=="selection"?h=!0:(((t=e[u.id])!==null&&t!==void 0?t:1)&1)==0&&f.push(e[u.id]);return{create(u){return u.values[o]=i(u),1},update(u,d){if(a&&d.docChanged||h&&(d.docChanged||d.selection)||Nr(u,f)){let O=i(u);if(l?!Mh(O,u.values[o],s):!s(O,u.values[o]))return u.values[o]=O,1}return 0},reconfigure:c((u,d)=>{let O,p=d.config.address[r];if(p!=null){let m=is(d,p);if(this.dependencies.every(g=>g instanceof T?d.facet(g)===u.facet(g):g instanceof ie?d.field(g,!1)==u.field(g,!1):!0)||(l?Mh(O=i(u),m,s):s(O=i(u),m)))return u.values[o]=m,0}else O=i(u);return u.values[o]=O,1},"reconfigure")}}};function Mh(n,e,t){if(n.length!=e.length)return!1;for(let i=0;i<n.length;i++)if(!t(n[i],e[i]))return!1;return!0}c(Mh,"compareArray");function Nr(n,e){let t=!1;for(let i of e)Hi(n,i)&1&&(t=!0);return t}c(Nr,"ensureAll");function xp(n,e,t){let i=t.map(a=>n[a.id]),s=t.map(a=>a.type),r=i.filter(a=>!(a&1)),o=n[e.id]>>1;function l(a){let h=[];for(let f=0;f<i.length;f++){let u=is(a,i[f]);if(s[f]==2)for(let d of u)h.push(d);else h.push(u)}return e.combine(h)}return c(l,"get"),{create(a){for(let h of i)Hi(a,h);return a.values[o]=l(a),1},update(a,h){if(!Nr(a,r))return 0;let f=l(a);return e.compare(f,a.values[o])?0:(a.values[o]=f,1)},reconfigure(a,h){let f=Nr(a,i),u=h.config.facets[e.id],d=h.facet(e);if(u&&!f&&no(t,u))return a.values[o]=d,0;let O=l(a);return e.compare(O,d)?(a.values[o]=d,0):(a.values[o]=O,1)}}}c(xp,"dynamicFacetSlot");var Nn=T.define({static:!0}),ie=class n{static{c(this,"StateField")}constructor(e,t,i,s,r){this.id=e,this.createF=t,this.updateF=i,this.compareF=s,this.spec=r,this.provides=void 0}static define(e){let t=new n(io++,e.create,e.update,e.compare||((i,s)=>i===s),e);return e.provide&&(t.provides=e.provide(t)),t}create(e){let t=e.facet(Nn).find(i=>i.field==this);return(t?.create||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:c(i=>(i.values[t]=this.create(i),1),"create"),update:c((i,s)=>{let r=i.values[t],o=this.updateF(r,s);return this.compareF(r,o)?0:(i.values[t]=o,1)},"update"),reconfigure:c((i,s)=>{let r=i.facet(Nn),o=s.facet(Nn),l;return(l=r.find(a=>a.field==this))&&l!=o.find(a=>a.field==this)?(i.values[t]=l.create(i),1):s.config.address[this.id]!=null?(i.values[t]=s.field(this),0):(i.values[t]=this.create(i),1)},"reconfigure")}}init(e){return[this,Nn.of({field:this,create:e})]}get extension(){return this}},Wt={lowest:4,low:3,default:2,high:1,highest:0};function Fi(n){return e=>new Jn(e,n)}c(Fi,"prec");var qe={highest:Fi(Wt.highest),high:Fi(Wt.high),default:Fi(Wt.default),low:Fi(Wt.low),lowest:Fi(Wt.lowest)},Jn=class{static{c(this,"PrecExtension")}constructor(e,t){this.inner=e,this.prec=t}},es=class n{static{c(this,"Compartment")}of(e){return new Ki(this,e)}reconfigure(e){return n.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}},Ki=class{static{c(this,"CompartmentInstance")}constructor(e,t){this.compartment=e,this.inner=t}},ts=class n{static{c(this,"Configuration")}constructor(e,t,i,s,r,o){for(this.base=e,this.compartments=t,this.dynamicSlots=i,this.address=s,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length<i.length;)this.statusTemplate.push(0)}staticFacet(e){let t=this.address[e.id];return t==null?e.default:this.staticValues[t>>1]}static resolve(e,t,i){let s=[],r=Object.create(null),o=new Map;for(let d of wp(e,t,o))d instanceof ie?s.push(d):(r[d.facet.id]||(r[d.facet.id]=[])).push(d);let l=Object.create(null),a=[],h=[];for(let d of s)l[d.id]=h.length<<1,h.push(O=>d.slot(O));let f=i?.config.facets;for(let d in r){let O=r[d],p=O[0].facet,m=f&&f[d]||[];if(O.every(g=>g.type==0))if(l[p.id]=a.length<<1|1,no(m,O))a.push(i.facet(p));else{let g=p.combine(O.map(Q=>Q.value));a.push(i&&p.compare(g,i.facet(p))?i.facet(p):g)}else{for(let g of O)g.type==0?(l[g.id]=a.length<<1|1,a.push(g.value)):(l[g.id]=h.length<<1,h.push(Q=>g.dynamicSlot(Q)));l[p.id]=h.length<<1,h.push(g=>xp(g,p,O))}}let u=h.map(d=>d(l));return new n(e,o,u,l,a,r)}};function wp(n,e,t){let i=[[],[],[],[],[]],s=new Map;function r(o,l){let a=s.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof Ki&&t.delete(o.compartment)}if(s.set(o,l),Array.isArray(o))for(let h of o)r(h,l);else if(o instanceof Ki){if(t.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=e.get(o.compartment)||o.inner;t.set(o.compartment,h),r(h,l)}else if(o instanceof Jn)r(o.inner,o.prec);else if(o instanceof ie)i[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof Oi)i[l].push(o),o.facet.extensions&&r(o.facet.extensions,Wt.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,l)}}return c(r,"inner"),r(n,Wt.default),i.reduce((o,l)=>o.concat(l))}c(wp,"flatten");function Hi(n,e){if(e&1)return 2;let t=e>>1,i=n.status[t];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;n.status[t]=4;let s=n.computeSlot(n,n.config.dynamicSlots[t]);return n.status[t]=2|s}c(Hi,"ensureAddr");function is(n,e){return e&1?n.config.staticValues[e>>1]:n.values[e>>1]}c(is,"getAddr");var Dh=T.define(),Gr=T.define({combine:c(n=>n.some(e=>e),"combine"),static:!0}),Lh=T.define({combine:c(n=>n.length?n[0]:void 0,"combine"),static:!0}),qh=T.define(),Wh=T.define(),Bh=T.define(),Ih=T.define({combine:c(n=>n.length?n[0]:!1,"combine")}),xe=class{static{c(this,"Annotation")}constructor(e,t){this.type=e,this.value=t}static define(){return new Ur}},Ur=class{static{c(this,"AnnotationType")}of(e){return new xe(this,e)}},Fr=class{static{c(this,"StateEffectType")}constructor(e){this.map=e}of(e){return new R(this,e)}},R=class n{static{c(this,"StateEffect")}constructor(e,t){this.type=e,this.value=t}map(e){let t=this.type.map(this.value,e);return t===void 0?void 0:t==this.value?this:new n(this.type,t)}is(e){return this.type==e}static define(e={}){return new Fr(e.map||(t=>t))}static mapEffects(e,t){if(!e.length)return e;let i=[];for(let s of e){let r=s.map(t);r&&i.push(r)}return i}};R.reconfigure=R.define();R.appendConfig=R.define();var se=class n{static{c(this,"Transaction")}constructor(e,t,i,s,r,o){this.startState=e,this.changes=t,this.selection=i,this.effects=s,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&_h(i,t.newLength),r.some(l=>l.type==n.time)||(this.annotations=r.concat(n.time.of(Date.now())))}static create(e,t,i,s,r,o){return new n(e,t,i,s,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let t=this.annotation(n.userEvent);return!!(t&&(t==e||t.length>e.length&&t.slice(0,e.length)==e&&t[e.length]=="."))}};se.time=xe.define();se.userEvent=xe.define();se.addToHistory=xe.define();se.remote=xe.define();function kp(n,e){let t=[];for(let i=0,s=0;;){let r,o;if(i<n.length&&(s==e.length||e[s]>=n[i]))r=n[i++],o=n[i++];else if(s<e.length)r=e[s++],o=e[s++];else return t;!t.length||t[t.length-1]<r?t.push(r,o):t[t.length-1]<o&&(t[t.length-1]=o)}}c(kp,"joinRanges");function jh(n,e,t){var i;let s,r,o;return t?(s=e.changes,r=Se.empty(e.changes.length),o=n.changes.compose(e.changes)):(s=e.changes.map(n.changes),r=n.changes.mapDesc(e.changes,!0),o=n.changes.compose(s)),{changes:o,selection:e.selection?e.selection.map(r):(i=n.selection)===null||i===void 0?void 0:i.map(s),effects:R.mapEffects(n.effects,s).concat(R.mapEffects(e.effects,r)),annotations:n.annotations.length?n.annotations.concat(e.annotations):e.annotations,scrollIntoView:n.scrollIntoView||e.scrollIntoView}}c(jh,"mergeTransaction");function Hr(n,e,t){let i=e.selection,s=pi(e.annotations);return e.userEvent&&(s=s.concat(se.userEvent.of(e.userEvent))),{changes:e.changes instanceof Se?e.changes:Se.of(e.changes||[],t,n.facet(Lh)),selection:i&&(i instanceof y?i:y.single(i.anchor,i.head)),effects:pi(e.effects),annotations:s,scrollIntoView:!!e.scrollIntoView}}c(Hr,"resolveTransactionInner");function Nh(n,e,t){let i=Hr(n,e.length?e[0]:{},n.doc.length);e.length&&e[0].filter===!1&&(t=!1);for(let r=1;r<e.length;r++){e[r].filter===!1&&(t=!1);let o=!!e[r].sequential;i=jh(i,Hr(n,e[r],o?i.changes.newLength:n.doc.length),o)}let s=se.create(n,i.changes,i.selection,i.effects,i.annotations,i.scrollIntoView);return Pp(t?vp(s):s)}c(Nh,"resolveTransaction");function vp(n){let e=n.startState,t=!0;for(let s of e.facet(qh)){let r=s(n);if(r===!1){t=!1;break}Array.isArray(r)&&(t=t===!0?r:kp(t,r))}if(t!==!0){let s,r;if(t===!1)r=n.changes.invertedDesc,s=Se.empty(e.doc.length);else{let o=n.changes.filter(t);s=o.changes,r=o.filtered.mapDesc(o.changes).invertedDesc}n=se.create(e,s,n.selection&&n.selection.map(r),R.mapEffects(n.effects,r),n.annotations,n.scrollIntoView)}let i=e.facet(Wh);for(let s=i.length-1;s>=0;s--){let r=i[s](n);r instanceof se?n=r:Array.isArray(r)&&r.length==1&&r[0]instanceof se?n=r[0]:n=Nh(e,pi(r),!1)}return n}c(vp,"filterTransaction");function Pp(n){let e=n.startState,t=e.facet(Bh),i=n;for(let s=t.length-1;s>=0;s--){let r=t[s](n);r&&Object.keys(r).length&&(i=jh(i,Hr(e,r,n.changes.newLength),!0))}return i==n?n:se.create(e,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}c(Pp,"extendTransaction");var $p=[];function pi(n){return n==null?$p:Array.isArray(n)?n:[n]}c(pi,"asArray");var j=(function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n})(j||(j={})),Tp=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Kr;try{Kr=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function Cp(n){if(Kr)return Kr.test(n);for(let e=0;e<n.length;e++){let t=n[e];if(/\w/.test(t)||t>"\x80"&&(t.toUpperCase()!=t.toLowerCase()||Tp.test(t)))return!0}return!1}c(Cp,"hasWordChar");function Zp(n){return e=>{if(!/\S/.test(e))return j.Space;if(Cp(e))return j.Word;for(let t=0;t<n.length;t++)if(e.indexOf(n[t])>-1)return j.Word;return j.Other}}c(Zp,"makeCategorizer");var G=class n{static{c(this,"EditorState")}constructor(e,t,i,s,r,o){this.config=e,this.doc=t,this.selection=i,this.values=s,this.status=e.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;l<this.config.dynamicSlots.length;l++)Hi(this,l<<1);this.computeSlot=null}field(e,t=!0){let i=this.config.address[e.id];if(i==null){if(t)throw new RangeError("Field is not present in this state");return}return Hi(this,i),is(this,i)}update(...e){return Nh(this,e,!0)}applyTransaction(e){let t=this.config,{base:i,compartments:s}=t;for(let l of e.effects)l.is(es.reconfigure)?(t&&(s=new Map,t.compartments.forEach((a,h)=>s.set(h,a)),t=null),s.set(l.value.compartment,l.value.extension)):l.is(R.reconfigure)?(t=null,i=l.value):l.is(R.appendConfig)&&(t=null,i=pi(i).concat(l.value));let r;t?r=e.startState.values.slice():(t=ts.resolve(i,s,this),r=new n(t,this.doc,this.selection,t.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=e.startState.facet(Gr)?e.newSelection:e.newSelection.asSingle();new n(t,e.newDoc,o,r,(l,a)=>a.update(l,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:y.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,i=e(t.ranges[0]),s=this.changes(i.changes),r=[i.range],o=pi(i.effects);for(let l=1;l<t.ranges.length;l++){let a=e(t.ranges[l]),h=this.changes(a.changes),f=h.map(s);for(let d=0;d<l;d++)r[d]=r[d].map(f);let u=s.mapDesc(h,!0);r.push(a.range.map(u)),s=s.compose(f),o=R.mapEffects(o,f).concat(R.mapEffects(pi(a.effects),u))}return{changes:s,selection:y.create(r,t.mainIndex),effects:o}}changes(e=[]){return e instanceof Se?e:Se.of(e,this.doc.length,this.facet(n.lineSeparator))}toText(e){return V.of(e.split(this.facet(n.lineSeparator)||Br))}sliceDoc(e=0,t=this.doc.length){return this.doc.sliceString(e,t,this.lineBreak)}facet(e){let t=this.config.address[e.id];return t==null?e.default:(Hi(this,t),is(this,t))}toJSON(e){let t={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(e)for(let i in e){let s=e[i];s instanceof ie&&this.config.address[s.id]!=null&&(t[i]=s.spec.toJSON(this.field(e[i]),this))}return t}static fromJSON(e,t={},i){if(!e||typeof e.doc!="string")throw new RangeError("Invalid JSON representation for EditorState");let s=[];if(i){for(let r in i)if(Object.prototype.hasOwnProperty.call(e,r)){let o=i[r],l=e[r];s.push(o.init(a=>o.spec.fromJSON(l,a)))}}return n.create({doc:e.doc,selection:y.fromJSON(e.selection),extensions:t.extensions?s.concat([t.extensions]):s})}static create(e={}){let t=ts.resolve(e.extensions||[],new Map),i=e.doc instanceof V?e.doc:V.of((e.doc||"").split(t.staticFacet(n.lineSeparator)||Br)),s=e.selection?e.selection instanceof y?e.selection:y.single(e.selection.anchor,e.selection.head):y.single(0);return _h(s,i.length),t.staticFacet(Gr)||(s=s.asSingle()),new n(t,i,s,t.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(n.tabSize)}get lineBreak(){return this.facet(n.lineSeparator)||` 5 + `}get readOnly(){return this.facet(Ih)}phrase(e,...t){for(let i of this.facet(n.phrases))if(Object.prototype.hasOwnProperty.call(i,e)){e=i[e];break}return t.length&&(e=e.replace(/\$(\$|\d*)/g,(i,s)=>{if(s=="$")return"$";let r=+(s||1);return!r||r>t.length?i:t[r-1]})),e}languageDataAt(e,t,i=-1){let s=[];for(let r of this.facet(Dh))for(let o of r(this,t,i))Object.prototype.hasOwnProperty.call(o,e)&&s.push(o[e]);return s}charCategorizer(e){let t=this.languageDataAt("wordChars",e);return Zp(t.length?t[0]:"")}wordAt(e){let{text:t,from:i,length:s}=this.doc.lineAt(e),r=this.charCategorizer(e),o=e-i,l=e-i;for(;o>0;){let a=ne(t,o,!1);if(r(t.slice(a,o))!=j.Word)break;o=a}for(;l<s;){let a=ne(t,l);if(r(t.slice(l,a))!=j.Word)break;l=a}return o==l?null:y.range(o+i,l+i)}};G.allowMultipleSelections=Gr;G.tabSize=T.define({combine:c(n=>n.length?n[0]:4,"combine")});G.lineSeparator=Lh;G.readOnly=Ih;G.phrases=T.define({compare(n,e){let t=Object.keys(n),i=Object.keys(e);return t.length==i.length&&t.every(s=>n[s]==e[s])}});G.languageData=Dh;G.changeFilter=qh;G.transactionFilter=Wh;G.transactionExtender=Bh;es.reconfigure=R.define();function pe(n,e,t={}){let i={};for(let s of n)for(let r of Object.keys(s)){let o=s[r],l=i[r];if(l===void 0)i[r]=o;else if(!(l===o||o===void 0))if(Object.hasOwnProperty.call(t,r))i[r]=t[r](l,o);else throw new Error("Config merge conflict for field "+r)}for(let s in e)i[s]===void 0&&(i[s]=e[s]);return i}c(pe,"combineConfig");var Le=class{static{c(this,"RangeValue")}eq(e){return this==e}range(e,t=e){return Ji.create(e,t,this)}};Le.prototype.startSide=Le.prototype.endSide=0;Le.prototype.point=!1;Le.prototype.mapMode=oe.TrackDel;function so(n,e){return n==e||n.constructor==e.constructor&&n.eq(e)}c(so,"cmpVal");var Ji=class n{static{c(this,"Range")}constructor(e,t,i){this.from=e,this.to=t,this.value=i}static create(e,t,i){return new n(e,t,i)}};function Jr(n,e){return n.from-e.from||n.value.startSide-e.value.startSide}c(Jr,"cmpRange");var eo=class n{static{c(this,"Chunk")}constructor(e,t,i,s){this.from=e,this.to=t,this.value=i,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(e,t,i,s=0){let r=i?this.to:this.from;for(let o=s,l=r.length;;){if(o==l)return o;let a=o+l>>1,h=r[a]-e||(i?this.value[a].endSide:this.value[a].startSide)-t;if(a==o)return h>=0?o:l;h>=0?l=a:o=a+1}}between(e,t,i,s){for(let r=this.findIndex(t,-1e9,!0),o=this.findIndex(i,1e9,!1,r);r<o;r++)if(s(this.from[r]+e,this.to[r]+e,this.value[r])===!1)return!1}map(e,t){let i=[],s=[],r=[],o=-1,l=-1;for(let a=0;a<this.value.length;a++){let h=this.value[a],f=this.from[a]+e,u=this.to[a]+e,d,O;if(f==u){let p=t.mapPos(f,h.startSide,h.mapMode);if(p==null||(d=O=p,h.startSide!=h.endSide&&(O=t.mapPos(f,h.endSide),O<d)))continue}else if(d=t.mapPos(f,h.startSide),O=t.mapPos(u,h.endSide),d>O||d==O&&h.startSide>0&&h.endSide<=0)continue;(O-d||h.endSide-h.startSide)<0||(o<0&&(o=d),h.point&&(l=Math.max(l,O-d)),i.push(h),s.push(d-o),r.push(O-o))}return{mapped:i.length?new n(s,r,i,l):null,pos:o}}},D=class n{static{c(this,"RangeSet")}constructor(e,t,i,s){this.chunkPos=e,this.chunk=t,this.nextLayer=i,this.maxPoint=s}static create(e,t,i,s){return new n(e,t,i,s)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:i=!1,filterFrom:s=0,filterTo:r=this.length}=e,o=e.filter;if(t.length==0&&!o)return this;if(i&&(t=t.slice().sort(Jr)),this.isEmpty)return t.length?n.of(t):this;let l=new ns(this,null,-1).goto(0),a=0,h=[],f=new Ze;for(;l.value||a<t.length;)if(a<t.length&&(l.from-t[a].from||l.startSide-t[a].value.startSide)>=0){let u=t[a++];f.addInner(u.from,u.to,u.value)||h.push(u)}else l.rangeIndex==1&&l.chunkIndex<this.chunk.length&&(a==t.length||this.chunkEnd(l.chunkIndex)<t[a].from)&&(!o||s>this.chunkEnd(l.chunkIndex)||r<this.chunkPos[l.chunkIndex])&&f.addChunk(this.chunkPos[l.chunkIndex],this.chunk[l.chunkIndex])?l.nextChunk():((!o||s>l.to||r<l.from||o(l.from,l.to,l.value))&&(f.addInner(l.from,l.to,l.value)||h.push(Ji.create(l.from,l.to,l.value))),l.next());return f.finishInner(this.nextLayer.isEmpty&&!h.length?n.empty:this.nextLayer.update({add:h,filter:o,filterFrom:s,filterTo:r}))}map(e){if(e.empty||this.isEmpty)return this;let t=[],i=[],s=-1;for(let o=0;o<this.chunk.length;o++){let l=this.chunkPos[o],a=this.chunk[o],h=e.touchesRange(l,l+a.length);if(h===!1)s=Math.max(s,a.maxPoint),t.push(a),i.push(e.mapPos(l));else if(h===!0){let{mapped:f,pos:u}=a.map(l,e);f&&(s=Math.max(s,f.maxPoint),t.push(f),i.push(u))}}let r=this.nextLayer.map(e);return t.length==0?r:new n(i,t,r||n.empty,s)}between(e,t,i){if(!this.isEmpty){for(let s=0;s<this.chunk.length;s++){let r=this.chunkPos[s],o=this.chunk[s];if(t>=r&&e<=r+o.length&&o.between(r,e-r,t-r,i)===!1)return}this.nextLayer.between(e,t,i)}}iter(e=0){return en.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return en.from(e).goto(t)}static compare(e,t,i,s,r=-1){let o=e.filter(u=>u.maxPoint>0||!u.isEmpty&&u.maxPoint>=r),l=t.filter(u=>u.maxPoint>0||!u.isEmpty&&u.maxPoint>=r),a=Eh(o,l,i),h=new Bt(o,a,r),f=new Bt(l,a,r);i.iterGaps((u,d,O)=>zh(h,u,f,d,O,s)),i.empty&&i.length==0&&zh(h,0,f,0,0,s)}static eq(e,t,i=0,s){s==null&&(s=999999999);let r=e.filter(f=>!f.isEmpty&&t.indexOf(f)<0),o=t.filter(f=>!f.isEmpty&&e.indexOf(f)<0);if(r.length!=o.length)return!1;if(!r.length)return!0;let l=Eh(r,o),a=new Bt(r,l,0).goto(i),h=new Bt(o,l,0).goto(i);for(;;){if(a.to!=h.to||!to(a.active,h.active)||a.point&&(!h.point||!so(a.point,h.point)))return!1;if(a.to>s)return!0;a.next(),h.next()}}static spans(e,t,i,s,r=-1){let o=new Bt(e,null,r).goto(t),l=t,a=o.openStart;for(;;){let h=Math.min(o.to,i);if(o.point){let f=o.activeForPoint(o.to),u=o.pointFrom<t?f.length+1:o.point.startSide<0?f.length:Math.min(f.length,a);s.point(l,h,o.point,f,u,o.pointRank),a=Math.min(o.openEnd(h),f.length)}else h>l&&(s.span(l,h,o.active,a),a=o.openEnd(h));if(o.to>i)return a+(o.point&&o.to>i?1:0);l=o.to,o.next()}}static of(e,t=!1){let i=new Ze;for(let s of e instanceof Ji?[e]:t?Ap(e):e)i.add(s.from,s.to,s.value);return i.finish()}static join(e){if(!e.length)return n.empty;let t=e[e.length-1];for(let i=e.length-2;i>=0;i--)for(let s=e[i];s!=n.empty;s=s.nextLayer)t=new n(s.chunkPos,s.chunk,t,Math.max(s.maxPoint,t.maxPoint));return t}};D.empty=new D([],[],null,-1);function Ap(n){if(n.length>1)for(let e=n[0],t=1;t<n.length;t++){let i=n[t];if(Jr(e,i)>0)return n.slice().sort(Jr);e=i}return n}c(Ap,"lazySort");D.empty.nextLayer=D.empty;var Ze=class n{static{c(this,"RangeSetBuilder")}finishChunk(e){this.chunks.push(new eo(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,t,i){this.addInner(e,t,i)||(this.nextLayer||(this.nextLayer=new n)).add(e,t,i)}addInner(e,t,i){let s=e-this.lastTo||i.startSide-this.last.endSide;if(s<=0&&(e-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(t-this.chunkStart),this.last=i,this.lastFrom=e,this.lastTo=t,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,t-e)),!0)}addChunk(e,t){if((e-this.lastTo||t.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,t.maxPoint),this.chunks.push(t),this.chunkPos.push(e);let i=t.value.length-1;return this.last=t.value[i],this.lastFrom=t.from[i]+e,this.lastTo=t.to[i]+e,!0}finish(){return this.finishInner(D.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let t=D.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,t}};function Eh(n,e,t){let i=new Map;for(let r of n)for(let o=0;o<r.chunk.length;o++)r.chunk[o].maxPoint<=0&&i.set(r.chunk[o],r.chunkPos[o]);let s=new Set;for(let r of e)for(let o=0;o<r.chunk.length;o++){let l=i.get(r.chunk[o]);l!=null&&(t?t.mapPos(l):l)==r.chunkPos[o]&&!t?.touchesRange(l,l+r.chunk[o].length)&&s.add(r.chunk[o])}return s}c(Eh,"findSharedChunks");var ns=class{static{c(this,"LayerCursor")}constructor(e,t,i,s=0){this.layer=e,this.skip=t,this.minPoint=i,this.rank=s}get startSide(){return this.value?this.value.startSide:0}get endSide(){return this.value?this.value.endSide:0}goto(e,t=-1e9){return this.chunkIndex=this.rangeIndex=0,this.gotoInner(e,t,!1),this}gotoInner(e,t,i){for(;this.chunkIndex<this.layer.chunk.length;){let s=this.layer.chunk[this.chunkIndex];if(!(this.skip&&this.skip.has(s)||this.layer.chunkEnd(this.chunkIndex)<e||s.maxPoint<this.minPoint))break;this.chunkIndex++,i=!1}if(this.chunkIndex<this.layer.chunk.length){let s=this.layer.chunk[this.chunkIndex].findIndex(e-this.layer.chunkPos[this.chunkIndex],t,!0);(!i||this.rangeIndex<s)&&this.setRangeIndex(s)}this.next()}forward(e,t){(this.to-e||this.endSide-t)<0&&this.gotoInner(e,t,!0)}next(){for(;;)if(this.chunkIndex==this.layer.chunk.length){this.from=this.to=1e9,this.value=null;break}else{let e=this.layer.chunkPos[this.chunkIndex],t=this.layer.chunk[this.chunkIndex],i=e+t.from[this.rangeIndex];if(this.from=i,this.to=e+t.to[this.rangeIndex],this.value=t.value[this.rangeIndex],this.setRangeIndex(this.rangeIndex+1),this.minPoint<0||this.value.point&&this.to-this.from>=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex<this.layer.chunk.length&&this.skip.has(this.layer.chunk[this.chunkIndex]);)this.chunkIndex++;this.rangeIndex=0}else this.rangeIndex=e}nextChunk(){this.chunkIndex++,this.rangeIndex=0,this.next()}compare(e){return this.from-e.from||this.startSide-e.startSide||this.rank-e.rank||this.to-e.to||this.endSide-e.endSide}},en=class n{static{c(this,"HeapCursor")}constructor(e){this.heap=e}static from(e,t=null,i=-1){let s=[];for(let r=0;r<e.length;r++)for(let o=e[r];!o.isEmpty;o=o.nextLayer)o.maxPoint>=i&&s.push(new ns(o,t,i,r));return s.length==1?s[0]:new n(s)}get startSide(){return this.value?this.value.startSide:0}goto(e,t=-1e9){for(let i of this.heap)i.goto(e,t);for(let i=this.heap.length>>1;i>=0;i--)qr(this.heap,i);return this.next(),this}forward(e,t){for(let i of this.heap)i.forward(e,t);for(let i=this.heap.length>>1;i>=0;i--)qr(this.heap,i);(this.to-e||this.value.endSide-t)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),qr(this.heap,0)}}};function qr(n,e){for(let t=n[e];;){let i=(e<<1)+1;if(i>=n.length)break;let s=n[i];if(i+1<n.length&&s.compare(n[i+1])>=0&&(s=n[i+1],i++),t.compare(s)<0)break;n[i]=t,n[e]=s,e=i}}c(qr,"heapBubble");var Bt=class{static{c(this,"SpanCursor")}constructor(e,t,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=en.from(e,t,i)}goto(e,t=-1e9){return this.cursor.goto(e,t),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=t,this.openStart=-1,this.next(),this}forward(e,t){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-t)<0;)this.removeActive(this.minActive);this.cursor.forward(e,t)}removeActive(e){Gn(this.active,e),Gn(this.activeTo,e),Gn(this.activeRank,e),this.minActive=Yh(this.active,this.activeTo)}addActive(e){let t=0,{value:i,to:s,rank:r}=this.cursor;for(;t<this.activeRank.length&&(r-this.activeRank[t]||s-this.activeTo[t])>0;)t++;Un(this.active,t,i),Un(this.activeTo,t,s),Un(this.activeRank,t,r),e&&Un(e,t,this.cursor.from),this.minActive=Yh(this.active,this.activeTo)}next(){let e=this.to,t=this.point;this.point=null;let i=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>e){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),i&&Gn(i,s)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let r=this.cursor.value;if(!r.point)this.addActive(i),this.cursor.next();else if(t&&this.cursor.to==this.to&&this.cursor.from<this.cursor.to)this.cursor.next();else{this.point=r,this.pointFrom=this.cursor.from,this.pointRank=this.cursor.rank,this.to=this.cursor.to,this.endSide=r.endSide,this.cursor.next(),this.forward(this.to,this.endSide);break}}else{this.to=this.endSide=1e9;break}}if(i){this.openStart=0;for(let s=i.length-1;s>=0&&i[s]<e;s--)this.openStart++}}activeForPoint(e){if(!this.active.length)return this.active;let t=[];for(let i=this.active.length-1;i>=0&&!(this.activeRank[i]<this.pointRank);i--)(this.activeTo[i]>e||this.activeTo[i]==e&&this.active[i].endSide>=this.point.endSide)&&t.push(this.active[i]);return t.reverse()}openEnd(e){let t=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>e;i--)t++;return t}};function zh(n,e,t,i,s,r){n.goto(e),t.goto(i);let o=i+s,l=i,a=i-e,h=!!r.boundChange;for(let f=!1;;){let u=n.to+a-t.to,d=u||n.endSide-t.endSide,O=d<0?n.to+a:t.to,p=Math.min(O,o);if(n.point||t.point?(n.point&&t.point&&so(n.point,t.point)&&to(n.activeForPoint(n.to),t.activeForPoint(t.to))||r.comparePoint(l,p,n.point,t.point),f=!1):(f&&r.boundChange(l),p>l&&!to(n.active,t.active)&&r.compareRange(l,p,n.active,t.active),h&&p<o&&(u||n.openEnd(O)!=t.openEnd(O))&&(f=!0)),O>o)break;l=O,d<=0&&n.next(),d>=0&&t.next()}}c(zh,"compare");function to(n,e){if(n.length!=e.length)return!1;for(let t=0;t<n.length;t++)if(n[t]!=e[t]&&!so(n[t],e[t]))return!1;return!0}c(to,"sameValues");function Gn(n,e){for(let t=e,i=n.length-1;t<i;t++)n[t]=n[t+1];n.pop()}c(Gn,"remove");function Un(n,e,t){for(let i=n.length-1;i>=e;i--)n[i+1]=n[i];n[e]=t}c(Un,"insert");function Yh(n,e){let t=-1,i=1e9;for(let s=0;s<e.length;s++)(e[s]-i||n[s].endSide-n[t].endSide)<0&&(t=s,i=e[s]);return t}c(Yh,"findMinIndex");function dt(n,e,t=n.length){let i=0;for(let s=0;s<t&&s<n.length;)n.charCodeAt(s)==9?(i+=e-i%e,s++):(i++,s=ne(n,s));return i}c(dt,"countColumn");function ss(n,e,t,i){for(let s=0,r=0;;){if(r>=e)return s;if(s==n.length)break;r+=n.charCodeAt(s)==9?t-r%t:1,s=ne(n,s)}return i===!0?-1:n.length}c(ss,"findColumn");var Gh=typeof Symbol>"u"?"__\u037C":Symbol.for("\u037C"),ro=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),Uh=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{},We=class{static{c(this,"StyleModule")}constructor(e,t){this.rules=[];let{finish:i}=t||{};function s(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}c(s,"splitSelector");function r(o,l,a,h){let f=[],u=/^@(\w+)\b/.exec(o[0]),d=u&&u[1]=="keyframes";if(u&&l==null)return a.push(o[0]+";");for(let O in l){let p=l[O];if(/&/.test(O))r(O.split(/,\s*/).map(m=>o.map(g=>m.replace(/&/,g))).reduce((m,g)=>m.concat(g)),p,a);else if(p&&typeof p=="object"){if(!u)throw new RangeError("The value of a property ("+O+") should be a primitive value.");r(s(O),p,f,d)}else p!=null&&f.push(O.replace(/_.*/,"").replace(/[A-Z]/g,m=>"-"+m.toLowerCase())+": "+p+";")}(f.length||d)&&a.push((i&&!u&&!h?o.map(i):o).join(", ")+" {"+f.join(" ")+"}")}c(r,"render");for(let o in e)r(s(o),e[o],this.rules)}getRules(){return this.rules.join(` 6 + `)}static newName(){let e=Uh[Gh]||1;return Uh[Gh]=e+1,"\u037C"+e.toString(36)}static mount(e,t,i){let s=e[ro],r=i&&i.nonce;s?r&&s.setNonce(r):s=new oo(e,r),s.mount(Array.isArray(t)?t:[t],e)}},Fh=new Map,oo=class{static{c(this,"StyleSet")}constructor(e,t){let i=e.ownerDocument||e,s=i.defaultView;if(!e.head&&e.adoptedStyleSheets&&s.CSSStyleSheet){let r=Fh.get(i);if(r)return e[ro]=r;this.sheet=new s.CSSStyleSheet,Fh.set(i,this)}else this.styleTag=i.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[ro]=this}mount(e,t){let i=this.sheet,s=0,r=0;for(let o=0;o<e.length;o++){let l=e[o],a=this.modules.indexOf(l);if(a<r&&a>-1&&(this.modules.splice(a,1),r--,a=-1),a==-1){if(this.modules.splice(r++,0,l),i)for(let h=0;h<l.rules.length;h++)i.insertRule(l.rules[h],s++)}else{for(;r<a;)s+=this.modules[r++].rules.length;s+=l.rules.length,r++}}if(i)t.adoptedStyleSheets.indexOf(this.sheet)<0&&(t.adoptedStyleSheets=[this.sheet,...t.adoptedStyleSheets]);else{let o="";for(let a=0;a<this.modules.length;a++)o+=this.modules[a].getRules()+` 7 + `;this.styleTag.textContent=o;let l=t.head||t;this.styleTag.parentNode!=l&&l.insertBefore(this.styleTag,l.firstChild)}}setNonce(e){this.styleTag&&this.styleTag.getAttribute("nonce")!=e&&this.styleTag.setAttribute("nonce",e)}};var Ot={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},gi={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},Xp=typeof navigator<"u"&&/Mac/.test(navigator.platform),Rp=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(re=0;re<10;re++)Ot[48+re]=Ot[96+re]=String(re);var re;for(re=1;re<=24;re++)Ot[re+111]="F"+re;var re;for(re=65;re<=90;re++)Ot[re]=String.fromCharCode(re+32),gi[re]=String.fromCharCode(re);var re;for(rs in Ot)gi.hasOwnProperty(rs)||(gi[rs]=Ot[rs]);var rs;function Hh(n){var e=Xp&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||Rp&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",t=!e&&n.key||(n.shiftKey?gi:Ot)[n.keyCode]||n.key||"Unidentified";return t=="Esc"&&(t="Escape"),t=="Del"&&(t="Delete"),t=="Left"&&(t="ArrowLeft"),t=="Up"&&(t="ArrowUp"),t=="Right"&&(t="ArrowRight"),t=="Down"&&(t="ArrowDown"),t}c(Hh,"keyName");function q(){var n=arguments[0];typeof n=="string"&&(n=document.createElement(n));var e=1,t=arguments[1];if(t&&typeof t=="object"&&t.nodeType==null&&!Array.isArray(t)){for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)){var s=t[i];typeof s=="string"?n.setAttribute(i,s):s!=null&&(n[i]=s)}e++}for(;e<arguments.length;e++)Kh(n,arguments[e]);return n}c(q,"crelt");function Kh(n,e){if(typeof e=="string")n.appendChild(document.createTextNode(e));else if(e!=null)if(e.nodeType!=null)n.appendChild(e);else if(Array.isArray(e))for(var t=0;t<e.length;t++)Kh(n,e[t]);else throw new RangeError("Unsupported child node: "+e)}c(Kh,"add");var Qe=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},go=typeof document<"u"?document:{documentElement:{style:{}}},So=/Edge\/(\d+)/.exec(Qe.userAgent),Yc=/MSIE \d/.test(Qe.userAgent),Qo=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(Qe.userAgent),Vs=!!(Yc||Qo||So),Jh=!Vs&&/gecko\/(\d+)/i.test(Qe.userAgent),lo=!Vs&&/Chrome\/(\d+)/.exec(Qe.userAgent),ec="webkitFontSmoothing"in go.documentElement.style,yo=!Vs&&/Apple Computer/.test(Qe.vendor),tc=yo&&(/Mobile\/\w+/.test(Qe.userAgent)||Qe.maxTouchPoints>2),C={mac:tc||/Mac/.test(Qe.platform),windows:/Win/.test(Qe.platform),linux:/Linux|X11/.test(Qe.platform),ie:Vs,ie_version:Yc?go.documentMode||6:Qo?+Qo[1]:So?+So[1]:0,gecko:Jh,gecko_version:Jh?+(/Firefox\/(\d+)/.exec(Qe.userAgent)||[0,0])[1]:0,chrome:!!lo,chrome_version:lo?+lo[1]:0,ios:tc,android:/Android\b/.test(Qe.userAgent),webkit:ec,webkit_version:ec?+(/\bAppleWebKit\/(\d+)/.exec(Qe.userAgent)||[0,0])[1]:0,safari:yo,safari_version:yo?+(/\bVersion\/(\d+(\.\d+)?)/.exec(Qe.userAgent)||[0,0])[1]:0,tabSize:go.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function ul(n,e){for(let t in n)t=="class"&&e.class?e.class+=" "+n.class:t=="style"&&e.style?e.style+=";"+n.style:e[t]=n[t];return e}c(ul,"combineAttrs");var ys=Object.create(null);function dl(n,e,t){if(n==e)return!0;n||(n=ys),e||(e=ys);let i=Object.keys(n),s=Object.keys(e);if(i.length-(t&&i.indexOf(t)>-1?1:0)!=s.length-(t&&s.indexOf(t)>-1?1:0))return!1;for(let r of i)if(r!=t&&(s.indexOf(r)==-1||n[r]!==e[r]))return!1;return!0}c(dl,"attrsEq");function Mp(n,e){for(let t=n.attributes.length-1;t>=0;t--){let i=n.attributes[t].name;e[i]==null&&n.removeAttribute(i)}for(let t in e){let i=e[t];t=="style"?n.style.cssText=i:n.getAttribute(t)!=i&&n.setAttribute(t,i)}}c(Mp,"setAttrs");function ic(n,e,t){let i=!1;if(e)for(let s in e)t&&s in t||(i=!0,s=="style"?n.style.cssText="":n.removeAttribute(s));if(t)for(let s in t)e&&e[s]==t[s]||(i=!0,s=="style"?n.style.cssText=t[s]:n.setAttribute(s,t[s]));return i}c(ic,"updateAttrs");function Ep(n){let e=Object.create(null);for(let t=0;t<n.attributes.length;t++){let i=n.attributes[t];e[i.name]=i.value}return e}c(Ep,"getAttrs");var ye=class{static{c(this,"WidgetType")}eq(e){return!1}updateDOM(e,t){return!1}compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}get estimatedHeight(){return-1}get lineBreaks(){return 0}ignoreEvent(e){return!0}coordsAt(e,t,i){return null}get isHidden(){return!1}get editable(){return!1}destroy(e){}},ue=(function(n){return n[n.Text=0]="Text",n[n.WidgetBefore=1]="WidgetBefore",n[n.WidgetAfter=2]="WidgetAfter",n[n.WidgetRange=3]="WidgetRange",n})(ue||(ue={})),A=class extends Le{static{c(this,"Decoration")}constructor(e,t,i,s){super(),this.startSide=e,this.endSide=t,this.widget=i,this.spec=s}get heightRelevant(){return!1}static mark(e){return new pn(e)}static widget(e){let t=Math.max(-1e4,Math.min(1e4,e.side||0)),i=!!e.block;return t+=i&&!e.inlineOrder?t>0?3e8:-4e8:t>0?1e8:-1e8,new Ft(e,t,t,i,e.widget||null,!1)}static replace(e){let t=!!e.block,i,s;if(e.isBlockGap)i=-5e8,s=4e8;else{let{start:r,end:o}=Vc(e,t);i=(r?t?-3e8:-1:5e8)-1,s=(o?t?2e8:1:-6e8)+1}return new Ft(e,i,s,t,e.widget||null,!0)}static line(e){return new mn(e)}static set(e,t=!1){return D.of(e,t)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};A.none=D.empty;var pn=class n extends A{static{c(this,"MarkDecoration")}constructor(e){let{start:t,end:i}=Vc(e);super(t?-1:5e8,i?1:-6e8,null,e),this.tagName=e.tagName||"span",this.attrs=e.class&&e.attributes?ul(e.attributes,{class:e.class}):e.class?{class:e.class}:e.attributes||ys}eq(e){return this==e||e instanceof n&&this.tagName==e.tagName&&dl(this.attrs,e.attrs)}range(e,t=e){if(e>=t)throw new RangeError("Mark decorations may not be empty");return super.range(e,t)}};pn.prototype.point=!1;var mn=class n extends A{static{c(this,"LineDecoration")}constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof n&&this.spec.class==e.spec.class&&dl(this.spec.attributes,e.spec.attributes)}range(e,t=e){if(t!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,t)}};mn.prototype.mapMode=oe.TrackBefore;mn.prototype.point=!0;var Ft=class n extends A{static{c(this,"PointDecoration")}constructor(e,t,i,s,r,o){super(t,i,r,e),this.block=s,this.isReplace=o,this.mapMode=s?t<=0?oe.TrackBefore:oe.TrackAfter:oe.TrackDel}get type(){return this.startSide!=this.endSide?ue.WidgetRange:this.startSide<=0?ue.WidgetBefore:ue.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof n&&zp(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,t=e){if(this.isReplace&&(e>t||e==t&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&t!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,t)}};Ft.prototype.point=!0;function Vc(n,e=!1){let{inclusiveStart:t,inclusiveEnd:i}=n;return t==null&&(t=n.inclusive),i==null&&(i=n.inclusive),{start:t??e,end:i??e}}c(Vc,"getInclusive");function zp(n,e){return n==e||!!(n&&e&&n.compare(e))}c(zp,"widgetsEq");function wi(n,e,t,i=0){let s=t.length-1;s>=0&&t[s]+i>=n?t[s]=Math.max(t[s],e):t.push(n,e)}c(wi,"addRange");var bs=class n extends Le{static{c(this,"BlockWrapper")}constructor(e,t){super(),this.tagName=e,this.attributes=t}eq(e){return e==this||e instanceof n&&this.tagName==e.tagName&&dl(this.attributes,e.attributes)}static create(e){return new n(e.tagName,e.attributes||ys)}static set(e,t=!1){return D.of(e,t)}};bs.prototype.startSide=bs.prototype.endSide=-1;function gn(n){let e;return n.nodeType==11?e=n.getSelection?n:n.ownerDocument:e=n,e.getSelection()}c(gn,"getSelection");function bo(n,e){return e?n==e||n.contains(e.nodeType!=1?e.parentNode:e):!1}c(bo,"contains");function on(n,e){if(!e.anchorNode)return!1;try{return bo(n,e.anchorNode)}catch{return!1}}c(on,"hasSelection");function ps(n){return n.nodeType==3?Sn(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}c(ps,"clientRectsFor");function ln(n,e,t,i){return t?nc(n,e,t,i,-1)||nc(n,e,t,i,1):!1}c(ln,"isEquivalentPosition");function vt(n){for(var e=0;;e++)if(n=n.previousSibling,!n)return e}c(vt,"domIndex");function xs(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}c(xs,"isBlockElement");function nc(n,e,t,i,s){for(;;){if(n==t&&e==i)return!0;if(e==(s<0?0:gt(n))){if(n.nodeName=="DIV")return!1;let r=n.parentNode;if(!r||r.nodeType!=1)return!1;e=vt(n)+(s<0?0:1),n=r}else if(n.nodeType==1){if(n=n.childNodes[e+(s<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;e=s<0?gt(n):0}else return!1}}c(nc,"scanFor");function gt(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}c(gt,"maxOffset");function ws(n,e){let t=e?n.left:n.right;return{left:t,right:t,top:n.top,bottom:n.bottom}}c(ws,"flattenRect");function Yp(n){let e=n.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}c(Yp,"windowRect");function _c(n,e){let t=e.width/n.offsetWidth,i=e.height/n.offsetHeight;return(t>.995&&t<1.005||!isFinite(t)||Math.abs(e.width-n.offsetWidth)<1)&&(t=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(e.height-n.offsetHeight)<1)&&(i=1),{scaleX:t,scaleY:i}}c(_c,"getScale");function Vp(n,e,t,i,s,r,o,l){let a=n.ownerDocument,h=a.defaultView||window;for(let f=n,u=!1;f&&!u;)if(f.nodeType==1){let d,O=f==a.body,p=1,m=1;if(O)d=Yp(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(f).position)&&(u=!0),f.scrollHeight<=f.clientHeight&&f.scrollWidth<=f.clientWidth){f=f.assignedSlot||f.parentNode;continue}let b=f.getBoundingClientRect();({scaleX:p,scaleY:m}=_c(f,b)),d={left:b.left,right:b.left+f.clientWidth*p,top:b.top,bottom:b.top+f.clientHeight*m}}let g=0,Q=0;if(s=="nearest")e.top<d.top?(Q=e.top-(d.top+o),t>0&&e.bottom>d.bottom+Q&&(Q=e.bottom-d.bottom+o)):e.bottom>d.bottom&&(Q=e.bottom-d.bottom+o,t<0&&e.top-Q<d.top&&(Q=e.top-(d.top+o)));else{let b=e.bottom-e.top,x=d.bottom-d.top;Q=(s=="center"&&b<=x?e.top+b/2-x/2:s=="start"||s=="center"&&t<0?e.top-o:e.bottom-x+o)-d.top}if(i=="nearest"?e.left<d.left?(g=e.left-(d.left+r),t>0&&e.right>d.right+g&&(g=e.right-d.right+r)):e.right>d.right&&(g=e.right-d.right+r,t<0&&e.left<d.left+g&&(g=e.left-(d.left+r))):g=(i=="center"?e.left+(e.right-e.left)/2-(d.right-d.left)/2:i=="start"==l?e.left-r:e.right-(d.right-d.left)+r)-d.left,g||Q)if(O)h.scrollBy(g,Q);else{let b=0,x=0;if(Q){let Z=f.scrollTop;f.scrollTop+=Q/m,x=(f.scrollTop-Z)*m}if(g){let Z=f.scrollLeft;f.scrollLeft+=g/p,b=(f.scrollLeft-Z)*p}e={left:e.left-b,top:e.top-x,right:e.right-b,bottom:e.bottom-x},b&&Math.abs(b-g)<1&&(i="nearest"),x&&Math.abs(x-Q)<1&&(s="nearest")}if(O)break;(e.top<d.top||e.bottom>d.bottom||e.left<d.left||e.right>d.right)&&(e={left:Math.max(e.left,d.left),right:Math.min(e.right,d.right),top:Math.max(e.top,d.top),bottom:Math.min(e.bottom,d.bottom)}),f=f.assignedSlot||f.parentNode}else if(f.nodeType==11)f=f.host;else break}c(Vp,"scrollRectIntoView");function Dc(n,e=!0){let t=n.ownerDocument,i=null,s=null;for(let r=n.parentNode;r&&!(r==t.body||(!e||i)&&s);)if(r.nodeType==1)!s&&r.scrollHeight>r.clientHeight&&(s=r),e&&!i&&r.scrollWidth>r.clientWidth&&(i=r),r=r.assignedSlot||r.parentNode;else if(r.nodeType==11)r=r.host;else break;return{x:i,y:s}}c(Dc,"scrollableParents");var xo=class{static{c(this,"DOMSelectionState")}constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:t,focusNode:i}=e;this.set(t,Math.min(e.anchorOffset,t?gt(t):0),i,Math.min(e.focusOffset,i?gt(i):0))}set(e,t,i,s){this.anchorNode=e,this.anchorOffset=t,this.focusNode=i,this.focusOffset=s}},Nt=null;C.safari&&C.safari_version>=26&&(Nt=!1);function Lc(n){if(n.setActive)return n.setActive();if(Nt)return n.focus(Nt);let e=[];for(let t=n;t&&(e.push(t,t.scrollTop,t.scrollLeft),t!=t.ownerDocument);t=t.parentNode);if(n.focus(Nt==null?{get preventScroll(){return Nt={preventScroll:!0},!0}}:void 0),!Nt){Nt=!1;for(let t=0;t<e.length;){let i=e[t++],s=e[t++],r=e[t++];i.scrollTop!=s&&(i.scrollTop=s),i.scrollLeft!=r&&(i.scrollLeft=r)}}}c(Lc,"focusPreventScroll");var sc;function Sn(n,e,t=e){let i=sc||(sc=document.createRange());return i.setEnd(n,t),i.setStart(n,e),i}c(Sn,"textRange");function ki(n,e,t,i){let s={key:e,code:e,keyCode:t,which:t,cancelable:!0};i&&({altKey:s.altKey,ctrlKey:s.ctrlKey,shiftKey:s.shiftKey,metaKey:s.metaKey}=i);let r=new KeyboardEvent("keydown",s);r.synthetic=!0,n.dispatchEvent(r);let o=new KeyboardEvent("keyup",s);return o.synthetic=!0,n.dispatchEvent(o),r.defaultPrevented||o.defaultPrevented}c(ki,"dispatchKey");function _p(n){for(;n;){if(n&&(n.nodeType==9||n.nodeType==11&&n.host))return n;n=n.assignedSlot||n.parentNode}return null}c(_p,"getRoot");function Dp(n,e){let t=e.focusNode,i=e.focusOffset;if(!t||e.anchorNode!=t||e.anchorOffset!=i)return!1;for(i=Math.min(i,gt(t));;)if(i){if(t.nodeType!=1)return!1;let s=t.childNodes[i-1];s.contentEditable=="false"?i--:(t=s,i=gt(t))}else{if(t==n)return!0;i=vt(t),t=t.parentNode}}c(Dp,"atElementStart");function qc(n){return n instanceof Window?n.pageYOffset>Math.max(0,n.document.documentElement.scrollHeight-n.innerHeight-4):n.scrollTop>Math.max(1,n.scrollHeight-n.clientHeight-4)}c(qc,"isScrolledToBottom");function Wc(n,e){for(let t=n,i=e;;){if(t.nodeType==3&&i>0)return{node:t,offset:i};if(t.nodeType==1&&i>0){if(t.contentEditable=="false")return null;t=t.childNodes[i-1],i=gt(t)}else if(t.parentNode&&!xs(t))i=vt(t),t=t.parentNode;else return null}}c(Wc,"textNodeBefore");function Bc(n,e){for(let t=n,i=e;;){if(t.nodeType==3&&i<t.nodeValue.length)return{node:t,offset:i};if(t.nodeType==1&&i<t.childNodes.length){if(t.contentEditable=="false")return null;t=t.childNodes[i],i=0}else if(t.parentNode&&!xs(t))i=vt(t)+1,t=t.parentNode;else return null}}c(Bc,"textNodeAfter");var lt=class n{static{c(this,"DOMPos")}constructor(e,t,i=!0){this.node=e,this.offset=t,this.precise=i}static before(e,t){return new n(e.parentNode,vt(e),t)}static after(e,t){return new n(e.parentNode,vt(e)+1,t)}},B=(function(n){return n[n.LTR=0]="LTR",n[n.RTL=1]="RTL",n})(B||(B={})),Ht=B.LTR,Ol=B.RTL;function Ic(n){let e=[];for(let t=0;t<n.length;t++)e.push(1<<+n[t]);return e}c(Ic,"dec");var Lp=Ic("88888888888888888888888888888888888666888888787833333333337888888000000000000000000000000008888880000000000000000000000000088888888888888888888888888888888888887866668888088888663380888308888800000000000000000000000800000000000000000000000000000008"),qp=Ic("4444448826627288999999999992222222222222222222222222222222222222222222222229999999999999999999994444444444644222822222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222999999949999999229989999223333333333"),wo=Object.create(null),ot=[];for(let n of["()","[]","{}"]){let e=n.charCodeAt(0),t=n.charCodeAt(1);wo[e]=t,wo[t]=-e}function jc(n){return n<=247?Lp[n]:1424<=n&&n<=1524?2:1536<=n&&n<=1785?qp[n-1536]:1774<=n&&n<=2220?4:8192<=n&&n<=8204?256:64336<=n&&n<=65023?4:1}c(jc,"charType");var Wp=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\ufb50-\ufdff]/,je=class{static{c(this,"BidiSpan")}get dir(){return this.level%2?Ol:Ht}constructor(e,t,i){this.from=e,this.to=t,this.level=i}side(e,t){return this.dir==t==e?this.to:this.from}forward(e,t){return e==(this.dir==t)}static find(e,t,i,s){let r=-1;for(let o=0;o<e.length;o++){let l=e[o];if(l.from<=t&&l.to>=t){if(l.level==i)return o;(r<0||(s!=0?s<0?l.from<t:l.to>t:e[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}};function Nc(n,e){if(n.length!=e.length)return!1;for(let t=0;t<n.length;t++){let i=n[t],s=e[t];if(i.from!=s.from||i.to!=s.to||i.direction!=s.direction||!Nc(i.inner,s.inner))return!1}return!0}c(Nc,"isolatesEq");var U=[];function Bp(n,e,t,i,s){for(let r=0;r<=i.length;r++){let o=r?i[r-1].to:e,l=r<i.length?i[r].from:t,a=r?256:s;for(let h=o,f=a,u=a;h<l;h++){let d=jc(n.charCodeAt(h));d==512?d=f:d==8&&u==4&&(d=16),U[h]=d==4?2:d,d&7&&(u=d),f=d}for(let h=o,f=a,u=a;h<l;h++){let d=U[h];if(d==128)h<l-1&&f==U[h+1]&&f&24?d=U[h]=f:U[h]=256;else if(d==64){let O=h+1;for(;O<l&&U[O]==64;)O++;let p=h&&f==8||O<t&&U[O]==8?u==1?1:8:256;for(let m=h;m<O;m++)U[m]=p;h=O-1}else d==8&&u==1&&(U[h]=1);f=d,d&7&&(u=d)}}}c(Bp,"computeCharTypes");function Ip(n,e,t,i,s){let r=s==1?2:1;for(let o=0,l=0,a=0;o<=i.length;o++){let h=o?i[o-1].to:e,f=o<i.length?i[o].from:t;for(let u=h,d,O,p;u<f;u++)if(O=wo[d=n.charCodeAt(u)])if(O<0){for(let m=l-3;m>=0;m-=3)if(ot[m+1]==-O){let g=ot[m+2],Q=g&2?s:g&4?g&1?r:s:0;Q&&(U[u]=U[ot[m]]=Q),l=m;break}}else{if(ot.length==189)break;ot[l++]=u,ot[l++]=d,ot[l++]=a}else if((p=U[u])==2||p==1){let m=p==s;a=m?0:1;for(let g=l-3;g>=0;g-=3){let Q=ot[g+2];if(Q&2)break;if(m)ot[g+2]|=2;else{if(Q&4)break;ot[g+2]|=4}}}}}c(Ip,"processBracketPairs");function jp(n,e,t,i){for(let s=0,r=i;s<=t.length;s++){let o=s?t[s-1].to:n,l=s<t.length?t[s].from:e;for(let a=o;a<l;){let h=U[a];if(h==256){let f=a+1;for(;;)if(f==l){if(s==t.length)break;f=t[s++].to,l=s<t.length?t[s].from:e}else if(U[f]==256)f++;else break;let u=r==1,d=(f<e?U[f]:i)==1,O=u==d?u?1:2:i;for(let p=f,m=s,g=m?t[m-1].to:n;p>a;)p==g&&(p=t[--m].from,g=m?t[m-1].to:n),U[--p]=O;a=f}else r=h,a++}}}c(jp,"processNeutrals");function ko(n,e,t,i,s,r,o){let l=i%2?2:1;if(i%2==s%2)for(let a=e,h=0;a<t;){let f=!0,u=!1;if(h==r.length||a<r[h].from){let m=U[a];m!=l&&(f=!1,u=m==16)}let d=!f&&l==1?[]:null,O=f?i:i+1,p=a;e:for(;;)if(h<r.length&&p==r[h].from){if(u)break e;let m=r[h];if(!f)for(let g=m.to,Q=h+1;;){if(g==t)break e;if(Q<r.length&&r[Q].from==g)g=r[Q++].to;else{if(U[g]==l)break e;break}}if(h++,d)d.push(m);else{m.from>a&&o.push(new je(a,m.from,O));let g=m.direction==Ht!=!(O%2);vo(n,g?i+1:i,s,m.inner,m.from,m.to,o),a=m.to}p=m.to}else{if(p==t||(f?U[p]!=l:U[p]==l))break;p++}d?ko(n,a,p,i+1,s,d,o):a<p&&o.push(new je(a,p,O)),a=p}else for(let a=t,h=r.length;a>e;){let f=!0,u=!1;if(!h||a>r[h-1].to){let m=U[a-1];m!=l&&(f=!1,u=m==16)}let d=!f&&l==1?[]:null,O=f?i:i+1,p=a;e:for(;;)if(h&&p==r[h-1].to){if(u)break e;let m=r[--h];if(!f)for(let g=m.from,Q=h;;){if(g==e)break e;if(Q&&r[Q-1].to==g)g=r[--Q].from;else{if(U[g-1]==l)break e;break}}if(d)d.push(m);else{m.to<a&&o.push(new je(m.to,a,O));let g=m.direction==Ht!=!(O%2);vo(n,g?i+1:i,s,m.inner,m.from,m.to,o),a=m.from}p=m.from}else{if(p==e||(f?U[p-1]!=l:U[p-1]==l))break;p--}d?ko(n,p,a,i+1,s,d,o):p<a&&o.push(new je(p,a,O)),a=p}}c(ko,"emitSpans");function vo(n,e,t,i,s,r,o){let l=e%2?2:1;Bp(n,s,r,i,l),Ip(n,s,r,i,l),jp(s,r,i,l),ko(n,s,r,e,t,i,o)}c(vo,"computeSectionOrder");function Np(n,e,t){if(!n)return[new je(0,0,e==Ol?1:0)];if(e==Ht&&!t.length&&!Wp.test(n))return Gc(n.length);if(t.length)for(;n.length>U.length;)U[U.length]=256;let i=[],s=e==Ht?0:1;return vo(n,s,s,t,0,n.length,i),i}c(Np,"computeOrder");function Gc(n){return[new je(0,n,0)]}c(Gc,"trivialOrder");var Uc="";function Gp(n,e,t,i,s){var r;let o=i.head-n.from,l=je.find(e,o,(r=i.bidiLevel)!==null&&r!==void 0?r:-1,i.assoc),a=e[l],h=a.side(s,t);if(o==h){let d=l+=s?1:-1;if(d<0||d>=e.length)return null;a=e[l=d],o=a.side(!s,t),h=a.side(s,t)}let f=ne(n.text,o,a.forward(s,t));(f<a.from||f>a.to)&&(f=h),Uc=n.text.slice(Math.min(o,f),Math.max(o,f));let u=l==(s?e.length-1:0)?null:e[l+(s?1:-1)];return u&&f==h&&u.level+(s?0:1)<a.level?y.cursor(u.side(!s,t)+n.from,u.forward(s,t)?1:-1,u.level):y.cursor(f+n.from,a.forward(s,t)?-1:1,a.level)}c(Gp,"moveVisually");function Up(n,e,t){for(let i=e;i<t;i++){let s=jc(n.charCodeAt(i));if(s==1)return Ht;if(s==2||s==4)return Ol}return Ht}c(Up,"autoDirection");var Fc=T.define(),Hc=T.define(),Kc=T.define(),Jc=T.define(),Po=T.define(),ef=T.define(),tf=T.define(),pl=T.define(),ml=T.define(),nf=T.define({combine:c(n=>n.some(e=>e),"combine")}),sf=T.define({combine:c(n=>n.some(e=>e),"combine")}),rf=T.define(),an=class n{static{c(this,"ScrollTarget")}constructor(e,t="nearest",i="nearest",s=5,r=5,o=!1){this.range=e,this.y=t,this.x=i,this.yMargin=s,this.xMargin=r,this.isSnapshot=o}map(e){return e.empty?this:new n(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new n(y.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},os=R.define({map:c((n,e)=>n.map(e),"map")}),of=R.define();function fe(n,e,t){let i=n.facet(Jc);i.length?i[0](e):window.onerror&&window.onerror(String(e),t,void 0,void 0,e)||(t?console.error(t+":",e):console.error(e))}c(fe,"logException");var pt=T.define({combine:c(n=>n.length?n[0]:!0,"combine")}),Fp=0,Qi=T.define({combine(n){return n.filter((e,t)=>{for(let i=0;i<t;i++)if(n[i].plugin==e.plugin)return!1;return!0})}}),te=class n{static{c(this,"ViewPlugin")}constructor(e,t,i,s,r){this.id=e,this.create=t,this.domEventHandlers=i,this.domEventObservers=s,this.baseExtensions=r(this),this.extension=this.baseExtensions.concat(Qi.of({plugin:this,arg:void 0}))}of(e){return this.baseExtensions.concat(Qi.of({plugin:this,arg:e}))}static define(e,t){let{eventHandlers:i,eventObservers:s,provide:r,decorations:o}=t||{};return new n(Fp++,e,i,s,l=>{let a=[];return o&&a.push(_s.of(h=>{let f=h.plugin(l);return f?o(f):A.none})),r&&a.push(r(l)),a})}static fromClass(e,t){return n.define((i,s)=>new e(i,s),t)}},hn=class{static{c(this,"PluginInstance")}constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(this.value){if(this.mustUpdate){let t=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(t)}catch(i){if(fe(t.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(t){fe(e.state,t,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var t;if(!((t=this.value)===null||t===void 0)&&t.destroy)try{this.value.destroy()}catch(i){fe(e.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},lf=T.define(),gl=T.define(),_s=T.define(),af=T.define(),Sl=T.define(),Qn=T.define(),hf=T.define();function rc(n,e){let t=n.state.facet(hf);if(!t.length)return t;let i=t.map(r=>r instanceof Function?r(n):r),s=[];return D.spans(i,e.from,e.to,{point(){},span(r,o,l,a){let h=r-e.from,f=o-e.from,u=s;for(let d=l.length-1;d>=0;d--,a--){let O=l[d].spec.bidiIsolate,p;if(O==null&&(O=Up(e.text,h,f)),a>0&&u.length&&(p=u[u.length-1]).to==h&&p.direction==O)p.to=f,u=p.inner;else{let m={from:h,to:f,direction:O,inner:[]};u.push(m),u=m.inner}}}}),s}c(rc,"getIsolatedRanges");var cf=T.define();function Ql(n){let e=0,t=0,i=0,s=0;for(let r of n.state.facet(cf)){let o=r(n);o&&(o.left!=null&&(e=Math.max(e,o.left)),o.right!=null&&(t=Math.max(t,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:e,right:t,top:i,bottom:s}}c(Ql,"getScrollMargins");var nn=T.define(),Fe=class n{static{c(this,"ChangedRange")}constructor(e,t,i,s){this.fromA=e,this.toA=t,this.fromB=i,this.toB=s}join(e){return new n(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let t=e.length,i=this;for(;t>0;t--){let s=e[t-1];if(!(s.fromA>i.toA)){if(s.toA<i.fromA)break;i=i.join(s),e.splice(t-1,1)}}return e.splice(t,0,i),e}static extendWithRanges(e,t){if(t.length==0)return e;let i=[];for(let s=0,r=0,o=0;;){let l=s<e.length?e[s].fromB:1e9,a=r<t.length?t[r]:1e9,h=Math.min(l,a);if(h==1e9)break;let f=h+o,u=h,d=f;for(;;)if(r<t.length&&t[r]<=u){let O=t[r+1];r+=2,u=Math.max(u,O);for(let p=s;p<e.length&&e[p].fromB<=u;p++)o=e[p].toA-e[p].toB;d=Math.max(d,O+o)}else if(s<e.length&&e[s].fromB<=u){let O=e[s++];u=Math.max(u,O.toB),d=Math.max(d,O.toA),o=O.toA-O.toB}else break;i.push(new n(f,d,h,u))}return i}},ks=class n{static{c(this,"ViewUpdate")}constructor(e,t,i){this.view=e,this.state=t,this.transactions=i,this.flags=0,this.startState=e.state,this.changes=Se.empty(this.startState.doc.length);for(let r of i)this.changes=this.changes.compose(r.changes);let s=[];this.changes.iterChangedRanges((r,o,l,a)=>s.push(new Fe(r,o,l,a))),this.changedRanges=s}static create(e,t,i){return new n(e,t,i)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},Hp=[],ee=class{static{c(this,"Tile")}constructor(e,t,i=0){this.dom=e,this.length=t,this.flags=i,this.parent=null,e.cmTile=this}get breakAfter(){return this.flags&1}get children(){return Hp}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(e){if(this.flags|=2,this.flags&4){this.flags&=-5;let t=this.domAttrs;t&&Mp(this.dom,t)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(e){this.dom=e,e.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(e,t=this.posAtStart){let i=t;for(let s of this.children){if(s==e)return i;i+=s.length+s.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(e){return this.posBefore(e)+e.length}covers(e){return!0}coordsIn(e,t){return null}domPosFor(e,t){let i=vt(this.dom),s=this.length?e>0:t>0;return new lt(this.parent.dom,i+(s?1:0),e==0||e==this.length)}markDirty(e){this.flags&=-3,e&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let e=this;e;e=e.parent)if(e instanceof Pi)return e;return null}static get(e){return e.cmTile}},vi=class extends ee{static{c(this,"CompositeTile")}constructor(e){super(e,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(e){this.children.push(e),e.parent=this}sync(e){if(this.flags&2)return;super.sync(e);let t=this.dom,i=null,s,r=e?.node==t?e:null,o=0;for(let l of this.children){if(l.sync(e),o+=l.length+l.breakAfter,s=i?i.nextSibling:t.firstChild,r&&s!=l.dom&&(r.written=!0),l.dom.parentNode==t)for(;s&&s!=l.dom;)s=oc(s);else t.insertBefore(l.dom,s);i=l.dom}for(s=i?i.nextSibling:t.firstChild,r&&s&&(r.written=!0);s;)s=oc(s);this.length=o}};function oc(n){let e=n.nextSibling;return n.parentNode.removeChild(n),e}c(oc,"rm$1");var Pi=class extends vi{static{c(this,"DocTile")}constructor(e,t){super(t),this.view=e}owns(e){for(;e;e=e.parent)if(e==this)return!0;return!1}isBlock(){return!0}nearest(e){for(;;){if(!e)return null;let t=ee.get(e);if(t&&this.owns(t))return t;e=e.parentNode}}blockTiles(e){for(let t=[],i=this,s=0,r=0;;)if(s==i.children.length){if(!t.length)return;i=i.parent,i.breakAfter&&r++,s=t.pop()}else{let o=i.children[s++];if(o instanceof mt)t.push(s),i=o,s=0;else{let l=r+o.length,a=e(o,r);if(a!==void 0)return a;r=l+o.breakAfter}}}resolveBlock(e,t){let i,s=-1,r,o=-1;if(this.blockTiles((l,a)=>{let h=a+l.length;if(e>=a&&e<=h){if(l.isWidget()&&t>=-1&&t<=1){if(l.flags&32)return!0;l.flags&16&&(i=void 0)}(a<e||e==h&&(t<-1?l.length:l.covers(1)))&&(!i||!l.isWidget()&&i.isWidget())&&(i=l,s=e-a),(h>e||e==a&&(t>1?l.length:l.covers(-1)))&&(!r||!l.isWidget()&&r.isWidget())&&(r=l,o=e-a)}}),!i&&!r)throw new Error("No tile at position "+e);return i&&t<0||!r?{tile:i,offset:s}:{tile:r,offset:o}}},mt=class n extends vi{static{c(this,"BlockWrapperTile")}constructor(e,t){super(e),this.wrapper=t}isBlock(){return!0}covers(e){return this.children.length?e<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(e,t){let i=new n(t||document.createElement(e.tagName),e);return t||(i.flags|=4),i}},$i=class n extends vi{static{c(this,"LineTile")}constructor(e,t){super(e),this.attrs=t}isLine(){return!0}static start(e,t,i){let s=new n(t||document.createElement("div"),e);return(!t||!i)&&(s.flags|=4),s}get domAttrs(){return this.attrs}resolveInline(e,t,i){let s=null,r=-1,o=null,l=-1;function a(f,u){for(let d=0,O=0;d<f.children.length&&O<=u;d++){let p=f.children[d],m=O+p.length;m>=u&&(p.isComposite()?a(p,u-O):(!o||o.isHidden&&(t>0||i&&Jp(o,p)))&&(m>u||p.flags&32)?(o=p,l=u-O):(O<u||p.flags&16&&!p.isHidden)&&(s=p,r=u-O)),O=m}}c(a,"scan"),a(this,e);let h=(t<0?s:o)||s||o;return h?{tile:h,offset:h==s?r:l}:null}coordsIn(e,t){let i=this.resolveInline(e,t,!0);return i?i.tile.coordsIn(Math.max(0,i.offset),t):Kp(this)}domIn(e,t){let i=this.resolveInline(e,t);if(i){let{tile:s,offset:r}=i;if(this.dom.contains(s.dom))return s.isText()?new lt(s.dom,Math.min(s.dom.nodeValue.length,r)):s.domPosFor(r,s.flags&16?1:s.flags&32?-1:t);let o=i.tile.parent,l=!1;for(let a of o.children){if(l)return new lt(a.dom,0);a==i.tile&&(l=!0)}}return new lt(this.dom,0)}};function Kp(n){let e=n.dom.lastChild;if(!e)return n.dom.getBoundingClientRect();let t=ps(e);return t[t.length-1]||null}c(Kp,"fallbackRect");function Jp(n,e){let t=n.coordsIn(0,1),i=e.coordsIn(0,1);return t&&i&&i.top<t.bottom}c(Jp,"onSameLine");var we=class n extends vi{static{c(this,"MarkTile")}constructor(e,t){super(e),this.mark=t}get domAttrs(){return this.mark.attrs}static of(e,t){let i=new n(t||document.createElement(e.tagName),e);return t||(i.flags|=4),i}},Gt=class n extends ee{static{c(this,"TextTile")}constructor(e,t){super(e,t.length),this.text=t}sync(e){this.flags&2||(super.sync(e),this.dom.nodeValue!=this.text&&(e&&e.node==this.dom&&(e.written=!0),this.dom.nodeValue=this.text))}isText(){return!0}toString(){return JSON.stringify(this.text)}coordsIn(e,t){let i=this.dom.nodeValue.length;e>i&&(e=i);let s=e,r=e,o=0;e==0&&t<0||e==i&&t>=0?C.chrome||C.gecko||(e?(s--,o=1):r<i&&(r++,o=-1)):t<0?s--:r<i&&r++;let l=Sn(this.dom,s,r).getClientRects();if(!l.length)return null;let a=l[(o?o<0:t>=0)?0:l.length-1];return C.safari&&!o&&a.width==0&&(a=Array.prototype.find.call(l,h=>h.width)||a),o?ws(a,o<0):a||null}static of(e,t){let i=new n(t||document.createTextNode(e),e);return t||(i.flags|=2),i}},Kt=class n extends ee{static{c(this,"WidgetTile")}constructor(e,t,i,s){super(e,t,s),this.widget=i}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(e){return this.flags&48?!1:(this.flags&(e<0?64:128))>0}coordsIn(e,t){return this.coordsInWidget(e,t,!1)}coordsInWidget(e,t,i){let s=this.widget.coordsAt(this.dom,e,t);if(s)return s;if(i)return ws(this.dom.getBoundingClientRect(),this.length?e==0:t<=0);{let r=this.dom.getClientRects(),o=null;if(!r.length)return null;let l=this.flags&16?!0:this.flags&32?!1:e>0;for(let a=l?r.length-1:0;o=r[a],!(e>0?a==0:a==r.length-1||o.top<o.bottom);a+=l?-1:1);return ws(o,!l)}}get overrideDOMText(){if(!this.length)return V.empty;let{root:e}=this;if(!e)return V.empty;let t=this.posAtStart;return e.view.state.doc.slice(t,t+this.length)}destroy(){super.destroy(),this.widget.destroy(this.dom)}static of(e,t,i,s,r){return r||(r=e.toDOM(t),e.editable||(r.contentEditable="false")),new n(r,i,e,s)}},Ti=class extends ee{static{c(this,"WidgetBufferTile")}constructor(e){let t=document.createElement("img");t.className="cm-widgetBuffer",t.setAttribute("aria-hidden","true"),super(t,0,e)}get isHidden(){return!0}get overrideDOMText(){return V.empty}coordsIn(e){return this.dom.getBoundingClientRect()}},$o=class{static{c(this,"TilePointer")}constructor(e){this.index=0,this.beforeBreak=!1,this.parents=[],this.tile=e}advance(e,t,i){let{tile:s,index:r,beforeBreak:o,parents:l}=this;for(;e||t>0;)if(s.isComposite())if(o){if(!e)break;i&&i.break(),e--,o=!1}else if(r==s.children.length){if(!e&&!l.length)break;i&&i.leave(s),o=!!s.breakAfter,{tile:s,index:r}=l.pop(),r++}else{let a=s.children[r],h=a.breakAfter;(t>0?a.length<=e:a.length<e)&&(!i||i.skip(a,0,a.length)!==!1||!a.isComposite)?(o=!!h,r++,e-=a.length):(l.push({tile:s,index:r}),s=a,r=0,i&&a.isComposite()&&i.enter(a))}else if(r==s.length)o=!!s.breakAfter,{tile:s,index:r}=l.pop(),r++;else if(e){let a=Math.min(e,s.length-r);i&&i.skip(s,r,r+a),e-=a,r+=a}else break;return this.tile=s,this.index=r,this.beforeBreak=o,this}get root(){return this.parents.length?this.parents[0].tile:this.tile}},To=class{static{c(this,"OpenWrapper")}constructor(e,t,i,s){this.from=e,this.to=t,this.wrapper=i,this.rank=s}},Co=class{static{c(this,"TileBuilder")}constructor(e,t,i){this.cache=e,this.root=t,this.blockWrappers=i,this.curLine=null,this.lastBlock=null,this.afterWidget=null,this.pos=0,this.wrappers=[],this.wrapperPos=0}addText(e,t,i,s){var r;this.flushBuffer();let o=this.ensureMarks(t,i),l=o.lastChild;if(l&&l.isText()&&!(l.flags&8)&&l.length+e.length<512){this.cache.reused.set(l,2);let a=o.children[o.children.length-1]=new Gt(l.dom,l.text+e);a.parent=o}else o.append(s||Gt.of(e,(r=this.cache.find(Gt))===null||r===void 0?void 0:r.dom));this.pos+=e.length,this.afterWidget=null}addComposition(e,t){let i=this.curLine;i.dom!=t.line.dom&&(i.setDOM(this.cache.reused.has(t.line)?ao(t.line.dom):t.line.dom),this.cache.reused.set(t.line,2));let s=i;for(let l=t.marks.length-1;l>=0;l--){let a=t.marks[l],h=s.lastChild;if(h instanceof we&&h.mark.eq(a.mark))h.dom!=a.dom&&h.setDOM(ao(a.dom)),s=h;else{if(this.cache.reused.get(a)){let u=ee.get(a.dom);u&&u.setDOM(ao(a.dom))}let f=we.of(a.mark,a.dom);s.append(f),s=f}this.cache.reused.set(a,2)}let r=ee.get(e.text);r&&this.cache.reused.set(r,2);let o=new Gt(e.text,e.text.nodeValue);o.flags|=8,s.append(o)}addInlineWidget(e,t,i){let s=this.afterWidget&&e.flags&48&&(this.afterWidget.flags&48)==(e.flags&48);s||this.flushBuffer();let r=this.ensureMarks(t,i);!s&&!(e.flags&16)&&r.append(this.getBuffer(1)),r.append(e),this.pos+=e.length,this.afterWidget=e}addMark(e,t,i){this.flushBuffer(),this.ensureMarks(t,i).append(e),this.pos+=e.length,this.afterWidget=null}addBlockWidget(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}continueWidget(e){let t=this.afterWidget||this.lastBlock;t.length+=e,this.pos+=e}addLineStart(e,t){var i;e||(e=ff);let s=$i.start(e,t||((i=this.cache.find($i))===null||i===void 0?void 0:i.dom),!!t);this.getBlockPos().append(this.lastBlock=this.curLine=s)}addLine(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(e){this.blockPosCovered()||this.addLineStart(e)}ensureLine(e){this.curLine||this.addLineStart(e)}ensureMarks(e,t){var i;let s=this.curLine;for(let r=e.length-1;r>=0;r--){let o=e[r],l;if(t>0&&(l=s.lastChild)&&l instanceof we&&l.mark.eq(o))s=l,t--;else{let a=we.of(o,(i=this.cache.find(we,h=>h.mark.eq(o)))===null||i===void 0?void 0:i.dom);s.append(a),s=a,t=0}}return s}endLine(){if(this.curLine){this.flushBuffer();let e=this.curLine.lastChild;(!e||!lc(this.curLine,!1)||e.dom.nodeName!="BR"&&e.isWidget()&&!(C.ios&&lc(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(ho,0,32)||new Kt(ho.toDOM(),0,ho,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let e=this.wrappers.length-1;e>=0;e--)this.wrappers[e].to<this.pos&&this.wrappers.splice(e,1);for(let e=this.blockWrappers;e.value&&e.from<=this.pos;e.next())if(e.to>=this.pos){let t=new To(e.from,e.to,e.value,e.rank),i=this.wrappers.length;for(;i>0&&(this.wrappers[i-1].rank-t.rank||this.wrappers[i-1].to-t.to)<0;)i--;this.wrappers.splice(i,0,t)}this.wrapperPos=this.pos}getBlockPos(){var e;this.updateBlockWrappers();let t=this.root;for(let i of this.wrappers){let s=t.lastChild;if(i.from<this.pos&&s instanceof mt&&s.wrapper.eq(i.wrapper))t=s;else{let r=mt.of(i.wrapper,(e=this.cache.find(mt,o=>o.wrapper.eq(i.wrapper)))===null||e===void 0?void 0:e.dom);t.append(r),t=r}}return t}blockPosCovered(){let e=this.lastBlock;return e!=null&&!e.breakAfter&&(!e.isWidget()||(e.flags&160)>0)}getBuffer(e){let t=2|(e<0?16:32),i=this.cache.find(Ti,void 0,1);return i&&(i.flags=t),i||new Ti(t)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Zo=class{static{c(this,"TextStream")}constructor(e){this.skipCount=0,this.text="",this.textOff=0,this.cursor=e.iter()}skip(e){this.textOff+e<=this.text.length?this.textOff+=e:(this.skipCount+=e-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(e){if(this.textOff==this.text.length){let{value:s,lineBreak:r,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=s;let l=this.textOff=Math.min(e,s.length);return r?null:s.slice(0,l)}let t=Math.min(this.text.length,this.textOff+e),i=this.text.slice(this.textOff,t);return this.textOff=t,i}},vs=[Kt,$i,Gt,we,Ti,mt,Pi];for(let n=0;n<vs.length;n++)vs[n].bucket=n;var Ao=class{static{c(this,"TileCache")}constructor(e){this.view=e,this.buckets=vs.map(()=>[]),this.index=vs.map(()=>0),this.reused=new Map}add(e){let t=e.constructor.bucket,i=this.buckets[t];i.length<6?i.push(e):i[this.index[t]=(this.index[t]+1)%6]=e}find(e,t,i=2){let s=e.bucket,r=this.buckets[s],o=this.index[s];for(let l=r.length-1;l>=0;l--){let a=(l+o)%r.length,h=r[a];if((!t||t(h))&&!this.reused.has(h))return r.splice(a,1),a<o&&this.index[s]--,this.reused.set(h,i),h}return null}findWidget(e,t,i){let s=this.buckets[0];if(s.length)for(let r=0,o=0;;r++){if(r==s.length){if(o)return null;o=1,r=0}let l=s[r];if(!this.reused.has(l)&&(o==0?l.widget.compare(e):l.widget.constructor==e.constructor&&e.updateDOM(l.dom,this.view)))return s.splice(r,1),r<this.index[0]&&this.index[0]--,l.widget==e&&l.length==t&&(l.flags&497)==i?(this.reused.set(l,1),l):(this.reused.set(l,2),new Kt(l.dom,t,e,l.flags&-498|i))}}reuse(e){return this.reused.set(e,1),e}maybeReuse(e,t=2){if(!this.reused.has(e))return this.reused.set(e,t),e.dom}clear(){for(let e=0;e<this.buckets.length;e++)this.buckets[e].length=this.index[e]=0}},Xo=class{static{c(this,"TileUpdate")}constructor(e,t,i,s,r){this.view=e,this.decorations=s,this.disallowBlockEffectsFor=r,this.openWidget=!1,this.openMarks=0,this.cache=new Ao(e),this.text=new Zo(e.state.doc),this.builder=new Co(this.cache,new Pi(e,e.contentDOM),D.iter(i)),this.cache.reused.set(t,2),this.old=new $o(t),this.reuseWalker={skip:c((o,l,a)=>{if(this.cache.add(o),o.isComposite())return!1},"skip"),enter:c(o=>this.cache.add(o),"enter"),leave:c(()=>{},"leave"),break:c(()=>{},"break")}}run(e,t){let i=t&&this.getCompositionContext(t.text);for(let s=0,r=0,o=0;;){let l=o<e.length?e[o++]:null,a=l?l.fromA:this.old.root.length;if(a>s){let h=a-s;this.preserve(h,!o,!l),s=a,r+=h}if(!l)break;t&&l.fromA<=t.range.fromA&&l.toA>=t.range.toA?(this.forward(l.fromA,t.range.fromA,t.range.fromA<t.range.toA?1:-1),this.emit(r,t.range.fromB),this.cache.clear(),this.builder.addComposition(t,i),this.text.skip(t.range.toB-t.range.fromB),this.forward(t.range.fromA,l.toA),this.emit(t.range.toB,l.toB)):(this.forward(l.fromA,l.toA),this.emit(r,l.toB)),r=l.toB,s=l.toA}return this.builder.curLine&&this.builder.endLine(),this.builder.root}preserve(e,t,i){let s=im(this.old),r=this.openMarks;this.old.advance(e,i?1:-1,{skip:c((o,l,a)=>{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(a-l);else{let h=a>0||l<o.length?Kt.of(o.widget,this.view,a-l,o.flags&496,this.cache.maybeReuse(o)):this.cache.reuse(o);h.flags&256?(h.flags&=-2,this.builder.addBlockWidget(h)):(this.builder.ensureLine(null),this.builder.addInlineWidget(h,s,r),r=s.length)}else if(o.isText())this.builder.ensureLine(null),!l&&a==o.length&&!this.cache.reused.has(o)?this.builder.addText(o.text,s,r,this.cache.reuse(o)):(this.cache.add(o),this.builder.addText(o.text.slice(l,a),s,r)),r=s.length;else if(o.isLine())o.flags&=-2,this.cache.reused.set(o,1),this.builder.addLine(o);else if(o instanceof Ti)this.cache.add(o);else if(o instanceof we)this.builder.ensureLine(null),this.builder.addMark(o,s,r),this.cache.reused.set(o,1),r=s.length;else return!1;this.openWidget=!1},"skip"),enter:c(o=>{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof we&&s.unshift(o.mark)),this.openWidget=!1},"enter"),leave:c(o=>{o.isLine()?s.length&&(s.length=r=0):o instanceof we&&(s.shift(),r=Math.min(r,s.length))},"leave"),break:c(()=>{this.builder.addBreak(),this.openWidget=!1},"break")}),this.text.skip(e)}emit(e,t){let i=null,s=this.builder,r=0,o=D.spans(this.decorations,e,t,{point:c((l,a,h,f,u,d)=>{if(h instanceof Ft){if(this.disallowBlockEffectsFor[d]){if(h.block)throw new RangeError("Block decorations may not be specified via plugins");if(a>this.view.state.doc.lineAt(l).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(r=f.length,u>f.length)s.continueWidget(a-l);else{let O=h.widget||(h.block?Pt.block:Pt.inline),p=em(h),m=this.cache.findWidget(O,a-l,p)||Kt.of(O,this.view,a-l,p);h.block?(h.startSide>0&&s.addLineStartIfNotCovered(i),s.addBlockWidget(m)):(s.ensureLine(i),s.addInlineWidget(m,f,u))}i=null}else i=tm(i,h);a>l&&this.text.skip(a-l)},"point"),span:c((l,a,h,f)=>{for(let u=l;u<a;){let d=this.text.next(Math.min(512,a-u));d==null?(s.addLineStartIfNotCovered(i),s.addBreak(),u++):(s.ensureLine(i),s.addText(d,h,u==l?f:h.length),u+=d.length),i=null}},"span")});s.addLineStartIfNotCovered(i),this.openWidget=o>r,this.openMarks=o}forward(e,t,i=1){t-e<=10?this.old.advance(t-e,i,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(t-e-10,-1),this.old.advance(5,i,this.reuseWalker))}getCompositionContext(e){let t=[],i=null;for(let s=e.parentNode;;s=s.parentNode){let r=ee.get(s);if(s==this.view.contentDOM)break;r instanceof we?t.push(r):r?.isLine()?i=r:r instanceof mt||(s.nodeName=="DIV"&&!i&&s!=this.view.contentDOM?i=new $i(s,ff):i||t.push(we.of(new pn({tagName:s.nodeName.toLowerCase(),attributes:Ep(s)}),s)))}return{line:i,marks:t}}};function lc(n,e){let t=c(i=>{for(let s of i.children)if((e?s.isText():s.length)||t(s))return!0;return!1},"scan");return t(n)}c(lc,"hasContent");function em(n){let e=n.isReplace?(n.startSide<0?64:0)|(n.endSide>0?128:0):n.startSide>0?32:16;return n.block&&(e|=256),e}c(em,"widgetFlags");var ff={class:"cm-line"};function tm(n,e){let t=e.spec.attributes,i=e.spec.class;return!t&&!i||(n||(n={class:"cm-line"}),t&&ul(t,n),i&&(n.class+=" "+i)),n}c(tm,"addLineDeco");function im(n){let e=[];for(let t=n.parents.length;t>1;t--){let i=t==n.parents.length?n.tile:n.parents[t].tile;i instanceof we&&e.push(i.mark)}return e}c(im,"getMarks");function ao(n){let e=ee.get(n);return e&&e.setDOM(n.cloneNode()),n}c(ao,"freeNode");var Pt=class extends ye{static{c(this,"NullWidget")}constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};Pt.inline=new Pt("span");Pt.block=new Pt("div");var ho=new class extends ye{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},Ps=class{static{c(this,"DocView")}constructor(e){this.view=e,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=A.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new Pi(e,e.contentDOM),this.updateInner([new Fe(0,0,0,e.state.doc.length)],null)}update(e){var t;let i=e.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:f,toA:u})=>u<this.minWidthFrom||f>this.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((t=this.domChanged)===null||t===void 0)&&t.newSel?s=this.domChanged.newSel.head:!cm(e.changes,this.hasComposition)&&!e.selectionSet&&(s=e.state.selection.main.head));let r=s>-1?sm(this.view,e.changes,s):null;if(this.domChanged=null,this.hasComposition){let{from:f,to:u}=this.hasComposition;i=new Fe(f,u,e.changes.mapPos(f,-1),e.changes.mapPos(u,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(C.ie||C.chrome)&&!r&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.blockWrappers;this.updateDeco();let a=lm(o,this.decorations,e.changes);a.length&&(i=Fe.extendWithRanges(i,a));let h=am(l,this.blockWrappers,e.changes);return h.length&&(i=Fe.extendWithRanges(i,h)),r&&!i.some(f=>f.fromA<=r.range.fromA&&f.toA>=r.range.toA)&&(i=r.range.addToSet(i.slice())),this.tile.flags&2&&i.length==0?!1:(this.updateInner(i,r),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,t){this.view.viewState.mustMeasureContent=!0;let{observer:i}=this.view;i.ignore(()=>{if(t||e.length){let o=this.tile,l=new Xo(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);t&&ee.get(t.text)&&l.cache.reused.set(ee.get(t.text),2),this.tile=l.run(e,t),Ro(o,l.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let r=C.chrome||C.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(r),r&&(r.written||i.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let s=[];if(this.view.viewport.from||this.view.viewport.to<this.view.state.doc.length)for(let r of this.tile.children)r.isWidget()&&r.widget instanceof cn&&s.push(r.dom);i.updateGaps(s)}updateEditContextFormatting(e){this.editContextFormatting=this.editContextFormatting.map(e.changes);for(let t of e.transactions)for(let i of t.effects)i.is(of)&&(this.editContextFormatting=i.value)}updateSelection(e=!1,t=!1){(e||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange();let{dom:i}=this.tile,s=this.view.root.activeElement,r=s==i,o=!r&&!(this.view.state.facet(pt)||i.tabIndex>-1)&&on(i,this.view.observer.selectionRange)&&!(s&&i.contains(s));if(!(r||t||o))return;let l=this.forceSelection;this.forceSelection=!1;let a=this.view.state.selection.main,h,f;if(a.empty?f=h=this.inlineDOMNearPos(a.anchor,a.assoc||1):(f=this.inlineDOMNearPos(a.head,a.head==a.from?1:-1),h=this.inlineDOMNearPos(a.anchor,a.anchor==a.from?1:-1)),C.gecko&&a.empty&&!this.hasComposition&&nm(h)){let d=document.createTextNode("");this.view.observer.ignore(()=>h.node.insertBefore(d,h.node.childNodes[h.offset]||null)),h=f=new lt(d,0),l=!0}let u=this.view.observer.selectionRange;(l||!u.focusNode||(!ln(h.node,h.offset,u.anchorNode,u.anchorOffset)||!ln(f.node,f.offset,u.focusNode,u.focusOffset))&&!this.suppressWidgetCursorChange(u,a))&&(this.view.observer.ignore(()=>{C.android&&C.chrome&&i.contains(u.focusNode)&&hm(u.focusNode,i)&&(i.blur(),i.focus({preventScroll:!0}));let d=gn(this.view.root);if(d)if(a.empty){if(C.gecko){let O=rm(h.node,h.offset);if(O&&O!=3){let p=(O==1?Wc:Bc)(h.node,h.offset);p&&(h=new lt(p.node,p.offset))}}d.collapse(h.node,h.offset),a.bidiLevel!=null&&d.caretBidiLevel!==void 0&&(d.caretBidiLevel=a.bidiLevel)}else if(d.extend){d.collapse(h.node,h.offset);try{d.extend(f.node,f.offset)}catch{}}else{let O=document.createRange();a.anchor>a.head&&([h,f]=[f,h]),O.setEnd(f.node,f.offset),O.setStart(h.node,h.offset),d.removeAllRanges(),d.addRange(O)}o&&this.view.root.activeElement==i&&(i.blur(),s&&s.focus())}),this.view.observer.setSelectionRange(h,f)),this.impreciseAnchor=h.precise?null:new lt(u.anchorNode,u.anchorOffset),this.impreciseHead=f.precise?null:new lt(u.focusNode,u.focusOffset)}suppressWidgetCursorChange(e,t){return this.hasComposition&&t.empty&&ln(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==t.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,t=e.state.selection.main,i=gn(e.root),{anchorNode:s,anchorOffset:r}=e.observer.selectionRange;if(!i||!t.empty||!t.assoc||!i.modify)return;let o=this.lineAt(t.head,t.assoc);if(!o)return;let l=o.posAtStart;if(t.head==l||t.head==l+o.length)return;let a=this.coordsAt(t.head,-1),h=this.coordsAt(t.head,1);if(!a||!h||a.bottom>h.top)return;let f=this.domAtPos(t.head+t.assoc,t.assoc);i.collapse(f.node,f.offset),i.modify("move",t.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let u=e.observer.selectionRange;e.docView.posFromDOM(u.anchorNode,u.anchorOffset)!=t.from&&i.collapse(s,r)}posFromDOM(e,t){let i=this.tile.nearest(e);if(!i)return this.tile.dom.compareDocumentPosition(e)&2?0:this.view.state.doc.length;let s=i.posAtStart;if(i.isComposite()){let r;if(e==i.dom)r=i.dom.childNodes[t];else{let o=gt(e)==0?0:t==0?-1:1;for(;;){let l=e.parentNode;if(l==i.dom)break;o==0&&l.firstChild!=l.lastChild&&(e==l.firstChild?o=-1:o=1),e=l}o<0?r=e:r=e.nextSibling}if(r==i.dom.firstChild)return s;for(;r&&!ee.get(r);)r=r.nextSibling;if(!r)return s+i.length;for(let o=0,l=s;;o++){let a=i.children[o];if(a.dom==r)return l;l+=a.length+a.breakAfter}}else return i.isText()?e==i.dom?s+t:s+(t?i.length:0):s}domAtPos(e,t){let{tile:i,offset:s}=this.tile.resolveBlock(e,t);return i.isWidget()?i.domPosFor(e,t):i.domIn(s,t)}inlineDOMNearPos(e,t){let i,s=-1,r=!1,o,l=-1,a=!1;return this.tile.blockTiles((h,f)=>{if(h.isWidget()){if(h.flags&32&&f>=e)return!0;h.flags&16&&(r=!0)}else{let u=f+h.length;if(f<=e&&(i=h,s=e-f,r=u<e),u>=e&&!o&&(o=h,l=e-f,a=f>e),f>e&&o)return!0}}),!i&&!o?this.domAtPos(e,t):(r&&o?i=null:a&&i&&(o=null),i&&t<0||!o?i.domIn(s,t):o.domIn(l,t))}coordsAt(e,t){let{tile:i,offset:s}=this.tile.resolveBlock(e,t);return i.isWidget()?i.widget instanceof cn?null:i.coordsInWidget(s,t,!0):i.coordsIn(s,t)}lineAt(e,t){let{tile:i}=this.tile.resolveBlock(e,t);return i.isLine()?i:null}coordsForChar(e){let{tile:t,offset:i}=this.tile.resolveBlock(e,1);if(!t.isLine())return null;function s(r,o){if(r.isComposite())for(let l of r.children){if(l.length>=o){let a=s(l,o);if(a)return a}if(o-=l.length,o<0)break}else if(r.isText()&&o<r.length){let l=ne(r.text,o);if(l==o)return null;let a=Sn(r.dom,o,l).getClientRects();for(let h=0;h<a.length;h++){let f=a[h];if(h==a.length-1||f.top<f.bottom&&f.left<f.right)return f}}return null}return c(s,"scan"),s(t,i)}measureVisibleLineHeights(e){let t=[],{from:i,to:s}=e,r=this.view.contentDOM.clientWidth,o=r>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==B.LTR,h=0,f=c((u,d,O)=>{for(let p=0;p<u.children.length&&!(d>s);p++){let m=u.children[p],g=d+m.length,Q=m.dom.getBoundingClientRect(),{height:b}=Q;if(O&&!p&&(h+=Q.top-O.top),m instanceof mt)g>i&&f(m,d,Q);else if(d>=i&&(h>0&&t.push(-h),t.push(b+h),h=0,o)){let x=m.dom.lastChild,Z=x?ps(x):[];if(Z.length){let w=Z[Z.length-1],k=a?w.right-Q.left:Q.right-w.left;k>l&&(l=k,this.minWidth=r,this.minWidthFrom=d,this.minWidthTo=g)}}O&&p==u.children.length-1&&(h+=O.bottom-Q.bottom),d=g+m.breakAfter}},"scan");return f(this.tile,0,null),t}textDirectionAt(e){let{tile:t}=this.tile.resolveBlock(e,1);return getComputedStyle(t.dom).direction=="rtl"?B.RTL:B.LTR}measureTextSize(){let e=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let l=0,a;for(let h of o.children){if(!h.isText()||/[^ -~]/.test(h.text))return;let f=ps(h.dom);if(f.length!=1)return;l+=f[0].width,a=f[0].height}if(l)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:l/o.length,textHeight:a}}});if(e)return e;let t=document.createElement("div"),i,s,r;return t.className="cm-line",t.style.width="99999px",t.style.position="absolute",t.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(t);let o=ps(t.firstChild)[0];i=t.getBoundingClientRect().height,s=o&&o.width?o.width/27:7,r=o&&o.height?o.height:i,t.remove()}),{lineHeight:i,charWidth:s,textHeight:r}}computeBlockGapDeco(){let e=[],t=this.view.viewState;for(let i=0,s=0;;s++){let r=s==t.viewports.length?null:t.viewports[s],o=r?r.from-1:this.view.state.doc.length;if(o>i){let l=(t.lineBlockAt(o).bottom-t.lineBlockAt(i).top)/this.view.scaleY;e.push(A.replace({widget:new cn(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return A.set(e)}updateDeco(){let e=1,t=this.view.state.facet(_s).map(r=>(this.dynamicDecorationMap[e++]=typeof r=="function")?r(this.view):r),i=!1,s=this.view.state.facet(Sl).map((r,o)=>{let l=typeof r=="function";return l&&(i=!0),l?r(this.view):r});for(s.length&&(this.dynamicDecorationMap[e++]=i,t.push(D.join(s))),this.decorations=[this.editContextFormatting,...t,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];e<this.decorations.length;)this.dynamicDecorationMap[e++]=!1;this.blockWrappers=this.view.state.facet(af).map(r=>typeof r=="function"?r(this.view):r)}scrollIntoView(e){if(e.isSnapshot){let h=this.view.viewState.lineBlockAt(e.range.head);this.view.scrollDOM.scrollTop=h.top-e.yMargin,this.view.scrollDOM.scrollLeft=e.xMargin;return}for(let h of this.view.state.facet(rf))try{if(h(this.view,e.range,e))return!0}catch(f){fe(this.view.state,f,"scroll handler")}let{range:t}=e,i=this.coordsAt(t.head,t.empty?t.assoc:t.head>t.anchor?-1:1),s;if(!i)return;!t.empty&&(s=this.coordsAt(t.anchor,t.anchor>t.head?-1:1))&&(i={left:Math.min(i.left,s.left),top:Math.min(i.top,s.top),right:Math.max(i.right,s.right),bottom:Math.max(i.bottom,s.bottom)});let r=Ql(this.view),o={left:i.left-r.left,top:i.top-r.top,right:i.right+r.right,bottom:i.bottom+r.bottom},{offsetWidth:l,offsetHeight:a}=this.view.scrollDOM;if(Vp(this.view.scrollDOM,o,t.head<t.anchor?-1:1,e.x,e.y,Math.max(Math.min(e.xMargin,l),-l),Math.max(Math.min(e.yMargin,a),-a),this.view.textDirection==B.LTR),window.visualViewport&&window.innerHeight-window.visualViewport.height>1&&(i.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||i.bottom<window.pageYOffset+window.visualViewport.offsetTop)){let h=this.view.docView.lineAt(t.head,1);h&&h.dom.scrollIntoView({block:"nearest"})}}lineHasWidget(e){let t=c(i=>i.isWidget()||i.children.some(t),"scan");return t(this.tile.resolveBlock(e,1).tile)}destroy(){Ro(this.tile)}};function Ro(n,e){let t=e?.get(n);if(t!=1){t==null&&n.destroy();for(let i of n.children)Ro(i,e)}}c(Ro,"destroyDropped");function nm(n){return n.node.nodeType==1&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}c(nm,"betweenUneditable");function uf(n,e){let t=n.observer.selectionRange;if(!t.focusNode)return null;let i=Wc(t.focusNode,t.focusOffset),s=Bc(t.focusNode,t.focusOffset),r=i||s;if(s&&i&&s.node!=i.node){let l=ee.get(s.node);if(!l||l.isText()&&l.text!=s.node.nodeValue)r=s;else if(n.docView.lastCompositionAfterCursor){let a=ee.get(i.node);!a||a.isText()&&a.text!=i.node.nodeValue||(r=s)}}if(n.docView.lastCompositionAfterCursor=r!=i,!r)return null;let o=e-r.offset;return{from:o,to:o+r.node.nodeValue.length,node:r.node}}c(uf,"findCompositionNode");function sm(n,e,t){let i=uf(n,t);if(!i)return null;let{node:s,from:r,to:o}=i,l=s.nodeValue;if(/[\n\r]/.test(l)||n.state.doc.sliceString(i.from,i.to)!=l)return null;let a=e.invertedDesc;return{range:new Fe(a.mapPos(r),a.mapPos(o),r,o),text:s}}c(sm,"findCompositionRange");function rm(n,e){return n.nodeType!=1?0:(e&&n.childNodes[e-1].contentEditable=="false"?1:0)|(e<n.childNodes.length&&n.childNodes[e].contentEditable=="false"?2:0)}c(rm,"nextToUneditable");var om=class{static{c(this,"DecorationComparator")}constructor(){this.changes=[]}compareRange(e,t){wi(e,t,this.changes)}comparePoint(e,t){wi(e,t,this.changes)}boundChange(e){wi(e,e,this.changes)}};function lm(n,e,t){let i=new om;return D.compare(n,e,t,i),i.changes}c(lm,"findChangedDeco");var Mo=class{static{c(this,"WrapperComparator")}constructor(){this.changes=[]}compareRange(e,t){wi(e,t,this.changes)}comparePoint(){}boundChange(e){wi(e,e,this.changes)}};function am(n,e,t){let i=new Mo;return D.compare(n,e,t,i),i.changes}c(am,"findChangedWrappers");function hm(n,e){for(let t=n;t&&t!=e;t=t.assignedSlot||t.parentNode)if(t.nodeType==1&&t.contentEditable=="false")return!0;return!1}c(hm,"inUneditable");function cm(n,e){let t=!1;return e&&n.iterChangedRanges((i,s)=>{i<e.to&&s>e.from&&(t=!0)}),t}c(cm,"touchesComposition");var cn=class extends ye{static{c(this,"BlockGapWidget")}constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function fm(n,e,t=1){let i=n.charCategorizer(e),s=n.doc.lineAt(e),r=e-s.from;if(s.length==0)return y.cursor(e);r==0?t=1:r==s.length&&(t=-1);let o=r,l=r;t<0?o=ne(s.text,r,!1):l=ne(s.text,r);let a=i(s.text.slice(o,l));for(;o>0;){let h=ne(s.text,o,!1);if(i(s.text.slice(h,o))!=a)break;o=h}for(;l<s.length;){let h=ne(s.text,l);if(i(s.text.slice(l,h))!=a)break;l=h}return y.range(o+s.from,l+s.from)}c(fm,"groupAt");function um(n,e,t,i,s){let r=Math.round((i-e.left)*n.defaultCharacterWidth);if(n.lineWrapping&&t.height>n.defaultLineHeight*1.5){let l=n.viewState.heightOracle.textHeight,a=Math.floor((s-t.top-(n.defaultLineHeight-l)*.5)/l);r+=a*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(t.from,t.to);return t.from+ss(o,r,n.state.tabSize)}c(um,"posAtCoordsImprecise");function Eo(n,e,t){let i=n.lineBlockAt(e);if(Array.isArray(i.type)){let s;for(let r of i.type){if(r.from>e)break;if(!(r.to<e)){if(r.from<e&&r.to>e)return r;(!s||r.type==ue.Text&&(s.type!=r.type||(t<0?r.from<e:r.to>e)))&&(s=r)}}return s||i}return i}c(Eo,"blockAt");function dm(n,e,t,i){let s=Eo(n,e.head,e.assoc||-1),r=!i||s.type!=ue.Text||!(n.lineWrapping||s.widgetLineBreaks)?null:n.coordsAtPos(e.assoc<0&&e.head>s.from?e.head-1:e.head);if(r){let o=n.dom.getBoundingClientRect(),l=n.textDirectionAt(s.from),a=n.posAtCoords({x:t==(l==B.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(a!=null)return y.cursor(a,t?-1:1)}return y.cursor(t?s.to:s.from,t?-1:1)}c(dm,"moveToLineBoundary");function ac(n,e,t,i){let s=n.state.doc.lineAt(e.head),r=n.bidiSpans(s),o=n.textDirectionAt(s.from);for(let l=e,a=null;;){let h=Gp(s,r,o,l,t),f=Uc;if(!h){if(s.number==(t?n.state.doc.lines:1))return l;f=` 8 + `,s=n.state.doc.line(s.number+(t?1:-1)),r=n.bidiSpans(s),h=n.visualLineSide(s,!t)}if(a){if(!a(f))return l}else{if(!i)return h;a=i(f)}l=h}}c(ac,"moveByChar");function Om(n,e,t){let i=n.state.charCategorizer(e),s=i(t);return r=>{let o=i(r);return s==j.Space&&(s=o),s==o}}c(Om,"byGroup");function pm(n,e,t,i){let s=e.head,r=t?1:-1;if(s==(t?n.state.doc.length:0))return y.cursor(s,e.assoc);let o=e.goalColumn,l,a=n.contentDOM.getBoundingClientRect(),h=n.coordsAtPos(s,(e.empty?e.assoc:0)||(t?1:-1)),f=n.documentTop;if(h)o==null&&(o=h.left-a.left),l=r<0?h.top:h.bottom;else{let p=n.viewState.lineBlockAt(s);o==null&&(o=Math.min(a.right-a.left,n.defaultCharacterWidth*(s-p.from))),l=(r<0?p.top:p.bottom)+f}let u=a.left+o,d=i??n.viewState.heightOracle.textHeight>>1,O=zo(n,{x:u,y:l+d*r},!1,r);return y.cursor(O.pos,O.assoc,void 0,o)}c(pm,"moveVertically");function fn(n,e,t){for(;;){let i=0;for(let s of n)s.between(e-1,e+1,(r,o,l)=>{if(e>r&&e<o){let a=i||t||(e-r<o-e?-1:1);e=a<0?r:o,i=a}});if(!i)return e}}c(fn,"skipAtomicRanges");function df(n,e){let t=null;for(let i=0;i<e.ranges.length;i++){let s=e.ranges[i],r=null;if(s.empty){let o=fn(n,s.from,0);o!=s.from&&(r=y.cursor(o,-1))}else{let o=fn(n,s.from,-1),l=fn(n,s.to,1);(o!=s.from||l!=s.to)&&(r=y.range(s.from==s.anchor?o:l,s.from==s.head?o:l))}r&&(t||(t=e.ranges.slice()),t[i]=r)}return t?y.create(t,e.mainIndex):e}c(df,"skipAtomsForSelection");function co(n,e,t){let i=fn(n.state.facet(Qn).map(s=>s(n)),t.from,e.head>t.from?-1:1);return i==t.from?t:y.cursor(i,i<t.from?1:-1)}c(co,"skipAtoms");var Ie=class{static{c(this,"PosAssoc")}constructor(e,t){this.pos=e,this.assoc=t}};function zo(n,e,t,i){let s=n.contentDOM.getBoundingClientRect(),r=s.top+n.viewState.paddingTop,{x:o,y:l}=e,a=l-r,h;for(;;){if(a<0)return new Ie(0,1);if(a>n.viewState.docHeight)return new Ie(n.state.doc.length,-1);if(h=n.elementAtHeight(a),i==null)break;if(h.type==ue.Text){if(i<0?h.to<n.viewport.from:h.from>n.viewport.to)break;let d=n.docView.coordsAt(i<0?h.from:h.to,i>0?-1:1);if(d&&(i<0?d.top<=a+r:d.bottom>=a+r))break}let u=n.viewState.heightOracle.textHeight/2;a=i>0?h.bottom+u:h.top-u}if(n.viewport.from>=h.to||n.viewport.to<=h.from){if(t)return null;if(h.type==ue.Text){let u=um(n,s,h,o,l);return new Ie(u,u==h.from?1:-1)}}if(h.type!=ue.Text)return a<(h.top+h.bottom)/2?new Ie(h.from,1):new Ie(h.to,-1);let f=n.docView.lineAt(h.from,2);return(!f||f.length!=h.length)&&(f=n.docView.lineAt(h.from,-2)),new Yo(n,o,l,n.textDirectionAt(h.from)).scanTile(f,h.from)}c(zo,"posAtCoords");var Yo=class{static{c(this,"InlineCoordsScan")}constructor(e,t,i,s){this.view=e,this.x=t,this.y=i,this.baseDir=s,this.line=null,this.spans=null}bidiSpansAt(e){return(!this.line||this.line.from>e||this.line.to<e)&&(this.line=this.view.state.doc.lineAt(e),this.spans=this.view.bidiSpans(this.line)),this}baseDirAt(e,t){let{line:i,spans:s}=this.bidiSpansAt(e);return s[je.find(s,e-i.from,-1,t)].level==this.baseDir}dirAt(e,t){let{line:i,spans:s}=this.bidiSpansAt(e);return s[je.find(s,e-i.from,-1,t)].dir}bidiIn(e,t){let{spans:i,line:s}=this.bidiSpansAt(e);return i.length>1||i.length&&(i[0].level!=this.baseDir||i[0].to+s.from<t)}scan(e,t){let i=0,s=e.length-1,r=new Set,o=this.bidiIn(e[0],e[s]),l,a,h=-1,f=1e9,u;e:for(;i<s;){let O=s-i,p=i+s>>1;t:if(r.has(p)){let g=i+Math.floor(Math.random()*O);for(let Q=0;Q<O;Q++){if(!r.has(g)){p=g;break t}g++,g==s&&(g=i)}break e}r.add(p);let m=t(p);if(m)for(let g=0;g<m.length;g++){let Q=m[g],b=0;if(!(Q.width==0&&m.length>1)){if(Q.bottom<this.y)(!l||l.bottom<Q.bottom)&&(l=Q),b=1;else if(Q.top>this.y)(!a||a.top>Q.top)&&(a=Q),b=-1;else{let x=Q.left>this.x?this.x-Q.left:Q.right<this.x?this.x-Q.right:0,Z=Math.abs(x);Z<f&&(h=p,f=Z,u=Q),x&&(b=x<0==(this.baseDir==B.LTR)?-1:1)}b==-1&&(!o||this.baseDirAt(e[p],1))?s=p:b==1&&(!o||this.baseDirAt(e[p+1],-1))&&(i=p+1)}}}if(!u){let O=l&&(!a||this.y-l.bottom<a.top-this.y)?l:a;return this.y=(O.top+O.bottom)/2,this.scan(e,t)}let d=(o?this.dirAt(e[h],1):this.baseDir)==B.LTR;return{i:h,after:this.x>(u.left+u.right)/2==d}}scanText(e,t){let i=[];for(let r=0;r<e.length;r=ne(e.text,r))i.push(t+r);i.push(t+e.length);let s=this.scan(i,r=>{let o=i[r]-t,l=i[r+1]-t;return Sn(e.dom,o,l).getClientRects()});return s.after?new Ie(i[s.i+1],-1):new Ie(i[s.i],1)}scanTile(e,t){if(!e.length)return new Ie(t,1);if(e.children.length==1){let l=e.children[0];if(l.isText())return this.scanText(l,t);if(l.isComposite())return this.scanTile(l,t)}let i=[t];for(let l=0,a=t;l<e.children.length;l++)i.push(a+=e.children[l].length);let s=this.scan(i,l=>{let a=e.children[l];return a.flags&48?null:(a.dom.nodeType==1?a.dom:Sn(a.dom,0,a.length)).getClientRects()}),r=e.children[s.i],o=i[s.i];return r.isText()?this.scanText(r,o):r.isComposite()?this.scanTile(r,o):s.after?new Ie(i[s.i+1],-1):new Ie(o,1)}},Si="\uFFFF",Vo=class{static{c(this,"DOMReader")}constructor(e,t){this.points=e,this.view=t,this.text="",this.lineSeparator=t.state.facet(G.lineSeparator)}append(e){this.text+=e}lineBreak(){this.text+=Si}readRange(e,t){if(!e)return this;let i=e.parentNode;for(let s=e;;){this.findPointBefore(i,s);let r=this.text.length;this.readNode(s);let o=ee.get(s),l=s.nextSibling;if(l==t){o?.breakAfter&&!l&&i!=this.view.contentDOM&&this.lineBreak();break}let a=ee.get(l);(o&&a?o.breakAfter:(o?o.breakAfter:xs(s))||xs(l)&&(s.nodeName!="BR"||o?.isWidget())&&this.text.length>r)&&!gm(l,t)&&this.lineBreak(),s=l}return this.findPointBefore(i,t),this}readTextNode(e){let t=e.nodeValue;for(let i of this.points)i.node==e&&(i.pos=this.text.length+Math.min(i.offset,t.length));for(let i=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let r=-1,o=1,l;if(this.lineSeparator?(r=t.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(l=s.exec(t))&&(r=l.index,o=l[0].length),this.append(t.slice(i,r<0?t.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let a of this.points)a.node==e&&a.pos>this.text.length&&(a.pos-=o-1);i=r+o}}readNode(e){let t=ee.get(e),i=t&&t.overrideDOMText;if(i!=null){this.findPointInside(e,i.length);for(let s=i.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,t){for(let i of this.points)i.node==e&&e.childNodes[i.offset]==t&&(i.pos=this.text.length)}findPointInside(e,t){for(let i of this.points)(e.nodeType==3?i.node==e:e.contains(i.node))&&(i.pos=this.text.length+(mm(e,i.node,i.offset)?t:0))}};function mm(n,e,t){for(;;){if(!e||t<gt(e))return!1;if(e==n)return!0;t=vt(e)+1,e=e.parentNode}}c(mm,"isAtEnd");function gm(n,e){let t;for(;!(n==e||!n);n=n.nextSibling){let i=ee.get(n);if(!i?.isWidget())return!1;i&&(t||(t=[])).push(i)}if(t)for(let i of t){let s=i.overrideDOMText;if(s?.length)return!1}return!0}c(gm,"isEmptyToEnd");var $s=class{static{c(this,"DOMPoint")}constructor(e,t){this.node=e,this.offset=t,this.pos=-1}},_o=class{static{c(this,"DOMChange")}constructor(e,t,i,s){this.typeOver=s,this.bounds=null,this.text="",this.domChanged=t>-1;let{impreciseHead:r,impreciseAnchor:o}=e.docView,l=e.state.selection;if(e.state.readOnly&&t>-1)this.newSel=null;else if(t>-1&&(this.bounds=Of(e.docView.tile,t,i,0))){let a=r||o?[]:Qm(e),h=new Vo(a,e);h.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=h.text,this.newSel=ym(a,this.bounds.from)}else{let a=e.observer.selectionRange,h=r&&r.node==a.focusNode&&r.offset==a.focusOffset||!bo(e.contentDOM,a.focusNode)?l.main.head:e.docView.posFromDOM(a.focusNode,a.focusOffset),f=o&&o.node==a.anchorNode&&o.offset==a.anchorOffset||!bo(e.contentDOM,a.anchorNode)?l.main.anchor:e.docView.posFromDOM(a.anchorNode,a.anchorOffset),u=e.viewport;if((C.ios||C.chrome)&&l.main.empty&&h!=f&&(u.from>0||u.to<e.state.doc.length)){let d=Math.min(h,f),O=Math.max(h,f),p=u.from-d,m=u.to-O;(p==0||p==1||d==0)&&(m==0||m==-1||O==e.state.doc.length)&&(h=0,f=e.state.doc.length)}if(e.inputState.composing>-1&&l.ranges.length>1)this.newSel=l.replaceRange(y.range(f,h));else if(e.lineWrapping&&f==h&&!(l.main.empty&&l.main.head==h)&&e.inputState.lastTouchTime>Date.now()-100){let d=e.coordsAtPos(h,-1),O=0;d&&(O=e.inputState.lastTouchY<=d.bottom?-1:1),this.newSel=y.create([y.cursor(h,O)])}else this.newSel=y.single(f,h)}}};function Of(n,e,t,i){if(n.isComposite()){let s=-1,r=-1,o=-1,l=-1;for(let a=0,h=i,f=i;a<n.children.length;a++){let u=n.children[a],d=h+u.length;if(h<e&&d>t)return Of(u,e,t,h);if(d>=e&&s==-1&&(s=a,r=h),h>t&&u.dom.parentNode==n.dom){o=a,l=f;break}f=d,h=d+u.breakAfter}return{from:r,to:l<0?i+n.length:l,startDOM:(s?n.children[s-1].dom.nextSibling:null)||n.dom.firstChild,endDOM:o<n.children.length&&o>=0?n.children[o].dom:null}}else return n.isText()?{from:i,to:i+n.length,startDOM:n.dom,endDOM:n.dom.nextSibling}:null}c(Of,"domBoundsAround");function pf(n,e){let t,{newSel:i}=e,{state:s}=n,r=s.selection.main,o=n.inputState.lastKeyTime>Date.now()-100?n.inputState.lastKeyCode:-1;if(e.bounds){let{from:l,to:a}=e.bounds,h=r.from,f=null;(o===8||C.android&&e.text.length<a-l)&&(h=r.to,f="end");let u=s.doc.sliceString(l,a,Si),d,O;!r.empty&&r.from>=l&&r.to<=a&&(e.typeOver||u!=e.text)&&u.slice(0,r.from-l)==e.text.slice(0,r.from-l)&&u.slice(r.to-l)==e.text.slice(d=e.text.length-(u.length-(r.to-l)))?t={from:r.from,to:r.to,insert:V.of(e.text.slice(r.from-l,d).split(Si))}:(O=mf(u,e.text,h-l,f))&&(C.chrome&&o==13&&O.toB==O.from+2&&e.text.slice(O.from,O.toB)==Si+Si&&O.toB--,t={from:l+O.from,to:l+O.toA,insert:V.of(e.text.slice(O.from,O.toB).split(Si))})}else i&&(!n.hasFocus&&s.facet(pt)||Ts(i,r))&&(i=null);if(!t&&!i)return!1;if((C.mac||C.android)&&t&&t.from==t.to&&t.from==r.head-1&&/^\. ?$/.test(t.insert.toString())&&n.contentDOM.getAttribute("autocorrect")=="off"?(i&&t.insert.length==2&&(i=y.single(i.main.anchor-1,i.main.head-1)),t={from:t.from,to:t.to,insert:V.of([t.insert.toString().replace("."," ")])}):s.doc.lineAt(r.from).to<r.to&&n.docView.lineHasWidget(r.to)&&n.inputState.insertingTextAt>Date.now()-50?t={from:r.from,to:r.to,insert:s.toText(n.inputState.insertingText)}:C.chrome&&t&&t.from==t.to&&t.from==r.head&&t.insert.toString()==` 9 + `&&n.lineWrapping&&(i&&(i=y.single(i.main.anchor-1,i.main.head-1)),t={from:r.from,to:r.to,insert:V.of([" "])}),t)return yl(n,t,i,o);if(i&&!Ts(i,r)){let l=!1,a="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(l=!0),a=n.inputState.lastSelectionOrigin,a=="select.pointer"&&(i=df(s.facet(Qn).map(h=>h(n)),i))),n.dispatch({selection:i,scrollIntoView:l,userEvent:a}),!0}else return!1}c(pf,"applyDOMChange");function yl(n,e,t,i=-1){if(C.ios&&n.inputState.flushIOSKey(e))return!0;let s=n.state.selection.main;if(C.android&&(e.to==s.to&&(e.from==s.from||e.from==s.from-1&&n.state.sliceDoc(e.from,s.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&ki(n.contentDOM,"Enter",13)||(e.from==s.from-1&&e.to==s.to&&e.insert.length==0||i==8&&e.insert.length<e.to-e.from&&e.to>s.head)&&ki(n.contentDOM,"Backspace",8)||e.from==s.from&&e.to==s.to+1&&e.insert.length==0&&ki(n.contentDOM,"Delete",46)))return!0;let r=e.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,l=c(()=>o||(o=Sm(n,e,t)),"defaultInsert");return n.state.facet(ef).some(a=>a(n,e.from,e.to,r,l))||n.dispatch(l()),!0}c(yl,"applyDOMChangeInner");function Sm(n,e,t){let i,s=n.state,r=s.selection.main,o=-1;if(e.from==e.to&&e.from<r.from||e.from>r.to){let a=e.from<r.from?-1:1,h=a<0?r.from:r.to,f=fn(s.facet(Qn).map(u=>u(n)),h,a);e.from==f&&(o=f)}if(o>-1)i={changes:e,selection:y.cursor(e.from+e.insert.length,-1)};else if(e.from>=r.from&&e.to<=r.to&&e.to-e.from>=(r.to-r.from)/3&&(!t||t.main.empty&&t.main.from==e.from+e.insert.length)&&n.inputState.composing<0){let a=r.from<e.from?s.sliceDoc(r.from,e.from):"",h=r.to>e.to?s.sliceDoc(e.to,r.to):"";i=s.replaceSelection(n.state.toText(a+e.insert.sliceString(0,void 0,n.state.lineBreak)+h))}else{let a=s.changes(e),h=t&&t.main.to<=a.newLength?t.main:void 0;if(s.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&e.to<=r.to+10&&e.to>=r.to-10){let f=n.state.sliceDoc(e.from,e.to),u,d=t&&uf(n,t.main.head);if(d){let p=e.insert.length-(e.to-e.from);u={from:d.from,to:d.to-p}}else u=n.state.doc.lineAt(r.head);let O=r.to-e.to;i=s.changeByRange(p=>{if(p.from==r.from&&p.to==r.to)return{changes:a,range:h||p.map(a)};let m=p.to-O,g=m-f.length;if(n.state.sliceDoc(g,m)!=f||m>=u.from&&g<=u.to)return{range:p};let Q=s.changes({from:g,to:m,insert:e.insert}),b=p.to-r.to;return{changes:Q,range:h?y.range(Math.max(0,h.anchor+b),Math.max(0,h.head+b)):p.map(Q)}})}else i={changes:a,selection:h&&s.selection.replaceRange(h)}}let l="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,l+=".compose",n.inputState.compositionFirstChange&&(l+=".start",n.inputState.compositionFirstChange=!1)),s.update(i,{userEvent:l,scrollIntoView:!0})}c(Sm,"applyDefaultInsert");function mf(n,e,t,i){let s=Math.min(n.length,e.length),r=0;for(;r<s&&n.charCodeAt(r)==e.charCodeAt(r);)r++;if(r==s&&n.length==e.length)return null;let o=n.length,l=e.length;for(;o>0&&l>0&&n.charCodeAt(o-1)==e.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,r-Math.min(o,l));t-=o+a-r}if(o<r&&n.length<e.length){let a=t<=r&&t>=o?r-t:0;r-=a,l=r+(l-o),o=r}else if(l<r){let a=t<=r&&t>=l?r-t:0;r-=a,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}c(mf,"findDiff");function Qm(n){let e=[];if(n.root.activeElement!=n.contentDOM)return e;let{anchorNode:t,anchorOffset:i,focusNode:s,focusOffset:r}=n.observer.selectionRange;return t&&(e.push(new $s(t,i)),(s!=t||r!=i)&&e.push(new $s(s,r))),e}c(Qm,"selectionPoints");function ym(n,e){if(n.length==0)return null;let t=n[0].pos,i=n.length==2?n[1].pos:t;return t>-1&&i>-1?y.single(t+e,i+e):null}c(ym,"selectionFromPoints");function Ts(n,e){return e.head==n.main.head&&e.anchor==n.main.anchor}c(Ts,"sameSelPos");var Do=class{static{c(this,"InputState")}setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,C.safari&&e.contentDOM.addEventListener("input",()=>null),C.gecko&&Mm(e.contentDOM.ownerDocument)}handleEvent(e){!$m(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,t){let i=this.handlers[e];if(i){for(let s of i.observers)s(this.view,t);for(let s of i.handlers){if(t.defaultPrevented)break;if(s(this.view,t)){t.preventDefault();break}}}}ensureHandlers(e){let t=bm(e),i=this.handlers,s=this.view.contentDOM;for(let r in t)if(r!="scroll"){let o=!t[r].handlers.length,l=i[r];l&&o!=!l.handlers.length&&(s.removeEventListener(r,this.handleEvent),l=null),l||s.addEventListener(r,this.handleEvent,{passive:o})}for(let r in i)r!="scroll"&&!t[r]&&s.removeEventListener(r,this.handleEvent);this.handlers=t}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&Sf.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),C.android&&C.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;let t;return C.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&((t=gf.find(i=>i.keyCode==e.keyCode))&&!e.ctrlKey||xm.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey)?(this.pendingIOSKey=t||e,setTimeout(()=>this.flushIOSKey(),250),!0):(e.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(e){let t=this.pendingIOSKey;return!t||t.key=="Enter"&&e&&e.from<e.to&&/^\S+$/.test(e.insert.toString())?!1:(this.pendingIOSKey=void 0,ki(this.view.contentDOM,t.key,t.keyCode,t instanceof KeyboardEvent?t:void 0))}ignoreDuringComposition(e){return!/^key/.test(e.type)||e.synthetic?!1:this.composing>0?!0:C.safari&&!C.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function hc(n,e){return(t,i)=>{try{return e.call(n,i,t)}catch(s){fe(t.state,s)}}}c(hc,"bindHandler");function bm(n){let e=Object.create(null);function t(i){return e[i]||(e[i]={observers:[],handlers:[]})}c(t,"record");for(let i of n){let s=i.spec,r=s&&s.plugin.domEventHandlers,o=s&&s.plugin.domEventObservers;if(r)for(let l in r){let a=r[l];a&&t(l).handlers.push(hc(i.value,a))}if(o)for(let l in o){let a=o[l];a&&t(l).observers.push(hc(i.value,a))}}for(let i in He)t(i).handlers.push(He[i]);for(let i in ke)t(i).observers.push(ke[i]);return e}c(bm,"computeHandlers");var gf=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],xm="dthko",Sf=[16,17,18,20,91,92,224,225],ls=6;function as(n){return Math.max(0,n)*.7+8}c(as,"dragScrollSpeed");function wm(n,e){return Math.max(Math.abs(n.clientX-e.clientX),Math.abs(n.clientY-e.clientY))}c(wm,"dist");var Lo=class{static{c(this,"MouseSelection")}constructor(e,t,i,s){this.view=e,this.startEvent=t,this.style=i,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=t,this.scrollParents=Dc(e.contentDOM),this.atoms=e.state.facet(Qn).map(o=>o(e));let r=e.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=t.shiftKey,this.multiple=e.state.facet(G.allowMultipleSelections)&&km(e,t),this.dragging=Pm(e,t)&&bf(t)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&wm(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let t=0,i=0,s=0,r=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:r,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=Ql(this.view);e.clientX-a.left<=s+ls?t=-as(s-e.clientX):e.clientX+a.right>=o-ls&&(t=as(e.clientX-o)),e.clientY-a.top<=r+ls?i=-as(r-e.clientY):e.clientY+a.bottom>=l-ls&&(i=as(e.clientY-l)),this.setScrollSpeed(t,i)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,t){this.scrollSpeed={x:e,y:t},e||t?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:t}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),t&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=t,t=0),(e||t)&&this.view.win.scrollBy(e,t),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:t}=this,i=df(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!i.eq(t.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.transactions.some(t=>t.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}};function km(n,e){let t=n.state.facet(Fc);return t.length?t[0](e):C.mac?e.metaKey:e.ctrlKey}c(km,"addsSelectionRange");function vm(n,e){let t=n.state.facet(Hc);return t.length?t[0](e):C.mac?!e.altKey:!e.ctrlKey}c(vm,"dragMovesSelection");function Pm(n,e){let{main:t}=n.state.selection;if(t.empty)return!1;let i=gn(n.root);if(!i||i.rangeCount==0)return!0;let s=i.getRangeAt(0).getClientRects();for(let r=0;r<s.length;r++){let o=s[r];if(o.left<=e.clientX&&o.right>=e.clientX&&o.top<=e.clientY&&o.bottom>=e.clientY)return!0}return!1}c(Pm,"isInPrimarySelection");function $m(n,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let t=e.target,i;t!=n.contentDOM;t=t.parentNode)if(!t||t.nodeType==11||(i=ee.get(t))&&i.isWidget()&&!i.isHidden&&i.widget.ignoreEvent(e))return!1;return!0}c($m,"eventBelongsToEditor");var He=Object.create(null),ke=Object.create(null),Qf=C.ie&&C.ie_version<15||C.ios&&C.webkit_version<604;function Tm(n){let e=n.dom.parentNode;if(!e)return;let t=e.appendChild(document.createElement("textarea"));t.style.cssText="position: fixed; left: -10000px; top: 10px",t.focus(),setTimeout(()=>{n.focus(),t.remove(),yf(n,t.value)},50)}c(Tm,"capturePaste");function Ds(n,e,t){for(let i of n.facet(e))t=i(t,n);return t}c(Ds,"textFilter");function yf(n,e){e=Ds(n.state,pl,e);let{state:t}=n,i,s=1,r=t.toText(e),o=r.lines==t.selection.ranges.length;if(qo!=null&&t.selection.ranges.every(a=>a.empty)&&qo==r.toString()){let a=-1;i=t.changeByRange(h=>{let f=t.doc.lineAt(h.from);if(f.from==a)return{range:h};a=f.from;let u=t.toText((o?r.line(s++).text:e)+t.lineBreak);return{changes:{from:f.from,insert:u},range:y.cursor(h.from+u.length)}})}else o?i=t.changeByRange(a=>{let h=r.line(s++);return{changes:{from:a.from,to:a.to,insert:h.text},range:y.cursor(a.from+h.length)}}):i=t.replaceSelection(r);n.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}c(yf,"doPaste");ke.scroll=n=>{n.inputState.lastScrollTop=n.scrollDOM.scrollTop,n.inputState.lastScrollLeft=n.scrollDOM.scrollLeft};ke.wheel=ke.mousewheel=n=>{n.inputState.lastWheelEvent=Date.now()};He.keydown=(n,e)=>(n.inputState.setSelectionOrigin("select"),e.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);ke.touchstart=(n,e)=>{let t=n.inputState,i=e.targetTouches[0];t.lastTouchTime=Date.now(),i&&(t.lastTouchX=i.clientX,t.lastTouchY=i.clientY),t.setSelectionOrigin("select.pointer")};ke.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};He.mousedown=(n,e)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let t=null;for(let i of n.state.facet(Kc))if(t=i(n,e),t)break;if(!t&&e.button==0&&(t=Zm(n,e)),t){let i=!n.hasFocus;n.inputState.startMouseSelection(new Lo(n,e,t,i)),i&&n.observer.ignore(()=>{Lc(n.contentDOM);let r=n.root.activeElement;r&&!r.contains(n.contentDOM)&&r.blur()});let s=n.inputState.mouseSelection;if(s)return s.start(e),s.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function cc(n,e,t,i){if(i==1)return y.cursor(e,t);if(i==2)return fm(n.state,e,t);{let s=n.docView.lineAt(e,t),r=n.state.doc.lineAt(s?s.posAtEnd:e),o=s?s.posAtStart:r.from,l=s?s.posAtEnd:r.to;return l<n.state.doc.length&&l==r.to&&l++,y.range(o,l)}}c(cc,"rangeForClick");var Cm=C.ie&&C.ie_version<=11,fc=null,uc=0,dc=0;function bf(n){if(!Cm)return n.detail;let e=fc,t=dc;return fc=n,dc=Date.now(),uc=!e||t>Date.now()-400&&Math.abs(e.clientX-n.clientX)<2&&Math.abs(e.clientY-n.clientY)<2?(uc+1)%3:1}c(bf,"getClickType");function Zm(n,e){let t=n.posAndSideAtCoords({x:e.clientX,y:e.clientY},!1),i=bf(e),s=n.state.selection;return{update(r){r.docChanged&&(t.pos=r.changes.mapPos(t.pos),s=s.map(r.changes))},get(r,o,l){let a=n.posAndSideAtCoords({x:r.clientX,y:r.clientY},!1),h,f=cc(n,a.pos,a.assoc,i);if(t.pos!=a.pos&&!o){let u=cc(n,t.pos,t.assoc,i),d=Math.min(u.from,f.from),O=Math.max(u.to,f.to);f=d<f.from?y.range(d,O):y.range(O,d)}return o?s.replaceRange(s.main.extend(f.from,f.to)):l&&i==1&&s.ranges.length>1&&(h=Am(s,a.pos))?h:l?s.addRange(f):y.create([f])}}}c(Zm,"basicMouseSelection");function Am(n,e){for(let t=0;t<n.ranges.length;t++){let{from:i,to:s}=n.ranges[t];if(i<=e&&s>=e)return y.create(n.ranges.slice(0,t).concat(n.ranges.slice(t+1)),n.mainIndex==t?0:n.mainIndex-(n.mainIndex>t?1:0))}return null}c(Am,"removeRangeAround");He.dragstart=(n,e)=>{let{selection:{main:t}}=n.state;if(e.target.draggable){let s=n.docView.tile.nearest(e.target);if(s&&s.isWidget()){let r=s.posAtStart,o=r+s.length;(r>=t.to||o<=t.from)&&(t=y.range(r,o))}}let{inputState:i}=n;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=t,e.dataTransfer&&(e.dataTransfer.setData("Text",Ds(n.state,ml,n.state.sliceDoc(t.from,t.to))),e.dataTransfer.effectAllowed="copyMove"),!1};He.dragend=n=>(n.inputState.draggedContent=null,!1);function Oc(n,e,t,i){if(t=Ds(n.state,pl,t),!t)return;let s=n.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:r}=n.inputState,o=i&&r&&vm(n,e)?{from:r.from,to:r.to}:null,l={from:s,insert:t},a=n.state.changes(o?[o,l]:l);n.focus(),n.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}c(Oc,"dropText");He.drop=(n,e)=>{if(!e.dataTransfer)return!1;if(n.state.readOnly)return!0;let t=e.dataTransfer.files;if(t&&t.length){let i=Array(t.length),s=0,r=c(()=>{++s==t.length&&Oc(n,e,i.filter(o=>o!=null).join(n.state.lineBreak),!1)},"finishFile");for(let o=0;o<t.length;o++){let l=new FileReader;l.onerror=r,l.onload=()=>{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),r()},l.readAsText(t[o])}return!0}else{let i=e.dataTransfer.getData("Text");if(i)return Oc(n,e,i,!0),!0}return!1};He.paste=(n,e)=>{if(n.state.readOnly)return!0;n.observer.flush();let t=Qf?null:e.clipboardData;return t?(yf(n,t.getData("text/plain")||t.getData("text/uri-list")),!0):(Tm(n),!1)};function Xm(n,e){let t=n.dom.parentNode;if(!t)return;let i=t.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=e,i.focus(),i.selectionEnd=e.length,i.selectionStart=0,setTimeout(()=>{i.remove(),n.focus()},50)}c(Xm,"captureCopy");function Rm(n){let e=[],t=[],i=!1;for(let s of n.selection.ranges)s.empty||(e.push(n.sliceDoc(s.from,s.to)),t.push(s));if(!e.length){let s=-1;for(let{from:r}of n.selection.ranges){let o=n.doc.lineAt(r);o.number>s&&(e.push(o.text),t.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),s=o.number}i=!0}return{text:Ds(n,ml,e.join(n.lineBreak)),ranges:t,linewise:i}}c(Rm,"copiedRange");var qo=null;He.copy=He.cut=(n,e)=>{if(!on(n.contentDOM,n.observer.selectionRange))return!1;let{text:t,ranges:i,linewise:s}=Rm(n.state);if(!t&&!s)return!1;qo=s?t:null,e.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let r=Qf?null:e.clipboardData;return r?(r.clearData(),r.setData("text/plain",t),!0):(Xm(n,t),!1)};var xf=xe.define();function wf(n,e){let t=[];for(let i of n.facet(tf)){let s=i(n,e);s&&t.push(s)}return t.length?n.update({effects:t,annotations:xf.of(!0)}):null}c(wf,"focusChangeTransaction");function kf(n){setTimeout(()=>{let e=n.hasFocus;if(e!=n.inputState.notifiedFocused){let t=wf(n.state,e);t?n.dispatch(t):n.update([])}},10)}c(kf,"updateForFocusChange");ke.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),kf(n)};ke.blur=n=>{n.observer.clearSelectionRange(),kf(n)};ke.compositionstart=ke.compositionupdate=n=>{n.observer.editContext||(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0))};ke.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,C.chrome&&C.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};ke.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};He.beforeinput=(n,e)=>{var t,i;if((e.inputType=="insertText"||e.inputType=="insertCompositionText")&&(n.inputState.insertingText=e.data,n.inputState.insertingTextAt=Date.now()),e.inputType=="insertReplacementText"&&n.observer.editContext){let r=(t=e.dataTransfer)===null||t===void 0?void 0:t.getData("text/plain"),o=e.getTargetRanges();if(r&&o.length){let l=o[0],a=n.posAtDOM(l.startContainer,l.startOffset),h=n.posAtDOM(l.endContainer,l.endOffset);return yl(n,{from:a,to:h,insert:n.state.toText(r)},null),!0}}let s;if(C.chrome&&C.android&&(s=gf.find(r=>r.inputType==e.inputType))&&(n.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let r=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>r+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return C.ios&&e.inputType=="deleteContentForward"&&n.observer.flushSoon(),C.safari&&e.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>ke.compositionend(n,e),20),!1};var pc=new Set;function Mm(n){pc.has(n)||(pc.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}c(Mm,"firefoxCopyCutHack");var mc=["pre-wrap","normal","pre-line","break-spaces"],Ci=!1;function gc(){Ci=!1}c(gc,"clearHeightChangeFlag");var Wo=class{static{c(this,"HeightOracle")}constructor(e){this.lineWrapping=e,this.doc=V.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,t){let i=this.doc.lineAt(t).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((t-e-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return mc.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let t=!1;for(let i=0;i<e.length;i++){let s=e[i];s<0?i++:this.heightSamples[Math.floor(s*10)]||(t=!0,this.heightSamples[Math.floor(s*10)]=!0)}return t}refresh(e,t,i,s,r,o){let l=mc.indexOf(e)>-1,a=Math.abs(t-this.lineHeight)>.3||this.lineWrapping!=l||Math.abs(i-this.charWidth)>.1;if(this.lineWrapping=l,this.lineHeight=t,this.charWidth=i,this.textHeight=s,this.lineLength=r,a){this.heightSamples={};for(let h=0;h<o.length;h++){let f=o[h];f<0?h++:this.heightSamples[Math.floor(f*10)]=!0}}return a}},Bo=class{static{c(this,"MeasuredHeights")}constructor(e,t){this.from=e,this.heights=t,this.index=0}get more(){return this.index<this.heights.length}},Ue=class n{static{c(this,"BlockInfo")}constructor(e,t,i,s,r){this.from=e,this.length=t,this.top=i,this.height=s,this._content=r}get type(){return typeof this._content=="number"?ue.Text:Array.isArray(this._content)?this._content:this._content.type}get to(){return this.from+this.length}get bottom(){return this.top+this.height}get widget(){return this._content instanceof Ft?this._content.widget:null}get widgetLineBreaks(){return typeof this._content=="number"?this._content:0}join(e){let t=(Array.isArray(this._content)?this._content:[this]).concat(Array.isArray(e._content)?e._content:[e]);return new n(this.from,this.length+e.length,this.top,this.height+e.height,t)}},K=(function(n){return n[n.ByPos=0]="ByPos",n[n.ByHeight=1]="ByHeight",n[n.ByPosNoHeight=2]="ByPosNoHeight",n})(K||(K={})),ms=.001,Xe=class n{static{c(this,"HeightMap")}constructor(e,t,i=2){this.length=e,this.height=t,this.flags=i}get outdated(){return(this.flags&2)>0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>ms&&(Ci=!0),this.height=e)}replace(e,t,i){return n.of(i)}decomposeLeft(e,t){t.push(this)}decomposeRight(e,t){t.push(this)}applyChanges(e,t,i,s){let r=this,o=i.doc;for(let l=s.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:f,toB:u}=s[l],d=r.lineAt(a,K.ByPosNoHeight,i.setDoc(t),0,0),O=d.to>=h?d:r.lineAt(h,K.ByPosNoHeight,i,0,0);for(u+=O.to-h,h=O.to;l>0&&d.from<=s[l-1].toA;)a=s[l-1].fromA,f=s[l-1].fromB,l--,a<d.from&&(d=r.lineAt(a,K.ByPosNoHeight,i,0,0));f+=d.from-a,a=d.from;let p=jo.build(i.setDoc(o),e,f,u);r=Cs(r,r.replace(a,h,p))}return r.updateHeight(i,0)}static empty(){return new Be(0,0,0)}static of(e){if(e.length==1)return e[0];let t=0,i=e.length,s=0,r=0;for(;;)if(t==i)if(s>r*2){let l=e[t-1];l.break?e.splice(--t,1,l.left,null,l.right):e.splice(--t,1,l.left,l.right),i+=1+l.break,s-=l.size}else if(r>s*2){let l=e[i];l.break?e.splice(i,1,l.left,null,l.right):e.splice(i,1,l.left,l.right),i+=2+l.break,r-=l.size}else break;else if(s<r){let l=e[t++];l&&(s+=l.size)}else{let l=e[--i];l&&(r+=l.size)}let o=0;return e[t-1]==null?(o=1,t--):e[t]==null&&(o=1,i++),new Io(n.of(e.slice(0,t)),o,n.of(e.slice(i)))}};function Cs(n,e){return n==e?n:(n.constructor!=e.constructor&&(Ci=!0),e)}c(Cs,"replace");Xe.prototype.size=1;var Em=A.replace({}),Zs=class extends Xe{static{c(this,"HeightMapBlock")}constructor(e,t,i){super(e,t),this.deco=i,this.spaceAbove=0}mainBlock(e,t){return new Ue(t,this.length,e+this.spaceAbove,this.height-this.spaceAbove,this.deco||0)}blockAt(e,t,i,s){return this.spaceAbove&&e<i+this.spaceAbove?new Ue(s,0,i,this.spaceAbove,Em):this.mainBlock(i,s)}lineAt(e,t,i,s,r){let o=this.mainBlock(s,r);return this.spaceAbove?this.blockAt(0,i,s,r).join(o):o}forEachLine(e,t,i,s,r,o){e<=r+this.length&&t>=r&&o(this.lineAt(0,K.ByPos,i,s,r))}setMeasuredHeight(e){let t=e.heights[e.index++];t<0?(this.spaceAbove=-t,t=e.heights[e.index++]):this.spaceAbove=0,this.setHeight(t)}updateHeight(e,t=0,i=!1,s){return s&&s.from<=t&&s.more&&this.setMeasuredHeight(s),this.outdated=!1,this}toString(){return`block(${this.length})`}},Be=class n extends Zs{static{c(this,"HeightMapText")}constructor(e,t,i){super(e,t,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=i}mainBlock(e,t){return new Ue(t,this.length,e+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(e,t,i){let s=i[0];return i.length==1&&(s instanceof n||s instanceof kt&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof kt?s=new n(s.length,this.height,this.spaceAbove):s.height=this.height,this.outdated||(s.outdated=!1),s):Xe.of(i)}updateHeight(e,t=0,i=!1,s){return s&&s.from<=t&&s.more?this.setMeasuredHeight(s):(i||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},kt=class n extends Xe{static{c(this,"HeightMapGap")}constructor(e){super(e,0)}heightMetrics(e,t){let i=e.doc.lineAt(t).number,s=e.doc.lineAt(t+this.length).number,r=s-i+1,o,l=0;if(e.lineWrapping){let a=Math.min(this.height,e.lineHeight*r);o=a/r,this.length>r+1&&(l=(this.height-a)/(this.length-r-1))}else o=this.height/r;return{firstLine:i,lastLine:s,perLine:o,perChar:l}}blockAt(e,t,i,s){let{firstLine:r,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(t,s);if(t.lineWrapping){let h=s+(e<t.lineHeight?0:Math.round(Math.max(0,Math.min(1,(e-i)/this.height))*this.length)),f=t.doc.lineAt(h),u=l+f.length*a,d=Math.max(i,e-u/2);return new Ue(f.from,f.length,d,u,0)}else{let h=Math.max(0,Math.min(o-r,Math.floor((e-i)/l))),{from:f,length:u}=t.doc.line(r+h);return new Ue(f,u,i+l*h,l,0)}}lineAt(e,t,i,s,r){if(t==K.ByHeight)return this.blockAt(e,i,s,r);if(t==K.ByPosNoHeight){let{from:O,to:p}=i.doc.lineAt(e);return new Ue(O,p-O,0,0,0)}let{firstLine:o,perLine:l,perChar:a}=this.heightMetrics(i,r),h=i.doc.lineAt(e),f=l+h.length*a,u=h.number-o,d=s+l*u+a*(h.from-r-u);return new Ue(h.from,h.length,Math.max(s,Math.min(d,s+this.height-f)),f,0)}forEachLine(e,t,i,s,r,o){e=Math.max(e,r),t=Math.min(t,r+this.length);let{firstLine:l,perLine:a,perChar:h}=this.heightMetrics(i,r);for(let f=e,u=s;f<=t;){let d=i.doc.lineAt(f);if(f==e){let p=d.number-l;u+=a*p+h*(e-r-p)}let O=a+h*d.length;o(new Ue(d.from,d.length,u,O,0)),u+=O,f=d.to+1}}replace(e,t,i){let s=this.length-t;if(s>0){let r=i[i.length-1];r instanceof n?i[i.length-1]=new n(r.length+s):i.push(null,new n(s-1))}if(e>0){let r=i[0];r instanceof n?i[0]=new n(e+r.length):i.unshift(new n(e-1),null)}return Xe.of(i)}decomposeLeft(e,t){t.push(new n(e-1),null)}decomposeRight(e,t){t.push(null,new n(this.length-e-1))}updateHeight(e,t=0,i=!1,s){let r=t+this.length;if(s&&s.from<=t+this.length&&s.more){let o=[],l=Math.max(t,s.from),a=-1;for(s.from>t&&o.push(new n(s.from-t-1).updateHeight(e,t));l<=r&&s.more;){let f=e.doc.lineAt(l).length;o.length&&o.push(null);let u=s.heights[s.index++],d=0;u<0&&(d=-u,u=s.heights[s.index++]),a==-1?a=u:Math.abs(u-a)>=ms&&(a=-2);let O=new Be(f,u,d);O.outdated=!1,o.push(O),l+=f+1}l<=r&&o.push(null,new n(r-l).updateHeight(e,l));let h=Xe.of(o);return(a<0||Math.abs(h.height-this.height)>=ms||Math.abs(a-this.heightMetrics(e,t).perLine)>=ms)&&(Ci=!0),Cs(this,h)}else(i||this.outdated)&&(this.setHeight(e.heightForGap(t,t+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},Io=class extends Xe{static{c(this,"HeightMapBranch")}constructor(e,t,i){super(e.length+t+i.length,e.height+i.height,t|(e.outdated||i.outdated?2:0)),this.left=e,this.right=i,this.size=e.size+i.size}get break(){return this.flags&1}blockAt(e,t,i,s){let r=i+this.left.height;return e<r?this.left.blockAt(e,t,i,s):this.right.blockAt(e,t,r,s+this.left.length+this.break)}lineAt(e,t,i,s,r){let o=s+this.left.height,l=r+this.left.length+this.break,a=t==K.ByHeight?e<o:e<l,h=a?this.left.lineAt(e,t,i,s,r):this.right.lineAt(e,t,i,o,l);if(this.break||(a?h.to<l:h.from>l))return h;let f=t==K.ByPosNoHeight?K.ByPosNoHeight:K.ByPos;return a?h.join(this.right.lineAt(l,f,i,o,l)):this.left.lineAt(l,f,i,s,r).join(h)}forEachLine(e,t,i,s,r,o){let l=s+this.left.height,a=r+this.left.length+this.break;if(this.break)e<a&&this.left.forEachLine(e,t,i,s,r,o),t>=a&&this.right.forEachLine(e,t,i,l,a,o);else{let h=this.lineAt(a,K.ByPos,i,s,r);e<h.from&&this.left.forEachLine(e,h.from-1,i,s,r,o),h.to>=e&&h.from<=t&&o(h),t>h.to&&this.right.forEachLine(h.to+1,t,i,l,a,o)}}replace(e,t,i){let s=this.left.length+this.break;if(t<s)return this.balanced(this.left.replace(e,t,i),this.right);if(e>this.left.length)return this.balanced(this.left,this.right.replace(e-s,t-s,i));let r=[];e>0&&this.decomposeLeft(e,r);let o=r.length;for(let l of i)r.push(l);if(e>0&&Sc(r,o-1),t<this.length){let l=r.length;this.decomposeRight(t,r),Sc(r,l)}return Xe.of(r)}decomposeLeft(e,t){let i=this.left.length;if(e<=i)return this.left.decomposeLeft(e,t);t.push(this.left),this.break&&(i++,e>=i&&t.push(null)),e>i&&this.right.decomposeLeft(e-i,t)}decomposeRight(e,t){let i=this.left.length,s=i+this.break;if(e>=s)return this.right.decomposeRight(e-s,t);e<i&&this.left.decomposeRight(e,t),this.break&&e<s&&t.push(null),t.push(this.right)}balanced(e,t){return e.size>2*t.size||t.size>2*e.size?Xe.of(this.break?[e,null,t]:[e,t]):(this.left=Cs(this.left,e),this.right=Cs(this.right,t),this.setHeight(e.height+t.height),this.outdated=e.outdated||t.outdated,this.size=e.size+t.size,this.length=e.length+this.break+t.length,this)}updateHeight(e,t=0,i=!1,s){let{left:r,right:o}=this,l=t+r.length+this.break,a=null;return s&&s.from<=t+r.length&&s.more?a=r=r.updateHeight(e,t,i,s):r.updateHeight(e,t,i),s&&s.from<=l+o.length&&s.more?a=o=o.updateHeight(e,l,i,s):o.updateHeight(e,l,i),a?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function Sc(n,e){let t,i;n[e]==null&&(t=n[e-1])instanceof kt&&(i=n[e+1])instanceof kt&&n.splice(e-1,3,new kt(t.length+1+i.length))}c(Sc,"mergeGaps");var zm=5,jo=class n{static{c(this,"NodeBuilder")}constructor(e,t){this.pos=e,this.oracle=t,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,t){if(this.lineStart>-1){let i=Math.min(t,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof Be?s.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new Be(i-this.pos,-1,0)),this.writtenTo=i,t>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=t}point(e,t,i){if(e<t||i.heightRelevant){let s=i.widget?i.widget.estimatedHeight:0,r=i.widget?i.widget.lineBreaks:0;s<0&&(s=this.oracle.lineHeight);let o=t-e;i.block?this.addBlock(new Zs(o,s,i)):(o||r||s>=zm)&&this.addLineDeco(s,r,o)}else t>e&&this.span(e,t);this.lineEnd>-1&&this.lineEnd<this.pos&&(this.lineEnd=this.oracle.doc.lineAt(this.pos).to)}enterLine(){if(this.lineStart>-1)return;let{from:e,to:t}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=t,this.writtenTo<e&&((this.writtenTo<e-1||this.nodes[this.nodes.length-1]==null)&&this.nodes.push(this.blankContent(this.writtenTo,e-1)),this.nodes.push(null)),this.pos>e&&this.nodes.push(new Be(this.pos-e,-1,0)),this.writtenTo=this.pos}blankContent(e,t){let i=new kt(t-e);return this.oracle.doc.lineAt(e).to==t&&(i.flags|=4),i}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof Be)return e;let t=new Be(0,-1,0);return this.nodes.push(t),t}addBlock(e){this.enterLine();let t=e.deco;t&&t.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,t&&t.endSide>0&&(this.covering=e)}addLineDeco(e,t,i){let s=this.ensureLine();s.length+=i,s.collapsed+=i,s.widgetHeight=Math.max(s.widgetHeight,e),s.breaks+=t,this.writtenTo=this.pos=this.pos+i}finish(e){let t=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(t instanceof Be)&&!this.isCovered?this.nodes.push(new Be(0,-1,0)):(this.writtenTo<this.pos||t==null)&&this.nodes.push(this.blankContent(this.writtenTo,this.pos));let i=e;for(let s of this.nodes)s instanceof Be&&s.updateHeight(this.oracle,i),i+=s?s.length:1;return this.nodes}static build(e,t,i,s){let r=new n(i,e);return D.spans(t,i,s,r,0),r.finish(i)}};function Ym(n,e,t){let i=new No;return D.compare(n,e,t,i,0),i.changes}c(Ym,"heightRelevantDecoChanges");var No=class{static{c(this,"DecorationComparator")}constructor(){this.changes=[]}compareRange(){}comparePoint(e,t,i,s){(e<t||i&&i.heightRelevant||s&&s.heightRelevant)&&wi(e,t,this.changes,5)}};function Vm(n,e){let t=n.getBoundingClientRect(),i=n.ownerDocument,s=i.defaultView||window,r=Math.max(0,t.left),o=Math.min(s.innerWidth,t.right),l=Math.max(0,t.top),a=Math.min(s.innerHeight,t.bottom);for(let h=n.parentNode;h&&h!=i.body;)if(h.nodeType==1){let f=h,u=window.getComputedStyle(f);if((f.scrollHeight>f.clientHeight||f.scrollWidth>f.clientWidth)&&u.overflow!="visible"){let d=f.getBoundingClientRect();r=Math.max(r,d.left),o=Math.min(o,d.right),l=Math.max(l,d.top),a=Math.min(h==n.parentNode?s.innerHeight:a,d.bottom)}h=u.position=="absolute"||u.position=="fixed"?f.offsetParent:f.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-t.left,right:Math.max(r,o)-t.left,top:l-(t.top+e),bottom:Math.max(l,a)-(t.top+e)}}c(Vm,"visiblePixelRange");function _m(n){let e=n.getBoundingClientRect(),t=n.ownerDocument.defaultView||window;return e.left<t.innerWidth&&e.right>0&&e.top<t.innerHeight&&e.bottom>0}c(_m,"inWindow");function Dm(n,e){let t=n.getBoundingClientRect();return{left:0,right:t.right-t.left,top:e,bottom:t.bottom-(t.top+e)}}c(Dm,"fullPixelRange");var un=class{static{c(this,"LineGap")}constructor(e,t,i,s){this.from=e,this.to=t,this.size=i,this.displaySize=s}static same(e,t){if(e.length!=t.length)return!1;for(let i=0;i<e.length;i++){let s=e[i],r=t[i];if(s.from!=r.from||s.to!=r.to||s.size!=r.size)return!1}return!0}draw(e,t){return A.replace({widget:new Go(this.displaySize*(t?e.scaleY:e.scaleX),t)}).range(this.from,this.to)}},Go=class extends ye{static{c(this,"LineGapWidget")}constructor(e,t){super(),this.size=e,this.vertical=t}eq(e){return e.size==this.size&&e.vertical==this.vertical}toDOM(){let e=document.createElement("div");return this.vertical?e.style.height=this.size+"px":(e.style.width=this.size+"px",e.style.height="2px",e.style.display="inline-block"),e}get estimatedHeight(){return this.vertical?this.size:-1}},As=class{static{c(this,"ViewState")}constructor(e,t){this.view=e,this.state=t,this.pixelViewport={left:0,right:window.innerWidth,top:0,bottom:0},this.inView=!0,this.paddingTop=0,this.paddingBottom=0,this.contentDOMWidth=0,this.contentDOMHeight=0,this.editorHeight=0,this.editorWidth=0,this.scaleX=1,this.scaleY=1,this.scrollOffset=0,this.scrolledToBottom=!1,this.scrollAnchorPos=0,this.scrollAnchorHeight=-1,this.scaler=Qc,this.scrollTarget=null,this.printing=!1,this.mustMeasureContent=!0,this.defaultTextDirection=B.LTR,this.visibleRanges=[],this.mustEnforceCursorAssoc=!1;let i=t.facet(gl).some(s=>typeof s!="function"&&s.class=="cm-lineWrapping");this.heightOracle=new Wo(i),this.stateDeco=yc(t),this.heightMap=Xe.empty().applyChanges(this.stateDeco,V.empty,this.heightOracle.setDoc(t.doc),[new Fe(0,0,0,t.doc.length)]);for(let s=0;s<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());s++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=A.set(this.lineGaps.map(s=>s.draw(this,!1))),this.scrollParent=e.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:t}=this.state.selection;for(let i=0;i<=1;i++){let s=i?t.head:t.anchor;if(!e.some(({from:r,to:o})=>s>=r&&s<=o)){let{from:r,to:o}=this.lineBlockAt(s);e.push(new yi(r,o))}}return this.viewports=e.sort((i,s)=>i.from-s.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?Qc:new Uo(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(sn(e,this.scaler))})}update(e,t=null){this.state=e.state;let i=this.stateDeco;this.stateDeco=yc(this.state);let s=e.changedRanges,r=Fe.extendWithRanges(s,Ym(i,this.stateDeco,e?e.changes:Se.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);gc(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),r),(this.heightMap.height!=o||Ci)&&(e.flags|=2),l?(this.scrollAnchorPos=e.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let a=r.length?this.mapViewport(this.viewport,e.changes):this.viewport;(t&&(t.range.head<a.from||t.range.head>a.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,t));let h=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,e.flags|=this.updateForViewport(),(h||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),t&&(this.scrollTarget=t),!this.mustEnforceCursorAssoc&&(e.selectionSet||e.focusChanged)&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(sf)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:e}=this,t=e.contentDOM,i=window.getComputedStyle(t),s=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?B.RTL:B.LTR;let o=this.heightOracle.mustRefreshForWrapping(r)||this.mustMeasureContent==="refresh",l=t.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,f=0;if(l.width&&l.height){let{scaleX:w,scaleY:k}=_c(t,l);(w>.005&&Math.abs(this.scaleX-w)>.005||k>.005&&Math.abs(this.scaleY-k)>.005)&&(this.scaleX=w,this.scaleY=k,h|=16,o=a=!0)}let u=(parseInt(i.paddingTop)||0)*this.scaleY,d=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=u||this.paddingBottom!=d)&&(this.paddingTop=u,this.paddingBottom=d,h|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(s.lineWrapping&&(a=!0),this.editorWidth=e.scrollDOM.clientWidth,h|=16);let O=Dc(this.view.contentDOM,!1).y;O!=this.scrollParent&&(this.scrollParent=O,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=qc(this.scrollParent||e.win);let m=(this.printing?Dm:Vm)(t,this.paddingTop),g=m.top-this.pixelViewport.top,Q=m.bottom-this.pixelViewport.bottom;this.pixelViewport=m;let b=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(b!=this.inView&&(this.inView=b,b&&(a=!0)),!this.inView&&!this.scrollTarget&&!_m(e.dom))return 0;let x=l.width;if((this.contentDOMWidth!=x||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=e.scrollDOM.clientHeight,h|=16),a){let w=e.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(w)&&(o=!0),o||s.lineWrapping&&Math.abs(x-this.contentDOMWidth)>s.charWidth){let{lineHeight:k,charWidth:v,textHeight:z}=e.docView.measureTextSize();o=k>0&&s.refresh(r,k,v,z,Math.max(5,x/v),w),o&&(e.docView.minWidth=0,h|=16)}g>0&&Q>0?f=Math.max(g,Q):g<0&&Q<0&&(f=Math.min(g,Q)),gc();for(let k of this.viewports){let v=k.from==this.viewport.from?w:e.docView.measureVisibleLineHeights(k);this.heightMap=(o?Xe.empty().applyChanges(this.stateDeco,V.empty,this.heightOracle,[new Fe(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new Bo(k.from,v))}Ci&&(h|=2)}let Z=!this.viewportIsAppropriate(this.viewport,f)||this.scrollTarget&&(this.scrollTarget.range.head<this.viewport.from||this.scrollTarget.range.head>this.viewport.to);return Z&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(f,this.scrollTarget),h|=this.updateForViewport()),(h&2||Z)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,e)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,t){let i=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),s=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new yi(s.lineAt(o-i*1e3,K.ByHeight,r,0,0).from,s.lineAt(l+(1-i)*1e3,K.ByHeight,r,0,0).to);if(t){let{head:h}=t.range;if(h<a.from||h>a.to){let f=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),u=s.lineAt(h,K.ByPos,r,0,0),d;t.y=="center"?d=(u.top+u.bottom)/2-f/2:t.y=="start"||t.y=="nearest"&&h<a.from?d=u.top:d=u.bottom-f,a=new yi(s.lineAt(d-1e3/2,K.ByHeight,r,0,0).from,s.lineAt(d+f+1e3/2,K.ByHeight,r,0,0).to)}}return a}mapViewport(e,t){let i=t.mapPos(e.from,-1),s=t.mapPos(e.to,1);return new yi(this.heightMap.lineAt(i,K.ByPos,this.heightOracle,0,0).from,this.heightMap.lineAt(s,K.ByPos,this.heightOracle,0,0).to)}viewportIsAppropriate({from:e,to:t},i=0){if(!this.inView)return!0;let{top:s}=this.heightMap.lineAt(e,K.ByPos,this.heightOracle,0,0),{bottom:r}=this.heightMap.lineAt(t,K.ByPos,this.heightOracle,0,0),{visibleTop:o,visibleBottom:l}=this;return(e==0||s<=o-Math.max(10,Math.min(-i,250)))&&(t==this.state.doc.length||r>=l+Math.max(10,Math.min(i,250)))&&s>o-2*1e3&&r<l+2*1e3}mapLineGaps(e,t){if(!e.length||t.empty)return e;let i=[];for(let s of e)t.touchesRange(s.from,s.to)||i.push(new un(t.mapPos(s.from),t.mapPos(s.to),s.size,s.displaySize));return i}ensureLineGaps(e,t){let i=this.heightOracle.lineWrapping,s=i?1e4:2e3,r=s>>1,o=s<<1;if(this.defaultTextDirection!=B.LTR&&!i)return[];let l=[],a=c((f,u,d,O)=>{if(u-f<r)return;let p=this.state.selection.main,m=[p.from];p.empty||m.push(p.to);for(let Q of m)if(Q>f&&Q<u){a(f,Q-10,d,O),a(Q+10,u,d,O);return}let g=qm(e,Q=>Q.from>=d.from&&Q.to<=d.to&&Math.abs(Q.from-f)<r&&Math.abs(Q.to-u)<r&&!m.some(b=>Q.from<b&&Q.to>b));if(!g){if(u<d.to&&t&&i&&t.visibleRanges.some(x=>x.from<=u&&x.to>=u)){let x=t.moveToLineBoundary(y.cursor(u),!1,!0).head;x>f&&(u=x)}let Q=this.gapSize(d,f,u,O),b=i||Q<2e6?Q:2e6;g=new un(f,u,Q,b)}l.push(g)},"addGap"),h=c(f=>{if(f.length<o||f.type!=ue.Text)return;let u=Lm(f.from,f.to,this.stateDeco);if(u.total<o)return;let d=this.scrollTarget?this.scrollTarget.range.head:null,O,p;if(i){let m=s/this.heightOracle.lineLength*this.heightOracle.lineHeight,g,Q;if(d!=null){let b=cs(u,d),x=((this.visibleBottom-this.visibleTop)/2+m)/f.height;g=b-x,Q=b+x}else g=(this.visibleTop-f.top-m)/f.height,Q=(this.visibleBottom-f.top+m)/f.height;O=hs(u,g),p=hs(u,Q)}else{let m=u.total*this.heightOracle.charWidth,g=s*this.heightOracle.charWidth,Q=0;if(m>2e6)for(let k of e)k.from>=f.from&&k.from<f.to&&k.size!=k.displaySize&&k.from*this.heightOracle.charWidth+Q<this.pixelViewport.left&&(Q=k.size-k.displaySize);let b=this.pixelViewport.left+Q,x=this.pixelViewport.right+Q,Z,w;if(d!=null){let k=cs(u,d),v=((x-b)/2+g)/m;Z=k-v,w=k+v}else Z=(b-g)/m,w=(x+g)/m;O=hs(u,Z),p=hs(u,w)}O>f.from&&a(f.from,O,f,u),p<f.to&&a(p,f.to,f,u)},"checkLine");for(let f of this.viewportLines)Array.isArray(f.type)?f.type.forEach(h):h(f);return l}gapSize(e,t,i,s){let r=cs(s,i)-cs(s,t);return this.heightOracle.lineWrapping?e.height*r:s.total*this.heightOracle.charWidth*r}updateLineGaps(e){un.same(e,this.lineGaps)||(this.lineGaps=e,this.lineGapDeco=A.set(e.map(t=>t.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let t=this.stateDeco;this.lineGaps.length&&(t=t.concat(this.lineGapDeco));let i=[];D.spans(t,this.viewport.from,this.viewport.to,{span(r,o){i.push({from:r,to:o})},point(){}},20);let s=0;if(i.length!=this.visibleRanges.length)s=12;else for(let r=0;r<i.length&&!(s&8);r++){let o=this.visibleRanges[r],l=i[r];(o.from!=l.from||o.to!=l.to)&&(s|=4,e&&e.mapPos(o.from,-1)==l.from&&e.mapPos(o.to,1)==l.to||(s|=8))}return this.visibleRanges=i,s}lineBlockAt(e){return e>=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(t=>t.from<=e&&t.to>=e)||sn(this.heightMap.lineAt(e,K.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(t=>t.top<=e&&t.bottom>=e)||sn(this.heightMap.lineAt(this.scaler.fromDOM(e),K.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(e){let t=this.lineBlockAtHeight(e+8);return t.from>=this.viewport.from||this.viewportLines[0].top-e>200?t:this.viewportLines[0]}elementAtHeight(e){return sn(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},yi=class{static{c(this,"Viewport")}constructor(e,t){this.from=e,this.to=t}};function Lm(n,e,t){let i=[],s=n,r=0;return D.spans(t,n,e,{span(){},point(o,l){o>s&&(i.push({from:s,to:o}),r+=o-s),s=l}},20),s<e&&(i.push({from:s,to:e}),r+=e-s),{total:r,ranges:i}}c(Lm,"lineStructure");function hs({total:n,ranges:e},t){if(t<=0)return e[0].from;if(t>=1)return e[e.length-1].to;let i=Math.floor(n*t);for(let s=0;;s++){let{from:r,to:o}=e[s],l=o-r;if(i<=l)return r+i;i-=l}}c(hs,"findPosition");function cs(n,e){let t=0;for(let{from:i,to:s}of n.ranges){if(e<=s){t+=e-i;break}t+=s-i}return t/n.total}c(cs,"findFraction");function qm(n,e){for(let t of n)if(e(t))return t}c(qm,"find");var Qc={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};function yc(n){let e=n.facet(_s).filter(i=>typeof i!="function"),t=n.facet(Sl).filter(i=>typeof i!="function");return t.length&&e.push(D.join(t)),e}c(yc,"staticDeco");var Uo=class n{static{c(this,"BigScaler")}constructor(e,t,i){let s=0,r=0,o=0;this.viewports=i.map(({from:l,to:a})=>{let h=t.lineAt(l,K.ByPos,e,0,0).top,f=t.lineAt(a,K.ByPos,e,0,0).bottom;return s+=f-h,{from:l,to:a,top:h,bottom:f,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(t.height-s);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(e){for(let t=0,i=0,s=0;;t++){let r=t<this.viewports.length?this.viewports[t]:null;if(!r||e<r.top)return s+(e-i)*this.scale;if(e<=r.bottom)return r.domTop+(e-r.top);i=r.bottom,s=r.domBottom}}fromDOM(e){for(let t=0,i=0,s=0;;t++){let r=t<this.viewports.length?this.viewports[t]:null;if(!r||e<r.domTop)return i+(e-s)/this.scale;if(e<=r.domBottom)return r.top+(e-r.domTop);i=r.bottom,s=r.domBottom}}eq(e){return e instanceof n?this.scale==e.scale&&this.viewports.length==e.viewports.length&&this.viewports.every((t,i)=>t.from==e.viewports[i].from&&t.to==e.viewports[i].to):!1}};function sn(n,e){if(e.scale==1)return n;let t=e.toDOM(n.top),i=e.toDOM(n.bottom);return new Ue(n.from,n.length,t,i-t,Array.isArray(n._content)?n._content.map(s=>sn(s,e)):n._content)}c(sn,"scaleBlock");var fs=T.define({combine:c(n=>n.join(" "),"combine")}),Fo=T.define({combine:c(n=>n.indexOf(!0)>-1,"combine")}),Ho=We.newName(),vf=We.newName(),Pf=We.newName(),$f={"&light":"."+vf,"&dark":"."+Pf};function Ko(n,e,t){return new We(e,{finish(i){return/&/.test(i)?i.replace(/&\w*/,s=>{if(s=="&")return n;if(!t||!t[s])throw new RangeError(`Unsupported selector: ${s}`);return t[s]}):n+" "+i}})}c(Ko,"buildTheme");var Wm=Ko("."+Ho,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="200" height="20"><path stroke="%23888" stroke-width="1" fill="none" d="M1 10H196L190 5M190 15L196 10M197 4L197 16"/></svg>')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},$f),Bm={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},fo=C.ie&&C.ie_version<=11,Jo=class{static{c(this,"DOMObserver")}constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new xo,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(t=>{for(let i of t)this.queue.push(i);(C.ie&&C.ie_version<=11||C.ios&&e.composing)&&t.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&C.android&&e.constructor.EDIT_CONTEXT!==!1&&!(C.chrome&&C.chrome_version<126)&&(this.editContext=new el(e),e.state.facet(pt)&&(e.contentDOM.editContext=this.editContext.editContext)),fo&&(this.onCharData=t=>{this.queue.push({target:t.target,type:"characterData",oldValue:t.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var t;((t=this.view.docView)===null||t===void 0?void 0:t.lastUpdate)<Date.now()-75&&this.onResize()}),this.resizeScroll.observe(e.scrollDOM)),this.addWindowListeners(this.win=e.win),this.start(),typeof IntersectionObserver=="function"&&(this.intersection=new IntersectionObserver(t=>{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),t.length>0&&t[t.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(t=>{t.length>0&&t[t.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((t,i)=>t!=e[i]))){this.gapIntersection.disconnect();for(let t of e)this.gapIntersection.observe(t);this.gaps=e}}onSelectionChange(e){let t=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,s=this.selectionRange;if(i.state.facet(pt)?i.root.activeElement!=this.dom:!on(this.dom,s))return;let r=s.anchorNode&&i.docView.tile.nearest(s.anchorNode);if(r&&r.isWidget()&&r.widget.ignoreEvent(e)){t||(this.selectionChanged=!1);return}(C.ie&&C.ie_version<=11||C.android&&C.chrome)&&!i.state.selection.main.empty&&s.focusNode&&ln(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,t=gn(e.root);if(!t)return!1;let i=C.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&Im(this.view,t)||t;if(!i||this.selectionRange.eq(i))return!1;let s=on(this.dom,i);return s&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime<Date.now()-300&&Dp(this.dom,i)?(this.view.inputState.lastFocusTime=0,e.docView.updateSelection(),!1):(this.selectionRange.setRange(i),s&&(this.selectionChanged=!0),!0)}setSelectionRange(e,t){this.selectionRange.set(e.node,e.offset,t.node,t.offset),this.selectionChanged=!1}clearSelectionRange(){this.selectionRange.set(null,0,null,0)}listenForScroll(){this.parentCheck=-1;let e=0,t=null;for(let i=this.dom;i;)if(i.nodeType==1)!t&&e<this.scrollTargets.length&&this.scrollTargets[e]==i?e++:t||(t=this.scrollTargets.slice(0,e)),t&&t.push(i),i=i.assignedSlot||i.parentNode;else if(i.nodeType==11)i=i.host;else break;if(e<this.scrollTargets.length&&!t&&(t=this.scrollTargets.slice(0,e)),t){for(let i of this.scrollTargets)i.removeEventListener("scroll",this.onScroll);for(let i of this.scrollTargets=t)i.addEventListener("scroll",this.onScroll)}}ignore(e){if(!this.active)return e();try{return this.stop(),e()}finally{this.start(),this.clear()}}start(){this.active||(this.observer.observe(this.dom,Bm),fo&&this.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.active=!0)}stop(){this.active&&(this.active=!1,this.observer.disconnect(),fo&&this.dom.removeEventListener("DOMCharacterDataModified",this.onCharData))}clear(){this.processRecords(),this.queue.length=0,this.selectionChanged=!1}delayAndroidKey(e,t){var i;if(!this.delayedAndroidKey){let s=c(()=>{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&ki(this.dom,r.key,r.keyCode))},"flush");this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:t,force:this.lastChange<Date.now()-50||!!(!((i=this.delayedAndroidKey)===null||i===void 0)&&i.force)})}clearDelayedAndroidKey(){this.win.cancelAnimationFrame(this.flushingAndroidKey),this.delayedAndroidKey=null,this.flushingAndroidKey=-1}flushSoon(){this.delayedFlush<0&&(this.delayedFlush=this.view.win.requestAnimationFrame(()=>{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let t=-1,i=-1,s=!1;for(let r of e){let o=this.readMutation(r);o&&(o.typeOver&&(s=!0),t==-1?{from:t,to:i}=o:(t=Math.min(o.from,t),i=Math.max(o.to,i)))}return{from:t,to:i,typeOver:s}}readChange(){let{from:e,to:t,typeOver:i}=this.processRecords(),s=this.selectionChanged&&on(this.dom,this.selectionRange);if(e<0&&!s)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new _o(this.view,e,t,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let t=this.readChange();if(!t)return this.view.requestMeasure(),!1;let i=this.view.state,s=pf(this.view,t);return this.view.state==i&&(t.domChanged||t.newSel&&!Ts(this.view.state.selection,t.newSel.main))&&this.view.update([]),s}readMutation(e){let t=this.view.docView.tile.nearest(e.target);if(!t||t.isWidget())return null;if(t.markDirty(e.type=="attributes"),e.type=="childList"){let i=bc(t,e.previousSibling||e.target.previousSibling,-1),s=bc(t,e.nextSibling||e.target.nextSibling,1);return{from:i?t.posAfter(i):t.posAtStart,to:s?t.posBefore(s):t.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:t.posAtStart,to:t.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(pt)!=e.state.facet(pt)&&(e.view.contentDOM.editContext=e.state.facet(pt)?this.editContext.editContext:null))}destroy(){var e,t,i;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(t=this.gapIntersection)===null||t===void 0||t.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function bc(n,e,t){for(;e;){let i=ee.get(e);if(i&&i.parent==n)return i;let s=e.parentNode;e=s!=n.dom?s:t>0?e.nextSibling:e.previousSibling}return null}c(bc,"findChild");function xc(n,e){let t=e.startContainer,i=e.startOffset,s=e.endContainer,r=e.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor,1);return ln(o.node,o.offset,s,r)&&([t,i,s,r]=[s,r,t,i]),{anchorNode:t,anchorOffset:i,focusNode:s,focusOffset:r}}c(xc,"buildSelectionRangeFromRange");function Im(n,e){if(e.getComposedRanges){let s=e.getComposedRanges(n.root)[0];if(s)return xc(n,s)}let t=null;function i(s){s.preventDefault(),s.stopImmediatePropagation(),t=s.getTargetRanges()[0]}return c(i,"read"),n.contentDOM.addEventListener("beforeinput",i,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",i,!0),t?xc(n,t):null}c(Im,"safariSelectionRangeHack");var el=class{static{c(this,"EditContextManager")}constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let t=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=i=>{let s=e.state.selection.main,{anchor:r,head:o}=s,l=this.toEditorPos(i.updateRangeStart),a=this.toEditorPos(i.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:i.updateRangeStart,editorBase:l,drifted:!1});let h=a-l>i.text.length;l==this.from&&r<this.from?l=r:a==this.to&&r>this.to&&(a=r);let f=mf(e.state.sliceDoc(l,a),i.text,(h?s.from:s.to)-l,h?"end":null);if(!f){let d=y.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));Ts(d,s)||e.dispatch({selection:d,userEvent:"select"});return}let u={from:f.from+l,to:f.toA+l,insert:V.of(i.text.slice(f.from,f.toB).split(` 10 + `))};if((C.mac||C.android)&&u.from==o-1&&/^\. ?$/.test(i.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(u={from:l,to:a,insert:V.of([i.text.replace("."," ")])}),this.pendingContextChange=u,!e.state.readOnly){let d=this.to-this.from+(u.to-u.from+u.insert.length);yl(e,u,y.single(this.toEditorPos(i.selectionStart,d),this.toEditorPos(i.selectionEnd,d)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),u.from<u.to&&!u.insert.length&&e.inputState.composing>=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(t.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(t.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let s=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o<l;o++){let a=e.coordsForChar(o);r=a&&new DOMRect(a.left,a.top,a.right-a.left,a.bottom-a.top)||r||new DOMRect,s.push(r)}t.updateCharacterBounds(i.rangeStart,s)},this.handlers.textformatupdate=i=>{let s=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(r.rangeStart),h=this.toEditorPos(r.rangeEnd);if(a<h){let f=`text-decoration: underline ${/^[a-z]/.test(o)?o+" ":o=="Dashed"?"dashed ":o=="Squiggle"?"wavy ":""}${/thin/i.test(l)?1:2}px`;s.push(A.mark({attributes:{style:f}}).range(a,h))}}}e.dispatch({effects:of.of(A.set(s))})},this.handlers.compositionstart=()=>{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(e.state)}};for(let i in this.handlers)t.addEventListener(i,this.handlers[i]);this.measureReq={read:c(i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let s=gn(i.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())},"read")}}applyEdits(e){let t=0,i=!1,s=this.pendingContextChange;return e.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let f=h.length-(o-r);if(s&&o>=s.to)if(s.from==r&&s.to==o&&s.insert.eq(h)){s=this.pendingContextChange=null,t+=f,this.to+=f;return}else s=null,this.revertPending(e.state);if(r+=t,o+=t,o<=this.from)this.from+=f,this.to+=f;else if(r<this.to){if(r<this.from||o>this.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=f}t+=f}),s&&!i&&this.revertPending(e.state),!i}update(e){let t=this.pendingContextChange,i=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(i.from,i.to)&&e.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||t)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:t}=e.selection.main;this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.from+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){let{main:t}=e.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),s=this.toContextPos(t.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(i,s)}rangeIsValid(e){let{head:t}=e.selection.main;return!(this.from>0&&t-this.from<500||this.to<e.doc.length&&this.to-t<500||this.to-this.from>1e4*3)}toEditorPos(e,t=this.to-this.from){e=Math.min(e,t);let i=this.composing;return i&&i.drifted?i.editorBase+(e-i.contextBase):e+this.from}toContextPos(e){let t=this.composing;return t&&t.drifted?t.contextBase+(e-t.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}},P=class n{static{c(this,"EditorView")}get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var t;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:i}=e;this.dispatchTransactions=e.dispatchTransactions||i&&(s=>s.forEach(r=>i(r,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=e.root||_p(e.parent)||document,this.viewState=new As(this,e.state||G.create(e)),e.scrollTo&&e.scrollTo.is(os)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Qi).map(s=>new hn(s));for(let s of this.plugins)s.update(this);this.observer=new Jo(this),this.inputState=new Do(this),this.inputState.ensureHandlers(this.plugins),this.docView=new Ps(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((t=document.fonts)===null||t===void 0)&&t.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...e){let t=e.length==1&&e[0]instanceof se?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(t,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let t=!1,i=!1,s,r=this.state;for(let d of e){if(d.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=d.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;e.some(d=>d.annotation(xf))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=wf(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,f=null;if(h?(this.observer.clearDelayedAndroidKey(),f=this.observer.readChange(),(f&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(f=null)):this.observer.clear(),r.facet(G.phrases)!=this.state.facet(G.phrases))return this.setState(r);s=ks.create(this,r,e),s.flags|=l;let u=this.viewState.scrollTarget;try{this.updateState=2;for(let d of e){if(u&&(u=u.map(d.changes)),d.scrollIntoView){let{main:O}=d.state.selection;u=new an(O.empty?O:y.cursor(O.head,O.head>O.anchor?-1:1))}for(let O of d.effects)O.is(os)&&(u=O.value.clip(this.state))}this.viewState.update(s,u),this.bidiCache=Xs.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),t=this.docView.update(s),this.state.facet(nn)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(t,e.some(d=>d.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(fs)!=s.state.facet(fs)&&(this.viewState.mustMeasureContent=!0),(t||i||u||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),t&&this.docViewUpdate(),!s.empty)for(let d of this.state.facet(Po))try{d(s)}catch(O){fe(this.state,O,"update listener")}(a||f)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),f&&!pf(this,f)&&h.force&&ki(this.contentDOM,h.key,h.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let t=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new As(this,e),this.plugins=e.facet(Qi).map(i=>new hn(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new Ps(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}t&&this.focus(),this.requestMeasure()}updatePlugins(e){let t=e.startState.facet(Qi),i=e.state.facet(Qi);if(t!=i){let s=[];for(let r of i){let o=t.indexOf(r);if(o<0)s.push(new hn(r));else{let l=this.plugins[o];l.mustUpdate=e,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=e&&r.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=e;for(let s=0;s<this.plugins.length;s++)this.plugins[s].update(this);t!=i&&this.inputState.ensureHandlers(this.plugins)}docViewUpdate(){for(let e of this.plugins){let t=e.value;if(t&&t.docViewUpdate)try{t.docViewUpdate(this)}catch(i){fe(this.state,i,"doc view update listener")}}}measure(e=!0){if(this.destroyed)return;if(this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let t=null,i=this.viewState.scrollParent,s=this.viewState.getScrollOffset(),{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(qc(i||this.win))r=-1,o=this.viewState.heightMap.height;else{let O=this.viewState.scrollAnchorAt(s);r=O.from,o=O.top}this.updateState=1;let a=this.viewState.measure();if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let f=h.map(O=>{try{return O.read(this)}catch(p){return fe(this.state,p),wc}}),u=ks.create(this,this.state,[]),d=!1;u.flags|=a,t?t.flags|=a:t=u,this.updateState=2,u.empty||(this.updatePlugins(u),this.inputState.update(u),this.updateAttrs(),d=this.docView.update(u),d&&this.docViewUpdate());for(let O=0;O<h.length;O++)if(f[O]!=wc)try{let p=h[O];p.write&&p.write(f[O],this)}catch(p){fe(this.state,p)}if(d&&this.docView.updateSelection(!0),!u.viewportChanged&&this.measureRequests.length==0){if(this.viewState.editorHeight)if(this.viewState.scrollTarget){this.docView.scrollIntoView(this.viewState.scrollTarget),this.viewState.scrollTarget=null,o=-1;continue}else{let p=((r<0?this.viewState.heightMap.height:this.viewState.lineBlockAt(r).top)-o)/this.scaleY;if((p>1||p<-1)&&(i==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){s=s+p,i?i.scrollTop+=p:this.win.scrollBy(0,p),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(t&&!t.empty)for(let l of this.state.facet(Po))l(t)}get themeClasses(){return Ho+" "+(this.state.facet(Fo)?Pf:vf)+" "+this.state.facet(fs)}updateAttrs(){let e=kc(this,lf,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),t={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(pt)?"true":"false",class:"cm-content",style:`${C.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(t["aria-readonly"]="true"),kc(this,gl,t);let i=this.observer.ignore(()=>{let s=ic(this.contentDOM,this.contentAttrs,t),r=ic(this.dom,this.editorAttrs,e);return s||r});return this.editorAttrs=e,this.contentAttrs=t,i}showAnnouncements(e){let t=!0;for(let i of e)for(let s of i.effects)if(s.is(n.announce)){t&&(this.announceDOM.textContent=""),t=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(nn);let e=this.state.facet(n.cspNonce);We.mount(this.root,this.styleModules.concat(Wm).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let t=0;t<this.measureRequests.length;t++)if(this.measureRequests[t].key===e.key){this.measureRequests[t]=e;return}}this.measureRequests.push(e)}}plugin(e){let t=this.pluginMap.get(e);return(t===void 0||t&&t.plugin!=e)&&this.pluginMap.set(e,t=this.plugins.find(i=>i.plugin==e)||null),t&&t.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,t,i){return co(this,e,ac(this,e,t,i))}moveByGroup(e,t){return co(this,e,ac(this,e,t,i=>Om(this,e.head,i)))}visualLineSide(e,t){let i=this.bidiSpans(e),s=this.textDirectionAt(e.from),r=i[t?i.length-1:0];return y.cursor(r.side(t,s)+e.from,r.forward(!t,s)?1:-1)}moveToLineBoundary(e,t,i=!0){return dm(this,e,t,i)}moveVertically(e,t,i){return co(this,e,pm(this,e,t,i))}domAtPos(e,t=1){return this.docView.domAtPos(e,t)}posAtDOM(e,t=0){return this.docView.posFromDOM(e,t)}posAtCoords(e,t=!0){this.readMeasured();let i=zo(this,e,t);return i&&i.pos}posAndSideAtCoords(e,t=!0){return this.readMeasured(),zo(this,e,t)}coordsAtPos(e,t=1){this.readMeasured();let i=this.docView.coordsAt(e,t);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(e),r=this.bidiSpans(s),o=r[je.find(r,e-s.from,-1,t)];return ws(i,o.dir==B.LTR==t>0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(nf)||e<this.viewport.from||e>this.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>jm)return Gc(e.length);let t=this.textDirectionAt(e.from),i;for(let r of this.bidiCache)if(r.from==e.from&&r.dir==t&&(r.fresh||Nc(r.isolates,i=rc(this,e))))return r.order;i||(i=rc(this,e));let s=Np(e.text,t,i);return this.bidiCache.push(new Xs(e.from,e.to,t,i,!0,s)),s}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||C.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{Lc(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,t={}){return os.of(new an(typeof e=="number"?y.cursor(e):e,t.y,t.x,t.yMargin,t.xMargin))}scrollSnapshot(){let{scrollTop:e,scrollLeft:t}=this.scrollDOM,i=this.viewState.scrollAnchorAt(e);return os.of(new an(y.cursor(i.from),"start","start",i.top-e,t,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return te.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return te.define(()=>({}),{eventObservers:e})}static theme(e,t){let i=We.newName(),s=[fs.of(i),nn.of(Ko(`.${i}`,e))];return t&&t.dark&&s.push(Fo.of(!0)),s}static baseTheme(e){return qe.lowest(nn.of(Ko("."+Ho,e,$f)))}static findFromDOM(e){var t;let i=e.querySelector(".cm-content"),s=i&&ee.get(i)||ee.get(e);return((t=s?.root)===null||t===void 0?void 0:t.view)||null}};P.styleModule=nn;P.inputHandler=ef;P.clipboardInputFilter=pl;P.clipboardOutputFilter=ml;P.scrollHandler=rf;P.focusChangeEffect=tf;P.perLineTextDirection=nf;P.exceptionSink=Jc;P.updateListener=Po;P.editable=pt;P.mouseSelectionStyle=Kc;P.dragMovesSelection=Hc;P.clickAddsSelectionRange=Fc;P.decorations=_s;P.blockWrappers=af;P.outerDecorations=Sl;P.atomicRanges=Qn;P.bidiIsolatedRanges=hf;P.scrollMargins=cf;P.darkTheme=Fo;P.cspNonce=T.define({combine:c(n=>n.length?n[0]:"","combine")});P.contentAttributes=gl;P.editorAttributes=lf;P.lineWrapping=P.contentAttributes.of({class:"cm-lineWrapping"});P.announce=R.define();var jm=4096,wc={},Xs=class n{static{c(this,"CachedOrder")}constructor(e,t,i,s,r,o){this.from=e,this.to=t,this.dir=i,this.isolates=s,this.fresh=r,this.order=o}static update(e,t){if(t.empty&&!e.some(r=>r.fresh))return e;let i=[],s=e.length?e[e.length-1].dir:B.LTR;for(let r=Math.max(0,e.length-10);r<e.length;r++){let o=e[r];o.dir==s&&!t.touchesRange(o.from,o.to)&&i.push(new n(t.mapPos(o.from,1),t.mapPos(o.to,-1),o.dir,o.isolates,!1,o.order))}return i}};function kc(n,e,t){for(let i=n.state.facet(e),s=i.length-1;s>=0;s--){let r=i[s],o=typeof r=="function"?r(n):r;o&&ul(o,t)}return t}c(kc,"attrsFromFacet");var Nm=C.mac?"mac":C.windows?"win":C.linux?"linux":"key";function Gm(n,e){let t=n.split(/-(?!$)/),i=t[t.length-1];i=="Space"&&(i=" ");let s,r,o,l;for(let a=0;a<t.length-1;++a){let h=t[a];if(/^(cmd|meta|m)$/i.test(h))l=!0;else if(/^a(lt)?$/i.test(h))s=!0;else if(/^(c|ctrl|control)$/i.test(h))r=!0;else if(/^s(hift)?$/i.test(h))o=!0;else if(/^mod$/i.test(h))e=="mac"?l=!0:r=!0;else throw new Error("Unrecognized modifier name: "+h)}return s&&(i="Alt-"+i),r&&(i="Ctrl-"+i),l&&(i="Meta-"+i),o&&(i="Shift-"+i),i}c(Gm,"normalizeKeyName");function us(n,e,t){return e.altKey&&(n="Alt-"+n),e.ctrlKey&&(n="Ctrl-"+n),e.metaKey&&(n="Meta-"+n),t!==!1&&e.shiftKey&&(n="Shift-"+n),n}c(us,"modifiers");var Um=qe.default(P.domEventHandlers({keydown(n,e){return Zf(Tf(e.state),n,e,"editor")}})),Ai=T.define({enables:Um}),vc=new WeakMap;function Tf(n){let e=n.facet(Ai),t=vc.get(e);return t||vc.set(e,t=Hm(e.reduce((i,s)=>i.concat(s),[]))),t}c(Tf,"getKeymap");function Cf(n,e,t){return Zf(Tf(n.state),e,n,t)}c(Cf,"runScopeHandlers");var wt=null,Fm=4e3;function Hm(n,e=Nm){let t=Object.create(null),i=Object.create(null),s=c((o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},"checkPrefix"),r=c((o,l,a,h,f)=>{var u,d;let O=t[o]||(t[o]=Object.create(null)),p=l.split(/ (?!$)/).map(Q=>Gm(Q,e));for(let Q=1;Q<p.length;Q++){let b=p.slice(0,Q).join(" ");s(b,!0),O[b]||(O[b]={preventDefault:!0,stopPropagation:!1,run:[x=>{let Z=wt={view:x,prefix:b,scope:o};return setTimeout(()=>{wt==Z&&(wt=null)},Fm),!0}]})}let m=p.join(" ");s(m,!1);let g=O[m]||(O[m]={preventDefault:!1,stopPropagation:!1,run:((d=(u=O._any)===null||u===void 0?void 0:u.run)===null||d===void 0?void 0:d.slice())||[]});a&&g.run.push(a),h&&(g.preventDefault=!0),f&&(g.stopPropagation=!0)},"add");for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let f=t[h]||(t[h]=Object.create(null));f._any||(f._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:u}=o;for(let d in f)f[d].run.push(O=>u(O,tl))}let a=o[e]||o.key;if(a)for(let h of l)r(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return t}c(Hm,"buildKeymap");var tl=null;function Zf(n,e,t,i){tl=e;let s=Hh(e),r=ce(s,0),o=Ae(r)==s.length&&s!=" ",l="",a=!1,h=!1,f=!1;wt&&wt.view==t&&wt.scope==i&&(l=wt.prefix+" ",Sf.indexOf(e.keyCode)<0&&(h=!0,wt=null));let u=new Set,d=c(g=>{if(g){for(let Q of g.run)if(!u.has(Q)&&(u.add(Q),Q(t)))return g.stopPropagation&&(f=!0),!0;g.preventDefault&&(g.stopPropagation&&(f=!0),h=!0)}return!1},"runFor"),O=n[i],p,m;return O&&(d(O[l+us(s,e,!o)])?a=!0:o&&(e.altKey||e.metaKey||e.ctrlKey)&&!(C.windows&&e.ctrlKey&&e.altKey)&&!(C.mac&&e.altKey&&!(e.ctrlKey||e.metaKey))&&(p=Ot[e.keyCode])&&p!=s?(d(O[l+us(p,e,!0)])||e.shiftKey&&(m=gi[e.keyCode])!=s&&m!=p&&d(O[l+us(m,e,!1)]))&&(a=!0):o&&e.shiftKey&&d(O[l+us(s,e,!0)])&&(a=!0),!a&&d(O._any)&&(a=!0)),h&&(a=!0),a&&f&&e.stopPropagation(),tl=null,a}c(Zf,"runHandlers");var Ut=class n{static{c(this,"RectangleMarker")}constructor(e,t,i,s,r){this.className=e,this.left=t,this.top=i,this.width=s,this.height=r}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,t){return t.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,t,i){if(i.empty){let s=e.coordsAtPos(i.head,i.assoc||1);if(!s)return[];let r=Af(e);return[new n(t,s.left-r.left,s.top-r.top,null,s.bottom-s.top)]}else return Km(e,t,i)}};function Af(n){let e=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==B.LTR?e.left:e.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:e.top-n.scrollDOM.scrollTop*n.scaleY}}c(Af,"getBase");function Pc(n,e,t,i){let s=n.coordsAtPos(e,t*2);if(!s)return i;let r=n.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,l=n.posAtCoords({x:r.left+1,y:o}),a=n.posAtCoords({x:r.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}c(Pc,"wrappedLine");function Km(n,e,t){if(t.to<=n.viewport.from||t.from>=n.viewport.to)return[];let i=Math.max(t.from,n.viewport.from),s=Math.min(t.to,n.viewport.to),r=n.textDirection==B.LTR,o=n.contentDOM,l=o.getBoundingClientRect(),a=Af(n),h=o.querySelector(".cm-line"),f=h&&window.getComputedStyle(h),u=l.left+(f?parseInt(f.paddingLeft)+Math.min(0,parseInt(f.textIndent)):0),d=l.right-(f?parseInt(f.paddingRight):0),O=Eo(n,i,1),p=Eo(n,s,-1),m=O.type==ue.Text?O:null,g=p.type==ue.Text?p:null;if(m&&(n.lineWrapping||O.widgetLineBreaks)&&(m=Pc(n,i,1,m)),g&&(n.lineWrapping||p.widgetLineBreaks)&&(g=Pc(n,s,-1,g)),m&&g&&m.from==g.from&&m.to==g.to)return b(x(t.from,t.to,m));{let w=m?x(t.from,null,m):Z(O,!1),k=g?x(null,t.to,g):Z(p,!0),v=[];return(m||O).to<(g||p).from-(m&&g?1:0)||O.widgetLineBreaks>1&&w.bottom+n.defaultLineHeight/2<k.top?v.push(Q(u,w.bottom,d,k.top)):w.bottom<k.top&&n.elementAtHeight((w.bottom+k.top)/2).type==ue.Text&&(w.bottom=k.top=(w.bottom+k.top)/2),b(w).concat(v).concat(b(k))}function Q(w,k,v,z){return new Ut(e,w-a.left,k-a.top,Math.max(0,v-w),z-k)}c(Q,"piece");function b({top:w,bottom:k,horizontal:v}){let z=[];for(let _=0;_<v.length;_+=2)z.push(Q(v[_],w,v[_+1],k));return z}c(b,"pieces");function x(w,k,v){let z=1e9,_=-1e9,N=[];function Y(W,H,ge,Te,st){let he=n.coordsAtPos(W,W==v.to?-2:2),_e=n.coordsAtPos(ge,ge==v.from?2:-2);!he||!_e||(z=Math.min(he.top,_e.top,z),_=Math.max(he.bottom,_e.bottom,_),st==B.LTR?N.push(r&&H?u:he.left,r&&Te?d:_e.right):N.push(!r&&Te?u:_e.left,!r&&H?d:he.right))}c(Y,"addSpan");let M=w??v.from,I=k??v.to;for(let W of n.visibleRanges)if(W.to>M&&W.from<I)for(let H=Math.max(W.from,M),ge=Math.min(W.to,I);;){let Te=n.state.doc.lineAt(H);for(let st of n.bidiSpans(Te)){let he=st.from+Te.from,_e=st.to+Te.from;if(he>=ge)break;_e>H&&Y(Math.max(he,H),w==null&&he<=M,Math.min(_e,ge),k==null&&_e>=I,st.dir)}if(H=Te.to+1,H>=ge)break}return N.length==0&&Y(M,w==null,I,k==null,n.textDirection),{top:z,bottom:_,horizontal:N}}c(x,"drawForLine");function Z(w,k){let v=l.top+(k?w.top:w.bottom);return{top:v,bottom:v,horizontal:[]}}c(Z,"drawForWidget")}c(Km,"rectanglesForRange");function Jm(n,e){return n.constructor==e.constructor&&n.eq(e)}c(Jm,"sameMarker");var il=class{static{c(this,"LayerView")}constructor(e,t){this.view=e,this.layer=t,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),t.above&&this.dom.classList.add("cm-layer-above"),t.class&&this.dom.classList.add(t.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),t.mount&&t.mount(this.dom,e)}update(e){e.startState.facet(gs)!=e.state.facet(gs)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let t=0,i=e.facet(gs);for(;t<i.length&&i[t]!=this.layer;)t++;this.dom.style.zIndex=String((this.layer.above?150:-1)-t)}measure(){return this.layer.markers(this.view)}scale(){let{scaleX:e,scaleY:t}=this.view;(e!=this.scaleX||t!=this.scaleY)&&(this.scaleX=e,this.scaleY=t,this.dom.style.transform=`scale(${1/e}, ${1/t})`)}draw(e){if(e.length!=this.drawn.length||e.some((t,i)=>!Jm(t,this.drawn[i]))){let t=this.dom.firstChild,i=0;for(let s of e)s.update&&t&&s.constructor&&this.drawn[i].constructor&&s.update(t,this.drawn[i])?(t=t.nextSibling,i++):this.dom.insertBefore(s.draw(),t);for(;t;){let s=t.nextSibling;t.remove(),t=s}this.drawn=e,C.safari&&C.safari_version>=26&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},gs=T.define();function Xf(n){return[te.define(e=>new il(e,n)),gs.of(n)]}c(Xf,"layer");var Zi=T.define({combine(n){return pe(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:c((e,t)=>Math.min(e,t),"cursorBlinkRate"),drawRangeCursor:c((e,t)=>e||t,"drawRangeCursor")})}});function Rf(n={}){return[Zi.of(n),eg,tg,ig,sf.of(!0)]}c(Rf,"drawSelection");function Mf(n){return n.startState.facet(Zi)!=n.state.facet(Zi)}c(Mf,"configChanged");var eg=Xf({above:!0,markers(n){let{state:e}=n,t=e.facet(Zi),i=[];for(let s of e.selection.ranges){let r=s==e.selection.main;if(s.empty||t.drawRangeCursor&&!(r&&C.ios&&t.iosSelectionHandles)){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:y.cursor(s.head,s.head>s.anchor?-1:1);for(let a of Ut.forRange(n,o,l))i.push(a)}}return i},update(n,e){n.transactions.some(i=>i.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let t=Mf(n);return t&&$c(n.state,e),n.docChanged||n.selectionSet||t},mount(n,e){$c(e.state,n)},class:"cm-cursorLayer"});function $c(n,e){e.style.animationDuration=n.facet(Zi).cursorBlinkRate+"ms"}c($c,"setBlinkRate");var tg=Xf({above:!1,markers(n){let e=[],{main:t,ranges:i}=n.state.selection;for(let s of i)if(!s.empty)for(let r of Ut.forRange(n,"cm-selectionBackground",s))e.push(r);if(C.ios&&!t.empty&&n.state.facet(Zi).iosSelectionHandles){for(let s of Ut.forRange(n,"cm-selectionHandle cm-selectionHandle-start",y.cursor(t.from,1)))e.push(s);for(let s of Ut.forRange(n,"cm-selectionHandle cm-selectionHandle-end",y.cursor(t.to,1)))e.push(s)}return e},update(n,e){return n.docChanged||n.selectionSet||n.viewportChanged||Mf(n)},class:"cm-selectionLayer"}),ig=qe.highest(P.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}})),Ef=R.define({map(n,e){return n==null?null:e.mapPos(n)}}),rn=ie.define({create(){return null},update(n,e){return n!=null&&(n=e.changes.mapPos(n)),e.effects.reduce((t,i)=>i.is(Ef)?i.value:t,n)}}),ng=te.fromClass(class{constructor(n){this.view=n,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(n){var e;let t=n.state.field(rn);t==null?this.cursor!=null&&((e=this.cursor)===null||e===void 0||e.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(n.startState.field(rn)!=t||n.docChanged||n.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:n}=this,e=n.state.field(rn),t=e!=null&&n.coordsAtPos(e);if(!t)return null;let i=n.scrollDOM.getBoundingClientRect();return{left:t.left-i.left+n.scrollDOM.scrollLeft*n.scaleX,top:t.top-i.top+n.scrollDOM.scrollTop*n.scaleY,height:t.bottom-t.top}}drawCursor(n){if(this.cursor){let{scaleX:e,scaleY:t}=this.view;n?(this.cursor.style.left=n.left/e+"px",this.cursor.style.top=n.top/t+"px",this.cursor.style.height=n.height/t+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(n){this.view.state.field(rn)!=n&&this.view.dispatch({effects:Ef.of(n)})}},{eventObservers:{dragover(n){this.setDropPos(this.view.posAtCoords({x:n.clientX,y:n.clientY}))},dragleave(n){(n.target==this.view.contentDOM||!this.view.contentDOM.contains(n.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function zf(){return[rn,ng]}c(zf,"dropCursor");function Tc(n,e,t,i,s){e.lastIndex=0;for(let r=n.iterRange(t,i),o=t,l;!r.next().done;o+=r.value.length)if(!r.lineBreak)for(;l=e.exec(r.value);)s(o+l.index,l)}c(Tc,"iterMatches");function sg(n,e){let t=n.visibleRanges;if(t.length==1&&t[0].from==n.viewport.from&&t[0].to==n.viewport.to)return t;let i=[];for(let{from:s,to:r}of t)s=Math.max(n.state.doc.lineAt(s).from,s-e),r=Math.min(n.state.doc.lineAt(r).to,r+e),i.length&&i[i.length-1].to>=s?i[i.length-1].to=r:i.push({from:s,to:r});return i}c(sg,"matchRanges");var nl=class{static{c(this,"MatchDecorator")}constructor(e){let{regexp:t,decoration:i,decorate:s,boundary:r,maxLength:o=1e3}=e;if(!t.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=t,s)this.addMatch=(l,a,h,f)=>s(f,h,h+l[0].length,l,a);else if(typeof i=="function")this.addMatch=(l,a,h,f)=>{let u=i(l,a,h);u&&f(h,h+l[0].length,u)};else if(i)this.addMatch=(l,a,h,f)=>f(h,h+l[0].length,i);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=r,this.maxLength=o}createDeco(e){let t=new Ze,i=t.add.bind(t);for(let{from:s,to:r}of sg(e,this.maxLength))Tc(e.state.doc,this.regexp,s,r,(o,l)=>this.addMatch(l,e,o,i));return t.finish()}updateDeco(e,t){let i=1e9,s=-1;return e.docChanged&&e.changes.iterChanges((r,o,l,a)=>{a>=e.view.viewport.from&&l<=e.view.viewport.to&&(i=Math.min(l,i),s=Math.max(a,s))}),e.viewportMoved||s-i>1e3?this.createDeco(e.view):s>-1?this.updateRange(e.view,t.map(e.changes),i,s):t}updateRange(e,t,i,s){for(let r of e.visibleRanges){let o=Math.max(r.from,i),l=Math.min(r.to,s);if(l>=o){let a=e.state.doc.lineAt(o),h=a.to<l?e.state.doc.lineAt(l):a,f=Math.max(r.from,a.from),u=Math.min(r.to,h.to);if(this.boundary){for(;o>a.from;o--)if(this.boundary.test(a.text[o-1-a.from])){f=o;break}for(;l<h.to;l++)if(this.boundary.test(h.text[l-h.from])){u=l;break}}let d=[],O,p=c((m,g,Q)=>d.push(Q.range(m,g)),"add");if(a==h)for(this.regexp.lastIndex=f-a.from;(O=this.regexp.exec(a.text))&&O.index<u-a.from;)this.addMatch(O,e,O.index+a.from,p);else Tc(e.state.doc,this.regexp,f,u,(m,g)=>this.addMatch(g,e,m,p));t=t.update({filterFrom:f,filterTo:u,filter:c((m,g)=>m<f||g>u,"filter"),add:d})}}return t}},sl=/x/.unicode!=null?"gu":"g",rg=new RegExp(`[\0-\b 11 + -\x7F-\x9F\xAD\u061C\u200B\u200E\u200F\u2028\u2029\u202D\u202E\u2066\u2067\u2069\uFEFF\uFFF9-\uFFFC]`,sl),og={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"},uo=null;function lg(){var n;if(uo==null&&typeof document<"u"&&document.body){let e=document.body.style;uo=((n=e.tabSize)!==null&&n!==void 0?n:e.MozTabSize)!=null}return uo||!1}c(lg,"supportsTabSize");var Ss=T.define({combine(n){let e=pe(n,{render:null,specialChars:rg,addSpecialChars:null});return(e.replaceTabs=!lg())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,sl)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,sl)),e}});function Yf(n={}){return[Ss.of(n),ag()]}c(Yf,"highlightSpecialChars");var Cc=null;function ag(){return Cc||(Cc=te.fromClass(class{constructor(n){this.view=n,this.decorations=A.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(n.state.facet(Ss)),this.decorations=this.decorator.createDeco(n)}makeDecorator(n){return new nl({regexp:n.specialChars,decoration:c((e,t,i)=>{let{doc:s}=t.state,r=ce(e[0],0);if(r==9){let o=s.lineAt(i),l=t.state.tabSize,a=dt(o.text,l,i-o.from);return A.replace({widget:new ol((l-a%l)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[r]||(this.decorationCache[r]=A.replace({widget:new rl(n,r)}))},"decoration"),boundary:n.replaceTabs?void 0:/[^]/})}update(n){let e=n.state.facet(Ss);n.startState.facet(Ss)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(n.view)):this.decorations=this.decorator.updateDeco(n,this.decorations)}},{decorations:c(n=>n.decorations,"decorations")}))}c(ag,"specialCharPlugin");var hg="\u2022";function cg(n){return n>=32?hg:n==10?"\u2424":String.fromCharCode(9216+n)}c(cg,"placeholder$1");var rl=class extends ye{static{c(this,"SpecialCharWidget")}constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){let t=cg(this.code),i=e.state.phrase("Control character")+" "+(og[this.code]||"0x"+this.code.toString(16)),s=this.options.render&&this.options.render(this.code,i,t);if(s)return s;let r=document.createElement("span");return r.textContent=t,r.title=i,r.setAttribute("aria-label",i),r.className="cm-specialChar",r}ignoreEvent(){return!1}},ol=class extends ye{static{c(this,"TabWidget")}constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}};function Vf(){return ug}c(Vf,"highlightActiveLine");var fg=A.line({class:"cm-activeLine"}),ug=te.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let e=-1,t=[];for(let i of n.state.selection.ranges){let s=n.lineBlockAt(i.head);s.from>e&&(t.push(fg.range(s.from)),e=s.from)}return A.set(t)}},{decorations:c(n=>n.decorations,"decorations")});var ll=2e3;function dg(n,e,t){let i=Math.min(e.line,t.line),s=Math.max(e.line,t.line),r=[];if(e.off>ll||t.off>ll||e.col<0||t.col<0){let o=Math.min(e.off,t.off),l=Math.max(e.off,t.off);for(let a=i;a<=s;a++){let h=n.doc.line(a);h.length<=l&&r.push(y.range(h.from+o,h.to+l))}}else{let o=Math.min(e.col,t.col),l=Math.max(e.col,t.col);for(let a=i;a<=s;a++){let h=n.doc.line(a),f=ss(h.text,o,n.tabSize,!0);if(f<0)r.push(y.cursor(h.to));else{let u=ss(h.text,l,n.tabSize);r.push(y.range(h.from+f,h.from+u))}}}return r}c(dg,"rectangleFor");function Og(n,e){let t=n.coordsAtPos(n.viewport.from);return t?Math.round(Math.abs((t.left-e)/n.defaultCharacterWidth)):-1}c(Og,"absoluteColumn");function Zc(n,e){let t=n.posAtCoords({x:e.clientX,y:e.clientY},!1),i=n.state.doc.lineAt(t),s=t-i.from,r=s>ll?-1:s==i.length?Og(n,e.clientX):dt(i.text,n.state.tabSize,t-i.from);return{line:i.number,col:r,off:s}}c(Zc,"getPos");function pg(n,e){let t=Zc(n,e),i=n.state.selection;return t?{update(s){if(s.docChanged){let r=s.changes.mapPos(s.startState.doc.line(t.line).from),o=s.state.doc.lineAt(r);t={line:o.number,col:t.col,off:Math.min(t.off,o.length)},i=i.map(s.changes)}},get(s,r,o){let l=Zc(n,s);if(!l)return i;let a=dg(n.state,t,l);return a.length?o?y.create(a.concat(i.ranges)):y.create(a):i}}:null}c(pg,"rectangleSelectionStyle");function _f(n){let e=n?.eventFilter||(t=>t.altKey&&t.button==0);return P.mouseSelectionStyle.of((t,i)=>e(i)?pg(t,i):null)}c(_f,"rectangularSelection");var mg={Alt:[18,n=>!!n.altKey],Control:[17,n=>!!n.ctrlKey],Shift:[16,n=>!!n.shiftKey],Meta:[91,n=>!!n.metaKey]},gg={style:"cursor: crosshair"};function Df(n={}){let[e,t]=mg[n.key||"Alt"],i=te.fromClass(class{constructor(s){this.view=s,this.isDown=!1}set(s){this.isDown!=s&&(this.isDown=s,this.view.update([]))}},{eventObservers:{keydown(s){this.set(s.keyCode==e||t(s))},keyup(s){(s.keyCode==e||!t(s))&&this.set(!1)},mousemove(s){this.set(t(s))}}});return[i,P.contentAttributes.of(s=>{var r;return!((r=s.plugin(i))===null||r===void 0)&&r.isDown?gg:null})]}c(Df,"crosshairCursor");var ds="-10000px",Rs=class{static{c(this,"TooltipViewManager")}constructor(e,t,i,s){this.facet=t,this.createTooltipView=i,this.removeTooltipView=s,this.input=e.state.facet(t),this.tooltips=this.input.filter(o=>o);let r=null;this.tooltipViews=this.tooltips.map(o=>r=i(o,r))}update(e,t){var i;let s=e.state.facet(this.facet),r=s.filter(a=>a);if(s===this.input){for(let a of this.tooltipViews)a.update&&a.update(e);return!1}let o=[],l=t?[]:null;for(let a=0;a<r.length;a++){let h=r[a],f=-1;if(h){for(let u=0;u<this.tooltips.length;u++){let d=this.tooltips[u];d&&d.create==h.create&&(f=u)}if(f<0)o[a]=this.createTooltipView(h,a?o[a-1]:null),l&&(l[a]=!!h.above);else{let u=o[a]=this.tooltipViews[f];l&&(l[a]=t[f]),u.update&&u.update(e)}}}for(let a of this.tooltipViews)o.indexOf(a)<0&&(this.removeTooltipView(a),(i=a.destroy)===null||i===void 0||i.call(a));return t&&(l.forEach((a,h)=>t[h]=a),t.length=l.length),this.input=s,this.tooltips=r,this.tooltipViews=o,!0}};function Sg(n){let e=n.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:e.clientHeight,right:e.clientWidth}}c(Sg,"windowSpace");var Oo=T.define({combine:c(n=>{var e,t,i;return{position:C.ios?"absolute":((e=n.find(s=>s.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((t=n.find(s=>s.parent))===null||t===void 0?void 0:t.parent)||null,tooltipSpace:((i=n.find(s=>s.tooltipSpace))===null||i===void 0?void 0:i.tooltipSpace)||Sg}},"combine")}),Ac=new WeakMap,bl=te.fromClass(class{constructor(n){this.view=n,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let e=n.state.facet(Oo);this.position=e.position,this.parent=e.parent,this.classes=n.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=typeof ResizeObserver=="function"?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new Rs(n,yn,(t,i)=>this.createTooltip(t,i),t=>{this.resizeObserver&&this.resizeObserver.unobserve(t.dom),t.dom.remove()}),this.above=this.manager.tooltips.map(t=>!!t.above),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(t=>{Date.now()>this.lastTransaction-50&&t.length>0&&t[t.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),n.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let n of this.manager.tooltipViews)this.intersectionObserver.observe(n.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(n){n.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(n,this.above);e&&this.observeIntersection();let t=e||n.geometryChanged,i=n.state.facet(Oo);if(i.position!=this.position&&!this.madeAbsolute){this.position=i.position;for(let s of this.manager.tooltipViews)s.dom.style.position=this.position;t=!0}if(i.parent!=this.parent){this.parent&&this.container.remove(),this.parent=i.parent,this.createContainer();for(let s of this.manager.tooltipViews)this.container.appendChild(s.dom);t=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);t&&this.maybeMeasure()}createTooltip(n,e){let t=n.create(this.view),i=e?e.dom:null;if(t.dom.classList.add("cm-tooltip"),n.arrow&&!t.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let s=document.createElement("div");s.className="cm-tooltip-arrow",t.dom.appendChild(s)}return t.dom.style.position=this.position,t.dom.style.top=ds,t.dom.style.left="0px",this.container.insertBefore(t.dom,i),t.mount&&t.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(t.dom),t}destroy(){var n,e,t;this.view.win.removeEventListener("resize",this.measureSoon);for(let i of this.manager.tooltipViews)i.dom.remove(),(n=i.destroy)===null||n===void 0||n.call(i);this.parent&&this.container.remove(),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),(t=this.intersectionObserver)===null||t===void 0||t.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let n=1,e=1,t=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:r}=this.manager.tooltipViews[0];if(C.safari){let o=r.getBoundingClientRect();t=Math.abs(o.top+1e4)>1||Math.abs(o.left)>1}else t=!!r.offsetParent&&r.offsetParent!=this.container.ownerDocument.body}if(t||this.position=="absolute")if(this.parent){let r=this.parent.getBoundingClientRect();r.width&&r.height&&(n=r.width/this.parent.offsetWidth,e=r.height/this.parent.offsetHeight)}else({scaleX:n,scaleY:e}=this.view.viewState);let i=this.view.scrollDOM.getBoundingClientRect(),s=Ql(this.view);return{visible:{left:i.left+s.left,top:i.top+s.top,right:i.right-s.right,bottom:i.bottom-s.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((r,o)=>{let l=this.manager.tooltipViews[o];return l.getCoords?l.getCoords(r.pos):this.view.coordsAtPos(r.pos)}),size:this.manager.tooltipViews.map(({dom:r})=>r.getBoundingClientRect()),space:this.view.state.facet(Oo).tooltipSpace(this.view),scaleX:n,scaleY:e,makeAbsolute:t}}writeMeasure(n){var e;if(n.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let l of this.manager.tooltipViews)l.dom.style.position="absolute"}let{visible:t,space:i,scaleX:s,scaleY:r}=n,o=[];for(let l=0;l<this.manager.tooltips.length;l++){let a=this.manager.tooltips[l],h=this.manager.tooltipViews[l],{dom:f}=h,u=n.pos[l],d=n.size[l];if(!u||a.clip!==!1&&(u.bottom<=Math.max(t.top,i.top)||u.top>=Math.min(t.bottom,i.bottom)||u.right<Math.max(t.left,i.left)-.1||u.left>Math.min(t.right,i.right)+.1)){f.style.top=ds;continue}let O=a.arrow?h.dom.querySelector(".cm-tooltip-arrow"):null,p=O?7:0,m=d.right-d.left,g=(e=Ac.get(h))!==null&&e!==void 0?e:d.bottom-d.top,Q=h.offset||yg,b=this.view.textDirection==B.LTR,x=d.width>i.right-i.left?b?i.left:i.right-d.width:b?Math.max(i.left,Math.min(u.left-(O?14:0)+Q.x,i.right-m)):Math.min(Math.max(i.left,u.left-m+(O?14:0)-Q.x),i.right-m),Z=this.above[l];!a.strictSide&&(Z?u.top-g-p-Q.y<i.top:u.bottom+g+p+Q.y>i.bottom)&&Z==i.bottom-u.bottom>u.top-i.top&&(Z=this.above[l]=!Z);let w=(Z?u.top-i.top:i.bottom-u.bottom)-p;if(w<g&&h.resize!==!1){if(w<this.view.defaultLineHeight){f.style.top=ds;continue}Ac.set(h,g),f.style.height=(g=w)/r+"px"}else f.style.height&&(f.style.height="");let k=Z?u.top-g-p-Q.y:u.bottom+p+Q.y,v=x+m;if(h.overlap!==!0)for(let z of o)z.left<v&&z.right>x&&z.top<k+g&&z.bottom>k&&(k=Z?z.top-g-2-p:z.bottom+p+2);if(this.position=="absolute"?(f.style.top=(k-n.parent.top)/r+"px",Xc(f,(x-n.parent.left)/s)):(f.style.top=k/r+"px",Xc(f,x/s)),O){let z=u.left+(b?Q.x:-Q.x)-(x+14-7);O.style.left=z/s+"px"}h.overlap!==!0&&o.push({left:x,top:k,right:v,bottom:k+g}),f.classList.toggle("cm-tooltip-above",Z),f.classList.toggle("cm-tooltip-below",!Z),h.positioned&&h.positioned(n.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let n of this.manager.tooltipViews)n.dom.style.top=ds}},{eventObservers:{scroll(){this.maybeMeasure()}}});function Xc(n,e){let t=parseInt(n.style.left,10);(isNaN(t)||Math.abs(e-t)>1)&&(n.style.left=e+"px")}c(Xc,"setLeftStyle");var Qg=P.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:"14px",position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),yg={x:0,y:0},yn=T.define({enables:[bl,Qg]}),Ms=T.define({combine:c(n=>n.reduce((e,t)=>e.concat(t),[]),"combine")}),Es=class n{static{c(this,"HoverTooltipHost")}static create(e){return new n(e)}constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new Rs(e,Ms,(t,i)=>this.createHostedView(t,i),t=>t.dom.remove())}createHostedView(e,t){let i=e.create(this.view);return i.dom.classList.add("cm-tooltip-section"),this.dom.insertBefore(i.dom,t?t.dom.nextSibling:this.dom.firstChild),this.mounted&&i.mount&&i.mount(this.view),i}mount(e){for(let t of this.manager.tooltipViews)t.mount&&t.mount(e);this.mounted=!0}positioned(e){for(let t of this.manager.tooltipViews)t.positioned&&t.positioned(e)}update(e){this.manager.update(e)}destroy(){var e;for(let t of this.manager.tooltipViews)(e=t.destroy)===null||e===void 0||e.call(t)}passProp(e){let t;for(let i of this.manager.tooltipViews){let s=i[e];if(s!==void 0){if(t===void 0)t=s;else if(t!==s)return}}return t}get offset(){return this.passProp("offset")}get getCoords(){return this.passProp("getCoords")}get overlap(){return this.passProp("overlap")}get resize(){return this.passProp("resize")}},bg=yn.compute([Ms],n=>{let e=n.facet(Ms);return e.length===0?null:{pos:Math.min(...e.map(t=>t.pos)),end:Math.max(...e.map(t=>{var i;return(i=t.end)!==null&&i!==void 0?i:t.pos})),create:Es.create,above:e[0].above,arrow:e.some(t=>t.arrow)}}),al=class{static{c(this,"HoverPlugin")}constructor(e,t,i,s,r){this.view=e,this.source=t,this.field=i,this.setHover=s,this.hoverTime=r,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active.length)return;let e=Date.now()-this.lastMove.time;e<this.hoverTime?this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime-e):this.startHover()}startHover(){clearTimeout(this.restartTimeout);let{view:e,lastMove:t}=this,i=e.docView.tile.nearest(t.target);if(!i)return;let s,r=1;if(i.isWidget())s=i.posAtStart;else{if(s=e.posAtCoords(t),s==null)return;let l=e.coordsAtPos(s);if(!l||t.y<l.top||t.y>l.bottom||t.x<l.left-e.defaultCharacterWidth||t.x>l.right+e.defaultCharacterWidth)return;let a=e.bidiSpans(e.state.doc.lineAt(s)).find(f=>f.from<=s&&f.to>=s),h=a&&a.dir==B.RTL?-1:1;r=t.x<l.left?-h:h}let o=this.source(e,s,r);if(o?.then){let l=this.pending={pos:s};o.then(a=>{this.pending==l&&(this.pending=null,a&&!(Array.isArray(a)&&!a.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(a)?a:[a])}))},a=>fe(e.state,a,"hover tooltip"))}else o&&!(Array.isArray(o)&&!o.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(o)?o:[o])})}get tooltip(){let e=this.view.plugin(bl),t=e?e.manager.tooltips.findIndex(i=>i.create==Es.create):-1;return t>-1?e.manager.tooltipViews[t]:null}mousemove(e){var t,i;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let{active:s,tooltip:r}=this;if(s.length&&r&&!xg(r.dom,e)||this.pending){let{pos:o}=s[0]||this.pending,l=(i=(t=s[0])===null||t===void 0?void 0:t.end)!==null&&i!==void 0?i:o;(o==l?this.view.posAtCoords(this.lastMove)!=o:!wg(this.view,o,l,e.clientX,e.clientY))&&(this.view.dispatch({effects:this.setHover.of([])}),this.pending=null)}}mouseleave(e){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;let{active:t}=this;if(t.length){let{tooltip:i}=this;i&&i.dom.contains(e.relatedTarget)?this.watchTooltipLeave(i.dom):this.view.dispatch({effects:this.setHover.of([])})}}watchTooltipLeave(e){let t=c(i=>{e.removeEventListener("mouseleave",t),this.active.length&&!this.view.dom.contains(i.relatedTarget)&&this.view.dispatch({effects:this.setHover.of([])})},"watch");e.addEventListener("mouseleave",t)}destroy(){clearTimeout(this.hoverTimeout),clearTimeout(this.restartTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}},Os=4;function xg(n,e){let{left:t,right:i,top:s,bottom:r}=n.getBoundingClientRect(),o;if(o=n.querySelector(".cm-tooltip-arrow")){let l=o.getBoundingClientRect();s=Math.min(l.top,s),r=Math.max(l.bottom,r)}return e.clientX>=t-Os&&e.clientX<=i+Os&&e.clientY>=s-Os&&e.clientY<=r+Os}c(xg,"isInTooltip");function wg(n,e,t,i,s,r){let o=n.scrollDOM.getBoundingClientRect(),l=n.documentTop+n.documentPadding.top+n.contentHeight;if(o.left>i||o.right<i||o.top>s||Math.min(o.bottom,l)<s)return!1;let a=n.posAtCoords({x:i,y:s},!1);return a>=e&&a<=t}c(wg,"isOverRange");function Lf(n,e={}){let t=R.define(),i=ie.define({create(){return[]},update(s,r){if(s.length&&(e.hideOnChange&&(r.docChanged||r.selection)?s=[]:e.hideOn&&(s=s.filter(o=>!e.hideOn(r,o))),r.docChanged)){let o=[];for(let l of s){let a=r.changes.mapPos(l.pos,-1,oe.TrackDel);if(a!=null){let h=Object.assign(Object.create(null),l);h.pos=a,h.end!=null&&(h.end=r.changes.mapPos(h.end)),o.push(h)}}s=o}for(let o of r.effects)o.is(t)&&(s=o.value),o.is(kg)&&(s=[]);return s},provide:c(s=>Ms.from(s),"provide")});return{active:i,extension:[i,te.define(s=>new al(s,n,i,t,e.hoverTime||300)),bg]}}c(Lf,"hoverTooltip");function xl(n,e){let t=n.plugin(bl);if(!t)return null;let i=t.manager.tooltips.indexOf(e);return i<0?null:t.manager.tooltipViews[i]}c(xl,"getTooltip");var kg=R.define();var Rc=T.define({combine(n){let e,t;for(let i of n)e=e||i.topContainer,t=t||i.bottomContainer;return{topContainer:e,bottomContainer:t}}});function bn(n,e){let t=n.plugin(qf),i=t?t.specs.indexOf(e):-1;return i>-1?t.panels[i]:null}c(bn,"getPanel");var qf=te.fromClass(class{constructor(n){this.input=n.state.facet(Jt),this.specs=this.input.filter(t=>t),this.panels=this.specs.map(t=>t(n));let e=n.state.facet(Rc);this.top=new bi(n,!0,e.topContainer),this.bottom=new bi(n,!1,e.bottomContainer),this.top.sync(this.panels.filter(t=>t.top)),this.bottom.sync(this.panels.filter(t=>!t.top));for(let t of this.panels)t.dom.classList.add("cm-panel"),t.mount&&t.mount()}update(n){let e=n.state.facet(Rc);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new bi(n.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new bi(n.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let t=n.state.facet(Jt);if(t!=this.input){let i=t.filter(a=>a),s=[],r=[],o=[],l=[];for(let a of i){let h=this.specs.indexOf(a),f;h<0?(f=a(n.view),l.push(f)):(f=this.panels[h],f.update&&f.update(n)),s.push(f),(f.top?r:o).push(f)}this.specs=i,this.panels=s,this.top.sync(r),this.bottom.sync(o);for(let a of l)a.dom.classList.add("cm-panel"),a.mount&&a.mount()}else for(let i of this.panels)i.update&&i.update(n)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:c(n=>P.scrollMargins.of(e=>{let t=e.plugin(n);return t&&{top:t.top.scrollMargin(),bottom:t.bottom.scrollMargin()}}),"provide")}),bi=class{static{c(this,"PanelGroup")}constructor(e,t,i){this.view=e,this.top=t,this.container=i,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let t of this.panels)t.destroy&&e.indexOf(t)<0&&t.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let t=this.container||this.view.dom;t.insertBefore(this.dom,this.top?t.firstChild:null)}let e=this.dom.firstChild;for(let t of this.panels)if(t.dom.parentNode==this.dom){for(;e!=t.dom;)e=Mc(e);e=e.nextSibling}else this.dom.insertBefore(t.dom,e);for(;e;)e=Mc(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}};function Mc(n){let e=n.nextSibling;return n.remove(),e}c(Mc,"rm");var Jt=T.define({enables:qf});function Wf(n,e){let t,i=new Promise(o=>t=o),s=c(o=>vg(o,e,t),"panelCtor");n.state.field(po,!1)?n.dispatch({effects:Bf.of(s)}):n.dispatch({effects:R.appendConfig.of(po.init(()=>[s]))});let r=If.of(s);return{close:r,result:i.then(o=>((n.win.queueMicrotask||(a=>n.win.setTimeout(a,10)))(()=>{n.state.field(po).indexOf(s)>-1&&n.dispatch({effects:r})}),o))}}c(Wf,"showDialog");var po=ie.define({create(){return[]},update(n,e){for(let t of e.effects)t.is(Bf)?n=[t.value].concat(n):t.is(If)&&(n=n.filter(i=>i!=t.value));return n},provide:c(n=>Jt.computeN([n],e=>e.field(n)),"provide")}),Bf=R.define(),If=R.define();function vg(n,e,t){let i=e.content?e.content(n,()=>o(null)):null;if(!i){if(i=q("form"),e.input){let l=q("input",e.input);/^(text|password|number|email|tel|url)$/.test(l.type)&&l.classList.add("cm-textfield"),l.name||(l.name="input"),i.appendChild(q("label",(e.label||"")+": ",l))}else i.appendChild(document.createTextNode(e.label||""));i.appendChild(document.createTextNode(" ")),i.appendChild(q("button",{class:"cm-button",type:"submit"},e.submitLabel||"OK"))}let s=i.nodeName=="FORM"?[i]:i.querySelectorAll("form");for(let l=0;l<s.length;l++){let a=s[l];a.addEventListener("keydown",h=>{h.keyCode==27?(h.preventDefault(),o(null)):h.keyCode==13&&(h.preventDefault(),o(a))}),a.addEventListener("submit",h=>{h.preventDefault(),o(a)})}let r=q("div",i,q("button",{onclick:c(()=>o(null),"onclick"),"aria-label":n.state.phrase("close"),class:"cm-dialog-close",type:"button"},["\xD7"]));e.class&&(r.className=e.class),r.classList.add("cm-dialog");function o(l){r.contains(r.ownerDocument.activeElement)&&n.focus(),t(l)}return c(o,"done"),{dom:r,top:e.top,mount:c(()=>{if(e.focus){let l;typeof e.focus=="string"?l=i.querySelector(e.focus):l=i.querySelector("input")||i.querySelector("button"),l&&"select"in l?l.select():l&&"focus"in l&&l.focus()}},"mount")}}c(vg,"createDialog");var Re=class extends Le{static{c(this,"GutterMarker")}compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}};Re.prototype.elementClass="";Re.prototype.toDOM=void 0;Re.prototype.mapMode=oe.TrackBefore;Re.prototype.startSide=Re.prototype.endSide=-1;Re.prototype.point=!0;var Qs=T.define(),Pg=T.define(),$g={class:"",renderEmptyElements:!1,elementStyle:"",markers:c(()=>D.empty,"markers"),lineMarker:c(()=>null,"lineMarker"),widgetMarker:c(()=>null,"widgetMarker"),lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:"before"},dn=T.define();function wl(n){return[jf(),dn.of({...$g,...n})]}c(wl,"gutter");var hl=T.define({combine:c(n=>n.some(e=>e),"combine")});function jf(n){let e=[Tg];return n&&n.fixed===!1&&e.push(hl.of(!0)),e}c(jf,"gutters");var Tg=te.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(dn).map(e=>new zs(n,e)),this.fixed=!n.state.facet(hl);for(let e of this.gutters)e.config.side=="after"?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let e=this.prevViewport,t=n.view.viewport,i=Math.min(e.to,t.to)-Math.max(e.from,t.from);this.syncGutters(i<(t.to-t.from)*.8)}if(n.geometryChanged){let e=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=e,this.domAfter&&(this.domAfter.style.minHeight=e)}this.view.state.facet(hl)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let e=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let t=D.iter(this.view.state.facet(Qs),this.view.viewport.from),i=[],s=this.gutters.map(r=>new fl(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==ue.Text&&o){cl(t,i,l.from);for(let a of s)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of s)a.widget(this.view,l)}else if(r.type==ue.Text){cl(t,i,r.from);for(let o of s)o.line(this.view,r,i)}else if(r.widget)for(let o of s)o.widget(this.view,r);for(let r of s)r.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,e),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let e=n.startState.facet(dn),t=n.state.facet(dn),i=n.docChanged||n.heightChanged||n.viewportChanged||!D.eq(n.startState.facet(Qs),n.state.facet(Qs),n.view.viewport.from,n.view.viewport.to);if(e==t)for(let s of this.gutters)s.update(n)&&(i=!0);else{i=!0;let s=[];for(let r of t){let o=e.indexOf(r);o<0?s.push(new zs(this.view,r)):(this.gutters[o].update(n),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=s}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:c(n=>P.scrollMargins.of(e=>{let t=e.plugin(n);if(!t||t.gutters.length==0||!t.fixed)return null;let i=t.dom.offsetWidth*e.scaleX,s=t.domAfter?t.domAfter.offsetWidth*e.scaleX:0;return e.textDirection==B.LTR?{left:i,right:s}:{right:i,left:s}}),"provide")});function Ec(n){return Array.isArray(n)?n:[n]}c(Ec,"asArray");function cl(n,e,t){for(;n.value&&n.from<=t;)n.from==t&&e.push(n.value),n.next()}c(cl,"advanceCursor");var fl=class{static{c(this,"UpdateContext")}constructor(e,t,i){this.gutter=e,this.height=i,this.i=0,this.cursor=D.iter(e.markers,t.from)}addElement(e,t,i){let{gutter:s}=this,r=(t.top-this.height)/e.scaleY,o=t.height/e.scaleY;if(this.i==s.elements.length){let l=new Ys(e,o,r,i);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(e,o,r,i);this.height=t.bottom,this.i++}line(e,t,i){let s=[];cl(this.cursor,s,t.from),i.length&&(s=s.concat(i));let r=this.gutter.config.lineMarker(e,t,s);r&&s.unshift(r);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(e,t,s)}widget(e,t){let i=this.gutter.config.widgetMarker(e,t.widget,t),s=i?[i]:null;for(let r of e.state.facet(Pg)){let o=r(e,t.widget,t);o&&(s||(s=[])).push(o)}s&&this.addElement(e,t,s)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let t=e.elements.pop();e.dom.removeChild(t.dom),t.destroy()}}},zs=class{static{c(this,"SingleGutterView")}constructor(e,t){this.view=e,this.config=t,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in t.domEventHandlers)this.dom.addEventListener(i,s=>{let r=s.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let a=r.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=s.clientY;let l=e.lineBlockAtHeight(o-e.documentTop);t.domEventHandlers[i](e,l,s)&&s.preventDefault()});this.markers=Ec(t.markers(e)),t.initialSpacer&&(this.spacer=new Ys(e,0,0,[t.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let t=this.markers;if(this.markers=Ec(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],e);s!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[s])}let i=e.view.viewport;return!D.eq(this.markers,t,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}},Ys=class{static{c(this,"GutterElement")}constructor(e,t,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,t,i,s)}update(e,t,i,s){this.height!=t&&(this.height=t,this.dom.style.height=t+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),Cg(this.markers,s)||this.setMarkers(e,s)}setMarkers(e,t){let i="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=r<t.length?t[r++]:null,h=!1;if(a){let f=a.elementClass;f&&(i+=" "+f);for(let u=o;u<this.markers.length;u++)if(this.markers[u].compare(a)){l=u,h=!0;break}}else l=this.markers.length;for(;o<l;){let f=this.markers[o++];if(f.toDOM){f.destroy(s);let u=s.nextSibling;s.remove(),s=u}}if(!a)break;a.toDOM&&(h?s=s.nextSibling:this.dom.insertBefore(a.toDOM(e),s)),h&&o++}this.dom.className=i,this.markers=t}destroy(){this.setMarkers(null,[])}};function Cg(n,e){if(n.length!=e.length)return!1;for(let t=0;t<n.length;t++)if(!n[t].compare(e[t]))return!1;return!0}c(Cg,"sameMarkers");var Zg=T.define(),Ag=T.define(),xi=T.define({combine(n){return pe(n,{formatNumber:String,domEventHandlers:{}},{domEventHandlers(e,t){let i=Object.assign({},e);for(let s in t){let r=i[s],o=t[s];i[s]=r?(l,a,h)=>r(l,a,h)||o(l,a,h):o}return i}})}}),On=class extends Re{static{c(this,"NumberMarker")}constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}};function mo(n,e){return n.state.facet(xi).formatNumber(e,n.state)}c(mo,"formatNumber");var Xg=dn.compute([xi],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(Zg)},lineMarker(e,t,i){return i.some(s=>s.toDOM)?null:new On(mo(e,e.state.doc.lineAt(t.from).number))},widgetMarker:c((e,t,i)=>{for(let s of e.state.facet(Ag)){let r=s(e,t,i);if(r)return r}return null},"widgetMarker"),lineMarkerChange:c(e=>e.startState.facet(xi)!=e.state.facet(xi),"lineMarkerChange"),initialSpacer(e){return new On(mo(e,zc(e.state.doc.lines)))},updateSpacer(e,t){let i=mo(t.view,zc(t.view.state.doc.lines));return i==e.number?e:new On(i)},domEventHandlers:n.facet(xi).domEventHandlers,side:"before"}));function Nf(n={}){return[xi.of(n),jf(),Xg]}c(Nf,"lineNumbers");function zc(n){let e=9;for(;e<n;)e=e*10+9;return e}c(zc,"maxLineNumber");var Rg=new class extends Re{constructor(){super(...arguments),this.elementClass="cm-activeLineGutter"}},Mg=Qs.compute(["selection"],n=>{let e=[],t=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.head).from;s>t&&(t=s,e.push(Rg.range(s)))}return D.of(e)});function Gf(){return Mg}c(Gf,"highlightActiveLineGutter");var Eg=0,ve=class{static{c(this,"Range")}constructor(e,t){this.from=e,this.to=t}},E=class{static{c(this,"NodeProp")}constructor(e={}){this.id=Eg++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=e.combine||null}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=de.match(e)),t=>{let i=e(t);return i===void 0?null:[this,i]}}};E.closedBy=new E({deserialize:c(n=>n.split(" "),"deserialize")});E.openedBy=new E({deserialize:c(n=>n.split(" "),"deserialize")});E.group=new E({deserialize:c(n=>n.split(" "),"deserialize")});E.isolate=new E({deserialize:c(n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"},"deserialize")});E.contextHash=new E({perNode:!0});E.lookAhead=new E({perNode:!0});E.mounted=new E({perNode:!0});var $t=class{static{c(this,"MountedTree")}constructor(e,t,i,s=!1){this.tree=e,this.overlay=t,this.parser=i,this.bracketed=s}static get(e){return e&&e.props&&e.props[E.mounted.id]}},zg=Object.create(null),de=class n{static{c(this,"NodeType")}constructor(e,t,i,s=0){this.name=e,this.props=t,this.id=i,this.flags=s}static define(e){let t=e.props&&e.props.length?Object.create(null):zg,i=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),s=new n(e.name||"",t,e.id,i);if(e.props){for(let r of e.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");t[r[0].id]=r[1]}}return s}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let t=this.prop(E.group);return t?t.indexOf(e)>-1:!1}return this.id==e}static match(e){let t=Object.create(null);for(let i in e)for(let s of i.split(" "))t[s]=e[i];return i=>{for(let s=i.prop(E.group),r=-1;r<(s?s.length:0);r++){let o=t[r<0?i.name:s[r]];if(o)return o}}}};de.none=new de("",Object.create(null),0,8);var xn=class n{static{c(this,"NodeSet")}constructor(e){this.types=e;for(let t=0;t<e.length;t++)if(e[t].id!=t)throw new RangeError("Node type ids should correspond to array positions when creating a node set")}extend(...e){let t=[];for(let i of this.types){let s=null;for(let r of e){let o=r(i);if(o){s||(s=Object.assign({},i.props));let l=o[1],a=o[0];a.combine&&a.id in s&&(l=a.combine(s[a.id],l)),s[a.id]=l}}t.push(s?new de(i.name,s,i.id,i.flags):i)}return new n(t)}},Ls=new WeakMap,Uf=new WeakMap,L;(function(n){n[n.ExcludeBuffers=1]="ExcludeBuffers",n[n.IncludeAnonymous=2]="IncludeAnonymous",n[n.IgnoreMounts=4]="IgnoreMounts",n[n.IgnoreOverlays=8]="IgnoreOverlays",n[n.EnterBracketed=16]="EnterBracketed"})(L||(L={}));var J=class n{static{c(this,"Tree")}constructor(e,t,i,s,r){if(this.type=e,this.children=t,this.positions=i,this.length=s,this.props=null,r&&r.length){this.props=Object.create(null);for(let[o,l]of r)this.props[typeof o=="number"?o:o.id]=l}}toString(){let e=$t.get(this);if(e&&!e.overlay)return e.tree.toString();let t="";for(let i of this.children){let s=i.toString();s&&(t&&(t+=","),t+=s)}return this.type.name?(/\W/.test(this.type.name)&&!this.type.isError?JSON.stringify(this.type.name):this.type.name)+(t.length?"("+t+")":""):t}cursor(e=0){return new Xi(this.topNode,e)}cursorAt(e,t=0,i=0){let s=Ls.get(this)||this.topNode,r=new Xi(s);return r.moveTo(e,t),Ls.set(this,r._tree),r}get topNode(){return new Pe(this,0,0,null)}resolve(e,t=0){let i=wn(Ls.get(this)||this.topNode,e,t,!1);return Ls.set(this,i),i}resolveInner(e,t=0){let i=wn(Uf.get(this)||this.topNode,e,t,!0);return Uf.set(this,i),i}resolveStack(e,t=0){return Yg(this,e,t)}iterate(e){let{enter:t,leave:i,from:s=0,to:r=this.length}=e,o=e.mode||0,l=(o&L.IncludeAnonymous)>0;for(let a=this.cursor(o|L.IncludeAnonymous);;){let h=!1;if(a.from<=r&&a.to>=s&&(!l&&a.type.isAnonymous||t(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length<=8?this:Ml(de.none,this.children,this.positions,0,this.children.length,0,this.length,(t,i,s)=>new n(this.type,t,i,s,this.propValues),e.makeTree||((t,i,s)=>new n(de.none,t,i,s)))}static build(e){return Vg(e)}};J.empty=new J(de.none,[],[],0);var kl=class n{static{c(this,"FlatBufferCursor")}constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new n(this.buffer,this.index)}},Tt=class n{static{c(this,"TreeBuffer")}constructor(e,t,i){this.buffer=e,this.length=t,this.set=i}get type(){return de.none}toString(){let e=[];for(let t=0;t<this.buffer.length;)e.push(this.childString(t)),t=this.buffer[t+3];return e.join(",")}childString(e){let t=this.buffer[e],i=this.buffer[e+3],s=this.set.types[t],r=s.name;if(/\W/.test(r)&&!s.isError&&(r=JSON.stringify(r)),e+=4,i==e)return r;let o=[];for(;e<i;)o.push(this.childString(e)),e=this.buffer[e+3];return r+"("+o.join(",")+")"}findChild(e,t,i,s,r){let{buffer:o}=this,l=-1;for(let a=e;a!=t&&!(iu(r,s,o[a+1],o[a+2])&&(l=a,i>0));a=o[a+3]);return l}slice(e,t,i){let s=this.buffer,r=new Uint16Array(t-e),o=0;for(let l=e,a=0;l<t;){r[a++]=s[l++],r[a++]=s[l++]-i;let h=r[a++]=s[l++]-i;r[a++]=s[l++]-e,o=Math.max(o,h)}return new n(r,o,this.set)}};function iu(n,e,t,i){switch(n){case-2:return t<e;case-1:return i>=e&&t<e;case 0:return t<e&&i>e;case 1:return t<=e&&i>e;case 2:return i>e;case 4:return!0}}c(iu,"checkSide");function wn(n,e,t,i){for(var s;n.from==n.to||(t<1?n.from>=e:n.from>e)||(t>-1?n.to<=e:n.to<e);){let o=!i&&n instanceof Pe&&n.index<0?null:n.parent;if(!o)return n;n=o}let r=i?0:L.IgnoreOverlays;if(i)for(let o=n,l=o.parent;l;o=l,l=o.parent)o instanceof Pe&&o.index<0&&((s=l.enter(e,t,r))===null||s===void 0?void 0:s.from)!=o.from&&(n=l);for(;;){let o=n.enter(e,t,r);if(!o)return n;n=o}}c(wn,"resolveNode");var Ws=class{static{c(this,"BaseNode")}cursor(e=0){return new Xi(this,e)}getChild(e,t=null,i=null){let s=Ff(this,e,t,i);return s.length?s[0]:null}getChildren(e,t=null,i=null){return Ff(this,e,t,i)}resolve(e,t=0){return wn(this,e,t,!1)}resolveInner(e,t=0){return wn(this,e,t,!0)}matchContext(e){return vl(this.parent,e)}enterUnfinishedNodesBefore(e){let t=this.childBefore(e),i=this;for(;t;){let s=t.lastChild;if(!s||s.to!=t.to)break;s.type.isError&&s.from==s.to?(i=t,t=s.prevSibling):t=s}return i}get node(){return this}get next(){return this.parent}},Pe=class n extends Ws{static{c(this,"TreeNode")}constructor(e,t,i,s){super(),this._tree=e,this.from=t,this.index=i,this._parent=s}get type(){return this._tree.type}get name(){return this._tree.type.name}get to(){return this.from+this._tree.length}nextChild(e,t,i,s,r=0){for(let o=this;;){for(let{children:l,positions:a}=o._tree,h=t>0?l.length:-1;e!=h;e+=t){let f=l[e],u=a[e]+o.from,d;if(!(!(r&L.EnterBracketed&&f instanceof J&&(d=$t.get(f))&&!d.overlay&&d.bracketed&&i>=u&&i<=u+f.length)&&!iu(s,i,u,u+f.length))){if(f instanceof Tt){if(r&L.ExcludeBuffers)continue;let O=f.findChild(0,f.buffer.length,t,i-u,s);if(O>-1)return new ei(new Pl(o,f,e,u),null,O)}else if(r&L.IncludeAnonymous||!f.type.isAnonymous||Rl(f)){let O;if(!(r&L.IgnoreMounts)&&(O=$t.get(f))&&!O.overlay)return new n(O.tree,u,e,o);let p=new n(f,u,e,o);return r&L.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(t<0?f.children.length-1:0,t,i,s,r)}}}if(r&L.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?e=o.index+t:e=t<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}prop(e){return this._tree.prop(e)}enter(e,t,i=0){let s;if(!(i&L.IgnoreOverlays)&&(s=$t.get(this._tree))&&s.overlay){let r=e-this.from,o=i&L.EnterBracketed&&s.bracketed;for(let{from:l,to:a}of s.overlay)if((t>0||o?l<=r:l<r)&&(t<0||o?a>=r:a>r))return new n(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,i)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function Ff(n,e,t,i){let s=n.cursor(),r=[];if(!s.firstChild())return r;if(t!=null){for(let o=!1;!o;)if(o=s.type.is(t),!s.nextSibling())return r}for(;;){if(i!=null&&s.type.is(i))return r;if(s.type.is(e)&&r.push(s.node),!s.nextSibling())return i==null?r:[]}}c(Ff,"getChildren");function vl(n,e,t=e.length-1){for(let i=n;t>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(e[t]&&e[t]!=i.name)return!1;t--}}return!0}c(vl,"matchNodeContext");var Pl=class{static{c(this,"BufferContext")}constructor(e,t,i,s){this.parent=e,this.buffer=t,this.index=i,this.start=s}},ei=class n extends Ws{static{c(this,"BufferNode")}get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,i){super(),this.context=e,this._parent=t,this.index=i,this.type=e.buffer.set.types[e.buffer.buffer[i]]}child(e,t,i){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e,t-this.context.start,i);return r<0?null:new n(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}prop(e){return this.type.prop(e)}enter(e,t,i=0){if(i&L.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],t>0?1:-1,e-this.context.start,t);return r<0?null:new n(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,t=e.buffer[this.index+3];return t<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new n(this.context,this._parent,t):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,t=this._parent?this._parent.index+4:0;return this.index==t?this.externalSibling(-1):new n(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],t=[],{buffer:i}=this.context,s=this.index+4,r=i.buffer[this.index+3];if(r>s){let o=i.buffer[this.index+1];e.push(i.slice(s,r,o)),t.push(0)}return new J(this.type,e,t,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function nu(n){if(!n.length)return null;let e=0,t=n[0];for(let r=1;r<n.length;r++){let o=n[r];(o.from>t.from||o.to<t.to)&&(t=o,e=r)}let i=t instanceof Pe&&t.index<0?null:t.parent,s=n.slice();return i?s[e]=i:s.splice(e,1),new $l(s,t)}c(nu,"iterStack");var $l=class{static{c(this,"StackIterator")}constructor(e,t){this.heads=e,this.node=t}get next(){return nu(this.heads)}};function Yg(n,e,t){let i=n.resolveInner(e,t),s=null;for(let r=i instanceof Pe?i:i.context.parent;r;r=r.parent)if(r.index<0){let o=r.parent;(s||(s=[i])).push(o.resolve(e,t)),r=o}else{let o=$t.get(r.tree);if(o&&o.overlay&&o.overlay[0].from<=e&&o.overlay[o.overlay.length-1].to>=e){let l=new Pe(o.tree,o.overlay[0].from+r.from,-1,r);(s||(s=[i])).push(wn(l,e,t,!1))}}return s?nu(s):i}c(Yg,"stackIterator");var Xi=class{static{c(this,"TreeCursor")}get name(){return this.type.name}constructor(e,t=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=t&~L.EnterBracketed,e instanceof Pe)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let i=e._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,t){this.index=e;let{start:i,buffer:s}=this.buffer;return this.type=t||s.set.types[s.buffer[e]],this.from=i+s.buffer[e+1],this.to=i+s.buffer[e+2],!0}yield(e){return e?e instanceof Pe?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,i){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,i,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],e,t-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,i=this.mode){return this.buffer?i&L.ExcludeBuffers?!1:this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&L.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&L.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:t}=this.buffer,i=this.stack.length-1;if(e<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(t.findChild(s,this.index,-1,0,4))}else{let s=t.buffer[this.index+3];if(s<(i<0?t.buffer.length:t.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let t,i,{buffer:s}=this;if(s){if(e>0){if(this.index<s.buffer.buffer.length)return!1}else for(let r=0;r<this.index;r++)if(s.buffer.buffer[r+3]<this.index)return!1;({index:t,parent:i}=s)}else({index:t,_parent:i}=this._tree);for(;i;{index:t,_parent:i}=i)if(t>-1)for(let r=t+e,o=e<0?-1:i._tree.children.length;r!=o;r+=e){let l=i._tree.children[r];if(this.mode&L.IncludeAnonymous||l instanceof Tt||!l.type.isAnonymous||Rl(l))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(t>-1?this.to<=e:this.to<e))&&this.parent(););for(;this.enterChild(1,e,t););return this}get node(){if(!this.buffer)return this._tree;let e=this.bufferNode,t=null,i=0;if(e&&e.context==this.buffer)e:for(let s=this.index,r=this.stack.length;r>=0;){for(let o=e;o;o=o._parent)if(o.index==s){if(s==this.index)return o;t=o,i=r+1;break e}s=this.stack[--r]}for(let s=i;s<this.stack.length;s++)t=new ei(this.buffer,t,this.stack[s]);return this.bufferNode=new ei(this.buffer,t,this.index)}get tree(){return this.buffer?null:this._tree._tree}iterate(e,t){for(let i=0;;){let s=!1;if(this.type.isAnonymous||e(this)!==!1){if(this.firstChild()){i++;continue}this.type.isAnonymous||(s=!0)}for(;;){if(s&&t&&t(this),s=this.type.isAnonymous,!i)return;if(this.nextSibling())break;this.parent(),i--,s=!0}}}matchContext(e){if(!this.buffer)return vl(this.node.parent,e);let{buffer:t}=this.buffer,{types:i}=t.set;for(let s=e.length-1,r=this.stack.length-1;s>=0;r--){if(r<0)return vl(this._tree,e,s);let o=i[t.buffer[this.stack[r]]];if(!o.isAnonymous){if(e[s]&&e[s]!=o.name)return!1;s--}}return!0}};function Rl(n){return n.children.some(e=>e instanceof Tt||!e.type.isAnonymous||Rl(e))}c(Rl,"hasChild");function Vg(n){var e;let{buffer:t,nodeSet:i,maxBufferLength:s=1024,reused:r=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(t)?new kl(t,t.length):t,a=i.types,h=0,f=0;function u(w,k,v,z,_,N){let{id:Y,start:M,end:I,size:W}=l,H=f,ge=h;if(W<0)if(l.next(),W==-1){let ft=r[Y];v.push(ft),z.push(M-w);return}else if(W==-3){h=Y;return}else if(W==-4){f=Y;return}else throw new RangeError(`Unrecognized record size: ${W}`);let Te=a[Y],st,he,_e=M-w;if(I-M<=s&&(he=g(l.pos-k,_))){let ft=new Uint16Array(he.size-he.skip),De=l.pos-he.size,rt=ft.length;for(;l.pos>De;)rt=Q(he.start,ft,rt);st=new Tt(ft,I-he.start,i),_e=he.start-w}else{let ft=l.pos-W;l.next();let De=[],rt=[],qt=Y>=o?Y:-1,fi=0,jn=I;for(;l.pos>ft;)qt>=0&&l.id==qt&&l.size>=0?(l.end<=jn-s&&(p(De,rt,M,fi,l.end,jn,qt,H,ge),fi=De.length,jn=l.end),l.next()):N>2500?d(M,ft,De,rt):u(M,ft,De,rt,qt,N+1);if(qt>=0&&fi>0&&fi<De.length&&p(De,rt,M,fi,M,jn,qt,H,ge),De.reverse(),rt.reverse(),qt>-1&&fi>0){let Qh=O(Te,ge);st=Ml(Te,De,rt,0,De.length,0,I-M,Qh,Qh)}else st=m(Te,De,rt,I-M,H-I,ge)}v.push(st),z.push(_e)}c(u,"takeNode");function d(w,k,v,z){let _=[],N=0,Y=-1;for(;l.pos>k;){let{id:M,start:I,end:W,size:H}=l;if(H>4)l.next();else{if(Y>-1&&I<Y)break;Y<0&&(Y=W-s),_.push(M,I,W),N++,l.next()}}if(N){let M=new Uint16Array(N*4),I=_[_.length-2];for(let W=_.length-3,H=0;W>=0;W-=3)M[H++]=_[W],M[H++]=_[W+1]-I,M[H++]=_[W+2]-I,M[H++]=H;v.push(new Tt(M,_[2]-I,i)),z.push(I-w)}}c(d,"takeFlatNode");function O(w,k){return(v,z,_)=>{let N=0,Y=v.length-1,M,I;if(Y>=0&&(M=v[Y])instanceof J){if(!Y&&M.type==w&&M.length==_)return M;(I=M.prop(E.lookAhead))&&(N=z[Y]+M.length+I)}return m(w,v,z,_,N,k)}}c(O,"makeBalanced");function p(w,k,v,z,_,N,Y,M,I){let W=[],H=[];for(;w.length>z;)W.push(w.pop()),H.push(k.pop()+v-_);w.push(m(i.types[Y],W,H,N-_,M-N,I)),k.push(_-v)}c(p,"makeRepeatLeaf");function m(w,k,v,z,_,N,Y){if(N){let M=[E.contextHash,N];Y=Y?[M].concat(Y):[M]}if(_>25){let M=[E.lookAhead,_];Y=Y?[M].concat(Y):[M]}return new J(w,k,v,z,Y)}c(m,"makeTree");function g(w,k){let v=l.fork(),z=0,_=0,N=0,Y=v.end-s,M={size:0,start:0,skip:0};e:for(let I=v.pos-w;v.pos>I;){let W=v.size;if(v.id==k&&W>=0){M.size=z,M.start=_,M.skip=N,N+=4,z+=4,v.next();continue}let H=v.pos-W;if(W<0||H<I||v.start<Y)break;let ge=v.id>=o?4:0,Te=v.start;for(v.next();v.pos>H;){if(v.size<0)if(v.size==-3||v.size==-4)ge+=4;else break e;else v.id>=o&&(ge+=4);v.next()}_=Te,z+=W,N+=ge}return(k<0||z==w)&&(M.size=z,M.start=_,M.skip=N),M.size>4?M:void 0}c(g,"findBufferSize");function Q(w,k,v){let{id:z,start:_,end:N,size:Y}=l;if(l.next(),Y>=0&&z<o){let M=v;if(Y>4){let I=l.pos-(Y-4);for(;l.pos>I;)v=Q(w,k,v)}k[--v]=M,k[--v]=N-w,k[--v]=_-w,k[--v]=z}else Y==-3?h=z:Y==-4&&(f=z);return v}c(Q,"copyToBuffer");let b=[],x=[];for(;l.pos>0;)u(n.start||0,n.bufferStart||0,b,x,-1,0);let Z=(e=n.length)!==null&&e!==void 0?e:b.length?x[0]+b[0].length:0;return new J(a[n.topID],b.reverse(),x.reverse(),Z)}c(Vg,"buildTree");var Hf=new WeakMap;function qs(n,e){if(!n.isAnonymous||e instanceof Tt||e.type!=n)return 1;let t=Hf.get(e);if(t==null){t=1;for(let i of e.children){if(i.type!=n||!(i instanceof J)){t=1;break}t+=qs(n,i)}Hf.set(e,t)}return t}c(qs,"nodeSize");function Ml(n,e,t,i,s,r,o,l,a){let h=0;for(let p=i;p<s;p++)h+=qs(n,e[p]);let f=Math.ceil(h*1.5/8),u=[],d=[];function O(p,m,g,Q,b){for(let x=g;x<Q;){let Z=x,w=m[x],k=qs(n,p[x]);for(x++;x<Q;x++){let v=qs(n,p[x]);if(k+v>=f)break;k+=v}if(x==Z+1){if(k>f){let v=p[Z];O(v.children,v.positions,0,v.children.length,m[Z]+b);continue}u.push(p[Z])}else{let v=m[x-1]+p[x-1].length-w;u.push(Ml(n,p,m,Z,x,w,v,null,a))}d.push(w+b-r)}}return c(O,"divide"),O(e,t,i,s,0),(l||a)(u,d,o)}c(Ml,"balanceRange");var Ri=class{static{c(this,"NodeWeakMap")}constructor(){this.map=new WeakMap}setBuffer(e,t,i){let s=this.map.get(e);s||this.map.set(e,s=new Map),s.set(t,i)}getBuffer(e,t){let i=this.map.get(e);return i&&i.get(t)}set(e,t){e instanceof ei?this.setBuffer(e.context.buffer,e.index,t):e instanceof Pe&&this.map.set(e.tree,t)}get(e){return e instanceof ei?this.getBuffer(e.context.buffer,e.index):e instanceof Pe?this.map.get(e.tree):void 0}cursorSet(e,t){e.buffer?this.setBuffer(e.buffer.buffer,e.index,t):this.map.set(e.tree,t)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}},St=class n{static{c(this,"TreeFragment")}constructor(e,t,i,s,r=!1,o=!1){this.from=e,this.to=t,this.tree=i,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,t=[],i=!1){let s=[new n(0,e.length,e,0,!1,i)];for(let r of t)r.to>e.length&&s.push(r);return s}static applyChanges(e,t,i=128){if(!t.length)return e;let s=[],r=1,o=e.length?e[0]:null;for(let l=0,a=0,h=0;;l++){let f=l<t.length?t[l]:null,u=f?f.fromA:1e9;if(u-a>=i)for(;o&&o.from<u;){let d=o;if(a>=d.from||u<=d.to||h){let O=Math.max(d.from,a)-h,p=Math.min(d.to,u)-h;d=O>=p?null:new n(O,p,d.tree,d.offset+h,l>0,!!f)}if(d&&s.push(d),o.to>u)break;o=r<e.length?e[r++]:null}if(!f)break;a=f.toA,h=f.toA-f.toB}return s}},Mi=class{static{c(this,"Parser")}startParse(e,t,i){return typeof e=="string"&&(e=new Tl(e)),i=i?i.length?i.map(s=>new ve(s.from,s.to)):[new ve(0,0)]:[new ve(0,e.length)],this.createParse(e,t||[],i)}parse(e,t,i){let s=this.startParse(e,t,i);for(;;){let r=s.advance();if(r)return r}}},Tl=class{static{c(this,"StringInput")}constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}};function su(n){return(e,t,i,s)=>new Al(e,n,t,i,s)}c(su,"parseMixed");var Bs=class{static{c(this,"InnerParse")}constructor(e,t,i,s,r,o){this.parser=e,this.parse=t,this.overlay=i,this.bracketed=s,this.target=r,this.from=o}};function Kf(n){if(!n.length||n.some(e=>e.from>=e.to))throw new RangeError("Invalid inner parse ranges given: "+JSON.stringify(n))}c(Kf,"checkRanges");var Cl=class{static{c(this,"ActiveOverlay")}constructor(e,t,i,s,r,o,l,a){this.parser=e,this.predicate=t,this.mounts=i,this.index=s,this.start=r,this.bracketed=o,this.target=l,this.prev=a,this.depth=0,this.ranges=[]}},Zl=new E({perNode:!0}),Al=class{static{c(this,"MixedParse")}constructor(e,t,i,s,r){this.nest=t,this.input=i,this.fragments=s,this.ranges=r,this.inner=[],this.innerDone=0,this.baseTree=null,this.stoppedAt=null,this.baseParse=e}advance(){if(this.baseParse){let i=this.baseParse.advance();if(!i)return null;if(this.baseParse=null,this.baseTree=i,this.startInner(),this.stoppedAt!=null)for(let s of this.inner)s.parse.stopAt(this.stoppedAt)}if(this.innerDone==this.inner.length){let i=this.baseTree;return this.stoppedAt!=null&&(i=new J(i.type,i.children,i.positions,i.length,i.propValues.concat([[Zl,this.stoppedAt]]))),i}let e=this.inner[this.innerDone],t=e.parse.advance();if(t){this.innerDone++;let i=Object.assign(Object.create(null),e.target.props);i[E.mounted.id]=new $t(t,e.overlay,e.parser,e.bracketed),e.target.props=i}return null}get parsedPos(){if(this.baseParse)return 0;let e=this.input.length;for(let t=this.innerDone;t<this.inner.length;t++)this.inner[t].from<e&&(e=Math.min(e,this.inner[t].parse.parsedPos));return e}stopAt(e){if(this.stoppedAt=e,this.baseParse)this.baseParse.stopAt(e);else for(let t=this.innerDone;t<this.inner.length;t++)this.inner[t].parse.stopAt(e)}startInner(){let e=new Xl(this.fragments),t=null,i=null,s=new Xi(new Pe(this.baseTree,this.ranges[0].from,0,null),L.IncludeAnonymous|L.IgnoreMounts);e:for(let r,o;;){let l=!0,a;if(this.stoppedAt!=null&&s.from>=this.stoppedAt)l=!1;else if(e.hasNode(s)){if(t){let h=t.mounts.find(f=>f.frag.from<=s.from&&f.frag.to>=s.to&&f.mount.overlay);if(h)for(let f of h.mount.overlay){let u=f.from+h.pos,d=f.to+h.pos;u>=s.from&&d<=s.to&&!t.ranges.some(O=>O.from<d&&O.to>u)&&t.ranges.push({from:u,to:d})}}l=!1}else if(i&&(o=_g(i.ranges,s.from,s.to)))l=o!=2;else if(!s.type.isAnonymous&&(r=this.nest(s,this.input))&&(s.from<s.to||!r.overlay)){s.tree||(Dg(s),t&&t.depth++,i&&i.depth++);let h=e.findMounts(s.from,r.parser);if(typeof r.overlay=="function")t=new Cl(r.parser,r.overlay,h,this.inner.length,s.from,!!r.bracketed,s.tree,t);else{let f=eu(this.ranges,r.overlay||(s.from<s.to?[new ve(s.from,s.to)]:[]));f.length&&Kf(f),(f.length||!r.overlay)&&this.inner.push(new Bs(r.parser,f.length?r.parser.startParse(this.input,tu(h,f),f):r.parser.startParse(""),r.overlay?r.overlay.map(u=>new ve(u.from-s.from,u.to-s.from)):null,!!r.bracketed,s.tree,f.length?f[0].from:s.from)),r.overlay?f.length&&(i={ranges:f,depth:0,prev:i}):l=!1}}else if(t&&(a=t.predicate(s))&&(a===!0&&(a=new ve(s.from,s.to)),a.from<a.to)){let h=t.ranges.length-1;h>=0&&t.ranges[h].to==a.from?t.ranges[h]={from:t.ranges[h].from,to:a.to}:t.ranges.push(a)}if(l&&s.firstChild())t&&t.depth++,i&&i.depth++;else for(;!s.nextSibling();){if(!s.parent())break e;if(t&&!--t.depth){let h=eu(this.ranges,t.ranges);h.length&&(Kf(h),this.inner.splice(t.index,0,new Bs(t.parser,t.parser.startParse(this.input,tu(t.mounts,h),h),t.ranges.map(f=>new ve(f.from-t.start,f.to-t.start)),t.bracketed,t.target,h[0].from))),t=t.prev}i&&!--i.depth&&(i=i.prev)}}}};function _g(n,e,t){for(let i of n){if(i.from>=t)break;if(i.to>e)return i.from<=e&&i.to>=t?2:1}return 0}c(_g,"checkCover");function Jf(n,e,t,i,s,r){if(e<t){let o=n.buffer[e+1];i.push(n.slice(e,t,o)),s.push(o-r)}}c(Jf,"sliceBuf");function Dg(n){let{node:e}=n,t=[],i=e.context.buffer;do t.push(n.index),n.parent();while(!n.tree);let s=n.tree,r=s.children.indexOf(i),o=s.children[r],l=o.buffer,a=[r];function h(f,u,d,O,p,m){let g=t[m],Q=[],b=[];Jf(o,f,g,Q,b,O);let x=l[g+1],Z=l[g+2];a.push(Q.length);let w=m?h(g+4,l[g+3],o.set.types[l[g]],x,Z-x,m-1):e.toTree();return Q.push(w),b.push(x-O),Jf(o,l[g+3],u,Q,b,O),new J(d,Q,b,p)}c(h,"split"),s.children[r]=h(0,l.length,de.none,0,o.length,t.length-1);for(let f of a){let u=n.tree.children[f],d=n.tree.positions[f];n.yield(new Pe(u,d+n.from,f,n._tree))}}c(Dg,"materialize");var Is=class{static{c(this,"StructureCursor")}constructor(e,t){this.offset=t,this.done=!1,this.cursor=e.cursor(L.IncludeAnonymous|L.IgnoreMounts)}moveTo(e){let{cursor:t}=this,i=e-this.offset;for(;!this.done&&t.from<i;)t.to>=e&&t.enter(i,1,L.IgnoreOverlays|L.ExcludeBuffers)||t.next(!1)||(this.done=!0)}hasNode(e){if(this.moveTo(e.from),!this.done&&this.cursor.from+this.offset==e.from&&this.cursor.tree)for(let t=this.cursor.tree;;){if(t==e.tree)return!0;if(t.children.length&&t.positions[0]==0&&t.children[0]instanceof J)t=t.children[0];else break}return!1}},Xl=class{static{c(this,"FragmentCursor")}constructor(e){var t;if(this.fragments=e,this.curTo=0,this.fragI=0,e.length){let i=this.curFrag=e[0];this.curTo=(t=i.tree.prop(Zl))!==null&&t!==void 0?t:i.to,this.inner=new Is(i.tree,-i.offset)}else this.curFrag=this.inner=null}hasNode(e){for(;this.curFrag&&e.from>=this.curTo;)this.nextFrag();return this.curFrag&&this.curFrag.from<=e.from&&this.curTo>=e.to&&this.inner.hasNode(e)}nextFrag(){var e;if(this.fragI++,this.fragI==this.fragments.length)this.curFrag=this.inner=null;else{let t=this.curFrag=this.fragments[this.fragI];this.curTo=(e=t.tree.prop(Zl))!==null&&e!==void 0?e:t.to,this.inner=new Is(t.tree,-t.offset)}}findMounts(e,t){var i;let s=[];if(this.inner){this.inner.cursor.moveTo(e,1);for(let r=this.inner.cursor.node;r;r=r.parent){let o=(i=r.tree)===null||i===void 0?void 0:i.prop(E.mounted);if(o&&o.parser==t)for(let l=this.fragI;l<this.fragments.length;l++){let a=this.fragments[l];if(a.from>=r.to)break;a.tree==this.curFrag.tree&&s.push({frag:a,pos:r.from-a.offset,mount:o})}}}return s}};function eu(n,e){let t=null,i=e;for(let s=1,r=0;s<n.length;s++){let o=n[s-1].to,l=n[s].from;for(;r<i.length;r++){let a=i[r];if(a.from>=l)break;a.to<=o||(t||(i=t=e.slice()),a.from<o?(t[r]=new ve(a.from,o),a.to>l&&t.splice(r+1,0,new ve(l,a.to))):a.to>l?t[r--]=new ve(l,a.to):t.splice(r--,1))}}return i}c(eu,"punchRanges");function Lg(n,e,t,i){let s=0,r=0,o=!1,l=!1,a=-1e9,h=[];for(;;){let f=s==n.length?1e9:o?n[s].to:n[s].from,u=r==e.length?1e9:l?e[r].to:e[r].from;if(o!=l){let d=Math.max(a,t),O=Math.min(f,u,i);d<O&&h.push(new ve(d,O))}if(a=Math.min(f,u),a==1e9)break;f==a&&(o?(o=!1,s++):o=!0),u==a&&(l?(l=!1,r++):l=!0)}return h}c(Lg,"findCoverChanges");function tu(n,e){let t=[];for(let{pos:i,mount:s,frag:r}of n){let o=i+(s.overlay?s.overlay[0].from:0),l=o+s.tree.length,a=Math.max(r.from,o),h=Math.min(r.to,l);if(s.overlay){let f=s.overlay.map(d=>new ve(d.from+i,d.to+i)),u=Lg(e,f,a,h);for(let d=0,O=a;;d++){let p=d==u.length,m=p?h:u[d].from;if(m>O&&t.push(new St(O,m,s.tree,-o,r.from>=O||r.openStart,r.to<=m||r.openEnd)),p)break;O=u[d].to}}else t.push(new St(a,h,s.tree,-o,r.from>=o||r.openStart,r.to<=l||r.openEnd))}return t}c(tu,"enterFragments");var qg=0,Ke=class n{static{c(this,"Tag")}constructor(e,t,i,s){this.name=e,this.set=t,this.base=i,this.modified=s,this.id=qg++}toString(){let{name:e}=this;for(let t of this.modified)t.name&&(e=`${t.name}(${e})`);return e}static define(e,t){let i=typeof e=="string"?e:"?";if(e instanceof n&&(t=e),t?.base)throw new Error("Can not derive from a modified tag");let s=new n(i,[],null,[]);if(s.set.push(s),t)for(let r of t.set)s.set.push(r);return s}static defineModifier(e){let t=new Us(e);return i=>i.modified.indexOf(t)>-1?i:Us.get(i.base||i,i.modified.concat(t).sort((s,r)=>s.id-r.id))}},Wg=0,Us=class n{static{c(this,"Modifier")}constructor(e){this.name=e,this.instances=[],this.id=Wg++}static get(e,t){if(!t.length)return e;let i=t[0].instances.find(l=>l.base==e&&Bg(t,l.modified));if(i)return i;let s=[],r=new Ke(e.name,s,e,t);for(let l of t)l.instances.push(r);let o=Ig(t);for(let l of e.set)if(!l.modified.length)for(let a of o)s.push(n.get(l,a));return r}};function Bg(n,e){return n.length==e.length&&n.every((t,i)=>t==e[i])}c(Bg,"sameArray");function Ig(n){let e=[[]];for(let t=0;t<n.length;t++)for(let i=0,s=e.length;i<s;i++)e.push(e[i].concat(n[t]));return e.sort((t,i)=>i.length-t.length)}c(Ig,"powerSet");function At(n){let e=Object.create(null);for(let t in n){let i=n[t];Array.isArray(i)||(i=[i]);for(let s of t.split(" "))if(s){let r=[],o=2,l=s;for(let u=0;;){if(l=="..."&&u>0&&u+3==s.length){o=1;break}let d=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!d)throw new RangeError("Invalid path: "+s);if(r.push(d[0]=="*"?"":d[0][0]=='"'?JSON.parse(d[0]):d[0]),u+=d[0].length,u==s.length)break;let O=s[u++];if(u==s.length&&O=="!"){o=0;break}if(O!="/")throw new RangeError("Invalid path: "+s);l=s.slice(u)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+s);let f=new ii(i,o,a>0?r.slice(0,a):null);e[h]=f.sort(e[h])}}return lu.add(e)}c(At,"styleTags");var lu=new E({combine(n,e){let t,i,s;for(;n||e;){if(!n||e&&n.depth>=e.depth?(s=e,e=e.next):(s=n,n=n.next),t&&t.mode==s.mode&&!s.context&&!t.context)continue;let r=new ii(s.tags,s.mode,s.context);t?t.next=r:i=r,t=r}return i}}),ii=class{static{c(this,"Rule")}constructor(e,t,i,s){this.tags=e,this.mode=t,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth<this.depth?(this.next=e,this):(e.next=this.sort(e.next),e)}get depth(){return this.context?this.context.length:0}};ii.empty=new ii([],2,null);function Vl(n,e){let t=Object.create(null);for(let r of n)if(!Array.isArray(r.tag))t[r.tag.id]=r.class;else for(let o of r.tag)t[o.id]=r.class;let{scope:i,all:s=null}=e||{};return{style:c(r=>{let o=s;for(let l of r)for(let a of l.set){let h=t[a.id];if(h){o=o?o+" "+h:h;break}}return o},"style"),scope:i}}c(Vl,"tagHighlighter");function jg(n,e){let t=null;for(let i of n){let s=i.style(e);s&&(t=t?t+" "+s:s)}return t}c(jg,"highlightTags");function au(n,e,t,i=0,s=n.length){let r=new zl(i,Array.isArray(e)?e:[e],t);r.highlightRange(n.cursor(),i,s,"",r.highlighters),r.flush(s)}c(au,"highlightTree");var zl=class{static{c(this,"HighlightBuilder")}constructor(e,t,i){this.at=e,this.highlighters=t,this.span=i,this.class=""}startSpan(e,t){t!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=t)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,t,i,s,r){let{type:o,from:l,to:a}=e;if(l>=i||a<=t)return;o.isTop&&(r=this.highlighters.filter(O=>!O.scope||O.scope(o)));let h=s,f=Ng(e)||ii.empty,u=jg(r,f.tags);if(u&&(h&&(h+=" "),h+=u,f.mode==1&&(s+=(s?" ":"")+u)),this.startSpan(Math.max(t,l),h),f.opaque)return;let d=e.tree&&e.tree.prop(E.mounted);if(d&&d.overlay){let O=e.node.enter(d.overlay[0].from+l,1),p=this.highlighters.filter(g=>!g.scope||g.scope(d.tree.type)),m=e.firstChild();for(let g=0,Q=l;;g++){let b=g<d.overlay.length?d.overlay[g]:null,x=b?b.from+l:a,Z=Math.max(t,Q),w=Math.min(i,x);if(Z<w&&m)for(;e.from<w&&(this.highlightRange(e,Z,w,s,r),this.startSpan(Math.min(w,e.to),h),!(e.to>=x||!e.nextSibling())););if(!b||x>i)break;Q=b.to+l,Q>t&&(this.highlightRange(O.cursor(),Math.max(t,b.from+l),Math.min(i,Q),"",p),this.startSpan(Math.min(i,Q),h))}m&&e.parent()}else if(e.firstChild()){d&&(s="");do if(!(e.to<=t)){if(e.from>=i)break;this.highlightRange(e,t,i,s,r),this.startSpan(Math.min(i,e.to),h)}while(e.nextSibling());e.parent()}}};function Ng(n){let e=n.type.prop(lu);for(;e&&e.context&&!n.matchContext(e.context);)e=e.next;return e||null}c(Ng,"getStyleTags");var $=Ke.define,js=$(),Ct=$(),ru=$(Ct),ou=$(Ct),Zt=$(),Ns=$(Zt),El=$(Zt),ct=$(),ti=$(ct),at=$(),ht=$(),Yl=$(),kn=$(Yl),Gs=$(),S={comment:js,lineComment:$(js),blockComment:$(js),docComment:$(js),name:Ct,variableName:$(Ct),typeName:ru,tagName:$(ru),propertyName:ou,attributeName:$(ou),className:$(Ct),labelName:$(Ct),namespace:$(Ct),macroName:$(Ct),literal:Zt,string:Ns,docString:$(Ns),character:$(Ns),attributeValue:$(Ns),number:El,integer:$(El),float:$(El),bool:$(Zt),regexp:$(Zt),escape:$(Zt),color:$(Zt),url:$(Zt),keyword:at,self:$(at),null:$(at),atom:$(at),unit:$(at),modifier:$(at),operatorKeyword:$(at),controlKeyword:$(at),definitionKeyword:$(at),moduleKeyword:$(at),operator:ht,derefOperator:$(ht),arithmeticOperator:$(ht),logicOperator:$(ht),bitwiseOperator:$(ht),compareOperator:$(ht),updateOperator:$(ht),definitionOperator:$(ht),typeOperator:$(ht),controlOperator:$(ht),punctuation:Yl,separator:$(Yl),bracket:kn,angleBracket:$(kn),squareBracket:$(kn),paren:$(kn),brace:$(kn),content:ct,heading:ti,heading1:$(ti),heading2:$(ti),heading3:$(ti),heading4:$(ti),heading5:$(ti),heading6:$(ti),contentSeparator:$(ct),list:$(ct),quote:$(ct),emphasis:$(ct),strong:$(ct),link:$(ct),monospace:$(ct),strikethrough:$(ct),inserted:$(),deleted:$(),changed:$(),invalid:$(),meta:Gs,documentMeta:$(Gs),annotation:$(Gs),processingInstruction:$(Gs),definition:Ke.defineModifier("definition"),constant:Ke.defineModifier("constant"),function:Ke.defineModifier("function"),standard:Ke.defineModifier("standard"),local:Ke.defineModifier("local"),special:Ke.defineModifier("special")};for(let n in S){let e=S[n];e instanceof Ke&&(e.name=n)}var G1=Vl([{tag:S.link,class:"tok-link"},{tag:S.heading,class:"tok-heading"},{tag:S.emphasis,class:"tok-emphasis"},{tag:S.strong,class:"tok-strong"},{tag:S.keyword,class:"tok-keyword"},{tag:S.atom,class:"tok-atom"},{tag:S.bool,class:"tok-bool"},{tag:S.url,class:"tok-url"},{tag:S.labelName,class:"tok-labelName"},{tag:S.inserted,class:"tok-inserted"},{tag:S.deleted,class:"tok-deleted"},{tag:S.literal,class:"tok-literal"},{tag:S.string,class:"tok-string"},{tag:S.number,class:"tok-number"},{tag:[S.regexp,S.escape,S.special(S.string)],class:"tok-string2"},{tag:S.variableName,class:"tok-variableName"},{tag:S.local(S.variableName),class:"tok-variableName tok-local"},{tag:S.definition(S.variableName),class:"tok-variableName tok-definition"},{tag:S.special(S.variableName),class:"tok-variableName2"},{tag:S.definition(S.propertyName),class:"tok-propertyName tok-definition"},{tag:S.typeName,class:"tok-typeName"},{tag:S.namespace,class:"tok-namespace"},{tag:S.className,class:"tok-className"},{tag:S.macroName,class:"tok-macroName"},{tag:S.propertyName,class:"tok-propertyName"},{tag:S.operator,class:"tok-operator"},{tag:S.comment,class:"tok-comment"},{tag:S.meta,class:"tok-meta"},{tag:S.invalid,class:"tok-invalid"},{tag:S.punctuation,class:"tok-punctuation"}]);var _l,Ei=new E;function Hl(n){return T.define({combine:n?e=>e.concat(n):void 0})}c(Hl,"defineLanguageFacet");var Js=new E,Me=class{static{c(this,"Language")}constructor(e,t,i=[],s=""){this.data=e,this.name=s,G.prototype.hasOwnProperty("tree")||Object.defineProperty(G.prototype,"tree",{get(){return F(this)}}),this.parser=t,this.extension=[Rt.of(this),G.languageData.of((r,o,l)=>{let a=hu(r,o,l),h=a.type.prop(Ei);if(!h)return[];let f=r.facet(h),u=a.type.prop(Js);if(u){let d=a.resolve(o-a.from,l);for(let O of u)if(O.test(d,r)){let p=r.facet(O.facet);return O.type=="replace"?p:p.concat(f)}}return f})].concat(i)}isActiveAt(e,t,i=-1){return hu(e,t,i).type.prop(Ei)==this.data}findRegions(e){let t=e.facet(Rt);if(t?.data==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let i=[],s=c((r,o)=>{if(r.prop(Ei)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(E.mounted);if(l){if(l.tree.prop(Ei)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(s(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;a<r.children.length;a++){let h=r.children[a];h instanceof J&&s(h,r.positions[a]+o)}},"explore");return s(F(e),0),i}get allowsNesting(){return!0}};Me.setState=R.define();function hu(n,e,t){let i=n.facet(Rt),s=F(n).topNode;if(!i||i.allowsNesting)for(let r=s;r;r=r.enter(e,t,L.ExcludeBuffers|L.EnterBracketed))r.type.isTop&&(s=r);return s}c(hu,"topNodeAt");var Xt=class n extends Me{static{c(this,"LRLanguage")}constructor(e,t,i){super(e,t,[],i),this.parser=t}static define(e){let t=Hl(e.languageData);return new n(t,e.parser.configure({props:[Ei.add(i=>i.isTop?t:void 0)]}),e.name)}configure(e,t){return new n(this.data,this.parser.configure(e),t||this.name)}get allowsNesting(){return this.parser.hasWrappers()}};function F(n){let e=n.field(Me.state,!1);return e?e.tree:J.empty}c(F,"syntaxTree");var Wl=class{static{c(this,"DocInput")}constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,t){let i=this.cursorPos-this.string.length;return e<i||t>=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-i,t-i)}},vn=null,Bl=class n{static{c(this,"ParseContext")}constructor(e,t,i=[],s,r,o,l,a){this.parser=e,this.state=t,this.fragments=i,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(e,t,i){return new n(e,t,[],J.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Wl(this.state.doc),this.fragments)}work(e,t){return t!=null&&t>=this.state.doc.length&&(t=void 0),this.tree!=J.empty&&this.isDone(t??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof e=="number"){let s=Date.now()+e;e=c(()=>Date.now()>s,"until")}for(this.parse||(this.parse=this.startParse()),t!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&t<this.state.doc.length&&this.parse.stopAt(t);;){let s=this.parse.advance();if(s)if(this.fragments=this.withoutTempSkipped(St.addTree(s,this.fragments,this.parse.stoppedAt!=null)),this.treeLen=(i=this.parse.stoppedAt)!==null&&i!==void 0?i:this.state.doc.length,this.tree=s,this.parse=null,this.treeLen<(t??this.state.doc.length))this.parse=this.startParse();else return!0;if(e())return!1}})}takeTree(){let e,t;this.parse&&(e=this.parse.parsedPos)>=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(t=this.parse.advance()););}),this.treeLen=e,this.tree=t,this.fragments=this.withoutTempSkipped(St.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let t=vn;vn=this;try{return e()}finally{vn=t}}withoutTempSkipped(e){for(let t;t=this.tempSkipped.pop();)e=cu(e,t.from,t.to);return e}changes(e,t){let{fragments:i,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!e.empty){let a=[];if(e.iterChangedRanges((h,f,u,d)=>a.push({fromA:h,toA:f,fromB:u,toB:d})),i=St.applyChanges(i,a),s=J.empty,r=0,o={from:e.mapPos(o.from,-1),to:e.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let f=e.mapPos(h.from,1),u=e.mapPos(h.to,-1);f<u&&l.push({from:f,to:u})}}}return new n(this.parser,t,i,s,r,o,l,this.scheduleOn)}updateViewport(e){if(this.viewport.from==e.from&&this.viewport.to==e.to)return!1;this.viewport=e;let t=this.skipped.length;for(let i=0;i<this.skipped.length;i++){let{from:s,to:r}=this.skipped[i];s<e.to&&r>e.from&&(this.fragments=cu(this.fragments,s,r),this.skipped.splice(i--,1))}return this.skipped.length>=t?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,t){this.skipped.push({from:e,to:t})}static getSkippingParser(e){return new class extends Mi{createParse(t,i,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let a=vn;if(a){for(let h of s)a.tempSkipped.push(h);e&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,e]):e)}return this.parsedPos=o,new J(de.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let t=this.fragments;return this.treeLen>=e&&t.length&&t[0].from==0&&t[0].to>=e}static get(){return vn}};function cu(n,e,t){return St.applyChanges(n,[{fromA:e,toA:t,fromB:e,toB:t}])}c(cu,"cutFragments");var $n=class n{static{c(this,"LanguageState")}constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let t=this.context.changes(e.changes,e.state),i=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),t.viewport.to);return t.work(20,i)||t.takeTree(),new n(t)}static init(e){let t=Math.min(3e3,e.doc.length),i=Bl.create(e.facet(Rt).parser,e,{from:0,to:t});return i.work(20,t)||i.takeTree(),new n(i)}};Me.state=ie.define({create:$n.init,update(n,e){for(let t of e.effects)if(t.is(Me.setState))return t.value;return e.startState.facet(Rt)!=e.state.facet(Rt)?$n.init(e.state):n.apply(e)}});var gu=c(n=>{let e=setTimeout(()=>n(),500);return()=>clearTimeout(e)},"requestIdle");typeof requestIdleCallback<"u"&&(gu=c(n=>{let e=-1,t=setTimeout(()=>{e=requestIdleCallback(n,{timeout:400})},100);return()=>e<0?clearTimeout(t):cancelIdleCallback(e)},"requestIdle"));var Dl=typeof navigator<"u"&&(!((_l=navigator.scheduling)===null||_l===void 0)&&_l.isInputPending)?()=>navigator.scheduling.isInputPending():null,Gg=te.fromClass(class{static{c(this,"ParseWorker")}constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let t=this.view.state.field(Me.state).context;(t.updateViewport(e.view.viewport)||this.view.viewport.to>t.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(t)}scheduleWork(){if(this.working)return;let{state:e}=this.view,t=e.field(Me.state);(t.tree!=t.context.tree||!t.context.isDone(e.doc.length))&&(this.working=gu(this.work))}work(e){this.working=null;let t=Date.now();if(this.chunkEnd<t&&(this.chunkEnd<0||this.view.hasFocus)&&(this.chunkEnd=t+3e4,this.chunkBudget=3e3),this.chunkBudget<=0)return;let{state:i,viewport:{to:s}}=this.view,r=i.field(Me.state);if(r.tree==r.context.tree&&r.context.isDone(s+1e5))return;let o=Date.now()+Math.min(this.chunkBudget,100,e&&!Dl?Math.max(25,e.timeRemaining()-5):1e9),l=r.context.treeLen<s&&i.doc.length>s+1e3,a=r.context.work(()=>Dl&&Dl()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-t,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:Me.setState.of(new $n(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(t=>fe(this.view.state,t)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Rt=T.define({combine(n){return n.length?n[0]:null},enables:c(n=>[Me.state,Gg,P.contentAttributes.compute([n],e=>{let t=e.facet(n);return t&&t.name?{"data-language":t.name}:{}})],"enables")}),Mt=class{static{c(this,"LanguageSupport")}constructor(e,t=[]){this.language=e,this.support=t,this.extension=[e,t]}};var Ug=T.define(),zi=T.define({combine:c(n=>{if(!n.length)return" ";let e=n[0];if(!e||/\S/.test(e)||Array.from(e).some(t=>t!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return e},"combine")});function Tn(n){let e=n.facet(zi);return e.charCodeAt(0)==9?n.tabSize*e.length:e.length}c(Tn,"getIndentUnit");function Yi(n,e){let t="",i=n.tabSize,s=n.facet(zi)[0];if(s==" "){for(;e>=i;)t+=" ",e-=i;s=" "}for(let r=0;r<e;r++)t+=s;return t}c(Yi,"indentString");function er(n,e){n instanceof G&&(n=new ni(n));for(let i of n.state.facet(Ug)){let s=i(n,e);if(s!==void 0)return s}let t=F(n.state);return t.length>=e?Fg(n,t,e):null}c(er,"getIndentation");var ni=class{static{c(this,"IndentContext")}constructor(e,t={}){this.state=e,this.options=t,this.unit=Tn(e)}lineAt(e,t=1){let i=this.state.doc.lineAt(e),{simulateBreak:s,simulateDoubleBreak:r}=this.options;return s!=null&&s>=i.from&&s<=i.to?r&&s==e?{text:"",from:e}:(t<0?s<e:s<=e)?{text:i.text.slice(s-i.from),from:s}:{text:i.text.slice(0,s-i.from),from:i.from}:i}textAfterPos(e,t=1){if(this.options.simulateDoubleBreak&&e==this.options.simulateBreak)return"";let{text:i,from:s}=this.lineAt(e,t);return i.slice(e-s,Math.min(i.length,e+100-s))}column(e,t=1){let{text:i,from:s}=this.lineAt(e,t),r=this.countColumn(i,e-s),o=this.options.overrideIndentation?this.options.overrideIndentation(s):-1;return o>-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(e,t=e.length){return dt(e,this.state.tabSize,t)}lineIndent(e,t=1){let{text:i,from:s}=this.lineAt(e,t),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},ri=new E;function Fg(n,e,t){let i=e.resolveStack(t),s=e.resolveInner(t,-1).resolve(t,0).enterUnfinishedNodesBefore(t);if(s!=i.node){let r=[];for(let o=s;o&&!(o.from<i.node.from||o.to>i.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)i={node:r[o],next:i}}return Su(i,n,t)}c(Fg,"syntaxIndentation");function Su(n,e,t){for(let i=n;i;i=i.next){let s=Kg(i.node);if(s)return s(Il.create(e,t,i))}return 0}c(Su,"indentFor");function Hg(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}c(Hg,"ignoreClosed");function Kg(n){let e=n.type.prop(ri);if(e)return e;let t=n.firstChild,i;if(t&&(i=t.type.prop(E.closedBy))){let s=n.lastChild,r=s&&i.indexOf(s.name)>-1;return o=>yu(o,!0,1,void 0,r&&!Hg(o)?s.from:void 0)}return n.parent==null?Jg:null}c(Kg,"indentStrategy");function Jg(){return 0}c(Jg,"topIndent");var Il=class n extends ni{static{c(this,"TreeIndentContext")}constructor(e,t,i){super(e.state,e.options),this.base=e,this.pos=t,this.context=i}get node(){return this.context.node}static create(e,t,i){return new n(e,t,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let t=this.state.doc.lineAt(e.from);for(;;){let i=e.resolve(t.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(e0(i,e))break;t=this.state.doc.lineAt(i.from)}return this.lineIndent(t.from)}continue(){return Su(this.context.next,this.base,this.pos)}};function e0(n,e){for(let t=e;t;t=t.parent)if(n==t)return!0;return!1}c(e0,"isParent");function t0(n){let e=n.node,t=e.childAfter(e.from),i=e.lastChild;if(!t)return null;let s=n.options.simulateBreak,r=n.state.doc.lineAt(t.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=t.to;;){let a=e.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped){if(a.from>=o)return null;let h=/^ */.exec(r.text.slice(t.to-r.from))[0].length;return{from:t.from,to:t.to+h}}l=a.to}}c(t0,"bracketedAligned");function Qu({closing:n,align:e=!0,units:t=1}){return i=>yu(i,e,t,n)}c(Qu,"delimitedIndent");function yu(n,e,t,i,s){let r=n.textAfter,o=r.match(/^\s*/)[0].length,l=i&&r.slice(o,o+i.length)==i||s==n.pos+o,a=e?t0(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*t)}c(yu,"delimitedStrategy");var bu=c(n=>n.baseIndent,"flatIndent");function Vi({except:n,units:e=1}={}){return t=>{let i=n&&n.test(t.textAfter);return t.baseIndent+(i?0:e*t.unit)}}c(Vi,"continuedIndent");var i0=200;function xu(){return G.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let e=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!e.length)return n;let t=n.newDoc,{head:i}=n.newSelection.main,s=t.lineAt(i);if(i>s.from+i0)return n;let r=t.sliceString(s.from,i);if(!e.some(h=>h.test(r)))return n;let{state:o}=n,l=-1,a=[];for(let{head:h}of o.selection.ranges){let f=o.doc.lineAt(h);if(f.from==l)continue;l=f.from;let u=er(o,f.from);if(u==null)continue;let d=/^\s*/.exec(f.text)[0],O=Yi(o,u);d!=O&&a.push({from:f.from,to:f.from+d.length,insert:O})}return a.length?[n,{changes:a,sequential:!0}]:n})}c(xu,"indentOnInput");var n0=T.define(),oi=new E;function tr(n){let e=n.firstChild,t=n.lastChild;return e&&e.to<t.from?{from:e.to,to:t.type.isError?n.to:t.from}:null}c(tr,"foldInside");function s0(n,e,t){let i=F(n);if(i.length<t)return null;let s=i.resolveStack(t,1),r=null;for(let o=s;o;o=o.next){let l=o.node;if(l.to<=t||l.from>t)continue;if(r&&l.from<e)break;let a=l.type.prop(oi);if(a&&(l.to<i.length-50||i.length==n.doc.length||!r0(l))){let h=a(l,n);h&&h.from<=t&&h.from>=e&&h.to>t&&(r=h)}}return r}c(s0,"syntaxFolding");function r0(n){let e=n.lastChild;return e&&e.to==n.to&&e.type.isError}c(r0,"isUnfinished");function Fs(n,e,t){for(let i of n.facet(n0)){let s=i(n,e,t);if(s)return s}return s0(n,e,t)}c(Fs,"foldable");function wu(n,e){let t=e.mapPos(n.from,1),i=e.mapPos(n.to,-1);return t>=i?void 0:{from:t,to:i}}c(wu,"mapRange");var ir=R.define({map:wu}),Cn=R.define({map:wu});function ku(n){let e=[];for(let{head:t}of n.state.selection.ranges)e.some(i=>i.from<=t&&i.to>=t)||e.push(n.lineBlockAt(t));return e}c(ku,"selectedLines");var si=ie.define({create(){return A.none},update(n,e){e.isUserEvent("delete")&&e.changes.iterChangedRanges((t,i)=>n=fu(n,t,i)),n=n.map(e.changes);for(let t of e.effects)if(t.is(ir)&&!o0(n,t.value.from,t.value.to)){let{preparePlaceholder:i}=e.state.facet(Kl),s=i?A.replace({widget:new jl(i(e.state,t.value))}):uu;n=n.update({add:[s.range(t.value.from,t.value.to)]})}else t.is(Cn)&&(n=n.update({filter:c((i,s)=>t.value.from!=i||t.value.to!=s,"filter"),filterFrom:t.value.from,filterTo:t.value.to}));return e.selection&&(n=fu(n,e.selection.main.head)),n},provide:c(n=>P.decorations.from(n),"provide"),toJSON(n,e){let t=[];return n.between(0,e.doc.length,(i,s)=>{t.push(i,s)}),t},fromJSON(n){if(!Array.isArray(n)||n.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let t=0;t<n.length;){let i=n[t++],s=n[t++];if(typeof i!="number"||typeof s!="number")throw new RangeError("Invalid JSON for fold state");e.push(uu.range(i,s))}return A.set(e,!0)}});function fu(n,e,t=e){let i=!1;return n.between(e,t,(s,r)=>{s<t&&r>e&&(i=!0)}),i?n.update({filterFrom:e,filterTo:t,filter:c((s,r)=>s>=t||r<=e,"filter")}):n}c(fu,"clearTouchedFolds");function Hs(n,e,t){var i;let s=null;return(i=n.field(si,!1))===null||i===void 0||i.between(e,t,(r,o)=>{(!s||s.from>r)&&(s={from:r,to:o})}),s}c(Hs,"findFold");function o0(n,e,t){let i=!1;return n.between(e,e,(s,r)=>{s==e&&r==t&&(i=!0)}),i}c(o0,"foldExists");function vu(n,e){return n.field(si,!1)?e:e.concat(R.appendConfig.of(Tu()))}c(vu,"maybeEnable");var l0=c(n=>{for(let e of ku(n)){let t=Fs(n.state,e.from,e.to);if(t)return n.dispatch({effects:vu(n.state,[ir.of(t),Pu(n,t)])}),!0}return!1},"foldCode"),a0=c(n=>{if(!n.state.field(si,!1))return!1;let e=[];for(let t of ku(n)){let i=Hs(n.state,t.from,t.to);i&&e.push(Cn.of(i),Pu(n,i,!1))}return e.length&&n.dispatch({effects:e}),e.length>0},"unfoldCode");function Pu(n,e,t=!0){let i=n.state.doc.lineAt(e.from).number,s=n.state.doc.lineAt(e.to).number;return P.announce.of(`${n.state.phrase(t?"Folded lines":"Unfolded lines")} ${i} ${n.state.phrase("to")} ${s}.`)}c(Pu,"announceFold");var h0=c(n=>{let{state:e}=n,t=[];for(let i=0;i<e.doc.length;){let s=n.lineBlockAt(i),r=Fs(e,s.from,s.to);r&&t.push(ir.of(r)),i=(r?n.lineBlockAt(r.to):s).to+1}return t.length&&n.dispatch({effects:vu(n.state,t)}),!!t.length},"foldAll"),c0=c(n=>{let e=n.state.field(si,!1);if(!e||!e.size)return!1;let t=[];return e.between(0,n.state.doc.length,(i,s)=>{t.push(Cn.of({from:i,to:s}))}),n.dispatch({effects:t}),!0},"unfoldAll");var $u=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:l0},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:a0},{key:"Ctrl-Alt-[",run:h0},{key:"Ctrl-Alt-]",run:c0}],f0={placeholderDOM:null,preparePlaceholder:null,placeholderText:"\u2026"},Kl=T.define({combine(n){return pe(n,f0)}});function Tu(n){let e=[si,d0];return n&&e.push(Kl.of(n)),e}c(Tu,"codeFolding");function Cu(n,e){let{state:t}=n,i=t.facet(Kl),s=c(o=>{let l=n.lineBlockAt(n.posAtDOM(o.target)),a=Hs(n.state,l.from,l.to);a&&n.dispatch({effects:Cn.of(a)}),o.preventDefault()},"onclick");if(i.placeholderDOM)return i.placeholderDOM(n,s,e);let r=document.createElement("span");return r.textContent=i.placeholderText,r.setAttribute("aria-label",t.phrase("folded code")),r.title=t.phrase("unfold"),r.className="cm-foldPlaceholder",r.onclick=s,r}c(Cu,"widgetToDOM");var uu=A.replace({widget:new class extends ye{toDOM(n){return Cu(n,null)}}}),jl=class extends ye{static{c(this,"PreparedFoldWidget")}constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return Cu(e,this.value)}},u0={openText:"\u2304",closedText:"\u203A",markerDOM:null,domEventHandlers:{},foldingChanged:c(()=>!1,"foldingChanged")},Pn=class extends Re{static{c(this,"FoldMarker")}constructor(e,t){super(),this.config=e,this.open=t}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let t=document.createElement("span");return t.textContent=this.open?this.config.openText:this.config.closedText,t.title=e.state.phrase(this.open?"Fold line":"Unfold line"),t}};function Zu(n={}){let e={...u0,...n},t=new Pn(e,!0),i=new Pn(e,!1),s=te.fromClass(class{constructor(o){this.from=o.viewport.from,this.markers=this.buildMarkers(o)}update(o){(o.docChanged||o.viewportChanged||o.startState.facet(Rt)!=o.state.facet(Rt)||o.startState.field(si,!1)!=o.state.field(si,!1)||F(o.startState)!=F(o.state)||e.foldingChanged(o))&&(this.markers=this.buildMarkers(o.view))}buildMarkers(o){let l=new Ze;for(let a of o.viewportLineBlocks){let h=Hs(o.state,a.from,a.to)?i:Fs(o.state,a.from,a.to)?t:null;h&&l.add(a.from,a.from,h)}return l.finish()}}),{domEventHandlers:r}=e;return[s,wl({class:"cm-foldGutter",markers(o){var l;return((l=o.plugin(s))===null||l===void 0?void 0:l.markers)||D.empty},initialSpacer(){return new Pn(e,!1)},domEventHandlers:{...r,click:c((o,l,a)=>{if(r.click&&r.click(o,l,a))return!0;let h=Hs(o.state,l.from,l.to);if(h)return o.dispatch({effects:Cn.of(h)}),!0;let f=Fs(o.state,l.from,l.to);return f?(o.dispatch({effects:ir.of(f)}),!0):!1},"click")}}),Tu()]}c(Zu,"foldGutter");var d0=P.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}}),Ks=class n{static{c(this,"HighlightStyle")}constructor(e,t){this.specs=e;let i;function s(l){let a=We.newName();return(i||(i=Object.create(null)))["."+a]=l,a}c(s,"def");let r=typeof t.all=="string"?t.all:t.all?s(t.all):void 0,o=t.scope;this.scope=o instanceof Me?l=>l.prop(Ei)==o.data:o?l=>l==o:void 0,this.style=Vl(e.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new We(i):null,this.themeType=t.themeType}static define(e,t){return new n(e,t||{})}},Nl=T.define(),Au=T.define({combine(n){return n.length?[n[0]]:null}});function Ll(n){let e=n.facet(Nl);return e.length?e:n.facet(Au)}c(Ll,"getHighlighters");function Xu(n,e){let t=[O0],i;return n instanceof Ks&&(n.module&&t.push(P.styleModule.of(n.module)),i=n.themeType),e?.fallback?t.push(Au.of(n)):i?t.push(Nl.computeN([P.darkTheme],s=>s.facet(P.darkTheme)==(i=="dark")?[n]:[])):t.push(Nl.of(n)),t}c(Xu,"syntaxHighlighting");var Gl=class{static{c(this,"TreeHighlighter")}constructor(e){this.markCache=Object.create(null),this.tree=F(e.state),this.decorations=this.buildDeco(e,Ll(e.state)),this.decoratedTo=e.viewport.to}update(e){let t=F(e.state),i=Ll(e.state),s=i!=Ll(e.startState),{viewport:r}=e.view,o=e.changes.mapPos(this.decoratedTo,1);t.length<r.to&&!s&&t.type==this.tree.type&&o>=r.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=o):(t!=this.tree||e.viewportChanged||s)&&(this.tree=t,this.decorations=this.buildDeco(e.view,i),this.decoratedTo=r.to)}buildDeco(e,t){if(!t||!this.tree.length)return A.none;let i=new Ze;for(let{from:s,to:r}of e.visibleRanges)au(this.tree,t,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=A.mark({class:a})))},s,r);return i.finish()}},O0=qe.high(te.fromClass(Gl,{decorations:c(n=>n.decorations,"decorations")})),Ru=Ks.define([{tag:S.meta,color:"#404740"},{tag:S.link,textDecoration:"underline"},{tag:S.heading,textDecoration:"underline",fontWeight:"bold"},{tag:S.emphasis,fontStyle:"italic"},{tag:S.strong,fontWeight:"bold"},{tag:S.strikethrough,textDecoration:"line-through"},{tag:S.keyword,color:"#708"},{tag:[S.atom,S.bool,S.url,S.contentSeparator,S.labelName],color:"#219"},{tag:[S.literal,S.inserted],color:"#164"},{tag:[S.string,S.deleted],color:"#a11"},{tag:[S.regexp,S.escape,S.special(S.string)],color:"#e40"},{tag:S.definition(S.variableName),color:"#00f"},{tag:S.local(S.variableName),color:"#30a"},{tag:[S.typeName,S.namespace],color:"#085"},{tag:S.className,color:"#167"},{tag:[S.special(S.variableName),S.macroName],color:"#256"},{tag:S.definition(S.propertyName),color:"#00c"},{tag:S.comment,color:"#940"},{tag:S.invalid,color:"#f00"}]),p0=P.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Mu=1e4,Eu="()[]{}",zu=T.define({combine(n){return pe(n,{afterCursor:!0,brackets:Eu,maxScanDistance:Mu,renderMatch:S0})}}),m0=A.mark({class:"cm-matchingBracket"}),g0=A.mark({class:"cm-nonmatchingBracket"});function S0(n){let e=[],t=n.matched?m0:g0;return e.push(t.range(n.start.from,n.start.to)),n.end&&e.push(t.range(n.end.from,n.end.to)),e}c(S0,"defaultRenderMatch");function du(n){let e=[],t=n.facet(zu);for(let i of n.selection.ranges){if(!i.empty)continue;let s=Je(n,i.head,-1,t)||i.head>0&&Je(n,i.head-1,1,t)||t.afterCursor&&(Je(n,i.head,1,t)||i.head<n.doc.length&&Je(n,i.head+1,-1,t));s&&(e=e.concat(t.renderMatch(s,n)))}return A.set(e,!0)}c(du,"bracketDeco");var Q0=te.fromClass(class{constructor(n){this.paused=!1,this.decorations=du(n.state)}update(n){(n.docChanged||n.selectionSet||this.paused)&&(n.view.composing?(this.decorations=this.decorations.map(n.changes),this.paused=!0):(this.decorations=du(n.state),this.paused=!1))}},{decorations:c(n=>n.decorations,"decorations")}),y0=[Q0,p0];function Yu(n={}){return[zu.of(n),y0]}c(Yu,"bracketMatching");var Jl=new E;function Ul(n,e,t){let i=n.prop(e<0?E.openedBy:E.closedBy);if(i)return i;if(n.name.length==1){let s=t.indexOf(n.name);if(s>-1&&s%2==(e<0?1:0))return[t[s+e]]}return null}c(Ul,"matchingNodes");function Fl(n){let e=n.type.prop(Jl);return e?e(n.node):n}c(Fl,"findHandle");function Je(n,e,t,i={}){let s=i.maxScanDistance||Mu,r=i.brackets||Eu,o=F(n),l=o.resolveInner(e,t);for(let a=l;a;a=a.parent){let h=Ul(a.type,t,r);if(h&&a.from<a.to){let f=Fl(a);if(f&&(t>0?e>=f.from&&e<f.to:e>f.from&&e<=f.to))return b0(n,e,t,a,f,h,r)}}return x0(n,e,t,o,l.type,s,r)}c(Je,"matchBrackets");function b0(n,e,t,i,s,r,o){let l=i.parent,a={from:s.from,to:s.to},h=0,f=l?.cursor();if(f&&(t<0?f.childBefore(i.from):f.childAfter(i.to)))do if(t<0?f.to<=i.from:f.from>=i.to){if(h==0&&r.indexOf(f.type.name)>-1&&f.from<f.to){let u=Fl(f);return{start:a,end:u?{from:u.from,to:u.to}:void 0,matched:!0}}else if(Ul(f.type,t,o))h++;else if(Ul(f.type,-t,o)){if(h==0){let u=Fl(f);return{start:a,end:u&&u.from<u.to?{from:u.from,to:u.to}:void 0,matched:!1}}h--}}while(t<0?f.prevSibling():f.nextSibling());return{start:a,matched:!1}}c(b0,"matchMarkedBrackets");function x0(n,e,t,i,s,r,o){let l=t<0?n.sliceDoc(e-1,e):n.sliceDoc(e,e+1),a=o.indexOf(l);if(a<0||a%2==0!=t>0)return null;let h={from:t<0?e-1:e,to:t>0?e+1:e},f=n.doc.iterRange(e,t>0?n.doc.length:0),u=0;for(let d=0;!f.next().done&&d<=r;){let O=f.value;t<0&&(d+=O.length);let p=e+d*t;for(let m=t>0?0:O.length-1,g=t>0?O.length:-1;m!=g;m+=t){let Q=o.indexOf(O[m]);if(!(Q<0||i.resolveInner(p+m,1).type!=s))if(Q%2==0==t>0)u++;else{if(u==1)return{start:h,end:{from:p+m,to:p+m+1},matched:Q>>1==a>>1};u--}}t>0&&(d+=O.length)}return f.done?{start:h,matched:!1}:null}c(x0,"matchPlainBrackets");var w0=Object.create(null),Ou=[de.none];var pu=[],mu=Object.create(null),k0=Object.create(null);for(let[n,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])k0[n]=v0(w0,e);function ql(n,e){pu.indexOf(n)>-1||(pu.push(n),console.warn(e))}c(ql,"warnForPart");function v0(n,e){let t=[];for(let l of e.split(" ")){let a=[];for(let h of l.split(".")){let f=n[h]||S[h];f?typeof f=="function"?a.length?a=a.map(f):ql(h,`Modifier ${h} used at start of tag`):a.length?ql(h,`Tag ${h} used as modifier`):a=Array.isArray(f)?f:[f]:ql(h,`Unknown highlighting tag ${h}`)}for(let h of a)t.push(h)}if(!t.length)return 0;let i=e.replace(/ /g,"_"),s=i+" "+t.map(l=>l.id),r=mu[s];if(r)return r.id;let o=mu[s]=de.define({id:Ou.length,name:i,props:[At({[i]:t})]});return Ou.push(o),o.id}c(v0,"createTokenType");var nx={rtl:A.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:B.RTL}),ltr:A.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:B.LTR}),auto:A.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var P0=c(n=>{let{state:e}=n,t=e.doc.lineAt(e.selection.main.from),i=oa(n.state,t.from);return i.line?$0(n):i.block?C0(n):!1},"toggleComment");function ra(n,e){return({state:t,dispatch:i})=>{if(t.readOnly)return!1;let s=n(e,t);return s?(i(t.update(s)),!0):!1}}c(ra,"command");var $0=ra(X0,0);var T0=ra(ju,0);var C0=ra((n,e)=>ju(n,e,A0(e)),0);function oa(n,e){let t=n.languageDataAt("commentTokens",e,1);return t.length?t[0]:{}}c(oa,"getConfig");var Zn=50;function Z0(n,{open:e,close:t},i,s){let r=n.sliceDoc(i-Zn,i),o=n.sliceDoc(s,s+Zn),l=/\s*$/.exec(r)[0].length,a=/^\s*/.exec(o)[0].length,h=r.length-l;if(r.slice(h-e.length,h)==e&&o.slice(a,a+t.length)==t)return{open:{pos:i-l,margin:l&&1},close:{pos:s+a,margin:a&&1}};let f,u;s-i<=2*Zn?f=u=n.sliceDoc(i,s):(f=n.sliceDoc(i,i+Zn),u=n.sliceDoc(s-Zn,s));let d=/^\s*/.exec(f)[0].length,O=/\s*$/.exec(u)[0].length,p=u.length-O-t.length;return f.slice(d,d+e.length)==e&&u.slice(p,p+t.length)==t?{open:{pos:i+d+e.length,margin:/\s/.test(f.charAt(d+e.length))?1:0},close:{pos:s-O-t.length,margin:/\s/.test(u.charAt(p-1))?1:0}}:null}c(Z0,"findBlockComment");function A0(n){let e=[];for(let t of n.selection.ranges){let i=n.doc.lineAt(t.from),s=t.to<=i.to?i:n.doc.lineAt(t.to);s.from>i.from&&s.from==t.to&&(s=t.to==i.to+1?i:n.doc.lineAt(t.to-1));let r=e.length-1;r>=0&&e[r].to>i.from?e[r].to=s.to:e.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:s.to})}return e}c(A0,"selectedLineRanges");function ju(n,e,t=e.selection.ranges){let i=t.map(r=>oa(e,r.from).block);if(!i.every(r=>r))return null;let s=t.map((r,o)=>Z0(e,i[o],r.from,r.to));if(n!=2&&!s.every(r=>r))return{changes:e.changes(t.map((r,o)=>s[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(n!=1&&s.some(r=>r)){let r=[];for(let o=0,l;o<s.length;o++)if(l=s[o]){let a=i[o],{open:h,close:f}=l;r.push({from:h.pos-a.open.length,to:h.pos+h.margin},{from:f.pos-f.margin,to:f.pos+a.close.length})}return{changes:r}}return null}c(ju,"changeBlockComment");function X0(n,e,t=e.selection.ranges){let i=[],s=-1;e:for(let{from:r,to:o}of t){let l=i.length,a=1e9,h;for(let f=r;f<=o;){let u=e.doc.lineAt(f);if(h==null&&(h=oa(e,u.from).line,!h))continue e;if(u.from>s&&(r==o||o>u.from)){s=u.from;let d=/^\s*/.exec(u.text)[0].length,O=d==u.length,p=u.text.slice(d,d+h.length)==h?d:-1;d<u.text.length&&d<a&&(a=d),i.push({line:u,comment:p,token:h,indent:d,empty:O,single:!1})}f=u.to+1}if(a<1e9)for(let f=l;f<i.length;f++)i[f].indent<i[f].line.text.length&&(i[f].indent=a);i.length==l+1&&(i[l].single=!0)}if(n!=2&&i.some(r=>r.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:a,indent:h,empty:f,single:u}of i)(u||!f)&&r.push({from:l.from+h,insert:a+" "});let o=e.changes(r);return{changes:o,selection:e.selection.map(o,1)}}else if(n!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,f=h+a.length;o.text[f-o.from]==" "&&f++,r.push({from:h,to:f})}return{changes:r}}return null}c(X0,"changeLineComment");var ta=xe.define(),R0=xe.define(),M0=T.define(),Nu=T.define({combine(n){return pe(n,{minDepth:100,newGroupDelay:500,joinToEvent:c((e,t)=>t,"joinToEvent")},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:c((e,t)=>(i,s)=>e(i,s)||t(i,s),"joinToEvent")})}}),Gu=ie.define({create(){return li.empty},update(n,e){let t=e.state.facet(Nu),i=e.annotation(ta);if(i){let a=et.fromTransaction(e,i.selection),h=i.side,f=h==0?n.undone:n.done;return a?f=sr(f,f.length,t.minDepth,a):f=Ku(f,e.startState.selection),new li(h==0?i.rest:f,h==0?f:i.rest)}let s=e.annotation(R0);if((s=="full"||s=="before")&&(n=n.isolate()),e.annotation(se.addToHistory)===!1)return e.changes.empty?n:n.addMapping(e.changes.desc);let r=et.fromTransaction(e),o=e.annotation(se.time),l=e.annotation(se.userEvent);return r?n=n.addChanges(r,o,l,t,e):e.selection&&(n=n.addSelection(e.startState.selection,o,l,t.newGroupDelay)),(s=="full"||s=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(e=>e.toJSON()),undone:n.undone.map(e=>e.toJSON())}},fromJSON(n){return new li(n.done.map(et.fromJSON),n.undone.map(et.fromJSON))}});function Uu(n={}){return[Gu,Nu.of(n),P.domEventHandlers({beforeinput(e,t){let i=e.inputType=="historyUndo"?Fu:e.inputType=="historyRedo"?ia:null;return i?(e.preventDefault(),i(t)):!1}})]}c(Uu,"history");function rr(n,e){return function({state:t,dispatch:i}){if(!e&&t.readOnly)return!1;let s=t.field(Gu,!1);if(!s)return!1;let r=s.pop(n,t,e);return r?(i(r),!0):!1}}c(rr,"cmd");var Fu=rr(0,!1),ia=rr(1,!1),E0=rr(0,!0),z0=rr(1,!0);var et=class n{static{c(this,"HistEvent")}constructor(e,t,i,s,r){this.changes=e,this.effects=t,this.mapped=i,this.startSelection=s,this.selectionsAfter=r}setSelAfter(e){return new n(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,i;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(t=this.mapped)===null||t===void 0?void 0:t.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(e){return new n(e.changes&&Se.fromJSON(e.changes),[],e.mapped&&ut.fromJSON(e.mapped),e.startSelection&&y.fromJSON(e.startSelection),e.selectionsAfter.map(y.fromJSON))}static fromTransaction(e,t){let i=Ne;for(let s of e.startState.facet(M0)){let r=s(e);r.length&&(i=i.concat(r))}return!i.length&&e.changes.empty?null:new n(e.changes.invert(e.startState.doc),i,void 0,t||e.startState.selection,Ne)}static selection(e){return new n(void 0,Ne,void 0,void 0,e)}};function sr(n,e,t,i){let s=e+1>t+20?e-t-1:0,r=n.slice(s,e);return r.push(i),r}c(sr,"updateBranch");function Y0(n,e){let t=[],i=!1;return n.iterChangedRanges((s,r)=>t.push(s,r)),e.iterChangedRanges((s,r,o,l)=>{for(let a=0;a<t.length;){let h=t[a++],f=t[a++];l>=h&&o<=f&&(i=!0)}}),i}c(Y0,"isAdjacent");function V0(n,e){return n.ranges.length==e.ranges.length&&n.ranges.filter((t,i)=>t.empty!=e.ranges[i].empty).length===0}c(V0,"eqSelectionShape");function Hu(n,e){return n.length?e.length?n.concat(e):n:e}c(Hu,"conc");var Ne=[],_0=200;function Ku(n,e){if(n.length){let t=n[n.length-1],i=t.selectionsAfter.slice(Math.max(0,t.selectionsAfter.length-_0));return i.length&&i[i.length-1].eq(e)?n:(i.push(e),sr(n,n.length-1,1e9,t.setSelAfter(i)))}else return[et.selection([e])]}c(Ku,"addSelection");function D0(n){let e=n[n.length-1],t=n.slice();return t[n.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),t}c(D0,"popSelection");function ea(n,e){if(!n.length)return n;let t=n.length,i=Ne;for(;t;){let s=L0(n[t-1],e,i);if(s.changes&&!s.changes.empty||s.effects.length){let r=n.slice(0,t);return r[t-1]=s,r}else e=s.mapped,t--,i=s.selectionsAfter}return i.length?[et.selection(i)]:Ne}c(ea,"addMappingToBranch");function L0(n,e,t){let i=Hu(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(e)):Ne,t);if(!n.changes)return et.selection(i);let s=n.changes.map(e),r=e.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(r):r;return new et(s,R.mapEffects(n.effects,e),o,n.startSelection.map(r),i)}c(L0,"mapEvent");var q0=/^(input\.type|delete)($|\.)/,li=class n{static{c(this,"HistoryState")}constructor(e,t,i=0,s=void 0){this.done=e,this.undone=t,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(e,t,i,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&e.changes&&(!i||q0.test(i))&&(!l.selectionsAfter.length&&t-this.prevTime<s.newGroupDelay&&s.joinToEvent(r,Y0(l.changes,e.changes))||i=="input.type.compose")?o=sr(o,o.length-1,s.minDepth,new et(e.changes.compose(l.changes),Hu(R.mapEffects(e.effects,l.changes),l.effects),l.mapped,l.startSelection,Ne)):o=sr(o,o.length,s.minDepth,e),new n(o,Ne,t,i)}addSelection(e,t,i,s){let r=this.done.length?this.done[this.done.length-1].selectionsAfter:Ne;return r.length>0&&t-this.prevTime<s&&i==this.prevUserEvent&&i&&/^select($|\.)/.test(i)&&V0(r[r.length-1],e)?this:new n(Ku(this.done,e),this.undone,t,i)}addMapping(e){return new n(ea(this.done,e),ea(this.undone,e),this.prevTime,this.prevUserEvent)}pop(e,t,i){let s=e==0?this.done:this.undone;if(s.length==0)return null;let r=s[s.length-1],o=r.selectionsAfter[0]||(r.startSelection?r.startSelection.map(r.changes.invertedDesc,1):t.selection);if(i&&r.selectionsAfter.length)return t.update({selection:r.selectionsAfter[r.selectionsAfter.length-1],annotations:ta.of({side:e,rest:D0(s),selection:o}),userEvent:e==0?"select.undo":"select.redo",scrollIntoView:!0});if(r.changes){let l=s.length==1?Ne:s.slice(0,s.length-1);return r.mapped&&(l=ea(l,r.mapped)),t.update({changes:r.changes,selection:r.startSelection,effects:r.effects,annotations:ta.of({side:e,rest:l,selection:o}),filter:!1,userEvent:e==0?"undo":"redo",scrollIntoView:!0})}else return null}};li.empty=new li(Ne,Ne);var Ju=[{key:"Mod-z",run:Fu,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:ia,preventDefault:!0},{linux:"Ctrl-Shift-z",run:ia,preventDefault:!0},{key:"Mod-u",run:E0,preventDefault:!0},{key:"Alt-u",mac:"Mod-Shift-u",run:z0,preventDefault:!0}];function _i(n,e){return y.create(n.ranges.map(e),n.mainIndex)}c(_i,"updateSel");function tt(n,e){return n.update({selection:e,scrollIntoView:!0,userEvent:"select"})}c(tt,"setSel");function it({state:n,dispatch:e},t){let i=_i(n.selection,t);return i.eq(n.selection,!0)?!1:(e(tt(n,i)),!0)}c(it,"moveSel");function or(n,e){return y.cursor(e?n.to:n.from)}c(or,"rangeEnd");function ed(n,e){return it(n,t=>t.empty?n.moveByChar(t,e):or(t,e))}c(ed,"cursorByChar");function me(n){return n.textDirectionAt(n.state.selection.main.head)==B.LTR}c(me,"ltrAtCursor");var td=c(n=>ed(n,!me(n)),"cursorCharLeft"),id=c(n=>ed(n,me(n)),"cursorCharRight");function nd(n,e){return it(n,t=>t.empty?n.moveByGroup(t,e):or(t,e))}c(nd,"cursorByGroup");var W0=c(n=>nd(n,!me(n)),"cursorGroupLeft"),B0=c(n=>nd(n,me(n)),"cursorGroupRight");var Ox=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function I0(n,e,t){if(e.type.prop(t))return!0;let i=e.to-e.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(e.from,e.to)))||e.firstChild}c(I0,"interestingNode");function lr(n,e,t){let i=F(n).resolveInner(e.head),s=t?E.closedBy:E.openedBy;for(let a=e.head;;){let h=t?i.childAfter(a):i.childBefore(a);if(!h)break;I0(n,h,s)?i=h:a=t?h.to:h.from}let r=i.type.prop(s),o,l;return r&&(o=t?Je(n,i.from,1):Je(n,i.to,-1))&&o.matched?l=t?o.end.to:o.end.from:l=t?i.to:i.from,y.cursor(l,t?-1:1)}c(lr,"moveBySyntax");var j0=c(n=>it(n,e=>lr(n.state,e,!me(n))),"cursorSyntaxLeft"),N0=c(n=>it(n,e=>lr(n.state,e,me(n))),"cursorSyntaxRight");function sd(n,e){return it(n,t=>{if(!t.empty)return or(t,e);let i=n.moveVertically(t,e);return i.head!=t.head?i:n.moveToLineBoundary(t,e)})}c(sd,"cursorByLine");var rd=c(n=>sd(n,!1),"cursorLineUp"),od=c(n=>sd(n,!0),"cursorLineDown");function ld(n){let e=n.scrollDOM.clientHeight<n.scrollDOM.scrollHeight-2,t=0,i=0,s;if(e){for(let r of n.state.facet(P.scrollMargins)){let o=r(n);o?.top&&(t=Math.max(o?.top,t)),o?.bottom&&(i=Math.max(o?.bottom,i))}s=n.scrollDOM.clientHeight-t-i}else s=(n.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:t,marginBottom:i,selfScroll:e,height:Math.max(n.defaultLineHeight,s-5)}}c(ld,"pageInfo");function ad(n,e){let t=ld(n),{state:i}=n,s=_i(i.selection,o=>o.empty?n.moveVertically(o,e,t.height):or(o,e));if(s.eq(i.selection))return!1;let r;if(t.selfScroll){let o=n.coordsAtPos(i.selection.main.head),l=n.scrollDOM.getBoundingClientRect(),a=l.top+t.marginTop,h=l.bottom-t.marginBottom;o&&o.top>a&&o.bottom<h&&(r=P.scrollIntoView(s.main.head,{y:"start",yMargin:o.top-a}))}return n.dispatch(tt(i,s),{effects:r}),!0}c(ad,"cursorByPage");var Vu=c(n=>ad(n,!1),"cursorPageUp"),na=c(n=>ad(n,!0),"cursorPageDown");function Et(n,e,t){let i=n.lineBlockAt(e.head),s=n.moveToLineBoundary(e,t);if(s.head==e.head&&s.head!=(t?i.to:i.from)&&(s=n.moveToLineBoundary(e,t,!1)),!t&&s.head==i.from&&i.length){let r=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&e.head!=i.from+r&&(s=y.cursor(i.from+r))}return s}c(Et,"moveByLineBoundary");var G0=c(n=>it(n,e=>Et(n,e,!0)),"cursorLineBoundaryForward"),U0=c(n=>it(n,e=>Et(n,e,!1)),"cursorLineBoundaryBackward"),F0=c(n=>it(n,e=>Et(n,e,!me(n))),"cursorLineBoundaryLeft"),H0=c(n=>it(n,e=>Et(n,e,me(n))),"cursorLineBoundaryRight"),K0=c(n=>it(n,e=>y.cursor(n.lineBlockAt(e.head).from,1)),"cursorLineStart"),J0=c(n=>it(n,e=>y.cursor(n.lineBlockAt(e.head).to,-1)),"cursorLineEnd");function eS(n,e,t){let i=!1,s=_i(n.selection,r=>{let o=Je(n,r.head,-1)||Je(n,r.head,1)||r.head>0&&Je(n,r.head-1,1)||r.head<n.doc.length&&Je(n,r.head+1,-1);if(!o||!o.end)return r;i=!0;let l=o.start.from==r.head?o.end.to:o.end.from;return t?y.range(r.anchor,l):y.cursor(l)});return i?(e(tt(n,s)),!0):!1}c(eS,"toMatchingBracket");var tS=c(({state:n,dispatch:e})=>eS(n,e,!1),"cursorMatchingBracket");function Ge(n,e){let t=_i(n.state.selection,i=>{let s=e(i);return y.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0)});return t.eq(n.state.selection)?!1:(n.dispatch(tt(n.state,t)),!0)}c(Ge,"extendSel");function hd(n,e){return Ge(n,t=>n.moveByChar(t,e))}c(hd,"selectByChar");var cd=c(n=>hd(n,!me(n)),"selectCharLeft"),fd=c(n=>hd(n,me(n)),"selectCharRight");function ud(n,e){return Ge(n,t=>n.moveByGroup(t,e))}c(ud,"selectByGroup");var iS=c(n=>ud(n,!me(n)),"selectGroupLeft"),nS=c(n=>ud(n,me(n)),"selectGroupRight");var sS=c(n=>Ge(n,e=>lr(n.state,e,!me(n))),"selectSyntaxLeft"),rS=c(n=>Ge(n,e=>lr(n.state,e,me(n))),"selectSyntaxRight");function dd(n,e){return Ge(n,t=>n.moveVertically(t,e))}c(dd,"selectByLine");var Od=c(n=>dd(n,!1),"selectLineUp"),pd=c(n=>dd(n,!0),"selectLineDown");function md(n,e){return Ge(n,t=>n.moveVertically(t,e,ld(n).height))}c(md,"selectByPage");var _u=c(n=>md(n,!1),"selectPageUp"),Du=c(n=>md(n,!0),"selectPageDown"),oS=c(n=>Ge(n,e=>Et(n,e,!0)),"selectLineBoundaryForward"),lS=c(n=>Ge(n,e=>Et(n,e,!1)),"selectLineBoundaryBackward"),aS=c(n=>Ge(n,e=>Et(n,e,!me(n))),"selectLineBoundaryLeft"),hS=c(n=>Ge(n,e=>Et(n,e,me(n))),"selectLineBoundaryRight"),cS=c(n=>Ge(n,e=>y.cursor(n.lineBlockAt(e.head).from)),"selectLineStart"),fS=c(n=>Ge(n,e=>y.cursor(n.lineBlockAt(e.head).to)),"selectLineEnd"),Lu=c(({state:n,dispatch:e})=>(e(tt(n,{anchor:0})),!0),"cursorDocStart"),qu=c(({state:n,dispatch:e})=>(e(tt(n,{anchor:n.doc.length})),!0),"cursorDocEnd"),Wu=c(({state:n,dispatch:e})=>(e(tt(n,{anchor:n.selection.main.anchor,head:0})),!0),"selectDocStart"),Bu=c(({state:n,dispatch:e})=>(e(tt(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),"selectDocEnd"),uS=c(({state:n,dispatch:e})=>(e(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),"selectAll"),dS=c(({state:n,dispatch:e})=>{let t=ar(n).map(({from:i,to:s})=>y.range(i,Math.min(s+1,n.doc.length)));return e(n.update({selection:y.create(t),userEvent:"select"})),!0},"selectLine"),OS=c(({state:n,dispatch:e})=>{let t=_i(n.selection,i=>{let s=F(n),r=s.resolveStack(i.from,1);if(i.empty){let o=s.resolveStack(i.from,-1);o.node.from>=r.node.from&&o.node.to<=r.node.to&&(r=o)}for(let o=r;o;o=o.next){let{node:l}=o;if((l.from<i.from&&l.to>=i.to||l.to>i.to&&l.from<=i.from)&&o.next)return y.range(l.to,l.from)}return i});return t.eq(n.selection)?!1:(e(tt(n,t)),!0)},"selectParentSyntax");function gd(n,e){let{state:t}=n,i=t.selection,s=t.selection.ranges.slice();for(let r of t.selection.ranges){let o=t.doc.lineAt(r.head);if(e?o.to<n.state.doc.length:o.from>0)for(let l=r;;){let a=n.moveVertically(l,e);if(a.head<o.from||a.head>o.to){s.some(h=>h.head==a.head)||s.push(a);break}else{if(a.head==l.head)break;l=a}}}return s.length==i.ranges.length?!1:(n.dispatch(tt(t,y.create(s,s.length-1))),!0)}c(gd,"addCursorVertically");var pS=c(n=>gd(n,!1),"addCursorAbove"),mS=c(n=>gd(n,!0),"addCursorBelow"),gS=c(({state:n,dispatch:e})=>{let t=n.selection,i=null;return t.ranges.length>1?i=y.create([t.main]):t.main.empty||(i=y.create([y.cursor(t.main.head)])),i?(e(tt(n,i)),!0):!1},"simplifySelection");function An(n,e){if(n.state.readOnly)return!1;let t="delete.selection",{state:i}=n,s=i.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let a=e(r);a<o?(t="delete.backward",a=nr(n,a,!1)):a>o&&(t="delete.forward",a=nr(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=nr(n,o,!1),l=nr(n,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:y.cursor(o,o<r.head?-1:1)}});return s.changes.empty?!1:(n.dispatch(i.update(s,{scrollIntoView:!0,userEvent:t,effects:t=="delete.selection"?P.announce.of(i.phrase("Selection deleted")):void 0})),!0)}c(An,"deleteBy");function nr(n,e,t){if(n instanceof P)for(let i of n.state.facet(P.atomicRanges).map(s=>s(n)))i.between(e,e,(s,r)=>{s<e&&r>e&&(e=t?r:s)});return e}c(nr,"skipAtomic");var Sd=c((n,e,t)=>An(n,i=>{let s=i.from,{state:r}=n,o=r.doc.lineAt(s),l,a;if(t&&!e&&s>o.from&&s<o.from+200&&!/[^ \t]/.test(l=o.text.slice(0,s-o.from))){if(l[l.length-1]==" ")return s-1;let h=dt(l,r.tabSize),f=h%Tn(r)||Tn(r);for(let u=0;u<f&&l[l.length-1-u]==" ";u++)s--;a=s}else a=ne(o.text,s-o.from,e,e)+o.from,a==s&&o.number!=(e?r.doc.lines:1)?a+=e?1:-1:!e&&/[\ufe00-\ufe0f]/.test(o.text.slice(a-o.from,s-o.from))&&(a=ne(o.text,a-o.from,!1,!1)+o.from);return a}),"deleteByChar"),sa=c(n=>Sd(n,!1,!0),"deleteCharBackward");var Qd=c(n=>Sd(n,!0,!1),"deleteCharForward"),yd=c((n,e)=>An(n,t=>{let i=t.head,{state:s}=n,r=s.doc.lineAt(i),o=s.charCategorizer(i);for(let l=null;;){if(i==(e?r.to:r.from)){i==t.head&&r.number!=(e?s.doc.lines:1)&&(i+=e?1:-1);break}let a=ne(r.text,i-r.from,e)+r.from,h=r.text.slice(Math.min(i,a)-r.from,Math.max(i,a)-r.from),f=o(h);if(l!=null&&f!=l)break;(h!=" "||i!=t.head)&&(l=f),i=a}return i}),"deleteByGroup"),bd=c(n=>yd(n,!1),"deleteGroupBackward"),SS=c(n=>yd(n,!0),"deleteGroupForward");var QS=c(n=>An(n,e=>{let t=n.lineBlockAt(e.head).to;return e.head<t?t:Math.min(n.state.doc.length,e.head+1)}),"deleteToLineEnd");var yS=c(n=>An(n,e=>{let t=n.moveToLineBoundary(e,!1).head;return e.head>t?t:Math.max(0,e.head-1)}),"deleteLineBoundaryBackward"),bS=c(n=>An(n,e=>{let t=n.moveToLineBoundary(e,!0).head;return e.head<t?t:Math.min(n.state.doc.length,e.head+1)}),"deleteLineBoundaryForward");var xS=c(({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:V.of(["",""])},range:y.cursor(i.from)}));return e(n.update(t,{scrollIntoView:!0,userEvent:"input"})),!0},"splitLine"),wS=c(({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let s=i.from,r=n.doc.lineAt(s),o=s==r.from?s-1:ne(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:ne(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:n.doc.slice(s,l).append(n.doc.slice(o,s))},range:y.cursor(l)}});return t.changes.empty?!1:(e(n.update(t,{scrollIntoView:!0,userEvent:"move.character"})),!0)},"transposeChars");function ar(n){let e=[],t=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.from),r=n.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=n.doc.lineAt(i.to-1)),t>=s.number){let o=e[e.length-1];o.to=r.to,o.ranges.push(i)}else e.push({from:s.from,to:r.to,ranges:[i]});t=r.number+1}return e}c(ar,"selectedLineBlocks");function xd(n,e,t){if(n.readOnly)return!1;let i=[],s=[];for(let r of ar(n)){if(t?r.to==n.doc.length:r.from==0)continue;let o=n.doc.lineAt(t?r.to+1:r.from-1),l=o.length+1;if(t){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+n.lineBreak});for(let a of r.ranges)s.push(y.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:n.lineBreak+o.text});for(let a of r.ranges)s.push(y.range(a.anchor-l,a.head-l))}}return i.length?(e(n.update({changes:i,scrollIntoView:!0,selection:y.create(s,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}c(xd,"moveLine");var kS=c(({state:n,dispatch:e})=>xd(n,e,!1),"moveLineUp"),vS=c(({state:n,dispatch:e})=>xd(n,e,!0),"moveLineDown");function wd(n,e,t){if(n.readOnly)return!1;let i=[];for(let r of ar(n))t?i.push({from:r.from,insert:n.doc.slice(r.from,r.to)+n.lineBreak}):i.push({from:r.to,insert:n.lineBreak+n.doc.slice(r.from,r.to)});let s=n.changes(i);return e(n.update({changes:s,selection:n.selection.map(s,t?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}c(wd,"copyLine");var PS=c(({state:n,dispatch:e})=>wd(n,e,!1),"copyLineUp"),$S=c(({state:n,dispatch:e})=>wd(n,e,!0),"copyLineDown"),TS=c(n=>{if(n.state.readOnly)return!1;let{state:e}=n,t=e.changes(ar(e).map(({from:s,to:r})=>(s>0?s--:r<e.doc.length&&r++,{from:s,to:r}))),i=_i(e.selection,s=>{let r;if(n.lineWrapping){let o=n.lineBlockAt(s.head),l=n.coordsAtPos(s.head,s.assoc||1);l&&(r=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(s,!0,r)}).map(t);return n.dispatch({changes:t,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0},"deleteLine");function CS(n,e){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(e-1,e+1)))return{from:e,to:e};let t=F(n).resolveInner(e),i=t.childBefore(e),s=t.childAfter(e),r;return i&&s&&i.to<=e&&s.from>=e&&(r=i.type.prop(E.closedBy))&&r.indexOf(s.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(s.from).from&&!/\S/.test(n.sliceDoc(i.to,s.from))?{from:i.to,to:s.from}:null}c(CS,"isBetweenBrackets");var Iu=kd(!1),ZS=kd(!0);function kd(n){return({state:e,dispatch:t})=>{if(e.readOnly)return!1;let i=e.changeByRange(s=>{let{from:r,to:o}=s,l=e.doc.lineAt(r),a=!n&&r==o&&CS(e,r);n&&(r=o=(o<=l.to?l:e.doc.lineAt(o)).to);let h=new ni(e,{simulateBreak:r,simulateDoubleBreak:!!a}),f=er(h,r);for(f==null&&(f=dt(/^\s*/.exec(e.doc.lineAt(r).text)[0],e.tabSize));o<l.to&&/\s/.test(l.text[o-l.from]);)o++;a?{from:r,to:o}=a:r>l.from&&r<l.from+100&&!/\S/.test(l.text.slice(0,r))&&(r=l.from);let u=["",Yi(e,f)];return a&&u.push(Yi(e,h.lineIndent(l.from,-1))),{changes:{from:r,to:o,insert:V.of(u)},range:y.cursor(r+1+u[1].length)}});return t(e.update(i,{scrollIntoView:!0,userEvent:"input"})),!0}}c(kd,"newlineAndIndent");function la(n,e){let t=-1;return n.changeByRange(i=>{let s=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>t&&(i.empty||i.to>l.from)&&(e(l,s,i),t=l.number),o=l.to+1}let r=n.changes(s);return{changes:s,range:y.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}c(la,"changeBySelectedLine");var AS=c(({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=Object.create(null),i=new ni(n,{overrideIndentation:c(r=>{let o=t[r];return o??-1},"overrideIndentation")}),s=la(n,(r,o,l)=>{let a=er(i,r.from);if(a==null)return;/\S/.test(r.text)||(a=0);let h=/^\s*/.exec(r.text)[0],f=Yi(n,a);(h!=f||l.from<r.from+h.length)&&(t[r.from]=a,o.push({from:r.from,to:r.from+h.length,insert:f}))});return s.changes.empty||e(n.update(s,{userEvent:"indent"})),!0},"indentSelection"),XS=c(({state:n,dispatch:e})=>n.readOnly?!1:(e(n.update(la(n,(t,i)=>{i.push({from:t.from,insert:n.facet(zi)})}),{userEvent:"input.indent"})),!0),"indentMore"),RS=c(({state:n,dispatch:e})=>n.readOnly?!1:(e(n.update(la(n,(t,i)=>{let s=/^\s*/.exec(t.text)[0];if(!s)return;let r=dt(s,n.tabSize),o=0,l=Yi(n,Math.max(0,r-Tn(n)));for(;o<s.length&&o<l.length&&s.charCodeAt(o)==l.charCodeAt(o);)o++;i.push({from:t.from+o,to:t.from+s.length,insert:l.slice(o)})}),{userEvent:"delete.dedent"})),!0),"indentLess"),MS=c(n=>(n.setTabFocusMode(),!0),"toggleTabFocusMode");var ES=[{key:"Ctrl-b",run:td,shift:cd,preventDefault:!0},{key:"Ctrl-f",run:id,shift:fd},{key:"Ctrl-p",run:rd,shift:Od},{key:"Ctrl-n",run:od,shift:pd},{key:"Ctrl-a",run:K0,shift:cS},{key:"Ctrl-e",run:J0,shift:fS},{key:"Ctrl-d",run:Qd},{key:"Ctrl-h",run:sa},{key:"Ctrl-k",run:QS},{key:"Ctrl-Alt-h",run:bd},{key:"Ctrl-o",run:xS},{key:"Ctrl-t",run:wS},{key:"Ctrl-v",run:na}],zS=[{key:"ArrowLeft",run:td,shift:cd,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:W0,shift:iS,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:F0,shift:aS,preventDefault:!0},{key:"ArrowRight",run:id,shift:fd,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:B0,shift:nS,preventDefault:!0},{mac:"Cmd-ArrowRight",run:H0,shift:hS,preventDefault:!0},{key:"ArrowUp",run:rd,shift:Od,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Lu,shift:Wu},{mac:"Ctrl-ArrowUp",run:Vu,shift:_u},{key:"ArrowDown",run:od,shift:pd,preventDefault:!0},{mac:"Cmd-ArrowDown",run:qu,shift:Bu},{mac:"Ctrl-ArrowDown",run:na,shift:Du},{key:"PageUp",run:Vu,shift:_u},{key:"PageDown",run:na,shift:Du},{key:"Home",run:U0,shift:lS,preventDefault:!0},{key:"Mod-Home",run:Lu,shift:Wu},{key:"End",run:G0,shift:oS,preventDefault:!0},{key:"Mod-End",run:qu,shift:Bu},{key:"Enter",run:Iu,shift:Iu},{key:"Mod-a",run:uS},{key:"Backspace",run:sa,shift:sa,preventDefault:!0},{key:"Delete",run:Qd,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:bd,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:SS,preventDefault:!0},{mac:"Mod-Backspace",run:yS,preventDefault:!0},{mac:"Mod-Delete",run:bS,preventDefault:!0}].concat(ES.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),vd=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:j0,shift:sS},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:N0,shift:rS},{key:"Alt-ArrowUp",run:kS},{key:"Shift-Alt-ArrowUp",run:PS},{key:"Alt-ArrowDown",run:vS},{key:"Shift-Alt-ArrowDown",run:$S},{key:"Mod-Alt-ArrowUp",run:pS},{key:"Mod-Alt-ArrowDown",run:mS},{key:"Escape",run:gS},{key:"Mod-Enter",run:ZS},{key:"Alt-l",mac:"Ctrl-l",run:dS},{key:"Mod-i",run:OS,preventDefault:!0},{key:"Mod-[",run:RS},{key:"Mod-]",run:XS},{key:"Mod-Alt-\\",run:AS},{key:"Shift-Mod-k",run:TS},{key:"Shift-Mod-\\",run:tS},{key:"Mod-/",run:P0},{key:"Alt-A",run:T0},{key:"Ctrl-m",mac:"Shift-Alt-m",run:MS}].concat(zS);var Pd=typeof String.prototype.normalize=="function"?n=>n.normalize("NFKD"):n=>n,Yt=class{static{c(this,"SearchCursor")}constructor(e,t,i=0,s=e.length,r,o){this.test=o,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(i,s),this.bufferStart=i,this.normalize=r?l=>r(Pd(l)):Pd,this.query=this.normalize(t)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return ce(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let t=tn(e),i=this.bufferStart+this.bufferPos;this.bufferPos+=Ae(e);let s=this.normalize(t);if(s.length)for(let r=0,o=i;;r++){let l=s.charCodeAt(r),a=this.match(l,o,this.bufferPos+this.bufferStart);if(r==s.length-1){if(a)return this.value=a,this;break}o==i&&r<t.length&&t.charCodeAt(r)==l&&o++}}}match(e,t,i){let s=null;for(let r=0;r<this.matches.length;r+=2){let o=this.matches[r],l=!1;this.query.charCodeAt(o)==e&&(o==this.query.length-1?s={from:this.matches[r+1],to:i}:(this.matches[r]++,l=!0)),l||(this.matches.splice(r,2),r-=2)}return this.query.charCodeAt(0)==e&&(this.query.length==1?s={from:t,to:i}:this.matches.push(1,t)),s&&this.test&&!this.test(s.from,s.to,this.buffer,this.bufferStart)&&(s=null),s}};typeof Symbol<"u"&&(Yt.prototype[Symbol.iterator]=function(){return this});var Cd={from:-1,to:-1,match:/.*/.exec("")},da="gm"+(/x/.unicode==null?"":"u"),fr=class{static{c(this,"RegExpCursor")}constructor(e,t,i,s=0,r=e.length){if(this.text=e,this.to=r,this.curLine="",this.done=!1,this.value=Cd,/\\[sWDnr]|\n|\r|\[\^/.test(t))return new dr(e,t,i,s,r);this.re=new RegExp(t,da+(i?.ignoreCase?"i":"")),this.test=i?.test,this.iter=e.iter();let o=e.lineAt(s);this.curLineStart=o.from,this.matchPos=Or(e,s),this.getLine(this.curLineStart)}getLine(e){this.iter.next(e),this.iter.lineBreak?this.curLine="":(this.curLine=this.iter.value,this.curLineStart+this.curLine.length>this.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let t=this.matchPos<=this.to&&this.re.exec(this.curLine);if(t){let i=this.curLineStart+t.index,s=i+t[0].length;if(this.matchPos=Or(this.text,s+(i==s?1:0)),i==this.curLineStart+this.curLine.length&&this.nextLine(),(i<s||i>this.value.to)&&(!this.test||this.test(i,s,t)))return this.value={from:i,to:s,match:t},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length<this.to)this.nextLine(),e=0;else return this.done=!0,this}}},aa=new WeakMap,ur=class n{static{c(this,"FlattenedDoc")}constructor(e,t){this.from=e,this.text=t}get to(){return this.from+this.text.length}static get(e,t,i){let s=aa.get(e);if(!s||s.from>=i||s.to<=t){let l=new n(t,e.sliceString(t,i));return aa.set(e,l),l}if(s.from==t&&s.to==i)return s;let{text:r,from:o}=s;return o>t&&(r=e.sliceString(t,o)+r,o=t),s.to<i&&(r+=e.sliceString(s.to,i)),aa.set(e,new n(o,r)),new n(t,r.slice(t-o,i-o))}},dr=class{static{c(this,"MultilineRegExpCursor")}constructor(e,t,i,s,r){this.text=e,this.to=r,this.done=!1,this.value=Cd,this.matchPos=Or(e,s),this.re=new RegExp(t,da+(i?.ignoreCase?"i":"")),this.test=i?.test,this.flat=ur.get(e,s,this.chunkEnd(s+5e3))}chunkEnd(e){return e>=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,t=this.re.exec(this.flat.text);if(t&&!t[0]&&t.index==e&&(this.re.lastIndex=e+1,t=this.re.exec(this.flat.text)),t){let i=this.flat.from+t.index,s=i+t[0].length;if((this.flat.to>=this.to||t.index+t[0].length<=this.flat.text.length-10)&&(!this.test||this.test(i,s,t)))return this.value={from:i,to:s,match:t},this.matchPos=Or(this.text,s+(i==s?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=ur.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}};typeof Symbol<"u"&&(fr.prototype[Symbol.iterator]=dr.prototype[Symbol.iterator]=function(){return this});function YS(n){try{return new RegExp(n,da),!0}catch{return!1}}c(YS,"validRegExp");function Or(n,e){if(e>=n.length)return e;let t=n.lineAt(e),i;for(;e<t.to&&(i=t.text.charCodeAt(e-t.from))>=56320&&i<57344;)e++;return e}c(Or,"toCharEnd");var VS=c(n=>{let{state:e}=n,t=String(e.doc.lineAt(n.state.selection.main.head).number),{close:i,result:s}=Wf(n,{label:e.phrase("Go to line"),input:{type:"text",name:"line",value:t},focus:!0,submitLabel:e.phrase("go")});return s.then(r=>{let o=r&&/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(r.elements.line.value);if(!o){n.dispatch({effects:i});return}let l=e.doc.lineAt(e.selection.main.head),[,a,h,f,u]=o,d=f?+f.slice(1):0,O=h?+h:l.number;if(h&&u){let g=O/100;a&&(g=g*(a=="-"?-1:1)+l.number/e.doc.lines),O=Math.round(e.doc.lines*g)}else h&&a&&(O=O*(a=="-"?-1:1)+l.number);let p=e.doc.line(Math.max(1,Math.min(e.doc.lines,O))),m=y.cursor(p.from+Math.max(0,Math.min(d,p.length)));n.dispatch({effects:[i,P.scrollIntoView(m.from,{y:"center"})],selection:m})}),!0},"gotoLine"),_S={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},Zd=T.define({combine(n){return pe(n,_S,{highlightWordAroundCursor:c((e,t)=>e||t,"highlightWordAroundCursor"),minSelectionLength:Math.min,maxMatches:Math.min})}});function Ad(n){let e=[BS,WS];return n&&e.push(Zd.of(n)),e}c(Ad,"highlightSelectionMatches");var DS=A.mark({class:"cm-selectionMatch"}),LS=A.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function $d(n,e,t,i){return(t==0||n(e.sliceDoc(t-1,t))!=j.Word)&&(i==e.doc.length||n(e.sliceDoc(i,i+1))!=j.Word)}c($d,"insideWordBoundaries");function qS(n,e,t,i){return n(e.sliceDoc(t,t+1))==j.Word&&n(e.sliceDoc(i-1,i))==j.Word}c(qS,"insideWord");var WS=te.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.selectionSet||n.docChanged||n.viewportChanged)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let e=n.state.facet(Zd),{state:t}=n,i=t.selection;if(i.ranges.length>1)return A.none;let s=i.main,r,o=null;if(s.empty){if(!e.highlightWordAroundCursor)return A.none;let a=t.wordAt(s.head);if(!a)return A.none;o=t.charCategorizer(s.head),r=t.sliceDoc(a.from,a.to)}else{let a=s.to-s.from;if(a<e.minSelectionLength||a>200)return A.none;if(e.wholeWords){if(r=t.sliceDoc(s.from,s.to),o=t.charCategorizer(s.head),!($d(o,t,s.from,s.to)&&qS(o,t,s.from,s.to)))return A.none}else if(r=t.sliceDoc(s.from,s.to),!r)return A.none}let l=[];for(let a of n.visibleRanges){let h=new Yt(t.doc,r,a.from,a.to);for(;!h.next().done;){let{from:f,to:u}=h.value;if((!o||$d(o,t,f,u))&&(s.empty&&f<=s.from&&u>=s.to?l.push(LS.range(f,u)):(f>=s.to||u<=s.from)&&l.push(DS.range(f,u)),l.length>e.maxMatches))return A.none}}return A.set(l)}},{decorations:c(n=>n.decorations,"decorations")}),BS=P.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),IS=c(({state:n,dispatch:e})=>{let{selection:t}=n,i=y.create(t.ranges.map(s=>n.wordAt(s.head)||y.cursor(s.head)),t.mainIndex);return i.eq(t)?!1:(e(n.update({selection:i})),!0)},"selectWord");function jS(n,e){let{main:t,ranges:i}=n.selection,s=n.wordAt(t.head),r=s&&s.from==t.from&&s.to==t.to;for(let o=!1,l=new Yt(n.doc,e,i[i.length-1].to);;)if(l.next(),l.done){if(o)return null;l=new Yt(n.doc,e,0,Math.max(0,i[i.length-1].from-1)),o=!0}else{if(o&&i.some(a=>a.from==l.value.from))continue;if(r){let a=n.wordAt(l.value.from);if(!a||a.from!=l.value.from||a.to!=l.value.to)continue}return l.value}}c(jS,"findNextOccurrence");var NS=c(({state:n,dispatch:e})=>{let{ranges:t}=n.selection;if(t.some(r=>r.from===r.to))return IS({state:n,dispatch:e});let i=n.sliceDoc(t[0].from,t[0].to);if(n.selection.ranges.some(r=>n.sliceDoc(r.from,r.to)!=i))return!1;let s=jS(n,i);return s?(e(n.update({selection:n.selection.addRange(y.range(s.from,s.to),!1),effects:P.scrollIntoView(s.to)})),!0):!1},"selectNextOccurrence"),qi=T.define({combine(n){return pe(n,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:c(e=>new ua(e),"createPanel"),scrollToMatch:c(e=>P.scrollIntoView(e),"scrollToMatch")})}});var pr=class{static{c(this,"SearchQuery")}constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||YS(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord,this.test=e.test}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(t,i)=>i=="n"?` 12 + `:i=="r"?"\r":i=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord&&this.test==e.test}create(){return this.regexp?new ca(this):new ha(this)}getCursor(e,t=0,i){let s=e.doc?e:G.create({doc:e});return i==null&&(i=s.doc.length),this.regexp?Li(this,s,t,i):Di(this,s,t,i)}},mr=class{static{c(this,"QueryType")}constructor(e){this.spec=e}};function GS(n,e,t){return(i,s,r,o)=>{if(t&&!t(i,s,r,o))return!1;let l=i>=o&&s<=o+r.length?r.slice(i-o,s-o):e.doc.sliceString(i,s);return n(l,e,i,s)}}c(GS,"wrapStringTest");function Di(n,e,t,i){let s;return n.wholeWord&&(s=US(e.doc,e.charCategorizer(e.selection.main.head))),n.test&&(s=GS(n.test,e,s)),new Yt(e.doc,n.unquoted,t,i,n.caseSensitive?void 0:r=>r.toLowerCase(),s)}c(Di,"stringCursor");function US(n,e){return(t,i,s,r)=>((r>t||r+s.length<i)&&(r=Math.max(0,t-2),s=n.sliceString(r,Math.min(n.length,i+2))),(e(gr(s,t-r))!=j.Word||e(Sr(s,t-r))!=j.Word)&&(e(Sr(s,i-r))!=j.Word||e(gr(s,i-r))!=j.Word))}c(US,"stringWordTest");var ha=class extends mr{static{c(this,"StringQuery")}constructor(e){super(e)}nextMatch(e,t,i){let s=Di(this.spec,e,i,e.doc.length).nextOverlapping();if(s.done){let r=Math.min(e.doc.length,t+this.spec.unquoted.length);s=Di(this.spec,e,0,r).nextOverlapping()}return s.done||s.value.from==t&&s.value.to==i?null:s.value}prevMatchInRange(e,t,i){for(let s=i;;){let r=Math.max(t,s-1e4-this.spec.unquoted.length),o=Di(this.spec,e,r,s),l=null;for(;!o.nextOverlapping().done;)l=o.value;if(l)return l;if(r==t)return null;s-=1e4}}prevMatch(e,t,i){let s=this.prevMatchInRange(e,0,t);return s||(s=this.prevMatchInRange(e,Math.max(0,i-this.spec.unquoted.length),e.doc.length)),s&&(s.from!=t||s.to!=i)?s:null}getReplacement(e){return this.spec.unquote(this.spec.replace)}matchAll(e,t){let i=Di(this.spec,e,0,e.doc.length),s=[];for(;!i.next().done;){if(s.length>=t)return null;s.push(i.value)}return s}highlight(e,t,i,s){let r=Di(this.spec,e,Math.max(0,t-this.spec.unquoted.length),Math.min(i+this.spec.unquoted.length,e.doc.length));for(;!r.next().done;)s(r.value.from,r.value.to)}};function FS(n,e,t){return(i,s,r)=>(!t||t(i,s,r))&&n(r[0],e,i,s)}c(FS,"wrapRegexpTest");function Li(n,e,t,i){let s;return n.wholeWord&&(s=HS(e.charCategorizer(e.selection.main.head))),n.test&&(s=FS(n.test,e,s)),new fr(e.doc,n.search,{ignoreCase:!n.caseSensitive,test:s},t,i)}c(Li,"regexpCursor");function gr(n,e){return n.slice(ne(n,e,!1),e)}c(gr,"charBefore");function Sr(n,e){return n.slice(e,ne(n,e))}c(Sr,"charAfter");function HS(n){return(e,t,i)=>!i[0].length||(n(gr(i.input,i.index))!=j.Word||n(Sr(i.input,i.index))!=j.Word)&&(n(Sr(i.input,i.index+i[0].length))!=j.Word||n(gr(i.input,i.index+i[0].length))!=j.Word)}c(HS,"regexpWordTest");var ca=class extends mr{static{c(this,"RegExpQuery")}nextMatch(e,t,i){let s=Li(this.spec,e,i,e.doc.length).next();return s.done&&(s=Li(this.spec,e,0,t).next()),s.done?null:s.value}prevMatchInRange(e,t,i){for(let s=1;;s++){let r=Math.max(t,i-s*1e4),o=Li(this.spec,e,r,i),l=null;for(;!o.next().done;)l=o.value;if(l&&(r==t||l.from>r+10))return l;if(r==t)return null}}prevMatch(e,t,i){return this.prevMatchInRange(e,0,t)||this.prevMatchInRange(e,i,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(t,i)=>{if(i=="&")return e.match[0];if(i=="$")return"$";for(let s=i.length;s>0;s--){let r=+i.slice(0,s);if(r>0&&r<e.match.length)return e.match[r]+i.slice(s)}return t})}matchAll(e,t){let i=Li(this.spec,e,0,e.doc.length),s=[];for(;!i.next().done;){if(s.length>=t)return null;s.push(i.value)}return s}highlight(e,t,i,s){let r=Li(this.spec,e,Math.max(0,t-250),Math.min(i+250,e.doc.length));for(;!r.next().done;)s(r.value.from,r.value.to)}},Rn=R.define(),Oa=R.define(),zt=ie.define({create(n){return new Xn(fa(n).create(),null)},update(n,e){for(let t of e.effects)t.is(Rn)?n=new Xn(t.value.create(),n.panel):t.is(Oa)&&(n=new Xn(n.query,t.value?pa:null));return n},provide:c(n=>Jt.from(n,e=>e.panel),"provide")});var Xn=class{static{c(this,"SearchState")}constructor(e,t){this.query=e,this.panel=t}},KS=A.mark({class:"cm-searchMatch"}),JS=A.mark({class:"cm-searchMatch cm-searchMatch-selected"}),eQ=te.fromClass(class{constructor(n){this.view=n,this.decorations=this.highlight(n.state.field(zt))}update(n){let e=n.state.field(zt);(e!=n.startState.field(zt)||n.docChanged||n.selectionSet||n.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:n,panel:e}){if(!e||!n.spec.valid)return A.none;let{view:t}=this,i=new Ze;for(let s=0,r=t.visibleRanges,o=r.length;s<o;s++){let{from:l,to:a}=r[s];for(;s<o-1&&a>r[s+1].from-500;)a=r[++s].to;n.highlight(t.state,l,a,(h,f)=>{let u=t.state.selection.ranges.some(d=>d.from==h&&d.to==f);i.add(h,f,u?JS:KS)})}return i.finish()}},{decorations:c(n=>n.decorations,"decorations")});function Mn(n){return e=>{let t=e.state.field(zt,!1);return t&&t.query.spec.valid?n(e,t):Md(e)}}c(Mn,"searchCommand");var Qr=Mn((n,{query:e})=>{let{to:t}=n.state.selection.main,i=e.nextMatch(n.state,t,t);if(!i)return!1;let s=y.single(i.from,i.to),r=n.state.facet(qi);return n.dispatch({selection:s,effects:[ma(n,i),r.scrollToMatch(s.main,n)],userEvent:"select.search"}),Rd(n),!0}),yr=Mn((n,{query:e})=>{let{state:t}=n,{from:i}=t.selection.main,s=e.prevMatch(t,i,i);if(!s)return!1;let r=y.single(s.from,s.to),o=n.state.facet(qi);return n.dispatch({selection:r,effects:[ma(n,s),o.scrollToMatch(r.main,n)],userEvent:"select.search"}),Rd(n),!0}),tQ=Mn((n,{query:e})=>{let t=e.matchAll(n.state,1e3);return!t||!t.length?!1:(n.dispatch({selection:y.create(t.map(i=>y.range(i.from,i.to))),userEvent:"select.search.matches"}),!0)}),iQ=c(({state:n,dispatch:e})=>{let t=n.selection;if(t.ranges.length>1||t.main.empty)return!1;let{from:i,to:s}=t.main,r=[],o=0;for(let l=new Yt(n.doc,n.sliceDoc(i,s));!l.next().done;){if(r.length>1e3)return!1;l.value.from==i&&(o=r.length),r.push(y.range(l.value.from,l.value.to))}return e(n.update({selection:y.create(r,o),userEvent:"select.search.matches"})),!0},"selectSelectionMatches"),Td=Mn((n,{query:e})=>{let{state:t}=n,{from:i,to:s}=t.selection.main;if(t.readOnly)return!1;let r=e.nextMatch(t,i,i);if(!r)return!1;let o=r,l=[],a,h,f=[];o.from==i&&o.to==s&&(h=t.toText(e.getReplacement(o)),l.push({from:o.from,to:o.to,insert:h}),o=e.nextMatch(t,o.from,o.to),f.push(P.announce.of(t.phrase("replaced match on line $",t.doc.lineAt(i).number)+".")));let u=n.state.changes(l);return o&&(a=y.single(o.from,o.to).map(u),f.push(ma(n,o)),f.push(t.facet(qi).scrollToMatch(a.main,n))),n.dispatch({changes:u,selection:a,effects:f,userEvent:"input.replace"}),!0}),nQ=Mn((n,{query:e})=>{if(n.state.readOnly)return!1;let t=e.matchAll(n.state,1e9).map(s=>{let{from:r,to:o}=s;return{from:r,to:o,insert:e.getReplacement(s)}});if(!t.length)return!1;let i=n.state.phrase("replaced $ matches",t.length)+".";return n.dispatch({changes:t,effects:P.announce.of(i),userEvent:"input.replace.all"}),!0});function pa(n){return n.state.facet(qi).createPanel(n)}c(pa,"createSearchPanel");function fa(n,e){var t,i,s,r,o;let l=n.selection.main,a=l.empty||l.to>l.from+100?"":n.sliceDoc(l.from,l.to);if(e&&!a)return e;let h=n.facet(qi);return new pr({search:((t=e?.literal)!==null&&t!==void 0?t:h.literal)?a:a.replace(/\n/g,"\\n"),caseSensitive:(i=e?.caseSensitive)!==null&&i!==void 0?i:h.caseSensitive,literal:(s=e?.literal)!==null&&s!==void 0?s:h.literal,regexp:(r=e?.regexp)!==null&&r!==void 0?r:h.regexp,wholeWord:(o=e?.wholeWord)!==null&&o!==void 0?o:h.wholeWord})}c(fa,"defaultQuery");function Xd(n){let e=bn(n,pa);return e&&e.dom.querySelector("[main-field]")}c(Xd,"getSearchInput");function Rd(n){let e=Xd(n);e&&e==n.root.activeElement&&e.select()}c(Rd,"selectSearchInput");var Md=c(n=>{let e=n.state.field(zt,!1);if(e&&e.panel){let t=Xd(n);if(t&&t!=n.root.activeElement){let i=fa(n.state,e.query.spec);i.valid&&n.dispatch({effects:Rn.of(i)}),t.focus(),t.select()}}else n.dispatch({effects:[Oa.of(!0),e?Rn.of(fa(n.state,e.query.spec)):R.appendConfig.of(rQ)]});return!0},"openSearchPanel"),Ed=c(n=>{let e=n.state.field(zt,!1);if(!e||!e.panel)return!1;let t=bn(n,pa);return t&&t.dom.contains(n.root.activeElement)&&n.focus(),n.dispatch({effects:Oa.of(!1)}),!0},"closeSearchPanel"),zd=[{key:"Mod-f",run:Md,scope:"editor search-panel"},{key:"F3",run:Qr,shift:yr,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:Qr,shift:yr,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:Ed,scope:"editor search-panel"},{key:"Mod-Shift-l",run:iQ},{key:"Mod-Alt-g",run:VS},{key:"Mod-d",run:NS,preventDefault:!0}],ua=class{static{c(this,"SearchPanel")}constructor(e){this.view=e;let t=this.query=e.state.field(zt).query.spec;this.commit=this.commit.bind(this),this.searchField=q("input",{value:t.search,placeholder:Ee(e,"Find"),"aria-label":Ee(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=q("input",{value:t.replace,placeholder:Ee(e,"Replace"),"aria-label":Ee(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=q("input",{type:"checkbox",name:"case",form:"",checked:t.caseSensitive,onchange:this.commit}),this.reField=q("input",{type:"checkbox",name:"re",form:"",checked:t.regexp,onchange:this.commit}),this.wordField=q("input",{type:"checkbox",name:"word",form:"",checked:t.wholeWord,onchange:this.commit});function i(s,r,o){return q("button",{class:"cm-button",name:s,onclick:r,type:"button"},o)}c(i,"button"),this.dom=q("div",{onkeydown:c(s=>this.keydown(s),"onkeydown"),class:"cm-search"},[this.searchField,i("next",()=>Qr(e),[Ee(e,"next")]),i("prev",()=>yr(e),[Ee(e,"previous")]),i("select",()=>tQ(e),[Ee(e,"all")]),q("label",null,[this.caseField,Ee(e,"match case")]),q("label",null,[this.reField,Ee(e,"regexp")]),q("label",null,[this.wordField,Ee(e,"by word")]),...e.state.readOnly?[]:[q("br"),this.replaceField,i("replace",()=>Td(e),[Ee(e,"replace")]),i("replaceAll",()=>nQ(e),[Ee(e,"replace all")])],q("button",{name:"close",onclick:c(()=>Ed(e),"onclick"),"aria-label":Ee(e,"close"),type:"button"},["\xD7"])])}commit(){let e=new pr({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:Rn.of(e)}))}keydown(e){Cf(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?yr:Qr)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),Td(this.view))}update(e){for(let t of e.transactions)for(let i of t.effects)i.is(Rn)&&!i.value.eq(this.query)&&this.setQuery(i.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(qi).top}};function Ee(n,e){return n.state.phrase(e)}c(Ee,"phrase");var hr=30,cr=/[\s\.,:;?!]/;function ma(n,{from:e,to:t}){let i=n.state.doc.lineAt(e),s=n.state.doc.lineAt(t).to,r=Math.max(i.from,e-hr),o=Math.min(s,t+hr),l=n.state.sliceDoc(r,o);if(r!=i.from){for(let a=0;a<hr;a++)if(!cr.test(l[a+1])&&cr.test(l[a])){l=l.slice(a);break}}if(o!=s){for(let a=l.length-1;a>l.length-hr;a--)if(!cr.test(l[a-1])&&cr.test(l[a])){l=l.slice(0,a);break}}return P.announce.of(`${n.state.phrase("current match")}. ${l} ${n.state.phrase("on line")} ${i.number}.`)}c(ma,"announceMatch");var sQ=P.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),rQ=[zt,qe.low(eQ),sQ];var xr=class{static{c(this,"CompletionContext")}constructor(e,t,i,s){this.state=e,this.pos=t,this.explicit=i,this.view=s,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let t=F(this.state).resolveInner(this.pos,-1);for(;t&&e.indexOf(t.name)<0;)t=t.parent;return t?{from:t.from,to:this.pos,text:this.state.sliceDoc(t.from,this.pos),type:t.type}:null}matchBefore(e){let t=this.state.doc.lineAt(this.pos),i=Math.max(t.from,this.pos-250),s=t.text.slice(i-t.from,this.pos-t.from),r=s.search(jd(e,!1));return r<0?null:{from:i+r,to:this.pos,text:s.slice(r)}}get aborted(){return this.abortListeners==null}addEventListener(e,t,i){e=="abort"&&this.abortListeners&&(this.abortListeners.push(t),i&&i.onDocChange&&(this.abortOnDocChange=!0))}};function Yd(n){let e=Object.keys(n).join(""),t=/\w/.test(e);return t&&(e=e.replace(/\w/g,"")),`[${t?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}c(Yd,"toSet");function oQ(n){let e=Object.create(null),t=Object.create(null);for(let{label:s}of n){e[s[0]]=!0;for(let r=1;r<s.length;r++)t[s[r]]=!0}let i=Yd(e)+Yd(t)+"*$";return[new RegExp("^"+i),new RegExp(i)]}c(oQ,"prefixMatch");function Ca(n){let e=n.map(s=>typeof s=="string"?{label:s}:s),[t,i]=e.every(s=>/^\w+$/.test(s.label))?[/\w*$/,/\w+$/]:oQ(e);return s=>{let r=s.matchBefore(i);return r||s.explicit?{from:r?r.from:s.pos,options:e,validFor:t}:null}}c(Ca,"completeFromList");function Id(n,e){return t=>{for(let i=F(t.state).resolveInner(t.pos,-1);i;i=i.parent){if(n.indexOf(i.name)>-1)return null;if(i.type.isTop)break}return e(t)}}c(Id,"ifNotIn");var wr=class{static{c(this,"Option")}constructor(e,t,i,s){this.completion=e,this.source=t,this.match=i,this.score=s}};function hi(n){return n.selection.main.from}c(hi,"cur");function jd(n,e){var t;let{source:i}=n,s=e&&i[0]!="^",r=i[i.length-1]!="$";return!s&&!r?n:new RegExp(`${s?"^":""}(?:${i})${r?"$":""}`,(t=n.flags)!==null&&t!==void 0?t:n.ignoreCase?"i":"")}c(jd,"ensureAnchor");var Za=xe.define();function lQ(n,e,t,i){let{main:s}=n.selection,r=t-s.from,o=i-s.from;return{...n.changeByRange(l=>{if(l!=s&&t!=i&&n.sliceDoc(l.from+r,l.from+o)!=n.sliceDoc(t,i))return{range:l};let a=n.toText(e);return{changes:{from:l.from+r,to:i==s.from?l.to:l.from+o,insert:a},range:y.cursor(l.from+r+a.length)}}),scrollIntoView:!0,userEvent:"input.complete"}}c(lQ,"insertCompletionText");var Vd=new WeakMap;function aQ(n){if(!Array.isArray(n))return n;let e=Vd.get(n);return e||Vd.set(n,e=Ca(n)),e}c(aQ,"asSource");var kr=R.define(),En=R.define(),ya=class{static{c(this,"FuzzyMatcher")}constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let t=0;t<e.length;){let i=ce(e,t),s=Ae(i);this.chars.push(i);let r=e.slice(t,t+s),o=r.toUpperCase();this.folded.push(ce(o==r?r.toLowerCase():o,0)),t+=s}this.astral=e.length!=this.chars.length}ret(e,t){return this.score=e,this.matched=t,this}match(e){if(this.pattern.length==0)return this.ret(-100,[]);if(e.length<this.pattern.length)return null;let{chars:t,folded:i,any:s,precise:r,byWord:o}=this;if(t.length==1){let b=ce(e,0),x=Ae(b),Z=x==e.length?0:-100;if(b!=t[0])if(b==i[0])Z+=-200;else return null;return this.ret(Z,[0,x])}let l=e.indexOf(this.pattern);if(l==0)return this.ret(e.length==this.pattern.length?0:-100,[0,this.pattern.length]);let a=t.length,h=0;if(l<0){for(let b=0,x=Math.min(e.length,200);b<x&&h<a;){let Z=ce(e,b);(Z==t[h]||Z==i[h])&&(s[h++]=b),b+=Ae(Z)}if(h<a)return null}let f=0,u=0,d=!1,O=0,p=-1,m=-1,g=/[a-z]/.test(e),Q=!0;for(let b=0,x=Math.min(e.length,200),Z=0;b<x&&u<a;){let w=ce(e,b);l<0&&(f<a&&w==t[f]&&(r[f++]=b),O<a&&(w==t[O]||w==i[O]?(O==0&&(p=b),m=b+1,O++):O=0));let k,v=w<255?w>=48&&w<=57||w>=97&&w<=122?2:w>=65&&w<=90?1:0:(k=tn(w))!=k.toLowerCase()?1:k!=k.toUpperCase()?2:0;(!b||v==1&&g||Z==0&&v!=0)&&(t[u]==w||i[u]==w&&(d=!0)?o[u++]=b:o.length&&(Q=!1)),Z=v,b+=Ae(w)}return u==a&&o[0]==0&&Q?this.result(-100+(d?-200:0),o,e):O==a&&p==0?this.ret(-200-e.length+(m==e.length?0:-100),[0,m]):l>-1?this.ret(-700-e.length,[l,l+this.pattern.length]):O==a?this.ret(-900-e.length,[p,m]):u==a?this.result(-100+(d?-200:0)+-700+(Q?0:-1100),o,e):t.length==2?null:this.result((s[0]?-700:0)+-200+-1100,s,e)}result(e,t,i){let s=[],r=0;for(let o of t){let l=o+(this.astral?Ae(ce(i,o)):1);r&&s[r-1]==o?s[r-1]=l:(s[r++]=o,s[r++]=l)}return this.ret(e-i.length,s)}},ba=class{static{c(this,"StrictMatcher")}constructor(e){this.pattern=e,this.matched=[],this.score=0,this.folded=e.toLowerCase()}match(e){if(e.length<this.pattern.length)return null;let t=e.slice(0,this.pattern.length),i=t==this.pattern?0:t.toLowerCase()==this.folded?-200:null;return i==null?null:(this.matched=[0,t.length],this.score=i+(e.length==this.pattern.length?0:-100),this)}},le=T.define({combine(n){return pe(n,{activateOnTyping:!0,activateOnCompletion:c(()=>!1,"activateOnCompletion"),activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:c(()=>"","tooltipClass"),optionClass:c(()=>"","optionClass"),aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:hQ,filterStrict:!1,compareCompletions:c((e,t)=>(e.sortText||e.label).localeCompare(t.sortText||t.label),"compareCompletions"),interactionDelay:75,updateSyncTime:100},{defaultKeymap:c((e,t)=>e&&t,"defaultKeymap"),closeOnBlur:c((e,t)=>e&&t,"closeOnBlur"),icons:c((e,t)=>e&&t,"icons"),tooltipClass:c((e,t)=>i=>_d(e(i),t(i)),"tooltipClass"),optionClass:c((e,t)=>i=>_d(e(i),t(i)),"optionClass"),addToOptions:c((e,t)=>e.concat(t),"addToOptions"),filterStrict:c((e,t)=>e||t,"filterStrict")})}});function _d(n,e){return n?e?n+" "+e:n:e}c(_d,"joinClass");function hQ(n,e,t,i,s,r){let o=n.textDirection==B.RTL,l=o,a=!1,h="top",f,u,d=e.left-s.left,O=s.right-e.right,p=i.right-i.left,m=i.bottom-i.top;if(l&&d<Math.min(p,O)?l=!1:!l&&O<Math.min(p,d)&&(l=!0),p<=(l?d:O))f=Math.max(s.top,Math.min(t.top,s.bottom-m))-e.top,u=Math.min(400,l?d:O);else{a=!0,u=Math.min(400,(o?e.right:s.right-e.left)-30);let b=s.bottom-e.bottom;b>=m||b>e.top?f=t.bottom-e.top:(h="bottom",f=e.bottom-t.top)}let g=(e.bottom-e.top)/r.offsetHeight,Q=(e.right-e.left)/r.offsetWidth;return{style:`${h}: ${f/g}px; max-width: ${u/Q}px`,class:"cm-completionInfo-"+(a?o?"left-narrow":"right-narrow":l?"left":"right")}}c(hQ,"defaultPositionInfo");var Aa=R.define();function cQ(n){let e=n.addToOptions.slice();return n.icons&&e.push({render(t){let i=document.createElement("div");return i.classList.add("cm-completionIcon"),t.type&&i.classList.add(...t.type.split(/\s+/g).map(s=>"cm-completionIcon-"+s)),i.setAttribute("aria-hidden","true"),i},position:20}),e.push({render(t,i,s,r){let o=document.createElement("span");o.className="cm-completionLabel";let l=t.displayLabel||t.label,a=0;for(let h=0;h<r.length;){let f=r[h++],u=r[h++];f>a&&o.appendChild(document.createTextNode(l.slice(a,f)));let d=o.appendChild(document.createElement("span"));d.appendChild(document.createTextNode(l.slice(f,u))),d.className="cm-completionMatchedText",a=u}return a<l.length&&o.appendChild(document.createTextNode(l.slice(a))),o},position:50},{render(t){if(!t.detail)return null;let i=document.createElement("span");return i.className="cm-completionDetail",i.textContent=t.detail,i},position:80}),e.sort((t,i)=>t.position-i.position).map(t=>t.render)}c(cQ,"optionContent");function ga(n,e,t){if(n<=t)return{from:0,to:n};if(e<0&&(e=0),e<=n>>1){let s=Math.floor(e/t);return{from:s*t,to:(s+1)*t}}let i=Math.floor((n-e)/t);return{from:n-(i+1)*t,to:n-i*t}}c(ga,"rangeAroundSelected");var xa=class{static{c(this,"CompletionTooltip")}constructor(e,t,i){this.view=e,this.stateField=t,this.applyCompletion=i,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:c(()=>this.measureInfo(),"read"),write:c(a=>this.placeInfo(a),"write"),key:this},this.space=null,this.currentClass="";let s=e.state.field(t),{options:r,selected:o}=s.open,l=e.state.facet(le);this.optionContent=cQ(l),this.optionClass=l.optionClass,this.tooltipClass=l.tooltipClass,this.range=ga(r.length,o,l.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.updateTooltipClass(e.state),this.dom.addEventListener("mousedown",a=>{let{options:h}=e.state.field(t).open;for(let f=a.target,u;f&&f!=this.dom;f=f.parentNode)if(f.nodeName=="LI"&&(u=/-(\d+)$/.exec(f.id))&&+u[1]<h.length){this.applyCompletion(e,h[+u[1]]),a.preventDefault();return}if(a.target==this.list){let f=this.list.classList.contains("cm-completionListIncompleteTop")&&a.clientY<this.list.firstChild.getBoundingClientRect().top?this.range.from-1:this.list.classList.contains("cm-completionListIncompleteBottom")&&a.clientY>this.list.lastChild.getBoundingClientRect().bottom?this.range.to:null;f!=null&&(e.dispatch({effects:Aa.of(f)}),a.preventDefault())}}),this.dom.addEventListener("focusout",a=>{let h=e.state.field(this.stateField,!1);h&&h.tooltip&&e.state.facet(le).closeOnBlur&&a.relatedTarget!=e.contentDOM&&e.dispatch({effects:En.of(null)})}),this.showOptions(r,s.id)}mount(){this.updateSel()}showOptions(e,t){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(e,t,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(e){var t;let i=e.state.field(this.stateField),s=e.startState.field(this.stateField);if(this.updateTooltipClass(e.state),i!=s){let{options:r,selected:o,disabled:l}=i.open;(!s.open||s.open.options!=r)&&(this.range=ga(r.length,o,e.state.facet(le).maxRenderedOptions),this.showOptions(r,i.id)),this.updateSel(),l!=((t=s.open)===null||t===void 0?void 0:t.disabled)&&this.dom.classList.toggle("cm-tooltip-autocomplete-disabled",!!l)}}updateTooltipClass(e){let t=this.tooltipClass(e);if(t!=this.currentClass){for(let i of this.currentClass.split(" "))i&&this.dom.classList.remove(i);for(let i of t.split(" "))i&&this.dom.classList.add(i);this.currentClass=t}}positioned(e){this.space=e,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let e=this.view.state.field(this.stateField),t=e.open;(t.selected>-1&&t.selected<this.range.from||t.selected>=this.range.to)&&(this.range=ga(t.options.length,t.selected,this.view.state.facet(le).maxRenderedOptions),this.showOptions(t.options,e.id));let i=this.updateSelectedOption(t.selected);if(i){this.destroyInfo();let{completion:s}=t.options[t.selected],{info:r}=s;if(!r)return;let o=typeof r=="string"?document.createTextNode(r):r(s);if(!o)return;"then"in o?o.then(l=>{l&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(l,s)}).catch(l=>fe(this.view.state,l,"completion info")):(this.addInfoPane(o,s),i.setAttribute("aria-describedby",this.info.id))}}addInfoPane(e,t){this.destroyInfo();let i=this.info=document.createElement("div");if(i.className="cm-tooltip cm-completionInfo",i.id="cm-completionInfo-"+Math.floor(Math.random()*65535).toString(16),e.nodeType!=null)i.appendChild(e),this.infoDestroy=null;else{let{dom:s,destroy:r}=e;i.appendChild(s),this.infoDestroy=r||null}this.dom.appendChild(i),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(e){let t=null;for(let i=this.list.firstChild,s=this.range.from;i;i=i.nextSibling,s++)i.nodeName!="LI"||!i.id?s--:s==e?i.hasAttribute("aria-selected")||(i.setAttribute("aria-selected","true"),t=i):i.hasAttribute("aria-selected")&&(i.removeAttribute("aria-selected"),i.removeAttribute("aria-describedby"));return t&&uQ(this.list,t),t}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let t=this.dom.getBoundingClientRect(),i=this.info.getBoundingClientRect(),s=e.getBoundingClientRect(),r=this.space;if(!r){let o=this.dom.ownerDocument.documentElement;r={left:0,top:0,right:o.clientWidth,bottom:o.clientHeight}}return s.top>Math.min(r.bottom,t.bottom)-10||s.bottom<Math.max(r.top,t.top)+10?null:this.view.state.facet(le).positionInfo(this.view,t,s,i,r,this.dom)}placeInfo(e){this.info&&(e?(e.style&&(this.info.style.cssText=e.style),this.info.className="cm-tooltip cm-completionInfo "+(e.class||"")):this.info.style.cssText="top: -1e6px")}createListBox(e,t,i){let s=document.createElement("ul");s.id=t,s.setAttribute("role","listbox"),s.setAttribute("aria-expanded","true"),s.setAttribute("aria-label",this.view.state.phrase("Completions")),s.addEventListener("mousedown",o=>{o.target==s&&o.preventDefault()});let r=null;for(let o=i.from;o<i.to;o++){let{completion:l,match:a}=e[o],{section:h}=l;if(h){let d=typeof h=="string"?h:h.name;if(d!=r&&(o>i.from||i.from==0))if(r=d,typeof h!="string"&&h.header)s.appendChild(h.header(h));else{let O=s.appendChild(document.createElement("completion-section"));O.textContent=d}}let f=s.appendChild(document.createElement("li"));f.id=t+"-"+o,f.setAttribute("role","option");let u=this.optionClass(l);u&&(f.className=u);for(let d of this.optionContent){let O=d(l,this.view.state,this.view,a);O&&f.appendChild(O)}}return i.from&&s.classList.add("cm-completionListIncompleteTop"),i.to<e.length&&s.classList.add("cm-completionListIncompleteBottom"),s}destroyInfo(){this.info&&(this.infoDestroy&&this.infoDestroy(),this.info.remove(),this.info=null)}destroy(){this.destroyInfo()}};function fQ(n,e){return t=>new xa(t,n,e)}c(fQ,"completionTooltip");function uQ(n,e){let t=n.getBoundingClientRect(),i=e.getBoundingClientRect(),s=t.height/n.offsetHeight;i.top<t.top?n.scrollTop-=(t.top-i.top)/s:i.bottom>t.bottom&&(n.scrollTop+=(i.bottom-t.bottom)/s)}c(uQ,"scrollIntoView");function Dd(n){return(n.boost||0)*100+(n.apply?10:0)+(n.info?5:0)+(n.type?1:0)}c(Dd,"score");function dQ(n,e){let t=[],i=null,s=null,r=c(f=>{t.push(f);let{section:u}=f.completion;if(u){i||(i=[]);let d=typeof u=="string"?u:u.name;i.some(O=>O.name==d)||i.push(typeof u=="string"?{name:d}:u)}},"addOption"),o=e.facet(le);for(let f of n)if(f.hasResult()){let u=f.result.getMatch;if(f.result.filter===!1)for(let d of f.result.options)r(new wr(d,f.source,u?u(d):[],1e9-t.length));else{let d=e.sliceDoc(f.from,f.to),O,p=o.filterStrict?new ba(d):new ya(d);for(let m of f.result.options)if(O=p.match(m.label)){let g=m.displayLabel?u?u(m,O.matched):[]:O.matched,Q=O.score+(m.boost||0);if(r(new wr(m,f.source,g,Q)),typeof m.section=="object"&&m.section.rank==="dynamic"){let{name:b}=m.section;s||(s=Object.create(null)),s[b]=Math.max(Q,s[b]||-1e9)}}}}if(i){let f=Object.create(null),u=0,d=c((O,p)=>(O.rank==="dynamic"&&p.rank==="dynamic"?s[p.name]-s[O.name]:0)||(typeof O.rank=="number"?O.rank:1e9)-(typeof p.rank=="number"?p.rank:1e9)||(O.name<p.name?-1:1),"cmp");for(let O of i.sort(d))u-=1e5,f[O.name]=u;for(let O of t){let{section:p}=O.completion;p&&(O.score+=f[typeof p=="string"?p:p.name])}}let l=[],a=null,h=o.compareCompletions;for(let f of t.sort((u,d)=>d.score-u.score||h(u.completion,d.completion))){let u=f.completion;!a||a.label!=u.label||a.detail!=u.detail||a.type!=null&&u.type!=null&&a.type!=u.type||a.apply!=u.apply||a.boost!=u.boost?l.push(f):Dd(f.completion)>Dd(a)&&(l[l.length-1]=f),a=f.completion}return l}c(dQ,"sortOptions");var wa=class n{static{c(this,"CompletionDialog")}constructor(e,t,i,s,r,o){this.options=e,this.attrs=t,this.tooltip=i,this.timestamp=s,this.selected=r,this.disabled=o}setSelected(e,t){return e==this.selected||e>=this.options.length?this:new n(this.options,Ld(t,e),this.tooltip,this.timestamp,e,this.disabled)}static build(e,t,i,s,r,o){if(s&&!o&&e.some(h=>h.isPending))return s.setDisabled();let l=dQ(e,t);if(!l.length)return s&&e.some(h=>h.isPending)?s.setDisabled():null;let a=t.facet(le).selectOnOpen?0:-1;if(s&&s.selected!=a&&s.selected!=-1){let h=s.options[s.selected].completion;for(let f=0;f<l.length;f++)if(l[f].completion==h){a=f;break}}return new n(l,Ld(i,a),{pos:e.reduce((h,f)=>f.hasResult()?Math.min(h,f.from):h,1e8),create:QQ,above:r.aboveCursor},s?s.timestamp:Date.now(),a,!1)}map(e){return new n(this.options,this.attrs,{...this.tooltip,pos:e.mapPos(this.tooltip.pos)},this.timestamp,this.selected,this.disabled)}setDisabled(){return new n(this.options,this.attrs,this.tooltip,this.timestamp,this.selected,!0)}},ka=class n{static{c(this,"CompletionState")}constructor(e,t,i){this.active=e,this.id=t,this.open=i}static start(){return new n(gQ,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:t}=e,i=t.facet(le),r=(i.override||t.languageDataAt("autocomplete",hi(t)).map(aQ)).map(a=>(this.active.find(f=>f.source==a)||new Qt(a,this.active.some(f=>f.state!=0)?1:0)).update(e,i));r.length==this.active.length&&r.every((a,h)=>a==this.active[h])&&(r=this.active);let o=this.open,l=e.effects.some(a=>a.is(Xa));o&&e.docChanged&&(o=o.map(e.changes)),e.selection||r.some(a=>a.hasResult()&&e.changes.touchesRange(a.from,a.to))||!OQ(r,this.active)||l?o=wa.build(r,t,this.id,o,i,l):o&&o.disabled&&!r.some(a=>a.isPending)&&(o=null),!o&&r.every(a=>!a.isPending)&&r.some(a=>a.hasResult())&&(r=r.map(a=>a.hasResult()?new Qt(a.source,0):a));for(let a of e.effects)a.is(Aa)&&(o=o&&o.setSelected(a.value,this.id));return r==this.active&&o==this.open?this:new n(r,this.id,o)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?pQ:mQ}};function OQ(n,e){if(n==e)return!0;for(let t=0,i=0;;){for(;t<n.length&&!n[t].hasResult();)t++;for(;i<e.length&&!e[i].hasResult();)i++;let s=t==n.length,r=i==e.length;if(s||r)return s==r;if(n[t++].result!=e[i++].result)return!1}}c(OQ,"sameResults");var pQ={"aria-autocomplete":"list"},mQ={};function Ld(n,e){let t={"aria-autocomplete":"list","aria-haspopup":"listbox","aria-controls":n};return e>-1&&(t["aria-activedescendant"]=n+"-"+e),t}c(Ld,"makeAttrs");var gQ=[];function Nd(n,e){if(n.isUserEvent("input.complete")){let i=n.annotation(Za);if(i&&e.activateOnCompletion(i))return 12}let t=n.isUserEvent("input.type");return t&&e.activateOnTyping?5:t?1:n.isUserEvent("delete.backward")?2:n.selection?8:n.docChanged?16:0}c(Nd,"getUpdateType");var Qt=class n{static{c(this,"ActiveSource")}constructor(e,t,i=!1){this.source=e,this.state=t,this.explicit=i}hasResult(){return!1}get isPending(){return this.state==1}update(e,t){let i=Nd(e,t),s=this;(i&8||i&16&&this.touches(e))&&(s=new n(s.source,0)),i&4&&s.state==0&&(s=new n(this.source,1)),s=s.updateFor(e,i);for(let r of e.effects)if(r.is(kr))s=new n(s.source,1,r.value);else if(r.is(En))s=new n(s.source,0);else if(r.is(Xa))for(let o of r.value)o.source==s.source&&(s=o);return s}updateFor(e,t){return this.map(e.changes)}map(e){return this}touches(e){return e.changes.touchesRange(hi(e.state))}},vr=class n extends Qt{static{c(this,"ActiveResult")}constructor(e,t,i,s,r,o){super(e,3,t),this.limit=i,this.result=s,this.from=r,this.to=o}hasResult(){return!0}updateFor(e,t){var i;if(!(t&3))return this.map(e.changes);let s=this.result;s.map&&!e.changes.empty&&(s=s.map(s,e.changes));let r=e.changes.mapPos(this.from),o=e.changes.mapPos(this.to,1),l=hi(e.state);if(l>o||!s||t&2&&(hi(e.startState)==this.from||l<this.limit))return new Qt(this.source,t&4?1:0);let a=e.changes.mapPos(this.limit);return SQ(s.validFor,e.state,r,o)?new n(this.source,this.explicit,a,s,r,o):s.update&&(s=s.update(s,r,o,new xr(e.state,l,!1)))?new n(this.source,this.explicit,a,s,s.from,(i=s.to)!==null&&i!==void 0?i:hi(e.state)):new Qt(this.source,1,this.explicit)}map(e){return e.empty?this:(this.result.map?this.result.map(this.result,e):this.result)?new n(this.source,this.explicit,e.mapPos(this.limit),this.result,e.mapPos(this.from),e.mapPos(this.to,1)):new Qt(this.source,0)}touches(e){return e.changes.touchesRange(this.from,this.to)}};function SQ(n,e,t,i){if(!n)return!1;let s=e.sliceDoc(t,i);return typeof n=="function"?n(s,t,i,e):jd(n,!0).test(s)}c(SQ,"checkValid");var Xa=R.define({map(n,e){return n.map(t=>t.map(e))}}),$e=ie.define({create(){return ka.start()},update(n,e){return n.update(e)},provide:c(n=>[yn.from(n,e=>e.tooltip),P.contentAttributes.from(n,e=>e.attrs)],"provide")});function Ra(n,e){let t=e.completion.apply||e.completion.label,i=n.state.field($e).active.find(s=>s.source==e.source);return i instanceof vr?(typeof t=="string"?n.dispatch({...lQ(n.state,t,i.from,i.to),annotations:Za.of(e.completion)}):t(n,e.completion,i.from,i.to),!0):!1}c(Ra,"applyCompletion");var QQ=fQ($e,Ra);function br(n,e="option"){return t=>{let i=t.state.field($e,!1);if(!i||!i.open||i.open.disabled||Date.now()-i.open.timestamp<t.state.facet(le).interactionDelay)return!1;let s=1,r;e=="page"&&(r=xl(t,i.open.tooltip))&&(s=Math.max(2,Math.floor(r.dom.offsetHeight/r.dom.querySelector("li").offsetHeight)-1));let{length:o}=i.open.options,l=i.open.selected>-1?i.open.selected+s*(n?1:-1):n?0:o-1;return l<0?l=e=="page"?0:o-1:l>=o&&(l=e=="page"?o-1:0),t.dispatch({effects:Aa.of(l)}),!0}}c(br,"moveCompletionSelection");var yQ=c(n=>{let e=n.state.field($e,!1);return n.state.readOnly||!e||!e.open||e.open.selected<0||e.open.disabled||Date.now()-e.open.timestamp<n.state.facet(le).interactionDelay?!1:Ra(n,e.open.options[e.open.selected])},"acceptCompletion"),Sa=c(n=>n.state.field($e,!1)?(n.dispatch({effects:kr.of(!0)}),!0):!1,"startCompletion"),bQ=c(n=>{let e=n.state.field($e,!1);return!e||!e.active.some(t=>t.state!=0)?!1:(n.dispatch({effects:En.of(null)}),!0)},"closeCompletion"),va=class{static{c(this,"RunningQuery")}constructor(e,t){this.active=e,this.context=t,this.time=Date.now(),this.updates=[],this.done=void 0}},xQ=50,wQ=1e3,kQ=te.fromClass(class{constructor(n){this.view=n,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(let e of n.state.field($e).active)e.isPending&&this.startQuery(e)}update(n){let e=n.state.field($e),t=n.state.facet(le);if(!n.selectionSet&&!n.docChanged&&n.startState.field($e)==e)return;let i=n.transactions.some(r=>{let o=Nd(r,t);return o&8||(r.selection||r.docChanged)&&!(o&3)});for(let r=0;r<this.running.length;r++){let o=this.running[r];if(i||o.context.abortOnDocChange&&n.docChanged||o.updates.length+n.transactions.length>xQ&&Date.now()-o.time>wQ){for(let l of o.context.abortListeners)try{l()}catch(a){fe(this.view.state,a)}o.context.abortListeners=null,this.running.splice(r--,1)}else o.updates.push(...n.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),n.transactions.some(r=>r.effects.some(o=>o.is(kr)))&&(this.pendingStart=!0);let s=this.pendingStart?50:t.activateOnTypingDelay;if(this.debounceUpdate=e.active.some(r=>r.isPending&&!this.running.some(o=>o.active.source==r.source))?setTimeout(()=>this.startUpdate(),s):-1,this.composing!=0)for(let r of n.transactions)r.isUserEvent("input.type")?this.composing=2:this.composing==2&&r.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:n}=this.view,e=n.field($e);for(let t of e.active)t.isPending&&!this.running.some(i=>i.active.source==t.source)&&this.startQuery(t);this.running.length&&e.open&&e.open.disabled&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(le).updateSyncTime))}startQuery(n){let{state:e}=this.view,t=hi(e),i=new xr(e,t,n.explicit,this.view),s=new va(n,i);this.running.push(s),Promise.resolve(n.source(i)).then(r=>{s.context.aborted||(s.done=r||null,this.scheduleAccept())},r=>{this.view.dispatch({effects:En.of(null)}),fe(this.view.state,r)})}scheduleAccept(){this.running.every(n=>n.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(le).updateSyncTime))}accept(){var n;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],t=this.view.state.facet(le),i=this.view.state.field($e);for(let s=0;s<this.running.length;s++){let r=this.running[s];if(r.done===void 0)continue;if(this.running.splice(s--,1),r.done){let l=hi(r.updates.length?r.updates[0].startState:this.view.state),a=Math.min(l,r.done.from+(r.active.explicit?0:1)),h=new vr(r.active.source,r.active.explicit,a,r.done,r.done.from,(n=r.done.to)!==null&&n!==void 0?n:l);for(let f of r.updates)h=h.update(f,t);if(h.hasResult()){e.push(h);continue}}let o=i.active.find(l=>l.source==r.active.source);if(o&&o.isPending)if(r.done==null){let l=new Qt(r.active.source,0);for(let a of r.updates)l=l.update(a,t);l.isPending||e.push(l)}else this.startQuery(o)}(e.length||i.open&&i.open.disabled)&&this.view.dispatch({effects:Xa.of(e)})}},{eventHandlers:{blur(n){let e=this.view.state.field($e,!1);if(e&&e.tooltip&&this.view.state.facet(le).closeOnBlur){let t=e.open&&xl(this.view,e.open.tooltip);(!t||!t.dom.contains(n.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:En.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:kr.of(!1)}),20),this.composing=0}}}),vQ=typeof navigator=="object"&&/Win/.test(navigator.platform),PQ=qe.highest(P.domEventHandlers({keydown(n,e){let t=e.state.field($e,!1);if(!t||!t.open||t.open.disabled||t.open.selected<0||n.key.length>1||n.ctrlKey&&!(vQ&&n.altKey)||n.metaKey)return!1;let i=t.open.options[t.open.selected],s=t.active.find(o=>o.source==i.source),r=i.completion.commitCharacters||s.result.commitCharacters;return r&&r.indexOf(n.key)>-1&&Ra(e,i),!1}})),Gd=P.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"\xB7\xB7\xB7"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box",whiteSpace:"pre-line"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'\u0192'"}},".cm-completionIcon-class":{"&:after":{content:"'\u25CB'"}},".cm-completionIcon-interface":{"&:after":{content:"'\u25CC'"}},".cm-completionIcon-variable":{"&:after":{content:"'\u{1D465}'"}},".cm-completionIcon-constant":{"&:after":{content:"'\u{1D436}'"}},".cm-completionIcon-type":{"&:after":{content:"'\u{1D461}'"}},".cm-completionIcon-enum":{"&:after":{content:"'\u222A'"}},".cm-completionIcon-property":{"&:after":{content:"'\u25A1'"}},".cm-completionIcon-keyword":{"&:after":{content:"'\u{1F511}\uFE0E'"}},".cm-completionIcon-namespace":{"&:after":{content:"'\u25A2'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}}),Pa=class{static{c(this,"FieldPos")}constructor(e,t,i,s){this.field=e,this.line=t,this.from=i,this.to=s}},$a=class n{static{c(this,"FieldRange")}constructor(e,t,i){this.field=e,this.from=t,this.to=i}map(e){let t=e.mapPos(this.from,-1,oe.TrackDel),i=e.mapPos(this.to,1,oe.TrackDel);return t==null||i==null?null:new n(this.field,t,i)}},Ta=class n{static{c(this,"Snippet")}constructor(e,t){this.lines=e,this.fieldPositions=t}instantiate(e,t){let i=[],s=[t],r=e.doc.lineAt(t),o=/^\s*/.exec(r.text)[0];for(let a of this.lines){if(i.length){let h=o,f=/^\t*/.exec(a)[0].length;for(let u=0;u<f;u++)h+=e.facet(zi);s.push(t+h.length-f),a=h+a.slice(f)}i.push(a),t+=a.length+1}let l=this.fieldPositions.map(a=>new $a(a.field,s[a.line]+a.from,s[a.line]+a.to));return{text:i,ranges:l}}static parse(e){let t=[],i=[],s=[],r;for(let o of e.split(/\r\n?|\n/)){for(;r=/[#$]\{(?:(\d+)(?::([^{}]*))?|((?:\\[{}]|[^{}])*))\}/.exec(o);){let l=r[1]?+r[1]:null,a=r[2]||r[3]||"",h=-1,f=a.replace(/\\[{}]/g,u=>u[1]);for(let u=0;u<t.length;u++)(l!=null?t[u].seq==l:f&&t[u].name==f)&&(h=u);if(h<0){let u=0;for(;u<t.length&&(l==null||t[u].seq!=null&&t[u].seq<l);)u++;t.splice(u,0,{seq:l,name:f}),h=u;for(let d of s)d.field>=h&&d.field++}for(let u of s)if(u.line==i.length&&u.from>r.index){let d=r[2]?3+(r[1]||"").length:2;u.from-=d,u.to-=d}s.push(new Pa(h,i.length,r.index,r.index+f.length)),o=o.slice(0,r.index)+a+o.slice(r.index+r[0].length)}o=o.replace(/\\([{}])/g,(l,a,h)=>{for(let f of s)f.line==i.length&&f.from>h&&(f.from--,f.to--);return a}),i.push(o)}return new n(i,s)}},$Q=A.widget({widget:new class extends ye{toDOM(){let n=document.createElement("span");return n.className="cm-snippetFieldPosition",n}ignoreEvent(){return!1}}}),TQ=A.mark({class:"cm-snippetField"}),Wi=class n{static{c(this,"ActiveSnippet")}constructor(e,t){this.ranges=e,this.active=t,this.deco=A.set(e.map(i=>(i.from==i.to?$Q:TQ).range(i.from,i.to)),!0)}map(e){let t=[];for(let i of this.ranges){let s=i.map(e);if(!s)return null;t.push(s)}return new n(t,this.active)}selectionInsideField(e){return e.ranges.every(t=>this.ranges.some(i=>i.field==this.active&&i.from<=t.from&&i.to>=t.to))}},Vn=R.define({map(n,e){return n&&n.map(e)}}),CQ=R.define(),zn=ie.define({create(){return null},update(n,e){for(let t of e.effects){if(t.is(Vn))return t.value;if(t.is(CQ)&&n)return new Wi(n.ranges,t.value)}return n&&e.docChanged&&(n=n.map(e.changes)),n&&e.selection&&!n.selectionInsideField(e.selection)&&(n=null),n},provide:c(n=>P.decorations.from(n,e=>e?e.deco:A.none),"provide")});function Ma(n,e){return y.create(n.filter(t=>t.field==e).map(t=>y.range(t.from,t.to)))}c(Ma,"fieldSelection");function ZQ(n){let e=Ta.parse(n);return(t,i,s,r)=>{let{text:o,ranges:l}=e.instantiate(t.state,s),{main:a}=t.state.selection,h={changes:{from:s,to:r==a.from?a.to:r,insert:V.of(o)},scrollIntoView:!0,annotations:i?[Za.of(i),se.userEvent.of("input.complete")]:void 0};if(l.length&&(h.selection=Ma(l,0)),l.some(f=>f.field>0)){let f=new Wi(l,0),u=h.effects=[Vn.of(f)];t.state.field(zn,!1)===void 0&&u.push(R.appendConfig.of([zn,EQ,zQ,Gd]))}t.dispatch(t.state.update(h))}}c(ZQ,"snippet");function Ud(n){return({state:e,dispatch:t})=>{let i=e.field(zn,!1);if(!i||n<0&&i.active==0)return!1;let s=i.active+n,r=n>0&&!i.ranges.some(o=>o.field==s+n);return t(e.update({selection:Ma(i.ranges,s),effects:Vn.of(r?null:new Wi(i.ranges,s)),scrollIntoView:!0})),!0}}c(Ud,"moveField");var AQ=c(({state:n,dispatch:e})=>n.field(zn,!1)?(e(n.update({effects:Vn.of(null)})),!0):!1,"clearSnippet"),XQ=Ud(1),RQ=Ud(-1);var MQ=[{key:"Tab",run:XQ,shift:RQ},{key:"Escape",run:AQ}],qd=T.define({combine(n){return n.length?n[0]:MQ}}),EQ=qe.highest(Ai.compute([qd],n=>n.facet(qd)));function be(n,e){return{...e,apply:ZQ(n)}}c(be,"snippetCompletion");var zQ=P.domEventHandlers({mousedown(n,e){let t=e.state.field(zn,!1),i;if(!t||(i=e.posAtCoords({x:n.clientX,y:n.clientY}))==null)return!1;let s=t.ranges.find(r=>r.from<=i&&r.to>=i);return!s||s.field==t.active?!1:(e.dispatch({selection:Ma(t.ranges,s.field),effects:Vn.of(t.ranges.some(r=>r.field>s.field)?new Wi(t.ranges,s.field):null),scrollIntoView:!0}),!0)}});var Yn={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},ai=R.define({map(n,e){let t=e.mapPos(n,-1,oe.TrackAfter);return t??void 0}}),Ea=new class extends Le{};Ea.startSide=1;Ea.endSide=-1;var Fd=ie.define({create(){return D.empty},update(n,e){if(n=n.map(e.changes),e.selection){let t=e.state.doc.lineAt(e.selection.main.head);n=n.update({filter:c(i=>i>=t.from&&i<=t.to,"filter")})}for(let t of e.effects)t.is(ai)&&(n=n.update({add:[Ea.range(t.value,t.value+1)]}));return n}});function Hd(){return[VQ,Fd]}c(Hd,"closeBrackets");var Qa="()[]{}<>\xAB\xBB\xBB\xAB\uFF3B\uFF3D\uFF5B\uFF5D";function Kd(n){for(let e=0;e<Qa.length;e+=2)if(Qa.charCodeAt(e)==n)return Qa.charAt(e+1);return tn(n<128?n:n+1)}c(Kd,"closing");function Jd(n,e){return n.languageDataAt("closeBrackets",e)[0]||Yn}c(Jd,"config");var YQ=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),VQ=P.inputHandler.of((n,e,t,i)=>{if((YQ?n.composing:n.compositionStarted)||n.state.readOnly)return!1;let s=n.state.selection.main;if(i.length>2||i.length==2&&Ae(ce(i,0))==1||e!=s.from||t!=s.to)return!1;let r=DQ(n.state,i);return r?(n.dispatch(r),!0):!1}),_Q=c(({state:n,dispatch:e})=>{if(n.readOnly)return!1;let i=Jd(n,n.selection.main.head).brackets||Yn.brackets,s=null,r=n.changeByRange(o=>{if(o.empty){let l=LQ(n.doc,o.head);for(let a of i)if(a==l&&Pr(n.doc,o.head)==Kd(ce(a,0)))return{changes:{from:o.head-a.length,to:o.head+a.length},range:y.cursor(o.head-a.length)}}return{range:s=o}});return s||e(n.update(r,{scrollIntoView:!0,userEvent:"delete.backward"})),!s},"deleteBracketPair"),eO=[{key:"Backspace",run:_Q}];function DQ(n,e){let t=Jd(n,n.selection.main.head),i=t.brackets||Yn.brackets;for(let s of i){let r=Kd(ce(s,0));if(e==s)return r==s?BQ(n,s,i.indexOf(s+s+s)>-1,t):qQ(n,s,r,t.before||Yn.before);if(e==r&&tO(n,n.selection.main.from))return WQ(n,s,r)}return null}c(DQ,"insertBracket");function tO(n,e){let t=!1;return n.field(Fd).between(0,n.doc.length,i=>{i==e&&(t=!0)}),t}c(tO,"closedBracketAt");function Pr(n,e){let t=n.sliceString(e,e+2);return t.slice(0,Ae(ce(t,0)))}c(Pr,"nextChar");function LQ(n,e){let t=n.sliceString(e-2,e);return Ae(ce(t,0))==t.length?t:t.slice(1)}c(LQ,"prevChar");function qQ(n,e,t,i){let s=null,r=n.changeByRange(o=>{if(!o.empty)return{changes:[{insert:e,from:o.from},{insert:t,from:o.to}],effects:ai.of(o.to+e.length),range:y.range(o.anchor+e.length,o.head+e.length)};let l=Pr(n.doc,o.head);return!l||/\s/.test(l)||i.indexOf(l)>-1?{changes:{insert:e+t,from:o.head},effects:ai.of(o.head+e.length),range:y.cursor(o.head+e.length)}:{range:s=o}});return s?null:n.update(r,{scrollIntoView:!0,userEvent:"input.type"})}c(qQ,"handleOpen");function WQ(n,e,t){let i=null,s=n.changeByRange(r=>r.empty&&Pr(n.doc,r.head)==t?{changes:{from:r.head,to:r.head+t.length,insert:t},range:y.cursor(r.head+t.length)}:i={range:r});return i?null:n.update(s,{scrollIntoView:!0,userEvent:"input.type"})}c(WQ,"handleClose");function BQ(n,e,t,i){let s=i.stringPrefixes||Yn.stringPrefixes,r=null,o=n.changeByRange(l=>{if(!l.empty)return{changes:[{insert:e,from:l.from},{insert:e,from:l.to}],effects:ai.of(l.to+e.length),range:y.range(l.anchor+e.length,l.head+e.length)};let a=l.head,h=Pr(n.doc,a),f;if(h==e){if(Wd(n,a))return{changes:{insert:e+e,from:a},effects:ai.of(a+e.length),range:y.cursor(a+e.length)};if(tO(n,a)){let d=t&&n.sliceDoc(a,a+e.length*3)==e+e+e?e+e+e:e;return{changes:{from:a,to:a+d.length,insert:d},range:y.cursor(a+d.length)}}}else{if(t&&n.sliceDoc(a-2*e.length,a)==e+e&&(f=Bd(n,a-2*e.length,s))>-1&&Wd(n,f))return{changes:{insert:e+e+e+e,from:a},effects:ai.of(a+e.length),range:y.cursor(a+e.length)};if(n.charCategorizer(a)(h)!=j.Word&&Bd(n,a,s)>-1&&!IQ(n,a,e,s))return{changes:{insert:e+e,from:a},effects:ai.of(a+e.length),range:y.cursor(a+e.length)}}return{range:r=l}});return r?null:n.update(o,{scrollIntoView:!0,userEvent:"input.type"})}c(BQ,"handleSame");function Wd(n,e){let t=F(n).resolveInner(e+1);return t.parent&&t.from==e}c(Wd,"nodeStart");function IQ(n,e,t,i){let s=F(n).resolveInner(e,-1),r=i.reduce((o,l)=>Math.max(o,l.length),0);for(let o=0;o<5;o++){let l=n.sliceDoc(s.from,Math.min(s.to,s.from+t.length+r)),a=l.indexOf(t);if(!a||a>-1&&i.indexOf(l.slice(0,a))>-1){let f=s.firstChild;for(;f&&f.from==s.from&&f.to-f.from>t.length+a;){if(n.sliceDoc(f.to-t.length,f.to)==t)return!1;f=f.firstChild}return!0}let h=s.to==e&&s.parent;if(!h)break;s=h}return!1}c(IQ,"probablyInString");function Bd(n,e,t){let i=n.charCategorizer(e);if(i(n.sliceDoc(e-1,e))!=j.Word)return e;for(let s of t){let r=e-s.length;if(n.sliceDoc(r,e)==s&&i(n.sliceDoc(r-1,r))!=j.Word)return r}return-1}c(Bd,"canStartStringAt");function $r(n={}){return[PQ,$e,le.of(n),kQ,jQ,Gd]}c($r,"autocompletion");var za=[{key:"Ctrl-Space",run:Sa},{mac:"Alt-`",run:Sa},{mac:"Alt-i",run:Sa},{key:"Escape",run:bQ},{key:"ArrowDown",run:br(!0)},{key:"ArrowUp",run:br(!1)},{key:"PageDown",run:br(!0,"page")},{key:"PageUp",run:br(!1,"page")},{key:"Enter",run:yQ}],jQ=qe.highest(Ai.computeN([le],n=>n.facet(le).defaultKeymap?[za]:[]));var Cr=class{static{c(this,"SelectedDiagnostic")}constructor(e,t,i){this.from=e,this.to=t,this.diagnostic=i}},ci=class n{static{c(this,"LintState")}constructor(e,t,i){this.diagnostics=e,this.panel=t,this.selected=i}static init(e,t,i){let s=i.facet(_n).markerFilter;s&&(e=s(e,i));let r=e.slice().sort((O,p)=>O.from-p.from||O.to-p.to),o=new Ze,l=[],a=0,h=i.doc.iter(),f=0,u=i.doc.length;for(let O=0;;){let p=O==r.length?null:r[O];if(!p&&!l.length)break;let m,g;if(l.length)m=a,g=l.reduce((x,Z)=>Math.min(x,Z.to),p&&p.from>m?p.from:1e8);else{if(m=p.from,m>u)break;g=p.to,l.push(p),O++}for(;O<r.length;){let x=r[O];if(x.from==m&&(x.to>x.from||x.to==m))l.push(x),O++,g=Math.min(x.to,g);else{g=Math.min(x.from,g);break}}g=Math.min(g,u);let Q=!1;if(l.some(x=>x.from==m&&(x.to==g||g==u))&&(Q=m==g,!Q&&g-m<10)){let x=m-(f+h.value.length);x>0&&(h.next(x),f=m);for(let Z=m;;){if(Z>=g){Q=!0;break}if(!h.lineBreak&&f+h.value.length>Z)break;Z=f+h.value.length,f+=h.value.length,h.next()}}let b=ny(l);if(Q)o.add(m,m,A.widget({widget:new Ya(b),diagnostics:l.slice()}));else{let x=l.reduce((Z,w)=>w.markClass?Z+" "+w.markClass:Z,"");o.add(m,g,A.mark({class:"cm-lintRange cm-lintRange-"+b+x,diagnostics:l.slice(),inclusiveEnd:l.some(Z=>Z.to>g)}))}if(a=g,a==u)break;for(let x=0;x<l.length;x++)l[x].to<=a&&l.splice(x--,1)}let d=o.finish();return new n(d,t,Vt(d))}};function Vt(n,e=null,t=0){let i=null;return n.between(t,1e9,(s,r,{spec:o})=>{if(!(e&&o.diagnostics.indexOf(e)<0))if(!i)i=new Cr(s,r,e||o.diagnostics[0]);else{if(o.diagnostics.indexOf(i.diagnostic)<0)return!1;i=new Cr(i.from,r,i.diagnostic)}}),i}c(Vt,"findDiagnostic");function NQ(n,e){let t=e.pos,i=e.end||t,s=n.state.facet(_n).hideOn(n,t,i);if(s!=null)return s;let r=n.startState.doc.lineAt(e.pos);return!!(n.effects.some(o=>o.is(sO))||n.changes.touchesRange(r.from,Math.max(r.to,i)))}c(NQ,"hideTooltip");function GQ(n,e){return n.field(ze,!1)?e:e.concat(R.appendConfig.of(sy))}c(GQ,"maybeEnableLint");var sO=R.define(),Va=R.define(),rO=R.define(),ze=ie.define({create(){return new ci(A.none,null,null)},update(n,e){if(e.docChanged&&n.diagnostics.size){let t=n.diagnostics.map(e.changes),i=null,s=n.panel;if(n.selected){let r=e.changes.mapPos(n.selected.from,1);i=Vt(t,n.selected.diagnostic,r)||Vt(t,null,r)}!t.size&&s&&e.state.facet(_n).autoPanel&&(s=null),n=new ci(t,s,i)}for(let t of e.effects)if(t.is(sO)){let i=e.state.facet(_n).autoPanel?t.value.length?Dn.open:null:n.panel;n=ci.init(t.value,i,e.state)}else t.is(Va)?n=new ci(n.diagnostics,t.value?Dn.open:null,n.selected):t.is(rO)&&(n=new ci(n.diagnostics,n.panel,t.value));return n},provide:c(n=>[Jt.from(n,e=>e.panel),P.decorations.from(n,e=>e.diagnostics)],"provide")});var UQ=A.mark({class:"cm-lintRange cm-lintRange-active"});function FQ(n,e,t){let{diagnostics:i}=n.state.field(ze),s,r=-1,o=-1;i.between(e-(t<0?1:0),e+(t>0?1:0),(a,h,{spec:f})=>{if(e>=a&&e<=h&&(a==h||(e>a||t>0)&&(e<h||t<0)))return s=f.diagnostics,r=a,o=h,!1});let l=n.state.facet(_n).tooltipFilter;return s&&l&&(s=l(s,n.state)),s?{pos:r,end:o,above:n.state.doc.lineAt(r).to<o,create(){return{dom:HQ(n,s)}}}:null}c(FQ,"lintTooltip");function HQ(n,e){return q("ul",{class:"cm-tooltip-lint"},e.map(t=>aO(n,t,!1)))}c(HQ,"diagnosticsTooltip");var KQ=c(n=>{let e=n.state.field(ze,!1);(!e||!e.panel)&&n.dispatch({effects:GQ(n.state,[Va.of(!0)])});let t=bn(n,Dn.open);return t&&t.dom.querySelector(".cm-panel-lint ul").focus(),!0},"openLintPanel"),iO=c(n=>{let e=n.state.field(ze,!1);return!e||!e.panel?!1:(n.dispatch({effects:Va.of(!1)}),!0)},"closeLintPanel"),JQ=c(n=>{let e=n.state.field(ze,!1);if(!e)return!1;let t=n.state.selection.main,i=Vt(e.diagnostics,null,t.to+1);return!i&&(i=Vt(e.diagnostics,null,0),!i||i.from==t.from&&i.to==t.to)?!1:(n.dispatch({selection:{anchor:i.from,head:i.to},scrollIntoView:!0}),!0)},"nextDiagnostic");var oO=[{key:"Mod-Shift-m",run:KQ,preventDefault:!0},{key:"F8",run:JQ}];var _n=T.define({combine(n){return{sources:n.map(e=>e.source).filter(e=>e!=null),...pe(n.map(e=>e.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null,hideOn:c(()=>null,"hideOn")},{delay:Math.max,markerFilter:nO,tooltipFilter:nO,needsRefresh:c((e,t)=>e?t?i=>e(i)||t(i):e:t,"needsRefresh"),hideOn:c((e,t)=>e?t?(i,s,r)=>e(i,s,r)||t(i,s,r):e:t,"hideOn"),autoPanel:c((e,t)=>e||t,"autoPanel")})}}});function nO(n,e){return n?e?(t,i)=>e(n(t,i),i):n:e}c(nO,"combineFilter");function lO(n){let e=[];if(n)e:for(let{name:t}of n){for(let i=0;i<t.length;i++){let s=t[i];if(/[a-zA-Z]/.test(s)&&!e.some(r=>r.toLowerCase()==s.toLowerCase())){e.push(s);continue e}}e.push("")}return e}c(lO,"assignKeys");function aO(n,e,t){var i;let s=t?lO(e.actions):[];return q("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},q("span",{class:"cm-diagnosticText"},e.renderMessage?e.renderMessage(n):e.message),(i=e.actions)===null||i===void 0?void 0:i.map((r,o)=>{let l=!1,a=c(O=>{if(O.preventDefault(),l)return;l=!0;let p=Vt(n.state.field(ze).diagnostics,e);p&&r.apply(n,p.from,p.to)},"click"),{name:h}=r,f=s[o]?h.indexOf(s[o]):-1,u=f<0?h:[h.slice(0,f),q("u",h.slice(f,f+1)),h.slice(f+1)],d=r.markClass?" "+r.markClass:"";return q("button",{type:"button",class:"cm-diagnosticAction"+d,onclick:a,onmousedown:a,"aria-label":` Action: ${h}${f<0?"":` (access key "${s[o]})"`}.`},u)}),e.source&&q("div",{class:"cm-diagnosticSource"},e.source))}c(aO,"renderDiagnostic");var Ya=class extends ye{static{c(this,"DiagnosticWidget")}constructor(e){super(),this.sev=e}eq(e){return e.sev==this.sev}toDOM(){return q("span",{class:"cm-lintPoint cm-lintPoint-"+this.sev})}},Zr=class{static{c(this,"PanelItem")}constructor(e,t){this.diagnostic=t,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=aO(e,t,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}},Dn=class n{static{c(this,"LintPanel")}constructor(e){this.view=e,this.items=[];let t=c(s=>{if(!(s.ctrlKey||s.altKey||s.metaKey)){if(s.keyCode==27)iO(this.view),this.view.focus();else if(s.keyCode==38||s.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(s.keyCode==40||s.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(s.keyCode==36)this.moveSelection(0);else if(s.keyCode==35)this.moveSelection(this.items.length-1);else if(s.keyCode==13)this.view.focus();else if(s.keyCode>=65&&s.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:r}=this.items[this.selectedIndex],o=lO(r.actions);for(let l=0;l<o.length;l++)if(o[l].toUpperCase().charCodeAt(0)==s.keyCode){let a=Vt(this.view.state.field(ze).diagnostics,r);a&&r.actions[l].apply(e,a.from,a.to)}}else return;s.preventDefault()}},"onkeydown"),i=c(s=>{for(let r=0;r<this.items.length;r++)this.items[r].dom.contains(s.target)&&this.moveSelection(r)},"onclick");this.list=q("ul",{tabIndex:0,role:"listbox","aria-label":this.view.state.phrase("Diagnostics"),onkeydown:t,onclick:i}),this.dom=q("div",{class:"cm-panel-lint"},this.list,q("button",{type:"button",name:"close","aria-label":this.view.state.phrase("close"),onclick:c(()=>iO(this.view),"onclick")},"\xD7")),this.update()}get selectedIndex(){let e=this.view.state.field(ze).selected;if(!e)return-1;for(let t=0;t<this.items.length;t++)if(this.items[t].diagnostic==e.diagnostic)return t;return-1}update(){let{diagnostics:e,selected:t}=this.view.state.field(ze),i=0,s=!1,r=null,o=new Set;for(e.between(0,this.view.state.doc.length,(l,a,{spec:h})=>{for(let f of h.diagnostics){if(o.has(f))continue;o.add(f);let u=-1,d;for(let O=i;O<this.items.length;O++)if(this.items[O].diagnostic==f){u=O;break}u<0?(d=new Zr(this.view,f),this.items.splice(i,0,d),s=!0):(d=this.items[u],u>i&&(this.items.splice(i,u-i),s=!0)),t&&d.diagnostic==t.diagnostic?d.dom.hasAttribute("aria-selected")||(d.dom.setAttribute("aria-selected","true"),r=d):d.dom.hasAttribute("aria-selected")&&d.dom.removeAttribute("aria-selected"),i++}});i<this.items.length&&!(this.items.length==1&&this.items[0].diagnostic.from<0);)s=!0,this.items.pop();this.items.length==0&&(this.items.push(new Zr(this.view,{from:-1,to:-1,severity:"info",message:this.view.state.phrase("No diagnostics")})),s=!0),r?(this.list.setAttribute("aria-activedescendant",r.id),this.view.requestMeasure({key:this,read:c(()=>({sel:r.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),"read"),write:c(({sel:l,panel:a})=>{let h=a.height/this.list.offsetHeight;l.top<a.top?this.list.scrollTop-=(a.top-l.top)/h:l.bottom>a.bottom&&(this.list.scrollTop+=(l.bottom-a.bottom)/h)},"write")})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),s&&this.sync()}sync(){let e=this.list.firstChild;function t(){let i=e;e=i.nextSibling,i.remove()}c(t,"rm");for(let i of this.items)if(i.dom.parentNode==this.list){for(;e!=i.dom;)t();e=i.dom.nextSibling}else this.list.insertBefore(i.dom,e);for(;e;)t()}moveSelection(e){if(this.selectedIndex<0)return;let t=this.view.state.field(ze),i=Vt(t.diagnostics,this.items[e].diagnostic);i&&this.view.dispatch({selection:{anchor:i.from,head:i.to},scrollIntoView:!0,effects:rO.of(i)})}static open(e){return new n(e)}};function ey(n,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" ${e}>${encodeURIComponent(n)}</svg>')`}c(ey,"svg");function Tr(n){return ey(`<path d="m0 2.5 l2 -1.5 l1 0 l2 1.5 l1 0" stroke="${n}" fill="none" stroke-width=".7"/>`,'width="6" height="3"')}c(Tr,"underline");var ty=P.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnostic-hint":{borderLeft:"5px solid #66d"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px",cursor:"pointer"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:Tr("#d11")},".cm-lintRange-warning":{backgroundImage:Tr("orange")},".cm-lintRange-info":{backgroundImage:Tr("#999")},".cm-lintRange-hint":{backgroundImage:Tr("#66d")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-lintPoint-hint":{"&:after":{borderBottomColor:"#66d"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}},"&dark .cm-lintRange-active":{backgroundColor:"#86714a80"},"&dark .cm-panel.cm-panel-lint ul":{"& [aria-selected]":{backgroundColor:"#2e343e"}}});function iy(n){return n=="error"?4:n=="warning"?3:n=="info"?2:1}c(iy,"severityWeight");function ny(n){let e="hint",t=1;for(let i of n){let s=iy(i.severity);s>t&&(t=s,e=i.severity)}return e}c(ny,"maxSeverity");var sy=[ze,P.decorations.compute([ze],n=>{let{selected:e,panel:t}=n.field(ze);return!e||!t||e.from==e.to?A.none:A.set([UQ.range(e.from,e.to)])}),Lf(FQ,{hideOn:NQ}),ty];var hO=[Nf(),Gf(),Yf(),Uu(),Zu(),Rf(),zf(),G.allowMultipleSelections.of(!0),xu(),Xu(Ru,{fallback:!0}),Yu(),Hd(),$r(),_f(),Df(),Vf(),Ad(),Ai.of([...eO,...vd,...zd,...Ju,...$u,...za,...oO])];var La=class n{static{c(this,"Stack")}constructor(e,t,i,s,r,o,l,a,h,f=0,u){this.p=e,this.stack=t,this.state=i,this.reducePos=s,this.pos=r,this.score=o,this.buffer=l,this.bufferBase=a,this.curContext=h,this.lookAhead=f,this.parent=u}toString(){return`[${this.stack.filter((e,t)=>t%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,t,i=0){let s=e.parser.context;return new n(e,[],t,i,i,0,[],0,s?new Ar(s,s.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,t){this.stack.push(this.state,t,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var t;let i=e>>19,s=e&65535,{parser:r}=this.p,o=this.reducePos<this.pos-25&&this.setLookAhead(this.pos),l=r.dynamicPrecedence(s);if(l&&(this.score+=l),i==0){this.pushState(r.getGoto(this.state,s,!0),this.reducePos),s<r.minRepeatTerm&&this.storeNode(s,this.reducePos,this.reducePos,o?8:4,!0),this.reduceContext(s,this.reducePos);return}let a=this.stack.length-(i-1)*3-(e&262144?6:0),h=a?this.stack[a-2]:this.p.ranges[0].from,f=this.reducePos-h;f>=2e3&&!(!((t=this.p.parser.nodeSet.types[s])===null||t===void 0)&&t.isAnonymous)&&(h==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=f):this.p.lastBigReductionSize<f&&(this.p.bigReductionCount=1,this.p.lastBigReductionStart=h,this.p.lastBigReductionSize=f));let u=a?this.stack[a-1]:0,d=this.bufferBase+this.buffer.length-u;if(s<r.minRepeatTerm||e&131072){let O=r.stateFlag(this.state,1)?this.pos:this.reducePos;this.storeNode(s,h,O,d+4,!0)}if(e&262144)this.state=this.stack[a];else{let O=this.stack[a-3];this.state=r.getGoto(O,s,!0)}for(;this.stack.length>a;)this.stack.pop();this.reduceContext(s,h)}storeNode(e,t,i,s=4,r=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]<this.buffer.length+this.bufferBase)){let o=this,l=this.buffer.length;if(l==0&&o.parent&&(l=o.bufferBase-o.parent.bufferBase,o=o.parent),l>0&&o.buffer[l-4]==0&&o.buffer[l-1]>-1){if(t==i)return;if(o.buffer[l-2]>=t){o.buffer[l-2]=i;return}}}if(!r||this.pos==i)this.buffer.push(e,t,i,s);else{let o=this.buffer.length;if(o>0&&(this.buffer[o-4]!=0||this.buffer[o-1]<0)){let l=!1;for(let a=o;a>0&&this.buffer[a-2]>i;a-=4)if(this.buffer[a-1]>=0){l=!0;break}if(l)for(;o>0&&this.buffer[o-2]>i;)this.buffer[o]=this.buffer[o-4],this.buffer[o+1]=this.buffer[o-3],this.buffer[o+2]=this.buffer[o-2],this.buffer[o+3]=this.buffer[o-1],o-=4,s>4&&(s-=4)}this.buffer[o]=e,this.buffer[o+1]=t,this.buffer[o+2]=i,this.buffer[o+3]=s}}shift(e,t,i,s){if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let r=e,{parser:o}=this.p;this.pos=s;let l=o.stateFlag(r,1);!l&&(s>i||t<=o.maxNode)&&(this.reducePos=s),this.pushState(r,l?i:Math.min(i,this.reducePos)),this.shiftContext(t,i),t<=o.maxNode&&this.buffer.push(t,i,s,4)}else this.pos=s,this.shiftContext(t,i),t<=this.p.parser.maxNode&&this.buffer.push(t,i,s,4)}apply(e,t,i,s){e&65536?this.reduce(e):this.shift(e,t,i,s)}useNode(e,t){let i=this.p.reused.length-1;(i<0||this.p.reused[i]!=e)&&(this.p.reused.push(e),i++);let s=this.pos;this.reducePos=this.pos=s+e.length,this.pushState(t,s),this.buffer.push(i,s,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,t=e.buffer.length;for(;t>0&&e.buffer[t-2]>e.reducePos;)t-=4;let i=e.buffer.slice(t),s=e.bufferBase+t;for(;e&&s==e.bufferBase;)e=e.parent;return new n(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,i,s,this.curContext,this.lookAhead,e)}recoverByDelete(e,t){let i=e<=this.p.parser.maxNode;i&&this.storeNode(e,this.pos,t,4),this.storeNode(0,this.pos,t,i?8:4),this.pos=this.reducePos=t,this.score-=190}canShift(e){for(let t=new qa(this);;){let i=this.p.parser.stateSlot(t.state,4)||this.p.parser.hasAction(t.state,e);if(i==0)return!1;if((i&65536)==0)return!0;t.reduce(i)}}recoverByInsert(e){if(this.stack.length>=300)return[];let t=this.p.parser.nextStates(this.state);if(t.length>8||this.stack.length>=120){let s=[];for(let r=0,o;r<t.length;r+=2)(o=t[r+1])!=this.state&&this.p.parser.hasAction(o,e)&&s.push(t[r],o);if(this.stack.length<120)for(let r=0;s.length<8&&r<t.length;r+=2){let o=t[r+1];s.some((l,a)=>a&1&&l==o)||s.push(t[r],o)}t=s}let i=[];for(let s=0;s<t.length&&i.length<4;s+=2){let r=t[s+1];if(r==this.state)continue;let o=this.split();o.pushState(r,this.pos),o.storeNode(0,o.pos,o.pos,4,!0),o.shiftContext(t[s],this.pos),o.reducePos=this.pos,o.score-=200,i.push(o)}return i}forceReduce(){let{parser:e}=this.p,t=e.stateSlot(this.state,5);if((t&65536)==0)return!1;if(!e.validAction(this.state,t)){let i=t>>19,s=t&65535,r=this.stack.length-i*3;if(r<0||e.getGoto(this.stack[r],s,!1)<0){let o=this.findForcedReduction();if(o==null)return!1;t=o}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(t),!0}findForcedReduction(){let{parser:e}=this.p,t=[],i=c((s,r)=>{if(!t.includes(s))return t.push(s),e.allActions(s,o=>{if(!(o&393216))if(o&65536){let l=(o>>19)-r;if(l>1){let a=o&65535,h=this.stack.length-l*3;if(h>=0&&e.getGoto(this.stack[h],a,!1)>=0)return l<<19|65536|a}}else{let l=i(o,r+1);if(l!=null)return l}})},"explore");return i(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let t=0;t<this.stack.length;t+=3)if(this.stack[t]!=e.stack[t])return!1;return!0}get parser(){return this.p.parser}dialectEnabled(e){return this.p.parser.dialect.flags[e]}shiftContext(e,t){this.curContext&&this.updateContext(this.curContext.tracker.shift(this.curContext.context,e,this,this.p.stream.reset(t)))}reduceContext(e,t){this.curContext&&this.updateContext(this.curContext.tracker.reduce(this.curContext.context,e,this,this.p.stream.reset(t)))}emitContext(){let e=this.buffer.length-1;(e<0||this.buffer[e]!=-3)&&this.buffer.push(this.curContext.hash,this.pos,this.pos,-3)}emitLookAhead(){let e=this.buffer.length-1;(e<0||this.buffer[e]!=-4)&&this.buffer.push(this.lookAhead,this.pos,this.pos,-4)}updateContext(e){if(e!=this.curContext.context){let t=new Ar(this.curContext.tracker,e);t.hash!=this.curContext.hash&&this.emitContext(),this.curContext=t}}setLookAhead(e){return e<=this.lookAhead?!1:(this.emitLookAhead(),this.lookAhead=e,!0)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}},Ar=class{static{c(this,"StackContext")}constructor(e,t){this.tracker=e,this.context=t,this.hash=e.strict?e.hash(t):0}},qa=class{static{c(this,"SimulatedStack")}constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let t=e&65535,i=e>>19;i==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(i-1)*3;let s=this.start.p.parser.getGoto(this.stack[this.base-3],t,!0);this.state=s}},Wa=class n{static{c(this,"StackBufferCursor")}constructor(e,t,i){this.stack=e,this.pos=t,this.index=i,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,t=e.bufferBase+e.buffer.length){return new n(e,t,t-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new n(this.stack,this.pos,this.index)}};function Ln(n,e=Uint16Array){if(typeof n!="string")return n;let t=null;for(let i=0,s=0;i<n.length;){let r=0;for(;;){let o=n.charCodeAt(i++),l=!1;if(o==126){r=65535;break}o>=92&&o--,o>=34&&o--;let a=o-32;if(a>=46&&(a-=46,l=!0),r+=a,l)break;r*=46}t?t[s++]=r:t=new e(r)}return t}c(Ln,"decodeArray");var Bi=class{static{c(this,"CachedToken")}constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}},cO=new Bi,Ba=class{static{c(this,"InputStream")}constructor(e,t){this.input=e,this.ranges=t,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=cO,this.rangeIndex=0,this.pos=this.chunkPos=t[0].from,this.range=t[0],this.end=t[t.length-1].to,this.readNext()}resolveOffset(e,t){let i=this.range,s=this.rangeIndex,r=this.pos+e;for(;r<i.from;){if(!s)return null;let o=this.ranges[--s];r-=i.from-o.to,i=o}for(;t<0?r>i.to:r>=i.to;){if(s==this.ranges.length-1)return null;let o=this.ranges[++s];r+=o.from-i.to,i=o}return r}clipPos(e){if(e>=this.range.from&&e<this.range.to)return e;for(let t of this.ranges)if(t.to>e)return Math.max(e,t.from);return this.end}peek(e){let t=this.chunkOff+e,i,s;if(t>=0&&t<this.chunk.length)i=this.pos+e,s=this.chunk.charCodeAt(t);else{let r=this.resolveOffset(e,1);if(r==null)return-1;if(i=r,i>=this.chunk2Pos&&i<this.chunk2Pos+this.chunk2.length)s=this.chunk2.charCodeAt(i-this.chunk2Pos);else{let o=this.rangeIndex,l=this.range;for(;l.to<=i;)l=this.ranges[++o];this.chunk2=this.input.chunk(this.chunk2Pos=i),i+this.chunk2.length>l.to&&(this.chunk2=this.chunk2.slice(0,l.to-i)),s=this.chunk2.charCodeAt(0)}}return i>=this.token.lookAhead&&(this.token.lookAhead=i+1),s}acceptToken(e,t=0){let i=t?this.resolveOffset(t,-1):this.pos;if(i==null||i<this.token.start)throw new RangeError("Token end out of bounds");this.token.value=e,this.token.end=i}acceptTokenTo(e,t){this.token.value=e,this.token.end=t}getChunk(){if(this.pos>=this.chunk2Pos&&this.pos<this.chunk2Pos+this.chunk2.length){let{chunk:e,chunkPos:t}=this;this.chunk=this.chunk2,this.chunkPos=this.chunk2Pos,this.chunk2=e,this.chunk2Pos=t,this.chunkOff=this.pos-this.chunkPos}else{this.chunk2=this.chunk,this.chunk2Pos=this.chunkPos;let e=this.input.chunk(this.pos),t=this.pos+e.length;this.chunk=t>this.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,t){if(t?(this.token=t,t.start=e,t.lookAhead=e+1,t.value=t.extended=-1):this.token=cO,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e<this.range.from;)this.range=this.ranges[--this.rangeIndex];for(;e>=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e<this.chunkPos+this.chunk.length?this.chunkOff=e-this.chunkPos:(this.chunk="",this.chunkOff=0),this.readNext()}return this}read(e,t){if(e>=this.chunkPos&&t<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,t-this.chunkPos);if(e>=this.chunk2Pos&&t<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,t-this.chunk2Pos);if(e>=this.range.from&&t<=this.range.to)return this.input.read(e,t);let i="";for(let s of this.ranges){if(s.from>=t)break;s.to>e&&(i+=this.input.read(Math.max(s.from,e),Math.min(s.to,t)))}return i}},_t=class{static{c(this,"TokenGroup")}constructor(e,t){this.data=e,this.id=t}token(e,t){let{parser:i}=t.p;pO(this.data,e,t,this.id,i.data,i.tokenPrecTable)}};_t.prototype.contextual=_t.prototype.fallback=_t.prototype.extend=!1;var Dt=class{static{c(this,"LocalTokenGroup")}constructor(e,t,i){this.precTable=t,this.elseToken=i,this.data=typeof e=="string"?Ln(e):e}token(e,t){let i=e.pos,s=0;for(;;){let r=e.next<0,o=e.resolveOffset(1,1);if(pO(this.data,e,t,0,this.data,this.precTable),e.token.value>-1)break;if(this.elseToken==null)return;if(r||s++,o==null)break;e.reset(o,e.token)}s&&(e.reset(i,e.token),e.acceptToken(this.elseToken,s))}};Dt.prototype.contextual=_t.prototype.fallback=_t.prototype.extend=!1;var ae=class{static{c(this,"ExternalTokenizer")}constructor(e,t={}){this.token=e,this.contextual=!!t.contextual,this.fallback=!!t.fallback,this.extend=!!t.extend}};function pO(n,e,t,i,s,r){let o=0,l=1<<i,{dialect:a}=t.p.parser;e:for(;(l&n[o])!=0;){let h=n[o+1];for(let O=o+3;O<h;O+=2)if((n[O+1]&l)>0){let p=n[O];if(a.allows(p)&&(e.token.value==-1||e.token.value==p||oy(p,e.token.value,s,r))){e.acceptToken(p);break}}let f=e.next,u=0,d=n[o+2];if(e.next<0&&d>u&&n[h+d*3-3]==65535){o=n[h+d*3-1];continue e}for(;u<d;){let O=u+d>>1,p=h+O+(O<<1),m=n[p],g=n[p+1]||65536;if(f<m)d=O;else if(f>=g)u=O+1;else{o=n[p+2],e.advance();continue e}}break}}c(pO,"readToken");function fO(n,e,t){for(let i=e,s;(s=n[i])!=65535;i++)if(s==t)return i-e;return-1}c(fO,"findOffset");function oy(n,e,t,i){let s=fO(t,i,e);return s<0||fO(t,i,n)<s}c(oy,"overrides");var Ye=typeof process<"u"&&process.env&&/\bparse\b/.test(process.env.LOG),_a=null;function uO(n,e,t){let i=n.cursor(L.IncludeAnonymous);for(i.moveTo(e);;)if(!(t<0?i.childBefore(e):i.childAfter(e)))for(;;){if((t<0?i.to<e:i.from>e)&&!i.type.isError)return t<0?Math.max(0,Math.min(i.to-1,e-25)):Math.min(n.length,Math.max(i.from+1,e+25));if(t<0?i.prevSibling():i.nextSibling())break;if(!i.parent())return t<0?0:n.length}}c(uO,"cutAt");var Ia=class{static{c(this,"FragmentCursor")}constructor(e,t){this.fragments=e,this.nodeSet=t,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?uO(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?uO(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(e<this.nextStart)return null;for(;this.fragment&&this.safeTo<=e;)this.nextFragment();if(!this.fragment)return null;for(;;){let t=this.trees.length-1;if(t<0)return this.nextFragment(),null;let i=this.trees[t],s=this.index[t];if(s==i.children.length){this.trees.pop(),this.start.pop(),this.index.pop();continue}let r=i.children[s],o=this.start[t]+i.positions[s];if(o>e)return this.nextStart=o,null;if(r instanceof J){if(o==e){if(o<this.safeFrom)return null;let l=o+r.length;if(l<=this.safeTo){let a=r.prop(E.lookAhead);if(!a||l+a<this.fragment.to)return r}}this.index[t]++,o+r.length>=Math.max(this.safeFrom,e)&&(this.trees.push(r),this.start.push(o),this.index.push(0))}else this.index[t]++,this.nextStart=o+r.length}}},ja=class{static{c(this,"TokenCache")}constructor(e,t){this.stream=t,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(i=>new Bi)}getActions(e){let t=0,i=null,{parser:s}=e.p,{tokenizers:r}=s,o=s.stateSlot(e.state,3),l=e.curContext?e.curContext.hash:0,a=0;for(let h=0;h<r.length;h++){if((1<<h&o)==0)continue;let f=r[h],u=this.tokens[h];if(!(i&&!f.fallback)&&((f.contextual||u.start!=e.pos||u.mask!=o||u.context!=l)&&(this.updateCachedToken(u,f,e),u.mask=o,u.context=l),u.lookAhead>u.end+25&&(a=Math.max(u.lookAhead,a)),u.value!=0)){let d=t;if(u.extended>-1&&(t=this.addActions(e,u.extended,u.end,t)),t=this.addActions(e,u.value,u.end,t),!f.extend&&(i=u,t>d))break}}for(;this.actions.length>t;)this.actions.pop();return a&&e.setLookAhead(a),!i&&e.pos==this.stream.end&&(i=new Bi,i.value=e.p.parser.eofTerm,i.start=i.end=e.pos,t=this.addActions(e,i.value,i.end,t)),this.mainToken=i,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let t=new Bi,{pos:i,p:s}=e;return t.start=i,t.end=Math.min(i+1,s.stream.end),t.value=i==s.stream.end?s.parser.eofTerm:0,t}updateCachedToken(e,t,i){let s=this.stream.clipPos(i.pos);if(t.token(this.stream.reset(s,e),i),e.value>-1){let{parser:r}=i.p;for(let o=0;o<r.specialized.length;o++)if(r.specialized[o]==e.value){let l=r.specializers[o](this.stream.read(e.start,e.end),i);if(l>=0&&i.p.parser.dialect.allows(l>>1)){(l&1)==0?e.value=l>>1:e.extended=l>>1;break}}}else e.value=0,e.end=this.stream.clipPos(s+1)}putAction(e,t,i,s){for(let r=0;r<s;r+=3)if(this.actions[r]==e)return s;return this.actions[s++]=e,this.actions[s++]=t,this.actions[s++]=i,s}addActions(e,t,i,s){let{state:r}=e,{parser:o}=e.p,{data:l}=o;for(let a=0;a<2;a++)for(let h=o.stateSlot(r,a?2:1);;h+=3){if(l[h]==65535)if(l[h+1]==1)h=yt(l,h+2);else{s==0&&l[h+1]==2&&(s=this.putAction(yt(l,h+2),t,i,s));break}l[h]==t&&(s=this.putAction(yt(l,h+1),t,i,s))}return s}},Na=class{static{c(this,"Parse")}constructor(e,t,i,s){this.parser=e,this.input=t,this.ranges=s,this.recovering=0,this.nextStackID=9812,this.minStackPos=0,this.reused=[],this.stoppedAt=null,this.lastBigReductionStart=-1,this.lastBigReductionSize=0,this.bigReductionCount=0,this.stream=new Ba(t,s),this.tokens=new ja(e,this.stream),this.topTerm=e.top[1];let{from:r}=s[0];this.stacks=[La.start(this,e.top[0],r)],this.fragments=i.length&&this.stream.end-r>e.bufferLength*4?new Ia(i,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,t=this.minStackPos,i=this.stacks=[],s,r;if(this.bigReductionCount>300&&e.length==1){let[o]=e;for(;o.forceReduce()&&o.stack.length&&o.stack[o.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let o=0;o<e.length;o++){let l=e[o];for(;;){if(this.tokens.mainToken=null,l.pos>t)i.push(l);else{if(this.advanceStack(l,i,e))continue;{s||(s=[],r=[]),s.push(l);let a=this.tokens.getMainToken(l);r.push(a.value,a.end)}}break}}if(!i.length){let o=s&&ly(s);if(o)return Ye&&console.log("Finish with "+this.stackID(o)),this.stackToTree(o);if(this.parser.strict)throw Ye&&s&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+t);this.recovering||(this.recovering=5)}if(this.recovering&&s){let o=this.stoppedAt!=null&&s[0].pos>this.stoppedAt?s[0]:this.runRecovery(s,r,i);if(o)return Ye&&console.log("Force-finish "+this.stackID(o)),this.stackToTree(o.forceAll())}if(this.recovering){let o=this.recovering==1?1:this.recovering*3;if(i.length>o)for(i.sort((l,a)=>a.score-l.score);i.length>o;)i.pop();i.some(l=>l.reducePos>t)&&this.recovering--}else if(i.length>1){e:for(let o=0;o<i.length-1;o++){let l=i[o];for(let a=o+1;a<i.length;a++){let h=i[a];if(l.sameState(h)||l.buffer.length>500&&h.buffer.length>500)if((l.score-h.score||l.buffer.length-h.buffer.length)>0)i.splice(a--,1);else{i.splice(o--,1);continue e}}}i.length>12&&(i.sort((o,l)=>l.score-o.score),i.splice(12,i.length-12))}this.minStackPos=i[0].pos;for(let o=1;o<i.length;o++)i[o].pos<this.minStackPos&&(this.minStackPos=i[o].pos);return null}stopAt(e){if(this.stoppedAt!=null&&this.stoppedAt<e)throw new RangeError("Can't move stoppedAt forward");this.stoppedAt=e}advanceStack(e,t,i){let s=e.pos,{parser:r}=this,o=Ye?this.stackID(e)+" -> ":"";if(this.stoppedAt!=null&&s>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let h=e.curContext&&e.curContext.tracker.strict,f=h?e.curContext.hash:0;for(let u=this.fragments.nodeAt(s);u;){let d=this.parser.nodeSet.types[u.type.id]==u.type?r.getGoto(e.state,u.type.id):-1;if(d>-1&&u.length&&(!h||(u.prop(E.contextHash)||0)==f))return e.useNode(u,d),Ye&&console.log(o+this.stackID(e)+` (via reuse of ${r.getName(u.type.id)})`),!0;if(!(u instanceof J)||u.children.length==0||u.positions[0]>0)break;let O=u.children[0];if(O instanceof J&&u.positions[0]==0)u=O;else break}}let l=r.stateSlot(e.state,4);if(l>0)return e.reduce(l),Ye&&console.log(o+this.stackID(e)+` (via always-reduce ${r.getName(l&65535)})`),!0;if(e.stack.length>=8400)for(;e.stack.length>6e3&&e.forceReduce(););let a=this.tokens.getActions(e);for(let h=0;h<a.length;){let f=a[h++],u=a[h++],d=a[h++],O=h==a.length||!i,p=O?e:e.split(),m=this.tokens.mainToken;if(p.apply(f,u,m?m.start:p.pos,d),Ye&&console.log(o+this.stackID(p)+` (via ${(f&65536)==0?"shift":`reduce of ${r.getName(f&65535)}`} for ${r.getName(u)} @ ${s}${p==e?"":", split"})`),O)return!0;p.pos>s?t.push(p):i.push(p)}return!1}advanceFully(e,t){let i=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>i)return dO(e,t),!0}}runRecovery(e,t,i){let s=null,r=!1;for(let o=0;o<e.length;o++){let l=e[o],a=t[o<<1],h=t[(o<<1)+1],f=Ye?this.stackID(l)+" -> ":"";if(l.deadEnd&&(r||(r=!0,l.restart(),Ye&&console.log(f+this.stackID(l)+" (restarted)"),this.advanceFully(l,i))))continue;let u=l.split(),d=f;for(let O=0;O<10&&u.forceReduce()&&(Ye&&console.log(d+this.stackID(u)+" (via force-reduce)"),!this.advanceFully(u,i));O++)Ye&&(d=this.stackID(u)+" -> ");for(let O of l.recoverByInsert(a))Ye&&console.log(f+this.stackID(O)+" (via recover-insert)"),this.advanceFully(O,i);this.stream.end>l.pos?(h==l.pos&&(h++,a=0),l.recoverByDelete(a,h),Ye&&console.log(f+this.stackID(l)+` (via recover-delete ${this.parser.getName(a)})`),dO(l,i)):(!s||s.score<u.score)&&(s=u)}return s}stackToTree(e){return e.close(),J.build({buffer:Wa.create(e),nodeSet:this.parser.nodeSet,topID:this.topTerm,maxBufferLength:this.parser.bufferLength,reused:this.reused,start:this.ranges[0].from,length:e.pos-this.ranges[0].from,minRepeatType:this.parser.minRepeatTerm})}stackID(e){let t=(_a||(_a=new WeakMap)).get(e);return t||_a.set(e,t=String.fromCodePoint(this.nextStackID++)),t+e}};function dO(n,e){for(let t=0;t<e.length;t++){let i=e[t];if(i.pos==n.pos&&i.sameState(n)){e[t].score<n.score&&(e[t]=n);return}}e.push(n)}c(dO,"pushStackDedup");var Ga=class{static{c(this,"Dialect")}constructor(e,t,i){this.source=e,this.flags=t,this.disabled=i}allows(e){return!this.disabled||this.disabled[e]==0}},Da=c(n=>n,"id"),Ii=class{static{c(this,"ContextTracker")}constructor(e){this.start=e.start,this.shift=e.shift||Da,this.reduce=e.reduce||Da,this.reuse=e.reuse||Da,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}},Lt=class n extends Mi{static{c(this,"LRParser")}constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let t=e.nodeNames.split(" ");this.minRepeatTerm=t.length;for(let l=0;l<e.repeatNodeCount;l++)t.push("");let i=Object.keys(e.topRules).map(l=>e.topRules[l][1]),s=[];for(let l=0;l<t.length;l++)s.push([]);function r(l,a,h){s[l].push([a,a.deserialize(String(h))])}if(c(r,"setProp"),e.nodeProps)for(let l of e.nodeProps){let a=l[0];typeof a=="string"&&(a=E[a]);for(let h=1;h<l.length;){let f=l[h++];if(f>=0)r(f,a,l[h++]);else{let u=l[h+-f];for(let d=-f;d>0;d--)r(l[h++],a,u);h++}}}this.nodeSet=new xn(t.map((l,a)=>de.define({name:a>=this.minRepeatTerm?void 0:l,id:a,props:s[a],top:i.indexOf(a)>-1,error:a==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(a)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=1024;let o=Ln(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let l=0;l<this.specializerSpecs.length;l++)this.specialized[l]=this.specializerSpecs[l].term;this.specializers=this.specializerSpecs.map(OO),this.states=Ln(e.states,Uint32Array),this.data=Ln(e.stateData),this.goto=Ln(e.goto),this.maxTerm=e.maxTerm,this.tokenizers=e.tokenizers.map(l=>typeof l=="number"?new _t(o,l):l),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,t,i){let s=new Na(this,e,t,i);for(let r of this.wrappers)s=r(s,e,t,i);return s}getGoto(e,t,i=!1){let s=this.goto;if(t>=s[0])return-1;for(let r=s[t+1];;){let o=s[r++],l=o&1,a=s[r++];if(l&&i)return a;for(let h=r+(o>>1);r<h;r++)if(s[r]==e)return a;if(l)return-1}}hasAction(e,t){let i=this.data;for(let s=0;s<2;s++)for(let r=this.stateSlot(e,s?2:1),o;;r+=3){if((o=i[r])==65535)if(i[r+1]==1)o=i[r=yt(i,r+2)];else{if(i[r+1]==2)return yt(i,r+2);break}if(o==t||o==0)return yt(i,r+1)}return 0}stateSlot(e,t){return this.states[e*6+t]}stateFlag(e,t){return(this.stateSlot(e,0)&t)>0}validAction(e,t){return!!this.allActions(e,i=>i==t?!0:null)}allActions(e,t){let i=this.stateSlot(e,4),s=i?t(i):void 0;for(let r=this.stateSlot(e,1);s==null;r+=3){if(this.data[r]==65535)if(this.data[r+1]==1)r=yt(this.data,r+2);else break;s=t(yt(this.data,r+1))}return s}nextStates(e){let t=[];for(let i=this.stateSlot(e,1);;i+=3){if(this.data[i]==65535)if(this.data[i+1]==1)i=yt(this.data,i+2);else break;if((this.data[i+2]&1)==0){let s=this.data[i+1];t.some((r,o)=>o&1&&r==s)||t.push(this.data[i],s)}}return t}configure(e){let t=Object.assign(Object.create(n.prototype),this);if(e.props&&(t.nodeSet=this.nodeSet.extend(...e.props)),e.top){let i=this.topRules[e.top];if(!i)throw new RangeError(`Invalid top rule name ${e.top}`);t.top=i}return e.tokenizers&&(t.tokenizers=this.tokenizers.map(i=>{let s=e.tokenizers.find(r=>r.from==i);return s?s.to:i})),e.specializers&&(t.specializers=this.specializers.slice(),t.specializerSpecs=this.specializerSpecs.map((i,s)=>{let r=e.specializers.find(l=>l.from==i.external);if(!r)return i;let o=Object.assign(Object.assign({},i),{external:r.to});return t.specializers[s]=OO(o),o})),e.contextTracker&&(t.context=e.contextTracker),e.dialect&&(t.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(t.strict=e.strict),e.wrap&&(t.wrappers=t.wrappers.concat(e.wrap)),e.bufferLength!=null&&(t.bufferLength=e.bufferLength),t}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let t=this.dynamicPrecedences;return t==null?0:t[e]||0}parseDialect(e){let t=Object.keys(this.dialects),i=t.map(()=>!1);if(e)for(let r of e.split(" ")){let o=t.indexOf(r);o>=0&&(i[o]=!0)}let s=null;for(let r=0;r<t.length;r++)if(!i[r])for(let o=this.dialects[t[r]],l;(l=this.data[o++])!=65535;)(s||(s=new Uint8Array(this.maxTerm+1)))[l]=1;return new Ga(e,i,s)}static deserialize(e){return new n(e)}};function yt(n,e){return n[e]|n[e+1]<<16}c(yt,"pair");function ly(n){let e=null;for(let t of n){let i=t.p.stoppedAt;(t.pos==t.p.stream.end||i!=null&&t.pos>i)&&t.p.parser.stateFlag(t.state,2)&&(!e||e.score<t.score)&&(e=t)}return e}c(ly,"findFinished");function OO(n){if(n.external){let e=n.extend?1:0;return(t,i)=>n.external(t,i)<<1|e}return n.get}c(OO,"getSpecializer");var ay=122,mO=1,hy=123,cy=124,SO=2,fy=125,uy=3,dy=4,QO=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],Oy=58,py=40,yO=95,my=91,Xr=45,gy=46,Sy=35,Qy=37,yy=38,by=92,xy=10,wy=42;function qn(n){return n>=65&&n<=90||n>=97&&n<=122||n>=161}c(qn,"isAlpha");function Ua(n){return n>=48&&n<=57}c(Ua,"isDigit");function gO(n){return Ua(n)||n>=97&&n<=102||n>=65&&n<=70}c(gO,"isHex");var bO=c((n,e,t)=>(i,s)=>{for(let r=!1,o=0,l=0;;l++){let{next:a}=i;if(qn(a)||a==Xr||a==yO||r&&Ua(a))!r&&(a!=Xr||l>0)&&(r=!0),o===l&&a==Xr&&o++,i.advance();else if(a==by&&i.peek(1)!=xy){if(i.advance(),gO(i.next)){do i.advance();while(gO(i.next));i.next==32&&i.advance()}else i.next>-1&&i.advance();r=!0}else{r&&i.acceptToken(o==2&&s.canShift(SO)?e:a==py?t:n);break}}},"identifierTokens"),ky=new ae(bO(hy,SO,cy)),vy=new ae(bO(fy,uy,dy)),Py=new ae(n=>{if(QO.includes(n.peek(-1))){let{next:e}=n;(qn(e)||e==yO||e==Sy||e==gy||e==wy||e==my||e==Oy&&qn(n.peek(1))||e==Xr||e==yy)&&n.acceptToken(ay)}}),$y=new ae(n=>{if(!QO.includes(n.peek(-1))){let{next:e}=n;if(e==Qy&&(n.advance(),n.acceptToken(mO)),qn(e)){do n.advance();while(qn(n.next)||Ua(n.next));n.acceptToken(mO)}}}),Ty=At({"AtKeyword import charset namespace keyframes media supports":S.definitionKeyword,"from to selector":S.keyword,NamespaceName:S.namespace,KeyframeName:S.labelName,KeyframeRangeName:S.operatorKeyword,TagName:S.tagName,ClassName:S.className,PseudoClassName:S.constant(S.className),IdName:S.labelName,"FeatureName PropertyName":S.propertyName,AttributeName:S.attributeName,NumberLiteral:S.number,KeywordQuery:S.keyword,UnaryQueryOp:S.operatorKeyword,"CallTag ValueName":S.atom,VariableName:S.variableName,Callee:S.operatorKeyword,Unit:S.unit,"UniversalSelector NestingSelector":S.definitionOperator,"MatchOp CompareOp":S.compareOperator,"ChildOp SiblingOp, LogicOp":S.logicOperator,BinOp:S.arithmeticOperator,Important:S.modifier,Comment:S.blockComment,ColorLiteral:S.color,"ParenthesizedContent StringLiteral":S.string,":":S.punctuation,"PseudoOp #":S.derefOperator,"; ,":S.separator,"( )":S.paren,"[ ]":S.squareBracket,"{ }":S.brace}),Cy={__proto__:null,lang:38,"nth-child":38,"nth-last-child":38,"nth-of-type":38,"nth-last-of-type":38,dir:38,"host-context":38,if:84,url:124,"url-prefix":124,domain:124,regexp:124},Zy={__proto__:null,or:98,and:98,not:106,only:106,layer:170},Ay={__proto__:null,selector:112,layer:166},Xy={__proto__:null,"@import":162,"@media":174,"@charset":178,"@namespace":182,"@keyframes":188,"@supports":200,"@scope":204},Ry={__proto__:null,to:207},xO=Lt.deserialize({version:14,states:"EbQYQdOOO#qQdOOP#xO`OOOOQP'#Cf'#CfOOQP'#Ce'#CeO#}QdO'#ChO$nQaO'#CcO$xQdO'#CkO%TQdO'#DpO%YQdO'#DrO%_QdO'#DuO%_QdO'#DxOOQP'#FV'#FVO&eQhO'#EhOOQS'#FU'#FUOOQS'#Ek'#EkQYQdOOO&lQdO'#EOO&PQhO'#EUO&lQdO'#EWO'aQdO'#EYO'lQdO'#E]O'tQhO'#EcO(VQdO'#EeO(bQaO'#CfO)VQ`O'#D{O)[Q`O'#F`O)gQdO'#F`QOQ`OOP)qO&jO'#CaPOOO)C@t)C@tOOQP'#Cj'#CjOOQP,59S,59SO#}QdO,59SO)|QdO,59VO%TQdO,5:[O%YQdO,5:^O%_QdO,5:aO%_QdO,5:cO%_QdO,5:dO%_QdO'#ErO*XQ`O,58}O*aQdO'#DzOOQS,58},58}OOQP'#Cn'#CnOOQO'#Dn'#DnOOQP,59V,59VO*hQ`O,59VO*mQ`O,59VOOQP'#Dq'#DqOOQP,5:[,5:[OOQO'#Ds'#DsO*rQpO,5:^O+]QaO,5:aO+sQaO,5:dOOQW'#DZ'#DZO,ZQhO'#DdO,xQhO'#FaO'tQhO'#DbO-WQ`O'#DhOOQW'#F['#F[O-]Q`O,5;SO-eQ`O'#DeOOQS-E8i-E8iOOQ['#Cs'#CsO-jQdO'#CtO.QQdO'#CzO.hQdO'#C}O/OQ!pO'#DPO1RQ!jO,5:jOOQO'#DU'#DUO*mQ`O'#DTO1cQ!nO'#FXO3`Q`O'#DVO3eQ`O'#DkOOQ['#FX'#FXO-`Q`O,5:pO3jQ!bO,5:rOOQS'#E['#E[O3rQ`O,5:tO3wQdO,5:tOOQO'#E_'#E_O4PQ`O,5:wO4UQhO,5:}O%_QdO'#DgOOQS,5;P,5;PO-eQ`O,5;PO4^QdO,5;PO4fQdO,5:gO4vQdO'#EtO5TQ`O,5;zO5TQ`O,5;zPOOO'#Ej'#EjP5`O&jO,58{POOO,58{,58{OOQP1G.n1G.nOOQP1G.q1G.qO*hQ`O1G.qO*mQ`O1G.qOOQP1G/v1G/vO5kQpO1G/xO5sQaO1G/{O6ZQaO1G/}O6qQaO1G0OO7XQaO,5;^OOQO-E8p-E8pOOQS1G.i1G.iO7cQ`O,5:fO7hQdO'#DoO7oQdO'#CrOOQP1G/x1G/xO&lQdO1G/xO7vQ!jO'#DZO8UQ!bO,59vO8^QhO,5:OOOQO'#F]'#F]O8XQ!bO,59zO'tQhO,59xO8fQhO'#EvO8sQ`O,5;{O9OQhO,59|O9uQhO'#DiOOQW,5:S,5:SOOQS1G0n1G0nOOQW,5:P,5:PO9|Q!fO'#FYOOQS'#FY'#FYOOQS'#Em'#EmO;^QdO,59`OOQ[,59`,59`O;tQdO,59fOOQ[,59f,59fO<[QdO,59iOOQ[,59i,59iOOQ[,59k,59kO&lQdO,59mO<rQhO'#EQOOQW'#EQ'#EQO=WQ`O1G0UO1[QhO1G0UOOQ[,59o,59oO'tQhO'#DXOOQ[,59q,59qO=]Q#tO,5:VOOQS1G0[1G0[OOQS1G0^1G0^OOQS1G0`1G0`O=hQ`O1G0`O=mQdO'#E`OOQS1G0c1G0cOOQS1G0i1G0iO=xQaO,5:RO-`Q`O1G0kOOQS1G0k1G0kO-eQ`O1G0kO>PQ!fO1G0ROOQO1G0R1G0ROOQO,5;`,5;`O>gQdO,5;`OOQO-E8r-E8rO>tQ`O1G1fPOOO-E8h-E8hPOOO1G.g1G.gOOQP7+$]7+$]OOQP7+%d7+%dO&lQdO7+%dOOQS1G0Q1G0QO?PQaO'#F_O?ZQ`O,5:ZO?`Q!fO'#ElO@^QdO'#FWO@hQ`O,59^O@mQ!bO7+%dO&lQdO1G/bO@uQhO1G/fOOQW1G/j1G/jOOQW1G/d1G/dOAWQhO,5;bOOQO-E8t-E8tOAfQhO'#DZOAtQhO'#F^OBPQ`O'#F^OBUQ`O,5:TOOQS-E8k-E8kOOQ[1G.z1G.zOOQ[1G/Q1G/QOOQ[1G/T1G/TOOQ[1G/X1G/XOBZQdO,5:lOOQS7+%p7+%pOB`Q`O7+%pOBeQhO'#DYOBmQ`O,59sO'tQhO,59sOOQ[1G/q1G/qOBuQ`O1G/qOOQS7+%z7+%zOBzQbO'#DPOOQO'#Eb'#EbOCYQ`O'#EaOOQO'#Ea'#EaOCeQ`O'#EwOCmQdO,5:zOOQS,5:z,5:zOOQ[1G/m1G/mOOQS7+&V7+&VO-`Q`O7+&VOCxQ!fO'#EsO&lQdO'#EsOEPQdO7+%mOOQO7+%m7+%mOOQO1G0z1G0zOEdQ!bO<<IOOElQdO'#EqOEvQ`O,5;yOOQP1G/u1G/uOOQS-E8j-E8jOFOQdO'#EpOFYQ`O,5;rOOQ]1G.x1G.xOOQP<<IO<<IOOFbQdO7+$|OOQO'#D]'#D]OFiQ!bO7+%QOFqQhO'#EoOF{Q`O,5;xO&lQdO,5;xOOQW1G/o1G/oOOQO'#ES'#ESOGTQ`O1G0WOOQS<<I[<<I[O&lQdO,59tOGnQhO1G/_OOQ[1G/_1G/_OGuQ`O1G/_OOQW-E8l-E8lOOQ[7+%]7+%]OOQO,5:{,5:{O=pQdO'#ExOCeQ`O,5;cOOQS,5;c,5;cOOQS-E8u-E8uOOQS1G0f1G0fOOQS<<Iq<<IqOG}Q!fO,5;_OOQS-E8q-E8qOOQO<<IX<<IXOOQPAN>jAN>jOIUQaO,5;]OOQO-E8o-E8oOI`QdO,5;[OOQO-E8n-E8nOOQW<<Hh<<HhOOQW<<Hl<<HlOIjQhO<<HlOI{QhO,5;ZOJWQ`O,5;ZOOQO-E8m-E8mOJ]QdO1G1dOBZQdO'#EuOJgQ`O7+%rOOQW7+%r7+%rOJoQ!bO1G/`OOQ[7+$y7+$yOJzQhO7+$yPKRQ`O'#EnOOQO,5;d,5;dOOQO-E8v-E8vOOQS1G0}1G0}OKWQ`OAN>WO&lQdO1G0uOK]Q`O7+'OOOQO,5;a,5;aOOQO-E8s-E8sOOQW<<I^<<I^OOQ[<<He<<HePOQW,5;Y,5;YOOQWG23rG23rOKeQdO7+&a",stateData:"Kx~O#sOS#tQQ~OW[OZ[O]TO`VOaVOi]OjWOmXO!jYO!mZO!saO!ybO!{cO!}dO#QeO#WfO#YgO#oRO~OQiOW[OZ[O]TO`VOaVOi]OjWOmXO!jYO!mZO!saO!ybO!{cO!}dO#QeO#WfO#YgO#ohO~O#m$SP~P!dO#tmO~O#ooO~O]qO`rOarOjsOmtO!juO!mwO#nvO~OpzO!^xO~P$SOc!QO#o|O#p}O~O#o!RO~O#o!TO~OW[OZ[O]TO`VOaVOjWOmXO!jYO!mZO#oRO~OS!]Oe!YO!V![O!Y!`O#q!XOp$TP~Ok$TP~P&POQ!jOe!cOm!dOp!eOr!mOt!mOz!kO!`!lO#o!bO#p!hO#}!fO~Ot!qO!`!lO#o!pO~Ot!sO#o!sO~OS!]Oe!YO!V![O!Y!`O#q!XO~Oe!vOpzO#Z!xO~O]YX`YX`!pXaYXjYXmYXpYX!^YX!jYX!mYX#nYX~O`!zO~Ok!{O#m$SXo$SX~O#m$SXo$SX~P!dO#u#OO#v#OO#w#QO~Oc#UO#o|O#p}O~OpzO!^xO~Oo$SP~P!dOe#`O~Oe#aO~Ol#bO!h#cO~O]qO`rOarOjsOmtO~Op!ia!^!ia!j!ia!m!ia#n!iad!ia~P*zOp!la!^!la!j!la!m!la#n!lad!la~P*zOR#gOS!]Oe!YOr#gOt#gO!V![O!Y!`O#q#dO#}!fO~O!R#iO!^#jOk$TXp$TX~Oe#mO~Ok#oOpzO~Oe!vO~O]#rO`#rOd#uOi#rOj#rOk#rO~P&lO]#rO`#rOi#rOj#rOk#rOl#wO~P&lO]#rO`#rOi#rOj#rOk#rOo#yO~P&lOP#zOSsXesXksXvsX!VsX!YsX!usX!wsX#qsX!TsXQsX]sX`sXdsXisXjsXmsXpsXrsXtsXzsX!`sX#osX#psX#}sXlsXosX!^sX!qsX#msX~Ov#{O!u#|O!w#}Ok$TP~P'tOe#aOS#{Xk#{Xv#{X!V#{X!Y#{X!u#{X!w#{X#q#{XQ#{X]#{X`#{Xd#{Xi#{Xj#{Xm#{Xp#{Xr#{Xt#{Xz#{X!`#{X#o#{X#p#{X#}#{Xl#{Xo#{X!^#{X!q#{X#m#{X~Oe$RO~Oe$TO~Ok$VOv#{O~Ok$WO~Ot$XO!`!lO~Op$YO~OpzO!R#iO~OpzO#Z$`O~O!q$bOk!oa#m!oao!oa~P&lOk#hX#m#hXo#hX~P!dOk!{O#m$Sao$Sa~O#u#OO#v#OO#w$hO~Ol$jO!h$kO~Op!ii!^!ii!j!ii!m!ii#n!iid!ii~P*zOp!ki!^!ki!j!ki!m!ki#n!kid!ki~P*zOp!li!^!li!j!li!m!li#n!lid!li~P*zOp#fa!^#fa~P$SOo$lO~Od$RP~P%_Od#zP~P&lO`!PXd}X!R}X!T!PX~O`$sO!T$tO~Od$uO!R#iO~Ok#jXp#jX!^#jX~P'tO!^#jOk$Tap$Ta~O!R#iOk!Uap!Ua!^!Uad!Ua`!Ua~OS!]Oe!YO!V![O!Y!`O#q$yO~Od$QP~P9dOv#{OQ#|X]#|X`#|Xd#|Xe#|Xi#|Xj#|Xk#|Xm#|Xp#|Xr#|Xt#|Xz#|X!`#|X#o#|X#p#|X#}#|Xl#|Xo#|X~O]#rO`#rOd%OOi#rOj#rOk#rO~P&lO]#rO`#rOi#rOj#rOk#rOl%PO~P&lO]#rO`#rOi#rOj#rOk#rOo%QO~P&lOe%SOS!tXk!tX!V!tX!Y!tX#q!tX~Ok%TO~Od%YOt%ZO!a%ZO~Ok%[O~Oo%cO#o%^O#}%]O~Od%dO~P$SOv#{O!^%hO!q%jOk!oi#m!oio!oi~P&lOk#ha#m#hao#ha~P!dOk!{O#m$Sio$Si~O!^%mOd$RX~P$SOd%oO~Ov#{OQ#`Xd#`Xe#`Xm#`Xp#`Xr#`Xt#`Xz#`X!^#`X!`#`X#o#`X#p#`X#}#`X~O!^%qOd#zX~P&lOd%sO~Ol%tOv#{O~OR#gOr#gOt#gO#q%vO#}!fO~O!R#iOk#jap#ja!^#ja~O`!PXd}X!R}X!^}X~O!R#iO!^%xOd$QX~O`%zO~Od%{O~O#o%|O~Ok&OO~O`&PO!R#iO~Od&ROk&QO~Od&UO~OP#zOpsX!^sXdsX~O#}%]Op#TX!^#TX~OpzO!^&WO~Oo&[O#o%^O#}%]O~Ov#{OQ#gXe#gXk#gXm#gXp#gXr#gXt#gXz#gX!^#gX!`#gX!q#gX#m#gX#o#gX#p#gX#}#gXo#gX~O!^%hO!q&`Ok!oq#m!oqo!oq~P&lOl&aOv#{O~Od#eX!^#eX~P%_O!^%mOd$Ra~Od#dX!^#dX~P&lO!^%qOd#za~Od&fO~P&lOd&gO!T&hO~Od#cX!^#cX~P9dO!^%xOd$Qa~O]&mOd&oO~OS#bae#ba!V#ba!Y#ba#q#ba~Od&qO~PG]Od&qOk&rO~Ov#{OQ#gae#gak#gam#gap#gar#gat#gaz#ga!^#ga!`#ga!q#ga#m#ga#o#ga#p#ga#}#gao#ga~Od#ea!^#ea~P$SOd#da!^#da~P&lOR#gOr#gOt#gO#q%vO#}%]O~O!R#iOd#ca!^#ca~O`&xO~O!^%xOd$Qi~P&lO]&mOd&|O~Ov#{Od|ik|i~Od&}O~PG]Ok'OO~Od'PO~O!^%xOd$Qq~Od#cq!^#cq~P&lO#s!a#t#}]#}v!m~",goto:"2h$UPPPPP$VP$YP$c$uP$cP%X$cPP%_PPP%e%o%oPPPPP%oPP%oP&]P%oP%o'W%oP't'w'}'}(^'}P'}P'}P'}'}P(m'}(yP(|PP)p)v$c)|$c*SP$cP$c$cP*Y*{+YP$YP+aP+dP$YP$YP$YP+j$YP+m+p+s+z$YP$YPP$YP,P,V,f,|-[-b-l-r-x.O.U.`.f.l.rPPPPPPPPPPP.x/R/w/z0|P1U1u2O2R2U2[RnQ_^OP`kz!{$dq[OPYZ`kuvwxz!v!{#`$d%mqSOPYZ`kuvwxz!v!{#`$d%mQpTR#RqQ!OVR#SrQ#S!QS$Q!i!jR$i#U!V!mac!c!d!e!z#a#c#t#v#x#{$a$k$p$s%h%i%q%u%z&P&d&l&x'Q!U!mac!c!d!e!z#a#c#t#v#x#{$a$k$p$s%h%i%q%u%z&P&d&l&x'QU#g!Y$t&hU%`$Y%b&WR&V%_!V!iac!c!d!e!z#a#c#t#v#x#{$a$k$p$s%h%i%q%u%z&P&d&l&x'QR$S!kQ%W$RR&S%Xk!^]bf!Y![!g#i#j#m$P$R%X%xQ#e!YQ${#mQ%w$tQ&j%xR&w&hQ!ygQ#p!`Q$^!xR%f$`R#n!]!U!mac!c!d!e!z#a#c#t#v#x#{$a$k$p$s%h%i%q%u%z&P&d&l&x'QQ!qdR$X!rQ!PVR#TrQ#S!PR$i#TQ!SWR#VsQ!UXR#WtQ{UQ!wgQ#^yQ#o!_Q$U!nQ$[!uQ$_!yQ%e$^Q&Y%aQ&]%fR&v&XSjPzQ!}kQ$c!{R%k$dZiPkz!{$dR$P!gQ%}%SR&z&mR!rdR!teR$Z!tS%a$Y%bR&t&WV%_$Y%b&WQ#PmR$g#PQ`OSkPzU!a`k$dR$d!{Q$p#aY%p$p%u&d&l'QQ%u$sQ&d%qQ&l%zR'Q&xQ#t!cQ#v!dQ#x!eV$}#t#v#xQ%X$RR&T%XQ%y$zS&k%y&yR&y&lQ%r$pR&e%rQ%n$mR&c%nQyUR#]yQ%i$aR&_%iQ!|jS$e!|$fR$f!}Q&n%}R&{&nQ#k!ZR$x#kQ%b$YR&Z%bQ&X%aR&u&X__OP`kz!{$d^UOP`kz!{$dQ!VYQ!WZQ#XuQ#YvQ#ZwQ#[xQ$]!vQ$m#`R&b%mR$q#aQ!gaQ!oc[#q!c!d!e#t#v#xQ$a!zd$o#a$p$s%q%u%z&d&l&x'QQ$r#cQ%R#{S%g$a%iQ%l$kQ&^%hR&p&P]#s!c!d!e#t#v#xW!Z]b!g$PQ!ufQ#f!YQ#l![Q$v#iQ$w#jQ$z#mS%V$R%XR&i%xQ#h!YQ%w$tR&w&hR$|#mR$n#`QlPR#_zQ!_]Q!nbQ$O!gR%U$P",nodeNames:"\u26A0 Unit VariableName VariableName QueryCallee Comment StyleSheet RuleSet UniversalSelector TagSelector TagName NestingSelector ClassSelector . ClassName PseudoClassSelector : :: PseudoClassName PseudoClassName ) ( ArgList ValueName ParenthesizedValue AtKeyword # ; ] [ BracketedValue } { BracedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp CallExpression Callee IfExpression if ArgList IfBranch KeywordQuery FeatureQuery FeatureName BinaryQuery LogicOp ComparisonQuery CompareOp UnaryQuery UnaryQueryOp ParenthesizedQuery SelectorQuery selector ParenthesizedSelector CallQuery ArgList , CallLiteral CallTag ParenthesizedContent PseudoClassName ArgList IdSelector IdName AttributeSelector AttributeName MatchOp ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp Block Declaration PropertyName Important ImportStatement import Layer layer LayerName layer MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList KeyframeSelector KeyframeRangeName SupportsStatement supports ScopeStatement scope to AtRule Styles",maxTerm:143,nodeProps:[["isolate",-2,5,36,""],["openedBy",20,"(",28,"[",31,"{"],["closedBy",21,")",29,"]",32,"}"]],propSources:[Ty],skippedNodes:[0,5,106],repeatNodeCount:15,tokenData:"JQ~R!YOX$qX^%i^p$qpq%iqr({rs-ust/itu6Wuv$qvw7Qwx7cxy9Qyz9cz{9h{|:R|}>t}!O?V!O!P?t!P!Q@]!Q![AU![!]BP!]!^B{!^!_C^!_!`DY!`!aDm!a!b$q!b!cEn!c!}$q!}#OG{#O#P$q#P#QH^#Q#R6W#R#o$q#o#pHo#p#q6W#q#rIQ#r#sIc#s#y$q#y#z%i#z$f$q$f$g%i$g#BY$q#BY#BZ%i#BZ$IS$q$IS$I_%i$I_$I|$q$I|$JO%i$JO$JT$q$JT$JU%i$JU$KV$q$KV$KW%i$KW&FU$q&FU&FV%i&FV;'S$q;'S;=`Iz<%lO$q`$tSOy%Qz;'S%Q;'S;=`%c<%lO%Q`%VS!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Q`%fP;=`<%l%Q~%nh#s~OX%QX^'Y^p%Qpq'Yqy%Qz#y%Q#y#z'Y#z$f%Q$f$g'Y$g#BY%Q#BY#BZ'Y#BZ$IS%Q$IS$I_'Y$I_$I|%Q$I|$JO'Y$JO$JT%Q$JT$JU'Y$JU$KV%Q$KV$KW'Y$KW&FU%Q&FU&FV'Y&FV;'S%Q;'S;=`%c<%lO%Q~'ah#s~!a`OX%QX^'Y^p%Qpq'Yqy%Qz#y%Q#y#z'Y#z$f%Q$f$g'Y$g#BY%Q#BY#BZ'Y#BZ$IS%Q$IS$I_'Y$I_$I|%Q$I|$JO'Y$JO$JT%Q$JT$JU'Y$JU$KV%Q$KV$KW'Y$KW&FU%Q&FU&FV'Y&FV;'S%Q;'S;=`%c<%lO%Qj)OUOy%Qz#]%Q#]#^)b#^;'S%Q;'S;=`%c<%lO%Qj)gU!a`Oy%Qz#a%Q#a#b)y#b;'S%Q;'S;=`%c<%lO%Qj*OU!a`Oy%Qz#d%Q#d#e*b#e;'S%Q;'S;=`%c<%lO%Qj*gU!a`Oy%Qz#c%Q#c#d*y#d;'S%Q;'S;=`%c<%lO%Qj+OU!a`Oy%Qz#f%Q#f#g+b#g;'S%Q;'S;=`%c<%lO%Qj+gU!a`Oy%Qz#h%Q#h#i+y#i;'S%Q;'S;=`%c<%lO%Qj,OU!a`Oy%Qz#T%Q#T#U,b#U;'S%Q;'S;=`%c<%lO%Qj,gU!a`Oy%Qz#b%Q#b#c,y#c;'S%Q;'S;=`%c<%lO%Qj-OU!a`Oy%Qz#h%Q#h#i-b#i;'S%Q;'S;=`%c<%lO%Qj-iS!qY!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Q~-xWOY-uZr-urs.bs#O-u#O#P.g#P;'S-u;'S;=`/c<%lO-u~.gOt~~.jRO;'S-u;'S;=`.s;=`O-u~.vXOY-uZr-urs.bs#O-u#O#P.g#P;'S-u;'S;=`/c;=`<%l-u<%lO-u~/fP;=`<%l-uj/nYjYOy%Qz!Q%Q!Q![0^![!c%Q!c!i0^!i#T%Q#T#Z0^#Z;'S%Q;'S;=`%c<%lO%Qj0cY!a`Oy%Qz!Q%Q!Q![1R![!c%Q!c!i1R!i#T%Q#T#Z1R#Z;'S%Q;'S;=`%c<%lO%Qj1WY!a`Oy%Qz!Q%Q!Q![1v![!c%Q!c!i1v!i#T%Q#T#Z1v#Z;'S%Q;'S;=`%c<%lO%Qj1}YrY!a`Oy%Qz!Q%Q!Q![2m![!c%Q!c!i2m!i#T%Q#T#Z2m#Z;'S%Q;'S;=`%c<%lO%Qj2tYrY!a`Oy%Qz!Q%Q!Q![3d![!c%Q!c!i3d!i#T%Q#T#Z3d#Z;'S%Q;'S;=`%c<%lO%Qj3iY!a`Oy%Qz!Q%Q!Q![4X![!c%Q!c!i4X!i#T%Q#T#Z4X#Z;'S%Q;'S;=`%c<%lO%Qj4`YrY!a`Oy%Qz!Q%Q!Q![5O![!c%Q!c!i5O!i#T%Q#T#Z5O#Z;'S%Q;'S;=`%c<%lO%Qj5TY!a`Oy%Qz!Q%Q!Q![5s![!c%Q!c!i5s!i#T%Q#T#Z5s#Z;'S%Q;'S;=`%c<%lO%Qj5zSrY!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Qd6ZUOy%Qz!_%Q!_!`6m!`;'S%Q;'S;=`%c<%lO%Qd6tS!hS!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Qb7VSZQOy%Qz;'S%Q;'S;=`%c<%lO%Q~7fWOY7cZw7cwx.bx#O7c#O#P8O#P;'S7c;'S;=`8z<%lO7c~8RRO;'S7c;'S;=`8[;=`O7c~8_XOY7cZw7cwx.bx#O7c#O#P8O#P;'S7c;'S;=`8z;=`<%l7c<%lO7c~8}P;=`<%l7cj9VSeYOy%Qz;'S%Q;'S;=`%c<%lO%Q~9hOd~n9oUWQvWOy%Qz!_%Q!_!`6m!`;'S%Q;'S;=`%c<%lO%Qj:YWvW!mQOy%Qz!O%Q!O!P:r!P!Q%Q!Q![=w![;'S%Q;'S;=`%c<%lO%Qj:wU!a`Oy%Qz!Q%Q!Q![;Z![;'S%Q;'S;=`%c<%lO%Qj;bY!a`#}YOy%Qz!Q%Q!Q![;Z![!g%Q!g!h<Q!h#X%Q#X#Y<Q#Y;'S%Q;'S;=`%c<%lO%Qj<VY!a`Oy%Qz{%Q{|<u|}%Q}!O<u!O!Q%Q!Q![=^![;'S%Q;'S;=`%c<%lO%Qj<zU!a`Oy%Qz!Q%Q!Q![=^![;'S%Q;'S;=`%c<%lO%Qj=eU!a`#}YOy%Qz!Q%Q!Q![=^![;'S%Q;'S;=`%c<%lO%Qj>O[!a`#}YOy%Qz!O%Q!O!P;Z!P!Q%Q!Q![=w![!g%Q!g!h<Q!h#X%Q#X#Y<Q#Y;'S%Q;'S;=`%c<%lO%Qj>yS!^YOy%Qz;'S%Q;'S;=`%c<%lO%Qj?[WvWOy%Qz!O%Q!O!P:r!P!Q%Q!Q![=w![;'S%Q;'S;=`%c<%lO%Qj?yU]YOy%Qz!Q%Q!Q![;Z![;'S%Q;'S;=`%c<%lO%Q~@bTvWOy%Qz{@q{;'S%Q;'S;=`%c<%lO%Q~@xS!a`#t~Oy%Qz;'S%Q;'S;=`%c<%lO%QjAZ[#}YOy%Qz!O%Q!O!P;Z!P!Q%Q!Q![=w![!g%Q!g!h<Q!h#X%Q#X#Y<Q#Y;'S%Q;'S;=`%c<%lO%QjBUU`YOy%Qz![%Q![!]Bh!];'S%Q;'S;=`%c<%lO%QbBoSaQ!a`Oy%Qz;'S%Q;'S;=`%c<%lO%QjCQSkYOy%Qz;'S%Q;'S;=`%c<%lO%QhCcU!TWOy%Qz!_%Q!_!`Cu!`;'S%Q;'S;=`%c<%lO%QhC|S!TW!a`Oy%Qz;'S%Q;'S;=`%c<%lO%QlDaS!TW!hSOy%Qz;'S%Q;'S;=`%c<%lO%QjDtV!jQ!TWOy%Qz!_%Q!_!`Cu!`!aEZ!a;'S%Q;'S;=`%c<%lO%QbEbS!jQ!a`Oy%Qz;'S%Q;'S;=`%c<%lO%QjEqYOy%Qz}%Q}!OFa!O!c%Q!c!}GO!}#T%Q#T#oGO#o;'S%Q;'S;=`%c<%lO%QjFfW!a`Oy%Qz!c%Q!c!}GO!}#T%Q#T#oGO#o;'S%Q;'S;=`%c<%lO%QjGV[iY!a`Oy%Qz}%Q}!OGO!O!Q%Q!Q![GO![!c%Q!c!}GO!}#T%Q#T#oGO#o;'S%Q;'S;=`%c<%lO%QjHQSmYOy%Qz;'S%Q;'S;=`%c<%lO%QnHcSl^Oy%Qz;'S%Q;'S;=`%c<%lO%QjHtSpYOy%Qz;'S%Q;'S;=`%c<%lO%QjIVSoYOy%Qz;'S%Q;'S;=`%c<%lO%QfIhU!mQOy%Qz!_%Q!_!`6m!`;'S%Q;'S;=`%c<%lO%Q`I}P;=`<%l$q",tokenizers:[Py,$y,ky,vy,1,2,3,4,new Dt("m~RRYZ[z{a~~g~aO#v~~dP!P!Qg~lO#w~~",28,129)],topRules:{StyleSheet:[0,6],Styles:[1,105]},dynamicPrecedences:{76:1},specialized:[{term:124,get:c(n=>Cy[n]||-1,"get")},{term:125,get:c(n=>Zy[n]||-1,"get")},{term:4,get:c(n=>Ay[n]||-1,"get")},{term:25,get:c(n=>Xy[n]||-1,"get")},{term:123,get:c(n=>Ry[n]||-1,"get")}],tokenPrec:1963});var Fa=null;function Ha(){if(!Fa&&typeof document=="object"&&document.body){let{style:n}=document.body,e=[],t=new Set;for(let i in n)i!="cssText"&&i!="cssFloat"&&typeof n[i]=="string"&&(/[A-Z]/.test(i)&&(i=i.replace(/[A-Z]/g,s=>"-"+s.toLowerCase())),t.has(i)||(e.push(i),t.add(i)));Fa=e.sort().map(i=>({type:"property",label:i,apply:i+": "}))}return Fa||[]}c(Ha,"properties");var wO=["active","after","any-link","autofill","backdrop","before","checked","cue","default","defined","disabled","empty","enabled","file-selector-button","first","first-child","first-letter","first-line","first-of-type","focus","focus-visible","focus-within","fullscreen","has","host","host-context","hover","in-range","indeterminate","invalid","is","lang","last-child","last-of-type","left","link","marker","modal","not","nth-child","nth-last-child","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","part","placeholder","placeholder-shown","read-only","read-write","required","right","root","scope","selection","slotted","target","target-text","valid","visited","where"].map(n=>({type:"class",label:n})),kO=["above","absolute","activeborder","additive","activecaption","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","antialiased","appworkspace","asterisks","attr","auto","auto-flow","avoid","avoid-column","avoid-page","avoid-region","axis-pan","background","backwards","baseline","below","bidi-override","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","clear","clip","close-quote","col-resize","collapse","color","color-burn","color-dodge","column","column-reverse","compact","condensed","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","darken","dashed","decimal","decimal-leading-zero","default","default-button","dense","destination-atop","destination-in","destination-out","destination-over","difference","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic-abegede-gez","ethiopic-halehame-aa-er","ethiopic-halehame-gez","ew-resize","exclusion","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fill-box","fixed","flat","flex","flex-end","flex-start","footnotes","forwards","from","geometricPrecision","graytext","grid","groove","hand","hard-light","help","hidden","hide","higher","highlight","highlighttext","horizontal","hsl","hsla","hue","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-grid","inline-table","inset","inside","intrinsic","invert","italic","justify","keep-all","landscape","large","larger","left","level","lighter","lighten","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-hexadecimal","lower-latin","lower-norwegian","lowercase","ltr","luminosity","manipulation","match","matrix","matrix3d","medium","menu","menutext","message-box","middle","min-intrinsic","mix","monospace","move","multiple","multiple_mask_images","multiply","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","opacity","open-quote","optimizeLegibility","optimizeSpeed","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","perspective","pinch-zoom","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row","row-resize","row-reverse","rtl","run-in","running","s-resize","sans-serif","saturation","scale","scale3d","scaleX","scaleY","scaleZ","screen","scroll","scrollbar","scroll-position","se-resize","self-start","self-end","semi-condensed","semi-expanded","separate","serif","show","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","soft-light","solid","source-atop","source-in","source-out","source-over","space","space-around","space-between","space-evenly","spell-out","square","start","static","status-bar","stretch","stroke","stroke-box","sub","subpixel-antialiased","svg_masks","super","sw-resize","symbolic","symbols","system-ui","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","text","text-bottom","text-top","textarea","textfield","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","to","top","transform","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","unidirectional-pan","unset","up","upper-latin","uppercase","url","var","vertical","vertical-text","view-box","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","wrap","wrap-reverse","x-large","x-small","xor","xx-large","xx-small"].map(n=>({type:"keyword",label:n})).concat(["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"].map(n=>({type:"constant",label:n}))),My=["a","abbr","address","article","aside","b","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","dd","del","details","dfn","dialog","div","dl","dt","em","figcaption","figure","footer","form","header","hgroup","h1","h2","h3","h4","h5","h6","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","main","meter","nav","ol","output","p","pre","ruby","section","select","small","source","span","strong","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","tr","u","ul"].map(n=>({type:"type",label:n})),Ey=["@charset","@color-profile","@container","@counter-style","@font-face","@font-feature-values","@font-palette-values","@import","@keyframes","@layer","@media","@namespace","@page","@position-try","@property","@scope","@starting-style","@supports","@view-transition"].map(n=>({type:"keyword",label:n})),bt=/^(\w[\w-]*|-\w[\w-]*|)$/,zy=/^-(-[\w-]*)?$/;function Yy(n,e){var t;if((n.name=="("||n.type.isError)&&(n=n.parent||n),n.name!="ArgList")return!1;let i=(t=n.parent)===null||t===void 0?void 0:t.firstChild;return i?.name!="Callee"?!1:e.sliceString(i.from,i.to)=="var"}c(Yy,"isVarArg");var vO=new Ri,Vy=["Declaration"];function _y(n){for(let e=n;;){if(e.type.isTop)return e;if(!(e=e.parent))return n}}c(_y,"astTop");function PO(n,e,t){if(e.to-e.from>4096){let i=vO.get(e);if(i)return i;let s=[],r=new Set,o=e.cursor(L.IncludeAnonymous);if(o.firstChild())do for(let l of PO(n,o.node,t))r.has(l.label)||(r.add(l.label),s.push(l));while(o.nextSibling());return vO.set(e,s),s}else{let i=[],s=new Set;return e.cursor().iterate(r=>{var o;if(t(r)&&r.matchContext(Vy)&&((o=r.node.nextSibling)===null||o===void 0?void 0:o.name)==":"){let l=n.sliceString(r.from,r.to);s.has(l)||(s.add(l),i.push({label:l,type:"variable"}))}}),i}}c(PO,"variableNames");var Dy=c(n=>e=>{let{state:t,pos:i}=e,s=F(t).resolveInner(i,-1),r=s.type.isError&&s.from==s.to-1&&t.doc.sliceString(s.from,s.to)=="-";if(s.name=="PropertyName"||(r||s.name=="TagName")&&/^(Block|Styles)$/.test(s.resolve(s.to).name))return{from:s.from,options:Ha(),validFor:bt};if(s.name=="ValueName")return{from:s.from,options:kO,validFor:bt};if(s.name=="PseudoClassName")return{from:s.from,options:wO,validFor:bt};if(n(s)||(e.explicit||r)&&Yy(s,t.doc))return{from:n(s)||r?s.from:i,options:PO(t.doc,_y(s),n),validFor:zy};if(s.name=="TagName"){for(let{parent:a}=s;a;a=a.parent)if(a.name=="Block")return{from:s.from,options:Ha(),validFor:bt};return{from:s.from,options:My,validFor:bt}}if(s.name=="AtKeyword")return{from:s.from,options:Ey,validFor:bt};if(!e.explicit)return null;let o=s.resolve(i),l=o.childBefore(i);return l&&l.name==":"&&o.name=="PseudoClassSelector"?{from:i,options:wO,validFor:bt}:l&&l.name==":"&&o.name=="Declaration"||o.name=="ArgList"?{from:i,options:kO,validFor:bt}:o.name=="Block"||o.name=="Styles"?{from:i,options:Ha(),validFor:bt}:null},"defineCSSCompletionSource"),Ly=Dy(n=>n.name=="VariableName"),Wn=Xt.define({name:"css",parser:xO.configure({props:[ri.add({Declaration:Vi()}),oi.add({"Block KeyframeList":tr})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"}},indentOnInput:/^\s*\}$/,wordChars:"-"}});function Rr(){return new Mt(Wn,Wn.data.of({autocomplete:Ly}))}c(Rr,"css");var qy=55,Wy=1,By=56,Iy=2,jy=57,Ny=3,$O=4,Gy=5,ih=6,EO=7,zO=8,YO=9,VO=10,Uy=11,Fy=12,Hy=13,Ka=58,Ky=14,Jy=15,TO=59,_O=21,eb=23,DO=24,tb=25,eh=27,LO=28,ib=29,nb=32,sb=35,rb=37,ob=38,lb=0,ab=1,hb={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},cb={dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},CO={dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}};function fb(n){return n==45||n==46||n==58||n>=65&&n<=90||n==95||n>=97&&n<=122||n>=161}c(fb,"nameChar");var ZO=null,AO=null,XO=0;function th(n,e){let t=n.pos+e;if(XO==t&&AO==n)return ZO;let i=n.peek(e),s="";for(;fb(i);)s+=String.fromCharCode(i),i=n.peek(++e);return AO=n,XO=t,ZO=s?s.toLowerCase():i==ub||i==db?void 0:null}c(th,"tagNameAfter");var qO=60,Mr=62,nh=47,ub=63,db=33,Ob=45;function RO(n,e){this.name=n,this.parent=e}c(RO,"ElementContext");var pb=[ih,VO,EO,zO,YO],mb=new Ii({start:null,shift(n,e,t,i){return pb.indexOf(e)>-1?new RO(th(i,1)||"",n):n},reduce(n,e){return e==_O&&n?n.parent:n},reuse(n,e,t,i){let s=e.type.id;return s==ih||s==rb?new RO(th(i,1)||"",n):n},strict:!1}),gb=new ae((n,e)=>{if(n.next!=qO){n.next<0&&e.context&&n.acceptToken(Ka);return}n.advance();let t=n.next==nh;t&&n.advance();let i=th(n,0);if(i===void 0)return;if(!i)return n.acceptToken(t?Jy:Ky);let s=e.context?e.context.name:null;if(t){if(i==s)return n.acceptToken(Uy);if(s&&cb[s])return n.acceptToken(Ka,-2);if(e.dialectEnabled(lb))return n.acceptToken(Fy);for(let r=e.context;r;r=r.parent)if(r.name==i)return;n.acceptToken(Hy)}else{if(i=="script")return n.acceptToken(EO);if(i=="style")return n.acceptToken(zO);if(i=="textarea")return n.acceptToken(YO);if(hb.hasOwnProperty(i))return n.acceptToken(VO);s&&CO[s]&&CO[s][i]?n.acceptToken(Ka,-1):n.acceptToken(ih)}},{contextual:!0}),Sb=new ae(n=>{for(let e=0,t=0;;t++){if(n.next<0){t&&n.acceptToken(TO);break}if(n.next==Ob)e++;else if(n.next==Mr&&e>=2){t>=3&&n.acceptToken(TO,-2);break}else e=0;n.advance()}});function Qb(n){for(;n;n=n.parent)if(n.name=="svg"||n.name=="math")return!0;return!1}c(Qb,"inForeignElement");var yb=new ae((n,e)=>{if(n.next==nh&&n.peek(1)==Mr){let t=e.dialectEnabled(ab)||Qb(e.context);n.acceptToken(t?Gy:$O,2)}else n.next==Mr&&n.acceptToken($O,1)});function sh(n,e,t){let i=2+n.length;return new ae(s=>{for(let r=0,o=0,l=0;;l++){if(s.next<0){l&&s.acceptToken(e);break}if(r==0&&s.next==qO||r==1&&s.next==nh||r>=2&&r<i&&s.next==n.charCodeAt(r-2))r++,o++;else if(r==i&&s.next==Mr){l>o?s.acceptToken(e,-o):s.acceptToken(t,-(o-2));break}else if((s.next==10||s.next==13)&&l){s.acceptToken(e,1);break}else r=o=0;s.advance()}})}c(sh,"contentTokenizer");var bb=sh("script",qy,Wy),xb=sh("style",By,Iy),wb=sh("textarea",jy,Ny),kb=At({"Text RawText IncompleteTag IncompleteCloseTag":S.content,"StartTag StartCloseTag SelfClosingEndTag EndTag":S.angleBracket,TagName:S.tagName,"MismatchedCloseTag/TagName":[S.tagName,S.invalid],AttributeName:S.attributeName,"AttributeValue UnquotedAttributeValue":S.attributeValue,Is:S.definitionOperator,"EntityReference CharacterReference":S.character,Comment:S.blockComment,ProcessingInst:S.processingInstruction,DoctypeDecl:S.documentMeta}),WO=Lt.deserialize({version:14,states:",xOVO!rOOO!ZQ#tO'#CrO!`Q#tO'#C{O!eQ#tO'#DOO!jQ#tO'#DRO!oQ#tO'#DTO!tOaO'#CqO#PObO'#CqO#[OdO'#CqO$kO!rO'#CqOOO`'#Cq'#CqO$rO$fO'#DUO$zQ#tO'#DWO%PQ#tO'#DXOOO`'#Dl'#DlOOO`'#DZ'#DZQVO!rOOO%UQ&rO,59^O%aQ&rO,59gO%lQ&rO,59jO%wQ&rO,59mO&SQ&rO,59oOOOa'#D_'#D_O&_OaO'#CyO&jOaO,59]OOOb'#D`'#D`O&rObO'#C|O&}ObO,59]OOOd'#Da'#DaO'VOdO'#DPO'bOdO,59]OOO`'#Db'#DbO'jO!rO,59]O'qQ#tO'#DSOOO`,59],59]OOOp'#Dc'#DcO'vO$fO,59pOOO`,59p,59pO(OQ#|O,59rO(TQ#|O,59sOOO`-E7X-E7XO(YQ&rO'#CtOOQW'#D['#D[O(hQ&rO1G.xOOOa1G.x1G.xOOO`1G/Z1G/ZO(sQ&rO1G/ROOOb1G/R1G/RO)OQ&rO1G/UOOOd1G/U1G/UO)ZQ&rO1G/XOOO`1G/X1G/XO)fQ&rO1G/ZOOOa-E7]-E7]O)qQ#tO'#CzOOO`1G.w1G.wOOOb-E7^-E7^O)vQ#tO'#C}OOOd-E7_-E7_O){Q#tO'#DQOOO`-E7`-E7`O*QQ#|O,59nOOOp-E7a-E7aOOO`1G/[1G/[OOO`1G/^1G/^OOO`1G/_1G/_O*VQ,UO,59`OOQW-E7Y-E7YOOOa7+$d7+$dOOO`7+$u7+$uOOOb7+$m7+$mOOOd7+$p7+$pOOO`7+$s7+$sO*bQ#|O,59fO*gQ#|O,59iO*lQ#|O,59lOOO`1G/Y1G/YO*qO7[O'#CwO+SOMhO'#CwOOQW1G.z1G.zOOO`1G/Q1G/QOOO`1G/T1G/TOOO`1G/W1G/WOOOO'#D]'#D]O+eO7[O,59cOOQW,59c,59cOOOO'#D^'#D^O+vOMhO,59cOOOO-E7Z-E7ZOOQW1G.}1G.}OOOO-E7[-E7[",stateData:",c~O!_OS~OUSOVPOWQOXROYTO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O|_O!eZO~OgaO~OgbO~OgcO~OgdO~OgeO~O!XfOPmP![mP~O!YiOQpP![pP~O!ZlORsP![sP~OUSOVPOWQOXROYTOZqO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O!eZO~O![rO~P#gO!]sO!fuO~OgvO~OgwO~OS|OT}OiyO~OS!POT}OiyO~OS!ROT}OiyO~OS!TOT}OiyO~OS}OT}OiyO~O!XfOPmX![mX~OP!WO![!XO~O!YiOQpX![pX~OQ!ZO![!XO~O!ZlORsX![sX~OR!]O![!XO~O![!XO~P#gOg!_O~O!]sO!f!aO~OS!bO~OS!cO~Oj!dOShXThXihX~OS!fOT!gOiyO~OS!hOT!gOiyO~OS!iOT!gOiyO~OS!jOT!gOiyO~OS!gOT!gOiyO~Og!kO~Og!lO~Og!mO~OS!nO~Ol!qO!a!oO!c!pO~OS!rO~OS!sO~OS!tO~Ob!uOc!uOd!uO!a!wO!b!uO~Ob!xOc!xOd!xO!c!wO!d!xO~Ob!uOc!uOd!uO!a!{O!b!uO~Ob!xOc!xOd!xO!c!{O!d!xO~OT~cbd!ey|!e~",goto:"%q!aPPPPPPPPPPPPPPPPPPPPP!b!hP!nPP!zP!}#Q#T#Z#^#a#g#j#m#s#y!bP!b!bP$P$V$m$s$y%P%V%]%cPPPPPPPP%iX^OX`pXUOX`pezabcde{!O!Q!S!UR!q!dRhUR!XhXVOX`pRkVR!XkXWOX`pRnWR!XnXXOX`pQrXR!XpXYOX`pQ`ORx`Q{aQ!ObQ!QcQ!SdQ!UeZ!e{!O!Q!S!UQ!v!oR!z!vQ!y!pR!|!yQgUR!VgQjVR!YjQmWR![mQpXR!^pQtZR!`tS_O`ToXp",nodeNames:"\u26A0 StartCloseTag StartCloseTag StartCloseTag EndTag SelfClosingEndTag StartTag StartTag StartTag StartTag StartTag StartCloseTag StartCloseTag StartCloseTag IncompleteTag IncompleteCloseTag Document Text EntityReference CharacterReference InvalidEntity Element OpenTag TagName Attribute AttributeName Is AttributeValue UnquotedAttributeValue ScriptText CloseTag OpenTag StyleText CloseTag OpenTag TextareaText CloseTag OpenTag CloseTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag CloseTag DoctypeDecl",maxTerm:68,context:mb,nodeProps:[["closedBy",-10,1,2,3,7,8,9,10,11,12,13,"EndTag",6,"EndTag SelfClosingEndTag",-4,22,31,34,37,"CloseTag"],["openedBy",4,"StartTag StartCloseTag",5,"StartTag",-4,30,33,36,38,"OpenTag"],["group",-10,14,15,18,19,20,21,40,41,42,43,"Entity",17,"Entity TextContent",-3,29,32,35,"TextContent Entity"],["isolate",-11,22,30,31,33,34,36,37,38,39,42,43,"ltr",-3,27,28,40,""]],propSources:[kb],skippedNodes:[0],repeatNodeCount:9,tokenData:"!<p!aR!YOX$qXY,QYZ,QZ[$q[]&X]^,Q^p$qpq,Qqr-_rs3_sv-_vw3}wxHYx}-_}!OH{!O!P-_!P!Q$q!Q![-_![!]Mz!]!^-_!^!_!$S!_!`!;x!`!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4U-_4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!Z$|caPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr$qrs&}sv$qvw+Pwx(tx!^$q!^!_*V!_!a&X!a#S$q#S#T&X#T;'S$q;'S;=`+z<%lO$q!R&bXaP!b`!dpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&Xq'UVaP!dpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n<%lO&}P'pTaPOv'kw!^'k!_;'S'k;'S;=`(P<%lO'kP(SP;=`<%l'kp([S!dpOv(Vx;'S(V;'S;=`(h<%lO(Vp(kP;=`<%l(Vq(qP;=`<%l&}a({WaP!b`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t`)jT!b`Or)esv)ew;'S)e;'S;=`)y<%lO)e`)|P;=`<%l)ea*SP;=`<%l(t!Q*^V!b`!dpOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!Q*vP;=`<%l*V!R*|P;=`<%l&XW+UYlWOX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+PW+wP;=`<%l+P!Z+}P;=`<%l$q!a,]`aP!b`!dp!_^OX&XXY,QYZ,QZ]&X]^,Q^p&Xpq,Qqr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!_-ljiSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q[/ebiSlWOX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+PS0rXiSqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0mS1bP;=`<%l0m[1hP;=`<%l/^!V1vciSaP!b`!dpOq&Xqr1krs&}sv1kvw0mwx(tx!P1k!P!Q&X!Q!^1k!^!_*V!_!a&X!a#s1k#s$f&X$f;'S1k;'S;=`3R<%l?Ah1k?Ah?BY&X?BY?Mn1k?MnO&X!V3UP;=`<%l1k!_3[P;=`<%l-_!Z3hV!ahaP!dpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n<%lO&}!_4WiiSlWd!ROX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst>]tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^/^!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!Z5zblWOX5uXZ7SZ[5u[^7S^p5uqr5urs7Sst+Ptw5uwx7Sx!]5u!]!^7w!^!a7S!a#S5u#S#T7S#T;'S5u;'S;=`8n<%lO5u!R7VVOp7Sqs7St!]7S!]!^7l!^;'S7S;'S;=`7q<%lO7S!R7qOb!R!R7tP;=`<%l7S!Z8OYlWb!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!Z8qP;=`<%l5u!_8{iiSlWOX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst/^tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^:j!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!_:sbiSlWb!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!V<QciSOp7Sqr;{rs7Sst0mtw;{wx7Sx!P;{!P!Q7S!Q!];{!]!^=]!^!a7S!a#s;{#s$f7S$f;'S;{;'S;=`>P<%l?Ah;{?Ah?BY7S?BY?Mn;{?MnO7S!V=dXiSb!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!V>SP;=`<%l;{!_>YP;=`<%l8t!_>dhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^/^!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!Z@TalWOX@OXZAYZ[@O[^AY^p@Oqr@OrsAYsw@OwxAYx!]@O!]!^Az!^!aAY!a#S@O#S#TAY#T;'S@O;'S;=`Bq<%lO@O!RA]UOpAYq!]AY!]!^Ao!^;'SAY;'S;=`At<%lOAY!RAtOc!R!RAwP;=`<%lAY!ZBRYlWc!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!ZBtP;=`<%l@O!_COhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^Dj!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!_DsbiSlWc!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VFQbiSOpAYqrE{rsAYswE{wxAYx!PE{!P!QAY!Q!]E{!]!^GY!^!aAY!a#sE{#s$fAY$f;'SE{;'S;=`G|<%l?AhE{?Ah?BYAY?BY?MnE{?MnOAY!VGaXiSc!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!VHPP;=`<%lE{!_HVP;=`<%lBw!ZHcW!cxaP!b`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t!aIYliSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OKQ!O!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!aK_kiSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!`&X!`!aMS!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!TM_XaP!b`!dp!fQOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!aNZ!ZiSgQaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OMz!O!PMz!P!Q$q!Q![Mz![!]Mz!]!^-_!^!_*V!_!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f$}-_$}%OMz%O%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4UMz4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Je-_$Je$JgMz$Jg$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!a!$PP;=`<%lMz!R!$ZY!b`!dpOq*Vqr!$yrs(Vsv*Vwx)ex!a*V!a!b!4t!b;'S*V;'S;=`*s<%lO*V!R!%Q]!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!%y!O!f*V!f!g!']!g#W*V#W#X!0`#X;'S*V;'S;=`*s<%lO*V!R!&QX!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!&m!O;'S*V;'S;=`*s<%lO*V!R!&vV!b`!dp!ePOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!'dX!b`!dpOr*Vrs(Vsv*Vwx)ex!q*V!q!r!(P!r;'S*V;'S;=`*s<%lO*V!R!(WX!b`!dpOr*Vrs(Vsv*Vwx)ex!e*V!e!f!(s!f;'S*V;'S;=`*s<%lO*V!R!(zX!b`!dpOr*Vrs(Vsv*Vwx)ex!v*V!v!w!)g!w;'S*V;'S;=`*s<%lO*V!R!)nX!b`!dpOr*Vrs(Vsv*Vwx)ex!{*V!{!|!*Z!|;'S*V;'S;=`*s<%lO*V!R!*bX!b`!dpOr*Vrs(Vsv*Vwx)ex!r*V!r!s!*}!s;'S*V;'S;=`*s<%lO*V!R!+UX!b`!dpOr*Vrs(Vsv*Vwx)ex!g*V!g!h!+q!h;'S*V;'S;=`*s<%lO*V!R!+xY!b`!dpOr!+qrs!,hsv!+qvw!-Swx!.[x!`!+q!`!a!/j!a;'S!+q;'S;=`!0Y<%lO!+qq!,mV!dpOv!,hvx!-Sx!`!,h!`!a!-q!a;'S!,h;'S;=`!.U<%lO!,hP!-VTO!`!-S!`!a!-f!a;'S!-S;'S;=`!-k<%lO!-SP!-kO|PP!-nP;=`<%l!-Sq!-xS!dp|POv(Vx;'S(V;'S;=`(h<%lO(Vq!.XP;=`<%l!,ha!.aX!b`Or!.[rs!-Ssv!.[vw!-Sw!`!.[!`!a!.|!a;'S!.[;'S;=`!/d<%lO!.[a!/TT!b`|POr)esv)ew;'S)e;'S;=`)y<%lO)ea!/gP;=`<%l!.[!R!/sV!b`!dp|POr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!0]P;=`<%l!+q!R!0gX!b`!dpOr*Vrs(Vsv*Vwx)ex#c*V#c#d!1S#d;'S*V;'S;=`*s<%lO*V!R!1ZX!b`!dpOr*Vrs(Vsv*Vwx)ex#V*V#V#W!1v#W;'S*V;'S;=`*s<%lO*V!R!1}X!b`!dpOr*Vrs(Vsv*Vwx)ex#h*V#h#i!2j#i;'S*V;'S;=`*s<%lO*V!R!2qX!b`!dpOr*Vrs(Vsv*Vwx)ex#m*V#m#n!3^#n;'S*V;'S;=`*s<%lO*V!R!3eX!b`!dpOr*Vrs(Vsv*Vwx)ex#d*V#d#e!4Q#e;'S*V;'S;=`*s<%lO*V!R!4XX!b`!dpOr*Vrs(Vsv*Vwx)ex#X*V#X#Y!+q#Y;'S*V;'S;=`*s<%lO*V!R!4{Y!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!a!4t!a!b!:]!b;'S!4t;'S;=`!;r<%lO!4tq!5pV!dpOv!5kvx!6Vx!a!5k!a!b!7W!b;'S!5k;'S;=`!8V<%lO!5kP!6YTO!a!6V!a!b!6i!b;'S!6V;'S;=`!7Q<%lO!6VP!6lTO!`!6V!`!a!6{!a;'S!6V;'S;=`!7Q<%lO!6VP!7QOyPP!7TP;=`<%l!6Vq!7]V!dpOv!5kvx!6Vx!`!5k!`!a!7r!a;'S!5k;'S;=`!8V<%lO!5kq!7yS!dpyPOv(Vx;'S(V;'S;=`(h<%lO(Vq!8YP;=`<%l!5ka!8bX!b`Or!8]rs!6Vsv!8]vw!6Vw!a!8]!a!b!8}!b;'S!8];'S;=`!:V<%lO!8]a!9SX!b`Or!8]rs!6Vsv!8]vw!6Vw!`!8]!`!a!9o!a;'S!8];'S;=`!:V<%lO!8]a!9vT!b`yPOr)esv)ew;'S)e;'S;=`)y<%lO)ea!:YP;=`<%l!8]!R!:dY!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!`!4t!`!a!;S!a;'S!4t;'S;=`!;r<%lO!4t!R!;]V!b`!dpyPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!;uP;=`<%l!4t!V!<TXjSaP!b`!dpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X",tokenizers:[bb,xb,wb,yb,gb,Sb,0,1,2,3,4,5],topRules:{Document:[0,16]},dialects:{noMatch:0,selfClosing:515},tokenPrec:517});function BO(n,e){let t=Object.create(null);for(let i of n.getChildren(DO)){let s=i.getChild(tb),r=i.getChild(eh)||i.getChild(LO);s&&(t[e.read(s.from,s.to)]=r?r.type.id==eh?e.read(r.from+1,r.to-1):e.read(r.from,r.to):"")}return t}c(BO,"getAttrs");function MO(n,e){let t=n.getChild(eb);return t?e.read(t.from,t.to):" "}c(MO,"findTagName");function Ja(n,e,t){let i;for(let s of t)if(!s.attrs||s.attrs(i||(i=BO(n.node.parent.firstChild,e))))return{parser:s.parser,bracketed:!0};return null}c(Ja,"maybeNest");function rh(n=[],e=[]){let t=[],i=[],s=[],r=[];for(let l of n)(l.tag=="script"?t:l.tag=="style"?i:l.tag=="textarea"?s:r).push(l);let o=e.length?Object.create(null):null;for(let l of e)(o[l.name]||(o[l.name]=[])).push(l);return su((l,a)=>{let h=l.type.id;if(h==ib)return Ja(l,a,t);if(h==nb)return Ja(l,a,i);if(h==sb)return Ja(l,a,s);if(h==_O&&r.length){let f=l.node,u=f.firstChild,d=u&&MO(u,a),O;if(d){for(let p of r)if(p.tag==d&&(!p.attrs||p.attrs(O||(O=BO(u,a))))){let m=f.lastChild,g=m.type.id==ob?m.from:f.to;if(g>u.to)return{parser:p.parser,overlay:[{from:u.to,to:g}]}}}}if(o&&h==DO){let f=l.node,u;if(u=f.firstChild){let d=o[a.read(u.from,u.to)];if(d)for(let O of d){if(O.tagName&&O.tagName!=MO(f.parent,a))continue;let p=f.lastChild;if(p.type.id==eh){let m=p.from+1,g=p.lastChild,Q=p.to-(g&&g.isError?0:1);if(Q>m)return{parser:O.parser,overlay:[{from:m,to:Q}],bracketed:!0}}else if(p.type.id==LO)return{parser:O.parser,overlay:[{from:p.from,to:p.to}]}}}}return null})}c(rh,"configureNesting");var vb=316,Pb=317,IO=1,$b=2,Tb=3,Cb=4,Zb=318,Ab=320,Xb=321,Rb=5,Mb=6,Eb=0,lh=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],jO=125,zb=59,ah=47,Yb=42,Vb=43,_b=45,Db=60,Lb=44,qb=63,Wb=46,Bb=91,Ib=new Ii({start:!1,shift(n,e){return e==Rb||e==Mb||e==Ab?n:e==Xb},strict:!1}),jb=new ae((n,e)=>{let{next:t}=n;(t==jO||t==-1||e.context)&&n.acceptToken(Zb)},{contextual:!0,fallback:!0}),Nb=new ae((n,e)=>{let{next:t}=n,i;lh.indexOf(t)>-1||t==ah&&((i=n.peek(1))==ah||i==Yb)||t!=jO&&t!=zb&&t!=-1&&!e.context&&n.acceptToken(vb)},{contextual:!0}),Gb=new ae((n,e)=>{n.next==Bb&&!e.context&&n.acceptToken(Pb)},{contextual:!0}),Ub=new ae((n,e)=>{let{next:t}=n;if(t==Vb||t==_b){if(n.advance(),t==n.next){n.advance();let i=!e.context&&e.canShift(IO);n.acceptToken(i?IO:$b)}}else t==qb&&n.peek(1)==Wb&&(n.advance(),n.advance(),(n.next<48||n.next>57)&&n.acceptToken(Tb))},{contextual:!0});function oh(n,e){return n>=65&&n<=90||n>=97&&n<=122||n==95||n>=192||!e&&n>=48&&n<=57}c(oh,"identifierChar");var Fb=new ae((n,e)=>{if(n.next!=Db||!e.dialectEnabled(Eb)||(n.advance(),n.next==ah))return;let t=0;for(;lh.indexOf(n.next)>-1;)n.advance(),t++;if(oh(n.next,!0)){for(n.advance(),t++;oh(n.next,!1);)n.advance(),t++;for(;lh.indexOf(n.next)>-1;)n.advance(),t++;if(n.next==Lb)return;for(let i=0;;i++){if(i==7){if(!oh(n.next,!0))return;break}if(n.next!="extends".charCodeAt(i))break;n.advance(),t++}}n.acceptToken(Cb,-t)}),Hb=At({"get set async static":S.modifier,"for while do if else switch try catch finally return throw break continue default case defer":S.controlKeyword,"in of await yield void typeof delete instanceof as satisfies":S.operatorKeyword,"let var const using function class extends":S.definitionKeyword,"import export from":S.moduleKeyword,"with debugger new":S.keyword,TemplateString:S.special(S.string),super:S.atom,BooleanLiteral:S.bool,this:S.self,null:S.null,Star:S.modifier,VariableName:S.variableName,"CallExpression/VariableName TaggedTemplateExpression/VariableName":S.function(S.variableName),VariableDefinition:S.definition(S.variableName),Label:S.labelName,PropertyName:S.propertyName,PrivatePropertyName:S.special(S.propertyName),"CallExpression/MemberExpression/PropertyName":S.function(S.propertyName),"FunctionDeclaration/VariableDefinition":S.function(S.definition(S.variableName)),"ClassDeclaration/VariableDefinition":S.definition(S.className),"NewExpression/VariableName":S.className,PropertyDefinition:S.definition(S.propertyName),PrivatePropertyDefinition:S.definition(S.special(S.propertyName)),UpdateOp:S.updateOperator,"LineComment Hashbang":S.lineComment,BlockComment:S.blockComment,Number:S.number,String:S.string,Escape:S.escape,ArithOp:S.arithmeticOperator,LogicOp:S.logicOperator,BitOp:S.bitwiseOperator,CompareOp:S.compareOperator,RegExp:S.regexp,Equals:S.definitionOperator,Arrow:S.function(S.punctuation),": Spread":S.punctuation,"( )":S.paren,"[ ]":S.squareBracket,"{ }":S.brace,"InterpolationStart InterpolationEnd":S.special(S.brace),".":S.derefOperator,", ;":S.separator,"@":S.meta,TypeName:S.typeName,TypeDefinition:S.definition(S.typeName),"type enum interface implements namespace module declare":S.definitionKeyword,"abstract global Privacy readonly override":S.modifier,"is keyof unique infer asserts":S.operatorKeyword,JSXAttributeValue:S.attributeValue,JSXText:S.content,"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag":S.angleBracket,"JSXIdentifier JSXNameSpacedName":S.tagName,"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName":S.attributeName,"JSXBuiltin/JSXIdentifier":S.standard(S.tagName)}),Kb={__proto__:null,export:20,as:25,from:33,default:36,async:41,function:42,in:52,out:55,const:56,extends:60,this:64,true:72,false:72,null:84,void:88,typeof:92,super:108,new:142,delete:154,yield:163,await:167,class:172,public:235,private:235,protected:235,readonly:237,instanceof:256,satisfies:259,import:292,keyof:349,unique:353,infer:359,asserts:395,is:397,abstract:417,implements:419,type:421,let:424,var:426,using:429,interface:435,enum:439,namespace:445,module:447,declare:451,global:455,defer:471,for:476,of:485,while:488,with:492,do:496,if:500,else:502,switch:506,case:512,try:518,catch:522,finally:526,return:530,throw:534,break:538,continue:542,debugger:546},Jb={__proto__:null,async:129,get:131,set:133,declare:195,public:197,private:197,protected:197,static:199,abstract:201,override:203,readonly:209,accessor:211,new:401},e1={__proto__:null,"<":193},NO=Lt.deserialize({version:14,states:"$F|Q%TQlOOO%[QlOOO'_QpOOP(lO`OOO*zQ!0MxO'#CiO+RO#tO'#CjO+aO&jO'#CjO+oO#@ItO'#DaO.QQlO'#DgO.bQlO'#DrO%[QlO'#DzO0fQlO'#ESOOQ!0Lf'#E['#E[O1PQ`O'#EXOOQO'#Ep'#EpOOQO'#Il'#IlO1XQ`O'#GsO1dQ`O'#EoO1iQ`O'#EoO3hQ!0MxO'#JrO6[Q!0MxO'#JsO6uQ`O'#F]O6zQ,UO'#FtOOQ!0Lf'#Ff'#FfO7VO7dO'#FfO9XQMhO'#F|O9`Q`O'#F{OOQ!0Lf'#Js'#JsOOQ!0Lb'#Jr'#JrO9eQ`O'#GwOOQ['#K_'#K_O9pQ`O'#IYO9uQ!0LrO'#IZOOQ['#J`'#J`OOQ['#I_'#I_Q`QlOOQ`QlOOO9}Q!L^O'#DvO:UQlO'#EOO:]QlO'#EQO9kQ`O'#GsO:dQMhO'#CoO:rQ`O'#EnO:}Q`O'#EyO;hQMhO'#FeO;xQ`O'#GsOOQO'#K`'#K`O;}Q`O'#K`O<]Q`O'#G{O<]Q`O'#G|O<]Q`O'#HOO9kQ`O'#HRO=SQ`O'#HUO>kQ`O'#CeO>{Q`O'#HcO?TQ`O'#HiO?TQ`O'#HkO`QlO'#HmO?TQ`O'#HoO?TQ`O'#HrO?YQ`O'#HxO?_Q!0LsO'#IOO%[QlO'#IQO?jQ!0LsO'#ISO?uQ!0LsO'#IUO9uQ!0LrO'#IWO@QQ!0MxO'#CiOASQpO'#DlQOQ`OOO%[QlO'#EQOAjQ`O'#ETO:dQMhO'#EnOAuQ`O'#EnOBQQ!bO'#FeOOQ['#Cg'#CgOOQ!0Lb'#Dq'#DqOOQ!0Lb'#Jv'#JvO%[QlO'#JvOOQO'#Jy'#JyOOQO'#Ih'#IhOCQQpO'#EgOOQ!0Lb'#Ef'#EfOOQ!0Lb'#J}'#J}OC|Q!0MSO'#EgODWQpO'#EWOOQO'#Jx'#JxODlQpO'#JyOEyQpO'#EWODWQpO'#EgPFWO&2DjO'#CbPOOO)CD})CD}OOOO'#I`'#I`OFcO#tO,59UOOQ!0Lh,59U,59UOOOO'#Ia'#IaOFqO&jO,59UOGPQ!L^O'#DcOOOO'#Ic'#IcOGWO#@ItO,59{OOQ!0Lf,59{,59{OGfQlO'#IdOGyQ`O'#JtOIxQ!fO'#JtO+}QlO'#JtOJPQ`O,5:ROJgQ`O'#EpOJtQ`O'#KTOKPQ`O'#KSOKPQ`O'#KSOKXQ`O,5;^OK^Q`O'#KROOQ!0Ln,5:^,5:^OKeQlO,5:^OMcQ!0MxO,5:fONSQ`O,5:nONmQ!0LrO'#KQONtQ`O'#KPO9eQ`O'#KPO! YQ`O'#KPO! bQ`O,5;]O! gQ`O'#KPO!#lQ!fO'#JsOOQ!0Lh'#Ci'#CiO%[QlO'#ESO!$[Q!fO,5:sOOQS'#Jz'#JzOOQO-E<j-E<jO9kQ`O,5=_O!$rQ`O,5=_O!$wQlO,5;ZO!&zQMhO'#EkO!(eQ`O,5;ZO!(jQlO'#DyO!(tQpO,5;dO!(|QpO,5;dO%[QlO,5;dOOQ['#FT'#FTOOQ['#FV'#FVO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eOOQ['#FZ'#FZO!)[QlO,5;tOOQ!0Lf,5;y,5;yOOQ!0Lf,5;z,5;zOOQ!0Lf,5;|,5;|O%[QlO'#IpO!+_Q!0LrO,5<iO%[QlO,5;eO!&zQMhO,5;eO!+|QMhO,5;eO!-nQMhO'#E^O%[QlO,5;wOOQ!0Lf,5;{,5;{O!-uQ,UO'#FjO!.rQ,UO'#KXO!.^Q,UO'#KXO!.yQ,UO'#KXOOQO'#KX'#KXO!/_Q,UO,5<SOOOW,5<`,5<`O!/pQlO'#FvOOOW'#Io'#IoO7VO7dO,5<QO!/wQ,UO'#FxOOQ!0Lf,5<Q,5<QO!0hQ$IUO'#CyOOQ!0Lh'#C}'#C}O!0{O#@ItO'#DRO!1iQMjO,5<eO!1pQ`O,5<hO!3YQ(CWO'#GXO!3jQ`O'#GYO!3oQ`O'#GYO!5_Q(CWO'#G^O!6dQpO'#GbOOQO'#Gn'#GnO!,TQMhO'#GmOOQO'#Gp'#GpO!,TQMhO'#GoO!7VQ$IUO'#JlOOQ!0Lh'#Jl'#JlO!7aQ`O'#JkO!7oQ`O'#JjO!7wQ`O'#CuOOQ!0Lh'#C{'#C{O!8YQ`O'#C}OOQ!0Lh'#DV'#DVOOQ!0Lh'#DX'#DXO!8_Q`O,5<eO1SQ`O'#DZO!,TQMhO'#GPO!,TQMhO'#GRO!8gQ`O'#GTO!8lQ`O'#GUO!3oQ`O'#G[O!,TQMhO'#GaO<]Q`O'#JkO!8qQ`O'#EqO!9`Q`O,5<gOOQ!0Lb'#Cr'#CrO!9hQ`O'#ErO!:bQpO'#EsOOQ!0Lb'#KR'#KRO!:iQ!0LrO'#KaO9uQ!0LrO,5=cO`QlO,5>tOOQ['#Jh'#JhOOQ[,5>u,5>uOOQ[-E<]-E<]O!<hQ!0MxO,5:bO!:]QpO,5:`O!?RQ!0MxO,5:jO%[QlO,5:jO!AiQ!0MxO,5:lOOQO,5@z,5@zO!BYQMhO,5=_O!BhQ!0LrO'#JiO9`Q`O'#JiO!ByQ!0LrO,59ZO!CUQpO,59ZO!C^QMhO,59ZO:dQMhO,59ZO!CiQ`O,5;ZO!CqQ`O'#HbO!DVQ`O'#KdO%[QlO,5;}O!:]QpO,5<PO!D_Q`O,5=zO!DdQ`O,5=zO!DiQ`O,5=zO!DwQ`O,5=zO9uQ!0LrO,5=zO<]Q`O,5=jOOQO'#Cy'#CyO!EOQpO,5=gO!EWQMhO,5=hO!EcQ`O,5=jO!EhQ!bO,5=mO!EpQ`O'#K`O?YQ`O'#HWO9kQ`O'#HYO!EuQ`O'#HYO:dQMhO'#H[O!EzQ`O'#H[OOQ[,5=p,5=pO!FPQ`O'#H]O!FbQ`O'#CoO!FgQ`O,59PO!FqQ`O,59PO!HvQlO,59POOQ[,59P,59PO!IWQ!0LrO,59PO%[QlO,59PO!KcQlO'#HeOOQ['#Hf'#HfOOQ['#Hg'#HgO`QlO,5=}O!KyQ`O,5=}O`QlO,5>TO`QlO,5>VO!LOQ`O,5>XO`QlO,5>ZO!LTQ`O,5>^O!LYQlO,5>dOOQ[,5>j,5>jO%[QlO,5>jO9uQ!0LrO,5>lOOQ[,5>n,5>nO#!dQ`O,5>nOOQ[,5>p,5>pO#!dQ`O,5>pOOQ[,5>r,5>rO##QQpO'#D_O%[QlO'#JvO##sQpO'#JvO##}QpO'#DmO#$`QpO'#DmO#&qQlO'#DmO#&xQ`O'#JuO#'QQ`O,5:WO#'VQ`O'#EtO#'eQ`O'#KUO#'mQ`O,5;_O#'rQpO'#DmO#(PQpO'#EVOOQ!0Lf,5:o,5:oO%[QlO,5:oO#(WQ`O,5:oO?YQ`O,5;YO!CUQpO,5;YO!C^QMhO,5;YO:dQMhO,5;YO#(`Q`O,5@bO#(eQ07dO,5:sOOQO-E<f-E<fO#)kQ!0MSO,5;RODWQpO,5:rO#)uQpO,5:rODWQpO,5;RO!ByQ!0LrO,5:rOOQ!0Lb'#Ej'#EjOOQO,5;R,5;RO%[QlO,5;RO#*SQ!0LrO,5;RO#*_Q!0LrO,5;RO!CUQpO,5:rOOQO,5;X,5;XO#*mQ!0LrO,5;RPOOO'#I^'#I^P#+RO&2DjO,58|POOO,58|,58|OOOO-E<^-E<^OOQ!0Lh1G.p1G.pOOOO-E<_-E<_OOOO,59},59}O#+^Q!bO,59}OOOO-E<a-E<aOOQ!0Lf1G/g1G/gO#+cQ!fO,5?OO+}QlO,5?OOOQO,5?U,5?UO#+mQlO'#IdOOQO-E<b-E<bO#+zQ`O,5@`O#,SQ!fO,5@`O#,ZQ`O,5@nOOQ!0Lf1G/m1G/mO%[QlO,5@oO#,cQ`O'#IjOOQO-E<h-E<hO#,ZQ`O,5@nOOQ!0Lb1G0x1G0xOOQ!0Ln1G/x1G/xOOQ!0Ln1G0Y1G0YO%[QlO,5@lO#,wQ!0LrO,5@lO#-YQ!0LrO,5@lO#-aQ`O,5@kO9eQ`O,5@kO#-iQ`O,5@kO#-wQ`O'#ImO#-aQ`O,5@kOOQ!0Lb1G0w1G0wO!(tQpO,5:uO!)PQpO,5:uOOQS,5:w,5:wO#.iQdO,5:wO#.qQMhO1G2yO9kQ`O1G2yOOQ!0Lf1G0u1G0uO#/PQ!0MxO1G0uO#0UQ!0MvO,5;VOOQ!0Lh'#GW'#GWO#0rQ!0MzO'#JlO!$wQlO1G0uO#2}Q!fO'#JwO%[QlO'#JwO#3XQ`O,5:eOOQ!0Lh'#D_'#D_OOQ!0Lf1G1O1G1OO%[QlO1G1OOOQ!0Lf1G1f1G1fO#3^Q`O1G1OO#5rQ!0MxO1G1PO#5yQ!0MxO1G1PO#8aQ!0MxO1G1PO#8hQ!0MxO1G1PO#;OQ!0MxO1G1PO#=fQ!0MxO1G1PO#=mQ!0MxO1G1PO#=tQ!0MxO1G1PO#@[Q!0MxO1G1PO#@cQ!0MxO1G1PO#BpQ?MtO'#CiO#DkQ?MtO1G1`O#DrQ?MtO'#JsO#EVQ!0MxO,5?[OOQ!0Lb-E<n-E<nO#GdQ!0MxO1G1PO#HaQ!0MzO1G1POOQ!0Lf1G1P1G1PO#IdQMjO'#J|O#InQ`O,5:xO#IsQ!0MxO1G1cO#JgQ,UO,5<WO#JoQ,UO,5<XO#JwQ,UO'#FoO#K`Q`O'#FnOOQO'#KY'#KYOOQO'#In'#InO#KeQ,UO1G1nOOQ!0Lf1G1n1G1nOOOW1G1y1G1yO#KvQ?MtO'#JrO#LQQ`O,5<bO!)[QlO,5<bOOOW-E<m-E<mOOQ!0Lf1G1l1G1lO#LVQpO'#KXOOQ!0Lf,5<d,5<dO#L_QpO,5<dO#LdQMhO'#DTOOOO'#Ib'#IbO#LkO#@ItO,59mOOQ!0Lh,59m,59mO%[QlO1G2PO!8lQ`O'#IrO#LvQ`O,5<zOOQ!0Lh,5<w,5<wO!,TQMhO'#IuO#MdQMjO,5=XO!,TQMhO'#IwO#NVQMjO,5=ZO!&zQMhO,5=]OOQO1G2S1G2SO#NaQ!dO'#CrO#NtQ(CWO'#ErO$ |QpO'#GbO$!dQ!dO,5<sO$!kQ`O'#K[O9eQ`O'#K[O$!yQ`O,5<uO$#aQ!dO'#C{O!,TQMhO,5<tO$#kQ`O'#GZO$$PQ`O,5<tO$$UQ!dO'#GWO$$cQ!dO'#K]O$$mQ`O'#K]O!&zQMhO'#K]O$$rQ`O,5<xO$$wQlO'#JvO$%RQpO'#GcO#$`QpO'#GcO$%dQ`O'#GgO!3oQ`O'#GkO$%iQ!0LrO'#ItO$%tQpO,5<|OOQ!0Lp,5<|,5<|O$%{QpO'#GcO$&YQpO'#GdO$&kQpO'#GdO$&pQMjO,5=XO$'QQMjO,5=ZOOQ!0Lh,5=^,5=^O!,TQMhO,5@VO!,TQMhO,5@VO$'bQ`O'#IyO$'vQ`O,5@UO$(OQ`O,59aOOQ!0Lh,59i,59iO$(TQ`O,5@VO$)TQ$IYO,59uOOQ!0Lh'#Jp'#JpO$)vQMjO,5<kO$*iQMjO,5<mO@zQ`O,5<oOOQ!0Lh,5<p,5<pO$*sQ`O,5<vO$*xQMjO,5<{O$+YQ`O'#KPO!$wQlO1G2RO$+_Q`O1G2RO9eQ`O'#KSO9eQ`O'#EtO%[QlO'#EtO9eQ`O'#I{O$+dQ!0LrO,5@{OOQ[1G2}1G2}OOQ[1G4`1G4`OOQ!0Lf1G/|1G/|OOQ!0Lf1G/z1G/zO$-fQ!0MxO1G0UOOQ[1G2y1G2yO!&zQMhO1G2yO%[QlO1G2yO#.tQ`O1G2yO$/jQMhO'#EkOOQ!0Lb,5@T,5@TO$/wQ!0LrO,5@TOOQ[1G.u1G.uO!ByQ!0LrO1G.uO!CUQpO1G.uO!C^QMhO1G.uO$0YQ`O1G0uO$0_Q`O'#CiO$0jQ`O'#KeO$0rQ`O,5=|O$0wQ`O'#KeO$0|Q`O'#KeO$1[Q`O'#JRO$1jQ`O,5AOO$1rQ!fO1G1iOOQ!0Lf1G1k1G1kO9kQ`O1G3fO@zQ`O1G3fO$1yQ`O1G3fO$2OQ`O1G3fO!DiQ`O1G3fO9uQ!0LrO1G3fOOQ[1G3f1G3fO!EcQ`O1G3UO!&zQMhO1G3RO$2TQ`O1G3ROOQ[1G3S1G3SO!&zQMhO1G3SO$2YQ`O1G3SO$2bQpO'#HQOOQ[1G3U1G3UO!6_QpO'#I}O!EhQ!bO1G3XOOQ[1G3X1G3XOOQ[,5=r,5=rO$2jQMhO,5=tO9kQ`O,5=tO$%dQ`O,5=vO9`Q`O,5=vO!CUQpO,5=vO!C^QMhO,5=vO:dQMhO,5=vO$2xQ`O'#KcO$3TQ`O,5=wOOQ[1G.k1G.kO$3YQ!0LrO1G.kO@zQ`O1G.kO$3eQ`O1G.kO9uQ!0LrO1G.kO$5mQ!fO,5AQO$5zQ`O,5AQO9eQ`O,5AQO$6VQlO,5>PO$6^Q`O,5>POOQ[1G3i1G3iO`QlO1G3iOOQ[1G3o1G3oOOQ[1G3q1G3qO?TQ`O1G3sO$6cQlO1G3uO$:gQlO'#HtOOQ[1G3x1G3xO$:tQ`O'#HzO?YQ`O'#H|OOQ[1G4O1G4OO$:|QlO1G4OO9uQ!0LrO1G4UOOQ[1G4W1G4WOOQ!0Lb'#G_'#G_O9uQ!0LrO1G4YO9uQ!0LrO1G4[O$?TQ`O,5@bO!)[QlO,5;`O9eQ`O,5;`O?YQ`O,5:XO!)[QlO,5:XO!CUQpO,5:XO$?YQ?MtO,5:XOOQO,5;`,5;`O$?dQpO'#IeO$?zQ`O,5@aOOQ!0Lf1G/r1G/rO$@SQpO'#IkO$@^Q`O,5@pOOQ!0Lb1G0y1G0yO#$`QpO,5:XOOQO'#Ig'#IgO$@fQpO,5:qOOQ!0Ln,5:q,5:qO#(ZQ`O1G0ZOOQ!0Lf1G0Z1G0ZO%[QlO1G0ZOOQ!0Lf1G0t1G0tO?YQ`O1G0tO!CUQpO1G0tO!C^QMhO1G0tOOQ!0Lb1G5|1G5|O!ByQ!0LrO1G0^OOQO1G0m1G0mO%[QlO1G0mO$@mQ!0LrO1G0mO$@xQ!0LrO1G0mO!CUQpO1G0^ODWQpO1G0^O$AWQ!0LrO1G0mOOQO1G0^1G0^O$AlQ!0MxO1G0mPOOO-E<[-E<[POOO1G.h1G.hOOOO1G/i1G/iO$AvQ!bO,5<iO$BOQ!fO1G4jOOQO1G4p1G4pO%[QlO,5?OO$BYQ`O1G5zO$BbQ`O1G6YO$BjQ!fO1G6ZO9eQ`O,5?UO$BtQ!0MxO1G6WO%[QlO1G6WO$CUQ!0LrO1G6WO$CgQ`O1G6VO$CgQ`O1G6VO9eQ`O1G6VO$CoQ`O,5?XO9eQ`O,5?XOOQO,5?X,5?XO$DTQ`O,5?XO$+YQ`O,5?XOOQO-E<k-E<kOOQS1G0a1G0aOOQS1G0c1G0cO#.lQ`O1G0cOOQ[7+(e7+(eO!&zQMhO7+(eO%[QlO7+(eO$DcQ`O7+(eO$DnQMhO7+(eO$D|Q!0MzO,5=XO$GXQ!0MzO,5=ZO$IdQ!0MzO,5=XO$KuQ!0MzO,5=ZO$NWQ!0MzO,59uO%!]Q!0MzO,5<kO%$hQ!0MzO,5<mO%&sQ!0MzO,5<{OOQ!0Lf7+&a7+&aO%)UQ!0MxO7+&aO%)xQlO'#IfO%*VQ`O,5@cO%*_Q!fO,5@cOOQ!0Lf1G0P1G0PO%*iQ`O7+&jOOQ!0Lf7+&j7+&jO%*nQ?MtO,5:fO%[QlO7+&zO%*xQ?MtO,5:bO%+VQ?MtO,5:jO%+aQ?MtO,5:lO%+kQMhO'#IiO%+uQ`O,5@hOOQ!0Lh1G0d1G0dOOQO1G1r1G1rOOQO1G1s1G1sO%+}Q!jO,5<ZO!)[QlO,5<YOOQO-E<l-E<lOOQ!0Lf7+'Y7+'YOOOW7+'e7+'eOOOW1G1|1G1|O%,YQ`O1G1|OOQ!0Lf1G2O1G2OOOOO,59o,59oO%,_Q!dO,59oOOOO-E<`-E<`OOQ!0Lh1G/X1G/XO%,fQ!0MxO7+'kOOQ!0Lh,5?^,5?^O%-YQMhO1G2fP%-aQ`O'#IrPOQ!0Lh-E<p-E<pO%-}QMjO,5?aOOQ!0Lh-E<s-E<sO%.pQMjO,5?cOOQ!0Lh-E<u-E<uO%.zQ!dO1G2wO%/RQ!dO'#CrO%/iQMhO'#KSO$$wQlO'#JvOOQ!0Lh1G2_1G2_O%/sQ`O'#IqO%0[Q`O,5@vO%0[Q`O,5@vO%0dQ`O,5@vO%0oQ`O,5@vOOQO1G2a1G2aO%0}QMjO1G2`O$+YQ`O'#K[O!,TQMhO1G2`O%1_Q(CWO'#IsO%1lQ`O,5@wO!&zQMhO,5@wO%1tQ!dO,5@wOOQ!0Lh1G2d1G2dO%4UQ!fO'#CiO%4`Q`O,5=POOQ!0Lb,5<},5<}O%4hQpO,5<}OOQ!0Lb,5=O,5=OOCwQ`O,5<}O%4sQpO,5<}OOQ!0Lb,5=R,5=RO$+YQ`O,5=VOOQO,5?`,5?`OOQO-E<r-E<rOOQ!0Lp1G2h1G2hO#$`QpO,5<}O$$wQlO,5=PO%5RQ`O,5=OO%5^QpO,5=OO!,TQMhO'#IuO%6WQMjO1G2sO!,TQMhO'#IwO%6yQMjO1G2uO%7TQMjO1G5qO%7_QMjO1G5qOOQO,5?e,5?eOOQO-E<w-E<wOOQO1G.{1G.{O!,TQMhO1G5qO!,TQMhO1G5qO!:]QpO,59wO%[QlO,59wOOQ!0Lh,5<j,5<jO%7lQ`O1G2ZO!,TQMhO1G2bO%7qQ!0MxO7+'mOOQ!0Lf7+'m7+'mO!$wQlO7+'mO%8eQ`O,5;`OOQ!0Lb,5?g,5?gOOQ!0Lb-E<y-E<yO%8jQ!dO'#K^O#(ZQ`O7+(eO4UQ!fO7+(eO$DfQ`O7+(eO%8tQ!0MvO'#CiO%9XQ!0MvO,5=SO%9lQ`O,5=SO%9tQ`O,5=SOOQ!0Lb1G5o1G5oOOQ[7+$a7+$aO!ByQ!0LrO7+$aO!CUQpO7+$aO!$wQlO7+&aO%9yQ`O'#JQO%:bQ`O,5APOOQO1G3h1G3hO9kQ`O,5APO%:bQ`O,5APO%:jQ`O,5APOOQO,5?m,5?mOOQO-E=P-E=POOQ!0Lf7+'T7+'TO%:oQ`O7+)QO9uQ!0LrO7+)QO9kQ`O7+)QO@zQ`O7+)QO%:tQ`O7+)QOOQ[7+)Q7+)QOOQ[7+(p7+(pO%:yQ!0MvO7+(mO!&zQMhO7+(mO!E^Q`O7+(nOOQ[7+(n7+(nO!&zQMhO7+(nO%;TQ`O'#KbO%;`Q`O,5=lOOQO,5?i,5?iOOQO-E<{-E<{OOQ[7+(s7+(sO%<rQpO'#HZOOQ[1G3`1G3`O!&zQMhO1G3`O%[QlO1G3`O%<yQ`O1G3`O%=UQMhO1G3`O9uQ!0LrO1G3bO$%dQ`O1G3bO9`Q`O1G3bO!CUQpO1G3bO!C^QMhO1G3bO%=dQ`O'#JPO%=xQ`O,5@}O%>QQpO,5@}OOQ!0Lb1G3c1G3cOOQ[7+$V7+$VO@zQ`O7+$VO9uQ!0LrO7+$VO%>]Q`O7+$VO%[QlO1G6lO%[QlO1G6mO%>bQ!0LrO1G6lO%>lQlO1G3kO%>sQ`O1G3kO%>xQlO1G3kOOQ[7+)T7+)TO9uQ!0LrO7+)_O`QlO7+)aOOQ['#Kh'#KhOOQ['#JS'#JSO%?PQlO,5>`OOQ[,5>`,5>`O%[QlO'#HuO%?^Q`O'#HwOOQ[,5>f,5>fO9eQ`O,5>fOOQ[,5>h,5>hOOQ[7+)j7+)jOOQ[7+)p7+)pOOQ[7+)t7+)tOOQ[7+)v7+)vO%?cQpO1G5|O%?}Q?MtO1G0zO%@XQ`O1G0zOOQO1G/s1G/sO%@dQ?MtO1G/sO?YQ`O1G/sO!)[QlO'#DmOOQO,5?P,5?POOQO-E<c-E<cOOQO,5?V,5?VOOQO-E<i-E<iO!CUQpO1G/sOOQO-E<e-E<eOOQ!0Ln1G0]1G0]OOQ!0Lf7+%u7+%uO#(ZQ`O7+%uOOQ!0Lf7+&`7+&`O?YQ`O7+&`O!CUQpO7+&`OOQO7+%x7+%xO$AlQ!0MxO7+&XOOQO7+&X7+&XO%[QlO7+&XO%@nQ!0LrO7+&XO!ByQ!0LrO7+%xO!CUQpO7+%xO%@yQ!0LrO7+&XO%AXQ!0MxO7++rO%[QlO7++rO%AiQ`O7++qO%AiQ`O7++qOOQO1G4s1G4sO9eQ`O1G4sO%AqQ`O1G4sOOQS7+%}7+%}O#(ZQ`O<<LPO4UQ!fO<<LPO%BPQ`O<<LPOOQ[<<LP<<LPO!&zQMhO<<LPO%[QlO<<LPO%BXQ`O<<LPO%BdQ!0MzO,5?aO%DoQ!0MzO,5?cO%FzQ!0MzO1G2`O%I]Q!0MzO1G2sO%KhQ!0MzO1G2uO%MsQ!fO,5?QO%[QlO,5?QOOQO-E<d-E<dO%M}Q`O1G5}OOQ!0Lf<<JU<<JUO%NVQ?MtO1G0uO&!^Q?MtO1G1PO&!eQ?MtO1G1PO&$fQ?MtO1G1PO&$mQ?MtO1G1PO&&nQ?MtO1G1PO&(oQ?MtO1G1PO&(vQ?MtO1G1PO&(}Q?MtO1G1PO&+OQ?MtO1G1PO&+VQ?MtO1G1PO&+^Q!0MxO<<JfO&-UQ?MtO1G1PO&.RQ?MvO1G1PO&/UQ?MvO'#JlO&1[Q?MtO1G1cO&1iQ?MtO1G0UO&1sQMjO,5?TOOQO-E<g-E<gO!)[QlO'#FqOOQO'#KZ'#KZOOQO1G1u1G1uO&1}Q`O1G1tO&2SQ?MtO,5?[OOOW7+'h7+'hOOOO1G/Z1G/ZO&2^Q!dO1G4xOOQ!0Lh7+(Q7+(QP!&zQMhO,5?^O!,TQMhO7+(cO&2eQ`O,5?]O9eQ`O,5?]O$+YQ`O,5?]OOQO-E<o-E<oO&2sQ`O1G6bO&2sQ`O1G6bO&2{Q`O1G6bO&3WQMjO7+'zO&3hQ!dO,5?_O&3rQ`O,5?_O!&zQMhO,5?_OOQO-E<q-E<qO&3wQ!dO1G6cO&4RQ`O1G6cO&4ZQ`O1G2kO!&zQMhO1G2kOOQ!0Lb1G2i1G2iOOQ!0Lb1G2j1G2jO%4hQpO1G2iO!CUQpO1G2iOCwQ`O1G2iOOQ!0Lb1G2q1G2qO&4`QpO1G2iO&4nQ`O1G2kO$+YQ`O1G2jOCwQ`O1G2jO$$wQlO1G2kO&4vQ`O1G2jO&5jQMjO,5?aOOQ!0Lh-E<t-E<tO&6]QMjO,5?cOOQ!0Lh-E<v-E<vO!,TQMhO7++]O&6gQMjO7++]O&6qQMjO7++]OOQ!0Lh1G/c1G/cO&7OQ`O1G/cOOQ!0Lh7+'u7+'uO&7TQMjO7+'|O&7eQ!0MxO<<KXOOQ!0Lf<<KX<<KXO&8XQ`O1G0zO!&zQMhO'#IzO&8^Q`O,5@xO&:`Q!fO<<LPO!&zQMhO1G2nO&:gQ!0LrO1G2nOOQ[<<G{<<G{O!ByQ!0LrO<<G{O&:xQ!0MxO<<I{OOQ!0Lf<<I{<<I{OOQO,5?l,5?lO&;lQ`O,5?lO&;qQ`O,5?lOOQO-E=O-E=OO&<PQ`O1G6kO&<PQ`O1G6kO9kQ`O1G6kO@zQ`O<<LlOOQ[<<Ll<<LlO&<XQ`O<<LlO9uQ!0LrO<<LlO9kQ`O<<LlOOQ[<<LX<<LXO%:yQ!0MvO<<LXOOQ[<<LY<<LYO!E^Q`O<<LYO&<^QpO'#I|O&<iQ`O,5@|O!)[QlO,5@|OOQ[1G3W1G3WOOQO'#JO'#JOO9uQ!0LrO'#JOO&<qQpO,5=uOOQ[,5=u,5=uO&<xQpO'#EgO&=PQpO'#GeO&=UQ`O7+(zO&=ZQ`O7+(zOOQ[7+(z7+(zO!&zQMhO7+(zO%[QlO7+(zO&=cQ`O7+(zOOQ[7+(|7+(|O9uQ!0LrO7+(|O$%dQ`O7+(|O9`Q`O7+(|O!CUQpO7+(|O&=nQ`O,5?kOOQO-E<}-E<}OOQO'#H^'#H^O&=yQ`O1G6iO9uQ!0LrO<<GqOOQ[<<Gq<<GqO@zQ`O<<GqO&>RQ`O7+,WO&>WQ`O7+,XO%[QlO7+,WO%[QlO7+,XOOQ[7+)V7+)VO&>]Q`O7+)VO&>bQlO7+)VO&>iQ`O7+)VOOQ[<<Ly<<LyOOQ[<<L{<<L{OOQ[-E=Q-E=QOOQ[1G3z1G3zO&>nQ`O,5>aOOQ[,5>c,5>cO&>sQ`O1G4QO9eQ`O7+&fO!)[QlO7+&fOOQO7+%_7+%_O&>xQ?MtO1G6ZO?YQ`O7+%_OOQ!0Lf<<Ia<<IaOOQ!0Lf<<Iz<<IzO?YQ`O<<IzOOQO<<Is<<IsO$AlQ!0MxO<<IsO%[QlO<<IsOOQO<<Id<<IdO!ByQ!0LrO<<IdO&?SQ!0LrO<<IsO&?_Q!0MxO<= ^O&?oQ`O<= ]OOQO7+*_7+*_O9eQ`O7+*_OOQ[ANAkANAkO&?wQ!fOANAkO!&zQMhOANAkO#(ZQ`OANAkO4UQ!fOANAkO&@OQ`OANAkO%[QlOANAkO&@WQ!0MzO7+'zO&BiQ!0MzO,5?aO&DtQ!0MzO,5?cO&GPQ!0MzO7+'|O&IbQ!fO1G4lO&IlQ?MtO7+&aO&KpQ?MvO,5=XO&MwQ?MvO,5=ZO&NXQ?MvO,5=XO&NiQ?MvO,5=ZO&NyQ?MvO,59uO'#PQ?MvO,5<kO'%SQ?MvO,5<mO''hQ?MvO,5<{O')^Q?MtO7+'kO')kQ?MtO7+'mO')xQ`O,5<]OOQO7+'`7+'`OOQ!0Lh7+*d7+*dO')}QMjO<<K}OOQO1G4w1G4wO'*UQ`O1G4wO'*aQ`O1G4wO'*oQ`O7++|O'*oQ`O7++|O!&zQMhO1G4yO'*wQ!dO1G4yO'+RQ`O7++}O'+ZQ`O7+(VO'+fQ!dO7+(VOOQ!0Lb7+(T7+(TOOQ!0Lb7+(U7+(UO!CUQpO7+(TOCwQ`O7+(TO'+pQ`O7+(VO!&zQMhO7+(VO$+YQ`O7+(UO'+uQ`O7+(VOCwQ`O7+(UO'+}QMjO<<NwO!,TQMhO<<NwOOQ!0Lh7+$}7+$}O',XQ!dO,5?fOOQO-E<x-E<xO',cQ!0MvO7+(YO!&zQMhO7+(YOOQ[AN=gAN=gO9kQ`O1G5WOOQO1G5W1G5WO',sQ`O1G5WO',xQ`O7+,VO',xQ`O7+,VO9uQ!0LrOANBWO@zQ`OANBWOOQ[ANBWANBWO'-QQ`OANBWOOQ[ANAsANAsOOQ[ANAtANAtO'-VQ`O,5?hOOQO-E<z-E<zO'-bQ?MtO1G6hOOQO,5?j,5?jOOQO-E<|-E<|OOQ[1G3a1G3aO'-lQ`O,5=POOQ[<<Lf<<LfO!&zQMhO<<LfO&=UQ`O<<LfO'-qQ`O<<LfO%[QlO<<LfOOQ[<<Lh<<LhO9uQ!0LrO<<LhO$%dQ`O<<LhO9`Q`O<<LhO'-yQpO1G5VO'.UQ`O7+,TOOQ[AN=]AN=]O9uQ!0LrOAN=]OOQ[<= r<= rOOQ[<= s<= sO'.^Q`O<= rO'.cQ`O<= sOOQ[<<Lq<<LqO'.hQ`O<<LqO'.mQlO<<LqOOQ[1G3{1G3{O?YQ`O7+)lO'.tQ`O<<JQO'/PQ?MtO<<JQOOQO<<Hy<<HyOOQ!0LfAN?fAN?fOOQOAN?_AN?_O$AlQ!0MxOAN?_OOQOAN?OAN?OO%[QlOAN?_OOQO<<My<<MyOOQ[G27VG27VO!&zQMhOG27VO#(ZQ`OG27VO'/ZQ!fOG27VO4UQ!fOG27VO'/bQ`OG27VO'/jQ?MtO<<JfO'/wQ?MvO1G2`O'1mQ?MvO,5?aO'3pQ?MvO,5?cO'5sQ?MvO1G2sO'7vQ?MvO1G2uO'9yQ?MtO<<KXO':WQ?MtO<<I{OOQO1G1w1G1wO!,TQMhOANAiOOQO7+*c7+*cO':eQ`O7+*cO':pQ`O<= hO':xQ!dO7+*eOOQ!0Lb<<Kq<<KqO$+YQ`O<<KqOCwQ`O<<KqO';SQ`O<<KqO!&zQMhO<<KqOOQ!0Lb<<Ko<<KoO!CUQpO<<KoO';_Q!dO<<KqOOQ!0Lb<<Kp<<KpO';iQ`O<<KqO!&zQMhO<<KqO$+YQ`O<<KpO';nQMjOANDcO';xQ!0MvO<<KtOOQO7+*r7+*rO9kQ`O7+*rO'<YQ`O<= qOOQ[G27rG27rO9uQ!0LrOG27rO@zQ`OG27rO!)[QlO1G5SO'<bQ`O7+,SO'<jQ`O1G2kO&=UQ`OANBQOOQ[ANBQANBQO!&zQMhOANBQO'<oQ`OANBQOOQ[ANBSANBSO9uQ!0LrOANBSO$%dQ`OANBSOOQO'#H_'#H_OOQO7+*q7+*qOOQ[G22wG22wOOQ[ANE^ANE^OOQ[ANE_ANE_OOQ[ANB]ANB]O'<wQ`OANB]OOQ[<<MW<<MWO!)[QlOAN?lOOQOG24yG24yO$AlQ!0MxOG24yO#(ZQ`OLD,qOOQ[LD,qLD,qO!&zQMhOLD,qO'<|Q!fOLD,qO'=TQ?MvO7+'zO'>yQ?MvO,5?aO'@|Q?MvO,5?cO'CPQ?MvO7+'|O'DuQMjOG27TOOQO<<M}<<M}OOQ!0LbANA]ANA]O$+YQ`OANA]OCwQ`OANA]O'EVQ!dOANA]OOQ!0LbANAZANAZO'E^Q`OANA]O!&zQMhOANA]O'EiQ!dOANA]OOQ!0LbANA[ANA[OOQO<<N^<<N^OOQ[LD-^LD-^O9uQ!0LrOLD-^O'EsQ?MtO7+*nOOQO'#Gf'#GfOOQ[G27lG27lO&=UQ`OG27lO!&zQMhOG27lOOQ[G27nG27nO9uQ!0LrOG27nOOQ[G27wG27wO'E}Q?MtOG25WOOQOLD*eLD*eOOQ[!$(!]!$(!]O#(ZQ`O!$(!]O!&zQMhO!$(!]O'FXQ!0MzOG27TOOQ!0LbG26wG26wO$+YQ`OG26wO'HjQ`OG26wOCwQ`OG26wO'HuQ!dOG26wO!&zQMhOG26wOOQ[!$(!x!$(!xOOQ[LD-WLD-WO&=UQ`OLD-WOOQ[LD-YLD-YOOQ[!)9Ew!)9EwO#(ZQ`O!)9EwOOQ!0LbLD,cLD,cO$+YQ`OLD,cOCwQ`OLD,cO'H|Q`OLD,cO'IXQ!dOLD,cOOQ[!$(!r!$(!rOOQ[!.K;c!.K;cO'I`Q?MvOG27TOOQ!0Lb!$( }!$( }O$+YQ`O!$( }OCwQ`O!$( }O'KUQ`O!$( }OOQ!0Lb!)9Ei!)9EiO$+YQ`O!)9EiOCwQ`O!)9EiOOQ!0Lb!.K;T!.K;TO$+YQ`O!.K;TOOQ!0Lb!4/0o!4/0oO!)[QlO'#DzO1PQ`O'#EXO'KaQ!fO'#JrO'KhQ!L^O'#DvO'KoQlO'#EOO'KvQ!fO'#CiO'N^Q!fO'#CiO!)[QlO'#EQO'NnQlO,5;ZO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO'#IpO(!qQ`O,5<iO!)[QlO,5;eO(!yQMhO,5;eO($dQMhO,5;eO!)[QlO,5;wO!&zQMhO'#GmO(!yQMhO'#GmO!&zQMhO'#GoO(!yQMhO'#GoO1SQ`O'#DZO1SQ`O'#DZO!&zQMhO'#GPO(!yQMhO'#GPO!&zQMhO'#GRO(!yQMhO'#GRO!&zQMhO'#GaO(!yQMhO'#GaO!)[QlO,5:jO($kQpO'#D_O($uQpO'#JvO!)[QlO,5@oO'NnQlO1G0uO(%PQ?MtO'#CiO!)[QlO1G2PO!&zQMhO'#IuO(!yQMhO'#IuO!&zQMhO'#IwO(!yQMhO'#IwO(%ZQ!dO'#CrO!&zQMhO,5<tO(!yQMhO,5<tO'NnQlO1G2RO!)[QlO7+&zO!&zQMhO1G2`O(!yQMhO1G2`O!&zQMhO'#IuO(!yQMhO'#IuO!&zQMhO'#IwO(!yQMhO'#IwO!&zQMhO1G2bO(!yQMhO1G2bO'NnQlO7+'mO'NnQlO7+&aO!&zQMhOANAiO(!yQMhOANAiO(%nQ`O'#EoO(%sQ`O'#EoO(%{Q`O'#F]O(&QQ`O'#EyO(&VQ`O'#KTO(&bQ`O'#KRO(&mQ`O,5;ZO(&rQMjO,5<eO(&yQ`O'#GYO('OQ`O'#GYO('TQ`O,5<eO(']Q`O,5<gO('eQ`O,5;ZO('mQ?MtO1G1`O('tQ`O,5<tO('yQ`O,5<tO((OQ`O,5<vO((TQ`O,5<vO((YQ`O1G2RO((_Q`O1G0uO((dQMjO<<K}O((kQMjO<<K}O((rQMhO'#F|O9`Q`O'#F{OAuQ`O'#EnO!)[QlO,5;tO!3oQ`O'#GYO!3oQ`O'#GYO!3oQ`O'#G[O!3oQ`O'#G[O!,TQMhO7+(cO!,TQMhO7+(cO%.zQ!dO1G2wO%.zQ!dO1G2wO!&zQMhO,5=]O!&zQMhO,5=]",stateData:"()x~O'|OS'}OSTOS(ORQ~OPYOQYOSfOY!VOaqOdzOeyOl!POpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_XO!iuO!lZO!oYO!pYO!qYO!svO!uwO!xxO!|]O$W|O$niO%h}O%j!QO%l!OO%m!OO%n!OO%q!RO%s!SO%v!TO%w!TO%y!UO&W!WO&^!XO&`!YO&b!ZO&d![O&g!]O&m!^O&s!_O&u!`O&w!aO&y!bO&{!cO(TSO(VTO(YUO(aVO(o[O~OWtO~P`OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(T!dO(VTO(YUO(aVO(o[O~Oa!wOs!nO!S!oO!b!yO!c!vO!d!vO!|<VO#T!pO#U!pO#V!xO#W!pO#X!pO#[!zO#]!zO(U!lO(VTO(YUO(e!mO(o!sO~O(O!{O~OP]XR]X[]Xa]Xj]Xr]X!Q]X!S]X!]]X!l]X!p]X#R]X#S]X#`]X#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X'z]X(a]X(r]X(y]X(z]X~O!g%RX~P(qO_!}O(V#PO(W!}O(X#PO~O_#QO(X#PO(Y#PO(Z#QO~Ox#SO!U#TO(b#TO(c#VO~OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(T<ZO(VTO(YUO(aVO(o[O~O![#ZO!]#WO!Y(hP!Y(vP~P+}O!^#cO~P`OPYOQYOSfOd!jOe!iOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(VTO(YUO(aVO(o[O~Op#mO![#iO!|]O#i#lO#j#iO(T<[O!k(sP~P.iO!l#oO(T#nO~O!x#sO!|]O%h#tO~O#k#uO~O!g#vO#k#uO~OP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!]$_O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO#z$WO#{$XO(aVO(r$YO(y#|O(z#}O~Oa(fX'z(fX'w(fX!k(fX!Y(fX!_(fX%i(fX!g(fX~P1qO#S$dO#`$eO$Q$eOP(gXR(gX[(gXj(gXr(gX!Q(gX!S(gX!](gX!l(gX!p(gX#R(gX#n(gX#o(gX#p(gX#q(gX#r(gX#s(gX#t(gX#u(gX#v(gX#x(gX#z(gX#{(gX(a(gX(r(gX(y(gX(z(gX!_(gX%i(gX~Oa(gX'z(gX'w(gX!Y(gX!k(gXv(gX!g(gX~P4UO#`$eO~O$]$hO$_$gO$f$mO~OSfO!_$nO$i$oO$k$qO~Oh%VOj%dOk%dOp%WOr%XOs$tOt$tOz%YO|%ZO!O%]O!S${O!_$|O!i%bO!l$xO#j%cO$W%`O$t%^O$v%_O$y%aO(T$sO(VTO(YUO(a$uO(y$}O(z%POg(^P~Ol%[O~P7eO!l%eO~O!S%hO!_%iO(T%gO~O!g%mO~Oa%nO'z%nO~O!Q%rO~P%[O(U!lO~P%[O%n%vO~P%[Oh%VO!l%eO(T%gO(U!lO~Oe%}O!l%eO(T%gO~Oj$RO~O!_&PO(T%gO(U!lO(VTO(YUO`)WP~O!Q&SO!l&RO%j&VO&T&WO~P;SO!x#sO~O%s&YO!S)SX!_)SX(T)SX~O(T&ZO~Ol!PO!u&`O%j!QO%l!OO%m!OO%n!OO%q!RO%s!SO%v!TO%w!TO~Od&eOe&dO!x&bO%h&cO%{&aO~P<bOd&hOeyOl!PO!_&gO!u&`O!xxO!|]O%h}O%l!OO%m!OO%n!OO%q!RO%s!SO%v!TO%w!TO%y!UO~Ob&kO#`&nO%j&iO(U!lO~P=gO!l&oO!u&sO~O!l#oO~O!_XO~Oa%nO'x&{O'z%nO~Oa%nO'x'OO'z%nO~Oa%nO'x'QO'z%nO~O'w]X!Y]Xv]X!k]X&[]X!_]X%i]X!g]X~P(qO!b'_O!c'WO!d'WO(U!lO(VTO(YUO~Os'UO!S'TO!['XO(e'SO!^(iP!^(xP~P@nOn'bO!_'`O(T%gO~Oe'gO!l%eO(T%gO~O!Q&SO!l&RO~Os!nO!S!oO!|<VO#T!pO#U!pO#W!pO#X!pO(U!lO(VTO(YUO(e!mO(o!sO~O!b'mO!c'lO!d'lO#V!pO#['nO#]'nO~PBYOa%nOh%VO!g#vO!l%eO'z%nO(r'pO~O!p'tO#`'rO~PChOs!nO!S!oO(VTO(YUO(e!mO(o!sO~O!_XOs(mX!S(mX!b(mX!c(mX!d(mX!|(mX#T(mX#U(mX#V(mX#W(mX#X(mX#[(mX#](mX(U(mX(V(mX(Y(mX(e(mX(o(mX~O!c'lO!d'lO(U!lO~PDWO(P'xO(Q'xO(R'zO~O_!}O(V'|O(W!}O(X'|O~O_#QO(X'|O(Y'|O(Z#QO~Ov(OO~P%[Ox#SO!U#TO(b#TO(c(RO~O![(TO!Y'WX!Y'^X!]'WX!]'^X~P+}O!](VO!Y(hX~OP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!](VO!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO#z$WO#{$XO(aVO(r$YO(y#|O(z#}O~O!Y(hX~PHRO!Y([O~O!Y(uX!](uX!g(uX!k(uX(r(uX~O#`(uX#k#dX!^(uX~PJUO#`(]O!Y(wX!](wX~O!](^O!Y(vX~O!Y(aO~O#`$eO~PJUO!^(bO~P`OR#zO!Q#yO!S#{O!l#xO(aVOP!na[!naj!nar!na!]!na!p!na#R!na#n!na#o!na#p!na#q!na#r!na#s!na#t!na#u!na#v!na#x!na#z!na#{!na(r!na(y!na(z!na~Oa!na'z!na'w!na!Y!na!k!nav!na!_!na%i!na!g!na~PKlO!k(cO~O!g#vO#`(dO(r'pO!](tXa(tX'z(tX~O!k(tX~PNXO!S%hO!_%iO!|]O#i(iO#j(hO(T%gO~O!](jO!k(sX~O!k(lO~O!S%hO!_%iO#j(hO(T%gO~OP(gXR(gX[(gXj(gXr(gX!Q(gX!S(gX!](gX!l(gX!p(gX#R(gX#n(gX#o(gX#p(gX#q(gX#r(gX#s(gX#t(gX#u(gX#v(gX#x(gX#z(gX#{(gX(a(gX(r(gX(y(gX(z(gX~O!g#vO!k(gX~P! uOR(nO!Q(mO!l#xO#S$dO!|!{a!S!{a~O!x!{a%h!{a!_!{a#i!{a#j!{a(T!{a~P!#vO!x(rO~OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_XO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(T!dO(VTO(YUO(aVO(o[O~Oh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O<sO!S${O!_$|O!i>VO!l$xO#j<yO$W%`O$t<uO$v<wO$y%aO(T(vO(VTO(YUO(a$uO(y$}O(z%PO~O#k(xO~O![(zO!k(kP~P%[O(e(|O(o[O~O!S)OO!l#xO(e(|O(o[O~OP<UOQ<UOSfOd>ROe!iOpkOr<UOskOtkOzkO|<UO!O<UO!SWO!WkO!XkO!_!eO!i<XO!lZO!o<UO!p<UO!q<UO!s<YO!u<]O!x!hO$W!kO$n>PO(T)]O(VTO(YUO(aVO(o[O~O!]$_Oa$qa'z$qa'w$qa!k$qa!Y$qa!_$qa%i$qa!g$qa~Ol)dO~P!&zOh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O%]O!S${O!_$|O!i%bO!l$xO#j%cO$W%`O$t%^O$v%_O$y%aO(T(vO(VTO(YUO(a$uO(y$}O(z%PO~Og(pP~P!,TO!Q)iO!g)hO!_$^X$Z$^X$]$^X$_$^X$f$^X~O!g)hO!_({X$Z({X$]({X$_({X$f({X~O!Q)iO~P!.^O!Q)iO!_({X$Z({X$]({X$_({X$f({X~O!_)kO$Z)oO$])jO$_)jO$f)pO~O![)sO~P!)[O$]$hO$_$gO$f)wO~On$zX!Q$zX#S$zX'y$zX(y$zX(z$zX~OgmXg$zXnmX!]mX#`mX~P!0SOx)yO(b)zO(c)|O~On*VO!Q*OO'y*PO(y$}O(z%PO~Og)}O~P!1WOg*WO~Oh%VOr%XOs$tOt$tOz%YO|%ZO!O<sO!S*YO!_*ZO!i>VO!l$xO#j<yO$W%`O$t<uO$v<wO$y%aO(VTO(YUO(a$uO(y$}O(z%PO~Op*`O![*^O(T*XO!k)OP~P!1uO#k*aO~O!l*bO~Oh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O<sO!S${O!_$|O!i>VO!l$xO#j<yO$W%`O$t<uO$v<wO$y%aO(T*dO(VTO(YUO(a$uO(y$}O(z%PO~O![*gO!Y)PP~P!3tOr*sOs!nO!S*iO!b*qO!c*kO!d*kO!l*bO#[*rO%`*mO(U!lO(VTO(YUO(e!mO~O!^*pO~P!5iO#S$dOn(`X!Q(`X'y(`X(y(`X(z(`X!](`X#`(`X~Og(`X$O(`X~P!6kOn*xO#`*wOg(_X!](_X~O!]*yOg(^X~Oj%dOk%dOl%dO(T&ZOg(^P~Os*|O~Og)}O(T&ZO~O!l+SO~O(T(vO~Op+WO!S%hO![#iO!_%iO!|]O#i#lO#j#iO(T%gO!k(sP~O!g#vO#k+XO~O!S%hO![+ZO!](^O!_%iO(T%gO!Y(vP~Os'[O!S+]O![+[O(VTO(YUO(e(|O~O!^(xP~P!9|O!]+^Oa)TX'z)TX~OP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO#z$WO#{$XO(aVO(r$YO(y#|O(z#}O~Oa!ja!]!ja'z!ja'w!ja!Y!ja!k!jav!ja!_!ja%i!ja!g!ja~P!:tOR#zO!Q#yO!S#{O!l#xO(aVOP!ra[!raj!rar!ra!]!ra!p!ra#R!ra#n!ra#o!ra#p!ra#q!ra#r!ra#s!ra#t!ra#u!ra#v!ra#x!ra#z!ra#{!ra(r!ra(y!ra(z!ra~Oa!ra'z!ra'w!ra!Y!ra!k!rav!ra!_!ra%i!ra!g!ra~P!=[OR#zO!Q#yO!S#{O!l#xO(aVOP!ta[!taj!tar!ta!]!ta!p!ta#R!ta#n!ta#o!ta#p!ta#q!ta#r!ta#s!ta#t!ta#u!ta#v!ta#x!ta#z!ta#{!ta(r!ta(y!ta(z!ta~Oa!ta'z!ta'w!ta!Y!ta!k!tav!ta!_!ta%i!ta!g!ta~P!?rOh%VOn+gO!_'`O%i+fO~O!g+iOa(]X!_(]X'z(]X!](]X~Oa%nO!_XO'z%nO~Oh%VO!l%eO~Oh%VO!l%eO(T%gO~O!g#vO#k(xO~Ob+tO%j+uO(T+qO(VTO(YUO!^)XP~O!]+vO`)WX~O[+zO~O`+{O~O!_&PO(T%gO(U!lO`)WP~O%j,OO~P;SOh%VO#`,SO~Oh%VOn,VO!_$|O~O!_,XO~O!Q,ZO!_XO~O%n%vO~O!x,`O~Oe,eO~Ob,fO(T#nO(VTO(YUO!^)VP~Oe%}O~O%j!QO(T&ZO~P=gO[,kO`,jO~OPYOQYOSfOdzOeyOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!iuO!lZO!oYO!pYO!qYO!svO!xxO!|]O$niO%h}O(VTO(YUO(aVO(o[O~O!_!eO!u!gO$W!kO(T!dO~P!FyO`,jOa%nO'z%nO~OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!x!hO$W!kO$niO(T!dO(VTO(YUO(aVO(o[O~Oa,pOl!OO!uwO%l!OO%m!OO%n!OO~P!IcO!l&oO~O&^,vO~O!_,xO~O&o,zO&q,{OP&laQ&laS&laY&laa&lad&lae&lal&lap&lar&las&lat&laz&la|&la!O&la!S&la!W&la!X&la!_&la!i&la!l&la!o&la!p&la!q&la!s&la!u&la!x&la!|&la$W&la$n&la%h&la%j&la%l&la%m&la%n&la%q&la%s&la%v&la%w&la%y&la&W&la&^&la&`&la&b&la&d&la&g&la&m&la&s&la&u&la&w&la&y&la&{&la'w&la(T&la(V&la(Y&la(a&la(o&la!^&la&e&lab&la&j&la~O(T-QO~Oh!eX!]!RX!^!RX!g!RX!g!eX!l!eX#`!RX~O!]!eX!^!eX~P#!iO!g-VO#`-UOh(jX!]#hX!^#hX!g(jX!l(jX~O!](jX!^(jX~P##[Oh%VO!g-XO!l%eO!]!aX!^!aX~Os!nO!S!oO(VTO(YUO(e!mO~OP<UOQ<UOSfOd>ROe!iOpkOr<UOskOtkOzkO|<UO!O<UO!SWO!WkO!XkO!_!eO!i<XO!lZO!o<UO!p<UO!q<UO!s<YO!u<]O!x!hO$W!kO$n>PO(VTO(YUO(aVO(o[O~O(T=QO~P#$qO!]-]O!^(iX~O!^-_O~O!g-VO#`-UO!]#hX!^#hX~O!]-`O!^(xX~O!^-bO~O!c-cO!d-cO(U!lO~P#$`O!^-fO~P'_On-iO!_'`O~O!Y-nO~Os!{a!b!{a!c!{a!d!{a#T!{a#U!{a#V!{a#W!{a#X!{a#[!{a#]!{a(U!{a(V!{a(Y!{a(e!{a(o!{a~P!#vO!p-sO#`-qO~PChO!c-uO!d-uO(U!lO~PDWOa%nO#`-qO'z%nO~Oa%nO!g#vO#`-qO'z%nO~Oa%nO!g#vO!p-sO#`-qO'z%nO(r'pO~O(P'xO(Q'xO(R-zO~Ov-{O~O!Y'Wa!]'Wa~P!:tO![.PO!Y'WX!]'WX~P%[O!](VO!Y(ha~O!Y(ha~PHRO!](^O!Y(va~O!S%hO![.TO!_%iO(T%gO!Y'^X!]'^X~O#`.VO!](ta!k(taa(ta'z(ta~O!g#vO~P#,wO!](jO!k(sa~O!S%hO!_%iO#j.ZO(T%gO~Op.`O!S%hO![.]O!_%iO!|]O#i._O#j.]O(T%gO!]'aX!k'aX~OR.dO!l#xO~Oh%VOn.gO!_'`O%i.fO~Oa#ci!]#ci'z#ci'w#ci!Y#ci!k#civ#ci!_#ci%i#ci!g#ci~P!:tOn>]O!Q*OO'y*PO(y$}O(z%PO~O#k#_aa#_a#`#_a'z#_a!]#_a!k#_a!_#_a!Y#_a~P#/sO#k(`XP(`XR(`X[(`Xa(`Xj(`Xr(`X!S(`X!l(`X!p(`X#R(`X#n(`X#o(`X#p(`X#q(`X#r(`X#s(`X#t(`X#u(`X#v(`X#x(`X#z(`X#{(`X'z(`X(a(`X(r(`X!k(`X!Y(`X'w(`Xv(`X!_(`X%i(`X!g(`X~P!6kO!].tO!k(kX~P!:tO!k.wO~O!Y.yO~OP$[OR#zO!Q#yO!S#{O!l#xO!p$[O(aVO[#mia#mij#mir#mi!]#mi#R#mi#o#mi#p#mi#q#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#n#mi~P#3cO#n$OO~P#3cOP$[OR#zOr$aO!Q#yO!S#{O!l#xO!p$[O#n$OO#o$PO#p$PO#q$PO(aVO[#mia#mij#mi!]#mi#R#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#r#mi~P#6QO#r$QO~P#6QOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO(aVOa#mi!]#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#v#mi~P#8oOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO(aVO(z#}Oa#mi!]#mi#z#mi#{#mi'z#mi(r#mi(y#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#x$UO~P#;VO#x#mi~P#;VO#v$SO~P#8oOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO(aVO(y#|O(z#}Oa#mi!]#mi#{#mi'z#mi(r#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#z#mi~P#={O#z$WO~P#={OP]XR]X[]Xj]Xr]X!Q]X!S]X!l]X!p]X#R]X#S]X#`]X#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X(a]X(r]X(y]X(z]X!]]X!^]X~O$O]X~P#@jOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO#v<cO#x<eO#z<gO#{<hO(aVO(r$YO(y#|O(z#}O~O$O.{O~P#BwO#S$dO#`<nO$Q<nO$O(gX!^(gX~P! uOa'da!]'da'z'da'w'da!k'da!Y'dav'da!_'da%i'da!g'da~P!:tO[#mia#mij#mir#mi!]#mi#R#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~OP$[OR#zO!Q#yO!S#{O!l#xO!p$[O#n$OO#o$PO#p$PO#q$PO(aVO(y#mi(z#mi~P#EyOn>]O!Q*OO'y*PO(y$}O(z%POP#miR#mi!S#mi!l#mi!p#mi#n#mi#o#mi#p#mi#q#mi(a#mi~P#EyO!]/POg(pX~P!1WOg/RO~Oa$Pi!]$Pi'z$Pi'w$Pi!Y$Pi!k$Piv$Pi!_$Pi%i$Pi!g$Pi~P!:tO$]/SO$_/SO~O$]/TO$_/TO~O!g)hO#`/UO!_$cX$Z$cX$]$cX$_$cX$f$cX~O![/VO~O!_)kO$Z/XO$])jO$_)jO$f/YO~O!]<iO!^(fX~P#BwO!^/ZO~O!g)hO$f({X~O$f/]O~Ov/^O~P!&zOx)yO(b)zO(c/aO~O!S/dO~O(y$}On%aa!Q%aa'y%aa(z%aa!]%aa#`%aa~Og%aa$O%aa~P#L{O(z%POn%ca!Q%ca'y%ca(y%ca!]%ca#`%ca~Og%ca$O%ca~P#MnO!]fX!gfX!kfX!k$zX(rfX~P!0SOp%WO![/mO!](^O(T/lO!Y(vP!Y)PP~P!1uOr*sO!b*qO!c*kO!d*kO!l*bO#[*rO%`*mO(U!lO(VTO(YUO~Os<}O!S/nO![+[O!^*pO(e<|O!^(xP~P$ [O!k/oO~P#/sO!]/pO!g#vO(r'pO!k)OX~O!k/uO~OnoX!QoX'yoX(yoX(zoX~O!g#vO!koX~P$#OOp/wO!S%hO![*^O!_%iO(T%gO!k)OP~O#k/xO~O!Y$zX!]$zX!g%RX~P!0SO!]/yO!Y)PX~P#/sO!g/{O~O!Y/}O~OpkO(T0OO~P.iOh%VOr0TO!g#vO!l%eO(r'pO~O!g+iO~Oa%nO!]0XO'z%nO~O!^0ZO~P!5iO!c0[O!d0[O(U!lO~P#$`Os!nO!S0]O(VTO(YUO(e!mO~O#[0_O~Og%aa!]%aa#`%aa$O%aa~P!1WOg%ca!]%ca#`%ca$O%ca~P!1WOj%dOk%dOl%dO(T&ZOg'mX!]'mX~O!]*yOg(^a~Og0hO~On0jO#`0iOg(_a!](_a~OR0kO!Q0kO!S0lO#S$dOn}a'y}a(y}a(z}a!]}a#`}a~Og}a$O}a~P$(cO!Q*OO'y*POn$sa(y$sa(z$sa!]$sa#`$sa~Og$sa$O$sa~P$)_O!Q*OO'y*POn$ua(y$ua(z$ua!]$ua#`$ua~Og$ua$O$ua~P$*QO#k0oO~Og%Ta!]%Ta#`%Ta$O%Ta~P!1WO!g#vO~O#k0rO~O!]+^Oa)Ta'z)Ta~OR#zO!Q#yO!S#{O!l#xO(aVOP!ri[!rij!rir!ri!]!ri!p!ri#R!ri#n!ri#o!ri#p!ri#q!ri#r!ri#s!ri#t!ri#u!ri#v!ri#x!ri#z!ri#{!ri(r!ri(y!ri(z!ri~Oa!ri'z!ri'w!ri!Y!ri!k!riv!ri!_!ri%i!ri!g!ri~P$+oOh%VOr%XOs$tOt$tOz%YO|%ZO!O<sO!S${O!_$|O!i>VO!l$xO#j<yO$W%`O$t<uO$v<wO$y%aO(VTO(YUO(a$uO(y$}O(z%PO~Op0{O%]0|O(T0zO~P$.VO!g+iOa(]a!_(]a'z(]a!](]a~O#k1SO~O[]X!]fX!^fX~O!]1TO!^)XX~O!^1VO~O[1WO~Ob1YO(T+qO(VTO(YUO~O!_&PO(T%gO`'uX!]'uX~O!]+vO`)Wa~O!k1]O~P!:tO[1`O~O`1aO~O#`1fO~On1iO!_$|O~O(e(|O!^)UP~Oh%VOn1rO!_1oO%i1qO~O[1|O!]1zO!^)VX~O!^1}O~O`2POa%nO'z%nO~O(T#nO(VTO(YUO~O#S$dO#`$eO$Q$eOP(gXR(gX[(gXr(gX!Q(gX!S(gX!](gX!l(gX!p(gX#R(gX#n(gX#o(gX#p(gX#q(gX#r(gX#s(gX#t(gX#u(gX#v(gX#x(gX#z(gX#{(gX(a(gX(r(gX(y(gX(z(gX~Oj2SO&[2TOa(gX~P$3pOj2SO#`$eO&[2TO~Oa2VO~P%[Oa2XO~O&e2[OP&ciQ&ciS&ciY&cia&cid&cie&cil&cip&cir&cis&cit&ciz&ci|&ci!O&ci!S&ci!W&ci!X&ci!_&ci!i&ci!l&ci!o&ci!p&ci!q&ci!s&ci!u&ci!x&ci!|&ci$W&ci$n&ci%h&ci%j&ci%l&ci%m&ci%n&ci%q&ci%s&ci%v&ci%w&ci%y&ci&W&ci&^&ci&`&ci&b&ci&d&ci&g&ci&m&ci&s&ci&u&ci&w&ci&y&ci&{&ci'w&ci(T&ci(V&ci(Y&ci(a&ci(o&ci!^&cib&ci&j&ci~Ob2bO!^2`O&j2aO~P`O!_XO!l2dO~O&q,{OP&liQ&liS&liY&lia&lid&lie&lil&lip&lir&lis&lit&liz&li|&li!O&li!S&li!W&li!X&li!_&li!i&li!l&li!o&li!p&li!q&li!s&li!u&li!x&li!|&li$W&li$n&li%h&li%j&li%l&li%m&li%n&li%q&li%s&li%v&li%w&li%y&li&W&li&^&li&`&li&b&li&d&li&g&li&m&li&s&li&u&li&w&li&y&li&{&li'w&li(T&li(V&li(Y&li(a&li(o&li!^&li&e&lib&li&j&li~O!Y2jO~O!]!aa!^!aa~P#BwOs!nO!S!oO![2pO(e!mO!]'XX!^'XX~P@nO!]-]O!^(ia~O!]'_X!^'_X~P!9|O!]-`O!^(xa~O!^2wO~P'_Oa%nO#`3QO'z%nO~Oa%nO!g#vO#`3QO'z%nO~Oa%nO!g#vO!p3UO#`3QO'z%nO(r'pO~Oa%nO'z%nO~P!:tO!]$_Ov$qa~O!Y'Wi!]'Wi~P!:tO!](VO!Y(hi~O!](^O!Y(vi~O!Y(wi!](wi~P!:tO!](ti!k(tia(ti'z(ti~P!:tO#`3WO!](ti!k(tia(ti'z(ti~O!](jO!k(si~O!S%hO!_%iO!|]O#i3]O#j3[O(T%gO~O!S%hO!_%iO#j3[O(T%gO~On3dO!_'`O%i3cO~Oh%VOn3dO!_'`O%i3cO~O#k%aaP%aaR%aa[%aaa%aaj%aar%aa!S%aa!l%aa!p%aa#R%aa#n%aa#o%aa#p%aa#q%aa#r%aa#s%aa#t%aa#u%aa#v%aa#x%aa#z%aa#{%aa'z%aa(a%aa(r%aa!k%aa!Y%aa'w%aav%aa!_%aa%i%aa!g%aa~P#L{O#k%caP%caR%ca[%caa%caj%car%ca!S%ca!l%ca!p%ca#R%ca#n%ca#o%ca#p%ca#q%ca#r%ca#s%ca#t%ca#u%ca#v%ca#x%ca#z%ca#{%ca'z%ca(a%ca(r%ca!k%ca!Y%ca'w%cav%ca!_%ca%i%ca!g%ca~P#MnO#k%aaP%aaR%aa[%aaa%aaj%aar%aa!S%aa!]%aa!l%aa!p%aa#R%aa#n%aa#o%aa#p%aa#q%aa#r%aa#s%aa#t%aa#u%aa#v%aa#x%aa#z%aa#{%aa'z%aa(a%aa(r%aa!k%aa!Y%aa'w%aa#`%aav%aa!_%aa%i%aa!g%aa~P#/sO#k%caP%caR%ca[%caa%caj%car%ca!S%ca!]%ca!l%ca!p%ca#R%ca#n%ca#o%ca#p%ca#q%ca#r%ca#s%ca#t%ca#u%ca#v%ca#x%ca#z%ca#{%ca'z%ca(a%ca(r%ca!k%ca!Y%ca'w%ca#`%cav%ca!_%ca%i%ca!g%ca~P#/sO#k}aP}a[}aa}aj}ar}a!l}a!p}a#R}a#n}a#o}a#p}a#q}a#r}a#s}a#t}a#u}a#v}a#x}a#z}a#{}a'z}a(a}a(r}a!k}a!Y}a'w}av}a!_}a%i}a!g}a~P$(cO#k$saP$saR$sa[$saa$saj$sar$sa!S$sa!l$sa!p$sa#R$sa#n$sa#o$sa#p$sa#q$sa#r$sa#s$sa#t$sa#u$sa#v$sa#x$sa#z$sa#{$sa'z$sa(a$sa(r$sa!k$sa!Y$sa'w$sav$sa!_$sa%i$sa!g$sa~P$)_O#k$uaP$uaR$ua[$uaa$uaj$uar$ua!S$ua!l$ua!p$ua#R$ua#n$ua#o$ua#p$ua#q$ua#r$ua#s$ua#t$ua#u$ua#v$ua#x$ua#z$ua#{$ua'z$ua(a$ua(r$ua!k$ua!Y$ua'w$uav$ua!_$ua%i$ua!g$ua~P$*QO#k%TaP%TaR%Ta[%Taa%Taj%Tar%Ta!S%Ta!]%Ta!l%Ta!p%Ta#R%Ta#n%Ta#o%Ta#p%Ta#q%Ta#r%Ta#s%Ta#t%Ta#u%Ta#v%Ta#x%Ta#z%Ta#{%Ta'z%Ta(a%Ta(r%Ta!k%Ta!Y%Ta'w%Ta#`%Tav%Ta!_%Ta%i%Ta!g%Ta~P#/sOa#cq!]#cq'z#cq'w#cq!Y#cq!k#cqv#cq!_#cq%i#cq!g#cq~P!:tO![3lO!]'YX!k'YX~P%[O!].tO!k(ka~O!].tO!k(ka~P!:tO!Y3oO~O$O!na!^!na~PKlO$O!ja!]!ja!^!ja~P#BwO$O!ra!^!ra~P!=[O$O!ta!^!ta~P!?rOg']X!]']X~P!,TO!]/POg(pa~OSfO!_4TO$d4UO~O!^4YO~Ov4ZO~P#/sOa$mq!]$mq'z$mq'w$mq!Y$mq!k$mqv$mq!_$mq%i$mq!g$mq~P!:tO!Y4]O~P!&zO!S4^O~O!Q*OO'y*PO(z%POn'ia(y'ia!]'ia#`'ia~Og'ia$O'ia~P%-fO!Q*OO'y*POn'ka(y'ka(z'ka!]'ka#`'ka~Og'ka$O'ka~P%.XO(r$YO~P#/sO!YfX!Y$zX!]fX!]$zX!g%RX#`fX~P!0SOp%WO(T=WO~P!1uOp4bO!S%hO![4aO!_%iO(T%gO!]'eX!k'eX~O!]/pO!k)Oa~O!]/pO!g#vO!k)Oa~O!]/pO!g#vO(r'pO!k)Oa~Og$|i!]$|i#`$|i$O$|i~P!1WO![4jO!Y'gX!]'gX~P!3tO!]/yO!Y)Pa~O!]/yO!Y)Pa~P#/sOP]XR]X[]Xj]Xr]X!Q]X!S]X!Y]X!]]X!l]X!p]X#R]X#S]X#`]X#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X(a]X(r]X(y]X(z]X~Oj%YX!g%YX~P%2OOj4oO!g#vO~Oh%VO!g#vO!l%eO~Oh%VOr4tO!l%eO(r'pO~Or4yO!g#vO(r'pO~Os!nO!S4zO(VTO(YUO(e!mO~O(y$}On%ai!Q%ai'y%ai(z%ai!]%ai#`%ai~Og%ai$O%ai~P%5oO(z%POn%ci!Q%ci'y%ci(y%ci!]%ci#`%ci~Og%ci$O%ci~P%6bOg(_i!](_i~P!1WO#`5QOg(_i!](_i~P!1WO!k5VO~Oa$oq!]$oq'z$oq'w$oq!Y$oq!k$oqv$oq!_$oq%i$oq!g$oq~P!:tO!Y5ZO~O!]5[O!_)QX~P#/sOa$zX!_$zX%^]X'z$zX!]$zX~P!0SO%^5_OaoX!_oX'zoX!]oX~P$#OOp5`O(T#nO~O%^5_O~Ob5fO%j5gO(T+qO(VTO(YUO!]'tX!^'tX~O!]1TO!^)Xa~O[5kO~O`5lO~O[5pO~Oa%nO'z%nO~P#/sO!]5uO#`5wO!^)UX~O!^5xO~Or6OOs!nO!S*iO!b!yO!c!vO!d!vO!|<VO#T!pO#U!pO#V!pO#W!pO#X!pO#[5}O#]!zO(U!lO(VTO(YUO(e!mO(o!sO~O!^5|O~P%;eOn6TO!_1oO%i6SO~Oh%VOn6TO!_1oO%i6SO~Ob6[O(T#nO(VTO(YUO!]'sX!^'sX~O!]1zO!^)Va~O(VTO(YUO(e6^O~O`6bO~Oj6eO&[6fO~PNXO!k6gO~P%[Oa6iO~Oa6iO~P%[Ob2bO!^6nO&j2aO~P`O!g6pO~O!g6rOh(ji!](ji!^(ji!g(ji!l(jir(ji(r(ji~O!]#hi!^#hi~P#BwO#`6sO!]#hi!^#hi~O!]!ai!^!ai~P#BwOa%nO#`6|O'z%nO~Oa%nO!g#vO#`6|O'z%nO~O!](tq!k(tqa(tq'z(tq~P!:tO!](jO!k(sq~O!S%hO!_%iO#j7TO(T%gO~O!_'`O%i7WO~On7[O!_'`O%i7WO~O#k'iaP'iaR'ia['iaa'iaj'iar'ia!S'ia!l'ia!p'ia#R'ia#n'ia#o'ia#p'ia#q'ia#r'ia#s'ia#t'ia#u'ia#v'ia#x'ia#z'ia#{'ia'z'ia(a'ia(r'ia!k'ia!Y'ia'w'iav'ia!_'ia%i'ia!g'ia~P%-fO#k'kaP'kaR'ka['kaa'kaj'kar'ka!S'ka!l'ka!p'ka#R'ka#n'ka#o'ka#p'ka#q'ka#r'ka#s'ka#t'ka#u'ka#v'ka#x'ka#z'ka#{'ka'z'ka(a'ka(r'ka!k'ka!Y'ka'w'kav'ka!_'ka%i'ka!g'ka~P%.XO#k$|iP$|iR$|i[$|ia$|ij$|ir$|i!S$|i!]$|i!l$|i!p$|i#R$|i#n$|i#o$|i#p$|i#q$|i#r$|i#s$|i#t$|i#u$|i#v$|i#x$|i#z$|i#{$|i'z$|i(a$|i(r$|i!k$|i!Y$|i'w$|i#`$|iv$|i!_$|i%i$|i!g$|i~P#/sO#k%aiP%aiR%ai[%aia%aij%air%ai!S%ai!l%ai!p%ai#R%ai#n%ai#o%ai#p%ai#q%ai#r%ai#s%ai#t%ai#u%ai#v%ai#x%ai#z%ai#{%ai'z%ai(a%ai(r%ai!k%ai!Y%ai'w%aiv%ai!_%ai%i%ai!g%ai~P%5oO#k%ciP%ciR%ci[%cia%cij%cir%ci!S%ci!l%ci!p%ci#R%ci#n%ci#o%ci#p%ci#q%ci#r%ci#s%ci#t%ci#u%ci#v%ci#x%ci#z%ci#{%ci'z%ci(a%ci(r%ci!k%ci!Y%ci'w%civ%ci!_%ci%i%ci!g%ci~P%6bO!]'Ya!k'Ya~P!:tO!].tO!k(ki~O$O#ci!]#ci!^#ci~P#BwOP$[OR#zO!Q#yO!S#{O!l#xO!p$[O(aVO[#mij#mir#mi#R#mi#o#mi#p#mi#q#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi$O#mi(r#mi(y#mi(z#mi!]#mi!^#mi~O#n#mi~P%NdO#n<_O~P%NdOP$[OR#zOr<kO!Q#yO!S#{O!l#xO!p$[O#n<_O#o<`O#p<`O#q<`O(aVO[#mij#mi#R#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi$O#mi(r#mi(y#mi(z#mi!]#mi!^#mi~O#r#mi~P&!lO#r<aO~P&!lOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO(aVO#x#mi#z#mi#{#mi$O#mi(r#mi(y#mi(z#mi!]#mi!^#mi~O#v#mi~P&$tOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO#v<cO(aVO(z#}O#z#mi#{#mi$O#mi(r#mi(y#mi!]#mi!^#mi~O#x<eO~P&&uO#x#mi~P&&uO#v<cO~P&$tOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO#v<cO#x<eO(aVO(y#|O(z#}O#{#mi$O#mi(r#mi!]#mi!^#mi~O#z#mi~P&)UO#z<gO~P&)UOa#|y!]#|y'z#|y'w#|y!Y#|y!k#|yv#|y!_#|y%i#|y!g#|y~P!:tO[#mij#mir#mi#R#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi$O#mi(r#mi!]#mi!^#mi~OP$[OR#zO!Q#yO!S#{O!l#xO!p$[O#n<_O#o<`O#p<`O#q<`O(aVO(y#mi(z#mi~P&,QOn>^O!Q*OO'y*PO(y$}O(z%POP#miR#mi!S#mi!l#mi!p#mi#n#mi#o#mi#p#mi#q#mi(a#mi~P&,QO#S$dOP(`XR(`X[(`Xj(`Xn(`Xr(`X!Q(`X!S(`X!l(`X!p(`X#R(`X#n(`X#o(`X#p(`X#q(`X#r(`X#s(`X#t(`X#u(`X#v(`X#x(`X#z(`X#{(`X$O(`X'y(`X(a(`X(r(`X(y(`X(z(`X!](`X!^(`X~O$O$Pi!]$Pi!^$Pi~P#BwO$O!ri!^!ri~P$+oOg']a!]']a~P!1WO!^7nO~O!]'da!^'da~P#BwO!Y7oO~P#/sO!g#vO(r'pO!]'ea!k'ea~O!]/pO!k)Oi~O!]/pO!g#vO!k)Oi~Og$|q!]$|q#`$|q$O$|q~P!1WO!Y'ga!]'ga~P#/sO!g7vO~O!]/yO!Y)Pi~P#/sO!]/yO!Y)Pi~O!Y7yO~Oh%VOr8OO!l%eO(r'pO~Oj8QO!g#vO~Or8TO!g#vO(r'pO~O!Q*OO'y*PO(z%POn'ja(y'ja!]'ja#`'ja~Og'ja$O'ja~P&5RO!Q*OO'y*POn'la(y'la(z'la!]'la#`'la~Og'la$O'la~P&5tOg(_q!](_q~P!1WO#`8VOg(_q!](_q~P!1WO!Y8WO~Og%Oq!]%Oq#`%Oq$O%Oq~P!1WOa$oy!]$oy'z$oy'w$oy!Y$oy!k$oyv$oy!_$oy%i$oy!g$oy~P!:tO!g6rO~O!]5[O!_)Qa~O!_'`OP$TaR$Ta[$Taj$Tar$Ta!Q$Ta!S$Ta!]$Ta!l$Ta!p$Ta#R$Ta#n$Ta#o$Ta#p$Ta#q$Ta#r$Ta#s$Ta#t$Ta#u$Ta#v$Ta#x$Ta#z$Ta#{$Ta(a$Ta(r$Ta(y$Ta(z$Ta~O%i7WO~P&8fO%^8[Oa%[i!_%[i'z%[i!]%[i~Oa#cy!]#cy'z#cy'w#cy!Y#cy!k#cyv#cy!_#cy%i#cy!g#cy~P!:tO[8^O~Ob8`O(T+qO(VTO(YUO~O!]1TO!^)Xi~O`8dO~O(e(|O!]'pX!^'pX~O!]5uO!^)Ua~O!^8nO~P%;eO(o!sO~P$&YO#[8oO~O!_1oO~O!_1oO%i8qO~On8tO!_1oO%i8qO~O[8yO!]'sa!^'sa~O!]1zO!^)Vi~O!k8}O~O!k9OO~O!k9RO~O!k9RO~P%[Oa9TO~O!g9UO~O!k9VO~O!](wi!^(wi~P#BwOa%nO#`9_O'z%nO~O!](ty!k(tya(ty'z(ty~P!:tO!](jO!k(sy~O%i9bO~P&8fO!_'`O%i9bO~O#k$|qP$|qR$|q[$|qa$|qj$|qr$|q!S$|q!]$|q!l$|q!p$|q#R$|q#n$|q#o$|q#p$|q#q$|q#r$|q#s$|q#t$|q#u$|q#v$|q#x$|q#z$|q#{$|q'z$|q(a$|q(r$|q!k$|q!Y$|q'w$|q#`$|qv$|q!_$|q%i$|q!g$|q~P#/sO#k'jaP'jaR'ja['jaa'jaj'jar'ja!S'ja!l'ja!p'ja#R'ja#n'ja#o'ja#p'ja#q'ja#r'ja#s'ja#t'ja#u'ja#v'ja#x'ja#z'ja#{'ja'z'ja(a'ja(r'ja!k'ja!Y'ja'w'jav'ja!_'ja%i'ja!g'ja~P&5RO#k'laP'laR'la['laa'laj'lar'la!S'la!l'la!p'la#R'la#n'la#o'la#p'la#q'la#r'la#s'la#t'la#u'la#v'la#x'la#z'la#{'la'z'la(a'la(r'la!k'la!Y'la'w'lav'la!_'la%i'la!g'la~P&5tO#k%OqP%OqR%Oq[%Oqa%Oqj%Oqr%Oq!S%Oq!]%Oq!l%Oq!p%Oq#R%Oq#n%Oq#o%Oq#p%Oq#q%Oq#r%Oq#s%Oq#t%Oq#u%Oq#v%Oq#x%Oq#z%Oq#{%Oq'z%Oq(a%Oq(r%Oq!k%Oq!Y%Oq'w%Oq#`%Oqv%Oq!_%Oq%i%Oq!g%Oq~P#/sO!]'Yi!k'Yi~P!:tO$O#cq!]#cq!^#cq~P#BwO(y$}OP%aaR%aa[%aaj%aar%aa!S%aa!l%aa!p%aa#R%aa#n%aa#o%aa#p%aa#q%aa#r%aa#s%aa#t%aa#u%aa#v%aa#x%aa#z%aa#{%aa$O%aa(a%aa(r%aa!]%aa!^%aa~On%aa!Q%aa'y%aa(z%aa~P&IyO(z%POP%caR%ca[%caj%car%ca!S%ca!l%ca!p%ca#R%ca#n%ca#o%ca#p%ca#q%ca#r%ca#s%ca#t%ca#u%ca#v%ca#x%ca#z%ca#{%ca$O%ca(a%ca(r%ca!]%ca!^%ca~On%ca!Q%ca'y%ca(y%ca~P&LQOn>^O!Q*OO'y*PO(z%PO~P&IyOn>^O!Q*OO'y*PO(y$}O~P&LQOR0kO!Q0kO!S0lO#S$dOP}a[}aj}an}ar}a!l}a!p}a#R}a#n}a#o}a#p}a#q}a#r}a#s}a#t}a#u}a#v}a#x}a#z}a#{}a$O}a'y}a(a}a(r}a(y}a(z}a!]}a!^}a~O!Q*OO'y*POP$saR$sa[$saj$san$sar$sa!S$sa!l$sa!p$sa#R$sa#n$sa#o$sa#p$sa#q$sa#r$sa#s$sa#t$sa#u$sa#v$sa#x$sa#z$sa#{$sa$O$sa(a$sa(r$sa(y$sa(z$sa!]$sa!^$sa~O!Q*OO'y*POP$uaR$ua[$uaj$uan$uar$ua!S$ua!l$ua!p$ua#R$ua#n$ua#o$ua#p$ua#q$ua#r$ua#s$ua#t$ua#u$ua#v$ua#x$ua#z$ua#{$ua$O$ua(a$ua(r$ua(y$ua(z$ua!]$ua!^$ua~On>^O!Q*OO'y*PO(y$}O(z%PO~OP%TaR%Ta[%Taj%Tar%Ta!S%Ta!l%Ta!p%Ta#R%Ta#n%Ta#o%Ta#p%Ta#q%Ta#r%Ta#s%Ta#t%Ta#u%Ta#v%Ta#x%Ta#z%Ta#{%Ta$O%Ta(a%Ta(r%Ta!]%Ta!^%Ta~P''VO$O$mq!]$mq!^$mq~P#BwO$O$oq!]$oq!^$oq~P#BwO!^9oO~O$O9pO~P!1WO!g#vO!]'ei!k'ei~O!g#vO(r'pO!]'ei!k'ei~O!]/pO!k)Oq~O!Y'gi!]'gi~P#/sO!]/yO!Y)Pq~Or9wO!g#vO(r'pO~O[9yO!Y9xO~P#/sO!Y9xO~Oj:PO!g#vO~Og(_y!](_y~P!1WO!]'na!_'na~P#/sOa%[q!_%[q'z%[q!]%[q~P#/sO[:UO~O!]1TO!^)Xq~O`:YO~O#`:ZO!]'pa!^'pa~O!]5uO!^)Ui~P#BwO!S:]O~O!_1oO%i:`O~O(VTO(YUO(e:eO~O!]1zO!^)Vq~O!k:hO~O!k:iO~O!k:jO~O!k:jO~P%[O#`:mO!]#hy!^#hy~O!]#hy!^#hy~P#BwO%i:rO~P&8fO!_'`O%i:rO~O$O#|y!]#|y!^#|y~P#BwOP$|iR$|i[$|ij$|ir$|i!S$|i!l$|i!p$|i#R$|i#n$|i#o$|i#p$|i#q$|i#r$|i#s$|i#t$|i#u$|i#v$|i#x$|i#z$|i#{$|i$O$|i(a$|i(r$|i!]$|i!^$|i~P''VO!Q*OO'y*PO(z%POP'iaR'ia['iaj'ian'iar'ia!S'ia!l'ia!p'ia#R'ia#n'ia#o'ia#p'ia#q'ia#r'ia#s'ia#t'ia#u'ia#v'ia#x'ia#z'ia#{'ia$O'ia(a'ia(r'ia(y'ia!]'ia!^'ia~O!Q*OO'y*POP'kaR'ka['kaj'kan'kar'ka!S'ka!l'ka!p'ka#R'ka#n'ka#o'ka#p'ka#q'ka#r'ka#s'ka#t'ka#u'ka#v'ka#x'ka#z'ka#{'ka$O'ka(a'ka(r'ka(y'ka(z'ka!]'ka!^'ka~O(y$}OP%aiR%ai[%aij%ain%air%ai!Q%ai!S%ai!l%ai!p%ai#R%ai#n%ai#o%ai#p%ai#q%ai#r%ai#s%ai#t%ai#u%ai#v%ai#x%ai#z%ai#{%ai$O%ai'y%ai(a%ai(r%ai(z%ai!]%ai!^%ai~O(z%POP%ciR%ci[%cij%cin%cir%ci!Q%ci!S%ci!l%ci!p%ci#R%ci#n%ci#o%ci#p%ci#q%ci#r%ci#s%ci#t%ci#u%ci#v%ci#x%ci#z%ci#{%ci$O%ci'y%ci(a%ci(r%ci(y%ci!]%ci!^%ci~O$O$oy!]$oy!^$oy~P#BwO$O#cy!]#cy!^#cy~P#BwO!g#vO!]'eq!k'eq~O!]/pO!k)Oy~O!Y'gq!]'gq~P#/sOr:|O!g#vO(r'pO~O[;QO!Y;PO~P#/sO!Y;PO~Og(_!R!](_!R~P!1WOa%[y!_%[y'z%[y!]%[y~P#/sO!]1TO!^)Xy~O!]5uO!^)Uq~O(T;XO~O!_1oO%i;[O~O!k;_O~O%i;dO~P&8fOP$|qR$|q[$|qj$|qr$|q!S$|q!l$|q!p$|q#R$|q#n$|q#o$|q#p$|q#q$|q#r$|q#s$|q#t$|q#u$|q#v$|q#x$|q#z$|q#{$|q$O$|q(a$|q(r$|q!]$|q!^$|q~P''VO!Q*OO'y*PO(z%POP'jaR'ja['jaj'jan'jar'ja!S'ja!l'ja!p'ja#R'ja#n'ja#o'ja#p'ja#q'ja#r'ja#s'ja#t'ja#u'ja#v'ja#x'ja#z'ja#{'ja$O'ja(a'ja(r'ja(y'ja!]'ja!^'ja~O!Q*OO'y*POP'laR'la['laj'lan'lar'la!S'la!l'la!p'la#R'la#n'la#o'la#p'la#q'la#r'la#s'la#t'la#u'la#v'la#x'la#z'la#{'la$O'la(a'la(r'la(y'la(z'la!]'la!^'la~OP%OqR%Oq[%Oqj%Oqr%Oq!S%Oq!l%Oq!p%Oq#R%Oq#n%Oq#o%Oq#p%Oq#q%Oq#r%Oq#s%Oq#t%Oq#u%Oq#v%Oq#x%Oq#z%Oq#{%Oq$O%Oq(a%Oq(r%Oq!]%Oq!^%Oq~P''VOg%e!Z!]%e!Z#`%e!Z$O%e!Z~P!1WO!Y;hO~P#/sOr;iO!g#vO(r'pO~O[;kO!Y;hO~P#/sO!]'pq!^'pq~P#BwO!]#h!Z!^#h!Z~P#BwO#k%e!ZP%e!ZR%e!Z[%e!Za%e!Zj%e!Zr%e!Z!S%e!Z!]%e!Z!l%e!Z!p%e!Z#R%e!Z#n%e!Z#o%e!Z#p%e!Z#q%e!Z#r%e!Z#s%e!Z#t%e!Z#u%e!Z#v%e!Z#x%e!Z#z%e!Z#{%e!Z'z%e!Z(a%e!Z(r%e!Z!k%e!Z!Y%e!Z'w%e!Z#`%e!Zv%e!Z!_%e!Z%i%e!Z!g%e!Z~P#/sOr;tO!g#vO(r'pO~O!Y;uO~P#/sOr;|O!g#vO(r'pO~O!Y;}O~P#/sOP%e!ZR%e!Z[%e!Zj%e!Zr%e!Z!S%e!Z!l%e!Z!p%e!Z#R%e!Z#n%e!Z#o%e!Z#p%e!Z#q%e!Z#r%e!Z#s%e!Z#t%e!Z#u%e!Z#v%e!Z#x%e!Z#z%e!Z#{%e!Z$O%e!Z(a%e!Z(r%e!Z!]%e!Z!^%e!Z~P''VOr<QO!g#vO(r'pO~Ov(fX~P1qO!Q%rO~P!)[O(U!lO~P!)[O!YfX!]fX#`fX~P%2OOP]XR]X[]Xj]Xr]X!Q]X!S]X!]]X!]fX!l]X!p]X#R]X#S]X#`]X#`fX#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X(a]X(r]X(y]X(z]X~O!gfX!k]X!kfX(rfX~P'LTOP<UOQ<UOSfOd>ROe!iOpkOr<UOskOtkOzkO|<UO!O<UO!SWO!WkO!XkO!_XO!i<XO!lZO!o<UO!p<UO!q<UO!s<YO!u<]O!x!hO$W!kO$n>PO(T)]O(VTO(YUO(aVO(o[O~O!]<iO!^$qa~Oh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O<tO!S${O!_$|O!i>WO!l$xO#j<zO$W%`O$t<vO$v<xO$y%aO(T(vO(VTO(YUO(a$uO(y$}O(z%PO~Ol)dO~P(!yOr!eX(r!eX~P#!iOr(jX(r(jX~P##[O!^]X!^fX~P'LTO!YfX!Y$zX!]fX!]$zX#`fX~P!0SO#k<^O~O!g#vO#k<^O~O#`<nO~Oj<bO~O#`=OO!](wX!^(wX~O#`<nO!](uX!^(uX~O#k=PO~Og=RO~P!1WO#k=XO~O#k=YO~Og=RO(T&ZO~O!g#vO#k=ZO~O!g#vO#k=PO~O$O=[O~P#BwO#k=]O~O#k=^O~O#k=cO~O#k=dO~O#k=eO~O#k=fO~O$O=gO~P!1WO$O=hO~P!1WOl=sO~P7eOk#S#T#U#W#X#[#i#j#u$n$t$v$y%]%^%h%i%j%q%s%v%w%y%{~(OT#o!X'|(U#ps#n#qr!Q'}$]'}(T$_(e~",goto:"$9Y)]PPPPPP)^PP)aP)rP+W/]PPPP6mPP7TPP=QPPP@tPA^PA^PPPA^PCfPA^PA^PA^PCjPCoPD^PIWPPPI[PPPPI[L_PPPLeMVPI[PI[PP! eI[PPPI[PI[P!#lI[P!'S!(X!(bP!)U!)Y!)U!,gPPPPPPP!-W!(XPP!-h!/YP!2iI[I[!2n!5z!:h!:h!>gPPP!>oI[PPPPPPPPP!BOP!C]PPI[!DnPI[PI[I[I[I[I[PI[!FQP!I[P!LbP!Lf!Lp!Lt!LtP!IXP!Lx!LxP#!OP#!SI[PI[#!Y#%_CjA^PA^PA^A^P#&lA^A^#)OA^#+vA^#.SA^A^#.r#1W#1W#1]#1f#1W#1qPP#1WPA^#2ZA^#6YA^A^6mPPP#:_PPP#:x#:xP#:xP#;`#:xPP#;fP#;]P#;]#;y#;]#<e#<k#<n)aP#<q)aP#<z#<z#<zP)aP)aP)aP)aPP)aP#=Q#=TP#=T)aP#=XP#=[P)aP)aP)aP)aP)aP)a)aPP#=b#=h#=s#=y#>P#>V#>]#>k#>q#>{#?R#?]#?c#?s#?y#@k#@}#AT#AZ#Ai#BO#Cs#DR#DY#Et#FS#Gt#HS#HY#H`#Hf#Hp#Hv#H|#IW#Ij#IpPPPPPPPPPPP#IvPPPPPPP#Jk#Mx$ b$ i$ qPPP$']P$'f$*_$0x$0{$1O$1}$2Q$2X$2aP$2g$2jP$3W$3[$4S$5b$5g$5}PP$6S$6Y$6^$6a$6e$6i$7e$7|$8e$8i$8l$8o$8y$8|$9Q$9UR!|RoqOXst!Z#d%m&r&t&u&w,s,x2[2_Y!vQ'`-e1o5{Q%tvQ%|yQ&T|Q&j!VS'W!e-]Q'f!iS'l!r!yU*k$|*Z*oQ+o%}S+|&V&WQ,d&dQ-c'_Q-m'gQ-u'mQ0[*qQ1b,OQ1y,eR<{<Y%SdOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+],p,s,x-i-q.P.V.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3l4z6T6e6f6i6|8t9T9_S#q]<V!r)_$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SU+P%]<s<tQ+t&PQ,f&gQ,m&oQ0x+gQ0}+iQ1Y+uQ2R,kQ3`.gQ5`0|Q5f1TQ6[1zQ7Y3dQ8`5gR9e7['QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>S!S!nQ!r!v!y!z$|'W'_'`'l'm'n*k*o*q*r-]-c-e-u0[0_1o5{5}%[$ti#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;k<l<m<o<p<q<r<u<v<w<x<y<z=S=T=U=V=X=Y=]=^=_=`=a=b=c=d=g=h>P>X>Y>]>^Q&X|Q'U!eS'[%i-`Q+t&PQ,P&WQ,f&gQ0n+SQ1Y+uQ1_+{Q2Q,jQ2R,kQ5f1TQ5o1aQ6[1zQ6_1|Q6`2PQ8`5gQ8c5lQ8|6bQ:X8dQ:f8yQ;V:YR<}*ZrnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_R,h&k&z^OPXYstuvwz!Z!`!g!j!o#S#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'b'r(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>R>S[#]WZ#W#Z'X(T!b%jm#h#i#l$x%e%h(^(h(i(j*Y*^*b+Z+[+^,o-V.T.Z.[.]._/m/p2d3[3]4a6r7TQ%wxQ%{yW&Q|&V&W,OQ&_!TQ'c!hQ'e!iQ(q#sS+n%|%}Q+r&PQ,_&bQ,c&dS-l'f'gQ.i(rQ1R+oQ1X+uQ1Z+vQ1^+zQ1t,`S1x,d,eQ2|-mQ5e1TQ5i1WQ5n1`Q6Z1yQ8_5gQ8b5kQ8f5pQ:T8^R;T:U!U$zi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y!^%yy!i!u%{%|%}'V'e'f'g'k'u*j+n+o-Y-l-m-t0R0U1R2u2|3T4r4s4v7}9{Q+h%wQ,T&[Q,W&]Q,b&dQ.h(qQ1s,_U1w,c,d,eQ3e.iQ6U1tS6Y1x1yQ8x6Z#f>T#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^o>U<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=hW%Ti%V*y>PS&[!Q&iQ&]!RQ&^!SU*}%[%d=sR,R&Y%]%Si#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;k<l<m<o<p<q<r<u<v<w<x<y<z=S=T=U=V=X=Y=]=^=_=`=a=b=c=d=g=h>P>X>Y>]>^T)z$u){V+P%]<s<tW'[!e%i*Z-`S(}#y#zQ+c%rQ+y&SS.b(m(nQ1j,XQ5T0kR8i5u'QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>S$i$^c#Y#e%q%s%u(S(Y(t(y)R)S)T)U)V)W)X)Y)Z)[)^)`)b)g)q+d+x-Z-x-}.S.U.s.v.z.|.}/O/b0p2k2n3O3V3k3p3q3r3s3t3u3v3w3x3y3z3{3|4P4Q4X5X5c6u6{7Q7a7b7k7l8k9X9]9g9m9n:o;W;`<W=vT#TV#U'RkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SQ'Y!eR2q-]!W!nQ!e!r!v!y!z$|'W'_'`'l'm'n*Z*k*o*q*r-]-c-e-u0[0_1o5{5}R1l,ZnqOXst!Z#d%m&r&t&u&w,s,x2[2_Q&y!^Q'v!xS(s#u<^Q+l%zQ,]&_Q,^&aQ-j'dQ-w'oS.r(x=PS0q+X=ZQ1P+mQ1n,[Q2c,zQ2e,{Q2m-WQ2z-kQ2}-oS5Y0r=eQ5a1QS5d1S=fQ6t2oQ6x2{Q6}3SQ8]5bQ9Y6vQ9Z6yQ9^7OR:l9V$d$]c#Y#e%s%u(S(Y(t(y)R)S)T)U)V)W)X)Y)Z)[)^)`)b)g)q+d+x-Z-x-}.S.U.s.v.z.}/O/b0p2k2n3O3V3k3p3q3r3s3t3u3v3w3x3y3z3{3|4P4Q4X5X5c6u6{7Q7a7b7k7l8k9X9]9g9m9n:o;W;`<W=vS(o#p'iQ)P#zS+b%q.|S.c(n(pR3^.d'QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SS#q]<VQ&t!XQ&u!YQ&w![Q&x!]R2Z,vQ'a!hQ+e%wQ-h'cS.e(q+hQ2x-gW3b.h.i0w0yQ6w2yW7U3_3a3e5^U9a7V7X7ZU:q9c9d9fS;b:p:sQ;p;cR;x;qU!wQ'`-eT5y1o5{!Q_OXZ`st!V!Z#d#h%e%m&i&k&r&t&u&w(j,s,x.[2[2_]!pQ!r'`-e1o5{T#q]<V%^{OPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_S(}#y#zS.b(m(n!s=l$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SU$fd)_,mS(p#p'iU*v%R(w4OU0m+O.n7gQ5^0xQ7V3`Q9d7YR:s9em!tQ!r!v!y!z'`'l'm'n-e-u1o5{5}Q't!uS(f#g2US-s'k'wQ/s*]Q0R*jQ3U-vQ4f/tQ4r0TQ4s0UQ4x0^Q7r4`S7}4t4vS8R4y4{Q9r7sQ9v7yQ9{8OQ:Q8TS:{9w9xS;g:|;PS;s;h;iS;{;t;uS<P;|;}R<S<QQ#wbQ's!uS(e#g2US(g#m+WQ+Y%fQ+j%xQ+p&OU-r'k't'wQ.W(fU/r*]*`/wQ0S*jQ0V*lQ1O+kQ1u,aS3R-s-vQ3Z.`S4e/s/tQ4n0PS4q0R0^Q4u0WQ6W1vQ7P3US7q4`4bQ7u4fU7|4r4x4{Q8P4wQ8v6XS9q7r7sQ9u7yQ9}8RQ:O8SQ:c8wQ:y9rS:z9v9xQ;S:QQ;^:dS;f:{;PS;r;g;hS;z;s;uS<O;{;}Q<R<PQ<T<SQ=o=jQ={=tR=|=uV!wQ'`-e%^aOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_S#wz!j!r=i$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SR=o>R%^bOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_Q%fj!^%xy!i!u%{%|%}'V'e'f'g'k'u*j+n+o-Y-l-m-t0R0U1R2u2|3T4r4s4v7}9{S&Oz!jQ+k%yQ,a&dW1v,b,c,d,eU6X1w1x1yS8w6Y6ZQ:d8x!r=j$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SQ=t>QR=u>R%QeOPXYstuvw!Z!`!g!o#S#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_Y#bWZ#W#Z(T!b%jm#h#i#l$x%e%h(^(h(i(j*Y*^*b+Z+[+^,o-V.T.Z.[.]._/m/p2d3[3]4a6r7TQ,n&o!p=k$Z$n)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SR=n'XU']!e%i*ZR2s-`%SdOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+],p,s,x-i-q.P.V.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3l4z6T6e6f6i6|8t9T9_!r)_$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SQ,m&oQ0x+gQ3`.gQ7Y3dR9e7[!b$Tc#Y%q(S(Y(t(y)Z)[)`)g+x-x-}.S.U.s.v/b0p3O3V3k3{5X5c6{7Q7a9]:o<W!P<d)^)q-Z.|2k2n3p3y3z4P4X6u7b7k7l8k9X9g9m9n;W;`=v!f$Vc#Y%q(S(Y(t(y)W)X)Z)[)`)g+x-x-}.S.U.s.v/b0p3O3V3k3{5X5c6{7Q7a9]:o<W!T<f)^)q-Z.|2k2n3p3v3w3y3z4P4X6u7b7k7l8k9X9g9m9n;W;`=v!^$Zc#Y%q(S(Y(t(y)`)g+x-x-}.S.U.s.v/b0p3O3V3k3{5X5c6{7Q7a9]:o<WQ4_/kz>S)^)q-Z.|2k2n3p4P4X6u7b7k7l8k9X9g9m9n;W;`=vQ>X>ZR>Y>['QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SS$oh$pR4U/U'XgOPWXYZhstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n$p%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/U/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>ST$kf$qQ$ifS)j$l)nR)v$qT$jf$qT)l$l)n'XhOPWXYZhstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n$p%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/U/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>ST$oh$pQ$rhR)u$p%^jOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_!s>Q$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>S#glOPXZst!Z!`!o#S#d#o#{$n%m&k&n&o&r&t&u&w&{'T'b)O)s*i+]+g,p,s,x-i.g/V/n0]0l1r2S2T2V2X2[2_2a3d4T4z6T6e6f6i7[8t9T!U%Ri$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y#f(w#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^Q+T%aQ/c*Oo4O<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=h!U$yi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>YQ*c$zU*l$|*Z*oQ+U%bQ0W*m#f=q#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^n=r<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=hQ=w>TQ=x>UQ=y>VR=z>W!U%Ri$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y#f(w#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^o4O<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=hnoOXst!Z#d%m&r&t&u&w,s,x2[2_S*f${*YQ-R'OQ-S'QR4i/y%[%Si#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;k<l<m<o<p<q<r<u<v<w<x<y<z=S=T=U=V=X=Y=]=^=_=`=a=b=c=d=g=h>P>X>Y>]>^Q,U&]Q1h,WQ5s1gR8h5tV*n$|*Z*oU*n$|*Z*oT5z1o5{S0P*i/nQ4w0]T8S4z:]Q+j%xQ0V*lQ1O+kQ1u,aQ6W1vQ8v6XQ:c8wR;^:d!U%Oi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Yx*R$v)e*S*u+V/v0d0e4R4g5R5S5W7p8U:R:x=p=}>OS0`*t0a#f<o#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^n<p<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=h!d=S(u)c*[*e.j.m.q/_/k/|0v1e3h4[4h4l5r7]7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[`=T3}7c7f7j9h:t:w;yS=_.l3iT=`7e9k!U%Qi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y|*T$v)e*U*t+V/g/v0d0e4R4g4|5R5S5W7p8U:R:x=p=}>OS0b*u0c#f<q#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^n<r<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=h!h=U(u)c*[*e.k.l.q/_/k/|0v1e3f3h4[4h4l5r7]7^7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[d=V3}7d7e7j9h9i:t:u:w;yS=a.m3jT=b7f9lrnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_Q&f!UR,p&ornOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_R&f!UQ,Y&^R1d,RsnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_Q1p,_S6R1s1tU8p6P6Q6US:_8r8sS;Y:^:aQ;m;ZR;w;nQ&m!VR,i&iR6_1|R:f8yW&Q|&V&W,OR1Z+vQ&r!WR,s&sR,y&xT2],x2_R,}&yQ,|&yR2f,}Q'y!{R-y'ySsOtQ#dXT%ps#dQ#OTR'{#OQ#RUR'}#RQ){$uR/`){Q#UVR(Q#UQ#XWU(W#X(X.QQ(X#YR.Q(YQ-^'YR2r-^Q.u(yS3m.u3nR3n.vQ-e'`R2v-eY!rQ'`-e1o5{R'j!rQ/Q)eR4S/QU#_W%h*YU(_#_(`.RQ(`#`R.R(ZQ-a']R2t-at`OXst!V!Z#d%m&i&k&r&t&u&w,s,x2[2_S#hZ%eU#r`#h.[R.[(jQ(k#jQ.X(gW.a(k.X3X7RQ3X.YR7R3YQ)n$lR/W)nQ$phR)t$pQ$`cU)a$`-|<jQ-|<WR<j)qQ/q*]W4c/q4d7t9sU4d/r/s/tS7t4e4fR9s7u$e*Q$v(u)c)e*[*e*t*u+Q+R+V.l.m.o.p.q/_/g/i/k/v/|0d0e0v1e3f3g3h3}4R4[4g4h4l4|5O5R5S5W5r7]7^7_7`7e7f7h7i7j7p7w7z8U8X8Z9h9i9j9t9|:R:S:t:u:v:w:x:};R;e;j;v;y=p=}>O>Z>[Q/z*eU4k/z4m7xQ4m/|R7x4lS*o$|*ZR0Y*ox*S$v)e*t*u+V/v0d0e4R4g5R5S5W7p8U:R:x=p=}>O!d.j(u)c*[*e.l.m.q/_/k/|0v1e3h4[4h4l5r7]7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[U/h*S.j7ca7c3}7e7f7j9h:t:w;yQ0a*tQ3i.lU4}0a3i9kR9k7e|*U$v)e*t*u+V/g/v0d0e4R4g4|5R5S5W7p8U:R:x=p=}>O!h.k(u)c*[*e.l.m.q/_/k/|0v1e3f3h4[4h4l5r7]7^7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[U/j*U.k7de7d3}7e7f7j9h9i:t:u:w;yQ0c*uQ3j.mU5P0c3j9lR9l7fQ*z%UR0g*zQ5]0vR8Y5]Q+_%kR0u+_Q5v1jS8j5v:[R:[8kQ,[&_R1m,[Q5{1oR8m5{Q1{,fS6]1{8zR8z6_Q1U+rW5h1U5j8a:VQ5j1XQ8a5iR:V8bQ+w&QR1[+wQ2_,xR6m2_YrOXst#dQ&v!ZQ+a%mQ,r&rQ,t&tQ,u&uQ,w&wQ2Y,sS2],x2_R6l2[Q%opQ&z!_Q&}!aQ'P!bQ'R!cQ'q!uQ+`%lQ+l%zQ,Q&XQ,h&mQ-P&|W-p'k's't'wQ-w'oQ0X*nQ1P+mQ1c,PS2O,i,lQ2g-OQ2h-RQ2i-SQ2}-oW3P-r-s-v-xQ5a1QQ5m1_Q5q1eQ6V1uQ6a2QQ6k2ZU6z3O3R3UQ6}3SQ8]5bQ8e5oQ8g5rQ8l5zQ8u6WQ8{6`S9[6{7PQ9^7OQ:W8cQ:b8vQ:g8|Q:n9]Q;U:XQ;]:cQ;a:oQ;l;VR;o;^Q%zyQ'd!iQ'o!uU+m%{%|%}Q-W'VU-k'e'f'gS-o'k'uQ0Q*jS1Q+n+oQ2o-YS2{-l-mQ3S-tS4p0R0UQ5b1RQ6v2uQ6y2|Q7O3TU7{4r4s4vQ9z7}R;O9{S$wi>PR*{%VU%Ui%V>PR0f*yQ$viS(u#v+iS)c$b$cQ)e$dQ*[$xS*e${*YQ*t%OQ*u%QQ+Q%^Q+R%_Q+V%cQ.l<oQ.m<qQ.o<uQ.p<wQ.q<yQ/_)yQ/g*RQ/i*TQ/k*VQ/v*aS/|*g/mQ0d*wQ0e*xl0v+f,V.f1i1q3c6S7W8q9b:`:r;[;dQ1e,SQ3f=SQ3g=UQ3h=XS3}<l<mQ4R/PS4[/d4^Q4g/xQ4h/yQ4l/{Q4|0`Q5O0bQ5R0iQ5S0jQ5W0oQ5r1fQ7]=]Q7^=_Q7_=aQ7`=cQ7e<pQ7f<rQ7h<vQ7i<xQ7j<zQ7p4_Q7w4jQ7z4oQ8U5QQ8X5[Q8Z5_Q9h=YQ9i=TQ9j=VQ9t7vQ9|8QQ:R8VQ:S8[Q:t=^Q:u=`Q:v=bQ:w=dQ:x9pQ:}9yQ;R:PQ;e=gQ;j;QQ;v;kQ;y=hQ=p>PQ=}>XQ>O>YQ>Z>]R>[>^Q+O%]Q.n<sR7g<tnpOXst!Z#d%m&r&t&u&w,s,x2[2_Q!fPS#fZ#oQ&|!`W'h!o*i0]4zQ(P#SQ)Q#{Q)r$nS,l&k&nQ,q&oQ-O&{S-T'T/nQ-g'bQ.x)OQ/[)sQ0s+]Q0y+gQ2W,pQ2y-iQ3a.gQ4W/VQ5U0lQ6Q1rQ6c2SQ6d2TQ6h2VQ6j2XQ6o2aQ7Z3dQ7m4TQ8s6TQ9P6eQ9Q6fQ9S6iQ9f7[Q:a8tR:k9T#[cOPXZst!Z!`!o#d#o#{%m&k&n&o&r&t&u&w&{'T'b)O*i+]+g,p,s,x-i.g/n0]0l1r2S2T2V2X2[2_2a3d4z6T6e6f6i7[8t9TQ#YWQ#eYQ%quQ%svS%uw!gS(S#W(VQ(Y#ZQ(t#uQ(y#xQ)R$OQ)S$PQ)T$QQ)U$RQ)V$SQ)W$TQ)X$UQ)Y$VQ)Z$WQ)[$XQ)^$ZQ)`$_Q)b$aQ)g$eW)q$n)s/V4TQ+d%tQ+x&RS-Z'X2pQ-x'rS-}(T.PQ.S(]Q.U(dQ.s(xQ.v(zQ.z<UQ.|<XQ.}<YQ/O<]Q/b)}Q0p+XQ2k-UQ2n-XQ3O-qQ3V.VQ3k.tQ3p<^Q3q<_Q3r<`Q3s<aQ3t<bQ3u<cQ3v<dQ3w<eQ3x<fQ3y<gQ3z<hQ3{.{Q3|<kQ4P<nQ4Q<{Q4X<iQ5X0rQ5c1SQ6u=OQ6{3QQ7Q3WQ7a3lQ7b=PQ7k=RQ7l=ZQ8k5wQ9X6sQ9]6|Q9g=[Q9m=eQ9n=fQ:o9_Q;W:ZQ;`:mQ<W#SR=v>SR#[WR'Z!el!tQ!r!v!y!z'`'l'm'n-e-u1o5{5}S'V!e-]U*j$|*Z*oS-Y'W'_S0U*k*qQ0^*rQ2u-cQ4v0[R4{0_R({#xQ!fQT-d'`-e]!qQ!r'`-e1o5{Q#p]R'i<VR)f$dY!uQ'`-e1o5{Q'k!rS'u!v!yS'w!z5}S-t'l'mQ-v'nR3T-uT#kZ%eS#jZ%eS%km,oU(g#h#i#lS.Y(h(iQ.^(jQ0t+^Q3Y.ZU3Z.[.]._S7S3[3]R9`7Td#^W#W#Z%h(T(^*Y+Z.T/mr#gZm#h#i#l%e(h(i(j+^.Z.[.]._3[3]7TS*]$x*bQ/t*^Q2U,oQ2l-VQ4`/pQ6q2dQ7s4aQ9W6rT=m'X+[V#aW%h*YU#`W%h*YS(U#W(^U(Z#Z+Z/mS-['X+[T.O(T.TV'^!e%i*ZQ$lfR)x$qT)m$l)nR4V/UT*_$x*bT*h${*YQ0w+fQ1g,VQ3_.fQ5t1iQ6P1qQ7X3cQ8r6SQ9c7WQ:^8qQ:p9bQ;Z:`Q;c:rQ;n;[R;q;dnqOXst!Z#d%m&r&t&u&w,s,x2[2_Q&l!VR,h&itmOXst!U!V!Z#d%m&i&r&t&u&w,s,x2[2_R,o&oT%lm,oR1k,XR,g&gQ&U|S+}&V&WR1^,OR+s&PT&p!W&sT&q!W&sT2^,x2_",nodeNames:"\u26A0 ArithOp ArithOp ?. JSXStartTag LineComment BlockComment Script Hashbang ExportDeclaration export Star as VariableName String Escape from ; default FunctionDeclaration async function VariableDefinition > < TypeParamList in out const TypeDefinition extends ThisType this LiteralType ArithOp Number BooleanLiteral TemplateType InterpolationEnd Interpolation InterpolationStart NullType null VoidType void TypeofType typeof MemberExpression . PropertyName [ TemplateString Escape Interpolation super RegExp ] ArrayExpression Spread , } { ObjectExpression Property async get set PropertyDefinition Block : NewTarget new NewExpression ) ( ArgList UnaryExpression delete LogicOp BitOp YieldExpression yield AwaitExpression await ParenthesizedExpression ClassExpression class ClassBody MethodDeclaration Decorator @ MemberExpression PrivatePropertyName CallExpression TypeArgList CompareOp < declare Privacy static abstract override PrivatePropertyDefinition PropertyDeclaration readonly accessor Optional TypeAnnotation Equals StaticBlock FunctionExpression ArrowFunction ParamList ParamList ArrayPattern ObjectPattern PatternProperty Privacy readonly Arrow MemberExpression BinaryExpression ArithOp ArithOp ArithOp ArithOp BitOp CompareOp instanceof satisfies CompareOp BitOp BitOp BitOp LogicOp LogicOp ConditionalExpression LogicOp LogicOp AssignmentExpression UpdateOp PostfixExpression CallExpression InstantiationExpression TaggedTemplateExpression DynamicImport import ImportMeta JSXElement JSXSelfCloseEndTag JSXSelfClosingTag JSXIdentifier JSXBuiltin JSXIdentifier JSXNamespacedName JSXMemberExpression JSXSpreadAttribute JSXAttribute JSXAttributeValue JSXEscape JSXEndTag JSXOpenTag JSXFragmentTag JSXText JSXEscape JSXStartCloseTag JSXCloseTag PrefixCast < ArrowFunction TypeParamList SequenceExpression InstantiationExpression KeyofType keyof UniqueType unique ImportType InferredType infer TypeName ParenthesizedType FunctionSignature ParamList NewSignature IndexedType TupleType Label ArrayType ReadonlyType ObjectType MethodType PropertyType IndexSignature PropertyDefinition CallSignature TypePredicate asserts is NewSignature new UnionType LogicOp IntersectionType LogicOp ConditionalType ParameterizedType ClassDeclaration abstract implements type VariableDeclaration let var using TypeAliasDeclaration InterfaceDeclaration interface EnumDeclaration enum EnumBody NamespaceDeclaration namespace module AmbientDeclaration declare GlobalDeclaration global ClassDeclaration ClassBody AmbientFunctionDeclaration ExportGroup VariableName VariableName ImportDeclaration defer ImportGroup ForStatement for ForSpec ForInSpec ForOfSpec of WhileStatement while WithStatement with DoStatement do IfStatement if else SwitchStatement switch SwitchBody CaseLabel case DefaultLabel TryStatement try CatchClause catch FinallyClause finally ReturnStatement return ThrowStatement throw BreakStatement break ContinueStatement continue DebuggerStatement debugger LabeledStatement ExpressionStatement SingleExpression SingleClassItem",maxTerm:380,context:Ib,nodeProps:[["isolate",-8,5,6,14,37,39,51,53,55,""],["group",-26,9,17,19,68,207,211,215,216,218,221,224,234,237,243,245,247,249,252,258,264,266,268,270,272,274,275,"Statement",-34,13,14,32,35,36,42,51,54,55,57,62,70,72,76,80,82,84,85,110,111,120,121,136,139,141,142,143,144,145,147,148,167,169,171,"Expression",-23,31,33,37,41,43,45,173,175,177,178,180,181,182,184,185,186,188,189,190,201,203,205,206,"Type",-3,88,103,109,"ClassItem"],["openedBy",23,"<",38,"InterpolationStart",56,"[",60,"{",73,"(",160,"JSXStartCloseTag"],["closedBy",-2,24,168,">",40,"InterpolationEnd",50,"]",61,"}",74,")",165,"JSXEndTag"]],propSources:[Hb],skippedNodes:[0,5,6,278],repeatNodeCount:37,tokenData:"$Fq07[R!bOX%ZXY+gYZ-yZ[+g[]%Z]^.c^p%Zpq+gqr/mrs3cst:_tuEruvJSvwLkwx! Yxy!'iyz!(sz{!)}{|!,q|}!.O}!O!,q!O!P!/Y!P!Q!9j!Q!R#:O!R![#<_![!]#I_!]!^#Jk!^!_#Ku!_!`$![!`!a$$v!a!b$*T!b!c$,r!c!}Er!}#O$-|#O#P$/W#P#Q$4o#Q#R$5y#R#SEr#S#T$7W#T#o$8b#o#p$<r#p#q$=h#q#r$>x#r#s$@U#s$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$I|Er$I|$I}$Dk$I}$JO$Dk$JO$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr(n%d_$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z&j&hT$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c&j&zP;=`<%l&c'|'U]$i&j(Z!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!b(SU(Z!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!b(iP;=`<%l'}'|(oP;=`<%l&}'[(y]$i&j(WpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(rp)wU(WpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)rp*^P;=`<%l)r'[*dP;=`<%l(r#S*nX(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g#S+^P;=`<%l*g(n+dP;=`<%l%Z07[+rq$i&j(Wp(Z!b'|0/lOX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p$f%Z$f$g+g$g#BY%Z#BY#BZ+g#BZ$IS%Z$IS$I_+g$I_$JT%Z$JT$JU+g$JU$KV%Z$KV$KW+g$KW&FU%Z&FU&FV+g&FV;'S%Z;'S;=`+a<%l?HT%Z?HT?HU+g?HUO%Z07[.ST(X#S$i&j'}0/lO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c07[.n_$i&j(Wp(Z!b'}0/lOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)3p/x`$i&j!p),Q(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW1V`#v(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`2X!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW2d_#v(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'At3l_(V':f$i&j(Z!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k(^4r_$i&j(Z!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k&z5vX$i&jOr5qrs6cs!^5q!^!_6y!_#o5q#o#p6y#p;'S5q;'S;=`7h<%lO5q&z6jT$d`$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c`6|TOr6yrs7]s;'S6y;'S;=`7b<%lO6y`7bO$d``7eP;=`<%l6y&z7kP;=`<%l5q(^7w]$d`$i&j(Z!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!r8uZ(Z!bOY8pYZ6yZr8prs9hsw8pwx6yx#O8p#O#P6y#P;'S8p;'S;=`:R<%lO8p!r9oU$d`(Z!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!r:UP;=`<%l8p(^:[P;=`<%l4k%9[:hh$i&j(Wp(Z!bOY%ZYZ&cZq%Zqr<Srs&}st%ZtuCruw%Zwx(rx!^%Z!^!_*g!_!c%Z!c!}Cr!}#O%Z#O#P&c#P#R%Z#R#SCr#S#T%Z#T#oCr#o#p*g#p$g%Z$g;'SCr;'S;=`El<%lOCr(r<__WS$i&j(Wp(Z!bOY<SYZ&cZr<Srs=^sw<Swx@nx!^<S!^!_Bm!_#O<S#O#P>`#P#o<S#o#pBm#p;'S<S;'S;=`Cl<%lO<S(Q=g]WS$i&j(Z!bOY=^YZ&cZw=^wx>`x!^=^!^!_?q!_#O=^#O#P>`#P#o=^#o#p?q#p;'S=^;'S;=`@h<%lO=^&n>gXWS$i&jOY>`YZ&cZ!^>`!^!_?S!_#o>`#o#p?S#p;'S>`;'S;=`?k<%lO>`S?XSWSOY?SZ;'S?S;'S;=`?e<%lO?SS?hP;=`<%l?S&n?nP;=`<%l>`!f?xWWS(Z!bOY?qZw?qwx?Sx#O?q#O#P?S#P;'S?q;'S;=`@b<%lO?q!f@eP;=`<%l?q(Q@kP;=`<%l=^'`@w]WS$i&j(WpOY@nYZ&cZr@nrs>`s!^@n!^!_Ap!_#O@n#O#P>`#P#o@n#o#pAp#p;'S@n;'S;=`Bg<%lO@ntAwWWS(WpOYApZrAprs?Ss#OAp#O#P?S#P;'SAp;'S;=`Ba<%lOAptBdP;=`<%lAp'`BjP;=`<%l@n#WBvYWS(Wp(Z!bOYBmZrBmrs?qswBmwxApx#OBm#O#P?S#P;'SBm;'S;=`Cf<%lOBm#WCiP;=`<%lBm(rCoP;=`<%l<S%9[C}i$i&j(o%1l(Wp(Z!bOY%ZYZ&cZr%Zrs&}st%ZtuCruw%Zwx(rx!Q%Z!Q![Cr![!^%Z!^!_*g!_!c%Z!c!}Cr!}#O%Z#O#P&c#P#R%Z#R#SCr#S#T%Z#T#oCr#o#p*g#p$g%Z$g;'SCr;'S;=`El<%lOCr%9[EoP;=`<%lCr07[FRk$i&j(Wp(Z!b$]#t(T,2j(e$I[OY%ZYZ&cZr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$g%Z$g;'SEr;'S;=`I|<%lOEr+dHRk$i&j(Wp(Z!b$]#tOY%ZYZ&cZr%Zrs&}st%ZtuGvuw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Gv![!^%Z!^!_*g!_!c%Z!c!}Gv!}#O%Z#O#P&c#P#R%Z#R#SGv#S#T%Z#T#oGv#o#p*g#p$g%Z$g;'SGv;'S;=`Iv<%lOGv+dIyP;=`<%lGv07[JPP;=`<%lEr(KWJ_`$i&j(Wp(Z!b#p(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KWKl_$i&j$Q(Ch(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z,#xLva(z+JY$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sv%ZvwM{wx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KWNW`$i&j#z(Ch(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'At! c_(Y';W$i&j(WpOY!!bYZ!#hZr!!brs!#hsw!!bwx!$xx!^!!b!^!_!%z!_#O!!b#O#P!#h#P#o!!b#o#p!%z#p;'S!!b;'S;=`!'c<%lO!!b'l!!i_$i&j(WpOY!!bYZ!#hZr!!brs!#hsw!!bwx!$xx!^!!b!^!_!%z!_#O!!b#O#P!#h#P#o!!b#o#p!%z#p;'S!!b;'S;=`!'c<%lO!!b&z!#mX$i&jOw!#hwx6cx!^!#h!^!_!$Y!_#o!#h#o#p!$Y#p;'S!#h;'S;=`!$r<%lO!#h`!$]TOw!$Ywx7]x;'S!$Y;'S;=`!$l<%lO!$Y`!$oP;=`<%l!$Y&z!$uP;=`<%l!#h'l!%R]$d`$i&j(WpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(r!Q!&PZ(WpOY!%zYZ!$YZr!%zrs!$Ysw!%zwx!&rx#O!%z#O#P!$Y#P;'S!%z;'S;=`!']<%lO!%z!Q!&yU$d`(WpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)r!Q!'`P;=`<%l!%z'l!'fP;=`<%l!!b/5|!'t_!l/.^$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#&U!)O_!k!Lf$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z-!n!*[b$i&j(Wp(Z!b(U%&f#q(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rxz%Zz{!+d{!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW!+o`$i&j(Wp(Z!b#n(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z+;x!,|`$i&j(Wp(Z!br+4YOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z,$U!.Z_!]+Jf$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[!/ec$i&j(Wp(Z!b!Q.2^OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!0p!P!Q%Z!Q![!3Y![!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#%|!0ya$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!2O!P!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#%|!2Z_![!L^$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!3eg$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!3Y![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S!3Y#S#X%Z#X#Y!4|#Y#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!5Vg$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx{%Z{|!6n|}%Z}!O!6n!O!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!6wc$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!8_c$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[!9uf$i&j(Wp(Z!b#o(ChOY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcxz!;Zz{#-}{!P!;Z!P!Q#/d!Q!^!;Z!^!_#(i!_!`#7S!`!a#8i!a!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z?O!;fb$i&j(Wp(Z!b!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z>^!<w`$i&j(Z!b!X7`OY!<nYZ&cZw!<nwx!=yx!P!<n!P!Q!Eq!Q!^!<n!^!_!Gr!_!}!<n!}#O!KS#O#P!Dy#P#o!<n#o#p!Gr#p;'S!<n;'S;=`!L]<%lO!<n<z!>Q^$i&j!X7`OY!=yYZ&cZ!P!=y!P!Q!>|!Q!^!=y!^!_!@c!_!}!=y!}#O!CW#O#P!Dy#P#o!=y#o#p!@c#p;'S!=y;'S;=`!Ek<%lO!=y<z!?Td$i&j!X7`O!^&c!_#W&c#W#X!>|#X#Z&c#Z#[!>|#[#]&c#]#^!>|#^#a&c#a#b!>|#b#g&c#g#h!>|#h#i&c#i#j!>|#j#k!>|#k#m&c#m#n!>|#n#o&c#p;'S&c;'S;=`&w<%lO&c7`!@hX!X7`OY!@cZ!P!@c!P!Q!AT!Q!}!@c!}#O!Ar#O#P!Bq#P;'S!@c;'S;=`!CQ<%lO!@c7`!AYW!X7`#W#X!AT#Z#[!AT#]#^!AT#a#b!AT#g#h!AT#i#j!AT#j#k!AT#m#n!AT7`!AuVOY!ArZ#O!Ar#O#P!B[#P#Q!@c#Q;'S!Ar;'S;=`!Bk<%lO!Ar7`!B_SOY!ArZ;'S!Ar;'S;=`!Bk<%lO!Ar7`!BnP;=`<%l!Ar7`!BtSOY!@cZ;'S!@c;'S;=`!CQ<%lO!@c7`!CTP;=`<%l!@c<z!C][$i&jOY!CWYZ&cZ!^!CW!^!_!Ar!_#O!CW#O#P!DR#P#Q!=y#Q#o!CW#o#p!Ar#p;'S!CW;'S;=`!Ds<%lO!CW<z!DWX$i&jOY!CWYZ&cZ!^!CW!^!_!Ar!_#o!CW#o#p!Ar#p;'S!CW;'S;=`!Ds<%lO!CW<z!DvP;=`<%l!CW<z!EOX$i&jOY!=yYZ&cZ!^!=y!^!_!@c!_#o!=y#o#p!@c#p;'S!=y;'S;=`!Ek<%lO!=y<z!EnP;=`<%l!=y>^!Ezl$i&j(Z!b!X7`OY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#W&}#W#X!Eq#X#Z&}#Z#[!Eq#[#]&}#]#^!Eq#^#a&}#a#b!Eq#b#g&}#g#h!Eq#h#i&}#i#j!Eq#j#k!Eq#k#m&}#m#n!Eq#n#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}8r!GyZ(Z!b!X7`OY!GrZw!Grwx!@cx!P!Gr!P!Q!Hl!Q!}!Gr!}#O!JU#O#P!Bq#P;'S!Gr;'S;=`!J|<%lO!Gr8r!Hse(Z!b!X7`OY'}Zw'}x#O'}#P#W'}#W#X!Hl#X#Z'}#Z#[!Hl#[#]'}#]#^!Hl#^#a'}#a#b!Hl#b#g'}#g#h!Hl#h#i'}#i#j!Hl#j#k!Hl#k#m'}#m#n!Hl#n;'S'};'S;=`(f<%lO'}8r!JZX(Z!bOY!JUZw!JUwx!Arx#O!JU#O#P!B[#P#Q!Gr#Q;'S!JU;'S;=`!Jv<%lO!JU8r!JyP;=`<%l!JU8r!KPP;=`<%l!Gr>^!KZ^$i&j(Z!bOY!KSYZ&cZw!KSwx!CWx!^!KS!^!_!JU!_#O!KS#O#P!DR#P#Q!<n#Q#o!KS#o#p!JU#p;'S!KS;'S;=`!LV<%lO!KS>^!LYP;=`<%l!KS>^!L`P;=`<%l!<n=l!Ll`$i&j(Wp!X7`OY!LcYZ&cZr!Lcrs!=ys!P!Lc!P!Q!Mn!Q!^!Lc!^!_# o!_!}!Lc!}#O#%P#O#P!Dy#P#o!Lc#o#p# o#p;'S!Lc;'S;=`#&Y<%lO!Lc=l!Mwl$i&j(Wp!X7`OY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#W(r#W#X!Mn#X#Z(r#Z#[!Mn#[#](r#]#^!Mn#^#a(r#a#b!Mn#b#g(r#g#h!Mn#h#i(r#i#j!Mn#j#k!Mn#k#m(r#m#n!Mn#n#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(r8Q# vZ(Wp!X7`OY# oZr# ors!@cs!P# o!P!Q#!i!Q!}# o!}#O#$R#O#P!Bq#P;'S# o;'S;=`#$y<%lO# o8Q#!pe(Wp!X7`OY)rZr)rs#O)r#P#W)r#W#X#!i#X#Z)r#Z#[#!i#[#])r#]#^#!i#^#a)r#a#b#!i#b#g)r#g#h#!i#h#i)r#i#j#!i#j#k#!i#k#m)r#m#n#!i#n;'S)r;'S;=`*Z<%lO)r8Q#$WX(WpOY#$RZr#$Rrs!Ars#O#$R#O#P!B[#P#Q# o#Q;'S#$R;'S;=`#$s<%lO#$R8Q#$vP;=`<%l#$R8Q#$|P;=`<%l# o=l#%W^$i&j(WpOY#%PYZ&cZr#%Prs!CWs!^#%P!^!_#$R!_#O#%P#O#P!DR#P#Q!Lc#Q#o#%P#o#p#$R#p;'S#%P;'S;=`#&S<%lO#%P=l#&VP;=`<%l#%P=l#&]P;=`<%l!Lc?O#&kn$i&j(Wp(Z!b!X7`OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#W%Z#W#X#&`#X#Z%Z#Z#[#&`#[#]%Z#]#^#&`#^#a%Z#a#b#&`#b#g%Z#g#h#&`#h#i%Z#i#j#&`#j#k#&`#k#m%Z#m#n#&`#n#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z9d#(r](Wp(Z!b!X7`OY#(iZr#(irs!Grsw#(iwx# ox!P#(i!P!Q#)k!Q!}#(i!}#O#+`#O#P!Bq#P;'S#(i;'S;=`#,`<%lO#(i9d#)th(Wp(Z!b!X7`OY*gZr*grs'}sw*gwx)rx#O*g#P#W*g#W#X#)k#X#Z*g#Z#[#)k#[#]*g#]#^#)k#^#a*g#a#b#)k#b#g*g#g#h#)k#h#i*g#i#j#)k#j#k#)k#k#m*g#m#n#)k#n;'S*g;'S;=`+Z<%lO*g9d#+gZ(Wp(Z!bOY#+`Zr#+`rs!JUsw#+`wx#$Rx#O#+`#O#P!B[#P#Q#(i#Q;'S#+`;'S;=`#,Y<%lO#+`9d#,]P;=`<%l#+`9d#,cP;=`<%l#(i?O#,o`$i&j(Wp(Z!bOY#,fYZ&cZr#,frs!KSsw#,fwx#%Px!^#,f!^!_#+`!_#O#,f#O#P!DR#P#Q!;Z#Q#o#,f#o#p#+`#p;'S#,f;'S;=`#-q<%lO#,f?O#-tP;=`<%l#,f?O#-zP;=`<%l!;Z07[#.[b$i&j(Wp(Z!b(O0/l!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z07[#/o_$i&j(Wp(Z!bT0/lOY#/dYZ&cZr#/drs#0nsw#/dwx#4Ox!^#/d!^!_#5}!_#O#/d#O#P#1p#P#o#/d#o#p#5}#p;'S#/d;'S;=`#6|<%lO#/d06j#0w]$i&j(Z!bT0/lOY#0nYZ&cZw#0nwx#1px!^#0n!^!_#3R!_#O#0n#O#P#1p#P#o#0n#o#p#3R#p;'S#0n;'S;=`#3x<%lO#0n05W#1wX$i&jT0/lOY#1pYZ&cZ!^#1p!^!_#2d!_#o#1p#o#p#2d#p;'S#1p;'S;=`#2{<%lO#1p0/l#2iST0/lOY#2dZ;'S#2d;'S;=`#2u<%lO#2d0/l#2xP;=`<%l#2d05W#3OP;=`<%l#1p01O#3YW(Z!bT0/lOY#3RZw#3Rwx#2dx#O#3R#O#P#2d#P;'S#3R;'S;=`#3r<%lO#3R01O#3uP;=`<%l#3R06j#3{P;=`<%l#0n05x#4X]$i&j(WpT0/lOY#4OYZ&cZr#4Ors#1ps!^#4O!^!_#5Q!_#O#4O#O#P#1p#P#o#4O#o#p#5Q#p;'S#4O;'S;=`#5w<%lO#4O00^#5XW(WpT0/lOY#5QZr#5Qrs#2ds#O#5Q#O#P#2d#P;'S#5Q;'S;=`#5q<%lO#5Q00^#5tP;=`<%l#5Q05x#5zP;=`<%l#4O01p#6WY(Wp(Z!bT0/lOY#5}Zr#5}rs#3Rsw#5}wx#5Qx#O#5}#O#P#2d#P;'S#5};'S;=`#6v<%lO#5}01p#6yP;=`<%l#5}07[#7PP;=`<%l#/d)3h#7ab$i&j$Q(Ch(Wp(Z!b!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;ZAt#8vb$Z#t$i&j(Wp(Z!b!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z'Ad#:Zp$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!3Y!P!Q%Z!Q![#<_![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S#<_#S#U%Z#U#V#?i#V#X%Z#X#Y!4|#Y#b%Z#b#c#>_#c#d#Bq#d#l%Z#l#m#Es#m#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#<jk$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!3Y!P!Q%Z!Q![#<_![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S#<_#S#X%Z#X#Y!4|#Y#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#>j_$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#?rd$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#A]f$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Bzc$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Dbe$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#E|g$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Gpi$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z*)x#Il_!g$b$i&j$O)Lv(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)[#Jv_al$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z04f#LS^h#)`#R-<U(Wp(Z!b$n7`OY*gZr*grs'}sw*gwx)rx!P*g!P!Q#MO!Q!^*g!^!_#Mt!_!`$ f!`#O*g#P;'S*g;'S;=`+Z<%lO*g(n#MXX$k&j(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g(El#M}Z#r(Ch(Wp(Z!bOY*gZr*grs'}sw*gwx)rx!_*g!_!`#Np!`#O*g#P;'S*g;'S;=`+Z<%lO*g(El#NyX$Q(Ch(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g(El$ oX#s(Ch(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g*)x$!ga#`*!Y$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`!a$#l!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(K[$#w_#k(Cl$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z*)x$%Vag!*r#s(Ch$f#|$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`$&[!`!a$'f!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$&g_#s(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$'qa#r(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`!a$(v!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$)R`#r(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(Kd$*`a(r(Ct$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!a%Z!a!b$+e!b#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$+p`$i&j#{(Ch(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%#`$,}_!|$Ip$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z04f$.X_!S0,v$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(n$/]Z$i&jO!^$0O!^!_$0f!_#i$0O#i#j$0k#j#l$0O#l#m$2^#m#o$0O#o#p$0f#p;'S$0O;'S;=`$4i<%lO$0O(n$0VT_#S$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c#S$0kO_#S(n$0p[$i&jO!Q&c!Q![$1f![!^&c!_!c&c!c!i$1f!i#T&c#T#Z$1f#Z#o&c#o#p$3|#p;'S&c;'S;=`&w<%lO&c(n$1kZ$i&jO!Q&c!Q![$2^![!^&c!_!c&c!c!i$2^!i#T&c#T#Z$2^#Z#o&c#p;'S&c;'S;=`&w<%lO&c(n$2cZ$i&jO!Q&c!Q![$3U![!^&c!_!c&c!c!i$3U!i#T&c#T#Z$3U#Z#o&c#p;'S&c;'S;=`&w<%lO&c(n$3ZZ$i&jO!Q&c!Q![$0O![!^&c!_!c&c!c!i$0O!i#T&c#T#Z$0O#Z#o&c#p;'S&c;'S;=`&w<%lO&c#S$4PR!Q![$4Y!c!i$4Y#T#Z$4Y#S$4]S!Q![$4Y!c!i$4Y#T#Z$4Y#q#r$0f(n$4lP;=`<%l$0O#1[$4z_!Y#)l$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$6U`#x(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z+;p$7c_$i&j(Wp(Z!b(a+4QOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[$8qk$i&j(Wp(Z!b(T,2j$_#t(e$I[OY%ZYZ&cZr%Zrs&}st%Ztu$8buw%Zwx(rx}%Z}!O$:f!O!Q%Z!Q![$8b![!^%Z!^!_*g!_!c%Z!c!}$8b!}#O%Z#O#P&c#P#R%Z#R#S$8b#S#T%Z#T#o$8b#o#p*g#p$g%Z$g;'S$8b;'S;=`$<l<%lO$8b+d$:qk$i&j(Wp(Z!b$_#tOY%ZYZ&cZr%Zrs&}st%Ztu$:fuw%Zwx(rx}%Z}!O$:f!O!Q%Z!Q![$:f![!^%Z!^!_*g!_!c%Z!c!}$:f!}#O%Z#O#P&c#P#R%Z#R#S$:f#S#T%Z#T#o$:f#o#p*g#p$g%Z$g;'S$:f;'S;=`$<f<%lO$:f+d$<iP;=`<%l$:f07[$<oP;=`<%l$8b#Jf$<{X!_#Hb(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g,#x$=sa(y+JY$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p#q$+e#q;'S%Z;'S;=`+a<%lO%Z)>v$?V_!^(CdvBr$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?O$@a_!q7`$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[$Aq|$i&j(Wp(Z!b'|0/l$]#t(T,2j(e$I[OX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr07[$D|k$i&j(Wp(Z!b'}0/l$]#t(T,2j(e$I[OY%ZYZ&cZr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$g%Z$g;'SEr;'S;=`I|<%lOEr",tokenizers:[Nb,Gb,Ub,Fb,2,3,4,5,6,7,8,9,10,11,12,13,14,jb,new Dt("$S~RRtu[#O#Pg#S#T#|~_P#o#pb~gOx~~jVO#i!P#i#j!U#j#l!P#l#m!q#m;'S!P;'S;=`#v<%lO!P~!UO!U~~!XS!Q![!e!c!i!e#T#Z!e#o#p#Z~!hR!Q![!q!c!i!q#T#Z!q~!tR!Q![!}!c!i!}#T#Z!}~#QR!Q![!P!c!i!P#T#Z!P~#^R!Q![#g!c!i#g#T#Z#g~#jS!Q![#g!c!i#g#T#Z#g#q#r!P~#yP;=`<%l!P~$RO(c~~",141,340),new Dt("j~RQYZXz{^~^O(Q~~aP!P!Qd~iO(R~~",25,323)],topRules:{Script:[0,7],SingleExpression:[1,276],SingleClassItem:[2,277]},dialects:{jsx:0,ts:15175},dynamicPrecedences:{80:1,82:1,94:1,169:1,199:1},specialized:[{term:327,get:c(n=>Kb[n]||-1,"get")},{term:343,get:c(n=>Jb[n]||-1,"get")},{term:95,get:c(n=>e1[n]||-1,"get")}],tokenPrec:15201});var HO=[be("function ${name}(${params}) {\n ${}\n}",{label:"function",detail:"definition",type:"keyword"}),be("for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),be("for (let ${name} of ${collection}) {\n ${}\n}",{label:"for",detail:"of loop",type:"keyword"}),be("do {\n ${}\n} while (${})",{label:"do",detail:"loop",type:"keyword"}),be("while (${}) {\n ${}\n}",{label:"while",detail:"loop",type:"keyword"}),be(`try { 13 + \${} 14 + } catch (\${error}) { 15 + \${} 16 + }`,{label:"try",detail:"/ catch block",type:"keyword"}),be("if (${}) {\n ${}\n}",{label:"if",detail:"block",type:"keyword"}),be(`if (\${}) { 17 + \${} 18 + } else { 19 + \${} 20 + }`,{label:"if",detail:"/ else block",type:"keyword"}),be(`class \${name} { 21 + constructor(\${params}) { 22 + \${} 23 + } 24 + }`,{label:"class",detail:"definition",type:"keyword"}),be('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),be('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],t1=HO.concat([be("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),be("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),be("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),GO=new Ri,KO=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function Bn(n){return(e,t)=>{let i=e.node.getChild("VariableDefinition");return i&&t(i,n),!0}}c(Bn,"defID");var i1=["FunctionDeclaration"],n1={FunctionDeclaration:Bn("function"),ClassDeclaration:Bn("class"),ClassExpression:c(()=>!0,"ClassExpression"),EnumDeclaration:Bn("constant"),TypeAliasDeclaration:Bn("type"),NamespaceDeclaration:Bn("namespace"),VariableDefinition(n,e){n.matchContext(i1)||e(n,"variable")},TypeDefinition(n,e){e(n,"type")},__proto__:null};function JO(n,e){let t=GO.get(e);if(t)return t;let i=[],s=!0;function r(o,l){let a=n.sliceString(o.from,o.to);i.push({label:a,type:l})}return c(r,"def"),e.cursor(L.IncludeAnonymous).iterate(o=>{if(s)s=!1;else if(o.name){let l=n1[o.name];if(l&&l(o,r)||KO.has(o.name))return!1}else if(o.to-o.from>8192){for(let l of JO(n,o.node))i.push(l);return!1}}),GO.set(e,i),i}c(JO,"getScope");var UO=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,ep=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function s1(n){let e=F(n.state).resolveInner(n.pos,-1);if(ep.indexOf(e.name)>-1)return null;let t=e.name=="VariableName"||e.to-e.from<20&&UO.test(n.state.sliceDoc(e.from,e.to));if(!t&&!n.explicit)return null;let i=[];for(let s=e;s;s=s.parent)KO.has(s.name)&&(i=i.concat(JO(n.state.doc,s)));return{options:i,from:t?e.from:n.pos,validFor:UO}}c(s1,"localCompletionSource");var nt=Xt.define({name:"javascript",parser:NO.configure({props:[ri.add({IfStatement:Vi({except:/^\s*({|else\b)/}),TryStatement:Vi({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:bu,SwitchBody:c(n=>{let e=n.textAfter,t=/^\s*\}/.test(e),i=/^\s*(case|default)\b/.test(e);return n.baseIndent+(t?0:i?1:2)*n.unit},"SwitchBody"),Block:Qu({closing:"}"}),ArrowFunction:c(n=>n.baseIndent+n.unit,"ArrowFunction"),"TemplateString BlockComment":c(()=>null,"TemplateString BlockComment"),"Statement Property":Vi({except:/^\s*{/}),JSXElement(n){let e=/^\s*<\//.test(n.textAfter);return n.lineIndent(n.node.from)+(e?0:n.unit)},JSXEscape(n){let e=/\s*\}/.test(n.textAfter);return n.lineIndent(n.node.from)+(e?0:n.unit)},"JSXOpenTag JSXSelfClosingTag"(n){return n.column(n.node.from)+n.unit}}),oi.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":tr,BlockComment(n){return{from:n.from+2,to:n.to-2}},JSXElement(n){let e=n.firstChild;if(!e||e.name=="JSXSelfClosingTag")return null;let t=n.lastChild;return{from:e.to,to:t.type.isError?n.to:t.from}},"JSXSelfClosingTag JSXOpenTag"(n){var e;let t=(e=n.firstChild)===null||e===void 0?void 0:e.nextSibling,i=n.lastChild;return!t||t.type.isError?null:{from:t.to,to:i.type.isError?n.to:i.from}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),tp={test:c(n=>/^JSX/.test(n.name),"test"),facet:Hl({commentTokens:{block:{open:"{/*",close:"*/}"}}})},hh=nt.configure({dialect:"ts"},"typescript"),ch=nt.configure({dialect:"jsx",props:[Js.add(n=>n.isTop?[tp]:void 0)]}),fh=nt.configure({dialect:"jsx ts",props:[Js.add(n=>n.isTop?[tp]:void 0)]},"typescript"),ip=c(n=>({label:n,type:"keyword"}),"kwCompletion"),np="break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield".split(" ").map(ip),r1=np.concat(["declare","implements","private","protected","public"].map(ip));function Er(n={}){let e=n.jsx?n.typescript?fh:ch:n.typescript?hh:nt,t=n.typescript?t1.concat(r1):HO.concat(np);return new Mt(e,[nt.data.of({autocomplete:Id(ep,Ca(t))}),nt.data.of({autocomplete:s1}),n.jsx?a1:[]])}c(Er,"javascript");function o1(n){for(;;){if(n.name=="JSXOpenTag"||n.name=="JSXSelfClosingTag"||n.name=="JSXFragmentTag")return n;if(n.name=="JSXEscape"||!n.parent)return null;n=n.parent}}c(o1,"findOpenTag");function FO(n,e,t=n.length){for(let i=e?.firstChild;i;i=i.nextSibling)if(i.name=="JSXIdentifier"||i.name=="JSXBuiltin"||i.name=="JSXNamespacedName"||i.name=="JSXMemberExpression")return n.sliceString(i.from,Math.min(i.to,t));return""}c(FO,"elementName");var l1=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),a1=P.inputHandler.of((n,e,t,i,s)=>{if((l1?n.composing:n.compositionStarted)||n.state.readOnly||e!=t||i!=">"&&i!="/"||!nt.isActiveAt(n.state,e,-1))return!1;let r=s(),{state:o}=r,l=o.changeByRange(a=>{var h;let{head:f}=a,u=F(o).resolveInner(f-1,-1),d;if(u.name=="JSXStartTag"&&(u=u.parent),!(o.doc.sliceString(f-1,f)!=i||u.name=="JSXAttributeValue"&&u.to>f)){if(i==">"&&u.name=="JSXFragmentTag")return{range:a,changes:{from:f,insert:"</>"}};if(i=="/"&&u.name=="JSXStartCloseTag"){let O=u.parent,p=O.parent;if(p&&O.from==f-2&&((d=FO(o.doc,p.firstChild,f))||((h=p.firstChild)===null||h===void 0?void 0:h.name)=="JSXFragmentTag")){let m=`${d}>`;return{range:y.cursor(f+m.length,-1),changes:{from:f,insert:m}}}}else if(i==">"){let O=o1(u);if(O&&O.name=="JSXOpenTag"&&!/^\/?>|^<\//.test(o.doc.sliceString(f,f+2))&&(d=FO(o.doc,O,f)))return{range:a,changes:{from:f,insert:`</${d}>`}}}}return{range:a}});return l.changes.empty?!1:(n.dispatch([r,o.update(l,{userEvent:"input.complete",scrollIntoView:!0})]),!0)});var In=["_blank","_self","_top","_parent"],uh=["ascii","utf-8","utf-16","latin1","latin1"],dh=["get","post","put","delete"],Oh=["application/x-www-form-urlencoded","multipart/form-data","text/plain"],Ve=["true","false"],X={},h1={a:{attrs:{href:null,ping:null,type:null,media:null,target:In,hreflang:null}},abbr:X,address:X,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:null,hreflang:null,type:null,shape:["default","rect","circle","poly"]}},article:X,aside:X,audio:{attrs:{src:null,mediagroup:null,crossorigin:["anonymous","use-credentials"],preload:["none","metadata","auto"],autoplay:["autoplay"],loop:["loop"],controls:["controls"]}},b:X,base:{attrs:{href:null,target:In}},bdi:X,bdo:X,blockquote:{attrs:{cite:null}},body:X,br:X,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:["autofocus"],disabled:["autofocus"],formenctype:Oh,formmethod:dh,formnovalidate:["novalidate"],formtarget:In,type:["submit","reset","button"]}},canvas:{attrs:{width:null,height:null}},caption:X,center:X,cite:X,code:X,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:["command","checkbox","radio"],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:["disabled"],checked:["checked"]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:["disabled"],multiple:["multiple"]}},datalist:{attrs:{data:null}},dd:X,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:["open"]}},dfn:X,div:X,dl:X,dt:X,em:X,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:["disabled"],form:null,name:null}},figcaption:X,figure:X,footer:X,form:{attrs:{action:null,name:null,"accept-charset":uh,autocomplete:["on","off"],enctype:Oh,method:dh,novalidate:["novalidate"],target:In}},h1:X,h2:X,h3:X,h4:X,h5:X,h6:X,head:{children:["title","base","link","style","meta","script","noscript","command"]},header:X,hgroup:X,hr:X,html:{attrs:{manifest:null}},i:X,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:["allow-top-navigation","allow-same-origin","allow-forms","allow-scripts"],seamless:["seamless"]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:["anonymous","use-credentials"]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:["audio/*","video/*","image/*"],autocomplete:["on","off"],autofocus:["autofocus"],checked:["checked"],disabled:["disabled"],formenctype:Oh,formmethod:dh,formnovalidate:["novalidate"],formtarget:In,multiple:["multiple"],readonly:["readonly"],required:["required"],type:["hidden","text","search","tel","url","email","password","datetime","date","month","week","time","datetime-local","number","range","color","checkbox","radio","file","submit","image","reset","button"]}},ins:{attrs:{cite:null,datetime:null}},kbd:X,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:["autofocus"],disabled:["disabled"],keytype:["RSA"]}},label:{attrs:{for:null,form:null}},legend:X,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:null,media:null,sizes:["all","16x16","16x16 32x32","16x16 32x32 64x64"]}},map:{attrs:{name:null}},mark:X,menu:{attrs:{label:null,type:["list","context","toolbar"]}},meta:{attrs:{content:null,charset:uh,name:["viewport","application-name","author","description","generator","keywords"],"http-equiv":["content-language","content-type","default-style","refresh"]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:X,noscript:X,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:["typemustmatch"]}},ol:{attrs:{reversed:["reversed"],start:null,type:["1","a","A","i","I"]},children:["li","script","template","ul","ol"]},optgroup:{attrs:{disabled:["disabled"],label:null}},option:{attrs:{disabled:["disabled"],label:null,selected:["selected"],value:null}},output:{attrs:{for:null,form:null,name:null}},p:X,param:{attrs:{name:null,value:null}},pre:X,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:X,rt:X,ruby:X,samp:X,script:{attrs:{type:["text/javascript"],src:null,async:["async"],defer:["defer"],charset:uh}},section:X,select:{attrs:{form:null,name:null,size:null,autofocus:["autofocus"],disabled:["disabled"],multiple:["multiple"]}},slot:{attrs:{name:null}},small:X,source:{attrs:{src:null,type:null,media:null}},span:X,strong:X,style:{attrs:{type:["text/css"],media:null,scoped:null}},sub:X,summary:X,sup:X,table:X,tbody:X,td:{attrs:{colspan:null,rowspan:null,headers:null}},template:X,textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:["autofocus"],disabled:["disabled"],readonly:["readonly"],required:["required"],wrap:["soft","hard"]}},tfoot:X,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:["row","col","rowgroup","colgroup"]}},thead:X,time:{attrs:{datetime:null}},title:X,tr:X,track:{attrs:{src:null,label:null,default:null,kind:["subtitles","captions","descriptions","chapters","metadata"],srclang:null}},ul:{children:["li","script","template","ul","ol"]},var:X,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:["anonymous","use-credentials"],preload:["auto","metadata","none"],autoplay:["autoplay"],mediagroup:["movie"],muted:["muted"],controls:["controls"]}},wbr:X},lp={accesskey:null,class:null,contenteditable:Ve,contextmenu:null,dir:["ltr","rtl","auto"],draggable:["true","false","auto"],dropzone:["copy","move","link","string:","file:"],hidden:["hidden"],id:null,inert:["inert"],itemid:null,itemprop:null,itemref:null,itemscope:["itemscope"],itemtype:null,lang:["ar","bn","de","en-GB","en-US","es","fr","hi","id","ja","pa","pt","ru","tr","zh"],spellcheck:Ve,autocorrect:Ve,autocapitalize:Ve,style:null,tabindex:null,title:null,translate:["yes","no"],rel:["stylesheet","alternate","author","bookmark","help","license","next","nofollow","noreferrer","prefetch","prev","search","tag"],role:"alert application article banner button cell checkbox complementary contentinfo dialog document feed figure form grid gridcell heading img list listbox listitem main navigation region row rowgroup search switch tab table tabpanel textbox timer".split(" "),"aria-activedescendant":null,"aria-atomic":Ve,"aria-autocomplete":["inline","list","both","none"],"aria-busy":Ve,"aria-checked":["true","false","mixed","undefined"],"aria-controls":null,"aria-describedby":null,"aria-disabled":Ve,"aria-dropeffect":null,"aria-expanded":["true","false","undefined"],"aria-flowto":null,"aria-grabbed":["true","false","undefined"],"aria-haspopup":Ve,"aria-hidden":Ve,"aria-invalid":["true","false","grammar","spelling"],"aria-label":null,"aria-labelledby":null,"aria-level":null,"aria-live":["off","polite","assertive"],"aria-multiline":Ve,"aria-multiselectable":Ve,"aria-owns":null,"aria-posinset":null,"aria-pressed":["true","false","mixed","undefined"],"aria-readonly":Ve,"aria-relevant":null,"aria-required":Ve,"aria-selected":["true","false","undefined"],"aria-setsize":null,"aria-sort":["ascending","descending","none","other"],"aria-valuemax":null,"aria-valuemin":null,"aria-valuenow":null,"aria-valuetext":null},ap="beforeunload copy cut dragstart dragover dragleave dragenter dragend drag paste focus blur change click load mousedown mouseenter mouseleave mouseup keydown keyup resize scroll unload".split(" ").map(n=>"on"+n);for(let n of ap)lp[n]=null;var ji=class{static{c(this,"Schema")}constructor(e,t){this.tags={...h1,...e},this.globalAttrs={...lp,...t},this.allTags=Object.keys(this.tags),this.globalAttrNames=Object.keys(this.globalAttrs)}};ji.default=new ji;function Ni(n,e,t=n.length){if(!e)return"";let i=e.firstChild,s=i&&i.getChild("TagName");return s?n.sliceString(s.from,Math.min(s.to,t)):""}c(Ni,"elementName");function Gi(n,e=!1){for(;n;n=n.parent)if(n.name=="Element")if(e)e=!1;else return n;return null}c(Gi,"findParentElement");function hp(n,e,t){let i=t.tags[Ni(n,Gi(e))];return i?.children||t.allTags}c(hp,"allowedChildren");function ph(n,e){let t=[];for(let i=Gi(e);i&&!i.type.isTop;i=Gi(i.parent)){let s=Ni(n,i);if(s&&i.lastChild.name=="CloseTag")break;s&&t.indexOf(s)<0&&(e.name=="EndTag"||e.from>=i.firstChild.to)&&t.push(s)}return t}c(ph,"openTags");var cp=/^[:\-\.\w\u00b7-\uffff]*$/;function sp(n,e,t,i,s){let r=/\s*>/.test(n.sliceDoc(s,s+5))?"":">",o=Gi(t,t.name=="StartTag"||t.name=="TagName");return{from:i,to:s,options:hp(n.doc,o,e).map(l=>({label:l,type:"type"})).concat(ph(n.doc,t).map((l,a)=>({label:"/"+l,apply:"/"+l+r,type:"type",boost:99-a}))),validFor:/^\/?[:\-\.\w\u00b7-\uffff]*$/}}c(sp,"completeTag");function rp(n,e,t,i){let s=/\s*>/.test(n.sliceDoc(i,i+5))?"":">";return{from:t,to:i,options:ph(n.doc,e).map((r,o)=>({label:r,apply:r+s,type:"type",boost:99-o})),validFor:cp}}c(rp,"completeCloseTag");function c1(n,e,t,i){let s=[],r=0;for(let o of hp(n.doc,t,e))s.push({label:"<"+o,type:"type"});for(let o of ph(n.doc,t))s.push({label:"</"+o+">",type:"type",boost:99-r++});return{from:i,to:i,options:s,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}c(c1,"completeStartTag");function f1(n,e,t,i,s){let r=Gi(t),o=r?e.tags[Ni(n.doc,r)]:null,l=o&&o.attrs?Object.keys(o.attrs):[],a=o&&o.globalAttrs===!1?l:l.length?l.concat(e.globalAttrNames):e.globalAttrNames;return{from:i,to:s,options:a.map(h=>({label:h,type:"property"})),validFor:cp}}c(f1,"completeAttrName");function u1(n,e,t,i,s){var r;let o=(r=t.parent)===null||r===void 0?void 0:r.getChild("AttributeName"),l=[],a;if(o){let h=n.sliceDoc(o.from,o.to),f=e.globalAttrs[h];if(!f){let u=Gi(t),d=u?e.tags[Ni(n.doc,u)]:null;f=d?.attrs&&d.attrs[h]}if(f){let u=n.sliceDoc(i,s).toLowerCase(),d='"',O='"';/^['"]/.test(u)?(a=u[0]=='"'?/^[^"]*$/:/^[^']*$/,d="",O=n.sliceDoc(s,s+1)==u[0]?"":u[0],u=u.slice(1),i++):a=/^[^\s<>='"]*$/;for(let p of f)l.push({label:p,apply:d+p+O,type:"constant"})}}return{from:i,to:s,options:l,validFor:a}}c(u1,"completeAttrValue");function d1(n,e){let{state:t,pos:i}=e,s=F(t).resolveInner(i,-1),r=s.resolve(i);for(let o=i,l;r==s&&(l=s.childBefore(o));){let a=l.lastChild;if(!a||!a.type.isError||a.from<a.to)break;r=s=l,o=a.from}return s.name=="TagName"?s.parent&&/CloseTag$/.test(s.parent.name)?rp(t,s,s.from,i):sp(t,n,s,s.from,i):s.name=="StartTag"||s.name=="IncompleteTag"?sp(t,n,s,i,i):s.name=="StartCloseTag"||s.name=="IncompleteCloseTag"?rp(t,s,i,i):s.name=="OpenTag"||s.name=="SelfClosingTag"||s.name=="AttributeName"?f1(t,n,s,s.name=="AttributeName"?s.from:i,i):s.name=="Is"||s.name=="AttributeValue"||s.name=="UnquotedAttributeValue"?u1(t,n,s,s.name=="Is"?i:s.from,i):e.explicit&&(r.name=="Element"||r.name=="Text"||r.name=="Document")?c1(t,n,s,i):null}c(d1,"htmlCompletionFor");function O1(n){let{extraTags:e,extraGlobalAttributes:t}=n,i=t||e?new ji(e,t):ji.default;return s=>d1(i,s)}c(O1,"htmlCompletionSourceWith");var p1=nt.parser.configure({top:"SingleExpression"}),fp=[{tag:"script",attrs:c(n=>n.type=="text/typescript"||n.lang=="ts","attrs"),parser:hh.parser},{tag:"script",attrs:c(n=>n.type=="text/babel"||n.type=="text/jsx","attrs"),parser:ch.parser},{tag:"script",attrs:c(n=>n.type=="text/typescript-jsx","attrs"),parser:fh.parser},{tag:"script",attrs(n){return/^(importmap|speculationrules|application\/(.+\+)?json)$/i.test(n.type)},parser:p1},{tag:"script",attrs(n){return!n.type||/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(n.type)},parser:nt.parser},{tag:"style",attrs(n){return(!n.lang||n.lang=="css")&&(!n.type||/^(text\/)?(x-)?(stylesheet|css)$/i.test(n.type))},parser:Wn.parser}],up=[{name:"style",parser:Wn.parser.configure({top:"Styles"})}].concat(ap.map(n=>({name:n,parser:nt.parser}))),dp=Xt.define({name:"html",parser:WO.configure({props:[ri.add({Element(n){let e=/^(\s*)(<\/)?/.exec(n.textAfter);return n.node.to<=n.pos+e[0].length?n.continue():n.lineIndent(n.node.from)+(e[2]?0:n.unit)},"OpenTag CloseTag SelfClosingTag"(n){return n.column(n.node.from)+n.unit},Document(n){if(n.pos+/\s*/.exec(n.textAfter)[0].length<n.node.to)return n.continue();let e=null,t;for(let i=n.node;;){let s=i.lastChild;if(!s||s.name!="Element"||s.to!=i.to)break;e=i=s}return e&&!((t=e.lastChild)&&(t.name=="CloseTag"||t.name=="SelfClosingTag"))?n.lineIndent(e.from)+n.unit:null}}),oi.add({Element(n){let e=n.firstChild,t=n.lastChild;return!e||e.name!="OpenTag"?null:{from:e.to,to:t.name=="CloseTag"?t.from:n.to}}}),Jl.add({"OpenTag CloseTag":c(n=>n.getChild("TagName"),"OpenTag CloseTag")})]}),languageData:{commentTokens:{block:{open:"<!--",close:"-->"}},indentOnInput:/^\s*<\/\w+\W$/,wordChars:"-_"}}),zr=dp.configure({wrap:rh(fp,up)});function Op(n={}){let e="",t;n.matchClosingTags===!1&&(e="noMatch"),n.selfClosingTags===!0&&(e=(e?e+" ":"")+"selfClosing"),(n.nestedLanguages&&n.nestedLanguages.length||n.nestedAttributes&&n.nestedAttributes.length)&&(t=rh((n.nestedLanguages||[]).concat(fp),(n.nestedAttributes||[]).concat(up)));let i=t?dp.configure({wrap:t,dialect:e}):e?zr.configure({dialect:e}):zr;return new Mt(i,[zr.data.of({autocomplete:O1(n)}),n.autoCloseTags!==!1?m1:[],Er().support,Rr().support])}c(Op,"html");var op=new Set("area base br col command embed frame hr img input keygen link meta param source track wbr menuitem".split(" ")),m1=P.inputHandler.of((n,e,t,i,s)=>{if(n.composing||n.state.readOnly||e!=t||i!=">"&&i!="/"||!zr.isActiveAt(n.state,e,-1))return!1;let r=s(),{state:o}=r,l=o.changeByRange(a=>{var h,f,u;let d=o.doc.sliceString(a.from-1,a.to)==i,{head:O}=a,p=F(o).resolveInner(O,-1),m;if(d&&i==">"&&p.name=="EndTag"){let g=p.parent;if(((f=(h=g.parent)===null||h===void 0?void 0:h.lastChild)===null||f===void 0?void 0:f.name)!="CloseTag"&&(m=Ni(o.doc,g.parent,O))&&!op.has(m)){let Q=O+(o.doc.sliceString(O,O+1)===">"?1:0),b=`</${m}>`;return{range:a,changes:{from:O,to:Q,insert:b}}}}else if(d&&i=="/"&&p.name=="IncompleteCloseTag"){let g=p.parent;if(p.from==O-2&&((u=g.lastChild)===null||u===void 0?void 0:u.name)!="CloseTag"&&(m=Ni(o.doc,g,O))&&!op.has(m)){let Q=O+(o.doc.sliceString(O,O+1)===">"?1:0),b=`${m}>`;return{range:y.cursor(O+b.length,-1),changes:{from:O,to:Q,insert:b}}}}return{range:a}});return l.changes.empty?!1:(n.dispatch([r,o.update(l,{userEvent:"input.complete",scrollIntoView:!0})]),!0)});var Sh=Vr(null),gh=Vr(null),mh="editor-loading";function Ui(n){let e=document.querySelector("#html-input-container");if(e)if(n){if(document.getElementById(mh))return;let t=document.createElement("div");t.id=mh,t.className="with-icon",t.style.fontSize="var(--fs-sm)",t.innerHTML='<i class="ph-bold ph-spinner animate-spin"></i> Loading\u2026',e.before(t),e.hidden=!0}else document.getElementById(mh)?.remove(),e.hidden=!1}c(Ui,"setEditorLoading");function qw(){let n=document.body.querySelector("#html-input-container");if(!n)throw new Error("Editor container not found");let e=new P({parent:n,doc:` 25 + <style> 26 + @import "./styles/base.css"; 27 + </style> 28 + 29 + <script type="module"> 30 + import foundation from "~/common/foundation.js"; 31 + <\/script> 32 + `.trim(),extensions:[hO,Op(),Rr(),Er(),$r()]});return Sh.value=e,e}c(qw,"renderEditor");var g1=c(n=>async e=>{e.preventDefault();let t=document.querySelector("#name-input"),i=document.querySelector("#description-input"),s=document.querySelector("#kind-input"),r=n.state.doc.toString(),o=await Yr(85,new TextEncoder().encode(r)),l=t?.value??"nameless",a=i?.value??"",h=s?.value??"interactive",f=gh.value?{...gh.value,cid:o,description:a,html:r,kind:h,name:l}:{$type:"sh.diffuse.output.facet",id:yh(),cid:o,description:a,html:r,kind:h,name:l};switch(e.submitter.name){case"save":await _r(f);break;case"save+open":await _r(f),globalThis.open(`./l/?id=${f.id}`,"blank");break}},"onBuildSubmit");async function mp(n){let e={...n},t=document.querySelector("#name-input"),i=document.querySelector("#description-input"),s=document.querySelector("#kind-input");if(!t)return;let r=new URL(location.href),o=r.searchParams.get("id");if(o&&e.id!==o&&(r.searchParams.delete("id"),history.replaceState(null,"",r)),document.querySelector("#build")?.scrollIntoView(),!e.html&&e.uri){Ui(!0);let a=await bh(e.uri),h=await Yr(85,new TextEncoder().encode(a));Ui(!1),e.html=a,e.cid=h}gh.value=e,t.value=e.name,s&&(s.value=e.kind??"interactive"),i&&(i.value=e.description??"");let l=Sh.value;l?.dispatch({changes:{from:0,to:l.state.doc.length,insert:e.html}})}c(mp,"editFacet");function Ww(){let n=Sh.value;n&&document.querySelector("#build-form")?.addEventListener("submit",g1(n))}c(Ww,"handleBuildFormSubmit");var pp=!1;function Bw(){pp||(pp=!0,document.body.addEventListener("click",async n=>{let e=n.target,t=e.getAttribute("rel");if(!t)return;let i=e.closest("li")?.getAttribute("data-uri");if(!i)return;let s=e.closest("li")?.getAttribute("data-name");if(!s)return;let r=e.closest("li")?.getAttribute("data-kind")??void 0;if(t==="edit"){Ui(!0);let o=await xh({kind:r,name:s,uri:i},{fetchHTML:!0});Ui(!1),mp(o),document.querySelector("#build")?.scrollIntoView()}}))}c(Bw,"listenForExamplesEdit");async function Iw(){let n=new URLSearchParams(location.search).get("id");if(n){Ui(!0);try{let e=await kh(),i=(await wh(e.facets)).find(s=>s.id===n);i&&await mp(i)}finally{Ui(!1)}}}c(Iw,"editFacetFromURL");export{qw as a,Ww as b,Bw as c,Iw as d}; 33 + 34 + //# sourceMappingURL=./chunk-V7SGZC62.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-V7SGZC62.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-V7SGZC62.js.map
··· 1 + {"version":3,"sources":["/node_modules/.deno/@marijn+find-cluster-break@1.0.2/node_modules/@marijn/find-cluster-break/src/index.js","/node_modules/.deno/@codemirror+state@6.5.4/node_modules/@codemirror/state/dist/index.js","/node_modules/.deno/style-mod@4.1.3/node_modules/style-mod/src/style-mod.js","/node_modules/.deno/w3c-keyname@2.2.8/node_modules/w3c-keyname/index.js","/node_modules/.deno/crelt@1.0.6/node_modules/crelt/index.js","/node_modules/.deno/@codemirror+view@6.39.17/node_modules/@codemirror/view/dist/index.js","/node_modules/.deno/@lezer+common@1.5.1/node_modules/@lezer/common/dist/index.js","/node_modules/.deno/@lezer+highlight@1.2.3/node_modules/@lezer/highlight/dist/index.js","/node_modules/.deno/@codemirror+language@6.12.2/node_modules/@codemirror/language/dist/index.js","/node_modules/.deno/@codemirror+commands@6.10.2/node_modules/@codemirror/commands/dist/index.js","/node_modules/.deno/@codemirror+search@6.6.0/node_modules/@codemirror/search/dist/index.js","/node_modules/.deno/@codemirror+autocomplete@6.20.1/node_modules/@codemirror/autocomplete/dist/index.js","/node_modules/.deno/@codemirror+lint@6.9.5/node_modules/@codemirror/lint/dist/index.js","/node_modules/.deno/codemirror@6.0.2/node_modules/codemirror/dist/index.js","/node_modules/.deno/@lezer+lr@1.4.8/node_modules/@lezer/lr/dist/index.js","/node_modules/.deno/@lezer+css@1.3.1/node_modules/@lezer/css/dist/index.js","/node_modules/.deno/@codemirror+lang-css@6.3.1/node_modules/@codemirror/lang-css/dist/index.js","/node_modules/.deno/@lezer+html@1.3.13/node_modules/@lezer/html/dist/index.js","/node_modules/.deno/@lezer+javascript@1.5.4/node_modules/@lezer/javascript/dist/index.js","/node_modules/.deno/@codemirror+lang-javascript@6.2.5/node_modules/@codemirror/lang-javascript/dist/index.js","/node_modules/.deno/@codemirror+lang-html@6.4.11/node_modules/@codemirror/lang-html/dist/index.js","/common/pages/build.js"],"sourcesContent":["// These are filled with ranges (rangeFrom[i] up to but not including\n// rangeTo[i]) of code points that count as extending characters.\nlet rangeFrom = [], rangeTo = []\n\n;(() => {\n // Compressed representation of the Grapheme_Cluster_Break=Extend\n // information from\n // http://www.unicode.org/Public/16.0.0/ucd/auxiliary/GraphemeBreakProperty.txt.\n // Each pair of elements represents a range, as an offet from the\n // previous range and a length. Numbers are in base-36, with the empty\n // string being a shorthand for 1.\n let numbers = \"lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o\".split(\",\").map(s => s ? parseInt(s, 36) : 1)\n for (let i = 0, n = 0; i < numbers.length; i++)\n (i % 2 ? rangeTo : rangeFrom).push(n = n + numbers[i])\n})()\n\nexport function isExtendingChar(code) {\n if (code < 768) return false\n for (let from = 0, to = rangeFrom.length;;) {\n let mid = (from + to) >> 1\n if (code < rangeFrom[mid]) to = mid\n else if (code >= rangeTo[mid]) from = mid + 1\n else return true\n if (from == to) return false\n }\n}\n\nfunction isRegionalIndicator(code) {\n return code >= 0x1F1E6 && code <= 0x1F1FF\n}\n\nfunction check(code) {\n for (let i = 0; i < rangeFrom.length; i++) {\n if (rangeTo[i] > code) return rangeFrom[i] <= code\n }\n return false\n}\n\nconst ZWJ = 0x200d\n\nexport function findClusterBreak(str, pos, forward = true, includeExtending = true) {\n return (forward ? nextClusterBreak : prevClusterBreak)(str, pos, includeExtending)\n}\n\nfunction nextClusterBreak(str, pos, includeExtending) {\n if (pos == str.length) return pos\n // If pos is in the middle of a surrogate pair, move to its start\n if (pos && surrogateLow(str.charCodeAt(pos)) && surrogateHigh(str.charCodeAt(pos - 1))) pos--\n let prev = codePointAt(str, pos)\n pos += codePointSize(prev)\n while (pos < str.length) {\n let next = codePointAt(str, pos)\n if (prev == ZWJ || next == ZWJ || includeExtending && isExtendingChar(next)) {\n pos += codePointSize(next)\n prev = next\n } else if (isRegionalIndicator(next)) {\n let countBefore = 0, i = pos - 2\n while (i >= 0 && isRegionalIndicator(codePointAt(str, i))) { countBefore++; i -= 2 }\n if (countBefore % 2 == 0) break\n else pos += 2\n } else {\n break\n }\n }\n return pos\n}\n\nfunction prevClusterBreak(str, pos, includeExtending) {\n while (pos > 0) {\n let found = nextClusterBreak(str, pos - 2, includeExtending)\n if (found < pos) return found\n pos--\n }\n return 0\n}\n\nfunction codePointAt(str, pos) {\n let code0 = str.charCodeAt(pos)\n if (!surrogateHigh(code0) || pos + 1 == str.length) return code0\n let code1 = str.charCodeAt(pos + 1)\n if (!surrogateLow(code1)) return code0\n return ((code0 - 0xd800) << 10) + (code1 - 0xdc00) + 0x10000\n}\n\nfunction surrogateLow(ch) { return ch >= 0xDC00 && ch < 0xE000 }\nfunction surrogateHigh(ch) { return ch >= 0xD800 && ch < 0xDC00 }\nfunction codePointSize(code) { return code < 0x10000 ? 1 : 2 }\n","import { findClusterBreak as findClusterBreak$1 } from '@marijn/find-cluster-break';\n\n/**\nThe data structure for documents. @nonabstract\n*/\nclass Text {\n /**\n Get the line description around the given position.\n */\n lineAt(pos) {\n if (pos < 0 || pos > this.length)\n throw new RangeError(`Invalid position ${pos} in document of length ${this.length}`);\n return this.lineInner(pos, false, 1, 0);\n }\n /**\n Get the description for the given (1-based) line number.\n */\n line(n) {\n if (n < 1 || n > this.lines)\n throw new RangeError(`Invalid line number ${n} in ${this.lines}-line document`);\n return this.lineInner(n, true, 1, 0);\n }\n /**\n Replace a range of the text with the given content.\n */\n replace(from, to, text) {\n [from, to] = clip(this, from, to);\n let parts = [];\n this.decompose(0, from, parts, 2 /* Open.To */);\n if (text.length)\n text.decompose(0, text.length, parts, 1 /* Open.From */ | 2 /* Open.To */);\n this.decompose(to, this.length, parts, 1 /* Open.From */);\n return TextNode.from(parts, this.length - (to - from) + text.length);\n }\n /**\n Append another document to this one.\n */\n append(other) {\n return this.replace(this.length, this.length, other);\n }\n /**\n Retrieve the text between the given points.\n */\n slice(from, to = this.length) {\n [from, to] = clip(this, from, to);\n let parts = [];\n this.decompose(from, to, parts, 0);\n return TextNode.from(parts, to - from);\n }\n /**\n Test whether this text is equal to another instance.\n */\n eq(other) {\n if (other == this)\n return true;\n if (other.length != this.length || other.lines != this.lines)\n return false;\n let start = this.scanIdentical(other, 1), end = this.length - this.scanIdentical(other, -1);\n let a = new RawTextCursor(this), b = new RawTextCursor(other);\n for (let skip = start, pos = start;;) {\n a.next(skip);\n b.next(skip);\n skip = 0;\n if (a.lineBreak != b.lineBreak || a.done != b.done || a.value != b.value)\n return false;\n pos += a.value.length;\n if (a.done || pos >= end)\n return true;\n }\n }\n /**\n Iterate over the text. When `dir` is `-1`, iteration happens\n from end to start. This will return lines and the breaks between\n them as separate strings.\n */\n iter(dir = 1) { return new RawTextCursor(this, dir); }\n /**\n Iterate over a range of the text. When `from` > `to`, the\n iterator will run in reverse.\n */\n iterRange(from, to = this.length) { return new PartialTextCursor(this, from, to); }\n /**\n Return a cursor that iterates over the given range of lines,\n _without_ returning the line breaks between, and yielding empty\n strings for empty lines.\n \n When `from` and `to` are given, they should be 1-based line numbers.\n */\n iterLines(from, to) {\n let inner;\n if (from == null) {\n inner = this.iter();\n }\n else {\n if (to == null)\n to = this.lines + 1;\n let start = this.line(from).from;\n inner = this.iterRange(start, Math.max(start, to == this.lines + 1 ? this.length : to <= 1 ? 0 : this.line(to - 1).to));\n }\n return new LineCursor(inner);\n }\n /**\n Return the document as a string, using newline characters to\n separate lines.\n */\n toString() { return this.sliceString(0); }\n /**\n Convert the document to an array of lines (which can be\n deserialized again via [`Text.of`](https://codemirror.net/6/docs/ref/#state.Text^of)).\n */\n toJSON() {\n let lines = [];\n this.flatten(lines);\n return lines;\n }\n /**\n @internal\n */\n constructor() { }\n /**\n Create a `Text` instance for the given array of lines.\n */\n static of(text) {\n if (text.length == 0)\n throw new RangeError(\"A document must have at least one line\");\n if (text.length == 1 && !text[0])\n return Text.empty;\n return text.length <= 32 /* Tree.Branch */ ? new TextLeaf(text) : TextNode.from(TextLeaf.split(text, []));\n }\n}\n// Leaves store an array of line strings. There are always line breaks\n// between these strings. Leaves are limited in size and have to be\n// contained in TextNode instances for bigger documents.\nclass TextLeaf extends Text {\n constructor(text, length = textLength(text)) {\n super();\n this.text = text;\n this.length = length;\n }\n get lines() { return this.text.length; }\n get children() { return null; }\n lineInner(target, isLine, line, offset) {\n for (let i = 0;; i++) {\n let string = this.text[i], end = offset + string.length;\n if ((isLine ? line : end) >= target)\n return new Line(offset, end, line, string);\n offset = end + 1;\n line++;\n }\n }\n decompose(from, to, target, open) {\n let text = from <= 0 && to >= this.length ? this\n : new TextLeaf(sliceText(this.text, from, to), Math.min(to, this.length) - Math.max(0, from));\n if (open & 1 /* Open.From */) {\n let prev = target.pop();\n let joined = appendText(text.text, prev.text.slice(), 0, text.length);\n if (joined.length <= 32 /* Tree.Branch */) {\n target.push(new TextLeaf(joined, prev.length + text.length));\n }\n else {\n let mid = joined.length >> 1;\n target.push(new TextLeaf(joined.slice(0, mid)), new TextLeaf(joined.slice(mid)));\n }\n }\n else {\n target.push(text);\n }\n }\n replace(from, to, text) {\n if (!(text instanceof TextLeaf))\n return super.replace(from, to, text);\n [from, to] = clip(this, from, to);\n let lines = appendText(this.text, appendText(text.text, sliceText(this.text, 0, from)), to);\n let newLen = this.length + text.length - (to - from);\n if (lines.length <= 32 /* Tree.Branch */)\n return new TextLeaf(lines, newLen);\n return TextNode.from(TextLeaf.split(lines, []), newLen);\n }\n sliceString(from, to = this.length, lineSep = \"\\n\") {\n [from, to] = clip(this, from, to);\n let result = \"\";\n for (let pos = 0, i = 0; pos <= to && i < this.text.length; i++) {\n let line = this.text[i], end = pos + line.length;\n if (pos > from && i)\n result += lineSep;\n if (from < end && to > pos)\n result += line.slice(Math.max(0, from - pos), to - pos);\n pos = end + 1;\n }\n return result;\n }\n flatten(target) {\n for (let line of this.text)\n target.push(line);\n }\n scanIdentical() { return 0; }\n static split(text, target) {\n let part = [], len = -1;\n for (let line of text) {\n part.push(line);\n len += line.length + 1;\n if (part.length == 32 /* Tree.Branch */) {\n target.push(new TextLeaf(part, len));\n part = [];\n len = -1;\n }\n }\n if (len > -1)\n target.push(new TextLeaf(part, len));\n return target;\n }\n}\n// Nodes provide the tree structure of the `Text` type. They store a\n// number of other nodes or leaves, taking care to balance themselves\n// on changes. There are implied line breaks _between_ the children of\n// a node (but not before the first or after the last child).\nclass TextNode extends Text {\n constructor(children, length) {\n super();\n this.children = children;\n this.length = length;\n this.lines = 0;\n for (let child of children)\n this.lines += child.lines;\n }\n lineInner(target, isLine, line, offset) {\n for (let i = 0;; i++) {\n let child = this.children[i], end = offset + child.length, endLine = line + child.lines - 1;\n if ((isLine ? endLine : end) >= target)\n return child.lineInner(target, isLine, line, offset);\n offset = end + 1;\n line = endLine + 1;\n }\n }\n decompose(from, to, target, open) {\n for (let i = 0, pos = 0; pos <= to && i < this.children.length; i++) {\n let child = this.children[i], end = pos + child.length;\n if (from <= end && to >= pos) {\n let childOpen = open & ((pos <= from ? 1 /* Open.From */ : 0) | (end >= to ? 2 /* Open.To */ : 0));\n if (pos >= from && end <= to && !childOpen)\n target.push(child);\n else\n child.decompose(from - pos, to - pos, target, childOpen);\n }\n pos = end + 1;\n }\n }\n replace(from, to, text) {\n [from, to] = clip(this, from, to);\n if (text.lines < this.lines)\n for (let i = 0, pos = 0; i < this.children.length; i++) {\n let child = this.children[i], end = pos + child.length;\n // Fast path: if the change only affects one child and the\n // child's size remains in the acceptable range, only update\n // that child\n if (from >= pos && to <= end) {\n let updated = child.replace(from - pos, to - pos, text);\n let totalLines = this.lines - child.lines + updated.lines;\n if (updated.lines < (totalLines >> (5 /* Tree.BranchShift */ - 1)) &&\n updated.lines > (totalLines >> (5 /* Tree.BranchShift */ + 1))) {\n let copy = this.children.slice();\n copy[i] = updated;\n return new TextNode(copy, this.length - (to - from) + text.length);\n }\n return super.replace(pos, end, updated);\n }\n pos = end + 1;\n }\n return super.replace(from, to, text);\n }\n sliceString(from, to = this.length, lineSep = \"\\n\") {\n [from, to] = clip(this, from, to);\n let result = \"\";\n for (let i = 0, pos = 0; i < this.children.length && pos <= to; i++) {\n let child = this.children[i], end = pos + child.length;\n if (pos > from && i)\n result += lineSep;\n if (from < end && to > pos)\n result += child.sliceString(from - pos, to - pos, lineSep);\n pos = end + 1;\n }\n return result;\n }\n flatten(target) {\n for (let child of this.children)\n child.flatten(target);\n }\n scanIdentical(other, dir) {\n if (!(other instanceof TextNode))\n return 0;\n let length = 0;\n let [iA, iB, eA, eB] = dir > 0 ? [0, 0, this.children.length, other.children.length]\n : [this.children.length - 1, other.children.length - 1, -1, -1];\n for (;; iA += dir, iB += dir) {\n if (iA == eA || iB == eB)\n return length;\n let chA = this.children[iA], chB = other.children[iB];\n if (chA != chB)\n return length + chA.scanIdentical(chB, dir);\n length += chA.length + 1;\n }\n }\n static from(children, length = children.reduce((l, ch) => l + ch.length + 1, -1)) {\n let lines = 0;\n for (let ch of children)\n lines += ch.lines;\n if (lines < 32 /* Tree.Branch */) {\n let flat = [];\n for (let ch of children)\n ch.flatten(flat);\n return new TextLeaf(flat, length);\n }\n let chunk = Math.max(32 /* Tree.Branch */, lines >> 5 /* Tree.BranchShift */), maxChunk = chunk << 1, minChunk = chunk >> 1;\n let chunked = [], currentLines = 0, currentLen = -1, currentChunk = [];\n function add(child) {\n let last;\n if (child.lines > maxChunk && child instanceof TextNode) {\n for (let node of child.children)\n add(node);\n }\n else if (child.lines > minChunk && (currentLines > minChunk || !currentLines)) {\n flush();\n chunked.push(child);\n }\n else if (child instanceof TextLeaf && currentLines &&\n (last = currentChunk[currentChunk.length - 1]) instanceof TextLeaf &&\n child.lines + last.lines <= 32 /* Tree.Branch */) {\n currentLines += child.lines;\n currentLen += child.length + 1;\n currentChunk[currentChunk.length - 1] = new TextLeaf(last.text.concat(child.text), last.length + 1 + child.length);\n }\n else {\n if (currentLines + child.lines > chunk)\n flush();\n currentLines += child.lines;\n currentLen += child.length + 1;\n currentChunk.push(child);\n }\n }\n function flush() {\n if (currentLines == 0)\n return;\n chunked.push(currentChunk.length == 1 ? currentChunk[0] : TextNode.from(currentChunk, currentLen));\n currentLen = -1;\n currentLines = currentChunk.length = 0;\n }\n for (let child of children)\n add(child);\n flush();\n return chunked.length == 1 ? chunked[0] : new TextNode(chunked, length);\n }\n}\nText.empty = /*@__PURE__*/new TextLeaf([\"\"], 0);\nfunction textLength(text) {\n let length = -1;\n for (let line of text)\n length += line.length + 1;\n return length;\n}\nfunction appendText(text, target, from = 0, to = 1e9) {\n for (let pos = 0, i = 0, first = true; i < text.length && pos <= to; i++) {\n let line = text[i], end = pos + line.length;\n if (end >= from) {\n if (end > to)\n line = line.slice(0, to - pos);\n if (pos < from)\n line = line.slice(from - pos);\n if (first) {\n target[target.length - 1] += line;\n first = false;\n }\n else\n target.push(line);\n }\n pos = end + 1;\n }\n return target;\n}\nfunction sliceText(text, from, to) {\n return appendText(text, [\"\"], from, to);\n}\nclass RawTextCursor {\n constructor(text, dir = 1) {\n this.dir = dir;\n this.done = false;\n this.lineBreak = false;\n this.value = \"\";\n this.nodes = [text];\n this.offsets = [dir > 0 ? 1 : (text instanceof TextLeaf ? text.text.length : text.children.length) << 1];\n }\n nextInner(skip, dir) {\n this.done = this.lineBreak = false;\n for (;;) {\n let last = this.nodes.length - 1;\n let top = this.nodes[last], offsetValue = this.offsets[last], offset = offsetValue >> 1;\n let size = top instanceof TextLeaf ? top.text.length : top.children.length;\n if (offset == (dir > 0 ? size : 0)) {\n if (last == 0) {\n this.done = true;\n this.value = \"\";\n return this;\n }\n if (dir > 0)\n this.offsets[last - 1]++;\n this.nodes.pop();\n this.offsets.pop();\n }\n else if ((offsetValue & 1) == (dir > 0 ? 0 : 1)) {\n this.offsets[last] += dir;\n if (skip == 0) {\n this.lineBreak = true;\n this.value = \"\\n\";\n return this;\n }\n skip--;\n }\n else if (top instanceof TextLeaf) {\n // Move to the next string\n let next = top.text[offset + (dir < 0 ? -1 : 0)];\n this.offsets[last] += dir;\n if (next.length > Math.max(0, skip)) {\n this.value = skip == 0 ? next : dir > 0 ? next.slice(skip) : next.slice(0, next.length - skip);\n return this;\n }\n skip -= next.length;\n }\n else {\n let next = top.children[offset + (dir < 0 ? -1 : 0)];\n if (skip > next.length) {\n skip -= next.length;\n this.offsets[last] += dir;\n }\n else {\n if (dir < 0)\n this.offsets[last]--;\n this.nodes.push(next);\n this.offsets.push(dir > 0 ? 1 : (next instanceof TextLeaf ? next.text.length : next.children.length) << 1);\n }\n }\n }\n }\n next(skip = 0) {\n if (skip < 0) {\n this.nextInner(-skip, (-this.dir));\n skip = this.value.length;\n }\n return this.nextInner(skip, this.dir);\n }\n}\nclass PartialTextCursor {\n constructor(text, start, end) {\n this.value = \"\";\n this.done = false;\n this.cursor = new RawTextCursor(text, start > end ? -1 : 1);\n this.pos = start > end ? text.length : 0;\n this.from = Math.min(start, end);\n this.to = Math.max(start, end);\n }\n nextInner(skip, dir) {\n if (dir < 0 ? this.pos <= this.from : this.pos >= this.to) {\n this.value = \"\";\n this.done = true;\n return this;\n }\n skip += Math.max(0, dir < 0 ? this.pos - this.to : this.from - this.pos);\n let limit = dir < 0 ? this.pos - this.from : this.to - this.pos;\n if (skip > limit)\n skip = limit;\n limit -= skip;\n let { value } = this.cursor.next(skip);\n this.pos += (value.length + skip) * dir;\n this.value = value.length <= limit ? value : dir < 0 ? value.slice(value.length - limit) : value.slice(0, limit);\n this.done = !this.value;\n return this;\n }\n next(skip = 0) {\n if (skip < 0)\n skip = Math.max(skip, this.from - this.pos);\n else if (skip > 0)\n skip = Math.min(skip, this.to - this.pos);\n return this.nextInner(skip, this.cursor.dir);\n }\n get lineBreak() { return this.cursor.lineBreak && this.value != \"\"; }\n}\nclass LineCursor {\n constructor(inner) {\n this.inner = inner;\n this.afterBreak = true;\n this.value = \"\";\n this.done = false;\n }\n next(skip = 0) {\n let { done, lineBreak, value } = this.inner.next(skip);\n if (done && this.afterBreak) {\n this.value = \"\";\n this.afterBreak = false;\n }\n else if (done) {\n this.done = true;\n this.value = \"\";\n }\n else if (lineBreak) {\n if (this.afterBreak) {\n this.value = \"\";\n }\n else {\n this.afterBreak = true;\n this.next();\n }\n }\n else {\n this.value = value;\n this.afterBreak = false;\n }\n return this;\n }\n get lineBreak() { return false; }\n}\nif (typeof Symbol != \"undefined\") {\n Text.prototype[Symbol.iterator] = function () { return this.iter(); };\n RawTextCursor.prototype[Symbol.iterator] = PartialTextCursor.prototype[Symbol.iterator] =\n LineCursor.prototype[Symbol.iterator] = function () { return this; };\n}\n/**\nThis type describes a line in the document. It is created\non-demand when lines are [queried](https://codemirror.net/6/docs/ref/#state.Text.lineAt).\n*/\nclass Line {\n /**\n @internal\n */\n constructor(\n /**\n The position of the start of the line.\n */\n from, \n /**\n The position at the end of the line (_before_ the line break,\n or at the end of document for the last line).\n */\n to, \n /**\n This line's line number (1-based).\n */\n number, \n /**\n The line's content.\n */\n text) {\n this.from = from;\n this.to = to;\n this.number = number;\n this.text = text;\n }\n /**\n The length of the line (not including any line break after it).\n */\n get length() { return this.to - this.from; }\n}\nfunction clip(text, from, to) {\n from = Math.max(0, Math.min(text.length, from));\n return [from, Math.max(from, Math.min(text.length, to))];\n}\n\n/**\nReturns a next grapheme cluster break _after_ (not equal to)\n`pos`, if `forward` is true, or before otherwise. Returns `pos`\nitself if no further cluster break is available in the string.\nMoves across surrogate pairs, extending characters (when\n`includeExtending` is true), characters joined with zero-width\njoiners, and flag emoji.\n*/\nfunction findClusterBreak(str, pos, forward = true, includeExtending = true) {\n return findClusterBreak$1(str, pos, forward, includeExtending);\n}\nfunction surrogateLow(ch) { return ch >= 0xDC00 && ch < 0xE000; }\nfunction surrogateHigh(ch) { return ch >= 0xD800 && ch < 0xDC00; }\n/**\nFind the code point at the given position in a string (like the\n[`codePointAt`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt)\nstring method).\n*/\nfunction codePointAt(str, pos) {\n let code0 = str.charCodeAt(pos);\n if (!surrogateHigh(code0) || pos + 1 == str.length)\n return code0;\n let code1 = str.charCodeAt(pos + 1);\n if (!surrogateLow(code1))\n return code0;\n return ((code0 - 0xd800) << 10) + (code1 - 0xdc00) + 0x10000;\n}\n/**\nGiven a Unicode codepoint, return the JavaScript string that\nrespresents it (like\n[`String.fromCodePoint`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint)).\n*/\nfunction fromCodePoint(code) {\n if (code <= 0xffff)\n return String.fromCharCode(code);\n code -= 0x10000;\n return String.fromCharCode((code >> 10) + 0xd800, (code & 1023) + 0xdc00);\n}\n/**\nThe amount of positions a character takes up in a JavaScript string.\n*/\nfunction codePointSize(code) { return code < 0x10000 ? 1 : 2; }\n\nconst DefaultSplit = /\\r\\n?|\\n/;\n/**\nDistinguishes different ways in which positions can be mapped.\n*/\nvar MapMode = /*@__PURE__*/(function (MapMode) {\n /**\n Map a position to a valid new position, even when its context\n was deleted.\n */\n MapMode[MapMode[\"Simple\"] = 0] = \"Simple\";\n /**\n Return null if deletion happens across the position.\n */\n MapMode[MapMode[\"TrackDel\"] = 1] = \"TrackDel\";\n /**\n Return null if the character _before_ the position is deleted.\n */\n MapMode[MapMode[\"TrackBefore\"] = 2] = \"TrackBefore\";\n /**\n Return null if the character _after_ the position is deleted.\n */\n MapMode[MapMode[\"TrackAfter\"] = 3] = \"TrackAfter\";\nreturn MapMode})(MapMode || (MapMode = {}));\n/**\nA change description is a variant of [change set](https://codemirror.net/6/docs/ref/#state.ChangeSet)\nthat doesn't store the inserted text. As such, it can't be\napplied, but is cheaper to store and manipulate.\n*/\nclass ChangeDesc {\n // Sections are encoded as pairs of integers. The first is the\n // length in the current document, and the second is -1 for\n // unaffected sections, and the length of the replacement content\n // otherwise. So an insertion would be (0, n>0), a deletion (n>0,\n // 0), and a replacement two positive numbers.\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n sections) {\n this.sections = sections;\n }\n /**\n The length of the document before the change.\n */\n get length() {\n let result = 0;\n for (let i = 0; i < this.sections.length; i += 2)\n result += this.sections[i];\n return result;\n }\n /**\n The length of the document after the change.\n */\n get newLength() {\n let result = 0;\n for (let i = 0; i < this.sections.length; i += 2) {\n let ins = this.sections[i + 1];\n result += ins < 0 ? this.sections[i] : ins;\n }\n return result;\n }\n /**\n False when there are actual changes in this set.\n */\n get empty() { return this.sections.length == 0 || this.sections.length == 2 && this.sections[1] < 0; }\n /**\n Iterate over the unchanged parts left by these changes. `posA`\n provides the position of the range in the old document, `posB`\n the new position in the changed document.\n */\n iterGaps(f) {\n for (let i = 0, posA = 0, posB = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++];\n if (ins < 0) {\n f(posA, posB, len);\n posB += len;\n }\n else {\n posB += ins;\n }\n posA += len;\n }\n }\n /**\n Iterate over the ranges changed by these changes. (See\n [`ChangeSet.iterChanges`](https://codemirror.net/6/docs/ref/#state.ChangeSet.iterChanges) for a\n variant that also provides you with the inserted text.)\n `fromA`/`toA` provides the extent of the change in the starting\n document, `fromB`/`toB` the extent of the replacement in the\n changed document.\n \n When `individual` is true, adjacent changes (which are kept\n separate for [position mapping](https://codemirror.net/6/docs/ref/#state.ChangeDesc.mapPos)) are\n reported separately.\n */\n iterChangedRanges(f, individual = false) {\n iterChanges(this, f, individual);\n }\n /**\n Get a description of the inverted form of these changes.\n */\n get invertedDesc() {\n let sections = [];\n for (let i = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++];\n if (ins < 0)\n sections.push(len, ins);\n else\n sections.push(ins, len);\n }\n return new ChangeDesc(sections);\n }\n /**\n Compute the combined effect of applying another set of changes\n after this one. The length of the document after this set should\n match the length before `other`.\n */\n composeDesc(other) { return this.empty ? other : other.empty ? this : composeSets(this, other); }\n /**\n Map this description, which should start with the same document\n as `other`, over another set of changes, so that it can be\n applied after it. When `before` is true, map as if the changes\n in `this` happened before the ones in `other`.\n */\n mapDesc(other, before = false) { return other.empty ? this : mapSet(this, other, before); }\n mapPos(pos, assoc = -1, mode = MapMode.Simple) {\n let posA = 0, posB = 0;\n for (let i = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++], endA = posA + len;\n if (ins < 0) {\n if (endA > pos)\n return posB + (pos - posA);\n posB += len;\n }\n else {\n if (mode != MapMode.Simple && endA >= pos &&\n (mode == MapMode.TrackDel && posA < pos && endA > pos ||\n mode == MapMode.TrackBefore && posA < pos ||\n mode == MapMode.TrackAfter && endA > pos))\n return null;\n if (endA > pos || endA == pos && assoc < 0 && !len)\n return pos == posA || assoc < 0 ? posB : posB + ins;\n posB += ins;\n }\n posA = endA;\n }\n if (pos > posA)\n throw new RangeError(`Position ${pos} is out of range for changeset of length ${posA}`);\n return posB;\n }\n /**\n Check whether these changes touch a given range. When one of the\n changes entirely covers the range, the string `\"cover\"` is\n returned.\n */\n touchesRange(from, to = from) {\n for (let i = 0, pos = 0; i < this.sections.length && pos <= to;) {\n let len = this.sections[i++], ins = this.sections[i++], end = pos + len;\n if (ins >= 0 && pos <= to && end >= from)\n return pos < from && end > to ? \"cover\" : true;\n pos = end;\n }\n return false;\n }\n /**\n @internal\n */\n toString() {\n let result = \"\";\n for (let i = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++];\n result += (result ? \" \" : \"\") + len + (ins >= 0 ? \":\" + ins : \"\");\n }\n return result;\n }\n /**\n Serialize this change desc to a JSON-representable value.\n */\n toJSON() { return this.sections; }\n /**\n Create a change desc from its JSON representation (as produced\n by [`toJSON`](https://codemirror.net/6/docs/ref/#state.ChangeDesc.toJSON).\n */\n static fromJSON(json) {\n if (!Array.isArray(json) || json.length % 2 || json.some(a => typeof a != \"number\"))\n throw new RangeError(\"Invalid JSON representation of ChangeDesc\");\n return new ChangeDesc(json);\n }\n /**\n @internal\n */\n static create(sections) { return new ChangeDesc(sections); }\n}\n/**\nA change set represents a group of modifications to a document. It\nstores the document length, and can only be applied to documents\nwith exactly that length.\n*/\nclass ChangeSet extends ChangeDesc {\n constructor(sections, \n /**\n @internal\n */\n inserted) {\n super(sections);\n this.inserted = inserted;\n }\n /**\n Apply the changes to a document, returning the modified\n document.\n */\n apply(doc) {\n if (this.length != doc.length)\n throw new RangeError(\"Applying change set to a document with the wrong length\");\n iterChanges(this, (fromA, toA, fromB, _toB, text) => doc = doc.replace(fromB, fromB + (toA - fromA), text), false);\n return doc;\n }\n mapDesc(other, before = false) { return mapSet(this, other, before, true); }\n /**\n Given the document as it existed _before_ the changes, return a\n change set that represents the inverse of this set, which could\n be used to go from the document created by the changes back to\n the document as it existed before the changes.\n */\n invert(doc) {\n let sections = this.sections.slice(), inserted = [];\n for (let i = 0, pos = 0; i < sections.length; i += 2) {\n let len = sections[i], ins = sections[i + 1];\n if (ins >= 0) {\n sections[i] = ins;\n sections[i + 1] = len;\n let index = i >> 1;\n while (inserted.length < index)\n inserted.push(Text.empty);\n inserted.push(len ? doc.slice(pos, pos + len) : Text.empty);\n }\n pos += len;\n }\n return new ChangeSet(sections, inserted);\n }\n /**\n Combine two subsequent change sets into a single set. `other`\n must start in the document produced by `this`. If `this` goes\n `docA` → `docB` and `other` represents `docB` → `docC`, the\n returned value will represent the change `docA` → `docC`.\n */\n compose(other) { return this.empty ? other : other.empty ? this : composeSets(this, other, true); }\n /**\n Given another change set starting in the same document, maps this\n change set over the other, producing a new change set that can be\n applied to the document produced by applying `other`. When\n `before` is `true`, order changes as if `this` comes before\n `other`, otherwise (the default) treat `other` as coming first.\n \n Given two changes `A` and `B`, `A.compose(B.map(A))` and\n `B.compose(A.map(B, true))` will produce the same document. This\n provides a basic form of [operational\n transformation](https://en.wikipedia.org/wiki/Operational_transformation),\n and can be used for collaborative editing.\n */\n map(other, before = false) { return other.empty ? this : mapSet(this, other, before, true); }\n /**\n Iterate over the changed ranges in the document, calling `f` for\n each, with the range in the original document (`fromA`-`toA`)\n and the range that replaces it in the new document\n (`fromB`-`toB`).\n \n When `individual` is true, adjacent changes are reported\n separately.\n */\n iterChanges(f, individual = false) {\n iterChanges(this, f, individual);\n }\n /**\n Get a [change description](https://codemirror.net/6/docs/ref/#state.ChangeDesc) for this change\n set.\n */\n get desc() { return ChangeDesc.create(this.sections); }\n /**\n @internal\n */\n filter(ranges) {\n let resultSections = [], resultInserted = [], filteredSections = [];\n let iter = new SectionIter(this);\n done: for (let i = 0, pos = 0;;) {\n let next = i == ranges.length ? 1e9 : ranges[i++];\n while (pos < next || pos == next && iter.len == 0) {\n if (iter.done)\n break done;\n let len = Math.min(iter.len, next - pos);\n addSection(filteredSections, len, -1);\n let ins = iter.ins == -1 ? -1 : iter.off == 0 ? iter.ins : 0;\n addSection(resultSections, len, ins);\n if (ins > 0)\n addInsert(resultInserted, resultSections, iter.text);\n iter.forward(len);\n pos += len;\n }\n let end = ranges[i++];\n while (pos < end) {\n if (iter.done)\n break done;\n let len = Math.min(iter.len, end - pos);\n addSection(resultSections, len, -1);\n addSection(filteredSections, len, iter.ins == -1 ? -1 : iter.off == 0 ? iter.ins : 0);\n iter.forward(len);\n pos += len;\n }\n }\n return { changes: new ChangeSet(resultSections, resultInserted),\n filtered: ChangeDesc.create(filteredSections) };\n }\n /**\n Serialize this change set to a JSON-representable value.\n */\n toJSON() {\n let parts = [];\n for (let i = 0; i < this.sections.length; i += 2) {\n let len = this.sections[i], ins = this.sections[i + 1];\n if (ins < 0)\n parts.push(len);\n else if (ins == 0)\n parts.push([len]);\n else\n parts.push([len].concat(this.inserted[i >> 1].toJSON()));\n }\n return parts;\n }\n /**\n Create a change set for the given changes, for a document of the\n given length, using `lineSep` as line separator.\n */\n static of(changes, length, lineSep) {\n let sections = [], inserted = [], pos = 0;\n let total = null;\n function flush(force = false) {\n if (!force && !sections.length)\n return;\n if (pos < length)\n addSection(sections, length - pos, -1);\n let set = new ChangeSet(sections, inserted);\n total = total ? total.compose(set.map(total)) : set;\n sections = [];\n inserted = [];\n pos = 0;\n }\n function process(spec) {\n if (Array.isArray(spec)) {\n for (let sub of spec)\n process(sub);\n }\n else if (spec instanceof ChangeSet) {\n if (spec.length != length)\n throw new RangeError(`Mismatched change set length (got ${spec.length}, expected ${length})`);\n flush();\n total = total ? total.compose(spec.map(total)) : spec;\n }\n else {\n let { from, to = from, insert } = spec;\n if (from > to || from < 0 || to > length)\n throw new RangeError(`Invalid change range ${from} to ${to} (in doc of length ${length})`);\n let insText = !insert ? Text.empty : typeof insert == \"string\" ? Text.of(insert.split(lineSep || DefaultSplit)) : insert;\n let insLen = insText.length;\n if (from == to && insLen == 0)\n return;\n if (from < pos)\n flush();\n if (from > pos)\n addSection(sections, from - pos, -1);\n addSection(sections, to - from, insLen);\n addInsert(inserted, sections, insText);\n pos = to;\n }\n }\n process(changes);\n flush(!total);\n return total;\n }\n /**\n Create an empty changeset of the given length.\n */\n static empty(length) {\n return new ChangeSet(length ? [length, -1] : [], []);\n }\n /**\n Create a changeset from its JSON representation (as produced by\n [`toJSON`](https://codemirror.net/6/docs/ref/#state.ChangeSet.toJSON).\n */\n static fromJSON(json) {\n if (!Array.isArray(json))\n throw new RangeError(\"Invalid JSON representation of ChangeSet\");\n let sections = [], inserted = [];\n for (let i = 0; i < json.length; i++) {\n let part = json[i];\n if (typeof part == \"number\") {\n sections.push(part, -1);\n }\n else if (!Array.isArray(part) || typeof part[0] != \"number\" || part.some((e, i) => i && typeof e != \"string\")) {\n throw new RangeError(\"Invalid JSON representation of ChangeSet\");\n }\n else if (part.length == 1) {\n sections.push(part[0], 0);\n }\n else {\n while (inserted.length < i)\n inserted.push(Text.empty);\n inserted[i] = Text.of(part.slice(1));\n sections.push(part[0], inserted[i].length);\n }\n }\n return new ChangeSet(sections, inserted);\n }\n /**\n @internal\n */\n static createSet(sections, inserted) {\n return new ChangeSet(sections, inserted);\n }\n}\nfunction addSection(sections, len, ins, forceJoin = false) {\n if (len == 0 && ins <= 0)\n return;\n let last = sections.length - 2;\n if (last >= 0 && ins <= 0 && ins == sections[last + 1])\n sections[last] += len;\n else if (last >= 0 && len == 0 && sections[last] == 0)\n sections[last + 1] += ins;\n else if (forceJoin) {\n sections[last] += len;\n sections[last + 1] += ins;\n }\n else\n sections.push(len, ins);\n}\nfunction addInsert(values, sections, value) {\n if (value.length == 0)\n return;\n let index = (sections.length - 2) >> 1;\n if (index < values.length) {\n values[values.length - 1] = values[values.length - 1].append(value);\n }\n else {\n while (values.length < index)\n values.push(Text.empty);\n values.push(value);\n }\n}\nfunction iterChanges(desc, f, individual) {\n let inserted = desc.inserted;\n for (let posA = 0, posB = 0, i = 0; i < desc.sections.length;) {\n let len = desc.sections[i++], ins = desc.sections[i++];\n if (ins < 0) {\n posA += len;\n posB += len;\n }\n else {\n let endA = posA, endB = posB, text = Text.empty;\n for (;;) {\n endA += len;\n endB += ins;\n if (ins && inserted)\n text = text.append(inserted[(i - 2) >> 1]);\n if (individual || i == desc.sections.length || desc.sections[i + 1] < 0)\n break;\n len = desc.sections[i++];\n ins = desc.sections[i++];\n }\n f(posA, endA, posB, endB, text);\n posA = endA;\n posB = endB;\n }\n }\n}\nfunction mapSet(setA, setB, before, mkSet = false) {\n // Produce a copy of setA that applies to the document after setB\n // has been applied (assuming both start at the same document).\n let sections = [], insert = mkSet ? [] : null;\n let a = new SectionIter(setA), b = new SectionIter(setB);\n // Iterate over both sets in parallel. inserted tracks, for changes\n // in A that have to be processed piece-by-piece, whether their\n // content has been inserted already, and refers to the section\n // index.\n for (let inserted = -1;;) {\n if (a.done && b.len || b.done && a.len) {\n throw new Error(\"Mismatched change set lengths\");\n }\n else if (a.ins == -1 && b.ins == -1) {\n // Move across ranges skipped by both sets.\n let len = Math.min(a.len, b.len);\n addSection(sections, len, -1);\n a.forward(len);\n b.forward(len);\n }\n else if (b.ins >= 0 && (a.ins < 0 || inserted == a.i || a.off == 0 && (b.len < a.len || b.len == a.len && !before))) {\n // If there's a change in B that comes before the next change in\n // A (ordered by start pos, then len, then before flag), skip\n // that (and process any changes in A it covers).\n let len = b.len;\n addSection(sections, b.ins, -1);\n while (len) {\n let piece = Math.min(a.len, len);\n if (a.ins >= 0 && inserted < a.i && a.len <= piece) {\n addSection(sections, 0, a.ins);\n if (insert)\n addInsert(insert, sections, a.text);\n inserted = a.i;\n }\n a.forward(piece);\n len -= piece;\n }\n b.next();\n }\n else if (a.ins >= 0) {\n // Process the part of a change in A up to the start of the next\n // non-deletion change in B (if overlapping).\n let len = 0, left = a.len;\n while (left) {\n if (b.ins == -1) {\n let piece = Math.min(left, b.len);\n len += piece;\n left -= piece;\n b.forward(piece);\n }\n else if (b.ins == 0 && b.len < left) {\n left -= b.len;\n b.next();\n }\n else {\n break;\n }\n }\n addSection(sections, len, inserted < a.i ? a.ins : 0);\n if (insert && inserted < a.i)\n addInsert(insert, sections, a.text);\n inserted = a.i;\n a.forward(a.len - left);\n }\n else if (a.done && b.done) {\n return insert ? ChangeSet.createSet(sections, insert) : ChangeDesc.create(sections);\n }\n else {\n throw new Error(\"Mismatched change set lengths\");\n }\n }\n}\nfunction composeSets(setA, setB, mkSet = false) {\n let sections = [];\n let insert = mkSet ? [] : null;\n let a = new SectionIter(setA), b = new SectionIter(setB);\n for (let open = false;;) {\n if (a.done && b.done) {\n return insert ? ChangeSet.createSet(sections, insert) : ChangeDesc.create(sections);\n }\n else if (a.ins == 0) { // Deletion in A\n addSection(sections, a.len, 0, open);\n a.next();\n }\n else if (b.len == 0 && !b.done) { // Insertion in B\n addSection(sections, 0, b.ins, open);\n if (insert)\n addInsert(insert, sections, b.text);\n b.next();\n }\n else if (a.done || b.done) {\n throw new Error(\"Mismatched change set lengths\");\n }\n else {\n let len = Math.min(a.len2, b.len), sectionLen = sections.length;\n if (a.ins == -1) {\n let insB = b.ins == -1 ? -1 : b.off ? 0 : b.ins;\n addSection(sections, len, insB, open);\n if (insert && insB)\n addInsert(insert, sections, b.text);\n }\n else if (b.ins == -1) {\n addSection(sections, a.off ? 0 : a.len, len, open);\n if (insert)\n addInsert(insert, sections, a.textBit(len));\n }\n else {\n addSection(sections, a.off ? 0 : a.len, b.off ? 0 : b.ins, open);\n if (insert && !b.off)\n addInsert(insert, sections, b.text);\n }\n open = (a.ins > len || b.ins >= 0 && b.len > len) && (open || sections.length > sectionLen);\n a.forward2(len);\n b.forward(len);\n }\n }\n}\nclass SectionIter {\n constructor(set) {\n this.set = set;\n this.i = 0;\n this.next();\n }\n next() {\n let { sections } = this.set;\n if (this.i < sections.length) {\n this.len = sections[this.i++];\n this.ins = sections[this.i++];\n }\n else {\n this.len = 0;\n this.ins = -2;\n }\n this.off = 0;\n }\n get done() { return this.ins == -2; }\n get len2() { return this.ins < 0 ? this.len : this.ins; }\n get text() {\n let { inserted } = this.set, index = (this.i - 2) >> 1;\n return index >= inserted.length ? Text.empty : inserted[index];\n }\n textBit(len) {\n let { inserted } = this.set, index = (this.i - 2) >> 1;\n return index >= inserted.length && !len ? Text.empty\n : inserted[index].slice(this.off, len == null ? undefined : this.off + len);\n }\n forward(len) {\n if (len == this.len)\n this.next();\n else {\n this.len -= len;\n this.off += len;\n }\n }\n forward2(len) {\n if (this.ins == -1)\n this.forward(len);\n else if (len == this.ins)\n this.next();\n else {\n this.ins -= len;\n this.off += len;\n }\n }\n}\n\n/**\nA single selection range. When\n[`allowMultipleSelections`](https://codemirror.net/6/docs/ref/#state.EditorState^allowMultipleSelections)\nis enabled, a [selection](https://codemirror.net/6/docs/ref/#state.EditorSelection) may hold\nmultiple ranges. By default, selections hold exactly one range.\n*/\nclass SelectionRange {\n constructor(\n /**\n The lower boundary of the range.\n */\n from, \n /**\n The upper boundary of the range.\n */\n to, flags) {\n this.from = from;\n this.to = to;\n this.flags = flags;\n }\n /**\n The anchor of the range—the side that doesn't move when you\n extend it.\n */\n get anchor() { return this.flags & 32 /* RangeFlag.Inverted */ ? this.to : this.from; }\n /**\n The head of the range, which is moved when the range is\n [extended](https://codemirror.net/6/docs/ref/#state.SelectionRange.extend).\n */\n get head() { return this.flags & 32 /* RangeFlag.Inverted */ ? this.from : this.to; }\n /**\n True when `anchor` and `head` are at the same position.\n */\n get empty() { return this.from == this.to; }\n /**\n If this is a cursor that is explicitly associated with the\n character on one of its sides, this returns the side. -1 means\n the character before its position, 1 the character after, and 0\n means no association.\n */\n get assoc() { return this.flags & 8 /* RangeFlag.AssocBefore */ ? -1 : this.flags & 16 /* RangeFlag.AssocAfter */ ? 1 : 0; }\n /**\n The bidirectional text level associated with this cursor, if\n any.\n */\n get bidiLevel() {\n let level = this.flags & 7 /* RangeFlag.BidiLevelMask */;\n return level == 7 ? null : level;\n }\n /**\n The goal column (stored vertical offset) associated with a\n cursor. This is used to preserve the vertical position when\n [moving](https://codemirror.net/6/docs/ref/#view.EditorView.moveVertically) across\n lines of different length.\n */\n get goalColumn() {\n let value = this.flags >> 6 /* RangeFlag.GoalColumnOffset */;\n return value == 16777215 /* RangeFlag.NoGoalColumn */ ? undefined : value;\n }\n /**\n Map this range through a change, producing a valid range in the\n updated document.\n */\n map(change, assoc = -1) {\n let from, to;\n if (this.empty) {\n from = to = change.mapPos(this.from, assoc);\n }\n else {\n from = change.mapPos(this.from, 1);\n to = change.mapPos(this.to, -1);\n }\n return from == this.from && to == this.to ? this : new SelectionRange(from, to, this.flags);\n }\n /**\n Extend this range to cover at least `from` to `to`.\n */\n extend(from, to = from) {\n if (from <= this.anchor && to >= this.anchor)\n return EditorSelection.range(from, to);\n let head = Math.abs(from - this.anchor) > Math.abs(to - this.anchor) ? from : to;\n return EditorSelection.range(this.anchor, head);\n }\n /**\n Compare this range to another range.\n */\n eq(other, includeAssoc = false) {\n return this.anchor == other.anchor && this.head == other.head && this.goalColumn == other.goalColumn &&\n (!includeAssoc || !this.empty || this.assoc == other.assoc);\n }\n /**\n Return a JSON-serializable object representing the range.\n */\n toJSON() { return { anchor: this.anchor, head: this.head }; }\n /**\n Convert a JSON representation of a range to a `SelectionRange`\n instance.\n */\n static fromJSON(json) {\n if (!json || typeof json.anchor != \"number\" || typeof json.head != \"number\")\n throw new RangeError(\"Invalid JSON representation for SelectionRange\");\n return EditorSelection.range(json.anchor, json.head);\n }\n /**\n @internal\n */\n static create(from, to, flags) {\n return new SelectionRange(from, to, flags);\n }\n}\n/**\nAn editor selection holds one or more selection ranges.\n*/\nclass EditorSelection {\n constructor(\n /**\n The ranges in the selection, sorted by position. Ranges cannot\n overlap (but they may touch, if they aren't empty).\n */\n ranges, \n /**\n The index of the _main_ range in the selection (which is\n usually the range that was added last).\n */\n mainIndex) {\n this.ranges = ranges;\n this.mainIndex = mainIndex;\n }\n /**\n Map a selection through a change. Used to adjust the selection\n position for changes.\n */\n map(change, assoc = -1) {\n if (change.empty)\n return this;\n return EditorSelection.create(this.ranges.map(r => r.map(change, assoc)), this.mainIndex);\n }\n /**\n Compare this selection to another selection. By default, ranges\n are compared only by position. When `includeAssoc` is true,\n cursor ranges must also have the same\n [`assoc`](https://codemirror.net/6/docs/ref/#state.SelectionRange.assoc) value.\n */\n eq(other, includeAssoc = false) {\n if (this.ranges.length != other.ranges.length ||\n this.mainIndex != other.mainIndex)\n return false;\n for (let i = 0; i < this.ranges.length; i++)\n if (!this.ranges[i].eq(other.ranges[i], includeAssoc))\n return false;\n return true;\n }\n /**\n Get the primary selection range. Usually, you should make sure\n your code applies to _all_ ranges, by using methods like\n [`changeByRange`](https://codemirror.net/6/docs/ref/#state.EditorState.changeByRange).\n */\n get main() { return this.ranges[this.mainIndex]; }\n /**\n Make sure the selection only has one range. Returns a selection\n holding only the main range from this selection.\n */\n asSingle() {\n return this.ranges.length == 1 ? this : new EditorSelection([this.main], 0);\n }\n /**\n Extend this selection with an extra range.\n */\n addRange(range, main = true) {\n return EditorSelection.create([range].concat(this.ranges), main ? 0 : this.mainIndex + 1);\n }\n /**\n Replace a given range with another range, and then normalize the\n selection to merge and sort ranges if necessary.\n */\n replaceRange(range, which = this.mainIndex) {\n let ranges = this.ranges.slice();\n ranges[which] = range;\n return EditorSelection.create(ranges, this.mainIndex);\n }\n /**\n Convert this selection to an object that can be serialized to\n JSON.\n */\n toJSON() {\n return { ranges: this.ranges.map(r => r.toJSON()), main: this.mainIndex };\n }\n /**\n Create a selection from a JSON representation.\n */\n static fromJSON(json) {\n if (!json || !Array.isArray(json.ranges) || typeof json.main != \"number\" || json.main >= json.ranges.length)\n throw new RangeError(\"Invalid JSON representation for EditorSelection\");\n return new EditorSelection(json.ranges.map((r) => SelectionRange.fromJSON(r)), json.main);\n }\n /**\n Create a selection holding a single range.\n */\n static single(anchor, head = anchor) {\n return new EditorSelection([EditorSelection.range(anchor, head)], 0);\n }\n /**\n Sort and merge the given set of ranges, creating a valid\n selection.\n */\n static create(ranges, mainIndex = 0) {\n if (ranges.length == 0)\n throw new RangeError(\"A selection needs at least one range\");\n for (let pos = 0, i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n if (range.empty ? range.from <= pos : range.from < pos)\n return EditorSelection.normalized(ranges.slice(), mainIndex);\n pos = range.to;\n }\n return new EditorSelection(ranges, mainIndex);\n }\n /**\n Create a cursor selection range at the given position. You can\n safely ignore the optional arguments in most situations.\n */\n static cursor(pos, assoc = 0, bidiLevel, goalColumn) {\n return SelectionRange.create(pos, pos, (assoc == 0 ? 0 : assoc < 0 ? 8 /* RangeFlag.AssocBefore */ : 16 /* RangeFlag.AssocAfter */) |\n (bidiLevel == null ? 7 : Math.min(6, bidiLevel)) |\n ((goalColumn !== null && goalColumn !== void 0 ? goalColumn : 16777215 /* RangeFlag.NoGoalColumn */) << 6 /* RangeFlag.GoalColumnOffset */));\n }\n /**\n Create a selection range.\n */\n static range(anchor, head, goalColumn, bidiLevel) {\n let flags = ((goalColumn !== null && goalColumn !== void 0 ? goalColumn : 16777215 /* RangeFlag.NoGoalColumn */) << 6 /* RangeFlag.GoalColumnOffset */) |\n (bidiLevel == null ? 7 : Math.min(6, bidiLevel));\n return head < anchor ? SelectionRange.create(head, anchor, 32 /* RangeFlag.Inverted */ | 16 /* RangeFlag.AssocAfter */ | flags)\n : SelectionRange.create(anchor, head, (head > anchor ? 8 /* RangeFlag.AssocBefore */ : 0) | flags);\n }\n /**\n @internal\n */\n static normalized(ranges, mainIndex = 0) {\n let main = ranges[mainIndex];\n ranges.sort((a, b) => a.from - b.from);\n mainIndex = ranges.indexOf(main);\n for (let i = 1; i < ranges.length; i++) {\n let range = ranges[i], prev = ranges[i - 1];\n if (range.empty ? range.from <= prev.to : range.from < prev.to) {\n let from = prev.from, to = Math.max(range.to, prev.to);\n if (i <= mainIndex)\n mainIndex--;\n ranges.splice(--i, 2, range.anchor > range.head ? EditorSelection.range(to, from) : EditorSelection.range(from, to));\n }\n }\n return new EditorSelection(ranges, mainIndex);\n }\n}\nfunction checkSelection(selection, docLength) {\n for (let range of selection.ranges)\n if (range.to > docLength)\n throw new RangeError(\"Selection points outside of document\");\n}\n\nlet nextID = 0;\n/**\nA facet is a labeled value that is associated with an editor\nstate. It takes inputs from any number of extensions, and combines\nthose into a single output value.\n\nExamples of uses of facets are the [tab\nsize](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize), [editor\nattributes](https://codemirror.net/6/docs/ref/#view.EditorView^editorAttributes), and [update\nlisteners](https://codemirror.net/6/docs/ref/#view.EditorView^updateListener).\n\nNote that `Facet` instances can be used anywhere where\n[`FacetReader`](https://codemirror.net/6/docs/ref/#state.FacetReader) is expected.\n*/\nclass Facet {\n constructor(\n /**\n @internal\n */\n combine, \n /**\n @internal\n */\n compareInput, \n /**\n @internal\n */\n compare, isStatic, enables) {\n this.combine = combine;\n this.compareInput = compareInput;\n this.compare = compare;\n this.isStatic = isStatic;\n /**\n @internal\n */\n this.id = nextID++;\n this.default = combine([]);\n this.extensions = typeof enables == \"function\" ? enables(this) : enables;\n }\n /**\n Returns a facet reader for this facet, which can be used to\n [read](https://codemirror.net/6/docs/ref/#state.EditorState.facet) it but not to define values for it.\n */\n get reader() { return this; }\n /**\n Define a new facet.\n */\n static define(config = {}) {\n return new Facet(config.combine || ((a) => a), config.compareInput || ((a, b) => a === b), config.compare || (!config.combine ? sameArray : (a, b) => a === b), !!config.static, config.enables);\n }\n /**\n Returns an extension that adds the given value to this facet.\n */\n of(value) {\n return new FacetProvider([], this, 0 /* Provider.Static */, value);\n }\n /**\n Create an extension that computes a value for the facet from a\n state. You must take care to declare the parts of the state that\n this value depends on, since your function is only called again\n for a new state when one of those parts changed.\n \n In cases where your value depends only on a single field, you'll\n want to use the [`from`](https://codemirror.net/6/docs/ref/#state.Facet.from) method instead.\n */\n compute(deps, get) {\n if (this.isStatic)\n throw new Error(\"Can't compute a static facet\");\n return new FacetProvider(deps, this, 1 /* Provider.Single */, get);\n }\n /**\n Create an extension that computes zero or more values for this\n facet from a state.\n */\n computeN(deps, get) {\n if (this.isStatic)\n throw new Error(\"Can't compute a static facet\");\n return new FacetProvider(deps, this, 2 /* Provider.Multi */, get);\n }\n from(field, get) {\n if (!get)\n get = x => x;\n return this.compute([field], state => get(state.field(field)));\n }\n}\nfunction sameArray(a, b) {\n return a == b || a.length == b.length && a.every((e, i) => e === b[i]);\n}\nclass FacetProvider {\n constructor(dependencies, facet, type, value) {\n this.dependencies = dependencies;\n this.facet = facet;\n this.type = type;\n this.value = value;\n this.id = nextID++;\n }\n dynamicSlot(addresses) {\n var _a;\n let getter = this.value;\n let compare = this.facet.compareInput;\n let id = this.id, idx = addresses[id] >> 1, multi = this.type == 2 /* Provider.Multi */;\n let depDoc = false, depSel = false, depAddrs = [];\n for (let dep of this.dependencies) {\n if (dep == \"doc\")\n depDoc = true;\n else if (dep == \"selection\")\n depSel = true;\n else if ((((_a = addresses[dep.id]) !== null && _a !== void 0 ? _a : 1) & 1) == 0)\n depAddrs.push(addresses[dep.id]);\n }\n return {\n create(state) {\n state.values[idx] = getter(state);\n return 1 /* SlotStatus.Changed */;\n },\n update(state, tr) {\n if ((depDoc && tr.docChanged) || (depSel && (tr.docChanged || tr.selection)) || ensureAll(state, depAddrs)) {\n let newVal = getter(state);\n if (multi ? !compareArray(newVal, state.values[idx], compare) : !compare(newVal, state.values[idx])) {\n state.values[idx] = newVal;\n return 1 /* SlotStatus.Changed */;\n }\n }\n return 0;\n },\n reconfigure: (state, oldState) => {\n let newVal, oldAddr = oldState.config.address[id];\n if (oldAddr != null) {\n let oldVal = getAddr(oldState, oldAddr);\n if (this.dependencies.every(dep => {\n return dep instanceof Facet ? oldState.facet(dep) === state.facet(dep) :\n dep instanceof StateField ? oldState.field(dep, false) == state.field(dep, false) : true;\n }) || (multi ? compareArray(newVal = getter(state), oldVal, compare) : compare(newVal = getter(state), oldVal))) {\n state.values[idx] = oldVal;\n return 0;\n }\n }\n else {\n newVal = getter(state);\n }\n state.values[idx] = newVal;\n return 1 /* SlotStatus.Changed */;\n }\n };\n }\n}\nfunction compareArray(a, b, compare) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!compare(a[i], b[i]))\n return false;\n return true;\n}\nfunction ensureAll(state, addrs) {\n let changed = false;\n for (let addr of addrs)\n if (ensureAddr(state, addr) & 1 /* SlotStatus.Changed */)\n changed = true;\n return changed;\n}\nfunction dynamicFacetSlot(addresses, facet, providers) {\n let providerAddrs = providers.map(p => addresses[p.id]);\n let providerTypes = providers.map(p => p.type);\n let dynamic = providerAddrs.filter(p => !(p & 1));\n let idx = addresses[facet.id] >> 1;\n function get(state) {\n let values = [];\n for (let i = 0; i < providerAddrs.length; i++) {\n let value = getAddr(state, providerAddrs[i]);\n if (providerTypes[i] == 2 /* Provider.Multi */)\n for (let val of value)\n values.push(val);\n else\n values.push(value);\n }\n return facet.combine(values);\n }\n return {\n create(state) {\n for (let addr of providerAddrs)\n ensureAddr(state, addr);\n state.values[idx] = get(state);\n return 1 /* SlotStatus.Changed */;\n },\n update(state, tr) {\n if (!ensureAll(state, dynamic))\n return 0;\n let value = get(state);\n if (facet.compare(value, state.values[idx]))\n return 0;\n state.values[idx] = value;\n return 1 /* SlotStatus.Changed */;\n },\n reconfigure(state, oldState) {\n let depChanged = ensureAll(state, providerAddrs);\n let oldProviders = oldState.config.facets[facet.id], oldValue = oldState.facet(facet);\n if (oldProviders && !depChanged && sameArray(providers, oldProviders)) {\n state.values[idx] = oldValue;\n return 0;\n }\n let value = get(state);\n if (facet.compare(value, oldValue)) {\n state.values[idx] = oldValue;\n return 0;\n }\n state.values[idx] = value;\n return 1 /* SlotStatus.Changed */;\n }\n };\n}\nconst initField = /*@__PURE__*/Facet.define({ static: true });\n/**\nFields can store additional information in an editor state, and\nkeep it in sync with the rest of the state.\n*/\nclass StateField {\n constructor(\n /**\n @internal\n */\n id, createF, updateF, compareF, \n /**\n @internal\n */\n spec) {\n this.id = id;\n this.createF = createF;\n this.updateF = updateF;\n this.compareF = compareF;\n this.spec = spec;\n /**\n @internal\n */\n this.provides = undefined;\n }\n /**\n Define a state field.\n */\n static define(config) {\n let field = new StateField(nextID++, config.create, config.update, config.compare || ((a, b) => a === b), config);\n if (config.provide)\n field.provides = config.provide(field);\n return field;\n }\n create(state) {\n let init = state.facet(initField).find(i => i.field == this);\n return ((init === null || init === void 0 ? void 0 : init.create) || this.createF)(state);\n }\n /**\n @internal\n */\n slot(addresses) {\n let idx = addresses[this.id] >> 1;\n return {\n create: (state) => {\n state.values[idx] = this.create(state);\n return 1 /* SlotStatus.Changed */;\n },\n update: (state, tr) => {\n let oldVal = state.values[idx];\n let value = this.updateF(oldVal, tr);\n if (this.compareF(oldVal, value))\n return 0;\n state.values[idx] = value;\n return 1 /* SlotStatus.Changed */;\n },\n reconfigure: (state, oldState) => {\n let init = state.facet(initField), oldInit = oldState.facet(initField), reInit;\n if ((reInit = init.find(i => i.field == this)) && reInit != oldInit.find(i => i.field == this)) {\n state.values[idx] = reInit.create(state);\n return 1 /* SlotStatus.Changed */;\n }\n if (oldState.config.address[this.id] != null) {\n state.values[idx] = oldState.field(this);\n return 0;\n }\n state.values[idx] = this.create(state);\n return 1 /* SlotStatus.Changed */;\n }\n };\n }\n /**\n Returns an extension that enables this field and overrides the\n way it is initialized. Can be useful when you need to provide a\n non-default starting value for the field.\n */\n init(create) {\n return [this, initField.of({ field: this, create })];\n }\n /**\n State field instances can be used as\n [`Extension`](https://codemirror.net/6/docs/ref/#state.Extension) values to enable the field in a\n given state.\n */\n get extension() { return this; }\n}\nconst Prec_ = { lowest: 4, low: 3, default: 2, high: 1, highest: 0 };\nfunction prec(value) {\n return (ext) => new PrecExtension(ext, value);\n}\n/**\nBy default extensions are registered in the order they are found\nin the flattened form of nested array that was provided.\nIndividual extension values can be assigned a precedence to\noverride this. Extensions that do not have a precedence set get\nthe precedence of the nearest parent with a precedence, or\n[`default`](https://codemirror.net/6/docs/ref/#state.Prec.default) if there is no such parent. The\nfinal ordering of extensions is determined by first sorting by\nprecedence and then by order within each precedence.\n*/\nconst Prec = {\n /**\n The highest precedence level, for extensions that should end up\n near the start of the precedence ordering.\n */\n highest: /*@__PURE__*/prec(Prec_.highest),\n /**\n A higher-than-default precedence, for extensions that should\n come before those with default precedence.\n */\n high: /*@__PURE__*/prec(Prec_.high),\n /**\n The default precedence, which is also used for extensions\n without an explicit precedence.\n */\n default: /*@__PURE__*/prec(Prec_.default),\n /**\n A lower-than-default precedence.\n */\n low: /*@__PURE__*/prec(Prec_.low),\n /**\n The lowest precedence level. Meant for things that should end up\n near the end of the extension order.\n */\n lowest: /*@__PURE__*/prec(Prec_.lowest)\n};\nclass PrecExtension {\n constructor(inner, prec) {\n this.inner = inner;\n this.prec = prec;\n }\n}\n/**\nExtension compartments can be used to make a configuration\ndynamic. By [wrapping](https://codemirror.net/6/docs/ref/#state.Compartment.of) part of your\nconfiguration in a compartment, you can later\n[replace](https://codemirror.net/6/docs/ref/#state.Compartment.reconfigure) that part through a\ntransaction.\n*/\nclass Compartment {\n /**\n Create an instance of this compartment to add to your [state\n configuration](https://codemirror.net/6/docs/ref/#state.EditorStateConfig.extensions).\n */\n of(ext) { return new CompartmentInstance(this, ext); }\n /**\n Create an [effect](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects) that\n reconfigures this compartment.\n */\n reconfigure(content) {\n return Compartment.reconfigure.of({ compartment: this, extension: content });\n }\n /**\n Get the current content of the compartment in the state, or\n `undefined` if it isn't present.\n */\n get(state) {\n return state.config.compartments.get(this);\n }\n}\nclass CompartmentInstance {\n constructor(compartment, inner) {\n this.compartment = compartment;\n this.inner = inner;\n }\n}\nclass Configuration {\n constructor(base, compartments, dynamicSlots, address, staticValues, facets) {\n this.base = base;\n this.compartments = compartments;\n this.dynamicSlots = dynamicSlots;\n this.address = address;\n this.staticValues = staticValues;\n this.facets = facets;\n this.statusTemplate = [];\n while (this.statusTemplate.length < dynamicSlots.length)\n this.statusTemplate.push(0 /* SlotStatus.Unresolved */);\n }\n staticFacet(facet) {\n let addr = this.address[facet.id];\n return addr == null ? facet.default : this.staticValues[addr >> 1];\n }\n static resolve(base, compartments, oldState) {\n let fields = [];\n let facets = Object.create(null);\n let newCompartments = new Map();\n for (let ext of flatten(base, compartments, newCompartments)) {\n if (ext instanceof StateField)\n fields.push(ext);\n else\n (facets[ext.facet.id] || (facets[ext.facet.id] = [])).push(ext);\n }\n let address = Object.create(null);\n let staticValues = [];\n let dynamicSlots = [];\n for (let field of fields) {\n address[field.id] = dynamicSlots.length << 1;\n dynamicSlots.push(a => field.slot(a));\n }\n let oldFacets = oldState === null || oldState === void 0 ? void 0 : oldState.config.facets;\n for (let id in facets) {\n let providers = facets[id], facet = providers[0].facet;\n let oldProviders = oldFacets && oldFacets[id] || [];\n if (providers.every(p => p.type == 0 /* Provider.Static */)) {\n address[facet.id] = (staticValues.length << 1) | 1;\n if (sameArray(oldProviders, providers)) {\n staticValues.push(oldState.facet(facet));\n }\n else {\n let value = facet.combine(providers.map(p => p.value));\n staticValues.push(oldState && facet.compare(value, oldState.facet(facet)) ? oldState.facet(facet) : value);\n }\n }\n else {\n for (let p of providers) {\n if (p.type == 0 /* Provider.Static */) {\n address[p.id] = (staticValues.length << 1) | 1;\n staticValues.push(p.value);\n }\n else {\n address[p.id] = dynamicSlots.length << 1;\n dynamicSlots.push(a => p.dynamicSlot(a));\n }\n }\n address[facet.id] = dynamicSlots.length << 1;\n dynamicSlots.push(a => dynamicFacetSlot(a, facet, providers));\n }\n }\n let dynamic = dynamicSlots.map(f => f(address));\n return new Configuration(base, newCompartments, dynamic, address, staticValues, facets);\n }\n}\nfunction flatten(extension, compartments, newCompartments) {\n let result = [[], [], [], [], []];\n let seen = new Map();\n function inner(ext, prec) {\n let known = seen.get(ext);\n if (known != null) {\n if (known <= prec)\n return;\n let found = result[known].indexOf(ext);\n if (found > -1)\n result[known].splice(found, 1);\n if (ext instanceof CompartmentInstance)\n newCompartments.delete(ext.compartment);\n }\n seen.set(ext, prec);\n if (Array.isArray(ext)) {\n for (let e of ext)\n inner(e, prec);\n }\n else if (ext instanceof CompartmentInstance) {\n if (newCompartments.has(ext.compartment))\n throw new RangeError(`Duplicate use of compartment in extensions`);\n let content = compartments.get(ext.compartment) || ext.inner;\n newCompartments.set(ext.compartment, content);\n inner(content, prec);\n }\n else if (ext instanceof PrecExtension) {\n inner(ext.inner, ext.prec);\n }\n else if (ext instanceof StateField) {\n result[prec].push(ext);\n if (ext.provides)\n inner(ext.provides, prec);\n }\n else if (ext instanceof FacetProvider) {\n result[prec].push(ext);\n if (ext.facet.extensions)\n inner(ext.facet.extensions, Prec_.default);\n }\n else {\n let content = ext.extension;\n if (!content)\n throw new Error(`Unrecognized extension value in extension set (${ext}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);\n inner(content, prec);\n }\n }\n inner(extension, Prec_.default);\n return result.reduce((a, b) => a.concat(b));\n}\nfunction ensureAddr(state, addr) {\n if (addr & 1)\n return 2 /* SlotStatus.Computed */;\n let idx = addr >> 1;\n let status = state.status[idx];\n if (status == 4 /* SlotStatus.Computing */)\n throw new Error(\"Cyclic dependency between fields and/or facets\");\n if (status & 2 /* SlotStatus.Computed */)\n return status;\n state.status[idx] = 4 /* SlotStatus.Computing */;\n let changed = state.computeSlot(state, state.config.dynamicSlots[idx]);\n return state.status[idx] = 2 /* SlotStatus.Computed */ | changed;\n}\nfunction getAddr(state, addr) {\n return addr & 1 ? state.config.staticValues[addr >> 1] : state.values[addr >> 1];\n}\n\nconst languageData = /*@__PURE__*/Facet.define();\nconst allowMultipleSelections = /*@__PURE__*/Facet.define({\n combine: values => values.some(v => v),\n static: true\n});\nconst lineSeparator = /*@__PURE__*/Facet.define({\n combine: values => values.length ? values[0] : undefined,\n static: true\n});\nconst changeFilter = /*@__PURE__*/Facet.define();\nconst transactionFilter = /*@__PURE__*/Facet.define();\nconst transactionExtender = /*@__PURE__*/Facet.define();\nconst readOnly = /*@__PURE__*/Facet.define({\n combine: values => values.length ? values[0] : false\n});\n\n/**\nAnnotations are tagged values that are used to add metadata to\ntransactions in an extensible way. They should be used to model\nthings that effect the entire transaction (such as its [time\nstamp](https://codemirror.net/6/docs/ref/#state.Transaction^time) or information about its\n[origin](https://codemirror.net/6/docs/ref/#state.Transaction^userEvent)). For effects that happen\n_alongside_ the other changes made by the transaction, [state\neffects](https://codemirror.net/6/docs/ref/#state.StateEffect) are more appropriate.\n*/\nclass Annotation {\n /**\n @internal\n */\n constructor(\n /**\n The annotation type.\n */\n type, \n /**\n The value of this annotation.\n */\n value) {\n this.type = type;\n this.value = value;\n }\n /**\n Define a new type of annotation.\n */\n static define() { return new AnnotationType(); }\n}\n/**\nMarker that identifies a type of [annotation](https://codemirror.net/6/docs/ref/#state.Annotation).\n*/\nclass AnnotationType {\n /**\n Create an instance of this annotation.\n */\n of(value) { return new Annotation(this, value); }\n}\n/**\nRepresentation of a type of state effect. Defined with\n[`StateEffect.define`](https://codemirror.net/6/docs/ref/#state.StateEffect^define).\n*/\nclass StateEffectType {\n /**\n @internal\n */\n constructor(\n // The `any` types in these function types are there to work\n // around TypeScript issue #37631, where the type guard on\n // `StateEffect.is` mysteriously stops working when these properly\n // have type `Value`.\n /**\n @internal\n */\n map) {\n this.map = map;\n }\n /**\n Create a [state effect](https://codemirror.net/6/docs/ref/#state.StateEffect) instance of this\n type.\n */\n of(value) { return new StateEffect(this, value); }\n}\n/**\nState effects can be used to represent additional effects\nassociated with a [transaction](https://codemirror.net/6/docs/ref/#state.Transaction.effects). They\nare often useful to model changes to custom [state\nfields](https://codemirror.net/6/docs/ref/#state.StateField), when those changes aren't implicit in\ndocument or selection changes.\n*/\nclass StateEffect {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n type, \n /**\n The value of this effect.\n */\n value) {\n this.type = type;\n this.value = value;\n }\n /**\n Map this effect through a position mapping. Will return\n `undefined` when that ends up deleting the effect.\n */\n map(mapping) {\n let mapped = this.type.map(this.value, mapping);\n return mapped === undefined ? undefined : mapped == this.value ? this : new StateEffect(this.type, mapped);\n }\n /**\n Tells you whether this effect object is of a given\n [type](https://codemirror.net/6/docs/ref/#state.StateEffectType).\n */\n is(type) { return this.type == type; }\n /**\n Define a new effect type. The type parameter indicates the type\n of values that his effect holds. It should be a type that\n doesn't include `undefined`, since that is used in\n [mapping](https://codemirror.net/6/docs/ref/#state.StateEffect.map) to indicate that an effect is\n removed.\n */\n static define(spec = {}) {\n return new StateEffectType(spec.map || (v => v));\n }\n /**\n Map an array of effects through a change set.\n */\n static mapEffects(effects, mapping) {\n if (!effects.length)\n return effects;\n let result = [];\n for (let effect of effects) {\n let mapped = effect.map(mapping);\n if (mapped)\n result.push(mapped);\n }\n return result;\n }\n}\n/**\nThis effect can be used to reconfigure the root extensions of\nthe editor. Doing this will discard any extensions\n[appended](https://codemirror.net/6/docs/ref/#state.StateEffect^appendConfig), but does not reset\nthe content of [reconfigured](https://codemirror.net/6/docs/ref/#state.Compartment.reconfigure)\ncompartments.\n*/\nStateEffect.reconfigure = /*@__PURE__*/StateEffect.define();\n/**\nAppend extensions to the top-level configuration of the editor.\n*/\nStateEffect.appendConfig = /*@__PURE__*/StateEffect.define();\n/**\nChanges to the editor state are grouped into transactions.\nTypically, a user action creates a single transaction, which may\ncontain any number of document changes, may change the selection,\nor have other effects. Create a transaction by calling\n[`EditorState.update`](https://codemirror.net/6/docs/ref/#state.EditorState.update), or immediately\ndispatch one by calling\n[`EditorView.dispatch`](https://codemirror.net/6/docs/ref/#view.EditorView.dispatch).\n*/\nclass Transaction {\n constructor(\n /**\n The state from which the transaction starts.\n */\n startState, \n /**\n The document changes made by this transaction.\n */\n changes, \n /**\n The selection set by this transaction, or undefined if it\n doesn't explicitly set a selection.\n */\n selection, \n /**\n The effects added to the transaction.\n */\n effects, \n /**\n @internal\n */\n annotations, \n /**\n Whether the selection should be scrolled into view after this\n transaction is dispatched.\n */\n scrollIntoView) {\n this.startState = startState;\n this.changes = changes;\n this.selection = selection;\n this.effects = effects;\n this.annotations = annotations;\n this.scrollIntoView = scrollIntoView;\n /**\n @internal\n */\n this._doc = null;\n /**\n @internal\n */\n this._state = null;\n if (selection)\n checkSelection(selection, changes.newLength);\n if (!annotations.some((a) => a.type == Transaction.time))\n this.annotations = annotations.concat(Transaction.time.of(Date.now()));\n }\n /**\n @internal\n */\n static create(startState, changes, selection, effects, annotations, scrollIntoView) {\n return new Transaction(startState, changes, selection, effects, annotations, scrollIntoView);\n }\n /**\n The new document produced by the transaction. Contrary to\n [`.state`](https://codemirror.net/6/docs/ref/#state.Transaction.state)`.doc`, accessing this won't\n force the entire new state to be computed right away, so it is\n recommended that [transaction\n filters](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter) use this getter\n when they need to look at the new document.\n */\n get newDoc() {\n return this._doc || (this._doc = this.changes.apply(this.startState.doc));\n }\n /**\n The new selection produced by the transaction. If\n [`this.selection`](https://codemirror.net/6/docs/ref/#state.Transaction.selection) is undefined,\n this will [map](https://codemirror.net/6/docs/ref/#state.EditorSelection.map) the start state's\n current selection through the changes made by the transaction.\n */\n get newSelection() {\n return this.selection || this.startState.selection.map(this.changes);\n }\n /**\n The new state created by the transaction. Computed on demand\n (but retained for subsequent access), so it is recommended not to\n access it in [transaction\n filters](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter) when possible.\n */\n get state() {\n if (!this._state)\n this.startState.applyTransaction(this);\n return this._state;\n }\n /**\n Get the value of the given annotation type, if any.\n */\n annotation(type) {\n for (let ann of this.annotations)\n if (ann.type == type)\n return ann.value;\n return undefined;\n }\n /**\n Indicates whether the transaction changed the document.\n */\n get docChanged() { return !this.changes.empty; }\n /**\n Indicates whether this transaction reconfigures the state\n (through a [configuration compartment](https://codemirror.net/6/docs/ref/#state.Compartment) or\n with a top-level configuration\n [effect](https://codemirror.net/6/docs/ref/#state.StateEffect^reconfigure).\n */\n get reconfigured() { return this.startState.config != this.state.config; }\n /**\n Returns true if the transaction has a [user\n event](https://codemirror.net/6/docs/ref/#state.Transaction^userEvent) annotation that is equal to\n or more specific than `event`. For example, if the transaction\n has `\"select.pointer\"` as user event, `\"select\"` and\n `\"select.pointer\"` will match it.\n */\n isUserEvent(event) {\n let e = this.annotation(Transaction.userEvent);\n return !!(e && (e == event || e.length > event.length && e.slice(0, event.length) == event && e[event.length] == \".\"));\n }\n}\n/**\nAnnotation used to store transaction timestamps. Automatically\nadded to every transaction, holding `Date.now()`.\n*/\nTransaction.time = /*@__PURE__*/Annotation.define();\n/**\nAnnotation used to associate a transaction with a user interface\nevent. Holds a string identifying the event, using a\ndot-separated format to support attaching more specific\ninformation. The events used by the core libraries are:\n\n - `\"input\"` when content is entered\n - `\"input.type\"` for typed input\n - `\"input.type.compose\"` for composition\n - `\"input.paste\"` for pasted input\n - `\"input.drop\"` when adding content with drag-and-drop\n - `\"input.complete\"` when autocompleting\n - `\"delete\"` when the user deletes content\n - `\"delete.selection\"` when deleting the selection\n - `\"delete.forward\"` when deleting forward from the selection\n - `\"delete.backward\"` when deleting backward from the selection\n - `\"delete.cut\"` when cutting to the clipboard\n - `\"move\"` when content is moved\n - `\"move.drop\"` when content is moved within the editor through drag-and-drop\n - `\"select\"` when explicitly changing the selection\n - `\"select.pointer\"` when selecting with a mouse or other pointing device\n - `\"undo\"` and `\"redo\"` for history actions\n\nUse [`isUserEvent`](https://codemirror.net/6/docs/ref/#state.Transaction.isUserEvent) to check\nwhether the annotation matches a given event.\n*/\nTransaction.userEvent = /*@__PURE__*/Annotation.define();\n/**\nAnnotation indicating whether a transaction should be added to\nthe undo history or not.\n*/\nTransaction.addToHistory = /*@__PURE__*/Annotation.define();\n/**\nAnnotation indicating (when present and true) that a transaction\nrepresents a change made by some other actor, not the user. This\nis used, for example, to tag other people's changes in\ncollaborative editing.\n*/\nTransaction.remote = /*@__PURE__*/Annotation.define();\nfunction joinRanges(a, b) {\n let result = [];\n for (let iA = 0, iB = 0;;) {\n let from, to;\n if (iA < a.length && (iB == b.length || b[iB] >= a[iA])) {\n from = a[iA++];\n to = a[iA++];\n }\n else if (iB < b.length) {\n from = b[iB++];\n to = b[iB++];\n }\n else\n return result;\n if (!result.length || result[result.length - 1] < from)\n result.push(from, to);\n else if (result[result.length - 1] < to)\n result[result.length - 1] = to;\n }\n}\nfunction mergeTransaction(a, b, sequential) {\n var _a;\n let mapForA, mapForB, changes;\n if (sequential) {\n mapForA = b.changes;\n mapForB = ChangeSet.empty(b.changes.length);\n changes = a.changes.compose(b.changes);\n }\n else {\n mapForA = b.changes.map(a.changes);\n mapForB = a.changes.mapDesc(b.changes, true);\n changes = a.changes.compose(mapForA);\n }\n return {\n changes,\n selection: b.selection ? b.selection.map(mapForB) : (_a = a.selection) === null || _a === void 0 ? void 0 : _a.map(mapForA),\n effects: StateEffect.mapEffects(a.effects, mapForA).concat(StateEffect.mapEffects(b.effects, mapForB)),\n annotations: a.annotations.length ? a.annotations.concat(b.annotations) : b.annotations,\n scrollIntoView: a.scrollIntoView || b.scrollIntoView\n };\n}\nfunction resolveTransactionInner(state, spec, docSize) {\n let sel = spec.selection, annotations = asArray(spec.annotations);\n if (spec.userEvent)\n annotations = annotations.concat(Transaction.userEvent.of(spec.userEvent));\n return {\n changes: spec.changes instanceof ChangeSet ? spec.changes\n : ChangeSet.of(spec.changes || [], docSize, state.facet(lineSeparator)),\n selection: sel && (sel instanceof EditorSelection ? sel : EditorSelection.single(sel.anchor, sel.head)),\n effects: asArray(spec.effects),\n annotations,\n scrollIntoView: !!spec.scrollIntoView\n };\n}\nfunction resolveTransaction(state, specs, filter) {\n let s = resolveTransactionInner(state, specs.length ? specs[0] : {}, state.doc.length);\n if (specs.length && specs[0].filter === false)\n filter = false;\n for (let i = 1; i < specs.length; i++) {\n if (specs[i].filter === false)\n filter = false;\n let seq = !!specs[i].sequential;\n s = mergeTransaction(s, resolveTransactionInner(state, specs[i], seq ? s.changes.newLength : state.doc.length), seq);\n }\n let tr = Transaction.create(state, s.changes, s.selection, s.effects, s.annotations, s.scrollIntoView);\n return extendTransaction(filter ? filterTransaction(tr) : tr);\n}\n// Finish a transaction by applying filters if necessary.\nfunction filterTransaction(tr) {\n let state = tr.startState;\n // Change filters\n let result = true;\n for (let filter of state.facet(changeFilter)) {\n let value = filter(tr);\n if (value === false) {\n result = false;\n break;\n }\n if (Array.isArray(value))\n result = result === true ? value : joinRanges(result, value);\n }\n if (result !== true) {\n let changes, back;\n if (result === false) {\n back = tr.changes.invertedDesc;\n changes = ChangeSet.empty(state.doc.length);\n }\n else {\n let filtered = tr.changes.filter(result);\n changes = filtered.changes;\n back = filtered.filtered.mapDesc(filtered.changes).invertedDesc;\n }\n tr = Transaction.create(state, changes, tr.selection && tr.selection.map(back), StateEffect.mapEffects(tr.effects, back), tr.annotations, tr.scrollIntoView);\n }\n // Transaction filters\n let filters = state.facet(transactionFilter);\n for (let i = filters.length - 1; i >= 0; i--) {\n let filtered = filters[i](tr);\n if (filtered instanceof Transaction)\n tr = filtered;\n else if (Array.isArray(filtered) && filtered.length == 1 && filtered[0] instanceof Transaction)\n tr = filtered[0];\n else\n tr = resolveTransaction(state, asArray(filtered), false);\n }\n return tr;\n}\nfunction extendTransaction(tr) {\n let state = tr.startState, extenders = state.facet(transactionExtender), spec = tr;\n for (let i = extenders.length - 1; i >= 0; i--) {\n let extension = extenders[i](tr);\n if (extension && Object.keys(extension).length)\n spec = mergeTransaction(spec, resolveTransactionInner(state, extension, tr.changes.newLength), true);\n }\n return spec == tr ? tr : Transaction.create(state, tr.changes, tr.selection, spec.effects, spec.annotations, spec.scrollIntoView);\n}\nconst none = [];\nfunction asArray(value) {\n return value == null ? none : Array.isArray(value) ? value : [value];\n}\n\n/**\nThe categories produced by a [character\ncategorizer](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer). These are used\ndo things like selecting by word.\n*/\nvar CharCategory = /*@__PURE__*/(function (CharCategory) {\n /**\n Word characters.\n */\n CharCategory[CharCategory[\"Word\"] = 0] = \"Word\";\n /**\n Whitespace.\n */\n CharCategory[CharCategory[\"Space\"] = 1] = \"Space\";\n /**\n Anything else.\n */\n CharCategory[CharCategory[\"Other\"] = 2] = \"Other\";\nreturn CharCategory})(CharCategory || (CharCategory = {}));\nconst nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\nlet wordChar;\ntry {\n wordChar = /*@__PURE__*/new RegExp(\"[\\\\p{Alphabetic}\\\\p{Number}_]\", \"u\");\n}\ncatch (_) { }\nfunction hasWordChar(str) {\n if (wordChar)\n return wordChar.test(str);\n for (let i = 0; i < str.length; i++) {\n let ch = str[i];\n if (/\\w/.test(ch) || ch > \"\\x80\" && (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)))\n return true;\n }\n return false;\n}\nfunction makeCategorizer(wordChars) {\n return (char) => {\n if (!/\\S/.test(char))\n return CharCategory.Space;\n if (hasWordChar(char))\n return CharCategory.Word;\n for (let i = 0; i < wordChars.length; i++)\n if (char.indexOf(wordChars[i]) > -1)\n return CharCategory.Word;\n return CharCategory.Other;\n };\n}\n\n/**\nThe editor state class is a persistent (immutable) data structure.\nTo update a state, you [create](https://codemirror.net/6/docs/ref/#state.EditorState.update) a\n[transaction](https://codemirror.net/6/docs/ref/#state.Transaction), which produces a _new_ state\ninstance, without modifying the original object.\n\nAs such, _never_ mutate properties of a state directly. That'll\njust break things.\n*/\nclass EditorState {\n constructor(\n /**\n @internal\n */\n config, \n /**\n The current document.\n */\n doc, \n /**\n The current selection.\n */\n selection, \n /**\n @internal\n */\n values, computeSlot, tr) {\n this.config = config;\n this.doc = doc;\n this.selection = selection;\n this.values = values;\n this.status = config.statusTemplate.slice();\n this.computeSlot = computeSlot;\n // Fill in the computed state immediately, so that further queries\n // for it made during the update return this state\n if (tr)\n tr._state = this;\n for (let i = 0; i < this.config.dynamicSlots.length; i++)\n ensureAddr(this, i << 1);\n this.computeSlot = null;\n }\n field(field, require = true) {\n let addr = this.config.address[field.id];\n if (addr == null) {\n if (require)\n throw new RangeError(\"Field is not present in this state\");\n return undefined;\n }\n ensureAddr(this, addr);\n return getAddr(this, addr);\n }\n /**\n Create a [transaction](https://codemirror.net/6/docs/ref/#state.Transaction) that updates this\n state. Any number of [transaction specs](https://codemirror.net/6/docs/ref/#state.TransactionSpec)\n can be passed. Unless\n [`sequential`](https://codemirror.net/6/docs/ref/#state.TransactionSpec.sequential) is set, the\n [changes](https://codemirror.net/6/docs/ref/#state.TransactionSpec.changes) (if any) of each spec\n are assumed to start in the _current_ document (not the document\n produced by previous specs), and its\n [selection](https://codemirror.net/6/docs/ref/#state.TransactionSpec.selection) and\n [effects](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects) are assumed to refer\n to the document created by its _own_ changes. The resulting\n transaction contains the combined effect of all the different\n specs. For [selection](https://codemirror.net/6/docs/ref/#state.TransactionSpec.selection), later\n specs take precedence over earlier ones.\n */\n update(...specs) {\n return resolveTransaction(this, specs, true);\n }\n /**\n @internal\n */\n applyTransaction(tr) {\n let conf = this.config, { base, compartments } = conf;\n for (let effect of tr.effects) {\n if (effect.is(Compartment.reconfigure)) {\n if (conf) {\n compartments = new Map;\n conf.compartments.forEach((val, key) => compartments.set(key, val));\n conf = null;\n }\n compartments.set(effect.value.compartment, effect.value.extension);\n }\n else if (effect.is(StateEffect.reconfigure)) {\n conf = null;\n base = effect.value;\n }\n else if (effect.is(StateEffect.appendConfig)) {\n conf = null;\n base = asArray(base).concat(effect.value);\n }\n }\n let startValues;\n if (!conf) {\n conf = Configuration.resolve(base, compartments, this);\n let intermediateState = new EditorState(conf, this.doc, this.selection, conf.dynamicSlots.map(() => null), (state, slot) => slot.reconfigure(state, this), null);\n startValues = intermediateState.values;\n }\n else {\n startValues = tr.startState.values.slice();\n }\n let selection = tr.startState.facet(allowMultipleSelections) ? tr.newSelection : tr.newSelection.asSingle();\n new EditorState(conf, tr.newDoc, selection, startValues, (state, slot) => slot.update(state, tr), tr);\n }\n /**\n Create a [transaction spec](https://codemirror.net/6/docs/ref/#state.TransactionSpec) that\n replaces every selection range with the given content.\n */\n replaceSelection(text) {\n if (typeof text == \"string\")\n text = this.toText(text);\n return this.changeByRange(range => ({ changes: { from: range.from, to: range.to, insert: text },\n range: EditorSelection.cursor(range.from + text.length) }));\n }\n /**\n Create a set of changes and a new selection by running the given\n function for each range in the active selection. The function\n can return an optional set of changes (in the coordinate space\n of the start document), plus an updated range (in the coordinate\n space of the document produced by the call's own changes). This\n method will merge all the changes and ranges into a single\n changeset and selection, and return it as a [transaction\n spec](https://codemirror.net/6/docs/ref/#state.TransactionSpec), which can be passed to\n [`update`](https://codemirror.net/6/docs/ref/#state.EditorState.update).\n */\n changeByRange(f) {\n let sel = this.selection;\n let result1 = f(sel.ranges[0]);\n let changes = this.changes(result1.changes), ranges = [result1.range];\n let effects = asArray(result1.effects);\n for (let i = 1; i < sel.ranges.length; i++) {\n let result = f(sel.ranges[i]);\n let newChanges = this.changes(result.changes), newMapped = newChanges.map(changes);\n for (let j = 0; j < i; j++)\n ranges[j] = ranges[j].map(newMapped);\n let mapBy = changes.mapDesc(newChanges, true);\n ranges.push(result.range.map(mapBy));\n changes = changes.compose(newMapped);\n effects = StateEffect.mapEffects(effects, newMapped).concat(StateEffect.mapEffects(asArray(result.effects), mapBy));\n }\n return {\n changes,\n selection: EditorSelection.create(ranges, sel.mainIndex),\n effects\n };\n }\n /**\n Create a [change set](https://codemirror.net/6/docs/ref/#state.ChangeSet) from the given change\n description, taking the state's document length and line\n separator into account.\n */\n changes(spec = []) {\n if (spec instanceof ChangeSet)\n return spec;\n return ChangeSet.of(spec, this.doc.length, this.facet(EditorState.lineSeparator));\n }\n /**\n Using the state's [line\n separator](https://codemirror.net/6/docs/ref/#state.EditorState^lineSeparator), create a\n [`Text`](https://codemirror.net/6/docs/ref/#state.Text) instance from the given string.\n */\n toText(string) {\n return Text.of(string.split(this.facet(EditorState.lineSeparator) || DefaultSplit));\n }\n /**\n Return the given range of the document as a string.\n */\n sliceDoc(from = 0, to = this.doc.length) {\n return this.doc.sliceString(from, to, this.lineBreak);\n }\n /**\n Get the value of a state [facet](https://codemirror.net/6/docs/ref/#state.Facet).\n */\n facet(facet) {\n let addr = this.config.address[facet.id];\n if (addr == null)\n return facet.default;\n ensureAddr(this, addr);\n return getAddr(this, addr);\n }\n /**\n Convert this state to a JSON-serializable object. When custom\n fields should be serialized, you can pass them in as an object\n mapping property names (in the resulting object, which should\n not use `doc` or `selection`) to fields.\n */\n toJSON(fields) {\n let result = {\n doc: this.sliceDoc(),\n selection: this.selection.toJSON()\n };\n if (fields)\n for (let prop in fields) {\n let value = fields[prop];\n if (value instanceof StateField && this.config.address[value.id] != null)\n result[prop] = value.spec.toJSON(this.field(fields[prop]), this);\n }\n return result;\n }\n /**\n Deserialize a state from its JSON representation. When custom\n fields should be deserialized, pass the same object you passed\n to [`toJSON`](https://codemirror.net/6/docs/ref/#state.EditorState.toJSON) when serializing as\n third argument.\n */\n static fromJSON(json, config = {}, fields) {\n if (!json || typeof json.doc != \"string\")\n throw new RangeError(\"Invalid JSON representation for EditorState\");\n let fieldInit = [];\n if (fields)\n for (let prop in fields) {\n if (Object.prototype.hasOwnProperty.call(json, prop)) {\n let field = fields[prop], value = json[prop];\n fieldInit.push(field.init(state => field.spec.fromJSON(value, state)));\n }\n }\n return EditorState.create({\n doc: json.doc,\n selection: EditorSelection.fromJSON(json.selection),\n extensions: config.extensions ? fieldInit.concat([config.extensions]) : fieldInit\n });\n }\n /**\n Create a new state. You'll usually only need this when\n initializing an editor—updated states are created by applying\n transactions.\n */\n static create(config = {}) {\n let configuration = Configuration.resolve(config.extensions || [], new Map);\n let doc = config.doc instanceof Text ? config.doc\n : Text.of((config.doc || \"\").split(configuration.staticFacet(EditorState.lineSeparator) || DefaultSplit));\n let selection = !config.selection ? EditorSelection.single(0)\n : config.selection instanceof EditorSelection ? config.selection\n : EditorSelection.single(config.selection.anchor, config.selection.head);\n checkSelection(selection, doc.length);\n if (!configuration.staticFacet(allowMultipleSelections))\n selection = selection.asSingle();\n return new EditorState(configuration, doc, selection, configuration.dynamicSlots.map(() => null), (state, slot) => slot.create(state), null);\n }\n /**\n The size (in columns) of a tab in the document, determined by\n the [`tabSize`](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize) facet.\n */\n get tabSize() { return this.facet(EditorState.tabSize); }\n /**\n Get the proper [line-break](https://codemirror.net/6/docs/ref/#state.EditorState^lineSeparator)\n string for this state.\n */\n get lineBreak() { return this.facet(EditorState.lineSeparator) || \"\\n\"; }\n /**\n Returns true when the editor is\n [configured](https://codemirror.net/6/docs/ref/#state.EditorState^readOnly) to be read-only.\n */\n get readOnly() { return this.facet(readOnly); }\n /**\n Look up a translation for the given phrase (via the\n [`phrases`](https://codemirror.net/6/docs/ref/#state.EditorState^phrases) facet), or return the\n original string if no translation is found.\n \n If additional arguments are passed, they will be inserted in\n place of markers like `$1` (for the first value) and `$2`, etc.\n A single `$` is equivalent to `$1`, and `$$` will produce a\n literal dollar sign.\n */\n phrase(phrase, ...insert) {\n for (let map of this.facet(EditorState.phrases))\n if (Object.prototype.hasOwnProperty.call(map, phrase)) {\n phrase = map[phrase];\n break;\n }\n if (insert.length)\n phrase = phrase.replace(/\\$(\\$|\\d*)/g, (m, i) => {\n if (i == \"$\")\n return \"$\";\n let n = +(i || 1);\n return !n || n > insert.length ? m : insert[n - 1];\n });\n return phrase;\n }\n /**\n Find the values for a given language data field, provided by the\n the [`languageData`](https://codemirror.net/6/docs/ref/#state.EditorState^languageData) facet.\n \n Examples of language data fields are...\n \n - [`\"commentTokens\"`](https://codemirror.net/6/docs/ref/#commands.CommentTokens) for specifying\n comment syntax.\n - [`\"autocomplete\"`](https://codemirror.net/6/docs/ref/#autocomplete.autocompletion^config.override)\n for providing language-specific completion sources.\n - [`\"wordChars\"`](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer) for adding\n characters that should be considered part of words in this\n language.\n - [`\"closeBrackets\"`](https://codemirror.net/6/docs/ref/#autocomplete.CloseBracketConfig) controls\n bracket closing behavior.\n */\n languageDataAt(name, pos, side = -1) {\n let values = [];\n for (let provider of this.facet(languageData)) {\n for (let result of provider(this, pos, side)) {\n if (Object.prototype.hasOwnProperty.call(result, name))\n values.push(result[name]);\n }\n }\n return values;\n }\n /**\n Return a function that can categorize strings (expected to\n represent a single [grapheme cluster](https://codemirror.net/6/docs/ref/#state.findClusterBreak))\n into one of:\n \n - Word (contains an alphanumeric character or a character\n explicitly listed in the local language's `\"wordChars\"`\n language data, which should be a string)\n - Space (contains only whitespace)\n - Other (anything else)\n */\n charCategorizer(at) {\n let chars = this.languageDataAt(\"wordChars\", at);\n return makeCategorizer(chars.length ? chars[0] : \"\");\n }\n /**\n Find the word at the given position, meaning the range\n containing all [word](https://codemirror.net/6/docs/ref/#state.CharCategory.Word) characters\n around it. If no word characters are adjacent to the position,\n this returns null.\n */\n wordAt(pos) {\n let { text, from, length } = this.doc.lineAt(pos);\n let cat = this.charCategorizer(pos);\n let start = pos - from, end = pos - from;\n while (start > 0) {\n let prev = findClusterBreak(text, start, false);\n if (cat(text.slice(prev, start)) != CharCategory.Word)\n break;\n start = prev;\n }\n while (end < length) {\n let next = findClusterBreak(text, end);\n if (cat(text.slice(end, next)) != CharCategory.Word)\n break;\n end = next;\n }\n return start == end ? null : EditorSelection.range(start + from, end + from);\n }\n}\n/**\nA facet that, when enabled, causes the editor to allow multiple\nranges to be selected. Be careful though, because by default the\neditor relies on the native DOM selection, which cannot handle\nmultiple selections. An extension like\n[`drawSelection`](https://codemirror.net/6/docs/ref/#view.drawSelection) can be used to make\nsecondary selections visible to the user.\n*/\nEditorState.allowMultipleSelections = allowMultipleSelections;\n/**\nConfigures the tab size to use in this state. The first\n(highest-precedence) value of the facet is used. If no value is\ngiven, this defaults to 4.\n*/\nEditorState.tabSize = /*@__PURE__*/Facet.define({\n combine: values => values.length ? values[0] : 4\n});\n/**\nThe line separator to use. By default, any of `\"\\n\"`, `\"\\r\\n\"`\nand `\"\\r\"` is treated as a separator when splitting lines, and\nlines are joined with `\"\\n\"`.\n\nWhen you configure a value here, only that precise separator\nwill be used, allowing you to round-trip documents through the\neditor without normalizing line separators.\n*/\nEditorState.lineSeparator = lineSeparator;\n/**\nThis facet controls the value of the\n[`readOnly`](https://codemirror.net/6/docs/ref/#state.EditorState.readOnly) getter, which is\nconsulted by commands and extensions that implement editing\nfunctionality to determine whether they should apply. It\ndefaults to false, but when its highest-precedence value is\n`true`, such functionality disables itself.\n\nNot to be confused with\n[`EditorView.editable`](https://codemirror.net/6/docs/ref/#view.EditorView^editable), which\ncontrols whether the editor's DOM is set to be editable (and\nthus focusable).\n*/\nEditorState.readOnly = readOnly;\n/**\nRegisters translation phrases. The\n[`phrase`](https://codemirror.net/6/docs/ref/#state.EditorState.phrase) method will look through\nall objects registered with this facet to find translations for\nits argument.\n*/\nEditorState.phrases = /*@__PURE__*/Facet.define({\n compare(a, b) {\n let kA = Object.keys(a), kB = Object.keys(b);\n return kA.length == kB.length && kA.every(k => a[k] == b[k]);\n }\n});\n/**\nA facet used to register [language\ndata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt) providers.\n*/\nEditorState.languageData = languageData;\n/**\nFacet used to register change filters, which are called for each\ntransaction (unless explicitly\n[disabled](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter)), and can suppress\npart of the transaction's changes.\n\nSuch a function can return `true` to indicate that it doesn't\nwant to do anything, `false` to completely stop the changes in\nthe transaction, or a set of ranges in which changes should be\nsuppressed. Such ranges are represented as an array of numbers,\nwith each pair of two numbers indicating the start and end of a\nrange. So for example `[10, 20, 100, 110]` suppresses changes\nbetween 10 and 20, and between 100 and 110.\n*/\nEditorState.changeFilter = changeFilter;\n/**\nFacet used to register a hook that gets a chance to update or\nreplace transaction specs before they are applied. This will\nonly be applied for transactions that don't have\n[`filter`](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter) set to `false`. You\ncan either return a single transaction spec (possibly the input\ntransaction), or an array of specs (which will be combined in\nthe same way as the arguments to\n[`EditorState.update`](https://codemirror.net/6/docs/ref/#state.EditorState.update)).\n\nWhen possible, it is recommended to avoid accessing\n[`Transaction.state`](https://codemirror.net/6/docs/ref/#state.Transaction.state) in a filter,\nsince it will force creation of a state that will then be\ndiscarded again, if the transaction is actually filtered.\n\n(This functionality should be used with care. Indiscriminately\nmodifying transaction is likely to break something or degrade\nthe user experience.)\n*/\nEditorState.transactionFilter = transactionFilter;\n/**\nThis is a more limited form of\n[`transactionFilter`](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter),\nwhich can only add\n[annotations](https://codemirror.net/6/docs/ref/#state.TransactionSpec.annotations) and\n[effects](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects). _But_, this type\nof filter runs even if the transaction has disabled regular\n[filtering](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter), making it suitable\nfor effects that don't need to touch the changes or selection,\nbut do want to process every transaction.\n\nExtenders run _after_ filters, when both are present.\n*/\nEditorState.transactionExtender = transactionExtender;\nCompartment.reconfigure = /*@__PURE__*/StateEffect.define();\n\n/**\nUtility function for combining behaviors to fill in a config\nobject from an array of provided configs. `defaults` should hold\ndefault values for all optional fields in `Config`.\n\nThe function will, by default, error\nwhen a field gets two values that aren't `===`-equal, but you can\nprovide combine functions per field to do something else.\n*/\nfunction combineConfig(configs, defaults, // Should hold only the optional properties of Config, but I haven't managed to express that\ncombine = {}) {\n let result = {};\n for (let config of configs)\n for (let key of Object.keys(config)) {\n let value = config[key], current = result[key];\n if (current === undefined)\n result[key] = value;\n else if (current === value || value === undefined) ; // No conflict\n else if (Object.hasOwnProperty.call(combine, key))\n result[key] = combine[key](current, value);\n else\n throw new Error(\"Config merge conflict for field \" + key);\n }\n for (let key in defaults)\n if (result[key] === undefined)\n result[key] = defaults[key];\n return result;\n}\n\n/**\nEach range is associated with a value, which must inherit from\nthis class.\n*/\nclass RangeValue {\n /**\n Compare this value with another value. Used when comparing\n rangesets. The default implementation compares by identity.\n Unless you are only creating a fixed number of unique instances\n of your value type, it is a good idea to implement this\n properly.\n */\n eq(other) { return this == other; }\n /**\n Create a [range](https://codemirror.net/6/docs/ref/#state.Range) with this value.\n */\n range(from, to = from) { return Range.create(from, to, this); }\n}\nRangeValue.prototype.startSide = RangeValue.prototype.endSide = 0;\nRangeValue.prototype.point = false;\nRangeValue.prototype.mapMode = MapMode.TrackDel;\nfunction cmpVal(a, b) {\n return a == b || a.constructor == b.constructor && a.eq(b);\n}\n/**\nA range associates a value with a range of positions.\n*/\nclass Range {\n constructor(\n /**\n The range's start position.\n */\n from, \n /**\n Its end position.\n */\n to, \n /**\n The value associated with this range.\n */\n value) {\n this.from = from;\n this.to = to;\n this.value = value;\n }\n /**\n @internal\n */\n static create(from, to, value) {\n return new Range(from, to, value);\n }\n}\nfunction cmpRange(a, b) {\n return a.from - b.from || a.value.startSide - b.value.startSide;\n}\nclass Chunk {\n constructor(from, to, value, \n // Chunks are marked with the largest point that occurs\n // in them (or -1 for no points), so that scans that are\n // only interested in points (such as the\n // heightmap-related logic) can skip range-only chunks.\n maxPoint) {\n this.from = from;\n this.to = to;\n this.value = value;\n this.maxPoint = maxPoint;\n }\n get length() { return this.to[this.to.length - 1]; }\n // Find the index of the given position and side. Use the ranges'\n // `from` pos when `end == false`, `to` when `end == true`.\n findIndex(pos, side, end, startAt = 0) {\n let arr = end ? this.to : this.from;\n for (let lo = startAt, hi = arr.length;;) {\n if (lo == hi)\n return lo;\n let mid = (lo + hi) >> 1;\n let diff = arr[mid] - pos || (end ? this.value[mid].endSide : this.value[mid].startSide) - side;\n if (mid == lo)\n return diff >= 0 ? lo : hi;\n if (diff >= 0)\n hi = mid;\n else\n lo = mid + 1;\n }\n }\n between(offset, from, to, f) {\n for (let i = this.findIndex(from, -1000000000 /* C.Far */, true), e = this.findIndex(to, 1000000000 /* C.Far */, false, i); i < e; i++)\n if (f(this.from[i] + offset, this.to[i] + offset, this.value[i]) === false)\n return false;\n }\n map(offset, changes) {\n let value = [], from = [], to = [], newPos = -1, maxPoint = -1;\n for (let i = 0; i < this.value.length; i++) {\n let val = this.value[i], curFrom = this.from[i] + offset, curTo = this.to[i] + offset, newFrom, newTo;\n if (curFrom == curTo) {\n let mapped = changes.mapPos(curFrom, val.startSide, val.mapMode);\n if (mapped == null)\n continue;\n newFrom = newTo = mapped;\n if (val.startSide != val.endSide) {\n newTo = changes.mapPos(curFrom, val.endSide);\n if (newTo < newFrom)\n continue;\n }\n }\n else {\n newFrom = changes.mapPos(curFrom, val.startSide);\n newTo = changes.mapPos(curTo, val.endSide);\n if (newFrom > newTo || newFrom == newTo && val.startSide > 0 && val.endSide <= 0)\n continue;\n }\n if ((newTo - newFrom || val.endSide - val.startSide) < 0)\n continue;\n if (newPos < 0)\n newPos = newFrom;\n if (val.point)\n maxPoint = Math.max(maxPoint, newTo - newFrom);\n value.push(val);\n from.push(newFrom - newPos);\n to.push(newTo - newPos);\n }\n return { mapped: value.length ? new Chunk(from, to, value, maxPoint) : null, pos: newPos };\n }\n}\n/**\nA range set stores a collection of [ranges](https://codemirror.net/6/docs/ref/#state.Range) in a\nway that makes them efficient to [map](https://codemirror.net/6/docs/ref/#state.RangeSet.map) and\n[update](https://codemirror.net/6/docs/ref/#state.RangeSet.update). This is an immutable data\nstructure.\n*/\nclass RangeSet {\n constructor(\n /**\n @internal\n */\n chunkPos, \n /**\n @internal\n */\n chunk, \n /**\n @internal\n */\n nextLayer, \n /**\n @internal\n */\n maxPoint) {\n this.chunkPos = chunkPos;\n this.chunk = chunk;\n this.nextLayer = nextLayer;\n this.maxPoint = maxPoint;\n }\n /**\n @internal\n */\n static create(chunkPos, chunk, nextLayer, maxPoint) {\n return new RangeSet(chunkPos, chunk, nextLayer, maxPoint);\n }\n /**\n @internal\n */\n get length() {\n let last = this.chunk.length - 1;\n return last < 0 ? 0 : Math.max(this.chunkEnd(last), this.nextLayer.length);\n }\n /**\n The number of ranges in the set.\n */\n get size() {\n if (this.isEmpty)\n return 0;\n let size = this.nextLayer.size;\n for (let chunk of this.chunk)\n size += chunk.value.length;\n return size;\n }\n /**\n @internal\n */\n chunkEnd(index) {\n return this.chunkPos[index] + this.chunk[index].length;\n }\n /**\n Update the range set, optionally adding new ranges or filtering\n out existing ones.\n \n (Note: The type parameter is just there as a kludge to work\n around TypeScript variance issues that prevented `RangeSet<X>`\n from being a subtype of `RangeSet<Y>` when `X` is a subtype of\n `Y`.)\n */\n update(updateSpec) {\n let { add = [], sort = false, filterFrom = 0, filterTo = this.length } = updateSpec;\n let filter = updateSpec.filter;\n if (add.length == 0 && !filter)\n return this;\n if (sort)\n add = add.slice().sort(cmpRange);\n if (this.isEmpty)\n return add.length ? RangeSet.of(add) : this;\n let cur = new LayerCursor(this, null, -1).goto(0), i = 0, spill = [];\n let builder = new RangeSetBuilder();\n while (cur.value || i < add.length) {\n if (i < add.length && (cur.from - add[i].from || cur.startSide - add[i].value.startSide) >= 0) {\n let range = add[i++];\n if (!builder.addInner(range.from, range.to, range.value))\n spill.push(range);\n }\n else if (cur.rangeIndex == 1 && cur.chunkIndex < this.chunk.length &&\n (i == add.length || this.chunkEnd(cur.chunkIndex) < add[i].from) &&\n (!filter || filterFrom > this.chunkEnd(cur.chunkIndex) || filterTo < this.chunkPos[cur.chunkIndex]) &&\n builder.addChunk(this.chunkPos[cur.chunkIndex], this.chunk[cur.chunkIndex])) {\n cur.nextChunk();\n }\n else {\n if (!filter || filterFrom > cur.to || filterTo < cur.from || filter(cur.from, cur.to, cur.value)) {\n if (!builder.addInner(cur.from, cur.to, cur.value))\n spill.push(Range.create(cur.from, cur.to, cur.value));\n }\n cur.next();\n }\n }\n return builder.finishInner(this.nextLayer.isEmpty && !spill.length ? RangeSet.empty\n : this.nextLayer.update({ add: spill, filter, filterFrom, filterTo }));\n }\n /**\n Map this range set through a set of changes, return the new set.\n */\n map(changes) {\n if (changes.empty || this.isEmpty)\n return this;\n let chunks = [], chunkPos = [], maxPoint = -1;\n for (let i = 0; i < this.chunk.length; i++) {\n let start = this.chunkPos[i], chunk = this.chunk[i];\n let touch = changes.touchesRange(start, start + chunk.length);\n if (touch === false) {\n maxPoint = Math.max(maxPoint, chunk.maxPoint);\n chunks.push(chunk);\n chunkPos.push(changes.mapPos(start));\n }\n else if (touch === true) {\n let { mapped, pos } = chunk.map(start, changes);\n if (mapped) {\n maxPoint = Math.max(maxPoint, mapped.maxPoint);\n chunks.push(mapped);\n chunkPos.push(pos);\n }\n }\n }\n let next = this.nextLayer.map(changes);\n return chunks.length == 0 ? next : new RangeSet(chunkPos, chunks, next || RangeSet.empty, maxPoint);\n }\n /**\n Iterate over the ranges that touch the region `from` to `to`,\n calling `f` for each. There is no guarantee that the ranges will\n be reported in any specific order. When the callback returns\n `false`, iteration stops.\n */\n between(from, to, f) {\n if (this.isEmpty)\n return;\n for (let i = 0; i < this.chunk.length; i++) {\n let start = this.chunkPos[i], chunk = this.chunk[i];\n if (to >= start && from <= start + chunk.length &&\n chunk.between(start, from - start, to - start, f) === false)\n return;\n }\n this.nextLayer.between(from, to, f);\n }\n /**\n Iterate over the ranges in this set, in order, including all\n ranges that end at or after `from`.\n */\n iter(from = 0) {\n return HeapCursor.from([this]).goto(from);\n }\n /**\n @internal\n */\n get isEmpty() { return this.nextLayer == this; }\n /**\n Iterate over the ranges in a collection of sets, in order,\n starting from `from`.\n */\n static iter(sets, from = 0) {\n return HeapCursor.from(sets).goto(from);\n }\n /**\n Iterate over two groups of sets, calling methods on `comparator`\n to notify it of possible differences.\n */\n static compare(oldSets, newSets, \n /**\n This indicates how the underlying data changed between these\n ranges, and is needed to synchronize the iteration.\n */\n textDiff, comparator, \n /**\n Can be used to ignore all non-point ranges, and points below\n the given size. When -1, all ranges are compared.\n */\n minPointSize = -1) {\n let a = oldSets.filter(set => set.maxPoint > 0 || !set.isEmpty && set.maxPoint >= minPointSize);\n let b = newSets.filter(set => set.maxPoint > 0 || !set.isEmpty && set.maxPoint >= minPointSize);\n let sharedChunks = findSharedChunks(a, b, textDiff);\n let sideA = new SpanCursor(a, sharedChunks, minPointSize);\n let sideB = new SpanCursor(b, sharedChunks, minPointSize);\n textDiff.iterGaps((fromA, fromB, length) => compare(sideA, fromA, sideB, fromB, length, comparator));\n if (textDiff.empty && textDiff.length == 0)\n compare(sideA, 0, sideB, 0, 0, comparator);\n }\n /**\n Compare the contents of two groups of range sets, returning true\n if they are equivalent in the given range.\n */\n static eq(oldSets, newSets, from = 0, to) {\n if (to == null)\n to = 1000000000 /* C.Far */ - 1;\n let a = oldSets.filter(set => !set.isEmpty && newSets.indexOf(set) < 0);\n let b = newSets.filter(set => !set.isEmpty && oldSets.indexOf(set) < 0);\n if (a.length != b.length)\n return false;\n if (!a.length)\n return true;\n let sharedChunks = findSharedChunks(a, b);\n let sideA = new SpanCursor(a, sharedChunks, 0).goto(from), sideB = new SpanCursor(b, sharedChunks, 0).goto(from);\n for (;;) {\n if (sideA.to != sideB.to ||\n !sameValues(sideA.active, sideB.active) ||\n sideA.point && (!sideB.point || !cmpVal(sideA.point, sideB.point)))\n return false;\n if (sideA.to > to)\n return true;\n sideA.next();\n sideB.next();\n }\n }\n /**\n Iterate over a group of range sets at the same time, notifying\n the iterator about the ranges covering every given piece of\n content. Returns the open count (see\n [`SpanIterator.span`](https://codemirror.net/6/docs/ref/#state.SpanIterator.span)) at the end\n of the iteration.\n */\n static spans(sets, from, to, iterator, \n /**\n When given and greater than -1, only points of at least this\n size are taken into account.\n */\n minPointSize = -1) {\n let cursor = new SpanCursor(sets, null, minPointSize).goto(from), pos = from;\n let openRanges = cursor.openStart;\n for (;;) {\n let curTo = Math.min(cursor.to, to);\n if (cursor.point) {\n let active = cursor.activeForPoint(cursor.to);\n let openCount = cursor.pointFrom < from ? active.length + 1\n : cursor.point.startSide < 0 ? active.length\n : Math.min(active.length, openRanges);\n iterator.point(pos, curTo, cursor.point, active, openCount, cursor.pointRank);\n openRanges = Math.min(cursor.openEnd(curTo), active.length);\n }\n else if (curTo > pos) {\n iterator.span(pos, curTo, cursor.active, openRanges);\n openRanges = cursor.openEnd(curTo);\n }\n if (cursor.to > to)\n return openRanges + (cursor.point && cursor.to > to ? 1 : 0);\n pos = cursor.to;\n cursor.next();\n }\n }\n /**\n Create a range set for the given range or array of ranges. By\n default, this expects the ranges to be _sorted_ (by start\n position and, if two start at the same position,\n `value.startSide`). You can pass `true` as second argument to\n cause the method to sort them.\n */\n static of(ranges, sort = false) {\n let build = new RangeSetBuilder();\n for (let range of ranges instanceof Range ? [ranges] : sort ? lazySort(ranges) : ranges)\n build.add(range.from, range.to, range.value);\n return build.finish();\n }\n /**\n Join an array of range sets into a single set.\n */\n static join(sets) {\n if (!sets.length)\n return RangeSet.empty;\n let result = sets[sets.length - 1];\n for (let i = sets.length - 2; i >= 0; i--) {\n for (let layer = sets[i]; layer != RangeSet.empty; layer = layer.nextLayer)\n result = new RangeSet(layer.chunkPos, layer.chunk, result, Math.max(layer.maxPoint, result.maxPoint));\n }\n return result;\n }\n}\n/**\nThe empty set of ranges.\n*/\nRangeSet.empty = /*@__PURE__*/new RangeSet([], [], null, -1);\nfunction lazySort(ranges) {\n if (ranges.length > 1)\n for (let prev = ranges[0], i = 1; i < ranges.length; i++) {\n let cur = ranges[i];\n if (cmpRange(prev, cur) > 0)\n return ranges.slice().sort(cmpRange);\n prev = cur;\n }\n return ranges;\n}\nRangeSet.empty.nextLayer = RangeSet.empty;\n/**\nA range set builder is a data structure that helps build up a\n[range set](https://codemirror.net/6/docs/ref/#state.RangeSet) directly, without first allocating\nan array of [`Range`](https://codemirror.net/6/docs/ref/#state.Range) objects.\n*/\nclass RangeSetBuilder {\n finishChunk(newArrays) {\n this.chunks.push(new Chunk(this.from, this.to, this.value, this.maxPoint));\n this.chunkPos.push(this.chunkStart);\n this.chunkStart = -1;\n this.setMaxPoint = Math.max(this.setMaxPoint, this.maxPoint);\n this.maxPoint = -1;\n if (newArrays) {\n this.from = [];\n this.to = [];\n this.value = [];\n }\n }\n /**\n Create an empty builder.\n */\n constructor() {\n this.chunks = [];\n this.chunkPos = [];\n this.chunkStart = -1;\n this.last = null;\n this.lastFrom = -1000000000 /* C.Far */;\n this.lastTo = -1000000000 /* C.Far */;\n this.from = [];\n this.to = [];\n this.value = [];\n this.maxPoint = -1;\n this.setMaxPoint = -1;\n this.nextLayer = null;\n }\n /**\n Add a range. Ranges should be added in sorted (by `from` and\n `value.startSide`) order.\n */\n add(from, to, value) {\n if (!this.addInner(from, to, value))\n (this.nextLayer || (this.nextLayer = new RangeSetBuilder)).add(from, to, value);\n }\n /**\n @internal\n */\n addInner(from, to, value) {\n let diff = from - this.lastTo || value.startSide - this.last.endSide;\n if (diff <= 0 && (from - this.lastFrom || value.startSide - this.last.startSide) < 0)\n throw new Error(\"Ranges must be added sorted by `from` position and `startSide`\");\n if (diff < 0)\n return false;\n if (this.from.length == 250 /* C.ChunkSize */)\n this.finishChunk(true);\n if (this.chunkStart < 0)\n this.chunkStart = from;\n this.from.push(from - this.chunkStart);\n this.to.push(to - this.chunkStart);\n this.last = value;\n this.lastFrom = from;\n this.lastTo = to;\n this.value.push(value);\n if (value.point)\n this.maxPoint = Math.max(this.maxPoint, to - from);\n return true;\n }\n /**\n @internal\n */\n addChunk(from, chunk) {\n if ((from - this.lastTo || chunk.value[0].startSide - this.last.endSide) < 0)\n return false;\n if (this.from.length)\n this.finishChunk(true);\n this.setMaxPoint = Math.max(this.setMaxPoint, chunk.maxPoint);\n this.chunks.push(chunk);\n this.chunkPos.push(from);\n let last = chunk.value.length - 1;\n this.last = chunk.value[last];\n this.lastFrom = chunk.from[last] + from;\n this.lastTo = chunk.to[last] + from;\n return true;\n }\n /**\n Finish the range set. Returns the new set. The builder can't be\n used anymore after this has been called.\n */\n finish() { return this.finishInner(RangeSet.empty); }\n /**\n @internal\n */\n finishInner(next) {\n if (this.from.length)\n this.finishChunk(false);\n if (this.chunks.length == 0)\n return next;\n let result = RangeSet.create(this.chunkPos, this.chunks, this.nextLayer ? this.nextLayer.finishInner(next) : next, this.setMaxPoint);\n this.from = null; // Make sure further `add` calls produce errors\n return result;\n }\n}\nfunction findSharedChunks(a, b, textDiff) {\n let inA = new Map();\n for (let set of a)\n for (let i = 0; i < set.chunk.length; i++)\n if (set.chunk[i].maxPoint <= 0)\n inA.set(set.chunk[i], set.chunkPos[i]);\n let shared = new Set();\n for (let set of b)\n for (let i = 0; i < set.chunk.length; i++) {\n let known = inA.get(set.chunk[i]);\n if (known != null && (textDiff ? textDiff.mapPos(known) : known) == set.chunkPos[i] &&\n !(textDiff === null || textDiff === void 0 ? void 0 : textDiff.touchesRange(known, known + set.chunk[i].length)))\n shared.add(set.chunk[i]);\n }\n return shared;\n}\nclass LayerCursor {\n constructor(layer, skip, minPoint, rank = 0) {\n this.layer = layer;\n this.skip = skip;\n this.minPoint = minPoint;\n this.rank = rank;\n }\n get startSide() { return this.value ? this.value.startSide : 0; }\n get endSide() { return this.value ? this.value.endSide : 0; }\n goto(pos, side = -1000000000 /* C.Far */) {\n this.chunkIndex = this.rangeIndex = 0;\n this.gotoInner(pos, side, false);\n return this;\n }\n gotoInner(pos, side, forward) {\n while (this.chunkIndex < this.layer.chunk.length) {\n let next = this.layer.chunk[this.chunkIndex];\n if (!(this.skip && this.skip.has(next) ||\n this.layer.chunkEnd(this.chunkIndex) < pos ||\n next.maxPoint < this.minPoint))\n break;\n this.chunkIndex++;\n forward = false;\n }\n if (this.chunkIndex < this.layer.chunk.length) {\n let rangeIndex = this.layer.chunk[this.chunkIndex].findIndex(pos - this.layer.chunkPos[this.chunkIndex], side, true);\n if (!forward || this.rangeIndex < rangeIndex)\n this.setRangeIndex(rangeIndex);\n }\n this.next();\n }\n forward(pos, side) {\n if ((this.to - pos || this.endSide - side) < 0)\n this.gotoInner(pos, side, true);\n }\n next() {\n for (;;) {\n if (this.chunkIndex == this.layer.chunk.length) {\n this.from = this.to = 1000000000 /* C.Far */;\n this.value = null;\n break;\n }\n else {\n let chunkPos = this.layer.chunkPos[this.chunkIndex], chunk = this.layer.chunk[this.chunkIndex];\n let from = chunkPos + chunk.from[this.rangeIndex];\n this.from = from;\n this.to = chunkPos + chunk.to[this.rangeIndex];\n this.value = chunk.value[this.rangeIndex];\n this.setRangeIndex(this.rangeIndex + 1);\n if (this.minPoint < 0 || this.value.point && this.to - this.from >= this.minPoint)\n break;\n }\n }\n }\n setRangeIndex(index) {\n if (index == this.layer.chunk[this.chunkIndex].value.length) {\n this.chunkIndex++;\n if (this.skip) {\n while (this.chunkIndex < this.layer.chunk.length && this.skip.has(this.layer.chunk[this.chunkIndex]))\n this.chunkIndex++;\n }\n this.rangeIndex = 0;\n }\n else {\n this.rangeIndex = index;\n }\n }\n nextChunk() {\n this.chunkIndex++;\n this.rangeIndex = 0;\n this.next();\n }\n compare(other) {\n return this.from - other.from || this.startSide - other.startSide || this.rank - other.rank ||\n this.to - other.to || this.endSide - other.endSide;\n }\n}\nclass HeapCursor {\n constructor(heap) {\n this.heap = heap;\n }\n static from(sets, skip = null, minPoint = -1) {\n let heap = [];\n for (let i = 0; i < sets.length; i++) {\n for (let cur = sets[i]; !cur.isEmpty; cur = cur.nextLayer) {\n if (cur.maxPoint >= minPoint)\n heap.push(new LayerCursor(cur, skip, minPoint, i));\n }\n }\n return heap.length == 1 ? heap[0] : new HeapCursor(heap);\n }\n get startSide() { return this.value ? this.value.startSide : 0; }\n goto(pos, side = -1000000000 /* C.Far */) {\n for (let cur of this.heap)\n cur.goto(pos, side);\n for (let i = this.heap.length >> 1; i >= 0; i--)\n heapBubble(this.heap, i);\n this.next();\n return this;\n }\n forward(pos, side) {\n for (let cur of this.heap)\n cur.forward(pos, side);\n for (let i = this.heap.length >> 1; i >= 0; i--)\n heapBubble(this.heap, i);\n if ((this.to - pos || this.value.endSide - side) < 0)\n this.next();\n }\n next() {\n if (this.heap.length == 0) {\n this.from = this.to = 1000000000 /* C.Far */;\n this.value = null;\n this.rank = -1;\n }\n else {\n let top = this.heap[0];\n this.from = top.from;\n this.to = top.to;\n this.value = top.value;\n this.rank = top.rank;\n if (top.value)\n top.next();\n heapBubble(this.heap, 0);\n }\n }\n}\nfunction heapBubble(heap, index) {\n for (let cur = heap[index];;) {\n let childIndex = (index << 1) + 1;\n if (childIndex >= heap.length)\n break;\n let child = heap[childIndex];\n if (childIndex + 1 < heap.length && child.compare(heap[childIndex + 1]) >= 0) {\n child = heap[childIndex + 1];\n childIndex++;\n }\n if (cur.compare(child) < 0)\n break;\n heap[childIndex] = cur;\n heap[index] = child;\n index = childIndex;\n }\n}\nclass SpanCursor {\n constructor(sets, skip, minPoint) {\n this.minPoint = minPoint;\n this.active = [];\n this.activeTo = [];\n this.activeRank = [];\n this.minActive = -1;\n // A currently active point range, if any\n this.point = null;\n this.pointFrom = 0;\n this.pointRank = 0;\n this.to = -1000000000 /* C.Far */;\n this.endSide = 0;\n // The amount of open active ranges at the start of the iterator.\n // Not including points.\n this.openStart = -1;\n this.cursor = HeapCursor.from(sets, skip, minPoint);\n }\n goto(pos, side = -1000000000 /* C.Far */) {\n this.cursor.goto(pos, side);\n this.active.length = this.activeTo.length = this.activeRank.length = 0;\n this.minActive = -1;\n this.to = pos;\n this.endSide = side;\n this.openStart = -1;\n this.next();\n return this;\n }\n forward(pos, side) {\n while (this.minActive > -1 && (this.activeTo[this.minActive] - pos || this.active[this.minActive].endSide - side) < 0)\n this.removeActive(this.minActive);\n this.cursor.forward(pos, side);\n }\n removeActive(index) {\n remove(this.active, index);\n remove(this.activeTo, index);\n remove(this.activeRank, index);\n this.minActive = findMinIndex(this.active, this.activeTo);\n }\n addActive(trackOpen) {\n let i = 0, { value, to, rank } = this.cursor;\n // Organize active marks by rank first, then by size\n while (i < this.activeRank.length && (rank - this.activeRank[i] || to - this.activeTo[i]) > 0)\n i++;\n insert(this.active, i, value);\n insert(this.activeTo, i, to);\n insert(this.activeRank, i, rank);\n if (trackOpen)\n insert(trackOpen, i, this.cursor.from);\n this.minActive = findMinIndex(this.active, this.activeTo);\n }\n // After calling this, if `this.point` != null, the next range is a\n // point. Otherwise, it's a regular range, covered by `this.active`.\n next() {\n let from = this.to, wasPoint = this.point;\n this.point = null;\n let trackOpen = this.openStart < 0 ? [] : null;\n for (;;) {\n let a = this.minActive;\n if (a > -1 && (this.activeTo[a] - this.cursor.from || this.active[a].endSide - this.cursor.startSide) < 0) {\n if (this.activeTo[a] > from) {\n this.to = this.activeTo[a];\n this.endSide = this.active[a].endSide;\n break;\n }\n this.removeActive(a);\n if (trackOpen)\n remove(trackOpen, a);\n }\n else if (!this.cursor.value) {\n this.to = this.endSide = 1000000000 /* C.Far */;\n break;\n }\n else if (this.cursor.from > from) {\n this.to = this.cursor.from;\n this.endSide = this.cursor.startSide;\n break;\n }\n else {\n let nextVal = this.cursor.value;\n if (!nextVal.point) { // Opening a range\n this.addActive(trackOpen);\n this.cursor.next();\n }\n else if (wasPoint && this.cursor.to == this.to && this.cursor.from < this.cursor.to) {\n // Ignore any non-empty points that end precisely at the end of the prev point\n this.cursor.next();\n }\n else { // New point\n this.point = nextVal;\n this.pointFrom = this.cursor.from;\n this.pointRank = this.cursor.rank;\n this.to = this.cursor.to;\n this.endSide = nextVal.endSide;\n this.cursor.next();\n this.forward(this.to, this.endSide);\n break;\n }\n }\n }\n if (trackOpen) {\n this.openStart = 0;\n for (let i = trackOpen.length - 1; i >= 0 && trackOpen[i] < from; i--)\n this.openStart++;\n }\n }\n activeForPoint(to) {\n if (!this.active.length)\n return this.active;\n let active = [];\n for (let i = this.active.length - 1; i >= 0; i--) {\n if (this.activeRank[i] < this.pointRank)\n break;\n if (this.activeTo[i] > to || this.activeTo[i] == to && this.active[i].endSide >= this.point.endSide)\n active.push(this.active[i]);\n }\n return active.reverse();\n }\n openEnd(to) {\n let open = 0;\n for (let i = this.activeTo.length - 1; i >= 0 && this.activeTo[i] > to; i--)\n open++;\n return open;\n }\n}\nfunction compare(a, startA, b, startB, length, comparator) {\n a.goto(startA);\n b.goto(startB);\n let endB = startB + length;\n let pos = startB, dPos = startB - startA;\n let bounds = !!comparator.boundChange;\n for (let boundChange = false;;) {\n let dEnd = (a.to + dPos) - b.to, diff = dEnd || a.endSide - b.endSide;\n let end = diff < 0 ? a.to + dPos : b.to, clipEnd = Math.min(end, endB);\n let point = a.point || b.point;\n if (point) {\n if (!(a.point && b.point && cmpVal(a.point, b.point) &&\n sameValues(a.activeForPoint(a.to), b.activeForPoint(b.to))))\n comparator.comparePoint(pos, clipEnd, a.point, b.point);\n boundChange = false;\n }\n else {\n if (boundChange)\n comparator.boundChange(pos);\n if (clipEnd > pos && !sameValues(a.active, b.active))\n comparator.compareRange(pos, clipEnd, a.active, b.active);\n if (bounds && clipEnd < endB && (dEnd || a.openEnd(end) != b.openEnd(end)))\n boundChange = true;\n }\n if (end > endB)\n break;\n pos = end;\n if (diff <= 0)\n a.next();\n if (diff >= 0)\n b.next();\n }\n}\nfunction sameValues(a, b) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (a[i] != b[i] && !cmpVal(a[i], b[i]))\n return false;\n return true;\n}\nfunction remove(array, index) {\n for (let i = index, e = array.length - 1; i < e; i++)\n array[i] = array[i + 1];\n array.pop();\n}\nfunction insert(array, index, value) {\n for (let i = array.length - 1; i >= index; i--)\n array[i + 1] = array[i];\n array[index] = value;\n}\nfunction findMinIndex(value, array) {\n let found = -1, foundPos = 1000000000 /* C.Far */;\n for (let i = 0; i < array.length; i++)\n if ((array[i] - foundPos || value[i].endSide - value[found].endSide) < 0) {\n found = i;\n foundPos = array[i];\n }\n return found;\n}\n\n/**\nCount the column position at the given offset into the string,\ntaking extending characters and tab size into account.\n*/\nfunction countColumn(string, tabSize, to = string.length) {\n let n = 0;\n for (let i = 0; i < to && i < string.length;) {\n if (string.charCodeAt(i) == 9) {\n n += tabSize - (n % tabSize);\n i++;\n }\n else {\n n++;\n i = findClusterBreak(string, i);\n }\n }\n return n;\n}\n/**\nFind the offset that corresponds to the given column position in a\nstring, taking extending characters and tab size into account. By\ndefault, the string length is returned when it is too short to\nreach the column. Pass `strict` true to make it return -1 in that\nsituation.\n*/\nfunction findColumn(string, col, tabSize, strict) {\n for (let i = 0, n = 0;;) {\n if (n >= col)\n return i;\n if (i == string.length)\n break;\n n += string.charCodeAt(i) == 9 ? tabSize - (n % tabSize) : 1;\n i = findClusterBreak(string, i);\n }\n return strict === true ? -1 : string.length;\n}\n\nexport { Annotation, AnnotationType, ChangeDesc, ChangeSet, CharCategory, Compartment, EditorSelection, EditorState, Facet, Line, MapMode, Prec, Range, RangeSet, RangeSetBuilder, RangeValue, SelectionRange, StateEffect, StateEffectType, StateField, Text, Transaction, codePointAt, codePointSize, combineConfig, countColumn, findClusterBreak, findColumn, fromCodePoint };\n","const C = \"\\u037c\"\nconst COUNT = typeof Symbol == \"undefined\" ? \"__\" + C : Symbol.for(C)\nconst SET = typeof Symbol == \"undefined\" ? \"__styleSet\" + Math.floor(Math.random() * 1e8) : Symbol(\"styleSet\")\nconst top = typeof globalThis != \"undefined\" ? globalThis : typeof window != \"undefined\" ? window : {}\n\n// :: - Style modules encapsulate a set of CSS rules defined from\n// JavaScript. Their definitions are only available in a given DOM\n// root after it has been _mounted_ there with `StyleModule.mount`.\n//\n// Style modules should be created once and stored somewhere, as\n// opposed to re-creating them every time you need them. The amount of\n// CSS rules generated for a given DOM root is bounded by the amount\n// of style modules that were used. So to avoid leaking rules, don't\n// create these dynamically, but treat them as one-time allocations.\nexport class StyleModule {\n // :: (Object<Style>, ?{finish: ?(string) → string})\n // Create a style module from the given spec.\n //\n // When `finish` is given, it is called on regular (non-`@`)\n // selectors (after `&` expansion) to compute the final selector.\n constructor(spec, options) {\n this.rules = []\n let {finish} = options || {}\n\n function splitSelector(selector) {\n return /^@/.test(selector) ? [selector] : selector.split(/,\\s*/)\n }\n\n function render(selectors, spec, target, isKeyframes) {\n let local = [], isAt = /^@(\\w+)\\b/.exec(selectors[0]), keyframes = isAt && isAt[1] == \"keyframes\"\n if (isAt && spec == null) return target.push(selectors[0] + \";\")\n for (let prop in spec) {\n let value = spec[prop]\n if (/&/.test(prop)) {\n render(prop.split(/,\\s*/).map(part => selectors.map(sel => part.replace(/&/, sel))).reduce((a, b) => a.concat(b)),\n value, target)\n } else if (value && typeof value == \"object\") {\n if (!isAt) throw new RangeError(\"The value of a property (\" + prop + \") should be a primitive value.\")\n render(splitSelector(prop), value, local, keyframes)\n } else if (value != null) {\n local.push(prop.replace(/_.*/, \"\").replace(/[A-Z]/g, l => \"-\" + l.toLowerCase()) + \": \" + value + \";\")\n }\n }\n if (local.length || keyframes) {\n target.push((finish && !isAt && !isKeyframes ? selectors.map(finish) : selectors).join(\", \") +\n \" {\" + local.join(\" \") + \"}\")\n }\n }\n\n for (let prop in spec) render(splitSelector(prop), spec[prop], this.rules)\n }\n\n // :: () → string\n // Returns a string containing the module's CSS rules.\n getRules() { return this.rules.join(\"\\n\") }\n\n // :: () → string\n // Generate a new unique CSS class name.\n static newName() {\n let id = top[COUNT] || 1\n top[COUNT] = id + 1\n return C + id.toString(36)\n }\n\n // :: (union<Document, ShadowRoot>, union<[StyleModule], StyleModule>, ?{nonce: ?string})\n //\n // Mount the given set of modules in the given DOM root, which ensures\n // that the CSS rules defined by the module are available in that\n // context.\n //\n // Rules are only added to the document once per root.\n //\n // Rule order will follow the order of the modules, so that rules from\n // modules later in the array take precedence of those from earlier\n // modules. If you call this function multiple times for the same root\n // in a way that changes the order of already mounted modules, the old\n // order will be changed.\n //\n // If a Content Security Policy nonce is provided, it is added to\n // the `<style>` tag generated by the library.\n static mount(root, modules, options) {\n let set = root[SET], nonce = options && options.nonce\n if (!set) set = new StyleSet(root, nonce)\n else if (nonce) set.setNonce(nonce)\n set.mount(Array.isArray(modules) ? modules : [modules], root)\n }\n}\n\nlet adoptedSet = new Map //<Document, StyleSet>\n\nclass StyleSet {\n constructor(root, nonce) {\n let doc = root.ownerDocument || root, win = doc.defaultView\n if (!root.head && root.adoptedStyleSheets && win.CSSStyleSheet) {\n let adopted = adoptedSet.get(doc)\n if (adopted) return root[SET] = adopted\n this.sheet = new win.CSSStyleSheet\n adoptedSet.set(doc, this)\n } else {\n this.styleTag = doc.createElement(\"style\")\n if (nonce) this.styleTag.setAttribute(\"nonce\", nonce)\n }\n this.modules = []\n root[SET] = this\n }\n\n mount(modules, root) {\n let sheet = this.sheet\n let pos = 0 /* Current rule offset */, j = 0 /* Index into this.modules */\n for (let i = 0; i < modules.length; i++) {\n let mod = modules[i], index = this.modules.indexOf(mod)\n if (index < j && index > -1) { // Ordering conflict\n this.modules.splice(index, 1)\n j--\n index = -1\n }\n if (index == -1) {\n this.modules.splice(j++, 0, mod)\n if (sheet) for (let k = 0; k < mod.rules.length; k++)\n sheet.insertRule(mod.rules[k], pos++)\n } else {\n while (j < index) pos += this.modules[j++].rules.length\n pos += mod.rules.length\n j++\n }\n }\n\n if (sheet) {\n if (root.adoptedStyleSheets.indexOf(this.sheet) < 0)\n root.adoptedStyleSheets = [this.sheet, ...root.adoptedStyleSheets]\n } else {\n let text = \"\"\n for (let i = 0; i < this.modules.length; i++)\n text += this.modules[i].getRules() + \"\\n\"\n this.styleTag.textContent = text\n let target = root.head || root\n if (this.styleTag.parentNode != target)\n target.insertBefore(this.styleTag, target.firstChild)\n }\n }\n\n setNonce(nonce) {\n if (this.styleTag && this.styleTag.getAttribute(\"nonce\") != nonce)\n this.styleTag.setAttribute(\"nonce\", nonce)\n }\n}\n\n// Style::Object<union<Style,string>>\n//\n// A style is an object that, in the simple case, maps CSS property\n// names to strings holding their values, as in `{color: \"red\",\n// fontWeight: \"bold\"}`. The property names can be given in\n// camel-case—the library will insert a dash before capital letters\n// when converting them to CSS.\n//\n// If you include an underscore in a property name, it and everything\n// after it will be removed from the output, which can be useful when\n// providing a property multiple times, for browser compatibility\n// reasons.\n//\n// A property in a style object can also be a sub-selector, which\n// extends the current context to add a pseudo-selector or a child\n// selector. Such a property should contain a `&` character, which\n// will be replaced by the current selector. For example `{\"&:before\":\n// {content: '\"hi\"'}}`. Sub-selectors and regular properties can\n// freely be mixed in a given object. Any property containing a `&` is\n// assumed to be a sub-selector.\n//\n// Finally, a property can specify an @-block to be wrapped around the\n// styles defined inside the object that's the property's value. For\n// example to create a media query you can do `{\"@media screen and\n// (min-width: 400px)\": {...}}`.\n","export var base = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 10: \"Enter\",\n 12: \"NumLock\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 44: \"PrintScreen\",\n 45: \"Insert\",\n 46: \"Delete\",\n 59: \";\",\n 61: \"=\",\n 91: \"Meta\",\n 92: \"Meta\",\n 106: \"*\",\n 107: \"+\",\n 108: \",\",\n 109: \"-\",\n 110: \".\",\n 111: \"/\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 160: \"Shift\",\n 161: \"Shift\",\n 162: \"Control\",\n 163: \"Control\",\n 164: \"Alt\",\n 165: \"Alt\",\n 173: \"-\",\n 186: \";\",\n 187: \"=\",\n 188: \",\",\n 189: \"-\",\n 190: \".\",\n 191: \"/\",\n 192: \"`\",\n 219: \"[\",\n 220: \"\\\\\",\n 221: \"]\",\n 222: \"'\"\n}\n\nexport var shift = {\n 48: \")\",\n 49: \"!\",\n 50: \"@\",\n 51: \"#\",\n 52: \"$\",\n 53: \"%\",\n 54: \"^\",\n 55: \"&\",\n 56: \"*\",\n 57: \"(\",\n 59: \":\",\n 61: \"+\",\n 173: \"_\",\n 186: \":\",\n 187: \"+\",\n 188: \"<\",\n 189: \"_\",\n 190: \">\",\n 191: \"?\",\n 192: \"~\",\n 219: \"{\",\n 220: \"|\",\n 221: \"}\",\n 222: \"\\\"\"\n}\n\nvar mac = typeof navigator != \"undefined\" && /Mac/.test(navigator.platform)\nvar ie = typeof navigator != \"undefined\" && /MSIE \\d|Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent)\n\n// Fill in the digit keys\nfor (var i = 0; i < 10; i++) base[48 + i] = base[96 + i] = String(i)\n\n// The function keys\nfor (var i = 1; i <= 24; i++) base[i + 111] = \"F\" + i\n\n// And the alphabetic keys\nfor (var i = 65; i <= 90; i++) {\n base[i] = String.fromCharCode(i + 32)\n shift[i] = String.fromCharCode(i)\n}\n\n// For each code that doesn't have a shift-equivalent, copy the base name\nfor (var code in base) if (!shift.hasOwnProperty(code)) shift[code] = base[code]\n\nexport function keyName(event) {\n // On macOS, keys held with Shift and Cmd don't reflect the effect of Shift in `.key`.\n // On IE, shift effect is never included in `.key`.\n var ignoreKey = mac && event.metaKey && event.shiftKey && !event.ctrlKey && !event.altKey ||\n ie && event.shiftKey && event.key && event.key.length == 1 ||\n event.key == \"Unidentified\"\n var name = (!ignoreKey && event.key) ||\n (event.shiftKey ? shift : base)[event.keyCode] ||\n event.key || \"Unidentified\"\n // Edge sometimes produces wrong names (Issue #3)\n if (name == \"Esc\") name = \"Escape\"\n if (name == \"Del\") name = \"Delete\"\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8860571/\n if (name == \"Left\") name = \"ArrowLeft\"\n if (name == \"Up\") name = \"ArrowUp\"\n if (name == \"Right\") name = \"ArrowRight\"\n if (name == \"Down\") name = \"ArrowDown\"\n return name\n}\n","export default function crelt() {\n var elt = arguments[0]\n if (typeof elt == \"string\") elt = document.createElement(elt)\n var i = 1, next = arguments[1]\n if (next && typeof next == \"object\" && next.nodeType == null && !Array.isArray(next)) {\n for (var name in next) if (Object.prototype.hasOwnProperty.call(next, name)) {\n var value = next[name]\n if (typeof value == \"string\") elt.setAttribute(name, value)\n else if (value != null) elt[name] = value\n }\n i++\n }\n for (; i < arguments.length; i++) add(elt, arguments[i])\n return elt\n}\n\nfunction add(elt, child) {\n if (typeof child == \"string\") {\n elt.appendChild(document.createTextNode(child))\n } else if (child == null) {\n } else if (child.nodeType != null) {\n elt.appendChild(child)\n } else if (Array.isArray(child)) {\n for (var i = 0; i < child.length; i++) add(elt, child[i])\n } else {\n throw new RangeError(\"Unsupported child node: \" + child)\n }\n}\n","import { RangeSet, MapMode, RangeValue, findClusterBreak, EditorSelection, Facet, StateEffect, ChangeSet, Text, findColumn, CharCategory, EditorState, Annotation, Transaction, Prec, codePointAt, codePointSize, combineConfig, StateField, RangeSetBuilder, countColumn } from '@codemirror/state';\nimport { StyleModule } from 'style-mod';\nimport { keyName, base, shift } from 'w3c-keyname';\nimport elt from 'crelt';\n\nlet nav = typeof navigator != \"undefined\" ? navigator : { userAgent: \"\", vendor: \"\", platform: \"\" };\nlet doc = typeof document != \"undefined\" ? document : { documentElement: { style: {} } };\nconst ie_edge = /*@__PURE__*//Edge\\/(\\d+)/.exec(nav.userAgent);\nconst ie_upto10 = /*@__PURE__*//MSIE \\d/.test(nav.userAgent);\nconst ie_11up = /*@__PURE__*//Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(nav.userAgent);\nconst ie = !!(ie_upto10 || ie_11up || ie_edge);\nconst gecko = !ie && /*@__PURE__*//gecko\\/(\\d+)/i.test(nav.userAgent);\nconst chrome = !ie && /*@__PURE__*//Chrome\\/(\\d+)/.exec(nav.userAgent);\nconst webkit = \"webkitFontSmoothing\" in doc.documentElement.style;\nconst safari = !ie && /*@__PURE__*//Apple Computer/.test(nav.vendor);\nconst ios = safari && (/*@__PURE__*//Mobile\\/\\w+/.test(nav.userAgent) || nav.maxTouchPoints > 2);\nvar browser = {\n mac: ios || /*@__PURE__*//Mac/.test(nav.platform),\n windows: /*@__PURE__*//Win/.test(nav.platform),\n linux: /*@__PURE__*//Linux|X11/.test(nav.platform),\n ie,\n ie_version: ie_upto10 ? doc.documentMode || 6 : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : 0,\n gecko,\n gecko_version: gecko ? +(/*@__PURE__*//Firefox\\/(\\d+)/.exec(nav.userAgent) || [0, 0])[1] : 0,\n chrome: !!chrome,\n chrome_version: chrome ? +chrome[1] : 0,\n ios,\n android: /*@__PURE__*//Android\\b/.test(nav.userAgent),\n webkit,\n webkit_version: webkit ? +(/*@__PURE__*//\\bAppleWebKit\\/(\\d+)/.exec(nav.userAgent) || [0, 0])[1] : 0,\n safari,\n safari_version: safari ? +(/*@__PURE__*//\\bVersion\\/(\\d+(\\.\\d+)?)/.exec(nav.userAgent) || [0, 0])[1] : 0,\n tabSize: doc.documentElement.style.tabSize != null ? \"tab-size\" : \"-moz-tab-size\"\n};\n\nfunction combineAttrs(source, target) {\n for (let name in source) {\n if (name == \"class\" && target.class)\n target.class += \" \" + source.class;\n else if (name == \"style\" && target.style)\n target.style += \";\" + source.style;\n else\n target[name] = source[name];\n }\n return target;\n}\nconst noAttrs = /*@__PURE__*/Object.create(null);\nfunction attrsEq(a, b, ignore) {\n if (a == b)\n return true;\n if (!a)\n a = noAttrs;\n if (!b)\n b = noAttrs;\n let keysA = Object.keys(a), keysB = Object.keys(b);\n if (keysA.length - (ignore && keysA.indexOf(ignore) > -1 ? 1 : 0) !=\n keysB.length - (ignore && keysB.indexOf(ignore) > -1 ? 1 : 0))\n return false;\n for (let key of keysA) {\n if (key != ignore && (keysB.indexOf(key) == -1 || a[key] !== b[key]))\n return false;\n }\n return true;\n}\nfunction setAttrs(dom, attrs) {\n for (let i = dom.attributes.length - 1; i >= 0; i--) {\n let name = dom.attributes[i].name;\n if (attrs[name] == null)\n dom.removeAttribute(name);\n }\n for (let name in attrs) {\n let value = attrs[name];\n if (name == \"style\")\n dom.style.cssText = value;\n else if (dom.getAttribute(name) != value)\n dom.setAttribute(name, value);\n }\n}\nfunction updateAttrs(dom, prev, attrs) {\n let changed = false;\n if (prev)\n for (let name in prev)\n if (!(attrs && name in attrs)) {\n changed = true;\n if (name == \"style\")\n dom.style.cssText = \"\";\n else\n dom.removeAttribute(name);\n }\n if (attrs)\n for (let name in attrs)\n if (!(prev && prev[name] == attrs[name])) {\n changed = true;\n if (name == \"style\")\n dom.style.cssText = attrs[name];\n else\n dom.setAttribute(name, attrs[name]);\n }\n return changed;\n}\nfunction getAttrs(dom) {\n let attrs = Object.create(null);\n for (let i = 0; i < dom.attributes.length; i++) {\n let attr = dom.attributes[i];\n attrs[attr.name] = attr.value;\n }\n return attrs;\n}\n\n/**\nWidgets added to the content are described by subclasses of this\nclass. Using a description object like that makes it possible to\ndelay creating of the DOM structure for a widget until it is\nneeded, and to avoid redrawing widgets even if the decorations\nthat define them are recreated.\n*/\nclass WidgetType {\n /**\n Compare this instance to another instance of the same type.\n (TypeScript can't express this, but only instances of the same\n specific class will be passed to this method.) This is used to\n avoid redrawing widgets when they are replaced by a new\n decoration of the same type. The default implementation just\n returns `false`, which will cause new instances of the widget to\n always be redrawn.\n */\n eq(widget) { return false; }\n /**\n Update a DOM element created by a widget of the same type (but\n different, non-`eq` content) to reflect this widget. May return\n true to indicate that it could update, false to indicate it\n couldn't (in which case the widget will be redrawn). The default\n implementation just returns false.\n */\n updateDOM(dom, view) { return false; }\n /**\n @internal\n */\n compare(other) {\n return this == other || this.constructor == other.constructor && this.eq(other);\n }\n /**\n The estimated height this widget will have, to be used when\n estimating the height of content that hasn't been drawn. May\n return -1 to indicate you don't know. The default implementation\n returns -1.\n */\n get estimatedHeight() { return -1; }\n /**\n For inline widgets that are displayed inline (as opposed to\n `inline-block`) and introduce line breaks (through `<br>` tags\n or textual newlines), this must indicate the amount of line\n breaks they introduce. Defaults to 0.\n */\n get lineBreaks() { return 0; }\n /**\n Can be used to configure which kinds of events inside the widget\n should be ignored by the editor. The default is to ignore all\n events.\n */\n ignoreEvent(event) { return true; }\n /**\n Override the way screen coordinates for positions at/in the\n widget are found. `pos` will be the offset into the widget, and\n `side` the side of the position that is being queried—less than\n zero for before, greater than zero for after, and zero for\n directly at that position.\n */\n coordsAt(dom, pos, side) { return null; }\n /**\n @internal\n */\n get isHidden() { return false; }\n /**\n @internal\n */\n get editable() { return false; }\n /**\n This is called when the an instance of the widget is removed\n from the editor view.\n */\n destroy(dom) { }\n}\n/**\nThe different types of blocks that can occur in an editor view.\n*/\nvar BlockType = /*@__PURE__*/(function (BlockType) {\n /**\n A line of text.\n */\n BlockType[BlockType[\"Text\"] = 0] = \"Text\";\n /**\n A block widget associated with the position after it.\n */\n BlockType[BlockType[\"WidgetBefore\"] = 1] = \"WidgetBefore\";\n /**\n A block widget associated with the position before it.\n */\n BlockType[BlockType[\"WidgetAfter\"] = 2] = \"WidgetAfter\";\n /**\n A block widget [replacing](https://codemirror.net/6/docs/ref/#view.Decoration^replace) a range of content.\n */\n BlockType[BlockType[\"WidgetRange\"] = 3] = \"WidgetRange\";\nreturn BlockType})(BlockType || (BlockType = {}));\n/**\nA decoration provides information on how to draw or style a piece\nof content. You'll usually use it wrapped in a\n[`Range`](https://codemirror.net/6/docs/ref/#state.Range), which adds a start and end position.\n@nonabstract\n*/\nclass Decoration extends RangeValue {\n constructor(\n /**\n @internal\n */\n startSide, \n /**\n @internal\n */\n endSide, \n /**\n @internal\n */\n widget, \n /**\n The config object used to create this decoration. You can\n include additional properties in there to store metadata about\n your decoration.\n */\n spec) {\n super();\n this.startSide = startSide;\n this.endSide = endSide;\n this.widget = widget;\n this.spec = spec;\n }\n /**\n @internal\n */\n get heightRelevant() { return false; }\n /**\n Create a mark decoration, which influences the styling of the\n content in its range. Nested mark decorations will cause nested\n DOM elements to be created. Nesting order is determined by\n precedence of the [facet](https://codemirror.net/6/docs/ref/#view.EditorView^decorations), with\n the higher-precedence decorations creating the inner DOM nodes.\n Such elements are split on line boundaries and on the boundaries\n of lower-precedence decorations.\n */\n static mark(spec) {\n return new MarkDecoration(spec);\n }\n /**\n Create a widget decoration, which displays a DOM element at the\n given position.\n */\n static widget(spec) {\n let side = Math.max(-10000, Math.min(10000, spec.side || 0)), block = !!spec.block;\n side += (block && !spec.inlineOrder)\n ? (side > 0 ? 300000000 /* Side.BlockAfter */ : -400000000 /* Side.BlockBefore */)\n : (side > 0 ? 100000000 /* Side.InlineAfter */ : -100000000 /* Side.InlineBefore */);\n return new PointDecoration(spec, side, side, block, spec.widget || null, false);\n }\n /**\n Create a replace decoration which replaces the given range with\n a widget, or simply hides it.\n */\n static replace(spec) {\n let block = !!spec.block, startSide, endSide;\n if (spec.isBlockGap) {\n startSide = -500000000 /* Side.GapStart */;\n endSide = 400000000 /* Side.GapEnd */;\n }\n else {\n let { start, end } = getInclusive(spec, block);\n startSide = (start ? (block ? -300000000 /* Side.BlockIncStart */ : -1 /* Side.InlineIncStart */) : 500000000 /* Side.NonIncStart */) - 1;\n endSide = (end ? (block ? 200000000 /* Side.BlockIncEnd */ : 1 /* Side.InlineIncEnd */) : -600000000 /* Side.NonIncEnd */) + 1;\n }\n return new PointDecoration(spec, startSide, endSide, block, spec.widget || null, true);\n }\n /**\n Create a line decoration, which can add DOM attributes to the\n line starting at the given position.\n */\n static line(spec) {\n return new LineDecoration(spec);\n }\n /**\n Build a [`DecorationSet`](https://codemirror.net/6/docs/ref/#view.DecorationSet) from the given\n decorated range or ranges. If the ranges aren't already sorted,\n pass `true` for `sort` to make the library sort them for you.\n */\n static set(of, sort = false) {\n return RangeSet.of(of, sort);\n }\n /**\n @internal\n */\n hasHeight() { return this.widget ? this.widget.estimatedHeight > -1 : false; }\n}\n/**\nThe empty set of decorations.\n*/\nDecoration.none = RangeSet.empty;\nclass MarkDecoration extends Decoration {\n constructor(spec) {\n let { start, end } = getInclusive(spec);\n super(start ? -1 /* Side.InlineIncStart */ : 500000000 /* Side.NonIncStart */, end ? 1 /* Side.InlineIncEnd */ : -600000000 /* Side.NonIncEnd */, null, spec);\n this.tagName = spec.tagName || \"span\";\n this.attrs = spec.class && spec.attributes ? combineAttrs(spec.attributes, { class: spec.class })\n : spec.class ? { class: spec.class } : spec.attributes || noAttrs;\n }\n eq(other) {\n return this == other || other instanceof MarkDecoration && this.tagName == other.tagName && attrsEq(this.attrs, other.attrs);\n }\n range(from, to = from) {\n if (from >= to)\n throw new RangeError(\"Mark decorations may not be empty\");\n return super.range(from, to);\n }\n}\nMarkDecoration.prototype.point = false;\nclass LineDecoration extends Decoration {\n constructor(spec) {\n super(-200000000 /* Side.Line */, -200000000 /* Side.Line */, null, spec);\n }\n eq(other) {\n return other instanceof LineDecoration &&\n this.spec.class == other.spec.class &&\n attrsEq(this.spec.attributes, other.spec.attributes);\n }\n range(from, to = from) {\n if (to != from)\n throw new RangeError(\"Line decoration ranges must be zero-length\");\n return super.range(from, to);\n }\n}\nLineDecoration.prototype.mapMode = MapMode.TrackBefore;\nLineDecoration.prototype.point = true;\nclass PointDecoration extends Decoration {\n constructor(spec, startSide, endSide, block, widget, isReplace) {\n super(startSide, endSide, widget, spec);\n this.block = block;\n this.isReplace = isReplace;\n this.mapMode = !block ? MapMode.TrackDel : startSide <= 0 ? MapMode.TrackBefore : MapMode.TrackAfter;\n }\n // Only relevant when this.block == true\n get type() {\n return this.startSide != this.endSide ? BlockType.WidgetRange\n : this.startSide <= 0 ? BlockType.WidgetBefore : BlockType.WidgetAfter;\n }\n get heightRelevant() {\n return this.block || !!this.widget && (this.widget.estimatedHeight >= 5 || this.widget.lineBreaks > 0);\n }\n eq(other) {\n return other instanceof PointDecoration &&\n widgetsEq(this.widget, other.widget) &&\n this.block == other.block &&\n this.startSide == other.startSide && this.endSide == other.endSide;\n }\n range(from, to = from) {\n if (this.isReplace && (from > to || (from == to && this.startSide > 0 && this.endSide <= 0)))\n throw new RangeError(\"Invalid range for replacement decoration\");\n if (!this.isReplace && to != from)\n throw new RangeError(\"Widget decorations can only have zero-length ranges\");\n return super.range(from, to);\n }\n}\nPointDecoration.prototype.point = true;\nfunction getInclusive(spec, block = false) {\n let { inclusiveStart: start, inclusiveEnd: end } = spec;\n if (start == null)\n start = spec.inclusive;\n if (end == null)\n end = spec.inclusive;\n return { start: start !== null && start !== void 0 ? start : block, end: end !== null && end !== void 0 ? end : block };\n}\nfunction widgetsEq(a, b) {\n return a == b || !!(a && b && a.compare(b));\n}\nfunction addRange(from, to, ranges, margin = 0) {\n let last = ranges.length - 1;\n if (last >= 0 && ranges[last] + margin >= from)\n ranges[last] = Math.max(ranges[last], to);\n else\n ranges.push(from, to);\n}\n/**\nA block wrapper defines a DOM node that wraps lines or other block\nwrappers at the top of the document. It affects any line or block\nwidget that starts inside its range, including blocks starting\ndirectly at `from` but not including `to`.\n*/\nclass BlockWrapper extends RangeValue {\n constructor(tagName, attributes) {\n super();\n this.tagName = tagName;\n this.attributes = attributes;\n }\n eq(other) {\n return other == this ||\n other instanceof BlockWrapper && this.tagName == other.tagName && attrsEq(this.attributes, other.attributes);\n }\n /**\n Create a block wrapper object with the given tag name and\n attributes.\n */\n static create(spec) {\n return new BlockWrapper(spec.tagName, spec.attributes || noAttrs);\n }\n /**\n Create a range set from the given block wrapper ranges.\n */\n static set(of, sort = false) {\n return RangeSet.of(of, sort);\n }\n}\nBlockWrapper.prototype.startSide = BlockWrapper.prototype.endSide = -1;\n\nfunction getSelection(root) {\n let target;\n // Browsers differ on whether shadow roots have a getSelection\n // method. If it exists, use that, otherwise, call it on the\n // document.\n if (root.nodeType == 11) { // Shadow root\n target = root.getSelection ? root : root.ownerDocument;\n }\n else {\n target = root;\n }\n return target.getSelection();\n}\nfunction contains(dom, node) {\n return node ? dom == node || dom.contains(node.nodeType != 1 ? node.parentNode : node) : false;\n}\nfunction hasSelection(dom, selection) {\n if (!selection.anchorNode)\n return false;\n try {\n // Firefox will raise 'permission denied' errors when accessing\n // properties of `sel.anchorNode` when it's in a generated CSS\n // element.\n return contains(dom, selection.anchorNode);\n }\n catch (_) {\n return false;\n }\n}\nfunction clientRectsFor(dom) {\n if (dom.nodeType == 3)\n return textRange(dom, 0, dom.nodeValue.length).getClientRects();\n else if (dom.nodeType == 1)\n return dom.getClientRects();\n else\n return [];\n}\n// Scans forward and backward through DOM positions equivalent to the\n// given one to see if the two are in the same place (i.e. after a\n// text node vs at the end of that text node)\nfunction isEquivalentPosition(node, off, targetNode, targetOff) {\n return targetNode ? (scanFor(node, off, targetNode, targetOff, -1) ||\n scanFor(node, off, targetNode, targetOff, 1)) : false;\n}\nfunction domIndex(node) {\n for (var index = 0;; index++) {\n node = node.previousSibling;\n if (!node)\n return index;\n }\n}\nfunction isBlockElement(node) {\n return node.nodeType == 1 && /^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\\d|SECTION|PRE)$/.test(node.nodeName);\n}\nfunction scanFor(node, off, targetNode, targetOff, dir) {\n for (;;) {\n if (node == targetNode && off == targetOff)\n return true;\n if (off == (dir < 0 ? 0 : maxOffset(node))) {\n if (node.nodeName == \"DIV\")\n return false;\n let parent = node.parentNode;\n if (!parent || parent.nodeType != 1)\n return false;\n off = domIndex(node) + (dir < 0 ? 0 : 1);\n node = parent;\n }\n else if (node.nodeType == 1) {\n node = node.childNodes[off + (dir < 0 ? -1 : 0)];\n if (node.nodeType == 1 && node.contentEditable == \"false\")\n return false;\n off = dir < 0 ? maxOffset(node) : 0;\n }\n else {\n return false;\n }\n }\n}\nfunction maxOffset(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction flattenRect(rect, left) {\n let x = left ? rect.left : rect.right;\n return { left: x, right: x, top: rect.top, bottom: rect.bottom };\n}\nfunction windowRect(win) {\n let vp = win.visualViewport;\n if (vp)\n return {\n left: 0, right: vp.width,\n top: 0, bottom: vp.height\n };\n return { left: 0, right: win.innerWidth,\n top: 0, bottom: win.innerHeight };\n}\nfunction getScale(elt, rect) {\n let scaleX = rect.width / elt.offsetWidth;\n let scaleY = rect.height / elt.offsetHeight;\n if (scaleX > 0.995 && scaleX < 1.005 || !isFinite(scaleX) || Math.abs(rect.width - elt.offsetWidth) < 1)\n scaleX = 1;\n if (scaleY > 0.995 && scaleY < 1.005 || !isFinite(scaleY) || Math.abs(rect.height - elt.offsetHeight) < 1)\n scaleY = 1;\n return { scaleX, scaleY };\n}\nfunction scrollRectIntoView(dom, rect, side, x, y, xMargin, yMargin, ltr) {\n let doc = dom.ownerDocument, win = doc.defaultView || window;\n for (let cur = dom, stop = false; cur && !stop;) {\n if (cur.nodeType == 1) { // Element\n let bounding, top = cur == doc.body;\n let scaleX = 1, scaleY = 1;\n if (top) {\n bounding = windowRect(win);\n }\n else {\n if (/^(fixed|sticky)$/.test(getComputedStyle(cur).position))\n stop = true;\n if (cur.scrollHeight <= cur.clientHeight && cur.scrollWidth <= cur.clientWidth) {\n cur = cur.assignedSlot || cur.parentNode;\n continue;\n }\n let rect = cur.getBoundingClientRect();\n ({ scaleX, scaleY } = getScale(cur, rect));\n // Make sure scrollbar width isn't included in the rectangle\n bounding = { left: rect.left, right: rect.left + cur.clientWidth * scaleX,\n top: rect.top, bottom: rect.top + cur.clientHeight * scaleY };\n }\n let moveX = 0, moveY = 0;\n if (y == \"nearest\") {\n if (rect.top < bounding.top) {\n moveY = rect.top - (bounding.top + yMargin);\n if (side > 0 && rect.bottom > bounding.bottom + moveY)\n moveY = rect.bottom - bounding.bottom + yMargin;\n }\n else if (rect.bottom > bounding.bottom) {\n moveY = rect.bottom - bounding.bottom + yMargin;\n if (side < 0 && (rect.top - moveY) < bounding.top)\n moveY = rect.top - (bounding.top + yMargin);\n }\n }\n else {\n let rectHeight = rect.bottom - rect.top, boundingHeight = bounding.bottom - bounding.top;\n let targetTop = y == \"center\" && rectHeight <= boundingHeight ? rect.top + rectHeight / 2 - boundingHeight / 2 :\n y == \"start\" || y == \"center\" && side < 0 ? rect.top - yMargin :\n rect.bottom - boundingHeight + yMargin;\n moveY = targetTop - bounding.top;\n }\n if (x == \"nearest\") {\n if (rect.left < bounding.left) {\n moveX = rect.left - (bounding.left + xMargin);\n if (side > 0 && rect.right > bounding.right + moveX)\n moveX = rect.right - bounding.right + xMargin;\n }\n else if (rect.right > bounding.right) {\n moveX = rect.right - bounding.right + xMargin;\n if (side < 0 && rect.left < bounding.left + moveX)\n moveX = rect.left - (bounding.left + xMargin);\n }\n }\n else {\n let targetLeft = x == \"center\" ? rect.left + (rect.right - rect.left) / 2 - (bounding.right - bounding.left) / 2 :\n (x == \"start\") == ltr ? rect.left - xMargin :\n rect.right - (bounding.right - bounding.left) + xMargin;\n moveX = targetLeft - bounding.left;\n }\n if (moveX || moveY) {\n if (top) {\n win.scrollBy(moveX, moveY);\n }\n else {\n let movedX = 0, movedY = 0;\n if (moveY) {\n let start = cur.scrollTop;\n cur.scrollTop += moveY / scaleY;\n movedY = (cur.scrollTop - start) * scaleY;\n }\n if (moveX) {\n let start = cur.scrollLeft;\n cur.scrollLeft += moveX / scaleX;\n movedX = (cur.scrollLeft - start) * scaleX;\n }\n rect = { left: rect.left - movedX, top: rect.top - movedY,\n right: rect.right - movedX, bottom: rect.bottom - movedY };\n if (movedX && Math.abs(movedX - moveX) < 1)\n x = \"nearest\";\n if (movedY && Math.abs(movedY - moveY) < 1)\n y = \"nearest\";\n }\n }\n if (top)\n break;\n if (rect.top < bounding.top || rect.bottom > bounding.bottom ||\n rect.left < bounding.left || rect.right > bounding.right)\n rect = { left: Math.max(rect.left, bounding.left), right: Math.min(rect.right, bounding.right),\n top: Math.max(rect.top, bounding.top), bottom: Math.min(rect.bottom, bounding.bottom) };\n cur = cur.assignedSlot || cur.parentNode;\n }\n else if (cur.nodeType == 11) { // A shadow root\n cur = cur.host;\n }\n else {\n break;\n }\n }\n}\nfunction scrollableParents(dom, getX = true) {\n let doc = dom.ownerDocument, x = null, y = null;\n for (let cur = dom.parentNode; cur;) {\n if (cur == doc.body || ((!getX || x) && y)) {\n break;\n }\n else if (cur.nodeType == 1) {\n if (!y && cur.scrollHeight > cur.clientHeight)\n y = cur;\n if (getX && !x && cur.scrollWidth > cur.clientWidth)\n x = cur;\n cur = cur.assignedSlot || cur.parentNode;\n }\n else if (cur.nodeType == 11) {\n cur = cur.host;\n }\n else {\n break;\n }\n }\n return { x, y };\n}\nclass DOMSelectionState {\n constructor() {\n this.anchorNode = null;\n this.anchorOffset = 0;\n this.focusNode = null;\n this.focusOffset = 0;\n }\n eq(domSel) {\n return this.anchorNode == domSel.anchorNode && this.anchorOffset == domSel.anchorOffset &&\n this.focusNode == domSel.focusNode && this.focusOffset == domSel.focusOffset;\n }\n setRange(range) {\n let { anchorNode, focusNode } = range;\n // Clip offsets to node size to avoid crashes when Safari reports bogus offsets (#1152)\n this.set(anchorNode, Math.min(range.anchorOffset, anchorNode ? maxOffset(anchorNode) : 0), focusNode, Math.min(range.focusOffset, focusNode ? maxOffset(focusNode) : 0));\n }\n set(anchorNode, anchorOffset, focusNode, focusOffset) {\n this.anchorNode = anchorNode;\n this.anchorOffset = anchorOffset;\n this.focusNode = focusNode;\n this.focusOffset = focusOffset;\n }\n}\nlet preventScrollSupported = null;\n// Safari 26 breaks preventScroll support\nif (browser.safari && browser.safari_version >= 26)\n preventScrollSupported = false;\n// Feature-detects support for .focus({preventScroll: true}), and uses\n// a fallback kludge when not supported.\nfunction focusPreventScroll(dom) {\n if (dom.setActive)\n return dom.setActive(); // in IE\n if (preventScrollSupported)\n return dom.focus(preventScrollSupported);\n let stack = [];\n for (let cur = dom; cur; cur = cur.parentNode) {\n stack.push(cur, cur.scrollTop, cur.scrollLeft);\n if (cur == cur.ownerDocument)\n break;\n }\n dom.focus(preventScrollSupported == null ? {\n get preventScroll() {\n preventScrollSupported = { preventScroll: true };\n return true;\n }\n } : undefined);\n if (!preventScrollSupported) {\n preventScrollSupported = false;\n for (let i = 0; i < stack.length;) {\n let elt = stack[i++], top = stack[i++], left = stack[i++];\n if (elt.scrollTop != top)\n elt.scrollTop = top;\n if (elt.scrollLeft != left)\n elt.scrollLeft = left;\n }\n }\n}\nlet scratchRange;\nfunction textRange(node, from, to = from) {\n let range = scratchRange || (scratchRange = document.createRange());\n range.setEnd(node, to);\n range.setStart(node, from);\n return range;\n}\nfunction dispatchKey(elt, name, code, mods) {\n let options = { key: name, code: name, keyCode: code, which: code, cancelable: true };\n if (mods)\n ({ altKey: options.altKey, ctrlKey: options.ctrlKey, shiftKey: options.shiftKey, metaKey: options.metaKey } = mods);\n let down = new KeyboardEvent(\"keydown\", options);\n down.synthetic = true;\n elt.dispatchEvent(down);\n let up = new KeyboardEvent(\"keyup\", options);\n up.synthetic = true;\n elt.dispatchEvent(up);\n return down.defaultPrevented || up.defaultPrevented;\n}\nfunction getRoot(node) {\n while (node) {\n if (node && (node.nodeType == 9 || node.nodeType == 11 && node.host))\n return node;\n node = node.assignedSlot || node.parentNode;\n }\n return null;\n}\nfunction atElementStart(doc, selection) {\n let node = selection.focusNode, offset = selection.focusOffset;\n if (!node || selection.anchorNode != node || selection.anchorOffset != offset)\n return false;\n // Safari can report bogus offsets (#1152)\n offset = Math.min(offset, maxOffset(node));\n for (;;) {\n if (offset) {\n if (node.nodeType != 1)\n return false;\n let prev = node.childNodes[offset - 1];\n if (prev.contentEditable == \"false\")\n offset--;\n else {\n node = prev;\n offset = maxOffset(node);\n }\n }\n else if (node == doc) {\n return true;\n }\n else {\n offset = domIndex(node);\n node = node.parentNode;\n }\n }\n}\nfunction isScrolledToBottom(elt) {\n if (elt instanceof Window)\n return elt.pageYOffset > Math.max(0, elt.document.documentElement.scrollHeight - elt.innerHeight - 4);\n return elt.scrollTop > Math.max(1, elt.scrollHeight - elt.clientHeight - 4);\n}\nfunction textNodeBefore(startNode, startOffset) {\n for (let node = startNode, offset = startOffset;;) {\n if (node.nodeType == 3 && offset > 0) {\n return { node: node, offset: offset };\n }\n else if (node.nodeType == 1 && offset > 0) {\n if (node.contentEditable == \"false\")\n return null;\n node = node.childNodes[offset - 1];\n offset = maxOffset(node);\n }\n else if (node.parentNode && !isBlockElement(node)) {\n offset = domIndex(node);\n node = node.parentNode;\n }\n else {\n return null;\n }\n }\n}\nfunction textNodeAfter(startNode, startOffset) {\n for (let node = startNode, offset = startOffset;;) {\n if (node.nodeType == 3 && offset < node.nodeValue.length) {\n return { node: node, offset: offset };\n }\n else if (node.nodeType == 1 && offset < node.childNodes.length) {\n if (node.contentEditable == \"false\")\n return null;\n node = node.childNodes[offset];\n offset = 0;\n }\n else if (node.parentNode && !isBlockElement(node)) {\n offset = domIndex(node) + 1;\n node = node.parentNode;\n }\n else {\n return null;\n }\n }\n}\nclass DOMPos {\n constructor(node, offset, precise = true) {\n this.node = node;\n this.offset = offset;\n this.precise = precise;\n }\n static before(dom, precise) { return new DOMPos(dom.parentNode, domIndex(dom), precise); }\n static after(dom, precise) { return new DOMPos(dom.parentNode, domIndex(dom) + 1, precise); }\n}\n\n/**\nUsed to indicate [text direction](https://codemirror.net/6/docs/ref/#view.EditorView.textDirection).\n*/\nvar Direction = /*@__PURE__*/(function (Direction) {\n // (These are chosen to match the base levels, in bidi algorithm\n // terms, of spans in that direction.)\n /**\n Left-to-right.\n */\n Direction[Direction[\"LTR\"] = 0] = \"LTR\";\n /**\n Right-to-left.\n */\n Direction[Direction[\"RTL\"] = 1] = \"RTL\";\nreturn Direction})(Direction || (Direction = {}));\nconst LTR = Direction.LTR, RTL = Direction.RTL;\n// Decode a string with each type encoded as log2(type)\nfunction dec(str) {\n let result = [];\n for (let i = 0; i < str.length; i++)\n result.push(1 << +str[i]);\n return result;\n}\n// Character types for codepoints 0 to 0xf8\nconst LowTypes = /*@__PURE__*/dec(\"88888888888888888888888888888888888666888888787833333333337888888000000000000000000000000008888880000000000000000000000000088888888888888888888888888888888888887866668888088888663380888308888800000000000000000000000800000000000000000000000000000008\");\n// Character types for codepoints 0x600 to 0x6f9\nconst ArabicTypes = /*@__PURE__*/dec(\"4444448826627288999999999992222222222222222222222222222222222222222222222229999999999999999999994444444444644222822222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222999999949999999229989999223333333333\");\nconst Brackets = /*@__PURE__*/Object.create(null), BracketStack = [];\n// There's a lot more in\n// https://www.unicode.org/Public/UCD/latest/ucd/BidiBrackets.txt,\n// which are left out to keep code size down.\nfor (let p of [\"()\", \"[]\", \"{}\"]) {\n let l = /*@__PURE__*/p.charCodeAt(0), r = /*@__PURE__*/p.charCodeAt(1);\n Brackets[l] = r;\n Brackets[r] = -l;\n}\nfunction charType(ch) {\n return ch <= 0xf7 ? LowTypes[ch] :\n 0x590 <= ch && ch <= 0x5f4 ? 2 /* T.R */ :\n 0x600 <= ch && ch <= 0x6f9 ? ArabicTypes[ch - 0x600] :\n 0x6ee <= ch && ch <= 0x8ac ? 4 /* T.AL */ :\n 0x2000 <= ch && ch <= 0x200c ? 256 /* T.NI */ :\n 0xfb50 <= ch && ch <= 0xfdff ? 4 /* T.AL */ : 1 /* T.L */;\n}\nconst BidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\ufb50-\\ufdff]/;\n/**\nRepresents a contiguous range of text that has a single direction\n(as in left-to-right or right-to-left).\n*/\nclass BidiSpan {\n /**\n The direction of this span.\n */\n get dir() { return this.level % 2 ? RTL : LTR; }\n /**\n @internal\n */\n constructor(\n /**\n The start of the span (relative to the start of the line).\n */\n from, \n /**\n The end of the span.\n */\n to, \n /**\n The [\"bidi\n level\"](https://unicode.org/reports/tr9/#Basic_Display_Algorithm)\n of the span (in this context, 0 means\n left-to-right, 1 means right-to-left, 2 means left-to-right\n number inside right-to-left text).\n */\n level) {\n this.from = from;\n this.to = to;\n this.level = level;\n }\n /**\n @internal\n */\n side(end, dir) { return (this.dir == dir) == end ? this.to : this.from; }\n /**\n @internal\n */\n forward(forward, dir) { return forward == (this.dir == dir); }\n /**\n @internal\n */\n static find(order, index, level, assoc) {\n let maybe = -1;\n for (let i = 0; i < order.length; i++) {\n let span = order[i];\n if (span.from <= index && span.to >= index) {\n if (span.level == level)\n return i;\n // When multiple spans match, if assoc != 0, take the one that\n // covers that side, otherwise take the one with the minimum\n // level.\n if (maybe < 0 || (assoc != 0 ? (assoc < 0 ? span.from < index : span.to > index) : order[maybe].level > span.level))\n maybe = i;\n }\n }\n if (maybe < 0)\n throw new RangeError(\"Index out of range\");\n return maybe;\n }\n}\nfunction isolatesEq(a, b) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++) {\n let iA = a[i], iB = b[i];\n if (iA.from != iB.from || iA.to != iB.to || iA.direction != iB.direction || !isolatesEq(iA.inner, iB.inner))\n return false;\n }\n return true;\n}\n// Reused array of character types\nconst types = [];\n// Fill in the character types (in `types`) from `from` to `to` and\n// apply W normalization rules.\nfunction computeCharTypes(line, rFrom, rTo, isolates, outerType) {\n for (let iI = 0; iI <= isolates.length; iI++) {\n let from = iI ? isolates[iI - 1].to : rFrom, to = iI < isolates.length ? isolates[iI].from : rTo;\n let prevType = iI ? 256 /* T.NI */ : outerType;\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n // (Left after this: L, R, EN, AN, ET, CS, NI)\n for (let i = from, prev = prevType, prevStrong = prevType; i < to; i++) {\n let type = charType(line.charCodeAt(i));\n if (type == 512 /* T.NSM */)\n type = prev;\n else if (type == 8 /* T.EN */ && prevStrong == 4 /* T.AL */)\n type = 16 /* T.AN */;\n types[i] = type == 4 /* T.AL */ ? 2 /* T.R */ : type;\n if (type & 7 /* T.Strong */)\n prevStrong = type;\n prev = type;\n }\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n // (Left after this: L, R, EN+AN, NI)\n for (let i = from, prev = prevType, prevStrong = prevType; i < to; i++) {\n let type = types[i];\n if (type == 128 /* T.CS */) {\n if (i < to - 1 && prev == types[i + 1] && (prev & 24 /* T.Num */))\n type = types[i] = prev;\n else\n types[i] = 256 /* T.NI */;\n }\n else if (type == 64 /* T.ET */) {\n let end = i + 1;\n while (end < to && types[end] == 64 /* T.ET */)\n end++;\n let replace = (i && prev == 8 /* T.EN */) || (end < rTo && types[end] == 8 /* T.EN */) ? (prevStrong == 1 /* T.L */ ? 1 /* T.L */ : 8 /* T.EN */) : 256 /* T.NI */;\n for (let j = i; j < end; j++)\n types[j] = replace;\n i = end - 1;\n }\n else if (type == 8 /* T.EN */ && prevStrong == 1 /* T.L */) {\n types[i] = 1 /* T.L */;\n }\n prev = type;\n if (type & 7 /* T.Strong */)\n prevStrong = type;\n }\n }\n}\n// Process brackets throughout a run sequence.\nfunction processBracketPairs(line, rFrom, rTo, isolates, outerType) {\n let oppositeType = outerType == 1 /* T.L */ ? 2 /* T.R */ : 1 /* T.L */;\n for (let iI = 0, sI = 0, context = 0; iI <= isolates.length; iI++) {\n let from = iI ? isolates[iI - 1].to : rFrom, to = iI < isolates.length ? isolates[iI].from : rTo;\n // N0. Process bracket pairs in an isolating run sequence\n // sequentially in the logical order of the text positions of the\n // opening paired brackets using the logic given below. Within this\n // scope, bidirectional types EN and AN are treated as R.\n for (let i = from, ch, br, type; i < to; i++) {\n // Keeps [startIndex, type, strongSeen] triples for each open\n // bracket on BracketStack.\n if (br = Brackets[ch = line.charCodeAt(i)]) {\n if (br < 0) { // Closing bracket\n for (let sJ = sI - 3; sJ >= 0; sJ -= 3) {\n if (BracketStack[sJ + 1] == -br) {\n let flags = BracketStack[sJ + 2];\n let type = (flags & 2 /* Bracketed.EmbedInside */) ? outerType :\n !(flags & 4 /* Bracketed.OppositeInside */) ? 0 :\n (flags & 1 /* Bracketed.OppositeBefore */) ? oppositeType : outerType;\n if (type)\n types[i] = types[BracketStack[sJ]] = type;\n sI = sJ;\n break;\n }\n }\n }\n else if (BracketStack.length == 189 /* Bracketed.MaxDepth */) {\n break;\n }\n else {\n BracketStack[sI++] = i;\n BracketStack[sI++] = ch;\n BracketStack[sI++] = context;\n }\n }\n else if ((type = types[i]) == 2 /* T.R */ || type == 1 /* T.L */) {\n let embed = type == outerType;\n context = embed ? 0 : 1 /* Bracketed.OppositeBefore */;\n for (let sJ = sI - 3; sJ >= 0; sJ -= 3) {\n let cur = BracketStack[sJ + 2];\n if (cur & 2 /* Bracketed.EmbedInside */)\n break;\n if (embed) {\n BracketStack[sJ + 2] |= 2 /* Bracketed.EmbedInside */;\n }\n else {\n if (cur & 4 /* Bracketed.OppositeInside */)\n break;\n BracketStack[sJ + 2] |= 4 /* Bracketed.OppositeInside */;\n }\n }\n }\n }\n }\n}\nfunction processNeutrals(rFrom, rTo, isolates, outerType) {\n for (let iI = 0, prev = outerType; iI <= isolates.length; iI++) {\n let from = iI ? isolates[iI - 1].to : rFrom, to = iI < isolates.length ? isolates[iI].from : rTo;\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n // (Left after this: L, R, EN+AN)\n for (let i = from; i < to;) {\n let type = types[i];\n if (type == 256 /* T.NI */) {\n let end = i + 1;\n for (;;) {\n if (end == to) {\n if (iI == isolates.length)\n break;\n end = isolates[iI++].to;\n to = iI < isolates.length ? isolates[iI].from : rTo;\n }\n else if (types[end] == 256 /* T.NI */) {\n end++;\n }\n else {\n break;\n }\n }\n let beforeL = prev == 1 /* T.L */;\n let afterL = (end < rTo ? types[end] : outerType) == 1 /* T.L */;\n let replace = beforeL == afterL ? (beforeL ? 1 /* T.L */ : 2 /* T.R */) : outerType;\n for (let j = end, jI = iI, fromJ = jI ? isolates[jI - 1].to : rFrom; j > i;) {\n if (j == fromJ) {\n j = isolates[--jI].from;\n fromJ = jI ? isolates[jI - 1].to : rFrom;\n }\n types[--j] = replace;\n }\n i = end;\n }\n else {\n prev = type;\n i++;\n }\n }\n }\n}\n// Find the contiguous ranges of character types in a given range, and\n// emit spans for them. Flip the order of the spans as appropriate\n// based on the level, and call through to compute the spans for\n// isolates at the proper point.\nfunction emitSpans(line, from, to, level, baseLevel, isolates, order) {\n let ourType = level % 2 ? 2 /* T.R */ : 1 /* T.L */;\n if ((level % 2) == (baseLevel % 2)) { // Same dir as base direction, don't flip\n for (let iCh = from, iI = 0; iCh < to;) {\n // Scan a section of characters in direction ourType, unless\n // there's another type of char right after iCh, in which case\n // we scan a section of other characters (which, if ourType ==\n // T.L, may contain both T.R and T.AN chars).\n let sameDir = true, isNum = false;\n if (iI == isolates.length || iCh < isolates[iI].from) {\n let next = types[iCh];\n if (next != ourType) {\n sameDir = false;\n isNum = next == 16 /* T.AN */;\n }\n }\n // Holds an array of isolates to pass to a recursive call if we\n // must recurse (to distinguish T.AN inside an RTL section in\n // LTR text), null if we can emit directly\n let recurse = !sameDir && ourType == 1 /* T.L */ ? [] : null;\n let localLevel = sameDir ? level : level + 1;\n let iScan = iCh;\n run: for (;;) {\n if (iI < isolates.length && iScan == isolates[iI].from) {\n if (isNum)\n break run;\n let iso = isolates[iI];\n // Scan ahead to verify that there is another char in this dir after the isolate(s)\n if (!sameDir)\n for (let upto = iso.to, jI = iI + 1;;) {\n if (upto == to)\n break run;\n if (jI < isolates.length && isolates[jI].from == upto)\n upto = isolates[jI++].to;\n else if (types[upto] == ourType)\n break run;\n else\n break;\n }\n iI++;\n if (recurse) {\n recurse.push(iso);\n }\n else {\n if (iso.from > iCh)\n order.push(new BidiSpan(iCh, iso.from, localLevel));\n let dirSwap = (iso.direction == LTR) != !(localLevel % 2);\n computeSectionOrder(line, dirSwap ? level + 1 : level, baseLevel, iso.inner, iso.from, iso.to, order);\n iCh = iso.to;\n }\n iScan = iso.to;\n }\n else if (iScan == to || (sameDir ? types[iScan] != ourType : types[iScan] == ourType)) {\n break;\n }\n else {\n iScan++;\n }\n }\n if (recurse)\n emitSpans(line, iCh, iScan, level + 1, baseLevel, recurse, order);\n else if (iCh < iScan)\n order.push(new BidiSpan(iCh, iScan, localLevel));\n iCh = iScan;\n }\n }\n else {\n // Iterate in reverse to flip the span order. Same code again, but\n // going from the back of the section to the front\n for (let iCh = to, iI = isolates.length; iCh > from;) {\n let sameDir = true, isNum = false;\n if (!iI || iCh > isolates[iI - 1].to) {\n let next = types[iCh - 1];\n if (next != ourType) {\n sameDir = false;\n isNum = next == 16 /* T.AN */;\n }\n }\n let recurse = !sameDir && ourType == 1 /* T.L */ ? [] : null;\n let localLevel = sameDir ? level : level + 1;\n let iScan = iCh;\n run: for (;;) {\n if (iI && iScan == isolates[iI - 1].to) {\n if (isNum)\n break run;\n let iso = isolates[--iI];\n // Scan ahead to verify that there is another char in this dir after the isolate(s)\n if (!sameDir)\n for (let upto = iso.from, jI = iI;;) {\n if (upto == from)\n break run;\n if (jI && isolates[jI - 1].to == upto)\n upto = isolates[--jI].from;\n else if (types[upto - 1] == ourType)\n break run;\n else\n break;\n }\n if (recurse) {\n recurse.push(iso);\n }\n else {\n if (iso.to < iCh)\n order.push(new BidiSpan(iso.to, iCh, localLevel));\n let dirSwap = (iso.direction == LTR) != !(localLevel % 2);\n computeSectionOrder(line, dirSwap ? level + 1 : level, baseLevel, iso.inner, iso.from, iso.to, order);\n iCh = iso.from;\n }\n iScan = iso.from;\n }\n else if (iScan == from || (sameDir ? types[iScan - 1] != ourType : types[iScan - 1] == ourType)) {\n break;\n }\n else {\n iScan--;\n }\n }\n if (recurse)\n emitSpans(line, iScan, iCh, level + 1, baseLevel, recurse, order);\n else if (iScan < iCh)\n order.push(new BidiSpan(iScan, iCh, localLevel));\n iCh = iScan;\n }\n }\n}\nfunction computeSectionOrder(line, level, baseLevel, isolates, from, to, order) {\n let outerType = (level % 2 ? 2 /* T.R */ : 1 /* T.L */);\n computeCharTypes(line, from, to, isolates, outerType);\n processBracketPairs(line, from, to, isolates, outerType);\n processNeutrals(from, to, isolates, outerType);\n emitSpans(line, from, to, level, baseLevel, isolates, order);\n}\nfunction computeOrder(line, direction, isolates) {\n if (!line)\n return [new BidiSpan(0, 0, direction == RTL ? 1 : 0)];\n if (direction == LTR && !isolates.length && !BidiRE.test(line))\n return trivialOrder(line.length);\n if (isolates.length)\n while (line.length > types.length)\n types[types.length] = 256 /* T.NI */; // Make sure types array has no gaps\n let order = [], level = direction == LTR ? 0 : 1;\n computeSectionOrder(line, level, level, isolates, 0, line.length, order);\n return order;\n}\nfunction trivialOrder(length) {\n return [new BidiSpan(0, length, 0)];\n}\nlet movedOver = \"\";\n// This implementation moves strictly visually, without concern for a\n// traversal visiting every logical position in the string. It will\n// still do so for simple input, but situations like multiple isolates\n// with the same level next to each other, or text going against the\n// main dir at the end of the line, will make some positions\n// unreachable with this motion. Each visible cursor position will\n// correspond to the lower-level bidi span that touches it.\n//\n// The alternative would be to solve an order globally for a given\n// line, making sure that it includes every position, but that would\n// require associating non-canonical (higher bidi span level)\n// positions with a given visual position, which is likely to confuse\n// people. (And would generally be a lot more complicated.)\nfunction moveVisually(line, order, dir, start, forward) {\n var _a;\n let startIndex = start.head - line.from;\n let spanI = BidiSpan.find(order, startIndex, (_a = start.bidiLevel) !== null && _a !== void 0 ? _a : -1, start.assoc);\n let span = order[spanI], spanEnd = span.side(forward, dir);\n // End of span\n if (startIndex == spanEnd) {\n let nextI = spanI += forward ? 1 : -1;\n if (nextI < 0 || nextI >= order.length)\n return null;\n span = order[spanI = nextI];\n startIndex = span.side(!forward, dir);\n spanEnd = span.side(forward, dir);\n }\n let nextIndex = findClusterBreak(line.text, startIndex, span.forward(forward, dir));\n if (nextIndex < span.from || nextIndex > span.to)\n nextIndex = spanEnd;\n movedOver = line.text.slice(Math.min(startIndex, nextIndex), Math.max(startIndex, nextIndex));\n let nextSpan = spanI == (forward ? order.length - 1 : 0) ? null : order[spanI + (forward ? 1 : -1)];\n if (nextSpan && nextIndex == spanEnd && nextSpan.level + (forward ? 0 : 1) < span.level)\n return EditorSelection.cursor(nextSpan.side(!forward, dir) + line.from, nextSpan.forward(forward, dir) ? 1 : -1, nextSpan.level);\n return EditorSelection.cursor(nextIndex + line.from, span.forward(forward, dir) ? -1 : 1, span.level);\n}\nfunction autoDirection(text, from, to) {\n for (let i = from; i < to; i++) {\n let type = charType(text.charCodeAt(i));\n if (type == 1 /* T.L */)\n return LTR;\n if (type == 2 /* T.R */ || type == 4 /* T.AL */)\n return RTL;\n }\n return LTR;\n}\n\nconst clickAddsSelectionRange = /*@__PURE__*/Facet.define();\nconst dragMovesSelection$1 = /*@__PURE__*/Facet.define();\nconst mouseSelectionStyle = /*@__PURE__*/Facet.define();\nconst exceptionSink = /*@__PURE__*/Facet.define();\nconst updateListener = /*@__PURE__*/Facet.define();\nconst inputHandler = /*@__PURE__*/Facet.define();\nconst focusChangeEffect = /*@__PURE__*/Facet.define();\nconst clipboardInputFilter = /*@__PURE__*/Facet.define();\nconst clipboardOutputFilter = /*@__PURE__*/Facet.define();\nconst perLineTextDirection = /*@__PURE__*/Facet.define({\n combine: values => values.some(x => x)\n});\nconst nativeSelectionHidden = /*@__PURE__*/Facet.define({\n combine: values => values.some(x => x)\n});\nconst scrollHandler = /*@__PURE__*/Facet.define();\nclass ScrollTarget {\n constructor(range, y = \"nearest\", x = \"nearest\", yMargin = 5, xMargin = 5, \n // This data structure is abused to also store precise scroll\n // snapshots, instead of a `scrollIntoView` request. When this\n // flag is `true`, `range` points at a position in the reference\n // line, `yMargin` holds the difference between the top of that\n // line and the top of the editor, and `xMargin` holds the\n // editor's `scrollLeft`.\n isSnapshot = false) {\n this.range = range;\n this.y = y;\n this.x = x;\n this.yMargin = yMargin;\n this.xMargin = xMargin;\n this.isSnapshot = isSnapshot;\n }\n map(changes) {\n return changes.empty ? this :\n new ScrollTarget(this.range.map(changes), this.y, this.x, this.yMargin, this.xMargin, this.isSnapshot);\n }\n clip(state) {\n return this.range.to <= state.doc.length ? this :\n new ScrollTarget(EditorSelection.cursor(state.doc.length), this.y, this.x, this.yMargin, this.xMargin, this.isSnapshot);\n }\n}\nconst scrollIntoView = /*@__PURE__*/StateEffect.define({ map: (t, ch) => t.map(ch) });\nconst setEditContextFormatting = /*@__PURE__*/StateEffect.define();\n/**\nLog or report an unhandled exception in client code. Should\nprobably only be used by extension code that allows client code to\nprovide functions, and calls those functions in a context where an\nexception can't be propagated to calling code in a reasonable way\n(for example when in an event handler).\n\nEither calls a handler registered with\n[`EditorView.exceptionSink`](https://codemirror.net/6/docs/ref/#view.EditorView^exceptionSink),\n`window.onerror`, if defined, or `console.error` (in which case\nit'll pass `context`, when given, as first argument).\n*/\nfunction logException(state, exception, context) {\n let handler = state.facet(exceptionSink);\n if (handler.length)\n handler[0](exception);\n else if (window.onerror && window.onerror(String(exception), context, undefined, undefined, exception)) ;\n else if (context)\n console.error(context + \":\", exception);\n else\n console.error(exception);\n}\nconst editable = /*@__PURE__*/Facet.define({ combine: values => values.length ? values[0] : true });\nlet nextPluginID = 0;\nconst viewPlugin = /*@__PURE__*/Facet.define({\n combine(plugins) {\n return plugins.filter((p, i) => {\n for (let j = 0; j < i; j++)\n if (plugins[j].plugin == p.plugin)\n return false;\n return true;\n });\n }\n});\n/**\nView plugins associate stateful values with a view. They can\ninfluence the way the content is drawn, and are notified of things\nthat happen in the view. They optionally take an argument, in\nwhich case you need to call [`of`](https://codemirror.net/6/docs/ref/#view.ViewPlugin.of) to create\nan extension for the plugin. When the argument type is undefined,\nyou can use the plugin instance as an extension directly.\n*/\nclass ViewPlugin {\n constructor(\n /**\n @internal\n */\n id, \n /**\n @internal\n */\n create, \n /**\n @internal\n */\n domEventHandlers, \n /**\n @internal\n */\n domEventObservers, buildExtensions) {\n this.id = id;\n this.create = create;\n this.domEventHandlers = domEventHandlers;\n this.domEventObservers = domEventObservers;\n this.baseExtensions = buildExtensions(this);\n this.extension = this.baseExtensions.concat(viewPlugin.of({ plugin: this, arg: undefined }));\n }\n /**\n Create an extension for this plugin with the given argument.\n */\n of(arg) {\n return this.baseExtensions.concat(viewPlugin.of({ plugin: this, arg }));\n }\n /**\n Define a plugin from a constructor function that creates the\n plugin's value, given an editor view.\n */\n static define(create, spec) {\n const { eventHandlers, eventObservers, provide, decorations: deco } = spec || {};\n return new ViewPlugin(nextPluginID++, create, eventHandlers, eventObservers, plugin => {\n let ext = [];\n if (deco)\n ext.push(decorations.of(view => {\n let pluginInst = view.plugin(plugin);\n return pluginInst ? deco(pluginInst) : Decoration.none;\n }));\n if (provide)\n ext.push(provide(plugin));\n return ext;\n });\n }\n /**\n Create a plugin for a class whose constructor takes a single\n editor view as argument.\n */\n static fromClass(cls, spec) {\n return ViewPlugin.define((view, arg) => new cls(view, arg), spec);\n }\n}\nclass PluginInstance {\n constructor(spec) {\n this.spec = spec;\n // When starting an update, all plugins have this field set to the\n // update object, indicating they need to be updated. When finished\n // updating, it is set to `null`. Retrieving a plugin that needs to\n // be updated with `view.plugin` forces an eager update.\n this.mustUpdate = null;\n // This is null when the plugin is initially created, but\n // initialized on the first update.\n this.value = null;\n }\n get plugin() { return this.spec && this.spec.plugin; }\n update(view) {\n if (!this.value) {\n if (this.spec) {\n try {\n this.value = this.spec.plugin.create(view, this.spec.arg);\n }\n catch (e) {\n logException(view.state, e, \"CodeMirror plugin crashed\");\n this.deactivate();\n }\n }\n }\n else if (this.mustUpdate) {\n let update = this.mustUpdate;\n this.mustUpdate = null;\n if (this.value.update) {\n try {\n this.value.update(update);\n }\n catch (e) {\n logException(update.state, e, \"CodeMirror plugin crashed\");\n if (this.value.destroy)\n try {\n this.value.destroy();\n }\n catch (_) { }\n this.deactivate();\n }\n }\n }\n return this;\n }\n destroy(view) {\n var _a;\n if ((_a = this.value) === null || _a === void 0 ? void 0 : _a.destroy) {\n try {\n this.value.destroy();\n }\n catch (e) {\n logException(view.state, e, \"CodeMirror plugin crashed\");\n }\n }\n }\n deactivate() {\n this.spec = this.value = null;\n }\n}\nconst editorAttributes = /*@__PURE__*/Facet.define();\nconst contentAttributes = /*@__PURE__*/Facet.define();\n// Provide decorations\nconst decorations = /*@__PURE__*/Facet.define();\nconst blockWrappers = /*@__PURE__*/Facet.define();\nconst outerDecorations = /*@__PURE__*/Facet.define();\nconst atomicRanges = /*@__PURE__*/Facet.define();\nconst bidiIsolatedRanges = /*@__PURE__*/Facet.define();\nfunction getIsolatedRanges(view, line) {\n let isolates = view.state.facet(bidiIsolatedRanges);\n if (!isolates.length)\n return isolates;\n let sets = isolates.map(i => i instanceof Function ? i(view) : i);\n let result = [];\n RangeSet.spans(sets, line.from, line.to, {\n point() { },\n span(fromDoc, toDoc, active, open) {\n let from = fromDoc - line.from, to = toDoc - line.from;\n let level = result;\n for (let i = active.length - 1; i >= 0; i--, open--) {\n let direction = active[i].spec.bidiIsolate, update;\n if (direction == null)\n direction = autoDirection(line.text, from, to);\n if (open > 0 && level.length &&\n (update = level[level.length - 1]).to == from && update.direction == direction) {\n update.to = to;\n level = update.inner;\n }\n else {\n let add = { from, to, direction, inner: [] };\n level.push(add);\n level = add.inner;\n }\n }\n }\n });\n return result;\n}\nconst scrollMargins = /*@__PURE__*/Facet.define();\nfunction getScrollMargins(view) {\n let left = 0, right = 0, top = 0, bottom = 0;\n for (let source of view.state.facet(scrollMargins)) {\n let m = source(view);\n if (m) {\n if (m.left != null)\n left = Math.max(left, m.left);\n if (m.right != null)\n right = Math.max(right, m.right);\n if (m.top != null)\n top = Math.max(top, m.top);\n if (m.bottom != null)\n bottom = Math.max(bottom, m.bottom);\n }\n }\n return { left, right, top, bottom };\n}\nconst styleModule = /*@__PURE__*/Facet.define();\nclass ChangedRange {\n constructor(fromA, toA, fromB, toB) {\n this.fromA = fromA;\n this.toA = toA;\n this.fromB = fromB;\n this.toB = toB;\n }\n join(other) {\n return new ChangedRange(Math.min(this.fromA, other.fromA), Math.max(this.toA, other.toA), Math.min(this.fromB, other.fromB), Math.max(this.toB, other.toB));\n }\n addToSet(set) {\n let i = set.length, me = this;\n for (; i > 0; i--) {\n let range = set[i - 1];\n if (range.fromA > me.toA)\n continue;\n if (range.toA < me.fromA)\n break;\n me = me.join(range);\n set.splice(i - 1, 1);\n }\n set.splice(i, 0, me);\n return set;\n }\n // Extend a set to cover all the content in `ranges`, which is a\n // flat array with each pair of numbers representing fromB/toB\n // positions. These pairs are generated in unchanged ranges, so the\n // offset between doc A and doc B is the same for their start and\n // end points.\n static extendWithRanges(diff, ranges) {\n if (ranges.length == 0)\n return diff;\n let result = [];\n for (let dI = 0, rI = 0, off = 0;;) {\n let nextD = dI < diff.length ? diff[dI].fromB : 1e9;\n let nextR = rI < ranges.length ? ranges[rI] : 1e9;\n let fromB = Math.min(nextD, nextR);\n if (fromB == 1e9)\n break;\n let fromA = fromB + off, toB = fromB, toA = fromA;\n for (;;) {\n if (rI < ranges.length && ranges[rI] <= toB) {\n let end = ranges[rI + 1];\n rI += 2;\n toB = Math.max(toB, end);\n for (let i = dI; i < diff.length && diff[i].fromB <= toB; i++)\n off = diff[i].toA - diff[i].toB;\n toA = Math.max(toA, end + off);\n }\n else if (dI < diff.length && diff[dI].fromB <= toB) {\n let next = diff[dI++];\n toB = Math.max(toB, next.toB);\n toA = Math.max(toA, next.toA);\n off = next.toA - next.toB;\n }\n else {\n break;\n }\n }\n result.push(new ChangedRange(fromA, toA, fromB, toB));\n }\n return result;\n }\n}\n/**\nView [plugins](https://codemirror.net/6/docs/ref/#view.ViewPlugin) are given instances of this\nclass, which describe what happened, whenever the view is updated.\n*/\nclass ViewUpdate {\n constructor(\n /**\n The editor view that the update is associated with.\n */\n view, \n /**\n The new editor state.\n */\n state, \n /**\n The transactions involved in the update. May be empty.\n */\n transactions) {\n this.view = view;\n this.state = state;\n this.transactions = transactions;\n /**\n @internal\n */\n this.flags = 0;\n this.startState = view.state;\n this.changes = ChangeSet.empty(this.startState.doc.length);\n for (let tr of transactions)\n this.changes = this.changes.compose(tr.changes);\n let changedRanges = [];\n this.changes.iterChangedRanges((fromA, toA, fromB, toB) => changedRanges.push(new ChangedRange(fromA, toA, fromB, toB)));\n this.changedRanges = changedRanges;\n }\n /**\n @internal\n */\n static create(view, state, transactions) {\n return new ViewUpdate(view, state, transactions);\n }\n /**\n Tells you whether the [viewport](https://codemirror.net/6/docs/ref/#view.EditorView.viewport) or\n [visible ranges](https://codemirror.net/6/docs/ref/#view.EditorView.visibleRanges) changed in this\n update.\n */\n get viewportChanged() {\n return (this.flags & 4 /* UpdateFlag.Viewport */) > 0;\n }\n /**\n Returns true when\n [`viewportChanged`](https://codemirror.net/6/docs/ref/#view.ViewUpdate.viewportChanged) is true\n and the viewport change is not just the result of mapping it in\n response to document changes.\n */\n get viewportMoved() {\n return (this.flags & 8 /* UpdateFlag.ViewportMoved */) > 0;\n }\n /**\n Indicates whether the height of a block element in the editor\n changed in this update.\n */\n get heightChanged() {\n return (this.flags & 2 /* UpdateFlag.Height */) > 0;\n }\n /**\n Returns true when the document was modified or the size of the\n editor, or elements within the editor, changed.\n */\n get geometryChanged() {\n return this.docChanged || (this.flags & (16 /* UpdateFlag.Geometry */ | 2 /* UpdateFlag.Height */)) > 0;\n }\n /**\n True when this update indicates a focus change.\n */\n get focusChanged() {\n return (this.flags & 1 /* UpdateFlag.Focus */) > 0;\n }\n /**\n Whether the document changed in this update.\n */\n get docChanged() {\n return !this.changes.empty;\n }\n /**\n Whether the selection was explicitly set in this update.\n */\n get selectionSet() {\n return this.transactions.some(tr => tr.selection);\n }\n /**\n @internal\n */\n get empty() { return this.flags == 0 && this.transactions.length == 0; }\n}\n\nconst noChildren = [];\nclass Tile {\n constructor(dom, length, flags = 0) {\n this.dom = dom;\n this.length = length;\n this.flags = flags;\n this.parent = null;\n dom.cmTile = this;\n }\n get breakAfter() { return (this.flags & 1 /* TileFlag.BreakAfter */); }\n get children() { return noChildren; }\n isWidget() { return false; }\n get isHidden() { return false; }\n isComposite() { return false; }\n isLine() { return false; }\n isText() { return false; }\n isBlock() { return false; }\n get domAttrs() { return null; }\n sync(track) {\n this.flags |= 2 /* TileFlag.Synced */;\n if (this.flags & 4 /* TileFlag.AttrsDirty */) {\n this.flags &= ~4 /* TileFlag.AttrsDirty */;\n let attrs = this.domAttrs;\n if (attrs)\n setAttrs(this.dom, attrs);\n }\n }\n toString() {\n return this.constructor.name + (this.children.length ? `(${this.children})` : \"\") + (this.breakAfter ? \"#\" : \"\");\n }\n destroy() { this.parent = null; }\n setDOM(dom) {\n this.dom = dom;\n dom.cmTile = this;\n }\n get posAtStart() {\n return this.parent ? this.parent.posBefore(this) : 0;\n }\n get posAtEnd() {\n return this.posAtStart + this.length;\n }\n posBefore(tile, start = this.posAtStart) {\n let pos = start;\n for (let child of this.children) {\n if (child == tile)\n return pos;\n pos += child.length + child.breakAfter;\n }\n throw new RangeError(\"Invalid child in posBefore\");\n }\n posAfter(tile) {\n return this.posBefore(tile) + tile.length;\n }\n covers(side) { return true; }\n coordsIn(pos, side) { return null; }\n domPosFor(off, side) {\n let index = domIndex(this.dom);\n let after = this.length ? off > 0 : side > 0;\n return new DOMPos(this.parent.dom, index + (after ? 1 : 0), off == 0 || off == this.length);\n }\n markDirty(attrs) {\n this.flags &= ~2 /* TileFlag.Synced */;\n if (attrs)\n this.flags |= 4 /* TileFlag.AttrsDirty */;\n if (this.parent && (this.parent.flags & 2 /* TileFlag.Synced */))\n this.parent.markDirty(false);\n }\n get overrideDOMText() { return null; }\n get root() {\n for (let t = this; t; t = t.parent)\n if (t instanceof DocTile)\n return t;\n return null;\n }\n static get(dom) {\n return dom.cmTile;\n }\n}\nclass CompositeTile extends Tile {\n constructor(dom) {\n super(dom, 0);\n this._children = [];\n }\n isComposite() { return true; }\n get children() { return this._children; }\n get lastChild() { return this.children.length ? this.children[this.children.length - 1] : null; }\n append(child) {\n this.children.push(child);\n child.parent = this;\n }\n sync(track) {\n if (this.flags & 2 /* TileFlag.Synced */)\n return;\n super.sync(track);\n let parent = this.dom, prev = null, next;\n let tracking = (track === null || track === void 0 ? void 0 : track.node) == parent ? track : null;\n let length = 0;\n for (let child of this.children) {\n child.sync(track);\n length += child.length + child.breakAfter;\n next = prev ? prev.nextSibling : parent.firstChild;\n if (tracking && next != child.dom)\n tracking.written = true;\n if (child.dom.parentNode == parent) {\n while (next && next != child.dom)\n next = rm$1(next);\n }\n else {\n parent.insertBefore(child.dom, next);\n }\n prev = child.dom;\n }\n next = prev ? prev.nextSibling : parent.firstChild;\n if (tracking && next)\n tracking.written = true;\n while (next)\n next = rm$1(next);\n this.length = length;\n }\n}\n// Remove a DOM node and return its next sibling.\nfunction rm$1(dom) {\n let next = dom.nextSibling;\n dom.parentNode.removeChild(dom);\n return next;\n}\n// The top-level tile. Its dom property equals view.contentDOM.\nclass DocTile extends CompositeTile {\n constructor(view, dom) {\n super(dom);\n this.view = view;\n }\n owns(tile) {\n for (; tile; tile = tile.parent)\n if (tile == this)\n return true;\n return false;\n }\n isBlock() { return true; }\n nearest(dom) {\n for (;;) {\n if (!dom)\n return null;\n let tile = Tile.get(dom);\n if (tile && this.owns(tile))\n return tile;\n dom = dom.parentNode;\n }\n }\n blockTiles(f) {\n for (let stack = [], cur = this, i = 0, pos = 0;;) {\n if (i == cur.children.length) {\n if (!stack.length)\n return;\n cur = cur.parent;\n if (cur.breakAfter)\n pos++;\n i = stack.pop();\n }\n else {\n let next = cur.children[i++];\n if (next instanceof BlockWrapperTile) {\n stack.push(i);\n cur = next;\n i = 0;\n }\n else {\n let end = pos + next.length;\n let result = f(next, pos);\n if (result !== undefined)\n return result;\n pos = end + next.breakAfter;\n }\n }\n }\n }\n // Find the block at the given position. If side < -1, make sure to\n // stay before block widgets at that position, if side > 1, after\n // such widgets (used for selection drawing, which needs to be able\n // to get coordinates for positions that aren't valid cursor positions).\n resolveBlock(pos, side) {\n let before, beforeOff = -1, after, afterOff = -1;\n this.blockTiles((tile, off) => {\n let end = off + tile.length;\n if (pos >= off && pos <= end) {\n if (tile.isWidget() && side >= -1 && side <= 1) {\n if (tile.flags & 32 /* TileFlag.After */)\n return true;\n if (tile.flags & 16 /* TileFlag.Before */)\n before = undefined;\n }\n if ((off < pos || pos == end && (side < -1 ? tile.length : tile.covers(1))) &&\n (!before || !tile.isWidget() && before.isWidget())) {\n before = tile;\n beforeOff = pos - off;\n }\n if ((end > pos || pos == off && (side > 1 ? tile.length : tile.covers(-1))) &&\n (!after || !tile.isWidget() && after.isWidget())) {\n after = tile;\n afterOff = pos - off;\n }\n }\n });\n if (!before && !after)\n throw new Error(\"No tile at position \" + pos);\n return before && side < 0 || !after ? { tile: before, offset: beforeOff } : { tile: after, offset: afterOff };\n }\n}\nclass BlockWrapperTile extends CompositeTile {\n constructor(dom, wrapper) {\n super(dom);\n this.wrapper = wrapper;\n }\n isBlock() { return true; }\n covers(side) {\n if (!this.children.length)\n return false;\n return side < 0 ? this.children[0].covers(-1) : this.lastChild.covers(1);\n }\n get domAttrs() { return this.wrapper.attributes; }\n static of(wrapper, dom) {\n let tile = new BlockWrapperTile(dom || document.createElement(wrapper.tagName), wrapper);\n if (!dom)\n tile.flags |= 4 /* TileFlag.AttrsDirty */;\n return tile;\n }\n}\nclass LineTile extends CompositeTile {\n constructor(dom, attrs) {\n super(dom);\n this.attrs = attrs;\n }\n isLine() { return true; }\n static start(attrs, dom, keepAttrs) {\n let line = new LineTile(dom || document.createElement(\"div\"), attrs);\n if (!dom || !keepAttrs)\n line.flags |= 4 /* TileFlag.AttrsDirty */;\n return line;\n }\n get domAttrs() { return this.attrs; }\n // Find the tile associated with a given position in this line.\n resolveInline(pos, side, forCoords) {\n let before = null, beforeOff = -1, after = null, afterOff = -1;\n function scan(tile, pos) {\n for (let i = 0, off = 0; i < tile.children.length && off <= pos; i++) {\n let child = tile.children[i], end = off + child.length;\n if (end >= pos) {\n if (child.isComposite()) {\n scan(child, pos - off);\n }\n else if ((!after || after.isHidden && (side > 0 || forCoords && onSameLine(after, child))) &&\n (end > pos || (child.flags & 32 /* TileFlag.After */))) {\n after = child;\n afterOff = pos - off;\n }\n else if (off < pos || (child.flags & 16 /* TileFlag.Before */) && !child.isHidden) {\n before = child;\n beforeOff = pos - off;\n }\n }\n off = end;\n }\n }\n scan(this, pos);\n let target = ((side < 0 ? before : after) || before || after);\n return target ? { tile: target, offset: target == before ? beforeOff : afterOff } : null;\n }\n coordsIn(pos, side) {\n let found = this.resolveInline(pos, side, true);\n if (!found)\n return fallbackRect(this);\n return found.tile.coordsIn(Math.max(0, found.offset), side);\n }\n domIn(pos, side) {\n let found = this.resolveInline(pos, side);\n if (found) {\n let { tile, offset } = found;\n if (this.dom.contains(tile.dom)) {\n if (tile.isText())\n return new DOMPos(tile.dom, Math.min(tile.dom.nodeValue.length, offset));\n return tile.domPosFor(offset, tile.flags & 16 /* TileFlag.Before */ ? 1 : tile.flags & 32 /* TileFlag.After */ ? -1 : side);\n }\n let parent = found.tile.parent, saw = false;\n for (let ch of parent.children) {\n if (saw)\n return new DOMPos(ch.dom, 0);\n if (ch == found.tile) {\n saw = true;\n }\n }\n }\n return new DOMPos(this.dom, 0);\n }\n}\nfunction fallbackRect(tile) {\n let last = tile.dom.lastChild;\n if (!last)\n return tile.dom.getBoundingClientRect();\n let rects = clientRectsFor(last);\n return rects[rects.length - 1] || null;\n}\nfunction onSameLine(a, b) {\n let posA = a.coordsIn(0, 1), posB = b.coordsIn(0, 1);\n return posA && posB && posB.top < posA.bottom;\n}\nclass MarkTile extends CompositeTile {\n constructor(dom, mark) {\n super(dom);\n this.mark = mark;\n }\n get domAttrs() { return this.mark.attrs; }\n static of(mark, dom) {\n let tile = new MarkTile(dom || document.createElement(mark.tagName), mark);\n if (!dom)\n tile.flags |= 4 /* TileFlag.AttrsDirty */;\n return tile;\n }\n}\nclass TextTile extends Tile {\n constructor(dom, text) {\n super(dom, text.length);\n this.text = text;\n }\n sync(track) {\n if (this.flags & 2 /* TileFlag.Synced */)\n return;\n super.sync(track);\n if (this.dom.nodeValue != this.text) {\n if (track && track.node == this.dom)\n track.written = true;\n this.dom.nodeValue = this.text;\n }\n }\n isText() { return true; }\n toString() { return JSON.stringify(this.text); }\n coordsIn(pos, side) {\n let length = this.dom.nodeValue.length;\n if (pos > length)\n pos = length;\n let from = pos, to = pos, flatten = 0;\n if (pos == 0 && side < 0 || pos == length && side >= 0) {\n if (!(browser.chrome || browser.gecko)) { // These browsers reliably return valid rectangles for empty ranges\n if (pos) {\n from--;\n flatten = 1;\n } // FIXME this is wrong in RTL text\n else if (to < length) {\n to++;\n flatten = -1;\n }\n }\n }\n else {\n if (side < 0)\n from--;\n else if (to < length)\n to++;\n }\n let rects = textRange(this.dom, from, to).getClientRects();\n if (!rects.length)\n return null;\n let rect = rects[(flatten ? flatten < 0 : side >= 0) ? 0 : rects.length - 1];\n if (browser.safari && !flatten && rect.width == 0)\n rect = Array.prototype.find.call(rects, r => r.width) || rect;\n return flatten ? flattenRect(rect, flatten < 0) : rect || null;\n }\n static of(text, dom) {\n let tile = new TextTile(dom || document.createTextNode(text), text);\n if (!dom)\n tile.flags |= 2 /* TileFlag.Synced */;\n return tile;\n }\n}\nclass WidgetTile extends Tile {\n constructor(dom, length, widget, flags) {\n super(dom, length, flags);\n this.widget = widget;\n }\n isWidget() { return true; }\n get isHidden() { return this.widget.isHidden; }\n covers(side) {\n if (this.flags & 48 /* TileFlag.PointWidget */)\n return false;\n return (this.flags & (side < 0 ? 64 /* TileFlag.IncStart */ : 128 /* TileFlag.IncEnd */)) > 0;\n }\n coordsIn(pos, side) { return this.coordsInWidget(pos, side, false); }\n coordsInWidget(pos, side, block) {\n let custom = this.widget.coordsAt(this.dom, pos, side);\n if (custom)\n return custom;\n if (block) {\n return flattenRect(this.dom.getBoundingClientRect(), this.length ? pos == 0 : side <= 0);\n }\n else {\n let rects = this.dom.getClientRects(), rect = null;\n if (!rects.length)\n return null;\n let fromBack = (this.flags & 16 /* TileFlag.Before */) ? true : (this.flags & 32 /* TileFlag.After */) ? false : pos > 0;\n for (let i = fromBack ? rects.length - 1 : 0;; i += (fromBack ? -1 : 1)) {\n rect = rects[i];\n if (pos > 0 ? i == 0 : i == rects.length - 1 || rect.top < rect.bottom)\n break;\n }\n return flattenRect(rect, !fromBack);\n }\n }\n get overrideDOMText() {\n if (!this.length)\n return Text.empty;\n let { root } = this;\n if (!root)\n return Text.empty;\n let start = this.posAtStart;\n return root.view.state.doc.slice(start, start + this.length);\n }\n destroy() {\n super.destroy();\n this.widget.destroy(this.dom);\n }\n static of(widget, view, length, flags, dom) {\n if (!dom) {\n dom = widget.toDOM(view);\n if (!widget.editable)\n dom.contentEditable = \"false\";\n }\n return new WidgetTile(dom, length, widget, flags);\n }\n}\n// These are drawn around uneditable widgets to avoid a number of\n// browser bugs that show up when the cursor is directly next to\n// uneditable inline content.\nclass WidgetBufferTile extends Tile {\n constructor(flags) {\n let img = document.createElement(\"img\");\n img.className = \"cm-widgetBuffer\";\n img.setAttribute(\"aria-hidden\", \"true\");\n super(img, 0, flags);\n }\n get isHidden() { return true; }\n get overrideDOMText() { return Text.empty; }\n coordsIn(pos) { return this.dom.getBoundingClientRect(); }\n}\n// Represents a position in the tile tree.\nclass TilePointer {\n constructor(top) {\n this.index = 0;\n this.beforeBreak = false;\n this.parents = [];\n this.tile = top;\n }\n // Advance by the given distance. If side is -1, stop leaving or\n // entering tiles, or skipping zero-length tiles, once the distance\n // has been traversed. When side is 1, leave, enter, or skip\n // everything at the end position.\n advance(dist, side, walker) {\n let { tile, index, beforeBreak, parents } = this;\n while (dist || side > 0) {\n if (!tile.isComposite()) {\n if (index == tile.length) {\n beforeBreak = !!tile.breakAfter;\n ({ tile, index } = parents.pop());\n index++;\n }\n else if (!dist) {\n break;\n }\n else {\n let take = Math.min(dist, tile.length - index);\n if (walker)\n walker.skip(tile, index, index + take);\n dist -= take;\n index += take;\n }\n }\n else if (beforeBreak) {\n if (!dist)\n break;\n if (walker)\n walker.break();\n dist--;\n beforeBreak = false;\n }\n else if (index == tile.children.length) {\n if (!dist && !parents.length)\n break;\n if (walker)\n walker.leave(tile);\n beforeBreak = !!tile.breakAfter;\n ({ tile, index } = parents.pop());\n index++;\n }\n else {\n let next = tile.children[index], brk = next.breakAfter;\n if ((side > 0 ? next.length <= dist : next.length < dist) &&\n (!walker || walker.skip(next, 0, next.length) !== false || !next.isComposite)) {\n beforeBreak = !!brk;\n index++;\n dist -= next.length;\n }\n else {\n parents.push({ tile, index });\n tile = next;\n index = 0;\n if (walker && next.isComposite())\n walker.enter(next);\n }\n }\n }\n this.tile = tile;\n this.index = index;\n this.beforeBreak = beforeBreak;\n return this;\n }\n get root() { return (this.parents.length ? this.parents[0].tile : this.tile); }\n}\n\n// Used to track open block wrappers\nclass OpenWrapper {\n constructor(from, to, wrapper, rank) {\n this.from = from;\n this.to = to;\n this.wrapper = wrapper;\n this.rank = rank;\n }\n}\n// This class builds up a new document tile using input from either\n// iteration over the old tree or iteration over the document +\n// decorations. The add* methods emit elements into the tile\n// structure. To avoid awkward synchronization issues, marks and block\n// wrappers are treated as belonging to to their content, rather than\n// opened/closed independently.\n//\n// All composite tiles that are touched by changes are rebuilt,\n// reusing as much of the old tree (either whole nodes or just DOM\n// elements) as possible. The new tree is built without the Synced\n// flag, and then synced (during which DOM parent/child relations are\n// fixed up, text nodes filled in, and attributes added) in a second\n// phase.\nclass TileBuilder {\n constructor(cache, root, blockWrappers) {\n this.cache = cache;\n this.root = root;\n this.blockWrappers = blockWrappers;\n this.curLine = null;\n this.lastBlock = null;\n this.afterWidget = null;\n this.pos = 0;\n this.wrappers = [];\n this.wrapperPos = 0;\n }\n addText(text, marks, openStart, tile) {\n var _a;\n this.flushBuffer();\n let parent = this.ensureMarks(marks, openStart);\n let prev = parent.lastChild;\n if (prev && prev.isText() && !(prev.flags & 8 /* TileFlag.Composition */) && prev.length + text.length < 512 /* C.Chunk */) {\n this.cache.reused.set(prev, 2 /* Reused.DOM */);\n let tile = parent.children[parent.children.length - 1] = new TextTile(prev.dom, prev.text + text);\n tile.parent = parent;\n }\n else {\n parent.append(tile || TextTile.of(text, (_a = this.cache.find(TextTile)) === null || _a === void 0 ? void 0 : _a.dom));\n }\n this.pos += text.length;\n this.afterWidget = null;\n }\n addComposition(composition, context) {\n let line = this.curLine;\n if (line.dom != context.line.dom) {\n line.setDOM(this.cache.reused.has(context.line) ? freeNode(context.line.dom) : context.line.dom);\n this.cache.reused.set(context.line, 2 /* Reused.DOM */);\n }\n let head = line;\n for (let i = context.marks.length - 1; i >= 0; i--) {\n let mark = context.marks[i];\n let last = head.lastChild;\n if (last instanceof MarkTile && last.mark.eq(mark.mark)) {\n if (last.dom != mark.dom)\n last.setDOM(freeNode(mark.dom));\n head = last;\n }\n else {\n if (this.cache.reused.get(mark)) {\n let tile = Tile.get(mark.dom);\n if (tile)\n tile.setDOM(freeNode(mark.dom));\n }\n let nw = MarkTile.of(mark.mark, mark.dom);\n head.append(nw);\n head = nw;\n }\n this.cache.reused.set(mark, 2 /* Reused.DOM */);\n }\n let oldTile = Tile.get(composition.text);\n if (oldTile)\n this.cache.reused.set(oldTile, 2 /* Reused.DOM */);\n let text = new TextTile(composition.text, composition.text.nodeValue);\n text.flags |= 8 /* TileFlag.Composition */;\n head.append(text);\n }\n addInlineWidget(widget, marks, openStart) {\n // Adjacent same-side-facing non-replacing widgets don't need buffers between them\n let noSpace = this.afterWidget && (widget.flags & 48 /* TileFlag.PointWidget */) &&\n (this.afterWidget.flags & 48 /* TileFlag.PointWidget */) == (widget.flags & 48 /* TileFlag.PointWidget */);\n if (!noSpace)\n this.flushBuffer();\n let parent = this.ensureMarks(marks, openStart);\n if (!noSpace && !(widget.flags & 16 /* TileFlag.Before */))\n parent.append(this.getBuffer(1));\n parent.append(widget);\n this.pos += widget.length;\n this.afterWidget = widget;\n }\n addMark(tile, marks, openStart) {\n this.flushBuffer();\n let parent = this.ensureMarks(marks, openStart);\n parent.append(tile);\n this.pos += tile.length;\n this.afterWidget = null;\n }\n addBlockWidget(widget) {\n this.getBlockPos().append(widget);\n this.pos += widget.length;\n this.lastBlock = widget;\n this.endLine();\n }\n continueWidget(length) {\n let widget = this.afterWidget || this.lastBlock;\n widget.length += length;\n this.pos += length;\n }\n addLineStart(attrs, dom) {\n var _a;\n if (!attrs)\n attrs = lineBaseAttrs;\n let tile = LineTile.start(attrs, dom || ((_a = this.cache.find(LineTile)) === null || _a === void 0 ? void 0 : _a.dom), !!dom);\n this.getBlockPos().append(this.lastBlock = this.curLine = tile);\n }\n addLine(tile) {\n this.getBlockPos().append(tile);\n this.pos += tile.length;\n this.lastBlock = tile;\n this.endLine();\n }\n addBreak() {\n this.lastBlock.flags |= 1 /* TileFlag.BreakAfter */;\n this.endLine();\n this.pos++;\n }\n addLineStartIfNotCovered(attrs) {\n if (!this.blockPosCovered())\n this.addLineStart(attrs);\n }\n ensureLine(attrs) {\n if (!this.curLine)\n this.addLineStart(attrs);\n }\n ensureMarks(marks, openStart) {\n var _a;\n let parent = this.curLine;\n for (let i = marks.length - 1; i >= 0; i--) {\n let mark = marks[i], last;\n if (openStart > 0 && (last = parent.lastChild) && last instanceof MarkTile && last.mark.eq(mark)) {\n parent = last;\n openStart--;\n }\n else {\n let tile = MarkTile.of(mark, (_a = this.cache.find(MarkTile, m => m.mark.eq(mark))) === null || _a === void 0 ? void 0 : _a.dom);\n parent.append(tile);\n parent = tile;\n openStart = 0;\n }\n }\n return parent;\n }\n endLine() {\n if (this.curLine) {\n this.flushBuffer();\n let last = this.curLine.lastChild;\n if (!last || !hasContent(this.curLine, false) ||\n last.dom.nodeName != \"BR\" && last.isWidget() && !(browser.ios && hasContent(this.curLine, true)))\n this.curLine.append(this.cache.findWidget(BreakWidget, 0, 32 /* TileFlag.After */) ||\n new WidgetTile(BreakWidget.toDOM(), 0, BreakWidget, 32 /* TileFlag.After */));\n this.curLine = this.afterWidget = null;\n }\n }\n updateBlockWrappers() {\n if (this.wrapperPos > this.pos + 10000 /* C.WrapperReset */) {\n this.blockWrappers.goto(this.pos);\n this.wrappers.length = 0;\n }\n for (let i = this.wrappers.length - 1; i >= 0; i--)\n if (this.wrappers[i].to < this.pos)\n this.wrappers.splice(i, 1);\n for (let cur = this.blockWrappers; cur.value && cur.from <= this.pos; cur.next())\n if (cur.to >= this.pos) {\n let wrap = new OpenWrapper(cur.from, cur.to, cur.value, cur.rank), i = this.wrappers.length;\n while (i > 0 && (this.wrappers[i - 1].rank - wrap.rank || this.wrappers[i - 1].to - wrap.to) < 0)\n i--;\n this.wrappers.splice(i, 0, wrap);\n }\n this.wrapperPos = this.pos;\n }\n getBlockPos() {\n var _a;\n this.updateBlockWrappers();\n let parent = this.root;\n for (let wrap of this.wrappers) {\n let last = parent.lastChild;\n if (wrap.from < this.pos && last instanceof BlockWrapperTile && last.wrapper.eq(wrap.wrapper)) {\n parent = last;\n }\n else {\n let tile = BlockWrapperTile.of(wrap.wrapper, (_a = this.cache.find(BlockWrapperTile, t => t.wrapper.eq(wrap.wrapper))) === null || _a === void 0 ? void 0 : _a.dom);\n parent.append(tile);\n parent = tile;\n }\n }\n return parent;\n }\n blockPosCovered() {\n let last = this.lastBlock;\n return last != null && !last.breakAfter && (!last.isWidget() || (last.flags & (32 /* TileFlag.After */ | 128 /* TileFlag.IncEnd */)) > 0);\n }\n getBuffer(side) {\n let flags = 2 /* TileFlag.Synced */ | (side < 0 ? 16 /* TileFlag.Before */ : 32 /* TileFlag.After */);\n let found = this.cache.find(WidgetBufferTile, undefined, 1 /* Reused.Full */);\n if (found)\n found.flags = flags;\n return found || new WidgetBufferTile(flags);\n }\n flushBuffer() {\n if (this.afterWidget && !(this.afterWidget.flags & 32 /* TileFlag.After */)) {\n this.afterWidget.parent.append(this.getBuffer(-1));\n this.afterWidget = null;\n }\n }\n}\n// Helps getting efficient access to the document text.\nclass TextStream {\n constructor(doc) {\n this.skipCount = 0;\n this.text = \"\";\n this.textOff = 0;\n this.cursor = doc.iter();\n }\n skip(len) {\n // Advance the iterator past the replaced content\n if (this.textOff + len <= this.text.length) {\n this.textOff += len;\n }\n else {\n this.skipCount += len - (this.text.length - this.textOff);\n this.text = \"\";\n this.textOff = 0;\n }\n }\n next(maxLen) {\n if (this.textOff == this.text.length) {\n let { value, lineBreak, done } = this.cursor.next(this.skipCount);\n this.skipCount = 0;\n if (done)\n throw new Error(\"Ran out of text content when drawing inline views\");\n this.text = value;\n let len = this.textOff = Math.min(maxLen, value.length);\n return lineBreak ? null : value.slice(0, len);\n }\n let end = Math.min(this.text.length, this.textOff + maxLen);\n let chars = this.text.slice(this.textOff, end);\n this.textOff = end;\n return chars;\n }\n}\n// Assign the tile classes bucket numbers for caching.\nconst buckets = [WidgetTile, LineTile, TextTile, MarkTile, WidgetBufferTile, BlockWrapperTile, DocTile];\nfor (let i = 0; i < buckets.length; i++)\n buckets[i].bucket = i;\n// Leaf tiles and line tiles may be reused in their entirety. All\n// others will get new tiles allocated, using the old DOM when\n// possible.\nclass TileCache {\n constructor(view) {\n this.view = view;\n // Buckets are circular buffers, using `index` as the current\n // position.\n this.buckets = buckets.map(() => []);\n this.index = buckets.map(() => 0);\n this.reused = new Map;\n }\n // Put a tile in the cache.\n add(tile) {\n let i = tile.constructor.bucket, bucket = this.buckets[i];\n if (bucket.length < 6 /* C.Bucket */)\n bucket.push(tile);\n else\n bucket[this.index[i] = (this.index[i] + 1) % 6 /* C.Bucket */] = tile;\n }\n find(cls, test, type = 2 /* Reused.DOM */) {\n let i = cls.bucket;\n let bucket = this.buckets[i], off = this.index[i];\n for (let j = bucket.length - 1; j >= 0; j--) {\n // Look at the most recently added items first (last-in, first-out)\n let index = (j + off) % bucket.length, tile = bucket[index];\n if ((!test || test(tile)) && !this.reused.has(tile)) {\n bucket.splice(index, 1);\n if (index < off)\n this.index[i]--;\n this.reused.set(tile, type);\n return tile;\n }\n }\n return null;\n }\n findWidget(widget, length, flags) {\n let widgets = this.buckets[0];\n if (widgets.length)\n for (let i = 0, pass = 0;; i++) {\n if (i == widgets.length) {\n if (pass)\n return null;\n pass = 1;\n i = 0;\n }\n let tile = widgets[i];\n if (!this.reused.has(tile) &&\n (pass == 0 ? tile.widget.compare(widget)\n : tile.widget.constructor == widget.constructor && widget.updateDOM(tile.dom, this.view))) {\n widgets.splice(i, 1);\n if (i < this.index[0])\n this.index[0]--;\n if (tile.widget == widget && tile.length == length && (tile.flags & (496 /* TileFlag.Widget */ | 1 /* TileFlag.BreakAfter */)) == flags) {\n this.reused.set(tile, 1 /* Reused.Full */);\n return tile;\n }\n else {\n this.reused.set(tile, 2 /* Reused.DOM */);\n return new WidgetTile(tile.dom, length, widget, (tile.flags & ~(496 /* TileFlag.Widget */ | 1 /* TileFlag.BreakAfter */)) | flags);\n }\n }\n }\n }\n reuse(tile) {\n this.reused.set(tile, 1 /* Reused.Full */);\n return tile;\n }\n maybeReuse(tile, type = 2 /* Reused.DOM */) {\n if (this.reused.has(tile))\n return undefined;\n this.reused.set(tile, type);\n return tile.dom;\n }\n clear() {\n for (let i = 0; i < this.buckets.length; i++)\n this.buckets[i].length = this.index[i] = 0;\n }\n}\n// This class organizes a pass over the document, guided by the array\n// of replaced ranges. For ranges that haven't changed, it iterates\n// the old tree and copies its content into the new document. For\n// changed ranges, it runs a decoration iterator to guide generation\n// of content.\nclass TileUpdate {\n constructor(view, old, blockWrappers, decorations, disallowBlockEffectsFor) {\n this.view = view;\n this.decorations = decorations;\n this.disallowBlockEffectsFor = disallowBlockEffectsFor;\n this.openWidget = false;\n this.openMarks = 0;\n this.cache = new TileCache(view);\n this.text = new TextStream(view.state.doc);\n this.builder = new TileBuilder(this.cache, new DocTile(view, view.contentDOM), RangeSet.iter(blockWrappers));\n this.cache.reused.set(old, 2 /* Reused.DOM */);\n this.old = new TilePointer(old);\n this.reuseWalker = {\n skip: (tile, from, to) => {\n this.cache.add(tile);\n if (tile.isComposite())\n return false;\n },\n enter: tile => this.cache.add(tile),\n leave: () => { },\n break: () => { }\n };\n }\n run(changes, composition) {\n let compositionContext = composition && this.getCompositionContext(composition.text);\n for (let posA = 0, posB = 0, i = 0;;) {\n let next = i < changes.length ? changes[i++] : null;\n let skipA = next ? next.fromA : this.old.root.length;\n if (skipA > posA) {\n let len = skipA - posA;\n this.preserve(len, !i, !next);\n posA = skipA;\n posB += len;\n }\n if (!next)\n break;\n // Compositions need to be handled specially, forcing the\n // focused text node and its parent nodes to remain stable at\n // that point in the document.\n if (composition && next.fromA <= composition.range.fromA && next.toA >= composition.range.toA) {\n this.forward(next.fromA, composition.range.fromA, composition.range.fromA < composition.range.toA ? 1 : -1);\n this.emit(posB, composition.range.fromB);\n this.cache.clear(); // Must not reuse DOM across composition\n this.builder.addComposition(composition, compositionContext);\n this.text.skip(composition.range.toB - composition.range.fromB);\n this.forward(composition.range.fromA, next.toA);\n this.emit(composition.range.toB, next.toB);\n }\n else {\n this.forward(next.fromA, next.toA);\n this.emit(posB, next.toB);\n }\n posB = next.toB;\n posA = next.toA;\n }\n if (this.builder.curLine)\n this.builder.endLine();\n return this.builder.root;\n }\n preserve(length, incStart, incEnd) {\n let activeMarks = getMarks(this.old), openMarks = this.openMarks;\n this.old.advance(length, incEnd ? 1 : -1, {\n skip: (tile, from, to) => {\n if (tile.isWidget()) {\n if (this.openWidget) {\n this.builder.continueWidget(to - from);\n }\n else {\n let widget = to > 0 || from < tile.length\n ? WidgetTile.of(tile.widget, this.view, to - from, tile.flags & 496 /* TileFlag.Widget */, this.cache.maybeReuse(tile))\n : this.cache.reuse(tile);\n if (widget.flags & 256 /* TileFlag.Block */) {\n widget.flags &= ~1 /* TileFlag.BreakAfter */;\n this.builder.addBlockWidget(widget);\n }\n else {\n this.builder.ensureLine(null);\n this.builder.addInlineWidget(widget, activeMarks, openMarks);\n openMarks = activeMarks.length;\n }\n }\n }\n else if (tile.isText()) {\n this.builder.ensureLine(null);\n if (!from && to == tile.length && !this.cache.reused.has(tile)) {\n this.builder.addText(tile.text, activeMarks, openMarks, this.cache.reuse(tile));\n }\n else {\n this.cache.add(tile);\n this.builder.addText(tile.text.slice(from, to), activeMarks, openMarks);\n }\n openMarks = activeMarks.length;\n }\n else if (tile.isLine()) {\n tile.flags &= ~1 /* TileFlag.BreakAfter */;\n this.cache.reused.set(tile, 1 /* Reused.Full */);\n this.builder.addLine(tile);\n }\n else if (tile instanceof WidgetBufferTile) {\n this.cache.add(tile);\n }\n else if (tile instanceof MarkTile) {\n this.builder.ensureLine(null);\n this.builder.addMark(tile, activeMarks, openMarks);\n this.cache.reused.set(tile, 1 /* Reused.Full */);\n openMarks = activeMarks.length;\n }\n else {\n return false;\n }\n this.openWidget = false;\n },\n enter: (tile) => {\n if (tile.isLine()) {\n this.builder.addLineStart(tile.attrs, this.cache.maybeReuse(tile));\n }\n else {\n this.cache.add(tile);\n if (tile instanceof MarkTile)\n activeMarks.unshift(tile.mark);\n }\n this.openWidget = false;\n },\n leave: (tile) => {\n if (tile.isLine()) {\n if (activeMarks.length)\n activeMarks.length = openMarks = 0;\n }\n else if (tile instanceof MarkTile) {\n activeMarks.shift();\n openMarks = Math.min(openMarks, activeMarks.length);\n }\n },\n break: () => {\n this.builder.addBreak();\n this.openWidget = false;\n },\n });\n this.text.skip(length);\n }\n emit(from, to) {\n let pendingLineAttrs = null;\n let b = this.builder, markCount = 0;\n let openEnd = RangeSet.spans(this.decorations, from, to, {\n point: (from, to, deco, active, openStart, index) => {\n if (deco instanceof PointDecoration) {\n if (this.disallowBlockEffectsFor[index]) {\n if (deco.block)\n throw new RangeError(\"Block decorations may not be specified via plugins\");\n if (to > this.view.state.doc.lineAt(from).to)\n throw new RangeError(\"Decorations that replace line breaks may not be specified via plugins\");\n }\n markCount = active.length;\n if (openStart > active.length) {\n b.continueWidget(to - from);\n }\n else {\n let widget = deco.widget || (deco.block ? NullWidget.block : NullWidget.inline);\n let flags = widgetFlags(deco);\n let tile = this.cache.findWidget(widget, to - from, flags) || WidgetTile.of(widget, this.view, to - from, flags);\n if (deco.block) {\n if (deco.startSide > 0)\n b.addLineStartIfNotCovered(pendingLineAttrs);\n b.addBlockWidget(tile);\n }\n else {\n b.ensureLine(pendingLineAttrs);\n b.addInlineWidget(tile, active, openStart);\n }\n }\n pendingLineAttrs = null;\n }\n else {\n pendingLineAttrs = addLineDeco(pendingLineAttrs, deco);\n }\n if (to > from)\n this.text.skip(to - from);\n },\n span: (from, to, active, openStart) => {\n for (let pos = from; pos < to;) {\n let chars = this.text.next(Math.min(512 /* C.Chunk */, to - pos));\n if (chars == null) { // Line break\n b.addLineStartIfNotCovered(pendingLineAttrs);\n b.addBreak();\n pos++;\n }\n else {\n b.ensureLine(pendingLineAttrs);\n b.addText(chars, active, pos == from ? openStart : active.length);\n pos += chars.length;\n }\n pendingLineAttrs = null;\n }\n }\n });\n b.addLineStartIfNotCovered(pendingLineAttrs);\n this.openWidget = openEnd > markCount;\n this.openMarks = openEnd;\n }\n forward(from, to, side = 1) {\n if (to - from <= 10) {\n this.old.advance(to - from, side, this.reuseWalker);\n }\n else {\n this.old.advance(5, -1, this.reuseWalker);\n this.old.advance(to - from - 10, -1);\n this.old.advance(5, side, this.reuseWalker);\n }\n }\n getCompositionContext(text) {\n let marks = [], line = null;\n for (let parent = text.parentNode;; parent = parent.parentNode) {\n let tile = Tile.get(parent);\n if (parent == this.view.contentDOM)\n break;\n if (tile instanceof MarkTile)\n marks.push(tile);\n else if (tile === null || tile === void 0 ? void 0 : tile.isLine())\n line = tile;\n else if (tile instanceof BlockWrapperTile) ; // Ignore\n else if (parent.nodeName == \"DIV\" && !line && parent != this.view.contentDOM)\n line = new LineTile(parent, lineBaseAttrs);\n else if (!line)\n marks.push(MarkTile.of(new MarkDecoration({ tagName: parent.nodeName.toLowerCase(), attributes: getAttrs(parent) }), parent));\n }\n return { line: line, marks };\n }\n}\nfunction hasContent(tile, requireText) {\n let scan = (tile) => {\n for (let ch of tile.children)\n if ((requireText ? ch.isText() : ch.length) || scan(ch))\n return true;\n return false;\n };\n return scan(tile);\n}\nfunction widgetFlags(deco) {\n let flags = deco.isReplace ? (deco.startSide < 0 ? 64 /* TileFlag.IncStart */ : 0) | (deco.endSide > 0 ? 128 /* TileFlag.IncEnd */ : 0)\n : (deco.startSide > 0 ? 32 /* TileFlag.After */ : 16 /* TileFlag.Before */);\n if (deco.block)\n flags |= 256 /* TileFlag.Block */;\n return flags;\n}\nconst lineBaseAttrs = { class: \"cm-line\" };\nfunction addLineDeco(value, deco) {\n let attrs = deco.spec.attributes, cls = deco.spec.class;\n if (!attrs && !cls)\n return value;\n if (!value)\n value = { class: \"cm-line\" };\n if (attrs)\n combineAttrs(attrs, value);\n if (cls)\n value.class += \" \" + cls;\n return value;\n}\nfunction getMarks(ptr) {\n let found = [];\n for (let i = ptr.parents.length; i > 1; i--) {\n let tile = i == ptr.parents.length ? ptr.tile : ptr.parents[i].tile;\n if (tile instanceof MarkTile)\n found.push(tile.mark);\n }\n return found;\n}\nfunction freeNode(node) {\n let tile = Tile.get(node);\n if (tile)\n tile.setDOM(node.cloneNode());\n return node;\n}\nclass NullWidget extends WidgetType {\n constructor(tag) {\n super();\n this.tag = tag;\n }\n eq(other) { return other.tag == this.tag; }\n toDOM() { return document.createElement(this.tag); }\n updateDOM(elt) { return elt.nodeName.toLowerCase() == this.tag; }\n get isHidden() { return true; }\n}\nNullWidget.inline = /*@__PURE__*/new NullWidget(\"span\");\nNullWidget.block = /*@__PURE__*/new NullWidget(\"div\");\nconst BreakWidget = /*@__PURE__*/new class extends WidgetType {\n toDOM() { return document.createElement(\"br\"); }\n get isHidden() { return true; }\n get editable() { return true; }\n};\n\nclass DocView {\n constructor(view) {\n this.view = view;\n this.decorations = [];\n this.blockWrappers = [];\n this.dynamicDecorationMap = [false];\n this.domChanged = null;\n this.hasComposition = null;\n this.editContextFormatting = Decoration.none;\n this.lastCompositionAfterCursor = false;\n // Track a minimum width for the editor. When measuring sizes in\n // measureVisibleLineHeights, this is updated to point at the width\n // of a given element and its extent in the document. When a change\n // happens in that range, these are reset. That way, once we've seen\n // a line/element of a given length, we keep the editor wide enough\n // to fit at least that element, until it is changed, at which point\n // we forget it again.\n this.minWidth = 0;\n this.minWidthFrom = 0;\n this.minWidthTo = 0;\n // Track whether the DOM selection was set in a lossy way, so that\n // we don't mess it up when reading it back it\n this.impreciseAnchor = null;\n this.impreciseHead = null;\n this.forceSelection = false;\n // Used by the resize observer to ignore resizes that we caused\n // ourselves\n this.lastUpdate = Date.now();\n this.updateDeco();\n this.tile = new DocTile(view, view.contentDOM);\n this.updateInner([new ChangedRange(0, 0, 0, view.state.doc.length)], null);\n }\n // Update the document view to a given state.\n update(update) {\n var _a;\n let changedRanges = update.changedRanges;\n if (this.minWidth > 0 && changedRanges.length) {\n if (!changedRanges.every(({ fromA, toA }) => toA < this.minWidthFrom || fromA > this.minWidthTo)) {\n this.minWidth = this.minWidthFrom = this.minWidthTo = 0;\n }\n else {\n this.minWidthFrom = update.changes.mapPos(this.minWidthFrom, 1);\n this.minWidthTo = update.changes.mapPos(this.minWidthTo, 1);\n }\n }\n this.updateEditContextFormatting(update);\n let readCompositionAt = -1;\n if (this.view.inputState.composing >= 0 && !this.view.observer.editContext) {\n if ((_a = this.domChanged) === null || _a === void 0 ? void 0 : _a.newSel)\n readCompositionAt = this.domChanged.newSel.head;\n else if (!touchesComposition(update.changes, this.hasComposition) && !update.selectionSet)\n readCompositionAt = update.state.selection.main.head;\n }\n let composition = readCompositionAt > -1 ? findCompositionRange(this.view, update.changes, readCompositionAt) : null;\n this.domChanged = null;\n if (this.hasComposition) {\n let { from, to } = this.hasComposition;\n changedRanges = new ChangedRange(from, to, update.changes.mapPos(from, -1), update.changes.mapPos(to, 1))\n .addToSet(changedRanges.slice());\n }\n this.hasComposition = composition ? { from: composition.range.fromB, to: composition.range.toB } : null;\n // When the DOM nodes around the selection are moved to another\n // parent, Chrome sometimes reports a different selection through\n // getSelection than the one that it actually shows to the user.\n // This forces a selection update when lines are joined to work\n // around that. Issue #54\n if ((browser.ie || browser.chrome) && !composition && update &&\n update.state.doc.lines != update.startState.doc.lines)\n this.forceSelection = true;\n let prevDeco = this.decorations, prevWrappers = this.blockWrappers;\n this.updateDeco();\n let decoDiff = findChangedDeco(prevDeco, this.decorations, update.changes);\n if (decoDiff.length)\n changedRanges = ChangedRange.extendWithRanges(changedRanges, decoDiff);\n let blockDiff = findChangedWrappers(prevWrappers, this.blockWrappers, update.changes);\n if (blockDiff.length)\n changedRanges = ChangedRange.extendWithRanges(changedRanges, blockDiff);\n if (composition && !changedRanges.some(r => r.fromA <= composition.range.fromA && r.toA >= composition.range.toA))\n changedRanges = composition.range.addToSet(changedRanges.slice());\n if ((this.tile.flags & 2 /* TileFlag.Synced */) && changedRanges.length == 0) {\n return false;\n }\n else {\n this.updateInner(changedRanges, composition);\n if (update.transactions.length)\n this.lastUpdate = Date.now();\n return true;\n }\n }\n // Used by update and the constructor do perform the actual DOM\n // update\n updateInner(changes, composition) {\n this.view.viewState.mustMeasureContent = true;\n let { observer } = this.view;\n observer.ignore(() => {\n if (composition || changes.length) {\n let oldTile = this.tile;\n let builder = new TileUpdate(this.view, oldTile, this.blockWrappers, this.decorations, this.dynamicDecorationMap);\n if (composition && Tile.get(composition.text))\n builder.cache.reused.set(Tile.get(composition.text), 2 /* Reused.DOM */);\n this.tile = builder.run(changes, composition);\n destroyDropped(oldTile, builder.cache.reused);\n }\n // Lock the height during redrawing, since Chrome sometimes\n // messes with the scroll position during DOM mutation (though\n // no relayout is triggered and I cannot imagine how it can\n // recompute the scroll position without a layout)\n this.tile.dom.style.height = this.view.viewState.contentHeight / this.view.scaleY + \"px\";\n this.tile.dom.style.flexBasis = this.minWidth ? this.minWidth + \"px\" : \"\";\n // Chrome will sometimes, when DOM mutations occur directly\n // around the selection, get confused and report a different\n // selection from the one it displays (issue #218). This tries\n // to detect that situation.\n let track = browser.chrome || browser.ios ? { node: observer.selectionRange.focusNode, written: false } : undefined;\n this.tile.sync(track);\n if (track && (track.written || observer.selectionRange.focusNode != track.node || !this.tile.dom.contains(track.node)))\n this.forceSelection = true;\n this.tile.dom.style.height = \"\";\n });\n let gaps = [];\n if (this.view.viewport.from || this.view.viewport.to < this.view.state.doc.length)\n for (let child of this.tile.children)\n if (child.isWidget() && child.widget instanceof BlockGapWidget)\n gaps.push(child.dom);\n observer.updateGaps(gaps);\n }\n updateEditContextFormatting(update) {\n this.editContextFormatting = this.editContextFormatting.map(update.changes);\n for (let tr of update.transactions)\n for (let effect of tr.effects)\n if (effect.is(setEditContextFormatting)) {\n this.editContextFormatting = effect.value;\n }\n }\n // Sync the DOM selection to this.state.selection\n updateSelection(mustRead = false, fromPointer = false) {\n if (mustRead || !this.view.observer.selectionRange.focusNode)\n this.view.observer.readSelectionRange();\n let { dom } = this.tile;\n let activeElt = this.view.root.activeElement, focused = activeElt == dom;\n let selectionNotFocus = !focused && !(this.view.state.facet(editable) || dom.tabIndex > -1) &&\n hasSelection(dom, this.view.observer.selectionRange) && !(activeElt && dom.contains(activeElt));\n if (!(focused || fromPointer || selectionNotFocus))\n return;\n let force = this.forceSelection;\n this.forceSelection = false;\n let main = this.view.state.selection.main, anchor, head;\n if (main.empty) {\n head = anchor = this.inlineDOMNearPos(main.anchor, main.assoc || 1);\n }\n else {\n head = this.inlineDOMNearPos(main.head, main.head == main.from ? 1 : -1);\n anchor = this.inlineDOMNearPos(main.anchor, main.anchor == main.from ? 1 : -1);\n }\n // Always reset on Firefox when next to an uneditable node to\n // avoid invisible cursor bugs (#111)\n if (browser.gecko && main.empty && !this.hasComposition && betweenUneditable(anchor)) {\n let dummy = document.createTextNode(\"\");\n this.view.observer.ignore(() => anchor.node.insertBefore(dummy, anchor.node.childNodes[anchor.offset] || null));\n anchor = head = new DOMPos(dummy, 0);\n force = true;\n }\n let domSel = this.view.observer.selectionRange;\n // If the selection is already here, or in an equivalent position, don't touch it\n if (force || !domSel.focusNode || (!isEquivalentPosition(anchor.node, anchor.offset, domSel.anchorNode, domSel.anchorOffset) ||\n !isEquivalentPosition(head.node, head.offset, domSel.focusNode, domSel.focusOffset)) && !this.suppressWidgetCursorChange(domSel, main)) {\n this.view.observer.ignore(() => {\n // Chrome Android will hide the virtual keyboard when tapping\n // inside an uneditable node, and not bring it back when we\n // move the cursor to its proper position. This tries to\n // restore the keyboard by cycling focus.\n if (browser.android && browser.chrome && dom.contains(domSel.focusNode) &&\n inUneditable(domSel.focusNode, dom)) {\n dom.blur();\n dom.focus({ preventScroll: true });\n }\n let rawSel = getSelection(this.view.root);\n if (!rawSel) ;\n else if (main.empty) {\n // Work around https://bugzilla.mozilla.org/show_bug.cgi?id=1612076\n if (browser.gecko) {\n let nextTo = nextToUneditable(anchor.node, anchor.offset);\n if (nextTo && nextTo != (1 /* NextTo.Before */ | 2 /* NextTo.After */)) {\n let text = (nextTo == 1 /* NextTo.Before */ ? textNodeBefore : textNodeAfter)(anchor.node, anchor.offset);\n if (text)\n anchor = new DOMPos(text.node, text.offset);\n }\n }\n rawSel.collapse(anchor.node, anchor.offset);\n if (main.bidiLevel != null && rawSel.caretBidiLevel !== undefined)\n rawSel.caretBidiLevel = main.bidiLevel;\n }\n else if (rawSel.extend) {\n // Selection.extend can be used to create an 'inverted' selection\n // (one where the focus is before the anchor), but not all\n // browsers support it yet.\n rawSel.collapse(anchor.node, anchor.offset);\n // Safari will ignore the call above when the editor is\n // hidden, and then raise an error on the call to extend\n // (#940).\n try {\n rawSel.extend(head.node, head.offset);\n }\n catch (_) { }\n }\n else {\n // Primitive (IE) way\n let range = document.createRange();\n if (main.anchor > main.head)\n [anchor, head] = [head, anchor];\n range.setEnd(head.node, head.offset);\n range.setStart(anchor.node, anchor.offset);\n rawSel.removeAllRanges();\n rawSel.addRange(range);\n }\n if (selectionNotFocus && this.view.root.activeElement == dom) {\n dom.blur();\n if (activeElt)\n activeElt.focus();\n }\n });\n this.view.observer.setSelectionRange(anchor, head);\n }\n this.impreciseAnchor = anchor.precise ? null : new DOMPos(domSel.anchorNode, domSel.anchorOffset);\n this.impreciseHead = head.precise ? null : new DOMPos(domSel.focusNode, domSel.focusOffset);\n }\n // If a zero-length widget is inserted next to the cursor during\n // composition, avoid moving it across it and disrupting the\n // composition.\n suppressWidgetCursorChange(sel, cursor) {\n return this.hasComposition && cursor.empty &&\n isEquivalentPosition(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset) &&\n this.posFromDOM(sel.focusNode, sel.focusOffset) == cursor.head;\n }\n enforceCursorAssoc() {\n if (this.hasComposition)\n return;\n let { view } = this, cursor = view.state.selection.main;\n let sel = getSelection(view.root);\n let { anchorNode, anchorOffset } = view.observer.selectionRange;\n if (!sel || !cursor.empty || !cursor.assoc || !sel.modify)\n return;\n let line = this.lineAt(cursor.head, cursor.assoc);\n if (!line)\n return;\n let lineStart = line.posAtStart;\n if (cursor.head == lineStart || cursor.head == lineStart + line.length)\n return;\n let before = this.coordsAt(cursor.head, -1), after = this.coordsAt(cursor.head, 1);\n if (!before || !after || before.bottom > after.top)\n return;\n let dom = this.domAtPos(cursor.head + cursor.assoc, cursor.assoc);\n sel.collapse(dom.node, dom.offset);\n sel.modify(\"move\", cursor.assoc < 0 ? \"forward\" : \"backward\", \"lineboundary\");\n // This can go wrong in corner cases like single-character lines,\n // so check and reset if necessary.\n view.observer.readSelectionRange();\n let newRange = view.observer.selectionRange;\n if (view.docView.posFromDOM(newRange.anchorNode, newRange.anchorOffset) != cursor.from)\n sel.collapse(anchorNode, anchorOffset);\n }\n posFromDOM(node, offset) {\n let tile = this.tile.nearest(node);\n if (!tile)\n return this.tile.dom.compareDocumentPosition(node) & 2 /* PRECEDING */ ? 0 : this.view.state.doc.length;\n let start = tile.posAtStart;\n if (tile.isComposite()) {\n let after;\n if (node == tile.dom) {\n after = tile.dom.childNodes[offset];\n }\n else {\n let bias = maxOffset(node) == 0 ? 0 : offset == 0 ? -1 : 1;\n for (;;) {\n let parent = node.parentNode;\n if (parent == tile.dom)\n break;\n if (bias == 0 && parent.firstChild != parent.lastChild) {\n if (node == parent.firstChild)\n bias = -1;\n else\n bias = 1;\n }\n node = parent;\n }\n if (bias < 0)\n after = node;\n else\n after = node.nextSibling;\n }\n if (after == tile.dom.firstChild)\n return start;\n while (after && !Tile.get(after))\n after = after.nextSibling;\n if (!after)\n return start + tile.length;\n for (let i = 0, pos = start;; i++) {\n let child = tile.children[i];\n if (child.dom == after)\n return pos;\n pos += child.length + child.breakAfter;\n }\n }\n else if (tile.isText()) {\n return node == tile.dom ? start + offset : start + (offset ? tile.length : 0);\n }\n else {\n return start;\n }\n }\n domAtPos(pos, side) {\n let { tile, offset } = this.tile.resolveBlock(pos, side);\n if (tile.isWidget())\n return tile.domPosFor(pos, side);\n return tile.domIn(offset, side);\n }\n inlineDOMNearPos(pos, side) {\n let before, beforeOff = -1, beforeBad = false;\n let after, afterOff = -1, afterBad = false;\n this.tile.blockTiles((tile, off) => {\n if (tile.isWidget()) {\n if ((tile.flags & 32 /* TileFlag.After */) && off >= pos)\n return true;\n if (tile.flags & 16 /* TileFlag.Before */)\n beforeBad = true;\n }\n else {\n let end = off + tile.length;\n if (off <= pos) {\n before = tile;\n beforeOff = pos - off;\n beforeBad = end < pos;\n }\n if (end >= pos && !after) {\n after = tile;\n afterOff = pos - off;\n afterBad = off > pos;\n }\n if (off > pos && after)\n return true;\n }\n });\n if (!before && !after)\n return this.domAtPos(pos, side);\n if (beforeBad && after)\n before = null;\n else if (afterBad && before)\n after = null;\n return before && side < 0 || !after ? before.domIn(beforeOff, side) : after.domIn(afterOff, side);\n }\n coordsAt(pos, side) {\n let { tile, offset } = this.tile.resolveBlock(pos, side);\n if (tile.isWidget()) {\n if (tile.widget instanceof BlockGapWidget)\n return null;\n return tile.coordsInWidget(offset, side, true);\n }\n return tile.coordsIn(offset, side);\n }\n lineAt(pos, side) {\n let { tile } = this.tile.resolveBlock(pos, side);\n return tile.isLine() ? tile : null;\n }\n coordsForChar(pos) {\n let { tile, offset } = this.tile.resolveBlock(pos, 1);\n if (!tile.isLine())\n return null;\n function scan(tile, offset) {\n if (tile.isComposite()) {\n for (let ch of tile.children) {\n if (ch.length >= offset) {\n let found = scan(ch, offset);\n if (found)\n return found;\n }\n offset -= ch.length;\n if (offset < 0)\n break;\n }\n }\n else if (tile.isText() && offset < tile.length) {\n let end = findClusterBreak(tile.text, offset);\n if (end == offset)\n return null;\n let rects = textRange(tile.dom, offset, end).getClientRects();\n for (let i = 0; i < rects.length; i++) {\n let rect = rects[i];\n if (i == rects.length - 1 || rect.top < rect.bottom && rect.left < rect.right)\n return rect;\n }\n }\n return null;\n }\n return scan(tile, offset);\n }\n measureVisibleLineHeights(viewport) {\n let result = [], { from, to } = viewport;\n let contentWidth = this.view.contentDOM.clientWidth;\n let isWider = contentWidth > Math.max(this.view.scrollDOM.clientWidth, this.minWidth) + 1;\n let widest = -1, ltr = this.view.textDirection == Direction.LTR;\n let spaceAbove = 0;\n let scan = (tile, pos, measureBounds) => {\n for (let i = 0; i < tile.children.length; i++) {\n if (pos > to)\n break;\n let child = tile.children[i], end = pos + child.length;\n let childRect = child.dom.getBoundingClientRect(), { height } = childRect;\n if (measureBounds && !i)\n spaceAbove += childRect.top - measureBounds.top;\n if (child instanceof BlockWrapperTile) {\n if (end > from)\n scan(child, pos, childRect);\n }\n else if (pos >= from) {\n if (spaceAbove > 0)\n result.push(-spaceAbove);\n result.push(height + spaceAbove);\n spaceAbove = 0;\n if (isWider) {\n let last = child.dom.lastChild;\n let rects = last ? clientRectsFor(last) : [];\n if (rects.length) {\n let rect = rects[rects.length - 1];\n let width = ltr ? rect.right - childRect.left : childRect.right - rect.left;\n if (width > widest) {\n widest = width;\n this.minWidth = contentWidth;\n this.minWidthFrom = pos;\n this.minWidthTo = end;\n }\n }\n }\n }\n if (measureBounds && i == tile.children.length - 1)\n spaceAbove += measureBounds.bottom - childRect.bottom;\n pos = end + child.breakAfter;\n }\n };\n scan(this.tile, 0, null);\n return result;\n }\n textDirectionAt(pos) {\n let { tile } = this.tile.resolveBlock(pos, 1);\n return getComputedStyle(tile.dom).direction == \"rtl\" ? Direction.RTL : Direction.LTR;\n }\n measureTextSize() {\n let lineMeasure = this.tile.blockTiles(tile => {\n if (tile.isLine() && tile.children.length && tile.length <= 20) {\n let totalWidth = 0, textHeight;\n for (let child of tile.children) {\n if (!child.isText() || /[^ -~]/.test(child.text))\n return undefined;\n let rects = clientRectsFor(child.dom);\n if (rects.length != 1)\n return undefined;\n totalWidth += rects[0].width;\n textHeight = rects[0].height;\n }\n if (totalWidth)\n return {\n lineHeight: tile.dom.getBoundingClientRect().height,\n charWidth: totalWidth / tile.length,\n textHeight\n };\n }\n });\n if (lineMeasure)\n return lineMeasure;\n // If no workable line exists, force a layout of a measurable element\n let dummy = document.createElement(\"div\"), lineHeight, charWidth, textHeight;\n dummy.className = \"cm-line\";\n dummy.style.width = \"99999px\";\n dummy.style.position = \"absolute\";\n dummy.textContent = \"abc def ghi jkl mno pqr stu\";\n this.view.observer.ignore(() => {\n this.tile.dom.appendChild(dummy);\n let rect = clientRectsFor(dummy.firstChild)[0];\n lineHeight = dummy.getBoundingClientRect().height;\n charWidth = rect && rect.width ? rect.width / 27 : 7;\n textHeight = rect && rect.height ? rect.height : lineHeight;\n dummy.remove();\n });\n return { lineHeight, charWidth, textHeight };\n }\n computeBlockGapDeco() {\n let deco = [], vs = this.view.viewState;\n for (let pos = 0, i = 0;; i++) {\n let next = i == vs.viewports.length ? null : vs.viewports[i];\n let end = next ? next.from - 1 : this.view.state.doc.length;\n if (end > pos) {\n let height = (vs.lineBlockAt(end).bottom - vs.lineBlockAt(pos).top) / this.view.scaleY;\n deco.push(Decoration.replace({\n widget: new BlockGapWidget(height),\n block: true,\n inclusive: true,\n isBlockGap: true,\n }).range(pos, end));\n }\n if (!next)\n break;\n pos = next.to + 1;\n }\n return Decoration.set(deco);\n }\n updateDeco() {\n let i = 1;\n let allDeco = this.view.state.facet(decorations).map(d => {\n let dynamic = this.dynamicDecorationMap[i++] = typeof d == \"function\";\n return dynamic ? d(this.view) : d;\n });\n let dynamicOuter = false, outerDeco = this.view.state.facet(outerDecorations).map((d, i) => {\n let dynamic = typeof d == \"function\";\n if (dynamic)\n dynamicOuter = true;\n return dynamic ? d(this.view) : d;\n });\n if (outerDeco.length) {\n this.dynamicDecorationMap[i++] = dynamicOuter;\n allDeco.push(RangeSet.join(outerDeco));\n }\n this.decorations = [\n this.editContextFormatting,\n ...allDeco,\n this.computeBlockGapDeco(),\n this.view.viewState.lineGapDeco\n ];\n while (i < this.decorations.length)\n this.dynamicDecorationMap[i++] = false;\n this.blockWrappers = this.view.state.facet(blockWrappers).map(v => typeof v == \"function\" ? v(this.view) : v);\n }\n scrollIntoView(target) {\n if (target.isSnapshot) {\n let ref = this.view.viewState.lineBlockAt(target.range.head);\n this.view.scrollDOM.scrollTop = ref.top - target.yMargin;\n this.view.scrollDOM.scrollLeft = target.xMargin;\n return;\n }\n for (let handler of this.view.state.facet(scrollHandler)) {\n try {\n if (handler(this.view, target.range, target))\n return true;\n }\n catch (e) {\n logException(this.view.state, e, \"scroll handler\");\n }\n }\n let { range } = target;\n let rect = this.coordsAt(range.head, range.empty ? range.assoc : range.head > range.anchor ? -1 : 1), other;\n if (!rect)\n return;\n if (!range.empty && (other = this.coordsAt(range.anchor, range.anchor > range.head ? -1 : 1)))\n rect = { left: Math.min(rect.left, other.left), top: Math.min(rect.top, other.top),\n right: Math.max(rect.right, other.right), bottom: Math.max(rect.bottom, other.bottom) };\n let margins = getScrollMargins(this.view);\n let targetRect = {\n left: rect.left - margins.left, top: rect.top - margins.top,\n right: rect.right + margins.right, bottom: rect.bottom + margins.bottom\n };\n let { offsetWidth, offsetHeight } = this.view.scrollDOM;\n scrollRectIntoView(this.view.scrollDOM, targetRect, range.head < range.anchor ? -1 : 1, target.x, target.y, Math.max(Math.min(target.xMargin, offsetWidth), -offsetWidth), Math.max(Math.min(target.yMargin, offsetHeight), -offsetHeight), this.view.textDirection == Direction.LTR);\n // On mobile browsers, the visual viewport may be smaller than the\n // actual reported viewport, causing scrollRectIntoView to fail to\n // scroll properly. Unfortunately, this visual viewport cannot be\n // updated directly, and scrollIntoView is the only way a script\n // can affect it. So this tries to kludge around the problem by\n // calling scrollIntoView on the scroll target's line.\n if (window.visualViewport && window.innerHeight - window.visualViewport.height > 1 &&\n (rect.top > window.pageYOffset + window.visualViewport.offsetTop + window.visualViewport.height ||\n rect.bottom < window.pageYOffset + window.visualViewport.offsetTop)) {\n let line = this.view.docView.lineAt(range.head, 1);\n if (line)\n line.dom.scrollIntoView({ block: \"nearest\" });\n }\n }\n lineHasWidget(pos) {\n let scan = (child) => child.isWidget() || child.children.some(scan);\n return scan(this.tile.resolveBlock(pos, 1).tile);\n }\n destroy() {\n destroyDropped(this.tile);\n }\n}\nfunction destroyDropped(tile, reused) {\n let r = reused === null || reused === void 0 ? void 0 : reused.get(tile);\n if (r != 1 /* Reused.Full */) {\n if (r == null)\n tile.destroy();\n for (let ch of tile.children)\n destroyDropped(ch, reused);\n }\n}\nfunction betweenUneditable(pos) {\n return pos.node.nodeType == 1 && pos.node.firstChild &&\n (pos.offset == 0 || pos.node.childNodes[pos.offset - 1].contentEditable == \"false\") &&\n (pos.offset == pos.node.childNodes.length || pos.node.childNodes[pos.offset].contentEditable == \"false\");\n}\nfunction findCompositionNode(view, headPos) {\n let sel = view.observer.selectionRange;\n if (!sel.focusNode)\n return null;\n let textBefore = textNodeBefore(sel.focusNode, sel.focusOffset);\n let textAfter = textNodeAfter(sel.focusNode, sel.focusOffset);\n let textNode = textBefore || textAfter;\n if (textAfter && textBefore && textAfter.node != textBefore.node) {\n let tileAfter = Tile.get(textAfter.node);\n if (!tileAfter || tileAfter.isText() && tileAfter.text != textAfter.node.nodeValue) {\n textNode = textAfter;\n }\n else if (view.docView.lastCompositionAfterCursor) {\n let tileBefore = Tile.get(textBefore.node);\n if (!(!tileBefore || tileBefore.isText() && tileBefore.text != textBefore.node.nodeValue))\n textNode = textAfter;\n }\n }\n view.docView.lastCompositionAfterCursor = textNode != textBefore;\n if (!textNode)\n return null;\n let from = headPos - textNode.offset;\n return { from, to: from + textNode.node.nodeValue.length, node: textNode.node };\n}\nfunction findCompositionRange(view, changes, headPos) {\n let found = findCompositionNode(view, headPos);\n if (!found)\n return null;\n let { node: textNode, from, to } = found, text = textNode.nodeValue;\n // Don't try to preserve multi-line compositions\n if (/[\\n\\r]/.test(text))\n return null;\n if (view.state.doc.sliceString(found.from, found.to) != text)\n return null;\n let inv = changes.invertedDesc;\n return { range: new ChangedRange(inv.mapPos(from), inv.mapPos(to), from, to), text: textNode };\n}\nfunction nextToUneditable(node, offset) {\n if (node.nodeType != 1)\n return 0;\n return (offset && node.childNodes[offset - 1].contentEditable == \"false\" ? 1 /* NextTo.Before */ : 0) |\n (offset < node.childNodes.length && node.childNodes[offset].contentEditable == \"false\" ? 2 /* NextTo.After */ : 0);\n}\nlet DecorationComparator$1 = class DecorationComparator {\n constructor() {\n this.changes = [];\n }\n compareRange(from, to) { addRange(from, to, this.changes); }\n comparePoint(from, to) { addRange(from, to, this.changes); }\n boundChange(pos) { addRange(pos, pos, this.changes); }\n};\nfunction findChangedDeco(a, b, diff) {\n let comp = new DecorationComparator$1;\n RangeSet.compare(a, b, diff, comp);\n return comp.changes;\n}\nclass WrapperComparator {\n constructor() {\n this.changes = [];\n }\n compareRange(from, to) { addRange(from, to, this.changes); }\n comparePoint() { }\n boundChange(pos) { addRange(pos, pos, this.changes); }\n}\nfunction findChangedWrappers(a, b, diff) {\n let comp = new WrapperComparator;\n RangeSet.compare(a, b, diff, comp);\n return comp.changes;\n}\nfunction inUneditable(node, inside) {\n for (let cur = node; cur && cur != inside; cur = cur.assignedSlot || cur.parentNode) {\n if (cur.nodeType == 1 && cur.contentEditable == 'false') {\n return true;\n }\n }\n return false;\n}\nfunction touchesComposition(changes, composition) {\n let touched = false;\n if (composition)\n changes.iterChangedRanges((from, to) => {\n if (from < composition.to && to > composition.from)\n touched = true;\n });\n return touched;\n}\nclass BlockGapWidget extends WidgetType {\n constructor(height) {\n super();\n this.height = height;\n }\n toDOM() {\n let elt = document.createElement(\"div\");\n elt.className = \"cm-gap\";\n this.updateDOM(elt);\n return elt;\n }\n eq(other) { return other.height == this.height; }\n updateDOM(elt) {\n elt.style.height = this.height + \"px\";\n return true;\n }\n get editable() { return true; }\n get estimatedHeight() { return this.height; }\n ignoreEvent() { return false; }\n}\n\nfunction groupAt(state, pos, bias = 1) {\n let categorize = state.charCategorizer(pos);\n let line = state.doc.lineAt(pos), linePos = pos - line.from;\n if (line.length == 0)\n return EditorSelection.cursor(pos);\n if (linePos == 0)\n bias = 1;\n else if (linePos == line.length)\n bias = -1;\n let from = linePos, to = linePos;\n if (bias < 0)\n from = findClusterBreak(line.text, linePos, false);\n else\n to = findClusterBreak(line.text, linePos);\n let cat = categorize(line.text.slice(from, to));\n while (from > 0) {\n let prev = findClusterBreak(line.text, from, false);\n if (categorize(line.text.slice(prev, from)) != cat)\n break;\n from = prev;\n }\n while (to < line.length) {\n let next = findClusterBreak(line.text, to);\n if (categorize(line.text.slice(to, next)) != cat)\n break;\n to = next;\n }\n return EditorSelection.range(from + line.from, to + line.from);\n}\nfunction posAtCoordsImprecise(view, contentRect, block, x, y) {\n let into = Math.round((x - contentRect.left) * view.defaultCharacterWidth);\n if (view.lineWrapping && block.height > view.defaultLineHeight * 1.5) {\n let textHeight = view.viewState.heightOracle.textHeight;\n let line = Math.floor((y - block.top - (view.defaultLineHeight - textHeight) * 0.5) / textHeight);\n into += line * view.viewState.heightOracle.lineLength;\n }\n let content = view.state.sliceDoc(block.from, block.to);\n return block.from + findColumn(content, into, view.state.tabSize);\n}\nfunction blockAt(view, pos, side) {\n let line = view.lineBlockAt(pos);\n if (Array.isArray(line.type)) {\n let best;\n for (let l of line.type) {\n if (l.from > pos)\n break;\n if (l.to < pos)\n continue;\n if (l.from < pos && l.to > pos)\n return l;\n if (!best || (l.type == BlockType.Text && (best.type != l.type || (side < 0 ? l.from < pos : l.to > pos))))\n best = l;\n }\n return best || line;\n }\n return line;\n}\nfunction moveToLineBoundary(view, start, forward, includeWrap) {\n let line = blockAt(view, start.head, start.assoc || -1);\n let coords = !includeWrap || line.type != BlockType.Text || !(view.lineWrapping || line.widgetLineBreaks) ? null\n : view.coordsAtPos(start.assoc < 0 && start.head > line.from ? start.head - 1 : start.head);\n if (coords) {\n let editorRect = view.dom.getBoundingClientRect();\n let direction = view.textDirectionAt(line.from);\n let pos = view.posAtCoords({ x: forward == (direction == Direction.LTR) ? editorRect.right - 1 : editorRect.left + 1,\n y: (coords.top + coords.bottom) / 2 });\n if (pos != null)\n return EditorSelection.cursor(pos, forward ? -1 : 1);\n }\n return EditorSelection.cursor(forward ? line.to : line.from, forward ? -1 : 1);\n}\nfunction moveByChar(view, start, forward, by) {\n let line = view.state.doc.lineAt(start.head), spans = view.bidiSpans(line);\n let direction = view.textDirectionAt(line.from);\n for (let cur = start, check = null;;) {\n let next = moveVisually(line, spans, direction, cur, forward), char = movedOver;\n if (!next) {\n if (line.number == (forward ? view.state.doc.lines : 1))\n return cur;\n char = \"\\n\";\n line = view.state.doc.line(line.number + (forward ? 1 : -1));\n spans = view.bidiSpans(line);\n next = view.visualLineSide(line, !forward);\n }\n if (!check) {\n if (!by)\n return next;\n check = by(char);\n }\n else if (!check(char)) {\n return cur;\n }\n cur = next;\n }\n}\nfunction byGroup(view, pos, start) {\n let categorize = view.state.charCategorizer(pos);\n let cat = categorize(start);\n return (next) => {\n let nextCat = categorize(next);\n if (cat == CharCategory.Space)\n cat = nextCat;\n return cat == nextCat;\n };\n}\nfunction moveVertically(view, start, forward, distance) {\n let startPos = start.head, dir = forward ? 1 : -1;\n if (startPos == (forward ? view.state.doc.length : 0))\n return EditorSelection.cursor(startPos, start.assoc);\n let goal = start.goalColumn, startY;\n let rect = view.contentDOM.getBoundingClientRect();\n let startCoords = view.coordsAtPos(startPos, (start.empty ? start.assoc : 0) || (forward ? 1 : -1)), docTop = view.documentTop;\n if (startCoords) {\n if (goal == null)\n goal = startCoords.left - rect.left;\n startY = dir < 0 ? startCoords.top : startCoords.bottom;\n }\n else {\n let line = view.viewState.lineBlockAt(startPos);\n if (goal == null)\n goal = Math.min(rect.right - rect.left, view.defaultCharacterWidth * (startPos - line.from));\n startY = (dir < 0 ? line.top : line.bottom) + docTop;\n }\n let resolvedGoal = rect.left + goal;\n let dist = distance !== null && distance !== void 0 ? distance : (view.viewState.heightOracle.textHeight >> 1);\n let pos = posAtCoords(view, { x: resolvedGoal, y: startY + dist * dir }, false, dir);\n return EditorSelection.cursor(pos.pos, pos.assoc, undefined, goal);\n}\nfunction skipAtomicRanges(atoms, pos, bias) {\n for (;;) {\n let moved = 0;\n for (let set of atoms) {\n set.between(pos - 1, pos + 1, (from, to, value) => {\n if (pos > from && pos < to) {\n let side = moved || bias || (pos - from < to - pos ? -1 : 1);\n pos = side < 0 ? from : to;\n moved = side;\n }\n });\n }\n if (!moved)\n return pos;\n }\n}\nfunction skipAtomsForSelection(atoms, sel) {\n let ranges = null;\n for (let i = 0; i < sel.ranges.length; i++) {\n let range = sel.ranges[i], updated = null;\n if (range.empty) {\n let pos = skipAtomicRanges(atoms, range.from, 0);\n if (pos != range.from)\n updated = EditorSelection.cursor(pos, -1);\n }\n else {\n let from = skipAtomicRanges(atoms, range.from, -1);\n let to = skipAtomicRanges(atoms, range.to, 1);\n if (from != range.from || to != range.to)\n updated = EditorSelection.range(range.from == range.anchor ? from : to, range.from == range.head ? from : to);\n }\n if (updated) {\n if (!ranges)\n ranges = sel.ranges.slice();\n ranges[i] = updated;\n }\n }\n return ranges ? EditorSelection.create(ranges, sel.mainIndex) : sel;\n}\nfunction skipAtoms(view, oldPos, pos) {\n let newPos = skipAtomicRanges(view.state.facet(atomicRanges).map(f => f(view)), pos.from, oldPos.head > pos.from ? -1 : 1);\n return newPos == pos.from ? pos : EditorSelection.cursor(newPos, newPos < pos.from ? 1 : -1);\n}\nclass PosAssoc {\n constructor(pos, assoc) {\n this.pos = pos;\n this.assoc = assoc;\n }\n}\nfunction posAtCoords(view, coords, precise, scanY) {\n let content = view.contentDOM.getBoundingClientRect(), docTop = content.top + view.viewState.paddingTop;\n let { x, y } = coords, yOffset = y - docTop, block;\n // First find the block at the given Y position, if any. If scanY is\n // given (used for vertical cursor motion), try to skip widgets and\n // line padding.\n for (;;) {\n if (yOffset < 0)\n return new PosAssoc(0, 1);\n if (yOffset > view.viewState.docHeight)\n return new PosAssoc(view.state.doc.length, -1);\n block = view.elementAtHeight(yOffset);\n if (scanY == null)\n break;\n if (block.type == BlockType.Text) {\n if (scanY < 0 ? block.to < view.viewport.from : block.from > view.viewport.to)\n break;\n // Check whether we aren't landing on the top/bottom padding of the line\n let rect = view.docView.coordsAt(scanY < 0 ? block.from : block.to, scanY > 0 ? -1 : 1);\n if (rect && (scanY < 0 ? rect.top <= yOffset + docTop : rect.bottom >= yOffset + docTop))\n break;\n }\n let halfLine = view.viewState.heightOracle.textHeight / 2;\n yOffset = scanY > 0 ? block.bottom + halfLine : block.top - halfLine;\n }\n // If outside the viewport, return null if precise==true, an\n // estimate otherwise.\n if (view.viewport.from >= block.to || view.viewport.to <= block.from) {\n if (precise)\n return null;\n if (block.type == BlockType.Text) {\n let pos = posAtCoordsImprecise(view, content, block, x, y);\n return new PosAssoc(pos, pos == block.from ? 1 : -1);\n }\n }\n if (block.type != BlockType.Text)\n return yOffset < (block.top + block.bottom) / 2 ? new PosAssoc(block.from, 1) : new PosAssoc(block.to, -1);\n // Here we know we're in a line, so run the logic for inline layout\n let line = view.docView.lineAt(block.from, 2);\n if (!line || line.length != block.length)\n line = view.docView.lineAt(block.from, -2);\n return new InlineCoordsScan(view, x, y, view.textDirectionAt(block.from)).scanTile(line, block.from);\n}\nclass InlineCoordsScan {\n constructor(view, x, y, baseDir) {\n this.view = view;\n this.x = x;\n this.y = y;\n this.baseDir = baseDir;\n // Cached bidi info\n this.line = null;\n this.spans = null;\n }\n bidiSpansAt(pos) {\n if (!this.line || this.line.from > pos || this.line.to < pos) {\n this.line = this.view.state.doc.lineAt(pos);\n this.spans = this.view.bidiSpans(this.line);\n }\n return this;\n }\n baseDirAt(pos, side) {\n let { line, spans } = this.bidiSpansAt(pos);\n let level = spans[BidiSpan.find(spans, pos - line.from, -1, side)].level;\n return level == this.baseDir;\n }\n dirAt(pos, side) {\n let { line, spans } = this.bidiSpansAt(pos);\n return spans[BidiSpan.find(spans, pos - line.from, -1, side)].dir;\n }\n // Used to short-circuit bidi tests for content with a uniform direction\n bidiIn(from, to) {\n let { spans, line } = this.bidiSpansAt(from);\n return spans.length > 1 || spans.length && (spans[0].level != this.baseDir || spans[0].to + line.from < to);\n }\n // Scan through the rectangles for the content of a tile with inline\n // content, looking for one that overlaps the queried position\n // vertically andis\n // closest horizontally. The caller is responsible for dividing its\n // content into N pieces, and pass an array with N+1 positions\n // (including the position after the last piece). For a text tile,\n // these will be character clusters, for a composite tile, these\n // will be child tiles.\n scan(positions, getRects) {\n let lo = 0, hi = positions.length - 1, seen = new Set();\n let bidi = this.bidiIn(positions[0], positions[hi]);\n let above, below;\n let closestI = -1, closestDx = 1e9, closestRect;\n // Because, when the content is bidirectional, a regular binary\n // search is hard to perform (the content order does not\n // correspond to visual order), this loop does something between a\n // regular binary search and a full scan, depending on what it can\n // get away with. The outer hi/lo bounds are only adjusted for\n // elements that are part of the base order.\n //\n // To make sure all elements inside those bounds are visited,\n // eventually, we keep a set of seen indices, and if the midpoint\n // has already been handled, we start in a random index within the\n // current bounds and scan forward until we find an index that\n // hasn't been seen yet.\n search: while (lo < hi) {\n let dist = hi - lo, mid = (lo + hi) >> 1;\n adjust: if (seen.has(mid)) {\n let scan = lo + Math.floor(Math.random() * dist);\n for (let i = 0; i < dist; i++) {\n if (!seen.has(scan)) {\n mid = scan;\n break adjust;\n }\n scan++;\n if (scan == hi)\n scan = lo; // Wrap around\n }\n break search; // No index found, we're done\n }\n seen.add(mid);\n let rects = getRects(mid);\n if (rects)\n for (let i = 0; i < rects.length; i++) {\n let rect = rects[i], side = 0;\n // Ignore empty rectangles when there are other rectangles\n if (rect.width == 0 && rects.length > 1)\n continue;\n if (rect.bottom < this.y) {\n if (!above || above.bottom < rect.bottom)\n above = rect;\n side = 1;\n }\n else if (rect.top > this.y) {\n if (!below || below.top > rect.top)\n below = rect;\n side = -1;\n }\n else {\n let off = rect.left > this.x ? this.x - rect.left : rect.right < this.x ? this.x - rect.right : 0;\n let dx = Math.abs(off);\n if (dx < closestDx) {\n closestI = mid;\n closestDx = dx;\n closestRect = rect;\n }\n if (off)\n side = (off < 0) == (this.baseDir == Direction.LTR) ? -1 : 1;\n }\n // Narrow binary search when it is safe to do so\n if (side == -1 && (!bidi || this.baseDirAt(positions[mid], 1)))\n hi = mid;\n else if (side == 1 && (!bidi || this.baseDirAt(positions[mid + 1], -1)))\n lo = mid + 1;\n }\n }\n // If no element with y overlap is found, find the nearest element\n // on the y axis, move this.y into it, and retry the scan.\n if (!closestRect) {\n let side = above && (!below || (this.y - above.bottom < below.top - this.y)) ? above : below;\n this.y = (side.top + side.bottom) / 2;\n return this.scan(positions, getRects);\n }\n let ltr = (bidi ? this.dirAt(positions[closestI], 1) : this.baseDir) == Direction.LTR;\n return {\n i: closestI,\n // Test whether x is closes to the start or end of this element\n after: (this.x > (closestRect.left + closestRect.right) / 2) == ltr\n };\n }\n scanText(tile, offset) {\n let positions = [];\n for (let i = 0; i < tile.length; i = findClusterBreak(tile.text, i))\n positions.push(offset + i);\n positions.push(offset + tile.length);\n let scan = this.scan(positions, i => {\n let off = positions[i] - offset, end = positions[i + 1] - offset;\n return textRange(tile.dom, off, end).getClientRects();\n });\n return scan.after ? new PosAssoc(positions[scan.i + 1], -1) : new PosAssoc(positions[scan.i], 1);\n }\n scanTile(tile, offset) {\n if (!tile.length)\n return new PosAssoc(offset, 1);\n if (tile.children.length == 1) { // Short-circuit single-child tiles\n let child = tile.children[0];\n if (child.isText())\n return this.scanText(child, offset);\n else if (child.isComposite())\n return this.scanTile(child, offset);\n }\n let positions = [offset];\n for (let i = 0, pos = offset; i < tile.children.length; i++)\n positions.push(pos += tile.children[i].length);\n let scan = this.scan(positions, i => {\n let child = tile.children[i];\n if (child.flags & 48 /* TileFlag.PointWidget */)\n return null;\n return (child.dom.nodeType == 1 ? child.dom : textRange(child.dom, 0, child.length)).getClientRects();\n });\n let child = tile.children[scan.i], pos = positions[scan.i];\n if (child.isText())\n return this.scanText(child, pos);\n if (child.isComposite())\n return this.scanTile(child, pos);\n return scan.after ? new PosAssoc(positions[scan.i + 1], -1) : new PosAssoc(pos, 1);\n }\n}\n\nconst LineBreakPlaceholder = \"\\uffff\";\nclass DOMReader {\n constructor(points, view) {\n this.points = points;\n this.view = view;\n this.text = \"\";\n this.lineSeparator = view.state.facet(EditorState.lineSeparator);\n }\n append(text) {\n this.text += text;\n }\n lineBreak() {\n this.text += LineBreakPlaceholder;\n }\n readRange(start, end) {\n if (!start)\n return this;\n let parent = start.parentNode;\n for (let cur = start;;) {\n this.findPointBefore(parent, cur);\n let oldLen = this.text.length;\n this.readNode(cur);\n let tile = Tile.get(cur), next = cur.nextSibling;\n if (next == end) {\n if ((tile === null || tile === void 0 ? void 0 : tile.breakAfter) && !next && parent != this.view.contentDOM)\n this.lineBreak();\n break;\n }\n let nextTile = Tile.get(next);\n if ((tile && nextTile ? tile.breakAfter :\n (tile ? tile.breakAfter : isBlockElement(cur)) ||\n (isBlockElement(next) && (cur.nodeName != \"BR\" || (tile === null || tile === void 0 ? void 0 : tile.isWidget())) && this.text.length > oldLen)) &&\n !isEmptyToEnd(next, end))\n this.lineBreak();\n cur = next;\n }\n this.findPointBefore(parent, end);\n return this;\n }\n readTextNode(node) {\n let text = node.nodeValue;\n for (let point of this.points)\n if (point.node == node)\n point.pos = this.text.length + Math.min(point.offset, text.length);\n for (let off = 0, re = this.lineSeparator ? null : /\\r\\n?|\\n/g;;) {\n let nextBreak = -1, breakSize = 1, m;\n if (this.lineSeparator) {\n nextBreak = text.indexOf(this.lineSeparator, off);\n breakSize = this.lineSeparator.length;\n }\n else if (m = re.exec(text)) {\n nextBreak = m.index;\n breakSize = m[0].length;\n }\n this.append(text.slice(off, nextBreak < 0 ? text.length : nextBreak));\n if (nextBreak < 0)\n break;\n this.lineBreak();\n if (breakSize > 1)\n for (let point of this.points)\n if (point.node == node && point.pos > this.text.length)\n point.pos -= breakSize - 1;\n off = nextBreak + breakSize;\n }\n }\n readNode(node) {\n let tile = Tile.get(node);\n let fromView = tile && tile.overrideDOMText;\n if (fromView != null) {\n this.findPointInside(node, fromView.length);\n for (let i = fromView.iter(); !i.next().done;) {\n if (i.lineBreak)\n this.lineBreak();\n else\n this.append(i.value);\n }\n }\n else if (node.nodeType == 3) {\n this.readTextNode(node);\n }\n else if (node.nodeName == \"BR\") {\n if (node.nextSibling)\n this.lineBreak();\n }\n else if (node.nodeType == 1) {\n this.readRange(node.firstChild, null);\n }\n }\n findPointBefore(node, next) {\n for (let point of this.points)\n if (point.node == node && node.childNodes[point.offset] == next)\n point.pos = this.text.length;\n }\n findPointInside(node, length) {\n for (let point of this.points)\n if (node.nodeType == 3 ? point.node == node : node.contains(point.node))\n point.pos = this.text.length + (isAtEnd(node, point.node, point.offset) ? length : 0);\n }\n}\nfunction isAtEnd(parent, node, offset) {\n for (;;) {\n if (!node || offset < maxOffset(node))\n return false;\n if (node == parent)\n return true;\n offset = domIndex(node) + 1;\n node = node.parentNode;\n }\n}\nfunction isEmptyToEnd(node, end) {\n let widgets;\n for (;; node = node.nextSibling) {\n if (node == end || !node)\n break;\n let view = Tile.get(node);\n if (!(view === null || view === void 0 ? void 0 : view.isWidget()))\n return false;\n if (view)\n (widgets || (widgets = [])).push(view);\n }\n if (widgets)\n for (let w of widgets) {\n let override = w.overrideDOMText;\n if (override === null || override === void 0 ? void 0 : override.length)\n return false;\n }\n return true;\n}\nclass DOMPoint {\n constructor(node, offset) {\n this.node = node;\n this.offset = offset;\n this.pos = -1;\n }\n}\n\nclass DOMChange {\n constructor(view, start, end, typeOver) {\n this.typeOver = typeOver;\n this.bounds = null;\n this.text = \"\";\n this.domChanged = start > -1;\n let { impreciseHead: iHead, impreciseAnchor: iAnchor } = view.docView, curSel = view.state.selection;\n if (view.state.readOnly && start > -1) {\n // Ignore changes when the editor is read-only\n this.newSel = null;\n }\n else if (start > -1 && (this.bounds = domBoundsAround(view.docView.tile, start, end, 0))) {\n let selPoints = iHead || iAnchor ? [] : selectionPoints(view);\n let reader = new DOMReader(selPoints, view);\n reader.readRange(this.bounds.startDOM, this.bounds.endDOM);\n this.text = reader.text;\n this.newSel = selectionFromPoints(selPoints, this.bounds.from);\n }\n else {\n let domSel = view.observer.selectionRange;\n let head = iHead && iHead.node == domSel.focusNode && iHead.offset == domSel.focusOffset ||\n !contains(view.contentDOM, domSel.focusNode)\n ? curSel.main.head\n : view.docView.posFromDOM(domSel.focusNode, domSel.focusOffset);\n let anchor = iAnchor && iAnchor.node == domSel.anchorNode && iAnchor.offset == domSel.anchorOffset ||\n !contains(view.contentDOM, domSel.anchorNode)\n ? curSel.main.anchor\n : view.docView.posFromDOM(domSel.anchorNode, domSel.anchorOffset);\n // iOS will refuse to select the block gaps when doing\n // select-all.\n // Chrome will put the selection *inside* them, confusing\n // posFromDOM\n let vp = view.viewport;\n if ((browser.ios || browser.chrome) && curSel.main.empty && head != anchor &&\n (vp.from > 0 || vp.to < view.state.doc.length)) {\n let from = Math.min(head, anchor), to = Math.max(head, anchor);\n let offFrom = vp.from - from, offTo = vp.to - to;\n if ((offFrom == 0 || offFrom == 1 || from == 0) && (offTo == 0 || offTo == -1 || to == view.state.doc.length)) {\n head = 0;\n anchor = view.state.doc.length;\n }\n }\n if (view.inputState.composing > -1 && curSel.ranges.length > 1) {\n this.newSel = curSel.replaceRange(EditorSelection.range(anchor, head));\n }\n else if (view.lineWrapping && anchor == head && !(curSel.main.empty && curSel.main.head == head) &&\n view.inputState.lastTouchTime > Date.now() - 100) {\n // If this is a cursor selection change in a line-wrapping\n // editor that may have been a touch, use the last touch\n // position to assign a side to the cursor.\n let before = view.coordsAtPos(head, -1), assoc = 0;\n if (before)\n assoc = view.inputState.lastTouchY <= before.bottom ? -1 : 1;\n this.newSel = EditorSelection.create([EditorSelection.cursor(head, assoc)]);\n }\n else {\n this.newSel = EditorSelection.single(anchor, head);\n }\n }\n }\n}\nfunction domBoundsAround(tile, from, to, offset) {\n if (tile.isComposite()) {\n let fromI = -1, fromStart = -1, toI = -1, toEnd = -1;\n for (let i = 0, pos = offset, prevEnd = offset; i < tile.children.length; i++) {\n let child = tile.children[i], end = pos + child.length;\n if (pos < from && end > to)\n return domBoundsAround(child, from, to, pos);\n if (end >= from && fromI == -1) {\n fromI = i;\n fromStart = pos;\n }\n if (pos > to && child.dom.parentNode == tile.dom) {\n toI = i;\n toEnd = prevEnd;\n break;\n }\n prevEnd = end;\n pos = end + child.breakAfter;\n }\n return { from: fromStart, to: toEnd < 0 ? offset + tile.length : toEnd,\n startDOM: (fromI ? tile.children[fromI - 1].dom.nextSibling : null) || tile.dom.firstChild,\n endDOM: toI < tile.children.length && toI >= 0 ? tile.children[toI].dom : null };\n }\n else if (tile.isText()) {\n return { from: offset, to: offset + tile.length, startDOM: tile.dom, endDOM: tile.dom.nextSibling };\n }\n else {\n return null;\n }\n}\nfunction applyDOMChange(view, domChange) {\n let change;\n let { newSel } = domChange, { state } = view, sel = state.selection.main;\n let lastKey = view.inputState.lastKeyTime > Date.now() - 100 ? view.inputState.lastKeyCode : -1;\n if (domChange.bounds) {\n let { from, to } = domChange.bounds;\n let preferredPos = sel.from, preferredSide = null;\n // Prefer anchoring to end when Backspace is pressed (or, on\n // Android, when something was deleted)\n if (lastKey === 8 || browser.android && domChange.text.length < to - from) {\n preferredPos = sel.to;\n preferredSide = \"end\";\n }\n let cmp = state.doc.sliceString(from, to, LineBreakPlaceholder), selEnd, diff;\n if (!sel.empty && sel.from >= from && sel.to <= to && (domChange.typeOver || cmp != domChange.text) &&\n cmp.slice(0, sel.from - from) == domChange.text.slice(0, sel.from - from) &&\n cmp.slice(sel.to - from) == domChange.text.slice(selEnd = domChange.text.length - (cmp.length - (sel.to - from)))) {\n // This looks like a selection replacement\n change = { from: sel.from, to: sel.to,\n insert: Text.of(domChange.text.slice(sel.from - from, selEnd).split(LineBreakPlaceholder)) };\n }\n else if (diff = findDiff(cmp, domChange.text, preferredPos - from, preferredSide)) {\n // Chrome inserts two newlines when pressing shift-enter at the\n // end of a line. DomChange drops one of those.\n if (browser.chrome && lastKey == 13 &&\n diff.toB == diff.from + 2 && domChange.text.slice(diff.from, diff.toB) == LineBreakPlaceholder + LineBreakPlaceholder)\n diff.toB--;\n change = { from: from + diff.from, to: from + diff.toA,\n insert: Text.of(domChange.text.slice(diff.from, diff.toB).split(LineBreakPlaceholder)) };\n }\n }\n else if (newSel && (!view.hasFocus && state.facet(editable) || sameSelPos(newSel, sel))) {\n newSel = null;\n }\n if (!change && !newSel)\n return false;\n if ((browser.mac || browser.android) && change && change.from == change.to && change.from == sel.head - 1 &&\n /^\\. ?$/.test(change.insert.toString()) && view.contentDOM.getAttribute(\"autocorrect\") == \"off\") {\n // Detect insert-period-on-double-space Mac and Android behavior,\n // and transform it into a regular space insert.\n if (newSel && change.insert.length == 2)\n newSel = EditorSelection.single(newSel.main.anchor - 1, newSel.main.head - 1);\n change = { from: change.from, to: change.to, insert: Text.of([change.insert.toString().replace(\".\", \" \")]) };\n }\n else if (state.doc.lineAt(sel.from).to < sel.to && view.docView.lineHasWidget(sel.to) &&\n view.inputState.insertingTextAt > Date.now() - 50) {\n // For a cross-line insertion, Chrome and Safari will crudely take\n // the text of the line after the selection, flattening any\n // widgets, and move it into the joined line. This tries to detect\n // such a situation, and replaces the change with a selection\n // replace of the text provided by the beforeinput event.\n change = {\n from: sel.from, to: sel.to,\n insert: state.toText(view.inputState.insertingText)\n };\n }\n else if (browser.chrome && change && change.from == change.to && change.from == sel.head &&\n change.insert.toString() == \"\\n \" && view.lineWrapping) {\n // In Chrome, if you insert a space at the start of a wrapped\n // line, it will actually insert a newline and a space, causing a\n // bogus new line to be created in CodeMirror (#968)\n if (newSel)\n newSel = EditorSelection.single(newSel.main.anchor - 1, newSel.main.head - 1);\n change = { from: sel.from, to: sel.to, insert: Text.of([\" \"]) };\n }\n if (change) {\n return applyDOMChangeInner(view, change, newSel, lastKey);\n }\n else if (newSel && !sameSelPos(newSel, sel)) {\n let scrollIntoView = false, userEvent = \"select\";\n if (view.inputState.lastSelectionTime > Date.now() - 50) {\n if (view.inputState.lastSelectionOrigin == \"select\")\n scrollIntoView = true;\n userEvent = view.inputState.lastSelectionOrigin;\n if (userEvent == \"select.pointer\")\n newSel = skipAtomsForSelection(state.facet(atomicRanges).map(f => f(view)), newSel);\n }\n view.dispatch({ selection: newSel, scrollIntoView, userEvent });\n return true;\n }\n else {\n return false;\n }\n}\nfunction applyDOMChangeInner(view, change, newSel, lastKey = -1) {\n if (browser.ios && view.inputState.flushIOSKey(change))\n return true;\n let sel = view.state.selection.main;\n // Android browsers don't fire reasonable key events for enter,\n // backspace, or delete. So this detects changes that look like\n // they're caused by those keys, and reinterprets them as key\n // events. (Some of these keys are also handled by beforeinput\n // events and the pendingAndroidKey mechanism, but that's not\n // reliable in all situations.)\n if (browser.android &&\n ((change.to == sel.to &&\n // GBoard will sometimes remove a space it just inserted\n // after a completion when you press enter\n (change.from == sel.from || change.from == sel.from - 1 && view.state.sliceDoc(change.from, sel.from) == \" \") &&\n change.insert.length == 1 && change.insert.lines == 2 &&\n dispatchKey(view.contentDOM, \"Enter\", 13)) ||\n ((change.from == sel.from - 1 && change.to == sel.to && change.insert.length == 0 ||\n lastKey == 8 && change.insert.length < change.to - change.from && change.to > sel.head) &&\n dispatchKey(view.contentDOM, \"Backspace\", 8)) ||\n (change.from == sel.from && change.to == sel.to + 1 && change.insert.length == 0 &&\n dispatchKey(view.contentDOM, \"Delete\", 46))))\n return true;\n let text = change.insert.toString();\n if (view.inputState.composing >= 0)\n view.inputState.composing++;\n let defaultTr;\n let defaultInsert = () => defaultTr || (defaultTr = applyDefaultInsert(view, change, newSel));\n if (!view.state.facet(inputHandler).some(h => h(view, change.from, change.to, text, defaultInsert)))\n view.dispatch(defaultInsert());\n return true;\n}\nfunction applyDefaultInsert(view, change, newSel) {\n let tr, startState = view.state, sel = startState.selection.main, inAtomic = -1;\n if (change.from == change.to && change.from < sel.from || change.from > sel.to) {\n let side = change.from < sel.from ? -1 : 1, pos = side < 0 ? sel.from : sel.to;\n let moved = skipAtomicRanges(startState.facet(atomicRanges).map(f => f(view)), pos, side);\n if (change.from == moved)\n inAtomic = moved;\n }\n if (inAtomic > -1) {\n tr = {\n changes: change,\n selection: EditorSelection.cursor(change.from + change.insert.length, -1)\n };\n }\n else if (change.from >= sel.from && change.to <= sel.to && change.to - change.from >= (sel.to - sel.from) / 3 &&\n (!newSel || newSel.main.empty && newSel.main.from == change.from + change.insert.length) &&\n view.inputState.composing < 0) {\n let before = sel.from < change.from ? startState.sliceDoc(sel.from, change.from) : \"\";\n let after = sel.to > change.to ? startState.sliceDoc(change.to, sel.to) : \"\";\n tr = startState.replaceSelection(view.state.toText(before + change.insert.sliceString(0, undefined, view.state.lineBreak) + after));\n }\n else {\n let changes = startState.changes(change);\n let mainSel = newSel && newSel.main.to <= changes.newLength ? newSel.main : undefined;\n // Try to apply a composition change to all cursors\n if (startState.selection.ranges.length > 1 && (view.inputState.composing >= 0 || view.inputState.compositionPendingChange) &&\n change.to <= sel.to + 10 && change.to >= sel.to - 10) {\n let replaced = view.state.sliceDoc(change.from, change.to);\n let compositionRange, composition = newSel && findCompositionNode(view, newSel.main.head);\n if (composition) {\n let dLen = change.insert.length - (change.to - change.from);\n compositionRange = { from: composition.from, to: composition.to - dLen };\n }\n else {\n compositionRange = view.state.doc.lineAt(sel.head);\n }\n let offset = sel.to - change.to;\n tr = startState.changeByRange(range => {\n if (range.from == sel.from && range.to == sel.to)\n return { changes, range: mainSel || range.map(changes) };\n let to = range.to - offset, from = to - replaced.length;\n if (view.state.sliceDoc(from, to) != replaced ||\n // Unfortunately, there's no way to make multiple\n // changes in the same node work without aborting\n // composition, so cursors in the composition range are\n // ignored.\n to >= compositionRange.from && from <= compositionRange.to)\n return { range };\n let rangeChanges = startState.changes({ from, to, insert: change.insert }), selOff = range.to - sel.to;\n return {\n changes: rangeChanges,\n range: !mainSel ? range.map(rangeChanges) :\n EditorSelection.range(Math.max(0, mainSel.anchor + selOff), Math.max(0, mainSel.head + selOff))\n };\n });\n }\n else {\n tr = {\n changes,\n selection: mainSel && startState.selection.replaceRange(mainSel)\n };\n }\n }\n let userEvent = \"input.type\";\n if (view.composing ||\n view.inputState.compositionPendingChange && view.inputState.compositionEndedAt > Date.now() - 50) {\n view.inputState.compositionPendingChange = false;\n userEvent += \".compose\";\n if (view.inputState.compositionFirstChange) {\n userEvent += \".start\";\n view.inputState.compositionFirstChange = false;\n }\n }\n return startState.update(tr, { userEvent, scrollIntoView: true });\n}\nfunction findDiff(a, b, preferredPos, preferredSide) {\n let minLen = Math.min(a.length, b.length);\n let from = 0;\n while (from < minLen && a.charCodeAt(from) == b.charCodeAt(from))\n from++;\n if (from == minLen && a.length == b.length)\n return null;\n let toA = a.length, toB = b.length;\n while (toA > 0 && toB > 0 && a.charCodeAt(toA - 1) == b.charCodeAt(toB - 1)) {\n toA--;\n toB--;\n }\n if (preferredSide == \"end\") {\n let adjust = Math.max(0, from - Math.min(toA, toB));\n preferredPos -= toA + adjust - from;\n }\n if (toA < from && a.length < b.length) {\n let move = preferredPos <= from && preferredPos >= toA ? from - preferredPos : 0;\n from -= move;\n toB = from + (toB - toA);\n toA = from;\n }\n else if (toB < from) {\n let move = preferredPos <= from && preferredPos >= toB ? from - preferredPos : 0;\n from -= move;\n toA = from + (toA - toB);\n toB = from;\n }\n return { from, toA, toB };\n}\nfunction selectionPoints(view) {\n let result = [];\n if (view.root.activeElement != view.contentDOM)\n return result;\n let { anchorNode, anchorOffset, focusNode, focusOffset } = view.observer.selectionRange;\n if (anchorNode) {\n result.push(new DOMPoint(anchorNode, anchorOffset));\n if (focusNode != anchorNode || focusOffset != anchorOffset)\n result.push(new DOMPoint(focusNode, focusOffset));\n }\n return result;\n}\nfunction selectionFromPoints(points, base) {\n if (points.length == 0)\n return null;\n let anchor = points[0].pos, head = points.length == 2 ? points[1].pos : anchor;\n return anchor > -1 && head > -1 ? EditorSelection.single(anchor + base, head + base) : null;\n}\nfunction sameSelPos(selection, range) {\n return range.head == selection.main.head && range.anchor == selection.main.anchor;\n}\n\nclass InputState {\n setSelectionOrigin(origin) {\n this.lastSelectionOrigin = origin;\n this.lastSelectionTime = Date.now();\n }\n constructor(view) {\n this.view = view;\n this.lastKeyCode = 0;\n this.lastKeyTime = 0;\n this.lastTouchTime = 0;\n this.lastTouchX = 0;\n this.lastTouchY = 0;\n this.lastFocusTime = 0;\n this.lastScrollTop = 0;\n this.lastScrollLeft = 0;\n this.lastWheelEvent = 0;\n // On iOS, some keys need to have their default behavior happen\n // (after which we retroactively handle them and reset the DOM) to\n // avoid messing up the virtual keyboard state.\n this.pendingIOSKey = undefined;\n /**\n When enabled (>-1), tab presses are not given to key handlers,\n leaving the browser's default behavior. If >0, the mode expires\n at that timestamp, and any other keypress clears it.\n Esc enables temporary tab focus mode for two seconds when not\n otherwise handled.\n */\n this.tabFocusMode = -1;\n this.lastSelectionOrigin = null;\n this.lastSelectionTime = 0;\n this.lastContextMenu = 0;\n this.scrollHandlers = [];\n this.handlers = Object.create(null);\n // -1 means not in a composition. Otherwise, this counts the number\n // of changes made during the composition. The count is used to\n // avoid treating the start state of the composition, before any\n // changes have been made, as part of the composition.\n this.composing = -1;\n // Tracks whether the next change should be marked as starting the\n // composition (null means no composition, true means next is the\n // first, false means first has already been marked for this\n // composition)\n this.compositionFirstChange = null;\n // End time of the previous composition\n this.compositionEndedAt = 0;\n // Used in a kludge to detect when an Enter keypress should be\n // considered part of the composition on Safari, which fires events\n // in the wrong order\n this.compositionPendingKey = false;\n // Used to categorize changes as part of a composition, even when\n // the mutation events fire shortly after the compositionend event\n this.compositionPendingChange = false;\n // Set by beforeinput, used in DOM change reader\n this.insertingText = \"\";\n this.insertingTextAt = 0;\n this.mouseSelection = null;\n // When a drag from the editor is active, this points at the range\n // being dragged.\n this.draggedContent = null;\n this.handleEvent = this.handleEvent.bind(this);\n this.notifiedFocused = view.hasFocus;\n // On Safari adding an input event handler somehow prevents an\n // issue where the composition vanishes when you press enter.\n if (browser.safari)\n view.contentDOM.addEventListener(\"input\", () => null);\n if (browser.gecko)\n firefoxCopyCutHack(view.contentDOM.ownerDocument);\n }\n handleEvent(event) {\n if (!eventBelongsToEditor(this.view, event) || this.ignoreDuringComposition(event))\n return;\n if (event.type == \"keydown\" && this.keydown(event))\n return;\n if (this.view.updateState != 0 /* UpdateState.Idle */)\n Promise.resolve().then(() => this.runHandlers(event.type, event));\n else\n this.runHandlers(event.type, event);\n }\n runHandlers(type, event) {\n let handlers = this.handlers[type];\n if (handlers) {\n for (let observer of handlers.observers)\n observer(this.view, event);\n for (let handler of handlers.handlers) {\n if (event.defaultPrevented)\n break;\n if (handler(this.view, event)) {\n event.preventDefault();\n break;\n }\n }\n }\n }\n ensureHandlers(plugins) {\n let handlers = computeHandlers(plugins), prev = this.handlers, dom = this.view.contentDOM;\n for (let type in handlers)\n if (type != \"scroll\") {\n let passive = !handlers[type].handlers.length;\n let exists = prev[type];\n if (exists && passive != !exists.handlers.length) {\n dom.removeEventListener(type, this.handleEvent);\n exists = null;\n }\n if (!exists)\n dom.addEventListener(type, this.handleEvent, { passive });\n }\n for (let type in prev)\n if (type != \"scroll\" && !handlers[type])\n dom.removeEventListener(type, this.handleEvent);\n this.handlers = handlers;\n }\n keydown(event) {\n // Must always run, even if a custom handler handled the event\n this.lastKeyCode = event.keyCode;\n this.lastKeyTime = Date.now();\n if (event.keyCode == 9 && this.tabFocusMode > -1 && (!this.tabFocusMode || Date.now() <= this.tabFocusMode))\n return true;\n if (this.tabFocusMode > 0 && event.keyCode != 27 && modifierCodes.indexOf(event.keyCode) < 0)\n this.tabFocusMode = -1;\n // Chrome for Android usually doesn't fire proper key events, but\n // occasionally does, usually surrounded by a bunch of complicated\n // composition changes. When an enter or backspace key event is\n // seen, hold off on handling DOM events for a bit, and then\n // dispatch it.\n if (browser.android && browser.chrome && !event.synthetic &&\n (event.keyCode == 13 || event.keyCode == 8)) {\n this.view.observer.delayAndroidKey(event.key, event.keyCode);\n return true;\n }\n // Preventing the default behavior of Enter on iOS makes the\n // virtual keyboard get stuck in the wrong (lowercase)\n // state. So we let it go through, and then, in\n // applyDOMChange, notify key handlers of it and reset to\n // the state they produce.\n let pending;\n if (browser.ios && !event.synthetic && !event.altKey && !event.metaKey &&\n ((pending = PendingKeys.find(key => key.keyCode == event.keyCode)) && !event.ctrlKey ||\n EmacsyPendingKeys.indexOf(event.key) > -1 && event.ctrlKey && !event.shiftKey)) {\n this.pendingIOSKey = pending || event;\n setTimeout(() => this.flushIOSKey(), 250);\n return true;\n }\n if (event.keyCode != 229)\n this.view.observer.forceFlush();\n return false;\n }\n flushIOSKey(change) {\n let key = this.pendingIOSKey;\n if (!key)\n return false;\n // This looks like an autocorrection before Enter\n if (key.key == \"Enter\" && change && change.from < change.to && /^\\S+$/.test(change.insert.toString()))\n return false;\n this.pendingIOSKey = undefined;\n return dispatchKey(this.view.contentDOM, key.key, key.keyCode, key instanceof KeyboardEvent ? key : undefined);\n }\n ignoreDuringComposition(event) {\n if (!/^key/.test(event.type) || event.synthetic)\n return false;\n if (this.composing > 0)\n return true;\n // See https://www.stum.de/2016/06/24/handling-ime-events-in-javascript/.\n // On some input method editors (IMEs), the Enter key is used to\n // confirm character selection. On Safari, when Enter is pressed,\n // compositionend and keydown events are sometimes emitted in the\n // wrong order. The key event should still be ignored, even when\n // it happens after the compositionend event.\n if (browser.safari && !browser.ios && this.compositionPendingKey && Date.now() - this.compositionEndedAt < 100) {\n this.compositionPendingKey = false;\n return true;\n }\n return false;\n }\n startMouseSelection(mouseSelection) {\n if (this.mouseSelection)\n this.mouseSelection.destroy();\n this.mouseSelection = mouseSelection;\n }\n update(update) {\n this.view.observer.update(update);\n if (this.mouseSelection)\n this.mouseSelection.update(update);\n if (this.draggedContent && update.docChanged)\n this.draggedContent = this.draggedContent.map(update.changes);\n if (update.transactions.length)\n this.lastKeyCode = this.lastSelectionTime = 0;\n }\n destroy() {\n if (this.mouseSelection)\n this.mouseSelection.destroy();\n }\n}\nfunction bindHandler(plugin, handler) {\n return (view, event) => {\n try {\n return handler.call(plugin, event, view);\n }\n catch (e) {\n logException(view.state, e);\n }\n };\n}\nfunction computeHandlers(plugins) {\n let result = Object.create(null);\n function record(type) {\n return result[type] || (result[type] = { observers: [], handlers: [] });\n }\n for (let plugin of plugins) {\n let spec = plugin.spec, handlers = spec && spec.plugin.domEventHandlers, observers = spec && spec.plugin.domEventObservers;\n if (handlers)\n for (let type in handlers) {\n let f = handlers[type];\n if (f)\n record(type).handlers.push(bindHandler(plugin.value, f));\n }\n if (observers)\n for (let type in observers) {\n let f = observers[type];\n if (f)\n record(type).observers.push(bindHandler(plugin.value, f));\n }\n }\n for (let type in handlers)\n record(type).handlers.push(handlers[type]);\n for (let type in observers)\n record(type).observers.push(observers[type]);\n return result;\n}\nconst PendingKeys = [\n { key: \"Backspace\", keyCode: 8, inputType: \"deleteContentBackward\" },\n { key: \"Enter\", keyCode: 13, inputType: \"insertParagraph\" },\n { key: \"Enter\", keyCode: 13, inputType: \"insertLineBreak\" },\n { key: \"Delete\", keyCode: 46, inputType: \"deleteContentForward\" }\n];\nconst EmacsyPendingKeys = \"dthko\";\n// Key codes for modifier keys\nconst modifierCodes = [16, 17, 18, 20, 91, 92, 224, 225];\nconst dragScrollMargin = 6;\nfunction dragScrollSpeed(dist) {\n return Math.max(0, dist) * 0.7 + 8;\n}\nfunction dist(a, b) {\n return Math.max(Math.abs(a.clientX - b.clientX), Math.abs(a.clientY - b.clientY));\n}\nclass MouseSelection {\n constructor(view, startEvent, style, mustSelect) {\n this.view = view;\n this.startEvent = startEvent;\n this.style = style;\n this.mustSelect = mustSelect;\n this.scrollSpeed = { x: 0, y: 0 };\n this.scrolling = -1;\n this.lastEvent = startEvent;\n this.scrollParents = scrollableParents(view.contentDOM);\n this.atoms = view.state.facet(atomicRanges).map(f => f(view));\n let doc = view.contentDOM.ownerDocument;\n doc.addEventListener(\"mousemove\", this.move = this.move.bind(this));\n doc.addEventListener(\"mouseup\", this.up = this.up.bind(this));\n this.extend = startEvent.shiftKey;\n this.multiple = view.state.facet(EditorState.allowMultipleSelections) && addsSelectionRange(view, startEvent);\n this.dragging = isInPrimarySelection(view, startEvent) && getClickType(startEvent) == 1 ? null : false;\n }\n start(event) {\n // When clicking outside of the selection, immediately apply the\n // effect of starting the selection\n if (this.dragging === false)\n this.select(event);\n }\n move(event) {\n if (event.buttons == 0)\n return this.destroy();\n if (this.dragging || this.dragging == null && dist(this.startEvent, event) < 10)\n return;\n this.select(this.lastEvent = event);\n let sx = 0, sy = 0;\n let left = 0, top = 0, right = this.view.win.innerWidth, bottom = this.view.win.innerHeight;\n if (this.scrollParents.x)\n ({ left, right } = this.scrollParents.x.getBoundingClientRect());\n if (this.scrollParents.y)\n ({ top, bottom } = this.scrollParents.y.getBoundingClientRect());\n let margins = getScrollMargins(this.view);\n if (event.clientX - margins.left <= left + dragScrollMargin)\n sx = -dragScrollSpeed(left - event.clientX);\n else if (event.clientX + margins.right >= right - dragScrollMargin)\n sx = dragScrollSpeed(event.clientX - right);\n if (event.clientY - margins.top <= top + dragScrollMargin)\n sy = -dragScrollSpeed(top - event.clientY);\n else if (event.clientY + margins.bottom >= bottom - dragScrollMargin)\n sy = dragScrollSpeed(event.clientY - bottom);\n this.setScrollSpeed(sx, sy);\n }\n up(event) {\n if (this.dragging == null)\n this.select(this.lastEvent);\n if (!this.dragging)\n event.preventDefault();\n this.destroy();\n }\n destroy() {\n this.setScrollSpeed(0, 0);\n let doc = this.view.contentDOM.ownerDocument;\n doc.removeEventListener(\"mousemove\", this.move);\n doc.removeEventListener(\"mouseup\", this.up);\n this.view.inputState.mouseSelection = this.view.inputState.draggedContent = null;\n }\n setScrollSpeed(sx, sy) {\n this.scrollSpeed = { x: sx, y: sy };\n if (sx || sy) {\n if (this.scrolling < 0)\n this.scrolling = setInterval(() => this.scroll(), 50);\n }\n else if (this.scrolling > -1) {\n clearInterval(this.scrolling);\n this.scrolling = -1;\n }\n }\n scroll() {\n let { x, y } = this.scrollSpeed;\n if (x && this.scrollParents.x) {\n this.scrollParents.x.scrollLeft += x;\n x = 0;\n }\n if (y && this.scrollParents.y) {\n this.scrollParents.y.scrollTop += y;\n y = 0;\n }\n if (x || y)\n this.view.win.scrollBy(x, y);\n if (this.dragging === false)\n this.select(this.lastEvent);\n }\n select(event) {\n let { view } = this, selection = skipAtomsForSelection(this.atoms, this.style.get(event, this.extend, this.multiple));\n if (this.mustSelect || !selection.eq(view.state.selection, this.dragging === false))\n this.view.dispatch({\n selection,\n userEvent: \"select.pointer\"\n });\n this.mustSelect = false;\n }\n update(update) {\n if (update.transactions.some(tr => tr.isUserEvent(\"input.type\")))\n this.destroy();\n else if (this.style.update(update))\n setTimeout(() => this.select(this.lastEvent), 20);\n }\n}\nfunction addsSelectionRange(view, event) {\n let facet = view.state.facet(clickAddsSelectionRange);\n return facet.length ? facet[0](event) : browser.mac ? event.metaKey : event.ctrlKey;\n}\nfunction dragMovesSelection(view, event) {\n let facet = view.state.facet(dragMovesSelection$1);\n return facet.length ? facet[0](event) : browser.mac ? !event.altKey : !event.ctrlKey;\n}\nfunction isInPrimarySelection(view, event) {\n let { main } = view.state.selection;\n if (main.empty)\n return false;\n // On boundary clicks, check whether the coordinates are inside the\n // selection's client rectangles\n let sel = getSelection(view.root);\n if (!sel || sel.rangeCount == 0)\n return true;\n let rects = sel.getRangeAt(0).getClientRects();\n for (let i = 0; i < rects.length; i++) {\n let rect = rects[i];\n if (rect.left <= event.clientX && rect.right >= event.clientX &&\n rect.top <= event.clientY && rect.bottom >= event.clientY)\n return true;\n }\n return false;\n}\nfunction eventBelongsToEditor(view, event) {\n if (!event.bubbles)\n return true;\n if (event.defaultPrevented)\n return false;\n for (let node = event.target, tile; node != view.contentDOM; node = node.parentNode)\n if (!node || node.nodeType == 11 ||\n ((tile = Tile.get(node)) && tile.isWidget() && !tile.isHidden && tile.widget.ignoreEvent(event)))\n return false;\n return true;\n}\nconst handlers = /*@__PURE__*/Object.create(null);\nconst observers = /*@__PURE__*/Object.create(null);\n// This is very crude, but unfortunately both these browsers _pretend_\n// that they have a clipboard API—all the objects and methods are\n// there, they just don't work, and they are hard to test.\nconst brokenClipboardAPI = (browser.ie && browser.ie_version < 15) ||\n (browser.ios && browser.webkit_version < 604);\nfunction capturePaste(view) {\n let parent = view.dom.parentNode;\n if (!parent)\n return;\n let target = parent.appendChild(document.createElement(\"textarea\"));\n target.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n target.focus();\n setTimeout(() => {\n view.focus();\n target.remove();\n doPaste(view, target.value);\n }, 50);\n}\nfunction textFilter(state, facet, text) {\n for (let filter of state.facet(facet))\n text = filter(text, state);\n return text;\n}\nfunction doPaste(view, input) {\n input = textFilter(view.state, clipboardInputFilter, input);\n let { state } = view, changes, i = 1, text = state.toText(input);\n let byLine = text.lines == state.selection.ranges.length;\n let linewise = lastLinewiseCopy != null && state.selection.ranges.every(r => r.empty) && lastLinewiseCopy == text.toString();\n if (linewise) {\n let lastLine = -1;\n changes = state.changeByRange(range => {\n let line = state.doc.lineAt(range.from);\n if (line.from == lastLine)\n return { range };\n lastLine = line.from;\n let insert = state.toText((byLine ? text.line(i++).text : input) + state.lineBreak);\n return { changes: { from: line.from, insert },\n range: EditorSelection.cursor(range.from + insert.length) };\n });\n }\n else if (byLine) {\n changes = state.changeByRange(range => {\n let line = text.line(i++);\n return { changes: { from: range.from, to: range.to, insert: line.text },\n range: EditorSelection.cursor(range.from + line.length) };\n });\n }\n else {\n changes = state.replaceSelection(text);\n }\n view.dispatch(changes, {\n userEvent: \"input.paste\",\n scrollIntoView: true\n });\n}\nobservers.scroll = view => {\n view.inputState.lastScrollTop = view.scrollDOM.scrollTop;\n view.inputState.lastScrollLeft = view.scrollDOM.scrollLeft;\n};\nobservers.wheel = observers.mousewheel = view => {\n view.inputState.lastWheelEvent = Date.now();\n};\nhandlers.keydown = (view, event) => {\n view.inputState.setSelectionOrigin(\"select\");\n if (event.keyCode == 27 && view.inputState.tabFocusMode != 0)\n view.inputState.tabFocusMode = Date.now() + 2000;\n return false;\n};\nobservers.touchstart = (view, e) => {\n let iState = view.inputState, touch = e.targetTouches[0];\n iState.lastTouchTime = Date.now();\n if (touch) {\n iState.lastTouchX = touch.clientX;\n iState.lastTouchY = touch.clientY;\n }\n iState.setSelectionOrigin(\"select.pointer\");\n};\nobservers.touchmove = view => {\n view.inputState.setSelectionOrigin(\"select.pointer\");\n};\nhandlers.mousedown = (view, event) => {\n view.observer.flush();\n if (view.inputState.lastTouchTime > Date.now() - 2000)\n return false; // Ignore touch interaction\n let style = null;\n for (let makeStyle of view.state.facet(mouseSelectionStyle)) {\n style = makeStyle(view, event);\n if (style)\n break;\n }\n if (!style && event.button == 0)\n style = basicMouseSelection(view, event);\n if (style) {\n let mustFocus = !view.hasFocus;\n view.inputState.startMouseSelection(new MouseSelection(view, event, style, mustFocus));\n if (mustFocus)\n view.observer.ignore(() => {\n focusPreventScroll(view.contentDOM);\n let active = view.root.activeElement;\n if (active && !active.contains(view.contentDOM))\n active.blur();\n });\n let mouseSel = view.inputState.mouseSelection;\n if (mouseSel) {\n mouseSel.start(event);\n return mouseSel.dragging === false;\n }\n }\n else {\n view.inputState.setSelectionOrigin(\"select.pointer\");\n }\n return false;\n};\nfunction rangeForClick(view, pos, bias, type) {\n if (type == 1) { // Single click\n return EditorSelection.cursor(pos, bias);\n }\n else if (type == 2) { // Double click\n return groupAt(view.state, pos, bias);\n }\n else { // Triple click\n let visual = view.docView.lineAt(pos, bias), line = view.state.doc.lineAt(visual ? visual.posAtEnd : pos);\n let from = visual ? visual.posAtStart : line.from, to = visual ? visual.posAtEnd : line.to;\n if (to < view.state.doc.length && to == line.to)\n to++;\n return EditorSelection.range(from, to);\n }\n}\nconst BadMouseDetail = browser.ie && browser.ie_version <= 11;\nlet lastMouseDown = null, lastMouseDownCount = 0, lastMouseDownTime = 0;\nfunction getClickType(event) {\n if (!BadMouseDetail)\n return event.detail;\n let last = lastMouseDown, lastTime = lastMouseDownTime;\n lastMouseDown = event;\n lastMouseDownTime = Date.now();\n return lastMouseDownCount = !last || (lastTime > Date.now() - 400 && Math.abs(last.clientX - event.clientX) < 2 &&\n Math.abs(last.clientY - event.clientY) < 2) ? (lastMouseDownCount + 1) % 3 : 1;\n}\nfunction basicMouseSelection(view, event) {\n let start = view.posAndSideAtCoords({ x: event.clientX, y: event.clientY }, false), type = getClickType(event);\n let startSel = view.state.selection;\n return {\n update(update) {\n if (update.docChanged) {\n start.pos = update.changes.mapPos(start.pos);\n startSel = startSel.map(update.changes);\n }\n },\n get(event, extend, multiple) {\n let cur = view.posAndSideAtCoords({ x: event.clientX, y: event.clientY }, false), removed;\n let range = rangeForClick(view, cur.pos, cur.assoc, type);\n if (start.pos != cur.pos && !extend) {\n let startRange = rangeForClick(view, start.pos, start.assoc, type);\n let from = Math.min(startRange.from, range.from), to = Math.max(startRange.to, range.to);\n range = from < range.from ? EditorSelection.range(from, to) : EditorSelection.range(to, from);\n }\n if (extend)\n return startSel.replaceRange(startSel.main.extend(range.from, range.to));\n else if (multiple && type == 1 && startSel.ranges.length > 1 && (removed = removeRangeAround(startSel, cur.pos)))\n return removed;\n else if (multiple)\n return startSel.addRange(range);\n else\n return EditorSelection.create([range]);\n }\n };\n}\nfunction removeRangeAround(sel, pos) {\n for (let i = 0; i < sel.ranges.length; i++) {\n let { from, to } = sel.ranges[i];\n if (from <= pos && to >= pos)\n return EditorSelection.create(sel.ranges.slice(0, i).concat(sel.ranges.slice(i + 1)), sel.mainIndex == i ? 0 : sel.mainIndex - (sel.mainIndex > i ? 1 : 0));\n }\n return null;\n}\nhandlers.dragstart = (view, event) => {\n let { selection: { main: range } } = view.state;\n if (event.target.draggable) {\n let tile = view.docView.tile.nearest(event.target);\n if (tile && tile.isWidget()) {\n let from = tile.posAtStart, to = from + tile.length;\n if (from >= range.to || to <= range.from)\n range = EditorSelection.range(from, to);\n }\n }\n let { inputState } = view;\n if (inputState.mouseSelection)\n inputState.mouseSelection.dragging = true;\n inputState.draggedContent = range;\n if (event.dataTransfer) {\n event.dataTransfer.setData(\"Text\", textFilter(view.state, clipboardOutputFilter, view.state.sliceDoc(range.from, range.to)));\n event.dataTransfer.effectAllowed = \"copyMove\";\n }\n return false;\n};\nhandlers.dragend = view => {\n view.inputState.draggedContent = null;\n return false;\n};\nfunction dropText(view, event, text, direct) {\n text = textFilter(view.state, clipboardInputFilter, text);\n if (!text)\n return;\n let dropPos = view.posAtCoords({ x: event.clientX, y: event.clientY }, false);\n let { draggedContent } = view.inputState;\n let del = direct && draggedContent && dragMovesSelection(view, event)\n ? { from: draggedContent.from, to: draggedContent.to } : null;\n let ins = { from: dropPos, insert: text };\n let changes = view.state.changes(del ? [del, ins] : ins);\n view.focus();\n view.dispatch({\n changes,\n selection: { anchor: changes.mapPos(dropPos, -1), head: changes.mapPos(dropPos, 1) },\n userEvent: del ? \"move.drop\" : \"input.drop\"\n });\n view.inputState.draggedContent = null;\n}\nhandlers.drop = (view, event) => {\n if (!event.dataTransfer)\n return false;\n if (view.state.readOnly)\n return true;\n let files = event.dataTransfer.files;\n if (files && files.length) { // For a file drop, read the file's text.\n let text = Array(files.length), read = 0;\n let finishFile = () => {\n if (++read == files.length)\n dropText(view, event, text.filter(s => s != null).join(view.state.lineBreak), false);\n };\n for (let i = 0; i < files.length; i++) {\n let reader = new FileReader;\n reader.onerror = finishFile;\n reader.onload = () => {\n if (!/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(reader.result))\n text[i] = reader.result;\n finishFile();\n };\n reader.readAsText(files[i]);\n }\n return true;\n }\n else {\n let text = event.dataTransfer.getData(\"Text\");\n if (text) {\n dropText(view, event, text, true);\n return true;\n }\n }\n return false;\n};\nhandlers.paste = (view, event) => {\n if (view.state.readOnly)\n return true;\n view.observer.flush();\n let data = brokenClipboardAPI ? null : event.clipboardData;\n if (data) {\n doPaste(view, data.getData(\"text/plain\") || data.getData(\"text/uri-list\"));\n return true;\n }\n else {\n capturePaste(view);\n return false;\n }\n};\nfunction captureCopy(view, text) {\n // The extra wrapper is somehow necessary on IE/Edge to prevent the\n // content from being mangled when it is put onto the clipboard\n let parent = view.dom.parentNode;\n if (!parent)\n return;\n let target = parent.appendChild(document.createElement(\"textarea\"));\n target.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n target.value = text;\n target.focus();\n target.selectionEnd = text.length;\n target.selectionStart = 0;\n setTimeout(() => {\n target.remove();\n view.focus();\n }, 50);\n}\nfunction copiedRange(state) {\n let content = [], ranges = [], linewise = false;\n for (let range of state.selection.ranges)\n if (!range.empty) {\n content.push(state.sliceDoc(range.from, range.to));\n ranges.push(range);\n }\n if (!content.length) {\n // Nothing selected, do a line-wise copy\n let upto = -1;\n for (let { from } of state.selection.ranges) {\n let line = state.doc.lineAt(from);\n if (line.number > upto) {\n content.push(line.text);\n ranges.push({ from: line.from, to: Math.min(state.doc.length, line.to + 1) });\n }\n upto = line.number;\n }\n linewise = true;\n }\n return { text: textFilter(state, clipboardOutputFilter, content.join(state.lineBreak)), ranges, linewise };\n}\nlet lastLinewiseCopy = null;\nhandlers.copy = handlers.cut = (view, event) => {\n // If the DOM selection is outside this editor, don't intercept.\n // This happens when a parent editor (like ProseMirror) selects content that\n // spans multiple elements including this CodeMirror. The copy event may\n // bubble through CodeMirror (e.g. when CodeMirror is the first or the last\n // element in the selection), but we should let the parent handle it.\n if (!hasSelection(view.contentDOM, view.observer.selectionRange))\n return false;\n let { text, ranges, linewise } = copiedRange(view.state);\n if (!text && !linewise)\n return false;\n lastLinewiseCopy = linewise ? text : null;\n if (event.type == \"cut\" && !view.state.readOnly)\n view.dispatch({\n changes: ranges,\n scrollIntoView: true,\n userEvent: \"delete.cut\"\n });\n let data = brokenClipboardAPI ? null : event.clipboardData;\n if (data) {\n data.clearData();\n data.setData(\"text/plain\", text);\n return true;\n }\n else {\n captureCopy(view, text);\n return false;\n }\n};\nconst isFocusChange = /*@__PURE__*/Annotation.define();\nfunction focusChangeTransaction(state, focus) {\n let effects = [];\n for (let getEffect of state.facet(focusChangeEffect)) {\n let effect = getEffect(state, focus);\n if (effect)\n effects.push(effect);\n }\n return effects.length ? state.update({ effects, annotations: isFocusChange.of(true) }) : null;\n}\nfunction updateForFocusChange(view) {\n setTimeout(() => {\n let focus = view.hasFocus;\n if (focus != view.inputState.notifiedFocused) {\n let tr = focusChangeTransaction(view.state, focus);\n if (tr)\n view.dispatch(tr);\n else\n view.update([]);\n }\n }, 10);\n}\nobservers.focus = view => {\n view.inputState.lastFocusTime = Date.now();\n // When focusing reset the scroll position, move it back to where it was\n if (!view.scrollDOM.scrollTop && (view.inputState.lastScrollTop || view.inputState.lastScrollLeft)) {\n view.scrollDOM.scrollTop = view.inputState.lastScrollTop;\n view.scrollDOM.scrollLeft = view.inputState.lastScrollLeft;\n }\n updateForFocusChange(view);\n};\nobservers.blur = view => {\n view.observer.clearSelectionRange();\n updateForFocusChange(view);\n};\nobservers.compositionstart = observers.compositionupdate = view => {\n if (view.observer.editContext)\n return; // Composition handled by edit context\n if (view.inputState.compositionFirstChange == null)\n view.inputState.compositionFirstChange = true;\n if (view.inputState.composing < 0) {\n // FIXME possibly set a timeout to clear it again on Android\n view.inputState.composing = 0;\n }\n};\nobservers.compositionend = view => {\n if (view.observer.editContext)\n return; // Composition handled by edit context\n view.inputState.composing = -1;\n view.inputState.compositionEndedAt = Date.now();\n view.inputState.compositionPendingKey = true;\n view.inputState.compositionPendingChange = view.observer.pendingRecords().length > 0;\n view.inputState.compositionFirstChange = null;\n if (browser.chrome && browser.android) {\n // Delay flushing for a bit on Android because it'll often fire a\n // bunch of contradictory changes in a row at end of compositon\n view.observer.flushSoon();\n }\n else if (view.inputState.compositionPendingChange) {\n // If we found pending records, schedule a flush.\n Promise.resolve().then(() => view.observer.flush());\n }\n else {\n // Otherwise, make sure that, if no changes come in soon, the\n // composition view is cleared.\n setTimeout(() => {\n if (view.inputState.composing < 0 && view.docView.hasComposition)\n view.update([]);\n }, 50);\n }\n};\nobservers.contextmenu = view => {\n view.inputState.lastContextMenu = Date.now();\n};\nhandlers.beforeinput = (view, event) => {\n var _a, _b;\n if (event.inputType == \"insertText\" || event.inputType == \"insertCompositionText\") {\n view.inputState.insertingText = event.data;\n view.inputState.insertingTextAt = Date.now();\n }\n // In EditContext mode, we must handle insertReplacementText events\n // directly, to make spell checking corrections work\n if (event.inputType == \"insertReplacementText\" && view.observer.editContext) {\n let text = (_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.getData(\"text/plain\"), ranges = event.getTargetRanges();\n if (text && ranges.length) {\n let r = ranges[0];\n let from = view.posAtDOM(r.startContainer, r.startOffset), to = view.posAtDOM(r.endContainer, r.endOffset);\n applyDOMChangeInner(view, { from, to, insert: view.state.toText(text) }, null);\n return true;\n }\n }\n // Because Chrome Android doesn't fire useful key events, use\n // beforeinput to detect backspace (and possibly enter and delete,\n // but those usually don't even seem to fire beforeinput events at\n // the moment) and fake a key event for it.\n //\n // (preventDefault on beforeinput, though supported in the spec,\n // seems to do nothing at all on Chrome).\n let pending;\n if (browser.chrome && browser.android && (pending = PendingKeys.find(key => key.inputType == event.inputType))) {\n view.observer.delayAndroidKey(pending.key, pending.keyCode);\n if (pending.key == \"Backspace\" || pending.key == \"Delete\") {\n let startViewHeight = ((_b = window.visualViewport) === null || _b === void 0 ? void 0 : _b.height) || 0;\n setTimeout(() => {\n var _a;\n // Backspacing near uneditable nodes on Chrome Android sometimes\n // closes the virtual keyboard. This tries to crudely detect\n // that and refocus to get it back.\n if ((((_a = window.visualViewport) === null || _a === void 0 ? void 0 : _a.height) || 0) > startViewHeight + 10 && view.hasFocus) {\n view.contentDOM.blur();\n view.focus();\n }\n }, 100);\n }\n }\n if (browser.ios && event.inputType == \"deleteContentForward\") {\n // For some reason, DOM changes (and beforeinput) happen _before_\n // the key event for ctrl-d on iOS when using an external\n // keyboard.\n view.observer.flushSoon();\n }\n // Safari will occasionally forget to fire compositionend at the end of a dead-key composition\n if (browser.safari && event.inputType == \"insertText\" && view.inputState.composing >= 0) {\n setTimeout(() => observers.compositionend(view, event), 20);\n }\n return false;\n};\nconst appliedFirefoxHack = /*@__PURE__*/new Set;\n// In Firefox, when cut/copy handlers are added to the document, that\n// somehow avoids a bug where those events aren't fired when the\n// selection is empty. See https://github.com/codemirror/dev/issues/1082\n// and https://bugzilla.mozilla.org/show_bug.cgi?id=995961\nfunction firefoxCopyCutHack(doc) {\n if (!appliedFirefoxHack.has(doc)) {\n appliedFirefoxHack.add(doc);\n doc.addEventListener(\"copy\", () => { });\n doc.addEventListener(\"cut\", () => { });\n }\n}\n\nconst wrappingWhiteSpace = [\"pre-wrap\", \"normal\", \"pre-line\", \"break-spaces\"];\n// Used to track, during updateHeight, if any actual heights changed\nlet heightChangeFlag = false;\nfunction clearHeightChangeFlag() { heightChangeFlag = false; }\nclass HeightOracle {\n constructor(lineWrapping) {\n this.lineWrapping = lineWrapping;\n this.doc = Text.empty;\n this.heightSamples = {};\n this.lineHeight = 14; // The height of an entire line (line-height)\n this.charWidth = 7;\n this.textHeight = 14; // The height of the actual font (font-size)\n this.lineLength = 30;\n }\n heightForGap(from, to) {\n let lines = this.doc.lineAt(to).number - this.doc.lineAt(from).number + 1;\n if (this.lineWrapping)\n lines += Math.max(0, Math.ceil(((to - from) - (lines * this.lineLength * 0.5)) / this.lineLength));\n return this.lineHeight * lines;\n }\n heightForLine(length) {\n if (!this.lineWrapping)\n return this.lineHeight;\n let lines = 1 + Math.max(0, Math.ceil((length - this.lineLength) / Math.max(1, this.lineLength - 5)));\n return lines * this.lineHeight;\n }\n setDoc(doc) { this.doc = doc; return this; }\n mustRefreshForWrapping(whiteSpace) {\n return (wrappingWhiteSpace.indexOf(whiteSpace) > -1) != this.lineWrapping;\n }\n mustRefreshForHeights(lineHeights) {\n let newHeight = false;\n for (let i = 0; i < lineHeights.length; i++) {\n let h = lineHeights[i];\n if (h < 0) {\n i++;\n }\n else if (!this.heightSamples[Math.floor(h * 10)]) { // Round to .1 pixels\n newHeight = true;\n this.heightSamples[Math.floor(h * 10)] = true;\n }\n }\n return newHeight;\n }\n refresh(whiteSpace, lineHeight, charWidth, textHeight, lineLength, knownHeights) {\n let lineWrapping = wrappingWhiteSpace.indexOf(whiteSpace) > -1;\n let changed = Math.abs(lineHeight - this.lineHeight) > 0.3 || this.lineWrapping != lineWrapping ||\n Math.abs(charWidth - this.charWidth) > 0.1;\n this.lineWrapping = lineWrapping;\n this.lineHeight = lineHeight;\n this.charWidth = charWidth;\n this.textHeight = textHeight;\n this.lineLength = lineLength;\n if (changed) {\n this.heightSamples = {};\n for (let i = 0; i < knownHeights.length; i++) {\n let h = knownHeights[i];\n if (h < 0)\n i++;\n else\n this.heightSamples[Math.floor(h * 10)] = true;\n }\n }\n return changed;\n }\n}\n// This object is used by `updateHeight` to make DOM measurements\n// arrive at the right nodes. The `heights` array is a sequence of\n// block heights, starting from position `from`.\nclass MeasuredHeights {\n constructor(from, heights) {\n this.from = from;\n this.heights = heights;\n this.index = 0;\n }\n get more() { return this.index < this.heights.length; }\n}\n/**\nRecord used to represent information about a block-level element\nin the editor view.\n*/\nclass BlockInfo {\n /**\n @internal\n */\n constructor(\n /**\n The start of the element in the document.\n */\n from, \n /**\n The length of the element.\n */\n length, \n /**\n The top position of the element (relative to the top of the\n document).\n */\n top, \n /**\n Its height.\n */\n height, \n /**\n @internal Weird packed field that holds an array of children\n for composite blocks, a decoration for block widgets, and a\n number indicating the amount of widget-created line breaks for\n text blocks.\n */\n _content) {\n this.from = from;\n this.length = length;\n this.top = top;\n this.height = height;\n this._content = _content;\n }\n /**\n The type of element this is. When querying lines, this may be\n an array of all the blocks that make up the line.\n */\n get type() {\n return typeof this._content == \"number\" ? BlockType.Text :\n Array.isArray(this._content) ? this._content : this._content.type;\n }\n /**\n The end of the element as a document position.\n */\n get to() { return this.from + this.length; }\n /**\n The bottom position of the element.\n */\n get bottom() { return this.top + this.height; }\n /**\n If this is a widget block, this will return the widget\n associated with it.\n */\n get widget() {\n return this._content instanceof PointDecoration ? this._content.widget : null;\n }\n /**\n If this is a textblock, this holds the number of line breaks\n that appear in widgets inside the block.\n */\n get widgetLineBreaks() {\n return typeof this._content == \"number\" ? this._content : 0;\n }\n /**\n @internal\n */\n join(other) {\n let content = (Array.isArray(this._content) ? this._content : [this])\n .concat(Array.isArray(other._content) ? other._content : [other]);\n return new BlockInfo(this.from, this.length + other.length, this.top, this.height + other.height, content);\n }\n}\nvar QueryType = /*@__PURE__*/(function (QueryType) {\n QueryType[QueryType[\"ByPos\"] = 0] = \"ByPos\";\n QueryType[QueryType[\"ByHeight\"] = 1] = \"ByHeight\";\n QueryType[QueryType[\"ByPosNoHeight\"] = 2] = \"ByPosNoHeight\";\nreturn QueryType})(QueryType || (QueryType = {}));\nconst Epsilon = 1e-3;\nclass HeightMap {\n constructor(length, // The number of characters covered\n height, // Height of this part of the document\n flags = 2 /* Flag.Outdated */) {\n this.length = length;\n this.height = height;\n this.flags = flags;\n }\n get outdated() { return (this.flags & 2 /* Flag.Outdated */) > 0; }\n set outdated(value) { this.flags = (value ? 2 /* Flag.Outdated */ : 0) | (this.flags & ~2 /* Flag.Outdated */); }\n setHeight(height) {\n if (this.height != height) {\n if (Math.abs(this.height - height) > Epsilon)\n heightChangeFlag = true;\n this.height = height;\n }\n }\n // Base case is to replace a leaf node, which simply builds a tree\n // from the new nodes and returns that (HeightMapBranch and\n // HeightMapGap override this to actually use from/to)\n replace(_from, _to, nodes) {\n return HeightMap.of(nodes);\n }\n // Again, these are base cases, and are overridden for branch and gap nodes.\n decomposeLeft(_to, result) { result.push(this); }\n decomposeRight(_from, result) { result.push(this); }\n applyChanges(decorations, oldDoc, oracle, changes) {\n let me = this, doc = oracle.doc;\n for (let i = changes.length - 1; i >= 0; i--) {\n let { fromA, toA, fromB, toB } = changes[i];\n let start = me.lineAt(fromA, QueryType.ByPosNoHeight, oracle.setDoc(oldDoc), 0, 0);\n let end = start.to >= toA ? start : me.lineAt(toA, QueryType.ByPosNoHeight, oracle, 0, 0);\n toB += end.to - toA;\n toA = end.to;\n while (i > 0 && start.from <= changes[i - 1].toA) {\n fromA = changes[i - 1].fromA;\n fromB = changes[i - 1].fromB;\n i--;\n if (fromA < start.from)\n start = me.lineAt(fromA, QueryType.ByPosNoHeight, oracle, 0, 0);\n }\n fromB += start.from - fromA;\n fromA = start.from;\n let nodes = NodeBuilder.build(oracle.setDoc(doc), decorations, fromB, toB);\n me = replace(me, me.replace(fromA, toA, nodes));\n }\n return me.updateHeight(oracle, 0);\n }\n static empty() { return new HeightMapText(0, 0, 0); }\n // nodes uses null values to indicate the position of line breaks.\n // There are never line breaks at the start or end of the array, or\n // two line breaks next to each other, and the array isn't allowed\n // to be empty (same restrictions as return value from the builder).\n static of(nodes) {\n if (nodes.length == 1)\n return nodes[0];\n let i = 0, j = nodes.length, before = 0, after = 0;\n for (;;) {\n if (i == j) {\n if (before > after * 2) {\n let split = nodes[i - 1];\n if (split.break)\n nodes.splice(--i, 1, split.left, null, split.right);\n else\n nodes.splice(--i, 1, split.left, split.right);\n j += 1 + split.break;\n before -= split.size;\n }\n else if (after > before * 2) {\n let split = nodes[j];\n if (split.break)\n nodes.splice(j, 1, split.left, null, split.right);\n else\n nodes.splice(j, 1, split.left, split.right);\n j += 2 + split.break;\n after -= split.size;\n }\n else {\n break;\n }\n }\n else if (before < after) {\n let next = nodes[i++];\n if (next)\n before += next.size;\n }\n else {\n let next = nodes[--j];\n if (next)\n after += next.size;\n }\n }\n let brk = 0;\n if (nodes[i - 1] == null) {\n brk = 1;\n i--;\n }\n else if (nodes[i] == null) {\n brk = 1;\n j++;\n }\n return new HeightMapBranch(HeightMap.of(nodes.slice(0, i)), brk, HeightMap.of(nodes.slice(j)));\n }\n}\nfunction replace(old, val) {\n if (old == val)\n return old;\n if (old.constructor != val.constructor)\n heightChangeFlag = true;\n return val;\n}\nHeightMap.prototype.size = 1;\nconst SpaceDeco = /*@__PURE__*/Decoration.replace({});\nclass HeightMapBlock extends HeightMap {\n constructor(length, height, deco) {\n super(length, height);\n this.deco = deco;\n this.spaceAbove = 0;\n }\n mainBlock(top, offset) {\n return new BlockInfo(offset, this.length, top + this.spaceAbove, this.height - this.spaceAbove, this.deco || 0);\n }\n blockAt(height, _oracle, top, offset) {\n return this.spaceAbove && height < top + this.spaceAbove ? new BlockInfo(offset, 0, top, this.spaceAbove, SpaceDeco)\n : this.mainBlock(top, offset);\n }\n lineAt(_value, _type, oracle, top, offset) {\n let main = this.mainBlock(top, offset);\n return this.spaceAbove ? this.blockAt(0, oracle, top, offset).join(main) : main;\n }\n forEachLine(from, to, oracle, top, offset, f) {\n if (from <= offset + this.length && to >= offset)\n f(this.lineAt(0, QueryType.ByPos, oracle, top, offset));\n }\n setMeasuredHeight(measured) {\n let next = measured.heights[measured.index++];\n if (next < 0) {\n this.spaceAbove = -next;\n next = measured.heights[measured.index++];\n }\n else {\n this.spaceAbove = 0;\n }\n this.setHeight(next);\n }\n updateHeight(oracle, offset = 0, _force = false, measured) {\n if (measured && measured.from <= offset && measured.more)\n this.setMeasuredHeight(measured);\n this.outdated = false;\n return this;\n }\n toString() { return `block(${this.length})`; }\n}\nclass HeightMapText extends HeightMapBlock {\n constructor(length, height, above) {\n super(length, height, null);\n this.collapsed = 0; // Amount of collapsed content in the line\n this.widgetHeight = 0; // Maximum inline widget height\n this.breaks = 0; // Number of widget-introduced line breaks on the line\n this.spaceAbove = above;\n }\n mainBlock(top, offset) {\n return new BlockInfo(offset, this.length, top + this.spaceAbove, this.height - this.spaceAbove, this.breaks);\n }\n replace(_from, _to, nodes) {\n let node = nodes[0];\n if (nodes.length == 1 && (node instanceof HeightMapText || node instanceof HeightMapGap && (node.flags & 4 /* Flag.SingleLine */)) &&\n Math.abs(this.length - node.length) < 10) {\n if (node instanceof HeightMapGap)\n node = new HeightMapText(node.length, this.height, this.spaceAbove);\n else\n node.height = this.height;\n if (!this.outdated)\n node.outdated = false;\n return node;\n }\n else {\n return HeightMap.of(nodes);\n }\n }\n updateHeight(oracle, offset = 0, force = false, measured) {\n if (measured && measured.from <= offset && measured.more) {\n this.setMeasuredHeight(measured);\n }\n else if (force || this.outdated) {\n this.spaceAbove = 0;\n this.setHeight(Math.max(this.widgetHeight, oracle.heightForLine(this.length - this.collapsed)) +\n this.breaks * oracle.lineHeight);\n }\n this.outdated = false;\n return this;\n }\n toString() {\n return `line(${this.length}${this.collapsed ? -this.collapsed : \"\"}${this.widgetHeight ? \":\" + this.widgetHeight : \"\"})`;\n }\n}\nclass HeightMapGap extends HeightMap {\n constructor(length) { super(length, 0); }\n heightMetrics(oracle, offset) {\n let firstLine = oracle.doc.lineAt(offset).number, lastLine = oracle.doc.lineAt(offset + this.length).number;\n let lines = lastLine - firstLine + 1;\n let perLine, perChar = 0;\n if (oracle.lineWrapping) {\n let totalPerLine = Math.min(this.height, oracle.lineHeight * lines);\n perLine = totalPerLine / lines;\n if (this.length > lines + 1)\n perChar = (this.height - totalPerLine) / (this.length - lines - 1);\n }\n else {\n perLine = this.height / lines;\n }\n return { firstLine, lastLine, perLine, perChar };\n }\n blockAt(height, oracle, top, offset) {\n let { firstLine, lastLine, perLine, perChar } = this.heightMetrics(oracle, offset);\n if (oracle.lineWrapping) {\n let guess = offset + (height < oracle.lineHeight ? 0\n : Math.round(Math.max(0, Math.min(1, (height - top) / this.height)) * this.length));\n let line = oracle.doc.lineAt(guess), lineHeight = perLine + line.length * perChar;\n let lineTop = Math.max(top, height - lineHeight / 2);\n return new BlockInfo(line.from, line.length, lineTop, lineHeight, 0);\n }\n else {\n let line = Math.max(0, Math.min(lastLine - firstLine, Math.floor((height - top) / perLine)));\n let { from, length } = oracle.doc.line(firstLine + line);\n return new BlockInfo(from, length, top + perLine * line, perLine, 0);\n }\n }\n lineAt(value, type, oracle, top, offset) {\n if (type == QueryType.ByHeight)\n return this.blockAt(value, oracle, top, offset);\n if (type == QueryType.ByPosNoHeight) {\n let { from, to } = oracle.doc.lineAt(value);\n return new BlockInfo(from, to - from, 0, 0, 0);\n }\n let { firstLine, perLine, perChar } = this.heightMetrics(oracle, offset);\n let line = oracle.doc.lineAt(value), lineHeight = perLine + line.length * perChar;\n let linesAbove = line.number - firstLine;\n let lineTop = top + perLine * linesAbove + perChar * (line.from - offset - linesAbove);\n return new BlockInfo(line.from, line.length, Math.max(top, Math.min(lineTop, top + this.height - lineHeight)), lineHeight, 0);\n }\n forEachLine(from, to, oracle, top, offset, f) {\n from = Math.max(from, offset);\n to = Math.min(to, offset + this.length);\n let { firstLine, perLine, perChar } = this.heightMetrics(oracle, offset);\n for (let pos = from, lineTop = top; pos <= to;) {\n let line = oracle.doc.lineAt(pos);\n if (pos == from) {\n let linesAbove = line.number - firstLine;\n lineTop += perLine * linesAbove + perChar * (from - offset - linesAbove);\n }\n let lineHeight = perLine + perChar * line.length;\n f(new BlockInfo(line.from, line.length, lineTop, lineHeight, 0));\n lineTop += lineHeight;\n pos = line.to + 1;\n }\n }\n replace(from, to, nodes) {\n let after = this.length - to;\n if (after > 0) {\n let last = nodes[nodes.length - 1];\n if (last instanceof HeightMapGap)\n nodes[nodes.length - 1] = new HeightMapGap(last.length + after);\n else\n nodes.push(null, new HeightMapGap(after - 1));\n }\n if (from > 0) {\n let first = nodes[0];\n if (first instanceof HeightMapGap)\n nodes[0] = new HeightMapGap(from + first.length);\n else\n nodes.unshift(new HeightMapGap(from - 1), null);\n }\n return HeightMap.of(nodes);\n }\n decomposeLeft(to, result) {\n result.push(new HeightMapGap(to - 1), null);\n }\n decomposeRight(from, result) {\n result.push(null, new HeightMapGap(this.length - from - 1));\n }\n updateHeight(oracle, offset = 0, force = false, measured) {\n let end = offset + this.length;\n if (measured && measured.from <= offset + this.length && measured.more) {\n // Fill in part of this gap with measured lines. We know there\n // can't be widgets or collapsed ranges in those lines, because\n // they would already have been added to the heightmap (gaps\n // only contain plain text).\n let nodes = [], pos = Math.max(offset, measured.from), singleHeight = -1;\n if (measured.from > offset)\n nodes.push(new HeightMapGap(measured.from - offset - 1).updateHeight(oracle, offset));\n while (pos <= end && measured.more) {\n let len = oracle.doc.lineAt(pos).length;\n if (nodes.length)\n nodes.push(null);\n let height = measured.heights[measured.index++], above = 0;\n if (height < 0) {\n above = -height;\n height = measured.heights[measured.index++];\n }\n if (singleHeight == -1)\n singleHeight = height;\n else if (Math.abs(height - singleHeight) >= Epsilon)\n singleHeight = -2;\n let line = new HeightMapText(len, height, above);\n line.outdated = false;\n nodes.push(line);\n pos += len + 1;\n }\n if (pos <= end)\n nodes.push(null, new HeightMapGap(end - pos).updateHeight(oracle, pos));\n let result = HeightMap.of(nodes);\n if (singleHeight < 0 || Math.abs(result.height - this.height) >= Epsilon ||\n Math.abs(singleHeight - this.heightMetrics(oracle, offset).perLine) >= Epsilon)\n heightChangeFlag = true;\n return replace(this, result);\n }\n else if (force || this.outdated) {\n this.setHeight(oracle.heightForGap(offset, offset + this.length));\n this.outdated = false;\n }\n return this;\n }\n toString() { return `gap(${this.length})`; }\n}\nclass HeightMapBranch extends HeightMap {\n constructor(left, brk, right) {\n super(left.length + brk + right.length, left.height + right.height, brk | (left.outdated || right.outdated ? 2 /* Flag.Outdated */ : 0));\n this.left = left;\n this.right = right;\n this.size = left.size + right.size;\n }\n get break() { return this.flags & 1 /* Flag.Break */; }\n blockAt(height, oracle, top, offset) {\n let mid = top + this.left.height;\n return height < mid ? this.left.blockAt(height, oracle, top, offset)\n : this.right.blockAt(height, oracle, mid, offset + this.left.length + this.break);\n }\n lineAt(value, type, oracle, top, offset) {\n let rightTop = top + this.left.height, rightOffset = offset + this.left.length + this.break;\n let left = type == QueryType.ByHeight ? value < rightTop : value < rightOffset;\n let base = left ? this.left.lineAt(value, type, oracle, top, offset)\n : this.right.lineAt(value, type, oracle, rightTop, rightOffset);\n if (this.break || (left ? base.to < rightOffset : base.from > rightOffset))\n return base;\n let subQuery = type == QueryType.ByPosNoHeight ? QueryType.ByPosNoHeight : QueryType.ByPos;\n if (left)\n return base.join(this.right.lineAt(rightOffset, subQuery, oracle, rightTop, rightOffset));\n else\n return this.left.lineAt(rightOffset, subQuery, oracle, top, offset).join(base);\n }\n forEachLine(from, to, oracle, top, offset, f) {\n let rightTop = top + this.left.height, rightOffset = offset + this.left.length + this.break;\n if (this.break) {\n if (from < rightOffset)\n this.left.forEachLine(from, to, oracle, top, offset, f);\n if (to >= rightOffset)\n this.right.forEachLine(from, to, oracle, rightTop, rightOffset, f);\n }\n else {\n let mid = this.lineAt(rightOffset, QueryType.ByPos, oracle, top, offset);\n if (from < mid.from)\n this.left.forEachLine(from, mid.from - 1, oracle, top, offset, f);\n if (mid.to >= from && mid.from <= to)\n f(mid);\n if (to > mid.to)\n this.right.forEachLine(mid.to + 1, to, oracle, rightTop, rightOffset, f);\n }\n }\n replace(from, to, nodes) {\n let rightStart = this.left.length + this.break;\n if (to < rightStart)\n return this.balanced(this.left.replace(from, to, nodes), this.right);\n if (from > this.left.length)\n return this.balanced(this.left, this.right.replace(from - rightStart, to - rightStart, nodes));\n let result = [];\n if (from > 0)\n this.decomposeLeft(from, result);\n let left = result.length;\n for (let node of nodes)\n result.push(node);\n if (from > 0)\n mergeGaps(result, left - 1);\n if (to < this.length) {\n let right = result.length;\n this.decomposeRight(to, result);\n mergeGaps(result, right);\n }\n return HeightMap.of(result);\n }\n decomposeLeft(to, result) {\n let left = this.left.length;\n if (to <= left)\n return this.left.decomposeLeft(to, result);\n result.push(this.left);\n if (this.break) {\n left++;\n if (to >= left)\n result.push(null);\n }\n if (to > left)\n this.right.decomposeLeft(to - left, result);\n }\n decomposeRight(from, result) {\n let left = this.left.length, right = left + this.break;\n if (from >= right)\n return this.right.decomposeRight(from - right, result);\n if (from < left)\n this.left.decomposeRight(from, result);\n if (this.break && from < right)\n result.push(null);\n result.push(this.right);\n }\n balanced(left, right) {\n if (left.size > 2 * right.size || right.size > 2 * left.size)\n return HeightMap.of(this.break ? [left, null, right] : [left, right]);\n this.left = replace(this.left, left);\n this.right = replace(this.right, right);\n this.setHeight(left.height + right.height);\n this.outdated = left.outdated || right.outdated;\n this.size = left.size + right.size;\n this.length = left.length + this.break + right.length;\n return this;\n }\n updateHeight(oracle, offset = 0, force = false, measured) {\n let { left, right } = this, rightStart = offset + left.length + this.break, rebalance = null;\n if (measured && measured.from <= offset + left.length && measured.more)\n rebalance = left = left.updateHeight(oracle, offset, force, measured);\n else\n left.updateHeight(oracle, offset, force);\n if (measured && measured.from <= rightStart + right.length && measured.more)\n rebalance = right = right.updateHeight(oracle, rightStart, force, measured);\n else\n right.updateHeight(oracle, rightStart, force);\n if (rebalance)\n return this.balanced(left, right);\n this.height = this.left.height + this.right.height;\n this.outdated = false;\n return this;\n }\n toString() { return this.left + (this.break ? \" \" : \"-\") + this.right; }\n}\nfunction mergeGaps(nodes, around) {\n let before, after;\n if (nodes[around] == null &&\n (before = nodes[around - 1]) instanceof HeightMapGap &&\n (after = nodes[around + 1]) instanceof HeightMapGap)\n nodes.splice(around - 1, 3, new HeightMapGap(before.length + 1 + after.length));\n}\nconst relevantWidgetHeight = 5;\nclass NodeBuilder {\n constructor(pos, oracle) {\n this.pos = pos;\n this.oracle = oracle;\n this.nodes = [];\n this.lineStart = -1;\n this.lineEnd = -1;\n this.covering = null;\n this.writtenTo = pos;\n }\n get isCovered() {\n return this.covering && this.nodes[this.nodes.length - 1] == this.covering;\n }\n span(_from, to) {\n if (this.lineStart > -1) {\n let end = Math.min(to, this.lineEnd), last = this.nodes[this.nodes.length - 1];\n if (last instanceof HeightMapText)\n last.length += end - this.pos;\n else if (end > this.pos || !this.isCovered)\n this.nodes.push(new HeightMapText(end - this.pos, -1, 0));\n this.writtenTo = end;\n if (to > end) {\n this.nodes.push(null);\n this.writtenTo++;\n this.lineStart = -1;\n }\n }\n this.pos = to;\n }\n point(from, to, deco) {\n if (from < to || deco.heightRelevant) {\n let height = deco.widget ? deco.widget.estimatedHeight : 0;\n let breaks = deco.widget ? deco.widget.lineBreaks : 0;\n if (height < 0)\n height = this.oracle.lineHeight;\n let len = to - from;\n if (deco.block) {\n this.addBlock(new HeightMapBlock(len, height, deco));\n }\n else if (len || breaks || height >= relevantWidgetHeight) {\n this.addLineDeco(height, breaks, len);\n }\n }\n else if (to > from) {\n this.span(from, to);\n }\n if (this.lineEnd > -1 && this.lineEnd < this.pos)\n this.lineEnd = this.oracle.doc.lineAt(this.pos).to;\n }\n enterLine() {\n if (this.lineStart > -1)\n return;\n let { from, to } = this.oracle.doc.lineAt(this.pos);\n this.lineStart = from;\n this.lineEnd = to;\n if (this.writtenTo < from) {\n if (this.writtenTo < from - 1 || this.nodes[this.nodes.length - 1] == null)\n this.nodes.push(this.blankContent(this.writtenTo, from - 1));\n this.nodes.push(null);\n }\n if (this.pos > from)\n this.nodes.push(new HeightMapText(this.pos - from, -1, 0));\n this.writtenTo = this.pos;\n }\n blankContent(from, to) {\n let gap = new HeightMapGap(to - from);\n if (this.oracle.doc.lineAt(from).to == to)\n gap.flags |= 4 /* Flag.SingleLine */;\n return gap;\n }\n ensureLine() {\n this.enterLine();\n let last = this.nodes.length ? this.nodes[this.nodes.length - 1] : null;\n if (last instanceof HeightMapText)\n return last;\n let line = new HeightMapText(0, -1, 0);\n this.nodes.push(line);\n return line;\n }\n addBlock(block) {\n this.enterLine();\n let deco = block.deco;\n if (deco && deco.startSide > 0 && !this.isCovered)\n this.ensureLine();\n this.nodes.push(block);\n this.writtenTo = this.pos = this.pos + block.length;\n if (deco && deco.endSide > 0)\n this.covering = block;\n }\n addLineDeco(height, breaks, length) {\n let line = this.ensureLine();\n line.length += length;\n line.collapsed += length;\n line.widgetHeight = Math.max(line.widgetHeight, height);\n line.breaks += breaks;\n this.writtenTo = this.pos = this.pos + length;\n }\n finish(from) {\n let last = this.nodes.length == 0 ? null : this.nodes[this.nodes.length - 1];\n if (this.lineStart > -1 && !(last instanceof HeightMapText) && !this.isCovered)\n this.nodes.push(new HeightMapText(0, -1, 0));\n else if (this.writtenTo < this.pos || last == null)\n this.nodes.push(this.blankContent(this.writtenTo, this.pos));\n let pos = from;\n for (let node of this.nodes) {\n if (node instanceof HeightMapText)\n node.updateHeight(this.oracle, pos);\n pos += node ? node.length : 1;\n }\n return this.nodes;\n }\n // Always called with a region that on both sides either stretches\n // to a line break or the end of the document.\n // The returned array uses null to indicate line breaks, but never\n // starts or ends in a line break, or has multiple line breaks next\n // to each other.\n static build(oracle, decorations, from, to) {\n let builder = new NodeBuilder(from, oracle);\n RangeSet.spans(decorations, from, to, builder, 0);\n return builder.finish(from);\n }\n}\nfunction heightRelevantDecoChanges(a, b, diff) {\n let comp = new DecorationComparator;\n RangeSet.compare(a, b, diff, comp, 0);\n return comp.changes;\n}\nclass DecorationComparator {\n constructor() {\n this.changes = [];\n }\n compareRange() { }\n comparePoint(from, to, a, b) {\n if (from < to || a && a.heightRelevant || b && b.heightRelevant)\n addRange(from, to, this.changes, 5);\n }\n}\n\nfunction visiblePixelRange(dom, paddingTop) {\n let rect = dom.getBoundingClientRect();\n let doc = dom.ownerDocument, win = doc.defaultView || window;\n let left = Math.max(0, rect.left), right = Math.min(win.innerWidth, rect.right);\n let top = Math.max(0, rect.top), bottom = Math.min(win.innerHeight, rect.bottom);\n for (let parent = dom.parentNode; parent && parent != doc.body;) {\n if (parent.nodeType == 1) {\n let elt = parent;\n let style = window.getComputedStyle(elt);\n if ((elt.scrollHeight > elt.clientHeight || elt.scrollWidth > elt.clientWidth) &&\n style.overflow != \"visible\") {\n let parentRect = elt.getBoundingClientRect();\n left = Math.max(left, parentRect.left);\n right = Math.min(right, parentRect.right);\n top = Math.max(top, parentRect.top);\n bottom = Math.min(parent == dom.parentNode ? win.innerHeight : bottom, parentRect.bottom);\n }\n parent = style.position == \"absolute\" || style.position == \"fixed\" ? elt.offsetParent : elt.parentNode;\n }\n else if (parent.nodeType == 11) { // Shadow root\n parent = parent.host;\n }\n else {\n break;\n }\n }\n return { left: left - rect.left, right: Math.max(left, right) - rect.left,\n top: top - (rect.top + paddingTop), bottom: Math.max(top, bottom) - (rect.top + paddingTop) };\n}\nfunction inWindow(elt) {\n let rect = elt.getBoundingClientRect(), win = elt.ownerDocument.defaultView || window;\n return rect.left < win.innerWidth && rect.right > 0 &&\n rect.top < win.innerHeight && rect.bottom > 0;\n}\nfunction fullPixelRange(dom, paddingTop) {\n let rect = dom.getBoundingClientRect();\n return { left: 0, right: rect.right - rect.left,\n top: paddingTop, bottom: rect.bottom - (rect.top + paddingTop) };\n}\n// Line gaps are placeholder widgets used to hide pieces of overlong\n// lines within the viewport, as a kludge to keep the editor\n// responsive when a ridiculously long line is loaded into it.\nclass LineGap {\n constructor(from, to, size, displaySize) {\n this.from = from;\n this.to = to;\n this.size = size;\n this.displaySize = displaySize;\n }\n static same(a, b) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++) {\n let gA = a[i], gB = b[i];\n if (gA.from != gB.from || gA.to != gB.to || gA.size != gB.size)\n return false;\n }\n return true;\n }\n draw(viewState, wrapping) {\n return Decoration.replace({\n widget: new LineGapWidget(this.displaySize * (wrapping ? viewState.scaleY : viewState.scaleX), wrapping)\n }).range(this.from, this.to);\n }\n}\nclass LineGapWidget extends WidgetType {\n constructor(size, vertical) {\n super();\n this.size = size;\n this.vertical = vertical;\n }\n eq(other) { return other.size == this.size && other.vertical == this.vertical; }\n toDOM() {\n let elt = document.createElement(\"div\");\n if (this.vertical) {\n elt.style.height = this.size + \"px\";\n }\n else {\n elt.style.width = this.size + \"px\";\n elt.style.height = \"2px\";\n elt.style.display = \"inline-block\";\n }\n return elt;\n }\n get estimatedHeight() { return this.vertical ? this.size : -1; }\n}\nclass ViewState {\n constructor(view, state) {\n this.view = view;\n this.state = state;\n // These are contentDOM-local coordinates\n this.pixelViewport = { left: 0, right: window.innerWidth, top: 0, bottom: 0 };\n this.inView = true;\n this.paddingTop = 0; // Padding above the document, scaled\n this.paddingBottom = 0; // Padding below the document, scaled\n this.contentDOMWidth = 0; // contentDOM.getBoundingClientRect().width\n this.contentDOMHeight = 0; // contentDOM.getBoundingClientRect().height\n this.editorHeight = 0; // scrollDOM.clientHeight, unscaled\n this.editorWidth = 0; // scrollDOM.clientWidth, unscaled\n // The CSS-transformation scale of the editor (transformed size /\n // concrete size)\n this.scaleX = 1;\n this.scaleY = 1;\n // Last seen vertical offset of the element at the top of the scroll\n // container, or top of the window if there's no wrapping scroller\n this.scrollOffset = 0;\n this.scrolledToBottom = false;\n // The vertical position (document-relative) to which to anchor the\n // scroll position. -1 means anchor to the end of the document.\n this.scrollAnchorPos = 0;\n // The height at the anchor position. Set by the DOM update phase.\n // -1 means no height available.\n this.scrollAnchorHeight = -1;\n // See VP.MaxDOMHeight\n this.scaler = IdScaler;\n this.scrollTarget = null;\n // Briefly set to true when printing, to disable viewport limiting\n this.printing = false;\n // Flag set when editor content was redrawn, so that the next\n // measure stage knows it must read DOM layout\n this.mustMeasureContent = true;\n this.defaultTextDirection = Direction.LTR;\n this.visibleRanges = [];\n // Cursor 'assoc' is only significant when the cursor is on a line\n // wrap point, where it must stick to the character that it is\n // associated with. Since browsers don't provide a reasonable\n // interface to set or query this, when a selection is set that\n // might cause this to be significant, this flag is set. The next\n // measure phase will check whether the cursor is on a line-wrapping\n // boundary and, if so, reset it to make sure it is positioned in\n // the right place.\n this.mustEnforceCursorAssoc = false;\n let guessWrapping = state.facet(contentAttributes).some(v => typeof v != \"function\" && v.class == \"cm-lineWrapping\");\n this.heightOracle = new HeightOracle(guessWrapping);\n this.stateDeco = staticDeco(state);\n this.heightMap = HeightMap.empty().applyChanges(this.stateDeco, Text.empty, this.heightOracle.setDoc(state.doc), [new ChangedRange(0, 0, 0, state.doc.length)]);\n for (let i = 0; i < 2; i++) {\n this.viewport = this.getViewport(0, null);\n if (!this.updateForViewport())\n break;\n }\n this.updateViewportLines();\n this.lineGaps = this.ensureLineGaps([]);\n this.lineGapDeco = Decoration.set(this.lineGaps.map(gap => gap.draw(this, false)));\n this.scrollParent = view.scrollDOM;\n this.computeVisibleRanges();\n }\n updateForViewport() {\n let viewports = [this.viewport], { main } = this.state.selection;\n for (let i = 0; i <= 1; i++) {\n let pos = i ? main.head : main.anchor;\n if (!viewports.some(({ from, to }) => pos >= from && pos <= to)) {\n let { from, to } = this.lineBlockAt(pos);\n viewports.push(new Viewport(from, to));\n }\n }\n this.viewports = viewports.sort((a, b) => a.from - b.from);\n return this.updateScaler();\n }\n updateScaler() {\n let scaler = this.scaler;\n this.scaler = this.heightMap.height <= 7000000 /* VP.MaxDOMHeight */ ? IdScaler :\n new BigScaler(this.heightOracle, this.heightMap, this.viewports);\n return scaler.eq(this.scaler) ? 0 : 2 /* UpdateFlag.Height */;\n }\n updateViewportLines() {\n this.viewportLines = [];\n this.heightMap.forEachLine(this.viewport.from, this.viewport.to, this.heightOracle.setDoc(this.state.doc), 0, 0, block => {\n this.viewportLines.push(scaleBlock(block, this.scaler));\n });\n }\n update(update, scrollTarget = null) {\n this.state = update.state;\n let prevDeco = this.stateDeco;\n this.stateDeco = staticDeco(this.state);\n let contentChanges = update.changedRanges;\n let heightChanges = ChangedRange.extendWithRanges(contentChanges, heightRelevantDecoChanges(prevDeco, this.stateDeco, update ? update.changes : ChangeSet.empty(this.state.doc.length)));\n let prevHeight = this.heightMap.height;\n let scrollAnchor = this.scrolledToBottom ? null : this.scrollAnchorAt(this.scrollOffset);\n clearHeightChangeFlag();\n this.heightMap = this.heightMap.applyChanges(this.stateDeco, update.startState.doc, this.heightOracle.setDoc(this.state.doc), heightChanges);\n if (this.heightMap.height != prevHeight || heightChangeFlag)\n update.flags |= 2 /* UpdateFlag.Height */;\n if (scrollAnchor) {\n this.scrollAnchorPos = update.changes.mapPos(scrollAnchor.from, -1);\n this.scrollAnchorHeight = scrollAnchor.top;\n }\n else {\n this.scrollAnchorPos = -1;\n this.scrollAnchorHeight = prevHeight;\n }\n let viewport = heightChanges.length ? this.mapViewport(this.viewport, update.changes) : this.viewport;\n if (scrollTarget && (scrollTarget.range.head < viewport.from || scrollTarget.range.head > viewport.to) ||\n !this.viewportIsAppropriate(viewport))\n viewport = this.getViewport(0, scrollTarget);\n let viewportChange = viewport.from != this.viewport.from || viewport.to != this.viewport.to;\n this.viewport = viewport;\n update.flags |= this.updateForViewport();\n if (viewportChange || !update.changes.empty || (update.flags & 2 /* UpdateFlag.Height */))\n this.updateViewportLines();\n if (this.lineGaps.length || this.viewport.to - this.viewport.from > (2000 /* LG.Margin */ << 1))\n this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps, update.changes)));\n update.flags |= this.computeVisibleRanges(update.changes);\n if (scrollTarget)\n this.scrollTarget = scrollTarget;\n if (!this.mustEnforceCursorAssoc && (update.selectionSet || update.focusChanged) && update.view.lineWrapping &&\n update.state.selection.main.empty && update.state.selection.main.assoc &&\n !update.state.facet(nativeSelectionHidden))\n this.mustEnforceCursorAssoc = true;\n }\n measure() {\n let { view } = this, dom = view.contentDOM, style = window.getComputedStyle(dom);\n let oracle = this.heightOracle;\n let whiteSpace = style.whiteSpace;\n this.defaultTextDirection = style.direction == \"rtl\" ? Direction.RTL : Direction.LTR;\n let refresh = this.heightOracle.mustRefreshForWrapping(whiteSpace) || this.mustMeasureContent === \"refresh\";\n let domRect = dom.getBoundingClientRect();\n let measureContent = refresh || this.mustMeasureContent || this.contentDOMHeight != domRect.height;\n this.contentDOMHeight = domRect.height;\n this.mustMeasureContent = false;\n let result = 0, bias = 0;\n if (domRect.width && domRect.height) {\n let { scaleX, scaleY } = getScale(dom, domRect);\n if (scaleX > .005 && Math.abs(this.scaleX - scaleX) > .005 ||\n scaleY > .005 && Math.abs(this.scaleY - scaleY) > .005) {\n this.scaleX = scaleX;\n this.scaleY = scaleY;\n result |= 16 /* UpdateFlag.Geometry */;\n refresh = measureContent = true;\n }\n }\n // Vertical padding\n let paddingTop = (parseInt(style.paddingTop) || 0) * this.scaleY;\n let paddingBottom = (parseInt(style.paddingBottom) || 0) * this.scaleY;\n if (this.paddingTop != paddingTop || this.paddingBottom != paddingBottom) {\n this.paddingTop = paddingTop;\n this.paddingBottom = paddingBottom;\n result |= 16 /* UpdateFlag.Geometry */ | 2 /* UpdateFlag.Height */;\n }\n if (this.editorWidth != view.scrollDOM.clientWidth) {\n if (oracle.lineWrapping)\n measureContent = true;\n this.editorWidth = view.scrollDOM.clientWidth;\n result |= 16 /* UpdateFlag.Geometry */;\n }\n let scrollParent = scrollableParents(this.view.contentDOM, false).y;\n if (scrollParent != this.scrollParent) {\n this.scrollParent = scrollParent;\n this.scrollAnchorHeight = -1;\n this.scrollOffset = 0;\n }\n let scrollOffset = this.getScrollOffset();\n if (this.scrollOffset != scrollOffset) {\n this.scrollAnchorHeight = -1;\n this.scrollOffset = scrollOffset;\n }\n this.scrolledToBottom = isScrolledToBottom(this.scrollParent || view.win);\n // Pixel viewport\n let pixelViewport = (this.printing ? fullPixelRange : visiblePixelRange)(dom, this.paddingTop);\n let dTop = pixelViewport.top - this.pixelViewport.top, dBottom = pixelViewport.bottom - this.pixelViewport.bottom;\n this.pixelViewport = pixelViewport;\n let inView = this.pixelViewport.bottom > this.pixelViewport.top && this.pixelViewport.right > this.pixelViewport.left;\n if (inView != this.inView) {\n this.inView = inView;\n if (inView)\n measureContent = true;\n }\n if (!this.inView && !this.scrollTarget && !inWindow(view.dom))\n return 0;\n let contentWidth = domRect.width;\n if (this.contentDOMWidth != contentWidth || this.editorHeight != view.scrollDOM.clientHeight) {\n this.contentDOMWidth = domRect.width;\n this.editorHeight = view.scrollDOM.clientHeight;\n result |= 16 /* UpdateFlag.Geometry */;\n }\n if (measureContent) {\n let lineHeights = view.docView.measureVisibleLineHeights(this.viewport);\n if (oracle.mustRefreshForHeights(lineHeights))\n refresh = true;\n if (refresh || oracle.lineWrapping && Math.abs(contentWidth - this.contentDOMWidth) > oracle.charWidth) {\n let { lineHeight, charWidth, textHeight } = view.docView.measureTextSize();\n refresh = lineHeight > 0 && oracle.refresh(whiteSpace, lineHeight, charWidth, textHeight, Math.max(5, contentWidth / charWidth), lineHeights);\n if (refresh) {\n view.docView.minWidth = 0;\n result |= 16 /* UpdateFlag.Geometry */;\n }\n }\n if (dTop > 0 && dBottom > 0)\n bias = Math.max(dTop, dBottom);\n else if (dTop < 0 && dBottom < 0)\n bias = Math.min(dTop, dBottom);\n clearHeightChangeFlag();\n for (let vp of this.viewports) {\n let heights = vp.from == this.viewport.from ? lineHeights : view.docView.measureVisibleLineHeights(vp);\n this.heightMap = (refresh ? HeightMap.empty().applyChanges(this.stateDeco, Text.empty, this.heightOracle, [new ChangedRange(0, 0, 0, view.state.doc.length)]) : this.heightMap).updateHeight(oracle, 0, refresh, new MeasuredHeights(vp.from, heights));\n }\n if (heightChangeFlag)\n result |= 2 /* UpdateFlag.Height */;\n }\n let viewportChange = !this.viewportIsAppropriate(this.viewport, bias) ||\n this.scrollTarget && (this.scrollTarget.range.head < this.viewport.from ||\n this.scrollTarget.range.head > this.viewport.to);\n if (viewportChange) {\n if (result & 2 /* UpdateFlag.Height */)\n result |= this.updateScaler();\n this.viewport = this.getViewport(bias, this.scrollTarget);\n result |= this.updateForViewport();\n }\n if ((result & 2 /* UpdateFlag.Height */) || viewportChange)\n this.updateViewportLines();\n if (this.lineGaps.length || this.viewport.to - this.viewport.from > (2000 /* LG.Margin */ << 1))\n this.updateLineGaps(this.ensureLineGaps(refresh ? [] : this.lineGaps, view));\n result |= this.computeVisibleRanges();\n if (this.mustEnforceCursorAssoc) {\n this.mustEnforceCursorAssoc = false;\n // This is done in the read stage, because moving the selection\n // to a line end is going to trigger a layout anyway, so it\n // can't be a pure write. It should be rare that it does any\n // writing.\n view.docView.enforceCursorAssoc();\n }\n return result;\n }\n get visibleTop() { return this.scaler.fromDOM(this.pixelViewport.top); }\n get visibleBottom() { return this.scaler.fromDOM(this.pixelViewport.bottom); }\n getViewport(bias, scrollTarget) {\n // This will divide VP.Margin between the top and the\n // bottom, depending on the bias (the change in viewport position\n // since the last update). It'll hold a number between 0 and 1\n let marginTop = 0.5 - Math.max(-0.5, Math.min(0.5, bias / 1000 /* VP.Margin */ / 2));\n let map = this.heightMap, oracle = this.heightOracle;\n let { visibleTop, visibleBottom } = this;\n let viewport = new Viewport(map.lineAt(visibleTop - marginTop * 1000 /* VP.Margin */, QueryType.ByHeight, oracle, 0, 0).from, map.lineAt(visibleBottom + (1 - marginTop) * 1000 /* VP.Margin */, QueryType.ByHeight, oracle, 0, 0).to);\n // If scrollTarget is given, make sure the viewport includes that position\n if (scrollTarget) {\n let { head } = scrollTarget.range;\n if (head < viewport.from || head > viewport.to) {\n let viewHeight = Math.min(this.editorHeight, this.pixelViewport.bottom - this.pixelViewport.top);\n let block = map.lineAt(head, QueryType.ByPos, oracle, 0, 0), topPos;\n if (scrollTarget.y == \"center\")\n topPos = (block.top + block.bottom) / 2 - viewHeight / 2;\n else if (scrollTarget.y == \"start\" || scrollTarget.y == \"nearest\" && head < viewport.from)\n topPos = block.top;\n else\n topPos = block.bottom - viewHeight;\n viewport = new Viewport(map.lineAt(topPos - 1000 /* VP.Margin */ / 2, QueryType.ByHeight, oracle, 0, 0).from, map.lineAt(topPos + viewHeight + 1000 /* VP.Margin */ / 2, QueryType.ByHeight, oracle, 0, 0).to);\n }\n }\n return viewport;\n }\n mapViewport(viewport, changes) {\n let from = changes.mapPos(viewport.from, -1), to = changes.mapPos(viewport.to, 1);\n return new Viewport(this.heightMap.lineAt(from, QueryType.ByPos, this.heightOracle, 0, 0).from, this.heightMap.lineAt(to, QueryType.ByPos, this.heightOracle, 0, 0).to);\n }\n // Checks if a given viewport covers the visible part of the\n // document and not too much beyond that.\n viewportIsAppropriate({ from, to }, bias = 0) {\n if (!this.inView)\n return true;\n let { top } = this.heightMap.lineAt(from, QueryType.ByPos, this.heightOracle, 0, 0);\n let { bottom } = this.heightMap.lineAt(to, QueryType.ByPos, this.heightOracle, 0, 0);\n let { visibleTop, visibleBottom } = this;\n return (from == 0 || top <= visibleTop - Math.max(10 /* VP.MinCoverMargin */, Math.min(-bias, 250 /* VP.MaxCoverMargin */))) &&\n (to == this.state.doc.length ||\n bottom >= visibleBottom + Math.max(10 /* VP.MinCoverMargin */, Math.min(bias, 250 /* VP.MaxCoverMargin */))) &&\n (top > visibleTop - 2 * 1000 /* VP.Margin */ && bottom < visibleBottom + 2 * 1000 /* VP.Margin */);\n }\n mapLineGaps(gaps, changes) {\n if (!gaps.length || changes.empty)\n return gaps;\n let mapped = [];\n for (let gap of gaps)\n if (!changes.touchesRange(gap.from, gap.to))\n mapped.push(new LineGap(changes.mapPos(gap.from), changes.mapPos(gap.to), gap.size, gap.displaySize));\n return mapped;\n }\n // Computes positions in the viewport where the start or end of a\n // line should be hidden, trying to reuse existing line gaps when\n // appropriate to avoid unneccesary redraws.\n // Uses crude character-counting for the positioning and sizing,\n // since actual DOM coordinates aren't always available and\n // predictable. Relies on generous margins (see LG.Margin) to hide\n // the artifacts this might produce from the user.\n ensureLineGaps(current, mayMeasure) {\n let wrapping = this.heightOracle.lineWrapping;\n let margin = wrapping ? 10000 /* LG.MarginWrap */ : 2000 /* LG.Margin */, halfMargin = margin >> 1, doubleMargin = margin << 1;\n // The non-wrapping logic won't work at all in predominantly right-to-left text.\n if (this.defaultTextDirection != Direction.LTR && !wrapping)\n return [];\n let gaps = [];\n let addGap = (from, to, line, structure) => {\n if (to - from < halfMargin)\n return;\n let sel = this.state.selection.main, avoid = [sel.from];\n if (!sel.empty)\n avoid.push(sel.to);\n for (let pos of avoid) {\n if (pos > from && pos < to) {\n addGap(from, pos - 10 /* LG.SelectionMargin */, line, structure);\n addGap(pos + 10 /* LG.SelectionMargin */, to, line, structure);\n return;\n }\n }\n let gap = find(current, gap => gap.from >= line.from && gap.to <= line.to &&\n Math.abs(gap.from - from) < halfMargin && Math.abs(gap.to - to) < halfMargin &&\n !avoid.some(pos => gap.from < pos && gap.to > pos));\n if (!gap) {\n // When scrolling down, snap gap ends to line starts to avoid shifts in wrapping\n if (to < line.to && mayMeasure && wrapping &&\n mayMeasure.visibleRanges.some(r => r.from <= to && r.to >= to)) {\n let lineStart = mayMeasure.moveToLineBoundary(EditorSelection.cursor(to), false, true).head;\n if (lineStart > from)\n to = lineStart;\n }\n let size = this.gapSize(line, from, to, structure);\n let displaySize = wrapping || size < 2000000 /* VP.MaxHorizGap */ ? size : 2000000 /* VP.MaxHorizGap */;\n gap = new LineGap(from, to, size, displaySize);\n }\n gaps.push(gap);\n };\n let checkLine = (line) => {\n if (line.length < doubleMargin || line.type != BlockType.Text)\n return;\n let structure = lineStructure(line.from, line.to, this.stateDeco);\n if (structure.total < doubleMargin)\n return;\n let target = this.scrollTarget ? this.scrollTarget.range.head : null;\n let viewFrom, viewTo;\n if (wrapping) {\n let marginHeight = (margin / this.heightOracle.lineLength) * this.heightOracle.lineHeight;\n let top, bot;\n if (target != null) {\n let targetFrac = findFraction(structure, target);\n let spaceFrac = ((this.visibleBottom - this.visibleTop) / 2 + marginHeight) / line.height;\n top = targetFrac - spaceFrac;\n bot = targetFrac + spaceFrac;\n }\n else {\n top = (this.visibleTop - line.top - marginHeight) / line.height;\n bot = (this.visibleBottom - line.top + marginHeight) / line.height;\n }\n viewFrom = findPosition(structure, top);\n viewTo = findPosition(structure, bot);\n }\n else {\n let totalWidth = structure.total * this.heightOracle.charWidth;\n let marginWidth = margin * this.heightOracle.charWidth;\n let horizOffset = 0;\n if (totalWidth > 2000000 /* VP.MaxHorizGap */)\n for (let old of current) {\n if (old.from >= line.from && old.from < line.to && old.size != old.displaySize &&\n old.from * this.heightOracle.charWidth + horizOffset < this.pixelViewport.left)\n horizOffset = old.size - old.displaySize;\n }\n let pxLeft = this.pixelViewport.left + horizOffset, pxRight = this.pixelViewport.right + horizOffset;\n let left, right;\n if (target != null) {\n let targetFrac = findFraction(structure, target);\n let spaceFrac = ((pxRight - pxLeft) / 2 + marginWidth) / totalWidth;\n left = targetFrac - spaceFrac;\n right = targetFrac + spaceFrac;\n }\n else {\n left = (pxLeft - marginWidth) / totalWidth;\n right = (pxRight + marginWidth) / totalWidth;\n }\n viewFrom = findPosition(structure, left);\n viewTo = findPosition(structure, right);\n }\n if (viewFrom > line.from)\n addGap(line.from, viewFrom, line, structure);\n if (viewTo < line.to)\n addGap(viewTo, line.to, line, structure);\n };\n for (let line of this.viewportLines) {\n if (Array.isArray(line.type))\n line.type.forEach(checkLine);\n else\n checkLine(line);\n }\n return gaps;\n }\n gapSize(line, from, to, structure) {\n let fraction = findFraction(structure, to) - findFraction(structure, from);\n if (this.heightOracle.lineWrapping) {\n return line.height * fraction;\n }\n else {\n return structure.total * this.heightOracle.charWidth * fraction;\n }\n }\n updateLineGaps(gaps) {\n if (!LineGap.same(gaps, this.lineGaps)) {\n this.lineGaps = gaps;\n this.lineGapDeco = Decoration.set(gaps.map(gap => gap.draw(this, this.heightOracle.lineWrapping)));\n }\n }\n computeVisibleRanges(changes) {\n let deco = this.stateDeco;\n if (this.lineGaps.length)\n deco = deco.concat(this.lineGapDeco);\n let ranges = [];\n RangeSet.spans(deco, this.viewport.from, this.viewport.to, {\n span(from, to) { ranges.push({ from, to }); },\n point() { }\n }, 20);\n let changed = 0;\n if (ranges.length != this.visibleRanges.length) {\n changed = 8 /* UpdateFlag.ViewportMoved */ | 4 /* UpdateFlag.Viewport */;\n }\n else {\n for (let i = 0; i < ranges.length && !(changed & 8 /* UpdateFlag.ViewportMoved */); i++) {\n let old = this.visibleRanges[i], nw = ranges[i];\n if (old.from != nw.from || old.to != nw.to) {\n changed |= 4 /* UpdateFlag.Viewport */;\n if (!(changes && changes.mapPos(old.from, -1) == nw.from && changes.mapPos(old.to, 1) == nw.to))\n changed |= 8 /* UpdateFlag.ViewportMoved */;\n }\n }\n }\n this.visibleRanges = ranges;\n return changed;\n }\n lineBlockAt(pos) {\n return (pos >= this.viewport.from && pos <= this.viewport.to &&\n this.viewportLines.find(b => b.from <= pos && b.to >= pos)) ||\n scaleBlock(this.heightMap.lineAt(pos, QueryType.ByPos, this.heightOracle, 0, 0), this.scaler);\n }\n lineBlockAtHeight(height) {\n return (height >= this.viewportLines[0].top && height <= this.viewportLines[this.viewportLines.length - 1].bottom &&\n this.viewportLines.find(l => l.top <= height && l.bottom >= height)) ||\n scaleBlock(this.heightMap.lineAt(this.scaler.fromDOM(height), QueryType.ByHeight, this.heightOracle, 0, 0), this.scaler);\n }\n getScrollOffset() {\n let base = this.scrollParent == this.view.scrollDOM ? this.scrollParent.scrollTop\n : (this.scrollParent ? this.scrollParent.getBoundingClientRect().top : 0) - this.view.contentDOM.getBoundingClientRect().top;\n return base * this.scaleY;\n }\n scrollAnchorAt(scrollOffset) {\n let block = this.lineBlockAtHeight(scrollOffset + 8);\n return block.from >= this.viewport.from || this.viewportLines[0].top - scrollOffset > 200 ? block : this.viewportLines[0];\n }\n elementAtHeight(height) {\n return scaleBlock(this.heightMap.blockAt(this.scaler.fromDOM(height), this.heightOracle, 0, 0), this.scaler);\n }\n get docHeight() {\n return this.scaler.toDOM(this.heightMap.height);\n }\n get contentHeight() {\n return this.docHeight + this.paddingTop + this.paddingBottom;\n }\n}\nclass Viewport {\n constructor(from, to) {\n this.from = from;\n this.to = to;\n }\n}\nfunction lineStructure(from, to, stateDeco) {\n let ranges = [], pos = from, total = 0;\n RangeSet.spans(stateDeco, from, to, {\n span() { },\n point(from, to) {\n if (from > pos) {\n ranges.push({ from: pos, to: from });\n total += from - pos;\n }\n pos = to;\n }\n }, 20); // We're only interested in collapsed ranges of a significant size\n if (pos < to) {\n ranges.push({ from: pos, to });\n total += to - pos;\n }\n return { total, ranges };\n}\nfunction findPosition({ total, ranges }, ratio) {\n if (ratio <= 0)\n return ranges[0].from;\n if (ratio >= 1)\n return ranges[ranges.length - 1].to;\n let dist = Math.floor(total * ratio);\n for (let i = 0;; i++) {\n let { from, to } = ranges[i], size = to - from;\n if (dist <= size)\n return from + dist;\n dist -= size;\n }\n}\nfunction findFraction(structure, pos) {\n let counted = 0;\n for (let { from, to } of structure.ranges) {\n if (pos <= to) {\n counted += pos - from;\n break;\n }\n counted += to - from;\n }\n return counted / structure.total;\n}\nfunction find(array, f) {\n for (let val of array)\n if (f(val))\n return val;\n return undefined;\n}\n// Don't scale when the document height is within the range of what\n// the DOM can handle.\nconst IdScaler = {\n toDOM(n) { return n; },\n fromDOM(n) { return n; },\n scale: 1,\n eq(other) { return other == this; }\n};\nfunction staticDeco(state) {\n let deco = state.facet(decorations).filter(d => typeof d != \"function\");\n let outer = state.facet(outerDecorations).filter(d => typeof d != \"function\");\n if (outer.length)\n deco.push(RangeSet.join(outer));\n return deco;\n}\n// When the height is too big (> VP.MaxDOMHeight), scale down the\n// regions outside the viewports so that the total height is\n// VP.MaxDOMHeight.\nclass BigScaler {\n constructor(oracle, heightMap, viewports) {\n let vpHeight = 0, base = 0, domBase = 0;\n this.viewports = viewports.map(({ from, to }) => {\n let top = heightMap.lineAt(from, QueryType.ByPos, oracle, 0, 0).top;\n let bottom = heightMap.lineAt(to, QueryType.ByPos, oracle, 0, 0).bottom;\n vpHeight += bottom - top;\n return { from, to, top, bottom, domTop: 0, domBottom: 0 };\n });\n this.scale = (7000000 /* VP.MaxDOMHeight */ - vpHeight) / (heightMap.height - vpHeight);\n for (let obj of this.viewports) {\n obj.domTop = domBase + (obj.top - base) * this.scale;\n domBase = obj.domBottom = obj.domTop + (obj.bottom - obj.top);\n base = obj.bottom;\n }\n }\n toDOM(n) {\n for (let i = 0, base = 0, domBase = 0;; i++) {\n let vp = i < this.viewports.length ? this.viewports[i] : null;\n if (!vp || n < vp.top)\n return domBase + (n - base) * this.scale;\n if (n <= vp.bottom)\n return vp.domTop + (n - vp.top);\n base = vp.bottom;\n domBase = vp.domBottom;\n }\n }\n fromDOM(n) {\n for (let i = 0, base = 0, domBase = 0;; i++) {\n let vp = i < this.viewports.length ? this.viewports[i] : null;\n if (!vp || n < vp.domTop)\n return base + (n - domBase) / this.scale;\n if (n <= vp.domBottom)\n return vp.top + (n - vp.domTop);\n base = vp.bottom;\n domBase = vp.domBottom;\n }\n }\n eq(other) {\n if (!(other instanceof BigScaler))\n return false;\n return this.scale == other.scale && this.viewports.length == other.viewports.length &&\n this.viewports.every((vp, i) => vp.from == other.viewports[i].from && vp.to == other.viewports[i].to);\n }\n}\nfunction scaleBlock(block, scaler) {\n if (scaler.scale == 1)\n return block;\n let bTop = scaler.toDOM(block.top), bBottom = scaler.toDOM(block.bottom);\n return new BlockInfo(block.from, block.length, bTop, bBottom - bTop, Array.isArray(block._content) ? block._content.map(b => scaleBlock(b, scaler)) : block._content);\n}\n\nconst theme = /*@__PURE__*/Facet.define({ combine: strs => strs.join(\" \") });\nconst darkTheme = /*@__PURE__*/Facet.define({ combine: values => values.indexOf(true) > -1 });\nconst baseThemeID = /*@__PURE__*/StyleModule.newName(), baseLightID = /*@__PURE__*/StyleModule.newName(), baseDarkID = /*@__PURE__*/StyleModule.newName();\nconst lightDarkIDs = { \"&light\": \".\" + baseLightID, \"&dark\": \".\" + baseDarkID };\nfunction buildTheme(main, spec, scopes) {\n return new StyleModule(spec, {\n finish(sel) {\n return /&/.test(sel) ? sel.replace(/&\\w*/, m => {\n if (m == \"&\")\n return main;\n if (!scopes || !scopes[m])\n throw new RangeError(`Unsupported selector: ${m}`);\n return scopes[m];\n }) : main + \" \" + sel;\n }\n });\n}\nconst baseTheme$1 = /*@__PURE__*/buildTheme(\".\" + baseThemeID, {\n \"&\": {\n position: \"relative !important\",\n boxSizing: \"border-box\",\n \"&.cm-focused\": {\n // Provide a simple default outline to make sure a focused\n // editor is visually distinct. Can't leave the default behavior\n // because that will apply to the content element, which is\n // inside the scrollable container and doesn't include the\n // gutters. We also can't use an 'auto' outline, since those\n // are, for some reason, drawn behind the element content, which\n // will cause things like the active line background to cover\n // the outline (#297).\n outline: \"1px dotted #212121\"\n },\n display: \"flex !important\",\n flexDirection: \"column\"\n },\n \".cm-scroller\": {\n display: \"flex !important\",\n alignItems: \"flex-start !important\",\n fontFamily: \"monospace\",\n lineHeight: 1.4,\n height: \"100%\",\n overflowX: \"auto\",\n position: \"relative\",\n zIndex: 0,\n overflowAnchor: \"none\",\n },\n \".cm-content\": {\n margin: 0,\n flexGrow: 2,\n flexShrink: 0,\n display: \"block\",\n whiteSpace: \"pre\",\n wordWrap: \"normal\", // https://github.com/codemirror/dev/issues/456\n boxSizing: \"border-box\",\n minHeight: \"100%\",\n padding: \"4px 0\",\n outline: \"none\",\n \"&[contenteditable=true]\": {\n WebkitUserModify: \"read-write-plaintext-only\",\n }\n },\n \".cm-lineWrapping\": {\n whiteSpace_fallback: \"pre-wrap\", // For IE\n whiteSpace: \"break-spaces\",\n wordBreak: \"break-word\", // For Safari, which doesn't support overflow-wrap: anywhere\n overflowWrap: \"anywhere\",\n flexShrink: 1\n },\n \"&light .cm-content\": { caretColor: \"black\" },\n \"&dark .cm-content\": { caretColor: \"white\" },\n \".cm-line\": {\n display: \"block\",\n padding: \"0 2px 0 6px\"\n },\n \".cm-layer\": {\n position: \"absolute\",\n left: 0,\n top: 0,\n contain: \"size style\",\n \"& > *\": {\n position: \"absolute\"\n }\n },\n \"&light .cm-selectionBackground\": {\n background: \"#d9d9d9\"\n },\n \"&dark .cm-selectionBackground\": {\n background: \"#222\"\n },\n \"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground\": {\n background: \"#d7d4f0\"\n },\n \"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground\": {\n background: \"#233\"\n },\n \".cm-cursorLayer\": {\n pointerEvents: \"none\"\n },\n \"&.cm-focused > .cm-scroller > .cm-cursorLayer\": {\n animation: \"steps(1) cm-blink 1.2s infinite\"\n },\n // Two animations defined so that we can switch between them to\n // restart the animation without forcing another style\n // recomputation.\n \"@keyframes cm-blink\": { \"0%\": {}, \"50%\": { opacity: 0 }, \"100%\": {} },\n \"@keyframes cm-blink2\": { \"0%\": {}, \"50%\": { opacity: 0 }, \"100%\": {} },\n \".cm-cursor, .cm-dropCursor\": {\n borderLeft: \"1.2px solid black\",\n marginLeft: \"-0.6px\",\n pointerEvents: \"none\",\n },\n \".cm-cursor\": {\n display: \"none\"\n },\n \"&dark .cm-cursor\": {\n borderLeftColor: \"#ddd\"\n },\n \".cm-selectionHandle\": {\n backgroundColor: \"currentColor\",\n width: \"1.5px\"\n },\n \".cm-selectionHandle-start::before, .cm-selectionHandle-end::before\": {\n content: '\"\"',\n backgroundColor: \"inherit\",\n borderRadius: \"50%\",\n width: \"8px\",\n height: \"8px\",\n position: \"absolute\",\n left: \"-3.25px\"\n },\n \".cm-selectionHandle-start::before\": { top: \"-8px\" },\n \".cm-selectionHandle-end::before\": { bottom: \"-8px\" },\n \".cm-dropCursor\": {\n position: \"absolute\"\n },\n \"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor\": {\n display: \"block\"\n },\n \".cm-iso\": {\n unicodeBidi: \"isolate\"\n },\n \".cm-announced\": {\n position: \"fixed\",\n top: \"-10000px\"\n },\n \"@media print\": {\n \".cm-announced\": { display: \"none\" }\n },\n \"&light .cm-activeLine\": { backgroundColor: \"#cceeff44\" },\n \"&dark .cm-activeLine\": { backgroundColor: \"#99eeff33\" },\n \"&light .cm-specialChar\": { color: \"red\" },\n \"&dark .cm-specialChar\": { color: \"#f78\" },\n \".cm-gutters\": {\n flexShrink: 0,\n display: \"flex\",\n height: \"100%\",\n boxSizing: \"border-box\",\n zIndex: 200,\n },\n \".cm-gutters-before\": { insetInlineStart: 0 },\n \".cm-gutters-after\": { insetInlineEnd: 0 },\n \"&light .cm-gutters\": {\n backgroundColor: \"#f5f5f5\",\n color: \"#6c6c6c\",\n border: \"0px solid #ddd\",\n \"&.cm-gutters-before\": { borderRightWidth: \"1px\" },\n \"&.cm-gutters-after\": { borderLeftWidth: \"1px\" },\n },\n \"&dark .cm-gutters\": {\n backgroundColor: \"#333338\",\n color: \"#ccc\"\n },\n \".cm-gutter\": {\n display: \"flex !important\", // Necessary -- prevents margin collapsing\n flexDirection: \"column\",\n flexShrink: 0,\n boxSizing: \"border-box\",\n minHeight: \"100%\",\n overflow: \"hidden\"\n },\n \".cm-gutterElement\": {\n boxSizing: \"border-box\"\n },\n \".cm-lineNumbers .cm-gutterElement\": {\n padding: \"0 3px 0 5px\",\n minWidth: \"20px\",\n textAlign: \"right\",\n whiteSpace: \"nowrap\"\n },\n \"&light .cm-activeLineGutter\": {\n backgroundColor: \"#e2f2ff\"\n },\n \"&dark .cm-activeLineGutter\": {\n backgroundColor: \"#222227\"\n },\n \".cm-panels\": {\n boxSizing: \"border-box\",\n position: \"sticky\",\n left: 0,\n right: 0,\n zIndex: 300\n },\n \"&light .cm-panels\": {\n backgroundColor: \"#f5f5f5\",\n color: \"black\"\n },\n \"&light .cm-panels-top\": {\n borderBottom: \"1px solid #ddd\"\n },\n \"&light .cm-panels-bottom\": {\n borderTop: \"1px solid #ddd\"\n },\n \"&dark .cm-panels\": {\n backgroundColor: \"#333338\",\n color: \"white\"\n },\n \".cm-dialog\": {\n padding: \"2px 19px 4px 6px\",\n position: \"relative\",\n \"& label\": { fontSize: \"80%\" },\n },\n \".cm-dialog-close\": {\n position: \"absolute\",\n top: \"3px\",\n right: \"4px\",\n backgroundColor: \"inherit\",\n border: \"none\",\n font: \"inherit\",\n fontSize: \"14px\",\n padding: \"0\"\n },\n \".cm-tab\": {\n display: \"inline-block\",\n overflow: \"hidden\",\n verticalAlign: \"bottom\"\n },\n \".cm-widgetBuffer\": {\n verticalAlign: \"text-top\",\n height: \"1em\",\n width: 0,\n display: \"inline\"\n },\n \".cm-placeholder\": {\n color: \"#888\",\n display: \"inline-block\",\n verticalAlign: \"top\",\n userSelect: \"none\"\n },\n \".cm-highlightSpace\": {\n backgroundImage: \"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)\",\n backgroundPosition: \"center\",\n },\n \".cm-highlightTab\": {\n backgroundImage: `url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"200\" height=\"20\"><path stroke=\"%23888\" stroke-width=\"1\" fill=\"none\" d=\"M1 10H196L190 5M190 15L196 10M197 4L197 16\"/></svg>')`,\n backgroundSize: \"auto 100%\",\n backgroundPosition: \"right 90%\",\n backgroundRepeat: \"no-repeat\"\n },\n \".cm-trailingSpace\": {\n backgroundColor: \"#ff332255\"\n },\n \".cm-button\": {\n verticalAlign: \"middle\",\n color: \"inherit\",\n fontSize: \"70%\",\n padding: \".2em 1em\",\n borderRadius: \"1px\"\n },\n \"&light .cm-button\": {\n backgroundImage: \"linear-gradient(#eff1f5, #d9d9df)\",\n border: \"1px solid #888\",\n \"&:active\": {\n backgroundImage: \"linear-gradient(#b4b4b4, #d0d3d6)\"\n }\n },\n \"&dark .cm-button\": {\n backgroundImage: \"linear-gradient(#393939, #111)\",\n border: \"1px solid #888\",\n \"&:active\": {\n backgroundImage: \"linear-gradient(#111, #333)\"\n }\n },\n \".cm-textfield\": {\n verticalAlign: \"middle\",\n color: \"inherit\",\n fontSize: \"70%\",\n border: \"1px solid silver\",\n padding: \".2em .5em\"\n },\n \"&light .cm-textfield\": {\n backgroundColor: \"white\"\n },\n \"&dark .cm-textfield\": {\n border: \"1px solid #555\",\n backgroundColor: \"inherit\"\n }\n}, lightDarkIDs);\n\nconst observeOptions = {\n childList: true,\n characterData: true,\n subtree: true,\n attributes: true,\n characterDataOldValue: true\n};\n// IE11 has very broken mutation observers, so we also listen to\n// DOMCharacterDataModified there\nconst useCharData = browser.ie && browser.ie_version <= 11;\nclass DOMObserver {\n constructor(view) {\n this.view = view;\n this.active = false;\n this.editContext = null;\n // The known selection. Kept in our own object, as opposed to just\n // directly accessing the selection because:\n // - Safari doesn't report the right selection in shadow DOM\n // - Reading from the selection forces a DOM layout\n // - This way, we can ignore selectionchange events if we have\n // already seen the 'new' selection\n this.selectionRange = new DOMSelectionState;\n // Set when a selection change is detected, cleared on flush\n this.selectionChanged = false;\n this.delayedFlush = -1;\n this.resizeTimeout = -1;\n this.queue = [];\n this.delayedAndroidKey = null;\n this.flushingAndroidKey = -1;\n this.lastChange = 0;\n this.scrollTargets = [];\n this.intersection = null;\n this.resizeScroll = null;\n this.intersecting = false;\n this.gapIntersection = null;\n this.gaps = [];\n this.printQuery = null;\n // Timeout for scheduling check of the parents that need scroll handlers\n this.parentCheck = -1;\n this.dom = view.contentDOM;\n this.observer = new MutationObserver(mutations => {\n for (let mut of mutations)\n this.queue.push(mut);\n // IE11 will sometimes (on typing over a selection or\n // backspacing out a single character text node) call the\n // observer callback before actually updating the DOM.\n //\n // Unrelatedly, iOS Safari will, when ending a composition,\n // sometimes first clear it, deliver the mutations, and then\n // reinsert the finished text. CodeMirror's handling of the\n // deletion will prevent the reinsertion from happening,\n // breaking composition.\n if ((browser.ie && browser.ie_version <= 11 || browser.ios && view.composing) &&\n mutations.some(m => m.type == \"childList\" && m.removedNodes.length ||\n m.type == \"characterData\" && m.oldValue.length > m.target.nodeValue.length))\n this.flushSoon();\n else\n this.flush();\n });\n if (window.EditContext && browser.android && view.constructor.EDIT_CONTEXT !== false &&\n // Chrome <126 doesn't support inverted selections in edit context (#1392)\n !(browser.chrome && browser.chrome_version < 126)) {\n this.editContext = new EditContextManager(view);\n if (view.state.facet(editable))\n view.contentDOM.editContext = this.editContext.editContext;\n }\n if (useCharData)\n this.onCharData = (event) => {\n this.queue.push({ target: event.target,\n type: \"characterData\",\n oldValue: event.prevValue });\n this.flushSoon();\n };\n this.onSelectionChange = this.onSelectionChange.bind(this);\n this.onResize = this.onResize.bind(this);\n this.onPrint = this.onPrint.bind(this);\n this.onScroll = this.onScroll.bind(this);\n if (window.matchMedia)\n this.printQuery = window.matchMedia(\"print\");\n if (typeof ResizeObserver == \"function\") {\n this.resizeScroll = new ResizeObserver(() => {\n var _a;\n if (((_a = this.view.docView) === null || _a === void 0 ? void 0 : _a.lastUpdate) < Date.now() - 75)\n this.onResize();\n });\n this.resizeScroll.observe(view.scrollDOM);\n }\n this.addWindowListeners(this.win = view.win);\n this.start();\n if (typeof IntersectionObserver == \"function\") {\n this.intersection = new IntersectionObserver(entries => {\n if (this.parentCheck < 0)\n this.parentCheck = setTimeout(this.listenForScroll.bind(this), 1000);\n if (entries.length > 0 && (entries[entries.length - 1].intersectionRatio > 0) != this.intersecting) {\n this.intersecting = !this.intersecting;\n if (this.intersecting != this.view.inView)\n this.onScrollChanged(document.createEvent(\"Event\"));\n }\n }, { threshold: [0, .001] });\n this.intersection.observe(this.dom);\n this.gapIntersection = new IntersectionObserver(entries => {\n if (entries.length > 0 && entries[entries.length - 1].intersectionRatio > 0)\n this.onScrollChanged(document.createEvent(\"Event\"));\n }, {});\n }\n this.listenForScroll();\n this.readSelectionRange();\n }\n onScrollChanged(e) {\n this.view.inputState.runHandlers(\"scroll\", e);\n if (this.intersecting)\n this.view.measure();\n }\n onScroll(e) {\n if (this.intersecting)\n this.flush(false);\n if (this.editContext)\n this.view.requestMeasure(this.editContext.measureReq);\n this.onScrollChanged(e);\n }\n onResize() {\n if (this.resizeTimeout < 0)\n this.resizeTimeout = setTimeout(() => {\n this.resizeTimeout = -1;\n this.view.requestMeasure();\n }, 50);\n }\n onPrint(event) {\n if ((event.type == \"change\" || !event.type) && !event.matches)\n return;\n this.view.viewState.printing = true;\n this.view.measure();\n setTimeout(() => {\n this.view.viewState.printing = false;\n this.view.requestMeasure();\n }, 500);\n }\n updateGaps(gaps) {\n if (this.gapIntersection && (gaps.length != this.gaps.length || this.gaps.some((g, i) => g != gaps[i]))) {\n this.gapIntersection.disconnect();\n for (let gap of gaps)\n this.gapIntersection.observe(gap);\n this.gaps = gaps;\n }\n }\n onSelectionChange(event) {\n let wasChanged = this.selectionChanged;\n if (!this.readSelectionRange() || this.delayedAndroidKey)\n return;\n let { view } = this, sel = this.selectionRange;\n if (view.state.facet(editable) ? view.root.activeElement != this.dom : !hasSelection(this.dom, sel))\n return;\n let context = sel.anchorNode && view.docView.tile.nearest(sel.anchorNode);\n if (context && context.isWidget() && context.widget.ignoreEvent(event)) {\n if (!wasChanged)\n this.selectionChanged = false;\n return;\n }\n // Deletions on IE11 fire their events in the wrong order, giving\n // us a selection change event before the DOM changes are\n // reported.\n // Chrome Android has a similar issue when backspacing out a\n // selection (#645).\n if ((browser.ie && browser.ie_version <= 11 || browser.android && browser.chrome) && !view.state.selection.main.empty &&\n // (Selection.isCollapsed isn't reliable on IE)\n sel.focusNode && isEquivalentPosition(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset))\n this.flushSoon();\n else\n this.flush(false);\n }\n readSelectionRange() {\n let { view } = this;\n // The Selection object is broken in shadow roots in Safari. See\n // https://github.com/codemirror/dev/issues/414\n let selection = getSelection(view.root);\n if (!selection)\n return false;\n let range = browser.safari && view.root.nodeType == 11 &&\n view.root.activeElement == this.dom &&\n safariSelectionRangeHack(this.view, selection) || selection;\n if (!range || this.selectionRange.eq(range))\n return false;\n let local = hasSelection(this.dom, range);\n // Detect the situation where the browser has, on focus, moved the\n // selection to the start of the content element. Reset it to the\n // position from the editor state.\n if (local && !this.selectionChanged &&\n view.inputState.lastFocusTime > Date.now() - 200 &&\n view.inputState.lastTouchTime < Date.now() - 300 &&\n atElementStart(this.dom, range)) {\n this.view.inputState.lastFocusTime = 0;\n view.docView.updateSelection();\n return false;\n }\n this.selectionRange.setRange(range);\n if (local)\n this.selectionChanged = true;\n return true;\n }\n setSelectionRange(anchor, head) {\n this.selectionRange.set(anchor.node, anchor.offset, head.node, head.offset);\n this.selectionChanged = false;\n }\n clearSelectionRange() {\n this.selectionRange.set(null, 0, null, 0);\n }\n listenForScroll() {\n this.parentCheck = -1;\n let i = 0, changed = null;\n for (let dom = this.dom; dom;) {\n if (dom.nodeType == 1) {\n if (!changed && i < this.scrollTargets.length && this.scrollTargets[i] == dom)\n i++;\n else if (!changed)\n changed = this.scrollTargets.slice(0, i);\n if (changed)\n changed.push(dom);\n dom = dom.assignedSlot || dom.parentNode;\n }\n else if (dom.nodeType == 11) { // Shadow root\n dom = dom.host;\n }\n else {\n break;\n }\n }\n if (i < this.scrollTargets.length && !changed)\n changed = this.scrollTargets.slice(0, i);\n if (changed) {\n for (let dom of this.scrollTargets)\n dom.removeEventListener(\"scroll\", this.onScroll);\n for (let dom of this.scrollTargets = changed)\n dom.addEventListener(\"scroll\", this.onScroll);\n }\n }\n ignore(f) {\n if (!this.active)\n return f();\n try {\n this.stop();\n return f();\n }\n finally {\n this.start();\n this.clear();\n }\n }\n start() {\n if (this.active)\n return;\n this.observer.observe(this.dom, observeOptions);\n if (useCharData)\n this.dom.addEventListener(\"DOMCharacterDataModified\", this.onCharData);\n this.active = true;\n }\n stop() {\n if (!this.active)\n return;\n this.active = false;\n this.observer.disconnect();\n if (useCharData)\n this.dom.removeEventListener(\"DOMCharacterDataModified\", this.onCharData);\n }\n // Throw away any pending changes\n clear() {\n this.processRecords();\n this.queue.length = 0;\n this.selectionChanged = false;\n }\n // Chrome Android, especially in combination with GBoard, not only\n // doesn't reliably fire regular key events, but also often\n // surrounds the effect of enter or backspace with a bunch of\n // composition events that, when interrupted, cause text duplication\n // or other kinds of corruption. This hack makes the editor back off\n // from handling DOM changes for a moment when such a key is\n // detected (via beforeinput or keydown), and then tries to flush\n // them or, if that has no effect, dispatches the given key.\n delayAndroidKey(key, keyCode) {\n var _a;\n if (!this.delayedAndroidKey) {\n let flush = () => {\n let key = this.delayedAndroidKey;\n if (key) {\n this.clearDelayedAndroidKey();\n this.view.inputState.lastKeyCode = key.keyCode;\n this.view.inputState.lastKeyTime = Date.now();\n let flushed = this.flush();\n if (!flushed && key.force)\n dispatchKey(this.dom, key.key, key.keyCode);\n }\n };\n this.flushingAndroidKey = this.view.win.requestAnimationFrame(flush);\n }\n // Since backspace beforeinput is sometimes signalled spuriously,\n // Enter always takes precedence.\n if (!this.delayedAndroidKey || key == \"Enter\")\n this.delayedAndroidKey = {\n key, keyCode,\n // Only run the key handler when no changes are detected if\n // this isn't coming right after another change, in which case\n // it is probably part of a weird chain of updates, and should\n // be ignored if it returns the DOM to its previous state.\n force: this.lastChange < Date.now() - 50 || !!((_a = this.delayedAndroidKey) === null || _a === void 0 ? void 0 : _a.force)\n };\n }\n clearDelayedAndroidKey() {\n this.win.cancelAnimationFrame(this.flushingAndroidKey);\n this.delayedAndroidKey = null;\n this.flushingAndroidKey = -1;\n }\n flushSoon() {\n if (this.delayedFlush < 0)\n this.delayedFlush = this.view.win.requestAnimationFrame(() => { this.delayedFlush = -1; this.flush(); });\n }\n forceFlush() {\n if (this.delayedFlush >= 0) {\n this.view.win.cancelAnimationFrame(this.delayedFlush);\n this.delayedFlush = -1;\n }\n this.flush();\n }\n pendingRecords() {\n for (let mut of this.observer.takeRecords())\n this.queue.push(mut);\n return this.queue;\n }\n processRecords() {\n let records = this.pendingRecords();\n if (records.length)\n this.queue = [];\n let from = -1, to = -1, typeOver = false;\n for (let record of records) {\n let range = this.readMutation(record);\n if (!range)\n continue;\n if (range.typeOver)\n typeOver = true;\n if (from == -1) {\n ({ from, to } = range);\n }\n else {\n from = Math.min(range.from, from);\n to = Math.max(range.to, to);\n }\n }\n return { from, to, typeOver };\n }\n readChange() {\n let { from, to, typeOver } = this.processRecords();\n let newSel = this.selectionChanged && hasSelection(this.dom, this.selectionRange);\n if (from < 0 && !newSel)\n return null;\n if (from > -1)\n this.lastChange = Date.now();\n this.view.inputState.lastFocusTime = 0;\n this.selectionChanged = false;\n let change = new DOMChange(this.view, from, to, typeOver);\n this.view.docView.domChanged = { newSel: change.newSel ? change.newSel.main : null };\n return change;\n }\n // Apply pending changes, if any\n flush(readSelection = true) {\n // Completely hold off flushing when pending keys are set—the code\n // managing those will make sure processRecords is called and the\n // view is resynchronized after\n if (this.delayedFlush >= 0 || this.delayedAndroidKey)\n return false;\n if (readSelection)\n this.readSelectionRange();\n let domChange = this.readChange();\n if (!domChange) {\n this.view.requestMeasure();\n return false;\n }\n let startState = this.view.state;\n let handled = applyDOMChange(this.view, domChange);\n // The view wasn't updated but DOM/selection changes were seen. Reset the view.\n if (this.view.state == startState &&\n (domChange.domChanged || domChange.newSel && !sameSelPos(this.view.state.selection, domChange.newSel.main)))\n this.view.update([]);\n return handled;\n }\n readMutation(rec) {\n let tile = this.view.docView.tile.nearest(rec.target);\n if (!tile || tile.isWidget())\n return null;\n tile.markDirty(rec.type == \"attributes\");\n if (rec.type == \"childList\") {\n let childBefore = findChild(tile, rec.previousSibling || rec.target.previousSibling, -1);\n let childAfter = findChild(tile, rec.nextSibling || rec.target.nextSibling, 1);\n return { from: childBefore ? tile.posAfter(childBefore) : tile.posAtStart,\n to: childAfter ? tile.posBefore(childAfter) : tile.posAtEnd, typeOver: false };\n }\n else if (rec.type == \"characterData\") {\n return { from: tile.posAtStart, to: tile.posAtEnd, typeOver: rec.target.nodeValue == rec.oldValue };\n }\n else {\n return null;\n }\n }\n setWindow(win) {\n if (win != this.win) {\n this.removeWindowListeners(this.win);\n this.win = win;\n this.addWindowListeners(this.win);\n }\n }\n addWindowListeners(win) {\n win.addEventListener(\"resize\", this.onResize);\n if (this.printQuery) {\n if (this.printQuery.addEventListener)\n this.printQuery.addEventListener(\"change\", this.onPrint);\n else\n this.printQuery.addListener(this.onPrint);\n }\n else\n win.addEventListener(\"beforeprint\", this.onPrint);\n win.addEventListener(\"scroll\", this.onScroll);\n win.document.addEventListener(\"selectionchange\", this.onSelectionChange);\n }\n removeWindowListeners(win) {\n win.removeEventListener(\"scroll\", this.onScroll);\n win.removeEventListener(\"resize\", this.onResize);\n if (this.printQuery) {\n if (this.printQuery.removeEventListener)\n this.printQuery.removeEventListener(\"change\", this.onPrint);\n else\n this.printQuery.removeListener(this.onPrint);\n }\n else\n win.removeEventListener(\"beforeprint\", this.onPrint);\n win.document.removeEventListener(\"selectionchange\", this.onSelectionChange);\n }\n update(update) {\n if (this.editContext) {\n this.editContext.update(update);\n if (update.startState.facet(editable) != update.state.facet(editable))\n update.view.contentDOM.editContext = update.state.facet(editable) ? this.editContext.editContext : null;\n }\n }\n destroy() {\n var _a, _b, _c;\n this.stop();\n (_a = this.intersection) === null || _a === void 0 ? void 0 : _a.disconnect();\n (_b = this.gapIntersection) === null || _b === void 0 ? void 0 : _b.disconnect();\n (_c = this.resizeScroll) === null || _c === void 0 ? void 0 : _c.disconnect();\n for (let dom of this.scrollTargets)\n dom.removeEventListener(\"scroll\", this.onScroll);\n this.removeWindowListeners(this.win);\n clearTimeout(this.parentCheck);\n clearTimeout(this.resizeTimeout);\n this.win.cancelAnimationFrame(this.delayedFlush);\n this.win.cancelAnimationFrame(this.flushingAndroidKey);\n if (this.editContext) {\n this.view.contentDOM.editContext = null;\n this.editContext.destroy();\n }\n }\n}\nfunction findChild(tile, dom, dir) {\n while (dom) {\n let curTile = Tile.get(dom);\n if (curTile && curTile.parent == tile)\n return curTile;\n let parent = dom.parentNode;\n dom = parent != tile.dom ? parent : dir > 0 ? dom.nextSibling : dom.previousSibling;\n }\n return null;\n}\nfunction buildSelectionRangeFromRange(view, range) {\n let anchorNode = range.startContainer, anchorOffset = range.startOffset;\n let focusNode = range.endContainer, focusOffset = range.endOffset;\n let curAnchor = view.docView.domAtPos(view.state.selection.main.anchor, 1);\n // Since such a range doesn't distinguish between anchor and head,\n // use a heuristic that flips it around if its end matches the\n // current anchor.\n if (isEquivalentPosition(curAnchor.node, curAnchor.offset, focusNode, focusOffset))\n [anchorNode, anchorOffset, focusNode, focusOffset] = [focusNode, focusOffset, anchorNode, anchorOffset];\n return { anchorNode, anchorOffset, focusNode, focusOffset };\n}\n// Used to work around a Safari Selection/shadow DOM bug (#414)\nfunction safariSelectionRangeHack(view, selection) {\n if (selection.getComposedRanges) {\n let range = selection.getComposedRanges(view.root)[0];\n if (range)\n return buildSelectionRangeFromRange(view, range);\n }\n let found = null;\n // Because Safari (at least in 2018-2021) doesn't provide regular\n // access to the selection inside a shadowroot, we have to perform a\n // ridiculous hack to get at it—using `execCommand` to trigger a\n // `beforeInput` event so that we can read the target range from the\n // event.\n function read(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n found = event.getTargetRanges()[0];\n }\n view.contentDOM.addEventListener(\"beforeinput\", read, true);\n view.dom.ownerDocument.execCommand(\"indent\");\n view.contentDOM.removeEventListener(\"beforeinput\", read, true);\n return found ? buildSelectionRangeFromRange(view, found) : null;\n}\nclass EditContextManager {\n constructor(view) {\n // The document window for which the text in the context is\n // maintained. For large documents, this may be smaller than the\n // editor document. This window always includes the selection head.\n this.from = 0;\n this.to = 0;\n // When applying a transaction, this is used to compare the change\n // made to the context content to the change in the transaction in\n // order to make the minimal changes to the context (since touching\n // that sometimes breaks series of multiple edits made for a single\n // user action on some Android keyboards)\n this.pendingContextChange = null;\n this.handlers = Object.create(null);\n // Kludge to work around the fact that EditContext does not respond\n // well to having its content updated during a composition (see #1472)\n this.composing = null;\n this.resetRange(view.state);\n let context = this.editContext = new window.EditContext({\n text: view.state.doc.sliceString(this.from, this.to),\n selectionStart: this.toContextPos(Math.max(this.from, Math.min(this.to, view.state.selection.main.anchor))),\n selectionEnd: this.toContextPos(view.state.selection.main.head)\n });\n this.handlers.textupdate = e => {\n let main = view.state.selection.main, { anchor, head } = main;\n let from = this.toEditorPos(e.updateRangeStart), to = this.toEditorPos(e.updateRangeEnd);\n if (view.inputState.composing >= 0 && !this.composing)\n this.composing = { contextBase: e.updateRangeStart, editorBase: from, drifted: false };\n let deletes = to - from > e.text.length;\n // If the window doesn't include the anchor, assume changes\n // adjacent to a side go up to the anchor.\n if (from == this.from && anchor < this.from)\n from = anchor;\n else if (to == this.to && anchor > this.to)\n to = anchor;\n let diff = findDiff(view.state.sliceDoc(from, to), e.text, (deletes ? main.from : main.to) - from, deletes ? \"end\" : null);\n // Edit contexts sometimes fire empty changes\n if (!diff) {\n let newSel = EditorSelection.single(this.toEditorPos(e.selectionStart), this.toEditorPos(e.selectionEnd));\n if (!sameSelPos(newSel, main))\n view.dispatch({ selection: newSel, userEvent: \"select\" });\n return;\n }\n let change = { from: diff.from + from, to: diff.toA + from,\n insert: Text.of(e.text.slice(diff.from, diff.toB).split(\"\\n\")) };\n if ((browser.mac || browser.android) && change.from == head - 1 &&\n /^\\. ?$/.test(e.text) && view.contentDOM.getAttribute(\"autocorrect\") == \"off\")\n change = { from, to, insert: Text.of([e.text.replace(\".\", \" \")]) };\n this.pendingContextChange = change;\n if (!view.state.readOnly) {\n let newLen = this.to - this.from + (change.to - change.from + change.insert.length);\n applyDOMChangeInner(view, change, EditorSelection.single(this.toEditorPos(e.selectionStart, newLen), this.toEditorPos(e.selectionEnd, newLen)));\n }\n // If the transaction didn't flush our change, revert it so\n // that the context is in sync with the editor state again.\n if (this.pendingContextChange) {\n this.revertPending(view.state);\n this.setSelection(view.state);\n }\n // Work around missed compositionend events. See https://discuss.codemirror.net/t/a/9514\n if (change.from < change.to && !change.insert.length && view.inputState.composing >= 0 &&\n !/[\\\\p{Alphabetic}\\\\p{Number}_]/.test(context.text.slice(Math.max(0, e.updateRangeStart - 1), Math.min(context.text.length, e.updateRangeStart + 1))))\n this.handlers.compositionend(e);\n };\n this.handlers.characterboundsupdate = e => {\n let rects = [], prev = null;\n for (let i = this.toEditorPos(e.rangeStart), end = this.toEditorPos(e.rangeEnd); i < end; i++) {\n let rect = view.coordsForChar(i);\n prev = (rect && new DOMRect(rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top))\n || prev || new DOMRect;\n rects.push(prev);\n }\n context.updateCharacterBounds(e.rangeStart, rects);\n };\n this.handlers.textformatupdate = e => {\n let deco = [];\n for (let format of e.getTextFormats()) {\n let lineStyle = format.underlineStyle, thickness = format.underlineThickness;\n if (!/none/i.test(lineStyle) && !/none/i.test(thickness)) {\n let from = this.toEditorPos(format.rangeStart), to = this.toEditorPos(format.rangeEnd);\n if (from < to) {\n // These values changed from capitalized custom strings to lower-case CSS keywords in 2025\n let style = `text-decoration: underline ${/^[a-z]/.test(lineStyle) ? lineStyle + \" \" : lineStyle == \"Dashed\" ? \"dashed \" : lineStyle == \"Squiggle\" ? \"wavy \" : \"\"}${/thin/i.test(thickness) ? 1 : 2}px`;\n deco.push(Decoration.mark({ attributes: { style } }).range(from, to));\n }\n }\n }\n view.dispatch({ effects: setEditContextFormatting.of(Decoration.set(deco)) });\n };\n this.handlers.compositionstart = () => {\n if (view.inputState.composing < 0) {\n view.inputState.composing = 0;\n view.inputState.compositionFirstChange = true;\n }\n };\n this.handlers.compositionend = () => {\n view.inputState.composing = -1;\n view.inputState.compositionFirstChange = null;\n if (this.composing) {\n let { drifted } = this.composing;\n this.composing = null;\n if (drifted)\n this.reset(view.state);\n }\n };\n for (let event in this.handlers)\n context.addEventListener(event, this.handlers[event]);\n this.measureReq = { read: view => {\n this.editContext.updateControlBounds(view.contentDOM.getBoundingClientRect());\n let sel = getSelection(view.root);\n if (sel && sel.rangeCount)\n this.editContext.updateSelectionBounds(sel.getRangeAt(0).getBoundingClientRect());\n } };\n }\n applyEdits(update) {\n let off = 0, abort = false, pending = this.pendingContextChange;\n update.changes.iterChanges((fromA, toA, _fromB, _toB, insert) => {\n if (abort)\n return;\n let dLen = insert.length - (toA - fromA);\n if (pending && toA >= pending.to) {\n if (pending.from == fromA && pending.to == toA && pending.insert.eq(insert)) {\n pending = this.pendingContextChange = null; // Match\n off += dLen;\n this.to += dLen;\n return;\n }\n else { // Mismatch, revert\n pending = null;\n this.revertPending(update.state);\n }\n }\n fromA += off;\n toA += off;\n if (toA <= this.from) { // Before the window\n this.from += dLen;\n this.to += dLen;\n }\n else if (fromA < this.to) { // Overlaps with window\n if (fromA < this.from || toA > this.to || (this.to - this.from) + insert.length > 30000 /* CxVp.MaxSize */) {\n abort = true;\n return;\n }\n this.editContext.updateText(this.toContextPos(fromA), this.toContextPos(toA), insert.toString());\n this.to += dLen;\n }\n off += dLen;\n });\n if (pending && !abort)\n this.revertPending(update.state);\n return !abort;\n }\n update(update) {\n let reverted = this.pendingContextChange, startSel = update.startState.selection.main;\n if (this.composing &&\n (this.composing.drifted ||\n (!update.changes.touchesRange(startSel.from, startSel.to) &&\n update.transactions.some(tr => !tr.isUserEvent(\"input.type\") && tr.changes.touchesRange(this.from, this.to))))) {\n this.composing.drifted = true;\n this.composing.editorBase = update.changes.mapPos(this.composing.editorBase);\n }\n else if (!this.applyEdits(update) || !this.rangeIsValid(update.state)) {\n this.pendingContextChange = null;\n this.reset(update.state);\n }\n else if (update.docChanged || update.selectionSet || reverted) {\n this.setSelection(update.state);\n }\n if (update.geometryChanged || update.docChanged || update.selectionSet)\n update.view.requestMeasure(this.measureReq);\n }\n resetRange(state) {\n let { head } = state.selection.main;\n this.from = Math.max(0, head - 10000 /* CxVp.Margin */);\n this.to = Math.min(state.doc.length, head + 10000 /* CxVp.Margin */);\n }\n reset(state) {\n this.resetRange(state);\n this.editContext.updateText(0, this.editContext.text.length, state.doc.sliceString(this.from, this.to));\n this.setSelection(state);\n }\n revertPending(state) {\n let pending = this.pendingContextChange;\n this.pendingContextChange = null;\n this.editContext.updateText(this.toContextPos(pending.from), this.toContextPos(pending.from + pending.insert.length), state.doc.sliceString(pending.from, pending.to));\n }\n setSelection(state) {\n let { main } = state.selection;\n let start = this.toContextPos(Math.max(this.from, Math.min(this.to, main.anchor)));\n let end = this.toContextPos(main.head);\n if (this.editContext.selectionStart != start || this.editContext.selectionEnd != end)\n this.editContext.updateSelection(start, end);\n }\n rangeIsValid(state) {\n let { head } = state.selection.main;\n return !(this.from > 0 && head - this.from < 500 /* CxVp.MinMargin */ ||\n this.to < state.doc.length && this.to - head < 500 /* CxVp.MinMargin */ ||\n this.to - this.from > 10000 /* CxVp.Margin */ * 3);\n }\n toEditorPos(contextPos, clipLen = this.to - this.from) {\n contextPos = Math.min(contextPos, clipLen);\n let c = this.composing;\n return c && c.drifted ? c.editorBase + (contextPos - c.contextBase) : contextPos + this.from;\n }\n toContextPos(editorPos) {\n let c = this.composing;\n return c && c.drifted ? c.contextBase + (editorPos - c.editorBase) : editorPos - this.from;\n }\n destroy() {\n for (let event in this.handlers)\n this.editContext.removeEventListener(event, this.handlers[event]);\n }\n}\n\n// The editor's update state machine looks something like this:\n//\n// Idle → Updating ⇆ Idle (unchecked) → Measuring → Idle\n// ↑ ↓\n// Updating (measure)\n//\n// The difference between 'Idle' and 'Idle (unchecked)' lies in\n// whether a layout check has been scheduled. A regular update through\n// the `update` method updates the DOM in a write-only fashion, and\n// relies on a check (scheduled with `requestAnimationFrame`) to make\n// sure everything is where it should be and the viewport covers the\n// visible code. That check continues to measure and then optionally\n// update until it reaches a coherent state.\n/**\nAn editor view represents the editor's user interface. It holds\nthe editable DOM surface, and possibly other elements such as the\nline number gutter. It handles events and dispatches state\ntransactions for editing actions.\n*/\nclass EditorView {\n /**\n The current editor state.\n */\n get state() { return this.viewState.state; }\n /**\n To be able to display large documents without consuming too much\n memory or overloading the browser, CodeMirror only draws the\n code that is visible (plus a margin around it) to the DOM. This\n property tells you the extent of the current drawn viewport, in\n document positions.\n */\n get viewport() { return this.viewState.viewport; }\n /**\n When there are, for example, large collapsed ranges in the\n viewport, its size can be a lot bigger than the actual visible\n content. Thus, if you are doing something like styling the\n content in the viewport, it is preferable to only do so for\n these ranges, which are the subset of the viewport that is\n actually drawn.\n */\n get visibleRanges() { return this.viewState.visibleRanges; }\n /**\n Returns false when the editor is entirely scrolled out of view\n or otherwise hidden.\n */\n get inView() { return this.viewState.inView; }\n /**\n Indicates whether the user is currently composing text via\n [IME](https://en.wikipedia.org/wiki/Input_method), and at least\n one change has been made in the current composition.\n */\n get composing() { return !!this.inputState && this.inputState.composing > 0; }\n /**\n Indicates whether the user is currently in composing state. Note\n that on some platforms, like Android, this will be the case a\n lot, since just putting the cursor on a word starts a\n composition there.\n */\n get compositionStarted() { return !!this.inputState && this.inputState.composing >= 0; }\n /**\n The document or shadow root that the view lives in.\n */\n get root() { return this._root; }\n /**\n @internal\n */\n get win() { return this.dom.ownerDocument.defaultView || window; }\n /**\n Construct a new view. You'll want to either provide a `parent`\n option, or put `view.dom` into your document after creating a\n view, so that the user can see the editor.\n */\n constructor(config = {}) {\n var _a;\n this.plugins = [];\n this.pluginMap = new Map;\n this.editorAttrs = {};\n this.contentAttrs = {};\n this.bidiCache = [];\n this.destroyed = false;\n /**\n @internal\n */\n this.updateState = 2 /* UpdateState.Updating */;\n /**\n @internal\n */\n this.measureScheduled = -1;\n /**\n @internal\n */\n this.measureRequests = [];\n this.contentDOM = document.createElement(\"div\");\n this.scrollDOM = document.createElement(\"div\");\n this.scrollDOM.tabIndex = -1;\n this.scrollDOM.className = \"cm-scroller\";\n this.scrollDOM.appendChild(this.contentDOM);\n this.announceDOM = document.createElement(\"div\");\n this.announceDOM.className = \"cm-announced\";\n this.announceDOM.setAttribute(\"aria-live\", \"polite\");\n this.dom = document.createElement(\"div\");\n this.dom.appendChild(this.announceDOM);\n this.dom.appendChild(this.scrollDOM);\n if (config.parent)\n config.parent.appendChild(this.dom);\n let { dispatch } = config;\n this.dispatchTransactions = config.dispatchTransactions ||\n (dispatch && ((trs) => trs.forEach(tr => dispatch(tr, this)))) ||\n ((trs) => this.update(trs));\n this.dispatch = this.dispatch.bind(this);\n this._root = (config.root || getRoot(config.parent) || document);\n this.viewState = new ViewState(this, config.state || EditorState.create(config));\n if (config.scrollTo && config.scrollTo.is(scrollIntoView))\n this.viewState.scrollTarget = config.scrollTo.value.clip(this.viewState.state);\n this.plugins = this.state.facet(viewPlugin).map(spec => new PluginInstance(spec));\n for (let plugin of this.plugins)\n plugin.update(this);\n this.observer = new DOMObserver(this);\n this.inputState = new InputState(this);\n this.inputState.ensureHandlers(this.plugins);\n this.docView = new DocView(this);\n this.mountStyles();\n this.updateAttrs();\n this.updateState = 0 /* UpdateState.Idle */;\n this.requestMeasure();\n if ((_a = document.fonts) === null || _a === void 0 ? void 0 : _a.ready)\n document.fonts.ready.then(() => {\n this.viewState.mustMeasureContent = \"refresh\";\n this.requestMeasure();\n });\n }\n dispatch(...input) {\n let trs = input.length == 1 && input[0] instanceof Transaction ? input\n : input.length == 1 && Array.isArray(input[0]) ? input[0]\n : [this.state.update(...input)];\n this.dispatchTransactions(trs, this);\n }\n /**\n Update the view for the given array of transactions. This will\n update the visible document and selection to match the state\n produced by the transactions, and notify view plugins of the\n change. You should usually call\n [`dispatch`](https://codemirror.net/6/docs/ref/#view.EditorView.dispatch) instead, which uses this\n as a primitive.\n */\n update(transactions) {\n if (this.updateState != 0 /* UpdateState.Idle */)\n throw new Error(\"Calls to EditorView.update are not allowed while an update is in progress\");\n let redrawn = false, attrsChanged = false, update;\n let state = this.state;\n for (let tr of transactions) {\n if (tr.startState != state)\n throw new RangeError(\"Trying to update state with a transaction that doesn't start from the previous state.\");\n state = tr.state;\n }\n if (this.destroyed) {\n this.viewState.state = state;\n return;\n }\n let focus = this.hasFocus, focusFlag = 0, dispatchFocus = null;\n if (transactions.some(tr => tr.annotation(isFocusChange))) {\n this.inputState.notifiedFocused = focus;\n // If a focus-change transaction is being dispatched, set this update flag.\n focusFlag = 1 /* UpdateFlag.Focus */;\n }\n else if (focus != this.inputState.notifiedFocused) {\n this.inputState.notifiedFocused = focus;\n // Schedule a separate focus transaction if necessary, otherwise\n // add a flag to this update\n dispatchFocus = focusChangeTransaction(state, focus);\n if (!dispatchFocus)\n focusFlag = 1 /* UpdateFlag.Focus */;\n }\n // If there was a pending DOM change, eagerly read it and try to\n // apply it after the given transactions.\n let pendingKey = this.observer.delayedAndroidKey, domChange = null;\n if (pendingKey) {\n this.observer.clearDelayedAndroidKey();\n domChange = this.observer.readChange();\n // Only try to apply DOM changes if the transactions didn't\n // change the doc or selection.\n if (domChange && !this.state.doc.eq(state.doc) || !this.state.selection.eq(state.selection))\n domChange = null;\n }\n else {\n this.observer.clear();\n }\n // When the phrases change, redraw the editor\n if (state.facet(EditorState.phrases) != this.state.facet(EditorState.phrases))\n return this.setState(state);\n update = ViewUpdate.create(this, state, transactions);\n update.flags |= focusFlag;\n let scrollTarget = this.viewState.scrollTarget;\n try {\n this.updateState = 2 /* UpdateState.Updating */;\n for (let tr of transactions) {\n if (scrollTarget)\n scrollTarget = scrollTarget.map(tr.changes);\n if (tr.scrollIntoView) {\n let { main } = tr.state.selection;\n scrollTarget = new ScrollTarget(main.empty ? main : EditorSelection.cursor(main.head, main.head > main.anchor ? -1 : 1));\n }\n for (let e of tr.effects)\n if (e.is(scrollIntoView))\n scrollTarget = e.value.clip(this.state);\n }\n this.viewState.update(update, scrollTarget);\n this.bidiCache = CachedOrder.update(this.bidiCache, update.changes);\n if (!update.empty) {\n this.updatePlugins(update);\n this.inputState.update(update);\n }\n redrawn = this.docView.update(update);\n if (this.state.facet(styleModule) != this.styleModules)\n this.mountStyles();\n attrsChanged = this.updateAttrs();\n this.showAnnouncements(transactions);\n this.docView.updateSelection(redrawn, transactions.some(tr => tr.isUserEvent(\"select.pointer\")));\n }\n finally {\n this.updateState = 0 /* UpdateState.Idle */;\n }\n if (update.startState.facet(theme) != update.state.facet(theme))\n this.viewState.mustMeasureContent = true;\n if (redrawn || attrsChanged || scrollTarget || this.viewState.mustEnforceCursorAssoc || this.viewState.mustMeasureContent)\n this.requestMeasure();\n if (redrawn)\n this.docViewUpdate();\n if (!update.empty)\n for (let listener of this.state.facet(updateListener)) {\n try {\n listener(update);\n }\n catch (e) {\n logException(this.state, e, \"update listener\");\n }\n }\n if (dispatchFocus || domChange)\n Promise.resolve().then(() => {\n if (dispatchFocus && this.state == dispatchFocus.startState)\n this.dispatch(dispatchFocus);\n if (domChange) {\n if (!applyDOMChange(this, domChange) && pendingKey.force)\n dispatchKey(this.contentDOM, pendingKey.key, pendingKey.keyCode);\n }\n });\n }\n /**\n Reset the view to the given state. (This will cause the entire\n document to be redrawn and all view plugins to be reinitialized,\n so you should probably only use it when the new state isn't\n derived from the old state. Otherwise, use\n [`dispatch`](https://codemirror.net/6/docs/ref/#view.EditorView.dispatch) instead.)\n */\n setState(newState) {\n if (this.updateState != 0 /* UpdateState.Idle */)\n throw new Error(\"Calls to EditorView.setState are not allowed while an update is in progress\");\n if (this.destroyed) {\n this.viewState.state = newState;\n return;\n }\n this.updateState = 2 /* UpdateState.Updating */;\n let hadFocus = this.hasFocus;\n try {\n for (let plugin of this.plugins)\n plugin.destroy(this);\n this.viewState = new ViewState(this, newState);\n this.plugins = newState.facet(viewPlugin).map(spec => new PluginInstance(spec));\n this.pluginMap.clear();\n for (let plugin of this.plugins)\n plugin.update(this);\n this.docView.destroy();\n this.docView = new DocView(this);\n this.inputState.ensureHandlers(this.plugins);\n this.mountStyles();\n this.updateAttrs();\n this.bidiCache = [];\n }\n finally {\n this.updateState = 0 /* UpdateState.Idle */;\n }\n if (hadFocus)\n this.focus();\n this.requestMeasure();\n }\n updatePlugins(update) {\n let prevSpecs = update.startState.facet(viewPlugin), specs = update.state.facet(viewPlugin);\n if (prevSpecs != specs) {\n let newPlugins = [];\n for (let spec of specs) {\n let found = prevSpecs.indexOf(spec);\n if (found < 0) {\n newPlugins.push(new PluginInstance(spec));\n }\n else {\n let plugin = this.plugins[found];\n plugin.mustUpdate = update;\n newPlugins.push(plugin);\n }\n }\n for (let plugin of this.plugins)\n if (plugin.mustUpdate != update)\n plugin.destroy(this);\n this.plugins = newPlugins;\n this.pluginMap.clear();\n }\n else {\n for (let p of this.plugins)\n p.mustUpdate = update;\n }\n for (let i = 0; i < this.plugins.length; i++)\n this.plugins[i].update(this);\n if (prevSpecs != specs)\n this.inputState.ensureHandlers(this.plugins);\n }\n docViewUpdate() {\n for (let plugin of this.plugins) {\n let val = plugin.value;\n if (val && val.docViewUpdate) {\n try {\n val.docViewUpdate(this);\n }\n catch (e) {\n logException(this.state, e, \"doc view update listener\");\n }\n }\n }\n }\n /**\n @internal\n */\n measure(flush = true) {\n if (this.destroyed)\n return;\n if (this.measureScheduled > -1)\n this.win.cancelAnimationFrame(this.measureScheduled);\n if (this.observer.delayedAndroidKey) {\n this.measureScheduled = -1;\n this.requestMeasure();\n return;\n }\n this.measureScheduled = 0; // Prevent requestMeasure calls from scheduling another animation frame\n if (flush)\n this.observer.forceFlush();\n let updated = null;\n let scroll = this.viewState.scrollParent, scrollOffset = this.viewState.getScrollOffset();\n let { scrollAnchorPos, scrollAnchorHeight } = this.viewState;\n if (Math.abs(scrollOffset - this.viewState.scrollOffset) > 1)\n scrollAnchorHeight = -1;\n this.viewState.scrollAnchorHeight = -1;\n try {\n for (let i = 0;; i++) {\n if (scrollAnchorHeight < 0) {\n if (isScrolledToBottom(scroll || this.win)) {\n scrollAnchorPos = -1;\n scrollAnchorHeight = this.viewState.heightMap.height;\n }\n else {\n let block = this.viewState.scrollAnchorAt(scrollOffset);\n scrollAnchorPos = block.from;\n scrollAnchorHeight = block.top;\n }\n }\n this.updateState = 1 /* UpdateState.Measuring */;\n let changed = this.viewState.measure();\n if (!changed && !this.measureRequests.length && this.viewState.scrollTarget == null)\n break;\n if (i > 5) {\n console.warn(this.measureRequests.length\n ? \"Measure loop restarted more than 5 times\"\n : \"Viewport failed to stabilize\");\n break;\n }\n let measuring = [];\n // Only run measure requests in this cycle when the viewport didn't change\n if (!(changed & 4 /* UpdateFlag.Viewport */))\n [this.measureRequests, measuring] = [measuring, this.measureRequests];\n let measured = measuring.map(m => {\n try {\n return m.read(this);\n }\n catch (e) {\n logException(this.state, e);\n return BadMeasure;\n }\n });\n let update = ViewUpdate.create(this, this.state, []), redrawn = false;\n update.flags |= changed;\n if (!updated)\n updated = update;\n else\n updated.flags |= changed;\n this.updateState = 2 /* UpdateState.Updating */;\n if (!update.empty) {\n this.updatePlugins(update);\n this.inputState.update(update);\n this.updateAttrs();\n redrawn = this.docView.update(update);\n if (redrawn)\n this.docViewUpdate();\n }\n for (let i = 0; i < measuring.length; i++)\n if (measured[i] != BadMeasure) {\n try {\n let m = measuring[i];\n if (m.write)\n m.write(measured[i], this);\n }\n catch (e) {\n logException(this.state, e);\n }\n }\n if (redrawn)\n this.docView.updateSelection(true);\n if (!update.viewportChanged && this.measureRequests.length == 0) {\n if (this.viewState.editorHeight) {\n if (this.viewState.scrollTarget) {\n this.docView.scrollIntoView(this.viewState.scrollTarget);\n this.viewState.scrollTarget = null;\n scrollAnchorHeight = -1;\n continue;\n }\n else {\n let newAnchorHeight = scrollAnchorPos < 0 ? this.viewState.heightMap.height :\n this.viewState.lineBlockAt(scrollAnchorPos).top;\n let diff = (newAnchorHeight - scrollAnchorHeight) / this.scaleY;\n if ((diff > 1 || diff < -1) &&\n (scroll == this.scrollDOM || this.hasFocus ||\n Math.max(this.inputState.lastWheelEvent, this.inputState.lastTouchTime) > Date.now() - 100)) {\n scrollOffset = scrollOffset + diff;\n if (scroll)\n scroll.scrollTop += diff;\n else\n this.win.scrollBy(0, diff);\n scrollAnchorHeight = -1;\n continue;\n }\n }\n }\n break;\n }\n }\n }\n finally {\n this.updateState = 0 /* UpdateState.Idle */;\n this.measureScheduled = -1;\n }\n if (updated && !updated.empty)\n for (let listener of this.state.facet(updateListener))\n listener(updated);\n }\n /**\n Get the CSS classes for the currently active editor themes.\n */\n get themeClasses() {\n return baseThemeID + \" \" +\n (this.state.facet(darkTheme) ? baseDarkID : baseLightID) + \" \" +\n this.state.facet(theme);\n }\n updateAttrs() {\n let editorAttrs = attrsFromFacet(this, editorAttributes, {\n class: \"cm-editor\" + (this.hasFocus ? \" cm-focused \" : \" \") + this.themeClasses\n });\n let contentAttrs = {\n spellcheck: \"false\",\n autocorrect: \"off\",\n autocapitalize: \"off\",\n writingsuggestions: \"false\",\n translate: \"no\",\n contenteditable: !this.state.facet(editable) ? \"false\" : \"true\",\n class: \"cm-content\",\n style: `${browser.tabSize}: ${this.state.tabSize}`,\n role: \"textbox\",\n \"aria-multiline\": \"true\"\n };\n if (this.state.readOnly)\n contentAttrs[\"aria-readonly\"] = \"true\";\n attrsFromFacet(this, contentAttributes, contentAttrs);\n let changed = this.observer.ignore(() => {\n let changedContent = updateAttrs(this.contentDOM, this.contentAttrs, contentAttrs);\n let changedEditor = updateAttrs(this.dom, this.editorAttrs, editorAttrs);\n return changedContent || changedEditor;\n });\n this.editorAttrs = editorAttrs;\n this.contentAttrs = contentAttrs;\n return changed;\n }\n showAnnouncements(trs) {\n let first = true;\n for (let tr of trs)\n for (let effect of tr.effects)\n if (effect.is(EditorView.announce)) {\n if (first)\n this.announceDOM.textContent = \"\";\n first = false;\n let div = this.announceDOM.appendChild(document.createElement(\"div\"));\n div.textContent = effect.value;\n }\n }\n mountStyles() {\n this.styleModules = this.state.facet(styleModule);\n let nonce = this.state.facet(EditorView.cspNonce);\n StyleModule.mount(this.root, this.styleModules.concat(baseTheme$1).reverse(), nonce ? { nonce } : undefined);\n }\n readMeasured() {\n if (this.updateState == 2 /* UpdateState.Updating */)\n throw new Error(\"Reading the editor layout isn't allowed during an update\");\n if (this.updateState == 0 /* UpdateState.Idle */ && this.measureScheduled > -1)\n this.measure(false);\n }\n /**\n Schedule a layout measurement, optionally providing callbacks to\n do custom DOM measuring followed by a DOM write phase. Using\n this is preferable reading DOM layout directly from, for\n example, an event handler, because it'll make sure measuring and\n drawing done by other components is synchronized, avoiding\n unnecessary DOM layout computations.\n */\n requestMeasure(request) {\n if (this.measureScheduled < 0)\n this.measureScheduled = this.win.requestAnimationFrame(() => this.measure());\n if (request) {\n if (this.measureRequests.indexOf(request) > -1)\n return;\n if (request.key != null)\n for (let i = 0; i < this.measureRequests.length; i++) {\n if (this.measureRequests[i].key === request.key) {\n this.measureRequests[i] = request;\n return;\n }\n }\n this.measureRequests.push(request);\n }\n }\n /**\n Get the value of a specific plugin, if present. Note that\n plugins that crash can be dropped from a view, so even when you\n know you registered a given plugin, it is recommended to check\n the return value of this method.\n */\n plugin(plugin) {\n let known = this.pluginMap.get(plugin);\n if (known === undefined || known && known.plugin != plugin)\n this.pluginMap.set(plugin, known = this.plugins.find(p => p.plugin == plugin) || null);\n return known && known.update(this).value;\n }\n /**\n The top position of the document, in screen coordinates. This\n may be negative when the editor is scrolled down. Points\n directly to the top of the first line, not above the padding.\n */\n get documentTop() {\n return this.contentDOM.getBoundingClientRect().top + this.viewState.paddingTop;\n }\n /**\n Reports the padding above and below the document.\n */\n get documentPadding() {\n return { top: this.viewState.paddingTop, bottom: this.viewState.paddingBottom };\n }\n /**\n If the editor is transformed with CSS, this provides the scale\n along the X axis. Otherwise, it will just be 1. Note that\n transforms other than translation and scaling are not supported.\n */\n get scaleX() { return this.viewState.scaleX; }\n /**\n Provide the CSS transformed scale along the Y axis.\n */\n get scaleY() { return this.viewState.scaleY; }\n /**\n Find the text line or block widget at the given vertical\n position (which is interpreted as relative to the [top of the\n document](https://codemirror.net/6/docs/ref/#view.EditorView.documentTop)).\n */\n elementAtHeight(height) {\n this.readMeasured();\n return this.viewState.elementAtHeight(height);\n }\n /**\n Find the line block (see\n [`lineBlockAt`](https://codemirror.net/6/docs/ref/#view.EditorView.lineBlockAt)) at the given\n height, again interpreted relative to the [top of the\n document](https://codemirror.net/6/docs/ref/#view.EditorView.documentTop).\n */\n lineBlockAtHeight(height) {\n this.readMeasured();\n return this.viewState.lineBlockAtHeight(height);\n }\n /**\n Get the extent and vertical position of all [line\n blocks](https://codemirror.net/6/docs/ref/#view.EditorView.lineBlockAt) in the viewport. Positions\n are relative to the [top of the\n document](https://codemirror.net/6/docs/ref/#view.EditorView.documentTop);\n */\n get viewportLineBlocks() {\n return this.viewState.viewportLines;\n }\n /**\n Find the line block around the given document position. A line\n block is a range delimited on both sides by either a\n non-[hidden](https://codemirror.net/6/docs/ref/#view.Decoration^replace) line break, or the\n start/end of the document. It will usually just hold a line of\n text, but may be broken into multiple textblocks by block\n widgets.\n */\n lineBlockAt(pos) {\n return this.viewState.lineBlockAt(pos);\n }\n /**\n The editor's total content height.\n */\n get contentHeight() {\n return this.viewState.contentHeight;\n }\n /**\n Move a cursor position by [grapheme\n cluster](https://codemirror.net/6/docs/ref/#state.findClusterBreak). `forward` determines whether\n the motion is away from the line start, or towards it. In\n bidirectional text, the line is traversed in visual order, using\n the editor's [text direction](https://codemirror.net/6/docs/ref/#view.EditorView.textDirection).\n When the start position was the last one on the line, the\n returned position will be across the line break. If there is no\n further line, the original position is returned.\n \n By default, this method moves over a single cluster. The\n optional `by` argument can be used to move across more. It will\n be called with the first cluster as argument, and should return\n a predicate that determines, for each subsequent cluster,\n whether it should also be moved over.\n */\n moveByChar(start, forward, by) {\n return skipAtoms(this, start, moveByChar(this, start, forward, by));\n }\n /**\n Move a cursor position across the next group of either\n [letters](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer) or non-letter\n non-whitespace characters.\n */\n moveByGroup(start, forward) {\n return skipAtoms(this, start, moveByChar(this, start, forward, initial => byGroup(this, start.head, initial)));\n }\n /**\n Get the cursor position visually at the start or end of a line.\n Note that this may differ from the _logical_ position at its\n start or end (which is simply at `line.from`/`line.to`) if text\n at the start or end goes against the line's base text direction.\n */\n visualLineSide(line, end) {\n let order = this.bidiSpans(line), dir = this.textDirectionAt(line.from);\n let span = order[end ? order.length - 1 : 0];\n return EditorSelection.cursor(span.side(end, dir) + line.from, span.forward(!end, dir) ? 1 : -1);\n }\n /**\n Move to the next line boundary in the given direction. If\n `includeWrap` is true, line wrapping is on, and there is a\n further wrap point on the current line, the wrap point will be\n returned. Otherwise this function will return the start or end\n of the line.\n */\n moveToLineBoundary(start, forward, includeWrap = true) {\n return moveToLineBoundary(this, start, forward, includeWrap);\n }\n /**\n Move a cursor position vertically. When `distance` isn't given,\n it defaults to moving to the next line (including wrapped\n lines). Otherwise, `distance` should provide a positive distance\n in pixels.\n \n When `start` has a\n [`goalColumn`](https://codemirror.net/6/docs/ref/#state.SelectionRange.goalColumn), the vertical\n motion will use that as a target horizontal position. Otherwise,\n the cursor's own horizontal position is used. The returned\n cursor will have its goal column set to whichever column was\n used.\n */\n moveVertically(start, forward, distance) {\n return skipAtoms(this, start, moveVertically(this, start, forward, distance));\n }\n /**\n Find the DOM parent node and offset (child offset if `node` is\n an element, character offset when it is a text node) at the\n given document position.\n \n Note that for positions that aren't currently in\n `visibleRanges`, the resulting DOM position isn't necessarily\n meaningful (it may just point before or after a placeholder\n element).\n */\n domAtPos(pos, side = 1) {\n return this.docView.domAtPos(pos, side);\n }\n /**\n Find the document position at the given DOM node. Can be useful\n for associating positions with DOM events. Will raise an error\n when `node` isn't part of the editor content.\n */\n posAtDOM(node, offset = 0) {\n return this.docView.posFromDOM(node, offset);\n }\n posAtCoords(coords, precise = true) {\n this.readMeasured();\n let found = posAtCoords(this, coords, precise);\n return found && found.pos;\n }\n posAndSideAtCoords(coords, precise = true) {\n this.readMeasured();\n return posAtCoords(this, coords, precise);\n }\n /**\n Get the screen coordinates at the given document position.\n `side` determines whether the coordinates are based on the\n element before (-1) or after (1) the position (if no element is\n available on the given side, the method will transparently use\n another strategy to get reasonable coordinates).\n */\n coordsAtPos(pos, side = 1) {\n this.readMeasured();\n let rect = this.docView.coordsAt(pos, side);\n if (!rect || rect.left == rect.right)\n return rect;\n let line = this.state.doc.lineAt(pos), order = this.bidiSpans(line);\n let span = order[BidiSpan.find(order, pos - line.from, -1, side)];\n return flattenRect(rect, (span.dir == Direction.LTR) == (side > 0));\n }\n /**\n Return the rectangle around a given character. If `pos` does not\n point in front of a character that is in the viewport and\n rendered (i.e. not replaced, not a line break), this will return\n null. For space characters that are a line wrap point, this will\n return the position before the line break.\n */\n coordsForChar(pos) {\n this.readMeasured();\n return this.docView.coordsForChar(pos);\n }\n /**\n The default width of a character in the editor. May not\n accurately reflect the width of all characters (given variable\n width fonts or styling of invididual ranges).\n */\n get defaultCharacterWidth() { return this.viewState.heightOracle.charWidth; }\n /**\n The default height of a line in the editor. May not be accurate\n for all lines.\n */\n get defaultLineHeight() { return this.viewState.heightOracle.lineHeight; }\n /**\n The text direction\n ([`direction`](https://developer.mozilla.org/en-US/docs/Web/CSS/direction)\n CSS property) of the editor's content element.\n */\n get textDirection() { return this.viewState.defaultTextDirection; }\n /**\n Find the text direction of the block at the given position, as\n assigned by CSS. If\n [`perLineTextDirection`](https://codemirror.net/6/docs/ref/#view.EditorView^perLineTextDirection)\n isn't enabled, or the given position is outside of the viewport,\n this will always return the same as\n [`textDirection`](https://codemirror.net/6/docs/ref/#view.EditorView.textDirection). Note that\n this may trigger a DOM layout.\n */\n textDirectionAt(pos) {\n let perLine = this.state.facet(perLineTextDirection);\n if (!perLine || pos < this.viewport.from || pos > this.viewport.to)\n return this.textDirection;\n this.readMeasured();\n return this.docView.textDirectionAt(pos);\n }\n /**\n Whether this editor [wraps lines](https://codemirror.net/6/docs/ref/#view.EditorView.lineWrapping)\n (as determined by the\n [`white-space`](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space)\n CSS property of its content element).\n */\n get lineWrapping() { return this.viewState.heightOracle.lineWrapping; }\n /**\n Returns the bidirectional text structure of the given line\n (which should be in the current document) as an array of span\n objects. The order of these spans matches the [text\n direction](https://codemirror.net/6/docs/ref/#view.EditorView.textDirection)—if that is\n left-to-right, the leftmost spans come first, otherwise the\n rightmost spans come first.\n */\n bidiSpans(line) {\n if (line.length > MaxBidiLine)\n return trivialOrder(line.length);\n let dir = this.textDirectionAt(line.from), isolates;\n for (let entry of this.bidiCache) {\n if (entry.from == line.from && entry.dir == dir &&\n (entry.fresh || isolatesEq(entry.isolates, isolates = getIsolatedRanges(this, line))))\n return entry.order;\n }\n if (!isolates)\n isolates = getIsolatedRanges(this, line);\n let order = computeOrder(line.text, dir, isolates);\n this.bidiCache.push(new CachedOrder(line.from, line.to, dir, isolates, true, order));\n return order;\n }\n /**\n Check whether the editor has focus.\n */\n get hasFocus() {\n var _a;\n // Safari return false for hasFocus when the context menu is open\n // or closing, which leads us to ignore selection changes from the\n // context menu because it looks like the editor isn't focused.\n // This kludges around that.\n return (this.dom.ownerDocument.hasFocus() || browser.safari && ((_a = this.inputState) === null || _a === void 0 ? void 0 : _a.lastContextMenu) > Date.now() - 3e4) &&\n this.root.activeElement == this.contentDOM;\n }\n /**\n Put focus on the editor.\n */\n focus() {\n this.observer.ignore(() => {\n focusPreventScroll(this.contentDOM);\n this.docView.updateSelection();\n });\n }\n /**\n Update the [root](https://codemirror.net/6/docs/ref/##view.EditorViewConfig.root) in which the editor lives. This is only\n necessary when moving the editor's existing DOM to a new window or shadow root.\n */\n setRoot(root) {\n if (this._root != root) {\n this._root = root;\n this.observer.setWindow((root.nodeType == 9 ? root : root.ownerDocument).defaultView || window);\n this.mountStyles();\n }\n }\n /**\n Clean up this editor view, removing its element from the\n document, unregistering event handlers, and notifying\n plugins. The view instance can no longer be used after\n calling this.\n */\n destroy() {\n if (this.root.activeElement == this.contentDOM)\n this.contentDOM.blur();\n for (let plugin of this.plugins)\n plugin.destroy(this);\n this.plugins = [];\n this.inputState.destroy();\n this.docView.destroy();\n this.dom.remove();\n this.observer.destroy();\n if (this.measureScheduled > -1)\n this.win.cancelAnimationFrame(this.measureScheduled);\n this.destroyed = true;\n }\n /**\n Returns an effect that can be\n [added](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects) to a transaction to\n cause it to scroll the given position or range into view.\n */\n static scrollIntoView(pos, options = {}) {\n return scrollIntoView.of(new ScrollTarget(typeof pos == \"number\" ? EditorSelection.cursor(pos) : pos, options.y, options.x, options.yMargin, options.xMargin));\n }\n /**\n Return an effect that resets the editor to its current (at the\n time this method was called) scroll position. Note that this\n only affects the editor's own scrollable element, not parents.\n See also\n [`EditorViewConfig.scrollTo`](https://codemirror.net/6/docs/ref/#view.EditorViewConfig.scrollTo).\n \n The effect should be used with a document identical to the one\n it was created for. Failing to do so is not an error, but may\n not scroll to the expected position. You can\n [map](https://codemirror.net/6/docs/ref/#state.StateEffect.map) the effect to account for changes.\n */\n scrollSnapshot() {\n let { scrollTop, scrollLeft } = this.scrollDOM;\n let ref = this.viewState.scrollAnchorAt(scrollTop);\n return scrollIntoView.of(new ScrollTarget(EditorSelection.cursor(ref.from), \"start\", \"start\", ref.top - scrollTop, scrollLeft, true));\n }\n /**\n Enable or disable tab-focus mode, which disables key bindings\n for Tab and Shift-Tab, letting the browser's default\n focus-changing behavior go through instead. This is useful to\n prevent trapping keyboard users in your editor.\n \n Without argument, this toggles the mode. With a boolean, it\n enables (true) or disables it (false). Given a number, it\n temporarily enables the mode until that number of milliseconds\n have passed or another non-Tab key is pressed.\n */\n setTabFocusMode(to) {\n if (to == null)\n this.inputState.tabFocusMode = this.inputState.tabFocusMode < 0 ? 0 : -1;\n else if (typeof to == \"boolean\")\n this.inputState.tabFocusMode = to ? 0 : -1;\n else if (this.inputState.tabFocusMode != 0)\n this.inputState.tabFocusMode = Date.now() + to;\n }\n /**\n Returns an extension that can be used to add DOM event handlers.\n The value should be an object mapping event names to handler\n functions. For any given event, such functions are ordered by\n extension precedence, and the first handler to return true will\n be assumed to have handled that event, and no other handlers or\n built-in behavior will be activated for it. These are registered\n on the [content element](https://codemirror.net/6/docs/ref/#view.EditorView.contentDOM), except\n for `scroll` handlers, which will be called any time the\n editor's [scroll element](https://codemirror.net/6/docs/ref/#view.EditorView.scrollDOM) or one of\n its parent nodes is scrolled.\n */\n static domEventHandlers(handlers) {\n return ViewPlugin.define(() => ({}), { eventHandlers: handlers });\n }\n /**\n Create an extension that registers DOM event observers. Contrary\n to event [handlers](https://codemirror.net/6/docs/ref/#view.EditorView^domEventHandlers),\n observers can't be prevented from running by a higher-precedence\n handler returning true. They also don't prevent other handlers\n and observers from running when they return true, and should not\n call `preventDefault`.\n */\n static domEventObservers(observers) {\n return ViewPlugin.define(() => ({}), { eventObservers: observers });\n }\n /**\n Create a theme extension. The first argument can be a\n [`style-mod`](https://github.com/marijnh/style-mod#documentation)\n style spec providing the styles for the theme. These will be\n prefixed with a generated class for the style.\n \n Because the selectors will be prefixed with a scope class, rule\n that directly match the editor's [wrapper\n element](https://codemirror.net/6/docs/ref/#view.EditorView.dom)—to which the scope class will be\n added—need to be explicitly differentiated by adding an `&` to\n the selector for that element—for example\n `&.cm-focused`.\n \n When `dark` is set to true, the theme will be marked as dark,\n which will cause the `&dark` rules from [base\n themes](https://codemirror.net/6/docs/ref/#view.EditorView^baseTheme) to be used (as opposed to\n `&light` when a light theme is active).\n */\n static theme(spec, options) {\n let prefix = StyleModule.newName();\n let result = [theme.of(prefix), styleModule.of(buildTheme(`.${prefix}`, spec))];\n if (options && options.dark)\n result.push(darkTheme.of(true));\n return result;\n }\n /**\n Create an extension that adds styles to the base theme. Like\n with [`theme`](https://codemirror.net/6/docs/ref/#view.EditorView^theme), use `&` to indicate the\n place of the editor wrapper element when directly targeting\n that. You can also use `&dark` or `&light` instead to only\n target editors with a dark or light theme.\n */\n static baseTheme(spec) {\n return Prec.lowest(styleModule.of(buildTheme(\".\" + baseThemeID, spec, lightDarkIDs)));\n }\n /**\n Retrieve an editor view instance from the view's DOM\n representation.\n */\n static findFromDOM(dom) {\n var _a;\n let content = dom.querySelector(\".cm-content\");\n let tile = content && Tile.get(content) || Tile.get(dom);\n return ((_a = tile === null || tile === void 0 ? void 0 : tile.root) === null || _a === void 0 ? void 0 : _a.view) || null;\n }\n}\n/**\nFacet to add a [style\nmodule](https://github.com/marijnh/style-mod#documentation) to\nan editor view. The view will ensure that the module is\nmounted in its [document\nroot](https://codemirror.net/6/docs/ref/#view.EditorView.constructor^config.root).\n*/\nEditorView.styleModule = styleModule;\n/**\nAn input handler can override the way changes to the editable\nDOM content are handled. Handlers are passed the document\npositions between which the change was found, and the new\ncontent. When one returns true, no further input handlers are\ncalled and the default behavior is prevented.\n\nThe `insert` argument can be used to get the default transaction\nthat would be applied for this input. This can be useful when\ndispatching the custom behavior as a separate transaction.\n*/\nEditorView.inputHandler = inputHandler;\n/**\nFunctions provided in this facet will be used to transform text\npasted or dropped into the editor.\n*/\nEditorView.clipboardInputFilter = clipboardInputFilter;\n/**\nTransform text copied or dragged from the editor.\n*/\nEditorView.clipboardOutputFilter = clipboardOutputFilter;\n/**\nScroll handlers can override how things are scrolled into view.\nIf they return `true`, no further handling happens for the\nscrolling. If they return false, the default scroll behavior is\napplied. Scroll handlers should never initiate editor updates.\n*/\nEditorView.scrollHandler = scrollHandler;\n/**\nThis facet can be used to provide functions that create effects\nto be dispatched when the editor's focus state changes.\n*/\nEditorView.focusChangeEffect = focusChangeEffect;\n/**\nBy default, the editor assumes all its content has the same\n[text direction](https://codemirror.net/6/docs/ref/#view.Direction). Configure this with a `true`\nvalue to make it read the text direction of every (rendered)\nline separately.\n*/\nEditorView.perLineTextDirection = perLineTextDirection;\n/**\nAllows you to provide a function that should be called when the\nlibrary catches an exception from an extension (mostly from view\nplugins, but may be used by other extensions to route exceptions\nfrom user-code-provided callbacks). This is mostly useful for\ndebugging and logging. See [`logException`](https://codemirror.net/6/docs/ref/#view.logException).\n*/\nEditorView.exceptionSink = exceptionSink;\n/**\nA facet that can be used to register a function to be called\nevery time the view updates.\n*/\nEditorView.updateListener = updateListener;\n/**\nFacet that controls whether the editor content DOM is editable.\nWhen its highest-precedence value is `false`, the element will\nnot have its `contenteditable` attribute set. (Note that this\ndoesn't affect API calls that change the editor content, even\nwhen those are bound to keys or buttons. See the\n[`readOnly`](https://codemirror.net/6/docs/ref/#state.EditorState.readOnly) facet for that.)\n*/\nEditorView.editable = editable;\n/**\nAllows you to influence the way mouse selection happens. The\nfunctions in this facet will be called for a `mousedown` event\non the editor, and can return an object that overrides the way a\nselection is computed from that mouse click or drag.\n*/\nEditorView.mouseSelectionStyle = mouseSelectionStyle;\n/**\nFacet used to configure whether a given selection drag event\nshould move or copy the selection. The given predicate will be\ncalled with the `mousedown` event, and can return `true` when\nthe drag should move the content.\n*/\nEditorView.dragMovesSelection = dragMovesSelection$1;\n/**\nFacet used to configure whether a given selecting click adds a\nnew range to the existing selection or replaces it entirely. The\ndefault behavior is to check `event.metaKey` on macOS, and\n`event.ctrlKey` elsewhere.\n*/\nEditorView.clickAddsSelectionRange = clickAddsSelectionRange;\n/**\nA facet that determines which [decorations](https://codemirror.net/6/docs/ref/#view.Decoration)\nare shown in the view. Decorations can be provided in two\nways—directly, or via a function that takes an editor view.\n\nOnly decoration sets provided directly are allowed to influence\nthe editor's vertical layout structure. The ones provided as\nfunctions are called _after_ the new viewport has been computed,\nand thus **must not** introduce block widgets or replacing\ndecorations that cover line breaks.\n\nIf you want decorated ranges to behave like atomic units for\ncursor motion and deletion purposes, also provide the range set\ncontaining the decorations to\n[`EditorView.atomicRanges`](https://codemirror.net/6/docs/ref/#view.EditorView^atomicRanges).\n*/\nEditorView.decorations = decorations;\n/**\n[Block wrappers](https://codemirror.net/6/docs/ref/#view.BlockWrapper) provide a way to add DOM\nstructure around editor lines and block widgets. Sets of\nwrappers are provided in a similar way to decorations, and are\nnested in a similar way when they overlap. A wrapper affects all\nlines and block widgets that start inside its range.\n*/\nEditorView.blockWrappers = blockWrappers;\n/**\nFacet that works much like\n[`decorations`](https://codemirror.net/6/docs/ref/#view.EditorView^decorations), but puts its\ninputs at the very bottom of the precedence stack, meaning mark\ndecorations provided here will only be split by other, partially\noverlapping `outerDecorations` ranges, and wrap around all\nregular decorations. Use this for mark elements that should, as\nmuch as possible, remain in one piece.\n*/\nEditorView.outerDecorations = outerDecorations;\n/**\nUsed to provide ranges that should be treated as atoms as far as\ncursor motion is concerned. This causes methods like\n[`moveByChar`](https://codemirror.net/6/docs/ref/#view.EditorView.moveByChar) and\n[`moveVertically`](https://codemirror.net/6/docs/ref/#view.EditorView.moveVertically) (and the\ncommands built on top of them) to skip across such regions when\na selection endpoint would enter them. This does _not_ prevent\ndirect programmatic [selection\nupdates](https://codemirror.net/6/docs/ref/#state.TransactionSpec.selection) from moving into such\nregions.\n*/\nEditorView.atomicRanges = atomicRanges;\n/**\nWhen range decorations add a `unicode-bidi: isolate` style, they\nshould also include a\n[`bidiIsolate`](https://codemirror.net/6/docs/ref/#view.MarkDecorationSpec.bidiIsolate) property\nin their decoration spec, and be exposed through this facet, so\nthat the editor can compute the proper text order. (Other values\nfor `unicode-bidi`, except of course `normal`, are not\nsupported.)\n*/\nEditorView.bidiIsolatedRanges = bidiIsolatedRanges;\n/**\nFacet that allows extensions to provide additional scroll\nmargins (space around the sides of the scrolling element that\nshould be considered invisible). This can be useful when the\nplugin introduces elements that cover part of that element (for\nexample a horizontally fixed gutter).\n*/\nEditorView.scrollMargins = scrollMargins;\n/**\nThis facet records whether a dark theme is active. The extension\nreturned by [`theme`](https://codemirror.net/6/docs/ref/#view.EditorView^theme) automatically\nincludes an instance of this when the `dark` option is set to\ntrue.\n*/\nEditorView.darkTheme = darkTheme;\n/**\nProvides a Content Security Policy nonce to use when creating\nthe style sheets for the editor. Holds the empty string when no\nnonce has been provided.\n*/\nEditorView.cspNonce = /*@__PURE__*/Facet.define({ combine: values => values.length ? values[0] : \"\" });\n/**\nFacet that provides additional DOM attributes for the editor's\neditable DOM element.\n*/\nEditorView.contentAttributes = contentAttributes;\n/**\nFacet that provides DOM attributes for the editor's outer\nelement.\n*/\nEditorView.editorAttributes = editorAttributes;\n/**\nAn extension that enables line wrapping in the editor (by\nsetting CSS `white-space` to `pre-wrap` in the content).\n*/\nEditorView.lineWrapping = /*@__PURE__*/EditorView.contentAttributes.of({ \"class\": \"cm-lineWrapping\" });\n/**\nState effect used to include screen reader announcements in a\ntransaction. These will be added to the DOM in a visually hidden\nelement with `aria-live=\"polite\"` set, and should be used to\ndescribe effects that are visually obvious but may not be\nnoticed by screen reader users (such as moving to the next\nsearch match).\n*/\nEditorView.announce = /*@__PURE__*/StateEffect.define();\n// Maximum line length for which we compute accurate bidi info\nconst MaxBidiLine = 4096;\nconst BadMeasure = {};\nclass CachedOrder {\n constructor(from, to, dir, isolates, fresh, order) {\n this.from = from;\n this.to = to;\n this.dir = dir;\n this.isolates = isolates;\n this.fresh = fresh;\n this.order = order;\n }\n static update(cache, changes) {\n if (changes.empty && !cache.some(c => c.fresh))\n return cache;\n let result = [], lastDir = cache.length ? cache[cache.length - 1].dir : Direction.LTR;\n for (let i = Math.max(0, cache.length - 10); i < cache.length; i++) {\n let entry = cache[i];\n if (entry.dir == lastDir && !changes.touchesRange(entry.from, entry.to))\n result.push(new CachedOrder(changes.mapPos(entry.from, 1), changes.mapPos(entry.to, -1), entry.dir, entry.isolates, false, entry.order));\n }\n return result;\n }\n}\nfunction attrsFromFacet(view, facet, base) {\n for (let sources = view.state.facet(facet), i = sources.length - 1; i >= 0; i--) {\n let source = sources[i], value = typeof source == \"function\" ? source(view) : source;\n if (value)\n combineAttrs(value, base);\n }\n return base;\n}\n\nconst currentPlatform = browser.mac ? \"mac\" : browser.windows ? \"win\" : browser.linux ? \"linux\" : \"key\";\nfunction normalizeKeyName(name, platform) {\n const parts = name.split(/-(?!$)/);\n let result = parts[parts.length - 1];\n if (result == \"Space\")\n result = \" \";\n let alt, ctrl, shift, meta;\n for (let i = 0; i < parts.length - 1; ++i) {\n const mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod))\n meta = true;\n else if (/^a(lt)?$/i.test(mod))\n alt = true;\n else if (/^(c|ctrl|control)$/i.test(mod))\n ctrl = true;\n else if (/^s(hift)?$/i.test(mod))\n shift = true;\n else if (/^mod$/i.test(mod)) {\n if (platform == \"mac\")\n meta = true;\n else\n ctrl = true;\n }\n else\n throw new Error(\"Unrecognized modifier name: \" + mod);\n }\n if (alt)\n result = \"Alt-\" + result;\n if (ctrl)\n result = \"Ctrl-\" + result;\n if (meta)\n result = \"Meta-\" + result;\n if (shift)\n result = \"Shift-\" + result;\n return result;\n}\nfunction modifiers(name, event, shift) {\n if (event.altKey)\n name = \"Alt-\" + name;\n if (event.ctrlKey)\n name = \"Ctrl-\" + name;\n if (event.metaKey)\n name = \"Meta-\" + name;\n if (shift !== false && event.shiftKey)\n name = \"Shift-\" + name;\n return name;\n}\nconst handleKeyEvents = /*@__PURE__*/Prec.default(/*@__PURE__*/EditorView.domEventHandlers({\n keydown(event, view) {\n return runHandlers(getKeymap(view.state), event, view, \"editor\");\n }\n}));\n/**\nFacet used for registering keymaps.\n\nYou can add multiple keymaps to an editor. Their priorities\ndetermine their precedence (the ones specified early or with high\npriority get checked first). When a handler has returned `true`\nfor a given key, no further handlers are called.\n*/\nconst keymap = /*@__PURE__*/Facet.define({ enables: handleKeyEvents });\nconst Keymaps = /*@__PURE__*/new WeakMap();\n// This is hidden behind an indirection, rather than directly computed\n// by the facet, to keep internal types out of the facet's type.\nfunction getKeymap(state) {\n let bindings = state.facet(keymap);\n let map = Keymaps.get(bindings);\n if (!map)\n Keymaps.set(bindings, map = buildKeymap(bindings.reduce((a, b) => a.concat(b), [])));\n return map;\n}\n/**\nRun the key handlers registered for a given scope. The event\nobject should be a `\"keydown\"` event. Returns true if any of the\nhandlers handled it.\n*/\nfunction runScopeHandlers(view, event, scope) {\n return runHandlers(getKeymap(view.state), event, view, scope);\n}\nlet storedPrefix = null;\nconst PrefixTimeout = 4000;\nfunction buildKeymap(bindings, platform = currentPlatform) {\n let bound = Object.create(null);\n let isPrefix = Object.create(null);\n let checkPrefix = (name, is) => {\n let current = isPrefix[name];\n if (current == null)\n isPrefix[name] = is;\n else if (current != is)\n throw new Error(\"Key binding \" + name + \" is used both as a regular binding and as a multi-stroke prefix\");\n };\n let add = (scope, key, command, preventDefault, stopPropagation) => {\n var _a, _b;\n let scopeObj = bound[scope] || (bound[scope] = Object.create(null));\n let parts = key.split(/ (?!$)/).map(k => normalizeKeyName(k, platform));\n for (let i = 1; i < parts.length; i++) {\n let prefix = parts.slice(0, i).join(\" \");\n checkPrefix(prefix, true);\n if (!scopeObj[prefix])\n scopeObj[prefix] = {\n preventDefault: true,\n stopPropagation: false,\n run: [(view) => {\n let ourObj = storedPrefix = { view, prefix, scope };\n setTimeout(() => { if (storedPrefix == ourObj)\n storedPrefix = null; }, PrefixTimeout);\n return true;\n }]\n };\n }\n let full = parts.join(\" \");\n checkPrefix(full, false);\n let binding = scopeObj[full] || (scopeObj[full] = {\n preventDefault: false,\n stopPropagation: false,\n run: ((_b = (_a = scopeObj._any) === null || _a === void 0 ? void 0 : _a.run) === null || _b === void 0 ? void 0 : _b.slice()) || []\n });\n if (command)\n binding.run.push(command);\n if (preventDefault)\n binding.preventDefault = true;\n if (stopPropagation)\n binding.stopPropagation = true;\n };\n for (let b of bindings) {\n let scopes = b.scope ? b.scope.split(\" \") : [\"editor\"];\n if (b.any)\n for (let scope of scopes) {\n let scopeObj = bound[scope] || (bound[scope] = Object.create(null));\n if (!scopeObj._any)\n scopeObj._any = { preventDefault: false, stopPropagation: false, run: [] };\n let { any } = b;\n for (let key in scopeObj)\n scopeObj[key].run.push(view => any(view, currentKeyEvent));\n }\n let name = b[platform] || b.key;\n if (!name)\n continue;\n for (let scope of scopes) {\n add(scope, name, b.run, b.preventDefault, b.stopPropagation);\n if (b.shift)\n add(scope, \"Shift-\" + name, b.shift, b.preventDefault, b.stopPropagation);\n }\n }\n return bound;\n}\nlet currentKeyEvent = null;\nfunction runHandlers(map, event, view, scope) {\n currentKeyEvent = event;\n let name = keyName(event);\n let charCode = codePointAt(name, 0), isChar = codePointSize(charCode) == name.length && name != \" \";\n let prefix = \"\", handled = false, prevented = false, stopPropagation = false;\n if (storedPrefix && storedPrefix.view == view && storedPrefix.scope == scope) {\n prefix = storedPrefix.prefix + \" \";\n if (modifierCodes.indexOf(event.keyCode) < 0) {\n prevented = true;\n storedPrefix = null;\n }\n }\n let ran = new Set;\n let runFor = (binding) => {\n if (binding) {\n for (let cmd of binding.run)\n if (!ran.has(cmd)) {\n ran.add(cmd);\n if (cmd(view)) {\n if (binding.stopPropagation)\n stopPropagation = true;\n return true;\n }\n }\n if (binding.preventDefault) {\n if (binding.stopPropagation)\n stopPropagation = true;\n prevented = true;\n }\n }\n return false;\n };\n let scopeObj = map[scope], baseName, shiftName;\n if (scopeObj) {\n if (runFor(scopeObj[prefix + modifiers(name, event, !isChar)])) {\n handled = true;\n }\n else if (isChar && (event.altKey || event.metaKey || event.ctrlKey) &&\n // Ctrl-Alt may be used for AltGr on Windows\n !(browser.windows && event.ctrlKey && event.altKey) &&\n // Alt-combinations on macOS tend to be typed characters\n !(browser.mac && event.altKey && !(event.ctrlKey || event.metaKey)) &&\n (baseName = base[event.keyCode]) && baseName != name) {\n if (runFor(scopeObj[prefix + modifiers(baseName, event, true)])) {\n handled = true;\n }\n else if (event.shiftKey && (shiftName = shift[event.keyCode]) != name && shiftName != baseName &&\n runFor(scopeObj[prefix + modifiers(shiftName, event, false)])) {\n handled = true;\n }\n }\n else if (isChar && event.shiftKey &&\n runFor(scopeObj[prefix + modifiers(name, event, true)])) {\n handled = true;\n }\n if (!handled && runFor(scopeObj._any))\n handled = true;\n }\n if (prevented)\n handled = true;\n if (handled && stopPropagation)\n event.stopPropagation();\n currentKeyEvent = null;\n return handled;\n}\n\n/**\nImplementation of [`LayerMarker`](https://codemirror.net/6/docs/ref/#view.LayerMarker) that creates\na rectangle at a given set of coordinates.\n*/\nclass RectangleMarker {\n /**\n Create a marker with the given class and dimensions. If `width`\n is null, the DOM element will get no width style.\n */\n constructor(className, \n /**\n The left position of the marker (in pixels, document-relative).\n */\n left, \n /**\n The top position of the marker.\n */\n top, \n /**\n The width of the marker, or null if it shouldn't get a width assigned.\n */\n width, \n /**\n The height of the marker.\n */\n height) {\n this.className = className;\n this.left = left;\n this.top = top;\n this.width = width;\n this.height = height;\n }\n draw() {\n let elt = document.createElement(\"div\");\n elt.className = this.className;\n this.adjust(elt);\n return elt;\n }\n update(elt, prev) {\n if (prev.className != this.className)\n return false;\n this.adjust(elt);\n return true;\n }\n adjust(elt) {\n elt.style.left = this.left + \"px\";\n elt.style.top = this.top + \"px\";\n if (this.width != null)\n elt.style.width = this.width + \"px\";\n elt.style.height = this.height + \"px\";\n }\n eq(p) {\n return this.left == p.left && this.top == p.top && this.width == p.width && this.height == p.height &&\n this.className == p.className;\n }\n /**\n Create a set of rectangles for the given selection range,\n assigning them theclass`className`. Will create a single\n rectangle for empty ranges, and a set of selection-style\n rectangles covering the range's content (in a bidi-aware\n way) for non-empty ones.\n */\n static forRange(view, className, range) {\n if (range.empty) {\n let pos = view.coordsAtPos(range.head, range.assoc || 1);\n if (!pos)\n return [];\n let base = getBase(view);\n return [new RectangleMarker(className, pos.left - base.left, pos.top - base.top, null, pos.bottom - pos.top)];\n }\n else {\n return rectanglesForRange(view, className, range);\n }\n }\n}\nfunction getBase(view) {\n let rect = view.scrollDOM.getBoundingClientRect();\n let left = view.textDirection == Direction.LTR ? rect.left : rect.right - view.scrollDOM.clientWidth * view.scaleX;\n return { left: left - view.scrollDOM.scrollLeft * view.scaleX, top: rect.top - view.scrollDOM.scrollTop * view.scaleY };\n}\nfunction wrappedLine(view, pos, side, inside) {\n let coords = view.coordsAtPos(pos, side * 2);\n if (!coords)\n return inside;\n let editorRect = view.dom.getBoundingClientRect();\n let y = (coords.top + coords.bottom) / 2;\n let left = view.posAtCoords({ x: editorRect.left + 1, y });\n let right = view.posAtCoords({ x: editorRect.right - 1, y });\n if (left == null || right == null)\n return inside;\n return { from: Math.max(inside.from, Math.min(left, right)), to: Math.min(inside.to, Math.max(left, right)) };\n}\nfunction rectanglesForRange(view, className, range) {\n if (range.to <= view.viewport.from || range.from >= view.viewport.to)\n return [];\n let from = Math.max(range.from, view.viewport.from), to = Math.min(range.to, view.viewport.to);\n let ltr = view.textDirection == Direction.LTR;\n let content = view.contentDOM, contentRect = content.getBoundingClientRect(), base = getBase(view);\n let lineElt = content.querySelector(\".cm-line\"), lineStyle = lineElt && window.getComputedStyle(lineElt);\n let leftSide = contentRect.left +\n (lineStyle ? parseInt(lineStyle.paddingLeft) + Math.min(0, parseInt(lineStyle.textIndent)) : 0);\n let rightSide = contentRect.right - (lineStyle ? parseInt(lineStyle.paddingRight) : 0);\n let startBlock = blockAt(view, from, 1), endBlock = blockAt(view, to, -1);\n let visualStart = startBlock.type == BlockType.Text ? startBlock : null;\n let visualEnd = endBlock.type == BlockType.Text ? endBlock : null;\n if (visualStart && (view.lineWrapping || startBlock.widgetLineBreaks))\n visualStart = wrappedLine(view, from, 1, visualStart);\n if (visualEnd && (view.lineWrapping || endBlock.widgetLineBreaks))\n visualEnd = wrappedLine(view, to, -1, visualEnd);\n if (visualStart && visualEnd && visualStart.from == visualEnd.from && visualStart.to == visualEnd.to) {\n return pieces(drawForLine(range.from, range.to, visualStart));\n }\n else {\n let top = visualStart ? drawForLine(range.from, null, visualStart) : drawForWidget(startBlock, false);\n let bottom = visualEnd ? drawForLine(null, range.to, visualEnd) : drawForWidget(endBlock, true);\n let between = [];\n if ((visualStart || startBlock).to < (visualEnd || endBlock).from - (visualStart && visualEnd ? 1 : 0) ||\n startBlock.widgetLineBreaks > 1 && top.bottom + view.defaultLineHeight / 2 < bottom.top)\n between.push(piece(leftSide, top.bottom, rightSide, bottom.top));\n else if (top.bottom < bottom.top && view.elementAtHeight((top.bottom + bottom.top) / 2).type == BlockType.Text)\n top.bottom = bottom.top = (top.bottom + bottom.top) / 2;\n return pieces(top).concat(between).concat(pieces(bottom));\n }\n function piece(left, top, right, bottom) {\n return new RectangleMarker(className, left - base.left, top - base.top, Math.max(0, right - left), bottom - top);\n }\n function pieces({ top, bottom, horizontal }) {\n let pieces = [];\n for (let i = 0; i < horizontal.length; i += 2)\n pieces.push(piece(horizontal[i], top, horizontal[i + 1], bottom));\n return pieces;\n }\n // Gets passed from/to in line-local positions\n function drawForLine(from, to, line) {\n let top = 1e9, bottom = -1e9, horizontal = [];\n function addSpan(from, fromOpen, to, toOpen, dir) {\n // Passing 2/-2 is a kludge to force the view to return\n // coordinates on the proper side of block widgets, since\n // normalizing the side there, though appropriate for most\n // coordsAtPos queries, would break selection drawing.\n let fromCoords = view.coordsAtPos(from, (from == line.to ? -2 : 2));\n let toCoords = view.coordsAtPos(to, (to == line.from ? 2 : -2));\n if (!fromCoords || !toCoords)\n return;\n top = Math.min(fromCoords.top, toCoords.top, top);\n bottom = Math.max(fromCoords.bottom, toCoords.bottom, bottom);\n if (dir == Direction.LTR)\n horizontal.push(ltr && fromOpen ? leftSide : fromCoords.left, ltr && toOpen ? rightSide : toCoords.right);\n else\n horizontal.push(!ltr && toOpen ? leftSide : toCoords.left, !ltr && fromOpen ? rightSide : fromCoords.right);\n }\n let start = from !== null && from !== void 0 ? from : line.from, end = to !== null && to !== void 0 ? to : line.to;\n // Split the range by visible range and document line\n for (let r of view.visibleRanges)\n if (r.to > start && r.from < end) {\n for (let pos = Math.max(r.from, start), endPos = Math.min(r.to, end);;) {\n let docLine = view.state.doc.lineAt(pos);\n for (let span of view.bidiSpans(docLine)) {\n let spanFrom = span.from + docLine.from, spanTo = span.to + docLine.from;\n if (spanFrom >= endPos)\n break;\n if (spanTo > pos)\n addSpan(Math.max(spanFrom, pos), from == null && spanFrom <= start, Math.min(spanTo, endPos), to == null && spanTo >= end, span.dir);\n }\n pos = docLine.to + 1;\n if (pos >= endPos)\n break;\n }\n }\n if (horizontal.length == 0)\n addSpan(start, from == null, end, to == null, view.textDirection);\n return { top, bottom, horizontal };\n }\n function drawForWidget(block, top) {\n let y = contentRect.top + (top ? block.top : block.bottom);\n return { top: y, bottom: y, horizontal: [] };\n }\n}\nfunction sameMarker(a, b) {\n return a.constructor == b.constructor && a.eq(b);\n}\nclass LayerView {\n constructor(view, layer) {\n this.view = view;\n this.layer = layer;\n this.drawn = [];\n this.scaleX = 1;\n this.scaleY = 1;\n this.measureReq = { read: this.measure.bind(this), write: this.draw.bind(this) };\n this.dom = view.scrollDOM.appendChild(document.createElement(\"div\"));\n this.dom.classList.add(\"cm-layer\");\n if (layer.above)\n this.dom.classList.add(\"cm-layer-above\");\n if (layer.class)\n this.dom.classList.add(layer.class);\n this.scale();\n this.dom.setAttribute(\"aria-hidden\", \"true\");\n this.setOrder(view.state);\n view.requestMeasure(this.measureReq);\n if (layer.mount)\n layer.mount(this.dom, view);\n }\n update(update) {\n if (update.startState.facet(layerOrder) != update.state.facet(layerOrder))\n this.setOrder(update.state);\n if (this.layer.update(update, this.dom) || update.geometryChanged) {\n this.scale();\n update.view.requestMeasure(this.measureReq);\n }\n }\n docViewUpdate(view) {\n if (this.layer.updateOnDocViewUpdate !== false)\n view.requestMeasure(this.measureReq);\n }\n setOrder(state) {\n let pos = 0, order = state.facet(layerOrder);\n while (pos < order.length && order[pos] != this.layer)\n pos++;\n this.dom.style.zIndex = String((this.layer.above ? 150 : -1) - pos);\n }\n measure() {\n return this.layer.markers(this.view);\n }\n scale() {\n let { scaleX, scaleY } = this.view;\n if (scaleX != this.scaleX || scaleY != this.scaleY) {\n this.scaleX = scaleX;\n this.scaleY = scaleY;\n this.dom.style.transform = `scale(${1 / scaleX}, ${1 / scaleY})`;\n }\n }\n draw(markers) {\n if (markers.length != this.drawn.length || markers.some((p, i) => !sameMarker(p, this.drawn[i]))) {\n let old = this.dom.firstChild, oldI = 0;\n for (let marker of markers) {\n if (marker.update && old && marker.constructor && this.drawn[oldI].constructor &&\n marker.update(old, this.drawn[oldI])) {\n old = old.nextSibling;\n oldI++;\n }\n else {\n this.dom.insertBefore(marker.draw(), old);\n }\n }\n while (old) {\n let next = old.nextSibling;\n old.remove();\n old = next;\n }\n this.drawn = markers;\n if (browser.safari && browser.safari_version >= 26) // Issue #1600, 1627\n this.dom.style.display = this.dom.firstChild ? \"\" : \"none\";\n }\n }\n destroy() {\n if (this.layer.destroy)\n this.layer.destroy(this.dom, this.view);\n this.dom.remove();\n }\n}\nconst layerOrder = /*@__PURE__*/Facet.define();\n/**\nDefine a layer.\n*/\nfunction layer(config) {\n return [\n ViewPlugin.define(v => new LayerView(v, config)),\n layerOrder.of(config)\n ];\n}\n\nconst selectionConfig = /*@__PURE__*/Facet.define({\n combine(configs) {\n return combineConfig(configs, {\n cursorBlinkRate: 1200,\n drawRangeCursor: true,\n iosSelectionHandles: true\n }, {\n cursorBlinkRate: (a, b) => Math.min(a, b),\n drawRangeCursor: (a, b) => a || b\n });\n }\n});\n/**\nReturns an extension that hides the browser's native selection and\ncursor, replacing the selection with a background behind the text\n(with the `cm-selectionBackground` class), and the\ncursors with elements overlaid over the code (using\n`cm-cursor-primary` and `cm-cursor-secondary`).\n\nThis allows the editor to display secondary selection ranges, and\ntends to produce a type of selection more in line with that users\nexpect in a text editor (the native selection styling will often\nleave gaps between lines and won't fill the horizontal space after\na line when the selection continues past it).\n\nIt does have a performance cost, in that it requires an extra DOM\nlayout cycle for many updates (the selection is drawn based on DOM\nlayout information that's only available after laying out the\ncontent).\n*/\nfunction drawSelection(config = {}) {\n return [\n selectionConfig.of(config),\n cursorLayer,\n selectionLayer,\n hideNativeSelection,\n nativeSelectionHidden.of(true)\n ];\n}\n/**\nRetrieve the [`drawSelection`](https://codemirror.net/6/docs/ref/#view.drawSelection) configuration\nfor this state. (Note that this will return a set of defaults even\nif `drawSelection` isn't enabled.)\n*/\nfunction getDrawSelectionConfig(state) {\n return state.facet(selectionConfig);\n}\nfunction configChanged(update) {\n return update.startState.facet(selectionConfig) != update.state.facet(selectionConfig);\n}\nconst cursorLayer = /*@__PURE__*/layer({\n above: true,\n markers(view) {\n let { state } = view, conf = state.facet(selectionConfig);\n let cursors = [];\n for (let r of state.selection.ranges) {\n let prim = r == state.selection.main;\n if (r.empty || conf.drawRangeCursor && !(prim && browser.ios && conf.iosSelectionHandles)) {\n let className = prim ? \"cm-cursor cm-cursor-primary\" : \"cm-cursor cm-cursor-secondary\";\n let cursor = r.empty ? r : EditorSelection.cursor(r.head, r.head > r.anchor ? -1 : 1);\n for (let piece of RectangleMarker.forRange(view, className, cursor))\n cursors.push(piece);\n }\n }\n return cursors;\n },\n update(update, dom) {\n if (update.transactions.some(tr => tr.selection))\n dom.style.animationName = dom.style.animationName == \"cm-blink\" ? \"cm-blink2\" : \"cm-blink\";\n let confChange = configChanged(update);\n if (confChange)\n setBlinkRate(update.state, dom);\n return update.docChanged || update.selectionSet || confChange;\n },\n mount(dom, view) {\n setBlinkRate(view.state, dom);\n },\n class: \"cm-cursorLayer\"\n});\nfunction setBlinkRate(state, dom) {\n dom.style.animationDuration = state.facet(selectionConfig).cursorBlinkRate + \"ms\";\n}\nconst selectionLayer = /*@__PURE__*/layer({\n above: false,\n markers(view) {\n let markers = [], { main, ranges } = view.state.selection;\n for (let r of ranges)\n if (!r.empty) {\n for (let marker of RectangleMarker.forRange(view, \"cm-selectionBackground\", r))\n markers.push(marker);\n }\n if (browser.ios && !main.empty && view.state.facet(selectionConfig).iosSelectionHandles) {\n for (let piece of RectangleMarker.forRange(view, \"cm-selectionHandle cm-selectionHandle-start\", EditorSelection.cursor(main.from, 1)))\n markers.push(piece);\n for (let piece of RectangleMarker.forRange(view, \"cm-selectionHandle cm-selectionHandle-end\", EditorSelection.cursor(main.to, 1)))\n markers.push(piece);\n }\n return markers;\n },\n update(update, dom) {\n return update.docChanged || update.selectionSet || update.viewportChanged || configChanged(update);\n },\n class: \"cm-selectionLayer\"\n});\nconst hideNativeSelection = /*@__PURE__*/Prec.highest(/*@__PURE__*/EditorView.theme({\n \".cm-line\": {\n \"& ::selection, &::selection\": { backgroundColor: \"transparent !important\" },\n caretColor: \"transparent !important\"\n },\n \".cm-content\": {\n caretColor: \"transparent !important\",\n \"& :focus\": {\n caretColor: \"initial !important\",\n \"&::selection, & ::selection\": {\n backgroundColor: \"Highlight !important\"\n }\n }\n }\n}));\n\nconst setDropCursorPos = /*@__PURE__*/StateEffect.define({\n map(pos, mapping) { return pos == null ? null : mapping.mapPos(pos); }\n});\nconst dropCursorPos = /*@__PURE__*/StateField.define({\n create() { return null; },\n update(pos, tr) {\n if (pos != null)\n pos = tr.changes.mapPos(pos);\n return tr.effects.reduce((pos, e) => e.is(setDropCursorPos) ? e.value : pos, pos);\n }\n});\nconst drawDropCursor = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.view = view;\n this.cursor = null;\n this.measureReq = { read: this.readPos.bind(this), write: this.drawCursor.bind(this) };\n }\n update(update) {\n var _a;\n let cursorPos = update.state.field(dropCursorPos);\n if (cursorPos == null) {\n if (this.cursor != null) {\n (_a = this.cursor) === null || _a === void 0 ? void 0 : _a.remove();\n this.cursor = null;\n }\n }\n else {\n if (!this.cursor) {\n this.cursor = this.view.scrollDOM.appendChild(document.createElement(\"div\"));\n this.cursor.className = \"cm-dropCursor\";\n }\n if (update.startState.field(dropCursorPos) != cursorPos || update.docChanged || update.geometryChanged)\n this.view.requestMeasure(this.measureReq);\n }\n }\n readPos() {\n let { view } = this;\n let pos = view.state.field(dropCursorPos);\n let rect = pos != null && view.coordsAtPos(pos);\n if (!rect)\n return null;\n let outer = view.scrollDOM.getBoundingClientRect();\n return {\n left: rect.left - outer.left + view.scrollDOM.scrollLeft * view.scaleX,\n top: rect.top - outer.top + view.scrollDOM.scrollTop * view.scaleY,\n height: rect.bottom - rect.top\n };\n }\n drawCursor(pos) {\n if (this.cursor) {\n let { scaleX, scaleY } = this.view;\n if (pos) {\n this.cursor.style.left = pos.left / scaleX + \"px\";\n this.cursor.style.top = pos.top / scaleY + \"px\";\n this.cursor.style.height = pos.height / scaleY + \"px\";\n }\n else {\n this.cursor.style.left = \"-100000px\";\n }\n }\n }\n destroy() {\n if (this.cursor)\n this.cursor.remove();\n }\n setDropPos(pos) {\n if (this.view.state.field(dropCursorPos) != pos)\n this.view.dispatch({ effects: setDropCursorPos.of(pos) });\n }\n}, {\n eventObservers: {\n dragover(event) {\n this.setDropPos(this.view.posAtCoords({ x: event.clientX, y: event.clientY }));\n },\n dragleave(event) {\n if (event.target == this.view.contentDOM || !this.view.contentDOM.contains(event.relatedTarget))\n this.setDropPos(null);\n },\n dragend() {\n this.setDropPos(null);\n },\n drop() {\n this.setDropPos(null);\n }\n }\n});\n/**\nDraws a cursor at the current drop position when something is\ndragged over the editor.\n*/\nfunction dropCursor() {\n return [dropCursorPos, drawDropCursor];\n}\n\nfunction iterMatches(doc, re, from, to, f) {\n re.lastIndex = 0;\n for (let cursor = doc.iterRange(from, to), pos = from, m; !cursor.next().done; pos += cursor.value.length) {\n if (!cursor.lineBreak)\n while (m = re.exec(cursor.value))\n f(pos + m.index, m);\n }\n}\nfunction matchRanges(view, maxLength) {\n let visible = view.visibleRanges;\n if (visible.length == 1 && visible[0].from == view.viewport.from &&\n visible[0].to == view.viewport.to)\n return visible;\n let result = [];\n for (let { from, to } of visible) {\n from = Math.max(view.state.doc.lineAt(from).from, from - maxLength);\n to = Math.min(view.state.doc.lineAt(to).to, to + maxLength);\n if (result.length && result[result.length - 1].to >= from)\n result[result.length - 1].to = to;\n else\n result.push({ from, to });\n }\n return result;\n}\n/**\nHelper class used to make it easier to maintain decorations on\nvisible code that matches a given regular expression. To be used\nin a [view plugin](https://codemirror.net/6/docs/ref/#view.ViewPlugin). Instances of this object\nrepresent a matching configuration.\n*/\nclass MatchDecorator {\n /**\n Create a decorator.\n */\n constructor(config) {\n const { regexp, decoration, decorate, boundary, maxLength = 1000 } = config;\n if (!regexp.global)\n throw new RangeError(\"The regular expression given to MatchDecorator should have its 'g' flag set\");\n this.regexp = regexp;\n if (decorate) {\n this.addMatch = (match, view, from, add) => decorate(add, from, from + match[0].length, match, view);\n }\n else if (typeof decoration == \"function\") {\n this.addMatch = (match, view, from, add) => {\n let deco = decoration(match, view, from);\n if (deco)\n add(from, from + match[0].length, deco);\n };\n }\n else if (decoration) {\n this.addMatch = (match, _view, from, add) => add(from, from + match[0].length, decoration);\n }\n else {\n throw new RangeError(\"Either 'decorate' or 'decoration' should be provided to MatchDecorator\");\n }\n this.boundary = boundary;\n this.maxLength = maxLength;\n }\n /**\n Compute the full set of decorations for matches in the given\n view's viewport. You'll want to call this when initializing your\n plugin.\n */\n createDeco(view) {\n let build = new RangeSetBuilder(), add = build.add.bind(build);\n for (let { from, to } of matchRanges(view, this.maxLength))\n iterMatches(view.state.doc, this.regexp, from, to, (from, m) => this.addMatch(m, view, from, add));\n return build.finish();\n }\n /**\n Update a set of decorations for a view update. `deco` _must_ be\n the set of decorations produced by _this_ `MatchDecorator` for\n the view state before the update.\n */\n updateDeco(update, deco) {\n let changeFrom = 1e9, changeTo = -1;\n if (update.docChanged)\n update.changes.iterChanges((_f, _t, from, to) => {\n if (to >= update.view.viewport.from && from <= update.view.viewport.to) {\n changeFrom = Math.min(from, changeFrom);\n changeTo = Math.max(to, changeTo);\n }\n });\n if (update.viewportMoved || changeTo - changeFrom > 1000)\n return this.createDeco(update.view);\n if (changeTo > -1)\n return this.updateRange(update.view, deco.map(update.changes), changeFrom, changeTo);\n return deco;\n }\n updateRange(view, deco, updateFrom, updateTo) {\n for (let r of view.visibleRanges) {\n let from = Math.max(r.from, updateFrom), to = Math.min(r.to, updateTo);\n if (to >= from) {\n let fromLine = view.state.doc.lineAt(from), toLine = fromLine.to < to ? view.state.doc.lineAt(to) : fromLine;\n let start = Math.max(r.from, fromLine.from), end = Math.min(r.to, toLine.to);\n if (this.boundary) {\n for (; from > fromLine.from; from--)\n if (this.boundary.test(fromLine.text[from - 1 - fromLine.from])) {\n start = from;\n break;\n }\n for (; to < toLine.to; to++)\n if (this.boundary.test(toLine.text[to - toLine.from])) {\n end = to;\n break;\n }\n }\n let ranges = [], m;\n let add = (from, to, deco) => ranges.push(deco.range(from, to));\n if (fromLine == toLine) {\n this.regexp.lastIndex = start - fromLine.from;\n while ((m = this.regexp.exec(fromLine.text)) && m.index < end - fromLine.from)\n this.addMatch(m, view, m.index + fromLine.from, add);\n }\n else {\n iterMatches(view.state.doc, this.regexp, start, end, (from, m) => this.addMatch(m, view, from, add));\n }\n deco = deco.update({ filterFrom: start, filterTo: end, filter: (from, to) => from < start || to > end, add: ranges });\n }\n }\n return deco;\n }\n}\n\nconst UnicodeRegexpSupport = /x/.unicode != null ? \"gu\" : \"g\";\nconst Specials = /*@__PURE__*/new RegExp(\"[\\u0000-\\u0008\\u000a-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\u202d\\u202e\\u2066\\u2067\\u2069\\ufeff\\ufff9-\\ufffc]\", UnicodeRegexpSupport);\nconst Names = {\n 0: \"null\",\n 7: \"bell\",\n 8: \"backspace\",\n 10: \"newline\",\n 11: \"vertical tab\",\n 13: \"carriage return\",\n 27: \"escape\",\n 8203: \"zero width space\",\n 8204: \"zero width non-joiner\",\n 8205: \"zero width joiner\",\n 8206: \"left-to-right mark\",\n 8207: \"right-to-left mark\",\n 8232: \"line separator\",\n 8237: \"left-to-right override\",\n 8238: \"right-to-left override\",\n 8294: \"left-to-right isolate\",\n 8295: \"right-to-left isolate\",\n 8297: \"pop directional isolate\",\n 8233: \"paragraph separator\",\n 65279: \"zero width no-break space\",\n 65532: \"object replacement\"\n};\nlet _supportsTabSize = null;\nfunction supportsTabSize() {\n var _a;\n if (_supportsTabSize == null && typeof document != \"undefined\" && document.body) {\n let styles = document.body.style;\n _supportsTabSize = ((_a = styles.tabSize) !== null && _a !== void 0 ? _a : styles.MozTabSize) != null;\n }\n return _supportsTabSize || false;\n}\nconst specialCharConfig = /*@__PURE__*/Facet.define({\n combine(configs) {\n let config = combineConfig(configs, {\n render: null,\n specialChars: Specials,\n addSpecialChars: null\n });\n if (config.replaceTabs = !supportsTabSize())\n config.specialChars = new RegExp(\"\\t|\" + config.specialChars.source, UnicodeRegexpSupport);\n if (config.addSpecialChars)\n config.specialChars = new RegExp(config.specialChars.source + \"|\" + config.addSpecialChars.source, UnicodeRegexpSupport);\n return config;\n }\n});\n/**\nReturns an extension that installs highlighting of special\ncharacters.\n*/\nfunction highlightSpecialChars(\n/**\nConfiguration options.\n*/\nconfig = {}) {\n return [specialCharConfig.of(config), specialCharPlugin()];\n}\nlet _plugin = null;\nfunction specialCharPlugin() {\n return _plugin || (_plugin = ViewPlugin.fromClass(class {\n constructor(view) {\n this.view = view;\n this.decorations = Decoration.none;\n this.decorationCache = Object.create(null);\n this.decorator = this.makeDecorator(view.state.facet(specialCharConfig));\n this.decorations = this.decorator.createDeco(view);\n }\n makeDecorator(conf) {\n return new MatchDecorator({\n regexp: conf.specialChars,\n decoration: (m, view, pos) => {\n let { doc } = view.state;\n let code = codePointAt(m[0], 0);\n if (code == 9) {\n let line = doc.lineAt(pos);\n let size = view.state.tabSize, col = countColumn(line.text, size, pos - line.from);\n return Decoration.replace({\n widget: new TabWidget((size - (col % size)) * this.view.defaultCharacterWidth / this.view.scaleX)\n });\n }\n return this.decorationCache[code] ||\n (this.decorationCache[code] = Decoration.replace({ widget: new SpecialCharWidget(conf, code) }));\n },\n boundary: conf.replaceTabs ? undefined : /[^]/\n });\n }\n update(update) {\n let conf = update.state.facet(specialCharConfig);\n if (update.startState.facet(specialCharConfig) != conf) {\n this.decorator = this.makeDecorator(conf);\n this.decorations = this.decorator.createDeco(update.view);\n }\n else {\n this.decorations = this.decorator.updateDeco(update, this.decorations);\n }\n }\n }, {\n decorations: v => v.decorations\n }));\n}\nconst DefaultPlaceholder = \"\\u2022\";\n// Assigns placeholder characters from the Control Pictures block to\n// ASCII control characters\nfunction placeholder$1(code) {\n if (code >= 32)\n return DefaultPlaceholder;\n if (code == 10)\n return \"\\u2424\";\n return String.fromCharCode(9216 + code);\n}\nclass SpecialCharWidget extends WidgetType {\n constructor(options, code) {\n super();\n this.options = options;\n this.code = code;\n }\n eq(other) { return other.code == this.code; }\n toDOM(view) {\n let ph = placeholder$1(this.code);\n let desc = view.state.phrase(\"Control character\") + \" \" + (Names[this.code] || \"0x\" + this.code.toString(16));\n let custom = this.options.render && this.options.render(this.code, desc, ph);\n if (custom)\n return custom;\n let span = document.createElement(\"span\");\n span.textContent = ph;\n span.title = desc;\n span.setAttribute(\"aria-label\", desc);\n span.className = \"cm-specialChar\";\n return span;\n }\n ignoreEvent() { return false; }\n}\nclass TabWidget extends WidgetType {\n constructor(width) {\n super();\n this.width = width;\n }\n eq(other) { return other.width == this.width; }\n toDOM() {\n let span = document.createElement(\"span\");\n span.textContent = \"\\t\";\n span.className = \"cm-tab\";\n span.style.width = this.width + \"px\";\n return span;\n }\n ignoreEvent() { return false; }\n}\n\nconst plugin = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor() {\n this.height = 1000;\n this.attrs = { style: \"padding-bottom: 1000px\" };\n }\n update(update) {\n let { view } = update;\n let height = view.viewState.editorHeight -\n view.defaultLineHeight - view.documentPadding.top - 0.5;\n if (height >= 0 && height != this.height) {\n this.height = height;\n this.attrs = { style: `padding-bottom: ${height}px` };\n }\n }\n});\n/**\nReturns an extension that makes sure the content has a bottom\nmargin equivalent to the height of the editor, minus one line\nheight, so that every line in the document can be scrolled to the\ntop of the editor.\n\nThis is only meaningful when the editor is scrollable, and should\nnot be enabled in editors that take the size of their content.\n*/\nfunction scrollPastEnd() {\n return [plugin, contentAttributes.of(view => { var _a; return ((_a = view.plugin(plugin)) === null || _a === void 0 ? void 0 : _a.attrs) || null; })];\n}\n\n/**\nMark lines that have a cursor on them with the `\"cm-activeLine\"`\nDOM class.\n*/\nfunction highlightActiveLine() {\n return activeLineHighlighter;\n}\nconst lineDeco = /*@__PURE__*/Decoration.line({ class: \"cm-activeLine\" });\nconst activeLineHighlighter = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.decorations = this.getDeco(view);\n }\n update(update) {\n if (update.docChanged || update.selectionSet)\n this.decorations = this.getDeco(update.view);\n }\n getDeco(view) {\n let lastLineStart = -1, deco = [];\n for (let r of view.state.selection.ranges) {\n let line = view.lineBlockAt(r.head);\n if (line.from > lastLineStart) {\n deco.push(lineDeco.range(line.from));\n lastLineStart = line.from;\n }\n }\n return Decoration.set(deco);\n }\n}, {\n decorations: v => v.decorations\n});\n\nclass Placeholder extends WidgetType {\n constructor(content) {\n super();\n this.content = content;\n }\n toDOM(view) {\n let wrap = document.createElement(\"span\");\n wrap.className = \"cm-placeholder\";\n wrap.style.pointerEvents = \"none\";\n wrap.appendChild(typeof this.content == \"string\" ? document.createTextNode(this.content) :\n typeof this.content == \"function\" ? this.content(view) :\n this.content.cloneNode(true));\n wrap.setAttribute(\"aria-hidden\", \"true\");\n return wrap;\n }\n coordsAt(dom) {\n let rects = dom.firstChild ? clientRectsFor(dom.firstChild) : [];\n if (!rects.length)\n return null;\n let style = window.getComputedStyle(dom.parentNode);\n let rect = flattenRect(rects[0], style.direction != \"rtl\");\n let lineHeight = parseInt(style.lineHeight);\n if (rect.bottom - rect.top > lineHeight * 1.5)\n return { left: rect.left, right: rect.right, top: rect.top, bottom: rect.top + lineHeight };\n return rect;\n }\n ignoreEvent() { return false; }\n}\n/**\nExtension that enables a placeholder—a piece of example content\nto show when the editor is empty.\n*/\nfunction placeholder(content) {\n let plugin = ViewPlugin.fromClass(class {\n constructor(view) {\n this.view = view;\n this.placeholder = content\n ? Decoration.set([Decoration.widget({ widget: new Placeholder(content), side: 1 }).range(0)])\n : Decoration.none;\n }\n get decorations() { return this.view.state.doc.length ? Decoration.none : this.placeholder; }\n }, { decorations: v => v.decorations });\n return typeof content == \"string\" ? [\n plugin, EditorView.contentAttributes.of({ \"aria-placeholder\": content })\n ] : plugin;\n}\n\n// Don't compute precise column positions for line offsets above this\n// (since it could get expensive). Assume offset==column for them.\nconst MaxOff = 2000;\nfunction rectangleFor(state, a, b) {\n let startLine = Math.min(a.line, b.line), endLine = Math.max(a.line, b.line);\n let ranges = [];\n if (a.off > MaxOff || b.off > MaxOff || a.col < 0 || b.col < 0) {\n let startOff = Math.min(a.off, b.off), endOff = Math.max(a.off, b.off);\n for (let i = startLine; i <= endLine; i++) {\n let line = state.doc.line(i);\n if (line.length <= endOff)\n ranges.push(EditorSelection.range(line.from + startOff, line.to + endOff));\n }\n }\n else {\n let startCol = Math.min(a.col, b.col), endCol = Math.max(a.col, b.col);\n for (let i = startLine; i <= endLine; i++) {\n let line = state.doc.line(i);\n let start = findColumn(line.text, startCol, state.tabSize, true);\n if (start < 0) {\n ranges.push(EditorSelection.cursor(line.to));\n }\n else {\n let end = findColumn(line.text, endCol, state.tabSize);\n ranges.push(EditorSelection.range(line.from + start, line.from + end));\n }\n }\n }\n return ranges;\n}\nfunction absoluteColumn(view, x) {\n let ref = view.coordsAtPos(view.viewport.from);\n return ref ? Math.round(Math.abs((ref.left - x) / view.defaultCharacterWidth)) : -1;\n}\nfunction getPos(view, event) {\n let offset = view.posAtCoords({ x: event.clientX, y: event.clientY }, false);\n let line = view.state.doc.lineAt(offset), off = offset - line.from;\n let col = off > MaxOff ? -1\n : off == line.length ? absoluteColumn(view, event.clientX)\n : countColumn(line.text, view.state.tabSize, offset - line.from);\n return { line: line.number, col, off };\n}\nfunction rectangleSelectionStyle(view, event) {\n let start = getPos(view, event), startSel = view.state.selection;\n if (!start)\n return null;\n return {\n update(update) {\n if (update.docChanged) {\n let newStart = update.changes.mapPos(update.startState.doc.line(start.line).from);\n let newLine = update.state.doc.lineAt(newStart);\n start = { line: newLine.number, col: start.col, off: Math.min(start.off, newLine.length) };\n startSel = startSel.map(update.changes);\n }\n },\n get(event, _extend, multiple) {\n let cur = getPos(view, event);\n if (!cur)\n return startSel;\n let ranges = rectangleFor(view.state, start, cur);\n if (!ranges.length)\n return startSel;\n if (multiple)\n return EditorSelection.create(ranges.concat(startSel.ranges));\n else\n return EditorSelection.create(ranges);\n }\n };\n}\n/**\nCreate an extension that enables rectangular selections. By\ndefault, it will react to left mouse drag with the Alt key held\ndown. When such a selection occurs, the text within the rectangle\nthat was dragged over will be selected, as one selection\n[range](https://codemirror.net/6/docs/ref/#state.SelectionRange) per line.\n*/\nfunction rectangularSelection(options) {\n let filter = (options === null || options === void 0 ? void 0 : options.eventFilter) || (e => e.altKey && e.button == 0);\n return EditorView.mouseSelectionStyle.of((view, event) => filter(event) ? rectangleSelectionStyle(view, event) : null);\n}\nconst keys = {\n Alt: [18, e => !!e.altKey],\n Control: [17, e => !!e.ctrlKey],\n Shift: [16, e => !!e.shiftKey],\n Meta: [91, e => !!e.metaKey]\n};\nconst showCrosshair = { style: \"cursor: crosshair\" };\n/**\nReturns an extension that turns the pointer cursor into a\ncrosshair when a given modifier key, defaulting to Alt, is held\ndown. Can serve as a visual hint that rectangular selection is\ngoing to happen when paired with\n[`rectangularSelection`](https://codemirror.net/6/docs/ref/#view.rectangularSelection).\n*/\nfunction crosshairCursor(options = {}) {\n let [code, getter] = keys[options.key || \"Alt\"];\n let plugin = ViewPlugin.fromClass(class {\n constructor(view) {\n this.view = view;\n this.isDown = false;\n }\n set(isDown) {\n if (this.isDown != isDown) {\n this.isDown = isDown;\n this.view.update([]);\n }\n }\n }, {\n eventObservers: {\n keydown(e) {\n this.set(e.keyCode == code || getter(e));\n },\n keyup(e) {\n if (e.keyCode == code || !getter(e))\n this.set(false);\n },\n mousemove(e) {\n this.set(getter(e));\n }\n }\n });\n return [\n plugin,\n EditorView.contentAttributes.of(view => { var _a; return ((_a = view.plugin(plugin)) === null || _a === void 0 ? void 0 : _a.isDown) ? showCrosshair : null; })\n ];\n}\n\nconst Outside = \"-10000px\";\nclass TooltipViewManager {\n constructor(view, facet, createTooltipView, removeTooltipView) {\n this.facet = facet;\n this.createTooltipView = createTooltipView;\n this.removeTooltipView = removeTooltipView;\n this.input = view.state.facet(facet);\n this.tooltips = this.input.filter(t => t);\n let prev = null;\n this.tooltipViews = this.tooltips.map(t => prev = createTooltipView(t, prev));\n }\n update(update, above) {\n var _a;\n let input = update.state.facet(this.facet);\n let tooltips = input.filter(x => x);\n if (input === this.input) {\n for (let t of this.tooltipViews)\n if (t.update)\n t.update(update);\n return false;\n }\n let tooltipViews = [], newAbove = above ? [] : null;\n for (let i = 0; i < tooltips.length; i++) {\n let tip = tooltips[i], known = -1;\n if (!tip)\n continue;\n for (let i = 0; i < this.tooltips.length; i++) {\n let other = this.tooltips[i];\n if (other && other.create == tip.create)\n known = i;\n }\n if (known < 0) {\n tooltipViews[i] = this.createTooltipView(tip, i ? tooltipViews[i - 1] : null);\n if (newAbove)\n newAbove[i] = !!tip.above;\n }\n else {\n let tooltipView = tooltipViews[i] = this.tooltipViews[known];\n if (newAbove)\n newAbove[i] = above[known];\n if (tooltipView.update)\n tooltipView.update(update);\n }\n }\n for (let t of this.tooltipViews)\n if (tooltipViews.indexOf(t) < 0) {\n this.removeTooltipView(t);\n (_a = t.destroy) === null || _a === void 0 ? void 0 : _a.call(t);\n }\n if (above) {\n newAbove.forEach((val, i) => above[i] = val);\n above.length = newAbove.length;\n }\n this.input = input;\n this.tooltips = tooltips;\n this.tooltipViews = tooltipViews;\n return true;\n }\n}\n/**\nCreates an extension that configures tooltip behavior.\n*/\nfunction tooltips(config = {}) {\n return tooltipConfig.of(config);\n}\nfunction windowSpace(view) {\n let docElt = view.dom.ownerDocument.documentElement;\n return { top: 0, left: 0, bottom: docElt.clientHeight, right: docElt.clientWidth };\n}\nconst tooltipConfig = /*@__PURE__*/Facet.define({\n combine: values => {\n var _a, _b, _c;\n return ({\n position: browser.ios ? \"absolute\" : ((_a = values.find(conf => conf.position)) === null || _a === void 0 ? void 0 : _a.position) || \"fixed\",\n parent: ((_b = values.find(conf => conf.parent)) === null || _b === void 0 ? void 0 : _b.parent) || null,\n tooltipSpace: ((_c = values.find(conf => conf.tooltipSpace)) === null || _c === void 0 ? void 0 : _c.tooltipSpace) || windowSpace,\n });\n }\n});\nconst knownHeight = /*@__PURE__*/new WeakMap();\nconst tooltipPlugin = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.view = view;\n this.above = [];\n this.inView = true;\n this.madeAbsolute = false;\n this.lastTransaction = 0;\n this.measureTimeout = -1;\n let config = view.state.facet(tooltipConfig);\n this.position = config.position;\n this.parent = config.parent;\n this.classes = view.themeClasses;\n this.createContainer();\n this.measureReq = { read: this.readMeasure.bind(this), write: this.writeMeasure.bind(this), key: this };\n this.resizeObserver = typeof ResizeObserver == \"function\" ? new ResizeObserver(() => this.measureSoon()) : null;\n this.manager = new TooltipViewManager(view, showTooltip, (t, p) => this.createTooltip(t, p), t => {\n if (this.resizeObserver)\n this.resizeObserver.unobserve(t.dom);\n t.dom.remove();\n });\n this.above = this.manager.tooltips.map(t => !!t.above);\n this.intersectionObserver = typeof IntersectionObserver == \"function\" ? new IntersectionObserver(entries => {\n if (Date.now() > this.lastTransaction - 50 &&\n entries.length > 0 && entries[entries.length - 1].intersectionRatio < 1)\n this.measureSoon();\n }, { threshold: [1] }) : null;\n this.observeIntersection();\n view.win.addEventListener(\"resize\", this.measureSoon = this.measureSoon.bind(this));\n this.maybeMeasure();\n }\n createContainer() {\n if (this.parent) {\n this.container = document.createElement(\"div\");\n this.container.style.position = \"relative\";\n this.container.className = this.view.themeClasses;\n this.parent.appendChild(this.container);\n }\n else {\n this.container = this.view.dom;\n }\n }\n observeIntersection() {\n if (this.intersectionObserver) {\n this.intersectionObserver.disconnect();\n for (let tooltip of this.manager.tooltipViews)\n this.intersectionObserver.observe(tooltip.dom);\n }\n }\n measureSoon() {\n if (this.measureTimeout < 0)\n this.measureTimeout = setTimeout(() => {\n this.measureTimeout = -1;\n this.maybeMeasure();\n }, 50);\n }\n update(update) {\n if (update.transactions.length)\n this.lastTransaction = Date.now();\n let updated = this.manager.update(update, this.above);\n if (updated)\n this.observeIntersection();\n let shouldMeasure = updated || update.geometryChanged;\n let newConfig = update.state.facet(tooltipConfig);\n if (newConfig.position != this.position && !this.madeAbsolute) {\n this.position = newConfig.position;\n for (let t of this.manager.tooltipViews)\n t.dom.style.position = this.position;\n shouldMeasure = true;\n }\n if (newConfig.parent != this.parent) {\n if (this.parent)\n this.container.remove();\n this.parent = newConfig.parent;\n this.createContainer();\n for (let t of this.manager.tooltipViews)\n this.container.appendChild(t.dom);\n shouldMeasure = true;\n }\n else if (this.parent && this.view.themeClasses != this.classes) {\n this.classes = this.container.className = this.view.themeClasses;\n }\n if (shouldMeasure)\n this.maybeMeasure();\n }\n createTooltip(tooltip, prev) {\n let tooltipView = tooltip.create(this.view);\n let before = prev ? prev.dom : null;\n tooltipView.dom.classList.add(\"cm-tooltip\");\n if (tooltip.arrow && !tooltipView.dom.querySelector(\".cm-tooltip > .cm-tooltip-arrow\")) {\n let arrow = document.createElement(\"div\");\n arrow.className = \"cm-tooltip-arrow\";\n tooltipView.dom.appendChild(arrow);\n }\n tooltipView.dom.style.position = this.position;\n tooltipView.dom.style.top = Outside;\n tooltipView.dom.style.left = \"0px\";\n this.container.insertBefore(tooltipView.dom, before);\n if (tooltipView.mount)\n tooltipView.mount(this.view);\n if (this.resizeObserver)\n this.resizeObserver.observe(tooltipView.dom);\n return tooltipView;\n }\n destroy() {\n var _a, _b, _c;\n this.view.win.removeEventListener(\"resize\", this.measureSoon);\n for (let tooltipView of this.manager.tooltipViews) {\n tooltipView.dom.remove();\n (_a = tooltipView.destroy) === null || _a === void 0 ? void 0 : _a.call(tooltipView);\n }\n if (this.parent)\n this.container.remove();\n (_b = this.resizeObserver) === null || _b === void 0 ? void 0 : _b.disconnect();\n (_c = this.intersectionObserver) === null || _c === void 0 ? void 0 : _c.disconnect();\n clearTimeout(this.measureTimeout);\n }\n readMeasure() {\n let scaleX = 1, scaleY = 1, makeAbsolute = false;\n if (this.position == \"fixed\" && this.manager.tooltipViews.length) {\n let { dom } = this.manager.tooltipViews[0];\n if (browser.safari) {\n // Safari always sets offsetParent to null, even if a fixed\n // element is positioned relative to a transformed parent. So\n // we use this kludge to try and detect this.\n let rect = dom.getBoundingClientRect();\n makeAbsolute = Math.abs(rect.top + 10000) > 1 || Math.abs(rect.left) > 1;\n }\n else {\n // More conforming browsers will set offsetParent to the\n // transformed element.\n makeAbsolute = !!dom.offsetParent && dom.offsetParent != this.container.ownerDocument.body;\n }\n }\n if (makeAbsolute || this.position == \"absolute\") {\n if (this.parent) {\n let rect = this.parent.getBoundingClientRect();\n if (rect.width && rect.height) {\n scaleX = rect.width / this.parent.offsetWidth;\n scaleY = rect.height / this.parent.offsetHeight;\n }\n }\n else {\n ({ scaleX, scaleY } = this.view.viewState);\n }\n }\n let visible = this.view.scrollDOM.getBoundingClientRect(), margins = getScrollMargins(this.view);\n return {\n visible: {\n left: visible.left + margins.left, top: visible.top + margins.top,\n right: visible.right - margins.right, bottom: visible.bottom - margins.bottom\n },\n parent: this.parent ? this.container.getBoundingClientRect() : this.view.dom.getBoundingClientRect(),\n pos: this.manager.tooltips.map((t, i) => {\n let tv = this.manager.tooltipViews[i];\n return tv.getCoords ? tv.getCoords(t.pos) : this.view.coordsAtPos(t.pos);\n }),\n size: this.manager.tooltipViews.map(({ dom }) => dom.getBoundingClientRect()),\n space: this.view.state.facet(tooltipConfig).tooltipSpace(this.view),\n scaleX, scaleY, makeAbsolute\n };\n }\n writeMeasure(measured) {\n var _a;\n if (measured.makeAbsolute) {\n this.madeAbsolute = true;\n this.position = \"absolute\";\n for (let t of this.manager.tooltipViews)\n t.dom.style.position = \"absolute\";\n }\n let { visible, space, scaleX, scaleY } = measured;\n let others = [];\n for (let i = 0; i < this.manager.tooltips.length; i++) {\n let tooltip = this.manager.tooltips[i], tView = this.manager.tooltipViews[i], { dom } = tView;\n let pos = measured.pos[i], size = measured.size[i];\n // Hide tooltips that are outside of the editor.\n if (!pos || tooltip.clip !== false && (pos.bottom <= Math.max(visible.top, space.top) ||\n pos.top >= Math.min(visible.bottom, space.bottom) ||\n pos.right < Math.max(visible.left, space.left) - .1 ||\n pos.left > Math.min(visible.right, space.right) + .1)) {\n dom.style.top = Outside;\n continue;\n }\n let arrow = tooltip.arrow ? tView.dom.querySelector(\".cm-tooltip-arrow\") : null;\n let arrowHeight = arrow ? 7 /* Arrow.Size */ : 0;\n let width = size.right - size.left, height = (_a = knownHeight.get(tView)) !== null && _a !== void 0 ? _a : size.bottom - size.top;\n let offset = tView.offset || noOffset, ltr = this.view.textDirection == Direction.LTR;\n let left = size.width > space.right - space.left\n ? (ltr ? space.left : space.right - size.width)\n : ltr ? Math.max(space.left, Math.min(pos.left - (arrow ? 14 /* Arrow.Offset */ : 0) + offset.x, space.right - width))\n : Math.min(Math.max(space.left, pos.left - width + (arrow ? 14 /* Arrow.Offset */ : 0) - offset.x), space.right - width);\n let above = this.above[i];\n if (!tooltip.strictSide && (above\n ? pos.top - height - arrowHeight - offset.y < space.top\n : pos.bottom + height + arrowHeight + offset.y > space.bottom) &&\n above == (space.bottom - pos.bottom > pos.top - space.top))\n above = this.above[i] = !above;\n let spaceVert = (above ? pos.top - space.top : space.bottom - pos.bottom) - arrowHeight;\n if (spaceVert < height && tView.resize !== false) {\n if (spaceVert < this.view.defaultLineHeight) {\n dom.style.top = Outside;\n continue;\n }\n knownHeight.set(tView, height);\n dom.style.height = (height = spaceVert) / scaleY + \"px\";\n }\n else if (dom.style.height) {\n dom.style.height = \"\";\n }\n let top = above ? pos.top - height - arrowHeight - offset.y : pos.bottom + arrowHeight + offset.y;\n let right = left + width;\n if (tView.overlap !== true)\n for (let r of others)\n if (r.left < right && r.right > left && r.top < top + height && r.bottom > top)\n top = above ? r.top - height - 2 - arrowHeight : r.bottom + arrowHeight + 2;\n if (this.position == \"absolute\") {\n dom.style.top = (top - measured.parent.top) / scaleY + \"px\";\n setLeftStyle(dom, (left - measured.parent.left) / scaleX);\n }\n else {\n dom.style.top = top / scaleY + \"px\";\n setLeftStyle(dom, left / scaleX);\n }\n if (arrow) {\n let arrowLeft = pos.left + (ltr ? offset.x : -offset.x) - (left + 14 /* Arrow.Offset */ - 7 /* Arrow.Size */);\n arrow.style.left = arrowLeft / scaleX + \"px\";\n }\n if (tView.overlap !== true)\n others.push({ left, top, right, bottom: top + height });\n dom.classList.toggle(\"cm-tooltip-above\", above);\n dom.classList.toggle(\"cm-tooltip-below\", !above);\n if (tView.positioned)\n tView.positioned(measured.space);\n }\n }\n maybeMeasure() {\n if (this.manager.tooltips.length) {\n if (this.view.inView)\n this.view.requestMeasure(this.measureReq);\n if (this.inView != this.view.inView) {\n this.inView = this.view.inView;\n if (!this.inView)\n for (let tv of this.manager.tooltipViews)\n tv.dom.style.top = Outside;\n }\n }\n }\n}, {\n eventObservers: {\n scroll() { this.maybeMeasure(); }\n }\n});\nfunction setLeftStyle(elt, value) {\n let current = parseInt(elt.style.left, 10);\n if (isNaN(current) || Math.abs(value - current) > 1)\n elt.style.left = value + \"px\";\n}\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-tooltip\": {\n zIndex: 500,\n boxSizing: \"border-box\"\n },\n \"&light .cm-tooltip\": {\n border: \"1px solid #bbb\",\n backgroundColor: \"#f5f5f5\"\n },\n \"&light .cm-tooltip-section:not(:first-child)\": {\n borderTop: \"1px solid #bbb\",\n },\n \"&dark .cm-tooltip\": {\n backgroundColor: \"#333338\",\n color: \"white\"\n },\n \".cm-tooltip-arrow\": {\n height: `${7 /* Arrow.Size */}px`,\n width: `${7 /* Arrow.Size */ * 2}px`,\n position: \"absolute\",\n zIndex: -1,\n overflow: \"hidden\",\n \"&:before, &:after\": {\n content: \"''\",\n position: \"absolute\",\n width: 0,\n height: 0,\n borderLeft: `${7 /* Arrow.Size */}px solid transparent`,\n borderRight: `${7 /* Arrow.Size */}px solid transparent`,\n },\n \".cm-tooltip-above &\": {\n bottom: `-${7 /* Arrow.Size */}px`,\n \"&:before\": {\n borderTop: `${7 /* Arrow.Size */}px solid #bbb`,\n },\n \"&:after\": {\n borderTop: `${7 /* Arrow.Size */}px solid #f5f5f5`,\n bottom: \"1px\"\n }\n },\n \".cm-tooltip-below &\": {\n top: `-${7 /* Arrow.Size */}px`,\n \"&:before\": {\n borderBottom: `${7 /* Arrow.Size */}px solid #bbb`,\n },\n \"&:after\": {\n borderBottom: `${7 /* Arrow.Size */}px solid #f5f5f5`,\n top: \"1px\"\n }\n },\n },\n \"&dark .cm-tooltip .cm-tooltip-arrow\": {\n \"&:before\": {\n borderTopColor: \"#333338\",\n borderBottomColor: \"#333338\"\n },\n \"&:after\": {\n borderTopColor: \"transparent\",\n borderBottomColor: \"transparent\"\n }\n }\n});\nconst noOffset = { x: 0, y: 0 };\n/**\nFacet to which an extension can add a value to show a tooltip.\n*/\nconst showTooltip = /*@__PURE__*/Facet.define({\n enables: [tooltipPlugin, baseTheme]\n});\nconst showHoverTooltip = /*@__PURE__*/Facet.define({\n combine: inputs => inputs.reduce((a, i) => a.concat(i), [])\n});\nclass HoverTooltipHost {\n // Needs to be static so that host tooltip instances always match\n static create(view) {\n return new HoverTooltipHost(view);\n }\n constructor(view) {\n this.view = view;\n this.mounted = false;\n this.dom = document.createElement(\"div\");\n this.dom.classList.add(\"cm-tooltip-hover\");\n this.manager = new TooltipViewManager(view, showHoverTooltip, (t, p) => this.createHostedView(t, p), t => t.dom.remove());\n }\n createHostedView(tooltip, prev) {\n let hostedView = tooltip.create(this.view);\n hostedView.dom.classList.add(\"cm-tooltip-section\");\n this.dom.insertBefore(hostedView.dom, prev ? prev.dom.nextSibling : this.dom.firstChild);\n if (this.mounted && hostedView.mount)\n hostedView.mount(this.view);\n return hostedView;\n }\n mount(view) {\n for (let hostedView of this.manager.tooltipViews) {\n if (hostedView.mount)\n hostedView.mount(view);\n }\n this.mounted = true;\n }\n positioned(space) {\n for (let hostedView of this.manager.tooltipViews) {\n if (hostedView.positioned)\n hostedView.positioned(space);\n }\n }\n update(update) {\n this.manager.update(update);\n }\n destroy() {\n var _a;\n for (let t of this.manager.tooltipViews)\n (_a = t.destroy) === null || _a === void 0 ? void 0 : _a.call(t);\n }\n passProp(name) {\n let value = undefined;\n for (let view of this.manager.tooltipViews) {\n let given = view[name];\n if (given !== undefined) {\n if (value === undefined)\n value = given;\n else if (value !== given)\n return undefined;\n }\n }\n return value;\n }\n get offset() { return this.passProp(\"offset\"); }\n get getCoords() { return this.passProp(\"getCoords\"); }\n get overlap() { return this.passProp(\"overlap\"); }\n get resize() { return this.passProp(\"resize\"); }\n}\nconst showHoverTooltipHost = /*@__PURE__*/showTooltip.compute([showHoverTooltip], state => {\n let tooltips = state.facet(showHoverTooltip);\n if (tooltips.length === 0)\n return null;\n return {\n pos: Math.min(...tooltips.map(t => t.pos)),\n end: Math.max(...tooltips.map(t => { var _a; return (_a = t.end) !== null && _a !== void 0 ? _a : t.pos; })),\n create: HoverTooltipHost.create,\n above: tooltips[0].above,\n arrow: tooltips.some(t => t.arrow),\n };\n});\nclass HoverPlugin {\n constructor(view, source, field, setHover, hoverTime) {\n this.view = view;\n this.source = source;\n this.field = field;\n this.setHover = setHover;\n this.hoverTime = hoverTime;\n this.hoverTimeout = -1;\n this.restartTimeout = -1;\n this.pending = null;\n this.lastMove = { x: 0, y: 0, target: view.dom, time: 0 };\n this.checkHover = this.checkHover.bind(this);\n view.dom.addEventListener(\"mouseleave\", this.mouseleave = this.mouseleave.bind(this));\n view.dom.addEventListener(\"mousemove\", this.mousemove = this.mousemove.bind(this));\n }\n update() {\n if (this.pending) {\n this.pending = null;\n clearTimeout(this.restartTimeout);\n this.restartTimeout = setTimeout(() => this.startHover(), 20);\n }\n }\n get active() {\n return this.view.state.field(this.field);\n }\n checkHover() {\n this.hoverTimeout = -1;\n if (this.active.length)\n return;\n let hovered = Date.now() - this.lastMove.time;\n if (hovered < this.hoverTime)\n this.hoverTimeout = setTimeout(this.checkHover, this.hoverTime - hovered);\n else\n this.startHover();\n }\n startHover() {\n clearTimeout(this.restartTimeout);\n let { view, lastMove } = this;\n let tile = view.docView.tile.nearest(lastMove.target);\n if (!tile)\n return;\n let pos, side = 1;\n if (tile.isWidget()) {\n pos = tile.posAtStart;\n }\n else {\n pos = view.posAtCoords(lastMove);\n if (pos == null)\n return;\n let posCoords = view.coordsAtPos(pos);\n if (!posCoords ||\n lastMove.y < posCoords.top || lastMove.y > posCoords.bottom ||\n lastMove.x < posCoords.left - view.defaultCharacterWidth ||\n lastMove.x > posCoords.right + view.defaultCharacterWidth)\n return;\n let bidi = view.bidiSpans(view.state.doc.lineAt(pos)).find(s => s.from <= pos && s.to >= pos);\n let rtl = bidi && bidi.dir == Direction.RTL ? -1 : 1;\n side = (lastMove.x < posCoords.left ? -rtl : rtl);\n }\n let open = this.source(view, pos, side);\n if (open === null || open === void 0 ? void 0 : open.then) {\n let pending = this.pending = { pos };\n open.then(result => {\n if (this.pending == pending) {\n this.pending = null;\n if (result && !(Array.isArray(result) && !result.length))\n view.dispatch({ effects: this.setHover.of(Array.isArray(result) ? result : [result]) });\n }\n }, e => logException(view.state, e, \"hover tooltip\"));\n }\n else if (open && !(Array.isArray(open) && !open.length)) {\n view.dispatch({ effects: this.setHover.of(Array.isArray(open) ? open : [open]) });\n }\n }\n get tooltip() {\n let plugin = this.view.plugin(tooltipPlugin);\n let index = plugin ? plugin.manager.tooltips.findIndex(t => t.create == HoverTooltipHost.create) : -1;\n return index > -1 ? plugin.manager.tooltipViews[index] : null;\n }\n mousemove(event) {\n var _a, _b;\n this.lastMove = { x: event.clientX, y: event.clientY, target: event.target, time: Date.now() };\n if (this.hoverTimeout < 0)\n this.hoverTimeout = setTimeout(this.checkHover, this.hoverTime);\n let { active, tooltip } = this;\n if (active.length && tooltip && !isInTooltip(tooltip.dom, event) || this.pending) {\n let { pos } = active[0] || this.pending, end = (_b = (_a = active[0]) === null || _a === void 0 ? void 0 : _a.end) !== null && _b !== void 0 ? _b : pos;\n if ((pos == end ? this.view.posAtCoords(this.lastMove) != pos\n : !isOverRange(this.view, pos, end, event.clientX, event.clientY))) {\n this.view.dispatch({ effects: this.setHover.of([]) });\n this.pending = null;\n }\n }\n }\n mouseleave(event) {\n clearTimeout(this.hoverTimeout);\n this.hoverTimeout = -1;\n let { active } = this;\n if (active.length) {\n let { tooltip } = this;\n let inTooltip = tooltip && tooltip.dom.contains(event.relatedTarget);\n if (!inTooltip)\n this.view.dispatch({ effects: this.setHover.of([]) });\n else\n this.watchTooltipLeave(tooltip.dom);\n }\n }\n watchTooltipLeave(tooltip) {\n let watch = (event) => {\n tooltip.removeEventListener(\"mouseleave\", watch);\n if (this.active.length && !this.view.dom.contains(event.relatedTarget))\n this.view.dispatch({ effects: this.setHover.of([]) });\n };\n tooltip.addEventListener(\"mouseleave\", watch);\n }\n destroy() {\n clearTimeout(this.hoverTimeout);\n clearTimeout(this.restartTimeout);\n this.view.dom.removeEventListener(\"mouseleave\", this.mouseleave);\n this.view.dom.removeEventListener(\"mousemove\", this.mousemove);\n }\n}\nconst tooltipMargin = 4;\nfunction isInTooltip(tooltip, event) {\n let { left, right, top, bottom } = tooltip.getBoundingClientRect(), arrow;\n if (arrow = tooltip.querySelector(\".cm-tooltip-arrow\")) {\n let arrowRect = arrow.getBoundingClientRect();\n top = Math.min(arrowRect.top, top);\n bottom = Math.max(arrowRect.bottom, bottom);\n }\n return event.clientX >= left - tooltipMargin && event.clientX <= right + tooltipMargin &&\n event.clientY >= top - tooltipMargin && event.clientY <= bottom + tooltipMargin;\n}\nfunction isOverRange(view, from, to, x, y, margin) {\n let rect = view.scrollDOM.getBoundingClientRect();\n let docBottom = view.documentTop + view.documentPadding.top + view.contentHeight;\n if (rect.left > x || rect.right < x || rect.top > y || Math.min(rect.bottom, docBottom) < y)\n return false;\n let pos = view.posAtCoords({ x, y }, false);\n return pos >= from && pos <= to;\n}\n/**\nSet up a hover tooltip, which shows up when the pointer hovers\nover ranges of text. The callback is called when the mouse hovers\nover the document text. It should, if there is a tooltip\nassociated with position `pos`, return the tooltip description\n(either directly or in a promise). The `side` argument indicates\non which side of the position the pointer is—it will be -1 if the\npointer is before the position, 1 if after the position.\n\nNote that all hover tooltips are hosted within a single tooltip\ncontainer element. This allows multiple tooltips over the same\nrange to be \"merged\" together without overlapping.\n\nThe return value is a valid [editor extension](https://codemirror.net/6/docs/ref/#state.Extension)\nbut also provides an `active` property holding a state field that\ncan be used to read the currently active tooltips produced by this\nextension.\n*/\nfunction hoverTooltip(source, options = {}) {\n let setHover = StateEffect.define();\n let hoverState = StateField.define({\n create() { return []; },\n update(value, tr) {\n if (value.length) {\n if (options.hideOnChange && (tr.docChanged || tr.selection))\n value = [];\n else if (options.hideOn)\n value = value.filter(v => !options.hideOn(tr, v));\n if (tr.docChanged) {\n let mapped = [];\n for (let tooltip of value) {\n let newPos = tr.changes.mapPos(tooltip.pos, -1, MapMode.TrackDel);\n if (newPos != null) {\n let copy = Object.assign(Object.create(null), tooltip);\n copy.pos = newPos;\n if (copy.end != null)\n copy.end = tr.changes.mapPos(copy.end);\n mapped.push(copy);\n }\n }\n value = mapped;\n }\n }\n for (let effect of tr.effects) {\n if (effect.is(setHover))\n value = effect.value;\n if (effect.is(closeHoverTooltipEffect))\n value = [];\n }\n return value;\n },\n provide: f => showHoverTooltip.from(f)\n });\n return {\n active: hoverState,\n extension: [\n hoverState,\n ViewPlugin.define(view => new HoverPlugin(view, source, hoverState, setHover, options.hoverTime || 300 /* Hover.Time */)),\n showHoverTooltipHost\n ]\n };\n}\n/**\nGet the active tooltip view for a given tooltip, if available.\n*/\nfunction getTooltip(view, tooltip) {\n let plugin = view.plugin(tooltipPlugin);\n if (!plugin)\n return null;\n let found = plugin.manager.tooltips.indexOf(tooltip);\n return found < 0 ? null : plugin.manager.tooltipViews[found];\n}\n/**\nReturns true if any hover tooltips are currently active.\n*/\nfunction hasHoverTooltips(state) {\n return state.facet(showHoverTooltip).some(x => x);\n}\nconst closeHoverTooltipEffect = /*@__PURE__*/StateEffect.define();\n/**\nTransaction effect that closes all hover tooltips.\n*/\nconst closeHoverTooltips = /*@__PURE__*/closeHoverTooltipEffect.of(null);\n/**\nTell the tooltip extension to recompute the position of the active\ntooltips. This can be useful when something happens (such as a\nre-positioning or CSS change affecting the editor) that could\ninvalidate the existing tooltip positions.\n*/\nfunction repositionTooltips(view) {\n let plugin = view.plugin(tooltipPlugin);\n if (plugin)\n plugin.maybeMeasure();\n}\n\nconst panelConfig = /*@__PURE__*/Facet.define({\n combine(configs) {\n let topContainer, bottomContainer;\n for (let c of configs) {\n topContainer = topContainer || c.topContainer;\n bottomContainer = bottomContainer || c.bottomContainer;\n }\n return { topContainer, bottomContainer };\n }\n});\n/**\nConfigures the panel-managing extension.\n*/\nfunction panels(config) {\n return config ? [panelConfig.of(config)] : [];\n}\n/**\nGet the active panel created by the given constructor, if any.\nThis can be useful when you need access to your panels' DOM\nstructure.\n*/\nfunction getPanel(view, panel) {\n let plugin = view.plugin(panelPlugin);\n let index = plugin ? plugin.specs.indexOf(panel) : -1;\n return index > -1 ? plugin.panels[index] : null;\n}\nconst panelPlugin = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.input = view.state.facet(showPanel);\n this.specs = this.input.filter(s => s);\n this.panels = this.specs.map(spec => spec(view));\n let conf = view.state.facet(panelConfig);\n this.top = new PanelGroup(view, true, conf.topContainer);\n this.bottom = new PanelGroup(view, false, conf.bottomContainer);\n this.top.sync(this.panels.filter(p => p.top));\n this.bottom.sync(this.panels.filter(p => !p.top));\n for (let p of this.panels) {\n p.dom.classList.add(\"cm-panel\");\n if (p.mount)\n p.mount();\n }\n }\n update(update) {\n let conf = update.state.facet(panelConfig);\n if (this.top.container != conf.topContainer) {\n this.top.sync([]);\n this.top = new PanelGroup(update.view, true, conf.topContainer);\n }\n if (this.bottom.container != conf.bottomContainer) {\n this.bottom.sync([]);\n this.bottom = new PanelGroup(update.view, false, conf.bottomContainer);\n }\n this.top.syncClasses();\n this.bottom.syncClasses();\n let input = update.state.facet(showPanel);\n if (input != this.input) {\n let specs = input.filter(x => x);\n let panels = [], top = [], bottom = [], mount = [];\n for (let spec of specs) {\n let known = this.specs.indexOf(spec), panel;\n if (known < 0) {\n panel = spec(update.view);\n mount.push(panel);\n }\n else {\n panel = this.panels[known];\n if (panel.update)\n panel.update(update);\n }\n panels.push(panel);\n (panel.top ? top : bottom).push(panel);\n }\n this.specs = specs;\n this.panels = panels;\n this.top.sync(top);\n this.bottom.sync(bottom);\n for (let p of mount) {\n p.dom.classList.add(\"cm-panel\");\n if (p.mount)\n p.mount();\n }\n }\n else {\n for (let p of this.panels)\n if (p.update)\n p.update(update);\n }\n }\n destroy() {\n this.top.sync([]);\n this.bottom.sync([]);\n }\n}, {\n provide: plugin => EditorView.scrollMargins.of(view => {\n let value = view.plugin(plugin);\n return value && { top: value.top.scrollMargin(), bottom: value.bottom.scrollMargin() };\n })\n});\nclass PanelGroup {\n constructor(view, top, container) {\n this.view = view;\n this.top = top;\n this.container = container;\n this.dom = undefined;\n this.classes = \"\";\n this.panels = [];\n this.syncClasses();\n }\n sync(panels) {\n for (let p of this.panels)\n if (p.destroy && panels.indexOf(p) < 0)\n p.destroy();\n this.panels = panels;\n this.syncDOM();\n }\n syncDOM() {\n if (this.panels.length == 0) {\n if (this.dom) {\n this.dom.remove();\n this.dom = undefined;\n }\n return;\n }\n if (!this.dom) {\n this.dom = document.createElement(\"div\");\n this.dom.className = this.top ? \"cm-panels cm-panels-top\" : \"cm-panels cm-panels-bottom\";\n this.dom.style[this.top ? \"top\" : \"bottom\"] = \"0\";\n let parent = this.container || this.view.dom;\n parent.insertBefore(this.dom, this.top ? parent.firstChild : null);\n }\n let curDOM = this.dom.firstChild;\n for (let panel of this.panels) {\n if (panel.dom.parentNode == this.dom) {\n while (curDOM != panel.dom)\n curDOM = rm(curDOM);\n curDOM = curDOM.nextSibling;\n }\n else {\n this.dom.insertBefore(panel.dom, curDOM);\n }\n }\n while (curDOM)\n curDOM = rm(curDOM);\n }\n scrollMargin() {\n return !this.dom || this.container ? 0\n : Math.max(0, this.top ?\n this.dom.getBoundingClientRect().bottom - Math.max(0, this.view.scrollDOM.getBoundingClientRect().top) :\n Math.min(innerHeight, this.view.scrollDOM.getBoundingClientRect().bottom) - this.dom.getBoundingClientRect().top);\n }\n syncClasses() {\n if (!this.container || this.classes == this.view.themeClasses)\n return;\n for (let cls of this.classes.split(\" \"))\n if (cls)\n this.container.classList.remove(cls);\n for (let cls of (this.classes = this.view.themeClasses).split(\" \"))\n if (cls)\n this.container.classList.add(cls);\n }\n}\nfunction rm(node) {\n let next = node.nextSibling;\n node.remove();\n return next;\n}\n/**\nOpening a panel is done by providing a constructor function for\nthe panel through this facet. (The panel is closed again when its\nconstructor is no longer provided.) Values of `null` are ignored.\n*/\nconst showPanel = /*@__PURE__*/Facet.define({\n enables: panelPlugin\n});\n\n/**\nShow a panel above or below the editor to show the user a message\nor prompt them for input. Returns an effect that can be dispatched\nto close the dialog, and a promise that resolves when the dialog\nis closed or a form inside of it is submitted.\n\nYou are encouraged, if your handling of the result of the promise\ndispatches a transaction, to include the `close` effect in it. If\nyou don't, this function will automatically dispatch a separate\ntransaction right after.\n*/\nfunction showDialog(view, config) {\n let resolve;\n let promise = new Promise(r => resolve = r);\n let panelCtor = (view) => createDialog(view, config, resolve);\n if (view.state.field(dialogField, false)) {\n view.dispatch({ effects: openDialogEffect.of(panelCtor) });\n }\n else {\n view.dispatch({ effects: StateEffect.appendConfig.of(dialogField.init(() => [panelCtor])) });\n }\n let close = closeDialogEffect.of(panelCtor);\n return { close, result: promise.then(form => {\n let queue = view.win.queueMicrotask || ((f) => view.win.setTimeout(f, 10));\n queue(() => {\n if (view.state.field(dialogField).indexOf(panelCtor) > -1)\n view.dispatch({ effects: close });\n });\n return form;\n }) };\n}\n/**\nFind the [`Panel`](https://codemirror.net/6/docs/ref/#view.Panel) for an open dialog, using a class\nname as identifier.\n*/\nfunction getDialog(view, className) {\n let dialogs = view.state.field(dialogField, false) || [];\n for (let open of dialogs) {\n let panel = getPanel(view, open);\n if (panel && panel.dom.classList.contains(className))\n return panel;\n }\n return null;\n}\nconst dialogField = /*@__PURE__*/StateField.define({\n create() { return []; },\n update(dialogs, tr) {\n for (let e of tr.effects) {\n if (e.is(openDialogEffect))\n dialogs = [e.value].concat(dialogs);\n else if (e.is(closeDialogEffect))\n dialogs = dialogs.filter(d => d != e.value);\n }\n return dialogs;\n },\n provide: f => showPanel.computeN([f], state => state.field(f))\n});\nconst openDialogEffect = /*@__PURE__*/StateEffect.define();\nconst closeDialogEffect = /*@__PURE__*/StateEffect.define();\nfunction createDialog(view, config, result) {\n let content = config.content ? config.content(view, () => done(null)) : null;\n if (!content) {\n content = elt(\"form\");\n if (config.input) {\n let input = elt(\"input\", config.input);\n if (/^(text|password|number|email|tel|url)$/.test(input.type))\n input.classList.add(\"cm-textfield\");\n if (!input.name)\n input.name = \"input\";\n content.appendChild(elt(\"label\", (config.label || \"\") + \": \", input));\n }\n else {\n content.appendChild(document.createTextNode(config.label || \"\"));\n }\n content.appendChild(document.createTextNode(\" \"));\n content.appendChild(elt(\"button\", { class: \"cm-button\", type: \"submit\" }, config.submitLabel || \"OK\"));\n }\n let forms = content.nodeName == \"FORM\" ? [content] : content.querySelectorAll(\"form\");\n for (let i = 0; i < forms.length; i++) {\n let form = forms[i];\n form.addEventListener(\"keydown\", (event) => {\n if (event.keyCode == 27) { // Escape\n event.preventDefault();\n done(null);\n }\n else if (event.keyCode == 13) { // Enter\n event.preventDefault();\n done(form);\n }\n });\n form.addEventListener(\"submit\", (event) => {\n event.preventDefault();\n done(form);\n });\n }\n let panel = elt(\"div\", content, elt(\"button\", {\n onclick: () => done(null),\n \"aria-label\": view.state.phrase(\"close\"),\n class: \"cm-dialog-close\",\n type: \"button\"\n }, [\"×\"]));\n if (config.class)\n panel.className = config.class;\n panel.classList.add(\"cm-dialog\");\n function done(form) {\n if (panel.contains(panel.ownerDocument.activeElement))\n view.focus();\n result(form);\n }\n return {\n dom: panel,\n top: config.top,\n mount: () => {\n if (config.focus) {\n let focus;\n if (typeof config.focus == \"string\")\n focus = content.querySelector(config.focus);\n else\n focus = content.querySelector(\"input\") || content.querySelector(\"button\");\n if (focus && \"select\" in focus)\n focus.select();\n else if (focus && \"focus\" in focus)\n focus.focus();\n }\n }\n };\n}\n\n/**\nA gutter marker represents a bit of information attached to a line\nin a specific gutter. Your own custom markers have to extend this\nclass.\n*/\nclass GutterMarker extends RangeValue {\n /**\n @internal\n */\n compare(other) {\n return this == other || this.constructor == other.constructor && this.eq(other);\n }\n /**\n Compare this marker to another marker of the same type.\n */\n eq(other) { return false; }\n /**\n Called if the marker has a `toDOM` method and its representation\n was removed from a gutter.\n */\n destroy(dom) { }\n}\nGutterMarker.prototype.elementClass = \"\";\nGutterMarker.prototype.toDOM = undefined;\nGutterMarker.prototype.mapMode = MapMode.TrackBefore;\nGutterMarker.prototype.startSide = GutterMarker.prototype.endSide = -1;\nGutterMarker.prototype.point = true;\n/**\nFacet used to add a class to all gutter elements for a given line.\nMarkers given to this facet should _only_ define an\n[`elementclass`](https://codemirror.net/6/docs/ref/#view.GutterMarker.elementClass), not a\n[`toDOM`](https://codemirror.net/6/docs/ref/#view.GutterMarker.toDOM) (or the marker will appear\nin all gutters for the line).\n*/\nconst gutterLineClass = /*@__PURE__*/Facet.define();\n/**\nFacet used to add a class to all gutter elements next to a widget.\nShould not provide widgets with a `toDOM` method.\n*/\nconst gutterWidgetClass = /*@__PURE__*/Facet.define();\nconst defaults = {\n class: \"\",\n renderEmptyElements: false,\n elementStyle: \"\",\n markers: () => RangeSet.empty,\n lineMarker: () => null,\n widgetMarker: () => null,\n lineMarkerChange: null,\n initialSpacer: null,\n updateSpacer: null,\n domEventHandlers: {},\n side: \"before\"\n};\nconst activeGutters = /*@__PURE__*/Facet.define();\n/**\nDefine an editor gutter. The order in which the gutters appear is\ndetermined by their extension priority.\n*/\nfunction gutter(config) {\n return [gutters(), activeGutters.of({ ...defaults, ...config })];\n}\nconst unfixGutters = /*@__PURE__*/Facet.define({\n combine: values => values.some(x => x)\n});\n/**\nThe gutter-drawing plugin is automatically enabled when you add a\ngutter, but you can use this function to explicitly configure it.\n\nUnless `fixed` is explicitly set to `false`, the gutters are\nfixed, meaning they don't scroll along with the content\nhorizontally (except on Internet Explorer, which doesn't support\nCSS [`position:\nsticky`](https://developer.mozilla.org/en-US/docs/Web/CSS/position#sticky)).\n*/\nfunction gutters(config) {\n let result = [\n gutterView,\n ];\n if (config && config.fixed === false)\n result.push(unfixGutters.of(true));\n return result;\n}\nconst gutterView = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.view = view;\n this.domAfter = null;\n this.prevViewport = view.viewport;\n this.dom = document.createElement(\"div\");\n this.dom.className = \"cm-gutters cm-gutters-before\";\n this.dom.setAttribute(\"aria-hidden\", \"true\");\n this.dom.style.minHeight = (this.view.contentHeight / this.view.scaleY) + \"px\";\n this.gutters = view.state.facet(activeGutters).map(conf => new SingleGutterView(view, conf));\n this.fixed = !view.state.facet(unfixGutters);\n for (let gutter of this.gutters) {\n if (gutter.config.side == \"after\")\n this.getDOMAfter().appendChild(gutter.dom);\n else\n this.dom.appendChild(gutter.dom);\n }\n if (this.fixed) {\n // FIXME IE11 fallback, which doesn't support position: sticky,\n // by using position: relative + event handlers that realign the\n // gutter (or just force fixed=false on IE11?)\n this.dom.style.position = \"sticky\";\n }\n this.syncGutters(false);\n view.scrollDOM.insertBefore(this.dom, view.contentDOM);\n }\n getDOMAfter() {\n if (!this.domAfter) {\n this.domAfter = document.createElement(\"div\");\n this.domAfter.className = \"cm-gutters cm-gutters-after\";\n this.domAfter.setAttribute(\"aria-hidden\", \"true\");\n this.domAfter.style.minHeight = (this.view.contentHeight / this.view.scaleY) + \"px\";\n this.domAfter.style.position = this.fixed ? \"sticky\" : \"\";\n this.view.scrollDOM.appendChild(this.domAfter);\n }\n return this.domAfter;\n }\n update(update) {\n if (this.updateGutters(update)) {\n // Detach during sync when the viewport changed significantly\n // (such as during scrolling), since for large updates that is\n // faster.\n let vpA = this.prevViewport, vpB = update.view.viewport;\n let vpOverlap = Math.min(vpA.to, vpB.to) - Math.max(vpA.from, vpB.from);\n this.syncGutters(vpOverlap < (vpB.to - vpB.from) * 0.8);\n }\n if (update.geometryChanged) {\n let min = (this.view.contentHeight / this.view.scaleY) + \"px\";\n this.dom.style.minHeight = min;\n if (this.domAfter)\n this.domAfter.style.minHeight = min;\n }\n if (this.view.state.facet(unfixGutters) != !this.fixed) {\n this.fixed = !this.fixed;\n this.dom.style.position = this.fixed ? \"sticky\" : \"\";\n if (this.domAfter)\n this.domAfter.style.position = this.fixed ? \"sticky\" : \"\";\n }\n this.prevViewport = update.view.viewport;\n }\n syncGutters(detach) {\n let after = this.dom.nextSibling;\n if (detach) {\n this.dom.remove();\n if (this.domAfter)\n this.domAfter.remove();\n }\n let lineClasses = RangeSet.iter(this.view.state.facet(gutterLineClass), this.view.viewport.from);\n let classSet = [];\n let contexts = this.gutters.map(gutter => new UpdateContext(gutter, this.view.viewport, -this.view.documentPadding.top));\n for (let line of this.view.viewportLineBlocks) {\n if (classSet.length)\n classSet = [];\n if (Array.isArray(line.type)) {\n let first = true;\n for (let b of line.type) {\n if (b.type == BlockType.Text && first) {\n advanceCursor(lineClasses, classSet, b.from);\n for (let cx of contexts)\n cx.line(this.view, b, classSet);\n first = false;\n }\n else if (b.widget) {\n for (let cx of contexts)\n cx.widget(this.view, b);\n }\n }\n }\n else if (line.type == BlockType.Text) {\n advanceCursor(lineClasses, classSet, line.from);\n for (let cx of contexts)\n cx.line(this.view, line, classSet);\n }\n else if (line.widget) {\n for (let cx of contexts)\n cx.widget(this.view, line);\n }\n }\n for (let cx of contexts)\n cx.finish();\n if (detach) {\n this.view.scrollDOM.insertBefore(this.dom, after);\n if (this.domAfter)\n this.view.scrollDOM.appendChild(this.domAfter);\n }\n }\n updateGutters(update) {\n let prev = update.startState.facet(activeGutters), cur = update.state.facet(activeGutters);\n let change = update.docChanged || update.heightChanged || update.viewportChanged ||\n !RangeSet.eq(update.startState.facet(gutterLineClass), update.state.facet(gutterLineClass), update.view.viewport.from, update.view.viewport.to);\n if (prev == cur) {\n for (let gutter of this.gutters)\n if (gutter.update(update))\n change = true;\n }\n else {\n change = true;\n let gutters = [];\n for (let conf of cur) {\n let known = prev.indexOf(conf);\n if (known < 0) {\n gutters.push(new SingleGutterView(this.view, conf));\n }\n else {\n this.gutters[known].update(update);\n gutters.push(this.gutters[known]);\n }\n }\n for (let g of this.gutters) {\n g.dom.remove();\n if (gutters.indexOf(g) < 0)\n g.destroy();\n }\n for (let g of gutters) {\n if (g.config.side == \"after\")\n this.getDOMAfter().appendChild(g.dom);\n else\n this.dom.appendChild(g.dom);\n }\n this.gutters = gutters;\n }\n return change;\n }\n destroy() {\n for (let view of this.gutters)\n view.destroy();\n this.dom.remove();\n if (this.domAfter)\n this.domAfter.remove();\n }\n}, {\n provide: plugin => EditorView.scrollMargins.of(view => {\n let value = view.plugin(plugin);\n if (!value || value.gutters.length == 0 || !value.fixed)\n return null;\n let before = value.dom.offsetWidth * view.scaleX, after = value.domAfter ? value.domAfter.offsetWidth * view.scaleX : 0;\n return view.textDirection == Direction.LTR\n ? { left: before, right: after }\n : { right: before, left: after };\n })\n});\nfunction asArray(val) { return (Array.isArray(val) ? val : [val]); }\nfunction advanceCursor(cursor, collect, pos) {\n while (cursor.value && cursor.from <= pos) {\n if (cursor.from == pos)\n collect.push(cursor.value);\n cursor.next();\n }\n}\nclass UpdateContext {\n constructor(gutter, viewport, height) {\n this.gutter = gutter;\n this.height = height;\n this.i = 0;\n this.cursor = RangeSet.iter(gutter.markers, viewport.from);\n }\n addElement(view, block, markers) {\n let { gutter } = this, above = (block.top - this.height) / view.scaleY, height = block.height / view.scaleY;\n if (this.i == gutter.elements.length) {\n let newElt = new GutterElement(view, height, above, markers);\n gutter.elements.push(newElt);\n gutter.dom.appendChild(newElt.dom);\n }\n else {\n gutter.elements[this.i].update(view, height, above, markers);\n }\n this.height = block.bottom;\n this.i++;\n }\n line(view, line, extraMarkers) {\n let localMarkers = [];\n advanceCursor(this.cursor, localMarkers, line.from);\n if (extraMarkers.length)\n localMarkers = localMarkers.concat(extraMarkers);\n let forLine = this.gutter.config.lineMarker(view, line, localMarkers);\n if (forLine)\n localMarkers.unshift(forLine);\n let gutter = this.gutter;\n if (localMarkers.length == 0 && !gutter.config.renderEmptyElements)\n return;\n this.addElement(view, line, localMarkers);\n }\n widget(view, block) {\n let marker = this.gutter.config.widgetMarker(view, block.widget, block), markers = marker ? [marker] : null;\n for (let cls of view.state.facet(gutterWidgetClass)) {\n let marker = cls(view, block.widget, block);\n if (marker)\n (markers || (markers = [])).push(marker);\n }\n if (markers)\n this.addElement(view, block, markers);\n }\n finish() {\n let gutter = this.gutter;\n while (gutter.elements.length > this.i) {\n let last = gutter.elements.pop();\n gutter.dom.removeChild(last.dom);\n last.destroy();\n }\n }\n}\nclass SingleGutterView {\n constructor(view, config) {\n this.view = view;\n this.config = config;\n this.elements = [];\n this.spacer = null;\n this.dom = document.createElement(\"div\");\n this.dom.className = \"cm-gutter\" + (this.config.class ? \" \" + this.config.class : \"\");\n for (let prop in config.domEventHandlers) {\n this.dom.addEventListener(prop, (event) => {\n let target = event.target, y;\n if (target != this.dom && this.dom.contains(target)) {\n while (target.parentNode != this.dom)\n target = target.parentNode;\n let rect = target.getBoundingClientRect();\n y = (rect.top + rect.bottom) / 2;\n }\n else {\n y = event.clientY;\n }\n let line = view.lineBlockAtHeight(y - view.documentTop);\n if (config.domEventHandlers[prop](view, line, event))\n event.preventDefault();\n });\n }\n this.markers = asArray(config.markers(view));\n if (config.initialSpacer) {\n this.spacer = new GutterElement(view, 0, 0, [config.initialSpacer(view)]);\n this.dom.appendChild(this.spacer.dom);\n this.spacer.dom.style.cssText += \"visibility: hidden; pointer-events: none\";\n }\n }\n update(update) {\n let prevMarkers = this.markers;\n this.markers = asArray(this.config.markers(update.view));\n if (this.spacer && this.config.updateSpacer) {\n let updated = this.config.updateSpacer(this.spacer.markers[0], update);\n if (updated != this.spacer.markers[0])\n this.spacer.update(update.view, 0, 0, [updated]);\n }\n let vp = update.view.viewport;\n return !RangeSet.eq(this.markers, prevMarkers, vp.from, vp.to) ||\n (this.config.lineMarkerChange ? this.config.lineMarkerChange(update) : false);\n }\n destroy() {\n for (let elt of this.elements)\n elt.destroy();\n }\n}\nclass GutterElement {\n constructor(view, height, above, markers) {\n this.height = -1;\n this.above = 0;\n this.markers = [];\n this.dom = document.createElement(\"div\");\n this.dom.className = \"cm-gutterElement\";\n this.update(view, height, above, markers);\n }\n update(view, height, above, markers) {\n if (this.height != height) {\n this.height = height;\n this.dom.style.height = height + \"px\";\n }\n if (this.above != above)\n this.dom.style.marginTop = (this.above = above) ? above + \"px\" : \"\";\n if (!sameMarkers(this.markers, markers))\n this.setMarkers(view, markers);\n }\n setMarkers(view, markers) {\n let cls = \"cm-gutterElement\", domPos = this.dom.firstChild;\n for (let iNew = 0, iOld = 0;;) {\n let skipTo = iOld, marker = iNew < markers.length ? markers[iNew++] : null, matched = false;\n if (marker) {\n let c = marker.elementClass;\n if (c)\n cls += \" \" + c;\n for (let i = iOld; i < this.markers.length; i++)\n if (this.markers[i].compare(marker)) {\n skipTo = i;\n matched = true;\n break;\n }\n }\n else {\n skipTo = this.markers.length;\n }\n while (iOld < skipTo) {\n let next = this.markers[iOld++];\n if (next.toDOM) {\n next.destroy(domPos);\n let after = domPos.nextSibling;\n domPos.remove();\n domPos = after;\n }\n }\n if (!marker)\n break;\n if (marker.toDOM) {\n if (matched)\n domPos = domPos.nextSibling;\n else\n this.dom.insertBefore(marker.toDOM(view), domPos);\n }\n if (matched)\n iOld++;\n }\n this.dom.className = cls;\n this.markers = markers;\n }\n destroy() {\n this.setMarkers(null, []); // First argument not used unless creating markers\n }\n}\nfunction sameMarkers(a, b) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!a[i].compare(b[i]))\n return false;\n return true;\n}\n/**\nFacet used to provide markers to the line number gutter.\n*/\nconst lineNumberMarkers = /*@__PURE__*/Facet.define();\n/**\nFacet used to create markers in the line number gutter next to widgets.\n*/\nconst lineNumberWidgetMarker = /*@__PURE__*/Facet.define();\nconst lineNumberConfig = /*@__PURE__*/Facet.define({\n combine(values) {\n return combineConfig(values, { formatNumber: String, domEventHandlers: {} }, {\n domEventHandlers(a, b) {\n let result = Object.assign({}, a);\n for (let event in b) {\n let exists = result[event], add = b[event];\n result[event] = exists ? (view, line, event) => exists(view, line, event) || add(view, line, event) : add;\n }\n return result;\n }\n });\n }\n});\nclass NumberMarker extends GutterMarker {\n constructor(number) {\n super();\n this.number = number;\n }\n eq(other) { return this.number == other.number; }\n toDOM() { return document.createTextNode(this.number); }\n}\nfunction formatNumber(view, number) {\n return view.state.facet(lineNumberConfig).formatNumber(number, view.state);\n}\nconst lineNumberGutter = /*@__PURE__*/activeGutters.compute([lineNumberConfig], state => ({\n class: \"cm-lineNumbers\",\n renderEmptyElements: false,\n markers(view) { return view.state.facet(lineNumberMarkers); },\n lineMarker(view, line, others) {\n if (others.some(m => m.toDOM))\n return null;\n return new NumberMarker(formatNumber(view, view.state.doc.lineAt(line.from).number));\n },\n widgetMarker: (view, widget, block) => {\n for (let m of view.state.facet(lineNumberWidgetMarker)) {\n let result = m(view, widget, block);\n if (result)\n return result;\n }\n return null;\n },\n lineMarkerChange: update => update.startState.facet(lineNumberConfig) != update.state.facet(lineNumberConfig),\n initialSpacer(view) {\n return new NumberMarker(formatNumber(view, maxLineNumber(view.state.doc.lines)));\n },\n updateSpacer(spacer, update) {\n let max = formatNumber(update.view, maxLineNumber(update.view.state.doc.lines));\n return max == spacer.number ? spacer : new NumberMarker(max);\n },\n domEventHandlers: state.facet(lineNumberConfig).domEventHandlers,\n side: \"before\"\n}));\n/**\nCreate a line number gutter extension.\n*/\nfunction lineNumbers(config = {}) {\n return [\n lineNumberConfig.of(config),\n gutters(),\n lineNumberGutter\n ];\n}\nfunction maxLineNumber(lines) {\n let last = 9;\n while (last < lines)\n last = last * 10 + 9;\n return last;\n}\nconst activeLineGutterMarker = /*@__PURE__*/new class extends GutterMarker {\n constructor() {\n super(...arguments);\n this.elementClass = \"cm-activeLineGutter\";\n }\n};\nconst activeLineGutterHighlighter = /*@__PURE__*/gutterLineClass.compute([\"selection\"], state => {\n let marks = [], last = -1;\n for (let range of state.selection.ranges) {\n let linePos = state.doc.lineAt(range.head).from;\n if (linePos > last) {\n last = linePos;\n marks.push(activeLineGutterMarker.range(linePos));\n }\n }\n return RangeSet.of(marks);\n});\n/**\nReturns an extension that adds a `cm-activeLineGutter` class to\nall gutter elements on the [active\nline](https://codemirror.net/6/docs/ref/#view.highlightActiveLine).\n*/\nfunction highlightActiveLineGutter() {\n return activeLineGutterHighlighter;\n}\n\nfunction matcher(decorator) {\n return ViewPlugin.define(view => ({\n decorations: decorator.createDeco(view),\n update(u) {\n this.decorations = decorator.updateDeco(u, this.decorations);\n },\n }), {\n decorations: v => v.decorations\n });\n}\nconst tabDeco = /*@__PURE__*/Decoration.mark({ class: \"cm-highlightTab\" });\nconst spaceDeco = /*@__PURE__*/Decoration.mark({ class: \"cm-highlightSpace\" });\nconst whitespaceHighlighter = /*@__PURE__*/matcher(/*@__PURE__*/new MatchDecorator({\n regexp: /\\t| /g,\n decoration: match => match[0] == \"\\t\" ? tabDeco : spaceDeco,\n boundary: /\\S/,\n}));\n/**\nReturns an extension that highlights whitespace, adding a\n`cm-highlightSpace` class to stretches of spaces, and a\n`cm-highlightTab` class to individual tab characters. By default,\nthe former are shown as faint dots, and the latter as arrows.\n*/\nfunction highlightWhitespace() {\n return whitespaceHighlighter;\n}\nconst trailingHighlighter = /*@__PURE__*/matcher(/*@__PURE__*/new MatchDecorator({\n regexp: /\\s+$/g,\n decoration: /*@__PURE__*/Decoration.mark({ class: \"cm-trailingSpace\" })\n}));\n/**\nReturns an extension that adds a `cm-trailingSpace` class to all\ntrailing whitespace.\n*/\nfunction highlightTrailingWhitespace() {\n return trailingHighlighter;\n}\n\n/**\n@internal\n*/\nconst __test = { HeightMap, HeightOracle, MeasuredHeights, QueryType, ChangedRange, computeOrder,\n moveVisually, clearHeightChangeFlag, getHeightChangeFlag: () => heightChangeFlag };\n\nexport { BidiSpan, BlockInfo, BlockType, BlockWrapper, Decoration, Direction, EditorView, GutterMarker, MatchDecorator, RectangleMarker, ViewPlugin, ViewUpdate, WidgetType, __test, closeHoverTooltips, crosshairCursor, drawSelection, dropCursor, getDialog, getDrawSelectionConfig, getPanel, getTooltip, gutter, gutterLineClass, gutterWidgetClass, gutters, hasHoverTooltips, highlightActiveLine, highlightActiveLineGutter, highlightSpecialChars, highlightTrailingWhitespace, highlightWhitespace, hoverTooltip, keymap, layer, lineNumberMarkers, lineNumberWidgetMarker, lineNumbers, logException, panels, placeholder, rectangularSelection, repositionTooltips, runScopeHandlers, scrollPastEnd, showDialog, showPanel, showTooltip, tooltips };\n","/**\nThe default maximum length of a `TreeBuffer` node.\n*/\nconst DefaultBufferLength = 1024;\nlet nextPropID = 0;\nclass Range {\n constructor(from, to) {\n this.from = from;\n this.to = to;\n }\n}\n/**\nEach [node type](#common.NodeType) or [individual tree](#common.Tree)\ncan have metadata associated with it in props. Instances of this\nclass represent prop names.\n*/\nclass NodeProp {\n /**\n Create a new node prop type.\n */\n constructor(config = {}) {\n this.id = nextPropID++;\n this.perNode = !!config.perNode;\n this.deserialize = config.deserialize || (() => {\n throw new Error(\"This node type doesn't define a deserialize function\");\n });\n this.combine = config.combine || null;\n }\n /**\n This is meant to be used with\n [`NodeSet.extend`](#common.NodeSet.extend) or\n [`LRParser.configure`](#lr.ParserConfig.props) to compute\n prop values for each node type in the set. Takes a [match\n object](#common.NodeType^match) or function that returns undefined\n if the node type doesn't get this prop, and the prop's value if\n it does.\n */\n add(match) {\n if (this.perNode)\n throw new RangeError(\"Can't add per-node props to node types\");\n if (typeof match != \"function\")\n match = NodeType.match(match);\n return (type) => {\n let result = match(type);\n return result === undefined ? null : [this, result];\n };\n }\n}\n/**\nProp that is used to describe matching delimiters. For opening\ndelimiters, this holds an array of node names (written as a\nspace-separated string when declaring this prop in a grammar)\nfor the node types of closing delimiters that match it.\n*/\nNodeProp.closedBy = new NodeProp({ deserialize: str => str.split(\" \") });\n/**\nThe inverse of [`closedBy`](#common.NodeProp^closedBy). This is\nattached to closing delimiters, holding an array of node names\nof types of matching opening delimiters.\n*/\nNodeProp.openedBy = new NodeProp({ deserialize: str => str.split(\" \") });\n/**\nUsed to assign node types to groups (for example, all node\ntypes that represent an expression could be tagged with an\n`\"Expression\"` group).\n*/\nNodeProp.group = new NodeProp({ deserialize: str => str.split(\" \") });\n/**\nAttached to nodes to indicate these should be\n[displayed](https://codemirror.net/docs/ref/#language.syntaxTree)\nin a bidirectional text isolate, so that direction-neutral\ncharacters on their sides don't incorrectly get associated with\nsurrounding text. You'll generally want to set this for nodes\nthat contain arbitrary text, like strings and comments, and for\nnodes that appear _inside_ arbitrary text, like HTML tags. When\nnot given a value, in a grammar declaration, defaults to\n`\"auto\"`.\n*/\nNodeProp.isolate = new NodeProp({ deserialize: value => {\n if (value && value != \"rtl\" && value != \"ltr\" && value != \"auto\")\n throw new RangeError(\"Invalid value for isolate: \" + value);\n return value || \"auto\";\n } });\n/**\nThe hash of the [context](#lr.ContextTracker.constructor)\nthat the node was parsed in, if any. Used to limit reuse of\ncontextual nodes.\n*/\nNodeProp.contextHash = new NodeProp({ perNode: true });\n/**\nThe distance beyond the end of the node that the tokenizer\nlooked ahead for any of the tokens inside the node. (The LR\nparser only stores this when it is larger than 25, for\nefficiency reasons.)\n*/\nNodeProp.lookAhead = new NodeProp({ perNode: true });\n/**\nThis per-node prop is used to replace a given node, or part of a\nnode, with another tree. This is useful to include trees from\ndifferent languages in mixed-language parsers.\n*/\nNodeProp.mounted = new NodeProp({ perNode: true });\n/**\nA mounted tree, which can be [stored](#common.NodeProp^mounted) on\na tree node to indicate that parts of its content are\nrepresented by another tree.\n*/\nclass MountedTree {\n constructor(\n /**\n The inner tree.\n */\n tree, \n /**\n If this is null, this tree replaces the entire node (it will\n be included in the regular iteration instead of its host\n node). If not, only the given ranges are considered to be\n covered by this tree. This is used for trees that are mixed in\n a way that isn't strictly hierarchical. Such mounted trees are\n only entered by [`resolveInner`](#common.Tree.resolveInner)\n and [`enter`](#common.SyntaxNode.enter).\n */\n overlay, \n /**\n The parser used to create this subtree.\n */\n parser, \n /**\n [Indicates](#common.IterMode.EnterBracketed) that the nested\n content is delineated with some kind\n of bracket token.\n */\n bracketed = false) {\n this.tree = tree;\n this.overlay = overlay;\n this.parser = parser;\n this.bracketed = bracketed;\n }\n /**\n @internal\n */\n static get(tree) {\n return tree && tree.props && tree.props[NodeProp.mounted.id];\n }\n}\nconst noProps = Object.create(null);\n/**\nEach node in a syntax tree has a node type associated with it.\n*/\nclass NodeType {\n /**\n @internal\n */\n constructor(\n /**\n The name of the node type. Not necessarily unique, but if the\n grammar was written properly, different node types with the\n same name within a node set should play the same semantic\n role.\n */\n name, \n /**\n @internal\n */\n props, \n /**\n The id of this node in its set. Corresponds to the term ids\n used in the parser.\n */\n id, \n /**\n @internal\n */\n flags = 0) {\n this.name = name;\n this.props = props;\n this.id = id;\n this.flags = flags;\n }\n /**\n Define a node type.\n */\n static define(spec) {\n let props = spec.props && spec.props.length ? Object.create(null) : noProps;\n let flags = (spec.top ? 1 /* NodeFlag.Top */ : 0) | (spec.skipped ? 2 /* NodeFlag.Skipped */ : 0) |\n (spec.error ? 4 /* NodeFlag.Error */ : 0) | (spec.name == null ? 8 /* NodeFlag.Anonymous */ : 0);\n let type = new NodeType(spec.name || \"\", props, spec.id, flags);\n if (spec.props)\n for (let src of spec.props) {\n if (!Array.isArray(src))\n src = src(type);\n if (src) {\n if (src[0].perNode)\n throw new RangeError(\"Can't store a per-node prop on a node type\");\n props[src[0].id] = src[1];\n }\n }\n return type;\n }\n /**\n Retrieves a node prop for this type. Will return `undefined` if\n the prop isn't present on this node.\n */\n prop(prop) { return this.props[prop.id]; }\n /**\n True when this is the top node of a grammar.\n */\n get isTop() { return (this.flags & 1 /* NodeFlag.Top */) > 0; }\n /**\n True when this node is produced by a skip rule.\n */\n get isSkipped() { return (this.flags & 2 /* NodeFlag.Skipped */) > 0; }\n /**\n Indicates whether this is an error node.\n */\n get isError() { return (this.flags & 4 /* NodeFlag.Error */) > 0; }\n /**\n When true, this node type doesn't correspond to a user-declared\n named node, for example because it is used to cache repetition.\n */\n get isAnonymous() { return (this.flags & 8 /* NodeFlag.Anonymous */) > 0; }\n /**\n Returns true when this node's name or one of its\n [groups](#common.NodeProp^group) matches the given string.\n */\n is(name) {\n if (typeof name == 'string') {\n if (this.name == name)\n return true;\n let group = this.prop(NodeProp.group);\n return group ? group.indexOf(name) > -1 : false;\n }\n return this.id == name;\n }\n /**\n Create a function from node types to arbitrary values by\n specifying an object whose property names are node or\n [group](#common.NodeProp^group) names. Often useful with\n [`NodeProp.add`](#common.NodeProp.add). You can put multiple\n names, separated by spaces, in a single property name to map\n multiple node names to a single value.\n */\n static match(map) {\n let direct = Object.create(null);\n for (let prop in map)\n for (let name of prop.split(\" \"))\n direct[name] = map[prop];\n return (node) => {\n for (let groups = node.prop(NodeProp.group), i = -1; i < (groups ? groups.length : 0); i++) {\n let found = direct[i < 0 ? node.name : groups[i]];\n if (found)\n return found;\n }\n };\n }\n}\n/**\nAn empty dummy node type to use when no actual type is available.\n*/\nNodeType.none = new NodeType(\"\", Object.create(null), 0, 8 /* NodeFlag.Anonymous */);\n/**\nA node set holds a collection of node types. It is used to\ncompactly represent trees by storing their type ids, rather than a\nfull pointer to the type object, in a numeric array. Each parser\n[has](#lr.LRParser.nodeSet) a node set, and [tree\nbuffers](#common.TreeBuffer) can only store collections of nodes\nfrom the same set. A set can have a maximum of 2**16 (65536) node\ntypes in it, so that the ids fit into 16-bit typed array slots.\n*/\nclass NodeSet {\n /**\n Create a set with the given types. The `id` property of each\n type should correspond to its position within the array.\n */\n constructor(\n /**\n The node types in this set, by id.\n */\n types) {\n this.types = types;\n for (let i = 0; i < types.length; i++)\n if (types[i].id != i)\n throw new RangeError(\"Node type ids should correspond to array positions when creating a node set\");\n }\n /**\n Create a copy of this set with some node properties added. The\n arguments to this method can be created with\n [`NodeProp.add`](#common.NodeProp.add).\n */\n extend(...props) {\n let newTypes = [];\n for (let type of this.types) {\n let newProps = null;\n for (let source of props) {\n let add = source(type);\n if (add) {\n if (!newProps)\n newProps = Object.assign({}, type.props);\n let value = add[1], prop = add[0];\n if (prop.combine && prop.id in newProps)\n value = prop.combine(newProps[prop.id], value);\n newProps[prop.id] = value;\n }\n }\n newTypes.push(newProps ? new NodeType(type.name, newProps, type.id, type.flags) : type);\n }\n return new NodeSet(newTypes);\n }\n}\nconst CachedNode = new WeakMap(), CachedInnerNode = new WeakMap();\n/**\nOptions that control iteration. Can be combined with the `|`\noperator to enable multiple ones.\n*/\nvar IterMode;\n(function (IterMode) {\n /**\n When enabled, iteration will only visit [`Tree`](#common.Tree)\n objects, not nodes packed into\n [`TreeBuffer`](#common.TreeBuffer)s.\n */\n IterMode[IterMode[\"ExcludeBuffers\"] = 1] = \"ExcludeBuffers\";\n /**\n Enable this to make iteration include anonymous nodes (such as\n the nodes that wrap repeated grammar constructs into a balanced\n tree).\n */\n IterMode[IterMode[\"IncludeAnonymous\"] = 2] = \"IncludeAnonymous\";\n /**\n By default, regular [mounted](#common.NodeProp^mounted) nodes\n replace their base node in iteration. Enable this to ignore them\n instead.\n */\n IterMode[IterMode[\"IgnoreMounts\"] = 4] = \"IgnoreMounts\";\n /**\n This option only applies in\n [`enter`](#common.SyntaxNode.enter)-style methods. It tells the\n library to not enter mounted overlays if one covers the given\n position.\n */\n IterMode[IterMode[\"IgnoreOverlays\"] = 8] = \"IgnoreOverlays\";\n /**\n When set, positions on the boundary of a mounted overlay tree\n that has its [`bracketed`](#common.NestedParse.bracketed) flag\n set will enter that tree regardless of side. Only supported in\n [`enter`](#common.SyntaxNode.enter), not in cursors.\n */\n IterMode[IterMode[\"EnterBracketed\"] = 16] = \"EnterBracketed\";\n})(IterMode || (IterMode = {}));\n/**\nA piece of syntax tree. There are two ways to approach these\ntrees: the way they are actually stored in memory, and the\nconvenient way.\n\nSyntax trees are stored as a tree of `Tree` and `TreeBuffer`\nobjects. By packing detail information into `TreeBuffer` leaf\nnodes, the representation is made a lot more memory-efficient.\n\nHowever, when you want to actually work with tree nodes, this\nrepresentation is very awkward, so most client code will want to\nuse the [`TreeCursor`](#common.TreeCursor) or\n[`SyntaxNode`](#common.SyntaxNode) interface instead, which provides\na view on some part of this data structure, and can be used to\nmove around to adjacent nodes.\n*/\nclass Tree {\n /**\n Construct a new tree. See also [`Tree.build`](#common.Tree^build).\n */\n constructor(\n /**\n The type of the top node.\n */\n type, \n /**\n This node's child nodes.\n */\n children, \n /**\n The positions (offsets relative to the start of this tree) of\n the children.\n */\n positions, \n /**\n The total length of this tree\n */\n length, \n /**\n Per-node [node props](#common.NodeProp) to associate with this node.\n */\n props) {\n this.type = type;\n this.children = children;\n this.positions = positions;\n this.length = length;\n /**\n @internal\n */\n this.props = null;\n if (props && props.length) {\n this.props = Object.create(null);\n for (let [prop, value] of props)\n this.props[typeof prop == \"number\" ? prop : prop.id] = value;\n }\n }\n /**\n @internal\n */\n toString() {\n let mounted = MountedTree.get(this);\n if (mounted && !mounted.overlay)\n return mounted.tree.toString();\n let children = \"\";\n for (let ch of this.children) {\n let str = ch.toString();\n if (str) {\n if (children)\n children += \",\";\n children += str;\n }\n }\n return !this.type.name ? children :\n (/\\W/.test(this.type.name) && !this.type.isError ? JSON.stringify(this.type.name) : this.type.name) +\n (children.length ? \"(\" + children + \")\" : \"\");\n }\n /**\n Get a [tree cursor](#common.TreeCursor) positioned at the top of\n the tree. Mode can be used to [control](#common.IterMode) which\n nodes the cursor visits.\n */\n cursor(mode = 0) {\n return new TreeCursor(this.topNode, mode);\n }\n /**\n Get a [tree cursor](#common.TreeCursor) pointing into this tree\n at the given position and side (see\n [`moveTo`](#common.TreeCursor.moveTo).\n */\n cursorAt(pos, side = 0, mode = 0) {\n let scope = CachedNode.get(this) || this.topNode;\n let cursor = new TreeCursor(scope);\n cursor.moveTo(pos, side);\n CachedNode.set(this, cursor._tree);\n return cursor;\n }\n /**\n Get a [syntax node](#common.SyntaxNode) object for the top of the\n tree.\n */\n get topNode() {\n return new TreeNode(this, 0, 0, null);\n }\n /**\n Get the [syntax node](#common.SyntaxNode) at the given position.\n If `side` is -1, this will move into nodes that end at the\n position. If 1, it'll move into nodes that start at the\n position. With 0, it'll only enter nodes that cover the position\n from both sides.\n \n Note that this will not enter\n [overlays](#common.MountedTree.overlay), and you often want\n [`resolveInner`](#common.Tree.resolveInner) instead.\n */\n resolve(pos, side = 0) {\n let node = resolveNode(CachedNode.get(this) || this.topNode, pos, side, false);\n CachedNode.set(this, node);\n return node;\n }\n /**\n Like [`resolve`](#common.Tree.resolve), but will enter\n [overlaid](#common.MountedTree.overlay) nodes, producing a syntax node\n pointing into the innermost overlaid tree at the given position\n (with parent links going through all parent structure, including\n the host trees).\n */\n resolveInner(pos, side = 0) {\n let node = resolveNode(CachedInnerNode.get(this) || this.topNode, pos, side, true);\n CachedInnerNode.set(this, node);\n return node;\n }\n /**\n In some situations, it can be useful to iterate through all\n nodes around a position, including those in overlays that don't\n directly cover the position. This method gives you an iterator\n that will produce all nodes, from small to big, around the given\n position.\n */\n resolveStack(pos, side = 0) {\n return stackIterator(this, pos, side);\n }\n /**\n Iterate over the tree and its children, calling `enter` for any\n node that touches the `from`/`to` region (if given) before\n running over such a node's children, and `leave` (if given) when\n leaving the node. When `enter` returns `false`, that node will\n not have its children iterated over (or `leave` called).\n */\n iterate(spec) {\n let { enter, leave, from = 0, to = this.length } = spec;\n let mode = spec.mode || 0, anon = (mode & IterMode.IncludeAnonymous) > 0;\n for (let c = this.cursor(mode | IterMode.IncludeAnonymous);;) {\n let entered = false;\n if (c.from <= to && c.to >= from && (!anon && c.type.isAnonymous || enter(c) !== false)) {\n if (c.firstChild())\n continue;\n entered = true;\n }\n for (;;) {\n if (entered && leave && (anon || !c.type.isAnonymous))\n leave(c);\n if (c.nextSibling())\n break;\n if (!c.parent())\n return;\n entered = true;\n }\n }\n }\n /**\n Get the value of the given [node prop](#common.NodeProp) for this\n node. Works with both per-node and per-type props.\n */\n prop(prop) {\n return !prop.perNode ? this.type.prop(prop) : this.props ? this.props[prop.id] : undefined;\n }\n /**\n Returns the node's [per-node props](#common.NodeProp.perNode) in a\n format that can be passed to the [`Tree`](#common.Tree)\n constructor.\n */\n get propValues() {\n let result = [];\n if (this.props)\n for (let id in this.props)\n result.push([+id, this.props[id]]);\n return result;\n }\n /**\n Balance the direct children of this tree, producing a copy of\n which may have children grouped into subtrees with type\n [`NodeType.none`](#common.NodeType^none).\n */\n balance(config = {}) {\n return this.children.length <= 8 /* Balance.BranchFactor */ ? this :\n balanceRange(NodeType.none, this.children, this.positions, 0, this.children.length, 0, this.length, (children, positions, length) => new Tree(this.type, children, positions, length, this.propValues), config.makeTree || ((children, positions, length) => new Tree(NodeType.none, children, positions, length)));\n }\n /**\n Build a tree from a postfix-ordered buffer of node information,\n or a cursor over such a buffer.\n */\n static build(data) { return buildTree(data); }\n}\n/**\nThe empty tree\n*/\nTree.empty = new Tree(NodeType.none, [], [], 0);\nclass FlatBufferCursor {\n constructor(buffer, index) {\n this.buffer = buffer;\n this.index = index;\n }\n get id() { return this.buffer[this.index - 4]; }\n get start() { return this.buffer[this.index - 3]; }\n get end() { return this.buffer[this.index - 2]; }\n get size() { return this.buffer[this.index - 1]; }\n get pos() { return this.index; }\n next() { this.index -= 4; }\n fork() { return new FlatBufferCursor(this.buffer, this.index); }\n}\n/**\nTree buffers contain (type, start, end, endIndex) quads for each\nnode. In such a buffer, nodes are stored in prefix order (parents\nbefore children, with the endIndex of the parent indicating which\nchildren belong to it).\n*/\nclass TreeBuffer {\n /**\n Create a tree buffer.\n */\n constructor(\n /**\n The buffer's content.\n */\n buffer, \n /**\n The total length of the group of nodes in the buffer.\n */\n length, \n /**\n The node set used in this buffer.\n */\n set) {\n this.buffer = buffer;\n this.length = length;\n this.set = set;\n }\n /**\n @internal\n */\n get type() { return NodeType.none; }\n /**\n @internal\n */\n toString() {\n let result = [];\n for (let index = 0; index < this.buffer.length;) {\n result.push(this.childString(index));\n index = this.buffer[index + 3];\n }\n return result.join(\",\");\n }\n /**\n @internal\n */\n childString(index) {\n let id = this.buffer[index], endIndex = this.buffer[index + 3];\n let type = this.set.types[id], result = type.name;\n if (/\\W/.test(result) && !type.isError)\n result = JSON.stringify(result);\n index += 4;\n if (endIndex == index)\n return result;\n let children = [];\n while (index < endIndex) {\n children.push(this.childString(index));\n index = this.buffer[index + 3];\n }\n return result + \"(\" + children.join(\",\") + \")\";\n }\n /**\n @internal\n */\n findChild(startIndex, endIndex, dir, pos, side) {\n let { buffer } = this, pick = -1;\n for (let i = startIndex; i != endIndex; i = buffer[i + 3]) {\n if (checkSide(side, pos, buffer[i + 1], buffer[i + 2])) {\n pick = i;\n if (dir > 0)\n break;\n }\n }\n return pick;\n }\n /**\n @internal\n */\n slice(startI, endI, from) {\n let b = this.buffer;\n let copy = new Uint16Array(endI - startI), len = 0;\n for (let i = startI, j = 0; i < endI;) {\n copy[j++] = b[i++];\n copy[j++] = b[i++] - from;\n let to = copy[j++] = b[i++] - from;\n copy[j++] = b[i++] - startI;\n len = Math.max(len, to);\n }\n return new TreeBuffer(copy, len, this.set);\n }\n}\nfunction checkSide(side, pos, from, to) {\n switch (side) {\n case -2 /* Side.Before */: return from < pos;\n case -1 /* Side.AtOrBefore */: return to >= pos && from < pos;\n case 0 /* Side.Around */: return from < pos && to > pos;\n case 1 /* Side.AtOrAfter */: return from <= pos && to > pos;\n case 2 /* Side.After */: return to > pos;\n case 4 /* Side.DontCare */: return true;\n }\n}\nfunction resolveNode(node, pos, side, overlays) {\n var _a;\n // Move up to a node that actually holds the position, if possible\n while (node.from == node.to ||\n (side < 1 ? node.from >= pos : node.from > pos) ||\n (side > -1 ? node.to <= pos : node.to < pos)) {\n let parent = !overlays && node instanceof TreeNode && node.index < 0 ? null : node.parent;\n if (!parent)\n return node;\n node = parent;\n }\n let mode = overlays ? 0 : IterMode.IgnoreOverlays;\n // Must go up out of overlays when those do not overlap with pos\n if (overlays)\n for (let scan = node, parent = scan.parent; parent; scan = parent, parent = scan.parent) {\n if (scan instanceof TreeNode && scan.index < 0 && ((_a = parent.enter(pos, side, mode)) === null || _a === void 0 ? void 0 : _a.from) != scan.from)\n node = parent;\n }\n for (;;) {\n let inner = node.enter(pos, side, mode);\n if (!inner)\n return node;\n node = inner;\n }\n}\nclass BaseNode {\n cursor(mode = 0) { return new TreeCursor(this, mode); }\n getChild(type, before = null, after = null) {\n let r = getChildren(this, type, before, after);\n return r.length ? r[0] : null;\n }\n getChildren(type, before = null, after = null) {\n return getChildren(this, type, before, after);\n }\n resolve(pos, side = 0) {\n return resolveNode(this, pos, side, false);\n }\n resolveInner(pos, side = 0) {\n return resolveNode(this, pos, side, true);\n }\n matchContext(context) {\n return matchNodeContext(this.parent, context);\n }\n enterUnfinishedNodesBefore(pos) {\n let scan = this.childBefore(pos), node = this;\n while (scan) {\n let last = scan.lastChild;\n if (!last || last.to != scan.to)\n break;\n if (last.type.isError && last.from == last.to) {\n node = scan;\n scan = last.prevSibling;\n }\n else {\n scan = last;\n }\n }\n return node;\n }\n get node() { return this; }\n get next() { return this.parent; }\n}\nclass TreeNode extends BaseNode {\n constructor(_tree, from, \n // Index in parent node, set to -1 if the node is not a direct child of _parent.node (overlay)\n index, _parent) {\n super();\n this._tree = _tree;\n this.from = from;\n this.index = index;\n this._parent = _parent;\n }\n get type() { return this._tree.type; }\n get name() { return this._tree.type.name; }\n get to() { return this.from + this._tree.length; }\n nextChild(i, dir, pos, side, mode = 0) {\n for (let parent = this;;) {\n for (let { children, positions } = parent._tree, e = dir > 0 ? children.length : -1; i != e; i += dir) {\n let next = children[i], start = positions[i] + parent.from, mounted;\n if (!((mode & IterMode.EnterBracketed) && next instanceof Tree &&\n (mounted = MountedTree.get(next)) && !mounted.overlay && mounted.bracketed &&\n pos >= start && pos <= start + next.length) &&\n !checkSide(side, pos, start, start + next.length))\n continue;\n if (next instanceof TreeBuffer) {\n if (mode & IterMode.ExcludeBuffers)\n continue;\n let index = next.findChild(0, next.buffer.length, dir, pos - start, side);\n if (index > -1)\n return new BufferNode(new BufferContext(parent, next, i, start), null, index);\n }\n else if ((mode & IterMode.IncludeAnonymous) || (!next.type.isAnonymous || hasChild(next))) {\n let mounted;\n if (!(mode & IterMode.IgnoreMounts) && (mounted = MountedTree.get(next)) && !mounted.overlay)\n return new TreeNode(mounted.tree, start, i, parent);\n let inner = new TreeNode(next, start, i, parent);\n return (mode & IterMode.IncludeAnonymous) || !inner.type.isAnonymous ? inner\n : inner.nextChild(dir < 0 ? next.children.length - 1 : 0, dir, pos, side, mode);\n }\n }\n if ((mode & IterMode.IncludeAnonymous) || !parent.type.isAnonymous)\n return null;\n if (parent.index >= 0)\n i = parent.index + dir;\n else\n i = dir < 0 ? -1 : parent._parent._tree.children.length;\n parent = parent._parent;\n if (!parent)\n return null;\n }\n }\n get firstChild() { return this.nextChild(0, 1, 0, 4 /* Side.DontCare */); }\n get lastChild() { return this.nextChild(this._tree.children.length - 1, -1, 0, 4 /* Side.DontCare */); }\n childAfter(pos) { return this.nextChild(0, 1, pos, 2 /* Side.After */); }\n childBefore(pos) { return this.nextChild(this._tree.children.length - 1, -1, pos, -2 /* Side.Before */); }\n prop(prop) { return this._tree.prop(prop); }\n enter(pos, side, mode = 0) {\n let mounted;\n if (!(mode & IterMode.IgnoreOverlays) && (mounted = MountedTree.get(this._tree)) && mounted.overlay) {\n let rPos = pos - this.from, enterBracketed = (mode & IterMode.EnterBracketed) && mounted.bracketed;\n for (let { from, to } of mounted.overlay) {\n if ((side > 0 || enterBracketed ? from <= rPos : from < rPos) &&\n (side < 0 || enterBracketed ? to >= rPos : to > rPos))\n return new TreeNode(mounted.tree, mounted.overlay[0].from + this.from, -1, this);\n }\n }\n return this.nextChild(0, 1, pos, side, mode);\n }\n nextSignificantParent() {\n let val = this;\n while (val.type.isAnonymous && val._parent)\n val = val._parent;\n return val;\n }\n get parent() {\n return this._parent ? this._parent.nextSignificantParent() : null;\n }\n get nextSibling() {\n return this._parent && this.index >= 0 ? this._parent.nextChild(this.index + 1, 1, 0, 4 /* Side.DontCare */) : null;\n }\n get prevSibling() {\n return this._parent && this.index >= 0 ? this._parent.nextChild(this.index - 1, -1, 0, 4 /* Side.DontCare */) : null;\n }\n get tree() { return this._tree; }\n toTree() { return this._tree; }\n /**\n @internal\n */\n toString() { return this._tree.toString(); }\n}\nfunction getChildren(node, type, before, after) {\n let cur = node.cursor(), result = [];\n if (!cur.firstChild())\n return result;\n if (before != null)\n for (let found = false; !found;) {\n found = cur.type.is(before);\n if (!cur.nextSibling())\n return result;\n }\n for (;;) {\n if (after != null && cur.type.is(after))\n return result;\n if (cur.type.is(type))\n result.push(cur.node);\n if (!cur.nextSibling())\n return after == null ? result : [];\n }\n}\nfunction matchNodeContext(node, context, i = context.length - 1) {\n for (let p = node; i >= 0; p = p.parent) {\n if (!p)\n return false;\n if (!p.type.isAnonymous) {\n if (context[i] && context[i] != p.name)\n return false;\n i--;\n }\n }\n return true;\n}\nclass BufferContext {\n constructor(parent, buffer, index, start) {\n this.parent = parent;\n this.buffer = buffer;\n this.index = index;\n this.start = start;\n }\n}\nclass BufferNode extends BaseNode {\n get name() { return this.type.name; }\n get from() { return this.context.start + this.context.buffer.buffer[this.index + 1]; }\n get to() { return this.context.start + this.context.buffer.buffer[this.index + 2]; }\n constructor(context, _parent, index) {\n super();\n this.context = context;\n this._parent = _parent;\n this.index = index;\n this.type = context.buffer.set.types[context.buffer.buffer[index]];\n }\n child(dir, pos, side) {\n let { buffer } = this.context;\n let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], dir, pos - this.context.start, side);\n return index < 0 ? null : new BufferNode(this.context, this, index);\n }\n get firstChild() { return this.child(1, 0, 4 /* Side.DontCare */); }\n get lastChild() { return this.child(-1, 0, 4 /* Side.DontCare */); }\n childAfter(pos) { return this.child(1, pos, 2 /* Side.After */); }\n childBefore(pos) { return this.child(-1, pos, -2 /* Side.Before */); }\n prop(prop) { return this.type.prop(prop); }\n enter(pos, side, mode = 0) {\n if (mode & IterMode.ExcludeBuffers)\n return null;\n let { buffer } = this.context;\n let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], side > 0 ? 1 : -1, pos - this.context.start, side);\n return index < 0 ? null : new BufferNode(this.context, this, index);\n }\n get parent() {\n return this._parent || this.context.parent.nextSignificantParent();\n }\n externalSibling(dir) {\n return this._parent ? null : this.context.parent.nextChild(this.context.index + dir, dir, 0, 4 /* Side.DontCare */);\n }\n get nextSibling() {\n let { buffer } = this.context;\n let after = buffer.buffer[this.index + 3];\n if (after < (this._parent ? buffer.buffer[this._parent.index + 3] : buffer.buffer.length))\n return new BufferNode(this.context, this._parent, after);\n return this.externalSibling(1);\n }\n get prevSibling() {\n let { buffer } = this.context;\n let parentStart = this._parent ? this._parent.index + 4 : 0;\n if (this.index == parentStart)\n return this.externalSibling(-1);\n return new BufferNode(this.context, this._parent, buffer.findChild(parentStart, this.index, -1, 0, 4 /* Side.DontCare */));\n }\n get tree() { return null; }\n toTree() {\n let children = [], positions = [];\n let { buffer } = this.context;\n let startI = this.index + 4, endI = buffer.buffer[this.index + 3];\n if (endI > startI) {\n let from = buffer.buffer[this.index + 1];\n children.push(buffer.slice(startI, endI, from));\n positions.push(0);\n }\n return new Tree(this.type, children, positions, this.to - this.from);\n }\n /**\n @internal\n */\n toString() { return this.context.buffer.childString(this.index); }\n}\nfunction iterStack(heads) {\n if (!heads.length)\n return null;\n let pick = 0, picked = heads[0];\n for (let i = 1; i < heads.length; i++) {\n let node = heads[i];\n if (node.from > picked.from || node.to < picked.to) {\n picked = node;\n pick = i;\n }\n }\n let next = picked instanceof TreeNode && picked.index < 0 ? null : picked.parent;\n let newHeads = heads.slice();\n if (next)\n newHeads[pick] = next;\n else\n newHeads.splice(pick, 1);\n return new StackIterator(newHeads, picked);\n}\nclass StackIterator {\n constructor(heads, node) {\n this.heads = heads;\n this.node = node;\n }\n get next() { return iterStack(this.heads); }\n}\nfunction stackIterator(tree, pos, side) {\n let inner = tree.resolveInner(pos, side), layers = null;\n for (let scan = inner instanceof TreeNode ? inner : inner.context.parent; scan; scan = scan.parent) {\n if (scan.index < 0) { // This is an overlay root\n let parent = scan.parent;\n (layers || (layers = [inner])).push(parent.resolve(pos, side));\n scan = parent;\n }\n else {\n let mount = MountedTree.get(scan.tree);\n // Relevant overlay branching off\n if (mount && mount.overlay && mount.overlay[0].from <= pos && mount.overlay[mount.overlay.length - 1].to >= pos) {\n let root = new TreeNode(mount.tree, mount.overlay[0].from + scan.from, -1, scan);\n (layers || (layers = [inner])).push(resolveNode(root, pos, side, false));\n }\n }\n }\n return layers ? iterStack(layers) : inner;\n}\n/**\nA tree cursor object focuses on a given node in a syntax tree, and\nallows you to move to adjacent nodes.\n*/\nclass TreeCursor {\n /**\n Shorthand for `.type.name`.\n */\n get name() { return this.type.name; }\n /**\n @internal\n */\n constructor(node, mode = 0) {\n /**\n @internal\n */\n this.buffer = null;\n this.stack = [];\n /**\n @internal\n */\n this.index = 0;\n this.bufferNode = null;\n this.mode = mode & ~IterMode.EnterBracketed;\n if (node instanceof TreeNode) {\n this.yieldNode(node);\n }\n else {\n this._tree = node.context.parent;\n this.buffer = node.context;\n for (let n = node._parent; n; n = n._parent)\n this.stack.unshift(n.index);\n this.bufferNode = node;\n this.yieldBuf(node.index);\n }\n }\n yieldNode(node) {\n if (!node)\n return false;\n this._tree = node;\n this.type = node.type;\n this.from = node.from;\n this.to = node.to;\n return true;\n }\n yieldBuf(index, type) {\n this.index = index;\n let { start, buffer } = this.buffer;\n this.type = type || buffer.set.types[buffer.buffer[index]];\n this.from = start + buffer.buffer[index + 1];\n this.to = start + buffer.buffer[index + 2];\n return true;\n }\n /**\n @internal\n */\n yield(node) {\n if (!node)\n return false;\n if (node instanceof TreeNode) {\n this.buffer = null;\n return this.yieldNode(node);\n }\n this.buffer = node.context;\n return this.yieldBuf(node.index, node.type);\n }\n /**\n @internal\n */\n toString() {\n return this.buffer ? this.buffer.buffer.childString(this.index) : this._tree.toString();\n }\n /**\n @internal\n */\n enterChild(dir, pos, side) {\n if (!this.buffer)\n return this.yield(this._tree.nextChild(dir < 0 ? this._tree._tree.children.length - 1 : 0, dir, pos, side, this.mode));\n let { buffer } = this.buffer;\n let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], dir, pos - this.buffer.start, side);\n if (index < 0)\n return false;\n this.stack.push(this.index);\n return this.yieldBuf(index);\n }\n /**\n Move the cursor to this node's first child. When this returns\n false, the node has no child, and the cursor has not been moved.\n */\n firstChild() { return this.enterChild(1, 0, 4 /* Side.DontCare */); }\n /**\n Move the cursor to this node's last child.\n */\n lastChild() { return this.enterChild(-1, 0, 4 /* Side.DontCare */); }\n /**\n Move the cursor to the first child that ends after `pos`.\n */\n childAfter(pos) { return this.enterChild(1, pos, 2 /* Side.After */); }\n /**\n Move to the last child that starts before `pos`.\n */\n childBefore(pos) { return this.enterChild(-1, pos, -2 /* Side.Before */); }\n /**\n Move the cursor to the child around `pos`. If side is -1 the\n child may end at that position, when 1 it may start there. This\n will also enter [overlaid](#common.MountedTree.overlay)\n [mounted](#common.NodeProp^mounted) trees unless `overlays` is\n set to false.\n */\n enter(pos, side, mode = this.mode) {\n if (!this.buffer)\n return this.yield(this._tree.enter(pos, side, mode));\n return mode & IterMode.ExcludeBuffers ? false : this.enterChild(1, pos, side);\n }\n /**\n Move to the node's parent node, if this isn't the top node.\n */\n parent() {\n if (!this.buffer)\n return this.yieldNode((this.mode & IterMode.IncludeAnonymous) ? this._tree._parent : this._tree.parent);\n if (this.stack.length)\n return this.yieldBuf(this.stack.pop());\n let parent = (this.mode & IterMode.IncludeAnonymous) ? this.buffer.parent : this.buffer.parent.nextSignificantParent();\n this.buffer = null;\n return this.yieldNode(parent);\n }\n /**\n @internal\n */\n sibling(dir) {\n if (!this.buffer)\n return !this._tree._parent ? false\n : this.yield(this._tree.index < 0 ? null\n : this._tree._parent.nextChild(this._tree.index + dir, dir, 0, 4 /* Side.DontCare */, this.mode));\n let { buffer } = this.buffer, d = this.stack.length - 1;\n if (dir < 0) {\n let parentStart = d < 0 ? 0 : this.stack[d] + 4;\n if (this.index != parentStart)\n return this.yieldBuf(buffer.findChild(parentStart, this.index, -1, 0, 4 /* Side.DontCare */));\n }\n else {\n let after = buffer.buffer[this.index + 3];\n if (after < (d < 0 ? buffer.buffer.length : buffer.buffer[this.stack[d] + 3]))\n return this.yieldBuf(after);\n }\n return d < 0 ? this.yield(this.buffer.parent.nextChild(this.buffer.index + dir, dir, 0, 4 /* Side.DontCare */, this.mode)) : false;\n }\n /**\n Move to this node's next sibling, if any.\n */\n nextSibling() { return this.sibling(1); }\n /**\n Move to this node's previous sibling, if any.\n */\n prevSibling() { return this.sibling(-1); }\n atLastNode(dir) {\n let index, parent, { buffer } = this;\n if (buffer) {\n if (dir > 0) {\n if (this.index < buffer.buffer.buffer.length)\n return false;\n }\n else {\n for (let i = 0; i < this.index; i++)\n if (buffer.buffer.buffer[i + 3] < this.index)\n return false;\n }\n ({ index, parent } = buffer);\n }\n else {\n ({ index, _parent: parent } = this._tree);\n }\n for (; parent; { index, _parent: parent } = parent) {\n if (index > -1)\n for (let i = index + dir, e = dir < 0 ? -1 : parent._tree.children.length; i != e; i += dir) {\n let child = parent._tree.children[i];\n if ((this.mode & IterMode.IncludeAnonymous) ||\n child instanceof TreeBuffer ||\n !child.type.isAnonymous ||\n hasChild(child))\n return false;\n }\n }\n return true;\n }\n move(dir, enter) {\n if (enter && this.enterChild(dir, 0, 4 /* Side.DontCare */))\n return true;\n for (;;) {\n if (this.sibling(dir))\n return true;\n if (this.atLastNode(dir) || !this.parent())\n return false;\n }\n }\n /**\n Move to the next node in a\n [pre-order](https://en.wikipedia.org/wiki/Tree_traversal#Pre-order,_NLR)\n traversal, going from a node to its first child or, if the\n current node is empty or `enter` is false, its next sibling or\n the next sibling of the first parent node that has one.\n */\n next(enter = true) { return this.move(1, enter); }\n /**\n Move to the next node in a last-to-first pre-order traversal. A\n node is followed by its last child or, if it has none, its\n previous sibling or the previous sibling of the first parent\n node that has one.\n */\n prev(enter = true) { return this.move(-1, enter); }\n /**\n Move the cursor to the innermost node that covers `pos`. If\n `side` is -1, it will enter nodes that end at `pos`. If it is 1,\n it will enter nodes that start at `pos`.\n */\n moveTo(pos, side = 0) {\n // Move up to a node that actually holds the position, if possible\n while (this.from == this.to ||\n (side < 1 ? this.from >= pos : this.from > pos) ||\n (side > -1 ? this.to <= pos : this.to < pos))\n if (!this.parent())\n break;\n // Then scan down into child nodes as far as possible\n while (this.enterChild(1, pos, side)) { }\n return this;\n }\n /**\n Get a [syntax node](#common.SyntaxNode) at the cursor's current\n position.\n */\n get node() {\n if (!this.buffer)\n return this._tree;\n let cache = this.bufferNode, result = null, depth = 0;\n if (cache && cache.context == this.buffer) {\n scan: for (let index = this.index, d = this.stack.length; d >= 0;) {\n for (let c = cache; c; c = c._parent)\n if (c.index == index) {\n if (index == this.index)\n return c;\n result = c;\n depth = d + 1;\n break scan;\n }\n index = this.stack[--d];\n }\n }\n for (let i = depth; i < this.stack.length; i++)\n result = new BufferNode(this.buffer, result, this.stack[i]);\n return this.bufferNode = new BufferNode(this.buffer, result, this.index);\n }\n /**\n Get the [tree](#common.Tree) that represents the current node, if\n any. Will return null when the node is in a [tree\n buffer](#common.TreeBuffer).\n */\n get tree() {\n return this.buffer ? null : this._tree._tree;\n }\n /**\n Iterate over the current node and all its descendants, calling\n `enter` when entering a node and `leave`, if given, when leaving\n one. When `enter` returns `false`, any children of that node are\n skipped, and `leave` isn't called for it.\n */\n iterate(enter, leave) {\n for (let depth = 0;;) {\n let mustLeave = false;\n if (this.type.isAnonymous || enter(this) !== false) {\n if (this.firstChild()) {\n depth++;\n continue;\n }\n if (!this.type.isAnonymous)\n mustLeave = true;\n }\n for (;;) {\n if (mustLeave && leave)\n leave(this);\n mustLeave = this.type.isAnonymous;\n if (!depth)\n return;\n if (this.nextSibling())\n break;\n this.parent();\n depth--;\n mustLeave = true;\n }\n }\n }\n /**\n Test whether the current node matches a given context—a sequence\n of direct parent node names. Empty strings in the context array\n are treated as wildcards.\n */\n matchContext(context) {\n if (!this.buffer)\n return matchNodeContext(this.node.parent, context);\n let { buffer } = this.buffer, { types } = buffer.set;\n for (let i = context.length - 1, d = this.stack.length - 1; i >= 0; d--) {\n if (d < 0)\n return matchNodeContext(this._tree, context, i);\n let type = types[buffer.buffer[this.stack[d]]];\n if (!type.isAnonymous) {\n if (context[i] && context[i] != type.name)\n return false;\n i--;\n }\n }\n return true;\n }\n}\nfunction hasChild(tree) {\n return tree.children.some(ch => ch instanceof TreeBuffer || !ch.type.isAnonymous || hasChild(ch));\n}\nfunction buildTree(data) {\n var _a;\n let { buffer, nodeSet, maxBufferLength = DefaultBufferLength, reused = [], minRepeatType = nodeSet.types.length } = data;\n let cursor = Array.isArray(buffer) ? new FlatBufferCursor(buffer, buffer.length) : buffer;\n let types = nodeSet.types;\n let contextHash = 0, lookAhead = 0;\n function takeNode(parentStart, minPos, children, positions, inRepeat, depth) {\n let { id, start, end, size } = cursor;\n let lookAheadAtStart = lookAhead, contextAtStart = contextHash;\n if (size < 0) {\n cursor.next();\n if (size == -1 /* SpecialRecord.Reuse */) {\n let node = reused[id];\n children.push(node);\n positions.push(start - parentStart);\n return;\n }\n else if (size == -3 /* SpecialRecord.ContextChange */) { // Context change\n contextHash = id;\n return;\n }\n else if (size == -4 /* SpecialRecord.LookAhead */) {\n lookAhead = id;\n return;\n }\n else {\n throw new RangeError(`Unrecognized record size: ${size}`);\n }\n }\n let type = types[id], node, buffer;\n let startPos = start - parentStart;\n if (end - start <= maxBufferLength && (buffer = findBufferSize(cursor.pos - minPos, inRepeat))) {\n // Small enough for a buffer, and no reused nodes inside\n let data = new Uint16Array(buffer.size - buffer.skip);\n let endPos = cursor.pos - buffer.size, index = data.length;\n while (cursor.pos > endPos)\n index = copyToBuffer(buffer.start, data, index);\n node = new TreeBuffer(data, end - buffer.start, nodeSet);\n startPos = buffer.start - parentStart;\n }\n else { // Make it a node\n let endPos = cursor.pos - size;\n cursor.next();\n let localChildren = [], localPositions = [];\n let localInRepeat = id >= minRepeatType ? id : -1;\n let lastGroup = 0, lastEnd = end;\n while (cursor.pos > endPos) {\n if (localInRepeat >= 0 && cursor.id == localInRepeat && cursor.size >= 0) {\n if (cursor.end <= lastEnd - maxBufferLength) {\n makeRepeatLeaf(localChildren, localPositions, start, lastGroup, cursor.end, lastEnd, localInRepeat, lookAheadAtStart, contextAtStart);\n lastGroup = localChildren.length;\n lastEnd = cursor.end;\n }\n cursor.next();\n }\n else if (depth > 2500 /* CutOff.Depth */) {\n takeFlatNode(start, endPos, localChildren, localPositions);\n }\n else {\n takeNode(start, endPos, localChildren, localPositions, localInRepeat, depth + 1);\n }\n }\n if (localInRepeat >= 0 && lastGroup > 0 && lastGroup < localChildren.length)\n makeRepeatLeaf(localChildren, localPositions, start, lastGroup, start, lastEnd, localInRepeat, lookAheadAtStart, contextAtStart);\n localChildren.reverse();\n localPositions.reverse();\n if (localInRepeat > -1 && lastGroup > 0) {\n let make = makeBalanced(type, contextAtStart);\n node = balanceRange(type, localChildren, localPositions, 0, localChildren.length, 0, end - start, make, make);\n }\n else {\n node = makeTree(type, localChildren, localPositions, end - start, lookAheadAtStart - end, contextAtStart);\n }\n }\n children.push(node);\n positions.push(startPos);\n }\n function takeFlatNode(parentStart, minPos, children, positions) {\n let nodes = []; // Temporary, inverted array of leaf nodes found, with absolute positions\n let nodeCount = 0, stopAt = -1;\n while (cursor.pos > minPos) {\n let { id, start, end, size } = cursor;\n if (size > 4) { // Not a leaf\n cursor.next();\n }\n else if (stopAt > -1 && start < stopAt) {\n break;\n }\n else {\n if (stopAt < 0)\n stopAt = end - maxBufferLength;\n nodes.push(id, start, end);\n nodeCount++;\n cursor.next();\n }\n }\n if (nodeCount) {\n let buffer = new Uint16Array(nodeCount * 4);\n let start = nodes[nodes.length - 2];\n for (let i = nodes.length - 3, j = 0; i >= 0; i -= 3) {\n buffer[j++] = nodes[i];\n buffer[j++] = nodes[i + 1] - start;\n buffer[j++] = nodes[i + 2] - start;\n buffer[j++] = j;\n }\n children.push(new TreeBuffer(buffer, nodes[2] - start, nodeSet));\n positions.push(start - parentStart);\n }\n }\n function makeBalanced(type, contextHash) {\n return (children, positions, length) => {\n let lookAhead = 0, lastI = children.length - 1, last, lookAheadProp;\n if (lastI >= 0 && (last = children[lastI]) instanceof Tree) {\n if (!lastI && last.type == type && last.length == length)\n return last;\n if (lookAheadProp = last.prop(NodeProp.lookAhead))\n lookAhead = positions[lastI] + last.length + lookAheadProp;\n }\n return makeTree(type, children, positions, length, lookAhead, contextHash);\n };\n }\n function makeRepeatLeaf(children, positions, base, i, from, to, type, lookAhead, contextHash) {\n let localChildren = [], localPositions = [];\n while (children.length > i) {\n localChildren.push(children.pop());\n localPositions.push(positions.pop() + base - from);\n }\n children.push(makeTree(nodeSet.types[type], localChildren, localPositions, to - from, lookAhead - to, contextHash));\n positions.push(from - base);\n }\n function makeTree(type, children, positions, length, lookAhead, contextHash, props) {\n if (contextHash) {\n let pair = [NodeProp.contextHash, contextHash];\n props = props ? [pair].concat(props) : [pair];\n }\n if (lookAhead > 25) {\n let pair = [NodeProp.lookAhead, lookAhead];\n props = props ? [pair].concat(props) : [pair];\n }\n return new Tree(type, children, positions, length, props);\n }\n function findBufferSize(maxSize, inRepeat) {\n // Scan through the buffer to find previous siblings that fit\n // together in a TreeBuffer, and don't contain any reused nodes\n // (which can't be stored in a buffer).\n // If `inRepeat` is > -1, ignore node boundaries of that type for\n // nesting, but make sure the end falls either at the start\n // (`maxSize`) or before such a node.\n let fork = cursor.fork();\n let size = 0, start = 0, skip = 0, minStart = fork.end - maxBufferLength;\n let result = { size: 0, start: 0, skip: 0 };\n scan: for (let minPos = fork.pos - maxSize; fork.pos > minPos;) {\n let nodeSize = fork.size;\n // Pretend nested repeat nodes of the same type don't exist\n if (fork.id == inRepeat && nodeSize >= 0) {\n // Except that we store the current state as a valid return\n // value.\n result.size = size;\n result.start = start;\n result.skip = skip;\n skip += 4;\n size += 4;\n fork.next();\n continue;\n }\n let startPos = fork.pos - nodeSize;\n if (nodeSize < 0 || startPos < minPos || fork.start < minStart)\n break;\n let localSkipped = fork.id >= minRepeatType ? 4 : 0;\n let nodeStart = fork.start;\n fork.next();\n while (fork.pos > startPos) {\n if (fork.size < 0) {\n if (fork.size == -3 /* SpecialRecord.ContextChange */ || fork.size == -4 /* SpecialRecord.LookAhead */)\n localSkipped += 4;\n else\n break scan;\n }\n else if (fork.id >= minRepeatType) {\n localSkipped += 4;\n }\n fork.next();\n }\n start = nodeStart;\n size += nodeSize;\n skip += localSkipped;\n }\n if (inRepeat < 0 || size == maxSize) {\n result.size = size;\n result.start = start;\n result.skip = skip;\n }\n return result.size > 4 ? result : undefined;\n }\n function copyToBuffer(bufferStart, buffer, index) {\n let { id, start, end, size } = cursor;\n cursor.next();\n if (size >= 0 && id < minRepeatType) {\n let startIndex = index;\n if (size > 4) {\n let endPos = cursor.pos - (size - 4);\n while (cursor.pos > endPos)\n index = copyToBuffer(bufferStart, buffer, index);\n }\n buffer[--index] = startIndex;\n buffer[--index] = end - bufferStart;\n buffer[--index] = start - bufferStart;\n buffer[--index] = id;\n }\n else if (size == -3 /* SpecialRecord.ContextChange */) {\n contextHash = id;\n }\n else if (size == -4 /* SpecialRecord.LookAhead */) {\n lookAhead = id;\n }\n return index;\n }\n let children = [], positions = [];\n while (cursor.pos > 0)\n takeNode(data.start || 0, data.bufferStart || 0, children, positions, -1, 0);\n let length = (_a = data.length) !== null && _a !== void 0 ? _a : (children.length ? positions[0] + children[0].length : 0);\n return new Tree(types[data.topID], children.reverse(), positions.reverse(), length);\n}\nconst nodeSizeCache = new WeakMap;\nfunction nodeSize(balanceType, node) {\n if (!balanceType.isAnonymous || node instanceof TreeBuffer || node.type != balanceType)\n return 1;\n let size = nodeSizeCache.get(node);\n if (size == null) {\n size = 1;\n for (let child of node.children) {\n if (child.type != balanceType || !(child instanceof Tree)) {\n size = 1;\n break;\n }\n size += nodeSize(balanceType, child);\n }\n nodeSizeCache.set(node, size);\n }\n return size;\n}\nfunction balanceRange(\n// The type the balanced tree's inner nodes.\nbalanceType, \n// The direct children and their positions\nchildren, positions, \n// The index range in children/positions to use\nfrom, to, \n// The start position of the nodes, relative to their parent.\nstart, \n// Length of the outer node\nlength, \n// Function to build the top node of the balanced tree\nmkTop, \n// Function to build internal nodes for the balanced tree\nmkTree) {\n let total = 0;\n for (let i = from; i < to; i++)\n total += nodeSize(balanceType, children[i]);\n let maxChild = Math.ceil((total * 1.5) / 8 /* Balance.BranchFactor */);\n let localChildren = [], localPositions = [];\n function divide(children, positions, from, to, offset) {\n for (let i = from; i < to;) {\n let groupFrom = i, groupStart = positions[i], groupSize = nodeSize(balanceType, children[i]);\n i++;\n for (; i < to; i++) {\n let nextSize = nodeSize(balanceType, children[i]);\n if (groupSize + nextSize >= maxChild)\n break;\n groupSize += nextSize;\n }\n if (i == groupFrom + 1) {\n if (groupSize > maxChild) {\n let only = children[groupFrom]; // Only trees can have a size > 1\n divide(only.children, only.positions, 0, only.children.length, positions[groupFrom] + offset);\n continue;\n }\n localChildren.push(children[groupFrom]);\n }\n else {\n let length = positions[i - 1] + children[i - 1].length - groupStart;\n localChildren.push(balanceRange(balanceType, children, positions, groupFrom, i, groupStart, length, null, mkTree));\n }\n localPositions.push(groupStart + offset - start);\n }\n }\n divide(children, positions, from, to, 0);\n return (mkTop || mkTree)(localChildren, localPositions, length);\n}\n/**\nProvides a way to associate values with pieces of trees. As long\nas that part of the tree is reused, the associated values can be\nretrieved from an updated tree.\n*/\nclass NodeWeakMap {\n constructor() {\n this.map = new WeakMap();\n }\n setBuffer(buffer, index, value) {\n let inner = this.map.get(buffer);\n if (!inner)\n this.map.set(buffer, inner = new Map);\n inner.set(index, value);\n }\n getBuffer(buffer, index) {\n let inner = this.map.get(buffer);\n return inner && inner.get(index);\n }\n /**\n Set the value for this syntax node.\n */\n set(node, value) {\n if (node instanceof BufferNode)\n this.setBuffer(node.context.buffer, node.index, value);\n else if (node instanceof TreeNode)\n this.map.set(node.tree, value);\n }\n /**\n Retrieve value for this syntax node, if it exists in the map.\n */\n get(node) {\n return node instanceof BufferNode ? this.getBuffer(node.context.buffer, node.index)\n : node instanceof TreeNode ? this.map.get(node.tree) : undefined;\n }\n /**\n Set the value for the node that a cursor currently points to.\n */\n cursorSet(cursor, value) {\n if (cursor.buffer)\n this.setBuffer(cursor.buffer.buffer, cursor.index, value);\n else\n this.map.set(cursor.tree, value);\n }\n /**\n Retrieve the value for the node that a cursor currently points\n to.\n */\n cursorGet(cursor) {\n return cursor.buffer ? this.getBuffer(cursor.buffer.buffer, cursor.index) : this.map.get(cursor.tree);\n }\n}\n\n/**\nTree fragments are used during [incremental\nparsing](#common.Parser.startParse) to track parts of old trees\nthat can be reused in a new parse. An array of fragments is used\nto track regions of an old tree whose nodes might be reused in new\nparses. Use the static\n[`applyChanges`](#common.TreeFragment^applyChanges) method to\nupdate fragments for document changes.\n*/\nclass TreeFragment {\n /**\n Construct a tree fragment. You'll usually want to use\n [`addTree`](#common.TreeFragment^addTree) and\n [`applyChanges`](#common.TreeFragment^applyChanges) instead of\n calling this directly.\n */\n constructor(\n /**\n The start of the unchanged range pointed to by this fragment.\n This refers to an offset in the _updated_ document (as opposed\n to the original tree).\n */\n from, \n /**\n The end of the unchanged range.\n */\n to, \n /**\n The tree that this fragment is based on.\n */\n tree, \n /**\n The offset between the fragment's tree and the document that\n this fragment can be used against. Add this when going from\n document to tree positions, subtract it to go from tree to\n document positions.\n */\n offset, openStart = false, openEnd = false) {\n this.from = from;\n this.to = to;\n this.tree = tree;\n this.offset = offset;\n this.open = (openStart ? 1 /* Open.Start */ : 0) | (openEnd ? 2 /* Open.End */ : 0);\n }\n /**\n Whether the start of the fragment represents the start of a\n parse, or the end of a change. (In the second case, it may not\n be safe to reuse some nodes at the start, depending on the\n parsing algorithm.)\n */\n get openStart() { return (this.open & 1 /* Open.Start */) > 0; }\n /**\n Whether the end of the fragment represents the end of a\n full-document parse, or the start of a change.\n */\n get openEnd() { return (this.open & 2 /* Open.End */) > 0; }\n /**\n Create a set of fragments from a freshly parsed tree, or update\n an existing set of fragments by replacing the ones that overlap\n with a tree with content from the new tree. When `partial` is\n true, the parse is treated as incomplete, and the resulting\n fragment has [`openEnd`](#common.TreeFragment.openEnd) set to\n true.\n */\n static addTree(tree, fragments = [], partial = false) {\n let result = [new TreeFragment(0, tree.length, tree, 0, false, partial)];\n for (let f of fragments)\n if (f.to > tree.length)\n result.push(f);\n return result;\n }\n /**\n Apply a set of edits to an array of fragments, removing or\n splitting fragments as necessary to remove edited ranges, and\n adjusting offsets for fragments that moved.\n */\n static applyChanges(fragments, changes, minGap = 128) {\n if (!changes.length)\n return fragments;\n let result = [];\n let fI = 1, nextF = fragments.length ? fragments[0] : null;\n for (let cI = 0, pos = 0, off = 0;; cI++) {\n let nextC = cI < changes.length ? changes[cI] : null;\n let nextPos = nextC ? nextC.fromA : 1e9;\n if (nextPos - pos >= minGap)\n while (nextF && nextF.from < nextPos) {\n let cut = nextF;\n if (pos >= cut.from || nextPos <= cut.to || off) {\n let fFrom = Math.max(cut.from, pos) - off, fTo = Math.min(cut.to, nextPos) - off;\n cut = fFrom >= fTo ? null : new TreeFragment(fFrom, fTo, cut.tree, cut.offset + off, cI > 0, !!nextC);\n }\n if (cut)\n result.push(cut);\n if (nextF.to > nextPos)\n break;\n nextF = fI < fragments.length ? fragments[fI++] : null;\n }\n if (!nextC)\n break;\n pos = nextC.toA;\n off = nextC.toA - nextC.toB;\n }\n return result;\n }\n}\n/**\nA superclass that parsers should extend.\n*/\nclass Parser {\n /**\n Start a parse, returning a [partial parse](#common.PartialParse)\n object. [`fragments`](#common.TreeFragment) can be passed in to\n make the parse incremental.\n \n By default, the entire input is parsed. You can pass `ranges`,\n which should be a sorted array of non-empty, non-overlapping\n ranges, to parse only those ranges. The tree returned in that\n case will start at `ranges[0].from`.\n */\n startParse(input, fragments, ranges) {\n if (typeof input == \"string\")\n input = new StringInput(input);\n ranges = !ranges ? [new Range(0, input.length)] : ranges.length ? ranges.map(r => new Range(r.from, r.to)) : [new Range(0, 0)];\n return this.createParse(input, fragments || [], ranges);\n }\n /**\n Run a full parse, returning the resulting tree.\n */\n parse(input, fragments, ranges) {\n let parse = this.startParse(input, fragments, ranges);\n for (;;) {\n let done = parse.advance();\n if (done)\n return done;\n }\n }\n}\nclass StringInput {\n constructor(string) {\n this.string = string;\n }\n get length() { return this.string.length; }\n chunk(from) { return this.string.slice(from); }\n get lineChunks() { return false; }\n read(from, to) { return this.string.slice(from, to); }\n}\n\n/**\nCreate a parse wrapper that, after the inner parse completes,\nscans its tree for mixed language regions with the `nest`\nfunction, runs the resulting [inner parses](#common.NestedParse),\nand then [mounts](#common.NodeProp^mounted) their results onto the\ntree.\n*/\nfunction parseMixed(nest) {\n return (parse, input, fragments, ranges) => new MixedParse(parse, nest, input, fragments, ranges);\n}\nclass InnerParse {\n constructor(parser, parse, overlay, bracketed, target, from) {\n this.parser = parser;\n this.parse = parse;\n this.overlay = overlay;\n this.bracketed = bracketed;\n this.target = target;\n this.from = from;\n }\n}\nfunction checkRanges(ranges) {\n if (!ranges.length || ranges.some(r => r.from >= r.to))\n throw new RangeError(\"Invalid inner parse ranges given: \" + JSON.stringify(ranges));\n}\nclass ActiveOverlay {\n constructor(parser, predicate, mounts, index, start, bracketed, target, prev) {\n this.parser = parser;\n this.predicate = predicate;\n this.mounts = mounts;\n this.index = index;\n this.start = start;\n this.bracketed = bracketed;\n this.target = target;\n this.prev = prev;\n this.depth = 0;\n this.ranges = [];\n }\n}\nconst stoppedInner = new NodeProp({ perNode: true });\nclass MixedParse {\n constructor(base, nest, input, fragments, ranges) {\n this.nest = nest;\n this.input = input;\n this.fragments = fragments;\n this.ranges = ranges;\n this.inner = [];\n this.innerDone = 0;\n this.baseTree = null;\n this.stoppedAt = null;\n this.baseParse = base;\n }\n advance() {\n if (this.baseParse) {\n let done = this.baseParse.advance();\n if (!done)\n return null;\n this.baseParse = null;\n this.baseTree = done;\n this.startInner();\n if (this.stoppedAt != null)\n for (let inner of this.inner)\n inner.parse.stopAt(this.stoppedAt);\n }\n if (this.innerDone == this.inner.length) {\n let result = this.baseTree;\n if (this.stoppedAt != null)\n result = new Tree(result.type, result.children, result.positions, result.length, result.propValues.concat([[stoppedInner, this.stoppedAt]]));\n return result;\n }\n let inner = this.inner[this.innerDone], done = inner.parse.advance();\n if (done) {\n this.innerDone++;\n // This is a somewhat dodgy but super helpful hack where we\n // patch up nodes created by the inner parse (and thus\n // presumably not aliased anywhere else) to hold the information\n // about the inner parse.\n let props = Object.assign(Object.create(null), inner.target.props);\n props[NodeProp.mounted.id] = new MountedTree(done, inner.overlay, inner.parser, inner.bracketed);\n inner.target.props = props;\n }\n return null;\n }\n get parsedPos() {\n if (this.baseParse)\n return 0;\n let pos = this.input.length;\n for (let i = this.innerDone; i < this.inner.length; i++) {\n if (this.inner[i].from < pos)\n pos = Math.min(pos, this.inner[i].parse.parsedPos);\n }\n return pos;\n }\n stopAt(pos) {\n this.stoppedAt = pos;\n if (this.baseParse)\n this.baseParse.stopAt(pos);\n else\n for (let i = this.innerDone; i < this.inner.length; i++)\n this.inner[i].parse.stopAt(pos);\n }\n startInner() {\n let fragmentCursor = new FragmentCursor(this.fragments);\n let overlay = null;\n let covered = null;\n let cursor = new TreeCursor(new TreeNode(this.baseTree, this.ranges[0].from, 0, null), IterMode.IncludeAnonymous | IterMode.IgnoreMounts);\n scan: for (let nest, isCovered;;) {\n let enter = true, range;\n if (this.stoppedAt != null && cursor.from >= this.stoppedAt) {\n enter = false;\n }\n else if (fragmentCursor.hasNode(cursor)) {\n if (overlay) {\n let match = overlay.mounts.find(m => m.frag.from <= cursor.from && m.frag.to >= cursor.to && m.mount.overlay);\n if (match)\n for (let r of match.mount.overlay) {\n let from = r.from + match.pos, to = r.to + match.pos;\n if (from >= cursor.from && to <= cursor.to && !overlay.ranges.some(r => r.from < to && r.to > from))\n overlay.ranges.push({ from, to });\n }\n }\n enter = false;\n }\n else if (covered && (isCovered = checkCover(covered.ranges, cursor.from, cursor.to))) {\n enter = isCovered != 2 /* Cover.Full */;\n }\n else if (!cursor.type.isAnonymous && (nest = this.nest(cursor, this.input)) &&\n (cursor.from < cursor.to || !nest.overlay)) {\n if (!cursor.tree) {\n materialize(cursor);\n // materialize create one more level of nesting\n // we need to add depth to active overlay for going backwards\n if (overlay)\n overlay.depth++;\n if (covered)\n covered.depth++;\n }\n let oldMounts = fragmentCursor.findMounts(cursor.from, nest.parser);\n if (typeof nest.overlay == \"function\") {\n overlay = new ActiveOverlay(nest.parser, nest.overlay, oldMounts, this.inner.length, cursor.from, !!nest.bracketed, cursor.tree, overlay);\n }\n else {\n let ranges = punchRanges(this.ranges, nest.overlay ||\n (cursor.from < cursor.to ? [new Range(cursor.from, cursor.to)] : []));\n if (ranges.length)\n checkRanges(ranges);\n if (ranges.length || !nest.overlay)\n this.inner.push(new InnerParse(nest.parser, ranges.length ? nest.parser.startParse(this.input, enterFragments(oldMounts, ranges), ranges)\n : nest.parser.startParse(\"\"), nest.overlay ? nest.overlay.map(r => new Range(r.from - cursor.from, r.to - cursor.from)) : null, !!nest.bracketed, cursor.tree, ranges.length ? ranges[0].from : cursor.from));\n if (!nest.overlay)\n enter = false;\n else if (ranges.length)\n covered = { ranges, depth: 0, prev: covered };\n }\n }\n else if (overlay && (range = overlay.predicate(cursor))) {\n if (range === true)\n range = new Range(cursor.from, cursor.to);\n if (range.from < range.to) {\n let last = overlay.ranges.length - 1;\n if (last >= 0 && overlay.ranges[last].to == range.from)\n overlay.ranges[last] = { from: overlay.ranges[last].from, to: range.to };\n else\n overlay.ranges.push(range);\n }\n }\n if (enter && cursor.firstChild()) {\n if (overlay)\n overlay.depth++;\n if (covered)\n covered.depth++;\n }\n else {\n for (;;) {\n if (cursor.nextSibling())\n break;\n if (!cursor.parent())\n break scan;\n if (overlay && !--overlay.depth) {\n let ranges = punchRanges(this.ranges, overlay.ranges);\n if (ranges.length) {\n checkRanges(ranges);\n this.inner.splice(overlay.index, 0, new InnerParse(overlay.parser, overlay.parser.startParse(this.input, enterFragments(overlay.mounts, ranges), ranges), overlay.ranges.map(r => new Range(r.from - overlay.start, r.to - overlay.start)), overlay.bracketed, overlay.target, ranges[0].from));\n }\n overlay = overlay.prev;\n }\n if (covered && !--covered.depth)\n covered = covered.prev;\n }\n }\n }\n }\n}\nfunction checkCover(covered, from, to) {\n for (let range of covered) {\n if (range.from >= to)\n break;\n if (range.to > from)\n return range.from <= from && range.to >= to ? 2 /* Cover.Full */ : 1 /* Cover.Partial */;\n }\n return 0 /* Cover.None */;\n}\n// Take a piece of buffer and convert it into a stand-alone\n// TreeBuffer.\nfunction sliceBuf(buf, startI, endI, nodes, positions, off) {\n if (startI < endI) {\n let from = buf.buffer[startI + 1];\n nodes.push(buf.slice(startI, endI, from));\n positions.push(from - off);\n }\n}\n// This function takes a node that's in a buffer, and converts it, and\n// its parent buffer nodes, into a Tree. This is again acting on the\n// assumption that the trees and buffers have been constructed by the\n// parse that was ran via the mix parser, and thus aren't shared with\n// any other code, making violations of the immutability safe.\nfunction materialize(cursor) {\n let { node } = cursor, stack = [];\n let buffer = node.context.buffer;\n // Scan up to the nearest tree\n do {\n stack.push(cursor.index);\n cursor.parent();\n } while (!cursor.tree);\n // Find the index of the buffer in that tree\n let base = cursor.tree, i = base.children.indexOf(buffer);\n let buf = base.children[i], b = buf.buffer, newStack = [i];\n // Split a level in the buffer, putting the nodes before and after\n // the child that contains `node` into new buffers.\n function split(startI, endI, type, innerOffset, length, stackPos) {\n let targetI = stack[stackPos];\n let children = [], positions = [];\n sliceBuf(buf, startI, targetI, children, positions, innerOffset);\n let from = b[targetI + 1], to = b[targetI + 2];\n newStack.push(children.length);\n let child = stackPos\n ? split(targetI + 4, b[targetI + 3], buf.set.types[b[targetI]], from, to - from, stackPos - 1)\n : node.toTree();\n children.push(child);\n positions.push(from - innerOffset);\n sliceBuf(buf, b[targetI + 3], endI, children, positions, innerOffset);\n return new Tree(type, children, positions, length);\n }\n base.children[i] = split(0, b.length, NodeType.none, 0, buf.length, stack.length - 1);\n // Move the cursor back to the target node\n for (let index of newStack) {\n let tree = cursor.tree.children[index], pos = cursor.tree.positions[index];\n cursor.yield(new TreeNode(tree, pos + cursor.from, index, cursor._tree));\n }\n}\nclass StructureCursor {\n constructor(root, offset) {\n this.offset = offset;\n this.done = false;\n this.cursor = root.cursor(IterMode.IncludeAnonymous | IterMode.IgnoreMounts);\n }\n // Move to the first node (in pre-order) that starts at or after `pos`.\n moveTo(pos) {\n let { cursor } = this, p = pos - this.offset;\n while (!this.done && cursor.from < p) {\n if (cursor.to >= pos && cursor.enter(p, 1, IterMode.IgnoreOverlays | IterMode.ExcludeBuffers)) ;\n else if (!cursor.next(false))\n this.done = true;\n }\n }\n hasNode(cursor) {\n this.moveTo(cursor.from);\n if (!this.done && this.cursor.from + this.offset == cursor.from && this.cursor.tree) {\n for (let tree = this.cursor.tree;;) {\n if (tree == cursor.tree)\n return true;\n if (tree.children.length && tree.positions[0] == 0 && tree.children[0] instanceof Tree)\n tree = tree.children[0];\n else\n break;\n }\n }\n return false;\n }\n}\nclass FragmentCursor {\n constructor(fragments) {\n var _a;\n this.fragments = fragments;\n this.curTo = 0;\n this.fragI = 0;\n if (fragments.length) {\n let first = this.curFrag = fragments[0];\n this.curTo = (_a = first.tree.prop(stoppedInner)) !== null && _a !== void 0 ? _a : first.to;\n this.inner = new StructureCursor(first.tree, -first.offset);\n }\n else {\n this.curFrag = this.inner = null;\n }\n }\n hasNode(node) {\n while (this.curFrag && node.from >= this.curTo)\n this.nextFrag();\n return this.curFrag && this.curFrag.from <= node.from && this.curTo >= node.to && this.inner.hasNode(node);\n }\n nextFrag() {\n var _a;\n this.fragI++;\n if (this.fragI == this.fragments.length) {\n this.curFrag = this.inner = null;\n }\n else {\n let frag = this.curFrag = this.fragments[this.fragI];\n this.curTo = (_a = frag.tree.prop(stoppedInner)) !== null && _a !== void 0 ? _a : frag.to;\n this.inner = new StructureCursor(frag.tree, -frag.offset);\n }\n }\n findMounts(pos, parser) {\n var _a;\n let result = [];\n if (this.inner) {\n this.inner.cursor.moveTo(pos, 1);\n for (let pos = this.inner.cursor.node; pos; pos = pos.parent) {\n let mount = (_a = pos.tree) === null || _a === void 0 ? void 0 : _a.prop(NodeProp.mounted);\n if (mount && mount.parser == parser) {\n for (let i = this.fragI; i < this.fragments.length; i++) {\n let frag = this.fragments[i];\n if (frag.from >= pos.to)\n break;\n if (frag.tree == this.curFrag.tree)\n result.push({\n frag,\n pos: pos.from - frag.offset,\n mount\n });\n }\n }\n }\n }\n return result;\n }\n}\nfunction punchRanges(outer, ranges) {\n let copy = null, current = ranges;\n for (let i = 1, j = 0; i < outer.length; i++) {\n let gapFrom = outer[i - 1].to, gapTo = outer[i].from;\n for (; j < current.length; j++) {\n let r = current[j];\n if (r.from >= gapTo)\n break;\n if (r.to <= gapFrom)\n continue;\n if (!copy)\n current = copy = ranges.slice();\n if (r.from < gapFrom) {\n copy[j] = new Range(r.from, gapFrom);\n if (r.to > gapTo)\n copy.splice(j + 1, 0, new Range(gapTo, r.to));\n }\n else if (r.to > gapTo) {\n copy[j--] = new Range(gapTo, r.to);\n }\n else {\n copy.splice(j--, 1);\n }\n }\n }\n return current;\n}\nfunction findCoverChanges(a, b, from, to) {\n let iA = 0, iB = 0, inA = false, inB = false, pos = -1e9;\n let result = [];\n for (;;) {\n let nextA = iA == a.length ? 1e9 : inA ? a[iA].to : a[iA].from;\n let nextB = iB == b.length ? 1e9 : inB ? b[iB].to : b[iB].from;\n if (inA != inB) {\n let start = Math.max(pos, from), end = Math.min(nextA, nextB, to);\n if (start < end)\n result.push(new Range(start, end));\n }\n pos = Math.min(nextA, nextB);\n if (pos == 1e9)\n break;\n if (nextA == pos) {\n if (!inA)\n inA = true;\n else {\n inA = false;\n iA++;\n }\n }\n if (nextB == pos) {\n if (!inB)\n inB = true;\n else {\n inB = false;\n iB++;\n }\n }\n }\n return result;\n}\n// Given a number of fragments for the outer tree, and a set of ranges\n// to parse, find fragments for inner trees mounted around those\n// ranges, if any.\nfunction enterFragments(mounts, ranges) {\n let result = [];\n for (let { pos, mount, frag } of mounts) {\n let startPos = pos + (mount.overlay ? mount.overlay[0].from : 0), endPos = startPos + mount.tree.length;\n let from = Math.max(frag.from, startPos), to = Math.min(frag.to, endPos);\n if (mount.overlay) {\n let overlay = mount.overlay.map(r => new Range(r.from + pos, r.to + pos));\n let changes = findCoverChanges(ranges, overlay, from, to);\n for (let i = 0, pos = from;; i++) {\n let last = i == changes.length, end = last ? to : changes[i].from;\n if (end > pos)\n result.push(new TreeFragment(pos, end, mount.tree, -startPos, frag.from >= pos || frag.openStart, frag.to <= end || frag.openEnd));\n if (last)\n break;\n pos = changes[i].to;\n }\n }\n else {\n result.push(new TreeFragment(from, to, mount.tree, -startPos, frag.from >= startPos || frag.openStart, frag.to <= endPos || frag.openEnd));\n }\n }\n return result;\n}\n\nexport { DefaultBufferLength, IterMode, MountedTree, NodeProp, NodeSet, NodeType, NodeWeakMap, Parser, Tree, TreeBuffer, TreeCursor, TreeFragment, parseMixed };\n","import { NodeProp } from '@lezer/common';\n\nlet nextTagID = 0;\n/**\nHighlighting tags are markers that denote a highlighting category.\nThey are [associated](#highlight.styleTags) with parts of a syntax\ntree by a language mode, and then mapped to an actual CSS style by\na [highlighter](#highlight.Highlighter).\n\nBecause syntax tree node types and highlight styles have to be\nable to talk the same language, CodeMirror uses a mostly _closed_\n[vocabulary](#highlight.tags) of syntax tags (as opposed to\ntraditional open string-based systems, which make it hard for\nhighlighting themes to cover all the tokens produced by the\nvarious languages).\n\nIt _is_ possible to [define](#highlight.Tag^define) your own\nhighlighting tags for system-internal use (where you control both\nthe language package and the highlighter), but such tags will not\nbe picked up by regular highlighters (though you can derive them\nfrom standard tags to allow highlighters to fall back to those).\n*/\nclass Tag {\n /**\n @internal\n */\n constructor(\n /**\n The optional name of the base tag @internal\n */\n name, \n /**\n The set of this tag and all its parent tags, starting with\n this one itself and sorted in order of decreasing specificity.\n */\n set, \n /**\n The base unmodified tag that this one is based on, if it's\n modified @internal\n */\n base, \n /**\n The modifiers applied to this.base @internal\n */\n modified) {\n this.name = name;\n this.set = set;\n this.base = base;\n this.modified = modified;\n /**\n @internal\n */\n this.id = nextTagID++;\n }\n toString() {\n let { name } = this;\n for (let mod of this.modified)\n if (mod.name)\n name = `${mod.name}(${name})`;\n return name;\n }\n static define(nameOrParent, parent) {\n let name = typeof nameOrParent == \"string\" ? nameOrParent : \"?\";\n if (nameOrParent instanceof Tag)\n parent = nameOrParent;\n if (parent === null || parent === void 0 ? void 0 : parent.base)\n throw new Error(\"Can not derive from a modified tag\");\n let tag = new Tag(name, [], null, []);\n tag.set.push(tag);\n if (parent)\n for (let t of parent.set)\n tag.set.push(t);\n return tag;\n }\n /**\n Define a tag _modifier_, which is a function that, given a tag,\n will return a tag that is a subtag of the original. Applying the\n same modifier to a twice tag will return the same value (`m1(t1)\n == m1(t1)`) and applying multiple modifiers will, regardless or\n order, produce the same tag (`m1(m2(t1)) == m2(m1(t1))`).\n \n When multiple modifiers are applied to a given base tag, each\n smaller set of modifiers is registered as a parent, so that for\n example `m1(m2(m3(t1)))` is a subtype of `m1(m2(t1))`,\n `m1(m3(t1)`, and so on.\n */\n static defineModifier(name) {\n let mod = new Modifier(name);\n return (tag) => {\n if (tag.modified.indexOf(mod) > -1)\n return tag;\n return Modifier.get(tag.base || tag, tag.modified.concat(mod).sort((a, b) => a.id - b.id));\n };\n }\n}\nlet nextModifierID = 0;\nclass Modifier {\n constructor(name) {\n this.name = name;\n this.instances = [];\n this.id = nextModifierID++;\n }\n static get(base, mods) {\n if (!mods.length)\n return base;\n let exists = mods[0].instances.find(t => t.base == base && sameArray(mods, t.modified));\n if (exists)\n return exists;\n let set = [], tag = new Tag(base.name, set, base, mods);\n for (let m of mods)\n m.instances.push(tag);\n let configs = powerSet(mods);\n for (let parent of base.set)\n if (!parent.modified.length)\n for (let config of configs)\n set.push(Modifier.get(parent, config));\n return tag;\n }\n}\nfunction sameArray(a, b) {\n return a.length == b.length && a.every((x, i) => x == b[i]);\n}\nfunction powerSet(array) {\n let sets = [[]];\n for (let i = 0; i < array.length; i++) {\n for (let j = 0, e = sets.length; j < e; j++) {\n sets.push(sets[j].concat(array[i]));\n }\n }\n return sets.sort((a, b) => b.length - a.length);\n}\n/**\nThis function is used to add a set of tags to a language syntax\nvia [`NodeSet.extend`](#common.NodeSet.extend) or\n[`LRParser.configure`](#lr.LRParser.configure).\n\nThe argument object maps node selectors to [highlighting\ntags](#highlight.Tag) or arrays of tags.\n\nNode selectors may hold one or more (space-separated) node paths.\nSuch a path can be a [node name](#common.NodeType.name), or\nmultiple node names (or `*` wildcards) separated by slash\ncharacters, as in `\"Block/Declaration/VariableName\"`. Such a path\nmatches the final node but only if its direct parent nodes are the\nother nodes mentioned. A `*` in such a path matches any parent,\nbut only a single level—wildcards that match multiple parents\naren't supported, both for efficiency reasons and because Lezer\ntrees make it rather hard to reason about what they would match.)\n\nA path can be ended with `/...` to indicate that the tag assigned\nto the node should also apply to all child nodes, even if they\nmatch their own style (by default, only the innermost style is\nused).\n\nWhen a path ends in `!`, as in `Attribute!`, no further matching\nhappens for the node's child nodes, and the entire node gets the\ngiven style.\n\nIn this notation, node names that contain `/`, `!`, `*`, or `...`\nmust be quoted as JSON strings.\n\nFor example:\n\n```javascript\nparser.configure({props: [\n styleTags({\n // Style Number and BigNumber nodes\n \"Number BigNumber\": tags.number,\n // Style Escape nodes whose parent is String\n \"String/Escape\": tags.escape,\n // Style anything inside Attributes nodes\n \"Attributes!\": tags.meta,\n // Add a style to all content inside Italic nodes\n \"Italic/...\": tags.emphasis,\n // Style InvalidString nodes as both `string` and `invalid`\n \"InvalidString\": [tags.string, tags.invalid],\n // Style the node named \"/\" as punctuation\n '\"/\"': tags.punctuation\n })\n]})\n```\n*/\nfunction styleTags(spec) {\n let byName = Object.create(null);\n for (let prop in spec) {\n let tags = spec[prop];\n if (!Array.isArray(tags))\n tags = [tags];\n for (let part of prop.split(\" \"))\n if (part) {\n let pieces = [], mode = 2 /* Mode.Normal */, rest = part;\n for (let pos = 0;;) {\n if (rest == \"...\" && pos > 0 && pos + 3 == part.length) {\n mode = 1 /* Mode.Inherit */;\n break;\n }\n let m = /^\"(?:[^\"\\\\]|\\\\.)*?\"|[^\\/!]+/.exec(rest);\n if (!m)\n throw new RangeError(\"Invalid path: \" + part);\n pieces.push(m[0] == \"*\" ? \"\" : m[0][0] == '\"' ? JSON.parse(m[0]) : m[0]);\n pos += m[0].length;\n if (pos == part.length)\n break;\n let next = part[pos++];\n if (pos == part.length && next == \"!\") {\n mode = 0 /* Mode.Opaque */;\n break;\n }\n if (next != \"/\")\n throw new RangeError(\"Invalid path: \" + part);\n rest = part.slice(pos);\n }\n let last = pieces.length - 1, inner = pieces[last];\n if (!inner)\n throw new RangeError(\"Invalid path: \" + part);\n let rule = new Rule(tags, mode, last > 0 ? pieces.slice(0, last) : null);\n byName[inner] = rule.sort(byName[inner]);\n }\n }\n return ruleNodeProp.add(byName);\n}\nconst ruleNodeProp = new NodeProp({\n combine(a, b) {\n let cur, root, take;\n while (a || b) {\n if (!a || b && a.depth >= b.depth) {\n take = b;\n b = b.next;\n }\n else {\n take = a;\n a = a.next;\n }\n if (cur && cur.mode == take.mode && !take.context && !cur.context)\n continue;\n let copy = new Rule(take.tags, take.mode, take.context);\n if (cur)\n cur.next = copy;\n else\n root = copy;\n cur = copy;\n }\n return root;\n }\n});\nclass Rule {\n constructor(tags, mode, context, next) {\n this.tags = tags;\n this.mode = mode;\n this.context = context;\n this.next = next;\n }\n get opaque() { return this.mode == 0 /* Mode.Opaque */; }\n get inherit() { return this.mode == 1 /* Mode.Inherit */; }\n sort(other) {\n if (!other || other.depth < this.depth) {\n this.next = other;\n return this;\n }\n other.next = this.sort(other.next);\n return other;\n }\n get depth() { return this.context ? this.context.length : 0; }\n}\nRule.empty = new Rule([], 2 /* Mode.Normal */, null);\n/**\nDefine a [highlighter](#highlight.Highlighter) from an array of\ntag/class pairs. Classes associated with more specific tags will\ntake precedence.\n*/\nfunction tagHighlighter(tags, options) {\n let map = Object.create(null);\n for (let style of tags) {\n if (!Array.isArray(style.tag))\n map[style.tag.id] = style.class;\n else\n for (let tag of style.tag)\n map[tag.id] = style.class;\n }\n let { scope, all = null } = options || {};\n return {\n style: (tags) => {\n let cls = all;\n for (let tag of tags) {\n for (let sub of tag.set) {\n let tagClass = map[sub.id];\n if (tagClass) {\n cls = cls ? cls + \" \" + tagClass : tagClass;\n break;\n }\n }\n }\n return cls;\n },\n scope\n };\n}\nfunction highlightTags(highlighters, tags) {\n let result = null;\n for (let highlighter of highlighters) {\n let value = highlighter.style(tags);\n if (value)\n result = result ? result + \" \" + value : value;\n }\n return result;\n}\n/**\nHighlight the given [tree](#common.Tree) with the given\n[highlighter](#highlight.Highlighter). Often, the higher-level\n[`highlightCode`](#highlight.highlightCode) function is easier to\nuse.\n*/\nfunction highlightTree(tree, highlighter, \n/**\nAssign styling to a region of the text. Will be called, in order\nof position, for any ranges where more than zero classes apply.\n`classes` is a space separated string of CSS classes.\n*/\nputStyle, \n/**\nThe start of the range to highlight.\n*/\nfrom = 0, \n/**\nThe end of the range.\n*/\nto = tree.length) {\n let builder = new HighlightBuilder(from, Array.isArray(highlighter) ? highlighter : [highlighter], putStyle);\n builder.highlightRange(tree.cursor(), from, to, \"\", builder.highlighters);\n builder.flush(to);\n}\n/**\nHighlight the given tree with the given highlighter, calling\n`putText` for every piece of text, either with a set of classes or\nwith the empty string when unstyled, and `putBreak` for every line\nbreak.\n*/\nfunction highlightCode(code, tree, highlighter, putText, putBreak, from = 0, to = code.length) {\n let pos = from;\n function writeTo(p, classes) {\n if (p <= pos)\n return;\n for (let text = code.slice(pos, p), i = 0;;) {\n let nextBreak = text.indexOf(\"\\n\", i);\n let upto = nextBreak < 0 ? text.length : nextBreak;\n if (upto > i)\n putText(text.slice(i, upto), classes);\n if (nextBreak < 0)\n break;\n putBreak();\n i = nextBreak + 1;\n }\n pos = p;\n }\n highlightTree(tree, highlighter, (from, to, classes) => {\n writeTo(from, \"\");\n writeTo(to, classes);\n }, from, to);\n writeTo(to, \"\");\n}\nclass HighlightBuilder {\n constructor(at, highlighters, span) {\n this.at = at;\n this.highlighters = highlighters;\n this.span = span;\n this.class = \"\";\n }\n startSpan(at, cls) {\n if (cls != this.class) {\n this.flush(at);\n if (at > this.at)\n this.at = at;\n this.class = cls;\n }\n }\n flush(to) {\n if (to > this.at && this.class)\n this.span(this.at, to, this.class);\n }\n highlightRange(cursor, from, to, inheritedClass, highlighters) {\n let { type, from: start, to: end } = cursor;\n if (start >= to || end <= from)\n return;\n if (type.isTop)\n highlighters = this.highlighters.filter(h => !h.scope || h.scope(type));\n let cls = inheritedClass;\n let rule = getStyleTags(cursor) || Rule.empty;\n let tagCls = highlightTags(highlighters, rule.tags);\n if (tagCls) {\n if (cls)\n cls += \" \";\n cls += tagCls;\n if (rule.mode == 1 /* Mode.Inherit */)\n inheritedClass += (inheritedClass ? \" \" : \"\") + tagCls;\n }\n this.startSpan(Math.max(from, start), cls);\n if (rule.opaque)\n return;\n let mounted = cursor.tree && cursor.tree.prop(NodeProp.mounted);\n if (mounted && mounted.overlay) {\n let inner = cursor.node.enter(mounted.overlay[0].from + start, 1);\n let innerHighlighters = this.highlighters.filter(h => !h.scope || h.scope(mounted.tree.type));\n let hasChild = cursor.firstChild();\n for (let i = 0, pos = start;; i++) {\n let next = i < mounted.overlay.length ? mounted.overlay[i] : null;\n let nextPos = next ? next.from + start : end;\n let rangeFrom = Math.max(from, pos), rangeTo = Math.min(to, nextPos);\n if (rangeFrom < rangeTo && hasChild) {\n while (cursor.from < rangeTo) {\n this.highlightRange(cursor, rangeFrom, rangeTo, inheritedClass, highlighters);\n this.startSpan(Math.min(rangeTo, cursor.to), cls);\n if (cursor.to >= nextPos || !cursor.nextSibling())\n break;\n }\n }\n if (!next || nextPos > to)\n break;\n pos = next.to + start;\n if (pos > from) {\n this.highlightRange(inner.cursor(), Math.max(from, next.from + start), Math.min(to, pos), \"\", innerHighlighters);\n this.startSpan(Math.min(to, pos), cls);\n }\n }\n if (hasChild)\n cursor.parent();\n }\n else if (cursor.firstChild()) {\n if (mounted)\n inheritedClass = \"\";\n do {\n if (cursor.to <= from)\n continue;\n if (cursor.from >= to)\n break;\n this.highlightRange(cursor, from, to, inheritedClass, highlighters);\n this.startSpan(Math.min(to, cursor.to), cls);\n } while (cursor.nextSibling());\n cursor.parent();\n }\n }\n}\n/**\nMatch a syntax node's [highlight rules](#highlight.styleTags). If\nthere's a match, return its set of tags, and whether it is\nopaque (uses a `!`) or applies to all child nodes (`/...`).\n*/\nfunction getStyleTags(node) {\n let rule = node.type.prop(ruleNodeProp);\n while (rule && rule.context && !node.matchContext(rule.context))\n rule = rule.next;\n return rule || null;\n}\nconst t = Tag.define;\nconst comment = t(), name = t(), typeName = t(name), propertyName = t(name), literal = t(), string = t(literal), number = t(literal), content = t(), heading = t(content), keyword = t(), operator = t(), punctuation = t(), bracket = t(punctuation), meta = t();\n/**\nThe default set of highlighting [tags](#highlight.Tag).\n\nThis collection is heavily biased towards programming languages,\nand necessarily incomplete. A full ontology of syntactic\nconstructs would fill a stack of books, and be impractical to\nwrite themes for. So try to make do with this set. If all else\nfails, [open an\nissue](https://github.com/codemirror/codemirror.next) to propose a\nnew tag, or [define](#highlight.Tag^define) a local custom tag for\nyour use case.\n\nNote that it is not obligatory to always attach the most specific\ntag possible to an element—if your grammar can't easily\ndistinguish a certain type of element (such as a local variable),\nit is okay to style it as its more general variant (a variable).\n\nFor tags that extend some parent tag, the documentation links to\nthe parent.\n*/\nconst tags = {\n /**\n A comment.\n */\n comment,\n /**\n A line [comment](#highlight.tags.comment).\n */\n lineComment: t(comment),\n /**\n A block [comment](#highlight.tags.comment).\n */\n blockComment: t(comment),\n /**\n A documentation [comment](#highlight.tags.comment).\n */\n docComment: t(comment),\n /**\n Any kind of identifier.\n */\n name,\n /**\n The [name](#highlight.tags.name) of a variable.\n */\n variableName: t(name),\n /**\n A type [name](#highlight.tags.name).\n */\n typeName: typeName,\n /**\n A tag name (subtag of [`typeName`](#highlight.tags.typeName)).\n */\n tagName: t(typeName),\n /**\n A property or field [name](#highlight.tags.name).\n */\n propertyName: propertyName,\n /**\n An attribute name (subtag of [`propertyName`](#highlight.tags.propertyName)).\n */\n attributeName: t(propertyName),\n /**\n The [name](#highlight.tags.name) of a class.\n */\n className: t(name),\n /**\n A label [name](#highlight.tags.name).\n */\n labelName: t(name),\n /**\n A namespace [name](#highlight.tags.name).\n */\n namespace: t(name),\n /**\n The [name](#highlight.tags.name) of a macro.\n */\n macroName: t(name),\n /**\n A literal value.\n */\n literal,\n /**\n A string [literal](#highlight.tags.literal).\n */\n string,\n /**\n A documentation [string](#highlight.tags.string).\n */\n docString: t(string),\n /**\n A character literal (subtag of [string](#highlight.tags.string)).\n */\n character: t(string),\n /**\n An attribute value (subtag of [string](#highlight.tags.string)).\n */\n attributeValue: t(string),\n /**\n A number [literal](#highlight.tags.literal).\n */\n number,\n /**\n An integer [number](#highlight.tags.number) literal.\n */\n integer: t(number),\n /**\n A floating-point [number](#highlight.tags.number) literal.\n */\n float: t(number),\n /**\n A boolean [literal](#highlight.tags.literal).\n */\n bool: t(literal),\n /**\n Regular expression [literal](#highlight.tags.literal).\n */\n regexp: t(literal),\n /**\n An escape [literal](#highlight.tags.literal), for example a\n backslash escape in a string.\n */\n escape: t(literal),\n /**\n A color [literal](#highlight.tags.literal).\n */\n color: t(literal),\n /**\n A URL [literal](#highlight.tags.literal).\n */\n url: t(literal),\n /**\n A language keyword.\n */\n keyword,\n /**\n The [keyword](#highlight.tags.keyword) for the self or this\n object.\n */\n self: t(keyword),\n /**\n The [keyword](#highlight.tags.keyword) for null.\n */\n null: t(keyword),\n /**\n A [keyword](#highlight.tags.keyword) denoting some atomic value.\n */\n atom: t(keyword),\n /**\n A [keyword](#highlight.tags.keyword) that represents a unit.\n */\n unit: t(keyword),\n /**\n A modifier [keyword](#highlight.tags.keyword).\n */\n modifier: t(keyword),\n /**\n A [keyword](#highlight.tags.keyword) that acts as an operator.\n */\n operatorKeyword: t(keyword),\n /**\n A control-flow related [keyword](#highlight.tags.keyword).\n */\n controlKeyword: t(keyword),\n /**\n A [keyword](#highlight.tags.keyword) that defines something.\n */\n definitionKeyword: t(keyword),\n /**\n A [keyword](#highlight.tags.keyword) related to defining or\n interfacing with modules.\n */\n moduleKeyword: t(keyword),\n /**\n An operator.\n */\n operator,\n /**\n An [operator](#highlight.tags.operator) that dereferences something.\n */\n derefOperator: t(operator),\n /**\n Arithmetic-related [operator](#highlight.tags.operator).\n */\n arithmeticOperator: t(operator),\n /**\n Logical [operator](#highlight.tags.operator).\n */\n logicOperator: t(operator),\n /**\n Bit [operator](#highlight.tags.operator).\n */\n bitwiseOperator: t(operator),\n /**\n Comparison [operator](#highlight.tags.operator).\n */\n compareOperator: t(operator),\n /**\n [Operator](#highlight.tags.operator) that updates its operand.\n */\n updateOperator: t(operator),\n /**\n [Operator](#highlight.tags.operator) that defines something.\n */\n definitionOperator: t(operator),\n /**\n Type-related [operator](#highlight.tags.operator).\n */\n typeOperator: t(operator),\n /**\n Control-flow [operator](#highlight.tags.operator).\n */\n controlOperator: t(operator),\n /**\n Program or markup punctuation.\n */\n punctuation,\n /**\n [Punctuation](#highlight.tags.punctuation) that separates\n things.\n */\n separator: t(punctuation),\n /**\n Bracket-style [punctuation](#highlight.tags.punctuation).\n */\n bracket,\n /**\n Angle [brackets](#highlight.tags.bracket) (usually `<` and `>`\n tokens).\n */\n angleBracket: t(bracket),\n /**\n Square [brackets](#highlight.tags.bracket) (usually `[` and `]`\n tokens).\n */\n squareBracket: t(bracket),\n /**\n Parentheses (usually `(` and `)` tokens). Subtag of\n [bracket](#highlight.tags.bracket).\n */\n paren: t(bracket),\n /**\n Braces (usually `{` and `}` tokens). Subtag of\n [bracket](#highlight.tags.bracket).\n */\n brace: t(bracket),\n /**\n Content, for example plain text in XML or markup documents.\n */\n content,\n /**\n [Content](#highlight.tags.content) that represents a heading.\n */\n heading,\n /**\n A level 1 [heading](#highlight.tags.heading).\n */\n heading1: t(heading),\n /**\n A level 2 [heading](#highlight.tags.heading).\n */\n heading2: t(heading),\n /**\n A level 3 [heading](#highlight.tags.heading).\n */\n heading3: t(heading),\n /**\n A level 4 [heading](#highlight.tags.heading).\n */\n heading4: t(heading),\n /**\n A level 5 [heading](#highlight.tags.heading).\n */\n heading5: t(heading),\n /**\n A level 6 [heading](#highlight.tags.heading).\n */\n heading6: t(heading),\n /**\n A prose [content](#highlight.tags.content) separator (such as a horizontal rule).\n */\n contentSeparator: t(content),\n /**\n [Content](#highlight.tags.content) that represents a list.\n */\n list: t(content),\n /**\n [Content](#highlight.tags.content) that represents a quote.\n */\n quote: t(content),\n /**\n [Content](#highlight.tags.content) that is emphasized.\n */\n emphasis: t(content),\n /**\n [Content](#highlight.tags.content) that is styled strong.\n */\n strong: t(content),\n /**\n [Content](#highlight.tags.content) that is part of a link.\n */\n link: t(content),\n /**\n [Content](#highlight.tags.content) that is styled as code or\n monospace.\n */\n monospace: t(content),\n /**\n [Content](#highlight.tags.content) that has a strike-through\n style.\n */\n strikethrough: t(content),\n /**\n Inserted text in a change-tracking format.\n */\n inserted: t(),\n /**\n Deleted text.\n */\n deleted: t(),\n /**\n Changed text.\n */\n changed: t(),\n /**\n An invalid or unsyntactic element.\n */\n invalid: t(),\n /**\n Metadata or meta-instruction.\n */\n meta,\n /**\n [Metadata](#highlight.tags.meta) that applies to the entire\n document.\n */\n documentMeta: t(meta),\n /**\n [Metadata](#highlight.tags.meta) that annotates or adds\n attributes to a given syntactic element.\n */\n annotation: t(meta),\n /**\n Processing instruction or preprocessor directive. Subtag of\n [meta](#highlight.tags.meta).\n */\n processingInstruction: t(meta),\n /**\n [Modifier](#highlight.Tag^defineModifier) that indicates that a\n given element is being defined. Expected to be used with the\n various [name](#highlight.tags.name) tags.\n */\n definition: Tag.defineModifier(\"definition\"),\n /**\n [Modifier](#highlight.Tag^defineModifier) that indicates that\n something is constant. Mostly expected to be used with\n [variable names](#highlight.tags.variableName).\n */\n constant: Tag.defineModifier(\"constant\"),\n /**\n [Modifier](#highlight.Tag^defineModifier) used to indicate that\n a [variable](#highlight.tags.variableName) or [property\n name](#highlight.tags.propertyName) is being called or defined\n as a function.\n */\n function: Tag.defineModifier(\"function\"),\n /**\n [Modifier](#highlight.Tag^defineModifier) that can be applied to\n [names](#highlight.tags.name) to indicate that they belong to\n the language's standard environment.\n */\n standard: Tag.defineModifier(\"standard\"),\n /**\n [Modifier](#highlight.Tag^defineModifier) that indicates a given\n [names](#highlight.tags.name) is local to some scope.\n */\n local: Tag.defineModifier(\"local\"),\n /**\n A generic variant [modifier](#highlight.Tag^defineModifier) that\n can be used to tag language-specific alternative variants of\n some common tag. It is recommended for themes to define special\n forms of at least the [string](#highlight.tags.string) and\n [variable name](#highlight.tags.variableName) tags, since those\n come up a lot.\n */\n special: Tag.defineModifier(\"special\")\n};\nfor (let name in tags) {\n let val = tags[name];\n if (val instanceof Tag)\n val.name = name;\n}\n/**\nThis is a highlighter that adds stable, predictable classes to\ntokens, for styling with external CSS.\n\nThe following tags are mapped to their name prefixed with `\"tok-\"`\n(for example `\"tok-comment\"`):\n\n* [`link`](#highlight.tags.link)\n* [`heading`](#highlight.tags.heading)\n* [`emphasis`](#highlight.tags.emphasis)\n* [`strong`](#highlight.tags.strong)\n* [`keyword`](#highlight.tags.keyword)\n* [`atom`](#highlight.tags.atom)\n* [`bool`](#highlight.tags.bool)\n* [`url`](#highlight.tags.url)\n* [`labelName`](#highlight.tags.labelName)\n* [`inserted`](#highlight.tags.inserted)\n* [`deleted`](#highlight.tags.deleted)\n* [`literal`](#highlight.tags.literal)\n* [`string`](#highlight.tags.string)\n* [`number`](#highlight.tags.number)\n* [`variableName`](#highlight.tags.variableName)\n* [`typeName`](#highlight.tags.typeName)\n* [`namespace`](#highlight.tags.namespace)\n* [`className`](#highlight.tags.className)\n* [`macroName`](#highlight.tags.macroName)\n* [`propertyName`](#highlight.tags.propertyName)\n* [`operator`](#highlight.tags.operator)\n* [`comment`](#highlight.tags.comment)\n* [`meta`](#highlight.tags.meta)\n* [`punctuation`](#highlight.tags.punctuation)\n* [`invalid`](#highlight.tags.invalid)\n\nIn addition, these mappings are provided:\n\n* [`regexp`](#highlight.tags.regexp),\n [`escape`](#highlight.tags.escape), and\n [`special`](#highlight.tags.special)[`(string)`](#highlight.tags.string)\n are mapped to `\"tok-string2\"`\n* [`special`](#highlight.tags.special)[`(variableName)`](#highlight.tags.variableName)\n to `\"tok-variableName2\"`\n* [`local`](#highlight.tags.local)[`(variableName)`](#highlight.tags.variableName)\n to `\"tok-variableName tok-local\"`\n* [`definition`](#highlight.tags.definition)[`(variableName)`](#highlight.tags.variableName)\n to `\"tok-variableName tok-definition\"`\n* [`definition`](#highlight.tags.definition)[`(propertyName)`](#highlight.tags.propertyName)\n to `\"tok-propertyName tok-definition\"`\n*/\nconst classHighlighter = tagHighlighter([\n { tag: tags.link, class: \"tok-link\" },\n { tag: tags.heading, class: \"tok-heading\" },\n { tag: tags.emphasis, class: \"tok-emphasis\" },\n { tag: tags.strong, class: \"tok-strong\" },\n { tag: tags.keyword, class: \"tok-keyword\" },\n { tag: tags.atom, class: \"tok-atom\" },\n { tag: tags.bool, class: \"tok-bool\" },\n { tag: tags.url, class: \"tok-url\" },\n { tag: tags.labelName, class: \"tok-labelName\" },\n { tag: tags.inserted, class: \"tok-inserted\" },\n { tag: tags.deleted, class: \"tok-deleted\" },\n { tag: tags.literal, class: \"tok-literal\" },\n { tag: tags.string, class: \"tok-string\" },\n { tag: tags.number, class: \"tok-number\" },\n { tag: [tags.regexp, tags.escape, tags.special(tags.string)], class: \"tok-string2\" },\n { tag: tags.variableName, class: \"tok-variableName\" },\n { tag: tags.local(tags.variableName), class: \"tok-variableName tok-local\" },\n { tag: tags.definition(tags.variableName), class: \"tok-variableName tok-definition\" },\n { tag: tags.special(tags.variableName), class: \"tok-variableName2\" },\n { tag: tags.definition(tags.propertyName), class: \"tok-propertyName tok-definition\" },\n { tag: tags.typeName, class: \"tok-typeName\" },\n { tag: tags.namespace, class: \"tok-namespace\" },\n { tag: tags.className, class: \"tok-className\" },\n { tag: tags.macroName, class: \"tok-macroName\" },\n { tag: tags.propertyName, class: \"tok-propertyName\" },\n { tag: tags.operator, class: \"tok-operator\" },\n { tag: tags.comment, class: \"tok-comment\" },\n { tag: tags.meta, class: \"tok-meta\" },\n { tag: tags.invalid, class: \"tok-invalid\" },\n { tag: tags.punctuation, class: \"tok-punctuation\" }\n]);\n\nexport { Tag, classHighlighter, getStyleTags, highlightCode, highlightTree, styleTags, tagHighlighter, tags };\n","import { NodeProp, IterMode, Tree, TreeFragment, Parser, NodeType, NodeSet } from '@lezer/common';\nimport { StateEffect, StateField, Facet, EditorState, countColumn, combineConfig, RangeSet, RangeSetBuilder, Prec } from '@codemirror/state';\nimport { ViewPlugin, logException, EditorView, Decoration, WidgetType, gutter, GutterMarker, Direction } from '@codemirror/view';\nimport { tags, tagHighlighter, highlightTree, styleTags } from '@lezer/highlight';\nimport { StyleModule } from 'style-mod';\n\nvar _a;\n/**\nNode prop stored in a parser's top syntax node to provide the\nfacet that stores language-specific data for that language.\n*/\nconst languageDataProp = /*@__PURE__*/new NodeProp();\n/**\nHelper function to define a facet (to be added to the top syntax\nnode(s) for a language via\n[`languageDataProp`](https://codemirror.net/6/docs/ref/#language.languageDataProp)), that will be\nused to associate language data with the language. You\nprobably only need this when subclassing\n[`Language`](https://codemirror.net/6/docs/ref/#language.Language).\n*/\nfunction defineLanguageFacet(baseData) {\n return Facet.define({\n combine: baseData ? values => values.concat(baseData) : undefined\n });\n}\n/**\nSyntax node prop used to register sublanguages. Should be added to\nthe top level node type for the language.\n*/\nconst sublanguageProp = /*@__PURE__*/new NodeProp();\n/**\nA language object manages parsing and per-language\n[metadata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt). Parse data is\nmanaged as a [Lezer](https://lezer.codemirror.net) tree. The class\ncan be used directly, via the [`LRLanguage`](https://codemirror.net/6/docs/ref/#language.LRLanguage)\nsubclass for [Lezer](https://lezer.codemirror.net/) LR parsers, or\nvia the [`StreamLanguage`](https://codemirror.net/6/docs/ref/#language.StreamLanguage) subclass\nfor stream parsers.\n*/\nclass Language {\n /**\n Construct a language object. If you need to invoke this\n directly, first define a data facet with\n [`defineLanguageFacet`](https://codemirror.net/6/docs/ref/#language.defineLanguageFacet), and then\n configure your parser to [attach](https://codemirror.net/6/docs/ref/#language.languageDataProp) it\n to the language's outer syntax node.\n */\n constructor(\n /**\n The [language data](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt) facet\n used for this language.\n */\n data, parser, extraExtensions = [], \n /**\n A language name.\n */\n name = \"\") {\n this.data = data;\n this.name = name;\n // Kludge to define EditorState.tree as a debugging helper,\n // without the EditorState package actually knowing about\n // languages and lezer trees.\n if (!EditorState.prototype.hasOwnProperty(\"tree\"))\n Object.defineProperty(EditorState.prototype, \"tree\", { get() { return syntaxTree(this); } });\n this.parser = parser;\n this.extension = [\n language.of(this),\n EditorState.languageData.of((state, pos, side) => {\n let top = topNodeAt(state, pos, side), data = top.type.prop(languageDataProp);\n if (!data)\n return [];\n let base = state.facet(data), sub = top.type.prop(sublanguageProp);\n if (sub) {\n let innerNode = top.resolve(pos - top.from, side);\n for (let sublang of sub)\n if (sublang.test(innerNode, state)) {\n let data = state.facet(sublang.facet);\n return sublang.type == \"replace\" ? data : data.concat(base);\n }\n }\n return base;\n })\n ].concat(extraExtensions);\n }\n /**\n Query whether this language is active at the given position.\n */\n isActiveAt(state, pos, side = -1) {\n return topNodeAt(state, pos, side).type.prop(languageDataProp) == this.data;\n }\n /**\n Find the document regions that were parsed using this language.\n The returned regions will _include_ any nested languages rooted\n in this language, when those exist.\n */\n findRegions(state) {\n let lang = state.facet(language);\n if ((lang === null || lang === void 0 ? void 0 : lang.data) == this.data)\n return [{ from: 0, to: state.doc.length }];\n if (!lang || !lang.allowsNesting)\n return [];\n let result = [];\n let explore = (tree, from) => {\n if (tree.prop(languageDataProp) == this.data) {\n result.push({ from, to: from + tree.length });\n return;\n }\n let mount = tree.prop(NodeProp.mounted);\n if (mount) {\n if (mount.tree.prop(languageDataProp) == this.data) {\n if (mount.overlay)\n for (let r of mount.overlay)\n result.push({ from: r.from + from, to: r.to + from });\n else\n result.push({ from: from, to: from + tree.length });\n return;\n }\n else if (mount.overlay) {\n let size = result.length;\n explore(mount.tree, mount.overlay[0].from + from);\n if (result.length > size)\n return;\n }\n }\n for (let i = 0; i < tree.children.length; i++) {\n let ch = tree.children[i];\n if (ch instanceof Tree)\n explore(ch, tree.positions[i] + from);\n }\n };\n explore(syntaxTree(state), 0);\n return result;\n }\n /**\n Indicates whether this language allows nested languages. The\n default implementation returns true.\n */\n get allowsNesting() { return true; }\n}\n/**\n@internal\n*/\nLanguage.setState = /*@__PURE__*/StateEffect.define();\nfunction topNodeAt(state, pos, side) {\n let topLang = state.facet(language), tree = syntaxTree(state).topNode;\n if (!topLang || topLang.allowsNesting) {\n for (let node = tree; node; node = node.enter(pos, side, IterMode.ExcludeBuffers | IterMode.EnterBracketed))\n if (node.type.isTop)\n tree = node;\n }\n return tree;\n}\n/**\nA subclass of [`Language`](https://codemirror.net/6/docs/ref/#language.Language) for use with Lezer\n[LR parsers](https://lezer.codemirror.net/docs/ref#lr.LRParser)\nparsers.\n*/\nclass LRLanguage extends Language {\n constructor(data, parser, name) {\n super(data, parser, [], name);\n this.parser = parser;\n }\n /**\n Define a language from a parser.\n */\n static define(spec) {\n let data = defineLanguageFacet(spec.languageData);\n return new LRLanguage(data, spec.parser.configure({\n props: [languageDataProp.add(type => type.isTop ? data : undefined)]\n }), spec.name);\n }\n /**\n Create a new instance of this language with a reconfigured\n version of its parser and optionally a new name.\n */\n configure(options, name) {\n return new LRLanguage(this.data, this.parser.configure(options), name || this.name);\n }\n get allowsNesting() { return this.parser.hasWrappers(); }\n}\n/**\nGet the syntax tree for a state, which is the current (possibly\nincomplete) parse tree of the active\n[language](https://codemirror.net/6/docs/ref/#language.Language), or the empty tree if there is no\nlanguage available.\n*/\nfunction syntaxTree(state) {\n let field = state.field(Language.state, false);\n return field ? field.tree : Tree.empty;\n}\n/**\nTry to get a parse tree that spans at least up to `upto`. The\nmethod will do at most `timeout` milliseconds of work to parse\nup to that point if the tree isn't already available.\n*/\nfunction ensureSyntaxTree(state, upto, timeout = 50) {\n var _a;\n let parse = (_a = state.field(Language.state, false)) === null || _a === void 0 ? void 0 : _a.context;\n if (!parse)\n return null;\n let oldVieport = parse.viewport;\n parse.updateViewport({ from: 0, to: upto });\n let result = parse.isDone(upto) || parse.work(timeout, upto) ? parse.tree : null;\n parse.updateViewport(oldVieport);\n return result;\n}\n/**\nQueries whether there is a full syntax tree available up to the\ngiven document position. If there isn't, the background parse\nprocess _might_ still be working and update the tree further, but\nthere is no guarantee of that—the parser will [stop\nworking](https://codemirror.net/6/docs/ref/#language.syntaxParserRunning) when it has spent a\ncertain amount of time or has moved beyond the visible viewport.\nAlways returns false if no language has been enabled.\n*/\nfunction syntaxTreeAvailable(state, upto = state.doc.length) {\n var _a;\n return ((_a = state.field(Language.state, false)) === null || _a === void 0 ? void 0 : _a.context.isDone(upto)) || false;\n}\n/**\nMove parsing forward, and update the editor state afterwards to\nreflect the new tree. Will work for at most `timeout`\nmilliseconds. Returns true if the parser managed get to the given\nposition in that time.\n*/\nfunction forceParsing(view, upto = view.viewport.to, timeout = 100) {\n let success = ensureSyntaxTree(view.state, upto, timeout);\n if (success != syntaxTree(view.state))\n view.dispatch({});\n return !!success;\n}\n/**\nTells you whether the language parser is planning to do more\nparsing work (in a `requestIdleCallback` pseudo-thread) or has\nstopped running, either because it parsed the entire document,\nbecause it spent too much time and was cut off, or because there\nis no language parser enabled.\n*/\nfunction syntaxParserRunning(view) {\n var _a;\n return ((_a = view.plugin(parseWorker)) === null || _a === void 0 ? void 0 : _a.isWorking()) || false;\n}\n/**\nLezer-style\n[`Input`](https://lezer.codemirror.net/docs/ref#common.Input)\nobject for a [`Text`](https://codemirror.net/6/docs/ref/#state.Text) object.\n*/\nclass DocInput {\n /**\n Create an input object for the given document.\n */\n constructor(doc) {\n this.doc = doc;\n this.cursorPos = 0;\n this.string = \"\";\n this.cursor = doc.iter();\n }\n get length() { return this.doc.length; }\n syncTo(pos) {\n this.string = this.cursor.next(pos - this.cursorPos).value;\n this.cursorPos = pos + this.string.length;\n return this.cursorPos - this.string.length;\n }\n chunk(pos) {\n this.syncTo(pos);\n return this.string;\n }\n get lineChunks() { return true; }\n read(from, to) {\n let stringStart = this.cursorPos - this.string.length;\n if (from < stringStart || to >= this.cursorPos)\n return this.doc.sliceString(from, to);\n else\n return this.string.slice(from - stringStart, to - stringStart);\n }\n}\nlet currentContext = null;\n/**\nA parse context provided to parsers working on the editor content.\n*/\nclass ParseContext {\n constructor(parser, \n /**\n The current editor state.\n */\n state, \n /**\n Tree fragments that can be reused by incremental re-parses.\n */\n fragments = [], \n /**\n @internal\n */\n tree, \n /**\n @internal\n */\n treeLen, \n /**\n The current editor viewport (or some overapproximation\n thereof). Intended to be used for opportunistically avoiding\n work (in which case\n [`skipUntilInView`](https://codemirror.net/6/docs/ref/#language.ParseContext.skipUntilInView)\n should be called to make sure the parser is restarted when the\n skipped region becomes visible).\n */\n viewport, \n /**\n @internal\n */\n skipped, \n /**\n This is where skipping parsers can register a promise that,\n when resolved, will schedule a new parse. It is cleared when\n the parse worker picks up the promise. @internal\n */\n scheduleOn) {\n this.parser = parser;\n this.state = state;\n this.fragments = fragments;\n this.tree = tree;\n this.treeLen = treeLen;\n this.viewport = viewport;\n this.skipped = skipped;\n this.scheduleOn = scheduleOn;\n this.parse = null;\n /**\n @internal\n */\n this.tempSkipped = [];\n }\n /**\n @internal\n */\n static create(parser, state, viewport) {\n return new ParseContext(parser, state, [], Tree.empty, 0, viewport, [], null);\n }\n startParse() {\n return this.parser.startParse(new DocInput(this.state.doc), this.fragments);\n }\n /**\n @internal\n */\n work(until, upto) {\n if (upto != null && upto >= this.state.doc.length)\n upto = undefined;\n if (this.tree != Tree.empty && this.isDone(upto !== null && upto !== void 0 ? upto : this.state.doc.length)) {\n this.takeTree();\n return true;\n }\n return this.withContext(() => {\n var _a;\n if (typeof until == \"number\") {\n let endTime = Date.now() + until;\n until = () => Date.now() > endTime;\n }\n if (!this.parse)\n this.parse = this.startParse();\n if (upto != null && (this.parse.stoppedAt == null || this.parse.stoppedAt > upto) &&\n upto < this.state.doc.length)\n this.parse.stopAt(upto);\n for (;;) {\n let done = this.parse.advance();\n if (done) {\n this.fragments = this.withoutTempSkipped(TreeFragment.addTree(done, this.fragments, this.parse.stoppedAt != null));\n this.treeLen = (_a = this.parse.stoppedAt) !== null && _a !== void 0 ? _a : this.state.doc.length;\n this.tree = done;\n this.parse = null;\n if (this.treeLen < (upto !== null && upto !== void 0 ? upto : this.state.doc.length))\n this.parse = this.startParse();\n else\n return true;\n }\n if (until())\n return false;\n }\n });\n }\n /**\n @internal\n */\n takeTree() {\n let pos, tree;\n if (this.parse && (pos = this.parse.parsedPos) >= this.treeLen) {\n if (this.parse.stoppedAt == null || this.parse.stoppedAt > pos)\n this.parse.stopAt(pos);\n this.withContext(() => { while (!(tree = this.parse.advance())) { } });\n this.treeLen = pos;\n this.tree = tree;\n this.fragments = this.withoutTempSkipped(TreeFragment.addTree(this.tree, this.fragments, true));\n this.parse = null;\n }\n }\n withContext(f) {\n let prev = currentContext;\n currentContext = this;\n try {\n return f();\n }\n finally {\n currentContext = prev;\n }\n }\n withoutTempSkipped(fragments) {\n for (let r; r = this.tempSkipped.pop();)\n fragments = cutFragments(fragments, r.from, r.to);\n return fragments;\n }\n /**\n @internal\n */\n changes(changes, newState) {\n let { fragments, tree, treeLen, viewport, skipped } = this;\n this.takeTree();\n if (!changes.empty) {\n let ranges = [];\n changes.iterChangedRanges((fromA, toA, fromB, toB) => ranges.push({ fromA, toA, fromB, toB }));\n fragments = TreeFragment.applyChanges(fragments, ranges);\n tree = Tree.empty;\n treeLen = 0;\n viewport = { from: changes.mapPos(viewport.from, -1), to: changes.mapPos(viewport.to, 1) };\n if (this.skipped.length) {\n skipped = [];\n for (let r of this.skipped) {\n let from = changes.mapPos(r.from, 1), to = changes.mapPos(r.to, -1);\n if (from < to)\n skipped.push({ from, to });\n }\n }\n }\n return new ParseContext(this.parser, newState, fragments, tree, treeLen, viewport, skipped, this.scheduleOn);\n }\n /**\n @internal\n */\n updateViewport(viewport) {\n if (this.viewport.from == viewport.from && this.viewport.to == viewport.to)\n return false;\n this.viewport = viewport;\n let startLen = this.skipped.length;\n for (let i = 0; i < this.skipped.length; i++) {\n let { from, to } = this.skipped[i];\n if (from < viewport.to && to > viewport.from) {\n this.fragments = cutFragments(this.fragments, from, to);\n this.skipped.splice(i--, 1);\n }\n }\n if (this.skipped.length >= startLen)\n return false;\n this.reset();\n return true;\n }\n /**\n @internal\n */\n reset() {\n if (this.parse) {\n this.takeTree();\n this.parse = null;\n }\n }\n /**\n Notify the parse scheduler that the given region was skipped\n because it wasn't in view, and the parse should be restarted\n when it comes into view.\n */\n skipUntilInView(from, to) {\n this.skipped.push({ from, to });\n }\n /**\n Returns a parser intended to be used as placeholder when\n asynchronously loading a nested parser. It'll skip its input and\n mark it as not-really-parsed, so that the next update will parse\n it again.\n \n When `until` is given, a reparse will be scheduled when that\n promise resolves.\n */\n static getSkippingParser(until) {\n return new class extends Parser {\n createParse(input, fragments, ranges) {\n let from = ranges[0].from, to = ranges[ranges.length - 1].to;\n let parser = {\n parsedPos: from,\n advance() {\n let cx = currentContext;\n if (cx) {\n for (let r of ranges)\n cx.tempSkipped.push(r);\n if (until)\n cx.scheduleOn = cx.scheduleOn ? Promise.all([cx.scheduleOn, until]) : until;\n }\n this.parsedPos = to;\n return new Tree(NodeType.none, [], [], to - from);\n },\n stoppedAt: null,\n stopAt() { }\n };\n return parser;\n }\n };\n }\n /**\n @internal\n */\n isDone(upto) {\n upto = Math.min(upto, this.state.doc.length);\n let frags = this.fragments;\n return this.treeLen >= upto && frags.length && frags[0].from == 0 && frags[0].to >= upto;\n }\n /**\n Get the context for the current parse, or `null` if no editor\n parse is in progress.\n */\n static get() { return currentContext; }\n}\nfunction cutFragments(fragments, from, to) {\n return TreeFragment.applyChanges(fragments, [{ fromA: from, toA: to, fromB: from, toB: to }]);\n}\nclass LanguageState {\n constructor(\n // A mutable parse state that is used to preserve work done during\n // the lifetime of a state when moving to the next state.\n context) {\n this.context = context;\n this.tree = context.tree;\n }\n apply(tr) {\n if (!tr.docChanged && this.tree == this.context.tree)\n return this;\n let newCx = this.context.changes(tr.changes, tr.state);\n // If the previous parse wasn't done, go forward only up to its\n // end position or the end of the viewport, to avoid slowing down\n // state updates with parse work beyond the viewport.\n let upto = this.context.treeLen == tr.startState.doc.length ? undefined\n : Math.max(tr.changes.mapPos(this.context.treeLen), newCx.viewport.to);\n if (!newCx.work(20 /* Work.Apply */, upto))\n newCx.takeTree();\n return new LanguageState(newCx);\n }\n static init(state) {\n let vpTo = Math.min(3000 /* Work.InitViewport */, state.doc.length);\n let parseState = ParseContext.create(state.facet(language).parser, state, { from: 0, to: vpTo });\n if (!parseState.work(20 /* Work.Apply */, vpTo))\n parseState.takeTree();\n return new LanguageState(parseState);\n }\n}\nLanguage.state = /*@__PURE__*/StateField.define({\n create: LanguageState.init,\n update(value, tr) {\n for (let e of tr.effects)\n if (e.is(Language.setState))\n return e.value;\n if (tr.startState.facet(language) != tr.state.facet(language))\n return LanguageState.init(tr.state);\n return value.apply(tr);\n }\n});\nlet requestIdle = (callback) => {\n let timeout = setTimeout(() => callback(), 500 /* Work.MaxPause */);\n return () => clearTimeout(timeout);\n};\nif (typeof requestIdleCallback != \"undefined\")\n requestIdle = (callback) => {\n let idle = -1, timeout = setTimeout(() => {\n idle = requestIdleCallback(callback, { timeout: 500 /* Work.MaxPause */ - 100 /* Work.MinPause */ });\n }, 100 /* Work.MinPause */);\n return () => idle < 0 ? clearTimeout(timeout) : cancelIdleCallback(idle);\n };\nconst isInputPending = typeof navigator != \"undefined\" && ((_a = navigator.scheduling) === null || _a === void 0 ? void 0 : _a.isInputPending)\n ? () => navigator.scheduling.isInputPending() : null;\nconst parseWorker = /*@__PURE__*/ViewPlugin.fromClass(class ParseWorker {\n constructor(view) {\n this.view = view;\n this.working = null;\n this.workScheduled = 0;\n // End of the current time chunk\n this.chunkEnd = -1;\n // Milliseconds of budget left for this chunk\n this.chunkBudget = -1;\n this.work = this.work.bind(this);\n this.scheduleWork();\n }\n update(update) {\n let cx = this.view.state.field(Language.state).context;\n if (cx.updateViewport(update.view.viewport) || this.view.viewport.to > cx.treeLen)\n this.scheduleWork();\n if (update.docChanged || update.selectionSet) {\n if (this.view.hasFocus)\n this.chunkBudget += 50 /* Work.ChangeBonus */;\n this.scheduleWork();\n }\n this.checkAsyncSchedule(cx);\n }\n scheduleWork() {\n if (this.working)\n return;\n let { state } = this.view, field = state.field(Language.state);\n if (field.tree != field.context.tree || !field.context.isDone(state.doc.length))\n this.working = requestIdle(this.work);\n }\n work(deadline) {\n this.working = null;\n let now = Date.now();\n if (this.chunkEnd < now && (this.chunkEnd < 0 || this.view.hasFocus)) { // Start a new chunk\n this.chunkEnd = now + 30000 /* Work.ChunkTime */;\n this.chunkBudget = 3000 /* Work.ChunkBudget */;\n }\n if (this.chunkBudget <= 0)\n return; // No more budget\n let { state, viewport: { to: vpTo } } = this.view, field = state.field(Language.state);\n if (field.tree == field.context.tree && field.context.isDone(vpTo + 100000 /* Work.MaxParseAhead */))\n return;\n let endTime = Date.now() + Math.min(this.chunkBudget, 100 /* Work.Slice */, deadline && !isInputPending ? Math.max(25 /* Work.MinSlice */, deadline.timeRemaining() - 5) : 1e9);\n let viewportFirst = field.context.treeLen < vpTo && state.doc.length > vpTo + 1000;\n let done = field.context.work(() => {\n return isInputPending && isInputPending() || Date.now() > endTime;\n }, vpTo + (viewportFirst ? 0 : 100000 /* Work.MaxParseAhead */));\n this.chunkBudget -= Date.now() - now;\n if (done || this.chunkBudget <= 0) {\n field.context.takeTree();\n this.view.dispatch({ effects: Language.setState.of(new LanguageState(field.context)) });\n }\n if (this.chunkBudget > 0 && !(done && !viewportFirst))\n this.scheduleWork();\n this.checkAsyncSchedule(field.context);\n }\n checkAsyncSchedule(cx) {\n if (cx.scheduleOn) {\n this.workScheduled++;\n cx.scheduleOn\n .then(() => this.scheduleWork())\n .catch(err => logException(this.view.state, err))\n .then(() => this.workScheduled--);\n cx.scheduleOn = null;\n }\n }\n destroy() {\n if (this.working)\n this.working();\n }\n isWorking() {\n return !!(this.working || this.workScheduled > 0);\n }\n}, {\n eventHandlers: { focus() { this.scheduleWork(); } }\n});\n/**\nThe facet used to associate a language with an editor state. Used\nby `Language` object's `extension` property (so you don't need to\nmanually wrap your languages in this). Can be used to access the\ncurrent language on a state.\n*/\nconst language = /*@__PURE__*/Facet.define({\n combine(languages) { return languages.length ? languages[0] : null; },\n enables: language => [\n Language.state,\n parseWorker,\n EditorView.contentAttributes.compute([language], state => {\n let lang = state.facet(language);\n return lang && lang.name ? { \"data-language\": lang.name } : {};\n })\n ]\n});\n/**\nThis class bundles a [language](https://codemirror.net/6/docs/ref/#language.Language) with an\noptional set of supporting extensions. Language packages are\nencouraged to export a function that optionally takes a\nconfiguration object and returns a `LanguageSupport` instance, as\nthe main way for client code to use the package.\n*/\nclass LanguageSupport {\n /**\n Create a language support object.\n */\n constructor(\n /**\n The language object.\n */\n language, \n /**\n An optional set of supporting extensions. When nesting a\n language in another language, the outer language is encouraged\n to include the supporting extensions for its inner languages\n in its own set of support extensions.\n */\n support = []) {\n this.language = language;\n this.support = support;\n this.extension = [language, support];\n }\n}\n/**\nLanguage descriptions are used to store metadata about languages\nand to dynamically load them. Their main role is finding the\nappropriate language for a filename or dynamically loading nested\nparsers.\n*/\nclass LanguageDescription {\n constructor(\n /**\n The name of this language.\n */\n name, \n /**\n Alternative names for the mode (lowercased, includes `this.name`).\n */\n alias, \n /**\n File extensions associated with this language.\n */\n extensions, \n /**\n Optional filename pattern that should be associated with this\n language.\n */\n filename, loadFunc, \n /**\n If the language has been loaded, this will hold its value.\n */\n support = undefined) {\n this.name = name;\n this.alias = alias;\n this.extensions = extensions;\n this.filename = filename;\n this.loadFunc = loadFunc;\n this.support = support;\n this.loading = null;\n }\n /**\n Start loading the the language. Will return a promise that\n resolves to a [`LanguageSupport`](https://codemirror.net/6/docs/ref/#language.LanguageSupport)\n object when the language successfully loads.\n */\n load() {\n return this.loading || (this.loading = this.loadFunc().then(support => this.support = support, err => { this.loading = null; throw err; }));\n }\n /**\n Create a language description.\n */\n static of(spec) {\n let { load, support } = spec;\n if (!load) {\n if (!support)\n throw new RangeError(\"Must pass either 'load' or 'support' to LanguageDescription.of\");\n load = () => Promise.resolve(support);\n }\n return new LanguageDescription(spec.name, (spec.alias || []).concat(spec.name).map(s => s.toLowerCase()), spec.extensions || [], spec.filename, load, support);\n }\n /**\n Look for a language in the given array of descriptions that\n matches the filename. Will first match\n [`filename`](https://codemirror.net/6/docs/ref/#language.LanguageDescription.filename) patterns,\n and then [extensions](https://codemirror.net/6/docs/ref/#language.LanguageDescription.extensions),\n and return the first language that matches.\n */\n static matchFilename(descs, filename) {\n for (let d of descs)\n if (d.filename && d.filename.test(filename))\n return d;\n let ext = /\\.([^.]+)$/.exec(filename);\n if (ext)\n for (let d of descs)\n if (d.extensions.indexOf(ext[1]) > -1)\n return d;\n return null;\n }\n /**\n Look for a language whose name or alias matches the the given\n name (case-insensitively). If `fuzzy` is true, and no direct\n matchs is found, this'll also search for a language whose name\n or alias occurs in the string (for names shorter than three\n characters, only when surrounded by non-word characters).\n */\n static matchLanguageName(descs, name, fuzzy = true) {\n name = name.toLowerCase();\n for (let d of descs)\n if (d.alias.some(a => a == name))\n return d;\n if (fuzzy)\n for (let d of descs)\n for (let a of d.alias) {\n let found = name.indexOf(a);\n if (found > -1 && (a.length > 2 || !/\\w/.test(name[found - 1]) && !/\\w/.test(name[found + a.length])))\n return d;\n }\n return null;\n }\n}\n\n/**\nFacet that defines a way to provide a function that computes the\nappropriate indentation depth, as a column number (see\n[`indentString`](https://codemirror.net/6/docs/ref/#language.indentString)), at the start of a given\nline. A return value of `null` indicates no indentation can be\ndetermined, and the line should inherit the indentation of the one\nabove it. A return value of `undefined` defers to the next indent\nservice.\n*/\nconst indentService = /*@__PURE__*/Facet.define();\n/**\nFacet for overriding the unit by which indentation happens. Should\nbe a string consisting entirely of the same whitespace character.\nWhen not set, this defaults to 2 spaces.\n*/\nconst indentUnit = /*@__PURE__*/Facet.define({\n combine: values => {\n if (!values.length)\n return \" \";\n let unit = values[0];\n if (!unit || /\\S/.test(unit) || Array.from(unit).some(e => e != unit[0]))\n throw new Error(\"Invalid indent unit: \" + JSON.stringify(values[0]));\n return unit;\n }\n});\n/**\nReturn the _column width_ of an indent unit in the state.\nDetermined by the [`indentUnit`](https://codemirror.net/6/docs/ref/#language.indentUnit)\nfacet, and [`tabSize`](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize) when that\ncontains tabs.\n*/\nfunction getIndentUnit(state) {\n let unit = state.facet(indentUnit);\n return unit.charCodeAt(0) == 9 ? state.tabSize * unit.length : unit.length;\n}\n/**\nCreate an indentation string that covers columns 0 to `cols`.\nWill use tabs for as much of the columns as possible when the\n[`indentUnit`](https://codemirror.net/6/docs/ref/#language.indentUnit) facet contains\ntabs.\n*/\nfunction indentString(state, cols) {\n let result = \"\", ts = state.tabSize, ch = state.facet(indentUnit)[0];\n if (ch == \"\\t\") {\n while (cols >= ts) {\n result += \"\\t\";\n cols -= ts;\n }\n ch = \" \";\n }\n for (let i = 0; i < cols; i++)\n result += ch;\n return result;\n}\n/**\nGet the indentation, as a column number, at the given position.\nWill first consult any [indent services](https://codemirror.net/6/docs/ref/#language.indentService)\nthat are registered, and if none of those return an indentation,\nthis will check the syntax tree for the [indent node\nprop](https://codemirror.net/6/docs/ref/#language.indentNodeProp) and use that if found. Returns a\nnumber when an indentation could be determined, and null\notherwise.\n*/\nfunction getIndentation(context, pos) {\n if (context instanceof EditorState)\n context = new IndentContext(context);\n for (let service of context.state.facet(indentService)) {\n let result = service(context, pos);\n if (result !== undefined)\n return result;\n }\n let tree = syntaxTree(context.state);\n return tree.length >= pos ? syntaxIndentation(context, tree, pos) : null;\n}\n/**\nCreate a change set that auto-indents all lines touched by the\ngiven document range.\n*/\nfunction indentRange(state, from, to) {\n let updated = Object.create(null);\n let context = new IndentContext(state, { overrideIndentation: start => { var _a; return (_a = updated[start]) !== null && _a !== void 0 ? _a : -1; } });\n let changes = [];\n for (let pos = from; pos <= to;) {\n let line = state.doc.lineAt(pos);\n pos = line.to + 1;\n let indent = getIndentation(context, line.from);\n if (indent == null)\n continue;\n if (!/\\S/.test(line.text))\n indent = 0;\n let cur = /^\\s*/.exec(line.text)[0];\n let norm = indentString(state, indent);\n if (cur != norm) {\n updated[line.from] = indent;\n changes.push({ from: line.from, to: line.from + cur.length, insert: norm });\n }\n }\n return state.changes(changes);\n}\n/**\nIndentation contexts are used when calling [indentation\nservices](https://codemirror.net/6/docs/ref/#language.indentService). They provide helper utilities\nuseful in indentation logic, and can selectively override the\nindentation reported for some lines.\n*/\nclass IndentContext {\n /**\n Create an indent context.\n */\n constructor(\n /**\n The editor state.\n */\n state, \n /**\n @internal\n */\n options = {}) {\n this.state = state;\n this.options = options;\n this.unit = getIndentUnit(state);\n }\n /**\n Get a description of the line at the given position, taking\n [simulated line\n breaks](https://codemirror.net/6/docs/ref/#language.IndentContext.constructor^options.simulateBreak)\n into account. If there is such a break at `pos`, the `bias`\n argument determines whether the part of the line line before or\n after the break is used.\n */\n lineAt(pos, bias = 1) {\n let line = this.state.doc.lineAt(pos);\n let { simulateBreak, simulateDoubleBreak } = this.options;\n if (simulateBreak != null && simulateBreak >= line.from && simulateBreak <= line.to) {\n if (simulateDoubleBreak && simulateBreak == pos)\n return { text: \"\", from: pos };\n else if (bias < 0 ? simulateBreak < pos : simulateBreak <= pos)\n return { text: line.text.slice(simulateBreak - line.from), from: simulateBreak };\n else\n return { text: line.text.slice(0, simulateBreak - line.from), from: line.from };\n }\n return line;\n }\n /**\n Get the text directly after `pos`, either the entire line\n or the next 100 characters, whichever is shorter.\n */\n textAfterPos(pos, bias = 1) {\n if (this.options.simulateDoubleBreak && pos == this.options.simulateBreak)\n return \"\";\n let { text, from } = this.lineAt(pos, bias);\n return text.slice(pos - from, Math.min(text.length, pos + 100 - from));\n }\n /**\n Find the column for the given position.\n */\n column(pos, bias = 1) {\n let { text, from } = this.lineAt(pos, bias);\n let result = this.countColumn(text, pos - from);\n let override = this.options.overrideIndentation ? this.options.overrideIndentation(from) : -1;\n if (override > -1)\n result += override - this.countColumn(text, text.search(/\\S|$/));\n return result;\n }\n /**\n Find the column position (taking tabs into account) of the given\n position in the given string.\n */\n countColumn(line, pos = line.length) {\n return countColumn(line, this.state.tabSize, pos);\n }\n /**\n Find the indentation column of the line at the given point.\n */\n lineIndent(pos, bias = 1) {\n let { text, from } = this.lineAt(pos, bias);\n let override = this.options.overrideIndentation;\n if (override) {\n let overriden = override(from);\n if (overriden > -1)\n return overriden;\n }\n return this.countColumn(text, text.search(/\\S|$/));\n }\n /**\n Returns the [simulated line\n break](https://codemirror.net/6/docs/ref/#language.IndentContext.constructor^options.simulateBreak)\n for this context, if any.\n */\n get simulatedBreak() {\n return this.options.simulateBreak || null;\n }\n}\n/**\nA syntax tree node prop used to associate indentation strategies\nwith node types. Such a strategy is a function from an indentation\ncontext to a column number (see also\n[`indentString`](https://codemirror.net/6/docs/ref/#language.indentString)) or null, where null\nindicates that no definitive indentation can be determined.\n*/\nconst indentNodeProp = /*@__PURE__*/new NodeProp();\n// Compute the indentation for a given position from the syntax tree.\nfunction syntaxIndentation(cx, ast, pos) {\n let stack = ast.resolveStack(pos);\n let inner = ast.resolveInner(pos, -1).resolve(pos, 0).enterUnfinishedNodesBefore(pos);\n if (inner != stack.node) {\n let add = [];\n for (let cur = inner; cur && !(cur.from < stack.node.from || cur.to > stack.node.to ||\n cur.from == stack.node.from && cur.type == stack.node.type); cur = cur.parent)\n add.push(cur);\n for (let i = add.length - 1; i >= 0; i--)\n stack = { node: add[i], next: stack };\n }\n return indentFor(stack, cx, pos);\n}\nfunction indentFor(stack, cx, pos) {\n for (let cur = stack; cur; cur = cur.next) {\n let strategy = indentStrategy(cur.node);\n if (strategy)\n return strategy(TreeIndentContext.create(cx, pos, cur));\n }\n return 0;\n}\nfunction ignoreClosed(cx) {\n return cx.pos == cx.options.simulateBreak && cx.options.simulateDoubleBreak;\n}\nfunction indentStrategy(tree) {\n let strategy = tree.type.prop(indentNodeProp);\n if (strategy)\n return strategy;\n let first = tree.firstChild, close;\n if (first && (close = first.type.prop(NodeProp.closedBy))) {\n let last = tree.lastChild, closed = last && close.indexOf(last.name) > -1;\n return cx => delimitedStrategy(cx, true, 1, undefined, closed && !ignoreClosed(cx) ? last.from : undefined);\n }\n return tree.parent == null ? topIndent : null;\n}\nfunction topIndent() { return 0; }\n/**\nObjects of this type provide context information and helper\nmethods to indentation functions registered on syntax nodes.\n*/\nclass TreeIndentContext extends IndentContext {\n constructor(base, \n /**\n The position at which indentation is being computed.\n */\n pos, \n /**\n @internal\n */\n context) {\n super(base.state, base.options);\n this.base = base;\n this.pos = pos;\n this.context = context;\n }\n /**\n The syntax tree node to which the indentation strategy\n applies.\n */\n get node() { return this.context.node; }\n /**\n @internal\n */\n static create(base, pos, context) {\n return new TreeIndentContext(base, pos, context);\n }\n /**\n Get the text directly after `this.pos`, either the entire line\n or the next 100 characters, whichever is shorter.\n */\n get textAfter() {\n return this.textAfterPos(this.pos);\n }\n /**\n Get the indentation at the reference line for `this.node`, which\n is the line on which it starts, unless there is a node that is\n _not_ a parent of this node covering the start of that line. If\n so, the line at the start of that node is tried, again skipping\n on if it is covered by another such node.\n */\n get baseIndent() {\n return this.baseIndentFor(this.node);\n }\n /**\n Get the indentation for the reference line of the given node\n (see [`baseIndent`](https://codemirror.net/6/docs/ref/#language.TreeIndentContext.baseIndent)).\n */\n baseIndentFor(node) {\n let line = this.state.doc.lineAt(node.from);\n // Skip line starts that are covered by a sibling (or cousin, etc)\n for (;;) {\n let atBreak = node.resolve(line.from);\n while (atBreak.parent && atBreak.parent.from == atBreak.from)\n atBreak = atBreak.parent;\n if (isParent(atBreak, node))\n break;\n line = this.state.doc.lineAt(atBreak.from);\n }\n return this.lineIndent(line.from);\n }\n /**\n Continue looking for indentations in the node's parent nodes,\n and return the result of that.\n */\n continue() {\n return indentFor(this.context.next, this.base, this.pos);\n }\n}\nfunction isParent(parent, of) {\n for (let cur = of; cur; cur = cur.parent)\n if (parent == cur)\n return true;\n return false;\n}\n// Check whether a delimited node is aligned (meaning there are\n// non-skipped nodes on the same line as the opening delimiter). And\n// if so, return the opening token.\nfunction bracketedAligned(context) {\n let tree = context.node;\n let openToken = tree.childAfter(tree.from), last = tree.lastChild;\n if (!openToken)\n return null;\n let sim = context.options.simulateBreak;\n let openLine = context.state.doc.lineAt(openToken.from);\n let lineEnd = sim == null || sim <= openLine.from ? openLine.to : Math.min(openLine.to, sim);\n for (let pos = openToken.to;;) {\n let next = tree.childAfter(pos);\n if (!next || next == last)\n return null;\n if (!next.type.isSkipped) {\n if (next.from >= lineEnd)\n return null;\n let space = /^ */.exec(openLine.text.slice(openToken.to - openLine.from))[0].length;\n return { from: openToken.from, to: openToken.to + space };\n }\n pos = next.to;\n }\n}\n/**\nAn indentation strategy for delimited (usually bracketed) nodes.\nWill, by default, indent one unit more than the parent's base\nindent unless the line starts with a closing token. When `align`\nis true and there are non-skipped nodes on the node's opening\nline, the content of the node will be aligned with the end of the\nopening node, like this:\n\n foo(bar,\n baz)\n*/\nfunction delimitedIndent({ closing, align = true, units = 1 }) {\n return (context) => delimitedStrategy(context, align, units, closing);\n}\nfunction delimitedStrategy(context, align, units, closing, closedAt) {\n let after = context.textAfter, space = after.match(/^\\s*/)[0].length;\n let closed = closing && after.slice(space, space + closing.length) == closing || closedAt == context.pos + space;\n let aligned = align ? bracketedAligned(context) : null;\n if (aligned)\n return closed ? context.column(aligned.from) : context.column(aligned.to);\n return context.baseIndent + (closed ? 0 : context.unit * units);\n}\n/**\nAn indentation strategy that aligns a node's content to its base\nindentation.\n*/\nconst flatIndent = (context) => context.baseIndent;\n/**\nCreates an indentation strategy that, by default, indents\ncontinued lines one unit more than the node's base indentation.\nYou can provide `except` to prevent indentation of lines that\nmatch a pattern (for example `/^else\\b/` in `if`/`else`\nconstructs), and you can change the amount of units used with the\n`units` option.\n*/\nfunction continuedIndent({ except, units = 1 } = {}) {\n return (context) => {\n let matchExcept = except && except.test(context.textAfter);\n return context.baseIndent + (matchExcept ? 0 : units * context.unit);\n };\n}\nconst DontIndentBeyond = 200;\n/**\nEnables reindentation on input. When a language defines an\n`indentOnInput` field in its [language\ndata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt), which must hold a regular\nexpression, the line at the cursor will be reindented whenever new\ntext is typed and the input from the start of the line up to the\ncursor matches that regexp.\n\nTo avoid unneccesary reindents, it is recommended to start the\nregexp with `^` (usually followed by `\\s*`), and end it with `$`.\nFor example, `/^\\s*\\}$/` will reindent when a closing brace is\nadded at the start of a line.\n*/\nfunction indentOnInput() {\n return EditorState.transactionFilter.of(tr => {\n if (!tr.docChanged || !tr.isUserEvent(\"input.type\") && !tr.isUserEvent(\"input.complete\"))\n return tr;\n let rules = tr.startState.languageDataAt(\"indentOnInput\", tr.startState.selection.main.head);\n if (!rules.length)\n return tr;\n let doc = tr.newDoc, { head } = tr.newSelection.main, line = doc.lineAt(head);\n if (head > line.from + DontIndentBeyond)\n return tr;\n let lineStart = doc.sliceString(line.from, head);\n if (!rules.some(r => r.test(lineStart)))\n return tr;\n let { state } = tr, last = -1, changes = [];\n for (let { head } of state.selection.ranges) {\n let line = state.doc.lineAt(head);\n if (line.from == last)\n continue;\n last = line.from;\n let indent = getIndentation(state, line.from);\n if (indent == null)\n continue;\n let cur = /^\\s*/.exec(line.text)[0];\n let norm = indentString(state, indent);\n if (cur != norm)\n changes.push({ from: line.from, to: line.from + cur.length, insert: norm });\n }\n return changes.length ? [tr, { changes, sequential: true }] : tr;\n });\n}\n\n/**\nA facet that registers a code folding service. When called with\nthe extent of a line, such a function should return a foldable\nrange that starts on that line (but continues beyond it), if one\ncan be found.\n*/\nconst foldService = /*@__PURE__*/Facet.define();\n/**\nThis node prop is used to associate folding information with\nsyntax node types. Given a syntax node, it should check whether\nthat tree is foldable and return the range that can be collapsed\nwhen it is.\n*/\nconst foldNodeProp = /*@__PURE__*/new NodeProp();\n/**\n[Fold](https://codemirror.net/6/docs/ref/#language.foldNodeProp) function that folds everything but\nthe first and the last child of a syntax node. Useful for nodes\nthat start and end with delimiters.\n*/\nfunction foldInside(node) {\n let first = node.firstChild, last = node.lastChild;\n return first && first.to < last.from ? { from: first.to, to: last.type.isError ? node.to : last.from } : null;\n}\nfunction syntaxFolding(state, start, end) {\n let tree = syntaxTree(state);\n if (tree.length < end)\n return null;\n let stack = tree.resolveStack(end, 1);\n let found = null;\n for (let iter = stack; iter; iter = iter.next) {\n let cur = iter.node;\n if (cur.to <= end || cur.from > end)\n continue;\n if (found && cur.from < start)\n break;\n let prop = cur.type.prop(foldNodeProp);\n if (prop && (cur.to < tree.length - 50 || tree.length == state.doc.length || !isUnfinished(cur))) {\n let value = prop(cur, state);\n if (value && value.from <= end && value.from >= start && value.to > end)\n found = value;\n }\n }\n return found;\n}\nfunction isUnfinished(node) {\n let ch = node.lastChild;\n return ch && ch.to == node.to && ch.type.isError;\n}\n/**\nCheck whether the given line is foldable. First asks any fold\nservices registered through\n[`foldService`](https://codemirror.net/6/docs/ref/#language.foldService), and if none of them return\na result, tries to query the [fold node\nprop](https://codemirror.net/6/docs/ref/#language.foldNodeProp) of syntax nodes that cover the end\nof the line.\n*/\nfunction foldable(state, lineStart, lineEnd) {\n for (let service of state.facet(foldService)) {\n let result = service(state, lineStart, lineEnd);\n if (result)\n return result;\n }\n return syntaxFolding(state, lineStart, lineEnd);\n}\nfunction mapRange(range, mapping) {\n let from = mapping.mapPos(range.from, 1), to = mapping.mapPos(range.to, -1);\n return from >= to ? undefined : { from, to };\n}\n/**\nState effect that can be attached to a transaction to fold the\ngiven range. (You probably only need this in exceptional\ncircumstances—usually you'll just want to let\n[`foldCode`](https://codemirror.net/6/docs/ref/#language.foldCode) and the [fold\ngutter](https://codemirror.net/6/docs/ref/#language.foldGutter) create the transactions.)\n*/\nconst foldEffect = /*@__PURE__*/StateEffect.define({ map: mapRange });\n/**\nState effect that unfolds the given range (if it was folded).\n*/\nconst unfoldEffect = /*@__PURE__*/StateEffect.define({ map: mapRange });\nfunction selectedLines(view) {\n let lines = [];\n for (let { head } of view.state.selection.ranges) {\n if (lines.some(l => l.from <= head && l.to >= head))\n continue;\n lines.push(view.lineBlockAt(head));\n }\n return lines;\n}\n/**\nThe state field that stores the folded ranges (as a [decoration\nset](https://codemirror.net/6/docs/ref/#view.DecorationSet)). Can be passed to\n[`EditorState.toJSON`](https://codemirror.net/6/docs/ref/#state.EditorState.toJSON) and\n[`fromJSON`](https://codemirror.net/6/docs/ref/#state.EditorState^fromJSON) to serialize the fold\nstate.\n*/\nconst foldState = /*@__PURE__*/StateField.define({\n create() {\n return Decoration.none;\n },\n update(folded, tr) {\n if (tr.isUserEvent(\"delete\"))\n tr.changes.iterChangedRanges((fromA, toA) => folded = clearTouchedFolds(folded, fromA, toA));\n folded = folded.map(tr.changes);\n for (let e of tr.effects) {\n if (e.is(foldEffect) && !foldExists(folded, e.value.from, e.value.to)) {\n let { preparePlaceholder } = tr.state.facet(foldConfig);\n let widget = !preparePlaceholder ? foldWidget :\n Decoration.replace({ widget: new PreparedFoldWidget(preparePlaceholder(tr.state, e.value)) });\n folded = folded.update({ add: [widget.range(e.value.from, e.value.to)] });\n }\n else if (e.is(unfoldEffect)) {\n folded = folded.update({ filter: (from, to) => e.value.from != from || e.value.to != to,\n filterFrom: e.value.from, filterTo: e.value.to });\n }\n }\n // Clear folded ranges that cover the selection head\n if (tr.selection)\n folded = clearTouchedFolds(folded, tr.selection.main.head);\n return folded;\n },\n provide: f => EditorView.decorations.from(f),\n toJSON(folded, state) {\n let ranges = [];\n folded.between(0, state.doc.length, (from, to) => { ranges.push(from, to); });\n return ranges;\n },\n fromJSON(value) {\n if (!Array.isArray(value) || value.length % 2)\n throw new RangeError(\"Invalid JSON for fold state\");\n let ranges = [];\n for (let i = 0; i < value.length;) {\n let from = value[i++], to = value[i++];\n if (typeof from != \"number\" || typeof to != \"number\")\n throw new RangeError(\"Invalid JSON for fold state\");\n ranges.push(foldWidget.range(from, to));\n }\n return Decoration.set(ranges, true);\n }\n});\nfunction clearTouchedFolds(folded, from, to = from) {\n let touched = false;\n folded.between(from, to, (a, b) => { if (a < to && b > from)\n touched = true; });\n return !touched ? folded : folded.update({\n filterFrom: from,\n filterTo: to,\n filter: (a, b) => a >= to || b <= from\n });\n}\n/**\nGet a [range set](https://codemirror.net/6/docs/ref/#state.RangeSet) containing the folded ranges\nin the given state.\n*/\nfunction foldedRanges(state) {\n return state.field(foldState, false) || RangeSet.empty;\n}\nfunction findFold(state, from, to) {\n var _a;\n let found = null;\n (_a = state.field(foldState, false)) === null || _a === void 0 ? void 0 : _a.between(from, to, (from, to) => {\n if (!found || found.from > from)\n found = { from, to };\n });\n return found;\n}\nfunction foldExists(folded, from, to) {\n let found = false;\n folded.between(from, from, (a, b) => { if (a == from && b == to)\n found = true; });\n return found;\n}\nfunction maybeEnable(state, other) {\n return state.field(foldState, false) ? other : other.concat(StateEffect.appendConfig.of(codeFolding()));\n}\n/**\nFold the lines that are selected, if possible.\n*/\nconst foldCode = view => {\n for (let line of selectedLines(view)) {\n let range = foldable(view.state, line.from, line.to);\n if (range) {\n view.dispatch({ effects: maybeEnable(view.state, [foldEffect.of(range), announceFold(view, range)]) });\n return true;\n }\n }\n return false;\n};\n/**\nUnfold folded ranges on selected lines.\n*/\nconst unfoldCode = view => {\n if (!view.state.field(foldState, false))\n return false;\n let effects = [];\n for (let line of selectedLines(view)) {\n let folded = findFold(view.state, line.from, line.to);\n if (folded)\n effects.push(unfoldEffect.of(folded), announceFold(view, folded, false));\n }\n if (effects.length)\n view.dispatch({ effects });\n return effects.length > 0;\n};\nfunction announceFold(view, range, fold = true) {\n let lineFrom = view.state.doc.lineAt(range.from).number, lineTo = view.state.doc.lineAt(range.to).number;\n return EditorView.announce.of(`${view.state.phrase(fold ? \"Folded lines\" : \"Unfolded lines\")} ${lineFrom} ${view.state.phrase(\"to\")} ${lineTo}.`);\n}\n/**\nFold all top-level foldable ranges. Note that, in most cases,\nfolding information will depend on the [syntax\ntree](https://codemirror.net/6/docs/ref/#language.syntaxTree), and folding everything may not work\nreliably when the document hasn't been fully parsed (either\nbecause the editor state was only just initialized, or because the\ndocument is so big that the parser decided not to parse it\nentirely).\n*/\nconst foldAll = view => {\n let { state } = view, effects = [];\n for (let pos = 0; pos < state.doc.length;) {\n let line = view.lineBlockAt(pos), range = foldable(state, line.from, line.to);\n if (range)\n effects.push(foldEffect.of(range));\n pos = (range ? view.lineBlockAt(range.to) : line).to + 1;\n }\n if (effects.length)\n view.dispatch({ effects: maybeEnable(view.state, effects) });\n return !!effects.length;\n};\n/**\nUnfold all folded code.\n*/\nconst unfoldAll = view => {\n let field = view.state.field(foldState, false);\n if (!field || !field.size)\n return false;\n let effects = [];\n field.between(0, view.state.doc.length, (from, to) => { effects.push(unfoldEffect.of({ from, to })); });\n view.dispatch({ effects });\n return true;\n};\n// Find the foldable region containing the given line, if one exists\nfunction foldableContainer(view, lineBlock) {\n // Look backwards through line blocks until we find a foldable region that\n // intersects with the line\n for (let line = lineBlock;;) {\n let foldableRegion = foldable(view.state, line.from, line.to);\n if (foldableRegion && foldableRegion.to > lineBlock.from)\n return foldableRegion;\n if (!line.from)\n return null;\n line = view.lineBlockAt(line.from - 1);\n }\n}\n/**\nToggle folding at cursors. Unfolds if there is an existing fold\nstarting in that line, tries to find a foldable range around it\notherwise.\n*/\nconst toggleFold = (view) => {\n let effects = [];\n for (let line of selectedLines(view)) {\n let folded = findFold(view.state, line.from, line.to);\n if (folded) {\n effects.push(unfoldEffect.of(folded), announceFold(view, folded, false));\n }\n else {\n let foldRange = foldableContainer(view, line);\n if (foldRange)\n effects.push(foldEffect.of(foldRange), announceFold(view, foldRange));\n }\n }\n if (effects.length > 0)\n view.dispatch({ effects: maybeEnable(view.state, effects) });\n return !!effects.length;\n};\n/**\nDefault fold-related key bindings.\n\n - Ctrl-Shift-[ (Cmd-Alt-[ on macOS): [`foldCode`](https://codemirror.net/6/docs/ref/#language.foldCode).\n - Ctrl-Shift-] (Cmd-Alt-] on macOS): [`unfoldCode`](https://codemirror.net/6/docs/ref/#language.unfoldCode).\n - Ctrl-Alt-[: [`foldAll`](https://codemirror.net/6/docs/ref/#language.foldAll).\n - Ctrl-Alt-]: [`unfoldAll`](https://codemirror.net/6/docs/ref/#language.unfoldAll).\n*/\nconst foldKeymap = [\n { key: \"Ctrl-Shift-[\", mac: \"Cmd-Alt-[\", run: foldCode },\n { key: \"Ctrl-Shift-]\", mac: \"Cmd-Alt-]\", run: unfoldCode },\n { key: \"Ctrl-Alt-[\", run: foldAll },\n { key: \"Ctrl-Alt-]\", run: unfoldAll }\n];\nconst defaultConfig = {\n placeholderDOM: null,\n preparePlaceholder: null,\n placeholderText: \"…\"\n};\nconst foldConfig = /*@__PURE__*/Facet.define({\n combine(values) { return combineConfig(values, defaultConfig); }\n});\n/**\nCreate an extension that configures code folding.\n*/\nfunction codeFolding(config) {\n let result = [foldState, baseTheme$1];\n if (config)\n result.push(foldConfig.of(config));\n return result;\n}\nfunction widgetToDOM(view, prepared) {\n let { state } = view, conf = state.facet(foldConfig);\n let onclick = (event) => {\n let line = view.lineBlockAt(view.posAtDOM(event.target));\n let folded = findFold(view.state, line.from, line.to);\n if (folded)\n view.dispatch({ effects: unfoldEffect.of(folded) });\n event.preventDefault();\n };\n if (conf.placeholderDOM)\n return conf.placeholderDOM(view, onclick, prepared);\n let element = document.createElement(\"span\");\n element.textContent = conf.placeholderText;\n element.setAttribute(\"aria-label\", state.phrase(\"folded code\"));\n element.title = state.phrase(\"unfold\");\n element.className = \"cm-foldPlaceholder\";\n element.onclick = onclick;\n return element;\n}\nconst foldWidget = /*@__PURE__*/Decoration.replace({ widget: /*@__PURE__*/new class extends WidgetType {\n toDOM(view) { return widgetToDOM(view, null); }\n } });\nclass PreparedFoldWidget extends WidgetType {\n constructor(value) {\n super();\n this.value = value;\n }\n eq(other) { return this.value == other.value; }\n toDOM(view) { return widgetToDOM(view, this.value); }\n}\nconst foldGutterDefaults = {\n openText: \"⌄\",\n closedText: \"›\",\n markerDOM: null,\n domEventHandlers: {},\n foldingChanged: () => false\n};\nclass FoldMarker extends GutterMarker {\n constructor(config, open) {\n super();\n this.config = config;\n this.open = open;\n }\n eq(other) { return this.config == other.config && this.open == other.open; }\n toDOM(view) {\n if (this.config.markerDOM)\n return this.config.markerDOM(this.open);\n let span = document.createElement(\"span\");\n span.textContent = this.open ? this.config.openText : this.config.closedText;\n span.title = view.state.phrase(this.open ? \"Fold line\" : \"Unfold line\");\n return span;\n }\n}\n/**\nCreate an extension that registers a fold gutter, which shows a\nfold status indicator before foldable lines (which can be clicked\nto fold or unfold the line).\n*/\nfunction foldGutter(config = {}) {\n let fullConfig = { ...foldGutterDefaults, ...config };\n let canFold = new FoldMarker(fullConfig, true), canUnfold = new FoldMarker(fullConfig, false);\n let markers = ViewPlugin.fromClass(class {\n constructor(view) {\n this.from = view.viewport.from;\n this.markers = this.buildMarkers(view);\n }\n update(update) {\n if (update.docChanged || update.viewportChanged ||\n update.startState.facet(language) != update.state.facet(language) ||\n update.startState.field(foldState, false) != update.state.field(foldState, false) ||\n syntaxTree(update.startState) != syntaxTree(update.state) ||\n fullConfig.foldingChanged(update))\n this.markers = this.buildMarkers(update.view);\n }\n buildMarkers(view) {\n let builder = new RangeSetBuilder();\n for (let line of view.viewportLineBlocks) {\n let mark = findFold(view.state, line.from, line.to) ? canUnfold\n : foldable(view.state, line.from, line.to) ? canFold : null;\n if (mark)\n builder.add(line.from, line.from, mark);\n }\n return builder.finish();\n }\n });\n let { domEventHandlers } = fullConfig;\n return [\n markers,\n gutter({\n class: \"cm-foldGutter\",\n markers(view) { var _a; return ((_a = view.plugin(markers)) === null || _a === void 0 ? void 0 : _a.markers) || RangeSet.empty; },\n initialSpacer() {\n return new FoldMarker(fullConfig, false);\n },\n domEventHandlers: {\n ...domEventHandlers,\n click: (view, line, event) => {\n if (domEventHandlers.click && domEventHandlers.click(view, line, event))\n return true;\n let folded = findFold(view.state, line.from, line.to);\n if (folded) {\n view.dispatch({ effects: unfoldEffect.of(folded) });\n return true;\n }\n let range = foldable(view.state, line.from, line.to);\n if (range) {\n view.dispatch({ effects: foldEffect.of(range) });\n return true;\n }\n return false;\n }\n }\n }),\n codeFolding()\n ];\n}\nconst baseTheme$1 = /*@__PURE__*/EditorView.baseTheme({\n \".cm-foldPlaceholder\": {\n backgroundColor: \"#eee\",\n border: \"1px solid #ddd\",\n color: \"#888\",\n borderRadius: \".2em\",\n margin: \"0 1px\",\n padding: \"0 1px\",\n cursor: \"pointer\"\n },\n \".cm-foldGutter span\": {\n padding: \"0 1px\",\n cursor: \"pointer\"\n }\n});\n\n/**\nA highlight style associates CSS styles with highlighting\n[tags](https://lezer.codemirror.net/docs/ref#highlight.Tag).\n*/\nclass HighlightStyle {\n constructor(\n /**\n The tag styles used to create this highlight style.\n */\n specs, options) {\n this.specs = specs;\n let modSpec;\n function def(spec) {\n let cls = StyleModule.newName();\n (modSpec || (modSpec = Object.create(null)))[\".\" + cls] = spec;\n return cls;\n }\n const all = typeof options.all == \"string\" ? options.all : options.all ? def(options.all) : undefined;\n const scopeOpt = options.scope;\n this.scope = scopeOpt instanceof Language ? (type) => type.prop(languageDataProp) == scopeOpt.data\n : scopeOpt ? (type) => type == scopeOpt : undefined;\n this.style = tagHighlighter(specs.map(style => ({\n tag: style.tag,\n class: style.class || def(Object.assign({}, style, { tag: null }))\n })), {\n all,\n }).style;\n this.module = modSpec ? new StyleModule(modSpec) : null;\n this.themeType = options.themeType;\n }\n /**\n Create a highlighter style that associates the given styles to\n the given tags. The specs must be objects that hold a style tag\n or array of tags in their `tag` property, and either a single\n `class` property providing a static CSS class (for highlighter\n that rely on external styling), or a\n [`style-mod`](https://github.com/marijnh/style-mod#documentation)-style\n set of CSS properties (which define the styling for those tags).\n \n The CSS rules created for a highlighter will be emitted in the\n order of the spec's properties. That means that for elements that\n have multiple tags associated with them, styles defined further\n down in the list will have a higher CSS precedence than styles\n defined earlier.\n */\n static define(specs, options) {\n return new HighlightStyle(specs, options || {});\n }\n}\nconst highlighterFacet = /*@__PURE__*/Facet.define();\nconst fallbackHighlighter = /*@__PURE__*/Facet.define({\n combine(values) { return values.length ? [values[0]] : null; }\n});\nfunction getHighlighters(state) {\n let main = state.facet(highlighterFacet);\n return main.length ? main : state.facet(fallbackHighlighter);\n}\n/**\nWrap a highlighter in an editor extension that uses it to apply\nsyntax highlighting to the editor content.\n\nWhen multiple (non-fallback) styles are provided, the styling\napplied is the union of the classes they emit.\n*/\nfunction syntaxHighlighting(highlighter, options) {\n let ext = [treeHighlighter], themeType;\n if (highlighter instanceof HighlightStyle) {\n if (highlighter.module)\n ext.push(EditorView.styleModule.of(highlighter.module));\n themeType = highlighter.themeType;\n }\n if (options === null || options === void 0 ? void 0 : options.fallback)\n ext.push(fallbackHighlighter.of(highlighter));\n else if (themeType)\n ext.push(highlighterFacet.computeN([EditorView.darkTheme], state => {\n return state.facet(EditorView.darkTheme) == (themeType == \"dark\") ? [highlighter] : [];\n }));\n else\n ext.push(highlighterFacet.of(highlighter));\n return ext;\n}\n/**\nReturns the CSS classes (if any) that the highlighters active in\nthe state would assign to the given style\n[tags](https://lezer.codemirror.net/docs/ref#highlight.Tag) and\n(optional) language\n[scope](https://codemirror.net/6/docs/ref/#language.HighlightStyle^define^options.scope).\n*/\nfunction highlightingFor(state, tags, scope) {\n let highlighters = getHighlighters(state);\n let result = null;\n if (highlighters)\n for (let highlighter of highlighters) {\n if (!highlighter.scope || scope && highlighter.scope(scope)) {\n let cls = highlighter.style(tags);\n if (cls)\n result = result ? result + \" \" + cls : cls;\n }\n }\n return result;\n}\nclass TreeHighlighter {\n constructor(view) {\n this.markCache = Object.create(null);\n this.tree = syntaxTree(view.state);\n this.decorations = this.buildDeco(view, getHighlighters(view.state));\n this.decoratedTo = view.viewport.to;\n }\n update(update) {\n let tree = syntaxTree(update.state), highlighters = getHighlighters(update.state);\n let styleChange = highlighters != getHighlighters(update.startState);\n let { viewport } = update.view, decoratedToMapped = update.changes.mapPos(this.decoratedTo, 1);\n if (tree.length < viewport.to && !styleChange && tree.type == this.tree.type && decoratedToMapped >= viewport.to) {\n this.decorations = this.decorations.map(update.changes);\n this.decoratedTo = decoratedToMapped;\n }\n else if (tree != this.tree || update.viewportChanged || styleChange) {\n this.tree = tree;\n this.decorations = this.buildDeco(update.view, highlighters);\n this.decoratedTo = viewport.to;\n }\n }\n buildDeco(view, highlighters) {\n if (!highlighters || !this.tree.length)\n return Decoration.none;\n let builder = new RangeSetBuilder();\n for (let { from, to } of view.visibleRanges) {\n highlightTree(this.tree, highlighters, (from, to, style) => {\n builder.add(from, to, this.markCache[style] || (this.markCache[style] = Decoration.mark({ class: style })));\n }, from, to);\n }\n return builder.finish();\n }\n}\nconst treeHighlighter = /*@__PURE__*/Prec.high(/*@__PURE__*/ViewPlugin.fromClass(TreeHighlighter, {\n decorations: v => v.decorations\n}));\n/**\nA default highlight style (works well with light themes).\n*/\nconst defaultHighlightStyle = /*@__PURE__*/HighlightStyle.define([\n { tag: tags.meta,\n color: \"#404740\" },\n { tag: tags.link,\n textDecoration: \"underline\" },\n { tag: tags.heading,\n textDecoration: \"underline\",\n fontWeight: \"bold\" },\n { tag: tags.emphasis,\n fontStyle: \"italic\" },\n { tag: tags.strong,\n fontWeight: \"bold\" },\n { tag: tags.strikethrough,\n textDecoration: \"line-through\" },\n { tag: tags.keyword,\n color: \"#708\" },\n { tag: [tags.atom, tags.bool, tags.url, tags.contentSeparator, tags.labelName],\n color: \"#219\" },\n { tag: [tags.literal, tags.inserted],\n color: \"#164\" },\n { tag: [tags.string, tags.deleted],\n color: \"#a11\" },\n { tag: [tags.regexp, tags.escape, /*@__PURE__*/tags.special(tags.string)],\n color: \"#e40\" },\n { tag: /*@__PURE__*/tags.definition(tags.variableName),\n color: \"#00f\" },\n { tag: /*@__PURE__*/tags.local(tags.variableName),\n color: \"#30a\" },\n { tag: [tags.typeName, tags.namespace],\n color: \"#085\" },\n { tag: tags.className,\n color: \"#167\" },\n { tag: [/*@__PURE__*/tags.special(tags.variableName), tags.macroName],\n color: \"#256\" },\n { tag: /*@__PURE__*/tags.definition(tags.propertyName),\n color: \"#00c\" },\n { tag: tags.comment,\n color: \"#940\" },\n { tag: tags.invalid,\n color: \"#f00\" }\n]);\n\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n \"&.cm-focused .cm-matchingBracket\": { backgroundColor: \"#328c8252\" },\n \"&.cm-focused .cm-nonmatchingBracket\": { backgroundColor: \"#bb555544\" }\n});\nconst DefaultScanDist = 10000, DefaultBrackets = \"()[]{}\";\nconst bracketMatchingConfig = /*@__PURE__*/Facet.define({\n combine(configs) {\n return combineConfig(configs, {\n afterCursor: true,\n brackets: DefaultBrackets,\n maxScanDistance: DefaultScanDist,\n renderMatch: defaultRenderMatch\n });\n }\n});\nconst matchingMark = /*@__PURE__*/Decoration.mark({ class: \"cm-matchingBracket\" }), nonmatchingMark = /*@__PURE__*/Decoration.mark({ class: \"cm-nonmatchingBracket\" });\nfunction defaultRenderMatch(match) {\n let decorations = [];\n let mark = match.matched ? matchingMark : nonmatchingMark;\n decorations.push(mark.range(match.start.from, match.start.to));\n if (match.end)\n decorations.push(mark.range(match.end.from, match.end.to));\n return decorations;\n}\nfunction bracketDeco(state) {\n let decorations = [];\n let config = state.facet(bracketMatchingConfig);\n for (let range of state.selection.ranges) {\n if (!range.empty)\n continue;\n let match = matchBrackets(state, range.head, -1, config)\n || (range.head > 0 && matchBrackets(state, range.head - 1, 1, config))\n || (config.afterCursor &&\n (matchBrackets(state, range.head, 1, config) ||\n (range.head < state.doc.length && matchBrackets(state, range.head + 1, -1, config))));\n if (match)\n decorations = decorations.concat(config.renderMatch(match, state));\n }\n return Decoration.set(decorations, true);\n}\nconst bracketMatcher = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.paused = false;\n this.decorations = bracketDeco(view.state);\n }\n update(update) {\n if (update.docChanged || update.selectionSet || this.paused) {\n if (update.view.composing) {\n this.decorations = this.decorations.map(update.changes);\n this.paused = true;\n }\n else {\n this.decorations = bracketDeco(update.state);\n this.paused = false;\n }\n }\n }\n}, {\n decorations: v => v.decorations\n});\nconst bracketMatchingUnique = [\n bracketMatcher,\n baseTheme\n];\n/**\nCreate an extension that enables bracket matching. Whenever the\ncursor is next to a bracket, that bracket and the one it matches\nare highlighted. Or, when no matching bracket is found, another\nhighlighting style is used to indicate this.\n*/\nfunction bracketMatching(config = {}) {\n return [bracketMatchingConfig.of(config), bracketMatchingUnique];\n}\n/**\nWhen larger syntax nodes, such as HTML tags, are marked as\nopening/closing, it can be a bit messy to treat the whole node as\na matchable bracket. This node prop allows you to define, for such\na node, a ‘handle’—the part of the node that is highlighted, and\nthat the cursor must be on to activate highlighting in the first\nplace.\n*/\nconst bracketMatchingHandle = /*@__PURE__*/new NodeProp();\nfunction matchingNodes(node, dir, brackets) {\n let byProp = node.prop(dir < 0 ? NodeProp.openedBy : NodeProp.closedBy);\n if (byProp)\n return byProp;\n if (node.name.length == 1) {\n let index = brackets.indexOf(node.name);\n if (index > -1 && index % 2 == (dir < 0 ? 1 : 0))\n return [brackets[index + dir]];\n }\n return null;\n}\nfunction findHandle(node) {\n let hasHandle = node.type.prop(bracketMatchingHandle);\n return hasHandle ? hasHandle(node.node) : node;\n}\n/**\nFind the matching bracket for the token at `pos`, scanning\ndirection `dir`. Only the `brackets` and `maxScanDistance`\nproperties are used from `config`, if given. Returns null if no\nbracket was found at `pos`, or a match result otherwise.\n*/\nfunction matchBrackets(state, pos, dir, config = {}) {\n let maxScanDistance = config.maxScanDistance || DefaultScanDist, brackets = config.brackets || DefaultBrackets;\n let tree = syntaxTree(state), node = tree.resolveInner(pos, dir);\n for (let cur = node; cur; cur = cur.parent) {\n let matches = matchingNodes(cur.type, dir, brackets);\n if (matches && cur.from < cur.to) {\n let handle = findHandle(cur);\n if (handle && (dir > 0 ? pos >= handle.from && pos < handle.to : pos > handle.from && pos <= handle.to))\n return matchMarkedBrackets(state, pos, dir, cur, handle, matches, brackets);\n }\n }\n return matchPlainBrackets(state, pos, dir, tree, node.type, maxScanDistance, brackets);\n}\nfunction matchMarkedBrackets(_state, _pos, dir, token, handle, matching, brackets) {\n let parent = token.parent, firstToken = { from: handle.from, to: handle.to };\n let depth = 0, cursor = parent === null || parent === void 0 ? void 0 : parent.cursor();\n if (cursor && (dir < 0 ? cursor.childBefore(token.from) : cursor.childAfter(token.to)))\n do {\n if (dir < 0 ? cursor.to <= token.from : cursor.from >= token.to) {\n if (depth == 0 && matching.indexOf(cursor.type.name) > -1 && cursor.from < cursor.to) {\n let endHandle = findHandle(cursor);\n return { start: firstToken, end: endHandle ? { from: endHandle.from, to: endHandle.to } : undefined, matched: true };\n }\n else if (matchingNodes(cursor.type, dir, brackets)) {\n depth++;\n }\n else if (matchingNodes(cursor.type, -dir, brackets)) {\n if (depth == 0) {\n let endHandle = findHandle(cursor);\n return {\n start: firstToken,\n end: endHandle && endHandle.from < endHandle.to ? { from: endHandle.from, to: endHandle.to } : undefined,\n matched: false\n };\n }\n depth--;\n }\n }\n } while (dir < 0 ? cursor.prevSibling() : cursor.nextSibling());\n return { start: firstToken, matched: false };\n}\nfunction matchPlainBrackets(state, pos, dir, tree, tokenType, maxScanDistance, brackets) {\n let startCh = dir < 0 ? state.sliceDoc(pos - 1, pos) : state.sliceDoc(pos, pos + 1);\n let bracket = brackets.indexOf(startCh);\n if (bracket < 0 || (bracket % 2 == 0) != (dir > 0))\n return null;\n let startToken = { from: dir < 0 ? pos - 1 : pos, to: dir > 0 ? pos + 1 : pos };\n let iter = state.doc.iterRange(pos, dir > 0 ? state.doc.length : 0), depth = 0;\n for (let distance = 0; !(iter.next()).done && distance <= maxScanDistance;) {\n let text = iter.value;\n if (dir < 0)\n distance += text.length;\n let basePos = pos + distance * dir;\n for (let pos = dir > 0 ? 0 : text.length - 1, end = dir > 0 ? text.length : -1; pos != end; pos += dir) {\n let found = brackets.indexOf(text[pos]);\n if (found < 0 || tree.resolveInner(basePos + pos, 1).type != tokenType)\n continue;\n if ((found % 2 == 0) == (dir > 0)) {\n depth++;\n }\n else if (depth == 1) { // Closing\n return { start: startToken, end: { from: basePos + pos, to: basePos + pos + 1 }, matched: (found >> 1) == (bracket >> 1) };\n }\n else {\n depth--;\n }\n }\n if (dir > 0)\n distance += text.length;\n }\n return iter.done ? { start: startToken, matched: false } : null;\n}\n\n// Counts the column offset in a string, taking tabs into account.\n// Used mostly to find indentation.\nfunction countCol(string, end, tabSize, startIndex = 0, startValue = 0) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1)\n end = string.length;\n }\n let n = startValue;\n for (let i = startIndex; i < end; i++) {\n if (string.charCodeAt(i) == 9)\n n += tabSize - (n % tabSize);\n else\n n++;\n }\n return n;\n}\n/**\nEncapsulates a single line of input. Given to stream syntax code,\nwhich uses it to tokenize the content.\n*/\nclass StringStream {\n /**\n Create a stream.\n */\n constructor(\n /**\n The line.\n */\n string, tabSize, \n /**\n The current indent unit size.\n */\n indentUnit, overrideIndent) {\n this.string = string;\n this.tabSize = tabSize;\n this.indentUnit = indentUnit;\n this.overrideIndent = overrideIndent;\n /**\n The current position on the line.\n */\n this.pos = 0;\n /**\n The start position of the current token.\n */\n this.start = 0;\n this.lastColumnPos = 0;\n this.lastColumnValue = 0;\n }\n /**\n True if we are at the end of the line.\n */\n eol() { return this.pos >= this.string.length; }\n /**\n True if we are at the start of the line.\n */\n sol() { return this.pos == 0; }\n /**\n Get the next code unit after the current position, or undefined\n if we're at the end of the line.\n */\n peek() { return this.string.charAt(this.pos) || undefined; }\n /**\n Read the next code unit and advance `this.pos`.\n */\n next() {\n if (this.pos < this.string.length)\n return this.string.charAt(this.pos++);\n }\n /**\n Match the next character against the given string, regular\n expression, or predicate. Consume and return it if it matches.\n */\n eat(match) {\n let ch = this.string.charAt(this.pos);\n let ok;\n if (typeof match == \"string\")\n ok = ch == match;\n else\n ok = ch && (match instanceof RegExp ? match.test(ch) : match(ch));\n if (ok) {\n ++this.pos;\n return ch;\n }\n }\n /**\n Continue matching characters that match the given string,\n regular expression, or predicate function. Return true if any\n characters were consumed.\n */\n eatWhile(match) {\n let start = this.pos;\n while (this.eat(match)) { }\n return this.pos > start;\n }\n /**\n Consume whitespace ahead of `this.pos`. Return true if any was\n found.\n */\n eatSpace() {\n let start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos)))\n ++this.pos;\n return this.pos > start;\n }\n /**\n Move to the end of the line.\n */\n skipToEnd() { this.pos = this.string.length; }\n /**\n Move to directly before the given character, if found on the\n current line.\n */\n skipTo(ch) {\n let found = this.string.indexOf(ch, this.pos);\n if (found > -1) {\n this.pos = found;\n return true;\n }\n }\n /**\n Move back `n` characters.\n */\n backUp(n) { this.pos -= n; }\n /**\n Get the column position at `this.pos`.\n */\n column() {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countCol(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue;\n }\n /**\n Get the indentation column of the current line.\n */\n indentation() {\n var _a;\n return (_a = this.overrideIndent) !== null && _a !== void 0 ? _a : countCol(this.string, null, this.tabSize);\n }\n /**\n Match the input against the given string or regular expression\n (which should start with a `^`). Return true or the regexp match\n if it matches.\n \n Unless `consume` is set to `false`, this will move `this.pos`\n past the matched text.\n \n When matching a string `caseInsensitive` can be set to true to\n make the match case-insensitive.\n */\n match(pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n let cased = (str) => caseInsensitive ? str.toLowerCase() : str;\n let substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false)\n this.pos += pattern.length;\n return true;\n }\n else\n return null;\n }\n else {\n let match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0)\n return null;\n if (match && consume !== false)\n this.pos += match[0].length;\n return match;\n }\n }\n /**\n Get the current token.\n */\n current() { return this.string.slice(this.start, this.pos); }\n}\n\nfunction fullParser(spec) {\n return {\n name: spec.name || \"\",\n token: spec.token,\n blankLine: spec.blankLine || (() => { }),\n startState: spec.startState || (() => true),\n copyState: spec.copyState || defaultCopyState,\n indent: spec.indent || (() => null),\n languageData: spec.languageData || {},\n tokenTable: spec.tokenTable || noTokens,\n mergeTokens: spec.mergeTokens !== false\n };\n}\nfunction defaultCopyState(state) {\n if (typeof state != \"object\")\n return state;\n let newState = {};\n for (let prop in state) {\n let val = state[prop];\n newState[prop] = (val instanceof Array ? val.slice() : val);\n }\n return newState;\n}\nconst IndentedFrom = /*@__PURE__*/new WeakMap();\n/**\nA [language](https://codemirror.net/6/docs/ref/#language.Language) class based on a CodeMirror\n5-style [streaming parser](https://codemirror.net/6/docs/ref/#language.StreamParser).\n*/\nclass StreamLanguage extends Language {\n constructor(parser) {\n let data = defineLanguageFacet(parser.languageData);\n let p = fullParser(parser), self;\n let impl = new class extends Parser {\n createParse(input, fragments, ranges) {\n return new Parse(self, input, fragments, ranges);\n }\n };\n super(data, impl, [], parser.name);\n this.topNode = docID(data, this);\n self = this;\n this.streamParser = p;\n this.stateAfter = new NodeProp({ perNode: true });\n this.tokenTable = parser.tokenTable ? new TokenTable(p.tokenTable) : defaultTokenTable;\n }\n /**\n Define a stream language.\n */\n static define(spec) { return new StreamLanguage(spec); }\n /**\n @internal\n */\n getIndent(cx) {\n let from = undefined;\n let { overrideIndentation } = cx.options;\n if (overrideIndentation) {\n from = IndentedFrom.get(cx.state);\n if (from != null && from < cx.pos - 1e4)\n from = undefined;\n }\n let start = findState(this, cx.node.tree, cx.node.from, cx.node.from, from !== null && from !== void 0 ? from : cx.pos), statePos, state;\n if (start) {\n state = start.state;\n statePos = start.pos + 1;\n }\n else {\n state = this.streamParser.startState(cx.unit);\n statePos = cx.node.from;\n }\n if (cx.pos - statePos > 10000 /* C.MaxIndentScanDist */)\n return null;\n while (statePos < cx.pos) {\n let line = cx.state.doc.lineAt(statePos), end = Math.min(cx.pos, line.to);\n if (line.length) {\n let indentation = overrideIndentation ? overrideIndentation(line.from) : -1;\n let stream = new StringStream(line.text, cx.state.tabSize, cx.unit, indentation < 0 ? undefined : indentation);\n while (stream.pos < end - line.from)\n readToken(this.streamParser.token, stream, state);\n }\n else {\n this.streamParser.blankLine(state, cx.unit);\n }\n if (end == cx.pos)\n break;\n statePos = line.to + 1;\n }\n let line = cx.lineAt(cx.pos);\n if (overrideIndentation && from == null)\n IndentedFrom.set(cx.state, line.from);\n return this.streamParser.indent(state, /^\\s*(.*)/.exec(line.text)[1], cx);\n }\n get allowsNesting() { return false; }\n}\nfunction findState(lang, tree, off, startPos, before) {\n let state = off >= startPos && off + tree.length <= before && tree.prop(lang.stateAfter);\n if (state)\n return { state: lang.streamParser.copyState(state), pos: off + tree.length };\n for (let i = tree.children.length - 1; i >= 0; i--) {\n let child = tree.children[i], pos = off + tree.positions[i];\n let found = child instanceof Tree && pos < before && findState(lang, child, pos, startPos, before);\n if (found)\n return found;\n }\n return null;\n}\nfunction cutTree(lang, tree, from, to, inside) {\n if (inside && from <= 0 && to >= tree.length)\n return tree;\n if (!inside && from == 0 && tree.type == lang.topNode)\n inside = true;\n for (let i = tree.children.length - 1; i >= 0; i--) {\n let pos = tree.positions[i], child = tree.children[i], inner;\n if (pos < to && child instanceof Tree) {\n if (!(inner = cutTree(lang, child, from - pos, to - pos, inside)))\n break;\n return !inside ? inner\n : new Tree(tree.type, tree.children.slice(0, i).concat(inner), tree.positions.slice(0, i + 1), pos + inner.length);\n }\n }\n return null;\n}\nfunction findStartInFragments(lang, fragments, startPos, endPos, editorState) {\n for (let f of fragments) {\n let from = f.from + (f.openStart ? 25 : 0), to = f.to - (f.openEnd ? 25 : 0);\n let found = from <= startPos && to > startPos && findState(lang, f.tree, 0 - f.offset, startPos, to), tree;\n if (found && found.pos <= endPos && (tree = cutTree(lang, f.tree, startPos + f.offset, found.pos + f.offset, false)))\n return { state: found.state, tree };\n }\n return { state: lang.streamParser.startState(editorState ? getIndentUnit(editorState) : 4), tree: Tree.empty };\n}\nclass Parse {\n constructor(lang, input, fragments, ranges) {\n this.lang = lang;\n this.input = input;\n this.fragments = fragments;\n this.ranges = ranges;\n this.stoppedAt = null;\n this.chunks = [];\n this.chunkPos = [];\n this.chunk = [];\n this.chunkReused = undefined;\n this.rangeIndex = 0;\n this.to = ranges[ranges.length - 1].to;\n let context = ParseContext.get(), from = ranges[0].from;\n let { state, tree } = findStartInFragments(lang, fragments, from, this.to, context === null || context === void 0 ? void 0 : context.state);\n this.state = state;\n this.parsedPos = this.chunkStart = from + tree.length;\n for (let i = 0; i < tree.children.length; i++) {\n this.chunks.push(tree.children[i]);\n this.chunkPos.push(tree.positions[i]);\n }\n if (context && this.parsedPos < context.viewport.from - 100000 /* C.MaxDistanceBeforeViewport */ &&\n ranges.some(r => r.from <= context.viewport.from && r.to >= context.viewport.from)) {\n this.state = this.lang.streamParser.startState(getIndentUnit(context.state));\n context.skipUntilInView(this.parsedPos, context.viewport.from);\n this.parsedPos = context.viewport.from;\n }\n this.moveRangeIndex();\n }\n advance() {\n let context = ParseContext.get();\n let parseEnd = this.stoppedAt == null ? this.to : Math.min(this.to, this.stoppedAt);\n let end = Math.min(parseEnd, this.chunkStart + 512 /* C.ChunkSize */);\n if (context)\n end = Math.min(end, context.viewport.to);\n while (this.parsedPos < end)\n this.parseLine(context);\n if (this.chunkStart < this.parsedPos)\n this.finishChunk();\n if (this.parsedPos >= parseEnd)\n return this.finish();\n if (context && this.parsedPos >= context.viewport.to) {\n context.skipUntilInView(this.parsedPos, parseEnd);\n return this.finish();\n }\n return null;\n }\n stopAt(pos) {\n this.stoppedAt = pos;\n }\n lineAfter(pos) {\n let chunk = this.input.chunk(pos);\n if (!this.input.lineChunks) {\n let eol = chunk.indexOf(\"\\n\");\n if (eol > -1)\n chunk = chunk.slice(0, eol);\n }\n else if (chunk == \"\\n\") {\n chunk = \"\";\n }\n return pos + chunk.length <= this.to ? chunk : chunk.slice(0, this.to - pos);\n }\n nextLine() {\n let from = this.parsedPos, line = this.lineAfter(from), end = from + line.length;\n for (let index = this.rangeIndex;;) {\n let rangeEnd = this.ranges[index].to;\n if (rangeEnd >= end)\n break;\n line = line.slice(0, rangeEnd - (end - line.length));\n index++;\n if (index == this.ranges.length)\n break;\n let rangeStart = this.ranges[index].from;\n let after = this.lineAfter(rangeStart);\n line += after;\n end = rangeStart + after.length;\n }\n return { line, end };\n }\n skipGapsTo(pos, offset, side) {\n for (;;) {\n let end = this.ranges[this.rangeIndex].to, offPos = pos + offset;\n if (side > 0 ? end > offPos : end >= offPos)\n break;\n let start = this.ranges[++this.rangeIndex].from;\n offset += start - end;\n }\n return offset;\n }\n moveRangeIndex() {\n while (this.ranges[this.rangeIndex].to < this.parsedPos)\n this.rangeIndex++;\n }\n emitToken(id, from, to, offset) {\n let size = 4;\n if (this.ranges.length > 1) {\n offset = this.skipGapsTo(from, offset, 1);\n from += offset;\n let len0 = this.chunk.length;\n offset = this.skipGapsTo(to, offset, -1);\n to += offset;\n size += this.chunk.length - len0;\n }\n let last = this.chunk.length - 4;\n if (this.lang.streamParser.mergeTokens && size == 4 && last >= 0 &&\n this.chunk[last] == id && this.chunk[last + 2] == from)\n this.chunk[last + 2] = to;\n else\n this.chunk.push(id, from, to, size);\n return offset;\n }\n parseLine(context) {\n let { line, end } = this.nextLine(), offset = 0, { streamParser } = this.lang;\n let stream = new StringStream(line, context ? context.state.tabSize : 4, context ? getIndentUnit(context.state) : 2);\n if (stream.eol()) {\n streamParser.blankLine(this.state, stream.indentUnit);\n }\n else {\n while (!stream.eol()) {\n let token = readToken(streamParser.token, stream, this.state);\n if (token)\n offset = this.emitToken(this.lang.tokenTable.resolve(token), this.parsedPos + stream.start, this.parsedPos + stream.pos, offset);\n if (stream.start > 10000 /* C.MaxLineLength */)\n break;\n }\n }\n this.parsedPos = end;\n this.moveRangeIndex();\n if (this.parsedPos < this.to)\n this.parsedPos++;\n }\n finishChunk() {\n let tree = Tree.build({\n buffer: this.chunk,\n start: this.chunkStart,\n length: this.parsedPos - this.chunkStart,\n nodeSet,\n topID: 0,\n maxBufferLength: 512 /* C.ChunkSize */,\n reused: this.chunkReused\n });\n tree = new Tree(tree.type, tree.children, tree.positions, tree.length, [[this.lang.stateAfter, this.lang.streamParser.copyState(this.state)]]);\n this.chunks.push(tree);\n this.chunkPos.push(this.chunkStart - this.ranges[0].from);\n this.chunk = [];\n this.chunkReused = undefined;\n this.chunkStart = this.parsedPos;\n }\n finish() {\n return new Tree(this.lang.topNode, this.chunks, this.chunkPos, this.parsedPos - this.ranges[0].from).balance();\n }\n}\nfunction readToken(token, stream, state) {\n stream.start = stream.pos;\n for (let i = 0; i < 10; i++) {\n let result = token(stream, state);\n if (stream.pos > stream.start)\n return result;\n }\n throw new Error(\"Stream parser failed to advance stream.\");\n}\nconst noTokens = /*@__PURE__*/Object.create(null);\nconst typeArray = [NodeType.none];\nconst nodeSet = /*@__PURE__*/new NodeSet(typeArray);\nconst warned = [];\n// Cache of node types by name and tags\nconst byTag = /*@__PURE__*/Object.create(null);\nconst defaultTable = /*@__PURE__*/Object.create(null);\nfor (let [legacyName, name] of [\n [\"variable\", \"variableName\"],\n [\"variable-2\", \"variableName.special\"],\n [\"string-2\", \"string.special\"],\n [\"def\", \"variableName.definition\"],\n [\"tag\", \"tagName\"],\n [\"attribute\", \"attributeName\"],\n [\"type\", \"typeName\"],\n [\"builtin\", \"variableName.standard\"],\n [\"qualifier\", \"modifier\"],\n [\"error\", \"invalid\"],\n [\"header\", \"heading\"],\n [\"property\", \"propertyName\"]\n])\n defaultTable[legacyName] = /*@__PURE__*/createTokenType(noTokens, name);\nclass TokenTable {\n constructor(extra) {\n this.extra = extra;\n this.table = Object.assign(Object.create(null), defaultTable);\n }\n resolve(tag) {\n return !tag ? 0 : this.table[tag] || (this.table[tag] = createTokenType(this.extra, tag));\n }\n}\nconst defaultTokenTable = /*@__PURE__*/new TokenTable(noTokens);\nfunction warnForPart(part, msg) {\n if (warned.indexOf(part) > -1)\n return;\n warned.push(part);\n console.warn(msg);\n}\nfunction createTokenType(extra, tagStr) {\n let tags$1 = [];\n for (let name of tagStr.split(\" \")) {\n let found = [];\n for (let part of name.split(\".\")) {\n let value = (extra[part] || tags[part]);\n if (!value) {\n warnForPart(part, `Unknown highlighting tag ${part}`);\n }\n else if (typeof value == \"function\") {\n if (!found.length)\n warnForPart(part, `Modifier ${part} used at start of tag`);\n else\n found = found.map(value);\n }\n else {\n if (found.length)\n warnForPart(part, `Tag ${part} used as modifier`);\n else\n found = Array.isArray(value) ? value : [value];\n }\n }\n for (let tag of found)\n tags$1.push(tag);\n }\n if (!tags$1.length)\n return 0;\n let name = tagStr.replace(/ /g, \"_\"), key = name + \" \" + tags$1.map(t => t.id);\n let known = byTag[key];\n if (known)\n return known.id;\n let type = byTag[key] = NodeType.define({\n id: typeArray.length,\n name,\n props: [styleTags({ [name]: tags$1 })]\n });\n typeArray.push(type);\n return type.id;\n}\nfunction docID(data, lang) {\n let type = NodeType.define({ id: typeArray.length, name: \"Document\", props: [\n languageDataProp.add(() => data),\n indentNodeProp.add(() => cx => lang.getIndent(cx))\n ], top: true });\n typeArray.push(type);\n return type;\n}\n\nfunction buildForLine(line) {\n return line.length <= 4096 && /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\ufb50-\\ufdff]/.test(line);\n}\nfunction textHasRTL(text) {\n for (let i = text.iter(); !i.next().done;)\n if (buildForLine(i.value))\n return true;\n return false;\n}\nfunction changeAddsRTL(change) {\n let added = false;\n change.iterChanges((fA, tA, fB, tB, ins) => {\n if (!added && textHasRTL(ins))\n added = true;\n });\n return added;\n}\nconst alwaysIsolate = /*@__PURE__*/Facet.define({ combine: values => values.some(x => x) });\n/**\nMake sure nodes\n[marked](https://lezer.codemirror.net/docs/ref/#common.NodeProp^isolate)\nas isolating for bidirectional text are rendered in a way that\nisolates them from the surrounding text.\n*/\nfunction bidiIsolates(options = {}) {\n let extensions = [isolateMarks];\n if (options.alwaysIsolate)\n extensions.push(alwaysIsolate.of(true));\n return extensions;\n}\nconst isolateMarks = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.always = view.state.facet(alwaysIsolate) ||\n view.textDirection != Direction.LTR ||\n view.state.facet(EditorView.perLineTextDirection);\n this.hasRTL = !this.always && textHasRTL(view.state.doc);\n this.tree = syntaxTree(view.state);\n this.decorations = this.always || this.hasRTL ? buildDeco(view, this.tree, this.always) : Decoration.none;\n }\n update(update) {\n let always = update.state.facet(alwaysIsolate) ||\n update.view.textDirection != Direction.LTR ||\n update.state.facet(EditorView.perLineTextDirection);\n if (!always && !this.hasRTL && changeAddsRTL(update.changes))\n this.hasRTL = true;\n if (!always && !this.hasRTL)\n return;\n let tree = syntaxTree(update.state);\n if (always != this.always || tree != this.tree || update.docChanged || update.viewportChanged) {\n this.tree = tree;\n this.always = always;\n this.decorations = buildDeco(update.view, tree, always);\n }\n }\n}, {\n provide: plugin => {\n function access(view) {\n var _a, _b;\n return (_b = (_a = view.plugin(plugin)) === null || _a === void 0 ? void 0 : _a.decorations) !== null && _b !== void 0 ? _b : Decoration.none;\n }\n return [EditorView.outerDecorations.of(access),\n Prec.lowest(EditorView.bidiIsolatedRanges.of(access))];\n }\n});\nfunction buildDeco(view, tree, always) {\n let deco = new RangeSetBuilder();\n let ranges = view.visibleRanges;\n if (!always)\n ranges = clipRTLLines(ranges, view.state.doc);\n for (let { from, to } of ranges) {\n tree.iterate({\n enter: node => {\n let iso = node.type.prop(NodeProp.isolate);\n if (iso)\n deco.add(node.from, node.to, marks[iso]);\n },\n from, to\n });\n }\n return deco.finish();\n}\nfunction clipRTLLines(ranges, doc) {\n let cur = doc.iter(), pos = 0, result = [], last = null;\n for (let { from, to } of ranges) {\n if (last && last.to > from) {\n from = last.to;\n if (from >= to)\n continue;\n }\n if (pos + cur.value.length < from) {\n cur.next(from - (pos + cur.value.length));\n pos = from;\n }\n for (;;) {\n let start = pos, end = pos + cur.value.length;\n if (!cur.lineBreak && buildForLine(cur.value)) {\n if (last && last.to > start - 10)\n last.to = Math.min(to, end);\n else\n result.push(last = { from: start, to: Math.min(to, end) });\n }\n if (end >= to)\n break;\n pos = end;\n cur.next();\n }\n }\n return result;\n}\nconst marks = {\n rtl: /*@__PURE__*/Decoration.mark({ class: \"cm-iso\", inclusive: true, attributes: { dir: \"rtl\" }, bidiIsolate: Direction.RTL }),\n ltr: /*@__PURE__*/Decoration.mark({ class: \"cm-iso\", inclusive: true, attributes: { dir: \"ltr\" }, bidiIsolate: Direction.LTR }),\n auto: /*@__PURE__*/Decoration.mark({ class: \"cm-iso\", inclusive: true, attributes: { dir: \"auto\" }, bidiIsolate: null })\n};\n\nexport { DocInput, HighlightStyle, IndentContext, LRLanguage, Language, LanguageDescription, LanguageSupport, ParseContext, StreamLanguage, StringStream, TreeIndentContext, bidiIsolates, bracketMatching, bracketMatchingHandle, codeFolding, continuedIndent, defaultHighlightStyle, defineLanguageFacet, delimitedIndent, ensureSyntaxTree, flatIndent, foldAll, foldCode, foldEffect, foldGutter, foldInside, foldKeymap, foldNodeProp, foldService, foldState, foldable, foldedRanges, forceParsing, getIndentUnit, getIndentation, highlightingFor, indentNodeProp, indentOnInput, indentRange, indentService, indentString, indentUnit, language, languageDataProp, matchBrackets, sublanguageProp, syntaxHighlighting, syntaxParserRunning, syntaxTree, syntaxTreeAvailable, toggleFold, unfoldAll, unfoldCode, unfoldEffect };\n","import { Annotation, Facet, combineConfig, StateField, Transaction, ChangeSet, ChangeDesc, EditorSelection, StateEffect, Text, findClusterBreak, countColumn, CharCategory } from '@codemirror/state';\nimport { EditorView, Direction } from '@codemirror/view';\nimport { IndentContext, getIndentation, indentString, matchBrackets, syntaxTree, getIndentUnit, indentUnit } from '@codemirror/language';\nimport { NodeProp } from '@lezer/common';\n\n/**\nComment or uncomment the current selection. Will use line comments\nif available, otherwise falling back to block comments.\n*/\nconst toggleComment = target => {\n let { state } = target, line = state.doc.lineAt(state.selection.main.from), config = getConfig(target.state, line.from);\n return config.line ? toggleLineComment(target) : config.block ? toggleBlockCommentByLine(target) : false;\n};\nfunction command(f, option) {\n return ({ state, dispatch }) => {\n if (state.readOnly)\n return false;\n let tr = f(option, state);\n if (!tr)\n return false;\n dispatch(state.update(tr));\n return true;\n };\n}\n/**\nComment or uncomment the current selection using line comments.\nThe line comment syntax is taken from the\n[`commentTokens`](https://codemirror.net/6/docs/ref/#commands.CommentTokens) [language\ndata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt).\n*/\nconst toggleLineComment = /*@__PURE__*/command(changeLineComment, 0 /* CommentOption.Toggle */);\n/**\nComment the current selection using line comments.\n*/\nconst lineComment = /*@__PURE__*/command(changeLineComment, 1 /* CommentOption.Comment */);\n/**\nUncomment the current selection using line comments.\n*/\nconst lineUncomment = /*@__PURE__*/command(changeLineComment, 2 /* CommentOption.Uncomment */);\n/**\nComment or uncomment the current selection using block comments.\nThe block comment syntax is taken from the\n[`commentTokens`](https://codemirror.net/6/docs/ref/#commands.CommentTokens) [language\ndata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt).\n*/\nconst toggleBlockComment = /*@__PURE__*/command(changeBlockComment, 0 /* CommentOption.Toggle */);\n/**\nComment the current selection using block comments.\n*/\nconst blockComment = /*@__PURE__*/command(changeBlockComment, 1 /* CommentOption.Comment */);\n/**\nUncomment the current selection using block comments.\n*/\nconst blockUncomment = /*@__PURE__*/command(changeBlockComment, 2 /* CommentOption.Uncomment */);\n/**\nComment or uncomment the lines around the current selection using\nblock comments.\n*/\nconst toggleBlockCommentByLine = /*@__PURE__*/command((o, s) => changeBlockComment(o, s, selectedLineRanges(s)), 0 /* CommentOption.Toggle */);\nfunction getConfig(state, pos) {\n let data = state.languageDataAt(\"commentTokens\", pos, 1);\n return data.length ? data[0] : {};\n}\nconst SearchMargin = 50;\n/**\nDetermines if the given range is block-commented in the given\nstate.\n*/\nfunction findBlockComment(state, { open, close }, from, to) {\n let textBefore = state.sliceDoc(from - SearchMargin, from);\n let textAfter = state.sliceDoc(to, to + SearchMargin);\n let spaceBefore = /\\s*$/.exec(textBefore)[0].length, spaceAfter = /^\\s*/.exec(textAfter)[0].length;\n let beforeOff = textBefore.length - spaceBefore;\n if (textBefore.slice(beforeOff - open.length, beforeOff) == open &&\n textAfter.slice(spaceAfter, spaceAfter + close.length) == close) {\n return { open: { pos: from - spaceBefore, margin: spaceBefore && 1 },\n close: { pos: to + spaceAfter, margin: spaceAfter && 1 } };\n }\n let startText, endText;\n if (to - from <= 2 * SearchMargin) {\n startText = endText = state.sliceDoc(from, to);\n }\n else {\n startText = state.sliceDoc(from, from + SearchMargin);\n endText = state.sliceDoc(to - SearchMargin, to);\n }\n let startSpace = /^\\s*/.exec(startText)[0].length, endSpace = /\\s*$/.exec(endText)[0].length;\n let endOff = endText.length - endSpace - close.length;\n if (startText.slice(startSpace, startSpace + open.length) == open &&\n endText.slice(endOff, endOff + close.length) == close) {\n return { open: { pos: from + startSpace + open.length,\n margin: /\\s/.test(startText.charAt(startSpace + open.length)) ? 1 : 0 },\n close: { pos: to - endSpace - close.length,\n margin: /\\s/.test(endText.charAt(endOff - 1)) ? 1 : 0 } };\n }\n return null;\n}\nfunction selectedLineRanges(state) {\n let ranges = [];\n for (let r of state.selection.ranges) {\n let fromLine = state.doc.lineAt(r.from);\n let toLine = r.to <= fromLine.to ? fromLine : state.doc.lineAt(r.to);\n if (toLine.from > fromLine.from && toLine.from == r.to)\n toLine = r.to == fromLine.to + 1 ? fromLine : state.doc.lineAt(r.to - 1);\n let last = ranges.length - 1;\n if (last >= 0 && ranges[last].to > fromLine.from)\n ranges[last].to = toLine.to;\n else\n ranges.push({ from: fromLine.from + /^\\s*/.exec(fromLine.text)[0].length, to: toLine.to });\n }\n return ranges;\n}\n// Performs toggle, comment and uncomment of block comments in\n// languages that support them.\nfunction changeBlockComment(option, state, ranges = state.selection.ranges) {\n let tokens = ranges.map(r => getConfig(state, r.from).block);\n if (!tokens.every(c => c))\n return null;\n let comments = ranges.map((r, i) => findBlockComment(state, tokens[i], r.from, r.to));\n if (option != 2 /* CommentOption.Uncomment */ && !comments.every(c => c)) {\n return { changes: state.changes(ranges.map((range, i) => {\n if (comments[i])\n return [];\n return [{ from: range.from, insert: tokens[i].open + \" \" }, { from: range.to, insert: \" \" + tokens[i].close }];\n })) };\n }\n else if (option != 1 /* CommentOption.Comment */ && comments.some(c => c)) {\n let changes = [];\n for (let i = 0, comment; i < comments.length; i++)\n if (comment = comments[i]) {\n let token = tokens[i], { open, close } = comment;\n changes.push({ from: open.pos - token.open.length, to: open.pos + open.margin }, { from: close.pos - close.margin, to: close.pos + token.close.length });\n }\n return { changes };\n }\n return null;\n}\n// Performs toggle, comment and uncomment of line comments.\nfunction changeLineComment(option, state, ranges = state.selection.ranges) {\n let lines = [];\n let prevLine = -1;\n ranges: for (let { from, to } of ranges) {\n let startI = lines.length, minIndent = 1e9, token;\n for (let pos = from; pos <= to;) {\n let line = state.doc.lineAt(pos);\n if (token == undefined) {\n token = getConfig(state, line.from).line;\n if (!token)\n continue ranges;\n }\n if (line.from > prevLine && (from == to || to > line.from)) {\n prevLine = line.from;\n let indent = /^\\s*/.exec(line.text)[0].length;\n let empty = indent == line.length;\n let comment = line.text.slice(indent, indent + token.length) == token ? indent : -1;\n if (indent < line.text.length && indent < minIndent)\n minIndent = indent;\n lines.push({ line, comment, token, indent, empty, single: false });\n }\n pos = line.to + 1;\n }\n if (minIndent < 1e9)\n for (let i = startI; i < lines.length; i++)\n if (lines[i].indent < lines[i].line.text.length)\n lines[i].indent = minIndent;\n if (lines.length == startI + 1)\n lines[startI].single = true;\n }\n if (option != 2 /* CommentOption.Uncomment */ && lines.some(l => l.comment < 0 && (!l.empty || l.single))) {\n let changes = [];\n for (let { line, token, indent, empty, single } of lines)\n if (single || !empty)\n changes.push({ from: line.from + indent, insert: token + \" \" });\n let changeSet = state.changes(changes);\n return { changes: changeSet, selection: state.selection.map(changeSet, 1) };\n }\n else if (option != 1 /* CommentOption.Comment */ && lines.some(l => l.comment >= 0)) {\n let changes = [];\n for (let { line, comment, token } of lines)\n if (comment >= 0) {\n let from = line.from + comment, to = from + token.length;\n if (line.text[to - line.from] == \" \")\n to++;\n changes.push({ from, to });\n }\n return { changes };\n }\n return null;\n}\n\nconst fromHistory = /*@__PURE__*/Annotation.define();\n/**\nTransaction annotation that will prevent that transaction from\nbeing combined with other transactions in the undo history. Given\n`\"before\"`, it'll prevent merging with previous transactions. With\n`\"after\"`, subsequent transactions won't be combined with this\none. With `\"full\"`, the transaction is isolated on both sides.\n*/\nconst isolateHistory = /*@__PURE__*/Annotation.define();\n/**\nThis facet provides a way to register functions that, given a\ntransaction, provide a set of effects that the history should\nstore when inverting the transaction. This can be used to\nintegrate some kinds of effects in the history, so that they can\nbe undone (and redone again).\n*/\nconst invertedEffects = /*@__PURE__*/Facet.define();\nconst historyConfig = /*@__PURE__*/Facet.define({\n combine(configs) {\n return combineConfig(configs, {\n minDepth: 100,\n newGroupDelay: 500,\n joinToEvent: (_t, isAdjacent) => isAdjacent,\n }, {\n minDepth: Math.max,\n newGroupDelay: Math.min,\n joinToEvent: (a, b) => (tr, adj) => a(tr, adj) || b(tr, adj)\n });\n }\n});\nconst historyField_ = /*@__PURE__*/StateField.define({\n create() {\n return HistoryState.empty;\n },\n update(state, tr) {\n let config = tr.state.facet(historyConfig);\n let fromHist = tr.annotation(fromHistory);\n if (fromHist) {\n let item = HistEvent.fromTransaction(tr, fromHist.selection), from = fromHist.side;\n let other = from == 0 /* BranchName.Done */ ? state.undone : state.done;\n if (item)\n other = updateBranch(other, other.length, config.minDepth, item);\n else\n other = addSelection(other, tr.startState.selection);\n return new HistoryState(from == 0 /* BranchName.Done */ ? fromHist.rest : other, from == 0 /* BranchName.Done */ ? other : fromHist.rest);\n }\n let isolate = tr.annotation(isolateHistory);\n if (isolate == \"full\" || isolate == \"before\")\n state = state.isolate();\n if (tr.annotation(Transaction.addToHistory) === false)\n return !tr.changes.empty ? state.addMapping(tr.changes.desc) : state;\n let event = HistEvent.fromTransaction(tr);\n let time = tr.annotation(Transaction.time), userEvent = tr.annotation(Transaction.userEvent);\n if (event)\n state = state.addChanges(event, time, userEvent, config, tr);\n else if (tr.selection)\n state = state.addSelection(tr.startState.selection, time, userEvent, config.newGroupDelay);\n if (isolate == \"full\" || isolate == \"after\")\n state = state.isolate();\n return state;\n },\n toJSON(value) {\n return { done: value.done.map(e => e.toJSON()), undone: value.undone.map(e => e.toJSON()) };\n },\n fromJSON(json) {\n return new HistoryState(json.done.map(HistEvent.fromJSON), json.undone.map(HistEvent.fromJSON));\n }\n});\n/**\nCreate a history extension with the given configuration.\n*/\nfunction history(config = {}) {\n return [\n historyField_,\n historyConfig.of(config),\n EditorView.domEventHandlers({\n beforeinput(e, view) {\n let command = e.inputType == \"historyUndo\" ? undo : e.inputType == \"historyRedo\" ? redo : null;\n if (!command)\n return false;\n e.preventDefault();\n return command(view);\n }\n })\n ];\n}\n/**\nThe state field used to store the history data. Should probably\nonly be used when you want to\n[serialize](https://codemirror.net/6/docs/ref/#state.EditorState.toJSON) or\n[deserialize](https://codemirror.net/6/docs/ref/#state.EditorState^fromJSON) state objects in a way\nthat preserves history.\n*/\nconst historyField = historyField_;\nfunction cmd(side, selection) {\n return function ({ state, dispatch }) {\n if (!selection && state.readOnly)\n return false;\n let historyState = state.field(historyField_, false);\n if (!historyState)\n return false;\n let tr = historyState.pop(side, state, selection);\n if (!tr)\n return false;\n dispatch(tr);\n return true;\n };\n}\n/**\nUndo a single group of history events. Returns false if no group\nwas available.\n*/\nconst undo = /*@__PURE__*/cmd(0 /* BranchName.Done */, false);\n/**\nRedo a group of history events. Returns false if no group was\navailable.\n*/\nconst redo = /*@__PURE__*/cmd(1 /* BranchName.Undone */, false);\n/**\nUndo a change or selection change.\n*/\nconst undoSelection = /*@__PURE__*/cmd(0 /* BranchName.Done */, true);\n/**\nRedo a change or selection change.\n*/\nconst redoSelection = /*@__PURE__*/cmd(1 /* BranchName.Undone */, true);\nfunction depth(side) {\n return function (state) {\n let histState = state.field(historyField_, false);\n if (!histState)\n return 0;\n let branch = side == 0 /* BranchName.Done */ ? histState.done : histState.undone;\n return branch.length - (branch.length && !branch[0].changes ? 1 : 0);\n };\n}\n/**\nThe amount of undoable change events available in a given state.\n*/\nconst undoDepth = /*@__PURE__*/depth(0 /* BranchName.Done */);\n/**\nThe amount of redoable change events available in a given state.\n*/\nconst redoDepth = /*@__PURE__*/depth(1 /* BranchName.Undone */);\n// History events store groups of changes or effects that need to be\n// undone/redone together.\nclass HistEvent {\n constructor(\n // The changes in this event. Normal events hold at least one\n // change or effect. But it may be necessary to store selection\n // events before the first change, in which case a special type of\n // instance is created which doesn't hold any changes, with\n // changes == startSelection == undefined\n changes, \n // The effects associated with this event\n effects, \n // Accumulated mapping (from addToHistory==false) that should be\n // applied to events below this one.\n mapped, \n // The selection before this event\n startSelection, \n // Stores selection changes after this event, to be used for\n // selection undo/redo.\n selectionsAfter) {\n this.changes = changes;\n this.effects = effects;\n this.mapped = mapped;\n this.startSelection = startSelection;\n this.selectionsAfter = selectionsAfter;\n }\n setSelAfter(after) {\n return new HistEvent(this.changes, this.effects, this.mapped, this.startSelection, after);\n }\n toJSON() {\n var _a, _b, _c;\n return {\n changes: (_a = this.changes) === null || _a === void 0 ? void 0 : _a.toJSON(),\n mapped: (_b = this.mapped) === null || _b === void 0 ? void 0 : _b.toJSON(),\n startSelection: (_c = this.startSelection) === null || _c === void 0 ? void 0 : _c.toJSON(),\n selectionsAfter: this.selectionsAfter.map(s => s.toJSON())\n };\n }\n static fromJSON(json) {\n return new HistEvent(json.changes && ChangeSet.fromJSON(json.changes), [], json.mapped && ChangeDesc.fromJSON(json.mapped), json.startSelection && EditorSelection.fromJSON(json.startSelection), json.selectionsAfter.map(EditorSelection.fromJSON));\n }\n // This does not check `addToHistory` and such, it assumes the\n // transaction needs to be converted to an item. Returns null when\n // there are no changes or effects in the transaction.\n static fromTransaction(tr, selection) {\n let effects = none;\n for (let invert of tr.startState.facet(invertedEffects)) {\n let result = invert(tr);\n if (result.length)\n effects = effects.concat(result);\n }\n if (!effects.length && tr.changes.empty)\n return null;\n return new HistEvent(tr.changes.invert(tr.startState.doc), effects, undefined, selection || tr.startState.selection, none);\n }\n static selection(selections) {\n return new HistEvent(undefined, none, undefined, undefined, selections);\n }\n}\nfunction updateBranch(branch, to, maxLen, newEvent) {\n let start = to + 1 > maxLen + 20 ? to - maxLen - 1 : 0;\n let newBranch = branch.slice(start, to);\n newBranch.push(newEvent);\n return newBranch;\n}\nfunction isAdjacent(a, b) {\n let ranges = [], isAdjacent = false;\n a.iterChangedRanges((f, t) => ranges.push(f, t));\n b.iterChangedRanges((_f, _t, f, t) => {\n for (let i = 0; i < ranges.length;) {\n let from = ranges[i++], to = ranges[i++];\n if (t >= from && f <= to)\n isAdjacent = true;\n }\n });\n return isAdjacent;\n}\nfunction eqSelectionShape(a, b) {\n return a.ranges.length == b.ranges.length &&\n a.ranges.filter((r, i) => r.empty != b.ranges[i].empty).length === 0;\n}\nfunction conc(a, b) {\n return !a.length ? b : !b.length ? a : a.concat(b);\n}\nconst none = [];\nconst MaxSelectionsPerEvent = 200;\nfunction addSelection(branch, selection) {\n if (!branch.length) {\n return [HistEvent.selection([selection])];\n }\n else {\n let lastEvent = branch[branch.length - 1];\n let sels = lastEvent.selectionsAfter.slice(Math.max(0, lastEvent.selectionsAfter.length - MaxSelectionsPerEvent));\n if (sels.length && sels[sels.length - 1].eq(selection))\n return branch;\n sels.push(selection);\n return updateBranch(branch, branch.length - 1, 1e9, lastEvent.setSelAfter(sels));\n }\n}\n// Assumes the top item has one or more selectionAfter values\nfunction popSelection(branch) {\n let last = branch[branch.length - 1];\n let newBranch = branch.slice();\n newBranch[branch.length - 1] = last.setSelAfter(last.selectionsAfter.slice(0, last.selectionsAfter.length - 1));\n return newBranch;\n}\n// Add a mapping to the top event in the given branch. If this maps\n// away all the changes and effects in that item, drop it and\n// propagate the mapping to the next item.\nfunction addMappingToBranch(branch, mapping) {\n if (!branch.length)\n return branch;\n let length = branch.length, selections = none;\n while (length) {\n let event = mapEvent(branch[length - 1], mapping, selections);\n if (event.changes && !event.changes.empty || event.effects.length) { // Event survived mapping\n let result = branch.slice(0, length);\n result[length - 1] = event;\n return result;\n }\n else { // Drop this event, since there's no changes or effects left\n mapping = event.mapped;\n length--;\n selections = event.selectionsAfter;\n }\n }\n return selections.length ? [HistEvent.selection(selections)] : none;\n}\nfunction mapEvent(event, mapping, extraSelections) {\n let selections = conc(event.selectionsAfter.length ? event.selectionsAfter.map(s => s.map(mapping)) : none, extraSelections);\n // Change-less events don't store mappings (they are always the last event in a branch)\n if (!event.changes)\n return HistEvent.selection(selections);\n let mappedChanges = event.changes.map(mapping), before = mapping.mapDesc(event.changes, true);\n let fullMapping = event.mapped ? event.mapped.composeDesc(before) : before;\n return new HistEvent(mappedChanges, StateEffect.mapEffects(event.effects, mapping), fullMapping, event.startSelection.map(before), selections);\n}\nconst joinableUserEvent = /^(input\\.type|delete)($|\\.)/;\nclass HistoryState {\n constructor(done, undone, prevTime = 0, prevUserEvent = undefined) {\n this.done = done;\n this.undone = undone;\n this.prevTime = prevTime;\n this.prevUserEvent = prevUserEvent;\n }\n isolate() {\n return this.prevTime ? new HistoryState(this.done, this.undone) : this;\n }\n addChanges(event, time, userEvent, config, tr) {\n let done = this.done, lastEvent = done[done.length - 1];\n if (lastEvent && lastEvent.changes && !lastEvent.changes.empty && event.changes &&\n (!userEvent || joinableUserEvent.test(userEvent)) &&\n ((!lastEvent.selectionsAfter.length &&\n time - this.prevTime < config.newGroupDelay &&\n config.joinToEvent(tr, isAdjacent(lastEvent.changes, event.changes))) ||\n // For compose (but not compose.start) events, always join with previous event\n userEvent == \"input.type.compose\")) {\n done = updateBranch(done, done.length - 1, config.minDepth, new HistEvent(event.changes.compose(lastEvent.changes), conc(StateEffect.mapEffects(event.effects, lastEvent.changes), lastEvent.effects), lastEvent.mapped, lastEvent.startSelection, none));\n }\n else {\n done = updateBranch(done, done.length, config.minDepth, event);\n }\n return new HistoryState(done, none, time, userEvent);\n }\n addSelection(selection, time, userEvent, newGroupDelay) {\n let last = this.done.length ? this.done[this.done.length - 1].selectionsAfter : none;\n if (last.length > 0 &&\n time - this.prevTime < newGroupDelay &&\n userEvent == this.prevUserEvent && userEvent && /^select($|\\.)/.test(userEvent) &&\n eqSelectionShape(last[last.length - 1], selection))\n return this;\n return new HistoryState(addSelection(this.done, selection), this.undone, time, userEvent);\n }\n addMapping(mapping) {\n return new HistoryState(addMappingToBranch(this.done, mapping), addMappingToBranch(this.undone, mapping), this.prevTime, this.prevUserEvent);\n }\n pop(side, state, onlySelection) {\n let branch = side == 0 /* BranchName.Done */ ? this.done : this.undone;\n if (branch.length == 0)\n return null;\n let event = branch[branch.length - 1], selection = event.selectionsAfter[0] ||\n (event.startSelection ? event.startSelection.map(event.changes.invertedDesc, 1) : state.selection);\n if (onlySelection && event.selectionsAfter.length) {\n return state.update({\n selection: event.selectionsAfter[event.selectionsAfter.length - 1],\n annotations: fromHistory.of({ side, rest: popSelection(branch), selection }),\n userEvent: side == 0 /* BranchName.Done */ ? \"select.undo\" : \"select.redo\",\n scrollIntoView: true\n });\n }\n else if (!event.changes) {\n return null;\n }\n else {\n let rest = branch.length == 1 ? none : branch.slice(0, branch.length - 1);\n if (event.mapped)\n rest = addMappingToBranch(rest, event.mapped);\n return state.update({\n changes: event.changes,\n selection: event.startSelection,\n effects: event.effects,\n annotations: fromHistory.of({ side, rest, selection }),\n filter: false,\n userEvent: side == 0 /* BranchName.Done */ ? \"undo\" : \"redo\",\n scrollIntoView: true\n });\n }\n }\n}\nHistoryState.empty = /*@__PURE__*/new HistoryState(none, none);\n/**\nDefault key bindings for the undo history.\n\n- Mod-z: [`undo`](https://codemirror.net/6/docs/ref/#commands.undo).\n- Mod-y (Mod-Shift-z on macOS) + Ctrl-Shift-z on Linux: [`redo`](https://codemirror.net/6/docs/ref/#commands.redo).\n- Mod-u: [`undoSelection`](https://codemirror.net/6/docs/ref/#commands.undoSelection).\n- Alt-u (Mod-Shift-u on macOS): [`redoSelection`](https://codemirror.net/6/docs/ref/#commands.redoSelection).\n*/\nconst historyKeymap = [\n { key: \"Mod-z\", run: undo, preventDefault: true },\n { key: \"Mod-y\", mac: \"Mod-Shift-z\", run: redo, preventDefault: true },\n { linux: \"Ctrl-Shift-z\", run: redo, preventDefault: true },\n { key: \"Mod-u\", run: undoSelection, preventDefault: true },\n { key: \"Alt-u\", mac: \"Mod-Shift-u\", run: redoSelection, preventDefault: true }\n];\n\nfunction updateSel(sel, by) {\n return EditorSelection.create(sel.ranges.map(by), sel.mainIndex);\n}\nfunction setSel(state, selection) {\n return state.update({ selection, scrollIntoView: true, userEvent: \"select\" });\n}\nfunction moveSel({ state, dispatch }, how) {\n let selection = updateSel(state.selection, how);\n if (selection.eq(state.selection, true))\n return false;\n dispatch(setSel(state, selection));\n return true;\n}\nfunction rangeEnd(range, forward) {\n return EditorSelection.cursor(forward ? range.to : range.from);\n}\nfunction cursorByChar(view, forward) {\n return moveSel(view, range => range.empty ? view.moveByChar(range, forward) : rangeEnd(range, forward));\n}\nfunction ltrAtCursor(view) {\n return view.textDirectionAt(view.state.selection.main.head) == Direction.LTR;\n}\n/**\nMove the selection one character to the left (which is backward in\nleft-to-right text, forward in right-to-left text).\n*/\nconst cursorCharLeft = view => cursorByChar(view, !ltrAtCursor(view));\n/**\nMove the selection one character to the right.\n*/\nconst cursorCharRight = view => cursorByChar(view, ltrAtCursor(view));\n/**\nMove the selection one character forward.\n*/\nconst cursorCharForward = view => cursorByChar(view, true);\n/**\nMove the selection one character backward.\n*/\nconst cursorCharBackward = view => cursorByChar(view, false);\nfunction byCharLogical(state, range, forward) {\n let pos = range.head, line = state.doc.lineAt(pos);\n if (pos == (forward ? line.to : line.from))\n pos = forward ? Math.min(state.doc.length, line.to + 1) : Math.max(0, line.from - 1);\n else\n pos = line.from + findClusterBreak(line.text, pos - line.from, forward);\n return EditorSelection.cursor(pos, forward ? -1 : 1);\n}\nfunction moveByCharLogical(target, forward) {\n return moveSel(target, range => range.empty ? byCharLogical(target.state, range, forward) : rangeEnd(range, forward));\n}\n/**\nMove the selection one character forward, in logical\n(non-text-direction-aware) string index order.\n*/\nconst cursorCharForwardLogical = target => moveByCharLogical(target, true);\n/**\nMove the selection one character backward, in logical string index\norder.\n*/\nconst cursorCharBackwardLogical = target => moveByCharLogical(target, false);\nfunction cursorByGroup(view, forward) {\n return moveSel(view, range => range.empty ? view.moveByGroup(range, forward) : rangeEnd(range, forward));\n}\n/**\nMove the selection to the left across one group of word or\nnon-word (but also non-space) characters.\n*/\nconst cursorGroupLeft = view => cursorByGroup(view, !ltrAtCursor(view));\n/**\nMove the selection one group to the right.\n*/\nconst cursorGroupRight = view => cursorByGroup(view, ltrAtCursor(view));\n/**\nMove the selection one group forward.\n*/\nconst cursorGroupForward = view => cursorByGroup(view, true);\n/**\nMove the selection one group backward.\n*/\nconst cursorGroupBackward = view => cursorByGroup(view, false);\nfunction toGroupStart(view, pos, start) {\n let categorize = view.state.charCategorizer(pos);\n let cat = categorize(start), initial = cat != CharCategory.Space;\n return (next) => {\n let nextCat = categorize(next);\n if (nextCat != CharCategory.Space)\n return initial && nextCat == cat;\n initial = false;\n return true;\n };\n}\n/**\nMove the cursor one group forward in the default Windows style,\nwhere it moves to the start of the next group.\n*/\nconst cursorGroupForwardWin = view => {\n return moveSel(view, range => range.empty\n ? view.moveByChar(range, true, start => toGroupStart(view, range.head, start))\n : rangeEnd(range, true));\n};\nconst segmenter = typeof Intl != \"undefined\" && Intl.Segmenter ?\n /*@__PURE__*/new (Intl.Segmenter)(undefined, { granularity: \"word\" }) : null;\nfunction moveBySubword(view, range, forward) {\n let categorize = view.state.charCategorizer(range.from);\n let cat = CharCategory.Space, pos = range.from, steps = 0;\n let done = false, sawUpper = false, sawLower = false;\n let step = (next) => {\n if (done)\n return false;\n pos += forward ? next.length : -next.length;\n let nextCat = categorize(next), ahead;\n if (nextCat == CharCategory.Word && next.charCodeAt(0) < 128 && /[\\W_]/.test(next))\n nextCat = -1; // Treat word punctuation specially\n if (cat == CharCategory.Space)\n cat = nextCat;\n if (cat != nextCat)\n return false;\n if (cat == CharCategory.Word) {\n if (next.toLowerCase() == next) {\n if (!forward && sawUpper)\n return false;\n sawLower = true;\n }\n else if (sawLower) {\n if (forward)\n return false;\n done = true;\n }\n else {\n if (sawUpper && forward && categorize(ahead = view.state.sliceDoc(pos, pos + 1)) == CharCategory.Word &&\n ahead.toLowerCase() == ahead)\n return false;\n sawUpper = true;\n }\n }\n steps++;\n return true;\n };\n let end = view.moveByChar(range, forward, start => {\n step(start);\n return step;\n });\n if (segmenter && cat == CharCategory.Word && end.from == range.from + steps * (forward ? 1 : -1)) {\n let from = Math.min(range.head, end.head), to = Math.max(range.head, end.head);\n let skipped = view.state.sliceDoc(from, to);\n if (skipped.length > 1 && /[\\u4E00-\\uffff]/.test(skipped)) {\n let segments = Array.from(segmenter.segment(skipped));\n if (segments.length > 1) {\n if (forward)\n return EditorSelection.cursor(range.head + segments[1].index, -1);\n return EditorSelection.cursor(end.head + segments[segments.length - 1].index, 1);\n }\n }\n }\n return end;\n}\nfunction cursorBySubword(view, forward) {\n return moveSel(view, range => range.empty ? moveBySubword(view, range, forward) : rangeEnd(range, forward));\n}\n/**\nMove the selection one group or camel-case subword forward.\n*/\nconst cursorSubwordForward = view => cursorBySubword(view, true);\n/**\nMove the selection one group or camel-case subword backward.\n*/\nconst cursorSubwordBackward = view => cursorBySubword(view, false);\nfunction interestingNode(state, node, bracketProp) {\n if (node.type.prop(bracketProp))\n return true;\n let len = node.to - node.from;\n return len && (len > 2 || /[^\\s,.;:]/.test(state.sliceDoc(node.from, node.to))) || node.firstChild;\n}\nfunction moveBySyntax(state, start, forward) {\n let pos = syntaxTree(state).resolveInner(start.head);\n let bracketProp = forward ? NodeProp.closedBy : NodeProp.openedBy;\n // Scan forward through child nodes to see if there's an interesting\n // node ahead.\n for (let at = start.head;;) {\n let next = forward ? pos.childAfter(at) : pos.childBefore(at);\n if (!next)\n break;\n if (interestingNode(state, next, bracketProp))\n pos = next;\n else\n at = forward ? next.to : next.from;\n }\n let bracket = pos.type.prop(bracketProp), match, newPos;\n if (bracket && (match = forward ? matchBrackets(state, pos.from, 1) : matchBrackets(state, pos.to, -1)) && match.matched)\n newPos = forward ? match.end.to : match.end.from;\n else\n newPos = forward ? pos.to : pos.from;\n return EditorSelection.cursor(newPos, forward ? -1 : 1);\n}\n/**\nMove the cursor over the next syntactic element to the left.\n*/\nconst cursorSyntaxLeft = view => moveSel(view, range => moveBySyntax(view.state, range, !ltrAtCursor(view)));\n/**\nMove the cursor over the next syntactic element to the right.\n*/\nconst cursorSyntaxRight = view => moveSel(view, range => moveBySyntax(view.state, range, ltrAtCursor(view)));\nfunction cursorByLine(view, forward) {\n return moveSel(view, range => {\n if (!range.empty)\n return rangeEnd(range, forward);\n let moved = view.moveVertically(range, forward);\n return moved.head != range.head ? moved : view.moveToLineBoundary(range, forward);\n });\n}\n/**\nMove the selection one line up.\n*/\nconst cursorLineUp = view => cursorByLine(view, false);\n/**\nMove the selection one line down.\n*/\nconst cursorLineDown = view => cursorByLine(view, true);\nfunction pageInfo(view) {\n let selfScroll = view.scrollDOM.clientHeight < view.scrollDOM.scrollHeight - 2;\n let marginTop = 0, marginBottom = 0, height;\n if (selfScroll) {\n for (let source of view.state.facet(EditorView.scrollMargins)) {\n let margins = source(view);\n if (margins === null || margins === void 0 ? void 0 : margins.top)\n marginTop = Math.max(margins === null || margins === void 0 ? void 0 : margins.top, marginTop);\n if (margins === null || margins === void 0 ? void 0 : margins.bottom)\n marginBottom = Math.max(margins === null || margins === void 0 ? void 0 : margins.bottom, marginBottom);\n }\n height = view.scrollDOM.clientHeight - marginTop - marginBottom;\n }\n else {\n height = (view.dom.ownerDocument.defaultView || window).innerHeight;\n }\n return { marginTop, marginBottom, selfScroll,\n height: Math.max(view.defaultLineHeight, height - 5) };\n}\nfunction cursorByPage(view, forward) {\n let page = pageInfo(view);\n let { state } = view, selection = updateSel(state.selection, range => {\n return range.empty ? view.moveVertically(range, forward, page.height)\n : rangeEnd(range, forward);\n });\n if (selection.eq(state.selection))\n return false;\n let effect;\n if (page.selfScroll) {\n let startPos = view.coordsAtPos(state.selection.main.head);\n let scrollRect = view.scrollDOM.getBoundingClientRect();\n let scrollTop = scrollRect.top + page.marginTop, scrollBottom = scrollRect.bottom - page.marginBottom;\n if (startPos && startPos.top > scrollTop && startPos.bottom < scrollBottom)\n effect = EditorView.scrollIntoView(selection.main.head, { y: \"start\", yMargin: startPos.top - scrollTop });\n }\n view.dispatch(setSel(state, selection), { effects: effect });\n return true;\n}\n/**\nMove the selection one page up.\n*/\nconst cursorPageUp = view => cursorByPage(view, false);\n/**\nMove the selection one page down.\n*/\nconst cursorPageDown = view => cursorByPage(view, true);\nfunction moveByLineBoundary(view, start, forward) {\n let line = view.lineBlockAt(start.head), moved = view.moveToLineBoundary(start, forward);\n if (moved.head == start.head && moved.head != (forward ? line.to : line.from))\n moved = view.moveToLineBoundary(start, forward, false);\n if (!forward && moved.head == line.from && line.length) {\n let space = /^\\s*/.exec(view.state.sliceDoc(line.from, Math.min(line.from + 100, line.to)))[0].length;\n if (space && start.head != line.from + space)\n moved = EditorSelection.cursor(line.from + space);\n }\n return moved;\n}\n/**\nMove the selection to the next line wrap point, or to the end of\nthe line if there isn't one left on this line.\n*/\nconst cursorLineBoundaryForward = view => moveSel(view, range => moveByLineBoundary(view, range, true));\n/**\nMove the selection to previous line wrap point, or failing that to\nthe start of the line. If the line is indented, and the cursor\nisn't already at the end of the indentation, this will move to the\nend of the indentation instead of the start of the line.\n*/\nconst cursorLineBoundaryBackward = view => moveSel(view, range => moveByLineBoundary(view, range, false));\n/**\nMove the selection one line wrap point to the left.\n*/\nconst cursorLineBoundaryLeft = view => moveSel(view, range => moveByLineBoundary(view, range, !ltrAtCursor(view)));\n/**\nMove the selection one line wrap point to the right.\n*/\nconst cursorLineBoundaryRight = view => moveSel(view, range => moveByLineBoundary(view, range, ltrAtCursor(view)));\n/**\nMove the selection to the start of the line.\n*/\nconst cursorLineStart = view => moveSel(view, range => EditorSelection.cursor(view.lineBlockAt(range.head).from, 1));\n/**\nMove the selection to the end of the line.\n*/\nconst cursorLineEnd = view => moveSel(view, range => EditorSelection.cursor(view.lineBlockAt(range.head).to, -1));\nfunction toMatchingBracket(state, dispatch, extend) {\n let found = false, selection = updateSel(state.selection, range => {\n let matching = matchBrackets(state, range.head, -1)\n || matchBrackets(state, range.head, 1)\n || (range.head > 0 && matchBrackets(state, range.head - 1, 1))\n || (range.head < state.doc.length && matchBrackets(state, range.head + 1, -1));\n if (!matching || !matching.end)\n return range;\n found = true;\n let head = matching.start.from == range.head ? matching.end.to : matching.end.from;\n return extend ? EditorSelection.range(range.anchor, head) : EditorSelection.cursor(head);\n });\n if (!found)\n return false;\n dispatch(setSel(state, selection));\n return true;\n}\n/**\nMove the selection to the bracket matching the one it is currently\non, if any.\n*/\nconst cursorMatchingBracket = ({ state, dispatch }) => toMatchingBracket(state, dispatch, false);\n/**\nExtend the selection to the bracket matching the one the selection\nhead is currently on, if any.\n*/\nconst selectMatchingBracket = ({ state, dispatch }) => toMatchingBracket(state, dispatch, true);\nfunction extendSel(target, how) {\n let selection = updateSel(target.state.selection, range => {\n let head = how(range);\n return EditorSelection.range(range.anchor, head.head, head.goalColumn, head.bidiLevel || undefined);\n });\n if (selection.eq(target.state.selection))\n return false;\n target.dispatch(setSel(target.state, selection));\n return true;\n}\nfunction selectByChar(view, forward) {\n return extendSel(view, range => view.moveByChar(range, forward));\n}\n/**\nMove the selection head one character to the left, while leaving\nthe anchor in place.\n*/\nconst selectCharLeft = view => selectByChar(view, !ltrAtCursor(view));\n/**\nMove the selection head one character to the right.\n*/\nconst selectCharRight = view => selectByChar(view, ltrAtCursor(view));\n/**\nMove the selection head one character forward.\n*/\nconst selectCharForward = view => selectByChar(view, true);\n/**\nMove the selection head one character backward.\n*/\nconst selectCharBackward = view => selectByChar(view, false);\n/**\nMove the selection head one character forward by logical\n(non-direction aware) string index order.\n*/\nconst selectCharForwardLogical = target => extendSel(target, range => byCharLogical(target.state, range, true));\n/**\nMove the selection head one character backward by logical string\nindex order.\n*/\nconst selectCharBackwardLogical = target => extendSel(target, range => byCharLogical(target.state, range, false));\nfunction selectByGroup(view, forward) {\n return extendSel(view, range => view.moveByGroup(range, forward));\n}\n/**\nMove the selection head one [group](https://codemirror.net/6/docs/ref/#commands.cursorGroupLeft) to\nthe left.\n*/\nconst selectGroupLeft = view => selectByGroup(view, !ltrAtCursor(view));\n/**\nMove the selection head one group to the right.\n*/\nconst selectGroupRight = view => selectByGroup(view, ltrAtCursor(view));\n/**\nMove the selection head one group forward.\n*/\nconst selectGroupForward = view => selectByGroup(view, true);\n/**\nMove the selection head one group backward.\n*/\nconst selectGroupBackward = view => selectByGroup(view, false);\n/**\nMove the selection head one group forward in the default Windows\nstyle, skipping to the start of the next group.\n*/\nconst selectGroupForwardWin = view => {\n return extendSel(view, range => view.moveByChar(range, true, start => toGroupStart(view, range.head, start)));\n};\nfunction selectBySubword(view, forward) {\n return extendSel(view, range => moveBySubword(view, range, forward));\n}\n/**\nMove the selection head one group or camel-case subword forward.\n*/\nconst selectSubwordForward = view => selectBySubword(view, true);\n/**\nMove the selection head one group or subword backward.\n*/\nconst selectSubwordBackward = view => selectBySubword(view, false);\n/**\nMove the selection head over the next syntactic element to the left.\n*/\nconst selectSyntaxLeft = view => extendSel(view, range => moveBySyntax(view.state, range, !ltrAtCursor(view)));\n/**\nMove the selection head over the next syntactic element to the right.\n*/\nconst selectSyntaxRight = view => extendSel(view, range => moveBySyntax(view.state, range, ltrAtCursor(view)));\nfunction selectByLine(view, forward) {\n return extendSel(view, range => view.moveVertically(range, forward));\n}\n/**\nMove the selection head one line up.\n*/\nconst selectLineUp = view => selectByLine(view, false);\n/**\nMove the selection head one line down.\n*/\nconst selectLineDown = view => selectByLine(view, true);\nfunction selectByPage(view, forward) {\n return extendSel(view, range => view.moveVertically(range, forward, pageInfo(view).height));\n}\n/**\nMove the selection head one page up.\n*/\nconst selectPageUp = view => selectByPage(view, false);\n/**\nMove the selection head one page down.\n*/\nconst selectPageDown = view => selectByPage(view, true);\n/**\nMove the selection head to the next line boundary.\n*/\nconst selectLineBoundaryForward = view => extendSel(view, range => moveByLineBoundary(view, range, true));\n/**\nMove the selection head to the previous line boundary.\n*/\nconst selectLineBoundaryBackward = view => extendSel(view, range => moveByLineBoundary(view, range, false));\n/**\nMove the selection head one line boundary to the left.\n*/\nconst selectLineBoundaryLeft = view => extendSel(view, range => moveByLineBoundary(view, range, !ltrAtCursor(view)));\n/**\nMove the selection head one line boundary to the right.\n*/\nconst selectLineBoundaryRight = view => extendSel(view, range => moveByLineBoundary(view, range, ltrAtCursor(view)));\n/**\nMove the selection head to the start of the line.\n*/\nconst selectLineStart = view => extendSel(view, range => EditorSelection.cursor(view.lineBlockAt(range.head).from));\n/**\nMove the selection head to the end of the line.\n*/\nconst selectLineEnd = view => extendSel(view, range => EditorSelection.cursor(view.lineBlockAt(range.head).to));\n/**\nMove the selection to the start of the document.\n*/\nconst cursorDocStart = ({ state, dispatch }) => {\n dispatch(setSel(state, { anchor: 0 }));\n return true;\n};\n/**\nMove the selection to the end of the document.\n*/\nconst cursorDocEnd = ({ state, dispatch }) => {\n dispatch(setSel(state, { anchor: state.doc.length }));\n return true;\n};\n/**\nMove the selection head to the start of the document.\n*/\nconst selectDocStart = ({ state, dispatch }) => {\n dispatch(setSel(state, { anchor: state.selection.main.anchor, head: 0 }));\n return true;\n};\n/**\nMove the selection head to the end of the document.\n*/\nconst selectDocEnd = ({ state, dispatch }) => {\n dispatch(setSel(state, { anchor: state.selection.main.anchor, head: state.doc.length }));\n return true;\n};\n/**\nSelect the entire document.\n*/\nconst selectAll = ({ state, dispatch }) => {\n dispatch(state.update({ selection: { anchor: 0, head: state.doc.length }, userEvent: \"select\" }));\n return true;\n};\n/**\nExpand the selection to cover entire lines.\n*/\nconst selectLine = ({ state, dispatch }) => {\n let ranges = selectedLineBlocks(state).map(({ from, to }) => EditorSelection.range(from, Math.min(to + 1, state.doc.length)));\n dispatch(state.update({ selection: EditorSelection.create(ranges), userEvent: \"select\" }));\n return true;\n};\n/**\nSelect the next syntactic construct that is larger than the\nselection. Note that this will only work insofar as the language\n[provider](https://codemirror.net/6/docs/ref/#language.language) you use builds up a full\nsyntax tree.\n*/\nconst selectParentSyntax = ({ state, dispatch }) => {\n let selection = updateSel(state.selection, range => {\n let tree = syntaxTree(state), stack = tree.resolveStack(range.from, 1);\n if (range.empty) {\n let stackBefore = tree.resolveStack(range.from, -1);\n if (stackBefore.node.from >= stack.node.from && stackBefore.node.to <= stack.node.to)\n stack = stackBefore;\n }\n for (let cur = stack; cur; cur = cur.next) {\n let { node } = cur;\n if (((node.from < range.from && node.to >= range.to) ||\n (node.to > range.to && node.from <= range.from)) &&\n cur.next)\n return EditorSelection.range(node.to, node.from);\n }\n return range;\n });\n if (selection.eq(state.selection))\n return false;\n dispatch(setSel(state, selection));\n return true;\n};\nfunction addCursorVertically(view, forward) {\n let { state } = view, sel = state.selection, ranges = state.selection.ranges.slice();\n for (let range of state.selection.ranges) {\n let line = state.doc.lineAt(range.head);\n if (forward ? line.to < view.state.doc.length : line.from > 0)\n for (let cur = range;;) {\n let next = view.moveVertically(cur, forward);\n if (next.head < line.from || next.head > line.to) {\n if (!ranges.some(r => r.head == next.head))\n ranges.push(next);\n break;\n }\n else if (next.head == cur.head) {\n break;\n }\n else {\n cur = next;\n }\n }\n }\n if (ranges.length == sel.ranges.length)\n return false;\n view.dispatch(setSel(state, EditorSelection.create(ranges, ranges.length - 1)));\n return true;\n}\n/**\nExpand the selection by adding a cursor above the heads of\ncurrently selected ranges.\n*/\nconst addCursorAbove = view => addCursorVertically(view, false);\n/**\nExpand the selection by adding a cursor below the heads of\ncurrently selected ranges.\n*/\nconst addCursorBelow = view => addCursorVertically(view, true);\n/**\nSimplify the current selection. When multiple ranges are selected,\nreduce it to its main range. Otherwise, if the selection is\nnon-empty, convert it to a cursor selection.\n*/\nconst simplifySelection = ({ state, dispatch }) => {\n let cur = state.selection, selection = null;\n if (cur.ranges.length > 1)\n selection = EditorSelection.create([cur.main]);\n else if (!cur.main.empty)\n selection = EditorSelection.create([EditorSelection.cursor(cur.main.head)]);\n if (!selection)\n return false;\n dispatch(setSel(state, selection));\n return true;\n};\nfunction deleteBy(target, by) {\n if (target.state.readOnly)\n return false;\n let event = \"delete.selection\", { state } = target;\n let changes = state.changeByRange(range => {\n let { from, to } = range;\n if (from == to) {\n let towards = by(range);\n if (towards < from) {\n event = \"delete.backward\";\n towards = skipAtomic(target, towards, false);\n }\n else if (towards > from) {\n event = \"delete.forward\";\n towards = skipAtomic(target, towards, true);\n }\n from = Math.min(from, towards);\n to = Math.max(to, towards);\n }\n else {\n from = skipAtomic(target, from, false);\n to = skipAtomic(target, to, true);\n }\n return from == to ? { range } : { changes: { from, to }, range: EditorSelection.cursor(from, from < range.head ? -1 : 1) };\n });\n if (changes.changes.empty)\n return false;\n target.dispatch(state.update(changes, {\n scrollIntoView: true,\n userEvent: event,\n effects: event == \"delete.selection\" ? EditorView.announce.of(state.phrase(\"Selection deleted\")) : undefined\n }));\n return true;\n}\nfunction skipAtomic(target, pos, forward) {\n if (target instanceof EditorView)\n for (let ranges of target.state.facet(EditorView.atomicRanges).map(f => f(target)))\n ranges.between(pos, pos, (from, to) => {\n if (from < pos && to > pos)\n pos = forward ? to : from;\n });\n return pos;\n}\nconst deleteByChar = (target, forward, byIndentUnit) => deleteBy(target, range => {\n let pos = range.from, { state } = target, line = state.doc.lineAt(pos), before, targetPos;\n if (byIndentUnit && !forward && pos > line.from && pos < line.from + 200 &&\n !/[^ \\t]/.test(before = line.text.slice(0, pos - line.from))) {\n if (before[before.length - 1] == \"\\t\")\n return pos - 1;\n let col = countColumn(before, state.tabSize), drop = col % getIndentUnit(state) || getIndentUnit(state);\n for (let i = 0; i < drop && before[before.length - 1 - i] == \" \"; i++)\n pos--;\n targetPos = pos;\n }\n else {\n targetPos = findClusterBreak(line.text, pos - line.from, forward, forward) + line.from;\n if (targetPos == pos && line.number != (forward ? state.doc.lines : 1))\n targetPos += forward ? 1 : -1;\n else if (!forward && /[\\ufe00-\\ufe0f]/.test(line.text.slice(targetPos - line.from, pos - line.from)))\n targetPos = findClusterBreak(line.text, targetPos - line.from, false, false) + line.from;\n }\n return targetPos;\n});\n/**\nDelete the selection, or, for cursor selections, the character or\nindentation unit before the cursor.\n*/\nconst deleteCharBackward = view => deleteByChar(view, false, true);\n/**\nDelete the selection or the character before the cursor. Does not\nimplement any extended behavior like deleting whole indentation\nunits in one go.\n*/\nconst deleteCharBackwardStrict = view => deleteByChar(view, false, false);\n/**\nDelete the selection or the character after the cursor.\n*/\nconst deleteCharForward = view => deleteByChar(view, true, false);\nconst deleteByGroup = (target, forward) => deleteBy(target, range => {\n let pos = range.head, { state } = target, line = state.doc.lineAt(pos);\n let categorize = state.charCategorizer(pos);\n for (let cat = null;;) {\n if (pos == (forward ? line.to : line.from)) {\n if (pos == range.head && line.number != (forward ? state.doc.lines : 1))\n pos += forward ? 1 : -1;\n break;\n }\n let next = findClusterBreak(line.text, pos - line.from, forward) + line.from;\n let nextChar = line.text.slice(Math.min(pos, next) - line.from, Math.max(pos, next) - line.from);\n let nextCat = categorize(nextChar);\n if (cat != null && nextCat != cat)\n break;\n if (nextChar != \" \" || pos != range.head)\n cat = nextCat;\n pos = next;\n }\n return pos;\n});\n/**\nDelete the selection or backward until the end of the next\n[group](https://codemirror.net/6/docs/ref/#view.EditorView.moveByGroup), only skipping groups of\nwhitespace when they consist of a single space.\n*/\nconst deleteGroupBackward = target => deleteByGroup(target, false);\n/**\nDelete the selection or forward until the end of the next group.\n*/\nconst deleteGroupForward = target => deleteByGroup(target, true);\n/**\nVariant of [`deleteGroupForward`](https://codemirror.net/6/docs/ref/#commands.deleteGroupForward)\nthat uses the Windows convention of also deleting the whitespace\nafter a word.\n*/\nconst deleteGroupForwardWin = view => deleteBy(view, range => view.moveByChar(range, true, start => toGroupStart(view, range.head, start)).head);\n/**\nDelete the selection, or, if it is a cursor selection, delete to\nthe end of the line. If the cursor is directly at the end of the\nline, delete the line break after it.\n*/\nconst deleteToLineEnd = view => deleteBy(view, range => {\n let lineEnd = view.lineBlockAt(range.head).to;\n return range.head < lineEnd ? lineEnd : Math.min(view.state.doc.length, range.head + 1);\n});\n/**\nDelete the selection, or, if it is a cursor selection, delete to\nthe start of the line. If the cursor is directly at the start of the\nline, delete the line break before it.\n*/\nconst deleteToLineStart = view => deleteBy(view, range => {\n let lineStart = view.lineBlockAt(range.head).from;\n return range.head > lineStart ? lineStart : Math.max(0, range.head - 1);\n});\n/**\nDelete the selection, or, if it is a cursor selection, delete to\nthe start of the line or the next line wrap before the cursor.\n*/\nconst deleteLineBoundaryBackward = view => deleteBy(view, range => {\n let lineStart = view.moveToLineBoundary(range, false).head;\n return range.head > lineStart ? lineStart : Math.max(0, range.head - 1);\n});\n/**\nDelete the selection, or, if it is a cursor selection, delete to\nthe end of the line or the next line wrap after the cursor.\n*/\nconst deleteLineBoundaryForward = view => deleteBy(view, range => {\n let lineStart = view.moveToLineBoundary(range, true).head;\n return range.head < lineStart ? lineStart : Math.min(view.state.doc.length, range.head + 1);\n});\n/**\nDelete all whitespace directly before a line end from the\ndocument.\n*/\nconst deleteTrailingWhitespace = ({ state, dispatch }) => {\n if (state.readOnly)\n return false;\n let changes = [];\n for (let pos = 0, prev = \"\", iter = state.doc.iter();;) {\n iter.next();\n if (iter.lineBreak || iter.done) {\n let trailing = prev.search(/\\s+$/);\n if (trailing > -1)\n changes.push({ from: pos - (prev.length - trailing), to: pos });\n if (iter.done)\n break;\n prev = \"\";\n }\n else {\n prev = iter.value;\n }\n pos += iter.value.length;\n }\n if (!changes.length)\n return false;\n dispatch(state.update({ changes, userEvent: \"delete\" }));\n return true;\n};\n/**\nReplace each selection range with a line break, leaving the cursor\non the line before the break.\n*/\nconst splitLine = ({ state, dispatch }) => {\n if (state.readOnly)\n return false;\n let changes = state.changeByRange(range => {\n return { changes: { from: range.from, to: range.to, insert: Text.of([\"\", \"\"]) },\n range: EditorSelection.cursor(range.from) };\n });\n dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"input\" }));\n return true;\n};\n/**\nFlip the characters before and after the cursor(s).\n*/\nconst transposeChars = ({ state, dispatch }) => {\n if (state.readOnly)\n return false;\n let changes = state.changeByRange(range => {\n if (!range.empty || range.from == 0 || range.from == state.doc.length)\n return { range };\n let pos = range.from, line = state.doc.lineAt(pos);\n let from = pos == line.from ? pos - 1 : findClusterBreak(line.text, pos - line.from, false) + line.from;\n let to = pos == line.to ? pos + 1 : findClusterBreak(line.text, pos - line.from, true) + line.from;\n return { changes: { from, to, insert: state.doc.slice(pos, to).append(state.doc.slice(from, pos)) },\n range: EditorSelection.cursor(to) };\n });\n if (changes.changes.empty)\n return false;\n dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"move.character\" }));\n return true;\n};\nfunction selectedLineBlocks(state) {\n let blocks = [], upto = -1;\n for (let range of state.selection.ranges) {\n let startLine = state.doc.lineAt(range.from), endLine = state.doc.lineAt(range.to);\n if (!range.empty && range.to == endLine.from)\n endLine = state.doc.lineAt(range.to - 1);\n if (upto >= startLine.number) {\n let prev = blocks[blocks.length - 1];\n prev.to = endLine.to;\n prev.ranges.push(range);\n }\n else {\n blocks.push({ from: startLine.from, to: endLine.to, ranges: [range] });\n }\n upto = endLine.number + 1;\n }\n return blocks;\n}\nfunction moveLine(state, dispatch, forward) {\n if (state.readOnly)\n return false;\n let changes = [], ranges = [];\n for (let block of selectedLineBlocks(state)) {\n if (forward ? block.to == state.doc.length : block.from == 0)\n continue;\n let nextLine = state.doc.lineAt(forward ? block.to + 1 : block.from - 1);\n let size = nextLine.length + 1;\n if (forward) {\n changes.push({ from: block.to, to: nextLine.to }, { from: block.from, insert: nextLine.text + state.lineBreak });\n for (let r of block.ranges)\n ranges.push(EditorSelection.range(Math.min(state.doc.length, r.anchor + size), Math.min(state.doc.length, r.head + size)));\n }\n else {\n changes.push({ from: nextLine.from, to: block.from }, { from: block.to, insert: state.lineBreak + nextLine.text });\n for (let r of block.ranges)\n ranges.push(EditorSelection.range(r.anchor - size, r.head - size));\n }\n }\n if (!changes.length)\n return false;\n dispatch(state.update({\n changes,\n scrollIntoView: true,\n selection: EditorSelection.create(ranges, state.selection.mainIndex),\n userEvent: \"move.line\"\n }));\n return true;\n}\n/**\nMove the selected lines up one line.\n*/\nconst moveLineUp = ({ state, dispatch }) => moveLine(state, dispatch, false);\n/**\nMove the selected lines down one line.\n*/\nconst moveLineDown = ({ state, dispatch }) => moveLine(state, dispatch, true);\nfunction copyLine(state, dispatch, forward) {\n if (state.readOnly)\n return false;\n let changes = [];\n for (let block of selectedLineBlocks(state)) {\n if (forward)\n changes.push({ from: block.from, insert: state.doc.slice(block.from, block.to) + state.lineBreak });\n else\n changes.push({ from: block.to, insert: state.lineBreak + state.doc.slice(block.from, block.to) });\n }\n let changeSet = state.changes(changes);\n dispatch(state.update({\n changes: changeSet,\n selection: state.selection.map(changeSet, forward ? 1 : -1),\n scrollIntoView: true,\n userEvent: \"input.copyline\"\n }));\n return true;\n}\n/**\nCreate a copy of the selected lines. Keep the selection in the top copy.\n*/\nconst copyLineUp = ({ state, dispatch }) => copyLine(state, dispatch, false);\n/**\nCreate a copy of the selected lines. Keep the selection in the bottom copy.\n*/\nconst copyLineDown = ({ state, dispatch }) => copyLine(state, dispatch, true);\n/**\nDelete selected lines.\n*/\nconst deleteLine = view => {\n if (view.state.readOnly)\n return false;\n let { state } = view, changes = state.changes(selectedLineBlocks(state).map(({ from, to }) => {\n if (from > 0)\n from--;\n else if (to < state.doc.length)\n to++;\n return { from, to };\n }));\n let selection = updateSel(state.selection, range => {\n let dist = undefined;\n if (view.lineWrapping) {\n let block = view.lineBlockAt(range.head), pos = view.coordsAtPos(range.head, range.assoc || 1);\n if (pos)\n dist = (block.bottom + view.documentTop) - pos.bottom + view.defaultLineHeight / 2;\n }\n return view.moveVertically(range, true, dist);\n }).map(changes);\n view.dispatch({ changes, selection, scrollIntoView: true, userEvent: \"delete.line\" });\n return true;\n};\n/**\nReplace the selection with a newline.\n*/\nconst insertNewline = ({ state, dispatch }) => {\n dispatch(state.update(state.replaceSelection(state.lineBreak), { scrollIntoView: true, userEvent: \"input\" }));\n return true;\n};\n/**\nReplace the selection with a newline and the same amount of\nindentation as the line above.\n*/\nconst insertNewlineKeepIndent = ({ state, dispatch }) => {\n dispatch(state.update(state.changeByRange(range => {\n let indent = /^\\s*/.exec(state.doc.lineAt(range.from).text)[0];\n return {\n changes: { from: range.from, to: range.to, insert: state.lineBreak + indent },\n range: EditorSelection.cursor(range.from + indent.length + 1)\n };\n }), { scrollIntoView: true, userEvent: \"input\" }));\n return true;\n};\nfunction isBetweenBrackets(state, pos) {\n if (/\\(\\)|\\[\\]|\\{\\}/.test(state.sliceDoc(pos - 1, pos + 1)))\n return { from: pos, to: pos };\n let context = syntaxTree(state).resolveInner(pos);\n let before = context.childBefore(pos), after = context.childAfter(pos), closedBy;\n if (before && after && before.to <= pos && after.from >= pos &&\n (closedBy = before.type.prop(NodeProp.closedBy)) && closedBy.indexOf(after.name) > -1 &&\n state.doc.lineAt(before.to).from == state.doc.lineAt(after.from).from &&\n !/\\S/.test(state.sliceDoc(before.to, after.from)))\n return { from: before.to, to: after.from };\n return null;\n}\n/**\nReplace the selection with a newline and indent the newly created\nline(s). If the current line consists only of whitespace, this\nwill also delete that whitespace. When the cursor is between\nmatching brackets, an additional newline will be inserted after\nthe cursor.\n*/\nconst insertNewlineAndIndent = /*@__PURE__*/newlineAndIndent(false);\n/**\nCreate a blank, indented line below the current line.\n*/\nconst insertBlankLine = /*@__PURE__*/newlineAndIndent(true);\nfunction newlineAndIndent(atEof) {\n return ({ state, dispatch }) => {\n if (state.readOnly)\n return false;\n let changes = state.changeByRange(range => {\n let { from, to } = range, line = state.doc.lineAt(from);\n let explode = !atEof && from == to && isBetweenBrackets(state, from);\n if (atEof)\n from = to = (to <= line.to ? line : state.doc.lineAt(to)).to;\n let cx = new IndentContext(state, { simulateBreak: from, simulateDoubleBreak: !!explode });\n let indent = getIndentation(cx, from);\n if (indent == null)\n indent = countColumn(/^\\s*/.exec(state.doc.lineAt(from).text)[0], state.tabSize);\n while (to < line.to && /\\s/.test(line.text[to - line.from]))\n to++;\n if (explode)\n ({ from, to } = explode);\n else if (from > line.from && from < line.from + 100 && !/\\S/.test(line.text.slice(0, from)))\n from = line.from;\n let insert = [\"\", indentString(state, indent)];\n if (explode)\n insert.push(indentString(state, cx.lineIndent(line.from, -1)));\n return { changes: { from, to, insert: Text.of(insert) },\n range: EditorSelection.cursor(from + 1 + insert[1].length) };\n });\n dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"input\" }));\n return true;\n };\n}\nfunction changeBySelectedLine(state, f) {\n let atLine = -1;\n return state.changeByRange(range => {\n let changes = [];\n for (let pos = range.from; pos <= range.to;) {\n let line = state.doc.lineAt(pos);\n if (line.number > atLine && (range.empty || range.to > line.from)) {\n f(line, changes, range);\n atLine = line.number;\n }\n pos = line.to + 1;\n }\n let changeSet = state.changes(changes);\n return { changes,\n range: EditorSelection.range(changeSet.mapPos(range.anchor, 1), changeSet.mapPos(range.head, 1)) };\n });\n}\n/**\nAuto-indent the selected lines. This uses the [indentation service\nfacet](https://codemirror.net/6/docs/ref/#language.indentService) as source for auto-indent\ninformation.\n*/\nconst indentSelection = ({ state, dispatch }) => {\n if (state.readOnly)\n return false;\n let updated = Object.create(null);\n let context = new IndentContext(state, { overrideIndentation: start => {\n let found = updated[start];\n return found == null ? -1 : found;\n } });\n let changes = changeBySelectedLine(state, (line, changes, range) => {\n let indent = getIndentation(context, line.from);\n if (indent == null)\n return;\n if (!/\\S/.test(line.text))\n indent = 0;\n let cur = /^\\s*/.exec(line.text)[0];\n let norm = indentString(state, indent);\n if (cur != norm || range.from < line.from + cur.length) {\n updated[line.from] = indent;\n changes.push({ from: line.from, to: line.from + cur.length, insert: norm });\n }\n });\n if (!changes.changes.empty)\n dispatch(state.update(changes, { userEvent: \"indent\" }));\n return true;\n};\n/**\nAdd a [unit](https://codemirror.net/6/docs/ref/#language.indentUnit) of indentation to all selected\nlines.\n*/\nconst indentMore = ({ state, dispatch }) => {\n if (state.readOnly)\n return false;\n dispatch(state.update(changeBySelectedLine(state, (line, changes) => {\n changes.push({ from: line.from, insert: state.facet(indentUnit) });\n }), { userEvent: \"input.indent\" }));\n return true;\n};\n/**\nRemove a [unit](https://codemirror.net/6/docs/ref/#language.indentUnit) of indentation from all\nselected lines.\n*/\nconst indentLess = ({ state, dispatch }) => {\n if (state.readOnly)\n return false;\n dispatch(state.update(changeBySelectedLine(state, (line, changes) => {\n let space = /^\\s*/.exec(line.text)[0];\n if (!space)\n return;\n let col = countColumn(space, state.tabSize), keep = 0;\n let insert = indentString(state, Math.max(0, col - getIndentUnit(state)));\n while (keep < space.length && keep < insert.length && space.charCodeAt(keep) == insert.charCodeAt(keep))\n keep++;\n changes.push({ from: line.from + keep, to: line.from + space.length, insert: insert.slice(keep) });\n }), { userEvent: \"delete.dedent\" }));\n return true;\n};\n/**\nEnables or disables\n[tab-focus mode](https://codemirror.net/6/docs/ref/#view.EditorView.setTabFocusMode). While on, this\nprevents the editor's key bindings from capturing Tab or\nShift-Tab, making it possible for the user to move focus out of\nthe editor with the keyboard.\n*/\nconst toggleTabFocusMode = view => {\n view.setTabFocusMode();\n return true;\n};\n/**\nTemporarily enables [tab-focus\nmode](https://codemirror.net/6/docs/ref/#view.EditorView.setTabFocusMode) for two seconds or until\nanother key is pressed.\n*/\nconst temporarilySetTabFocusMode = view => {\n view.setTabFocusMode(2000);\n return true;\n};\n/**\nInsert a tab character at the cursor or, if something is selected,\nuse [`indentMore`](https://codemirror.net/6/docs/ref/#commands.indentMore) to indent the entire\nselection.\n*/\nconst insertTab = ({ state, dispatch }) => {\n if (state.selection.ranges.some(r => !r.empty))\n return indentMore({ state, dispatch });\n dispatch(state.update(state.replaceSelection(\"\\t\"), { scrollIntoView: true, userEvent: \"input\" }));\n return true;\n};\n/**\nArray of key bindings containing the Emacs-style bindings that are\navailable on macOS by default.\n\n - Ctrl-b: [`cursorCharLeft`](https://codemirror.net/6/docs/ref/#commands.cursorCharLeft) ([`selectCharLeft`](https://codemirror.net/6/docs/ref/#commands.selectCharLeft) with Shift)\n - Ctrl-f: [`cursorCharRight`](https://codemirror.net/6/docs/ref/#commands.cursorCharRight) ([`selectCharRight`](https://codemirror.net/6/docs/ref/#commands.selectCharRight) with Shift)\n - Ctrl-p: [`cursorLineUp`](https://codemirror.net/6/docs/ref/#commands.cursorLineUp) ([`selectLineUp`](https://codemirror.net/6/docs/ref/#commands.selectLineUp) with Shift)\n - Ctrl-n: [`cursorLineDown`](https://codemirror.net/6/docs/ref/#commands.cursorLineDown) ([`selectLineDown`](https://codemirror.net/6/docs/ref/#commands.selectLineDown) with Shift)\n - Ctrl-a: [`cursorLineStart`](https://codemirror.net/6/docs/ref/#commands.cursorLineStart) ([`selectLineStart`](https://codemirror.net/6/docs/ref/#commands.selectLineStart) with Shift)\n - Ctrl-e: [`cursorLineEnd`](https://codemirror.net/6/docs/ref/#commands.cursorLineEnd) ([`selectLineEnd`](https://codemirror.net/6/docs/ref/#commands.selectLineEnd) with Shift)\n - Ctrl-d: [`deleteCharForward`](https://codemirror.net/6/docs/ref/#commands.deleteCharForward)\n - Ctrl-h: [`deleteCharBackward`](https://codemirror.net/6/docs/ref/#commands.deleteCharBackward)\n - Ctrl-k: [`deleteToLineEnd`](https://codemirror.net/6/docs/ref/#commands.deleteToLineEnd)\n - Ctrl-Alt-h: [`deleteGroupBackward`](https://codemirror.net/6/docs/ref/#commands.deleteGroupBackward)\n - Ctrl-o: [`splitLine`](https://codemirror.net/6/docs/ref/#commands.splitLine)\n - Ctrl-t: [`transposeChars`](https://codemirror.net/6/docs/ref/#commands.transposeChars)\n - Ctrl-v: [`cursorPageDown`](https://codemirror.net/6/docs/ref/#commands.cursorPageDown)\n - Alt-v: [`cursorPageUp`](https://codemirror.net/6/docs/ref/#commands.cursorPageUp)\n*/\nconst emacsStyleKeymap = [\n { key: \"Ctrl-b\", run: cursorCharLeft, shift: selectCharLeft, preventDefault: true },\n { key: \"Ctrl-f\", run: cursorCharRight, shift: selectCharRight },\n { key: \"Ctrl-p\", run: cursorLineUp, shift: selectLineUp },\n { key: \"Ctrl-n\", run: cursorLineDown, shift: selectLineDown },\n { key: \"Ctrl-a\", run: cursorLineStart, shift: selectLineStart },\n { key: \"Ctrl-e\", run: cursorLineEnd, shift: selectLineEnd },\n { key: \"Ctrl-d\", run: deleteCharForward },\n { key: \"Ctrl-h\", run: deleteCharBackward },\n { key: \"Ctrl-k\", run: deleteToLineEnd },\n { key: \"Ctrl-Alt-h\", run: deleteGroupBackward },\n { key: \"Ctrl-o\", run: splitLine },\n { key: \"Ctrl-t\", run: transposeChars },\n { key: \"Ctrl-v\", run: cursorPageDown },\n];\n/**\nAn array of key bindings closely sticking to platform-standard or\nwidely used bindings. (This includes the bindings from\n[`emacsStyleKeymap`](https://codemirror.net/6/docs/ref/#commands.emacsStyleKeymap), with their `key`\nproperty changed to `mac`.)\n\n - ArrowLeft: [`cursorCharLeft`](https://codemirror.net/6/docs/ref/#commands.cursorCharLeft) ([`selectCharLeft`](https://codemirror.net/6/docs/ref/#commands.selectCharLeft) with Shift)\n - ArrowRight: [`cursorCharRight`](https://codemirror.net/6/docs/ref/#commands.cursorCharRight) ([`selectCharRight`](https://codemirror.net/6/docs/ref/#commands.selectCharRight) with Shift)\n - Ctrl-ArrowLeft (Alt-ArrowLeft on macOS): [`cursorGroupLeft`](https://codemirror.net/6/docs/ref/#commands.cursorGroupLeft) ([`selectGroupLeft`](https://codemirror.net/6/docs/ref/#commands.selectGroupLeft) with Shift)\n - Ctrl-ArrowRight (Alt-ArrowRight on macOS): [`cursorGroupRight`](https://codemirror.net/6/docs/ref/#commands.cursorGroupRight) ([`selectGroupRight`](https://codemirror.net/6/docs/ref/#commands.selectGroupRight) with Shift)\n - Cmd-ArrowLeft (on macOS): [`cursorLineStart`](https://codemirror.net/6/docs/ref/#commands.cursorLineStart) ([`selectLineStart`](https://codemirror.net/6/docs/ref/#commands.selectLineStart) with Shift)\n - Cmd-ArrowRight (on macOS): [`cursorLineEnd`](https://codemirror.net/6/docs/ref/#commands.cursorLineEnd) ([`selectLineEnd`](https://codemirror.net/6/docs/ref/#commands.selectLineEnd) with Shift)\n - ArrowUp: [`cursorLineUp`](https://codemirror.net/6/docs/ref/#commands.cursorLineUp) ([`selectLineUp`](https://codemirror.net/6/docs/ref/#commands.selectLineUp) with Shift)\n - ArrowDown: [`cursorLineDown`](https://codemirror.net/6/docs/ref/#commands.cursorLineDown) ([`selectLineDown`](https://codemirror.net/6/docs/ref/#commands.selectLineDown) with Shift)\n - Cmd-ArrowUp (on macOS): [`cursorDocStart`](https://codemirror.net/6/docs/ref/#commands.cursorDocStart) ([`selectDocStart`](https://codemirror.net/6/docs/ref/#commands.selectDocStart) with Shift)\n - Cmd-ArrowDown (on macOS): [`cursorDocEnd`](https://codemirror.net/6/docs/ref/#commands.cursorDocEnd) ([`selectDocEnd`](https://codemirror.net/6/docs/ref/#commands.selectDocEnd) with Shift)\n - Ctrl-ArrowUp (on macOS): [`cursorPageUp`](https://codemirror.net/6/docs/ref/#commands.cursorPageUp) ([`selectPageUp`](https://codemirror.net/6/docs/ref/#commands.selectPageUp) with Shift)\n - Ctrl-ArrowDown (on macOS): [`cursorPageDown`](https://codemirror.net/6/docs/ref/#commands.cursorPageDown) ([`selectPageDown`](https://codemirror.net/6/docs/ref/#commands.selectPageDown) with Shift)\n - PageUp: [`cursorPageUp`](https://codemirror.net/6/docs/ref/#commands.cursorPageUp) ([`selectPageUp`](https://codemirror.net/6/docs/ref/#commands.selectPageUp) with Shift)\n - PageDown: [`cursorPageDown`](https://codemirror.net/6/docs/ref/#commands.cursorPageDown) ([`selectPageDown`](https://codemirror.net/6/docs/ref/#commands.selectPageDown) with Shift)\n - Home: [`cursorLineBoundaryBackward`](https://codemirror.net/6/docs/ref/#commands.cursorLineBoundaryBackward) ([`selectLineBoundaryBackward`](https://codemirror.net/6/docs/ref/#commands.selectLineBoundaryBackward) with Shift)\n - End: [`cursorLineBoundaryForward`](https://codemirror.net/6/docs/ref/#commands.cursorLineBoundaryForward) ([`selectLineBoundaryForward`](https://codemirror.net/6/docs/ref/#commands.selectLineBoundaryForward) with Shift)\n - Ctrl-Home (Cmd-Home on macOS): [`cursorDocStart`](https://codemirror.net/6/docs/ref/#commands.cursorDocStart) ([`selectDocStart`](https://codemirror.net/6/docs/ref/#commands.selectDocStart) with Shift)\n - Ctrl-End (Cmd-Home on macOS): [`cursorDocEnd`](https://codemirror.net/6/docs/ref/#commands.cursorDocEnd) ([`selectDocEnd`](https://codemirror.net/6/docs/ref/#commands.selectDocEnd) with Shift)\n - Enter and Shift-Enter: [`insertNewlineAndIndent`](https://codemirror.net/6/docs/ref/#commands.insertNewlineAndIndent)\n - Ctrl-a (Cmd-a on macOS): [`selectAll`](https://codemirror.net/6/docs/ref/#commands.selectAll)\n - Backspace: [`deleteCharBackward`](https://codemirror.net/6/docs/ref/#commands.deleteCharBackward)\n - Delete: [`deleteCharForward`](https://codemirror.net/6/docs/ref/#commands.deleteCharForward)\n - Ctrl-Backspace (Alt-Backspace on macOS): [`deleteGroupBackward`](https://codemirror.net/6/docs/ref/#commands.deleteGroupBackward)\n - Ctrl-Delete (Alt-Delete on macOS): [`deleteGroupForward`](https://codemirror.net/6/docs/ref/#commands.deleteGroupForward)\n - Cmd-Backspace (macOS): [`deleteLineBoundaryBackward`](https://codemirror.net/6/docs/ref/#commands.deleteLineBoundaryBackward).\n - Cmd-Delete (macOS): [`deleteLineBoundaryForward`](https://codemirror.net/6/docs/ref/#commands.deleteLineBoundaryForward).\n*/\nconst standardKeymap = /*@__PURE__*/[\n { key: \"ArrowLeft\", run: cursorCharLeft, shift: selectCharLeft, preventDefault: true },\n { key: \"Mod-ArrowLeft\", mac: \"Alt-ArrowLeft\", run: cursorGroupLeft, shift: selectGroupLeft, preventDefault: true },\n { mac: \"Cmd-ArrowLeft\", run: cursorLineBoundaryLeft, shift: selectLineBoundaryLeft, preventDefault: true },\n { key: \"ArrowRight\", run: cursorCharRight, shift: selectCharRight, preventDefault: true },\n { key: \"Mod-ArrowRight\", mac: \"Alt-ArrowRight\", run: cursorGroupRight, shift: selectGroupRight, preventDefault: true },\n { mac: \"Cmd-ArrowRight\", run: cursorLineBoundaryRight, shift: selectLineBoundaryRight, preventDefault: true },\n { key: \"ArrowUp\", run: cursorLineUp, shift: selectLineUp, preventDefault: true },\n { mac: \"Cmd-ArrowUp\", run: cursorDocStart, shift: selectDocStart },\n { mac: \"Ctrl-ArrowUp\", run: cursorPageUp, shift: selectPageUp },\n { key: \"ArrowDown\", run: cursorLineDown, shift: selectLineDown, preventDefault: true },\n { mac: \"Cmd-ArrowDown\", run: cursorDocEnd, shift: selectDocEnd },\n { mac: \"Ctrl-ArrowDown\", run: cursorPageDown, shift: selectPageDown },\n { key: \"PageUp\", run: cursorPageUp, shift: selectPageUp },\n { key: \"PageDown\", run: cursorPageDown, shift: selectPageDown },\n { key: \"Home\", run: cursorLineBoundaryBackward, shift: selectLineBoundaryBackward, preventDefault: true },\n { key: \"Mod-Home\", run: cursorDocStart, shift: selectDocStart },\n { key: \"End\", run: cursorLineBoundaryForward, shift: selectLineBoundaryForward, preventDefault: true },\n { key: \"Mod-End\", run: cursorDocEnd, shift: selectDocEnd },\n { key: \"Enter\", run: insertNewlineAndIndent, shift: insertNewlineAndIndent },\n { key: \"Mod-a\", run: selectAll },\n { key: \"Backspace\", run: deleteCharBackward, shift: deleteCharBackward, preventDefault: true },\n { key: \"Delete\", run: deleteCharForward, preventDefault: true },\n { key: \"Mod-Backspace\", mac: \"Alt-Backspace\", run: deleteGroupBackward, preventDefault: true },\n { key: \"Mod-Delete\", mac: \"Alt-Delete\", run: deleteGroupForward, preventDefault: true },\n { mac: \"Mod-Backspace\", run: deleteLineBoundaryBackward, preventDefault: true },\n { mac: \"Mod-Delete\", run: deleteLineBoundaryForward, preventDefault: true }\n].concat(/*@__PURE__*/emacsStyleKeymap.map(b => ({ mac: b.key, run: b.run, shift: b.shift })));\n/**\nThe default keymap. Includes all bindings from\n[`standardKeymap`](https://codemirror.net/6/docs/ref/#commands.standardKeymap) plus the following:\n\n- Alt-ArrowLeft (Ctrl-ArrowLeft on macOS): [`cursorSyntaxLeft`](https://codemirror.net/6/docs/ref/#commands.cursorSyntaxLeft) ([`selectSyntaxLeft`](https://codemirror.net/6/docs/ref/#commands.selectSyntaxLeft) with Shift)\n- Alt-ArrowRight (Ctrl-ArrowRight on macOS): [`cursorSyntaxRight`](https://codemirror.net/6/docs/ref/#commands.cursorSyntaxRight) ([`selectSyntaxRight`](https://codemirror.net/6/docs/ref/#commands.selectSyntaxRight) with Shift)\n- Alt-ArrowUp: [`moveLineUp`](https://codemirror.net/6/docs/ref/#commands.moveLineUp)\n- Alt-ArrowDown: [`moveLineDown`](https://codemirror.net/6/docs/ref/#commands.moveLineDown)\n- Shift-Alt-ArrowUp: [`copyLineUp`](https://codemirror.net/6/docs/ref/#commands.copyLineUp)\n- Shift-Alt-ArrowDown: [`copyLineDown`](https://codemirror.net/6/docs/ref/#commands.copyLineDown)\n- Ctrl-Alt-ArrowUp (Cmd-Alt-ArrowUp on macOS): [`addCursorAbove`](https://codemirror.net/6/docs/ref/#commands.addCursorAbove).\n- Ctrl-Alt-ArrowDown (Cmd-Alt-ArrowDown on macOS): [`addCursorBelow`](https://codemirror.net/6/docs/ref/#commands.addCursorBelow).\n- Escape: [`simplifySelection`](https://codemirror.net/6/docs/ref/#commands.simplifySelection)\n- Ctrl-Enter (Cmd-Enter on macOS): [`insertBlankLine`](https://codemirror.net/6/docs/ref/#commands.insertBlankLine)\n- Alt-l (Ctrl-l on macOS): [`selectLine`](https://codemirror.net/6/docs/ref/#commands.selectLine)\n- Ctrl-i (Cmd-i on macOS): [`selectParentSyntax`](https://codemirror.net/6/docs/ref/#commands.selectParentSyntax)\n- Ctrl-[ (Cmd-[ on macOS): [`indentLess`](https://codemirror.net/6/docs/ref/#commands.indentLess)\n- Ctrl-] (Cmd-] on macOS): [`indentMore`](https://codemirror.net/6/docs/ref/#commands.indentMore)\n- Ctrl-Alt-\\\\ (Cmd-Alt-\\\\ on macOS): [`indentSelection`](https://codemirror.net/6/docs/ref/#commands.indentSelection)\n- Shift-Ctrl-k (Shift-Cmd-k on macOS): [`deleteLine`](https://codemirror.net/6/docs/ref/#commands.deleteLine)\n- Shift-Ctrl-\\\\ (Shift-Cmd-\\\\ on macOS): [`cursorMatchingBracket`](https://codemirror.net/6/docs/ref/#commands.cursorMatchingBracket)\n- Ctrl-/ (Cmd-/ on macOS): [`toggleComment`](https://codemirror.net/6/docs/ref/#commands.toggleComment).\n- Shift-Alt-a: [`toggleBlockComment`](https://codemirror.net/6/docs/ref/#commands.toggleBlockComment).\n- Ctrl-m (Alt-Shift-m on macOS): [`toggleTabFocusMode`](https://codemirror.net/6/docs/ref/#commands.toggleTabFocusMode).\n*/\nconst defaultKeymap = /*@__PURE__*/[\n { key: \"Alt-ArrowLeft\", mac: \"Ctrl-ArrowLeft\", run: cursorSyntaxLeft, shift: selectSyntaxLeft },\n { key: \"Alt-ArrowRight\", mac: \"Ctrl-ArrowRight\", run: cursorSyntaxRight, shift: selectSyntaxRight },\n { key: \"Alt-ArrowUp\", run: moveLineUp },\n { key: \"Shift-Alt-ArrowUp\", run: copyLineUp },\n { key: \"Alt-ArrowDown\", run: moveLineDown },\n { key: \"Shift-Alt-ArrowDown\", run: copyLineDown },\n { key: \"Mod-Alt-ArrowUp\", run: addCursorAbove },\n { key: \"Mod-Alt-ArrowDown\", run: addCursorBelow },\n { key: \"Escape\", run: simplifySelection },\n { key: \"Mod-Enter\", run: insertBlankLine },\n { key: \"Alt-l\", mac: \"Ctrl-l\", run: selectLine },\n { key: \"Mod-i\", run: selectParentSyntax, preventDefault: true },\n { key: \"Mod-[\", run: indentLess },\n { key: \"Mod-]\", run: indentMore },\n { key: \"Mod-Alt-\\\\\", run: indentSelection },\n { key: \"Shift-Mod-k\", run: deleteLine },\n { key: \"Shift-Mod-\\\\\", run: cursorMatchingBracket },\n { key: \"Mod-/\", run: toggleComment },\n { key: \"Alt-A\", run: toggleBlockComment },\n { key: \"Ctrl-m\", mac: \"Shift-Alt-m\", run: toggleTabFocusMode },\n].concat(standardKeymap);\n/**\nA binding that binds Tab to [`indentMore`](https://codemirror.net/6/docs/ref/#commands.indentMore) and\nShift-Tab to [`indentLess`](https://codemirror.net/6/docs/ref/#commands.indentLess).\nPlease see the [Tab example](../../examples/tab/) before using\nthis.\n*/\nconst indentWithTab = { key: \"Tab\", run: indentMore, shift: indentLess };\n\nexport { addCursorAbove, addCursorBelow, blockComment, blockUncomment, copyLineDown, copyLineUp, cursorCharBackward, cursorCharBackwardLogical, cursorCharForward, cursorCharForwardLogical, cursorCharLeft, cursorCharRight, cursorDocEnd, cursorDocStart, cursorGroupBackward, cursorGroupForward, cursorGroupForwardWin, cursorGroupLeft, cursorGroupRight, cursorLineBoundaryBackward, cursorLineBoundaryForward, cursorLineBoundaryLeft, cursorLineBoundaryRight, cursorLineDown, cursorLineEnd, cursorLineStart, cursorLineUp, cursorMatchingBracket, cursorPageDown, cursorPageUp, cursorSubwordBackward, cursorSubwordForward, cursorSyntaxLeft, cursorSyntaxRight, defaultKeymap, deleteCharBackward, deleteCharBackwardStrict, deleteCharForward, deleteGroupBackward, deleteGroupForward, deleteGroupForwardWin, deleteLine, deleteLineBoundaryBackward, deleteLineBoundaryForward, deleteToLineEnd, deleteToLineStart, deleteTrailingWhitespace, emacsStyleKeymap, history, historyField, historyKeymap, indentLess, indentMore, indentSelection, indentWithTab, insertBlankLine, insertNewline, insertNewlineAndIndent, insertNewlineKeepIndent, insertTab, invertedEffects, isolateHistory, lineComment, lineUncomment, moveLineDown, moveLineUp, redo, redoDepth, redoSelection, selectAll, selectCharBackward, selectCharBackwardLogical, selectCharForward, selectCharForwardLogical, selectCharLeft, selectCharRight, selectDocEnd, selectDocStart, selectGroupBackward, selectGroupForward, selectGroupForwardWin, selectGroupLeft, selectGroupRight, selectLine, selectLineBoundaryBackward, selectLineBoundaryForward, selectLineBoundaryLeft, selectLineBoundaryRight, selectLineDown, selectLineEnd, selectLineStart, selectLineUp, selectMatchingBracket, selectPageDown, selectPageUp, selectParentSyntax, selectSubwordBackward, selectSubwordForward, selectSyntaxLeft, selectSyntaxRight, simplifySelection, splitLine, standardKeymap, temporarilySetTabFocusMode, toggleBlockComment, toggleBlockCommentByLine, toggleComment, toggleLineComment, toggleTabFocusMode, transposeChars, undo, undoDepth, undoSelection };\n","import { showDialog, EditorView, Decoration, ViewPlugin, showPanel, runScopeHandlers, getPanel } from '@codemirror/view';\nimport { codePointAt, fromCodePoint, codePointSize, EditorSelection, Facet, combineConfig, CharCategory, StateEffect, StateField, RangeSetBuilder, Prec, EditorState, findClusterBreak } from '@codemirror/state';\nimport elt from 'crelt';\n\nconst basicNormalize = typeof String.prototype.normalize == \"function\"\n ? x => x.normalize(\"NFKD\") : x => x;\n/**\nA search cursor provides an iterator over text matches in a\ndocument.\n*/\nclass SearchCursor {\n /**\n Create a text cursor. The query is the search string, `from` to\n `to` provides the region to search.\n \n When `normalize` is given, it will be called, on both the query\n string and the content it is matched against, before comparing.\n You can, for example, create a case-insensitive search by\n passing `s => s.toLowerCase()`.\n \n Text is always normalized with\n [`.normalize(\"NFKD\")`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize)\n (when supported).\n */\n constructor(text, query, from = 0, to = text.length, normalize, test) {\n this.test = test;\n /**\n The current match (only holds a meaningful value after\n [`next`](https://codemirror.net/6/docs/ref/#search.SearchCursor.next) has been called and when\n `done` is false).\n */\n this.value = { from: 0, to: 0 };\n /**\n Whether the end of the iterated region has been reached.\n */\n this.done = false;\n this.matches = [];\n this.buffer = \"\";\n this.bufferPos = 0;\n this.iter = text.iterRange(from, to);\n this.bufferStart = from;\n this.normalize = normalize ? x => normalize(basicNormalize(x)) : basicNormalize;\n this.query = this.normalize(query);\n }\n peek() {\n if (this.bufferPos == this.buffer.length) {\n this.bufferStart += this.buffer.length;\n this.iter.next();\n if (this.iter.done)\n return -1;\n this.bufferPos = 0;\n this.buffer = this.iter.value;\n }\n return codePointAt(this.buffer, this.bufferPos);\n }\n /**\n Look for the next match. Updates the iterator's\n [`value`](https://codemirror.net/6/docs/ref/#search.SearchCursor.value) and\n [`done`](https://codemirror.net/6/docs/ref/#search.SearchCursor.done) properties. Should be called\n at least once before using the cursor.\n */\n next() {\n while (this.matches.length)\n this.matches.pop();\n return this.nextOverlapping();\n }\n /**\n The `next` method will ignore matches that partially overlap a\n previous match. This method behaves like `next`, but includes\n such matches.\n */\n nextOverlapping() {\n for (;;) {\n let next = this.peek();\n if (next < 0) {\n this.done = true;\n return this;\n }\n let str = fromCodePoint(next), start = this.bufferStart + this.bufferPos;\n this.bufferPos += codePointSize(next);\n let norm = this.normalize(str);\n if (norm.length)\n for (let i = 0, pos = start;; i++) {\n let code = norm.charCodeAt(i);\n let match = this.match(code, pos, this.bufferPos + this.bufferStart);\n if (i == norm.length - 1) {\n if (match) {\n this.value = match;\n return this;\n }\n break;\n }\n if (pos == start && i < str.length && str.charCodeAt(i) == code)\n pos++;\n }\n }\n }\n match(code, pos, end) {\n let match = null;\n for (let i = 0; i < this.matches.length; i += 2) {\n let index = this.matches[i], keep = false;\n if (this.query.charCodeAt(index) == code) {\n if (index == this.query.length - 1) {\n match = { from: this.matches[i + 1], to: end };\n }\n else {\n this.matches[i]++;\n keep = true;\n }\n }\n if (!keep) {\n this.matches.splice(i, 2);\n i -= 2;\n }\n }\n if (this.query.charCodeAt(0) == code) {\n if (this.query.length == 1)\n match = { from: pos, to: end };\n else\n this.matches.push(1, pos);\n }\n if (match && this.test && !this.test(match.from, match.to, this.buffer, this.bufferStart))\n match = null;\n return match;\n }\n}\nif (typeof Symbol != \"undefined\")\n SearchCursor.prototype[Symbol.iterator] = function () { return this; };\n\nconst empty = { from: -1, to: -1, match: /*@__PURE__*//.*/.exec(\"\") };\nconst baseFlags = \"gm\" + (/x/.unicode == null ? \"\" : \"u\");\n/**\nThis class is similar to [`SearchCursor`](https://codemirror.net/6/docs/ref/#search.SearchCursor)\nbut searches for a regular expression pattern instead of a plain\nstring.\n*/\nclass RegExpCursor {\n /**\n Create a cursor that will search the given range in the given\n document. `query` should be the raw pattern (as you'd pass it to\n `new RegExp`).\n */\n constructor(text, query, options, from = 0, to = text.length) {\n this.text = text;\n this.to = to;\n this.curLine = \"\";\n /**\n Set to `true` when the cursor has reached the end of the search\n range.\n */\n this.done = false;\n /**\n Will contain an object with the extent of the match and the\n match object when [`next`](https://codemirror.net/6/docs/ref/#search.RegExpCursor.next)\n sucessfully finds a match.\n */\n this.value = empty;\n if (/\\\\[sWDnr]|\\n|\\r|\\[\\^/.test(query))\n return new MultilineRegExpCursor(text, query, options, from, to);\n this.re = new RegExp(query, baseFlags + ((options === null || options === void 0 ? void 0 : options.ignoreCase) ? \"i\" : \"\"));\n this.test = options === null || options === void 0 ? void 0 : options.test;\n this.iter = text.iter();\n let startLine = text.lineAt(from);\n this.curLineStart = startLine.from;\n this.matchPos = toCharEnd(text, from);\n this.getLine(this.curLineStart);\n }\n getLine(skip) {\n this.iter.next(skip);\n if (this.iter.lineBreak) {\n this.curLine = \"\";\n }\n else {\n this.curLine = this.iter.value;\n if (this.curLineStart + this.curLine.length > this.to)\n this.curLine = this.curLine.slice(0, this.to - this.curLineStart);\n this.iter.next();\n }\n }\n nextLine() {\n this.curLineStart = this.curLineStart + this.curLine.length + 1;\n if (this.curLineStart > this.to)\n this.curLine = \"\";\n else\n this.getLine(0);\n }\n /**\n Move to the next match, if there is one.\n */\n next() {\n for (let off = this.matchPos - this.curLineStart;;) {\n this.re.lastIndex = off;\n let match = this.matchPos <= this.to && this.re.exec(this.curLine);\n if (match) {\n let from = this.curLineStart + match.index, to = from + match[0].length;\n this.matchPos = toCharEnd(this.text, to + (from == to ? 1 : 0));\n if (from == this.curLineStart + this.curLine.length)\n this.nextLine();\n if ((from < to || from > this.value.to) && (!this.test || this.test(from, to, match))) {\n this.value = { from, to, match };\n return this;\n }\n off = this.matchPos - this.curLineStart;\n }\n else if (this.curLineStart + this.curLine.length < this.to) {\n this.nextLine();\n off = 0;\n }\n else {\n this.done = true;\n return this;\n }\n }\n }\n}\nconst flattened = /*@__PURE__*/new WeakMap();\n// Reusable (partially) flattened document strings\nclass FlattenedDoc {\n constructor(from, text) {\n this.from = from;\n this.text = text;\n }\n get to() { return this.from + this.text.length; }\n static get(doc, from, to) {\n let cached = flattened.get(doc);\n if (!cached || cached.from >= to || cached.to <= from) {\n let flat = new FlattenedDoc(from, doc.sliceString(from, to));\n flattened.set(doc, flat);\n return flat;\n }\n if (cached.from == from && cached.to == to)\n return cached;\n let { text, from: cachedFrom } = cached;\n if (cachedFrom > from) {\n text = doc.sliceString(from, cachedFrom) + text;\n cachedFrom = from;\n }\n if (cached.to < to)\n text += doc.sliceString(cached.to, to);\n flattened.set(doc, new FlattenedDoc(cachedFrom, text));\n return new FlattenedDoc(from, text.slice(from - cachedFrom, to - cachedFrom));\n }\n}\nclass MultilineRegExpCursor {\n constructor(text, query, options, from, to) {\n this.text = text;\n this.to = to;\n this.done = false;\n this.value = empty;\n this.matchPos = toCharEnd(text, from);\n this.re = new RegExp(query, baseFlags + ((options === null || options === void 0 ? void 0 : options.ignoreCase) ? \"i\" : \"\"));\n this.test = options === null || options === void 0 ? void 0 : options.test;\n this.flat = FlattenedDoc.get(text, from, this.chunkEnd(from + 5000 /* Chunk.Base */));\n }\n chunkEnd(pos) {\n return pos >= this.to ? this.to : this.text.lineAt(pos).to;\n }\n next() {\n for (;;) {\n let off = this.re.lastIndex = this.matchPos - this.flat.from;\n let match = this.re.exec(this.flat.text);\n // Skip empty matches directly after the last match\n if (match && !match[0] && match.index == off) {\n this.re.lastIndex = off + 1;\n match = this.re.exec(this.flat.text);\n }\n if (match) {\n let from = this.flat.from + match.index, to = from + match[0].length;\n // If a match goes almost to the end of a noncomplete chunk, try\n // again, since it'll likely be able to match more\n if ((this.flat.to >= this.to || match.index + match[0].length <= this.flat.text.length - 10) &&\n (!this.test || this.test(from, to, match))) {\n this.value = { from, to, match };\n this.matchPos = toCharEnd(this.text, to + (from == to ? 1 : 0));\n return this;\n }\n }\n if (this.flat.to == this.to) {\n this.done = true;\n return this;\n }\n // Grow the flattened doc\n this.flat = FlattenedDoc.get(this.text, this.flat.from, this.chunkEnd(this.flat.from + this.flat.text.length * 2));\n }\n }\n}\nif (typeof Symbol != \"undefined\") {\n RegExpCursor.prototype[Symbol.iterator] = MultilineRegExpCursor.prototype[Symbol.iterator] =\n function () { return this; };\n}\nfunction validRegExp(source) {\n try {\n new RegExp(source, baseFlags);\n return true;\n }\n catch (_a) {\n return false;\n }\n}\nfunction toCharEnd(text, pos) {\n if (pos >= text.length)\n return pos;\n let line = text.lineAt(pos), next;\n while (pos < line.to && (next = line.text.charCodeAt(pos - line.from)) >= 0xDC00 && next < 0xE000)\n pos++;\n return pos;\n}\n\n/**\nCommand that shows a dialog asking the user for a line number, and\nwhen a valid position is provided, moves the cursor to that line.\n\nSupports line numbers, relative line offsets prefixed with `+` or\n`-`, document percentages suffixed with `%`, and an optional\ncolumn position by adding `:` and a second number after the line\nnumber.\n*/\nconst gotoLine = view => {\n let { state } = view;\n let line = String(state.doc.lineAt(view.state.selection.main.head).number);\n let { close, result } = showDialog(view, {\n label: state.phrase(\"Go to line\"),\n input: { type: \"text\", name: \"line\", value: line },\n focus: true,\n submitLabel: state.phrase(\"go\"),\n });\n result.then(form => {\n let match = form && /^([+-])?(\\d+)?(:\\d+)?(%)?$/.exec(form.elements[\"line\"].value);\n if (!match) {\n view.dispatch({ effects: close });\n return;\n }\n let startLine = state.doc.lineAt(state.selection.main.head);\n let [, sign, ln, cl, percent] = match;\n let col = cl ? +cl.slice(1) : 0;\n let line = ln ? +ln : startLine.number;\n if (ln && percent) {\n let pc = line / 100;\n if (sign)\n pc = pc * (sign == \"-\" ? -1 : 1) + (startLine.number / state.doc.lines);\n line = Math.round(state.doc.lines * pc);\n }\n else if (ln && sign) {\n line = line * (sign == \"-\" ? -1 : 1) + startLine.number;\n }\n let docLine = state.doc.line(Math.max(1, Math.min(state.doc.lines, line)));\n let selection = EditorSelection.cursor(docLine.from + Math.max(0, Math.min(col, docLine.length)));\n view.dispatch({\n effects: [close, EditorView.scrollIntoView(selection.from, { y: 'center' })],\n selection,\n });\n });\n return true;\n};\n\nconst defaultHighlightOptions = {\n highlightWordAroundCursor: false,\n minSelectionLength: 1,\n maxMatches: 100,\n wholeWords: false\n};\nconst highlightConfig = /*@__PURE__*/Facet.define({\n combine(options) {\n return combineConfig(options, defaultHighlightOptions, {\n highlightWordAroundCursor: (a, b) => a || b,\n minSelectionLength: Math.min,\n maxMatches: Math.min\n });\n }\n});\n/**\nThis extension highlights text that matches the selection. It uses\nthe `\"cm-selectionMatch\"` class for the highlighting. When\n`highlightWordAroundCursor` is enabled, the word at the cursor\nitself will be highlighted with `\"cm-selectionMatch-main\"`.\n*/\nfunction highlightSelectionMatches(options) {\n let ext = [defaultTheme, matchHighlighter];\n if (options)\n ext.push(highlightConfig.of(options));\n return ext;\n}\nconst matchDeco = /*@__PURE__*/Decoration.mark({ class: \"cm-selectionMatch\" });\nconst mainMatchDeco = /*@__PURE__*/Decoration.mark({ class: \"cm-selectionMatch cm-selectionMatch-main\" });\n// Whether the characters directly outside the given positions are non-word characters\nfunction insideWordBoundaries(check, state, from, to) {\n return (from == 0 || check(state.sliceDoc(from - 1, from)) != CharCategory.Word) &&\n (to == state.doc.length || check(state.sliceDoc(to, to + 1)) != CharCategory.Word);\n}\n// Whether the characters directly at the given positions are word characters\nfunction insideWord(check, state, from, to) {\n return check(state.sliceDoc(from, from + 1)) == CharCategory.Word\n && check(state.sliceDoc(to - 1, to)) == CharCategory.Word;\n}\nconst matchHighlighter = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.decorations = this.getDeco(view);\n }\n update(update) {\n if (update.selectionSet || update.docChanged || update.viewportChanged)\n this.decorations = this.getDeco(update.view);\n }\n getDeco(view) {\n let conf = view.state.facet(highlightConfig);\n let { state } = view, sel = state.selection;\n if (sel.ranges.length > 1)\n return Decoration.none;\n let range = sel.main, query, check = null;\n if (range.empty) {\n if (!conf.highlightWordAroundCursor)\n return Decoration.none;\n let word = state.wordAt(range.head);\n if (!word)\n return Decoration.none;\n check = state.charCategorizer(range.head);\n query = state.sliceDoc(word.from, word.to);\n }\n else {\n let len = range.to - range.from;\n if (len < conf.minSelectionLength || len > 200)\n return Decoration.none;\n if (conf.wholeWords) {\n query = state.sliceDoc(range.from, range.to); // TODO: allow and include leading/trailing space?\n check = state.charCategorizer(range.head);\n if (!(insideWordBoundaries(check, state, range.from, range.to) &&\n insideWord(check, state, range.from, range.to)))\n return Decoration.none;\n }\n else {\n query = state.sliceDoc(range.from, range.to);\n if (!query)\n return Decoration.none;\n }\n }\n let deco = [];\n for (let part of view.visibleRanges) {\n let cursor = new SearchCursor(state.doc, query, part.from, part.to);\n while (!cursor.next().done) {\n let { from, to } = cursor.value;\n if (!check || insideWordBoundaries(check, state, from, to)) {\n if (range.empty && from <= range.from && to >= range.to)\n deco.push(mainMatchDeco.range(from, to));\n else if (from >= range.to || to <= range.from)\n deco.push(matchDeco.range(from, to));\n if (deco.length > conf.maxMatches)\n return Decoration.none;\n }\n }\n }\n return Decoration.set(deco);\n }\n}, {\n decorations: v => v.decorations\n});\nconst defaultTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-selectionMatch\": { backgroundColor: \"#99ff7780\" },\n \".cm-searchMatch .cm-selectionMatch\": { backgroundColor: \"transparent\" }\n});\n// Select the words around the cursors.\nconst selectWord = ({ state, dispatch }) => {\n let { selection } = state;\n let newSel = EditorSelection.create(selection.ranges.map(range => state.wordAt(range.head) || EditorSelection.cursor(range.head)), selection.mainIndex);\n if (newSel.eq(selection))\n return false;\n dispatch(state.update({ selection: newSel }));\n return true;\n};\n// Find next occurrence of query relative to last cursor. Wrap around\n// the document if there are no more matches.\nfunction findNextOccurrence(state, query) {\n let { main, ranges } = state.selection;\n let word = state.wordAt(main.head), fullWord = word && word.from == main.from && word.to == main.to;\n for (let cycled = false, cursor = new SearchCursor(state.doc, query, ranges[ranges.length - 1].to);;) {\n cursor.next();\n if (cursor.done) {\n if (cycled)\n return null;\n cursor = new SearchCursor(state.doc, query, 0, Math.max(0, ranges[ranges.length - 1].from - 1));\n cycled = true;\n }\n else {\n if (cycled && ranges.some(r => r.from == cursor.value.from))\n continue;\n if (fullWord) {\n let word = state.wordAt(cursor.value.from);\n if (!word || word.from != cursor.value.from || word.to != cursor.value.to)\n continue;\n }\n return cursor.value;\n }\n }\n}\n/**\nSelect next occurrence of the current selection. Expand selection\nto the surrounding word when the selection is empty.\n*/\nconst selectNextOccurrence = ({ state, dispatch }) => {\n let { ranges } = state.selection;\n if (ranges.some(sel => sel.from === sel.to))\n return selectWord({ state, dispatch });\n let searchedText = state.sliceDoc(ranges[0].from, ranges[0].to);\n if (state.selection.ranges.some(r => state.sliceDoc(r.from, r.to) != searchedText))\n return false;\n let range = findNextOccurrence(state, searchedText);\n if (!range)\n return false;\n dispatch(state.update({\n selection: state.selection.addRange(EditorSelection.range(range.from, range.to), false),\n effects: EditorView.scrollIntoView(range.to)\n }));\n return true;\n};\n\nconst searchConfigFacet = /*@__PURE__*/Facet.define({\n combine(configs) {\n return combineConfig(configs, {\n top: false,\n caseSensitive: false,\n literal: false,\n regexp: false,\n wholeWord: false,\n createPanel: view => new SearchPanel(view),\n scrollToMatch: range => EditorView.scrollIntoView(range)\n });\n }\n});\n/**\nAdd search state to the editor configuration, and optionally\nconfigure the search extension.\n([`openSearchPanel`](https://codemirror.net/6/docs/ref/#search.openSearchPanel) will automatically\nenable this if it isn't already on).\n*/\nfunction search(config) {\n return config ? [searchConfigFacet.of(config), searchExtensions] : searchExtensions;\n}\n/**\nA search query. Part of the editor's search state.\n*/\nclass SearchQuery {\n /**\n Create a query object.\n */\n constructor(config) {\n this.search = config.search;\n this.caseSensitive = !!config.caseSensitive;\n this.literal = !!config.literal;\n this.regexp = !!config.regexp;\n this.replace = config.replace || \"\";\n this.valid = !!this.search && (!this.regexp || validRegExp(this.search));\n this.unquoted = this.unquote(this.search);\n this.wholeWord = !!config.wholeWord;\n this.test = config.test;\n }\n /**\n @internal\n */\n unquote(text) {\n return this.literal ? text :\n text.replace(/\\\\([nrt\\\\])/g, (_, ch) => ch == \"n\" ? \"\\n\" : ch == \"r\" ? \"\\r\" : ch == \"t\" ? \"\\t\" : \"\\\\\");\n }\n /**\n Compare this query to another query.\n */\n eq(other) {\n return this.search == other.search && this.replace == other.replace &&\n this.caseSensitive == other.caseSensitive && this.regexp == other.regexp &&\n this.wholeWord == other.wholeWord && this.test == other.test;\n }\n /**\n @internal\n */\n create() {\n return this.regexp ? new RegExpQuery(this) : new StringQuery(this);\n }\n /**\n Get a search cursor for this query, searching through the given\n range in the given state.\n */\n getCursor(state, from = 0, to) {\n let st = state.doc ? state : EditorState.create({ doc: state });\n if (to == null)\n to = st.doc.length;\n return this.regexp ? regexpCursor(this, st, from, to) : stringCursor(this, st, from, to);\n }\n}\nclass QueryType {\n constructor(spec) {\n this.spec = spec;\n }\n}\nfunction wrapStringTest(test, state, inner) {\n return (from, to, buffer, bufferPos) => {\n if (inner && !inner(from, to, buffer, bufferPos))\n return false;\n let match = from >= bufferPos && to <= bufferPos + buffer.length\n ? buffer.slice(from - bufferPos, to - bufferPos)\n : state.doc.sliceString(from, to);\n return test(match, state, from, to);\n };\n}\nfunction stringCursor(spec, state, from, to) {\n let test;\n if (spec.wholeWord)\n test = stringWordTest(state.doc, state.charCategorizer(state.selection.main.head));\n if (spec.test)\n test = wrapStringTest(spec.test, state, test);\n return new SearchCursor(state.doc, spec.unquoted, from, to, spec.caseSensitive ? undefined : x => x.toLowerCase(), test);\n}\nfunction stringWordTest(doc, categorizer) {\n return (from, to, buf, bufPos) => {\n if (bufPos > from || bufPos + buf.length < to) {\n bufPos = Math.max(0, from - 2);\n buf = doc.sliceString(bufPos, Math.min(doc.length, to + 2));\n }\n return (categorizer(charBefore(buf, from - bufPos)) != CharCategory.Word ||\n categorizer(charAfter(buf, from - bufPos)) != CharCategory.Word) &&\n (categorizer(charAfter(buf, to - bufPos)) != CharCategory.Word ||\n categorizer(charBefore(buf, to - bufPos)) != CharCategory.Word);\n };\n}\nclass StringQuery extends QueryType {\n constructor(spec) {\n super(spec);\n }\n nextMatch(state, curFrom, curTo) {\n let cursor = stringCursor(this.spec, state, curTo, state.doc.length).nextOverlapping();\n if (cursor.done) {\n let end = Math.min(state.doc.length, curFrom + this.spec.unquoted.length);\n cursor = stringCursor(this.spec, state, 0, end).nextOverlapping();\n }\n return cursor.done || cursor.value.from == curFrom && cursor.value.to == curTo ? null : cursor.value;\n }\n // Searching in reverse is, rather than implementing an inverted search\n // cursor, done by scanning chunk after chunk forward.\n prevMatchInRange(state, from, to) {\n for (let pos = to;;) {\n let start = Math.max(from, pos - 10000 /* FindPrev.ChunkSize */ - this.spec.unquoted.length);\n let cursor = stringCursor(this.spec, state, start, pos), range = null;\n while (!cursor.nextOverlapping().done)\n range = cursor.value;\n if (range)\n return range;\n if (start == from)\n return null;\n pos -= 10000 /* FindPrev.ChunkSize */;\n }\n }\n prevMatch(state, curFrom, curTo) {\n let found = this.prevMatchInRange(state, 0, curFrom);\n if (!found)\n found = this.prevMatchInRange(state, Math.max(0, curTo - this.spec.unquoted.length), state.doc.length);\n return found && (found.from != curFrom || found.to != curTo) ? found : null;\n }\n getReplacement(_result) { return this.spec.unquote(this.spec.replace); }\n matchAll(state, limit) {\n let cursor = stringCursor(this.spec, state, 0, state.doc.length), ranges = [];\n while (!cursor.next().done) {\n if (ranges.length >= limit)\n return null;\n ranges.push(cursor.value);\n }\n return ranges;\n }\n highlight(state, from, to, add) {\n let cursor = stringCursor(this.spec, state, Math.max(0, from - this.spec.unquoted.length), Math.min(to + this.spec.unquoted.length, state.doc.length));\n while (!cursor.next().done)\n add(cursor.value.from, cursor.value.to);\n }\n}\nfunction wrapRegexpTest(test, state, inner) {\n return (from, to, match) => {\n return (!inner || inner(from, to, match)) && test(match[0], state, from, to);\n };\n}\nfunction regexpCursor(spec, state, from, to) {\n let test;\n if (spec.wholeWord)\n test = regexpWordTest(state.charCategorizer(state.selection.main.head));\n if (spec.test)\n test = wrapRegexpTest(spec.test, state, test);\n return new RegExpCursor(state.doc, spec.search, { ignoreCase: !spec.caseSensitive, test }, from, to);\n}\nfunction charBefore(str, index) {\n return str.slice(findClusterBreak(str, index, false), index);\n}\nfunction charAfter(str, index) {\n return str.slice(index, findClusterBreak(str, index));\n}\nfunction regexpWordTest(categorizer) {\n return (_from, _to, match) => !match[0].length ||\n (categorizer(charBefore(match.input, match.index)) != CharCategory.Word ||\n categorizer(charAfter(match.input, match.index)) != CharCategory.Word) &&\n (categorizer(charAfter(match.input, match.index + match[0].length)) != CharCategory.Word ||\n categorizer(charBefore(match.input, match.index + match[0].length)) != CharCategory.Word);\n}\nclass RegExpQuery extends QueryType {\n nextMatch(state, curFrom, curTo) {\n let cursor = regexpCursor(this.spec, state, curTo, state.doc.length).next();\n if (cursor.done)\n cursor = regexpCursor(this.spec, state, 0, curFrom).next();\n return cursor.done ? null : cursor.value;\n }\n prevMatchInRange(state, from, to) {\n for (let size = 1;; size++) {\n let start = Math.max(from, to - size * 10000 /* FindPrev.ChunkSize */);\n let cursor = regexpCursor(this.spec, state, start, to), range = null;\n while (!cursor.next().done)\n range = cursor.value;\n if (range && (start == from || range.from > start + 10))\n return range;\n if (start == from)\n return null;\n }\n }\n prevMatch(state, curFrom, curTo) {\n return this.prevMatchInRange(state, 0, curFrom) ||\n this.prevMatchInRange(state, curTo, state.doc.length);\n }\n getReplacement(result) {\n return this.spec.unquote(this.spec.replace).replace(/\\$([$&]|\\d+)/g, (m, i) => {\n if (i == \"&\")\n return result.match[0];\n if (i == \"$\")\n return \"$\";\n for (let l = i.length; l > 0; l--) {\n let n = +i.slice(0, l);\n if (n > 0 && n < result.match.length)\n return result.match[n] + i.slice(l);\n }\n return m;\n });\n }\n matchAll(state, limit) {\n let cursor = regexpCursor(this.spec, state, 0, state.doc.length), ranges = [];\n while (!cursor.next().done) {\n if (ranges.length >= limit)\n return null;\n ranges.push(cursor.value);\n }\n return ranges;\n }\n highlight(state, from, to, add) {\n let cursor = regexpCursor(this.spec, state, Math.max(0, from - 250 /* RegExp.HighlightMargin */), Math.min(to + 250 /* RegExp.HighlightMargin */, state.doc.length));\n while (!cursor.next().done)\n add(cursor.value.from, cursor.value.to);\n }\n}\n/**\nA state effect that updates the current search query. Note that\nthis only has an effect if the search state has been initialized\n(by including [`search`](https://codemirror.net/6/docs/ref/#search.search) in your configuration or\nby running [`openSearchPanel`](https://codemirror.net/6/docs/ref/#search.openSearchPanel) at least\nonce).\n*/\nconst setSearchQuery = /*@__PURE__*/StateEffect.define();\nconst togglePanel = /*@__PURE__*/StateEffect.define();\nconst searchState = /*@__PURE__*/StateField.define({\n create(state) {\n return new SearchState(defaultQuery(state).create(), null);\n },\n update(value, tr) {\n for (let effect of tr.effects) {\n if (effect.is(setSearchQuery))\n value = new SearchState(effect.value.create(), value.panel);\n else if (effect.is(togglePanel))\n value = new SearchState(value.query, effect.value ? createSearchPanel : null);\n }\n return value;\n },\n provide: f => showPanel.from(f, val => val.panel)\n});\n/**\nGet the current search query from an editor state.\n*/\nfunction getSearchQuery(state) {\n let curState = state.field(searchState, false);\n return curState ? curState.query.spec : defaultQuery(state);\n}\n/**\nQuery whether the search panel is open in the given editor state.\n*/\nfunction searchPanelOpen(state) {\n var _a;\n return ((_a = state.field(searchState, false)) === null || _a === void 0 ? void 0 : _a.panel) != null;\n}\nclass SearchState {\n constructor(query, panel) {\n this.query = query;\n this.panel = panel;\n }\n}\nconst matchMark = /*@__PURE__*/Decoration.mark({ class: \"cm-searchMatch\" }), selectedMatchMark = /*@__PURE__*/Decoration.mark({ class: \"cm-searchMatch cm-searchMatch-selected\" });\nconst searchHighlighter = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.view = view;\n this.decorations = this.highlight(view.state.field(searchState));\n }\n update(update) {\n let state = update.state.field(searchState);\n if (state != update.startState.field(searchState) || update.docChanged || update.selectionSet || update.viewportChanged)\n this.decorations = this.highlight(state);\n }\n highlight({ query, panel }) {\n if (!panel || !query.spec.valid)\n return Decoration.none;\n let { view } = this;\n let builder = new RangeSetBuilder();\n for (let i = 0, ranges = view.visibleRanges, l = ranges.length; i < l; i++) {\n let { from, to } = ranges[i];\n while (i < l - 1 && to > ranges[i + 1].from - 2 * 250 /* RegExp.HighlightMargin */)\n to = ranges[++i].to;\n query.highlight(view.state, from, to, (from, to) => {\n let selected = view.state.selection.ranges.some(r => r.from == from && r.to == to);\n builder.add(from, to, selected ? selectedMatchMark : matchMark);\n });\n }\n return builder.finish();\n }\n}, {\n decorations: v => v.decorations\n});\nfunction searchCommand(f) {\n return view => {\n let state = view.state.field(searchState, false);\n return state && state.query.spec.valid ? f(view, state) : openSearchPanel(view);\n };\n}\n/**\nOpen the search panel if it isn't already open, and move the\nselection to the first match after the current main selection.\nWill wrap around to the start of the document when it reaches the\nend.\n*/\nconst findNext = /*@__PURE__*/searchCommand((view, { query }) => {\n let { to } = view.state.selection.main;\n let next = query.nextMatch(view.state, to, to);\n if (!next)\n return false;\n let selection = EditorSelection.single(next.from, next.to);\n let config = view.state.facet(searchConfigFacet);\n view.dispatch({\n selection,\n effects: [announceMatch(view, next), config.scrollToMatch(selection.main, view)],\n userEvent: \"select.search\"\n });\n selectSearchInput(view);\n return true;\n});\n/**\nMove the selection to the previous instance of the search query,\nbefore the current main selection. Will wrap past the start\nof the document to start searching at the end again.\n*/\nconst findPrevious = /*@__PURE__*/searchCommand((view, { query }) => {\n let { state } = view, { from } = state.selection.main;\n let prev = query.prevMatch(state, from, from);\n if (!prev)\n return false;\n let selection = EditorSelection.single(prev.from, prev.to);\n let config = view.state.facet(searchConfigFacet);\n view.dispatch({\n selection,\n effects: [announceMatch(view, prev), config.scrollToMatch(selection.main, view)],\n userEvent: \"select.search\"\n });\n selectSearchInput(view);\n return true;\n});\n/**\nSelect all instances of the search query.\n*/\nconst selectMatches = /*@__PURE__*/searchCommand((view, { query }) => {\n let ranges = query.matchAll(view.state, 1000);\n if (!ranges || !ranges.length)\n return false;\n view.dispatch({\n selection: EditorSelection.create(ranges.map(r => EditorSelection.range(r.from, r.to))),\n userEvent: \"select.search.matches\"\n });\n return true;\n});\n/**\nSelect all instances of the currently selected text.\n*/\nconst selectSelectionMatches = ({ state, dispatch }) => {\n let sel = state.selection;\n if (sel.ranges.length > 1 || sel.main.empty)\n return false;\n let { from, to } = sel.main;\n let ranges = [], main = 0;\n for (let cur = new SearchCursor(state.doc, state.sliceDoc(from, to)); !cur.next().done;) {\n if (ranges.length > 1000)\n return false;\n if (cur.value.from == from)\n main = ranges.length;\n ranges.push(EditorSelection.range(cur.value.from, cur.value.to));\n }\n dispatch(state.update({\n selection: EditorSelection.create(ranges, main),\n userEvent: \"select.search.matches\"\n }));\n return true;\n};\n/**\nReplace the current match of the search query.\n*/\nconst replaceNext = /*@__PURE__*/searchCommand((view, { query }) => {\n let { state } = view, { from, to } = state.selection.main;\n if (state.readOnly)\n return false;\n let match = query.nextMatch(state, from, from);\n if (!match)\n return false;\n let next = match;\n let changes = [], selection, replacement;\n let effects = [];\n if (next.from == from && next.to == to) {\n replacement = state.toText(query.getReplacement(next));\n changes.push({ from: next.from, to: next.to, insert: replacement });\n next = query.nextMatch(state, next.from, next.to);\n effects.push(EditorView.announce.of(state.phrase(\"replaced match on line $\", state.doc.lineAt(from).number) + \".\"));\n }\n let changeSet = view.state.changes(changes);\n if (next) {\n selection = EditorSelection.single(next.from, next.to).map(changeSet);\n effects.push(announceMatch(view, next));\n effects.push(state.facet(searchConfigFacet).scrollToMatch(selection.main, view));\n }\n view.dispatch({\n changes: changeSet,\n selection,\n effects,\n userEvent: \"input.replace\"\n });\n return true;\n});\n/**\nReplace all instances of the search query with the given\nreplacement.\n*/\nconst replaceAll = /*@__PURE__*/searchCommand((view, { query }) => {\n if (view.state.readOnly)\n return false;\n let changes = query.matchAll(view.state, 1e9).map(match => {\n let { from, to } = match;\n return { from, to, insert: query.getReplacement(match) };\n });\n if (!changes.length)\n return false;\n let announceText = view.state.phrase(\"replaced $ matches\", changes.length) + \".\";\n view.dispatch({\n changes,\n effects: EditorView.announce.of(announceText),\n userEvent: \"input.replace.all\"\n });\n return true;\n});\nfunction createSearchPanel(view) {\n return view.state.facet(searchConfigFacet).createPanel(view);\n}\nfunction defaultQuery(state, fallback) {\n var _a, _b, _c, _d, _e;\n let sel = state.selection.main;\n let selText = sel.empty || sel.to > sel.from + 100 ? \"\" : state.sliceDoc(sel.from, sel.to);\n if (fallback && !selText)\n return fallback;\n let config = state.facet(searchConfigFacet);\n return new SearchQuery({\n search: ((_a = fallback === null || fallback === void 0 ? void 0 : fallback.literal) !== null && _a !== void 0 ? _a : config.literal) ? selText : selText.replace(/\\n/g, \"\\\\n\"),\n caseSensitive: (_b = fallback === null || fallback === void 0 ? void 0 : fallback.caseSensitive) !== null && _b !== void 0 ? _b : config.caseSensitive,\n literal: (_c = fallback === null || fallback === void 0 ? void 0 : fallback.literal) !== null && _c !== void 0 ? _c : config.literal,\n regexp: (_d = fallback === null || fallback === void 0 ? void 0 : fallback.regexp) !== null && _d !== void 0 ? _d : config.regexp,\n wholeWord: (_e = fallback === null || fallback === void 0 ? void 0 : fallback.wholeWord) !== null && _e !== void 0 ? _e : config.wholeWord\n });\n}\nfunction getSearchInput(view) {\n let panel = getPanel(view, createSearchPanel);\n return panel && panel.dom.querySelector(\"[main-field]\");\n}\nfunction selectSearchInput(view) {\n let input = getSearchInput(view);\n if (input && input == view.root.activeElement)\n input.select();\n}\n/**\nMake sure the search panel is open and focused.\n*/\nconst openSearchPanel = view => {\n let state = view.state.field(searchState, false);\n if (state && state.panel) {\n let searchInput = getSearchInput(view);\n if (searchInput && searchInput != view.root.activeElement) {\n let query = defaultQuery(view.state, state.query.spec);\n if (query.valid)\n view.dispatch({ effects: setSearchQuery.of(query) });\n searchInput.focus();\n searchInput.select();\n }\n }\n else {\n view.dispatch({ effects: [\n togglePanel.of(true),\n state ? setSearchQuery.of(defaultQuery(view.state, state.query.spec)) : StateEffect.appendConfig.of(searchExtensions)\n ] });\n }\n return true;\n};\n/**\nClose the search panel.\n*/\nconst closeSearchPanel = view => {\n let state = view.state.field(searchState, false);\n if (!state || !state.panel)\n return false;\n let panel = getPanel(view, createSearchPanel);\n if (panel && panel.dom.contains(view.root.activeElement))\n view.focus();\n view.dispatch({ effects: togglePanel.of(false) });\n return true;\n};\n/**\nDefault search-related key bindings.\n\n - Mod-f: [`openSearchPanel`](https://codemirror.net/6/docs/ref/#search.openSearchPanel)\n - F3, Mod-g: [`findNext`](https://codemirror.net/6/docs/ref/#search.findNext)\n - Shift-F3, Shift-Mod-g: [`findPrevious`](https://codemirror.net/6/docs/ref/#search.findPrevious)\n - Mod-Alt-g: [`gotoLine`](https://codemirror.net/6/docs/ref/#search.gotoLine)\n - Mod-d: [`selectNextOccurrence`](https://codemirror.net/6/docs/ref/#search.selectNextOccurrence)\n*/\nconst searchKeymap = [\n { key: \"Mod-f\", run: openSearchPanel, scope: \"editor search-panel\" },\n { key: \"F3\", run: findNext, shift: findPrevious, scope: \"editor search-panel\", preventDefault: true },\n { key: \"Mod-g\", run: findNext, shift: findPrevious, scope: \"editor search-panel\", preventDefault: true },\n { key: \"Escape\", run: closeSearchPanel, scope: \"editor search-panel\" },\n { key: \"Mod-Shift-l\", run: selectSelectionMatches },\n { key: \"Mod-Alt-g\", run: gotoLine },\n { key: \"Mod-d\", run: selectNextOccurrence, preventDefault: true },\n];\nclass SearchPanel {\n constructor(view) {\n this.view = view;\n let query = this.query = view.state.field(searchState).query.spec;\n this.commit = this.commit.bind(this);\n this.searchField = elt(\"input\", {\n value: query.search,\n placeholder: phrase(view, \"Find\"),\n \"aria-label\": phrase(view, \"Find\"),\n class: \"cm-textfield\",\n name: \"search\",\n form: \"\",\n \"main-field\": \"true\",\n onchange: this.commit,\n onkeyup: this.commit\n });\n this.replaceField = elt(\"input\", {\n value: query.replace,\n placeholder: phrase(view, \"Replace\"),\n \"aria-label\": phrase(view, \"Replace\"),\n class: \"cm-textfield\",\n name: \"replace\",\n form: \"\",\n onchange: this.commit,\n onkeyup: this.commit\n });\n this.caseField = elt(\"input\", {\n type: \"checkbox\",\n name: \"case\",\n form: \"\",\n checked: query.caseSensitive,\n onchange: this.commit\n });\n this.reField = elt(\"input\", {\n type: \"checkbox\",\n name: \"re\",\n form: \"\",\n checked: query.regexp,\n onchange: this.commit\n });\n this.wordField = elt(\"input\", {\n type: \"checkbox\",\n name: \"word\",\n form: \"\",\n checked: query.wholeWord,\n onchange: this.commit\n });\n function button(name, onclick, content) {\n return elt(\"button\", { class: \"cm-button\", name, onclick, type: \"button\" }, content);\n }\n this.dom = elt(\"div\", { onkeydown: (e) => this.keydown(e), class: \"cm-search\" }, [\n this.searchField,\n button(\"next\", () => findNext(view), [phrase(view, \"next\")]),\n button(\"prev\", () => findPrevious(view), [phrase(view, \"previous\")]),\n button(\"select\", () => selectMatches(view), [phrase(view, \"all\")]),\n elt(\"label\", null, [this.caseField, phrase(view, \"match case\")]),\n elt(\"label\", null, [this.reField, phrase(view, \"regexp\")]),\n elt(\"label\", null, [this.wordField, phrase(view, \"by word\")]),\n ...view.state.readOnly ? [] : [\n elt(\"br\"),\n this.replaceField,\n button(\"replace\", () => replaceNext(view), [phrase(view, \"replace\")]),\n button(\"replaceAll\", () => replaceAll(view), [phrase(view, \"replace all\")])\n ],\n elt(\"button\", {\n name: \"close\",\n onclick: () => closeSearchPanel(view),\n \"aria-label\": phrase(view, \"close\"),\n type: \"button\"\n }, [\"×\"])\n ]);\n }\n commit() {\n let query = new SearchQuery({\n search: this.searchField.value,\n caseSensitive: this.caseField.checked,\n regexp: this.reField.checked,\n wholeWord: this.wordField.checked,\n replace: this.replaceField.value,\n });\n if (!query.eq(this.query)) {\n this.query = query;\n this.view.dispatch({ effects: setSearchQuery.of(query) });\n }\n }\n keydown(e) {\n if (runScopeHandlers(this.view, e, \"search-panel\")) {\n e.preventDefault();\n }\n else if (e.keyCode == 13 && e.target == this.searchField) {\n e.preventDefault();\n (e.shiftKey ? findPrevious : findNext)(this.view);\n }\n else if (e.keyCode == 13 && e.target == this.replaceField) {\n e.preventDefault();\n replaceNext(this.view);\n }\n }\n update(update) {\n for (let tr of update.transactions)\n for (let effect of tr.effects) {\n if (effect.is(setSearchQuery) && !effect.value.eq(this.query))\n this.setQuery(effect.value);\n }\n }\n setQuery(query) {\n this.query = query;\n this.searchField.value = query.search;\n this.replaceField.value = query.replace;\n this.caseField.checked = query.caseSensitive;\n this.reField.checked = query.regexp;\n this.wordField.checked = query.wholeWord;\n }\n mount() {\n this.searchField.select();\n }\n get pos() { return 80; }\n get top() { return this.view.state.facet(searchConfigFacet).top; }\n}\nfunction phrase(view, phrase) { return view.state.phrase(phrase); }\nconst AnnounceMargin = 30;\nconst Break = /[\\s\\.,:;?!]/;\nfunction announceMatch(view, { from, to }) {\n let line = view.state.doc.lineAt(from), lineEnd = view.state.doc.lineAt(to).to;\n let start = Math.max(line.from, from - AnnounceMargin), end = Math.min(lineEnd, to + AnnounceMargin);\n let text = view.state.sliceDoc(start, end);\n if (start != line.from) {\n for (let i = 0; i < AnnounceMargin; i++)\n if (!Break.test(text[i + 1]) && Break.test(text[i])) {\n text = text.slice(i);\n break;\n }\n }\n if (end != lineEnd) {\n for (let i = text.length - 1; i > text.length - AnnounceMargin; i--)\n if (!Break.test(text[i - 1]) && Break.test(text[i])) {\n text = text.slice(0, i);\n break;\n }\n }\n return EditorView.announce.of(`${view.state.phrase(\"current match\")}. ${text} ${view.state.phrase(\"on line\")} ${line.number}.`);\n}\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-panel.cm-search\": {\n padding: \"2px 6px 4px\",\n position: \"relative\",\n \"& [name=close]\": {\n position: \"absolute\",\n top: \"0\",\n right: \"4px\",\n backgroundColor: \"inherit\",\n border: \"none\",\n font: \"inherit\",\n padding: 0,\n margin: 0\n },\n \"& input, & button, & label\": {\n margin: \".2em .6em .2em 0\"\n },\n \"& input[type=checkbox]\": {\n marginRight: \".2em\"\n },\n \"& label\": {\n fontSize: \"80%\",\n whiteSpace: \"pre\"\n }\n },\n \"&light .cm-searchMatch\": { backgroundColor: \"#ffff0054\" },\n \"&dark .cm-searchMatch\": { backgroundColor: \"#00ffff8a\" },\n \"&light .cm-searchMatch-selected\": { backgroundColor: \"#ff6a0054\" },\n \"&dark .cm-searchMatch-selected\": { backgroundColor: \"#ff00ff8a\" }\n});\nconst searchExtensions = [\n searchState,\n /*@__PURE__*/Prec.low(searchHighlighter),\n baseTheme\n];\n\nexport { RegExpCursor, SearchCursor, SearchQuery, closeSearchPanel, findNext, findPrevious, getSearchQuery, gotoLine, highlightSelectionMatches, openSearchPanel, replaceAll, replaceNext, search, searchKeymap, searchPanelOpen, selectMatches, selectNextOccurrence, selectSelectionMatches, setSearchQuery };\n","import { Annotation, StateEffect, EditorSelection, codePointAt, codePointSize, fromCodePoint, Facet, combineConfig, StateField, Prec, Text, Transaction, MapMode, RangeValue, RangeSet, CharCategory } from '@codemirror/state';\nimport { Direction, logException, showTooltip, EditorView, ViewPlugin, getTooltip, Decoration, WidgetType, keymap } from '@codemirror/view';\nimport { syntaxTree, indentUnit } from '@codemirror/language';\n\n/**\nAn instance of this is passed to completion source functions.\n*/\nclass CompletionContext {\n /**\n Create a new completion context. (Mostly useful for testing\n completion sources—in the editor, the extension will create\n these for you.)\n */\n constructor(\n /**\n The editor state that the completion happens in.\n */\n state, \n /**\n The position at which the completion is happening.\n */\n pos, \n /**\n Indicates whether completion was activated explicitly, or\n implicitly by typing. The usual way to respond to this is to\n only return completions when either there is part of a\n completable entity before the cursor, or `explicit` is true.\n */\n explicit, \n /**\n The editor view. May be undefined if the context was created\n in a situation where there is no such view available, such as\n in synchronous updates via\n [`CompletionResult.update`](https://codemirror.net/6/docs/ref/#autocomplete.CompletionResult.update)\n or when called by test code.\n */\n view) {\n this.state = state;\n this.pos = pos;\n this.explicit = explicit;\n this.view = view;\n /**\n @internal\n */\n this.abortListeners = [];\n /**\n @internal\n */\n this.abortOnDocChange = false;\n }\n /**\n Get the extent, content, and (if there is a token) type of the\n token before `this.pos`.\n */\n tokenBefore(types) {\n let token = syntaxTree(this.state).resolveInner(this.pos, -1);\n while (token && types.indexOf(token.name) < 0)\n token = token.parent;\n return token ? { from: token.from, to: this.pos,\n text: this.state.sliceDoc(token.from, this.pos),\n type: token.type } : null;\n }\n /**\n Get the match of the given expression directly before the\n cursor.\n */\n matchBefore(expr) {\n let line = this.state.doc.lineAt(this.pos);\n let start = Math.max(line.from, this.pos - 250);\n let str = line.text.slice(start - line.from, this.pos - line.from);\n let found = str.search(ensureAnchor(expr, false));\n return found < 0 ? null : { from: start + found, to: this.pos, text: str.slice(found) };\n }\n /**\n Yields true when the query has been aborted. Can be useful in\n asynchronous queries to avoid doing work that will be ignored.\n */\n get aborted() { return this.abortListeners == null; }\n /**\n Allows you to register abort handlers, which will be called when\n the query is\n [aborted](https://codemirror.net/6/docs/ref/#autocomplete.CompletionContext.aborted).\n \n By default, running queries will not be aborted for regular\n typing or backspacing, on the assumption that they are likely to\n return a result with a\n [`validFor`](https://codemirror.net/6/docs/ref/#autocomplete.CompletionResult.validFor) field that\n allows the result to be used after all. Passing `onDocChange:\n true` will cause this query to be aborted for any document\n change.\n */\n addEventListener(type, listener, options) {\n if (type == \"abort\" && this.abortListeners) {\n this.abortListeners.push(listener);\n if (options && options.onDocChange)\n this.abortOnDocChange = true;\n }\n }\n}\nfunction toSet(chars) {\n let flat = Object.keys(chars).join(\"\");\n let words = /\\w/.test(flat);\n if (words)\n flat = flat.replace(/\\w/g, \"\");\n return `[${words ? \"\\\\w\" : \"\"}${flat.replace(/[^\\w\\s]/g, \"\\\\$&\")}]`;\n}\nfunction prefixMatch(options) {\n let first = Object.create(null), rest = Object.create(null);\n for (let { label } of options) {\n first[label[0]] = true;\n for (let i = 1; i < label.length; i++)\n rest[label[i]] = true;\n }\n let source = toSet(first) + toSet(rest) + \"*$\";\n return [new RegExp(\"^\" + source), new RegExp(source)];\n}\n/**\nGiven a a fixed array of options, return an autocompleter that\ncompletes them.\n*/\nfunction completeFromList(list) {\n let options = list.map(o => typeof o == \"string\" ? { label: o } : o);\n let [validFor, match] = options.every(o => /^\\w+$/.test(o.label)) ? [/\\w*$/, /\\w+$/] : prefixMatch(options);\n return (context) => {\n let token = context.matchBefore(match);\n return token || context.explicit ? { from: token ? token.from : context.pos, options, validFor } : null;\n };\n}\n/**\nWrap the given completion source so that it will only fire when the\ncursor is in a syntax node with one of the given names.\n*/\nfunction ifIn(nodes, source) {\n return (context) => {\n for (let pos = syntaxTree(context.state).resolveInner(context.pos, -1); pos; pos = pos.parent) {\n if (nodes.indexOf(pos.name) > -1)\n return source(context);\n if (pos.type.isTop)\n break;\n }\n return null;\n };\n}\n/**\nWrap the given completion source so that it will not fire when the\ncursor is in a syntax node with one of the given names.\n*/\nfunction ifNotIn(nodes, source) {\n return (context) => {\n for (let pos = syntaxTree(context.state).resolveInner(context.pos, -1); pos; pos = pos.parent) {\n if (nodes.indexOf(pos.name) > -1)\n return null;\n if (pos.type.isTop)\n break;\n }\n return source(context);\n };\n}\nclass Option {\n constructor(completion, source, match, score) {\n this.completion = completion;\n this.source = source;\n this.match = match;\n this.score = score;\n }\n}\nfunction cur(state) { return state.selection.main.from; }\n// Make sure the given regexp has a $ at its end and, if `start` is\n// true, a ^ at its start.\nfunction ensureAnchor(expr, start) {\n var _a;\n let { source } = expr;\n let addStart = start && source[0] != \"^\", addEnd = source[source.length - 1] != \"$\";\n if (!addStart && !addEnd)\n return expr;\n return new RegExp(`${addStart ? \"^\" : \"\"}(?:${source})${addEnd ? \"$\" : \"\"}`, (_a = expr.flags) !== null && _a !== void 0 ? _a : (expr.ignoreCase ? \"i\" : \"\"));\n}\n/**\nThis annotation is added to transactions that are produced by\npicking a completion.\n*/\nconst pickedCompletion = /*@__PURE__*/Annotation.define();\n/**\nHelper function that returns a transaction spec which inserts a\ncompletion's text in the main selection range, and any other\nselection range that has the same text in front of it.\n*/\nfunction insertCompletionText(state, text, from, to) {\n let { main } = state.selection, fromOff = from - main.from, toOff = to - main.from;\n return {\n ...state.changeByRange(range => {\n if (range != main && from != to &&\n state.sliceDoc(range.from + fromOff, range.from + toOff) != state.sliceDoc(from, to))\n return { range };\n let lines = state.toText(text);\n return {\n changes: { from: range.from + fromOff, to: to == main.from ? range.to : range.from + toOff, insert: lines },\n range: EditorSelection.cursor(range.from + fromOff + lines.length)\n };\n }),\n scrollIntoView: true,\n userEvent: \"input.complete\"\n };\n}\nconst SourceCache = /*@__PURE__*/new WeakMap();\nfunction asSource(source) {\n if (!Array.isArray(source))\n return source;\n let known = SourceCache.get(source);\n if (!known)\n SourceCache.set(source, known = completeFromList(source));\n return known;\n}\nconst startCompletionEffect = /*@__PURE__*/StateEffect.define();\nconst closeCompletionEffect = /*@__PURE__*/StateEffect.define();\n\n// A pattern matcher for fuzzy completion matching. Create an instance\n// once for a pattern, and then use that to match any number of\n// completions.\nclass FuzzyMatcher {\n constructor(pattern) {\n this.pattern = pattern;\n this.chars = [];\n this.folded = [];\n // Buffers reused by calls to `match` to track matched character\n // positions.\n this.any = [];\n this.precise = [];\n this.byWord = [];\n this.score = 0;\n this.matched = [];\n for (let p = 0; p < pattern.length;) {\n let char = codePointAt(pattern, p), size = codePointSize(char);\n this.chars.push(char);\n let part = pattern.slice(p, p + size), upper = part.toUpperCase();\n this.folded.push(codePointAt(upper == part ? part.toLowerCase() : upper, 0));\n p += size;\n }\n this.astral = pattern.length != this.chars.length;\n }\n ret(score, matched) {\n this.score = score;\n this.matched = matched;\n return this;\n }\n // Matches a given word (completion) against the pattern (input).\n // Will return a boolean indicating whether there was a match and,\n // on success, set `this.score` to the score, `this.matched` to an\n // array of `from, to` pairs indicating the matched parts of `word`.\n //\n // The score is a number that is more negative the worse the match\n // is. See `Penalty` above.\n match(word) {\n if (this.pattern.length == 0)\n return this.ret(-100 /* Penalty.NotFull */, []);\n if (word.length < this.pattern.length)\n return null;\n let { chars, folded, any, precise, byWord } = this;\n // For single-character queries, only match when they occur right\n // at the start\n if (chars.length == 1) {\n let first = codePointAt(word, 0), firstSize = codePointSize(first);\n let score = firstSize == word.length ? 0 : -100 /* Penalty.NotFull */;\n if (first == chars[0]) ;\n else if (first == folded[0])\n score += -200 /* Penalty.CaseFold */;\n else\n return null;\n return this.ret(score, [0, firstSize]);\n }\n let direct = word.indexOf(this.pattern);\n if (direct == 0)\n return this.ret(word.length == this.pattern.length ? 0 : -100 /* Penalty.NotFull */, [0, this.pattern.length]);\n let len = chars.length, anyTo = 0;\n if (direct < 0) {\n for (let i = 0, e = Math.min(word.length, 200); i < e && anyTo < len;) {\n let next = codePointAt(word, i);\n if (next == chars[anyTo] || next == folded[anyTo])\n any[anyTo++] = i;\n i += codePointSize(next);\n }\n // No match, exit immediately\n if (anyTo < len)\n return null;\n }\n // This tracks the extent of the precise (non-folded, not\n // necessarily adjacent) match\n let preciseTo = 0;\n // Tracks whether there is a match that hits only characters that\n // appear to be starting words. `byWordFolded` is set to true when\n // a case folded character is encountered in such a match\n let byWordTo = 0, byWordFolded = false;\n // If we've found a partial adjacent match, these track its state\n let adjacentTo = 0, adjacentStart = -1, adjacentEnd = -1;\n let hasLower = /[a-z]/.test(word), wordAdjacent = true;\n // Go over the option's text, scanning for the various kinds of matches\n for (let i = 0, e = Math.min(word.length, 200), prevType = 0 /* Tp.NonWord */; i < e && byWordTo < len;) {\n let next = codePointAt(word, i);\n if (direct < 0) {\n if (preciseTo < len && next == chars[preciseTo])\n precise[preciseTo++] = i;\n if (adjacentTo < len) {\n if (next == chars[adjacentTo] || next == folded[adjacentTo]) {\n if (adjacentTo == 0)\n adjacentStart = i;\n adjacentEnd = i + 1;\n adjacentTo++;\n }\n else {\n adjacentTo = 0;\n }\n }\n }\n let ch, type = next < 0xff\n ? (next >= 48 && next <= 57 || next >= 97 && next <= 122 ? 2 /* Tp.Lower */ : next >= 65 && next <= 90 ? 1 /* Tp.Upper */ : 0 /* Tp.NonWord */)\n : ((ch = fromCodePoint(next)) != ch.toLowerCase() ? 1 /* Tp.Upper */ : ch != ch.toUpperCase() ? 2 /* Tp.Lower */ : 0 /* Tp.NonWord */);\n if (!i || type == 1 /* Tp.Upper */ && hasLower || prevType == 0 /* Tp.NonWord */ && type != 0 /* Tp.NonWord */) {\n if (chars[byWordTo] == next || (folded[byWordTo] == next && (byWordFolded = true)))\n byWord[byWordTo++] = i;\n else if (byWord.length)\n wordAdjacent = false;\n }\n prevType = type;\n i += codePointSize(next);\n }\n if (byWordTo == len && byWord[0] == 0 && wordAdjacent)\n return this.result(-100 /* Penalty.ByWord */ + (byWordFolded ? -200 /* Penalty.CaseFold */ : 0), byWord, word);\n if (adjacentTo == len && adjacentStart == 0)\n return this.ret(-200 /* Penalty.CaseFold */ - word.length + (adjacentEnd == word.length ? 0 : -100 /* Penalty.NotFull */), [0, adjacentEnd]);\n if (direct > -1)\n return this.ret(-700 /* Penalty.NotStart */ - word.length, [direct, direct + this.pattern.length]);\n if (adjacentTo == len)\n return this.ret(-200 /* Penalty.CaseFold */ + -700 /* Penalty.NotStart */ - word.length, [adjacentStart, adjacentEnd]);\n if (byWordTo == len)\n return this.result(-100 /* Penalty.ByWord */ + (byWordFolded ? -200 /* Penalty.CaseFold */ : 0) + -700 /* Penalty.NotStart */ +\n (wordAdjacent ? 0 : -1100 /* Penalty.Gap */), byWord, word);\n return chars.length == 2 ? null\n : this.result((any[0] ? -700 /* Penalty.NotStart */ : 0) + -200 /* Penalty.CaseFold */ + -1100 /* Penalty.Gap */, any, word);\n }\n result(score, positions, word) {\n let result = [], i = 0;\n for (let pos of positions) {\n let to = pos + (this.astral ? codePointSize(codePointAt(word, pos)) : 1);\n if (i && result[i - 1] == pos)\n result[i - 1] = to;\n else {\n result[i++] = pos;\n result[i++] = to;\n }\n }\n return this.ret(score - word.length, result);\n }\n}\nclass StrictMatcher {\n constructor(pattern) {\n this.pattern = pattern;\n this.matched = [];\n this.score = 0;\n this.folded = pattern.toLowerCase();\n }\n match(word) {\n if (word.length < this.pattern.length)\n return null;\n let start = word.slice(0, this.pattern.length);\n let match = start == this.pattern ? 0 : start.toLowerCase() == this.folded ? -200 /* Penalty.CaseFold */ : null;\n if (match == null)\n return null;\n this.matched = [0, start.length];\n this.score = match + (word.length == this.pattern.length ? 0 : -100 /* Penalty.NotFull */);\n return this;\n }\n}\n\nconst completionConfig = /*@__PURE__*/Facet.define({\n combine(configs) {\n return combineConfig(configs, {\n activateOnTyping: true,\n activateOnCompletion: () => false,\n activateOnTypingDelay: 100,\n selectOnOpen: true,\n override: null,\n closeOnBlur: true,\n maxRenderedOptions: 100,\n defaultKeymap: true,\n tooltipClass: () => \"\",\n optionClass: () => \"\",\n aboveCursor: false,\n icons: true,\n addToOptions: [],\n positionInfo: defaultPositionInfo,\n filterStrict: false,\n compareCompletions: (a, b) => (a.sortText || a.label).localeCompare(b.sortText || b.label),\n interactionDelay: 75,\n updateSyncTime: 100\n }, {\n defaultKeymap: (a, b) => a && b,\n closeOnBlur: (a, b) => a && b,\n icons: (a, b) => a && b,\n tooltipClass: (a, b) => c => joinClass(a(c), b(c)),\n optionClass: (a, b) => c => joinClass(a(c), b(c)),\n addToOptions: (a, b) => a.concat(b),\n filterStrict: (a, b) => a || b,\n });\n }\n});\nfunction joinClass(a, b) {\n return a ? b ? a + \" \" + b : a : b;\n}\nfunction defaultPositionInfo(view, list, option, info, space, tooltip) {\n let rtl = view.textDirection == Direction.RTL, left = rtl, narrow = false;\n let side = \"top\", offset, maxWidth;\n let spaceLeft = list.left - space.left, spaceRight = space.right - list.right;\n let infoWidth = info.right - info.left, infoHeight = info.bottom - info.top;\n if (left && spaceLeft < Math.min(infoWidth, spaceRight))\n left = false;\n else if (!left && spaceRight < Math.min(infoWidth, spaceLeft))\n left = true;\n if (infoWidth <= (left ? spaceLeft : spaceRight)) {\n offset = Math.max(space.top, Math.min(option.top, space.bottom - infoHeight)) - list.top;\n maxWidth = Math.min(400 /* Info.Width */, left ? spaceLeft : spaceRight);\n }\n else {\n narrow = true;\n maxWidth = Math.min(400 /* Info.Width */, (rtl ? list.right : space.right - list.left) - 30 /* Info.Margin */);\n let spaceBelow = space.bottom - list.bottom;\n if (spaceBelow >= infoHeight || spaceBelow > list.top) { // Below the completion\n offset = option.bottom - list.top;\n }\n else { // Above it\n side = \"bottom\";\n offset = list.bottom - option.top;\n }\n }\n let scaleY = (list.bottom - list.top) / tooltip.offsetHeight;\n let scaleX = (list.right - list.left) / tooltip.offsetWidth;\n return {\n style: `${side}: ${offset / scaleY}px; max-width: ${maxWidth / scaleX}px`,\n class: \"cm-completionInfo-\" + (narrow ? (rtl ? \"left-narrow\" : \"right-narrow\") : left ? \"left\" : \"right\")\n };\n}\n\nconst setSelectedEffect = /*@__PURE__*/StateEffect.define();\nfunction optionContent(config) {\n let content = config.addToOptions.slice();\n if (config.icons)\n content.push({\n render(completion) {\n let icon = document.createElement(\"div\");\n icon.classList.add(\"cm-completionIcon\");\n if (completion.type)\n icon.classList.add(...completion.type.split(/\\s+/g).map(cls => \"cm-completionIcon-\" + cls));\n icon.setAttribute(\"aria-hidden\", \"true\");\n return icon;\n },\n position: 20\n });\n content.push({\n render(completion, _s, _v, match) {\n let labelElt = document.createElement(\"span\");\n labelElt.className = \"cm-completionLabel\";\n let label = completion.displayLabel || completion.label, off = 0;\n for (let j = 0; j < match.length;) {\n let from = match[j++], to = match[j++];\n if (from > off)\n labelElt.appendChild(document.createTextNode(label.slice(off, from)));\n let span = labelElt.appendChild(document.createElement(\"span\"));\n span.appendChild(document.createTextNode(label.slice(from, to)));\n span.className = \"cm-completionMatchedText\";\n off = to;\n }\n if (off < label.length)\n labelElt.appendChild(document.createTextNode(label.slice(off)));\n return labelElt;\n },\n position: 50\n }, {\n render(completion) {\n if (!completion.detail)\n return null;\n let detailElt = document.createElement(\"span\");\n detailElt.className = \"cm-completionDetail\";\n detailElt.textContent = completion.detail;\n return detailElt;\n },\n position: 80\n });\n return content.sort((a, b) => a.position - b.position).map(a => a.render);\n}\nfunction rangeAroundSelected(total, selected, max) {\n if (total <= max)\n return { from: 0, to: total };\n if (selected < 0)\n selected = 0;\n if (selected <= (total >> 1)) {\n let off = Math.floor(selected / max);\n return { from: off * max, to: (off + 1) * max };\n }\n let off = Math.floor((total - selected) / max);\n return { from: total - (off + 1) * max, to: total - off * max };\n}\nclass CompletionTooltip {\n constructor(view, stateField, applyCompletion) {\n this.view = view;\n this.stateField = stateField;\n this.applyCompletion = applyCompletion;\n this.info = null;\n this.infoDestroy = null;\n this.placeInfoReq = {\n read: () => this.measureInfo(),\n write: (pos) => this.placeInfo(pos),\n key: this\n };\n this.space = null;\n this.currentClass = \"\";\n let cState = view.state.field(stateField);\n let { options, selected } = cState.open;\n let config = view.state.facet(completionConfig);\n this.optionContent = optionContent(config);\n this.optionClass = config.optionClass;\n this.tooltipClass = config.tooltipClass;\n this.range = rangeAroundSelected(options.length, selected, config.maxRenderedOptions);\n this.dom = document.createElement(\"div\");\n this.dom.className = \"cm-tooltip-autocomplete\";\n this.updateTooltipClass(view.state);\n this.dom.addEventListener(\"mousedown\", (e) => {\n let { options } = view.state.field(stateField).open;\n for (let dom = e.target, match; dom && dom != this.dom; dom = dom.parentNode) {\n if (dom.nodeName == \"LI\" && (match = /-(\\d+)$/.exec(dom.id)) && +match[1] < options.length) {\n this.applyCompletion(view, options[+match[1]]);\n e.preventDefault();\n return;\n }\n }\n if (e.target == this.list) {\n let move = this.list.classList.contains(\"cm-completionListIncompleteTop\") &&\n e.clientY < this.list.firstChild.getBoundingClientRect().top ? this.range.from - 1 :\n this.list.classList.contains(\"cm-completionListIncompleteBottom\") &&\n e.clientY > this.list.lastChild.getBoundingClientRect().bottom ? this.range.to : null;\n if (move != null) {\n view.dispatch({ effects: setSelectedEffect.of(move) });\n e.preventDefault();\n }\n }\n });\n this.dom.addEventListener(\"focusout\", (e) => {\n let state = view.state.field(this.stateField, false);\n if (state && state.tooltip && view.state.facet(completionConfig).closeOnBlur &&\n e.relatedTarget != view.contentDOM)\n view.dispatch({ effects: closeCompletionEffect.of(null) });\n });\n this.showOptions(options, cState.id);\n }\n mount() { this.updateSel(); }\n showOptions(options, id) {\n if (this.list)\n this.list.remove();\n this.list = this.dom.appendChild(this.createListBox(options, id, this.range));\n this.list.addEventListener(\"scroll\", () => {\n if (this.info)\n this.view.requestMeasure(this.placeInfoReq);\n });\n }\n update(update) {\n var _a;\n let cState = update.state.field(this.stateField);\n let prevState = update.startState.field(this.stateField);\n this.updateTooltipClass(update.state);\n if (cState != prevState) {\n let { options, selected, disabled } = cState.open;\n if (!prevState.open || prevState.open.options != options) {\n this.range = rangeAroundSelected(options.length, selected, update.state.facet(completionConfig).maxRenderedOptions);\n this.showOptions(options, cState.id);\n }\n this.updateSel();\n if (disabled != ((_a = prevState.open) === null || _a === void 0 ? void 0 : _a.disabled))\n this.dom.classList.toggle(\"cm-tooltip-autocomplete-disabled\", !!disabled);\n }\n }\n updateTooltipClass(state) {\n let cls = this.tooltipClass(state);\n if (cls != this.currentClass) {\n for (let c of this.currentClass.split(\" \"))\n if (c)\n this.dom.classList.remove(c);\n for (let c of cls.split(\" \"))\n if (c)\n this.dom.classList.add(c);\n this.currentClass = cls;\n }\n }\n positioned(space) {\n this.space = space;\n if (this.info)\n this.view.requestMeasure(this.placeInfoReq);\n }\n updateSel() {\n let cState = this.view.state.field(this.stateField), open = cState.open;\n if (open.selected > -1 && open.selected < this.range.from || open.selected >= this.range.to) {\n this.range = rangeAroundSelected(open.options.length, open.selected, this.view.state.facet(completionConfig).maxRenderedOptions);\n this.showOptions(open.options, cState.id);\n }\n let newSel = this.updateSelectedOption(open.selected);\n if (newSel) {\n this.destroyInfo();\n let { completion } = open.options[open.selected];\n let { info } = completion;\n if (!info)\n return;\n let infoResult = typeof info === \"string\" ? document.createTextNode(info) : info(completion);\n if (!infoResult)\n return;\n if (\"then\" in infoResult) {\n infoResult.then(obj => {\n if (obj && this.view.state.field(this.stateField, false) == cState)\n this.addInfoPane(obj, completion);\n }).catch(e => logException(this.view.state, e, \"completion info\"));\n }\n else {\n this.addInfoPane(infoResult, completion);\n newSel.setAttribute(\"aria-describedby\", this.info.id);\n }\n }\n }\n addInfoPane(content, completion) {\n this.destroyInfo();\n let wrap = this.info = document.createElement(\"div\");\n wrap.className = \"cm-tooltip cm-completionInfo\";\n wrap.id = \"cm-completionInfo-\" + Math.floor(Math.random() * 0xffff).toString(16);\n if (content.nodeType != null) {\n wrap.appendChild(content);\n this.infoDestroy = null;\n }\n else {\n let { dom, destroy } = content;\n wrap.appendChild(dom);\n this.infoDestroy = destroy || null;\n }\n this.dom.appendChild(wrap);\n this.view.requestMeasure(this.placeInfoReq);\n }\n updateSelectedOption(selected) {\n let set = null;\n for (let opt = this.list.firstChild, i = this.range.from; opt; opt = opt.nextSibling, i++) {\n if (opt.nodeName != \"LI\" || !opt.id) {\n i--; // A section header\n }\n else if (i == selected) {\n if (!opt.hasAttribute(\"aria-selected\")) {\n opt.setAttribute(\"aria-selected\", \"true\");\n set = opt;\n }\n }\n else {\n if (opt.hasAttribute(\"aria-selected\")) {\n opt.removeAttribute(\"aria-selected\");\n opt.removeAttribute(\"aria-describedby\");\n }\n }\n }\n if (set)\n scrollIntoView(this.list, set);\n return set;\n }\n measureInfo() {\n let sel = this.dom.querySelector(\"[aria-selected]\");\n if (!sel || !this.info)\n return null;\n let listRect = this.dom.getBoundingClientRect();\n let infoRect = this.info.getBoundingClientRect();\n let selRect = sel.getBoundingClientRect();\n let space = this.space;\n if (!space) {\n let docElt = this.dom.ownerDocument.documentElement;\n space = { left: 0, top: 0, right: docElt.clientWidth, bottom: docElt.clientHeight };\n }\n if (selRect.top > Math.min(space.bottom, listRect.bottom) - 10 ||\n selRect.bottom < Math.max(space.top, listRect.top) + 10)\n return null;\n return this.view.state.facet(completionConfig).positionInfo(this.view, listRect, selRect, infoRect, space, this.dom);\n }\n placeInfo(pos) {\n if (this.info) {\n if (pos) {\n if (pos.style)\n this.info.style.cssText = pos.style;\n this.info.className = \"cm-tooltip cm-completionInfo \" + (pos.class || \"\");\n }\n else {\n this.info.style.cssText = \"top: -1e6px\";\n }\n }\n }\n createListBox(options, id, range) {\n const ul = document.createElement(\"ul\");\n ul.id = id;\n ul.setAttribute(\"role\", \"listbox\");\n ul.setAttribute(\"aria-expanded\", \"true\");\n ul.setAttribute(\"aria-label\", this.view.state.phrase(\"Completions\"));\n ul.addEventListener(\"mousedown\", e => {\n // Prevent focus change when clicking the scrollbar\n if (e.target == ul)\n e.preventDefault();\n });\n let curSection = null;\n for (let i = range.from; i < range.to; i++) {\n let { completion, match } = options[i], { section } = completion;\n if (section) {\n let name = typeof section == \"string\" ? section : section.name;\n if (name != curSection && (i > range.from || range.from == 0)) {\n curSection = name;\n if (typeof section != \"string\" && section.header) {\n ul.appendChild(section.header(section));\n }\n else {\n let header = ul.appendChild(document.createElement(\"completion-section\"));\n header.textContent = name;\n }\n }\n }\n const li = ul.appendChild(document.createElement(\"li\"));\n li.id = id + \"-\" + i;\n li.setAttribute(\"role\", \"option\");\n let cls = this.optionClass(completion);\n if (cls)\n li.className = cls;\n for (let source of this.optionContent) {\n let node = source(completion, this.view.state, this.view, match);\n if (node)\n li.appendChild(node);\n }\n }\n if (range.from)\n ul.classList.add(\"cm-completionListIncompleteTop\");\n if (range.to < options.length)\n ul.classList.add(\"cm-completionListIncompleteBottom\");\n return ul;\n }\n destroyInfo() {\n if (this.info) {\n if (this.infoDestroy)\n this.infoDestroy();\n this.info.remove();\n this.info = null;\n }\n }\n destroy() {\n this.destroyInfo();\n }\n}\nfunction completionTooltip(stateField, applyCompletion) {\n return (view) => new CompletionTooltip(view, stateField, applyCompletion);\n}\nfunction scrollIntoView(container, element) {\n let parent = container.getBoundingClientRect();\n let self = element.getBoundingClientRect();\n let scaleY = parent.height / container.offsetHeight;\n if (self.top < parent.top)\n container.scrollTop -= (parent.top - self.top) / scaleY;\n else if (self.bottom > parent.bottom)\n container.scrollTop += (self.bottom - parent.bottom) / scaleY;\n}\n\n// Used to pick a preferred option when two options with the same\n// label occur in the result.\nfunction score(option) {\n return (option.boost || 0) * 100 + (option.apply ? 10 : 0) + (option.info ? 5 : 0) +\n (option.type ? 1 : 0);\n}\nfunction sortOptions(active, state) {\n let options = [];\n let sections = null, dynamicSectionScore = null;\n let addOption = (option) => {\n options.push(option);\n let { section } = option.completion;\n if (section) {\n if (!sections)\n sections = [];\n let name = typeof section == \"string\" ? section : section.name;\n if (!sections.some(s => s.name == name))\n sections.push(typeof section == \"string\" ? { name } : section);\n }\n };\n let conf = state.facet(completionConfig);\n for (let a of active)\n if (a.hasResult()) {\n let getMatch = a.result.getMatch;\n if (a.result.filter === false) {\n for (let option of a.result.options) {\n addOption(new Option(option, a.source, getMatch ? getMatch(option) : [], 1e9 - options.length));\n }\n }\n else {\n let pattern = state.sliceDoc(a.from, a.to), match;\n let matcher = conf.filterStrict ? new StrictMatcher(pattern) : new FuzzyMatcher(pattern);\n for (let option of a.result.options)\n if (match = matcher.match(option.label)) {\n let matched = !option.displayLabel ? match.matched : getMatch ? getMatch(option, match.matched) : [];\n let score = match.score + (option.boost || 0);\n addOption(new Option(option, a.source, matched, score));\n if (typeof option.section == \"object\" && option.section.rank === \"dynamic\") {\n let { name } = option.section;\n if (!dynamicSectionScore)\n dynamicSectionScore = Object.create(null);\n dynamicSectionScore[name] = Math.max(score, dynamicSectionScore[name] || -1e9);\n }\n }\n }\n }\n if (sections) {\n let sectionOrder = Object.create(null), pos = 0;\n let cmp = (a, b) => {\n return (a.rank === \"dynamic\" && b.rank === \"dynamic\" ? dynamicSectionScore[b.name] - dynamicSectionScore[a.name] : 0) ||\n (typeof a.rank == \"number\" ? a.rank : 1e9) - (typeof b.rank == \"number\" ? b.rank : 1e9) ||\n (a.name < b.name ? -1 : 1);\n };\n for (let s of sections.sort(cmp)) {\n pos -= 1e5;\n sectionOrder[s.name] = pos;\n }\n for (let option of options) {\n let { section } = option.completion;\n if (section)\n option.score += sectionOrder[typeof section == \"string\" ? section : section.name];\n }\n }\n let result = [], prev = null;\n let compare = conf.compareCompletions;\n for (let opt of options.sort((a, b) => (b.score - a.score) || compare(a.completion, b.completion))) {\n let cur = opt.completion;\n if (!prev || prev.label != cur.label || prev.detail != cur.detail ||\n (prev.type != null && cur.type != null && prev.type != cur.type) ||\n prev.apply != cur.apply || prev.boost != cur.boost)\n result.push(opt);\n else if (score(opt.completion) > score(prev))\n result[result.length - 1] = opt;\n prev = opt.completion;\n }\n return result;\n}\nclass CompletionDialog {\n constructor(options, attrs, tooltip, timestamp, selected, disabled) {\n this.options = options;\n this.attrs = attrs;\n this.tooltip = tooltip;\n this.timestamp = timestamp;\n this.selected = selected;\n this.disabled = disabled;\n }\n setSelected(selected, id) {\n return selected == this.selected || selected >= this.options.length ? this\n : new CompletionDialog(this.options, makeAttrs(id, selected), this.tooltip, this.timestamp, selected, this.disabled);\n }\n static build(active, state, id, prev, conf, didSetActive) {\n if (prev && !didSetActive && active.some(s => s.isPending))\n return prev.setDisabled();\n let options = sortOptions(active, state);\n if (!options.length)\n return prev && active.some(a => a.isPending) ? prev.setDisabled() : null;\n let selected = state.facet(completionConfig).selectOnOpen ? 0 : -1;\n if (prev && prev.selected != selected && prev.selected != -1) {\n let selectedValue = prev.options[prev.selected].completion;\n for (let i = 0; i < options.length; i++)\n if (options[i].completion == selectedValue) {\n selected = i;\n break;\n }\n }\n return new CompletionDialog(options, makeAttrs(id, selected), {\n pos: active.reduce((a, b) => b.hasResult() ? Math.min(a, b.from) : a, 1e8),\n create: createTooltip,\n above: conf.aboveCursor,\n }, prev ? prev.timestamp : Date.now(), selected, false);\n }\n map(changes) {\n return new CompletionDialog(this.options, this.attrs, { ...this.tooltip, pos: changes.mapPos(this.tooltip.pos) }, this.timestamp, this.selected, this.disabled);\n }\n setDisabled() {\n return new CompletionDialog(this.options, this.attrs, this.tooltip, this.timestamp, this.selected, true);\n }\n}\nclass CompletionState {\n constructor(active, id, open) {\n this.active = active;\n this.id = id;\n this.open = open;\n }\n static start() {\n return new CompletionState(none, \"cm-ac-\" + Math.floor(Math.random() * 2e6).toString(36), null);\n }\n update(tr) {\n let { state } = tr, conf = state.facet(completionConfig);\n let sources = conf.override ||\n state.languageDataAt(\"autocomplete\", cur(state)).map(asSource);\n let active = sources.map(source => {\n let value = this.active.find(s => s.source == source) ||\n new ActiveSource(source, this.active.some(a => a.state != 0 /* State.Inactive */) ? 1 /* State.Pending */ : 0 /* State.Inactive */);\n return value.update(tr, conf);\n });\n if (active.length == this.active.length && active.every((a, i) => a == this.active[i]))\n active = this.active;\n let open = this.open, didSet = tr.effects.some(e => e.is(setActiveEffect));\n if (open && tr.docChanged)\n open = open.map(tr.changes);\n if (tr.selection || active.some(a => a.hasResult() && tr.changes.touchesRange(a.from, a.to)) ||\n !sameResults(active, this.active) || didSet)\n open = CompletionDialog.build(active, state, this.id, open, conf, didSet);\n else if (open && open.disabled && !active.some(a => a.isPending))\n open = null;\n if (!open && active.every(a => !a.isPending) && active.some(a => a.hasResult()))\n active = active.map(a => a.hasResult() ? new ActiveSource(a.source, 0 /* State.Inactive */) : a);\n for (let effect of tr.effects)\n if (effect.is(setSelectedEffect))\n open = open && open.setSelected(effect.value, this.id);\n return active == this.active && open == this.open ? this : new CompletionState(active, this.id, open);\n }\n get tooltip() { return this.open ? this.open.tooltip : null; }\n get attrs() { return this.open ? this.open.attrs : this.active.length ? baseAttrs : noAttrs; }\n}\nfunction sameResults(a, b) {\n if (a == b)\n return true;\n for (let iA = 0, iB = 0;;) {\n while (iA < a.length && !a[iA].hasResult())\n iA++;\n while (iB < b.length && !b[iB].hasResult())\n iB++;\n let endA = iA == a.length, endB = iB == b.length;\n if (endA || endB)\n return endA == endB;\n if (a[iA++].result != b[iB++].result)\n return false;\n }\n}\nconst baseAttrs = {\n \"aria-autocomplete\": \"list\"\n};\nconst noAttrs = {};\nfunction makeAttrs(id, selected) {\n let result = {\n \"aria-autocomplete\": \"list\",\n \"aria-haspopup\": \"listbox\",\n \"aria-controls\": id\n };\n if (selected > -1)\n result[\"aria-activedescendant\"] = id + \"-\" + selected;\n return result;\n}\nconst none = [];\nfunction getUpdateType(tr, conf) {\n if (tr.isUserEvent(\"input.complete\")) {\n let completion = tr.annotation(pickedCompletion);\n if (completion && conf.activateOnCompletion(completion))\n return 4 /* UpdateType.Activate */ | 8 /* UpdateType.Reset */;\n }\n let typing = tr.isUserEvent(\"input.type\");\n return typing && conf.activateOnTyping ? 4 /* UpdateType.Activate */ | 1 /* UpdateType.Typing */\n : typing ? 1 /* UpdateType.Typing */\n : tr.isUserEvent(\"delete.backward\") ? 2 /* UpdateType.Backspacing */\n : tr.selection ? 8 /* UpdateType.Reset */\n : tr.docChanged ? 16 /* UpdateType.ResetIfTouching */ : 0 /* UpdateType.None */;\n}\nclass ActiveSource {\n constructor(source, state, explicit = false) {\n this.source = source;\n this.state = state;\n this.explicit = explicit;\n }\n hasResult() { return false; }\n get isPending() { return this.state == 1 /* State.Pending */; }\n update(tr, conf) {\n let type = getUpdateType(tr, conf), value = this;\n if ((type & 8 /* UpdateType.Reset */) || (type & 16 /* UpdateType.ResetIfTouching */) && this.touches(tr))\n value = new ActiveSource(value.source, 0 /* State.Inactive */);\n if ((type & 4 /* UpdateType.Activate */) && value.state == 0 /* State.Inactive */)\n value = new ActiveSource(this.source, 1 /* State.Pending */);\n value = value.updateFor(tr, type);\n for (let effect of tr.effects) {\n if (effect.is(startCompletionEffect))\n value = new ActiveSource(value.source, 1 /* State.Pending */, effect.value);\n else if (effect.is(closeCompletionEffect))\n value = new ActiveSource(value.source, 0 /* State.Inactive */);\n else if (effect.is(setActiveEffect))\n for (let active of effect.value)\n if (active.source == value.source)\n value = active;\n }\n return value;\n }\n updateFor(tr, type) { return this.map(tr.changes); }\n map(changes) { return this; }\n touches(tr) {\n return tr.changes.touchesRange(cur(tr.state));\n }\n}\nclass ActiveResult extends ActiveSource {\n constructor(source, explicit, limit, result, from, to) {\n super(source, 3 /* State.Result */, explicit);\n this.limit = limit;\n this.result = result;\n this.from = from;\n this.to = to;\n }\n hasResult() { return true; }\n updateFor(tr, type) {\n var _a;\n if (!(type & 3 /* UpdateType.SimpleInteraction */))\n return this.map(tr.changes);\n let result = this.result;\n if (result.map && !tr.changes.empty)\n result = result.map(result, tr.changes);\n let from = tr.changes.mapPos(this.from), to = tr.changes.mapPos(this.to, 1);\n let pos = cur(tr.state);\n if (pos > to || !result ||\n (type & 2 /* UpdateType.Backspacing */) && (cur(tr.startState) == this.from || pos < this.limit))\n return new ActiveSource(this.source, type & 4 /* UpdateType.Activate */ ? 1 /* State.Pending */ : 0 /* State.Inactive */);\n let limit = tr.changes.mapPos(this.limit);\n if (checkValid(result.validFor, tr.state, from, to))\n return new ActiveResult(this.source, this.explicit, limit, result, from, to);\n if (result.update &&\n (result = result.update(result, from, to, new CompletionContext(tr.state, pos, false))))\n return new ActiveResult(this.source, this.explicit, limit, result, result.from, (_a = result.to) !== null && _a !== void 0 ? _a : cur(tr.state));\n return new ActiveSource(this.source, 1 /* State.Pending */, this.explicit);\n }\n map(mapping) {\n if (mapping.empty)\n return this;\n let result = this.result.map ? this.result.map(this.result, mapping) : this.result;\n if (!result)\n return new ActiveSource(this.source, 0 /* State.Inactive */);\n return new ActiveResult(this.source, this.explicit, mapping.mapPos(this.limit), this.result, mapping.mapPos(this.from), mapping.mapPos(this.to, 1));\n }\n touches(tr) {\n return tr.changes.touchesRange(this.from, this.to);\n }\n}\nfunction checkValid(validFor, state, from, to) {\n if (!validFor)\n return false;\n let text = state.sliceDoc(from, to);\n return typeof validFor == \"function\" ? validFor(text, from, to, state) : ensureAnchor(validFor, true).test(text);\n}\nconst setActiveEffect = /*@__PURE__*/StateEffect.define({\n map(sources, mapping) { return sources.map(s => s.map(mapping)); }\n});\nconst completionState = /*@__PURE__*/StateField.define({\n create() { return CompletionState.start(); },\n update(value, tr) { return value.update(tr); },\n provide: f => [\n showTooltip.from(f, val => val.tooltip),\n EditorView.contentAttributes.from(f, state => state.attrs)\n ]\n});\nfunction applyCompletion(view, option) {\n const apply = option.completion.apply || option.completion.label;\n let result = view.state.field(completionState).active.find(a => a.source == option.source);\n if (!(result instanceof ActiveResult))\n return false;\n if (typeof apply == \"string\")\n view.dispatch({\n ...insertCompletionText(view.state, apply, result.from, result.to),\n annotations: pickedCompletion.of(option.completion)\n });\n else\n apply(view, option.completion, result.from, result.to);\n return true;\n}\nconst createTooltip = /*@__PURE__*/completionTooltip(completionState, applyCompletion);\n\n/**\nReturns a command that moves the completion selection forward or\nbackward by the given amount.\n*/\nfunction moveCompletionSelection(forward, by = \"option\") {\n return (view) => {\n let cState = view.state.field(completionState, false);\n if (!cState || !cState.open || cState.open.disabled ||\n Date.now() - cState.open.timestamp < view.state.facet(completionConfig).interactionDelay)\n return false;\n let step = 1, tooltip;\n if (by == \"page\" && (tooltip = getTooltip(view, cState.open.tooltip)))\n step = Math.max(2, Math.floor(tooltip.dom.offsetHeight /\n tooltip.dom.querySelector(\"li\").offsetHeight) - 1);\n let { length } = cState.open.options;\n let selected = cState.open.selected > -1 ? cState.open.selected + step * (forward ? 1 : -1) : forward ? 0 : length - 1;\n if (selected < 0)\n selected = by == \"page\" ? 0 : length - 1;\n else if (selected >= length)\n selected = by == \"page\" ? length - 1 : 0;\n view.dispatch({ effects: setSelectedEffect.of(selected) });\n return true;\n };\n}\n/**\nAccept the current completion.\n*/\nconst acceptCompletion = (view) => {\n let cState = view.state.field(completionState, false);\n if (view.state.readOnly || !cState || !cState.open || cState.open.selected < 0 || cState.open.disabled ||\n Date.now() - cState.open.timestamp < view.state.facet(completionConfig).interactionDelay)\n return false;\n return applyCompletion(view, cState.open.options[cState.open.selected]);\n};\n/**\nExplicitly start autocompletion.\n*/\nconst startCompletion = (view) => {\n let cState = view.state.field(completionState, false);\n if (!cState)\n return false;\n view.dispatch({ effects: startCompletionEffect.of(true) });\n return true;\n};\n/**\nClose the currently active completion.\n*/\nconst closeCompletion = (view) => {\n let cState = view.state.field(completionState, false);\n if (!cState || !cState.active.some(a => a.state != 0 /* State.Inactive */))\n return false;\n view.dispatch({ effects: closeCompletionEffect.of(null) });\n return true;\n};\nclass RunningQuery {\n constructor(active, context) {\n this.active = active;\n this.context = context;\n this.time = Date.now();\n this.updates = [];\n // Note that 'undefined' means 'not done yet', whereas 'null' means\n // 'query returned null'.\n this.done = undefined;\n }\n}\nconst MaxUpdateCount = 50, MinAbortTime = 1000;\nconst completionPlugin = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.view = view;\n this.debounceUpdate = -1;\n this.running = [];\n this.debounceAccept = -1;\n this.pendingStart = false;\n this.composing = 0 /* CompositionState.None */;\n for (let active of view.state.field(completionState).active)\n if (active.isPending)\n this.startQuery(active);\n }\n update(update) {\n let cState = update.state.field(completionState);\n let conf = update.state.facet(completionConfig);\n if (!update.selectionSet && !update.docChanged && update.startState.field(completionState) == cState)\n return;\n let doesReset = update.transactions.some(tr => {\n let type = getUpdateType(tr, conf);\n return (type & 8 /* UpdateType.Reset */) || (tr.selection || tr.docChanged) && !(type & 3 /* UpdateType.SimpleInteraction */);\n });\n for (let i = 0; i < this.running.length; i++) {\n let query = this.running[i];\n if (doesReset ||\n query.context.abortOnDocChange && update.docChanged ||\n query.updates.length + update.transactions.length > MaxUpdateCount && Date.now() - query.time > MinAbortTime) {\n for (let handler of query.context.abortListeners) {\n try {\n handler();\n }\n catch (e) {\n logException(this.view.state, e);\n }\n }\n query.context.abortListeners = null;\n this.running.splice(i--, 1);\n }\n else {\n query.updates.push(...update.transactions);\n }\n }\n if (this.debounceUpdate > -1)\n clearTimeout(this.debounceUpdate);\n if (update.transactions.some(tr => tr.effects.some(e => e.is(startCompletionEffect))))\n this.pendingStart = true;\n let delay = this.pendingStart ? 50 : conf.activateOnTypingDelay;\n this.debounceUpdate = cState.active.some(a => a.isPending && !this.running.some(q => q.active.source == a.source))\n ? setTimeout(() => this.startUpdate(), delay) : -1;\n if (this.composing != 0 /* CompositionState.None */)\n for (let tr of update.transactions) {\n if (tr.isUserEvent(\"input.type\"))\n this.composing = 2 /* CompositionState.Changed */;\n else if (this.composing == 2 /* CompositionState.Changed */ && tr.selection)\n this.composing = 3 /* CompositionState.ChangedAndMoved */;\n }\n }\n startUpdate() {\n this.debounceUpdate = -1;\n this.pendingStart = false;\n let { state } = this.view, cState = state.field(completionState);\n for (let active of cState.active) {\n if (active.isPending && !this.running.some(r => r.active.source == active.source))\n this.startQuery(active);\n }\n if (this.running.length && cState.open && cState.open.disabled)\n this.debounceAccept = setTimeout(() => this.accept(), this.view.state.facet(completionConfig).updateSyncTime);\n }\n startQuery(active) {\n let { state } = this.view, pos = cur(state);\n let context = new CompletionContext(state, pos, active.explicit, this.view);\n let pending = new RunningQuery(active, context);\n this.running.push(pending);\n Promise.resolve(active.source(context)).then(result => {\n if (!pending.context.aborted) {\n pending.done = result || null;\n this.scheduleAccept();\n }\n }, err => {\n this.view.dispatch({ effects: closeCompletionEffect.of(null) });\n logException(this.view.state, err);\n });\n }\n scheduleAccept() {\n if (this.running.every(q => q.done !== undefined))\n this.accept();\n else if (this.debounceAccept < 0)\n this.debounceAccept = setTimeout(() => this.accept(), this.view.state.facet(completionConfig).updateSyncTime);\n }\n // For each finished query in this.running, try to create a result\n // or, if appropriate, restart the query.\n accept() {\n var _a;\n if (this.debounceAccept > -1)\n clearTimeout(this.debounceAccept);\n this.debounceAccept = -1;\n let updated = [];\n let conf = this.view.state.facet(completionConfig), cState = this.view.state.field(completionState);\n for (let i = 0; i < this.running.length; i++) {\n let query = this.running[i];\n if (query.done === undefined)\n continue;\n this.running.splice(i--, 1);\n if (query.done) {\n let pos = cur(query.updates.length ? query.updates[0].startState : this.view.state);\n let limit = Math.min(pos, query.done.from + (query.active.explicit ? 0 : 1));\n let active = new ActiveResult(query.active.source, query.active.explicit, limit, query.done, query.done.from, (_a = query.done.to) !== null && _a !== void 0 ? _a : pos);\n // Replay the transactions that happened since the start of\n // the request and see if that preserves the result\n for (let tr of query.updates)\n active = active.update(tr, conf);\n if (active.hasResult()) {\n updated.push(active);\n continue;\n }\n }\n let current = cState.active.find(a => a.source == query.active.source);\n if (current && current.isPending) {\n if (query.done == null) {\n // Explicitly failed. Should clear the pending status if it\n // hasn't been re-set in the meantime.\n let active = new ActiveSource(query.active.source, 0 /* State.Inactive */);\n for (let tr of query.updates)\n active = active.update(tr, conf);\n if (!active.isPending)\n updated.push(active);\n }\n else {\n // Cleared by subsequent transactions. Restart.\n this.startQuery(current);\n }\n }\n }\n if (updated.length || cState.open && cState.open.disabled)\n this.view.dispatch({ effects: setActiveEffect.of(updated) });\n }\n}, {\n eventHandlers: {\n blur(event) {\n let state = this.view.state.field(completionState, false);\n if (state && state.tooltip && this.view.state.facet(completionConfig).closeOnBlur) {\n let dialog = state.open && getTooltip(this.view, state.open.tooltip);\n if (!dialog || !dialog.dom.contains(event.relatedTarget))\n setTimeout(() => this.view.dispatch({ effects: closeCompletionEffect.of(null) }), 10);\n }\n },\n compositionstart() {\n this.composing = 1 /* CompositionState.Started */;\n },\n compositionend() {\n if (this.composing == 3 /* CompositionState.ChangedAndMoved */) {\n // Safari fires compositionend events synchronously, possibly\n // from inside an update, so dispatch asynchronously to avoid reentrancy\n setTimeout(() => this.view.dispatch({ effects: startCompletionEffect.of(false) }), 20);\n }\n this.composing = 0 /* CompositionState.None */;\n }\n }\n});\nconst windows = typeof navigator == \"object\" && /*@__PURE__*//Win/.test(navigator.platform);\nconst commitCharacters = /*@__PURE__*/Prec.highest(/*@__PURE__*/EditorView.domEventHandlers({\n keydown(event, view) {\n let field = view.state.field(completionState, false);\n if (!field || !field.open || field.open.disabled || field.open.selected < 0 ||\n event.key.length > 1 || event.ctrlKey && !(windows && event.altKey) || event.metaKey)\n return false;\n let option = field.open.options[field.open.selected];\n let result = field.active.find(a => a.source == option.source);\n let commitChars = option.completion.commitCharacters || result.result.commitCharacters;\n if (commitChars && commitChars.indexOf(event.key) > -1)\n applyCompletion(view, option);\n return false;\n }\n}));\n\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-tooltip.cm-tooltip-autocomplete\": {\n \"& > ul\": {\n fontFamily: \"monospace\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden auto\",\n maxWidth_fallback: \"700px\",\n maxWidth: \"min(700px, 95vw)\",\n minWidth: \"250px\",\n maxHeight: \"10em\",\n height: \"100%\",\n listStyle: \"none\",\n margin: 0,\n padding: 0,\n \"& > li, & > completion-section\": {\n padding: \"1px 3px\",\n lineHeight: 1.2\n },\n \"& > li\": {\n overflowX: \"hidden\",\n textOverflow: \"ellipsis\",\n cursor: \"pointer\"\n },\n \"& > completion-section\": {\n display: \"list-item\",\n borderBottom: \"1px solid silver\",\n paddingLeft: \"0.5em\",\n opacity: 0.7\n }\n }\n },\n \"&light .cm-tooltip-autocomplete ul li[aria-selected]\": {\n background: \"#17c\",\n color: \"white\",\n },\n \"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]\": {\n background: \"#777\",\n },\n \"&dark .cm-tooltip-autocomplete ul li[aria-selected]\": {\n background: \"#347\",\n color: \"white\",\n },\n \"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]\": {\n background: \"#444\",\n },\n \".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after\": {\n content: '\"···\"',\n opacity: 0.5,\n display: \"block\",\n textAlign: \"center\"\n },\n \".cm-tooltip.cm-completionInfo\": {\n position: \"absolute\",\n padding: \"3px 9px\",\n width: \"max-content\",\n maxWidth: `${400 /* Info.Width */}px`,\n boxSizing: \"border-box\",\n whiteSpace: \"pre-line\"\n },\n \".cm-completionInfo.cm-completionInfo-left\": { right: \"100%\" },\n \".cm-completionInfo.cm-completionInfo-right\": { left: \"100%\" },\n \".cm-completionInfo.cm-completionInfo-left-narrow\": { right: `${30 /* Info.Margin */}px` },\n \".cm-completionInfo.cm-completionInfo-right-narrow\": { left: `${30 /* Info.Margin */}px` },\n \"&light .cm-snippetField\": { backgroundColor: \"#00000022\" },\n \"&dark .cm-snippetField\": { backgroundColor: \"#ffffff22\" },\n \".cm-snippetFieldPosition\": {\n verticalAlign: \"text-top\",\n width: 0,\n height: \"1.15em\",\n display: \"inline-block\",\n margin: \"0 -0.7px -.7em\",\n borderLeft: \"1.4px dotted #888\"\n },\n \".cm-completionMatchedText\": {\n textDecoration: \"underline\"\n },\n \".cm-completionDetail\": {\n marginLeft: \"0.5em\",\n fontStyle: \"italic\"\n },\n \".cm-completionIcon\": {\n fontSize: \"90%\",\n width: \".8em\",\n display: \"inline-block\",\n textAlign: \"center\",\n paddingRight: \".6em\",\n opacity: \"0.6\",\n boxSizing: \"content-box\"\n },\n \".cm-completionIcon-function, .cm-completionIcon-method\": {\n \"&:after\": { content: \"'ƒ'\" }\n },\n \".cm-completionIcon-class\": {\n \"&:after\": { content: \"'○'\" }\n },\n \".cm-completionIcon-interface\": {\n \"&:after\": { content: \"'◌'\" }\n },\n \".cm-completionIcon-variable\": {\n \"&:after\": { content: \"'𝑥'\" }\n },\n \".cm-completionIcon-constant\": {\n \"&:after\": { content: \"'𝐶'\" }\n },\n \".cm-completionIcon-type\": {\n \"&:after\": { content: \"'𝑡'\" }\n },\n \".cm-completionIcon-enum\": {\n \"&:after\": { content: \"'∪'\" }\n },\n \".cm-completionIcon-property\": {\n \"&:after\": { content: \"'□'\" }\n },\n \".cm-completionIcon-keyword\": {\n \"&:after\": { content: \"'🔑\\uFE0E'\" } // Disable emoji rendering\n },\n \".cm-completionIcon-namespace\": {\n \"&:after\": { content: \"'▢'\" }\n },\n \".cm-completionIcon-text\": {\n \"&:after\": { content: \"'abc'\", fontSize: \"50%\", verticalAlign: \"middle\" }\n }\n});\n\nclass FieldPos {\n constructor(field, line, from, to) {\n this.field = field;\n this.line = line;\n this.from = from;\n this.to = to;\n }\n}\nclass FieldRange {\n constructor(field, from, to) {\n this.field = field;\n this.from = from;\n this.to = to;\n }\n map(changes) {\n let from = changes.mapPos(this.from, -1, MapMode.TrackDel);\n let to = changes.mapPos(this.to, 1, MapMode.TrackDel);\n return from == null || to == null ? null : new FieldRange(this.field, from, to);\n }\n}\nclass Snippet {\n constructor(lines, fieldPositions) {\n this.lines = lines;\n this.fieldPositions = fieldPositions;\n }\n instantiate(state, pos) {\n let text = [], lineStart = [pos];\n let lineObj = state.doc.lineAt(pos), baseIndent = /^\\s*/.exec(lineObj.text)[0];\n for (let line of this.lines) {\n if (text.length) {\n let indent = baseIndent, tabs = /^\\t*/.exec(line)[0].length;\n for (let i = 0; i < tabs; i++)\n indent += state.facet(indentUnit);\n lineStart.push(pos + indent.length - tabs);\n line = indent + line.slice(tabs);\n }\n text.push(line);\n pos += line.length + 1;\n }\n let ranges = this.fieldPositions.map(pos => new FieldRange(pos.field, lineStart[pos.line] + pos.from, lineStart[pos.line] + pos.to));\n return { text, ranges };\n }\n static parse(template) {\n let fields = [];\n let lines = [], positions = [], m;\n for (let line of template.split(/\\r\\n?|\\n/)) {\n while (m = /[#$]\\{(?:(\\d+)(?::([^{}]*))?|((?:\\\\[{}]|[^{}])*))\\}/.exec(line)) {\n let seq = m[1] ? +m[1] : null, rawName = m[2] || m[3] || \"\", found = -1;\n let name = rawName.replace(/\\\\[{}]/g, m => m[1]);\n for (let i = 0; i < fields.length; i++) {\n if (seq != null ? fields[i].seq == seq : name ? fields[i].name == name : false)\n found = i;\n }\n if (found < 0) {\n let i = 0;\n while (i < fields.length && (seq == null || (fields[i].seq != null && fields[i].seq < seq)))\n i++;\n fields.splice(i, 0, { seq, name });\n found = i;\n for (let pos of positions)\n if (pos.field >= found)\n pos.field++;\n }\n for (let pos of positions)\n if (pos.line == lines.length && pos.from > m.index) {\n let snip = m[2] ? 3 + (m[1] || \"\").length : 2;\n pos.from -= snip;\n pos.to -= snip;\n }\n positions.push(new FieldPos(found, lines.length, m.index, m.index + name.length));\n line = line.slice(0, m.index) + rawName + line.slice(m.index + m[0].length);\n }\n line = line.replace(/\\\\([{}])/g, (_, brace, index) => {\n for (let pos of positions)\n if (pos.line == lines.length && pos.from > index) {\n pos.from--;\n pos.to--;\n }\n return brace;\n });\n lines.push(line);\n }\n return new Snippet(lines, positions);\n }\n}\nlet fieldMarker = /*@__PURE__*/Decoration.widget({ widget: /*@__PURE__*/new class extends WidgetType {\n toDOM() {\n let span = document.createElement(\"span\");\n span.className = \"cm-snippetFieldPosition\";\n return span;\n }\n ignoreEvent() { return false; }\n } });\nlet fieldRange = /*@__PURE__*/Decoration.mark({ class: \"cm-snippetField\" });\nclass ActiveSnippet {\n constructor(ranges, active) {\n this.ranges = ranges;\n this.active = active;\n this.deco = Decoration.set(ranges.map(r => (r.from == r.to ? fieldMarker : fieldRange).range(r.from, r.to)), true);\n }\n map(changes) {\n let ranges = [];\n for (let r of this.ranges) {\n let mapped = r.map(changes);\n if (!mapped)\n return null;\n ranges.push(mapped);\n }\n return new ActiveSnippet(ranges, this.active);\n }\n selectionInsideField(sel) {\n return sel.ranges.every(range => this.ranges.some(r => r.field == this.active && r.from <= range.from && r.to >= range.to));\n }\n}\nconst setActive = /*@__PURE__*/StateEffect.define({\n map(value, changes) { return value && value.map(changes); }\n});\nconst moveToField = /*@__PURE__*/StateEffect.define();\nconst snippetState = /*@__PURE__*/StateField.define({\n create() { return null; },\n update(value, tr) {\n for (let effect of tr.effects) {\n if (effect.is(setActive))\n return effect.value;\n if (effect.is(moveToField) && value)\n return new ActiveSnippet(value.ranges, effect.value);\n }\n if (value && tr.docChanged)\n value = value.map(tr.changes);\n if (value && tr.selection && !value.selectionInsideField(tr.selection))\n value = null;\n return value;\n },\n provide: f => EditorView.decorations.from(f, val => val ? val.deco : Decoration.none)\n});\nfunction fieldSelection(ranges, field) {\n return EditorSelection.create(ranges.filter(r => r.field == field).map(r => EditorSelection.range(r.from, r.to)));\n}\n/**\nConvert a snippet template to a function that can\n[apply](https://codemirror.net/6/docs/ref/#autocomplete.Completion.apply) it. Snippets are written\nusing syntax like this:\n\n \"for (let ${index} = 0; ${index} < ${end}; ${index}++) {\\n\\t${}\\n}\"\n\nEach `${}` placeholder (you may also use `#{}`) indicates a field\nthat the user can fill in. Its name, if any, will be the default\ncontent for the field.\n\nWhen the snippet is activated by calling the returned function,\nthe code is inserted at the given position. Newlines in the\ntemplate are indented by the indentation of the start line, plus\none [indent unit](https://codemirror.net/6/docs/ref/#language.indentUnit) per tab character after\nthe newline.\n\nOn activation, (all instances of) the first field are selected.\nThe user can move between fields with Tab and Shift-Tab as long as\nthe fields are active. Moving to the last field or moving the\ncursor out of the current field deactivates the fields.\n\nThe order of fields defaults to textual order, but you can add\nnumbers to placeholders (`${1}` or `${1:defaultText}`) to provide\na custom order.\n\nTo include a literal `{` or `}` in your template, put a backslash\nin front of it. This will be removed and the brace will not be\ninterpreted as indicating a placeholder.\n*/\nfunction snippet(template) {\n let snippet = Snippet.parse(template);\n return (editor, completion, from, to) => {\n let { text, ranges } = snippet.instantiate(editor.state, from);\n let { main } = editor.state.selection;\n let spec = {\n changes: { from, to: to == main.from ? main.to : to, insert: Text.of(text) },\n scrollIntoView: true,\n annotations: completion ? [pickedCompletion.of(completion), Transaction.userEvent.of(\"input.complete\")] : undefined\n };\n if (ranges.length)\n spec.selection = fieldSelection(ranges, 0);\n if (ranges.some(r => r.field > 0)) {\n let active = new ActiveSnippet(ranges, 0);\n let effects = spec.effects = [setActive.of(active)];\n if (editor.state.field(snippetState, false) === undefined)\n effects.push(StateEffect.appendConfig.of([snippetState, addSnippetKeymap, snippetPointerHandler, baseTheme]));\n }\n editor.dispatch(editor.state.update(spec));\n };\n}\nfunction moveField(dir) {\n return ({ state, dispatch }) => {\n let active = state.field(snippetState, false);\n if (!active || dir < 0 && active.active == 0)\n return false;\n let next = active.active + dir, last = dir > 0 && !active.ranges.some(r => r.field == next + dir);\n dispatch(state.update({\n selection: fieldSelection(active.ranges, next),\n effects: setActive.of(last ? null : new ActiveSnippet(active.ranges, next)),\n scrollIntoView: true\n }));\n return true;\n };\n}\n/**\nA command that clears the active snippet, if any.\n*/\nconst clearSnippet = ({ state, dispatch }) => {\n let active = state.field(snippetState, false);\n if (!active)\n return false;\n dispatch(state.update({ effects: setActive.of(null) }));\n return true;\n};\n/**\nMove to the next snippet field, if available.\n*/\nconst nextSnippetField = /*@__PURE__*/moveField(1);\n/**\nMove to the previous snippet field, if available.\n*/\nconst prevSnippetField = /*@__PURE__*/moveField(-1);\n/**\nCheck if there is an active snippet with a next field for\n`nextSnippetField` to move to.\n*/\nfunction hasNextSnippetField(state) {\n let active = state.field(snippetState, false);\n return !!(active && active.ranges.some(r => r.field == active.active + 1));\n}\n/**\nReturns true if there is an active snippet and a previous field\nfor `prevSnippetField` to move to.\n*/\nfunction hasPrevSnippetField(state) {\n let active = state.field(snippetState, false);\n return !!(active && active.active > 0);\n}\nconst defaultSnippetKeymap = [\n { key: \"Tab\", run: nextSnippetField, shift: prevSnippetField },\n { key: \"Escape\", run: clearSnippet }\n];\n/**\nA facet that can be used to configure the key bindings used by\nsnippets. The default binds Tab to\n[`nextSnippetField`](https://codemirror.net/6/docs/ref/#autocomplete.nextSnippetField), Shift-Tab to\n[`prevSnippetField`](https://codemirror.net/6/docs/ref/#autocomplete.prevSnippetField), and Escape\nto [`clearSnippet`](https://codemirror.net/6/docs/ref/#autocomplete.clearSnippet).\n*/\nconst snippetKeymap = /*@__PURE__*/Facet.define({\n combine(maps) { return maps.length ? maps[0] : defaultSnippetKeymap; }\n});\nconst addSnippetKeymap = /*@__PURE__*/Prec.highest(/*@__PURE__*/keymap.compute([snippetKeymap], state => state.facet(snippetKeymap)));\n/**\nCreate a completion from a snippet. Returns an object with the\nproperties from `completion`, plus an `apply` function that\napplies the snippet.\n*/\nfunction snippetCompletion(template, completion) {\n return { ...completion, apply: snippet(template) };\n}\nconst snippetPointerHandler = /*@__PURE__*/EditorView.domEventHandlers({\n mousedown(event, view) {\n let active = view.state.field(snippetState, false), pos;\n if (!active || (pos = view.posAtCoords({ x: event.clientX, y: event.clientY })) == null)\n return false;\n let match = active.ranges.find(r => r.from <= pos && r.to >= pos);\n if (!match || match.field == active.active)\n return false;\n view.dispatch({\n selection: fieldSelection(active.ranges, match.field),\n effects: setActive.of(active.ranges.some(r => r.field > match.field)\n ? new ActiveSnippet(active.ranges, match.field) : null),\n scrollIntoView: true\n });\n return true;\n }\n});\n\nfunction wordRE(wordChars) {\n let escaped = wordChars.replace(/[\\]\\-\\\\]/g, \"\\\\$&\");\n try {\n return new RegExp(`[\\\\p{Alphabetic}\\\\p{Number}_${escaped}]+`, \"ug\");\n }\n catch (_a) {\n return new RegExp(`[\\w${escaped}]`, \"g\");\n }\n}\nfunction mapRE(re, f) {\n return new RegExp(f(re.source), re.unicode ? \"u\" : \"\");\n}\nconst wordCaches = /*@__PURE__*/Object.create(null);\nfunction wordCache(wordChars) {\n return wordCaches[wordChars] || (wordCaches[wordChars] = new WeakMap);\n}\nfunction storeWords(doc, wordRE, result, seen, ignoreAt) {\n for (let lines = doc.iterLines(), pos = 0; !lines.next().done;) {\n let { value } = lines, m;\n wordRE.lastIndex = 0;\n while (m = wordRE.exec(value)) {\n if (!seen[m[0]] && pos + m.index != ignoreAt) {\n result.push({ type: \"text\", label: m[0] });\n seen[m[0]] = true;\n if (result.length >= 2000 /* C.MaxList */)\n return;\n }\n }\n pos += value.length + 1;\n }\n}\nfunction collectWords(doc, cache, wordRE, to, ignoreAt) {\n let big = doc.length >= 1000 /* C.MinCacheLen */;\n let cached = big && cache.get(doc);\n if (cached)\n return cached;\n let result = [], seen = Object.create(null);\n if (doc.children) {\n let pos = 0;\n for (let ch of doc.children) {\n if (ch.length >= 1000 /* C.MinCacheLen */) {\n for (let c of collectWords(ch, cache, wordRE, to - pos, ignoreAt - pos)) {\n if (!seen[c.label]) {\n seen[c.label] = true;\n result.push(c);\n }\n }\n }\n else {\n storeWords(ch, wordRE, result, seen, ignoreAt - pos);\n }\n pos += ch.length + 1;\n }\n }\n else {\n storeWords(doc, wordRE, result, seen, ignoreAt);\n }\n if (big && result.length < 2000 /* C.MaxList */)\n cache.set(doc, result);\n return result;\n}\n/**\nA completion source that will scan the document for words (using a\n[character categorizer](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer)), and\nreturn those as completions.\n*/\nconst completeAnyWord = context => {\n var _a;\n let wordChars = (_a = context.state.languageDataAt(\"wordChars\", context.pos)[0]) !== null && _a !== void 0 ? _a : \"\";\n let re = wordRE(wordChars);\n let token = context.matchBefore(mapRE(re, s => s + \"$\"));\n if (!token && !context.explicit)\n return null;\n let from = token ? token.from : context.pos;\n let options = collectWords(context.state.doc, wordCache(wordChars), re, 50000 /* C.Range */, from);\n return { from, options, validFor: mapRE(re, s => \"^\" + s) };\n};\n\nconst defaults = {\n brackets: [\"(\", \"[\", \"{\", \"'\", '\"'],\n before: \")]}:;>\",\n stringPrefixes: []\n};\nconst closeBracketEffect = /*@__PURE__*/StateEffect.define({\n map(value, mapping) {\n let mapped = mapping.mapPos(value, -1, MapMode.TrackAfter);\n return mapped == null ? undefined : mapped;\n }\n});\nconst closedBracket = /*@__PURE__*/new class extends RangeValue {\n};\nclosedBracket.startSide = 1;\nclosedBracket.endSide = -1;\nconst bracketState = /*@__PURE__*/StateField.define({\n create() { return RangeSet.empty; },\n update(value, tr) {\n value = value.map(tr.changes);\n if (tr.selection) {\n let line = tr.state.doc.lineAt(tr.selection.main.head);\n value = value.update({ filter: from => from >= line.from && from <= line.to });\n }\n for (let effect of tr.effects)\n if (effect.is(closeBracketEffect))\n value = value.update({ add: [closedBracket.range(effect.value, effect.value + 1)] });\n return value;\n }\n});\n/**\nExtension to enable bracket-closing behavior. When a closeable\nbracket is typed, its closing bracket is immediately inserted\nafter the cursor. When closing a bracket directly in front of a\nclosing bracket inserted by the extension, the cursor moves over\nthat bracket.\n*/\nfunction closeBrackets() {\n return [inputHandler, bracketState];\n}\nconst definedClosing = \"()[]{}<>«»»«[]{}\";\nfunction closing(ch) {\n for (let i = 0; i < definedClosing.length; i += 2)\n if (definedClosing.charCodeAt(i) == ch)\n return definedClosing.charAt(i + 1);\n return fromCodePoint(ch < 128 ? ch : ch + 1);\n}\nfunction config(state, pos) {\n return state.languageDataAt(\"closeBrackets\", pos)[0] || defaults;\n}\nconst android = typeof navigator == \"object\" && /*@__PURE__*//Android\\b/.test(navigator.userAgent);\nconst inputHandler = /*@__PURE__*/EditorView.inputHandler.of((view, from, to, insert) => {\n if ((android ? view.composing : view.compositionStarted) || view.state.readOnly)\n return false;\n let sel = view.state.selection.main;\n if (insert.length > 2 || insert.length == 2 && codePointSize(codePointAt(insert, 0)) == 1 ||\n from != sel.from || to != sel.to)\n return false;\n let tr = insertBracket(view.state, insert);\n if (!tr)\n return false;\n view.dispatch(tr);\n return true;\n});\n/**\nCommand that implements deleting a pair of matching brackets when\nthe cursor is between them.\n*/\nconst deleteBracketPair = ({ state, dispatch }) => {\n if (state.readOnly)\n return false;\n let conf = config(state, state.selection.main.head);\n let tokens = conf.brackets || defaults.brackets;\n let dont = null, changes = state.changeByRange(range => {\n if (range.empty) {\n let before = prevChar(state.doc, range.head);\n for (let token of tokens) {\n if (token == before && nextChar(state.doc, range.head) == closing(codePointAt(token, 0)))\n return { changes: { from: range.head - token.length, to: range.head + token.length },\n range: EditorSelection.cursor(range.head - token.length) };\n }\n }\n return { range: dont = range };\n });\n if (!dont)\n dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"delete.backward\" }));\n return !dont;\n};\n/**\nClose-brackets related key bindings. Binds Backspace to\n[`deleteBracketPair`](https://codemirror.net/6/docs/ref/#autocomplete.deleteBracketPair).\n*/\nconst closeBracketsKeymap = [\n { key: \"Backspace\", run: deleteBracketPair }\n];\n/**\nImplements the extension's behavior on text insertion. If the\ngiven string counts as a bracket in the language around the\nselection, and replacing the selection with it requires custom\nbehavior (inserting a closing version or skipping past a\npreviously-closed bracket), this function returns a transaction\nrepresenting that custom behavior. (You only need this if you want\nto programmatically insert brackets—the\n[`closeBrackets`](https://codemirror.net/6/docs/ref/#autocomplete.closeBrackets) extension will\ntake care of running this for user input.)\n*/\nfunction insertBracket(state, bracket) {\n let conf = config(state, state.selection.main.head);\n let tokens = conf.brackets || defaults.brackets;\n for (let tok of tokens) {\n let closed = closing(codePointAt(tok, 0));\n if (bracket == tok)\n return closed == tok ? handleSame(state, tok, tokens.indexOf(tok + tok + tok) > -1, conf)\n : handleOpen(state, tok, closed, conf.before || defaults.before);\n if (bracket == closed && closedBracketAt(state, state.selection.main.from))\n return handleClose(state, tok, closed);\n }\n return null;\n}\nfunction closedBracketAt(state, pos) {\n let found = false;\n state.field(bracketState).between(0, state.doc.length, from => {\n if (from == pos)\n found = true;\n });\n return found;\n}\nfunction nextChar(doc, pos) {\n let next = doc.sliceString(pos, pos + 2);\n return next.slice(0, codePointSize(codePointAt(next, 0)));\n}\nfunction prevChar(doc, pos) {\n let prev = doc.sliceString(pos - 2, pos);\n return codePointSize(codePointAt(prev, 0)) == prev.length ? prev : prev.slice(1);\n}\nfunction handleOpen(state, open, close, closeBefore) {\n let dont = null, changes = state.changeByRange(range => {\n if (!range.empty)\n return { changes: [{ insert: open, from: range.from }, { insert: close, from: range.to }],\n effects: closeBracketEffect.of(range.to + open.length),\n range: EditorSelection.range(range.anchor + open.length, range.head + open.length) };\n let next = nextChar(state.doc, range.head);\n if (!next || /\\s/.test(next) || closeBefore.indexOf(next) > -1)\n return { changes: { insert: open + close, from: range.head },\n effects: closeBracketEffect.of(range.head + open.length),\n range: EditorSelection.cursor(range.head + open.length) };\n return { range: dont = range };\n });\n return dont ? null : state.update(changes, {\n scrollIntoView: true,\n userEvent: \"input.type\"\n });\n}\nfunction handleClose(state, _open, close) {\n let dont = null, changes = state.changeByRange(range => {\n if (range.empty && nextChar(state.doc, range.head) == close)\n return { changes: { from: range.head, to: range.head + close.length, insert: close },\n range: EditorSelection.cursor(range.head + close.length) };\n return dont = { range };\n });\n return dont ? null : state.update(changes, {\n scrollIntoView: true,\n userEvent: \"input.type\"\n });\n}\n// Handles cases where the open and close token are the same, and\n// possibly triple quotes (as in `\"\"\"abc\"\"\"`-style quoting).\nfunction handleSame(state, token, allowTriple, config) {\n let stringPrefixes = config.stringPrefixes || defaults.stringPrefixes;\n let dont = null, changes = state.changeByRange(range => {\n if (!range.empty)\n return { changes: [{ insert: token, from: range.from }, { insert: token, from: range.to }],\n effects: closeBracketEffect.of(range.to + token.length),\n range: EditorSelection.range(range.anchor + token.length, range.head + token.length) };\n let pos = range.head, next = nextChar(state.doc, pos), start;\n if (next == token) {\n if (nodeStart(state, pos)) {\n return { changes: { insert: token + token, from: pos },\n effects: closeBracketEffect.of(pos + token.length),\n range: EditorSelection.cursor(pos + token.length) };\n }\n else if (closedBracketAt(state, pos)) {\n let isTriple = allowTriple && state.sliceDoc(pos, pos + token.length * 3) == token + token + token;\n let content = isTriple ? token + token + token : token;\n return { changes: { from: pos, to: pos + content.length, insert: content },\n range: EditorSelection.cursor(pos + content.length) };\n }\n }\n else if (allowTriple && state.sliceDoc(pos - 2 * token.length, pos) == token + token &&\n (start = canStartStringAt(state, pos - 2 * token.length, stringPrefixes)) > -1 &&\n nodeStart(state, start)) {\n return { changes: { insert: token + token + token + token, from: pos },\n effects: closeBracketEffect.of(pos + token.length),\n range: EditorSelection.cursor(pos + token.length) };\n }\n else if (state.charCategorizer(pos)(next) != CharCategory.Word) {\n if (canStartStringAt(state, pos, stringPrefixes) > -1 && !probablyInString(state, pos, token, stringPrefixes))\n return { changes: { insert: token + token, from: pos },\n effects: closeBracketEffect.of(pos + token.length),\n range: EditorSelection.cursor(pos + token.length) };\n }\n return { range: dont = range };\n });\n return dont ? null : state.update(changes, {\n scrollIntoView: true,\n userEvent: \"input.type\"\n });\n}\nfunction nodeStart(state, pos) {\n let tree = syntaxTree(state).resolveInner(pos + 1);\n return tree.parent && tree.from == pos;\n}\nfunction probablyInString(state, pos, quoteToken, prefixes) {\n let node = syntaxTree(state).resolveInner(pos, -1);\n let maxPrefix = prefixes.reduce((m, p) => Math.max(m, p.length), 0);\n for (let i = 0; i < 5; i++) {\n let start = state.sliceDoc(node.from, Math.min(node.to, node.from + quoteToken.length + maxPrefix));\n let quotePos = start.indexOf(quoteToken);\n if (!quotePos || quotePos > -1 && prefixes.indexOf(start.slice(0, quotePos)) > -1) {\n let first = node.firstChild;\n while (first && first.from == node.from && first.to - first.from > quoteToken.length + quotePos) {\n if (state.sliceDoc(first.to - quoteToken.length, first.to) == quoteToken)\n return false;\n first = first.firstChild;\n }\n return true;\n }\n let parent = node.to == pos && node.parent;\n if (!parent)\n break;\n node = parent;\n }\n return false;\n}\nfunction canStartStringAt(state, pos, prefixes) {\n let charCat = state.charCategorizer(pos);\n if (charCat(state.sliceDoc(pos - 1, pos)) != CharCategory.Word)\n return pos;\n for (let prefix of prefixes) {\n let start = pos - prefix.length;\n if (state.sliceDoc(start, pos) == prefix && charCat(state.sliceDoc(start - 1, start)) != CharCategory.Word)\n return start;\n }\n return -1;\n}\n\n/**\nReturns an extension that enables autocompletion.\n*/\nfunction autocompletion(config = {}) {\n return [\n commitCharacters,\n completionState,\n completionConfig.of(config),\n completionPlugin,\n completionKeymapExt,\n baseTheme\n ];\n}\n/**\nBasic keybindings for autocompletion.\n\n - Ctrl-Space (and Alt-\\` or Alt-i on macOS): [`startCompletion`](https://codemirror.net/6/docs/ref/#autocomplete.startCompletion)\n - Escape: [`closeCompletion`](https://codemirror.net/6/docs/ref/#autocomplete.closeCompletion)\n - ArrowDown: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(true)`\n - ArrowUp: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(false)`\n - PageDown: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(true, \"page\")`\n - PageUp: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(false, \"page\")`\n - Enter: [`acceptCompletion`](https://codemirror.net/6/docs/ref/#autocomplete.acceptCompletion)\n*/\nconst completionKeymap = [\n { key: \"Ctrl-Space\", run: startCompletion },\n { mac: \"Alt-`\", run: startCompletion },\n { mac: \"Alt-i\", run: startCompletion },\n { key: \"Escape\", run: closeCompletion },\n { key: \"ArrowDown\", run: /*@__PURE__*/moveCompletionSelection(true) },\n { key: \"ArrowUp\", run: /*@__PURE__*/moveCompletionSelection(false) },\n { key: \"PageDown\", run: /*@__PURE__*/moveCompletionSelection(true, \"page\") },\n { key: \"PageUp\", run: /*@__PURE__*/moveCompletionSelection(false, \"page\") },\n { key: \"Enter\", run: acceptCompletion }\n];\nconst completionKeymapExt = /*@__PURE__*/Prec.highest(/*@__PURE__*/keymap.computeN([completionConfig], state => state.facet(completionConfig).defaultKeymap ? [completionKeymap] : []));\n/**\nGet the current completion status. When completions are available,\nthis will return `\"active\"`. When completions are pending (in the\nprocess of being queried), this returns `\"pending\"`. Otherwise, it\nreturns `null`.\n*/\nfunction completionStatus(state) {\n let cState = state.field(completionState, false);\n return cState && cState.active.some(a => a.isPending) ? \"pending\"\n : cState && cState.active.some(a => a.state != 0 /* State.Inactive */) ? \"active\" : null;\n}\nconst completionArrayCache = /*@__PURE__*/new WeakMap;\n/**\nReturns the available completions as an array.\n*/\nfunction currentCompletions(state) {\n var _a;\n let open = (_a = state.field(completionState, false)) === null || _a === void 0 ? void 0 : _a.open;\n if (!open || open.disabled)\n return [];\n let completions = completionArrayCache.get(open.options);\n if (!completions)\n completionArrayCache.set(open.options, completions = open.options.map(o => o.completion));\n return completions;\n}\n/**\nReturn the currently selected completion, if any.\n*/\nfunction selectedCompletion(state) {\n var _a;\n let open = (_a = state.field(completionState, false)) === null || _a === void 0 ? void 0 : _a.open;\n return open && !open.disabled && open.selected >= 0 ? open.options[open.selected].completion : null;\n}\n/**\nReturns the currently selected position in the active completion\nlist, or null if no completions are active.\n*/\nfunction selectedCompletionIndex(state) {\n var _a;\n let open = (_a = state.field(completionState, false)) === null || _a === void 0 ? void 0 : _a.open;\n return open && !open.disabled && open.selected >= 0 ? open.selected : null;\n}\n/**\nCreate an effect that can be attached to a transaction to change\nthe currently selected completion.\n*/\nfunction setSelectedCompletion(index) {\n return setSelectedEffect.of(index);\n}\n\nexport { CompletionContext, acceptCompletion, autocompletion, clearSnippet, closeBrackets, closeBracketsKeymap, closeCompletion, completeAnyWord, completeFromList, completionKeymap, completionStatus, currentCompletions, deleteBracketPair, hasNextSnippetField, hasPrevSnippetField, ifIn, ifNotIn, insertBracket, insertCompletionText, moveCompletionSelection, nextSnippetField, pickedCompletion, prevSnippetField, selectedCompletion, selectedCompletionIndex, setSelectedCompletion, snippet, snippetCompletion, snippetKeymap, startCompletion };\n","import { Decoration, showPanel, EditorView, ViewPlugin, gutter, showTooltip, hoverTooltip, getPanel, logException, WidgetType, GutterMarker } from '@codemirror/view';\nimport { StateEffect, StateField, Facet, combineConfig, RangeSet, RangeSetBuilder } from '@codemirror/state';\nimport elt from 'crelt';\n\nclass SelectedDiagnostic {\n constructor(from, to, diagnostic) {\n this.from = from;\n this.to = to;\n this.diagnostic = diagnostic;\n }\n}\nclass LintState {\n constructor(diagnostics, panel, selected) {\n this.diagnostics = diagnostics;\n this.panel = panel;\n this.selected = selected;\n }\n static init(diagnostics, panel, state) {\n // Filter the list of diagnostics for which to create markers\n let diagnosticFilter = state.facet(lintConfig).markerFilter;\n if (diagnosticFilter)\n diagnostics = diagnosticFilter(diagnostics, state);\n let sorted = diagnostics.slice().sort((a, b) => a.from - b.from || a.to - b.to);\n let deco = new RangeSetBuilder(), active = [], pos = 0;\n let scan = state.doc.iter(), scanPos = 0, docLen = state.doc.length;\n for (let i = 0;;) {\n let next = i == sorted.length ? null : sorted[i];\n if (!next && !active.length)\n break;\n let from, to;\n if (active.length) {\n from = pos;\n to = active.reduce((p, d) => Math.min(p, d.to), next && next.from > from ? next.from : 1e8);\n }\n else {\n from = next.from;\n if (from > docLen)\n break;\n to = next.to;\n active.push(next);\n i++;\n }\n while (i < sorted.length) {\n let next = sorted[i];\n if (next.from == from && (next.to > next.from || next.to == from)) {\n active.push(next);\n i++;\n to = Math.min(next.to, to);\n }\n else {\n to = Math.min(next.from, to);\n break;\n }\n }\n to = Math.min(to, docLen);\n let widget = false;\n if (active.some(d => d.from == from && (d.to == to || to == docLen))) {\n widget = from == to;\n if (!widget && to - from < 10) {\n let behind = from - (scanPos + scan.value.length);\n if (behind > 0) {\n scan.next(behind);\n scanPos = from;\n }\n for (let check = from;;) {\n if (check >= to) {\n widget = true;\n break;\n }\n if (!scan.lineBreak && scanPos + scan.value.length > check)\n break;\n check = scanPos + scan.value.length;\n scanPos += scan.value.length;\n scan.next();\n }\n }\n }\n let sev = maxSeverity(active);\n if (widget) {\n deco.add(from, from, Decoration.widget({\n widget: new DiagnosticWidget(sev),\n diagnostics: active.slice()\n }));\n }\n else {\n let markClass = active.reduce((c, d) => d.markClass ? c + \" \" + d.markClass : c, \"\");\n deco.add(from, to, Decoration.mark({\n class: \"cm-lintRange cm-lintRange-\" + sev + markClass,\n diagnostics: active.slice(),\n inclusiveEnd: active.some(a => a.to > to)\n }));\n }\n pos = to;\n if (pos == docLen)\n break;\n for (let i = 0; i < active.length; i++)\n if (active[i].to <= pos)\n active.splice(i--, 1);\n }\n let set = deco.finish();\n return new LintState(set, panel, findDiagnostic(set));\n }\n}\nfunction findDiagnostic(diagnostics, diagnostic = null, after = 0) {\n let found = null;\n diagnostics.between(after, 1e9, (from, to, { spec }) => {\n if (diagnostic && spec.diagnostics.indexOf(diagnostic) < 0)\n return;\n if (!found)\n found = new SelectedDiagnostic(from, to, diagnostic || spec.diagnostics[0]);\n else if (spec.diagnostics.indexOf(found.diagnostic) < 0)\n return false;\n else\n found = new SelectedDiagnostic(found.from, to, found.diagnostic);\n });\n return found;\n}\nfunction hideTooltip(tr, tooltip) {\n let from = tooltip.pos, to = tooltip.end || from;\n let result = tr.state.facet(lintConfig).hideOn(tr, from, to);\n if (result != null)\n return result;\n let line = tr.startState.doc.lineAt(tooltip.pos);\n return !!(tr.effects.some(e => e.is(setDiagnosticsEffect)) || tr.changes.touchesRange(line.from, Math.max(line.to, to)));\n}\nfunction maybeEnableLint(state, effects) {\n return state.field(lintState, false) ? effects : effects.concat(StateEffect.appendConfig.of(lintExtensions));\n}\n/**\nReturns a transaction spec which updates the current set of\ndiagnostics, and enables the lint extension if if wasn't already\nactive.\n*/\nfunction setDiagnostics(state, diagnostics) {\n return {\n effects: maybeEnableLint(state, [setDiagnosticsEffect.of(diagnostics)])\n };\n}\n/**\nThe state effect that updates the set of active diagnostics. Can\nbe useful when writing an extension that needs to track these.\n*/\nconst setDiagnosticsEffect = /*@__PURE__*/StateEffect.define();\nconst togglePanel = /*@__PURE__*/StateEffect.define();\nconst movePanelSelection = /*@__PURE__*/StateEffect.define();\nconst lintState = /*@__PURE__*/StateField.define({\n create() {\n return new LintState(Decoration.none, null, null);\n },\n update(value, tr) {\n if (tr.docChanged && value.diagnostics.size) {\n let mapped = value.diagnostics.map(tr.changes), selected = null, panel = value.panel;\n if (value.selected) {\n let selPos = tr.changes.mapPos(value.selected.from, 1);\n selected = findDiagnostic(mapped, value.selected.diagnostic, selPos) || findDiagnostic(mapped, null, selPos);\n }\n if (!mapped.size && panel && tr.state.facet(lintConfig).autoPanel)\n panel = null;\n value = new LintState(mapped, panel, selected);\n }\n for (let effect of tr.effects) {\n if (effect.is(setDiagnosticsEffect)) {\n let panel = !tr.state.facet(lintConfig).autoPanel ? value.panel : effect.value.length ? LintPanel.open : null;\n value = LintState.init(effect.value, panel, tr.state);\n }\n else if (effect.is(togglePanel)) {\n value = new LintState(value.diagnostics, effect.value ? LintPanel.open : null, value.selected);\n }\n else if (effect.is(movePanelSelection)) {\n value = new LintState(value.diagnostics, value.panel, effect.value);\n }\n }\n return value;\n },\n provide: f => [showPanel.from(f, val => val.panel),\n EditorView.decorations.from(f, s => s.diagnostics)]\n});\n/**\nReturns the number of active lint diagnostics in the given state.\n*/\nfunction diagnosticCount(state) {\n let lint = state.field(lintState, false);\n return lint ? lint.diagnostics.size : 0;\n}\nconst activeMark = /*@__PURE__*/Decoration.mark({ class: \"cm-lintRange cm-lintRange-active\" });\nfunction lintTooltip(view, pos, side) {\n let { diagnostics } = view.state.field(lintState);\n let found, start = -1, end = -1;\n diagnostics.between(pos - (side < 0 ? 1 : 0), pos + (side > 0 ? 1 : 0), (from, to, { spec }) => {\n if (pos >= from && pos <= to &&\n (from == to || ((pos > from || side > 0) && (pos < to || side < 0)))) {\n found = spec.diagnostics;\n start = from;\n end = to;\n return false;\n }\n });\n let diagnosticFilter = view.state.facet(lintConfig).tooltipFilter;\n if (found && diagnosticFilter)\n found = diagnosticFilter(found, view.state);\n if (!found)\n return null;\n return {\n pos: start,\n end: end,\n above: view.state.doc.lineAt(start).to < end,\n create() {\n return { dom: diagnosticsTooltip(view, found) };\n }\n };\n}\nfunction diagnosticsTooltip(view, diagnostics) {\n return elt(\"ul\", { class: \"cm-tooltip-lint\" }, diagnostics.map(d => renderDiagnostic(view, d, false)));\n}\n/**\nCommand to open and focus the lint panel.\n*/\nconst openLintPanel = (view) => {\n let field = view.state.field(lintState, false);\n if (!field || !field.panel)\n view.dispatch({ effects: maybeEnableLint(view.state, [togglePanel.of(true)]) });\n let panel = getPanel(view, LintPanel.open);\n if (panel)\n panel.dom.querySelector(\".cm-panel-lint ul\").focus();\n return true;\n};\n/**\nCommand to close the lint panel, when open.\n*/\nconst closeLintPanel = (view) => {\n let field = view.state.field(lintState, false);\n if (!field || !field.panel)\n return false;\n view.dispatch({ effects: togglePanel.of(false) });\n return true;\n};\n/**\nMove the selection to the next diagnostic.\n*/\nconst nextDiagnostic = (view) => {\n let field = view.state.field(lintState, false);\n if (!field)\n return false;\n let sel = view.state.selection.main, next = findDiagnostic(field.diagnostics, null, sel.to + 1);\n if (!next) {\n next = findDiagnostic(field.diagnostics, null, 0);\n if (!next || next.from == sel.from && next.to == sel.to)\n return false;\n }\n view.dispatch({ selection: { anchor: next.from, head: next.to }, scrollIntoView: true });\n return true;\n};\n/**\nMove the selection to the previous diagnostic.\n*/\nconst previousDiagnostic = (view) => {\n let { state } = view, field = state.field(lintState, false);\n if (!field)\n return false;\n let sel = state.selection.main;\n let prevFrom, prevTo, lastFrom, lastTo;\n field.diagnostics.between(0, state.doc.length, (from, to) => {\n if (to < sel.to && (prevFrom == null || prevFrom < from)) {\n prevFrom = from;\n prevTo = to;\n }\n if (lastFrom == null || from > lastFrom) {\n lastFrom = from;\n lastTo = to;\n }\n });\n if (lastFrom == null || prevFrom == null && lastFrom == sel.from)\n return false;\n view.dispatch({ selection: { anchor: prevFrom !== null && prevFrom !== void 0 ? prevFrom : lastFrom, head: prevTo !== null && prevTo !== void 0 ? prevTo : lastTo }, scrollIntoView: true });\n return true;\n};\n/**\nA set of default key bindings for the lint functionality.\n\n- Ctrl-Shift-m (Cmd-Shift-m on macOS): [`openLintPanel`](https://codemirror.net/6/docs/ref/#lint.openLintPanel)\n- F8: [`nextDiagnostic`](https://codemirror.net/6/docs/ref/#lint.nextDiagnostic)\n*/\nconst lintKeymap = [\n { key: \"Mod-Shift-m\", run: openLintPanel, preventDefault: true },\n { key: \"F8\", run: nextDiagnostic }\n];\nconst lintPlugin = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.view = view;\n this.timeout = -1;\n this.set = true;\n let { delay } = view.state.facet(lintConfig);\n this.lintTime = Date.now() + delay;\n this.run = this.run.bind(this);\n this.timeout = setTimeout(this.run, delay);\n }\n run() {\n clearTimeout(this.timeout);\n let now = Date.now();\n if (now < this.lintTime - 10) {\n this.timeout = setTimeout(this.run, this.lintTime - now);\n }\n else {\n this.set = false;\n let { state } = this.view, { sources } = state.facet(lintConfig);\n if (sources.length)\n batchResults(sources.map(s => Promise.resolve(s(this.view))), annotations => {\n if (this.view.state.doc == state.doc)\n this.view.dispatch(setDiagnostics(this.view.state, annotations.reduce((a, b) => a.concat(b))));\n }, error => { logException(this.view.state, error); });\n }\n }\n update(update) {\n let config = update.state.facet(lintConfig);\n if (update.docChanged || config != update.startState.facet(lintConfig) ||\n config.needsRefresh && config.needsRefresh(update)) {\n this.lintTime = Date.now() + config.delay;\n if (!this.set) {\n this.set = true;\n this.timeout = setTimeout(this.run, config.delay);\n }\n }\n }\n force() {\n if (this.set) {\n this.lintTime = Date.now();\n this.run();\n }\n }\n destroy() {\n clearTimeout(this.timeout);\n }\n});\nfunction batchResults(promises, sink, error) {\n let collected = [], timeout = -1;\n for (let p of promises)\n p.then(value => {\n collected.push(value);\n clearTimeout(timeout);\n if (collected.length == promises.length)\n sink(collected);\n else\n timeout = setTimeout(() => sink(collected), 200);\n }, error);\n}\nconst lintConfig = /*@__PURE__*/Facet.define({\n combine(input) {\n return {\n sources: input.map(i => i.source).filter(x => x != null),\n ...combineConfig(input.map(i => i.config), {\n delay: 750,\n markerFilter: null,\n tooltipFilter: null,\n needsRefresh: null,\n hideOn: () => null,\n }, {\n delay: Math.max,\n markerFilter: combineFilter,\n tooltipFilter: combineFilter,\n needsRefresh: (a, b) => !a ? b : !b ? a : u => a(u) || b(u),\n hideOn: (a, b) => !a ? b : !b ? a : (t, x, y) => a(t, x, y) || b(t, x, y),\n autoPanel: (a, b) => a || b\n })\n };\n }\n});\nfunction combineFilter(a, b) {\n return !a ? b : !b ? a : (d, s) => b(a(d, s), s);\n}\n/**\nGiven a diagnostic source, this function returns an extension that\nenables linting with that source. It will be called whenever the\neditor is idle (after its content changed).\n\nNote that settings given here will apply to all linters active in\nthe editor. If `null` is given as source, this only configures the\nlint extension.\n*/\nfunction linter(source, config = {}) {\n return [\n lintConfig.of({ source, config }),\n lintPlugin,\n lintExtensions\n ];\n}\n/**\nForces any linters [configured](https://codemirror.net/6/docs/ref/#lint.linter) to run when the\neditor is idle to run right away.\n*/\nfunction forceLinting(view) {\n let plugin = view.plugin(lintPlugin);\n if (plugin)\n plugin.force();\n}\nfunction assignKeys(actions) {\n let assigned = [];\n if (actions)\n actions: for (let { name } of actions) {\n for (let i = 0; i < name.length; i++) {\n let ch = name[i];\n if (/[a-zA-Z]/.test(ch) && !assigned.some(c => c.toLowerCase() == ch.toLowerCase())) {\n assigned.push(ch);\n continue actions;\n }\n }\n assigned.push(\"\");\n }\n return assigned;\n}\nfunction renderDiagnostic(view, diagnostic, inPanel) {\n var _a;\n let keys = inPanel ? assignKeys(diagnostic.actions) : [];\n return elt(\"li\", { class: \"cm-diagnostic cm-diagnostic-\" + diagnostic.severity }, elt(\"span\", { class: \"cm-diagnosticText\" }, diagnostic.renderMessage ? diagnostic.renderMessage(view) : diagnostic.message), (_a = diagnostic.actions) === null || _a === void 0 ? void 0 : _a.map((action, i) => {\n let fired = false, click = (e) => {\n e.preventDefault();\n if (fired)\n return;\n fired = true;\n let found = findDiagnostic(view.state.field(lintState).diagnostics, diagnostic);\n if (found)\n action.apply(view, found.from, found.to);\n };\n let { name } = action, keyIndex = keys[i] ? name.indexOf(keys[i]) : -1;\n let nameElt = keyIndex < 0 ? name : [name.slice(0, keyIndex),\n elt(\"u\", name.slice(keyIndex, keyIndex + 1)),\n name.slice(keyIndex + 1)];\n let markClass = action.markClass ? \" \" + action.markClass : \"\";\n return elt(\"button\", {\n type: \"button\",\n class: \"cm-diagnosticAction\" + markClass,\n onclick: click,\n onmousedown: click,\n \"aria-label\": ` Action: ${name}${keyIndex < 0 ? \"\" : ` (access key \"${keys[i]})\"`}.`\n }, nameElt);\n }), diagnostic.source && elt(\"div\", { class: \"cm-diagnosticSource\" }, diagnostic.source));\n}\nclass DiagnosticWidget extends WidgetType {\n constructor(sev) {\n super();\n this.sev = sev;\n }\n eq(other) { return other.sev == this.sev; }\n toDOM() {\n return elt(\"span\", { class: \"cm-lintPoint cm-lintPoint-\" + this.sev });\n }\n}\nclass PanelItem {\n constructor(view, diagnostic) {\n this.diagnostic = diagnostic;\n this.id = \"item_\" + Math.floor(Math.random() * 0xffffffff).toString(16);\n this.dom = renderDiagnostic(view, diagnostic, true);\n this.dom.id = this.id;\n this.dom.setAttribute(\"role\", \"option\");\n }\n}\nclass LintPanel {\n constructor(view) {\n this.view = view;\n this.items = [];\n let onkeydown = (event) => {\n if (event.ctrlKey || event.altKey || event.metaKey)\n return;\n if (event.keyCode == 27) { // Escape\n closeLintPanel(this.view);\n this.view.focus();\n }\n else if (event.keyCode == 38 || event.keyCode == 33) { // ArrowUp, PageUp\n this.moveSelection((this.selectedIndex - 1 + this.items.length) % this.items.length);\n }\n else if (event.keyCode == 40 || event.keyCode == 34) { // ArrowDown, PageDown\n this.moveSelection((this.selectedIndex + 1) % this.items.length);\n }\n else if (event.keyCode == 36) { // Home\n this.moveSelection(0);\n }\n else if (event.keyCode == 35) { // End\n this.moveSelection(this.items.length - 1);\n }\n else if (event.keyCode == 13) { // Enter\n this.view.focus();\n }\n else if (event.keyCode >= 65 && event.keyCode <= 90 && this.selectedIndex >= 0) { // A-Z\n let { diagnostic } = this.items[this.selectedIndex], keys = assignKeys(diagnostic.actions);\n for (let i = 0; i < keys.length; i++)\n if (keys[i].toUpperCase().charCodeAt(0) == event.keyCode) {\n let found = findDiagnostic(this.view.state.field(lintState).diagnostics, diagnostic);\n if (found)\n diagnostic.actions[i].apply(view, found.from, found.to);\n }\n }\n else {\n return;\n }\n event.preventDefault();\n };\n let onclick = (event) => {\n for (let i = 0; i < this.items.length; i++) {\n if (this.items[i].dom.contains(event.target))\n this.moveSelection(i);\n }\n };\n this.list = elt(\"ul\", {\n tabIndex: 0,\n role: \"listbox\",\n \"aria-label\": this.view.state.phrase(\"Diagnostics\"),\n onkeydown,\n onclick\n });\n this.dom = elt(\"div\", { class: \"cm-panel-lint\" }, this.list, elt(\"button\", {\n type: \"button\",\n name: \"close\",\n \"aria-label\": this.view.state.phrase(\"close\"),\n onclick: () => closeLintPanel(this.view)\n }, \"×\"));\n this.update();\n }\n get selectedIndex() {\n let selected = this.view.state.field(lintState).selected;\n if (!selected)\n return -1;\n for (let i = 0; i < this.items.length; i++)\n if (this.items[i].diagnostic == selected.diagnostic)\n return i;\n return -1;\n }\n update() {\n let { diagnostics, selected } = this.view.state.field(lintState);\n let i = 0, needsSync = false, newSelectedItem = null;\n let seen = new Set();\n diagnostics.between(0, this.view.state.doc.length, (_start, _end, { spec }) => {\n for (let diagnostic of spec.diagnostics) {\n if (seen.has(diagnostic))\n continue;\n seen.add(diagnostic);\n let found = -1, item;\n for (let j = i; j < this.items.length; j++)\n if (this.items[j].diagnostic == diagnostic) {\n found = j;\n break;\n }\n if (found < 0) {\n item = new PanelItem(this.view, diagnostic);\n this.items.splice(i, 0, item);\n needsSync = true;\n }\n else {\n item = this.items[found];\n if (found > i) {\n this.items.splice(i, found - i);\n needsSync = true;\n }\n }\n if (selected && item.diagnostic == selected.diagnostic) {\n if (!item.dom.hasAttribute(\"aria-selected\")) {\n item.dom.setAttribute(\"aria-selected\", \"true\");\n newSelectedItem = item;\n }\n }\n else if (item.dom.hasAttribute(\"aria-selected\")) {\n item.dom.removeAttribute(\"aria-selected\");\n }\n i++;\n }\n });\n while (i < this.items.length && !(this.items.length == 1 && this.items[0].diagnostic.from < 0)) {\n needsSync = true;\n this.items.pop();\n }\n if (this.items.length == 0) {\n this.items.push(new PanelItem(this.view, {\n from: -1, to: -1,\n severity: \"info\",\n message: this.view.state.phrase(\"No diagnostics\")\n }));\n needsSync = true;\n }\n if (newSelectedItem) {\n this.list.setAttribute(\"aria-activedescendant\", newSelectedItem.id);\n this.view.requestMeasure({\n key: this,\n read: () => ({ sel: newSelectedItem.dom.getBoundingClientRect(), panel: this.list.getBoundingClientRect() }),\n write: ({ sel, panel }) => {\n let scaleY = panel.height / this.list.offsetHeight;\n if (sel.top < panel.top)\n this.list.scrollTop -= (panel.top - sel.top) / scaleY;\n else if (sel.bottom > panel.bottom)\n this.list.scrollTop += (sel.bottom - panel.bottom) / scaleY;\n }\n });\n }\n else if (this.selectedIndex < 0) {\n this.list.removeAttribute(\"aria-activedescendant\");\n }\n if (needsSync)\n this.sync();\n }\n sync() {\n let domPos = this.list.firstChild;\n function rm() {\n let prev = domPos;\n domPos = prev.nextSibling;\n prev.remove();\n }\n for (let item of this.items) {\n if (item.dom.parentNode == this.list) {\n while (domPos != item.dom)\n rm();\n domPos = item.dom.nextSibling;\n }\n else {\n this.list.insertBefore(item.dom, domPos);\n }\n }\n while (domPos)\n rm();\n }\n moveSelection(selectedIndex) {\n if (this.selectedIndex < 0)\n return;\n let field = this.view.state.field(lintState);\n let selection = findDiagnostic(field.diagnostics, this.items[selectedIndex].diagnostic);\n if (!selection)\n return;\n this.view.dispatch({\n selection: { anchor: selection.from, head: selection.to },\n scrollIntoView: true,\n effects: movePanelSelection.of(selection)\n });\n }\n static open(view) { return new LintPanel(view); }\n}\nfunction svg(content, attrs = `viewBox=\"0 0 40 40\"`) {\n return `url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" ${attrs}>${encodeURIComponent(content)}</svg>')`;\n}\nfunction underline(color) {\n return svg(`<path d=\"m0 2.5 l2 -1.5 l1 0 l2 1.5 l1 0\" stroke=\"${color}\" fill=\"none\" stroke-width=\".7\"/>`, `width=\"6\" height=\"3\"`);\n}\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-diagnostic\": {\n padding: \"3px 6px 3px 8px\",\n marginLeft: \"-1px\",\n display: \"block\",\n whiteSpace: \"pre-wrap\"\n },\n \".cm-diagnostic-error\": { borderLeft: \"5px solid #d11\" },\n \".cm-diagnostic-warning\": { borderLeft: \"5px solid orange\" },\n \".cm-diagnostic-info\": { borderLeft: \"5px solid #999\" },\n \".cm-diagnostic-hint\": { borderLeft: \"5px solid #66d\" },\n \".cm-diagnosticAction\": {\n font: \"inherit\",\n border: \"none\",\n padding: \"2px 4px\",\n backgroundColor: \"#444\",\n color: \"white\",\n borderRadius: \"3px\",\n marginLeft: \"8px\",\n cursor: \"pointer\"\n },\n \".cm-diagnosticSource\": {\n fontSize: \"70%\",\n opacity: .7\n },\n \".cm-lintRange\": {\n backgroundPosition: \"left bottom\",\n backgroundRepeat: \"repeat-x\",\n paddingBottom: \"0.7px\",\n },\n \".cm-lintRange-error\": { backgroundImage: /*@__PURE__*/underline(\"#d11\") },\n \".cm-lintRange-warning\": { backgroundImage: /*@__PURE__*/underline(\"orange\") },\n \".cm-lintRange-info\": { backgroundImage: /*@__PURE__*/underline(\"#999\") },\n \".cm-lintRange-hint\": { backgroundImage: /*@__PURE__*/underline(\"#66d\") },\n \".cm-lintRange-active\": { backgroundColor: \"#ffdd9980\" },\n \".cm-tooltip-lint\": {\n padding: 0,\n margin: 0\n },\n \".cm-lintPoint\": {\n position: \"relative\",\n \"&:after\": {\n content: '\"\"',\n position: \"absolute\",\n bottom: 0,\n left: \"-2px\",\n borderLeft: \"3px solid transparent\",\n borderRight: \"3px solid transparent\",\n borderBottom: \"4px solid #d11\"\n }\n },\n \".cm-lintPoint-warning\": {\n \"&:after\": { borderBottomColor: \"orange\" }\n },\n \".cm-lintPoint-info\": {\n \"&:after\": { borderBottomColor: \"#999\" }\n },\n \".cm-lintPoint-hint\": {\n \"&:after\": { borderBottomColor: \"#66d\" }\n },\n \".cm-panel.cm-panel-lint\": {\n position: \"relative\",\n \"& ul\": {\n maxHeight: \"100px\",\n overflowY: \"auto\",\n \"& [aria-selected]\": {\n backgroundColor: \"#ddd\",\n \"& u\": { textDecoration: \"underline\" }\n },\n \"&:focus [aria-selected]\": {\n background_fallback: \"#bdf\",\n backgroundColor: \"Highlight\",\n color_fallback: \"white\",\n color: \"HighlightText\"\n },\n \"& u\": { textDecoration: \"none\" },\n padding: 0,\n margin: 0\n },\n \"& [name=close]\": {\n position: \"absolute\",\n top: \"0\",\n right: \"2px\",\n background: \"inherit\",\n border: \"none\",\n font: \"inherit\",\n padding: 0,\n margin: 0\n }\n },\n \"&dark .cm-lintRange-active\": { backgroundColor: \"#86714a80\" },\n \"&dark .cm-panel.cm-panel-lint ul\": {\n \"& [aria-selected]\": {\n backgroundColor: \"#2e343e\",\n },\n }\n});\nfunction severityWeight(sev) {\n return sev == \"error\" ? 4 : sev == \"warning\" ? 3 : sev == \"info\" ? 2 : 1;\n}\nfunction maxSeverity(diagnostics) {\n let sev = \"hint\", weight = 1;\n for (let d of diagnostics) {\n let w = severityWeight(d.severity);\n if (w > weight) {\n weight = w;\n sev = d.severity;\n }\n }\n return sev;\n}\nclass LintGutterMarker extends GutterMarker {\n constructor(diagnostics) {\n super();\n this.diagnostics = diagnostics;\n this.severity = maxSeverity(diagnostics);\n }\n toDOM(view) {\n let elt = document.createElement(\"div\");\n elt.className = \"cm-lint-marker cm-lint-marker-\" + this.severity;\n let diagnostics = this.diagnostics;\n let diagnosticsFilter = view.state.facet(lintGutterConfig).tooltipFilter;\n if (diagnosticsFilter)\n diagnostics = diagnosticsFilter(diagnostics, view.state);\n if (diagnostics.length)\n elt.onmouseover = () => gutterMarkerMouseOver(view, elt, diagnostics);\n return elt;\n }\n}\nfunction trackHoverOn(view, marker) {\n let mousemove = (event) => {\n let rect = marker.getBoundingClientRect();\n if (event.clientX > rect.left - 10 /* Hover.Margin */ && event.clientX < rect.right + 10 /* Hover.Margin */ &&\n event.clientY > rect.top - 10 /* Hover.Margin */ && event.clientY < rect.bottom + 10 /* Hover.Margin */)\n return;\n for (let target = event.target; target; target = target.parentNode) {\n if (target.nodeType == 1 && target.classList.contains(\"cm-tooltip-lint\"))\n return;\n }\n window.removeEventListener(\"mousemove\", mousemove);\n if (view.state.field(lintGutterTooltip))\n view.dispatch({ effects: setLintGutterTooltip.of(null) });\n };\n window.addEventListener(\"mousemove\", mousemove);\n}\nfunction gutterMarkerMouseOver(view, marker, diagnostics) {\n function hovered() {\n let line = view.elementAtHeight(marker.getBoundingClientRect().top + 5 - view.documentTop);\n const linePos = view.coordsAtPos(line.from);\n if (linePos) {\n view.dispatch({ effects: setLintGutterTooltip.of({\n pos: line.from,\n above: false,\n clip: false,\n create() {\n return {\n dom: diagnosticsTooltip(view, diagnostics),\n getCoords: () => marker.getBoundingClientRect()\n };\n }\n }) });\n }\n marker.onmouseout = marker.onmousemove = null;\n trackHoverOn(view, marker);\n }\n let { hoverTime } = view.state.facet(lintGutterConfig);\n let hoverTimeout = setTimeout(hovered, hoverTime);\n marker.onmouseout = () => {\n clearTimeout(hoverTimeout);\n marker.onmouseout = marker.onmousemove = null;\n };\n marker.onmousemove = () => {\n clearTimeout(hoverTimeout);\n hoverTimeout = setTimeout(hovered, hoverTime);\n };\n}\nfunction markersForDiagnostics(doc, diagnostics) {\n let byLine = Object.create(null);\n for (let diagnostic of diagnostics) {\n let line = doc.lineAt(diagnostic.from);\n (byLine[line.from] || (byLine[line.from] = [])).push(diagnostic);\n }\n let markers = [];\n for (let line in byLine) {\n markers.push(new LintGutterMarker(byLine[line]).range(+line));\n }\n return RangeSet.of(markers, true);\n}\nconst lintGutterExtension = /*@__PURE__*/gutter({\n class: \"cm-gutter-lint\",\n markers: view => view.state.field(lintGutterMarkers),\n widgetMarker: (view, widget, block) => {\n let diagnostics = [];\n view.state.field(lintGutterMarkers).between(block.from, block.to, (from, to, value) => {\n if (from > block.from && from < block.to)\n diagnostics.push(...value.diagnostics);\n });\n return diagnostics.length ? new LintGutterMarker(diagnostics) : null;\n }\n});\nconst lintGutterMarkers = /*@__PURE__*/StateField.define({\n create() {\n return RangeSet.empty;\n },\n update(markers, tr) {\n markers = markers.map(tr.changes);\n let diagnosticFilter = tr.state.facet(lintGutterConfig).markerFilter;\n for (let effect of tr.effects) {\n if (effect.is(setDiagnosticsEffect)) {\n let diagnostics = effect.value;\n if (diagnosticFilter)\n diagnostics = diagnosticFilter(diagnostics || [], tr.state);\n markers = markersForDiagnostics(tr.state.doc, diagnostics.slice(0));\n }\n }\n return markers;\n }\n});\nconst setLintGutterTooltip = /*@__PURE__*/StateEffect.define();\nconst lintGutterTooltip = /*@__PURE__*/StateField.define({\n create() { return null; },\n update(tooltip, tr) {\n if (tooltip && tr.docChanged)\n tooltip = hideTooltip(tr, tooltip) ? null : { ...tooltip, pos: tr.changes.mapPos(tooltip.pos) };\n return tr.effects.reduce((t, e) => e.is(setLintGutterTooltip) ? e.value : t, tooltip);\n },\n provide: field => showTooltip.from(field)\n});\nconst lintGutterTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-gutter-lint\": {\n width: \"1.4em\",\n \"& .cm-gutterElement\": {\n padding: \".2em\"\n }\n },\n \".cm-lint-marker\": {\n width: \"1em\",\n height: \"1em\"\n },\n \".cm-lint-marker-info\": {\n content: /*@__PURE__*/svg(`<path fill=\"#aaf\" stroke=\"#77e\" stroke-width=\"6\" stroke-linejoin=\"round\" d=\"M5 5L35 5L35 35L5 35Z\"/>`)\n },\n \".cm-lint-marker-warning\": {\n content: /*@__PURE__*/svg(`<path fill=\"#fe8\" stroke=\"#fd7\" stroke-width=\"6\" stroke-linejoin=\"round\" d=\"M20 6L37 35L3 35Z\"/>`),\n },\n \".cm-lint-marker-error\": {\n content: /*@__PURE__*/svg(`<circle cx=\"20\" cy=\"20\" r=\"15\" fill=\"#f87\" stroke=\"#f43\" stroke-width=\"6\"/>`)\n },\n});\nconst lintExtensions = [\n lintState,\n /*@__PURE__*/EditorView.decorations.compute([lintState], state => {\n let { selected, panel } = state.field(lintState);\n return !selected || !panel || selected.from == selected.to ? Decoration.none : Decoration.set([\n activeMark.range(selected.from, selected.to)\n ]);\n }),\n /*@__PURE__*/hoverTooltip(lintTooltip, { hideOn: hideTooltip }),\n baseTheme\n];\nconst lintGutterConfig = /*@__PURE__*/Facet.define({\n combine(configs) {\n return combineConfig(configs, {\n hoverTime: 300 /* Hover.Time */,\n markerFilter: null,\n tooltipFilter: null\n });\n }\n});\n/**\nReturns an extension that installs a gutter showing markers for\neach line that has diagnostics, which can be hovered over to see\nthe diagnostics.\n*/\nfunction lintGutter(config = {}) {\n return [lintGutterConfig.of(config), lintGutterMarkers, lintGutterExtension, lintGutterTheme, lintGutterTooltip];\n}\n/**\nIterate over the marked diagnostics for the given editor state,\ncalling `f` for each of them. Note that, if the document changed\nsince the diagnostics were created, the `Diagnostic` object will\nhold the original outdated position, whereas the `to` and `from`\narguments hold the diagnostic's current position.\n*/\nfunction forEachDiagnostic(state, f) {\n let lState = state.field(lintState, false);\n if (lState && lState.diagnostics.size) {\n let pending = [], pendingStart = [], lastEnd = -1;\n for (let iter = RangeSet.iter([lState.diagnostics]);; iter.next()) {\n for (let i = 0; i < pending.length; i++)\n if (!iter.value || iter.value.spec.diagnostics.indexOf(pending[i]) < 0) {\n f(pending[i], pendingStart[i], lastEnd);\n pending.splice(i, 1);\n pendingStart.splice(i--, 1);\n }\n if (!iter.value)\n break;\n for (let d of iter.value.spec.diagnostics)\n if (pending.indexOf(d) < 0) {\n pending.push(d);\n pendingStart.push(iter.from);\n }\n lastEnd = iter.to;\n }\n }\n}\n\nexport { closeLintPanel, diagnosticCount, forEachDiagnostic, forceLinting, lintGutter, lintKeymap, linter, nextDiagnostic, openLintPanel, previousDiagnostic, setDiagnostics, setDiagnosticsEffect };\n","import { lineNumbers, highlightActiveLineGutter, highlightSpecialChars, drawSelection, dropCursor, rectangularSelection, crosshairCursor, highlightActiveLine, keymap } from '@codemirror/view';\nexport { EditorView } from '@codemirror/view';\nimport { EditorState } from '@codemirror/state';\nimport { foldGutter, indentOnInput, syntaxHighlighting, defaultHighlightStyle, bracketMatching, foldKeymap } from '@codemirror/language';\nimport { history, defaultKeymap, historyKeymap } from '@codemirror/commands';\nimport { highlightSelectionMatches, searchKeymap } from '@codemirror/search';\nimport { closeBrackets, autocompletion, closeBracketsKeymap, completionKeymap } from '@codemirror/autocomplete';\nimport { lintKeymap } from '@codemirror/lint';\n\n// (The superfluous function calls around the list of extensions work\n// around current limitations in tree-shaking software.)\n/**\nThis is an extension value that just pulls together a number of\nextensions that you might want in a basic editor. It is meant as a\nconvenient helper to quickly set up CodeMirror without installing\nand importing a lot of separate packages.\n\nSpecifically, it includes...\n\n - [the default command bindings](https://codemirror.net/6/docs/ref/#commands.defaultKeymap)\n - [line numbers](https://codemirror.net/6/docs/ref/#view.lineNumbers)\n - [special character highlighting](https://codemirror.net/6/docs/ref/#view.highlightSpecialChars)\n - [the undo history](https://codemirror.net/6/docs/ref/#commands.history)\n - [a fold gutter](https://codemirror.net/6/docs/ref/#language.foldGutter)\n - [custom selection drawing](https://codemirror.net/6/docs/ref/#view.drawSelection)\n - [drop cursor](https://codemirror.net/6/docs/ref/#view.dropCursor)\n - [multiple selections](https://codemirror.net/6/docs/ref/#state.EditorState^allowMultipleSelections)\n - [reindentation on input](https://codemirror.net/6/docs/ref/#language.indentOnInput)\n - [the default highlight style](https://codemirror.net/6/docs/ref/#language.defaultHighlightStyle) (as fallback)\n - [bracket matching](https://codemirror.net/6/docs/ref/#language.bracketMatching)\n - [bracket closing](https://codemirror.net/6/docs/ref/#autocomplete.closeBrackets)\n - [autocompletion](https://codemirror.net/6/docs/ref/#autocomplete.autocompletion)\n - [rectangular selection](https://codemirror.net/6/docs/ref/#view.rectangularSelection) and [crosshair cursor](https://codemirror.net/6/docs/ref/#view.crosshairCursor)\n - [active line highlighting](https://codemirror.net/6/docs/ref/#view.highlightActiveLine)\n - [active line gutter highlighting](https://codemirror.net/6/docs/ref/#view.highlightActiveLineGutter)\n - [selection match highlighting](https://codemirror.net/6/docs/ref/#search.highlightSelectionMatches)\n - [search](https://codemirror.net/6/docs/ref/#search.searchKeymap)\n - [linting](https://codemirror.net/6/docs/ref/#lint.lintKeymap)\n\n(You'll probably want to add some language package to your setup\ntoo.)\n\nThis extension does not allow customization. The idea is that,\nonce you decide you want to configure your editor more precisely,\nyou take this package's source (which is just a bunch of imports\nand an array literal), copy it into your own code, and adjust it\nas desired.\n*/\nconst basicSetup = /*@__PURE__*/(() => [\n lineNumbers(),\n highlightActiveLineGutter(),\n highlightSpecialChars(),\n history(),\n foldGutter(),\n drawSelection(),\n dropCursor(),\n EditorState.allowMultipleSelections.of(true),\n indentOnInput(),\n syntaxHighlighting(defaultHighlightStyle, { fallback: true }),\n bracketMatching(),\n closeBrackets(),\n autocompletion(),\n rectangularSelection(),\n crosshairCursor(),\n highlightActiveLine(),\n highlightSelectionMatches(),\n keymap.of([\n ...closeBracketsKeymap,\n ...defaultKeymap,\n ...searchKeymap,\n ...historyKeymap,\n ...foldKeymap,\n ...completionKeymap,\n ...lintKeymap\n ])\n])();\n/**\nA minimal set of extensions to create a functional editor. Only\nincludes [the default keymap](https://codemirror.net/6/docs/ref/#commands.defaultKeymap), [undo\nhistory](https://codemirror.net/6/docs/ref/#commands.history), [special character\nhighlighting](https://codemirror.net/6/docs/ref/#view.highlightSpecialChars), [custom selection\ndrawing](https://codemirror.net/6/docs/ref/#view.drawSelection), and [default highlight\nstyle](https://codemirror.net/6/docs/ref/#language.defaultHighlightStyle).\n*/\nconst minimalSetup = /*@__PURE__*/(() => [\n highlightSpecialChars(),\n history(),\n drawSelection(),\n syntaxHighlighting(defaultHighlightStyle, { fallback: true }),\n keymap.of([\n ...defaultKeymap,\n ...historyKeymap,\n ])\n])();\n\nexport { basicSetup, minimalSetup };\n","import { Parser, NodeProp, NodeSet, NodeType, DefaultBufferLength, Tree, IterMode } from '@lezer/common';\n\n/**\nA parse stack. These are used internally by the parser to track\nparsing progress. They also provide some properties and methods\nthat external code such as a tokenizer can use to get information\nabout the parse state.\n*/\nclass Stack {\n /**\n @internal\n */\n constructor(\n /**\n The parse that this stack is part of @internal\n */\n p, \n /**\n Holds state, input pos, buffer index triplets for all but the\n top state @internal\n */\n stack, \n /**\n The current parse state @internal\n */\n state, \n // The position at which the next reduce should take place. This\n // can be less than `this.pos` when skipped expressions have been\n // added to the stack (which should be moved outside of the next\n // reduction)\n /**\n @internal\n */\n reducePos, \n /**\n The input position up to which this stack has parsed.\n */\n pos, \n /**\n The dynamic score of the stack, including dynamic precedence\n and error-recovery penalties\n @internal\n */\n score, \n // The output buffer. Holds (type, start, end, size) quads\n // representing nodes created by the parser, where `size` is\n // amount of buffer array entries covered by this node.\n /**\n @internal\n */\n buffer, \n // The base offset of the buffer. When stacks are split, the split\n // instance shared the buffer history with its parent up to\n // `bufferBase`, which is the absolute offset (including the\n // offset of previous splits) into the buffer at which this stack\n // starts writing.\n /**\n @internal\n */\n bufferBase, \n /**\n @internal\n */\n curContext, \n /**\n @internal\n */\n lookAhead = 0, \n // A parent stack from which this was split off, if any. This is\n // set up so that it always points to a stack that has some\n // additional buffer content, never to a stack with an equal\n // `bufferBase`.\n /**\n @internal\n */\n parent) {\n this.p = p;\n this.stack = stack;\n this.state = state;\n this.reducePos = reducePos;\n this.pos = pos;\n this.score = score;\n this.buffer = buffer;\n this.bufferBase = bufferBase;\n this.curContext = curContext;\n this.lookAhead = lookAhead;\n this.parent = parent;\n }\n /**\n @internal\n */\n toString() {\n return `[${this.stack.filter((_, i) => i % 3 == 0).concat(this.state)}]@${this.pos}${this.score ? \"!\" + this.score : \"\"}`;\n }\n // Start an empty stack\n /**\n @internal\n */\n static start(p, state, pos = 0) {\n let cx = p.parser.context;\n return new Stack(p, [], state, pos, pos, 0, [], 0, cx ? new StackContext(cx, cx.start) : null, 0, null);\n }\n /**\n The stack's current [context](#lr.ContextTracker) value, if\n any. Its type will depend on the context tracker's type\n parameter, or it will be `null` if there is no context\n tracker.\n */\n get context() { return this.curContext ? this.curContext.context : null; }\n // Push a state onto the stack, tracking its start position as well\n // as the buffer base at that point.\n /**\n @internal\n */\n pushState(state, start) {\n this.stack.push(this.state, start, this.bufferBase + this.buffer.length);\n this.state = state;\n }\n // Apply a reduce action\n /**\n @internal\n */\n reduce(action) {\n var _a;\n let depth = action >> 19 /* Action.ReduceDepthShift */, type = action & 65535 /* Action.ValueMask */;\n let { parser } = this.p;\n let lookaheadRecord = this.reducePos < this.pos - 25 /* Lookahead.Margin */ && this.setLookAhead(this.pos);\n let dPrec = parser.dynamicPrecedence(type);\n if (dPrec)\n this.score += dPrec;\n if (depth == 0) {\n this.pushState(parser.getGoto(this.state, type, true), this.reducePos);\n // Zero-depth reductions are a special case—they add stuff to\n // the stack without popping anything off.\n if (type < parser.minRepeatTerm)\n this.storeNode(type, this.reducePos, this.reducePos, lookaheadRecord ? 8 : 4, true);\n this.reduceContext(type, this.reducePos);\n return;\n }\n // Find the base index into `this.stack`, content after which will\n // be dropped. Note that with `StayFlag` reductions we need to\n // consume two extra frames (the dummy parent node for the skipped\n // expression and the state that we'll be staying in, which should\n // be moved to `this.state`).\n let base = this.stack.length - ((depth - 1) * 3) - (action & 262144 /* Action.StayFlag */ ? 6 : 0);\n let start = base ? this.stack[base - 2] : this.p.ranges[0].from, size = this.reducePos - start;\n // This is a kludge to try and detect overly deep left-associative\n // trees, which will not increase the parse stack depth and thus\n // won't be caught by the regular stack-depth limit check.\n if (size >= 2000 /* Recover.MinBigReduction */ && !((_a = this.p.parser.nodeSet.types[type]) === null || _a === void 0 ? void 0 : _a.isAnonymous)) {\n if (start == this.p.lastBigReductionStart) {\n this.p.bigReductionCount++;\n this.p.lastBigReductionSize = size;\n }\n else if (this.p.lastBigReductionSize < size) {\n this.p.bigReductionCount = 1;\n this.p.lastBigReductionStart = start;\n this.p.lastBigReductionSize = size;\n }\n }\n let bufferBase = base ? this.stack[base - 1] : 0, count = this.bufferBase + this.buffer.length - bufferBase;\n // Store normal terms or `R -> R R` repeat reductions\n if (type < parser.minRepeatTerm || (action & 131072 /* Action.RepeatFlag */)) {\n let pos = parser.stateFlag(this.state, 1 /* StateFlag.Skipped */) ? this.pos : this.reducePos;\n this.storeNode(type, start, pos, count + 4, true);\n }\n if (action & 262144 /* Action.StayFlag */) {\n this.state = this.stack[base];\n }\n else {\n let baseStateID = this.stack[base - 3];\n this.state = parser.getGoto(baseStateID, type, true);\n }\n while (this.stack.length > base)\n this.stack.pop();\n this.reduceContext(type, start);\n }\n // Shift a value into the buffer\n /**\n @internal\n */\n storeNode(term, start, end, size = 4, mustSink = false) {\n if (term == 0 /* Term.Err */ &&\n (!this.stack.length || this.stack[this.stack.length - 1] < this.buffer.length + this.bufferBase)) {\n // Try to omit/merge adjacent error nodes\n let cur = this, top = this.buffer.length;\n if (top == 0 && cur.parent) {\n top = cur.bufferBase - cur.parent.bufferBase;\n cur = cur.parent;\n }\n if (top > 0 && cur.buffer[top - 4] == 0 /* Term.Err */ && cur.buffer[top - 1] > -1) {\n if (start == end)\n return;\n if (cur.buffer[top - 2] >= start) {\n cur.buffer[top - 2] = end;\n return;\n }\n }\n }\n if (!mustSink || this.pos == end) { // Simple case, just append\n this.buffer.push(term, start, end, size);\n }\n else { // There may be skipped nodes that have to be moved forward\n let index = this.buffer.length;\n if (index > 0 && (this.buffer[index - 4] != 0 /* Term.Err */ || this.buffer[index - 1] < 0)) {\n let mustMove = false;\n for (let scan = index; scan > 0 && this.buffer[scan - 2] > end; scan -= 4) {\n if (this.buffer[scan - 1] >= 0) {\n mustMove = true;\n break;\n }\n }\n if (mustMove)\n while (index > 0 && this.buffer[index - 2] > end) {\n // Move this record forward\n this.buffer[index] = this.buffer[index - 4];\n this.buffer[index + 1] = this.buffer[index - 3];\n this.buffer[index + 2] = this.buffer[index - 2];\n this.buffer[index + 3] = this.buffer[index - 1];\n index -= 4;\n if (size > 4)\n size -= 4;\n }\n }\n this.buffer[index] = term;\n this.buffer[index + 1] = start;\n this.buffer[index + 2] = end;\n this.buffer[index + 3] = size;\n }\n }\n // Apply a shift action\n /**\n @internal\n */\n shift(action, type, start, end) {\n if (action & 131072 /* Action.GotoFlag */) {\n this.pushState(action & 65535 /* Action.ValueMask */, this.pos);\n }\n else if ((action & 262144 /* Action.StayFlag */) == 0) { // Regular shift\n let nextState = action, { parser } = this.p;\n this.pos = end;\n let skipped = parser.stateFlag(nextState, 1 /* StateFlag.Skipped */);\n // Skipped or zero-length non-tree tokens don't move reducePos\n if (!skipped && (end > start || type <= parser.maxNode))\n this.reducePos = end;\n this.pushState(nextState, skipped ? start : Math.min(start, this.reducePos));\n this.shiftContext(type, start);\n if (type <= parser.maxNode)\n this.buffer.push(type, start, end, 4);\n }\n else { // Shift-and-stay, which means this is a skipped token\n this.pos = end;\n this.shiftContext(type, start);\n if (type <= this.p.parser.maxNode)\n this.buffer.push(type, start, end, 4);\n }\n }\n // Apply an action\n /**\n @internal\n */\n apply(action, next, nextStart, nextEnd) {\n if (action & 65536 /* Action.ReduceFlag */)\n this.reduce(action);\n else\n this.shift(action, next, nextStart, nextEnd);\n }\n // Add a prebuilt (reused) node into the buffer.\n /**\n @internal\n */\n useNode(value, next) {\n let index = this.p.reused.length - 1;\n if (index < 0 || this.p.reused[index] != value) {\n this.p.reused.push(value);\n index++;\n }\n let start = this.pos;\n this.reducePos = this.pos = start + value.length;\n this.pushState(next, start);\n this.buffer.push(index, start, this.reducePos, -1 /* size == -1 means this is a reused value */);\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reuse(this.curContext.context, value, this, this.p.stream.reset(this.pos - value.length)));\n }\n // Split the stack. Due to the buffer sharing and the fact\n // that `this.stack` tends to stay quite shallow, this isn't very\n // expensive.\n /**\n @internal\n */\n split() {\n let parent = this;\n let off = parent.buffer.length;\n // Because the top of the buffer (after this.pos) may be mutated\n // to reorder reductions and skipped tokens, and shared buffers\n // should be immutable, this copies any outstanding skipped tokens\n // to the new buffer, and puts the base pointer before them.\n while (off > 0 && parent.buffer[off - 2] > parent.reducePos)\n off -= 4;\n let buffer = parent.buffer.slice(off), base = parent.bufferBase + off;\n // Make sure parent points to an actual parent with content, if there is such a parent.\n while (parent && base == parent.bufferBase)\n parent = parent.parent;\n return new Stack(this.p, this.stack.slice(), this.state, this.reducePos, this.pos, this.score, buffer, base, this.curContext, this.lookAhead, parent);\n }\n // Try to recover from an error by 'deleting' (ignoring) one token.\n /**\n @internal\n */\n recoverByDelete(next, nextEnd) {\n let isNode = next <= this.p.parser.maxNode;\n if (isNode)\n this.storeNode(next, this.pos, nextEnd, 4);\n this.storeNode(0 /* Term.Err */, this.pos, nextEnd, isNode ? 8 : 4);\n this.pos = this.reducePos = nextEnd;\n this.score -= 190 /* Recover.Delete */;\n }\n /**\n Check if the given term would be able to be shifted (optionally\n after some reductions) on this stack. This can be useful for\n external tokenizers that want to make sure they only provide a\n given token when it applies.\n */\n canShift(term) {\n for (let sim = new SimulatedStack(this);;) {\n let action = this.p.parser.stateSlot(sim.state, 4 /* ParseState.DefaultReduce */) || this.p.parser.hasAction(sim.state, term);\n if (action == 0)\n return false;\n if ((action & 65536 /* Action.ReduceFlag */) == 0)\n return true;\n sim.reduce(action);\n }\n }\n // Apply up to Recover.MaxNext recovery actions that conceptually\n // inserts some missing token or rule.\n /**\n @internal\n */\n recoverByInsert(next) {\n if (this.stack.length >= 300 /* Recover.MaxInsertStackDepth */)\n return [];\n let nextStates = this.p.parser.nextStates(this.state);\n if (nextStates.length > 4 /* Recover.MaxNext */ << 1 || this.stack.length >= 120 /* Recover.DampenInsertStackDepth */) {\n let best = [];\n for (let i = 0, s; i < nextStates.length; i += 2) {\n if ((s = nextStates[i + 1]) != this.state && this.p.parser.hasAction(s, next))\n best.push(nextStates[i], s);\n }\n if (this.stack.length < 120 /* Recover.DampenInsertStackDepth */)\n for (let i = 0; best.length < 4 /* Recover.MaxNext */ << 1 && i < nextStates.length; i += 2) {\n let s = nextStates[i + 1];\n if (!best.some((v, i) => (i & 1) && v == s))\n best.push(nextStates[i], s);\n }\n nextStates = best;\n }\n let result = [];\n for (let i = 0; i < nextStates.length && result.length < 4 /* Recover.MaxNext */; i += 2) {\n let s = nextStates[i + 1];\n if (s == this.state)\n continue;\n let stack = this.split();\n stack.pushState(s, this.pos);\n stack.storeNode(0 /* Term.Err */, stack.pos, stack.pos, 4, true);\n stack.shiftContext(nextStates[i], this.pos);\n stack.reducePos = this.pos;\n stack.score -= 200 /* Recover.Insert */;\n result.push(stack);\n }\n return result;\n }\n // Force a reduce, if possible. Return false if that can't\n // be done.\n /**\n @internal\n */\n forceReduce() {\n let { parser } = this.p;\n let reduce = parser.stateSlot(this.state, 5 /* ParseState.ForcedReduce */);\n if ((reduce & 65536 /* Action.ReduceFlag */) == 0)\n return false;\n if (!parser.validAction(this.state, reduce)) {\n let depth = reduce >> 19 /* Action.ReduceDepthShift */, term = reduce & 65535 /* Action.ValueMask */;\n let target = this.stack.length - depth * 3;\n if (target < 0 || parser.getGoto(this.stack[target], term, false) < 0) {\n let backup = this.findForcedReduction();\n if (backup == null)\n return false;\n reduce = backup;\n }\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n this.score -= 100 /* Recover.Reduce */;\n }\n this.reducePos = this.pos;\n this.reduce(reduce);\n return true;\n }\n /**\n Try to scan through the automaton to find some kind of reduction\n that can be applied. Used when the regular ForcedReduce field\n isn't a valid action. @internal\n */\n findForcedReduction() {\n let { parser } = this.p, seen = [];\n let explore = (state, depth) => {\n if (seen.includes(state))\n return;\n seen.push(state);\n return parser.allActions(state, (action) => {\n if (action & (262144 /* Action.StayFlag */ | 131072 /* Action.GotoFlag */)) ;\n else if (action & 65536 /* Action.ReduceFlag */) {\n let rDepth = (action >> 19 /* Action.ReduceDepthShift */) - depth;\n if (rDepth > 1) {\n let term = action & 65535 /* Action.ValueMask */, target = this.stack.length - rDepth * 3;\n if (target >= 0 && parser.getGoto(this.stack[target], term, false) >= 0)\n return (rDepth << 19 /* Action.ReduceDepthShift */) | 65536 /* Action.ReduceFlag */ | term;\n }\n }\n else {\n let found = explore(action, depth + 1);\n if (found != null)\n return found;\n }\n });\n };\n return explore(this.state, 0);\n }\n /**\n @internal\n */\n forceAll() {\n while (!this.p.parser.stateFlag(this.state, 2 /* StateFlag.Accepting */)) {\n if (!this.forceReduce()) {\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n break;\n }\n }\n return this;\n }\n /**\n Check whether this state has no further actions (assumed to be a direct descendant of the\n top state, since any other states must be able to continue\n somehow). @internal\n */\n get deadEnd() {\n if (this.stack.length != 3)\n return false;\n let { parser } = this.p;\n return parser.data[parser.stateSlot(this.state, 1 /* ParseState.Actions */)] == 65535 /* Seq.End */ &&\n !parser.stateSlot(this.state, 4 /* ParseState.DefaultReduce */);\n }\n /**\n Restart the stack (put it back in its start state). Only safe\n when this.stack.length == 3 (state is directly below the top\n state). @internal\n */\n restart() {\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n this.state = this.stack[0];\n this.stack.length = 0;\n }\n /**\n @internal\n */\n sameState(other) {\n if (this.state != other.state || this.stack.length != other.stack.length)\n return false;\n for (let i = 0; i < this.stack.length; i += 3)\n if (this.stack[i] != other.stack[i])\n return false;\n return true;\n }\n /**\n Get the parser used by this stack.\n */\n get parser() { return this.p.parser; }\n /**\n Test whether a given dialect (by numeric ID, as exported from\n the terms file) is enabled.\n */\n dialectEnabled(dialectID) { return this.p.parser.dialect.flags[dialectID]; }\n shiftContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.shift(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n reduceContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reduce(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n /**\n @internal\n */\n emitContext() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -3)\n this.buffer.push(this.curContext.hash, this.pos, this.pos, -3);\n }\n /**\n @internal\n */\n emitLookAhead() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -4)\n this.buffer.push(this.lookAhead, this.pos, this.pos, -4);\n }\n updateContext(context) {\n if (context != this.curContext.context) {\n let newCx = new StackContext(this.curContext.tracker, context);\n if (newCx.hash != this.curContext.hash)\n this.emitContext();\n this.curContext = newCx;\n }\n }\n /**\n @internal\n */\n setLookAhead(lookAhead) {\n if (lookAhead <= this.lookAhead)\n return false;\n this.emitLookAhead();\n this.lookAhead = lookAhead;\n return true;\n }\n /**\n @internal\n */\n close() {\n if (this.curContext && this.curContext.tracker.strict)\n this.emitContext();\n if (this.lookAhead > 0)\n this.emitLookAhead();\n }\n}\nclass StackContext {\n constructor(tracker, context) {\n this.tracker = tracker;\n this.context = context;\n this.hash = tracker.strict ? tracker.hash(context) : 0;\n }\n}\n// Used to cheaply run some reductions to scan ahead without mutating\n// an entire stack\nclass SimulatedStack {\n constructor(start) {\n this.start = start;\n this.state = start.state;\n this.stack = start.stack;\n this.base = this.stack.length;\n }\n reduce(action) {\n let term = action & 65535 /* Action.ValueMask */, depth = action >> 19 /* Action.ReduceDepthShift */;\n if (depth == 0) {\n if (this.stack == this.start.stack)\n this.stack = this.stack.slice();\n this.stack.push(this.state, 0, 0);\n this.base += 3;\n }\n else {\n this.base -= (depth - 1) * 3;\n }\n let goto = this.start.p.parser.getGoto(this.stack[this.base - 3], term, true);\n this.state = goto;\n }\n}\n// This is given to `Tree.build` to build a buffer, and encapsulates\n// the parent-stack-walking necessary to read the nodes.\nclass StackBufferCursor {\n constructor(stack, pos, index) {\n this.stack = stack;\n this.pos = pos;\n this.index = index;\n this.buffer = stack.buffer;\n if (this.index == 0)\n this.maybeNext();\n }\n static create(stack, pos = stack.bufferBase + stack.buffer.length) {\n return new StackBufferCursor(stack, pos, pos - stack.bufferBase);\n }\n maybeNext() {\n let next = this.stack.parent;\n if (next != null) {\n this.index = this.stack.bufferBase - next.bufferBase;\n this.stack = next;\n this.buffer = next.buffer;\n }\n }\n get id() { return this.buffer[this.index - 4]; }\n get start() { return this.buffer[this.index - 3]; }\n get end() { return this.buffer[this.index - 2]; }\n get size() { return this.buffer[this.index - 1]; }\n next() {\n this.index -= 4;\n this.pos -= 4;\n if (this.index == 0)\n this.maybeNext();\n }\n fork() {\n return new StackBufferCursor(this.stack, this.pos, this.index);\n }\n}\n\n// See lezer-generator/src/encode.ts for comments about the encoding\n// used here\nfunction decodeArray(input, Type = Uint16Array) {\n if (typeof input != \"string\")\n return input;\n let array = null;\n for (let pos = 0, out = 0; pos < input.length;) {\n let value = 0;\n for (;;) {\n let next = input.charCodeAt(pos++), stop = false;\n if (next == 126 /* Encode.BigValCode */) {\n value = 65535 /* Encode.BigVal */;\n break;\n }\n if (next >= 92 /* Encode.Gap2 */)\n next--;\n if (next >= 34 /* Encode.Gap1 */)\n next--;\n let digit = next - 32 /* Encode.Start */;\n if (digit >= 46 /* Encode.Base */) {\n digit -= 46 /* Encode.Base */;\n stop = true;\n }\n value += digit;\n if (stop)\n break;\n value *= 46 /* Encode.Base */;\n }\n if (array)\n array[out++] = value;\n else\n array = new Type(value);\n }\n return array;\n}\n\nclass CachedToken {\n constructor() {\n this.start = -1;\n this.value = -1;\n this.end = -1;\n this.extended = -1;\n this.lookAhead = 0;\n this.mask = 0;\n this.context = 0;\n }\n}\nconst nullToken = new CachedToken;\n/**\n[Tokenizers](#lr.ExternalTokenizer) interact with the input\nthrough this interface. It presents the input as a stream of\ncharacters, tracking lookahead and hiding the complexity of\n[ranges](#common.Parser.parse^ranges) from tokenizer code.\n*/\nclass InputStream {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n input, \n /**\n @internal\n */\n ranges) {\n this.input = input;\n this.ranges = ranges;\n /**\n @internal\n */\n this.chunk = \"\";\n /**\n @internal\n */\n this.chunkOff = 0;\n /**\n Backup chunk\n */\n this.chunk2 = \"\";\n this.chunk2Pos = 0;\n /**\n The character code of the next code unit in the input, or -1\n when the stream is at the end of the input.\n */\n this.next = -1;\n /**\n @internal\n */\n this.token = nullToken;\n this.rangeIndex = 0;\n this.pos = this.chunkPos = ranges[0].from;\n this.range = ranges[0];\n this.end = ranges[ranges.length - 1].to;\n this.readNext();\n }\n /**\n @internal\n */\n resolveOffset(offset, assoc) {\n let range = this.range, index = this.rangeIndex;\n let pos = this.pos + offset;\n while (pos < range.from) {\n if (!index)\n return null;\n let next = this.ranges[--index];\n pos -= range.from - next.to;\n range = next;\n }\n while (assoc < 0 ? pos > range.to : pos >= range.to) {\n if (index == this.ranges.length - 1)\n return null;\n let next = this.ranges[++index];\n pos += next.from - range.to;\n range = next;\n }\n return pos;\n }\n /**\n @internal\n */\n clipPos(pos) {\n if (pos >= this.range.from && pos < this.range.to)\n return pos;\n for (let range of this.ranges)\n if (range.to > pos)\n return Math.max(pos, range.from);\n return this.end;\n }\n /**\n Look at a code unit near the stream position. `.peek(0)` equals\n `.next`, `.peek(-1)` gives you the previous character, and so\n on.\n \n Note that looking around during tokenizing creates dependencies\n on potentially far-away content, which may reduce the\n effectiveness incremental parsing—when looking forward—or even\n cause invalid reparses when looking backward more than 25 code\n units, since the library does not track lookbehind.\n */\n peek(offset) {\n let idx = this.chunkOff + offset, pos, result;\n if (idx >= 0 && idx < this.chunk.length) {\n pos = this.pos + offset;\n result = this.chunk.charCodeAt(idx);\n }\n else {\n let resolved = this.resolveOffset(offset, 1);\n if (resolved == null)\n return -1;\n pos = resolved;\n if (pos >= this.chunk2Pos && pos < this.chunk2Pos + this.chunk2.length) {\n result = this.chunk2.charCodeAt(pos - this.chunk2Pos);\n }\n else {\n let i = this.rangeIndex, range = this.range;\n while (range.to <= pos)\n range = this.ranges[++i];\n this.chunk2 = this.input.chunk(this.chunk2Pos = pos);\n if (pos + this.chunk2.length > range.to)\n this.chunk2 = this.chunk2.slice(0, range.to - pos);\n result = this.chunk2.charCodeAt(0);\n }\n }\n if (pos >= this.token.lookAhead)\n this.token.lookAhead = pos + 1;\n return result;\n }\n /**\n Accept a token. By default, the end of the token is set to the\n current stream position, but you can pass an offset (relative to\n the stream position) to change that.\n */\n acceptToken(token, endOffset = 0) {\n let end = endOffset ? this.resolveOffset(endOffset, -1) : this.pos;\n if (end == null || end < this.token.start)\n throw new RangeError(\"Token end out of bounds\");\n this.token.value = token;\n this.token.end = end;\n }\n /**\n Accept a token ending at a specific given position.\n */\n acceptTokenTo(token, endPos) {\n this.token.value = token;\n this.token.end = endPos;\n }\n getChunk() {\n if (this.pos >= this.chunk2Pos && this.pos < this.chunk2Pos + this.chunk2.length) {\n let { chunk, chunkPos } = this;\n this.chunk = this.chunk2;\n this.chunkPos = this.chunk2Pos;\n this.chunk2 = chunk;\n this.chunk2Pos = chunkPos;\n this.chunkOff = this.pos - this.chunkPos;\n }\n else {\n this.chunk2 = this.chunk;\n this.chunk2Pos = this.chunkPos;\n let nextChunk = this.input.chunk(this.pos);\n let end = this.pos + nextChunk.length;\n this.chunk = end > this.range.to ? nextChunk.slice(0, this.range.to - this.pos) : nextChunk;\n this.chunkPos = this.pos;\n this.chunkOff = 0;\n }\n }\n readNext() {\n if (this.chunkOff >= this.chunk.length) {\n this.getChunk();\n if (this.chunkOff == this.chunk.length)\n return this.next = -1;\n }\n return this.next = this.chunk.charCodeAt(this.chunkOff);\n }\n /**\n Move the stream forward N (defaults to 1) code units. Returns\n the new value of [`next`](#lr.InputStream.next).\n */\n advance(n = 1) {\n this.chunkOff += n;\n while (this.pos + n >= this.range.to) {\n if (this.rangeIndex == this.ranges.length - 1)\n return this.setDone();\n n -= this.range.to - this.pos;\n this.range = this.ranges[++this.rangeIndex];\n this.pos = this.range.from;\n }\n this.pos += n;\n if (this.pos >= this.token.lookAhead)\n this.token.lookAhead = this.pos + 1;\n return this.readNext();\n }\n setDone() {\n this.pos = this.chunkPos = this.end;\n this.range = this.ranges[this.rangeIndex = this.ranges.length - 1];\n this.chunk = \"\";\n return this.next = -1;\n }\n /**\n @internal\n */\n reset(pos, token) {\n if (token) {\n this.token = token;\n token.start = pos;\n token.lookAhead = pos + 1;\n token.value = token.extended = -1;\n }\n else {\n this.token = nullToken;\n }\n if (this.pos != pos) {\n this.pos = pos;\n if (pos == this.end) {\n this.setDone();\n return this;\n }\n while (pos < this.range.from)\n this.range = this.ranges[--this.rangeIndex];\n while (pos >= this.range.to)\n this.range = this.ranges[++this.rangeIndex];\n if (pos >= this.chunkPos && pos < this.chunkPos + this.chunk.length) {\n this.chunkOff = pos - this.chunkPos;\n }\n else {\n this.chunk = \"\";\n this.chunkOff = 0;\n }\n this.readNext();\n }\n return this;\n }\n /**\n @internal\n */\n read(from, to) {\n if (from >= this.chunkPos && to <= this.chunkPos + this.chunk.length)\n return this.chunk.slice(from - this.chunkPos, to - this.chunkPos);\n if (from >= this.chunk2Pos && to <= this.chunk2Pos + this.chunk2.length)\n return this.chunk2.slice(from - this.chunk2Pos, to - this.chunk2Pos);\n if (from >= this.range.from && to <= this.range.to)\n return this.input.read(from, to);\n let result = \"\";\n for (let r of this.ranges) {\n if (r.from >= to)\n break;\n if (r.to > from)\n result += this.input.read(Math.max(r.from, from), Math.min(r.to, to));\n }\n return result;\n }\n}\n/**\n@internal\n*/\nclass TokenGroup {\n constructor(data, id) {\n this.data = data;\n this.id = id;\n }\n token(input, stack) {\n let { parser } = stack.p;\n readToken(this.data, input, stack, this.id, parser.data, parser.tokenPrecTable);\n }\n}\nTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/**\n@hide\n*/\nclass LocalTokenGroup {\n constructor(data, precTable, elseToken) {\n this.precTable = precTable;\n this.elseToken = elseToken;\n this.data = typeof data == \"string\" ? decodeArray(data) : data;\n }\n token(input, stack) {\n let start = input.pos, skipped = 0;\n for (;;) {\n let atEof = input.next < 0, nextPos = input.resolveOffset(1, 1);\n readToken(this.data, input, stack, 0, this.data, this.precTable);\n if (input.token.value > -1)\n break;\n if (this.elseToken == null)\n return;\n if (!atEof)\n skipped++;\n if (nextPos == null)\n break;\n input.reset(nextPos, input.token);\n }\n if (skipped) {\n input.reset(start, input.token);\n input.acceptToken(this.elseToken, skipped);\n }\n }\n}\nLocalTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/**\n`@external tokens` declarations in the grammar should resolve to\nan instance of this class.\n*/\nclass ExternalTokenizer {\n /**\n Create a tokenizer. The first argument is the function that,\n given an input stream, scans for the types of tokens it\n recognizes at the stream's position, and calls\n [`acceptToken`](#lr.InputStream.acceptToken) when it finds\n one.\n */\n constructor(\n /**\n @internal\n */\n token, options = {}) {\n this.token = token;\n this.contextual = !!options.contextual;\n this.fallback = !!options.fallback;\n this.extend = !!options.extend;\n }\n}\n// Tokenizer data is stored a big uint16 array containing, for each\n// state:\n//\n// - A group bitmask, indicating what token groups are reachable from\n// this state, so that paths that can only lead to tokens not in\n// any of the current groups can be cut off early.\n//\n// - The position of the end of the state's sequence of accepting\n// tokens\n//\n// - The number of outgoing edges for the state\n//\n// - The accepting tokens, as (token id, group mask) pairs\n//\n// - The outgoing edges, as (start character, end character, state\n// index) triples, with end character being exclusive\n//\n// This function interprets that data, running through a stream as\n// long as new states with the a matching group mask can be reached,\n// and updating `input.token` when it matches a token.\nfunction readToken(data, input, stack, group, precTable, precOffset) {\n let state = 0, groupMask = 1 << group, { dialect } = stack.p.parser;\n scan: for (;;) {\n if ((groupMask & data[state]) == 0)\n break;\n let accEnd = data[state + 1];\n // Check whether this state can lead to a token in the current group\n // Accept tokens in this state, possibly overwriting\n // lower-precedence / shorter tokens\n for (let i = state + 3; i < accEnd; i += 2)\n if ((data[i + 1] & groupMask) > 0) {\n let term = data[i];\n if (dialect.allows(term) &&\n (input.token.value == -1 || input.token.value == term ||\n overrides(term, input.token.value, precTable, precOffset))) {\n input.acceptToken(term);\n break;\n }\n }\n let next = input.next, low = 0, high = data[state + 2];\n // Special case for EOF\n if (input.next < 0 && high > low && data[accEnd + high * 3 - 3] == 65535 /* Seq.End */) {\n state = data[accEnd + high * 3 - 1];\n continue scan;\n }\n // Do a binary search on the state's edges\n for (; low < high;) {\n let mid = (low + high) >> 1;\n let index = accEnd + mid + (mid << 1);\n let from = data[index], to = data[index + 1] || 0x10000;\n if (next < from)\n high = mid;\n else if (next >= to)\n low = mid + 1;\n else {\n state = data[index + 2];\n input.advance();\n continue scan;\n }\n }\n break;\n }\n}\nfunction findOffset(data, start, term) {\n for (let i = start, next; (next = data[i]) != 65535 /* Seq.End */; i++)\n if (next == term)\n return i - start;\n return -1;\n}\nfunction overrides(token, prev, tableData, tableOffset) {\n let iPrev = findOffset(tableData, tableOffset, prev);\n return iPrev < 0 || findOffset(tableData, tableOffset, token) < iPrev;\n}\n\n// Environment variable used to control console output\nconst verbose = typeof process != \"undefined\" && process.env && /\\bparse\\b/.test(process.env.LOG);\nlet stackIDs = null;\nfunction cutAt(tree, pos, side) {\n let cursor = tree.cursor(IterMode.IncludeAnonymous);\n cursor.moveTo(pos);\n for (;;) {\n if (!(side < 0 ? cursor.childBefore(pos) : cursor.childAfter(pos)))\n for (;;) {\n if ((side < 0 ? cursor.to < pos : cursor.from > pos) && !cursor.type.isError)\n return side < 0 ? Math.max(0, Math.min(cursor.to - 1, pos - 25 /* Lookahead.Margin */))\n : Math.min(tree.length, Math.max(cursor.from + 1, pos + 25 /* Lookahead.Margin */));\n if (side < 0 ? cursor.prevSibling() : cursor.nextSibling())\n break;\n if (!cursor.parent())\n return side < 0 ? 0 : tree.length;\n }\n }\n}\nclass FragmentCursor {\n constructor(fragments, nodeSet) {\n this.fragments = fragments;\n this.nodeSet = nodeSet;\n this.i = 0;\n this.fragment = null;\n this.safeFrom = -1;\n this.safeTo = -1;\n this.trees = [];\n this.start = [];\n this.index = [];\n this.nextFragment();\n }\n nextFragment() {\n let fr = this.fragment = this.i == this.fragments.length ? null : this.fragments[this.i++];\n if (fr) {\n this.safeFrom = fr.openStart ? cutAt(fr.tree, fr.from + fr.offset, 1) - fr.offset : fr.from;\n this.safeTo = fr.openEnd ? cutAt(fr.tree, fr.to + fr.offset, -1) - fr.offset : fr.to;\n while (this.trees.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n }\n this.trees.push(fr.tree);\n this.start.push(-fr.offset);\n this.index.push(0);\n this.nextStart = this.safeFrom;\n }\n else {\n this.nextStart = 1e9;\n }\n }\n // `pos` must be >= any previously given `pos` for this cursor\n nodeAt(pos) {\n if (pos < this.nextStart)\n return null;\n while (this.fragment && this.safeTo <= pos)\n this.nextFragment();\n if (!this.fragment)\n return null;\n for (;;) {\n let last = this.trees.length - 1;\n if (last < 0) { // End of tree\n this.nextFragment();\n return null;\n }\n let top = this.trees[last], index = this.index[last];\n if (index == top.children.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n continue;\n }\n let next = top.children[index];\n let start = this.start[last] + top.positions[index];\n if (start > pos) {\n this.nextStart = start;\n return null;\n }\n if (next instanceof Tree) {\n if (start == pos) {\n if (start < this.safeFrom)\n return null;\n let end = start + next.length;\n if (end <= this.safeTo) {\n let lookAhead = next.prop(NodeProp.lookAhead);\n if (!lookAhead || end + lookAhead < this.fragment.to)\n return next;\n }\n }\n this.index[last]++;\n if (start + next.length >= Math.max(this.safeFrom, pos)) { // Enter this node\n this.trees.push(next);\n this.start.push(start);\n this.index.push(0);\n }\n }\n else {\n this.index[last]++;\n this.nextStart = start + next.length;\n }\n }\n }\n}\nclass TokenCache {\n constructor(parser, stream) {\n this.stream = stream;\n this.tokens = [];\n this.mainToken = null;\n this.actions = [];\n this.tokens = parser.tokenizers.map(_ => new CachedToken);\n }\n getActions(stack) {\n let actionIndex = 0;\n let main = null;\n let { parser } = stack.p, { tokenizers } = parser;\n let mask = parser.stateSlot(stack.state, 3 /* ParseState.TokenizerMask */);\n let context = stack.curContext ? stack.curContext.hash : 0;\n let lookAhead = 0;\n for (let i = 0; i < tokenizers.length; i++) {\n if (((1 << i) & mask) == 0)\n continue;\n let tokenizer = tokenizers[i], token = this.tokens[i];\n if (main && !tokenizer.fallback)\n continue;\n if (tokenizer.contextual || token.start != stack.pos || token.mask != mask || token.context != context) {\n this.updateCachedToken(token, tokenizer, stack);\n token.mask = mask;\n token.context = context;\n }\n if (token.lookAhead > token.end + 25 /* Lookahead.Margin */)\n lookAhead = Math.max(token.lookAhead, lookAhead);\n if (token.value != 0 /* Term.Err */) {\n let startIndex = actionIndex;\n if (token.extended > -1)\n actionIndex = this.addActions(stack, token.extended, token.end, actionIndex);\n actionIndex = this.addActions(stack, token.value, token.end, actionIndex);\n if (!tokenizer.extend) {\n main = token;\n if (actionIndex > startIndex)\n break;\n }\n }\n }\n while (this.actions.length > actionIndex)\n this.actions.pop();\n if (lookAhead)\n stack.setLookAhead(lookAhead);\n if (!main && stack.pos == this.stream.end) {\n main = new CachedToken;\n main.value = stack.p.parser.eofTerm;\n main.start = main.end = stack.pos;\n actionIndex = this.addActions(stack, main.value, main.end, actionIndex);\n }\n this.mainToken = main;\n return this.actions;\n }\n getMainToken(stack) {\n if (this.mainToken)\n return this.mainToken;\n let main = new CachedToken, { pos, p } = stack;\n main.start = pos;\n main.end = Math.min(pos + 1, p.stream.end);\n main.value = pos == p.stream.end ? p.parser.eofTerm : 0 /* Term.Err */;\n return main;\n }\n updateCachedToken(token, tokenizer, stack) {\n let start = this.stream.clipPos(stack.pos);\n tokenizer.token(this.stream.reset(start, token), stack);\n if (token.value > -1) {\n let { parser } = stack.p;\n for (let i = 0; i < parser.specialized.length; i++)\n if (parser.specialized[i] == token.value) {\n let result = parser.specializers[i](this.stream.read(token.start, token.end), stack);\n if (result >= 0 && stack.p.parser.dialect.allows(result >> 1)) {\n if ((result & 1) == 0 /* Specialize.Specialize */)\n token.value = result >> 1;\n else\n token.extended = result >> 1;\n break;\n }\n }\n }\n else {\n token.value = 0 /* Term.Err */;\n token.end = this.stream.clipPos(start + 1);\n }\n }\n putAction(action, token, end, index) {\n // Don't add duplicate actions\n for (let i = 0; i < index; i += 3)\n if (this.actions[i] == action)\n return index;\n this.actions[index++] = action;\n this.actions[index++] = token;\n this.actions[index++] = end;\n return index;\n }\n addActions(stack, token, end, index) {\n let { state } = stack, { parser } = stack.p, { data } = parser;\n for (let set = 0; set < 2; set++) {\n for (let i = parser.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */);; i += 3) {\n if (data[i] == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */) {\n i = pair(data, i + 2);\n }\n else {\n if (index == 0 && data[i + 1] == 2 /* Seq.Other */)\n index = this.putAction(pair(data, i + 2), token, end, index);\n break;\n }\n }\n if (data[i] == token)\n index = this.putAction(pair(data, i + 1), token, end, index);\n }\n }\n return index;\n }\n}\nclass Parse {\n constructor(parser, input, fragments, ranges) {\n this.parser = parser;\n this.input = input;\n this.ranges = ranges;\n this.recovering = 0;\n this.nextStackID = 0x2654; // ♔, ♕, ♖, ♗, ♘, ♙, ♠, ♡, ♢, ♣, ♤, ♥, ♦, ♧\n this.minStackPos = 0;\n this.reused = [];\n this.stoppedAt = null;\n this.lastBigReductionStart = -1;\n this.lastBigReductionSize = 0;\n this.bigReductionCount = 0;\n this.stream = new InputStream(input, ranges);\n this.tokens = new TokenCache(parser, this.stream);\n this.topTerm = parser.top[1];\n let { from } = ranges[0];\n this.stacks = [Stack.start(this, parser.top[0], from)];\n this.fragments = fragments.length && this.stream.end - from > parser.bufferLength * 4\n ? new FragmentCursor(fragments, parser.nodeSet) : null;\n }\n get parsedPos() {\n return this.minStackPos;\n }\n // Move the parser forward. This will process all parse stacks at\n // `this.pos` and try to advance them to a further position. If no\n // stack for such a position is found, it'll start error-recovery.\n //\n // When the parse is finished, this will return a syntax tree. When\n // not, it returns `null`.\n advance() {\n let stacks = this.stacks, pos = this.minStackPos;\n // This will hold stacks beyond `pos`.\n let newStacks = this.stacks = [];\n let stopped, stoppedTokens;\n // If a large amount of reductions happened with the same start\n // position, force the stack out of that production in order to\n // avoid creating a tree too deep to recurse through.\n // (This is an ugly kludge, because unfortunately there is no\n // straightforward, cheap way to check for this happening, due to\n // the history of reductions only being available in an\n // expensive-to-access format in the stack buffers.)\n if (this.bigReductionCount > 300 /* Rec.MaxLeftAssociativeReductionCount */ && stacks.length == 1) {\n let [s] = stacks;\n while (s.forceReduce() && s.stack.length && s.stack[s.stack.length - 2] >= this.lastBigReductionStart) { }\n this.bigReductionCount = this.lastBigReductionSize = 0;\n }\n // Keep advancing any stacks at `pos` until they either move\n // forward or can't be advanced. Gather stacks that can't be\n // advanced further in `stopped`.\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i];\n for (;;) {\n this.tokens.mainToken = null;\n if (stack.pos > pos) {\n newStacks.push(stack);\n }\n else if (this.advanceStack(stack, newStacks, stacks)) {\n continue;\n }\n else {\n if (!stopped) {\n stopped = [];\n stoppedTokens = [];\n }\n stopped.push(stack);\n let tok = this.tokens.getMainToken(stack);\n stoppedTokens.push(tok.value, tok.end);\n }\n break;\n }\n }\n if (!newStacks.length) {\n let finished = stopped && findFinished(stopped);\n if (finished) {\n if (verbose)\n console.log(\"Finish with \" + this.stackID(finished));\n return this.stackToTree(finished);\n }\n if (this.parser.strict) {\n if (verbose && stopped)\n console.log(\"Stuck with token \" + (this.tokens.mainToken ? this.parser.getName(this.tokens.mainToken.value) : \"none\"));\n throw new SyntaxError(\"No parse at \" + pos);\n }\n if (!this.recovering)\n this.recovering = 5 /* Rec.Distance */;\n }\n if (this.recovering && stopped) {\n let finished = this.stoppedAt != null && stopped[0].pos > this.stoppedAt ? stopped[0]\n : this.runRecovery(stopped, stoppedTokens, newStacks);\n if (finished) {\n if (verbose)\n console.log(\"Force-finish \" + this.stackID(finished));\n return this.stackToTree(finished.forceAll());\n }\n }\n if (this.recovering) {\n let maxRemaining = this.recovering == 1 ? 1 : this.recovering * 3 /* Rec.MaxRemainingPerStep */;\n if (newStacks.length > maxRemaining) {\n newStacks.sort((a, b) => b.score - a.score);\n while (newStacks.length > maxRemaining)\n newStacks.pop();\n }\n if (newStacks.some(s => s.reducePos > pos))\n this.recovering--;\n }\n else if (newStacks.length > 1) {\n // Prune stacks that are in the same state, or that have been\n // running without splitting for a while, to avoid getting stuck\n // with multiple successful stacks running endlessly on.\n outer: for (let i = 0; i < newStacks.length - 1; i++) {\n let stack = newStacks[i];\n for (let j = i + 1; j < newStacks.length; j++) {\n let other = newStacks[j];\n if (stack.sameState(other) ||\n stack.buffer.length > 500 /* Rec.MinBufferLengthPrune */ && other.buffer.length > 500 /* Rec.MinBufferLengthPrune */) {\n if (((stack.score - other.score) || (stack.buffer.length - other.buffer.length)) > 0) {\n newStacks.splice(j--, 1);\n }\n else {\n newStacks.splice(i--, 1);\n continue outer;\n }\n }\n }\n }\n if (newStacks.length > 12 /* Rec.MaxStackCount */) {\n newStacks.sort((a, b) => b.score - a.score);\n newStacks.splice(12 /* Rec.MaxStackCount */, newStacks.length - 12 /* Rec.MaxStackCount */);\n }\n }\n this.minStackPos = newStacks[0].pos;\n for (let i = 1; i < newStacks.length; i++)\n if (newStacks[i].pos < this.minStackPos)\n this.minStackPos = newStacks[i].pos;\n return null;\n }\n stopAt(pos) {\n if (this.stoppedAt != null && this.stoppedAt < pos)\n throw new RangeError(\"Can't move stoppedAt forward\");\n this.stoppedAt = pos;\n }\n // Returns an updated version of the given stack, or null if the\n // stack can't advance normally. When `split` and `stacks` are\n // given, stacks split off by ambiguous operations will be pushed to\n // `split`, or added to `stacks` if they move `pos` forward.\n advanceStack(stack, stacks, split) {\n let start = stack.pos, { parser } = this;\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (this.stoppedAt != null && start > this.stoppedAt)\n return stack.forceReduce() ? stack : null;\n if (this.fragments) {\n let strictCx = stack.curContext && stack.curContext.tracker.strict, cxHash = strictCx ? stack.curContext.hash : 0;\n for (let cached = this.fragments.nodeAt(start); cached;) {\n let match = this.parser.nodeSet.types[cached.type.id] == cached.type ? parser.getGoto(stack.state, cached.type.id) : -1;\n if (match > -1 && cached.length && (!strictCx || (cached.prop(NodeProp.contextHash) || 0) == cxHash)) {\n stack.useNode(cached, match);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via reuse of ${parser.getName(cached.type.id)})`);\n return true;\n }\n if (!(cached instanceof Tree) || cached.children.length == 0 || cached.positions[0] > 0)\n break;\n let inner = cached.children[0];\n if (inner instanceof Tree && cached.positions[0] == 0)\n cached = inner;\n else\n break;\n }\n }\n let defaultReduce = parser.stateSlot(stack.state, 4 /* ParseState.DefaultReduce */);\n if (defaultReduce > 0) {\n stack.reduce(defaultReduce);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via always-reduce ${parser.getName(defaultReduce & 65535 /* Action.ValueMask */)})`);\n return true;\n }\n if (stack.stack.length >= 8400 /* Rec.CutDepth */) {\n while (stack.stack.length > 6000 /* Rec.CutTo */ && stack.forceReduce()) { }\n }\n let actions = this.tokens.getActions(stack);\n for (let i = 0; i < actions.length;) {\n let action = actions[i++], term = actions[i++], end = actions[i++];\n let last = i == actions.length || !split;\n let localStack = last ? stack : stack.split();\n let main = this.tokens.mainToken;\n localStack.apply(action, term, main ? main.start : localStack.pos, end);\n if (verbose)\n console.log(base + this.stackID(localStack) + ` (via ${(action & 65536 /* Action.ReduceFlag */) == 0 ? \"shift\"\n : `reduce of ${parser.getName(action & 65535 /* Action.ValueMask */)}`} for ${parser.getName(term)} @ ${start}${localStack == stack ? \"\" : \", split\"})`);\n if (last)\n return true;\n else if (localStack.pos > start)\n stacks.push(localStack);\n else\n split.push(localStack);\n }\n return false;\n }\n // Advance a given stack forward as far as it will go. Returns the\n // (possibly updated) stack if it got stuck, or null if it moved\n // forward and was given to `pushStackDedup`.\n advanceFully(stack, newStacks) {\n let pos = stack.pos;\n for (;;) {\n if (!this.advanceStack(stack, null, null))\n return false;\n if (stack.pos > pos) {\n pushStackDedup(stack, newStacks);\n return true;\n }\n }\n }\n runRecovery(stacks, tokens, newStacks) {\n let finished = null, restarted = false;\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i], token = tokens[i << 1], tokenEnd = tokens[(i << 1) + 1];\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (stack.deadEnd) {\n if (restarted)\n continue;\n restarted = true;\n stack.restart();\n if (verbose)\n console.log(base + this.stackID(stack) + \" (restarted)\");\n let done = this.advanceFully(stack, newStacks);\n if (done)\n continue;\n }\n let force = stack.split(), forceBase = base;\n for (let j = 0; j < 10 /* Rec.ForceReduceLimit */ && force.forceReduce(); j++) {\n if (verbose)\n console.log(forceBase + this.stackID(force) + \" (via force-reduce)\");\n let done = this.advanceFully(force, newStacks);\n if (done)\n break;\n if (verbose)\n forceBase = this.stackID(force) + \" -> \";\n }\n for (let insert of stack.recoverByInsert(token)) {\n if (verbose)\n console.log(base + this.stackID(insert) + \" (via recover-insert)\");\n this.advanceFully(insert, newStacks);\n }\n if (this.stream.end > stack.pos) {\n if (tokenEnd == stack.pos) {\n tokenEnd++;\n token = 0 /* Term.Err */;\n }\n stack.recoverByDelete(token, tokenEnd);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via recover-delete ${this.parser.getName(token)})`);\n pushStackDedup(stack, newStacks);\n }\n else if (!finished || finished.score < force.score) {\n finished = force;\n }\n }\n return finished;\n }\n // Convert the stack's buffer to a syntax tree.\n stackToTree(stack) {\n stack.close();\n return Tree.build({ buffer: StackBufferCursor.create(stack),\n nodeSet: this.parser.nodeSet,\n topID: this.topTerm,\n maxBufferLength: this.parser.bufferLength,\n reused: this.reused,\n start: this.ranges[0].from,\n length: stack.pos - this.ranges[0].from,\n minRepeatType: this.parser.minRepeatTerm });\n }\n stackID(stack) {\n let id = (stackIDs || (stackIDs = new WeakMap)).get(stack);\n if (!id)\n stackIDs.set(stack, id = String.fromCodePoint(this.nextStackID++));\n return id + stack;\n }\n}\nfunction pushStackDedup(stack, newStacks) {\n for (let i = 0; i < newStacks.length; i++) {\n let other = newStacks[i];\n if (other.pos == stack.pos && other.sameState(stack)) {\n if (newStacks[i].score < stack.score)\n newStacks[i] = stack;\n return;\n }\n }\n newStacks.push(stack);\n}\nclass Dialect {\n constructor(source, flags, disabled) {\n this.source = source;\n this.flags = flags;\n this.disabled = disabled;\n }\n allows(term) { return !this.disabled || this.disabled[term] == 0; }\n}\nconst id = x => x;\n/**\nContext trackers are used to track stateful context (such as\nindentation in the Python grammar, or parent elements in the XML\ngrammar) needed by external tokenizers. You declare them in a\ngrammar file as `@context exportName from \"module\"`.\n\nContext values should be immutable, and can be updated (replaced)\non shift or reduce actions.\n\nThe export used in a `@context` declaration should be of this\ntype.\n*/\nclass ContextTracker {\n /**\n Define a context tracker.\n */\n constructor(spec) {\n this.start = spec.start;\n this.shift = spec.shift || id;\n this.reduce = spec.reduce || id;\n this.reuse = spec.reuse || id;\n this.hash = spec.hash || (() => 0);\n this.strict = spec.strict !== false;\n }\n}\n/**\nHolds the parse tables for a given grammar, as generated by\n`lezer-generator`, and provides [methods](#common.Parser) to parse\ncontent with.\n*/\nclass LRParser extends Parser {\n /**\n @internal\n */\n constructor(spec) {\n super();\n /**\n @internal\n */\n this.wrappers = [];\n if (spec.version != 14 /* File.Version */)\n throw new RangeError(`Parser version (${spec.version}) doesn't match runtime version (${14 /* File.Version */})`);\n let nodeNames = spec.nodeNames.split(\" \");\n this.minRepeatTerm = nodeNames.length;\n for (let i = 0; i < spec.repeatNodeCount; i++)\n nodeNames.push(\"\");\n let topTerms = Object.keys(spec.topRules).map(r => spec.topRules[r][1]);\n let nodeProps = [];\n for (let i = 0; i < nodeNames.length; i++)\n nodeProps.push([]);\n function setProp(nodeID, prop, value) {\n nodeProps[nodeID].push([prop, prop.deserialize(String(value))]);\n }\n if (spec.nodeProps)\n for (let propSpec of spec.nodeProps) {\n let prop = propSpec[0];\n if (typeof prop == \"string\")\n prop = NodeProp[prop];\n for (let i = 1; i < propSpec.length;) {\n let next = propSpec[i++];\n if (next >= 0) {\n setProp(next, prop, propSpec[i++]);\n }\n else {\n let value = propSpec[i + -next];\n for (let j = -next; j > 0; j--)\n setProp(propSpec[i++], prop, value);\n i++;\n }\n }\n }\n this.nodeSet = new NodeSet(nodeNames.map((name, i) => NodeType.define({\n name: i >= this.minRepeatTerm ? undefined : name,\n id: i,\n props: nodeProps[i],\n top: topTerms.indexOf(i) > -1,\n error: i == 0,\n skipped: spec.skippedNodes && spec.skippedNodes.indexOf(i) > -1\n })));\n if (spec.propSources)\n this.nodeSet = this.nodeSet.extend(...spec.propSources);\n this.strict = false;\n this.bufferLength = DefaultBufferLength;\n let tokenArray = decodeArray(spec.tokenData);\n this.context = spec.context;\n this.specializerSpecs = spec.specialized || [];\n this.specialized = new Uint16Array(this.specializerSpecs.length);\n for (let i = 0; i < this.specializerSpecs.length; i++)\n this.specialized[i] = this.specializerSpecs[i].term;\n this.specializers = this.specializerSpecs.map(getSpecializer);\n this.states = decodeArray(spec.states, Uint32Array);\n this.data = decodeArray(spec.stateData);\n this.goto = decodeArray(spec.goto);\n this.maxTerm = spec.maxTerm;\n this.tokenizers = spec.tokenizers.map(value => typeof value == \"number\" ? new TokenGroup(tokenArray, value) : value);\n this.topRules = spec.topRules;\n this.dialects = spec.dialects || {};\n this.dynamicPrecedences = spec.dynamicPrecedences || null;\n this.tokenPrecTable = spec.tokenPrec;\n this.termNames = spec.termNames || null;\n this.maxNode = this.nodeSet.types.length - 1;\n this.dialect = this.parseDialect();\n this.top = this.topRules[Object.keys(this.topRules)[0]];\n }\n createParse(input, fragments, ranges) {\n let parse = new Parse(this, input, fragments, ranges);\n for (let w of this.wrappers)\n parse = w(parse, input, fragments, ranges);\n return parse;\n }\n /**\n Get a goto table entry @internal\n */\n getGoto(state, term, loose = false) {\n let table = this.goto;\n if (term >= table[0])\n return -1;\n for (let pos = table[term + 1];;) {\n let groupTag = table[pos++], last = groupTag & 1;\n let target = table[pos++];\n if (last && loose)\n return target;\n for (let end = pos + (groupTag >> 1); pos < end; pos++)\n if (table[pos] == state)\n return target;\n if (last)\n return -1;\n }\n }\n /**\n Check if this state has an action for a given terminal @internal\n */\n hasAction(state, terminal) {\n let data = this.data;\n for (let set = 0; set < 2; set++) {\n for (let i = this.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */), next;; i += 3) {\n if ((next = data[i]) == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */)\n next = data[i = pair(data, i + 2)];\n else if (data[i + 1] == 2 /* Seq.Other */)\n return pair(data, i + 2);\n else\n break;\n }\n if (next == terminal || next == 0 /* Term.Err */)\n return pair(data, i + 1);\n }\n }\n return 0;\n }\n /**\n @internal\n */\n stateSlot(state, slot) {\n return this.states[(state * 6 /* ParseState.Size */) + slot];\n }\n /**\n @internal\n */\n stateFlag(state, flag) {\n return (this.stateSlot(state, 0 /* ParseState.Flags */) & flag) > 0;\n }\n /**\n @internal\n */\n validAction(state, action) {\n return !!this.allActions(state, a => a == action ? true : null);\n }\n /**\n @internal\n */\n allActions(state, action) {\n let deflt = this.stateSlot(state, 4 /* ParseState.DefaultReduce */);\n let result = deflt ? action(deflt) : undefined;\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */); result == null; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n break;\n }\n result = action(pair(this.data, i + 1));\n }\n return result;\n }\n /**\n Get the states that can follow this one through shift actions or\n goto jumps. @internal\n */\n nextStates(state) {\n let result = [];\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */);; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n break;\n }\n if ((this.data[i + 2] & (65536 /* Action.ReduceFlag */ >> 16)) == 0) {\n let value = this.data[i + 1];\n if (!result.some((v, i) => (i & 1) && v == value))\n result.push(this.data[i], value);\n }\n }\n return result;\n }\n /**\n Configure the parser. Returns a new parser instance that has the\n given settings modified. Settings not provided in `config` are\n kept from the original parser.\n */\n configure(config) {\n // Hideous reflection-based kludge to make it easy to create a\n // slightly modified copy of a parser.\n let copy = Object.assign(Object.create(LRParser.prototype), this);\n if (config.props)\n copy.nodeSet = this.nodeSet.extend(...config.props);\n if (config.top) {\n let info = this.topRules[config.top];\n if (!info)\n throw new RangeError(`Invalid top rule name ${config.top}`);\n copy.top = info;\n }\n if (config.tokenizers)\n copy.tokenizers = this.tokenizers.map(t => {\n let found = config.tokenizers.find(r => r.from == t);\n return found ? found.to : t;\n });\n if (config.specializers) {\n copy.specializers = this.specializers.slice();\n copy.specializerSpecs = this.specializerSpecs.map((s, i) => {\n let found = config.specializers.find(r => r.from == s.external);\n if (!found)\n return s;\n let spec = Object.assign(Object.assign({}, s), { external: found.to });\n copy.specializers[i] = getSpecializer(spec);\n return spec;\n });\n }\n if (config.contextTracker)\n copy.context = config.contextTracker;\n if (config.dialect)\n copy.dialect = this.parseDialect(config.dialect);\n if (config.strict != null)\n copy.strict = config.strict;\n if (config.wrap)\n copy.wrappers = copy.wrappers.concat(config.wrap);\n if (config.bufferLength != null)\n copy.bufferLength = config.bufferLength;\n return copy;\n }\n /**\n Tells you whether any [parse wrappers](#lr.ParserConfig.wrap)\n are registered for this parser.\n */\n hasWrappers() {\n return this.wrappers.length > 0;\n }\n /**\n Returns the name associated with a given term. This will only\n work for all terms when the parser was generated with the\n `--names` option. By default, only the names of tagged terms are\n stored.\n */\n getName(term) {\n return this.termNames ? this.termNames[term] : String(term <= this.maxNode && this.nodeSet.types[term].name || term);\n }\n /**\n The eof term id is always allocated directly after the node\n types. @internal\n */\n get eofTerm() { return this.maxNode + 1; }\n /**\n The type of top node produced by the parser.\n */\n get topNode() { return this.nodeSet.types[this.top[1]]; }\n /**\n @internal\n */\n dynamicPrecedence(term) {\n let prec = this.dynamicPrecedences;\n return prec == null ? 0 : prec[term] || 0;\n }\n /**\n @internal\n */\n parseDialect(dialect) {\n let values = Object.keys(this.dialects), flags = values.map(() => false);\n if (dialect)\n for (let part of dialect.split(\" \")) {\n let id = values.indexOf(part);\n if (id >= 0)\n flags[id] = true;\n }\n let disabled = null;\n for (let i = 0; i < values.length; i++)\n if (!flags[i]) {\n for (let j = this.dialects[values[i]], id; (id = this.data[j++]) != 65535 /* Seq.End */;)\n (disabled || (disabled = new Uint8Array(this.maxTerm + 1)))[id] = 1;\n }\n return new Dialect(dialect, flags, disabled);\n }\n /**\n Used by the output of the parser generator. Not available to\n user code. @hide\n */\n static deserialize(spec) {\n return new LRParser(spec);\n }\n}\nfunction pair(data, off) { return data[off] | (data[off + 1] << 16); }\nfunction findFinished(stacks) {\n let best = null;\n for (let stack of stacks) {\n let stopped = stack.p.stoppedAt;\n if ((stack.pos == stack.p.stream.end || stopped != null && stack.pos > stopped) &&\n stack.p.parser.stateFlag(stack.state, 2 /* StateFlag.Accepting */) &&\n (!best || best.score < stack.score))\n best = stack;\n }\n return best;\n}\nfunction getSpecializer(spec) {\n if (spec.external) {\n let mask = spec.extend ? 1 /* Specialize.Extend */ : 0 /* Specialize.Specialize */;\n return (value, stack) => (spec.external(value, stack) << 1) | mask;\n }\n return spec.get;\n}\n\nexport { ContextTracker, ExternalTokenizer, InputStream, LRParser, LocalTokenGroup, Stack };\n","import { ExternalTokenizer, LRParser, LocalTokenGroup } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst descendantOp = 122,\n Unit = 1,\n identifier = 123,\n callee = 124,\n VariableName = 2,\n queryIdentifier = 125,\n queryVariableName = 3,\n QueryCallee = 4;\n\n/* Hand-written tokenizers for CSS tokens that can't be\n expressed by Lezer's built-in tokenizer. */\n\nconst space = [9, 10, 11, 12, 13, 32, 133, 160, 5760, 8192, 8193, 8194, 8195, 8196, 8197,\n 8198, 8199, 8200, 8201, 8202, 8232, 8233, 8239, 8287, 12288];\nconst colon = 58, parenL = 40, underscore = 95, bracketL = 91, dash = 45, period = 46,\n hash = 35, percent = 37, ampersand = 38, backslash = 92, newline = 10, asterisk = 42;\n\nfunction isAlpha(ch) { return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch >= 161 }\n\nfunction isDigit(ch) { return ch >= 48 && ch <= 57 }\n\nfunction isHex(ch) { return isDigit(ch) || ch >= 97 && ch <= 102 || ch >= 65 && ch <= 70 }\n\nconst identifierTokens = (id, varName, callee) => (input, stack) => {\n for (let inside = false, dashes = 0, i = 0;; i++) {\n let {next} = input;\n if (isAlpha(next) || next == dash || next == underscore || (inside && isDigit(next))) {\n if (!inside && (next != dash || i > 0)) inside = true;\n if (dashes === i && next == dash) dashes++;\n input.advance();\n } else if (next == backslash && input.peek(1) != newline) {\n input.advance();\n if (isHex(input.next)) {\n do { input.advance(); } while (isHex(input.next))\n if (input.next == 32) input.advance();\n } else if (input.next > -1) {\n input.advance();\n }\n inside = true;\n } else {\n if (inside) input.acceptToken(\n dashes == 2 && stack.canShift(VariableName) ? varName : next == parenL ? callee : id\n );\n break\n }\n }\n};\n\nconst identifiers = new ExternalTokenizer(\n identifierTokens(identifier, VariableName, callee)\n);\nconst queryIdentifiers = new ExternalTokenizer(\n identifierTokens(queryIdentifier, queryVariableName, QueryCallee)\n);\n\nconst descendant = new ExternalTokenizer(input => {\n if (space.includes(input.peek(-1))) {\n let {next} = input;\n if (isAlpha(next) || next == underscore || next == hash || next == period ||\n next == asterisk || next == bracketL || next == colon && isAlpha(input.peek(1)) ||\n next == dash || next == ampersand)\n input.acceptToken(descendantOp);\n }\n});\n\nconst unitToken = new ExternalTokenizer(input => {\n if (!space.includes(input.peek(-1))) {\n let {next} = input;\n if (next == percent) { input.advance(); input.acceptToken(Unit); }\n if (isAlpha(next)) {\n do { input.advance(); } while (isAlpha(input.next) || isDigit(input.next))\n input.acceptToken(Unit);\n }\n }\n});\n\nconst cssHighlighting = styleTags({\n \"AtKeyword import charset namespace keyframes media supports\": tags.definitionKeyword,\n \"from to selector\": tags.keyword,\n NamespaceName: tags.namespace,\n KeyframeName: tags.labelName,\n KeyframeRangeName: tags.operatorKeyword,\n TagName: tags.tagName,\n ClassName: tags.className,\n PseudoClassName: tags.constant(tags.className),\n IdName: tags.labelName,\n \"FeatureName PropertyName\": tags.propertyName,\n AttributeName: tags.attributeName,\n NumberLiteral: tags.number,\n KeywordQuery: tags.keyword,\n UnaryQueryOp: tags.operatorKeyword,\n \"CallTag ValueName\": tags.atom,\n VariableName: tags.variableName,\n Callee: tags.operatorKeyword,\n Unit: tags.unit,\n \"UniversalSelector NestingSelector\": tags.definitionOperator,\n \"MatchOp CompareOp\": tags.compareOperator,\n \"ChildOp SiblingOp, LogicOp\": tags.logicOperator,\n BinOp: tags.arithmeticOperator,\n Important: tags.modifier,\n Comment: tags.blockComment,\n ColorLiteral: tags.color,\n \"ParenthesizedContent StringLiteral\": tags.string,\n \":\": tags.punctuation,\n \"PseudoOp #\": tags.derefOperator,\n \"; ,\": tags.separator,\n \"( )\": tags.paren,\n \"[ ]\": tags.squareBracket,\n \"{ }\": tags.brace\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst spec_callee = {__proto__:null,lang:38, \"nth-child\":38, \"nth-last-child\":38, \"nth-of-type\":38, \"nth-last-of-type\":38, dir:38, \"host-context\":38, if:84, url:124, \"url-prefix\":124, domain:124, regexp:124};\nconst spec_queryIdentifier = {__proto__:null,or:98, and:98, not:106, only:106, layer:170};\nconst spec_QueryCallee = {__proto__:null,selector:112, layer:166};\nconst spec_AtKeyword = {__proto__:null,\"@import\":162, \"@media\":174, \"@charset\":178, \"@namespace\":182, \"@keyframes\":188, \"@supports\":200, \"@scope\":204};\nconst spec_identifier = {__proto__:null,to:207};\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"EbQYQdOOO#qQdOOP#xO`OOOOQP'#Cf'#CfOOQP'#Ce'#CeO#}QdO'#ChO$nQaO'#CcO$xQdO'#CkO%TQdO'#DpO%YQdO'#DrO%_QdO'#DuO%_QdO'#DxOOQP'#FV'#FVO&eQhO'#EhOOQS'#FU'#FUOOQS'#Ek'#EkQYQdOOO&lQdO'#EOO&PQhO'#EUO&lQdO'#EWO'aQdO'#EYO'lQdO'#E]O'tQhO'#EcO(VQdO'#EeO(bQaO'#CfO)VQ`O'#D{O)[Q`O'#F`O)gQdO'#F`QOQ`OOP)qO&jO'#CaPOOO)C@t)C@tOOQP'#Cj'#CjOOQP,59S,59SO#}QdO,59SO)|QdO,59VO%TQdO,5:[O%YQdO,5:^O%_QdO,5:aO%_QdO,5:cO%_QdO,5:dO%_QdO'#ErO*XQ`O,58}O*aQdO'#DzOOQS,58},58}OOQP'#Cn'#CnOOQO'#Dn'#DnOOQP,59V,59VO*hQ`O,59VO*mQ`O,59VOOQP'#Dq'#DqOOQP,5:[,5:[OOQO'#Ds'#DsO*rQpO,5:^O+]QaO,5:aO+sQaO,5:dOOQW'#DZ'#DZO,ZQhO'#DdO,xQhO'#FaO'tQhO'#DbO-WQ`O'#DhOOQW'#F['#F[O-]Q`O,5;SO-eQ`O'#DeOOQS-E8i-E8iOOQ['#Cs'#CsO-jQdO'#CtO.QQdO'#CzO.hQdO'#C}O/OQ!pO'#DPO1RQ!jO,5:jOOQO'#DU'#DUO*mQ`O'#DTO1cQ!nO'#FXO3`Q`O'#DVO3eQ`O'#DkOOQ['#FX'#FXO-`Q`O,5:pO3jQ!bO,5:rOOQS'#E['#E[O3rQ`O,5:tO3wQdO,5:tOOQO'#E_'#E_O4PQ`O,5:wO4UQhO,5:}O%_QdO'#DgOOQS,5;P,5;PO-eQ`O,5;PO4^QdO,5;PO4fQdO,5:gO4vQdO'#EtO5TQ`O,5;zO5TQ`O,5;zPOOO'#Ej'#EjP5`O&jO,58{POOO,58{,58{OOQP1G.n1G.nOOQP1G.q1G.qO*hQ`O1G.qO*mQ`O1G.qOOQP1G/v1G/vO5kQpO1G/xO5sQaO1G/{O6ZQaO1G/}O6qQaO1G0OO7XQaO,5;^OOQO-E8p-E8pOOQS1G.i1G.iO7cQ`O,5:fO7hQdO'#DoO7oQdO'#CrOOQP1G/x1G/xO&lQdO1G/xO7vQ!jO'#DZO8UQ!bO,59vO8^QhO,5:OOOQO'#F]'#F]O8XQ!bO,59zO'tQhO,59xO8fQhO'#EvO8sQ`O,5;{O9OQhO,59|O9uQhO'#DiOOQW,5:S,5:SOOQS1G0n1G0nOOQW,5:P,5:PO9|Q!fO'#FYOOQS'#FY'#FYOOQS'#Em'#EmO;^QdO,59`OOQ[,59`,59`O;tQdO,59fOOQ[,59f,59fO<[QdO,59iOOQ[,59i,59iOOQ[,59k,59kO&lQdO,59mO<rQhO'#EQOOQW'#EQ'#EQO=WQ`O1G0UO1[QhO1G0UOOQ[,59o,59oO'tQhO'#DXOOQ[,59q,59qO=]Q#tO,5:VOOQS1G0[1G0[OOQS1G0^1G0^OOQS1G0`1G0`O=hQ`O1G0`O=mQdO'#E`OOQS1G0c1G0cOOQS1G0i1G0iO=xQaO,5:RO-`Q`O1G0kOOQS1G0k1G0kO-eQ`O1G0kO>PQ!fO1G0ROOQO1G0R1G0ROOQO,5;`,5;`O>gQdO,5;`OOQO-E8r-E8rO>tQ`O1G1fPOOO-E8h-E8hPOOO1G.g1G.gOOQP7+$]7+$]OOQP7+%d7+%dO&lQdO7+%dOOQS1G0Q1G0QO?PQaO'#F_O?ZQ`O,5:ZO?`Q!fO'#ElO@^QdO'#FWO@hQ`O,59^O@mQ!bO7+%dO&lQdO1G/bO@uQhO1G/fOOQW1G/j1G/jOOQW1G/d1G/dOAWQhO,5;bOOQO-E8t-E8tOAfQhO'#DZOAtQhO'#F^OBPQ`O'#F^OBUQ`O,5:TOOQS-E8k-E8kOOQ[1G.z1G.zOOQ[1G/Q1G/QOOQ[1G/T1G/TOOQ[1G/X1G/XOBZQdO,5:lOOQS7+%p7+%pOB`Q`O7+%pOBeQhO'#DYOBmQ`O,59sO'tQhO,59sOOQ[1G/q1G/qOBuQ`O1G/qOOQS7+%z7+%zOBzQbO'#DPOOQO'#Eb'#EbOCYQ`O'#EaOOQO'#Ea'#EaOCeQ`O'#EwOCmQdO,5:zOOQS,5:z,5:zOOQ[1G/m1G/mOOQS7+&V7+&VO-`Q`O7+&VOCxQ!fO'#EsO&lQdO'#EsOEPQdO7+%mOOQO7+%m7+%mOOQO1G0z1G0zOEdQ!bO<<IOOElQdO'#EqOEvQ`O,5;yOOQP1G/u1G/uOOQS-E8j-E8jOFOQdO'#EpOFYQ`O,5;rOOQ]1G.x1G.xOOQP<<IO<<IOOFbQdO7+$|OOQO'#D]'#D]OFiQ!bO7+%QOFqQhO'#EoOF{Q`O,5;xO&lQdO,5;xOOQW1G/o1G/oOOQO'#ES'#ESOGTQ`O1G0WOOQS<<I[<<I[O&lQdO,59tOGnQhO1G/_OOQ[1G/_1G/_OGuQ`O1G/_OOQW-E8l-E8lOOQ[7+%]7+%]OOQO,5:{,5:{O=pQdO'#ExOCeQ`O,5;cOOQS,5;c,5;cOOQS-E8u-E8uOOQS1G0f1G0fOOQS<<Iq<<IqOG}Q!fO,5;_OOQS-E8q-E8qOOQO<<IX<<IXOOQPAN>jAN>jOIUQaO,5;]OOQO-E8o-E8oOI`QdO,5;[OOQO-E8n-E8nOOQW<<Hh<<HhOOQW<<Hl<<HlOIjQhO<<HlOI{QhO,5;ZOJWQ`O,5;ZOOQO-E8m-E8mOJ]QdO1G1dOBZQdO'#EuOJgQ`O7+%rOOQW7+%r7+%rOJoQ!bO1G/`OOQ[7+$y7+$yOJzQhO7+$yPKRQ`O'#EnOOQO,5;d,5;dOOQO-E8v-E8vOOQS1G0}1G0}OKWQ`OAN>WO&lQdO1G0uOK]Q`O7+'OOOQO,5;a,5;aOOQO-E8s-E8sOOQW<<I^<<I^OOQ[<<He<<HePOQW,5;Y,5;YOOQWG23rG23rOKeQdO7+&a\",\n stateData: \"Kx~O#sOS#tQQ~OW[OZ[O]TO`VOaVOi]OjWOmXO!jYO!mZO!saO!ybO!{cO!}dO#QeO#WfO#YgO#oRO~OQiOW[OZ[O]TO`VOaVOi]OjWOmXO!jYO!mZO!saO!ybO!{cO!}dO#QeO#WfO#YgO#ohO~O#m$SP~P!dO#tmO~O#ooO~O]qO`rOarOjsOmtO!juO!mwO#nvO~OpzO!^xO~P$SOc!QO#o|O#p}O~O#o!RO~O#o!TO~OW[OZ[O]TO`VOaVOjWOmXO!jYO!mZO#oRO~OS!]Oe!YO!V![O!Y!`O#q!XOp$TP~Ok$TP~P&POQ!jOe!cOm!dOp!eOr!mOt!mOz!kO!`!lO#o!bO#p!hO#}!fO~Ot!qO!`!lO#o!pO~Ot!sO#o!sO~OS!]Oe!YO!V![O!Y!`O#q!XO~Oe!vOpzO#Z!xO~O]YX`YX`!pXaYXjYXmYXpYX!^YX!jYX!mYX#nYX~O`!zO~Ok!{O#m$SXo$SX~O#m$SXo$SX~P!dO#u#OO#v#OO#w#QO~Oc#UO#o|O#p}O~OpzO!^xO~Oo$SP~P!dOe#`O~Oe#aO~Ol#bO!h#cO~O]qO`rOarOjsOmtO~Op!ia!^!ia!j!ia!m!ia#n!iad!ia~P*zOp!la!^!la!j!la!m!la#n!lad!la~P*zOR#gOS!]Oe!YOr#gOt#gO!V![O!Y!`O#q#dO#}!fO~O!R#iO!^#jOk$TXp$TX~Oe#mO~Ok#oOpzO~Oe!vO~O]#rO`#rOd#uOi#rOj#rOk#rO~P&lO]#rO`#rOi#rOj#rOk#rOl#wO~P&lO]#rO`#rOi#rOj#rOk#rOo#yO~P&lOP#zOSsXesXksXvsX!VsX!YsX!usX!wsX#qsX!TsXQsX]sX`sXdsXisXjsXmsXpsXrsXtsXzsX!`sX#osX#psX#}sXlsXosX!^sX!qsX#msX~Ov#{O!u#|O!w#}Ok$TP~P'tOe#aOS#{Xk#{Xv#{X!V#{X!Y#{X!u#{X!w#{X#q#{XQ#{X]#{X`#{Xd#{Xi#{Xj#{Xm#{Xp#{Xr#{Xt#{Xz#{X!`#{X#o#{X#p#{X#}#{Xl#{Xo#{X!^#{X!q#{X#m#{X~Oe$RO~Oe$TO~Ok$VOv#{O~Ok$WO~Ot$XO!`!lO~Op$YO~OpzO!R#iO~OpzO#Z$`O~O!q$bOk!oa#m!oao!oa~P&lOk#hX#m#hXo#hX~P!dOk!{O#m$Sao$Sa~O#u#OO#v#OO#w$hO~Ol$jO!h$kO~Op!ii!^!ii!j!ii!m!ii#n!iid!ii~P*zOp!ki!^!ki!j!ki!m!ki#n!kid!ki~P*zOp!li!^!li!j!li!m!li#n!lid!li~P*zOp#fa!^#fa~P$SOo$lO~Od$RP~P%_Od#zP~P&lO`!PXd}X!R}X!T!PX~O`$sO!T$tO~Od$uO!R#iO~Ok#jXp#jX!^#jX~P'tO!^#jOk$Tap$Ta~O!R#iOk!Uap!Ua!^!Uad!Ua`!Ua~OS!]Oe!YO!V![O!Y!`O#q$yO~Od$QP~P9dOv#{OQ#|X]#|X`#|Xd#|Xe#|Xi#|Xj#|Xk#|Xm#|Xp#|Xr#|Xt#|Xz#|X!`#|X#o#|X#p#|X#}#|Xl#|Xo#|X~O]#rO`#rOd%OOi#rOj#rOk#rO~P&lO]#rO`#rOi#rOj#rOk#rOl%PO~P&lO]#rO`#rOi#rOj#rOk#rOo%QO~P&lOe%SOS!tXk!tX!V!tX!Y!tX#q!tX~Ok%TO~Od%YOt%ZO!a%ZO~Ok%[O~Oo%cO#o%^O#}%]O~Od%dO~P$SOv#{O!^%hO!q%jOk!oi#m!oio!oi~P&lOk#ha#m#hao#ha~P!dOk!{O#m$Sio$Si~O!^%mOd$RX~P$SOd%oO~Ov#{OQ#`Xd#`Xe#`Xm#`Xp#`Xr#`Xt#`Xz#`X!^#`X!`#`X#o#`X#p#`X#}#`X~O!^%qOd#zX~P&lOd%sO~Ol%tOv#{O~OR#gOr#gOt#gO#q%vO#}!fO~O!R#iOk#jap#ja!^#ja~O`!PXd}X!R}X!^}X~O!R#iO!^%xOd$QX~O`%zO~Od%{O~O#o%|O~Ok&OO~O`&PO!R#iO~Od&ROk&QO~Od&UO~OP#zOpsX!^sXdsX~O#}%]Op#TX!^#TX~OpzO!^&WO~Oo&[O#o%^O#}%]O~Ov#{OQ#gXe#gXk#gXm#gXp#gXr#gXt#gXz#gX!^#gX!`#gX!q#gX#m#gX#o#gX#p#gX#}#gXo#gX~O!^%hO!q&`Ok!oq#m!oqo!oq~P&lOl&aOv#{O~Od#eX!^#eX~P%_O!^%mOd$Ra~Od#dX!^#dX~P&lO!^%qOd#za~Od&fO~P&lOd&gO!T&hO~Od#cX!^#cX~P9dO!^%xOd$Qa~O]&mOd&oO~OS#bae#ba!V#ba!Y#ba#q#ba~Od&qO~PG]Od&qOk&rO~Ov#{OQ#gae#gak#gam#gap#gar#gat#gaz#ga!^#ga!`#ga!q#ga#m#ga#o#ga#p#ga#}#gao#ga~Od#ea!^#ea~P$SOd#da!^#da~P&lOR#gOr#gOt#gO#q%vO#}%]O~O!R#iOd#ca!^#ca~O`&xO~O!^%xOd$Qi~P&lO]&mOd&|O~Ov#{Od|ik|i~Od&}O~PG]Ok'OO~Od'PO~O!^%xOd$Qq~Od#cq!^#cq~P&lO#s!a#t#}]#}v!m~\",\n goto: \"2h$UPPPPP$VP$YP$c$uP$cP%X$cPP%_PPP%e%o%oPPPPP%oPP%oP&]P%oP%o'W%oP't'w'}'}(^'}P'}P'}P'}'}P(m'}(yP(|PP)p)v$c)|$c*SP$cP$c$cP*Y*{+YP$YP+aP+dP$YP$YP$YP+j$YP+m+p+s+z$YP$YPP$YP,P,V,f,|-[-b-l-r-x.O.U.`.f.l.rPPPPPPPPPPP.x/R/w/z0|P1U1u2O2R2U2[RnQ_^OP`kz!{$dq[OPYZ`kuvwxz!v!{#`$d%mqSOPYZ`kuvwxz!v!{#`$d%mQpTR#RqQ!OVR#SrQ#S!QS$Q!i!jR$i#U!V!mac!c!d!e!z#a#c#t#v#x#{$a$k$p$s%h%i%q%u%z&P&d&l&x'Q!U!mac!c!d!e!z#a#c#t#v#x#{$a$k$p$s%h%i%q%u%z&P&d&l&x'QU#g!Y$t&hU%`$Y%b&WR&V%_!V!iac!c!d!e!z#a#c#t#v#x#{$a$k$p$s%h%i%q%u%z&P&d&l&x'QR$S!kQ%W$RR&S%Xk!^]bf!Y![!g#i#j#m$P$R%X%xQ#e!YQ${#mQ%w$tQ&j%xR&w&hQ!ygQ#p!`Q$^!xR%f$`R#n!]!U!mac!c!d!e!z#a#c#t#v#x#{$a$k$p$s%h%i%q%u%z&P&d&l&x'QQ!qdR$X!rQ!PVR#TrQ#S!PR$i#TQ!SWR#VsQ!UXR#WtQ{UQ!wgQ#^yQ#o!_Q$U!nQ$[!uQ$_!yQ%e$^Q&Y%aQ&]%fR&v&XSjPzQ!}kQ$c!{R%k$dZiPkz!{$dR$P!gQ%}%SR&z&mR!rdR!teR$Z!tS%a$Y%bR&t&WV%_$Y%b&WQ#PmR$g#PQ`OSkPzU!a`k$dR$d!{Q$p#aY%p$p%u&d&l'QQ%u$sQ&d%qQ&l%zR'Q&xQ#t!cQ#v!dQ#x!eV$}#t#v#xQ%X$RR&T%XQ%y$zS&k%y&yR&y&lQ%r$pR&e%rQ%n$mR&c%nQyUR#]yQ%i$aR&_%iQ!|jS$e!|$fR$f!}Q&n%}R&{&nQ#k!ZR$x#kQ%b$YR&Z%bQ&X%aR&u&X__OP`kz!{$d^UOP`kz!{$dQ!VYQ!WZQ#XuQ#YvQ#ZwQ#[xQ$]!vQ$m#`R&b%mR$q#aQ!gaQ!oc[#q!c!d!e#t#v#xQ$a!zd$o#a$p$s%q%u%z&d&l&x'QQ$r#cQ%R#{S%g$a%iQ%l$kQ&^%hR&p&P]#s!c!d!e#t#v#xW!Z]b!g$PQ!ufQ#f!YQ#l![Q$v#iQ$w#jQ$z#mS%V$R%XR&i%xQ#h!YQ%w$tR&w&hR$|#mR$n#`QlPR#_zQ!_]Q!nbQ$O!gR%U$P\",\n nodeNames: \"⚠ Unit VariableName VariableName QueryCallee Comment StyleSheet RuleSet UniversalSelector TagSelector TagName NestingSelector ClassSelector . ClassName PseudoClassSelector : :: PseudoClassName PseudoClassName ) ( ArgList ValueName ParenthesizedValue AtKeyword # ; ] [ BracketedValue } { BracedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp CallExpression Callee IfExpression if ArgList IfBranch KeywordQuery FeatureQuery FeatureName BinaryQuery LogicOp ComparisonQuery CompareOp UnaryQuery UnaryQueryOp ParenthesizedQuery SelectorQuery selector ParenthesizedSelector CallQuery ArgList , CallLiteral CallTag ParenthesizedContent PseudoClassName ArgList IdSelector IdName AttributeSelector AttributeName MatchOp ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp Block Declaration PropertyName Important ImportStatement import Layer layer LayerName layer MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList KeyframeSelector KeyframeRangeName SupportsStatement supports ScopeStatement scope to AtRule Styles\",\n maxTerm: 143,\n nodeProps: [\n [\"isolate\", -2,5,36,\"\"],\n [\"openedBy\", 20,\"(\",28,\"[\",31,\"{\"],\n [\"closedBy\", 21,\")\",29,\"]\",32,\"}\"]\n ],\n propSources: [cssHighlighting],\n skippedNodes: [0,5,106],\n repeatNodeCount: 15,\n tokenData: \"JQ~R!YOX$qX^%i^p$qpq%iqr({rs-ust/itu6Wuv$qvw7Qwx7cxy9Qyz9cz{9h{|:R|}>t}!O?V!O!P?t!P!Q@]!Q![AU![!]BP!]!^B{!^!_C^!_!`DY!`!aDm!a!b$q!b!cEn!c!}$q!}#OG{#O#P$q#P#QH^#Q#R6W#R#o$q#o#pHo#p#q6W#q#rIQ#r#sIc#s#y$q#y#z%i#z$f$q$f$g%i$g#BY$q#BY#BZ%i#BZ$IS$q$IS$I_%i$I_$I|$q$I|$JO%i$JO$JT$q$JT$JU%i$JU$KV$q$KV$KW%i$KW&FU$q&FU&FV%i&FV;'S$q;'S;=`Iz<%lO$q`$tSOy%Qz;'S%Q;'S;=`%c<%lO%Q`%VS!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Q`%fP;=`<%l%Q~%nh#s~OX%QX^'Y^p%Qpq'Yqy%Qz#y%Q#y#z'Y#z$f%Q$f$g'Y$g#BY%Q#BY#BZ'Y#BZ$IS%Q$IS$I_'Y$I_$I|%Q$I|$JO'Y$JO$JT%Q$JT$JU'Y$JU$KV%Q$KV$KW'Y$KW&FU%Q&FU&FV'Y&FV;'S%Q;'S;=`%c<%lO%Q~'ah#s~!a`OX%QX^'Y^p%Qpq'Yqy%Qz#y%Q#y#z'Y#z$f%Q$f$g'Y$g#BY%Q#BY#BZ'Y#BZ$IS%Q$IS$I_'Y$I_$I|%Q$I|$JO'Y$JO$JT%Q$JT$JU'Y$JU$KV%Q$KV$KW'Y$KW&FU%Q&FU&FV'Y&FV;'S%Q;'S;=`%c<%lO%Qj)OUOy%Qz#]%Q#]#^)b#^;'S%Q;'S;=`%c<%lO%Qj)gU!a`Oy%Qz#a%Q#a#b)y#b;'S%Q;'S;=`%c<%lO%Qj*OU!a`Oy%Qz#d%Q#d#e*b#e;'S%Q;'S;=`%c<%lO%Qj*gU!a`Oy%Qz#c%Q#c#d*y#d;'S%Q;'S;=`%c<%lO%Qj+OU!a`Oy%Qz#f%Q#f#g+b#g;'S%Q;'S;=`%c<%lO%Qj+gU!a`Oy%Qz#h%Q#h#i+y#i;'S%Q;'S;=`%c<%lO%Qj,OU!a`Oy%Qz#T%Q#T#U,b#U;'S%Q;'S;=`%c<%lO%Qj,gU!a`Oy%Qz#b%Q#b#c,y#c;'S%Q;'S;=`%c<%lO%Qj-OU!a`Oy%Qz#h%Q#h#i-b#i;'S%Q;'S;=`%c<%lO%Qj-iS!qY!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Q~-xWOY-uZr-urs.bs#O-u#O#P.g#P;'S-u;'S;=`/c<%lO-u~.gOt~~.jRO;'S-u;'S;=`.s;=`O-u~.vXOY-uZr-urs.bs#O-u#O#P.g#P;'S-u;'S;=`/c;=`<%l-u<%lO-u~/fP;=`<%l-uj/nYjYOy%Qz!Q%Q!Q![0^![!c%Q!c!i0^!i#T%Q#T#Z0^#Z;'S%Q;'S;=`%c<%lO%Qj0cY!a`Oy%Qz!Q%Q!Q![1R![!c%Q!c!i1R!i#T%Q#T#Z1R#Z;'S%Q;'S;=`%c<%lO%Qj1WY!a`Oy%Qz!Q%Q!Q![1v![!c%Q!c!i1v!i#T%Q#T#Z1v#Z;'S%Q;'S;=`%c<%lO%Qj1}YrY!a`Oy%Qz!Q%Q!Q![2m![!c%Q!c!i2m!i#T%Q#T#Z2m#Z;'S%Q;'S;=`%c<%lO%Qj2tYrY!a`Oy%Qz!Q%Q!Q![3d![!c%Q!c!i3d!i#T%Q#T#Z3d#Z;'S%Q;'S;=`%c<%lO%Qj3iY!a`Oy%Qz!Q%Q!Q![4X![!c%Q!c!i4X!i#T%Q#T#Z4X#Z;'S%Q;'S;=`%c<%lO%Qj4`YrY!a`Oy%Qz!Q%Q!Q![5O![!c%Q!c!i5O!i#T%Q#T#Z5O#Z;'S%Q;'S;=`%c<%lO%Qj5TY!a`Oy%Qz!Q%Q!Q![5s![!c%Q!c!i5s!i#T%Q#T#Z5s#Z;'S%Q;'S;=`%c<%lO%Qj5zSrY!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Qd6ZUOy%Qz!_%Q!_!`6m!`;'S%Q;'S;=`%c<%lO%Qd6tS!hS!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Qb7VSZQOy%Qz;'S%Q;'S;=`%c<%lO%Q~7fWOY7cZw7cwx.bx#O7c#O#P8O#P;'S7c;'S;=`8z<%lO7c~8RRO;'S7c;'S;=`8[;=`O7c~8_XOY7cZw7cwx.bx#O7c#O#P8O#P;'S7c;'S;=`8z;=`<%l7c<%lO7c~8}P;=`<%l7cj9VSeYOy%Qz;'S%Q;'S;=`%c<%lO%Q~9hOd~n9oUWQvWOy%Qz!_%Q!_!`6m!`;'S%Q;'S;=`%c<%lO%Qj:YWvW!mQOy%Qz!O%Q!O!P:r!P!Q%Q!Q![=w![;'S%Q;'S;=`%c<%lO%Qj:wU!a`Oy%Qz!Q%Q!Q![;Z![;'S%Q;'S;=`%c<%lO%Qj;bY!a`#}YOy%Qz!Q%Q!Q![;Z![!g%Q!g!h<Q!h#X%Q#X#Y<Q#Y;'S%Q;'S;=`%c<%lO%Qj<VY!a`Oy%Qz{%Q{|<u|}%Q}!O<u!O!Q%Q!Q![=^![;'S%Q;'S;=`%c<%lO%Qj<zU!a`Oy%Qz!Q%Q!Q![=^![;'S%Q;'S;=`%c<%lO%Qj=eU!a`#}YOy%Qz!Q%Q!Q![=^![;'S%Q;'S;=`%c<%lO%Qj>O[!a`#}YOy%Qz!O%Q!O!P;Z!P!Q%Q!Q![=w![!g%Q!g!h<Q!h#X%Q#X#Y<Q#Y;'S%Q;'S;=`%c<%lO%Qj>yS!^YOy%Qz;'S%Q;'S;=`%c<%lO%Qj?[WvWOy%Qz!O%Q!O!P:r!P!Q%Q!Q![=w![;'S%Q;'S;=`%c<%lO%Qj?yU]YOy%Qz!Q%Q!Q![;Z![;'S%Q;'S;=`%c<%lO%Q~@bTvWOy%Qz{@q{;'S%Q;'S;=`%c<%lO%Q~@xS!a`#t~Oy%Qz;'S%Q;'S;=`%c<%lO%QjAZ[#}YOy%Qz!O%Q!O!P;Z!P!Q%Q!Q![=w![!g%Q!g!h<Q!h#X%Q#X#Y<Q#Y;'S%Q;'S;=`%c<%lO%QjBUU`YOy%Qz![%Q![!]Bh!];'S%Q;'S;=`%c<%lO%QbBoSaQ!a`Oy%Qz;'S%Q;'S;=`%c<%lO%QjCQSkYOy%Qz;'S%Q;'S;=`%c<%lO%QhCcU!TWOy%Qz!_%Q!_!`Cu!`;'S%Q;'S;=`%c<%lO%QhC|S!TW!a`Oy%Qz;'S%Q;'S;=`%c<%lO%QlDaS!TW!hSOy%Qz;'S%Q;'S;=`%c<%lO%QjDtV!jQ!TWOy%Qz!_%Q!_!`Cu!`!aEZ!a;'S%Q;'S;=`%c<%lO%QbEbS!jQ!a`Oy%Qz;'S%Q;'S;=`%c<%lO%QjEqYOy%Qz}%Q}!OFa!O!c%Q!c!}GO!}#T%Q#T#oGO#o;'S%Q;'S;=`%c<%lO%QjFfW!a`Oy%Qz!c%Q!c!}GO!}#T%Q#T#oGO#o;'S%Q;'S;=`%c<%lO%QjGV[iY!a`Oy%Qz}%Q}!OGO!O!Q%Q!Q![GO![!c%Q!c!}GO!}#T%Q#T#oGO#o;'S%Q;'S;=`%c<%lO%QjHQSmYOy%Qz;'S%Q;'S;=`%c<%lO%QnHcSl^Oy%Qz;'S%Q;'S;=`%c<%lO%QjHtSpYOy%Qz;'S%Q;'S;=`%c<%lO%QjIVSoYOy%Qz;'S%Q;'S;=`%c<%lO%QfIhU!mQOy%Qz!_%Q!_!`6m!`;'S%Q;'S;=`%c<%lO%Q`I}P;=`<%l$q\",\n tokenizers: [descendant, unitToken, identifiers, queryIdentifiers, 1, 2, 3, 4, new LocalTokenGroup(\"m~RRYZ[z{a~~g~aO#v~~dP!P!Qg~lO#w~~\", 28, 129)],\n topRules: {\"StyleSheet\":[0,6],\"Styles\":[1,105]},\n dynamicPrecedences: {\"76\":1},\n specialized: [{term: 124, get: (value) => spec_callee[value] || -1},{term: 125, get: (value) => spec_queryIdentifier[value] || -1},{term: 4, get: (value) => spec_QueryCallee[value] || -1},{term: 25, get: (value) => spec_AtKeyword[value] || -1},{term: 123, get: (value) => spec_identifier[value] || -1}],\n tokenPrec: 1963\n});\n\nexport { parser };\n","import { parser } from '@lezer/css';\nimport { syntaxTree, LRLanguage, indentNodeProp, continuedIndent, foldNodeProp, foldInside, LanguageSupport } from '@codemirror/language';\nimport { NodeWeakMap, IterMode } from '@lezer/common';\n\nlet _properties = null;\nfunction properties() {\n if (!_properties && typeof document == \"object\" && document.body) {\n let { style } = document.body, names = [], seen = new Set;\n for (let prop in style)\n if (prop != \"cssText\" && prop != \"cssFloat\") {\n if (typeof style[prop] == \"string\") {\n if (/[A-Z]/.test(prop))\n prop = prop.replace(/[A-Z]/g, ch => \"-\" + ch.toLowerCase());\n if (!seen.has(prop)) {\n names.push(prop);\n seen.add(prop);\n }\n }\n }\n _properties = names.sort().map(name => ({ type: \"property\", label: name, apply: name + \": \" }));\n }\n return _properties || [];\n}\nconst pseudoClasses = /*@__PURE__*/[\n \"active\", \"after\", \"any-link\", \"autofill\", \"backdrop\", \"before\",\n \"checked\", \"cue\", \"default\", \"defined\", \"disabled\", \"empty\",\n \"enabled\", \"file-selector-button\", \"first\", \"first-child\",\n \"first-letter\", \"first-line\", \"first-of-type\", \"focus\",\n \"focus-visible\", \"focus-within\", \"fullscreen\", \"has\", \"host\",\n \"host-context\", \"hover\", \"in-range\", \"indeterminate\", \"invalid\",\n \"is\", \"lang\", \"last-child\", \"last-of-type\", \"left\", \"link\", \"marker\",\n \"modal\", \"not\", \"nth-child\", \"nth-last-child\", \"nth-last-of-type\",\n \"nth-of-type\", \"only-child\", \"only-of-type\", \"optional\", \"out-of-range\",\n \"part\", \"placeholder\", \"placeholder-shown\", \"read-only\", \"read-write\",\n \"required\", \"right\", \"root\", \"scope\", \"selection\", \"slotted\", \"target\",\n \"target-text\", \"valid\", \"visited\", \"where\"\n].map(name => ({ type: \"class\", label: name }));\nconst values = /*@__PURE__*/[\n \"above\", \"absolute\", \"activeborder\", \"additive\", \"activecaption\", \"after-white-space\",\n \"ahead\", \"alias\", \"all\", \"all-scroll\", \"alphabetic\", \"alternate\", \"always\",\n \"antialiased\", \"appworkspace\", \"asterisks\", \"attr\", \"auto\", \"auto-flow\", \"avoid\", \"avoid-column\",\n \"avoid-page\", \"avoid-region\", \"axis-pan\", \"background\", \"backwards\", \"baseline\", \"below\",\n \"bidi-override\", \"blink\", \"block\", \"block-axis\", \"bold\", \"bolder\", \"border\", \"border-box\",\n \"both\", \"bottom\", \"break\", \"break-all\", \"break-word\", \"bullets\", \"button\", \"button-bevel\",\n \"buttonface\", \"buttonhighlight\", \"buttonshadow\", \"buttontext\", \"calc\", \"capitalize\",\n \"caps-lock-indicator\", \"caption\", \"captiontext\", \"caret\", \"cell\", \"center\", \"checkbox\", \"circle\",\n \"cjk-decimal\", \"clear\", \"clip\", \"close-quote\", \"col-resize\", \"collapse\", \"color\", \"color-burn\",\n \"color-dodge\", \"column\", \"column-reverse\", \"compact\", \"condensed\", \"contain\", \"content\",\n \"contents\", \"content-box\", \"context-menu\", \"continuous\", \"copy\", \"counter\", \"counters\", \"cover\",\n \"crop\", \"cross\", \"crosshair\", \"currentcolor\", \"cursive\", \"cyclic\", \"darken\", \"dashed\", \"decimal\",\n \"decimal-leading-zero\", \"default\", \"default-button\", \"dense\", \"destination-atop\", \"destination-in\",\n \"destination-out\", \"destination-over\", \"difference\", \"disc\", \"discard\", \"disclosure-closed\",\n \"disclosure-open\", \"document\", \"dot-dash\", \"dot-dot-dash\", \"dotted\", \"double\", \"down\", \"e-resize\",\n \"ease\", \"ease-in\", \"ease-in-out\", \"ease-out\", \"element\", \"ellipse\", \"ellipsis\", \"embed\", \"end\",\n \"ethiopic-abegede-gez\", \"ethiopic-halehame-aa-er\", \"ethiopic-halehame-gez\", \"ew-resize\", \"exclusion\",\n \"expanded\", \"extends\", \"extra-condensed\", \"extra-expanded\", \"fantasy\", \"fast\", \"fill\", \"fill-box\",\n \"fixed\", \"flat\", \"flex\", \"flex-end\", \"flex-start\", \"footnotes\", \"forwards\", \"from\",\n \"geometricPrecision\", \"graytext\", \"grid\", \"groove\", \"hand\", \"hard-light\", \"help\", \"hidden\", \"hide\",\n \"higher\", \"highlight\", \"highlighttext\", \"horizontal\", \"hsl\", \"hsla\", \"hue\", \"icon\", \"ignore\",\n \"inactiveborder\", \"inactivecaption\", \"inactivecaptiontext\", \"infinite\", \"infobackground\", \"infotext\",\n \"inherit\", \"initial\", \"inline\", \"inline-axis\", \"inline-block\", \"inline-flex\", \"inline-grid\",\n \"inline-table\", \"inset\", \"inside\", \"intrinsic\", \"invert\", \"italic\", \"justify\", \"keep-all\",\n \"landscape\", \"large\", \"larger\", \"left\", \"level\", \"lighter\", \"lighten\", \"line-through\", \"linear\",\n \"linear-gradient\", \"lines\", \"list-item\", \"listbox\", \"listitem\", \"local\", \"logical\", \"loud\", \"lower\",\n \"lower-hexadecimal\", \"lower-latin\", \"lower-norwegian\", \"lowercase\", \"ltr\", \"luminosity\", \"manipulation\",\n \"match\", \"matrix\", \"matrix3d\", \"medium\", \"menu\", \"menutext\", \"message-box\", \"middle\", \"min-intrinsic\",\n \"mix\", \"monospace\", \"move\", \"multiple\", \"multiple_mask_images\", \"multiply\", \"n-resize\", \"narrower\",\n \"ne-resize\", \"nesw-resize\", \"no-close-quote\", \"no-drop\", \"no-open-quote\", \"no-repeat\", \"none\",\n \"normal\", \"not-allowed\", \"nowrap\", \"ns-resize\", \"numbers\", \"numeric\", \"nw-resize\", \"nwse-resize\",\n \"oblique\", \"opacity\", \"open-quote\", \"optimizeLegibility\", \"optimizeSpeed\", \"outset\", \"outside\",\n \"outside-shape\", \"overlay\", \"overline\", \"padding\", \"padding-box\", \"painted\", \"page\", \"paused\",\n \"perspective\", \"pinch-zoom\", \"plus-darker\", \"plus-lighter\", \"pointer\", \"polygon\", \"portrait\",\n \"pre\", \"pre-line\", \"pre-wrap\", \"preserve-3d\", \"progress\", \"push-button\", \"radial-gradient\", \"radio\",\n \"read-only\", \"read-write\", \"read-write-plaintext-only\", \"rectangle\", \"region\", \"relative\", \"repeat\",\n \"repeating-linear-gradient\", \"repeating-radial-gradient\", \"repeat-x\", \"repeat-y\", \"reset\", \"reverse\",\n \"rgb\", \"rgba\", \"ridge\", \"right\", \"rotate\", \"rotate3d\", \"rotateX\", \"rotateY\", \"rotateZ\", \"round\",\n \"row\", \"row-resize\", \"row-reverse\", \"rtl\", \"run-in\", \"running\", \"s-resize\", \"sans-serif\", \"saturation\",\n \"scale\", \"scale3d\", \"scaleX\", \"scaleY\", \"scaleZ\", \"screen\", \"scroll\", \"scrollbar\", \"scroll-position\",\n \"se-resize\", \"self-start\", \"self-end\", \"semi-condensed\", \"semi-expanded\", \"separate\", \"serif\", \"show\",\n \"single\", \"skew\", \"skewX\", \"skewY\", \"skip-white-space\", \"slide\", \"slider-horizontal\",\n \"slider-vertical\", \"sliderthumb-horizontal\", \"sliderthumb-vertical\", \"slow\", \"small\", \"small-caps\",\n \"small-caption\", \"smaller\", \"soft-light\", \"solid\", \"source-atop\", \"source-in\", \"source-out\",\n \"source-over\", \"space\", \"space-around\", \"space-between\", \"space-evenly\", \"spell-out\", \"square\", \"start\",\n \"static\", \"status-bar\", \"stretch\", \"stroke\", \"stroke-box\", \"sub\", \"subpixel-antialiased\", \"svg_masks\",\n \"super\", \"sw-resize\", \"symbolic\", \"symbols\", \"system-ui\", \"table\", \"table-caption\", \"table-cell\",\n \"table-column\", \"table-column-group\", \"table-footer-group\", \"table-header-group\", \"table-row\",\n \"table-row-group\", \"text\", \"text-bottom\", \"text-top\", \"textarea\", \"textfield\", \"thick\", \"thin\",\n \"threeddarkshadow\", \"threedface\", \"threedhighlight\", \"threedlightshadow\", \"threedshadow\", \"to\", \"top\",\n \"transform\", \"translate\", \"translate3d\", \"translateX\", \"translateY\", \"translateZ\", \"transparent\",\n \"ultra-condensed\", \"ultra-expanded\", \"underline\", \"unidirectional-pan\", \"unset\", \"up\", \"upper-latin\",\n \"uppercase\", \"url\", \"var\", \"vertical\", \"vertical-text\", \"view-box\", \"visible\", \"visibleFill\",\n \"visiblePainted\", \"visibleStroke\", \"visual\", \"w-resize\", \"wait\", \"wave\", \"wider\", \"window\", \"windowframe\",\n \"windowtext\", \"words\", \"wrap\", \"wrap-reverse\", \"x-large\", \"x-small\", \"xor\", \"xx-large\", \"xx-small\"\n].map(name => ({ type: \"keyword\", label: name })).concat(/*@__PURE__*/[\n \"aliceblue\", \"antiquewhite\", \"aqua\", \"aquamarine\", \"azure\", \"beige\",\n \"bisque\", \"black\", \"blanchedalmond\", \"blue\", \"blueviolet\", \"brown\",\n \"burlywood\", \"cadetblue\", \"chartreuse\", \"chocolate\", \"coral\", \"cornflowerblue\",\n \"cornsilk\", \"crimson\", \"cyan\", \"darkblue\", \"darkcyan\", \"darkgoldenrod\",\n \"darkgray\", \"darkgreen\", \"darkkhaki\", \"darkmagenta\", \"darkolivegreen\",\n \"darkorange\", \"darkorchid\", \"darkred\", \"darksalmon\", \"darkseagreen\",\n \"darkslateblue\", \"darkslategray\", \"darkturquoise\", \"darkviolet\",\n \"deeppink\", \"deepskyblue\", \"dimgray\", \"dodgerblue\", \"firebrick\",\n \"floralwhite\", \"forestgreen\", \"fuchsia\", \"gainsboro\", \"ghostwhite\",\n \"gold\", \"goldenrod\", \"gray\", \"grey\", \"green\", \"greenyellow\", \"honeydew\",\n \"hotpink\", \"indianred\", \"indigo\", \"ivory\", \"khaki\", \"lavender\",\n \"lavenderblush\", \"lawngreen\", \"lemonchiffon\", \"lightblue\", \"lightcoral\",\n \"lightcyan\", \"lightgoldenrodyellow\", \"lightgray\", \"lightgreen\", \"lightpink\",\n \"lightsalmon\", \"lightseagreen\", \"lightskyblue\", \"lightslategray\",\n \"lightsteelblue\", \"lightyellow\", \"lime\", \"limegreen\", \"linen\", \"magenta\",\n \"maroon\", \"mediumaquamarine\", \"mediumblue\", \"mediumorchid\", \"mediumpurple\",\n \"mediumseagreen\", \"mediumslateblue\", \"mediumspringgreen\", \"mediumturquoise\",\n \"mediumvioletred\", \"midnightblue\", \"mintcream\", \"mistyrose\", \"moccasin\",\n \"navajowhite\", \"navy\", \"oldlace\", \"olive\", \"olivedrab\", \"orange\", \"orangered\",\n \"orchid\", \"palegoldenrod\", \"palegreen\", \"paleturquoise\", \"palevioletred\",\n \"papayawhip\", \"peachpuff\", \"peru\", \"pink\", \"plum\", \"powderblue\",\n \"purple\", \"rebeccapurple\", \"red\", \"rosybrown\", \"royalblue\", \"saddlebrown\",\n \"salmon\", \"sandybrown\", \"seagreen\", \"seashell\", \"sienna\", \"silver\", \"skyblue\",\n \"slateblue\", \"slategray\", \"snow\", \"springgreen\", \"steelblue\", \"tan\",\n \"teal\", \"thistle\", \"tomato\", \"turquoise\", \"violet\", \"wheat\", \"white\",\n \"whitesmoke\", \"yellow\", \"yellowgreen\"\n].map(name => ({ type: \"constant\", label: name })));\nconst tags = /*@__PURE__*/[\n \"a\", \"abbr\", \"address\", \"article\", \"aside\", \"b\", \"bdi\", \"bdo\", \"blockquote\", \"body\",\n \"br\", \"button\", \"canvas\", \"caption\", \"cite\", \"code\", \"col\", \"colgroup\", \"dd\", \"del\",\n \"details\", \"dfn\", \"dialog\", \"div\", \"dl\", \"dt\", \"em\", \"figcaption\", \"figure\", \"footer\",\n \"form\", \"header\", \"hgroup\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"hr\", \"html\", \"i\", \"iframe\",\n \"img\", \"input\", \"ins\", \"kbd\", \"label\", \"legend\", \"li\", \"main\", \"meter\", \"nav\", \"ol\", \"output\",\n \"p\", \"pre\", \"ruby\", \"section\", \"select\", \"small\", \"source\", \"span\", \"strong\", \"sub\", \"summary\",\n \"sup\", \"table\", \"tbody\", \"td\", \"template\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"tr\", \"u\", \"ul\"\n].map(name => ({ type: \"type\", label: name }));\nconst atRules = /*@__PURE__*/[\n \"@charset\", \"@color-profile\", \"@container\", \"@counter-style\", \"@font-face\", \"@font-feature-values\",\n \"@font-palette-values\", \"@import\", \"@keyframes\", \"@layer\", \"@media\", \"@namespace\", \"@page\",\n \"@position-try\", \"@property\", \"@scope\", \"@starting-style\", \"@supports\", \"@view-transition\"\n].map(label => ({ type: \"keyword\", label }));\nconst identifier = /^(\\w[\\w-]*|-\\w[\\w-]*|)$/, variable = /^-(-[\\w-]*)?$/;\nfunction isVarArg(node, doc) {\n var _a;\n if (node.name == \"(\" || node.type.isError)\n node = node.parent || node;\n if (node.name != \"ArgList\")\n return false;\n let callee = (_a = node.parent) === null || _a === void 0 ? void 0 : _a.firstChild;\n if ((callee === null || callee === void 0 ? void 0 : callee.name) != \"Callee\")\n return false;\n return doc.sliceString(callee.from, callee.to) == \"var\";\n}\nconst VariablesByNode = /*@__PURE__*/new NodeWeakMap();\nconst declSelector = [\"Declaration\"];\nfunction astTop(node) {\n for (let cur = node;;) {\n if (cur.type.isTop)\n return cur;\n if (!(cur = cur.parent))\n return node;\n }\n}\nfunction variableNames(doc, node, isVariable) {\n if (node.to - node.from > 4096) {\n let known = VariablesByNode.get(node);\n if (known)\n return known;\n let result = [], seen = new Set, cursor = node.cursor(IterMode.IncludeAnonymous);\n if (cursor.firstChild())\n do {\n for (let option of variableNames(doc, cursor.node, isVariable))\n if (!seen.has(option.label)) {\n seen.add(option.label);\n result.push(option);\n }\n } while (cursor.nextSibling());\n VariablesByNode.set(node, result);\n return result;\n }\n else {\n let result = [], seen = new Set;\n node.cursor().iterate(node => {\n var _a;\n if (isVariable(node) && node.matchContext(declSelector) && ((_a = node.node.nextSibling) === null || _a === void 0 ? void 0 : _a.name) == \":\") {\n let name = doc.sliceString(node.from, node.to);\n if (!seen.has(name)) {\n seen.add(name);\n result.push({ label: name, type: \"variable\" });\n }\n }\n });\n return result;\n }\n}\n/**\nCreate a completion source for a CSS dialect, providing a\npredicate for determining what kind of syntax node can act as a\ncompletable variable. This is used by language modes like Sass and\nLess to reuse this package's completion logic.\n*/\nconst defineCSSCompletionSource = (isVariable) => context => {\n let { state, pos } = context, node = syntaxTree(state).resolveInner(pos, -1);\n let isDash = node.type.isError && node.from == node.to - 1 && state.doc.sliceString(node.from, node.to) == \"-\";\n if (node.name == \"PropertyName\" ||\n (isDash || node.name == \"TagName\") && /^(Block|Styles)$/.test(node.resolve(node.to).name))\n return { from: node.from, options: properties(), validFor: identifier };\n if (node.name == \"ValueName\")\n return { from: node.from, options: values, validFor: identifier };\n if (node.name == \"PseudoClassName\")\n return { from: node.from, options: pseudoClasses, validFor: identifier };\n if (isVariable(node) || (context.explicit || isDash) && isVarArg(node, state.doc))\n return { from: isVariable(node) || isDash ? node.from : pos,\n options: variableNames(state.doc, astTop(node), isVariable),\n validFor: variable };\n if (node.name == \"TagName\") {\n for (let { parent } = node; parent; parent = parent.parent)\n if (parent.name == \"Block\")\n return { from: node.from, options: properties(), validFor: identifier };\n return { from: node.from, options: tags, validFor: identifier };\n }\n if (node.name == \"AtKeyword\")\n return { from: node.from, options: atRules, validFor: identifier };\n if (!context.explicit)\n return null;\n let above = node.resolve(pos), before = above.childBefore(pos);\n if (before && before.name == \":\" && above.name == \"PseudoClassSelector\")\n return { from: pos, options: pseudoClasses, validFor: identifier };\n if (before && before.name == \":\" && above.name == \"Declaration\" || above.name == \"ArgList\")\n return { from: pos, options: values, validFor: identifier };\n if (above.name == \"Block\" || above.name == \"Styles\")\n return { from: pos, options: properties(), validFor: identifier };\n return null;\n};\n/**\nCSS property, variable, and value keyword completion source.\n*/\nconst cssCompletionSource = /*@__PURE__*/defineCSSCompletionSource(n => n.name == \"VariableName\");\n\n/**\nA language provider based on the [Lezer CSS\nparser](https://github.com/lezer-parser/css), extended with\nhighlighting and indentation information.\n*/\nconst cssLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"css\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n Declaration: /*@__PURE__*/continuedIndent()\n }),\n /*@__PURE__*/foldNodeProp.add({\n \"Block KeyframeList\": foldInside\n })\n ]\n }),\n languageData: {\n commentTokens: { block: { open: \"/*\", close: \"*/\" } },\n indentOnInput: /^\\s*\\}$/,\n wordChars: \"-\"\n }\n});\n/**\nLanguage support for CSS.\n*/\nfunction css() {\n return new LanguageSupport(cssLanguage, cssLanguage.data.of({ autocomplete: cssCompletionSource }));\n}\n\nexport { css, cssCompletionSource, cssLanguage, defineCSSCompletionSource };\n","import { ContextTracker, ExternalTokenizer, LRParser } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\nimport { parseMixed } from '@lezer/common';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst scriptText = 55,\n StartCloseScriptTag = 1,\n styleText = 56,\n StartCloseStyleTag = 2,\n textareaText = 57,\n StartCloseTextareaTag = 3,\n EndTag = 4,\n SelfClosingEndTag = 5,\n StartTag = 6,\n StartScriptTag = 7,\n StartStyleTag = 8,\n StartTextareaTag = 9,\n StartSelfClosingTag = 10,\n StartCloseTag = 11,\n NoMatchStartCloseTag = 12,\n MismatchedStartCloseTag = 13,\n missingCloseTag = 58,\n IncompleteTag = 14,\n IncompleteCloseTag = 15,\n commentContent$1 = 59,\n Element = 21,\n TagName = 23,\n Attribute = 24,\n AttributeName = 25,\n AttributeValue = 27,\n UnquotedAttributeValue = 28,\n ScriptText = 29,\n StyleText = 32,\n TextareaText = 35,\n OpenTag = 37,\n CloseTag = 38,\n Dialect_noMatch = 0,\n Dialect_selfClosing = 1;\n\n/* Hand-written tokenizers for HTML. */\n\nconst selfClosers = {\n area: true, base: true, br: true, col: true, command: true,\n embed: true, frame: true, hr: true, img: true, input: true,\n keygen: true, link: true, meta: true, param: true, source: true,\n track: true, wbr: true, menuitem: true\n};\n\nconst implicitlyClosed = {\n dd: true, li: true, optgroup: true, option: true, p: true,\n rp: true, rt: true, tbody: true, td: true, tfoot: true,\n th: true, tr: true\n};\n\nconst closeOnOpen = {\n dd: {dd: true, dt: true},\n dt: {dd: true, dt: true},\n li: {li: true},\n option: {option: true, optgroup: true},\n optgroup: {optgroup: true},\n p: {\n address: true, article: true, aside: true, blockquote: true, dir: true,\n div: true, dl: true, fieldset: true, footer: true, form: true,\n h1: true, h2: true, h3: true, h4: true, h5: true, h6: true,\n header: true, hgroup: true, hr: true, menu: true, nav: true, ol: true,\n p: true, pre: true, section: true, table: true, ul: true\n },\n rp: {rp: true, rt: true},\n rt: {rp: true, rt: true},\n tbody: {tbody: true, tfoot: true},\n td: {td: true, th: true},\n tfoot: {tbody: true},\n th: {td: true, th: true},\n thead: {tbody: true, tfoot: true},\n tr: {tr: true}\n};\n\nfunction nameChar(ch) {\n return ch == 45 || ch == 46 || ch == 58 || ch >= 65 && ch <= 90 || ch == 95 || ch >= 97 && ch <= 122 || ch >= 161\n}\n\nlet cachedName = null, cachedInput = null, cachedPos = 0;\nfunction tagNameAfter(input, offset) {\n let pos = input.pos + offset;\n if (cachedPos == pos && cachedInput == input) return cachedName\n let next = input.peek(offset), name = \"\";\n for (;;) {\n if (!nameChar(next)) break\n name += String.fromCharCode(next);\n next = input.peek(++offset);\n }\n // Undefined to signal there's a <? or <!, null for just missing\n cachedInput = input; cachedPos = pos;\n return cachedName = name ? name.toLowerCase() : next == question || next == bang ? undefined : null\n}\n\nconst lessThan = 60, greaterThan = 62, slash = 47, question = 63, bang = 33, dash = 45;\n\nfunction ElementContext(name, parent) {\n this.name = name;\n this.parent = parent;\n}\n\nconst startTagTerms = [StartTag, StartSelfClosingTag, StartScriptTag, StartStyleTag, StartTextareaTag];\n\nconst elementContext = new ContextTracker({\n start: null,\n shift(context, term, stack, input) {\n return startTagTerms.indexOf(term) > -1 ? new ElementContext(tagNameAfter(input, 1) || \"\", context) : context\n },\n reduce(context, term) {\n return term == Element && context ? context.parent : context\n },\n reuse(context, node, stack, input) {\n let type = node.type.id;\n return type == StartTag || type == OpenTag\n ? new ElementContext(tagNameAfter(input, 1) || \"\", context) : context\n },\n strict: false\n});\n\nconst tagStart = new ExternalTokenizer((input, stack) => {\n if (input.next != lessThan) {\n // End of file, close any open tags\n if (input.next < 0 && stack.context) input.acceptToken(missingCloseTag);\n return\n }\n input.advance();\n let close = input.next == slash;\n if (close) input.advance();\n let name = tagNameAfter(input, 0);\n if (name === undefined) return\n if (!name) return input.acceptToken(close ? IncompleteCloseTag : IncompleteTag)\n\n let parent = stack.context ? stack.context.name : null;\n if (close) {\n if (name == parent) return input.acceptToken(StartCloseTag)\n if (parent && implicitlyClosed[parent]) return input.acceptToken(missingCloseTag, -2)\n if (stack.dialectEnabled(Dialect_noMatch)) return input.acceptToken(NoMatchStartCloseTag)\n for (let cx = stack.context; cx; cx = cx.parent) if (cx.name == name) return\n input.acceptToken(MismatchedStartCloseTag);\n } else {\n if (name == \"script\") return input.acceptToken(StartScriptTag)\n if (name == \"style\") return input.acceptToken(StartStyleTag)\n if (name == \"textarea\") return input.acceptToken(StartTextareaTag)\n if (selfClosers.hasOwnProperty(name)) return input.acceptToken(StartSelfClosingTag)\n if (parent && closeOnOpen[parent] && closeOnOpen[parent][name]) input.acceptToken(missingCloseTag, -1);\n else input.acceptToken(StartTag);\n }\n}, {contextual: true});\n\nconst commentContent = new ExternalTokenizer(input => {\n for (let dashes = 0, i = 0;; i++) {\n if (input.next < 0) {\n if (i) input.acceptToken(commentContent$1);\n break\n }\n if (input.next == dash) {\n dashes++;\n } else if (input.next == greaterThan && dashes >= 2) {\n if (i >= 3) input.acceptToken(commentContent$1, -2);\n break\n } else {\n dashes = 0;\n }\n input.advance();\n }\n});\n\nfunction inForeignElement(context) {\n for (; context; context = context.parent)\n if (context.name == \"svg\" || context.name == \"math\") return true\n return false\n}\n\nconst endTag = new ExternalTokenizer((input, stack) => {\n if (input.next == slash && input.peek(1) == greaterThan) {\n let selfClosing = stack.dialectEnabled(Dialect_selfClosing) || inForeignElement(stack.context);\n input.acceptToken(selfClosing ? SelfClosingEndTag : EndTag, 2);\n } else if (input.next == greaterThan) {\n input.acceptToken(EndTag, 1);\n }\n});\n\nfunction contentTokenizer(tag, textToken, endToken) {\n let lastState = 2 + tag.length;\n return new ExternalTokenizer(input => {\n // state means:\n // - 0 nothing matched\n // - 1 '<' matched\n // - 2 '</'\n // - 3-(1+tag.length) part of the tag matched\n // - lastState whole tag + possibly whitespace matched\n for (let state = 0, matchedLen = 0, i = 0;; i++) {\n if (input.next < 0) {\n if (i) input.acceptToken(textToken);\n break\n }\n if (state == 0 && input.next == lessThan ||\n state == 1 && input.next == slash ||\n state >= 2 && state < lastState && input.next == tag.charCodeAt(state - 2)) {\n state++;\n matchedLen++;\n } else if (state == lastState && input.next == greaterThan) {\n if (i > matchedLen)\n input.acceptToken(textToken, -matchedLen);\n else\n input.acceptToken(endToken, -(matchedLen - 2));\n break\n } else if ((input.next == 10 /* '\\n' */ || input.next == 13 /* '\\r' */) && i) {\n input.acceptToken(textToken, 1);\n break\n } else {\n state = matchedLen = 0;\n }\n input.advance();\n }\n })\n}\n\nconst scriptTokens = contentTokenizer(\"script\", scriptText, StartCloseScriptTag);\n\nconst styleTokens = contentTokenizer(\"style\", styleText, StartCloseStyleTag);\n\nconst textareaTokens = contentTokenizer(\"textarea\", textareaText, StartCloseTextareaTag);\n\nconst htmlHighlighting = styleTags({\n \"Text RawText IncompleteTag IncompleteCloseTag\": tags.content,\n \"StartTag StartCloseTag SelfClosingEndTag EndTag\": tags.angleBracket,\n TagName: tags.tagName,\n \"MismatchedCloseTag/TagName\": [tags.tagName, tags.invalid],\n AttributeName: tags.attributeName,\n \"AttributeValue UnquotedAttributeValue\": tags.attributeValue,\n Is: tags.definitionOperator,\n \"EntityReference CharacterReference\": tags.character,\n Comment: tags.blockComment,\n ProcessingInst: tags.processingInstruction,\n DoctypeDecl: tags.documentMeta\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst parser = LRParser.deserialize({\n version: 14,\n states: \",xOVO!rOOO!ZQ#tO'#CrO!`Q#tO'#C{O!eQ#tO'#DOO!jQ#tO'#DRO!oQ#tO'#DTO!tOaO'#CqO#PObO'#CqO#[OdO'#CqO$kO!rO'#CqOOO`'#Cq'#CqO$rO$fO'#DUO$zQ#tO'#DWO%PQ#tO'#DXOOO`'#Dl'#DlOOO`'#DZ'#DZQVO!rOOO%UQ&rO,59^O%aQ&rO,59gO%lQ&rO,59jO%wQ&rO,59mO&SQ&rO,59oOOOa'#D_'#D_O&_OaO'#CyO&jOaO,59]OOOb'#D`'#D`O&rObO'#C|O&}ObO,59]OOOd'#Da'#DaO'VOdO'#DPO'bOdO,59]OOO`'#Db'#DbO'jO!rO,59]O'qQ#tO'#DSOOO`,59],59]OOOp'#Dc'#DcO'vO$fO,59pOOO`,59p,59pO(OQ#|O,59rO(TQ#|O,59sOOO`-E7X-E7XO(YQ&rO'#CtOOQW'#D['#D[O(hQ&rO1G.xOOOa1G.x1G.xOOO`1G/Z1G/ZO(sQ&rO1G/ROOOb1G/R1G/RO)OQ&rO1G/UOOOd1G/U1G/UO)ZQ&rO1G/XOOO`1G/X1G/XO)fQ&rO1G/ZOOOa-E7]-E7]O)qQ#tO'#CzOOO`1G.w1G.wOOOb-E7^-E7^O)vQ#tO'#C}OOOd-E7_-E7_O){Q#tO'#DQOOO`-E7`-E7`O*QQ#|O,59nOOOp-E7a-E7aOOO`1G/[1G/[OOO`1G/^1G/^OOO`1G/_1G/_O*VQ,UO,59`OOQW-E7Y-E7YOOOa7+$d7+$dOOO`7+$u7+$uOOOb7+$m7+$mOOOd7+$p7+$pOOO`7+$s7+$sO*bQ#|O,59fO*gQ#|O,59iO*lQ#|O,59lOOO`1G/Y1G/YO*qO7[O'#CwO+SOMhO'#CwOOQW1G.z1G.zOOO`1G/Q1G/QOOO`1G/T1G/TOOO`1G/W1G/WOOOO'#D]'#D]O+eO7[O,59cOOQW,59c,59cOOOO'#D^'#D^O+vOMhO,59cOOOO-E7Z-E7ZOOQW1G.}1G.}OOOO-E7[-E7[\",\n stateData: \",c~O!_OS~OUSOVPOWQOXROYTO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O|_O!eZO~OgaO~OgbO~OgcO~OgdO~OgeO~O!XfOPmP![mP~O!YiOQpP![pP~O!ZlORsP![sP~OUSOVPOWQOXROYTOZqO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O!eZO~O![rO~P#gO!]sO!fuO~OgvO~OgwO~OS|OT}OiyO~OS!POT}OiyO~OS!ROT}OiyO~OS!TOT}OiyO~OS}OT}OiyO~O!XfOPmX![mX~OP!WO![!XO~O!YiOQpX![pX~OQ!ZO![!XO~O!ZlORsX![sX~OR!]O![!XO~O![!XO~P#gOg!_O~O!]sO!f!aO~OS!bO~OS!cO~Oj!dOShXThXihX~OS!fOT!gOiyO~OS!hOT!gOiyO~OS!iOT!gOiyO~OS!jOT!gOiyO~OS!gOT!gOiyO~Og!kO~Og!lO~Og!mO~OS!nO~Ol!qO!a!oO!c!pO~OS!rO~OS!sO~OS!tO~Ob!uOc!uOd!uO!a!wO!b!uO~Ob!xOc!xOd!xO!c!wO!d!xO~Ob!uOc!uOd!uO!a!{O!b!uO~Ob!xOc!xOd!xO!c!{O!d!xO~OT~cbd!ey|!e~\",\n goto: \"%q!aPPPPPPPPPPPPPPPPPPPPP!b!hP!nPP!zP!}#Q#T#Z#^#a#g#j#m#s#y!bP!b!bP$P$V$m$s$y%P%V%]%cPPPPPPPP%iX^OX`pXUOX`pezabcde{!O!Q!S!UR!q!dRhUR!XhXVOX`pRkVR!XkXWOX`pRnWR!XnXXOX`pQrXR!XpXYOX`pQ`ORx`Q{aQ!ObQ!QcQ!SdQ!UeZ!e{!O!Q!S!UQ!v!oR!z!vQ!y!pR!|!yQgUR!VgQjVR!YjQmWR![mQpXR!^pQtZR!`tS_O`ToXp\",\n nodeNames: \"⚠ StartCloseTag StartCloseTag StartCloseTag EndTag SelfClosingEndTag StartTag StartTag StartTag StartTag StartTag StartCloseTag StartCloseTag StartCloseTag IncompleteTag IncompleteCloseTag Document Text EntityReference CharacterReference InvalidEntity Element OpenTag TagName Attribute AttributeName Is AttributeValue UnquotedAttributeValue ScriptText CloseTag OpenTag StyleText CloseTag OpenTag TextareaText CloseTag OpenTag CloseTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag CloseTag DoctypeDecl\",\n maxTerm: 68,\n context: elementContext,\n nodeProps: [\n [\"closedBy\", -10,1,2,3,7,8,9,10,11,12,13,\"EndTag\",6,\"EndTag SelfClosingEndTag\",-4,22,31,34,37,\"CloseTag\"],\n [\"openedBy\", 4,\"StartTag StartCloseTag\",5,\"StartTag\",-4,30,33,36,38,\"OpenTag\"],\n [\"group\", -10,14,15,18,19,20,21,40,41,42,43,\"Entity\",17,\"Entity TextContent\",-3,29,32,35,\"TextContent Entity\"],\n [\"isolate\", -11,22,30,31,33,34,36,37,38,39,42,43,\"ltr\",-3,27,28,40,\"\"]\n ],\n propSources: [htmlHighlighting],\n skippedNodes: [0],\n repeatNodeCount: 9,\n tokenData: \"!<p!aR!YOX$qXY,QYZ,QZ[$q[]&X]^,Q^p$qpq,Qqr-_rs3_sv-_vw3}wxHYx}-_}!OH{!O!P-_!P!Q$q!Q![-_![!]Mz!]!^-_!^!_!$S!_!`!;x!`!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4U-_4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!Z$|caPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr$qrs&}sv$qvw+Pwx(tx!^$q!^!_*V!_!a&X!a#S$q#S#T&X#T;'S$q;'S;=`+z<%lO$q!R&bXaP!b`!dpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&Xq'UVaP!dpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n<%lO&}P'pTaPOv'kw!^'k!_;'S'k;'S;=`(P<%lO'kP(SP;=`<%l'kp([S!dpOv(Vx;'S(V;'S;=`(h<%lO(Vp(kP;=`<%l(Vq(qP;=`<%l&}a({WaP!b`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t`)jT!b`Or)esv)ew;'S)e;'S;=`)y<%lO)e`)|P;=`<%l)ea*SP;=`<%l(t!Q*^V!b`!dpOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!Q*vP;=`<%l*V!R*|P;=`<%l&XW+UYlWOX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+PW+wP;=`<%l+P!Z+}P;=`<%l$q!a,]`aP!b`!dp!_^OX&XXY,QYZ,QZ]&X]^,Q^p&Xpq,Qqr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!_-ljiSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q[/ebiSlWOX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+PS0rXiSqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0mS1bP;=`<%l0m[1hP;=`<%l/^!V1vciSaP!b`!dpOq&Xqr1krs&}sv1kvw0mwx(tx!P1k!P!Q&X!Q!^1k!^!_*V!_!a&X!a#s1k#s$f&X$f;'S1k;'S;=`3R<%l?Ah1k?Ah?BY&X?BY?Mn1k?MnO&X!V3UP;=`<%l1k!_3[P;=`<%l-_!Z3hV!ahaP!dpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n<%lO&}!_4WiiSlWd!ROX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst>]tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^/^!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!Z5zblWOX5uXZ7SZ[5u[^7S^p5uqr5urs7Sst+Ptw5uwx7Sx!]5u!]!^7w!^!a7S!a#S5u#S#T7S#T;'S5u;'S;=`8n<%lO5u!R7VVOp7Sqs7St!]7S!]!^7l!^;'S7S;'S;=`7q<%lO7S!R7qOb!R!R7tP;=`<%l7S!Z8OYlWb!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!Z8qP;=`<%l5u!_8{iiSlWOX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst/^tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^:j!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!_:sbiSlWb!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!V<QciSOp7Sqr;{rs7Sst0mtw;{wx7Sx!P;{!P!Q7S!Q!];{!]!^=]!^!a7S!a#s;{#s$f7S$f;'S;{;'S;=`>P<%l?Ah;{?Ah?BY7S?BY?Mn;{?MnO7S!V=dXiSb!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!V>SP;=`<%l;{!_>YP;=`<%l8t!_>dhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^/^!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!Z@TalWOX@OXZAYZ[@O[^AY^p@Oqr@OrsAYsw@OwxAYx!]@O!]!^Az!^!aAY!a#S@O#S#TAY#T;'S@O;'S;=`Bq<%lO@O!RA]UOpAYq!]AY!]!^Ao!^;'SAY;'S;=`At<%lOAY!RAtOc!R!RAwP;=`<%lAY!ZBRYlWc!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!ZBtP;=`<%l@O!_COhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^Dj!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!_DsbiSlWc!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VFQbiSOpAYqrE{rsAYswE{wxAYx!PE{!P!QAY!Q!]E{!]!^GY!^!aAY!a#sE{#s$fAY$f;'SE{;'S;=`G|<%l?AhE{?Ah?BYAY?BY?MnE{?MnOAY!VGaXiSc!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!VHPP;=`<%lE{!_HVP;=`<%lBw!ZHcW!cxaP!b`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t!aIYliSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OKQ!O!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!aK_kiSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!`&X!`!aMS!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!TM_XaP!b`!dp!fQOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!aNZ!ZiSgQaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OMz!O!PMz!P!Q$q!Q![Mz![!]Mz!]!^-_!^!_*V!_!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f$}-_$}%OMz%O%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4UMz4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Je-_$Je$JgMz$Jg$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!a!$PP;=`<%lMz!R!$ZY!b`!dpOq*Vqr!$yrs(Vsv*Vwx)ex!a*V!a!b!4t!b;'S*V;'S;=`*s<%lO*V!R!%Q]!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!%y!O!f*V!f!g!']!g#W*V#W#X!0`#X;'S*V;'S;=`*s<%lO*V!R!&QX!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!&m!O;'S*V;'S;=`*s<%lO*V!R!&vV!b`!dp!ePOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!'dX!b`!dpOr*Vrs(Vsv*Vwx)ex!q*V!q!r!(P!r;'S*V;'S;=`*s<%lO*V!R!(WX!b`!dpOr*Vrs(Vsv*Vwx)ex!e*V!e!f!(s!f;'S*V;'S;=`*s<%lO*V!R!(zX!b`!dpOr*Vrs(Vsv*Vwx)ex!v*V!v!w!)g!w;'S*V;'S;=`*s<%lO*V!R!)nX!b`!dpOr*Vrs(Vsv*Vwx)ex!{*V!{!|!*Z!|;'S*V;'S;=`*s<%lO*V!R!*bX!b`!dpOr*Vrs(Vsv*Vwx)ex!r*V!r!s!*}!s;'S*V;'S;=`*s<%lO*V!R!+UX!b`!dpOr*Vrs(Vsv*Vwx)ex!g*V!g!h!+q!h;'S*V;'S;=`*s<%lO*V!R!+xY!b`!dpOr!+qrs!,hsv!+qvw!-Swx!.[x!`!+q!`!a!/j!a;'S!+q;'S;=`!0Y<%lO!+qq!,mV!dpOv!,hvx!-Sx!`!,h!`!a!-q!a;'S!,h;'S;=`!.U<%lO!,hP!-VTO!`!-S!`!a!-f!a;'S!-S;'S;=`!-k<%lO!-SP!-kO|PP!-nP;=`<%l!-Sq!-xS!dp|POv(Vx;'S(V;'S;=`(h<%lO(Vq!.XP;=`<%l!,ha!.aX!b`Or!.[rs!-Ssv!.[vw!-Sw!`!.[!`!a!.|!a;'S!.[;'S;=`!/d<%lO!.[a!/TT!b`|POr)esv)ew;'S)e;'S;=`)y<%lO)ea!/gP;=`<%l!.[!R!/sV!b`!dp|POr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!0]P;=`<%l!+q!R!0gX!b`!dpOr*Vrs(Vsv*Vwx)ex#c*V#c#d!1S#d;'S*V;'S;=`*s<%lO*V!R!1ZX!b`!dpOr*Vrs(Vsv*Vwx)ex#V*V#V#W!1v#W;'S*V;'S;=`*s<%lO*V!R!1}X!b`!dpOr*Vrs(Vsv*Vwx)ex#h*V#h#i!2j#i;'S*V;'S;=`*s<%lO*V!R!2qX!b`!dpOr*Vrs(Vsv*Vwx)ex#m*V#m#n!3^#n;'S*V;'S;=`*s<%lO*V!R!3eX!b`!dpOr*Vrs(Vsv*Vwx)ex#d*V#d#e!4Q#e;'S*V;'S;=`*s<%lO*V!R!4XX!b`!dpOr*Vrs(Vsv*Vwx)ex#X*V#X#Y!+q#Y;'S*V;'S;=`*s<%lO*V!R!4{Y!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!a!4t!a!b!:]!b;'S!4t;'S;=`!;r<%lO!4tq!5pV!dpOv!5kvx!6Vx!a!5k!a!b!7W!b;'S!5k;'S;=`!8V<%lO!5kP!6YTO!a!6V!a!b!6i!b;'S!6V;'S;=`!7Q<%lO!6VP!6lTO!`!6V!`!a!6{!a;'S!6V;'S;=`!7Q<%lO!6VP!7QOyPP!7TP;=`<%l!6Vq!7]V!dpOv!5kvx!6Vx!`!5k!`!a!7r!a;'S!5k;'S;=`!8V<%lO!5kq!7yS!dpyPOv(Vx;'S(V;'S;=`(h<%lO(Vq!8YP;=`<%l!5ka!8bX!b`Or!8]rs!6Vsv!8]vw!6Vw!a!8]!a!b!8}!b;'S!8];'S;=`!:V<%lO!8]a!9SX!b`Or!8]rs!6Vsv!8]vw!6Vw!`!8]!`!a!9o!a;'S!8];'S;=`!:V<%lO!8]a!9vT!b`yPOr)esv)ew;'S)e;'S;=`)y<%lO)ea!:YP;=`<%l!8]!R!:dY!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!`!4t!`!a!;S!a;'S!4t;'S;=`!;r<%lO!4t!R!;]V!b`!dpyPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!;uP;=`<%l!4t!V!<TXjSaP!b`!dpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X\",\n tokenizers: [scriptTokens, styleTokens, textareaTokens, endTag, tagStart, commentContent, 0, 1, 2, 3, 4, 5],\n topRules: {\"Document\":[0,16]},\n dialects: {noMatch: 0, selfClosing: 515},\n tokenPrec: 517\n});\n\nfunction getAttrs(openTag, input) {\n let attrs = Object.create(null);\n for (let att of openTag.getChildren(Attribute)) {\n let name = att.getChild(AttributeName), value = att.getChild(AttributeValue) || att.getChild(UnquotedAttributeValue);\n if (name) attrs[input.read(name.from, name.to)] =\n !value ? \"\" : value.type.id == AttributeValue ? input.read(value.from + 1, value.to - 1) : input.read(value.from, value.to);\n }\n return attrs\n}\n\nfunction findTagName(openTag, input) {\n let tagNameNode = openTag.getChild(TagName);\n return tagNameNode ? input.read(tagNameNode.from, tagNameNode.to) : \" \"\n}\n\nfunction maybeNest(node, input, tags) {\n let attrs;\n for (let tag of tags) {\n if (!tag.attrs || tag.attrs(attrs || (attrs = getAttrs(node.node.parent.firstChild, input))))\n return {parser: tag.parser, bracketed: true}\n }\n return null\n}\n\n// tags?: {\n// tag: string,\n// attrs?: ({[attr: string]: string}) => boolean,\n// parser: Parser\n// }[]\n// attributes?: {\n// name: string,\n// tagName?: string,\n// parser: Parser\n// }[]\n \nfunction configureNesting(tags = [], attributes = []) {\n let script = [], style = [], textarea = [], other = [];\n for (let tag of tags) {\n let array = tag.tag == \"script\" ? script : tag.tag == \"style\" ? style : tag.tag == \"textarea\" ? textarea : other;\n array.push(tag);\n }\n let attrs = attributes.length ? Object.create(null) : null;\n for (let attr of attributes) (attrs[attr.name] || (attrs[attr.name] = [])).push(attr);\n\n return parseMixed((node, input) => {\n let id = node.type.id;\n if (id == ScriptText) return maybeNest(node, input, script)\n if (id == StyleText) return maybeNest(node, input, style)\n if (id == TextareaText) return maybeNest(node, input, textarea)\n\n if (id == Element && other.length) {\n let n = node.node, open = n.firstChild, tagName = open && findTagName(open, input), attrs;\n if (tagName) for (let tag of other) {\n if (tag.tag == tagName && (!tag.attrs || tag.attrs(attrs || (attrs = getAttrs(open, input))))) {\n let close = n.lastChild;\n let to = close.type.id == CloseTag ? close.from : n.to;\n if (to > open.to)\n return {parser: tag.parser, overlay: [{from: open.to, to}]}\n }\n }\n }\n\n if (attrs && id == Attribute) {\n let n = node.node, nameNode;\n if (nameNode = n.firstChild) {\n let matches = attrs[input.read(nameNode.from, nameNode.to)];\n if (matches) for (let attr of matches) {\n if (attr.tagName && attr.tagName != findTagName(n.parent, input)) continue\n let value = n.lastChild;\n if (value.type.id == AttributeValue) {\n let from = value.from + 1;\n let last = value.lastChild, to = value.to - (last && last.isError ? 0 : 1);\n if (to > from) return {parser: attr.parser, overlay: [{from, to}], bracketed: true}\n } else if (value.type.id == UnquotedAttributeValue) {\n return {parser: attr.parser, overlay: [{from: value.from, to: value.to}]}\n }\n }\n }\n }\n return null\n })\n}\n\nexport { configureNesting, parser };\n","import { ContextTracker, ExternalTokenizer, LRParser, LocalTokenGroup } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst noSemi = 316,\n noSemiType = 317,\n incdec = 1,\n incdecPrefix = 2,\n questionDot = 3,\n JSXStartTag = 4,\n insertSemi = 318,\n spaces = 320,\n newline = 321,\n LineComment = 5,\n BlockComment = 6,\n Dialect_jsx = 0;\n\n/* Hand-written tokenizers for JavaScript tokens that can't be\n expressed by lezer's built-in tokenizer. */\n\nconst space = [9, 10, 11, 12, 13, 32, 133, 160, 5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200,\n 8201, 8202, 8232, 8233, 8239, 8287, 12288];\n\nconst braceR = 125, semicolon = 59, slash = 47, star = 42, plus = 43, minus = 45, lt = 60, comma = 44,\n question = 63, dot = 46, bracketL = 91;\n\nconst trackNewline = new ContextTracker({\n start: false,\n shift(context, term) {\n return term == LineComment || term == BlockComment || term == spaces ? context : term == newline\n },\n strict: false\n});\n\nconst insertSemicolon = new ExternalTokenizer((input, stack) => {\n let {next} = input;\n if (next == braceR || next == -1 || stack.context)\n input.acceptToken(insertSemi);\n}, {contextual: true, fallback: true});\n\nconst noSemicolon = new ExternalTokenizer((input, stack) => {\n let {next} = input, after;\n if (space.indexOf(next) > -1) return\n if (next == slash && ((after = input.peek(1)) == slash || after == star)) return\n if (next != braceR && next != semicolon && next != -1 && !stack.context)\n input.acceptToken(noSemi);\n}, {contextual: true});\n\nconst noSemicolonType = new ExternalTokenizer((input, stack) => {\n if (input.next == bracketL && !stack.context) input.acceptToken(noSemiType);\n}, {contextual: true});\n\nconst operatorToken = new ExternalTokenizer((input, stack) => {\n let {next} = input;\n if (next == plus || next == minus) {\n input.advance();\n if (next == input.next) {\n input.advance();\n let mayPostfix = !stack.context && stack.canShift(incdec);\n input.acceptToken(mayPostfix ? incdec : incdecPrefix);\n }\n } else if (next == question && input.peek(1) == dot) {\n input.advance(); input.advance();\n if (input.next < 48 || input.next > 57) // No digit after\n input.acceptToken(questionDot);\n }\n}, {contextual: true});\n\nfunction identifierChar(ch, start) {\n return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch == 95 || ch >= 192 ||\n !start && ch >= 48 && ch <= 57\n}\n\nconst jsx = new ExternalTokenizer((input, stack) => {\n if (input.next != lt || !stack.dialectEnabled(Dialect_jsx)) return\n input.advance();\n if (input.next == slash) return\n // Scan for an identifier followed by a comma or 'extends', don't\n // treat this as a start tag if present.\n let back = 0;\n while (space.indexOf(input.next) > -1) { input.advance(); back++; }\n if (identifierChar(input.next, true)) {\n input.advance();\n back++;\n while (identifierChar(input.next, false)) { input.advance(); back++; }\n while (space.indexOf(input.next) > -1) { input.advance(); back++; }\n if (input.next == comma) return\n for (let i = 0;; i++) {\n if (i == 7) {\n if (!identifierChar(input.next, true)) return\n break\n }\n if (input.next != \"extends\".charCodeAt(i)) break\n input.advance();\n back++;\n }\n }\n input.acceptToken(JSXStartTag, -back);\n});\n\nconst jsHighlight = styleTags({\n \"get set async static\": tags.modifier,\n \"for while do if else switch try catch finally return throw break continue default case defer\": tags.controlKeyword,\n \"in of await yield void typeof delete instanceof as satisfies\": tags.operatorKeyword,\n \"let var const using function class extends\": tags.definitionKeyword,\n \"import export from\": tags.moduleKeyword,\n \"with debugger new\": tags.keyword,\n TemplateString: tags.special(tags.string),\n super: tags.atom,\n BooleanLiteral: tags.bool,\n this: tags.self,\n null: tags.null,\n Star: tags.modifier,\n VariableName: tags.variableName,\n \"CallExpression/VariableName TaggedTemplateExpression/VariableName\": tags.function(tags.variableName),\n VariableDefinition: tags.definition(tags.variableName),\n Label: tags.labelName,\n PropertyName: tags.propertyName,\n PrivatePropertyName: tags.special(tags.propertyName),\n \"CallExpression/MemberExpression/PropertyName\": tags.function(tags.propertyName),\n \"FunctionDeclaration/VariableDefinition\": tags.function(tags.definition(tags.variableName)),\n \"ClassDeclaration/VariableDefinition\": tags.definition(tags.className),\n \"NewExpression/VariableName\": tags.className,\n PropertyDefinition: tags.definition(tags.propertyName),\n PrivatePropertyDefinition: tags.definition(tags.special(tags.propertyName)),\n UpdateOp: tags.updateOperator,\n \"LineComment Hashbang\": tags.lineComment,\n BlockComment: tags.blockComment,\n Number: tags.number,\n String: tags.string,\n Escape: tags.escape,\n ArithOp: tags.arithmeticOperator,\n LogicOp: tags.logicOperator,\n BitOp: tags.bitwiseOperator,\n CompareOp: tags.compareOperator,\n RegExp: tags.regexp,\n Equals: tags.definitionOperator,\n Arrow: tags.function(tags.punctuation),\n \": Spread\": tags.punctuation,\n \"( )\": tags.paren,\n \"[ ]\": tags.squareBracket,\n \"{ }\": tags.brace,\n \"InterpolationStart InterpolationEnd\": tags.special(tags.brace),\n \".\": tags.derefOperator,\n \", ;\": tags.separator,\n \"@\": tags.meta,\n\n TypeName: tags.typeName,\n TypeDefinition: tags.definition(tags.typeName),\n \"type enum interface implements namespace module declare\": tags.definitionKeyword,\n \"abstract global Privacy readonly override\": tags.modifier,\n \"is keyof unique infer asserts\": tags.operatorKeyword,\n\n JSXAttributeValue: tags.attributeValue,\n JSXText: tags.content,\n \"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag\": tags.angleBracket,\n \"JSXIdentifier JSXNameSpacedName\": tags.tagName,\n \"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName\": tags.attributeName,\n \"JSXBuiltin/JSXIdentifier\": tags.standard(tags.tagName)\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst spec_identifier = {__proto__:null,export:20, as:25, from:33, default:36, async:41, function:42, in:52, out:55, const:56, extends:60, this:64, true:72, false:72, null:84, void:88, typeof:92, super:108, new:142, delete:154, yield:163, await:167, class:172, public:235, private:235, protected:235, readonly:237, instanceof:256, satisfies:259, import:292, keyof:349, unique:353, infer:359, asserts:395, is:397, abstract:417, implements:419, type:421, let:424, var:426, using:429, interface:435, enum:439, namespace:445, module:447, declare:451, global:455, defer:471, for:476, of:485, while:488, with:492, do:496, if:500, else:502, switch:506, case:512, try:518, catch:522, finally:526, return:530, throw:534, break:538, continue:542, debugger:546};\nconst spec_word = {__proto__:null,async:129, get:131, set:133, declare:195, public:197, private:197, protected:197, static:199, abstract:201, override:203, readonly:209, accessor:211, new:401};\nconst spec_LessThan = {__proto__:null,\"<\":193};\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"$F|Q%TQlOOO%[QlOOO'_QpOOP(lO`OOO*zQ!0MxO'#CiO+RO#tO'#CjO+aO&jO'#CjO+oO#@ItO'#DaO.QQlO'#DgO.bQlO'#DrO%[QlO'#DzO0fQlO'#ESOOQ!0Lf'#E['#E[O1PQ`O'#EXOOQO'#Ep'#EpOOQO'#Il'#IlO1XQ`O'#GsO1dQ`O'#EoO1iQ`O'#EoO3hQ!0MxO'#JrO6[Q!0MxO'#JsO6uQ`O'#F]O6zQ,UO'#FtOOQ!0Lf'#Ff'#FfO7VO7dO'#FfO9XQMhO'#F|O9`Q`O'#F{OOQ!0Lf'#Js'#JsOOQ!0Lb'#Jr'#JrO9eQ`O'#GwOOQ['#K_'#K_O9pQ`O'#IYO9uQ!0LrO'#IZOOQ['#J`'#J`OOQ['#I_'#I_Q`QlOOQ`QlOOO9}Q!L^O'#DvO:UQlO'#EOO:]QlO'#EQO9kQ`O'#GsO:dQMhO'#CoO:rQ`O'#EnO:}Q`O'#EyO;hQMhO'#FeO;xQ`O'#GsOOQO'#K`'#K`O;}Q`O'#K`O<]Q`O'#G{O<]Q`O'#G|O<]Q`O'#HOO9kQ`O'#HRO=SQ`O'#HUO>kQ`O'#CeO>{Q`O'#HcO?TQ`O'#HiO?TQ`O'#HkO`QlO'#HmO?TQ`O'#HoO?TQ`O'#HrO?YQ`O'#HxO?_Q!0LsO'#IOO%[QlO'#IQO?jQ!0LsO'#ISO?uQ!0LsO'#IUO9uQ!0LrO'#IWO@QQ!0MxO'#CiOASQpO'#DlQOQ`OOO%[QlO'#EQOAjQ`O'#ETO:dQMhO'#EnOAuQ`O'#EnOBQQ!bO'#FeOOQ['#Cg'#CgOOQ!0Lb'#Dq'#DqOOQ!0Lb'#Jv'#JvO%[QlO'#JvOOQO'#Jy'#JyOOQO'#Ih'#IhOCQQpO'#EgOOQ!0Lb'#Ef'#EfOOQ!0Lb'#J}'#J}OC|Q!0MSO'#EgODWQpO'#EWOOQO'#Jx'#JxODlQpO'#JyOEyQpO'#EWODWQpO'#EgPFWO&2DjO'#CbPOOO)CD})CD}OOOO'#I`'#I`OFcO#tO,59UOOQ!0Lh,59U,59UOOOO'#Ia'#IaOFqO&jO,59UOGPQ!L^O'#DcOOOO'#Ic'#IcOGWO#@ItO,59{OOQ!0Lf,59{,59{OGfQlO'#IdOGyQ`O'#JtOIxQ!fO'#JtO+}QlO'#JtOJPQ`O,5:ROJgQ`O'#EpOJtQ`O'#KTOKPQ`O'#KSOKPQ`O'#KSOKXQ`O,5;^OK^Q`O'#KROOQ!0Ln,5:^,5:^OKeQlO,5:^OMcQ!0MxO,5:fONSQ`O,5:nONmQ!0LrO'#KQONtQ`O'#KPO9eQ`O'#KPO! YQ`O'#KPO! bQ`O,5;]O! gQ`O'#KPO!#lQ!fO'#JsOOQ!0Lh'#Ci'#CiO%[QlO'#ESO!$[Q!fO,5:sOOQS'#Jz'#JzOOQO-E<j-E<jO9kQ`O,5=_O!$rQ`O,5=_O!$wQlO,5;ZO!&zQMhO'#EkO!(eQ`O,5;ZO!(jQlO'#DyO!(tQpO,5;dO!(|QpO,5;dO%[QlO,5;dOOQ['#FT'#FTOOQ['#FV'#FVO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eOOQ['#FZ'#FZO!)[QlO,5;tOOQ!0Lf,5;y,5;yOOQ!0Lf,5;z,5;zOOQ!0Lf,5;|,5;|O%[QlO'#IpO!+_Q!0LrO,5<iO%[QlO,5;eO!&zQMhO,5;eO!+|QMhO,5;eO!-nQMhO'#E^O%[QlO,5;wOOQ!0Lf,5;{,5;{O!-uQ,UO'#FjO!.rQ,UO'#KXO!.^Q,UO'#KXO!.yQ,UO'#KXOOQO'#KX'#KXO!/_Q,UO,5<SOOOW,5<`,5<`O!/pQlO'#FvOOOW'#Io'#IoO7VO7dO,5<QO!/wQ,UO'#FxOOQ!0Lf,5<Q,5<QO!0hQ$IUO'#CyOOQ!0Lh'#C}'#C}O!0{O#@ItO'#DRO!1iQMjO,5<eO!1pQ`O,5<hO!3YQ(CWO'#GXO!3jQ`O'#GYO!3oQ`O'#GYO!5_Q(CWO'#G^O!6dQpO'#GbOOQO'#Gn'#GnO!,TQMhO'#GmOOQO'#Gp'#GpO!,TQMhO'#GoO!7VQ$IUO'#JlOOQ!0Lh'#Jl'#JlO!7aQ`O'#JkO!7oQ`O'#JjO!7wQ`O'#CuOOQ!0Lh'#C{'#C{O!8YQ`O'#C}OOQ!0Lh'#DV'#DVOOQ!0Lh'#DX'#DXO!8_Q`O,5<eO1SQ`O'#DZO!,TQMhO'#GPO!,TQMhO'#GRO!8gQ`O'#GTO!8lQ`O'#GUO!3oQ`O'#G[O!,TQMhO'#GaO<]Q`O'#JkO!8qQ`O'#EqO!9`Q`O,5<gOOQ!0Lb'#Cr'#CrO!9hQ`O'#ErO!:bQpO'#EsOOQ!0Lb'#KR'#KRO!:iQ!0LrO'#KaO9uQ!0LrO,5=cO`QlO,5>tOOQ['#Jh'#JhOOQ[,5>u,5>uOOQ[-E<]-E<]O!<hQ!0MxO,5:bO!:]QpO,5:`O!?RQ!0MxO,5:jO%[QlO,5:jO!AiQ!0MxO,5:lOOQO,5@z,5@zO!BYQMhO,5=_O!BhQ!0LrO'#JiO9`Q`O'#JiO!ByQ!0LrO,59ZO!CUQpO,59ZO!C^QMhO,59ZO:dQMhO,59ZO!CiQ`O,5;ZO!CqQ`O'#HbO!DVQ`O'#KdO%[QlO,5;}O!:]QpO,5<PO!D_Q`O,5=zO!DdQ`O,5=zO!DiQ`O,5=zO!DwQ`O,5=zO9uQ!0LrO,5=zO<]Q`O,5=jOOQO'#Cy'#CyO!EOQpO,5=gO!EWQMhO,5=hO!EcQ`O,5=jO!EhQ!bO,5=mO!EpQ`O'#K`O?YQ`O'#HWO9kQ`O'#HYO!EuQ`O'#HYO:dQMhO'#H[O!EzQ`O'#H[OOQ[,5=p,5=pO!FPQ`O'#H]O!FbQ`O'#CoO!FgQ`O,59PO!FqQ`O,59PO!HvQlO,59POOQ[,59P,59PO!IWQ!0LrO,59PO%[QlO,59PO!KcQlO'#HeOOQ['#Hf'#HfOOQ['#Hg'#HgO`QlO,5=}O!KyQ`O,5=}O`QlO,5>TO`QlO,5>VO!LOQ`O,5>XO`QlO,5>ZO!LTQ`O,5>^O!LYQlO,5>dOOQ[,5>j,5>jO%[QlO,5>jO9uQ!0LrO,5>lOOQ[,5>n,5>nO#!dQ`O,5>nOOQ[,5>p,5>pO#!dQ`O,5>pOOQ[,5>r,5>rO##QQpO'#D_O%[QlO'#JvO##sQpO'#JvO##}QpO'#DmO#$`QpO'#DmO#&qQlO'#DmO#&xQ`O'#JuO#'QQ`O,5:WO#'VQ`O'#EtO#'eQ`O'#KUO#'mQ`O,5;_O#'rQpO'#DmO#(PQpO'#EVOOQ!0Lf,5:o,5:oO%[QlO,5:oO#(WQ`O,5:oO?YQ`O,5;YO!CUQpO,5;YO!C^QMhO,5;YO:dQMhO,5;YO#(`Q`O,5@bO#(eQ07dO,5:sOOQO-E<f-E<fO#)kQ!0MSO,5;RODWQpO,5:rO#)uQpO,5:rODWQpO,5;RO!ByQ!0LrO,5:rOOQ!0Lb'#Ej'#EjOOQO,5;R,5;RO%[QlO,5;RO#*SQ!0LrO,5;RO#*_Q!0LrO,5;RO!CUQpO,5:rOOQO,5;X,5;XO#*mQ!0LrO,5;RPOOO'#I^'#I^P#+RO&2DjO,58|POOO,58|,58|OOOO-E<^-E<^OOQ!0Lh1G.p1G.pOOOO-E<_-E<_OOOO,59},59}O#+^Q!bO,59}OOOO-E<a-E<aOOQ!0Lf1G/g1G/gO#+cQ!fO,5?OO+}QlO,5?OOOQO,5?U,5?UO#+mQlO'#IdOOQO-E<b-E<bO#+zQ`O,5@`O#,SQ!fO,5@`O#,ZQ`O,5@nOOQ!0Lf1G/m1G/mO%[QlO,5@oO#,cQ`O'#IjOOQO-E<h-E<hO#,ZQ`O,5@nOOQ!0Lb1G0x1G0xOOQ!0Ln1G/x1G/xOOQ!0Ln1G0Y1G0YO%[QlO,5@lO#,wQ!0LrO,5@lO#-YQ!0LrO,5@lO#-aQ`O,5@kO9eQ`O,5@kO#-iQ`O,5@kO#-wQ`O'#ImO#-aQ`O,5@kOOQ!0Lb1G0w1G0wO!(tQpO,5:uO!)PQpO,5:uOOQS,5:w,5:wO#.iQdO,5:wO#.qQMhO1G2yO9kQ`O1G2yOOQ!0Lf1G0u1G0uO#/PQ!0MxO1G0uO#0UQ!0MvO,5;VOOQ!0Lh'#GW'#GWO#0rQ!0MzO'#JlO!$wQlO1G0uO#2}Q!fO'#JwO%[QlO'#JwO#3XQ`O,5:eOOQ!0Lh'#D_'#D_OOQ!0Lf1G1O1G1OO%[QlO1G1OOOQ!0Lf1G1f1G1fO#3^Q`O1G1OO#5rQ!0MxO1G1PO#5yQ!0MxO1G1PO#8aQ!0MxO1G1PO#8hQ!0MxO1G1PO#;OQ!0MxO1G1PO#=fQ!0MxO1G1PO#=mQ!0MxO1G1PO#=tQ!0MxO1G1PO#@[Q!0MxO1G1PO#@cQ!0MxO1G1PO#BpQ?MtO'#CiO#DkQ?MtO1G1`O#DrQ?MtO'#JsO#EVQ!0MxO,5?[OOQ!0Lb-E<n-E<nO#GdQ!0MxO1G1PO#HaQ!0MzO1G1POOQ!0Lf1G1P1G1PO#IdQMjO'#J|O#InQ`O,5:xO#IsQ!0MxO1G1cO#JgQ,UO,5<WO#JoQ,UO,5<XO#JwQ,UO'#FoO#K`Q`O'#FnOOQO'#KY'#KYOOQO'#In'#InO#KeQ,UO1G1nOOQ!0Lf1G1n1G1nOOOW1G1y1G1yO#KvQ?MtO'#JrO#LQQ`O,5<bO!)[QlO,5<bOOOW-E<m-E<mOOQ!0Lf1G1l1G1lO#LVQpO'#KXOOQ!0Lf,5<d,5<dO#L_QpO,5<dO#LdQMhO'#DTOOOO'#Ib'#IbO#LkO#@ItO,59mOOQ!0Lh,59m,59mO%[QlO1G2PO!8lQ`O'#IrO#LvQ`O,5<zOOQ!0Lh,5<w,5<wO!,TQMhO'#IuO#MdQMjO,5=XO!,TQMhO'#IwO#NVQMjO,5=ZO!&zQMhO,5=]OOQO1G2S1G2SO#NaQ!dO'#CrO#NtQ(CWO'#ErO$ |QpO'#GbO$!dQ!dO,5<sO$!kQ`O'#K[O9eQ`O'#K[O$!yQ`O,5<uO$#aQ!dO'#C{O!,TQMhO,5<tO$#kQ`O'#GZO$$PQ`O,5<tO$$UQ!dO'#GWO$$cQ!dO'#K]O$$mQ`O'#K]O!&zQMhO'#K]O$$rQ`O,5<xO$$wQlO'#JvO$%RQpO'#GcO#$`QpO'#GcO$%dQ`O'#GgO!3oQ`O'#GkO$%iQ!0LrO'#ItO$%tQpO,5<|OOQ!0Lp,5<|,5<|O$%{QpO'#GcO$&YQpO'#GdO$&kQpO'#GdO$&pQMjO,5=XO$'QQMjO,5=ZOOQ!0Lh,5=^,5=^O!,TQMhO,5@VO!,TQMhO,5@VO$'bQ`O'#IyO$'vQ`O,5@UO$(OQ`O,59aOOQ!0Lh,59i,59iO$(TQ`O,5@VO$)TQ$IYO,59uOOQ!0Lh'#Jp'#JpO$)vQMjO,5<kO$*iQMjO,5<mO@zQ`O,5<oOOQ!0Lh,5<p,5<pO$*sQ`O,5<vO$*xQMjO,5<{O$+YQ`O'#KPO!$wQlO1G2RO$+_Q`O1G2RO9eQ`O'#KSO9eQ`O'#EtO%[QlO'#EtO9eQ`O'#I{O$+dQ!0LrO,5@{OOQ[1G2}1G2}OOQ[1G4`1G4`OOQ!0Lf1G/|1G/|OOQ!0Lf1G/z1G/zO$-fQ!0MxO1G0UOOQ[1G2y1G2yO!&zQMhO1G2yO%[QlO1G2yO#.tQ`O1G2yO$/jQMhO'#EkOOQ!0Lb,5@T,5@TO$/wQ!0LrO,5@TOOQ[1G.u1G.uO!ByQ!0LrO1G.uO!CUQpO1G.uO!C^QMhO1G.uO$0YQ`O1G0uO$0_Q`O'#CiO$0jQ`O'#KeO$0rQ`O,5=|O$0wQ`O'#KeO$0|Q`O'#KeO$1[Q`O'#JRO$1jQ`O,5AOO$1rQ!fO1G1iOOQ!0Lf1G1k1G1kO9kQ`O1G3fO@zQ`O1G3fO$1yQ`O1G3fO$2OQ`O1G3fO!DiQ`O1G3fO9uQ!0LrO1G3fOOQ[1G3f1G3fO!EcQ`O1G3UO!&zQMhO1G3RO$2TQ`O1G3ROOQ[1G3S1G3SO!&zQMhO1G3SO$2YQ`O1G3SO$2bQpO'#HQOOQ[1G3U1G3UO!6_QpO'#I}O!EhQ!bO1G3XOOQ[1G3X1G3XOOQ[,5=r,5=rO$2jQMhO,5=tO9kQ`O,5=tO$%dQ`O,5=vO9`Q`O,5=vO!CUQpO,5=vO!C^QMhO,5=vO:dQMhO,5=vO$2xQ`O'#KcO$3TQ`O,5=wOOQ[1G.k1G.kO$3YQ!0LrO1G.kO@zQ`O1G.kO$3eQ`O1G.kO9uQ!0LrO1G.kO$5mQ!fO,5AQO$5zQ`O,5AQO9eQ`O,5AQO$6VQlO,5>PO$6^Q`O,5>POOQ[1G3i1G3iO`QlO1G3iOOQ[1G3o1G3oOOQ[1G3q1G3qO?TQ`O1G3sO$6cQlO1G3uO$:gQlO'#HtOOQ[1G3x1G3xO$:tQ`O'#HzO?YQ`O'#H|OOQ[1G4O1G4OO$:|QlO1G4OO9uQ!0LrO1G4UOOQ[1G4W1G4WOOQ!0Lb'#G_'#G_O9uQ!0LrO1G4YO9uQ!0LrO1G4[O$?TQ`O,5@bO!)[QlO,5;`O9eQ`O,5;`O?YQ`O,5:XO!)[QlO,5:XO!CUQpO,5:XO$?YQ?MtO,5:XOOQO,5;`,5;`O$?dQpO'#IeO$?zQ`O,5@aOOQ!0Lf1G/r1G/rO$@SQpO'#IkO$@^Q`O,5@pOOQ!0Lb1G0y1G0yO#$`QpO,5:XOOQO'#Ig'#IgO$@fQpO,5:qOOQ!0Ln,5:q,5:qO#(ZQ`O1G0ZOOQ!0Lf1G0Z1G0ZO%[QlO1G0ZOOQ!0Lf1G0t1G0tO?YQ`O1G0tO!CUQpO1G0tO!C^QMhO1G0tOOQ!0Lb1G5|1G5|O!ByQ!0LrO1G0^OOQO1G0m1G0mO%[QlO1G0mO$@mQ!0LrO1G0mO$@xQ!0LrO1G0mO!CUQpO1G0^ODWQpO1G0^O$AWQ!0LrO1G0mOOQO1G0^1G0^O$AlQ!0MxO1G0mPOOO-E<[-E<[POOO1G.h1G.hOOOO1G/i1G/iO$AvQ!bO,5<iO$BOQ!fO1G4jOOQO1G4p1G4pO%[QlO,5?OO$BYQ`O1G5zO$BbQ`O1G6YO$BjQ!fO1G6ZO9eQ`O,5?UO$BtQ!0MxO1G6WO%[QlO1G6WO$CUQ!0LrO1G6WO$CgQ`O1G6VO$CgQ`O1G6VO9eQ`O1G6VO$CoQ`O,5?XO9eQ`O,5?XOOQO,5?X,5?XO$DTQ`O,5?XO$+YQ`O,5?XOOQO-E<k-E<kOOQS1G0a1G0aOOQS1G0c1G0cO#.lQ`O1G0cOOQ[7+(e7+(eO!&zQMhO7+(eO%[QlO7+(eO$DcQ`O7+(eO$DnQMhO7+(eO$D|Q!0MzO,5=XO$GXQ!0MzO,5=ZO$IdQ!0MzO,5=XO$KuQ!0MzO,5=ZO$NWQ!0MzO,59uO%!]Q!0MzO,5<kO%$hQ!0MzO,5<mO%&sQ!0MzO,5<{OOQ!0Lf7+&a7+&aO%)UQ!0MxO7+&aO%)xQlO'#IfO%*VQ`O,5@cO%*_Q!fO,5@cOOQ!0Lf1G0P1G0PO%*iQ`O7+&jOOQ!0Lf7+&j7+&jO%*nQ?MtO,5:fO%[QlO7+&zO%*xQ?MtO,5:bO%+VQ?MtO,5:jO%+aQ?MtO,5:lO%+kQMhO'#IiO%+uQ`O,5@hOOQ!0Lh1G0d1G0dOOQO1G1r1G1rOOQO1G1s1G1sO%+}Q!jO,5<ZO!)[QlO,5<YOOQO-E<l-E<lOOQ!0Lf7+'Y7+'YOOOW7+'e7+'eOOOW1G1|1G1|O%,YQ`O1G1|OOQ!0Lf1G2O1G2OOOOO,59o,59oO%,_Q!dO,59oOOOO-E<`-E<`OOQ!0Lh1G/X1G/XO%,fQ!0MxO7+'kOOQ!0Lh,5?^,5?^O%-YQMhO1G2fP%-aQ`O'#IrPOQ!0Lh-E<p-E<pO%-}QMjO,5?aOOQ!0Lh-E<s-E<sO%.pQMjO,5?cOOQ!0Lh-E<u-E<uO%.zQ!dO1G2wO%/RQ!dO'#CrO%/iQMhO'#KSO$$wQlO'#JvOOQ!0Lh1G2_1G2_O%/sQ`O'#IqO%0[Q`O,5@vO%0[Q`O,5@vO%0dQ`O,5@vO%0oQ`O,5@vOOQO1G2a1G2aO%0}QMjO1G2`O$+YQ`O'#K[O!,TQMhO1G2`O%1_Q(CWO'#IsO%1lQ`O,5@wO!&zQMhO,5@wO%1tQ!dO,5@wOOQ!0Lh1G2d1G2dO%4UQ!fO'#CiO%4`Q`O,5=POOQ!0Lb,5<},5<}O%4hQpO,5<}OOQ!0Lb,5=O,5=OOCwQ`O,5<}O%4sQpO,5<}OOQ!0Lb,5=R,5=RO$+YQ`O,5=VOOQO,5?`,5?`OOQO-E<r-E<rOOQ!0Lp1G2h1G2hO#$`QpO,5<}O$$wQlO,5=PO%5RQ`O,5=OO%5^QpO,5=OO!,TQMhO'#IuO%6WQMjO1G2sO!,TQMhO'#IwO%6yQMjO1G2uO%7TQMjO1G5qO%7_QMjO1G5qOOQO,5?e,5?eOOQO-E<w-E<wOOQO1G.{1G.{O!,TQMhO1G5qO!,TQMhO1G5qO!:]QpO,59wO%[QlO,59wOOQ!0Lh,5<j,5<jO%7lQ`O1G2ZO!,TQMhO1G2bO%7qQ!0MxO7+'mOOQ!0Lf7+'m7+'mO!$wQlO7+'mO%8eQ`O,5;`OOQ!0Lb,5?g,5?gOOQ!0Lb-E<y-E<yO%8jQ!dO'#K^O#(ZQ`O7+(eO4UQ!fO7+(eO$DfQ`O7+(eO%8tQ!0MvO'#CiO%9XQ!0MvO,5=SO%9lQ`O,5=SO%9tQ`O,5=SOOQ!0Lb1G5o1G5oOOQ[7+$a7+$aO!ByQ!0LrO7+$aO!CUQpO7+$aO!$wQlO7+&aO%9yQ`O'#JQO%:bQ`O,5APOOQO1G3h1G3hO9kQ`O,5APO%:bQ`O,5APO%:jQ`O,5APOOQO,5?m,5?mOOQO-E=P-E=POOQ!0Lf7+'T7+'TO%:oQ`O7+)QO9uQ!0LrO7+)QO9kQ`O7+)QO@zQ`O7+)QO%:tQ`O7+)QOOQ[7+)Q7+)QOOQ[7+(p7+(pO%:yQ!0MvO7+(mO!&zQMhO7+(mO!E^Q`O7+(nOOQ[7+(n7+(nO!&zQMhO7+(nO%;TQ`O'#KbO%;`Q`O,5=lOOQO,5?i,5?iOOQO-E<{-E<{OOQ[7+(s7+(sO%<rQpO'#HZOOQ[1G3`1G3`O!&zQMhO1G3`O%[QlO1G3`O%<yQ`O1G3`O%=UQMhO1G3`O9uQ!0LrO1G3bO$%dQ`O1G3bO9`Q`O1G3bO!CUQpO1G3bO!C^QMhO1G3bO%=dQ`O'#JPO%=xQ`O,5@}O%>QQpO,5@}OOQ!0Lb1G3c1G3cOOQ[7+$V7+$VO@zQ`O7+$VO9uQ!0LrO7+$VO%>]Q`O7+$VO%[QlO1G6lO%[QlO1G6mO%>bQ!0LrO1G6lO%>lQlO1G3kO%>sQ`O1G3kO%>xQlO1G3kOOQ[7+)T7+)TO9uQ!0LrO7+)_O`QlO7+)aOOQ['#Kh'#KhOOQ['#JS'#JSO%?PQlO,5>`OOQ[,5>`,5>`O%[QlO'#HuO%?^Q`O'#HwOOQ[,5>f,5>fO9eQ`O,5>fOOQ[,5>h,5>hOOQ[7+)j7+)jOOQ[7+)p7+)pOOQ[7+)t7+)tOOQ[7+)v7+)vO%?cQpO1G5|O%?}Q?MtO1G0zO%@XQ`O1G0zOOQO1G/s1G/sO%@dQ?MtO1G/sO?YQ`O1G/sO!)[QlO'#DmOOQO,5?P,5?POOQO-E<c-E<cOOQO,5?V,5?VOOQO-E<i-E<iO!CUQpO1G/sOOQO-E<e-E<eOOQ!0Ln1G0]1G0]OOQ!0Lf7+%u7+%uO#(ZQ`O7+%uOOQ!0Lf7+&`7+&`O?YQ`O7+&`O!CUQpO7+&`OOQO7+%x7+%xO$AlQ!0MxO7+&XOOQO7+&X7+&XO%[QlO7+&XO%@nQ!0LrO7+&XO!ByQ!0LrO7+%xO!CUQpO7+%xO%@yQ!0LrO7+&XO%AXQ!0MxO7++rO%[QlO7++rO%AiQ`O7++qO%AiQ`O7++qOOQO1G4s1G4sO9eQ`O1G4sO%AqQ`O1G4sOOQS7+%}7+%}O#(ZQ`O<<LPO4UQ!fO<<LPO%BPQ`O<<LPOOQ[<<LP<<LPO!&zQMhO<<LPO%[QlO<<LPO%BXQ`O<<LPO%BdQ!0MzO,5?aO%DoQ!0MzO,5?cO%FzQ!0MzO1G2`O%I]Q!0MzO1G2sO%KhQ!0MzO1G2uO%MsQ!fO,5?QO%[QlO,5?QOOQO-E<d-E<dO%M}Q`O1G5}OOQ!0Lf<<JU<<JUO%NVQ?MtO1G0uO&!^Q?MtO1G1PO&!eQ?MtO1G1PO&$fQ?MtO1G1PO&$mQ?MtO1G1PO&&nQ?MtO1G1PO&(oQ?MtO1G1PO&(vQ?MtO1G1PO&(}Q?MtO1G1PO&+OQ?MtO1G1PO&+VQ?MtO1G1PO&+^Q!0MxO<<JfO&-UQ?MtO1G1PO&.RQ?MvO1G1PO&/UQ?MvO'#JlO&1[Q?MtO1G1cO&1iQ?MtO1G0UO&1sQMjO,5?TOOQO-E<g-E<gO!)[QlO'#FqOOQO'#KZ'#KZOOQO1G1u1G1uO&1}Q`O1G1tO&2SQ?MtO,5?[OOOW7+'h7+'hOOOO1G/Z1G/ZO&2^Q!dO1G4xOOQ!0Lh7+(Q7+(QP!&zQMhO,5?^O!,TQMhO7+(cO&2eQ`O,5?]O9eQ`O,5?]O$+YQ`O,5?]OOQO-E<o-E<oO&2sQ`O1G6bO&2sQ`O1G6bO&2{Q`O1G6bO&3WQMjO7+'zO&3hQ!dO,5?_O&3rQ`O,5?_O!&zQMhO,5?_OOQO-E<q-E<qO&3wQ!dO1G6cO&4RQ`O1G6cO&4ZQ`O1G2kO!&zQMhO1G2kOOQ!0Lb1G2i1G2iOOQ!0Lb1G2j1G2jO%4hQpO1G2iO!CUQpO1G2iOCwQ`O1G2iOOQ!0Lb1G2q1G2qO&4`QpO1G2iO&4nQ`O1G2kO$+YQ`O1G2jOCwQ`O1G2jO$$wQlO1G2kO&4vQ`O1G2jO&5jQMjO,5?aOOQ!0Lh-E<t-E<tO&6]QMjO,5?cOOQ!0Lh-E<v-E<vO!,TQMhO7++]O&6gQMjO7++]O&6qQMjO7++]OOQ!0Lh1G/c1G/cO&7OQ`O1G/cOOQ!0Lh7+'u7+'uO&7TQMjO7+'|O&7eQ!0MxO<<KXOOQ!0Lf<<KX<<KXO&8XQ`O1G0zO!&zQMhO'#IzO&8^Q`O,5@xO&:`Q!fO<<LPO!&zQMhO1G2nO&:gQ!0LrO1G2nOOQ[<<G{<<G{O!ByQ!0LrO<<G{O&:xQ!0MxO<<I{OOQ!0Lf<<I{<<I{OOQO,5?l,5?lO&;lQ`O,5?lO&;qQ`O,5?lOOQO-E=O-E=OO&<PQ`O1G6kO&<PQ`O1G6kO9kQ`O1G6kO@zQ`O<<LlOOQ[<<Ll<<LlO&<XQ`O<<LlO9uQ!0LrO<<LlO9kQ`O<<LlOOQ[<<LX<<LXO%:yQ!0MvO<<LXOOQ[<<LY<<LYO!E^Q`O<<LYO&<^QpO'#I|O&<iQ`O,5@|O!)[QlO,5@|OOQ[1G3W1G3WOOQO'#JO'#JOO9uQ!0LrO'#JOO&<qQpO,5=uOOQ[,5=u,5=uO&<xQpO'#EgO&=PQpO'#GeO&=UQ`O7+(zO&=ZQ`O7+(zOOQ[7+(z7+(zO!&zQMhO7+(zO%[QlO7+(zO&=cQ`O7+(zOOQ[7+(|7+(|O9uQ!0LrO7+(|O$%dQ`O7+(|O9`Q`O7+(|O!CUQpO7+(|O&=nQ`O,5?kOOQO-E<}-E<}OOQO'#H^'#H^O&=yQ`O1G6iO9uQ!0LrO<<GqOOQ[<<Gq<<GqO@zQ`O<<GqO&>RQ`O7+,WO&>WQ`O7+,XO%[QlO7+,WO%[QlO7+,XOOQ[7+)V7+)VO&>]Q`O7+)VO&>bQlO7+)VO&>iQ`O7+)VOOQ[<<Ly<<LyOOQ[<<L{<<L{OOQ[-E=Q-E=QOOQ[1G3z1G3zO&>nQ`O,5>aOOQ[,5>c,5>cO&>sQ`O1G4QO9eQ`O7+&fO!)[QlO7+&fOOQO7+%_7+%_O&>xQ?MtO1G6ZO?YQ`O7+%_OOQ!0Lf<<Ia<<IaOOQ!0Lf<<Iz<<IzO?YQ`O<<IzOOQO<<Is<<IsO$AlQ!0MxO<<IsO%[QlO<<IsOOQO<<Id<<IdO!ByQ!0LrO<<IdO&?SQ!0LrO<<IsO&?_Q!0MxO<= ^O&?oQ`O<= ]OOQO7+*_7+*_O9eQ`O7+*_OOQ[ANAkANAkO&?wQ!fOANAkO!&zQMhOANAkO#(ZQ`OANAkO4UQ!fOANAkO&@OQ`OANAkO%[QlOANAkO&@WQ!0MzO7+'zO&BiQ!0MzO,5?aO&DtQ!0MzO,5?cO&GPQ!0MzO7+'|O&IbQ!fO1G4lO&IlQ?MtO7+&aO&KpQ?MvO,5=XO&MwQ?MvO,5=ZO&NXQ?MvO,5=XO&NiQ?MvO,5=ZO&NyQ?MvO,59uO'#PQ?MvO,5<kO'%SQ?MvO,5<mO''hQ?MvO,5<{O')^Q?MtO7+'kO')kQ?MtO7+'mO')xQ`O,5<]OOQO7+'`7+'`OOQ!0Lh7+*d7+*dO')}QMjO<<K}OOQO1G4w1G4wO'*UQ`O1G4wO'*aQ`O1G4wO'*oQ`O7++|O'*oQ`O7++|O!&zQMhO1G4yO'*wQ!dO1G4yO'+RQ`O7++}O'+ZQ`O7+(VO'+fQ!dO7+(VOOQ!0Lb7+(T7+(TOOQ!0Lb7+(U7+(UO!CUQpO7+(TOCwQ`O7+(TO'+pQ`O7+(VO!&zQMhO7+(VO$+YQ`O7+(UO'+uQ`O7+(VOCwQ`O7+(UO'+}QMjO<<NwO!,TQMhO<<NwOOQ!0Lh7+$}7+$}O',XQ!dO,5?fOOQO-E<x-E<xO',cQ!0MvO7+(YO!&zQMhO7+(YOOQ[AN=gAN=gO9kQ`O1G5WOOQO1G5W1G5WO',sQ`O1G5WO',xQ`O7+,VO',xQ`O7+,VO9uQ!0LrOANBWO@zQ`OANBWOOQ[ANBWANBWO'-QQ`OANBWOOQ[ANAsANAsOOQ[ANAtANAtO'-VQ`O,5?hOOQO-E<z-E<zO'-bQ?MtO1G6hOOQO,5?j,5?jOOQO-E<|-E<|OOQ[1G3a1G3aO'-lQ`O,5=POOQ[<<Lf<<LfO!&zQMhO<<LfO&=UQ`O<<LfO'-qQ`O<<LfO%[QlO<<LfOOQ[<<Lh<<LhO9uQ!0LrO<<LhO$%dQ`O<<LhO9`Q`O<<LhO'-yQpO1G5VO'.UQ`O7+,TOOQ[AN=]AN=]O9uQ!0LrOAN=]OOQ[<= r<= rOOQ[<= s<= sO'.^Q`O<= rO'.cQ`O<= sOOQ[<<Lq<<LqO'.hQ`O<<LqO'.mQlO<<LqOOQ[1G3{1G3{O?YQ`O7+)lO'.tQ`O<<JQO'/PQ?MtO<<JQOOQO<<Hy<<HyOOQ!0LfAN?fAN?fOOQOAN?_AN?_O$AlQ!0MxOAN?_OOQOAN?OAN?OO%[QlOAN?_OOQO<<My<<MyOOQ[G27VG27VO!&zQMhOG27VO#(ZQ`OG27VO'/ZQ!fOG27VO4UQ!fOG27VO'/bQ`OG27VO'/jQ?MtO<<JfO'/wQ?MvO1G2`O'1mQ?MvO,5?aO'3pQ?MvO,5?cO'5sQ?MvO1G2sO'7vQ?MvO1G2uO'9yQ?MtO<<KXO':WQ?MtO<<I{OOQO1G1w1G1wO!,TQMhOANAiOOQO7+*c7+*cO':eQ`O7+*cO':pQ`O<= hO':xQ!dO7+*eOOQ!0Lb<<Kq<<KqO$+YQ`O<<KqOCwQ`O<<KqO';SQ`O<<KqO!&zQMhO<<KqOOQ!0Lb<<Ko<<KoO!CUQpO<<KoO';_Q!dO<<KqOOQ!0Lb<<Kp<<KpO';iQ`O<<KqO!&zQMhO<<KqO$+YQ`O<<KpO';nQMjOANDcO';xQ!0MvO<<KtOOQO7+*r7+*rO9kQ`O7+*rO'<YQ`O<= qOOQ[G27rG27rO9uQ!0LrOG27rO@zQ`OG27rO!)[QlO1G5SO'<bQ`O7+,SO'<jQ`O1G2kO&=UQ`OANBQOOQ[ANBQANBQO!&zQMhOANBQO'<oQ`OANBQOOQ[ANBSANBSO9uQ!0LrOANBSO$%dQ`OANBSOOQO'#H_'#H_OOQO7+*q7+*qOOQ[G22wG22wOOQ[ANE^ANE^OOQ[ANE_ANE_OOQ[ANB]ANB]O'<wQ`OANB]OOQ[<<MW<<MWO!)[QlOAN?lOOQOG24yG24yO$AlQ!0MxOG24yO#(ZQ`OLD,qOOQ[LD,qLD,qO!&zQMhOLD,qO'<|Q!fOLD,qO'=TQ?MvO7+'zO'>yQ?MvO,5?aO'@|Q?MvO,5?cO'CPQ?MvO7+'|O'DuQMjOG27TOOQO<<M}<<M}OOQ!0LbANA]ANA]O$+YQ`OANA]OCwQ`OANA]O'EVQ!dOANA]OOQ!0LbANAZANAZO'E^Q`OANA]O!&zQMhOANA]O'EiQ!dOANA]OOQ!0LbANA[ANA[OOQO<<N^<<N^OOQ[LD-^LD-^O9uQ!0LrOLD-^O'EsQ?MtO7+*nOOQO'#Gf'#GfOOQ[G27lG27lO&=UQ`OG27lO!&zQMhOG27lOOQ[G27nG27nO9uQ!0LrOG27nOOQ[G27wG27wO'E}Q?MtOG25WOOQOLD*eLD*eOOQ[!$(!]!$(!]O#(ZQ`O!$(!]O!&zQMhO!$(!]O'FXQ!0MzOG27TOOQ!0LbG26wG26wO$+YQ`OG26wO'HjQ`OG26wOCwQ`OG26wO'HuQ!dOG26wO!&zQMhOG26wOOQ[!$(!x!$(!xOOQ[LD-WLD-WO&=UQ`OLD-WOOQ[LD-YLD-YOOQ[!)9Ew!)9EwO#(ZQ`O!)9EwOOQ!0LbLD,cLD,cO$+YQ`OLD,cOCwQ`OLD,cO'H|Q`OLD,cO'IXQ!dOLD,cOOQ[!$(!r!$(!rOOQ[!.K;c!.K;cO'I`Q?MvOG27TOOQ!0Lb!$( }!$( }O$+YQ`O!$( }OCwQ`O!$( }O'KUQ`O!$( }OOQ!0Lb!)9Ei!)9EiO$+YQ`O!)9EiOCwQ`O!)9EiOOQ!0Lb!.K;T!.K;TO$+YQ`O!.K;TOOQ!0Lb!4/0o!4/0oO!)[QlO'#DzO1PQ`O'#EXO'KaQ!fO'#JrO'KhQ!L^O'#DvO'KoQlO'#EOO'KvQ!fO'#CiO'N^Q!fO'#CiO!)[QlO'#EQO'NnQlO,5;ZO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO'#IpO(!qQ`O,5<iO!)[QlO,5;eO(!yQMhO,5;eO($dQMhO,5;eO!)[QlO,5;wO!&zQMhO'#GmO(!yQMhO'#GmO!&zQMhO'#GoO(!yQMhO'#GoO1SQ`O'#DZO1SQ`O'#DZO!&zQMhO'#GPO(!yQMhO'#GPO!&zQMhO'#GRO(!yQMhO'#GRO!&zQMhO'#GaO(!yQMhO'#GaO!)[QlO,5:jO($kQpO'#D_O($uQpO'#JvO!)[QlO,5@oO'NnQlO1G0uO(%PQ?MtO'#CiO!)[QlO1G2PO!&zQMhO'#IuO(!yQMhO'#IuO!&zQMhO'#IwO(!yQMhO'#IwO(%ZQ!dO'#CrO!&zQMhO,5<tO(!yQMhO,5<tO'NnQlO1G2RO!)[QlO7+&zO!&zQMhO1G2`O(!yQMhO1G2`O!&zQMhO'#IuO(!yQMhO'#IuO!&zQMhO'#IwO(!yQMhO'#IwO!&zQMhO1G2bO(!yQMhO1G2bO'NnQlO7+'mO'NnQlO7+&aO!&zQMhOANAiO(!yQMhOANAiO(%nQ`O'#EoO(%sQ`O'#EoO(%{Q`O'#F]O(&QQ`O'#EyO(&VQ`O'#KTO(&bQ`O'#KRO(&mQ`O,5;ZO(&rQMjO,5<eO(&yQ`O'#GYO('OQ`O'#GYO('TQ`O,5<eO(']Q`O,5<gO('eQ`O,5;ZO('mQ?MtO1G1`O('tQ`O,5<tO('yQ`O,5<tO((OQ`O,5<vO((TQ`O,5<vO((YQ`O1G2RO((_Q`O1G0uO((dQMjO<<K}O((kQMjO<<K}O((rQMhO'#F|O9`Q`O'#F{OAuQ`O'#EnO!)[QlO,5;tO!3oQ`O'#GYO!3oQ`O'#GYO!3oQ`O'#G[O!3oQ`O'#G[O!,TQMhO7+(cO!,TQMhO7+(cO%.zQ!dO1G2wO%.zQ!dO1G2wO!&zQMhO,5=]O!&zQMhO,5=]\",\n stateData: \"()x~O'|OS'}OSTOS(ORQ~OPYOQYOSfOY!VOaqOdzOeyOl!POpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_XO!iuO!lZO!oYO!pYO!qYO!svO!uwO!xxO!|]O$W|O$niO%h}O%j!QO%l!OO%m!OO%n!OO%q!RO%s!SO%v!TO%w!TO%y!UO&W!WO&^!XO&`!YO&b!ZO&d![O&g!]O&m!^O&s!_O&u!`O&w!aO&y!bO&{!cO(TSO(VTO(YUO(aVO(o[O~OWtO~P`OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(T!dO(VTO(YUO(aVO(o[O~Oa!wOs!nO!S!oO!b!yO!c!vO!d!vO!|<VO#T!pO#U!pO#V!xO#W!pO#X!pO#[!zO#]!zO(U!lO(VTO(YUO(e!mO(o!sO~O(O!{O~OP]XR]X[]Xa]Xj]Xr]X!Q]X!S]X!]]X!l]X!p]X#R]X#S]X#`]X#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X'z]X(a]X(r]X(y]X(z]X~O!g%RX~P(qO_!}O(V#PO(W!}O(X#PO~O_#QO(X#PO(Y#PO(Z#QO~Ox#SO!U#TO(b#TO(c#VO~OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(T<ZO(VTO(YUO(aVO(o[O~O![#ZO!]#WO!Y(hP!Y(vP~P+}O!^#cO~P`OPYOQYOSfOd!jOe!iOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(VTO(YUO(aVO(o[O~Op#mO![#iO!|]O#i#lO#j#iO(T<[O!k(sP~P.iO!l#oO(T#nO~O!x#sO!|]O%h#tO~O#k#uO~O!g#vO#k#uO~OP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!]$_O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO#z$WO#{$XO(aVO(r$YO(y#|O(z#}O~Oa(fX'z(fX'w(fX!k(fX!Y(fX!_(fX%i(fX!g(fX~P1qO#S$dO#`$eO$Q$eOP(gXR(gX[(gXj(gXr(gX!Q(gX!S(gX!](gX!l(gX!p(gX#R(gX#n(gX#o(gX#p(gX#q(gX#r(gX#s(gX#t(gX#u(gX#v(gX#x(gX#z(gX#{(gX(a(gX(r(gX(y(gX(z(gX!_(gX%i(gX~Oa(gX'z(gX'w(gX!Y(gX!k(gXv(gX!g(gX~P4UO#`$eO~O$]$hO$_$gO$f$mO~OSfO!_$nO$i$oO$k$qO~Oh%VOj%dOk%dOp%WOr%XOs$tOt$tOz%YO|%ZO!O%]O!S${O!_$|O!i%bO!l$xO#j%cO$W%`O$t%^O$v%_O$y%aO(T$sO(VTO(YUO(a$uO(y$}O(z%POg(^P~Ol%[O~P7eO!l%eO~O!S%hO!_%iO(T%gO~O!g%mO~Oa%nO'z%nO~O!Q%rO~P%[O(U!lO~P%[O%n%vO~P%[Oh%VO!l%eO(T%gO(U!lO~Oe%}O!l%eO(T%gO~Oj$RO~O!_&PO(T%gO(U!lO(VTO(YUO`)WP~O!Q&SO!l&RO%j&VO&T&WO~P;SO!x#sO~O%s&YO!S)SX!_)SX(T)SX~O(T&ZO~Ol!PO!u&`O%j!QO%l!OO%m!OO%n!OO%q!RO%s!SO%v!TO%w!TO~Od&eOe&dO!x&bO%h&cO%{&aO~P<bOd&hOeyOl!PO!_&gO!u&`O!xxO!|]O%h}O%l!OO%m!OO%n!OO%q!RO%s!SO%v!TO%w!TO%y!UO~Ob&kO#`&nO%j&iO(U!lO~P=gO!l&oO!u&sO~O!l#oO~O!_XO~Oa%nO'x&{O'z%nO~Oa%nO'x'OO'z%nO~Oa%nO'x'QO'z%nO~O'w]X!Y]Xv]X!k]X&[]X!_]X%i]X!g]X~P(qO!b'_O!c'WO!d'WO(U!lO(VTO(YUO~Os'UO!S'TO!['XO(e'SO!^(iP!^(xP~P@nOn'bO!_'`O(T%gO~Oe'gO!l%eO(T%gO~O!Q&SO!l&RO~Os!nO!S!oO!|<VO#T!pO#U!pO#W!pO#X!pO(U!lO(VTO(YUO(e!mO(o!sO~O!b'mO!c'lO!d'lO#V!pO#['nO#]'nO~PBYOa%nOh%VO!g#vO!l%eO'z%nO(r'pO~O!p'tO#`'rO~PChOs!nO!S!oO(VTO(YUO(e!mO(o!sO~O!_XOs(mX!S(mX!b(mX!c(mX!d(mX!|(mX#T(mX#U(mX#V(mX#W(mX#X(mX#[(mX#](mX(U(mX(V(mX(Y(mX(e(mX(o(mX~O!c'lO!d'lO(U!lO~PDWO(P'xO(Q'xO(R'zO~O_!}O(V'|O(W!}O(X'|O~O_#QO(X'|O(Y'|O(Z#QO~Ov(OO~P%[Ox#SO!U#TO(b#TO(c(RO~O![(TO!Y'WX!Y'^X!]'WX!]'^X~P+}O!](VO!Y(hX~OP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!](VO!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO#z$WO#{$XO(aVO(r$YO(y#|O(z#}O~O!Y(hX~PHRO!Y([O~O!Y(uX!](uX!g(uX!k(uX(r(uX~O#`(uX#k#dX!^(uX~PJUO#`(]O!Y(wX!](wX~O!](^O!Y(vX~O!Y(aO~O#`$eO~PJUO!^(bO~P`OR#zO!Q#yO!S#{O!l#xO(aVOP!na[!naj!nar!na!]!na!p!na#R!na#n!na#o!na#p!na#q!na#r!na#s!na#t!na#u!na#v!na#x!na#z!na#{!na(r!na(y!na(z!na~Oa!na'z!na'w!na!Y!na!k!nav!na!_!na%i!na!g!na~PKlO!k(cO~O!g#vO#`(dO(r'pO!](tXa(tX'z(tX~O!k(tX~PNXO!S%hO!_%iO!|]O#i(iO#j(hO(T%gO~O!](jO!k(sX~O!k(lO~O!S%hO!_%iO#j(hO(T%gO~OP(gXR(gX[(gXj(gXr(gX!Q(gX!S(gX!](gX!l(gX!p(gX#R(gX#n(gX#o(gX#p(gX#q(gX#r(gX#s(gX#t(gX#u(gX#v(gX#x(gX#z(gX#{(gX(a(gX(r(gX(y(gX(z(gX~O!g#vO!k(gX~P! uOR(nO!Q(mO!l#xO#S$dO!|!{a!S!{a~O!x!{a%h!{a!_!{a#i!{a#j!{a(T!{a~P!#vO!x(rO~OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_XO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(T!dO(VTO(YUO(aVO(o[O~Oh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O<sO!S${O!_$|O!i>VO!l$xO#j<yO$W%`O$t<uO$v<wO$y%aO(T(vO(VTO(YUO(a$uO(y$}O(z%PO~O#k(xO~O![(zO!k(kP~P%[O(e(|O(o[O~O!S)OO!l#xO(e(|O(o[O~OP<UOQ<UOSfOd>ROe!iOpkOr<UOskOtkOzkO|<UO!O<UO!SWO!WkO!XkO!_!eO!i<XO!lZO!o<UO!p<UO!q<UO!s<YO!u<]O!x!hO$W!kO$n>PO(T)]O(VTO(YUO(aVO(o[O~O!]$_Oa$qa'z$qa'w$qa!k$qa!Y$qa!_$qa%i$qa!g$qa~Ol)dO~P!&zOh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O%]O!S${O!_$|O!i%bO!l$xO#j%cO$W%`O$t%^O$v%_O$y%aO(T(vO(VTO(YUO(a$uO(y$}O(z%PO~Og(pP~P!,TO!Q)iO!g)hO!_$^X$Z$^X$]$^X$_$^X$f$^X~O!g)hO!_({X$Z({X$]({X$_({X$f({X~O!Q)iO~P!.^O!Q)iO!_({X$Z({X$]({X$_({X$f({X~O!_)kO$Z)oO$])jO$_)jO$f)pO~O![)sO~P!)[O$]$hO$_$gO$f)wO~On$zX!Q$zX#S$zX'y$zX(y$zX(z$zX~OgmXg$zXnmX!]mX#`mX~P!0SOx)yO(b)zO(c)|O~On*VO!Q*OO'y*PO(y$}O(z%PO~Og)}O~P!1WOg*WO~Oh%VOr%XOs$tOt$tOz%YO|%ZO!O<sO!S*YO!_*ZO!i>VO!l$xO#j<yO$W%`O$t<uO$v<wO$y%aO(VTO(YUO(a$uO(y$}O(z%PO~Op*`O![*^O(T*XO!k)OP~P!1uO#k*aO~O!l*bO~Oh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O<sO!S${O!_$|O!i>VO!l$xO#j<yO$W%`O$t<uO$v<wO$y%aO(T*dO(VTO(YUO(a$uO(y$}O(z%PO~O![*gO!Y)PP~P!3tOr*sOs!nO!S*iO!b*qO!c*kO!d*kO!l*bO#[*rO%`*mO(U!lO(VTO(YUO(e!mO~O!^*pO~P!5iO#S$dOn(`X!Q(`X'y(`X(y(`X(z(`X!](`X#`(`X~Og(`X$O(`X~P!6kOn*xO#`*wOg(_X!](_X~O!]*yOg(^X~Oj%dOk%dOl%dO(T&ZOg(^P~Os*|O~Og)}O(T&ZO~O!l+SO~O(T(vO~Op+WO!S%hO![#iO!_%iO!|]O#i#lO#j#iO(T%gO!k(sP~O!g#vO#k+XO~O!S%hO![+ZO!](^O!_%iO(T%gO!Y(vP~Os'[O!S+]O![+[O(VTO(YUO(e(|O~O!^(xP~P!9|O!]+^Oa)TX'z)TX~OP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO#z$WO#{$XO(aVO(r$YO(y#|O(z#}O~Oa!ja!]!ja'z!ja'w!ja!Y!ja!k!jav!ja!_!ja%i!ja!g!ja~P!:tOR#zO!Q#yO!S#{O!l#xO(aVOP!ra[!raj!rar!ra!]!ra!p!ra#R!ra#n!ra#o!ra#p!ra#q!ra#r!ra#s!ra#t!ra#u!ra#v!ra#x!ra#z!ra#{!ra(r!ra(y!ra(z!ra~Oa!ra'z!ra'w!ra!Y!ra!k!rav!ra!_!ra%i!ra!g!ra~P!=[OR#zO!Q#yO!S#{O!l#xO(aVOP!ta[!taj!tar!ta!]!ta!p!ta#R!ta#n!ta#o!ta#p!ta#q!ta#r!ta#s!ta#t!ta#u!ta#v!ta#x!ta#z!ta#{!ta(r!ta(y!ta(z!ta~Oa!ta'z!ta'w!ta!Y!ta!k!tav!ta!_!ta%i!ta!g!ta~P!?rOh%VOn+gO!_'`O%i+fO~O!g+iOa(]X!_(]X'z(]X!](]X~Oa%nO!_XO'z%nO~Oh%VO!l%eO~Oh%VO!l%eO(T%gO~O!g#vO#k(xO~Ob+tO%j+uO(T+qO(VTO(YUO!^)XP~O!]+vO`)WX~O[+zO~O`+{O~O!_&PO(T%gO(U!lO`)WP~O%j,OO~P;SOh%VO#`,SO~Oh%VOn,VO!_$|O~O!_,XO~O!Q,ZO!_XO~O%n%vO~O!x,`O~Oe,eO~Ob,fO(T#nO(VTO(YUO!^)VP~Oe%}O~O%j!QO(T&ZO~P=gO[,kO`,jO~OPYOQYOSfOdzOeyOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!iuO!lZO!oYO!pYO!qYO!svO!xxO!|]O$niO%h}O(VTO(YUO(aVO(o[O~O!_!eO!u!gO$W!kO(T!dO~P!FyO`,jOa%nO'z%nO~OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!x!hO$W!kO$niO(T!dO(VTO(YUO(aVO(o[O~Oa,pOl!OO!uwO%l!OO%m!OO%n!OO~P!IcO!l&oO~O&^,vO~O!_,xO~O&o,zO&q,{OP&laQ&laS&laY&laa&lad&lae&lal&lap&lar&las&lat&laz&la|&la!O&la!S&la!W&la!X&la!_&la!i&la!l&la!o&la!p&la!q&la!s&la!u&la!x&la!|&la$W&la$n&la%h&la%j&la%l&la%m&la%n&la%q&la%s&la%v&la%w&la%y&la&W&la&^&la&`&la&b&la&d&la&g&la&m&la&s&la&u&la&w&la&y&la&{&la'w&la(T&la(V&la(Y&la(a&la(o&la!^&la&e&lab&la&j&la~O(T-QO~Oh!eX!]!RX!^!RX!g!RX!g!eX!l!eX#`!RX~O!]!eX!^!eX~P#!iO!g-VO#`-UOh(jX!]#hX!^#hX!g(jX!l(jX~O!](jX!^(jX~P##[Oh%VO!g-XO!l%eO!]!aX!^!aX~Os!nO!S!oO(VTO(YUO(e!mO~OP<UOQ<UOSfOd>ROe!iOpkOr<UOskOtkOzkO|<UO!O<UO!SWO!WkO!XkO!_!eO!i<XO!lZO!o<UO!p<UO!q<UO!s<YO!u<]O!x!hO$W!kO$n>PO(VTO(YUO(aVO(o[O~O(T=QO~P#$qO!]-]O!^(iX~O!^-_O~O!g-VO#`-UO!]#hX!^#hX~O!]-`O!^(xX~O!^-bO~O!c-cO!d-cO(U!lO~P#$`O!^-fO~P'_On-iO!_'`O~O!Y-nO~Os!{a!b!{a!c!{a!d!{a#T!{a#U!{a#V!{a#W!{a#X!{a#[!{a#]!{a(U!{a(V!{a(Y!{a(e!{a(o!{a~P!#vO!p-sO#`-qO~PChO!c-uO!d-uO(U!lO~PDWOa%nO#`-qO'z%nO~Oa%nO!g#vO#`-qO'z%nO~Oa%nO!g#vO!p-sO#`-qO'z%nO(r'pO~O(P'xO(Q'xO(R-zO~Ov-{O~O!Y'Wa!]'Wa~P!:tO![.PO!Y'WX!]'WX~P%[O!](VO!Y(ha~O!Y(ha~PHRO!](^O!Y(va~O!S%hO![.TO!_%iO(T%gO!Y'^X!]'^X~O#`.VO!](ta!k(taa(ta'z(ta~O!g#vO~P#,wO!](jO!k(sa~O!S%hO!_%iO#j.ZO(T%gO~Op.`O!S%hO![.]O!_%iO!|]O#i._O#j.]O(T%gO!]'aX!k'aX~OR.dO!l#xO~Oh%VOn.gO!_'`O%i.fO~Oa#ci!]#ci'z#ci'w#ci!Y#ci!k#civ#ci!_#ci%i#ci!g#ci~P!:tOn>]O!Q*OO'y*PO(y$}O(z%PO~O#k#_aa#_a#`#_a'z#_a!]#_a!k#_a!_#_a!Y#_a~P#/sO#k(`XP(`XR(`X[(`Xa(`Xj(`Xr(`X!S(`X!l(`X!p(`X#R(`X#n(`X#o(`X#p(`X#q(`X#r(`X#s(`X#t(`X#u(`X#v(`X#x(`X#z(`X#{(`X'z(`X(a(`X(r(`X!k(`X!Y(`X'w(`Xv(`X!_(`X%i(`X!g(`X~P!6kO!].tO!k(kX~P!:tO!k.wO~O!Y.yO~OP$[OR#zO!Q#yO!S#{O!l#xO!p$[O(aVO[#mia#mij#mir#mi!]#mi#R#mi#o#mi#p#mi#q#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#n#mi~P#3cO#n$OO~P#3cOP$[OR#zOr$aO!Q#yO!S#{O!l#xO!p$[O#n$OO#o$PO#p$PO#q$PO(aVO[#mia#mij#mi!]#mi#R#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#r#mi~P#6QO#r$QO~P#6QOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO(aVOa#mi!]#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#v#mi~P#8oOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO(aVO(z#}Oa#mi!]#mi#z#mi#{#mi'z#mi(r#mi(y#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#x$UO~P#;VO#x#mi~P#;VO#v$SO~P#8oOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO(aVO(y#|O(z#}Oa#mi!]#mi#{#mi'z#mi(r#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#z#mi~P#={O#z$WO~P#={OP]XR]X[]Xj]Xr]X!Q]X!S]X!l]X!p]X#R]X#S]X#`]X#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X(a]X(r]X(y]X(z]X!]]X!^]X~O$O]X~P#@jOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO#v<cO#x<eO#z<gO#{<hO(aVO(r$YO(y#|O(z#}O~O$O.{O~P#BwO#S$dO#`<nO$Q<nO$O(gX!^(gX~P! uOa'da!]'da'z'da'w'da!k'da!Y'dav'da!_'da%i'da!g'da~P!:tO[#mia#mij#mir#mi!]#mi#R#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~OP$[OR#zO!Q#yO!S#{O!l#xO!p$[O#n$OO#o$PO#p$PO#q$PO(aVO(y#mi(z#mi~P#EyOn>]O!Q*OO'y*PO(y$}O(z%POP#miR#mi!S#mi!l#mi!p#mi#n#mi#o#mi#p#mi#q#mi(a#mi~P#EyO!]/POg(pX~P!1WOg/RO~Oa$Pi!]$Pi'z$Pi'w$Pi!Y$Pi!k$Piv$Pi!_$Pi%i$Pi!g$Pi~P!:tO$]/SO$_/SO~O$]/TO$_/TO~O!g)hO#`/UO!_$cX$Z$cX$]$cX$_$cX$f$cX~O![/VO~O!_)kO$Z/XO$])jO$_)jO$f/YO~O!]<iO!^(fX~P#BwO!^/ZO~O!g)hO$f({X~O$f/]O~Ov/^O~P!&zOx)yO(b)zO(c/aO~O!S/dO~O(y$}On%aa!Q%aa'y%aa(z%aa!]%aa#`%aa~Og%aa$O%aa~P#L{O(z%POn%ca!Q%ca'y%ca(y%ca!]%ca#`%ca~Og%ca$O%ca~P#MnO!]fX!gfX!kfX!k$zX(rfX~P!0SOp%WO![/mO!](^O(T/lO!Y(vP!Y)PP~P!1uOr*sO!b*qO!c*kO!d*kO!l*bO#[*rO%`*mO(U!lO(VTO(YUO~Os<}O!S/nO![+[O!^*pO(e<|O!^(xP~P$ [O!k/oO~P#/sO!]/pO!g#vO(r'pO!k)OX~O!k/uO~OnoX!QoX'yoX(yoX(zoX~O!g#vO!koX~P$#OOp/wO!S%hO![*^O!_%iO(T%gO!k)OP~O#k/xO~O!Y$zX!]$zX!g%RX~P!0SO!]/yO!Y)PX~P#/sO!g/{O~O!Y/}O~OpkO(T0OO~P.iOh%VOr0TO!g#vO!l%eO(r'pO~O!g+iO~Oa%nO!]0XO'z%nO~O!^0ZO~P!5iO!c0[O!d0[O(U!lO~P#$`Os!nO!S0]O(VTO(YUO(e!mO~O#[0_O~Og%aa!]%aa#`%aa$O%aa~P!1WOg%ca!]%ca#`%ca$O%ca~P!1WOj%dOk%dOl%dO(T&ZOg'mX!]'mX~O!]*yOg(^a~Og0hO~On0jO#`0iOg(_a!](_a~OR0kO!Q0kO!S0lO#S$dOn}a'y}a(y}a(z}a!]}a#`}a~Og}a$O}a~P$(cO!Q*OO'y*POn$sa(y$sa(z$sa!]$sa#`$sa~Og$sa$O$sa~P$)_O!Q*OO'y*POn$ua(y$ua(z$ua!]$ua#`$ua~Og$ua$O$ua~P$*QO#k0oO~Og%Ta!]%Ta#`%Ta$O%Ta~P!1WO!g#vO~O#k0rO~O!]+^Oa)Ta'z)Ta~OR#zO!Q#yO!S#{O!l#xO(aVOP!ri[!rij!rir!ri!]!ri!p!ri#R!ri#n!ri#o!ri#p!ri#q!ri#r!ri#s!ri#t!ri#u!ri#v!ri#x!ri#z!ri#{!ri(r!ri(y!ri(z!ri~Oa!ri'z!ri'w!ri!Y!ri!k!riv!ri!_!ri%i!ri!g!ri~P$+oOh%VOr%XOs$tOt$tOz%YO|%ZO!O<sO!S${O!_$|O!i>VO!l$xO#j<yO$W%`O$t<uO$v<wO$y%aO(VTO(YUO(a$uO(y$}O(z%PO~Op0{O%]0|O(T0zO~P$.VO!g+iOa(]a!_(]a'z(]a!](]a~O#k1SO~O[]X!]fX!^fX~O!]1TO!^)XX~O!^1VO~O[1WO~Ob1YO(T+qO(VTO(YUO~O!_&PO(T%gO`'uX!]'uX~O!]+vO`)Wa~O!k1]O~P!:tO[1`O~O`1aO~O#`1fO~On1iO!_$|O~O(e(|O!^)UP~Oh%VOn1rO!_1oO%i1qO~O[1|O!]1zO!^)VX~O!^1}O~O`2POa%nO'z%nO~O(T#nO(VTO(YUO~O#S$dO#`$eO$Q$eOP(gXR(gX[(gXr(gX!Q(gX!S(gX!](gX!l(gX!p(gX#R(gX#n(gX#o(gX#p(gX#q(gX#r(gX#s(gX#t(gX#u(gX#v(gX#x(gX#z(gX#{(gX(a(gX(r(gX(y(gX(z(gX~Oj2SO&[2TOa(gX~P$3pOj2SO#`$eO&[2TO~Oa2VO~P%[Oa2XO~O&e2[OP&ciQ&ciS&ciY&cia&cid&cie&cil&cip&cir&cis&cit&ciz&ci|&ci!O&ci!S&ci!W&ci!X&ci!_&ci!i&ci!l&ci!o&ci!p&ci!q&ci!s&ci!u&ci!x&ci!|&ci$W&ci$n&ci%h&ci%j&ci%l&ci%m&ci%n&ci%q&ci%s&ci%v&ci%w&ci%y&ci&W&ci&^&ci&`&ci&b&ci&d&ci&g&ci&m&ci&s&ci&u&ci&w&ci&y&ci&{&ci'w&ci(T&ci(V&ci(Y&ci(a&ci(o&ci!^&cib&ci&j&ci~Ob2bO!^2`O&j2aO~P`O!_XO!l2dO~O&q,{OP&liQ&liS&liY&lia&lid&lie&lil&lip&lir&lis&lit&liz&li|&li!O&li!S&li!W&li!X&li!_&li!i&li!l&li!o&li!p&li!q&li!s&li!u&li!x&li!|&li$W&li$n&li%h&li%j&li%l&li%m&li%n&li%q&li%s&li%v&li%w&li%y&li&W&li&^&li&`&li&b&li&d&li&g&li&m&li&s&li&u&li&w&li&y&li&{&li'w&li(T&li(V&li(Y&li(a&li(o&li!^&li&e&lib&li&j&li~O!Y2jO~O!]!aa!^!aa~P#BwOs!nO!S!oO![2pO(e!mO!]'XX!^'XX~P@nO!]-]O!^(ia~O!]'_X!^'_X~P!9|O!]-`O!^(xa~O!^2wO~P'_Oa%nO#`3QO'z%nO~Oa%nO!g#vO#`3QO'z%nO~Oa%nO!g#vO!p3UO#`3QO'z%nO(r'pO~Oa%nO'z%nO~P!:tO!]$_Ov$qa~O!Y'Wi!]'Wi~P!:tO!](VO!Y(hi~O!](^O!Y(vi~O!Y(wi!](wi~P!:tO!](ti!k(tia(ti'z(ti~P!:tO#`3WO!](ti!k(tia(ti'z(ti~O!](jO!k(si~O!S%hO!_%iO!|]O#i3]O#j3[O(T%gO~O!S%hO!_%iO#j3[O(T%gO~On3dO!_'`O%i3cO~Oh%VOn3dO!_'`O%i3cO~O#k%aaP%aaR%aa[%aaa%aaj%aar%aa!S%aa!l%aa!p%aa#R%aa#n%aa#o%aa#p%aa#q%aa#r%aa#s%aa#t%aa#u%aa#v%aa#x%aa#z%aa#{%aa'z%aa(a%aa(r%aa!k%aa!Y%aa'w%aav%aa!_%aa%i%aa!g%aa~P#L{O#k%caP%caR%ca[%caa%caj%car%ca!S%ca!l%ca!p%ca#R%ca#n%ca#o%ca#p%ca#q%ca#r%ca#s%ca#t%ca#u%ca#v%ca#x%ca#z%ca#{%ca'z%ca(a%ca(r%ca!k%ca!Y%ca'w%cav%ca!_%ca%i%ca!g%ca~P#MnO#k%aaP%aaR%aa[%aaa%aaj%aar%aa!S%aa!]%aa!l%aa!p%aa#R%aa#n%aa#o%aa#p%aa#q%aa#r%aa#s%aa#t%aa#u%aa#v%aa#x%aa#z%aa#{%aa'z%aa(a%aa(r%aa!k%aa!Y%aa'w%aa#`%aav%aa!_%aa%i%aa!g%aa~P#/sO#k%caP%caR%ca[%caa%caj%car%ca!S%ca!]%ca!l%ca!p%ca#R%ca#n%ca#o%ca#p%ca#q%ca#r%ca#s%ca#t%ca#u%ca#v%ca#x%ca#z%ca#{%ca'z%ca(a%ca(r%ca!k%ca!Y%ca'w%ca#`%cav%ca!_%ca%i%ca!g%ca~P#/sO#k}aP}a[}aa}aj}ar}a!l}a!p}a#R}a#n}a#o}a#p}a#q}a#r}a#s}a#t}a#u}a#v}a#x}a#z}a#{}a'z}a(a}a(r}a!k}a!Y}a'w}av}a!_}a%i}a!g}a~P$(cO#k$saP$saR$sa[$saa$saj$sar$sa!S$sa!l$sa!p$sa#R$sa#n$sa#o$sa#p$sa#q$sa#r$sa#s$sa#t$sa#u$sa#v$sa#x$sa#z$sa#{$sa'z$sa(a$sa(r$sa!k$sa!Y$sa'w$sav$sa!_$sa%i$sa!g$sa~P$)_O#k$uaP$uaR$ua[$uaa$uaj$uar$ua!S$ua!l$ua!p$ua#R$ua#n$ua#o$ua#p$ua#q$ua#r$ua#s$ua#t$ua#u$ua#v$ua#x$ua#z$ua#{$ua'z$ua(a$ua(r$ua!k$ua!Y$ua'w$uav$ua!_$ua%i$ua!g$ua~P$*QO#k%TaP%TaR%Ta[%Taa%Taj%Tar%Ta!S%Ta!]%Ta!l%Ta!p%Ta#R%Ta#n%Ta#o%Ta#p%Ta#q%Ta#r%Ta#s%Ta#t%Ta#u%Ta#v%Ta#x%Ta#z%Ta#{%Ta'z%Ta(a%Ta(r%Ta!k%Ta!Y%Ta'w%Ta#`%Tav%Ta!_%Ta%i%Ta!g%Ta~P#/sOa#cq!]#cq'z#cq'w#cq!Y#cq!k#cqv#cq!_#cq%i#cq!g#cq~P!:tO![3lO!]'YX!k'YX~P%[O!].tO!k(ka~O!].tO!k(ka~P!:tO!Y3oO~O$O!na!^!na~PKlO$O!ja!]!ja!^!ja~P#BwO$O!ra!^!ra~P!=[O$O!ta!^!ta~P!?rOg']X!]']X~P!,TO!]/POg(pa~OSfO!_4TO$d4UO~O!^4YO~Ov4ZO~P#/sOa$mq!]$mq'z$mq'w$mq!Y$mq!k$mqv$mq!_$mq%i$mq!g$mq~P!:tO!Y4]O~P!&zO!S4^O~O!Q*OO'y*PO(z%POn'ia(y'ia!]'ia#`'ia~Og'ia$O'ia~P%-fO!Q*OO'y*POn'ka(y'ka(z'ka!]'ka#`'ka~Og'ka$O'ka~P%.XO(r$YO~P#/sO!YfX!Y$zX!]fX!]$zX!g%RX#`fX~P!0SOp%WO(T=WO~P!1uOp4bO!S%hO![4aO!_%iO(T%gO!]'eX!k'eX~O!]/pO!k)Oa~O!]/pO!g#vO!k)Oa~O!]/pO!g#vO(r'pO!k)Oa~Og$|i!]$|i#`$|i$O$|i~P!1WO![4jO!Y'gX!]'gX~P!3tO!]/yO!Y)Pa~O!]/yO!Y)Pa~P#/sOP]XR]X[]Xj]Xr]X!Q]X!S]X!Y]X!]]X!l]X!p]X#R]X#S]X#`]X#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X(a]X(r]X(y]X(z]X~Oj%YX!g%YX~P%2OOj4oO!g#vO~Oh%VO!g#vO!l%eO~Oh%VOr4tO!l%eO(r'pO~Or4yO!g#vO(r'pO~Os!nO!S4zO(VTO(YUO(e!mO~O(y$}On%ai!Q%ai'y%ai(z%ai!]%ai#`%ai~Og%ai$O%ai~P%5oO(z%POn%ci!Q%ci'y%ci(y%ci!]%ci#`%ci~Og%ci$O%ci~P%6bOg(_i!](_i~P!1WO#`5QOg(_i!](_i~P!1WO!k5VO~Oa$oq!]$oq'z$oq'w$oq!Y$oq!k$oqv$oq!_$oq%i$oq!g$oq~P!:tO!Y5ZO~O!]5[O!_)QX~P#/sOa$zX!_$zX%^]X'z$zX!]$zX~P!0SO%^5_OaoX!_oX'zoX!]oX~P$#OOp5`O(T#nO~O%^5_O~Ob5fO%j5gO(T+qO(VTO(YUO!]'tX!^'tX~O!]1TO!^)Xa~O[5kO~O`5lO~O[5pO~Oa%nO'z%nO~P#/sO!]5uO#`5wO!^)UX~O!^5xO~Or6OOs!nO!S*iO!b!yO!c!vO!d!vO!|<VO#T!pO#U!pO#V!pO#W!pO#X!pO#[5}O#]!zO(U!lO(VTO(YUO(e!mO(o!sO~O!^5|O~P%;eOn6TO!_1oO%i6SO~Oh%VOn6TO!_1oO%i6SO~Ob6[O(T#nO(VTO(YUO!]'sX!^'sX~O!]1zO!^)Va~O(VTO(YUO(e6^O~O`6bO~Oj6eO&[6fO~PNXO!k6gO~P%[Oa6iO~Oa6iO~P%[Ob2bO!^6nO&j2aO~P`O!g6pO~O!g6rOh(ji!](ji!^(ji!g(ji!l(jir(ji(r(ji~O!]#hi!^#hi~P#BwO#`6sO!]#hi!^#hi~O!]!ai!^!ai~P#BwOa%nO#`6|O'z%nO~Oa%nO!g#vO#`6|O'z%nO~O!](tq!k(tqa(tq'z(tq~P!:tO!](jO!k(sq~O!S%hO!_%iO#j7TO(T%gO~O!_'`O%i7WO~On7[O!_'`O%i7WO~O#k'iaP'iaR'ia['iaa'iaj'iar'ia!S'ia!l'ia!p'ia#R'ia#n'ia#o'ia#p'ia#q'ia#r'ia#s'ia#t'ia#u'ia#v'ia#x'ia#z'ia#{'ia'z'ia(a'ia(r'ia!k'ia!Y'ia'w'iav'ia!_'ia%i'ia!g'ia~P%-fO#k'kaP'kaR'ka['kaa'kaj'kar'ka!S'ka!l'ka!p'ka#R'ka#n'ka#o'ka#p'ka#q'ka#r'ka#s'ka#t'ka#u'ka#v'ka#x'ka#z'ka#{'ka'z'ka(a'ka(r'ka!k'ka!Y'ka'w'kav'ka!_'ka%i'ka!g'ka~P%.XO#k$|iP$|iR$|i[$|ia$|ij$|ir$|i!S$|i!]$|i!l$|i!p$|i#R$|i#n$|i#o$|i#p$|i#q$|i#r$|i#s$|i#t$|i#u$|i#v$|i#x$|i#z$|i#{$|i'z$|i(a$|i(r$|i!k$|i!Y$|i'w$|i#`$|iv$|i!_$|i%i$|i!g$|i~P#/sO#k%aiP%aiR%ai[%aia%aij%air%ai!S%ai!l%ai!p%ai#R%ai#n%ai#o%ai#p%ai#q%ai#r%ai#s%ai#t%ai#u%ai#v%ai#x%ai#z%ai#{%ai'z%ai(a%ai(r%ai!k%ai!Y%ai'w%aiv%ai!_%ai%i%ai!g%ai~P%5oO#k%ciP%ciR%ci[%cia%cij%cir%ci!S%ci!l%ci!p%ci#R%ci#n%ci#o%ci#p%ci#q%ci#r%ci#s%ci#t%ci#u%ci#v%ci#x%ci#z%ci#{%ci'z%ci(a%ci(r%ci!k%ci!Y%ci'w%civ%ci!_%ci%i%ci!g%ci~P%6bO!]'Ya!k'Ya~P!:tO!].tO!k(ki~O$O#ci!]#ci!^#ci~P#BwOP$[OR#zO!Q#yO!S#{O!l#xO!p$[O(aVO[#mij#mir#mi#R#mi#o#mi#p#mi#q#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi$O#mi(r#mi(y#mi(z#mi!]#mi!^#mi~O#n#mi~P%NdO#n<_O~P%NdOP$[OR#zOr<kO!Q#yO!S#{O!l#xO!p$[O#n<_O#o<`O#p<`O#q<`O(aVO[#mij#mi#R#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi$O#mi(r#mi(y#mi(z#mi!]#mi!^#mi~O#r#mi~P&!lO#r<aO~P&!lOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO(aVO#x#mi#z#mi#{#mi$O#mi(r#mi(y#mi(z#mi!]#mi!^#mi~O#v#mi~P&$tOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO#v<cO(aVO(z#}O#z#mi#{#mi$O#mi(r#mi(y#mi!]#mi!^#mi~O#x<eO~P&&uO#x#mi~P&&uO#v<cO~P&$tOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO#v<cO#x<eO(aVO(y#|O(z#}O#{#mi$O#mi(r#mi!]#mi!^#mi~O#z#mi~P&)UO#z<gO~P&)UOa#|y!]#|y'z#|y'w#|y!Y#|y!k#|yv#|y!_#|y%i#|y!g#|y~P!:tO[#mij#mir#mi#R#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi$O#mi(r#mi!]#mi!^#mi~OP$[OR#zO!Q#yO!S#{O!l#xO!p$[O#n<_O#o<`O#p<`O#q<`O(aVO(y#mi(z#mi~P&,QOn>^O!Q*OO'y*PO(y$}O(z%POP#miR#mi!S#mi!l#mi!p#mi#n#mi#o#mi#p#mi#q#mi(a#mi~P&,QO#S$dOP(`XR(`X[(`Xj(`Xn(`Xr(`X!Q(`X!S(`X!l(`X!p(`X#R(`X#n(`X#o(`X#p(`X#q(`X#r(`X#s(`X#t(`X#u(`X#v(`X#x(`X#z(`X#{(`X$O(`X'y(`X(a(`X(r(`X(y(`X(z(`X!](`X!^(`X~O$O$Pi!]$Pi!^$Pi~P#BwO$O!ri!^!ri~P$+oOg']a!]']a~P!1WO!^7nO~O!]'da!^'da~P#BwO!Y7oO~P#/sO!g#vO(r'pO!]'ea!k'ea~O!]/pO!k)Oi~O!]/pO!g#vO!k)Oi~Og$|q!]$|q#`$|q$O$|q~P!1WO!Y'ga!]'ga~P#/sO!g7vO~O!]/yO!Y)Pi~P#/sO!]/yO!Y)Pi~O!Y7yO~Oh%VOr8OO!l%eO(r'pO~Oj8QO!g#vO~Or8TO!g#vO(r'pO~O!Q*OO'y*PO(z%POn'ja(y'ja!]'ja#`'ja~Og'ja$O'ja~P&5RO!Q*OO'y*POn'la(y'la(z'la!]'la#`'la~Og'la$O'la~P&5tOg(_q!](_q~P!1WO#`8VOg(_q!](_q~P!1WO!Y8WO~Og%Oq!]%Oq#`%Oq$O%Oq~P!1WOa$oy!]$oy'z$oy'w$oy!Y$oy!k$oyv$oy!_$oy%i$oy!g$oy~P!:tO!g6rO~O!]5[O!_)Qa~O!_'`OP$TaR$Ta[$Taj$Tar$Ta!Q$Ta!S$Ta!]$Ta!l$Ta!p$Ta#R$Ta#n$Ta#o$Ta#p$Ta#q$Ta#r$Ta#s$Ta#t$Ta#u$Ta#v$Ta#x$Ta#z$Ta#{$Ta(a$Ta(r$Ta(y$Ta(z$Ta~O%i7WO~P&8fO%^8[Oa%[i!_%[i'z%[i!]%[i~Oa#cy!]#cy'z#cy'w#cy!Y#cy!k#cyv#cy!_#cy%i#cy!g#cy~P!:tO[8^O~Ob8`O(T+qO(VTO(YUO~O!]1TO!^)Xi~O`8dO~O(e(|O!]'pX!^'pX~O!]5uO!^)Ua~O!^8nO~P%;eO(o!sO~P$&YO#[8oO~O!_1oO~O!_1oO%i8qO~On8tO!_1oO%i8qO~O[8yO!]'sa!^'sa~O!]1zO!^)Vi~O!k8}O~O!k9OO~O!k9RO~O!k9RO~P%[Oa9TO~O!g9UO~O!k9VO~O!](wi!^(wi~P#BwOa%nO#`9_O'z%nO~O!](ty!k(tya(ty'z(ty~P!:tO!](jO!k(sy~O%i9bO~P&8fO!_'`O%i9bO~O#k$|qP$|qR$|q[$|qa$|qj$|qr$|q!S$|q!]$|q!l$|q!p$|q#R$|q#n$|q#o$|q#p$|q#q$|q#r$|q#s$|q#t$|q#u$|q#v$|q#x$|q#z$|q#{$|q'z$|q(a$|q(r$|q!k$|q!Y$|q'w$|q#`$|qv$|q!_$|q%i$|q!g$|q~P#/sO#k'jaP'jaR'ja['jaa'jaj'jar'ja!S'ja!l'ja!p'ja#R'ja#n'ja#o'ja#p'ja#q'ja#r'ja#s'ja#t'ja#u'ja#v'ja#x'ja#z'ja#{'ja'z'ja(a'ja(r'ja!k'ja!Y'ja'w'jav'ja!_'ja%i'ja!g'ja~P&5RO#k'laP'laR'la['laa'laj'lar'la!S'la!l'la!p'la#R'la#n'la#o'la#p'la#q'la#r'la#s'la#t'la#u'la#v'la#x'la#z'la#{'la'z'la(a'la(r'la!k'la!Y'la'w'lav'la!_'la%i'la!g'la~P&5tO#k%OqP%OqR%Oq[%Oqa%Oqj%Oqr%Oq!S%Oq!]%Oq!l%Oq!p%Oq#R%Oq#n%Oq#o%Oq#p%Oq#q%Oq#r%Oq#s%Oq#t%Oq#u%Oq#v%Oq#x%Oq#z%Oq#{%Oq'z%Oq(a%Oq(r%Oq!k%Oq!Y%Oq'w%Oq#`%Oqv%Oq!_%Oq%i%Oq!g%Oq~P#/sO!]'Yi!k'Yi~P!:tO$O#cq!]#cq!^#cq~P#BwO(y$}OP%aaR%aa[%aaj%aar%aa!S%aa!l%aa!p%aa#R%aa#n%aa#o%aa#p%aa#q%aa#r%aa#s%aa#t%aa#u%aa#v%aa#x%aa#z%aa#{%aa$O%aa(a%aa(r%aa!]%aa!^%aa~On%aa!Q%aa'y%aa(z%aa~P&IyO(z%POP%caR%ca[%caj%car%ca!S%ca!l%ca!p%ca#R%ca#n%ca#o%ca#p%ca#q%ca#r%ca#s%ca#t%ca#u%ca#v%ca#x%ca#z%ca#{%ca$O%ca(a%ca(r%ca!]%ca!^%ca~On%ca!Q%ca'y%ca(y%ca~P&LQOn>^O!Q*OO'y*PO(z%PO~P&IyOn>^O!Q*OO'y*PO(y$}O~P&LQOR0kO!Q0kO!S0lO#S$dOP}a[}aj}an}ar}a!l}a!p}a#R}a#n}a#o}a#p}a#q}a#r}a#s}a#t}a#u}a#v}a#x}a#z}a#{}a$O}a'y}a(a}a(r}a(y}a(z}a!]}a!^}a~O!Q*OO'y*POP$saR$sa[$saj$san$sar$sa!S$sa!l$sa!p$sa#R$sa#n$sa#o$sa#p$sa#q$sa#r$sa#s$sa#t$sa#u$sa#v$sa#x$sa#z$sa#{$sa$O$sa(a$sa(r$sa(y$sa(z$sa!]$sa!^$sa~O!Q*OO'y*POP$uaR$ua[$uaj$uan$uar$ua!S$ua!l$ua!p$ua#R$ua#n$ua#o$ua#p$ua#q$ua#r$ua#s$ua#t$ua#u$ua#v$ua#x$ua#z$ua#{$ua$O$ua(a$ua(r$ua(y$ua(z$ua!]$ua!^$ua~On>^O!Q*OO'y*PO(y$}O(z%PO~OP%TaR%Ta[%Taj%Tar%Ta!S%Ta!l%Ta!p%Ta#R%Ta#n%Ta#o%Ta#p%Ta#q%Ta#r%Ta#s%Ta#t%Ta#u%Ta#v%Ta#x%Ta#z%Ta#{%Ta$O%Ta(a%Ta(r%Ta!]%Ta!^%Ta~P''VO$O$mq!]$mq!^$mq~P#BwO$O$oq!]$oq!^$oq~P#BwO!^9oO~O$O9pO~P!1WO!g#vO!]'ei!k'ei~O!g#vO(r'pO!]'ei!k'ei~O!]/pO!k)Oq~O!Y'gi!]'gi~P#/sO!]/yO!Y)Pq~Or9wO!g#vO(r'pO~O[9yO!Y9xO~P#/sO!Y9xO~Oj:PO!g#vO~Og(_y!](_y~P!1WO!]'na!_'na~P#/sOa%[q!_%[q'z%[q!]%[q~P#/sO[:UO~O!]1TO!^)Xq~O`:YO~O#`:ZO!]'pa!^'pa~O!]5uO!^)Ui~P#BwO!S:]O~O!_1oO%i:`O~O(VTO(YUO(e:eO~O!]1zO!^)Vq~O!k:hO~O!k:iO~O!k:jO~O!k:jO~P%[O#`:mO!]#hy!^#hy~O!]#hy!^#hy~P#BwO%i:rO~P&8fO!_'`O%i:rO~O$O#|y!]#|y!^#|y~P#BwOP$|iR$|i[$|ij$|ir$|i!S$|i!l$|i!p$|i#R$|i#n$|i#o$|i#p$|i#q$|i#r$|i#s$|i#t$|i#u$|i#v$|i#x$|i#z$|i#{$|i$O$|i(a$|i(r$|i!]$|i!^$|i~P''VO!Q*OO'y*PO(z%POP'iaR'ia['iaj'ian'iar'ia!S'ia!l'ia!p'ia#R'ia#n'ia#o'ia#p'ia#q'ia#r'ia#s'ia#t'ia#u'ia#v'ia#x'ia#z'ia#{'ia$O'ia(a'ia(r'ia(y'ia!]'ia!^'ia~O!Q*OO'y*POP'kaR'ka['kaj'kan'kar'ka!S'ka!l'ka!p'ka#R'ka#n'ka#o'ka#p'ka#q'ka#r'ka#s'ka#t'ka#u'ka#v'ka#x'ka#z'ka#{'ka$O'ka(a'ka(r'ka(y'ka(z'ka!]'ka!^'ka~O(y$}OP%aiR%ai[%aij%ain%air%ai!Q%ai!S%ai!l%ai!p%ai#R%ai#n%ai#o%ai#p%ai#q%ai#r%ai#s%ai#t%ai#u%ai#v%ai#x%ai#z%ai#{%ai$O%ai'y%ai(a%ai(r%ai(z%ai!]%ai!^%ai~O(z%POP%ciR%ci[%cij%cin%cir%ci!Q%ci!S%ci!l%ci!p%ci#R%ci#n%ci#o%ci#p%ci#q%ci#r%ci#s%ci#t%ci#u%ci#v%ci#x%ci#z%ci#{%ci$O%ci'y%ci(a%ci(r%ci(y%ci!]%ci!^%ci~O$O$oy!]$oy!^$oy~P#BwO$O#cy!]#cy!^#cy~P#BwO!g#vO!]'eq!k'eq~O!]/pO!k)Oy~O!Y'gq!]'gq~P#/sOr:|O!g#vO(r'pO~O[;QO!Y;PO~P#/sO!Y;PO~Og(_!R!](_!R~P!1WOa%[y!_%[y'z%[y!]%[y~P#/sO!]1TO!^)Xy~O!]5uO!^)Uq~O(T;XO~O!_1oO%i;[O~O!k;_O~O%i;dO~P&8fOP$|qR$|q[$|qj$|qr$|q!S$|q!l$|q!p$|q#R$|q#n$|q#o$|q#p$|q#q$|q#r$|q#s$|q#t$|q#u$|q#v$|q#x$|q#z$|q#{$|q$O$|q(a$|q(r$|q!]$|q!^$|q~P''VO!Q*OO'y*PO(z%POP'jaR'ja['jaj'jan'jar'ja!S'ja!l'ja!p'ja#R'ja#n'ja#o'ja#p'ja#q'ja#r'ja#s'ja#t'ja#u'ja#v'ja#x'ja#z'ja#{'ja$O'ja(a'ja(r'ja(y'ja!]'ja!^'ja~O!Q*OO'y*POP'laR'la['laj'lan'lar'la!S'la!l'la!p'la#R'la#n'la#o'la#p'la#q'la#r'la#s'la#t'la#u'la#v'la#x'la#z'la#{'la$O'la(a'la(r'la(y'la(z'la!]'la!^'la~OP%OqR%Oq[%Oqj%Oqr%Oq!S%Oq!l%Oq!p%Oq#R%Oq#n%Oq#o%Oq#p%Oq#q%Oq#r%Oq#s%Oq#t%Oq#u%Oq#v%Oq#x%Oq#z%Oq#{%Oq$O%Oq(a%Oq(r%Oq!]%Oq!^%Oq~P''VOg%e!Z!]%e!Z#`%e!Z$O%e!Z~P!1WO!Y;hO~P#/sOr;iO!g#vO(r'pO~O[;kO!Y;hO~P#/sO!]'pq!^'pq~P#BwO!]#h!Z!^#h!Z~P#BwO#k%e!ZP%e!ZR%e!Z[%e!Za%e!Zj%e!Zr%e!Z!S%e!Z!]%e!Z!l%e!Z!p%e!Z#R%e!Z#n%e!Z#o%e!Z#p%e!Z#q%e!Z#r%e!Z#s%e!Z#t%e!Z#u%e!Z#v%e!Z#x%e!Z#z%e!Z#{%e!Z'z%e!Z(a%e!Z(r%e!Z!k%e!Z!Y%e!Z'w%e!Z#`%e!Zv%e!Z!_%e!Z%i%e!Z!g%e!Z~P#/sOr;tO!g#vO(r'pO~O!Y;uO~P#/sOr;|O!g#vO(r'pO~O!Y;}O~P#/sOP%e!ZR%e!Z[%e!Zj%e!Zr%e!Z!S%e!Z!l%e!Z!p%e!Z#R%e!Z#n%e!Z#o%e!Z#p%e!Z#q%e!Z#r%e!Z#s%e!Z#t%e!Z#u%e!Z#v%e!Z#x%e!Z#z%e!Z#{%e!Z$O%e!Z(a%e!Z(r%e!Z!]%e!Z!^%e!Z~P''VOr<QO!g#vO(r'pO~Ov(fX~P1qO!Q%rO~P!)[O(U!lO~P!)[O!YfX!]fX#`fX~P%2OOP]XR]X[]Xj]Xr]X!Q]X!S]X!]]X!]fX!l]X!p]X#R]X#S]X#`]X#`fX#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X(a]X(r]X(y]X(z]X~O!gfX!k]X!kfX(rfX~P'LTOP<UOQ<UOSfOd>ROe!iOpkOr<UOskOtkOzkO|<UO!O<UO!SWO!WkO!XkO!_XO!i<XO!lZO!o<UO!p<UO!q<UO!s<YO!u<]O!x!hO$W!kO$n>PO(T)]O(VTO(YUO(aVO(o[O~O!]<iO!^$qa~Oh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O<tO!S${O!_$|O!i>WO!l$xO#j<zO$W%`O$t<vO$v<xO$y%aO(T(vO(VTO(YUO(a$uO(y$}O(z%PO~Ol)dO~P(!yOr!eX(r!eX~P#!iOr(jX(r(jX~P##[O!^]X!^fX~P'LTO!YfX!Y$zX!]fX!]$zX#`fX~P!0SO#k<^O~O!g#vO#k<^O~O#`<nO~Oj<bO~O#`=OO!](wX!^(wX~O#`<nO!](uX!^(uX~O#k=PO~Og=RO~P!1WO#k=XO~O#k=YO~Og=RO(T&ZO~O!g#vO#k=ZO~O!g#vO#k=PO~O$O=[O~P#BwO#k=]O~O#k=^O~O#k=cO~O#k=dO~O#k=eO~O#k=fO~O$O=gO~P!1WO$O=hO~P!1WOl=sO~P7eOk#S#T#U#W#X#[#i#j#u$n$t$v$y%]%^%h%i%j%q%s%v%w%y%{~(OT#o!X'|(U#ps#n#qr!Q'}$]'}(T$_(e~\",\n goto: \"$9Y)]PPPPPP)^PP)aP)rP+W/]PPPP6mPP7TPP=QPPP@tPA^PA^PPPA^PCfPA^PA^PA^PCjPCoPD^PIWPPPI[PPPPI[L_PPPLeMVPI[PI[PP! eI[PPPI[PI[P!#lI[P!'S!(X!(bP!)U!)Y!)U!,gPPPPPPP!-W!(XPP!-h!/YP!2iI[I[!2n!5z!:h!:h!>gPPP!>oI[PPPPPPPPP!BOP!C]PPI[!DnPI[PI[I[I[I[I[PI[!FQP!I[P!LbP!Lf!Lp!Lt!LtP!IXP!Lx!LxP#!OP#!SI[PI[#!Y#%_CjA^PA^PA^A^P#&lA^A^#)OA^#+vA^#.SA^A^#.r#1W#1W#1]#1f#1W#1qPP#1WPA^#2ZA^#6YA^A^6mPPP#:_PPP#:x#:xP#:xP#;`#:xPP#;fP#;]P#;]#;y#;]#<e#<k#<n)aP#<q)aP#<z#<z#<zP)aP)aP)aP)aPP)aP#=Q#=TP#=T)aP#=XP#=[P)aP)aP)aP)aP)aP)a)aPP#=b#=h#=s#=y#>P#>V#>]#>k#>q#>{#?R#?]#?c#?s#?y#@k#@}#AT#AZ#Ai#BO#Cs#DR#DY#Et#FS#Gt#HS#HY#H`#Hf#Hp#Hv#H|#IW#Ij#IpPPPPPPPPPPP#IvPPPPPPP#Jk#Mx$ b$ i$ qPPP$']P$'f$*_$0x$0{$1O$1}$2Q$2X$2aP$2g$2jP$3W$3[$4S$5b$5g$5}PP$6S$6Y$6^$6a$6e$6i$7e$7|$8e$8i$8l$8o$8y$8|$9Q$9UR!|RoqOXst!Z#d%m&r&t&u&w,s,x2[2_Y!vQ'`-e1o5{Q%tvQ%|yQ&T|Q&j!VS'W!e-]Q'f!iS'l!r!yU*k$|*Z*oQ+o%}S+|&V&WQ,d&dQ-c'_Q-m'gQ-u'mQ0[*qQ1b,OQ1y,eR<{<Y%SdOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+],p,s,x-i-q.P.V.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3l4z6T6e6f6i6|8t9T9_S#q]<V!r)_$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SU+P%]<s<tQ+t&PQ,f&gQ,m&oQ0x+gQ0}+iQ1Y+uQ2R,kQ3`.gQ5`0|Q5f1TQ6[1zQ7Y3dQ8`5gR9e7['QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>S!S!nQ!r!v!y!z$|'W'_'`'l'm'n*k*o*q*r-]-c-e-u0[0_1o5{5}%[$ti#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;k<l<m<o<p<q<r<u<v<w<x<y<z=S=T=U=V=X=Y=]=^=_=`=a=b=c=d=g=h>P>X>Y>]>^Q&X|Q'U!eS'[%i-`Q+t&PQ,P&WQ,f&gQ0n+SQ1Y+uQ1_+{Q2Q,jQ2R,kQ5f1TQ5o1aQ6[1zQ6_1|Q6`2PQ8`5gQ8c5lQ8|6bQ:X8dQ:f8yQ;V:YR<}*ZrnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_R,h&k&z^OPXYstuvwz!Z!`!g!j!o#S#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'b'r(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>R>S[#]WZ#W#Z'X(T!b%jm#h#i#l$x%e%h(^(h(i(j*Y*^*b+Z+[+^,o-V.T.Z.[.]._/m/p2d3[3]4a6r7TQ%wxQ%{yW&Q|&V&W,OQ&_!TQ'c!hQ'e!iQ(q#sS+n%|%}Q+r&PQ,_&bQ,c&dS-l'f'gQ.i(rQ1R+oQ1X+uQ1Z+vQ1^+zQ1t,`S1x,d,eQ2|-mQ5e1TQ5i1WQ5n1`Q6Z1yQ8_5gQ8b5kQ8f5pQ:T8^R;T:U!U$zi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y!^%yy!i!u%{%|%}'V'e'f'g'k'u*j+n+o-Y-l-m-t0R0U1R2u2|3T4r4s4v7}9{Q+h%wQ,T&[Q,W&]Q,b&dQ.h(qQ1s,_U1w,c,d,eQ3e.iQ6U1tS6Y1x1yQ8x6Z#f>T#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^o>U<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=hW%Ti%V*y>PS&[!Q&iQ&]!RQ&^!SU*}%[%d=sR,R&Y%]%Si#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;k<l<m<o<p<q<r<u<v<w<x<y<z=S=T=U=V=X=Y=]=^=_=`=a=b=c=d=g=h>P>X>Y>]>^T)z$u){V+P%]<s<tW'[!e%i*Z-`S(}#y#zQ+c%rQ+y&SS.b(m(nQ1j,XQ5T0kR8i5u'QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>S$i$^c#Y#e%q%s%u(S(Y(t(y)R)S)T)U)V)W)X)Y)Z)[)^)`)b)g)q+d+x-Z-x-}.S.U.s.v.z.|.}/O/b0p2k2n3O3V3k3p3q3r3s3t3u3v3w3x3y3z3{3|4P4Q4X5X5c6u6{7Q7a7b7k7l8k9X9]9g9m9n:o;W;`<W=vT#TV#U'RkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SQ'Y!eR2q-]!W!nQ!e!r!v!y!z$|'W'_'`'l'm'n*Z*k*o*q*r-]-c-e-u0[0_1o5{5}R1l,ZnqOXst!Z#d%m&r&t&u&w,s,x2[2_Q&y!^Q'v!xS(s#u<^Q+l%zQ,]&_Q,^&aQ-j'dQ-w'oS.r(x=PS0q+X=ZQ1P+mQ1n,[Q2c,zQ2e,{Q2m-WQ2z-kQ2}-oS5Y0r=eQ5a1QS5d1S=fQ6t2oQ6x2{Q6}3SQ8]5bQ9Y6vQ9Z6yQ9^7OR:l9V$d$]c#Y#e%s%u(S(Y(t(y)R)S)T)U)V)W)X)Y)Z)[)^)`)b)g)q+d+x-Z-x-}.S.U.s.v.z.}/O/b0p2k2n3O3V3k3p3q3r3s3t3u3v3w3x3y3z3{3|4P4Q4X5X5c6u6{7Q7a7b7k7l8k9X9]9g9m9n:o;W;`<W=vS(o#p'iQ)P#zS+b%q.|S.c(n(pR3^.d'QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SS#q]<VQ&t!XQ&u!YQ&w![Q&x!]R2Z,vQ'a!hQ+e%wQ-h'cS.e(q+hQ2x-gW3b.h.i0w0yQ6w2yW7U3_3a3e5^U9a7V7X7ZU:q9c9d9fS;b:p:sQ;p;cR;x;qU!wQ'`-eT5y1o5{!Q_OXZ`st!V!Z#d#h%e%m&i&k&r&t&u&w(j,s,x.[2[2_]!pQ!r'`-e1o5{T#q]<V%^{OPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_S(}#y#zS.b(m(n!s=l$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SU$fd)_,mS(p#p'iU*v%R(w4OU0m+O.n7gQ5^0xQ7V3`Q9d7YR:s9em!tQ!r!v!y!z'`'l'm'n-e-u1o5{5}Q't!uS(f#g2US-s'k'wQ/s*]Q0R*jQ3U-vQ4f/tQ4r0TQ4s0UQ4x0^Q7r4`S7}4t4vS8R4y4{Q9r7sQ9v7yQ9{8OQ:Q8TS:{9w9xS;g:|;PS;s;h;iS;{;t;uS<P;|;}R<S<QQ#wbQ's!uS(e#g2US(g#m+WQ+Y%fQ+j%xQ+p&OU-r'k't'wQ.W(fU/r*]*`/wQ0S*jQ0V*lQ1O+kQ1u,aS3R-s-vQ3Z.`S4e/s/tQ4n0PS4q0R0^Q4u0WQ6W1vQ7P3US7q4`4bQ7u4fU7|4r4x4{Q8P4wQ8v6XS9q7r7sQ9u7yQ9}8RQ:O8SQ:c8wQ:y9rS:z9v9xQ;S:QQ;^:dS;f:{;PS;r;g;hS;z;s;uS<O;{;}Q<R<PQ<T<SQ=o=jQ={=tR=|=uV!wQ'`-e%^aOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_S#wz!j!r=i$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SR=o>R%^bOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_Q%fj!^%xy!i!u%{%|%}'V'e'f'g'k'u*j+n+o-Y-l-m-t0R0U1R2u2|3T4r4s4v7}9{S&Oz!jQ+k%yQ,a&dW1v,b,c,d,eU6X1w1x1yS8w6Y6ZQ:d8x!r=j$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SQ=t>QR=u>R%QeOPXYstuvw!Z!`!g!o#S#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_Y#bWZ#W#Z(T!b%jm#h#i#l$x%e%h(^(h(i(j*Y*^*b+Z+[+^,o-V.T.Z.[.]._/m/p2d3[3]4a6r7TQ,n&o!p=k$Z$n)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SR=n'XU']!e%i*ZR2s-`%SdOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+],p,s,x-i-q.P.V.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3l4z6T6e6f6i6|8t9T9_!r)_$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SQ,m&oQ0x+gQ3`.gQ7Y3dR9e7[!b$Tc#Y%q(S(Y(t(y)Z)[)`)g+x-x-}.S.U.s.v/b0p3O3V3k3{5X5c6{7Q7a9]:o<W!P<d)^)q-Z.|2k2n3p3y3z4P4X6u7b7k7l8k9X9g9m9n;W;`=v!f$Vc#Y%q(S(Y(t(y)W)X)Z)[)`)g+x-x-}.S.U.s.v/b0p3O3V3k3{5X5c6{7Q7a9]:o<W!T<f)^)q-Z.|2k2n3p3v3w3y3z4P4X6u7b7k7l8k9X9g9m9n;W;`=v!^$Zc#Y%q(S(Y(t(y)`)g+x-x-}.S.U.s.v/b0p3O3V3k3{5X5c6{7Q7a9]:o<WQ4_/kz>S)^)q-Z.|2k2n3p4P4X6u7b7k7l8k9X9g9m9n;W;`=vQ>X>ZR>Y>['QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SS$oh$pR4U/U'XgOPWXYZhstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n$p%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/U/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>ST$kf$qQ$ifS)j$l)nR)v$qT$jf$qT)l$l)n'XhOPWXYZhstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n$p%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/U/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>ST$oh$pQ$rhR)u$p%^jOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_!s>Q$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>S#glOPXZst!Z!`!o#S#d#o#{$n%m&k&n&o&r&t&u&w&{'T'b)O)s*i+]+g,p,s,x-i.g/V/n0]0l1r2S2T2V2X2[2_2a3d4T4z6T6e6f6i7[8t9T!U%Ri$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y#f(w#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^Q+T%aQ/c*Oo4O<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=h!U$yi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>YQ*c$zU*l$|*Z*oQ+U%bQ0W*m#f=q#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^n=r<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=hQ=w>TQ=x>UQ=y>VR=z>W!U%Ri$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y#f(w#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^o4O<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=hnoOXst!Z#d%m&r&t&u&w,s,x2[2_S*f${*YQ-R'OQ-S'QR4i/y%[%Si#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;k<l<m<o<p<q<r<u<v<w<x<y<z=S=T=U=V=X=Y=]=^=_=`=a=b=c=d=g=h>P>X>Y>]>^Q,U&]Q1h,WQ5s1gR8h5tV*n$|*Z*oU*n$|*Z*oT5z1o5{S0P*i/nQ4w0]T8S4z:]Q+j%xQ0V*lQ1O+kQ1u,aQ6W1vQ8v6XQ:c8wR;^:d!U%Oi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Yx*R$v)e*S*u+V/v0d0e4R4g5R5S5W7p8U:R:x=p=}>OS0`*t0a#f<o#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^n<p<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=h!d=S(u)c*[*e.j.m.q/_/k/|0v1e3h4[4h4l5r7]7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[`=T3}7c7f7j9h:t:w;yS=_.l3iT=`7e9k!U%Qi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y|*T$v)e*U*t+V/g/v0d0e4R4g4|5R5S5W7p8U:R:x=p=}>OS0b*u0c#f<q#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^n<r<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=h!h=U(u)c*[*e.k.l.q/_/k/|0v1e3f3h4[4h4l5r7]7^7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[d=V3}7d7e7j9h9i:t:u:w;yS=a.m3jT=b7f9lrnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_Q&f!UR,p&ornOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_R&f!UQ,Y&^R1d,RsnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_Q1p,_S6R1s1tU8p6P6Q6US:_8r8sS;Y:^:aQ;m;ZR;w;nQ&m!VR,i&iR6_1|R:f8yW&Q|&V&W,OR1Z+vQ&r!WR,s&sR,y&xT2],x2_R,}&yQ,|&yR2f,}Q'y!{R-y'ySsOtQ#dXT%ps#dQ#OTR'{#OQ#RUR'}#RQ){$uR/`){Q#UVR(Q#UQ#XWU(W#X(X.QQ(X#YR.Q(YQ-^'YR2r-^Q.u(yS3m.u3nR3n.vQ-e'`R2v-eY!rQ'`-e1o5{R'j!rQ/Q)eR4S/QU#_W%h*YU(_#_(`.RQ(`#`R.R(ZQ-a']R2t-at`OXst!V!Z#d%m&i&k&r&t&u&w,s,x2[2_S#hZ%eU#r`#h.[R.[(jQ(k#jQ.X(gW.a(k.X3X7RQ3X.YR7R3YQ)n$lR/W)nQ$phR)t$pQ$`cU)a$`-|<jQ-|<WR<j)qQ/q*]W4c/q4d7t9sU4d/r/s/tS7t4e4fR9s7u$e*Q$v(u)c)e*[*e*t*u+Q+R+V.l.m.o.p.q/_/g/i/k/v/|0d0e0v1e3f3g3h3}4R4[4g4h4l4|5O5R5S5W5r7]7^7_7`7e7f7h7i7j7p7w7z8U8X8Z9h9i9j9t9|:R:S:t:u:v:w:x:};R;e;j;v;y=p=}>O>Z>[Q/z*eU4k/z4m7xQ4m/|R7x4lS*o$|*ZR0Y*ox*S$v)e*t*u+V/v0d0e4R4g5R5S5W7p8U:R:x=p=}>O!d.j(u)c*[*e.l.m.q/_/k/|0v1e3h4[4h4l5r7]7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[U/h*S.j7ca7c3}7e7f7j9h:t:w;yQ0a*tQ3i.lU4}0a3i9kR9k7e|*U$v)e*t*u+V/g/v0d0e4R4g4|5R5S5W7p8U:R:x=p=}>O!h.k(u)c*[*e.l.m.q/_/k/|0v1e3f3h4[4h4l5r7]7^7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[U/j*U.k7de7d3}7e7f7j9h9i:t:u:w;yQ0c*uQ3j.mU5P0c3j9lR9l7fQ*z%UR0g*zQ5]0vR8Y5]Q+_%kR0u+_Q5v1jS8j5v:[R:[8kQ,[&_R1m,[Q5{1oR8m5{Q1{,fS6]1{8zR8z6_Q1U+rW5h1U5j8a:VQ5j1XQ8a5iR:V8bQ+w&QR1[+wQ2_,xR6m2_YrOXst#dQ&v!ZQ+a%mQ,r&rQ,t&tQ,u&uQ,w&wQ2Y,sS2],x2_R6l2[Q%opQ&z!_Q&}!aQ'P!bQ'R!cQ'q!uQ+`%lQ+l%zQ,Q&XQ,h&mQ-P&|W-p'k's't'wQ-w'oQ0X*nQ1P+mQ1c,PS2O,i,lQ2g-OQ2h-RQ2i-SQ2}-oW3P-r-s-v-xQ5a1QQ5m1_Q5q1eQ6V1uQ6a2QQ6k2ZU6z3O3R3UQ6}3SQ8]5bQ8e5oQ8g5rQ8l5zQ8u6WQ8{6`S9[6{7PQ9^7OQ:W8cQ:b8vQ:g8|Q:n9]Q;U:XQ;]:cQ;a:oQ;l;VR;o;^Q%zyQ'd!iQ'o!uU+m%{%|%}Q-W'VU-k'e'f'gS-o'k'uQ0Q*jS1Q+n+oQ2o-YS2{-l-mQ3S-tS4p0R0UQ5b1RQ6v2uQ6y2|Q7O3TU7{4r4s4vQ9z7}R;O9{S$wi>PR*{%VU%Ui%V>PR0f*yQ$viS(u#v+iS)c$b$cQ)e$dQ*[$xS*e${*YQ*t%OQ*u%QQ+Q%^Q+R%_Q+V%cQ.l<oQ.m<qQ.o<uQ.p<wQ.q<yQ/_)yQ/g*RQ/i*TQ/k*VQ/v*aS/|*g/mQ0d*wQ0e*xl0v+f,V.f1i1q3c6S7W8q9b:`:r;[;dQ1e,SQ3f=SQ3g=UQ3h=XS3}<l<mQ4R/PS4[/d4^Q4g/xQ4h/yQ4l/{Q4|0`Q5O0bQ5R0iQ5S0jQ5W0oQ5r1fQ7]=]Q7^=_Q7_=aQ7`=cQ7e<pQ7f<rQ7h<vQ7i<xQ7j<zQ7p4_Q7w4jQ7z4oQ8U5QQ8X5[Q8Z5_Q9h=YQ9i=TQ9j=VQ9t7vQ9|8QQ:R8VQ:S8[Q:t=^Q:u=`Q:v=bQ:w=dQ:x9pQ:}9yQ;R:PQ;e=gQ;j;QQ;v;kQ;y=hQ=p>PQ=}>XQ>O>YQ>Z>]R>[>^Q+O%]Q.n<sR7g<tnpOXst!Z#d%m&r&t&u&w,s,x2[2_Q!fPS#fZ#oQ&|!`W'h!o*i0]4zQ(P#SQ)Q#{Q)r$nS,l&k&nQ,q&oQ-O&{S-T'T/nQ-g'bQ.x)OQ/[)sQ0s+]Q0y+gQ2W,pQ2y-iQ3a.gQ4W/VQ5U0lQ6Q1rQ6c2SQ6d2TQ6h2VQ6j2XQ6o2aQ7Z3dQ7m4TQ8s6TQ9P6eQ9Q6fQ9S6iQ9f7[Q:a8tR:k9T#[cOPXZst!Z!`!o#d#o#{%m&k&n&o&r&t&u&w&{'T'b)O*i+]+g,p,s,x-i.g/n0]0l1r2S2T2V2X2[2_2a3d4z6T6e6f6i7[8t9TQ#YWQ#eYQ%quQ%svS%uw!gS(S#W(VQ(Y#ZQ(t#uQ(y#xQ)R$OQ)S$PQ)T$QQ)U$RQ)V$SQ)W$TQ)X$UQ)Y$VQ)Z$WQ)[$XQ)^$ZQ)`$_Q)b$aQ)g$eW)q$n)s/V4TQ+d%tQ+x&RS-Z'X2pQ-x'rS-}(T.PQ.S(]Q.U(dQ.s(xQ.v(zQ.z<UQ.|<XQ.}<YQ/O<]Q/b)}Q0p+XQ2k-UQ2n-XQ3O-qQ3V.VQ3k.tQ3p<^Q3q<_Q3r<`Q3s<aQ3t<bQ3u<cQ3v<dQ3w<eQ3x<fQ3y<gQ3z<hQ3{.{Q3|<kQ4P<nQ4Q<{Q4X<iQ5X0rQ5c1SQ6u=OQ6{3QQ7Q3WQ7a3lQ7b=PQ7k=RQ7l=ZQ8k5wQ9X6sQ9]6|Q9g=[Q9m=eQ9n=fQ:o9_Q;W:ZQ;`:mQ<W#SR=v>SR#[WR'Z!el!tQ!r!v!y!z'`'l'm'n-e-u1o5{5}S'V!e-]U*j$|*Z*oS-Y'W'_S0U*k*qQ0^*rQ2u-cQ4v0[R4{0_R({#xQ!fQT-d'`-e]!qQ!r'`-e1o5{Q#p]R'i<VR)f$dY!uQ'`-e1o5{Q'k!rS'u!v!yS'w!z5}S-t'l'mQ-v'nR3T-uT#kZ%eS#jZ%eS%km,oU(g#h#i#lS.Y(h(iQ.^(jQ0t+^Q3Y.ZU3Z.[.]._S7S3[3]R9`7Td#^W#W#Z%h(T(^*Y+Z.T/mr#gZm#h#i#l%e(h(i(j+^.Z.[.]._3[3]7TS*]$x*bQ/t*^Q2U,oQ2l-VQ4`/pQ6q2dQ7s4aQ9W6rT=m'X+[V#aW%h*YU#`W%h*YS(U#W(^U(Z#Z+Z/mS-['X+[T.O(T.TV'^!e%i*ZQ$lfR)x$qT)m$l)nR4V/UT*_$x*bT*h${*YQ0w+fQ1g,VQ3_.fQ5t1iQ6P1qQ7X3cQ8r6SQ9c7WQ:^8qQ:p9bQ;Z:`Q;c:rQ;n;[R;q;dnqOXst!Z#d%m&r&t&u&w,s,x2[2_Q&l!VR,h&itmOXst!U!V!Z#d%m&i&r&t&u&w,s,x2[2_R,o&oT%lm,oR1k,XR,g&gQ&U|S+}&V&WR1^,OR+s&PT&p!W&sT&q!W&sT2^,x2_\",\n nodeNames: \"⚠ ArithOp ArithOp ?. JSXStartTag LineComment BlockComment Script Hashbang ExportDeclaration export Star as VariableName String Escape from ; default FunctionDeclaration async function VariableDefinition > < TypeParamList in out const TypeDefinition extends ThisType this LiteralType ArithOp Number BooleanLiteral TemplateType InterpolationEnd Interpolation InterpolationStart NullType null VoidType void TypeofType typeof MemberExpression . PropertyName [ TemplateString Escape Interpolation super RegExp ] ArrayExpression Spread , } { ObjectExpression Property async get set PropertyDefinition Block : NewTarget new NewExpression ) ( ArgList UnaryExpression delete LogicOp BitOp YieldExpression yield AwaitExpression await ParenthesizedExpression ClassExpression class ClassBody MethodDeclaration Decorator @ MemberExpression PrivatePropertyName CallExpression TypeArgList CompareOp < declare Privacy static abstract override PrivatePropertyDefinition PropertyDeclaration readonly accessor Optional TypeAnnotation Equals StaticBlock FunctionExpression ArrowFunction ParamList ParamList ArrayPattern ObjectPattern PatternProperty Privacy readonly Arrow MemberExpression BinaryExpression ArithOp ArithOp ArithOp ArithOp BitOp CompareOp instanceof satisfies CompareOp BitOp BitOp BitOp LogicOp LogicOp ConditionalExpression LogicOp LogicOp AssignmentExpression UpdateOp PostfixExpression CallExpression InstantiationExpression TaggedTemplateExpression DynamicImport import ImportMeta JSXElement JSXSelfCloseEndTag JSXSelfClosingTag JSXIdentifier JSXBuiltin JSXIdentifier JSXNamespacedName JSXMemberExpression JSXSpreadAttribute JSXAttribute JSXAttributeValue JSXEscape JSXEndTag JSXOpenTag JSXFragmentTag JSXText JSXEscape JSXStartCloseTag JSXCloseTag PrefixCast < ArrowFunction TypeParamList SequenceExpression InstantiationExpression KeyofType keyof UniqueType unique ImportType InferredType infer TypeName ParenthesizedType FunctionSignature ParamList NewSignature IndexedType TupleType Label ArrayType ReadonlyType ObjectType MethodType PropertyType IndexSignature PropertyDefinition CallSignature TypePredicate asserts is NewSignature new UnionType LogicOp IntersectionType LogicOp ConditionalType ParameterizedType ClassDeclaration abstract implements type VariableDeclaration let var using TypeAliasDeclaration InterfaceDeclaration interface EnumDeclaration enum EnumBody NamespaceDeclaration namespace module AmbientDeclaration declare GlobalDeclaration global ClassDeclaration ClassBody AmbientFunctionDeclaration ExportGroup VariableName VariableName ImportDeclaration defer ImportGroup ForStatement for ForSpec ForInSpec ForOfSpec of WhileStatement while WithStatement with DoStatement do IfStatement if else SwitchStatement switch SwitchBody CaseLabel case DefaultLabel TryStatement try CatchClause catch FinallyClause finally ReturnStatement return ThrowStatement throw BreakStatement break ContinueStatement continue DebuggerStatement debugger LabeledStatement ExpressionStatement SingleExpression SingleClassItem\",\n maxTerm: 380,\n context: trackNewline,\n nodeProps: [\n [\"isolate\", -8,5,6,14,37,39,51,53,55,\"\"],\n [\"group\", -26,9,17,19,68,207,211,215,216,218,221,224,234,237,243,245,247,249,252,258,264,266,268,270,272,274,275,\"Statement\",-34,13,14,32,35,36,42,51,54,55,57,62,70,72,76,80,82,84,85,110,111,120,121,136,139,141,142,143,144,145,147,148,167,169,171,\"Expression\",-23,31,33,37,41,43,45,173,175,177,178,180,181,182,184,185,186,188,189,190,201,203,205,206,\"Type\",-3,88,103,109,\"ClassItem\"],\n [\"openedBy\", 23,\"<\",38,\"InterpolationStart\",56,\"[\",60,\"{\",73,\"(\",160,\"JSXStartCloseTag\"],\n [\"closedBy\", -2,24,168,\">\",40,\"InterpolationEnd\",50,\"]\",61,\"}\",74,\")\",165,\"JSXEndTag\"]\n ],\n propSources: [jsHighlight],\n skippedNodes: [0,5,6,278],\n repeatNodeCount: 37,\n tokenData: \"$Fq07[R!bOX%ZXY+gYZ-yZ[+g[]%Z]^.c^p%Zpq+gqr/mrs3cst:_tuEruvJSvwLkwx! Yxy!'iyz!(sz{!)}{|!,q|}!.O}!O!,q!O!P!/Y!P!Q!9j!Q!R#:O!R![#<_![!]#I_!]!^#Jk!^!_#Ku!_!`$![!`!a$$v!a!b$*T!b!c$,r!c!}Er!}#O$-|#O#P$/W#P#Q$4o#Q#R$5y#R#SEr#S#T$7W#T#o$8b#o#p$<r#p#q$=h#q#r$>x#r#s$@U#s$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$I|Er$I|$I}$Dk$I}$JO$Dk$JO$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr(n%d_$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z&j&hT$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c&j&zP;=`<%l&c'|'U]$i&j(Z!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!b(SU(Z!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!b(iP;=`<%l'}'|(oP;=`<%l&}'[(y]$i&j(WpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(rp)wU(WpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)rp*^P;=`<%l)r'[*dP;=`<%l(r#S*nX(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g#S+^P;=`<%l*g(n+dP;=`<%l%Z07[+rq$i&j(Wp(Z!b'|0/lOX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p$f%Z$f$g+g$g#BY%Z#BY#BZ+g#BZ$IS%Z$IS$I_+g$I_$JT%Z$JT$JU+g$JU$KV%Z$KV$KW+g$KW&FU%Z&FU&FV+g&FV;'S%Z;'S;=`+a<%l?HT%Z?HT?HU+g?HUO%Z07[.ST(X#S$i&j'}0/lO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c07[.n_$i&j(Wp(Z!b'}0/lOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)3p/x`$i&j!p),Q(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW1V`#v(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`2X!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW2d_#v(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'At3l_(V':f$i&j(Z!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k(^4r_$i&j(Z!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k&z5vX$i&jOr5qrs6cs!^5q!^!_6y!_#o5q#o#p6y#p;'S5q;'S;=`7h<%lO5q&z6jT$d`$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c`6|TOr6yrs7]s;'S6y;'S;=`7b<%lO6y`7bO$d``7eP;=`<%l6y&z7kP;=`<%l5q(^7w]$d`$i&j(Z!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!r8uZ(Z!bOY8pYZ6yZr8prs9hsw8pwx6yx#O8p#O#P6y#P;'S8p;'S;=`:R<%lO8p!r9oU$d`(Z!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!r:UP;=`<%l8p(^:[P;=`<%l4k%9[:hh$i&j(Wp(Z!bOY%ZYZ&cZq%Zqr<Srs&}st%ZtuCruw%Zwx(rx!^%Z!^!_*g!_!c%Z!c!}Cr!}#O%Z#O#P&c#P#R%Z#R#SCr#S#T%Z#T#oCr#o#p*g#p$g%Z$g;'SCr;'S;=`El<%lOCr(r<__WS$i&j(Wp(Z!bOY<SYZ&cZr<Srs=^sw<Swx@nx!^<S!^!_Bm!_#O<S#O#P>`#P#o<S#o#pBm#p;'S<S;'S;=`Cl<%lO<S(Q=g]WS$i&j(Z!bOY=^YZ&cZw=^wx>`x!^=^!^!_?q!_#O=^#O#P>`#P#o=^#o#p?q#p;'S=^;'S;=`@h<%lO=^&n>gXWS$i&jOY>`YZ&cZ!^>`!^!_?S!_#o>`#o#p?S#p;'S>`;'S;=`?k<%lO>`S?XSWSOY?SZ;'S?S;'S;=`?e<%lO?SS?hP;=`<%l?S&n?nP;=`<%l>`!f?xWWS(Z!bOY?qZw?qwx?Sx#O?q#O#P?S#P;'S?q;'S;=`@b<%lO?q!f@eP;=`<%l?q(Q@kP;=`<%l=^'`@w]WS$i&j(WpOY@nYZ&cZr@nrs>`s!^@n!^!_Ap!_#O@n#O#P>`#P#o@n#o#pAp#p;'S@n;'S;=`Bg<%lO@ntAwWWS(WpOYApZrAprs?Ss#OAp#O#P?S#P;'SAp;'S;=`Ba<%lOAptBdP;=`<%lAp'`BjP;=`<%l@n#WBvYWS(Wp(Z!bOYBmZrBmrs?qswBmwxApx#OBm#O#P?S#P;'SBm;'S;=`Cf<%lOBm#WCiP;=`<%lBm(rCoP;=`<%l<S%9[C}i$i&j(o%1l(Wp(Z!bOY%ZYZ&cZr%Zrs&}st%ZtuCruw%Zwx(rx!Q%Z!Q![Cr![!^%Z!^!_*g!_!c%Z!c!}Cr!}#O%Z#O#P&c#P#R%Z#R#SCr#S#T%Z#T#oCr#o#p*g#p$g%Z$g;'SCr;'S;=`El<%lOCr%9[EoP;=`<%lCr07[FRk$i&j(Wp(Z!b$]#t(T,2j(e$I[OY%ZYZ&cZr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$g%Z$g;'SEr;'S;=`I|<%lOEr+dHRk$i&j(Wp(Z!b$]#tOY%ZYZ&cZr%Zrs&}st%ZtuGvuw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Gv![!^%Z!^!_*g!_!c%Z!c!}Gv!}#O%Z#O#P&c#P#R%Z#R#SGv#S#T%Z#T#oGv#o#p*g#p$g%Z$g;'SGv;'S;=`Iv<%lOGv+dIyP;=`<%lGv07[JPP;=`<%lEr(KWJ_`$i&j(Wp(Z!b#p(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KWKl_$i&j$Q(Ch(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z,#xLva(z+JY$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sv%ZvwM{wx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KWNW`$i&j#z(Ch(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'At! c_(Y';W$i&j(WpOY!!bYZ!#hZr!!brs!#hsw!!bwx!$xx!^!!b!^!_!%z!_#O!!b#O#P!#h#P#o!!b#o#p!%z#p;'S!!b;'S;=`!'c<%lO!!b'l!!i_$i&j(WpOY!!bYZ!#hZr!!brs!#hsw!!bwx!$xx!^!!b!^!_!%z!_#O!!b#O#P!#h#P#o!!b#o#p!%z#p;'S!!b;'S;=`!'c<%lO!!b&z!#mX$i&jOw!#hwx6cx!^!#h!^!_!$Y!_#o!#h#o#p!$Y#p;'S!#h;'S;=`!$r<%lO!#h`!$]TOw!$Ywx7]x;'S!$Y;'S;=`!$l<%lO!$Y`!$oP;=`<%l!$Y&z!$uP;=`<%l!#h'l!%R]$d`$i&j(WpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(r!Q!&PZ(WpOY!%zYZ!$YZr!%zrs!$Ysw!%zwx!&rx#O!%z#O#P!$Y#P;'S!%z;'S;=`!']<%lO!%z!Q!&yU$d`(WpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)r!Q!'`P;=`<%l!%z'l!'fP;=`<%l!!b/5|!'t_!l/.^$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#&U!)O_!k!Lf$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z-!n!*[b$i&j(Wp(Z!b(U%&f#q(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rxz%Zz{!+d{!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW!+o`$i&j(Wp(Z!b#n(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z+;x!,|`$i&j(Wp(Z!br+4YOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z,$U!.Z_!]+Jf$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[!/ec$i&j(Wp(Z!b!Q.2^OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!0p!P!Q%Z!Q![!3Y![!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#%|!0ya$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!2O!P!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#%|!2Z_![!L^$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!3eg$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!3Y![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S!3Y#S#X%Z#X#Y!4|#Y#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!5Vg$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx{%Z{|!6n|}%Z}!O!6n!O!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!6wc$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!8_c$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[!9uf$i&j(Wp(Z!b#o(ChOY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcxz!;Zz{#-}{!P!;Z!P!Q#/d!Q!^!;Z!^!_#(i!_!`#7S!`!a#8i!a!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z?O!;fb$i&j(Wp(Z!b!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z>^!<w`$i&j(Z!b!X7`OY!<nYZ&cZw!<nwx!=yx!P!<n!P!Q!Eq!Q!^!<n!^!_!Gr!_!}!<n!}#O!KS#O#P!Dy#P#o!<n#o#p!Gr#p;'S!<n;'S;=`!L]<%lO!<n<z!>Q^$i&j!X7`OY!=yYZ&cZ!P!=y!P!Q!>|!Q!^!=y!^!_!@c!_!}!=y!}#O!CW#O#P!Dy#P#o!=y#o#p!@c#p;'S!=y;'S;=`!Ek<%lO!=y<z!?Td$i&j!X7`O!^&c!_#W&c#W#X!>|#X#Z&c#Z#[!>|#[#]&c#]#^!>|#^#a&c#a#b!>|#b#g&c#g#h!>|#h#i&c#i#j!>|#j#k!>|#k#m&c#m#n!>|#n#o&c#p;'S&c;'S;=`&w<%lO&c7`!@hX!X7`OY!@cZ!P!@c!P!Q!AT!Q!}!@c!}#O!Ar#O#P!Bq#P;'S!@c;'S;=`!CQ<%lO!@c7`!AYW!X7`#W#X!AT#Z#[!AT#]#^!AT#a#b!AT#g#h!AT#i#j!AT#j#k!AT#m#n!AT7`!AuVOY!ArZ#O!Ar#O#P!B[#P#Q!@c#Q;'S!Ar;'S;=`!Bk<%lO!Ar7`!B_SOY!ArZ;'S!Ar;'S;=`!Bk<%lO!Ar7`!BnP;=`<%l!Ar7`!BtSOY!@cZ;'S!@c;'S;=`!CQ<%lO!@c7`!CTP;=`<%l!@c<z!C][$i&jOY!CWYZ&cZ!^!CW!^!_!Ar!_#O!CW#O#P!DR#P#Q!=y#Q#o!CW#o#p!Ar#p;'S!CW;'S;=`!Ds<%lO!CW<z!DWX$i&jOY!CWYZ&cZ!^!CW!^!_!Ar!_#o!CW#o#p!Ar#p;'S!CW;'S;=`!Ds<%lO!CW<z!DvP;=`<%l!CW<z!EOX$i&jOY!=yYZ&cZ!^!=y!^!_!@c!_#o!=y#o#p!@c#p;'S!=y;'S;=`!Ek<%lO!=y<z!EnP;=`<%l!=y>^!Ezl$i&j(Z!b!X7`OY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#W&}#W#X!Eq#X#Z&}#Z#[!Eq#[#]&}#]#^!Eq#^#a&}#a#b!Eq#b#g&}#g#h!Eq#h#i&}#i#j!Eq#j#k!Eq#k#m&}#m#n!Eq#n#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}8r!GyZ(Z!b!X7`OY!GrZw!Grwx!@cx!P!Gr!P!Q!Hl!Q!}!Gr!}#O!JU#O#P!Bq#P;'S!Gr;'S;=`!J|<%lO!Gr8r!Hse(Z!b!X7`OY'}Zw'}x#O'}#P#W'}#W#X!Hl#X#Z'}#Z#[!Hl#[#]'}#]#^!Hl#^#a'}#a#b!Hl#b#g'}#g#h!Hl#h#i'}#i#j!Hl#j#k!Hl#k#m'}#m#n!Hl#n;'S'};'S;=`(f<%lO'}8r!JZX(Z!bOY!JUZw!JUwx!Arx#O!JU#O#P!B[#P#Q!Gr#Q;'S!JU;'S;=`!Jv<%lO!JU8r!JyP;=`<%l!JU8r!KPP;=`<%l!Gr>^!KZ^$i&j(Z!bOY!KSYZ&cZw!KSwx!CWx!^!KS!^!_!JU!_#O!KS#O#P!DR#P#Q!<n#Q#o!KS#o#p!JU#p;'S!KS;'S;=`!LV<%lO!KS>^!LYP;=`<%l!KS>^!L`P;=`<%l!<n=l!Ll`$i&j(Wp!X7`OY!LcYZ&cZr!Lcrs!=ys!P!Lc!P!Q!Mn!Q!^!Lc!^!_# o!_!}!Lc!}#O#%P#O#P!Dy#P#o!Lc#o#p# o#p;'S!Lc;'S;=`#&Y<%lO!Lc=l!Mwl$i&j(Wp!X7`OY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#W(r#W#X!Mn#X#Z(r#Z#[!Mn#[#](r#]#^!Mn#^#a(r#a#b!Mn#b#g(r#g#h!Mn#h#i(r#i#j!Mn#j#k!Mn#k#m(r#m#n!Mn#n#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(r8Q# vZ(Wp!X7`OY# oZr# ors!@cs!P# o!P!Q#!i!Q!}# o!}#O#$R#O#P!Bq#P;'S# o;'S;=`#$y<%lO# o8Q#!pe(Wp!X7`OY)rZr)rs#O)r#P#W)r#W#X#!i#X#Z)r#Z#[#!i#[#])r#]#^#!i#^#a)r#a#b#!i#b#g)r#g#h#!i#h#i)r#i#j#!i#j#k#!i#k#m)r#m#n#!i#n;'S)r;'S;=`*Z<%lO)r8Q#$WX(WpOY#$RZr#$Rrs!Ars#O#$R#O#P!B[#P#Q# o#Q;'S#$R;'S;=`#$s<%lO#$R8Q#$vP;=`<%l#$R8Q#$|P;=`<%l# o=l#%W^$i&j(WpOY#%PYZ&cZr#%Prs!CWs!^#%P!^!_#$R!_#O#%P#O#P!DR#P#Q!Lc#Q#o#%P#o#p#$R#p;'S#%P;'S;=`#&S<%lO#%P=l#&VP;=`<%l#%P=l#&]P;=`<%l!Lc?O#&kn$i&j(Wp(Z!b!X7`OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#W%Z#W#X#&`#X#Z%Z#Z#[#&`#[#]%Z#]#^#&`#^#a%Z#a#b#&`#b#g%Z#g#h#&`#h#i%Z#i#j#&`#j#k#&`#k#m%Z#m#n#&`#n#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z9d#(r](Wp(Z!b!X7`OY#(iZr#(irs!Grsw#(iwx# ox!P#(i!P!Q#)k!Q!}#(i!}#O#+`#O#P!Bq#P;'S#(i;'S;=`#,`<%lO#(i9d#)th(Wp(Z!b!X7`OY*gZr*grs'}sw*gwx)rx#O*g#P#W*g#W#X#)k#X#Z*g#Z#[#)k#[#]*g#]#^#)k#^#a*g#a#b#)k#b#g*g#g#h#)k#h#i*g#i#j#)k#j#k#)k#k#m*g#m#n#)k#n;'S*g;'S;=`+Z<%lO*g9d#+gZ(Wp(Z!bOY#+`Zr#+`rs!JUsw#+`wx#$Rx#O#+`#O#P!B[#P#Q#(i#Q;'S#+`;'S;=`#,Y<%lO#+`9d#,]P;=`<%l#+`9d#,cP;=`<%l#(i?O#,o`$i&j(Wp(Z!bOY#,fYZ&cZr#,frs!KSsw#,fwx#%Px!^#,f!^!_#+`!_#O#,f#O#P!DR#P#Q!;Z#Q#o#,f#o#p#+`#p;'S#,f;'S;=`#-q<%lO#,f?O#-tP;=`<%l#,f?O#-zP;=`<%l!;Z07[#.[b$i&j(Wp(Z!b(O0/l!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z07[#/o_$i&j(Wp(Z!bT0/lOY#/dYZ&cZr#/drs#0nsw#/dwx#4Ox!^#/d!^!_#5}!_#O#/d#O#P#1p#P#o#/d#o#p#5}#p;'S#/d;'S;=`#6|<%lO#/d06j#0w]$i&j(Z!bT0/lOY#0nYZ&cZw#0nwx#1px!^#0n!^!_#3R!_#O#0n#O#P#1p#P#o#0n#o#p#3R#p;'S#0n;'S;=`#3x<%lO#0n05W#1wX$i&jT0/lOY#1pYZ&cZ!^#1p!^!_#2d!_#o#1p#o#p#2d#p;'S#1p;'S;=`#2{<%lO#1p0/l#2iST0/lOY#2dZ;'S#2d;'S;=`#2u<%lO#2d0/l#2xP;=`<%l#2d05W#3OP;=`<%l#1p01O#3YW(Z!bT0/lOY#3RZw#3Rwx#2dx#O#3R#O#P#2d#P;'S#3R;'S;=`#3r<%lO#3R01O#3uP;=`<%l#3R06j#3{P;=`<%l#0n05x#4X]$i&j(WpT0/lOY#4OYZ&cZr#4Ors#1ps!^#4O!^!_#5Q!_#O#4O#O#P#1p#P#o#4O#o#p#5Q#p;'S#4O;'S;=`#5w<%lO#4O00^#5XW(WpT0/lOY#5QZr#5Qrs#2ds#O#5Q#O#P#2d#P;'S#5Q;'S;=`#5q<%lO#5Q00^#5tP;=`<%l#5Q05x#5zP;=`<%l#4O01p#6WY(Wp(Z!bT0/lOY#5}Zr#5}rs#3Rsw#5}wx#5Qx#O#5}#O#P#2d#P;'S#5};'S;=`#6v<%lO#5}01p#6yP;=`<%l#5}07[#7PP;=`<%l#/d)3h#7ab$i&j$Q(Ch(Wp(Z!b!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;ZAt#8vb$Z#t$i&j(Wp(Z!b!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z'Ad#:Zp$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!3Y!P!Q%Z!Q![#<_![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S#<_#S#U%Z#U#V#?i#V#X%Z#X#Y!4|#Y#b%Z#b#c#>_#c#d#Bq#d#l%Z#l#m#Es#m#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#<jk$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!3Y!P!Q%Z!Q![#<_![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S#<_#S#X%Z#X#Y!4|#Y#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#>j_$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#?rd$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#A]f$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Bzc$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Dbe$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#E|g$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Gpi$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z*)x#Il_!g$b$i&j$O)Lv(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)[#Jv_al$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z04f#LS^h#)`#R-<U(Wp(Z!b$n7`OY*gZr*grs'}sw*gwx)rx!P*g!P!Q#MO!Q!^*g!^!_#Mt!_!`$ f!`#O*g#P;'S*g;'S;=`+Z<%lO*g(n#MXX$k&j(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g(El#M}Z#r(Ch(Wp(Z!bOY*gZr*grs'}sw*gwx)rx!_*g!_!`#Np!`#O*g#P;'S*g;'S;=`+Z<%lO*g(El#NyX$Q(Ch(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g(El$ oX#s(Ch(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g*)x$!ga#`*!Y$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`!a$#l!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(K[$#w_#k(Cl$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z*)x$%Vag!*r#s(Ch$f#|$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`$&[!`!a$'f!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$&g_#s(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$'qa#r(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`!a$(v!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$)R`#r(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(Kd$*`a(r(Ct$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!a%Z!a!b$+e!b#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$+p`$i&j#{(Ch(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%#`$,}_!|$Ip$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z04f$.X_!S0,v$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(n$/]Z$i&jO!^$0O!^!_$0f!_#i$0O#i#j$0k#j#l$0O#l#m$2^#m#o$0O#o#p$0f#p;'S$0O;'S;=`$4i<%lO$0O(n$0VT_#S$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c#S$0kO_#S(n$0p[$i&jO!Q&c!Q![$1f![!^&c!_!c&c!c!i$1f!i#T&c#T#Z$1f#Z#o&c#o#p$3|#p;'S&c;'S;=`&w<%lO&c(n$1kZ$i&jO!Q&c!Q![$2^![!^&c!_!c&c!c!i$2^!i#T&c#T#Z$2^#Z#o&c#p;'S&c;'S;=`&w<%lO&c(n$2cZ$i&jO!Q&c!Q![$3U![!^&c!_!c&c!c!i$3U!i#T&c#T#Z$3U#Z#o&c#p;'S&c;'S;=`&w<%lO&c(n$3ZZ$i&jO!Q&c!Q![$0O![!^&c!_!c&c!c!i$0O!i#T&c#T#Z$0O#Z#o&c#p;'S&c;'S;=`&w<%lO&c#S$4PR!Q![$4Y!c!i$4Y#T#Z$4Y#S$4]S!Q![$4Y!c!i$4Y#T#Z$4Y#q#r$0f(n$4lP;=`<%l$0O#1[$4z_!Y#)l$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$6U`#x(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z+;p$7c_$i&j(Wp(Z!b(a+4QOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[$8qk$i&j(Wp(Z!b(T,2j$_#t(e$I[OY%ZYZ&cZr%Zrs&}st%Ztu$8buw%Zwx(rx}%Z}!O$:f!O!Q%Z!Q![$8b![!^%Z!^!_*g!_!c%Z!c!}$8b!}#O%Z#O#P&c#P#R%Z#R#S$8b#S#T%Z#T#o$8b#o#p*g#p$g%Z$g;'S$8b;'S;=`$<l<%lO$8b+d$:qk$i&j(Wp(Z!b$_#tOY%ZYZ&cZr%Zrs&}st%Ztu$:fuw%Zwx(rx}%Z}!O$:f!O!Q%Z!Q![$:f![!^%Z!^!_*g!_!c%Z!c!}$:f!}#O%Z#O#P&c#P#R%Z#R#S$:f#S#T%Z#T#o$:f#o#p*g#p$g%Z$g;'S$:f;'S;=`$<f<%lO$:f+d$<iP;=`<%l$:f07[$<oP;=`<%l$8b#Jf$<{X!_#Hb(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g,#x$=sa(y+JY$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p#q$+e#q;'S%Z;'S;=`+a<%lO%Z)>v$?V_!^(CdvBr$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?O$@a_!q7`$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[$Aq|$i&j(Wp(Z!b'|0/l$]#t(T,2j(e$I[OX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr07[$D|k$i&j(Wp(Z!b'}0/l$]#t(T,2j(e$I[OY%ZYZ&cZr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$g%Z$g;'SEr;'S;=`I|<%lOEr\",\n tokenizers: [noSemicolon, noSemicolonType, operatorToken, jsx, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, insertSemicolon, new LocalTokenGroup(\"$S~RRtu[#O#Pg#S#T#|~_P#o#pb~gOx~~jVO#i!P#i#j!U#j#l!P#l#m!q#m;'S!P;'S;=`#v<%lO!P~!UO!U~~!XS!Q![!e!c!i!e#T#Z!e#o#p#Z~!hR!Q![!q!c!i!q#T#Z!q~!tR!Q![!}!c!i!}#T#Z!}~#QR!Q![!P!c!i!P#T#Z!P~#^R!Q![#g!c!i#g#T#Z#g~#jS!Q![#g!c!i#g#T#Z#g#q#r!P~#yP;=`<%l!P~$RO(c~~\", 141, 340), new LocalTokenGroup(\"j~RQYZXz{^~^O(Q~~aP!P!Qd~iO(R~~\", 25, 323)],\n topRules: {\"Script\":[0,7],\"SingleExpression\":[1,276],\"SingleClassItem\":[2,277]},\n dialects: {jsx: 0, ts: 15175},\n dynamicPrecedences: {\"80\":1,\"82\":1,\"94\":1,\"169\":1,\"199\":1},\n specialized: [{term: 327, get: (value) => spec_identifier[value] || -1},{term: 343, get: (value) => spec_word[value] || -1},{term: 95, get: (value) => spec_LessThan[value] || -1}],\n tokenPrec: 15201\n});\n\nexport { parser };\n","import { parser } from '@lezer/javascript';\nimport { syntaxTree, LRLanguage, indentNodeProp, continuedIndent, flatIndent, delimitedIndent, foldNodeProp, foldInside, defineLanguageFacet, sublanguageProp, LanguageSupport } from '@codemirror/language';\nimport { EditorSelection } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\nimport { snippetCompletion, ifNotIn, completeFromList } from '@codemirror/autocomplete';\nimport { NodeWeakMap, IterMode } from '@lezer/common';\n\n/**\nA collection of JavaScript-related\n[snippets](https://codemirror.net/6/docs/ref/#autocomplete.snippet).\n*/\nconst snippets = [\n /*@__PURE__*/snippetCompletion(\"function ${name}(${params}) {\\n\\t${}\\n}\", {\n label: \"function\",\n detail: \"definition\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\\n\\t${}\\n}\", {\n label: \"for\",\n detail: \"loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"for (let ${name} of ${collection}) {\\n\\t${}\\n}\", {\n label: \"for\",\n detail: \"of loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"do {\\n\\t${}\\n} while (${})\", {\n label: \"do\",\n detail: \"loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"while (${}) {\\n\\t${}\\n}\", {\n label: \"while\",\n detail: \"loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"try {\\n\\t${}\\n} catch (${error}) {\\n\\t${}\\n}\", {\n label: \"try\",\n detail: \"/ catch block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"if (${}) {\\n\\t${}\\n}\", {\n label: \"if\",\n detail: \"block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"if (${}) {\\n\\t${}\\n} else {\\n\\t${}\\n}\", {\n label: \"if\",\n detail: \"/ else block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"class ${name} {\\n\\tconstructor(${params}) {\\n\\t\\t${}\\n\\t}\\n}\", {\n label: \"class\",\n detail: \"definition\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"import {${names}} from \\\"${module}\\\"\\n${}\", {\n label: \"import\",\n detail: \"named\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"import ${name} from \\\"${module}\\\"\\n${}\", {\n label: \"import\",\n detail: \"default\",\n type: \"keyword\"\n })\n];\n/**\nA collection of snippet completions for TypeScript. Includes the\nJavaScript [snippets](https://codemirror.net/6/docs/ref/#lang-javascript.snippets).\n*/\nconst typescriptSnippets = /*@__PURE__*/snippets.concat([\n /*@__PURE__*/snippetCompletion(\"interface ${name} {\\n\\t${}\\n}\", {\n label: \"interface\",\n detail: \"definition\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"type ${name} = ${type}\", {\n label: \"type\",\n detail: \"definition\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"enum ${name} {\\n\\t${}\\n}\", {\n label: \"enum\",\n detail: \"definition\",\n type: \"keyword\"\n })\n]);\n\nconst cache = /*@__PURE__*/new NodeWeakMap();\nconst ScopeNodes = /*@__PURE__*/new Set([\n \"Script\", \"Block\",\n \"FunctionExpression\", \"FunctionDeclaration\", \"ArrowFunction\", \"MethodDeclaration\",\n \"ForStatement\"\n]);\nfunction defID(type) {\n return (node, def) => {\n let id = node.node.getChild(\"VariableDefinition\");\n if (id)\n def(id, type);\n return true;\n };\n}\nconst functionContext = [\"FunctionDeclaration\"];\nconst gatherCompletions = {\n FunctionDeclaration: /*@__PURE__*/defID(\"function\"),\n ClassDeclaration: /*@__PURE__*/defID(\"class\"),\n ClassExpression: () => true,\n EnumDeclaration: /*@__PURE__*/defID(\"constant\"),\n TypeAliasDeclaration: /*@__PURE__*/defID(\"type\"),\n NamespaceDeclaration: /*@__PURE__*/defID(\"namespace\"),\n VariableDefinition(node, def) { if (!node.matchContext(functionContext))\n def(node, \"variable\"); },\n TypeDefinition(node, def) { def(node, \"type\"); },\n __proto__: null\n};\nfunction getScope(doc, node) {\n let cached = cache.get(node);\n if (cached)\n return cached;\n let completions = [], top = true;\n function def(node, type) {\n let name = doc.sliceString(node.from, node.to);\n completions.push({ label: name, type });\n }\n node.cursor(IterMode.IncludeAnonymous).iterate(node => {\n if (top) {\n top = false;\n }\n else if (node.name) {\n let gather = gatherCompletions[node.name];\n if (gather && gather(node, def) || ScopeNodes.has(node.name))\n return false;\n }\n else if (node.to - node.from > 8192) {\n // Allow caching for bigger internal nodes\n for (let c of getScope(doc, node.node))\n completions.push(c);\n return false;\n }\n });\n cache.set(node, completions);\n return completions;\n}\nconst Identifier = /^[\\w$\\xa1-\\uffff][\\w$\\d\\xa1-\\uffff]*$/;\nconst dontComplete = [\n \"TemplateString\", \"String\", \"RegExp\",\n \"LineComment\", \"BlockComment\",\n \"VariableDefinition\", \"TypeDefinition\", \"Label\",\n \"PropertyDefinition\", \"PropertyName\",\n \"PrivatePropertyDefinition\", \"PrivatePropertyName\",\n \"JSXText\", \"JSXAttributeValue\", \"JSXOpenTag\", \"JSXCloseTag\", \"JSXSelfClosingTag\",\n \".\", \"?.\"\n];\n/**\nCompletion source that looks up locally defined names in\nJavaScript code.\n*/\nfunction localCompletionSource(context) {\n let inner = syntaxTree(context.state).resolveInner(context.pos, -1);\n if (dontComplete.indexOf(inner.name) > -1)\n return null;\n let isWord = inner.name == \"VariableName\" ||\n inner.to - inner.from < 20 && Identifier.test(context.state.sliceDoc(inner.from, inner.to));\n if (!isWord && !context.explicit)\n return null;\n let options = [];\n for (let pos = inner; pos; pos = pos.parent) {\n if (ScopeNodes.has(pos.name))\n options = options.concat(getScope(context.state.doc, pos));\n }\n return {\n options,\n from: isWord ? inner.from : context.pos,\n validFor: Identifier\n };\n}\nfunction pathFor(read, member, name) {\n var _a;\n let path = [];\n for (;;) {\n let obj = member.firstChild, prop;\n if ((obj === null || obj === void 0 ? void 0 : obj.name) == \"VariableName\") {\n path.push(read(obj));\n return { path: path.reverse(), name };\n }\n else if ((obj === null || obj === void 0 ? void 0 : obj.name) == \"MemberExpression\" && ((_a = (prop = obj.lastChild)) === null || _a === void 0 ? void 0 : _a.name) == \"PropertyName\") {\n path.push(read(prop));\n member = obj;\n }\n else {\n return null;\n }\n }\n}\n/**\nHelper function for defining JavaScript completion sources. It\nreturns the completable name and object path for a completion\ncontext, or null if no name/property completion should happen at\nthat position. For example, when completing after `a.b.c` it will\nreturn `{path: [\"a\", \"b\"], name: \"c\"}`. When completing after `x`\nit will return `{path: [], name: \"x\"}`. When not in a property or\nname, it will return null if `context.explicit` is false, and\n`{path: [], name: \"\"}` otherwise.\n*/\nfunction completionPath(context) {\n let read = (node) => context.state.doc.sliceString(node.from, node.to);\n let inner = syntaxTree(context.state).resolveInner(context.pos, -1);\n if (inner.name == \"PropertyName\") {\n return pathFor(read, inner.parent, read(inner));\n }\n else if ((inner.name == \".\" || inner.name == \"?.\") && inner.parent.name == \"MemberExpression\") {\n return pathFor(read, inner.parent, \"\");\n }\n else if (dontComplete.indexOf(inner.name) > -1) {\n return null;\n }\n else if (inner.name == \"VariableName\" || inner.to - inner.from < 20 && Identifier.test(read(inner))) {\n return { path: [], name: read(inner) };\n }\n else if (inner.name == \"MemberExpression\") {\n return pathFor(read, inner, \"\");\n }\n else {\n return context.explicit ? { path: [], name: \"\" } : null;\n }\n}\nfunction enumeratePropertyCompletions(obj, top) {\n let originalObj = obj;\n let options = [], seen = new Set;\n for (let depth = 0;; depth++) {\n for (let name of (Object.getOwnPropertyNames || Object.keys)(obj)) {\n if (!/^[a-zA-Z_$\\xaa-\\uffdc][\\w$\\xaa-\\uffdc]*$/.test(name) || seen.has(name))\n continue;\n seen.add(name);\n let value;\n try {\n value = originalObj[name];\n }\n catch (_) {\n continue;\n }\n options.push({\n label: name,\n type: typeof value == \"function\" ? (/^[A-Z]/.test(name) ? \"class\" : top ? \"function\" : \"method\")\n : top ? \"variable\" : \"property\",\n boost: -depth\n });\n }\n let next = Object.getPrototypeOf(obj);\n if (!next)\n return options;\n obj = next;\n }\n}\n/**\nDefines a [completion source](https://codemirror.net/6/docs/ref/#autocomplete.CompletionSource) that\ncompletes from the given scope object (for example `globalThis`).\nWill enter properties of the object when completing properties on\na directly-named path.\n*/\nfunction scopeCompletionSource(scope) {\n let cache = new Map;\n return (context) => {\n let path = completionPath(context);\n if (!path)\n return null;\n let target = scope;\n for (let step of path.path) {\n target = target[step];\n if (!target)\n return null;\n }\n let options = cache.get(target);\n if (!options)\n cache.set(target, options = enumeratePropertyCompletions(target, !path.path.length));\n return {\n from: context.pos - path.name.length,\n options,\n validFor: Identifier\n };\n };\n}\n\n/**\nA language provider based on the [Lezer JavaScript\nparser](https://github.com/lezer-parser/javascript), extended with\nhighlighting and indentation information.\n*/\nconst javascriptLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"javascript\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n IfStatement: /*@__PURE__*/continuedIndent({ except: /^\\s*({|else\\b)/ }),\n TryStatement: /*@__PURE__*/continuedIndent({ except: /^\\s*({|catch\\b|finally\\b)/ }),\n LabeledStatement: flatIndent,\n SwitchBody: context => {\n let after = context.textAfter, closed = /^\\s*\\}/.test(after), isCase = /^\\s*(case|default)\\b/.test(after);\n return context.baseIndent + (closed ? 0 : isCase ? 1 : 2) * context.unit;\n },\n Block: /*@__PURE__*/delimitedIndent({ closing: \"}\" }),\n ArrowFunction: cx => cx.baseIndent + cx.unit,\n \"TemplateString BlockComment\": () => null,\n \"Statement Property\": /*@__PURE__*/continuedIndent({ except: /^\\s*{/ }),\n JSXElement(context) {\n let closed = /^\\s*<\\//.test(context.textAfter);\n return context.lineIndent(context.node.from) + (closed ? 0 : context.unit);\n },\n JSXEscape(context) {\n let closed = /\\s*\\}/.test(context.textAfter);\n return context.lineIndent(context.node.from) + (closed ? 0 : context.unit);\n },\n \"JSXOpenTag JSXSelfClosingTag\"(context) {\n return context.column(context.node.from) + context.unit;\n }\n }),\n /*@__PURE__*/foldNodeProp.add({\n \"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType\": foldInside,\n BlockComment(tree) { return { from: tree.from + 2, to: tree.to - 2 }; },\n JSXElement(tree) {\n let open = tree.firstChild;\n if (!open || open.name == \"JSXSelfClosingTag\")\n return null;\n let close = tree.lastChild;\n return { from: open.to, to: close.type.isError ? tree.to : close.from };\n },\n \"JSXSelfClosingTag JSXOpenTag\"(tree) {\n var _a;\n let name = (_a = tree.firstChild) === null || _a === void 0 ? void 0 : _a.nextSibling, close = tree.lastChild;\n if (!name || name.type.isError)\n return null;\n return { from: name.to, to: close.type.isError ? tree.to : close.from };\n }\n })\n ]\n }),\n languageData: {\n closeBrackets: { brackets: [\"(\", \"[\", \"{\", \"'\", '\"', \"`\"] },\n commentTokens: { line: \"//\", block: { open: \"/*\", close: \"*/\" } },\n indentOnInput: /^\\s*(?:case |default:|\\{|\\}|<\\/)$/,\n wordChars: \"$\"\n }\n});\nconst jsxSublanguage = {\n test: node => /^JSX/.test(node.name),\n facet: /*@__PURE__*/defineLanguageFacet({ commentTokens: { block: { open: \"{/*\", close: \"*/}\" } } })\n};\n/**\nA language provider for TypeScript.\n*/\nconst typescriptLanguage = /*@__PURE__*/javascriptLanguage.configure({ dialect: \"ts\" }, \"typescript\");\n/**\nLanguage provider for JSX.\n*/\nconst jsxLanguage = /*@__PURE__*/javascriptLanguage.configure({\n dialect: \"jsx\",\n props: [/*@__PURE__*/sublanguageProp.add(n => n.isTop ? [jsxSublanguage] : undefined)]\n});\n/**\nLanguage provider for JSX + TypeScript.\n*/\nconst tsxLanguage = /*@__PURE__*/javascriptLanguage.configure({\n dialect: \"jsx ts\",\n props: [/*@__PURE__*/sublanguageProp.add(n => n.isTop ? [jsxSublanguage] : undefined)]\n}, \"typescript\");\nlet kwCompletion = (name) => ({ label: name, type: \"keyword\" });\nconst keywords = /*@__PURE__*/\"break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield\".split(\" \").map(kwCompletion);\nconst typescriptKeywords = /*@__PURE__*/keywords.concat(/*@__PURE__*/[\"declare\", \"implements\", \"private\", \"protected\", \"public\"].map(kwCompletion));\n/**\nJavaScript support. Includes [snippet](https://codemirror.net/6/docs/ref/#lang-javascript.snippets)\nand local variable completion.\n*/\nfunction javascript(config = {}) {\n let lang = config.jsx ? (config.typescript ? tsxLanguage : jsxLanguage)\n : config.typescript ? typescriptLanguage : javascriptLanguage;\n let completions = config.typescript ? typescriptSnippets.concat(typescriptKeywords) : snippets.concat(keywords);\n return new LanguageSupport(lang, [\n javascriptLanguage.data.of({\n autocomplete: ifNotIn(dontComplete, completeFromList(completions))\n }),\n javascriptLanguage.data.of({\n autocomplete: localCompletionSource\n }),\n config.jsx ? autoCloseTags : [],\n ]);\n}\nfunction findOpenTag(node) {\n for (;;) {\n if (node.name == \"JSXOpenTag\" || node.name == \"JSXSelfClosingTag\" || node.name == \"JSXFragmentTag\")\n return node;\n if (node.name == \"JSXEscape\" || !node.parent)\n return null;\n node = node.parent;\n }\n}\nfunction elementName(doc, tree, max = doc.length) {\n for (let ch = tree === null || tree === void 0 ? void 0 : tree.firstChild; ch; ch = ch.nextSibling) {\n if (ch.name == \"JSXIdentifier\" || ch.name == \"JSXBuiltin\" || ch.name == \"JSXNamespacedName\" ||\n ch.name == \"JSXMemberExpression\")\n return doc.sliceString(ch.from, Math.min(ch.to, max));\n }\n return \"\";\n}\nconst android = typeof navigator == \"object\" && /*@__PURE__*//Android\\b/.test(navigator.userAgent);\n/**\nExtension that will automatically insert JSX close tags when a `>` or\n`/` is typed.\n*/\nconst autoCloseTags = /*@__PURE__*/EditorView.inputHandler.of((view, from, to, text, defaultInsert) => {\n if ((android ? view.composing : view.compositionStarted) || view.state.readOnly ||\n from != to || (text != \">\" && text != \"/\") ||\n !javascriptLanguage.isActiveAt(view.state, from, -1))\n return false;\n let base = defaultInsert(), { state } = base;\n let closeTags = state.changeByRange(range => {\n var _a;\n let { head } = range, around = syntaxTree(state).resolveInner(head - 1, -1), name;\n if (around.name == \"JSXStartTag\")\n around = around.parent;\n if (state.doc.sliceString(head - 1, head) != text || around.name == \"JSXAttributeValue\" && around.to > head) ;\n else if (text == \">\" && around.name == \"JSXFragmentTag\") {\n return { range, changes: { from: head, insert: `</>` } };\n }\n else if (text == \"/\" && around.name == \"JSXStartCloseTag\") {\n let empty = around.parent, base = empty.parent;\n if (base && empty.from == head - 2 &&\n ((name = elementName(state.doc, base.firstChild, head)) || ((_a = base.firstChild) === null || _a === void 0 ? void 0 : _a.name) == \"JSXFragmentTag\")) {\n let insert = `${name}>`;\n return { range: EditorSelection.cursor(head + insert.length, -1), changes: { from: head, insert } };\n }\n }\n else if (text == \">\") {\n let openTag = findOpenTag(around);\n if (openTag && openTag.name == \"JSXOpenTag\" &&\n !/^\\/?>|^<\\//.test(state.doc.sliceString(head, head + 2)) &&\n (name = elementName(state.doc, openTag, head)))\n return { range, changes: { from: head, insert: `</${name}>` } };\n }\n return { range };\n });\n if (closeTags.changes.empty)\n return false;\n view.dispatch([\n base,\n state.update(closeTags, { userEvent: \"input.complete\", scrollIntoView: true })\n ]);\n return true;\n});\n\n/**\nConnects an [ESLint](https://eslint.org/) linter to CodeMirror's\n[lint](https://codemirror.net/6/docs/ref/#lint) integration. `eslint` should be an instance of the\n[`Linter`](https://eslint.org/docs/developer-guide/nodejs-api#linter)\nclass, and `config` an optional ESLint configuration. The return\nvalue of this function can be passed to [`linter`](https://codemirror.net/6/docs/ref/#lint.linter)\nto create a JavaScript linting extension.\n\nNote that ESLint targets node, and is tricky to run in the\nbrowser. The\n[eslint-linter-browserify](https://github.com/UziTech/eslint-linter-browserify)\npackage may help with that (see\n[example](https://github.com/UziTech/eslint-linter-browserify/blob/master/example/script.js)).\n*/\nfunction esLint(eslint, config) {\n if (!config) {\n config = {\n parserOptions: { ecmaVersion: 2019, sourceType: \"module\" },\n env: { browser: true, node: true, es6: true, es2015: true, es2017: true, es2020: true },\n rules: {}\n };\n eslint.getRules().forEach((desc, name) => {\n var _a;\n if ((_a = desc.meta.docs) === null || _a === void 0 ? void 0 : _a.recommended)\n config.rules[name] = 2;\n });\n }\n return (view) => {\n let { state } = view, found = [];\n for (let { from, to } of javascriptLanguage.findRegions(state)) {\n let fromLine = state.doc.lineAt(from), offset = { line: fromLine.number - 1, col: from - fromLine.from, pos: from };\n for (let d of eslint.verify(state.sliceDoc(from, to), config))\n found.push(translateDiagnostic(d, state.doc, offset));\n }\n return found;\n };\n}\nfunction mapPos(line, col, doc, offset) {\n return doc.line(line + offset.line).from + col + (line == 1 ? offset.col - 1 : -1);\n}\nfunction translateDiagnostic(input, doc, offset) {\n let start = mapPos(input.line, input.column, doc, offset);\n let result = {\n from: start,\n to: input.endLine != null && input.endColumn != 1 ? mapPos(input.endLine, input.endColumn, doc, offset) : start,\n message: input.message,\n source: input.ruleId ? \"eslint:\" + input.ruleId : \"eslint\",\n severity: input.severity == 1 ? \"warning\" : \"error\",\n };\n if (input.fix) {\n let { range, text } = input.fix, from = range[0] + offset.pos - start, to = range[1] + offset.pos - start;\n result.actions = [{\n name: \"fix\",\n apply(view, start) {\n view.dispatch({ changes: { from: start + from, to: start + to, insert: text }, scrollIntoView: true });\n }\n }];\n }\n return result;\n}\n\nexport { autoCloseTags, completionPath, esLint, javascript, javascriptLanguage, jsxLanguage, localCompletionSource, scopeCompletionSource, snippets, tsxLanguage, typescriptLanguage, typescriptSnippets };\n","import { parser, configureNesting } from '@lezer/html';\nimport { cssLanguage, css } from '@codemirror/lang-css';\nimport { javascriptLanguage, typescriptLanguage, jsxLanguage, tsxLanguage, javascript } from '@codemirror/lang-javascript';\nimport { EditorView } from '@codemirror/view';\nimport { EditorSelection } from '@codemirror/state';\nimport { syntaxTree, LRLanguage, indentNodeProp, foldNodeProp, bracketMatchingHandle, LanguageSupport } from '@codemirror/language';\n\nconst Targets = [\"_blank\", \"_self\", \"_top\", \"_parent\"];\nconst Charsets = [\"ascii\", \"utf-8\", \"utf-16\", \"latin1\", \"latin1\"];\nconst Methods = [\"get\", \"post\", \"put\", \"delete\"];\nconst Encs = [\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"];\nconst Bool = [\"true\", \"false\"];\nconst S = {}; // Empty tag spec\nconst Tags = {\n a: {\n attrs: {\n href: null, ping: null, type: null,\n media: null,\n target: Targets,\n hreflang: null\n }\n },\n abbr: S,\n address: S,\n area: {\n attrs: {\n alt: null, coords: null, href: null, target: null, ping: null,\n media: null, hreflang: null, type: null,\n shape: [\"default\", \"rect\", \"circle\", \"poly\"]\n }\n },\n article: S,\n aside: S,\n audio: {\n attrs: {\n src: null, mediagroup: null,\n crossorigin: [\"anonymous\", \"use-credentials\"],\n preload: [\"none\", \"metadata\", \"auto\"],\n autoplay: [\"autoplay\"],\n loop: [\"loop\"],\n controls: [\"controls\"]\n }\n },\n b: S,\n base: { attrs: { href: null, target: Targets } },\n bdi: S,\n bdo: S,\n blockquote: { attrs: { cite: null } },\n body: S,\n br: S,\n button: {\n attrs: {\n form: null, formaction: null, name: null, value: null,\n autofocus: [\"autofocus\"],\n disabled: [\"autofocus\"],\n formenctype: Encs,\n formmethod: Methods,\n formnovalidate: [\"novalidate\"],\n formtarget: Targets,\n type: [\"submit\", \"reset\", \"button\"]\n }\n },\n canvas: { attrs: { width: null, height: null } },\n caption: S,\n center: S,\n cite: S,\n code: S,\n col: { attrs: { span: null } },\n colgroup: { attrs: { span: null } },\n command: {\n attrs: {\n type: [\"command\", \"checkbox\", \"radio\"],\n label: null, icon: null, radiogroup: null, command: null, title: null,\n disabled: [\"disabled\"],\n checked: [\"checked\"]\n }\n },\n data: { attrs: { value: null } },\n datagrid: { attrs: { disabled: [\"disabled\"], multiple: [\"multiple\"] } },\n datalist: { attrs: { data: null } },\n dd: S,\n del: { attrs: { cite: null, datetime: null } },\n details: { attrs: { open: [\"open\"] } },\n dfn: S,\n div: S,\n dl: S,\n dt: S,\n em: S,\n embed: { attrs: { src: null, type: null, width: null, height: null } },\n eventsource: { attrs: { src: null } },\n fieldset: { attrs: { disabled: [\"disabled\"], form: null, name: null } },\n figcaption: S,\n figure: S,\n footer: S,\n form: {\n attrs: {\n action: null, name: null,\n \"accept-charset\": Charsets,\n autocomplete: [\"on\", \"off\"],\n enctype: Encs,\n method: Methods,\n novalidate: [\"novalidate\"],\n target: Targets\n }\n },\n h1: S, h2: S, h3: S, h4: S, h5: S, h6: S,\n head: {\n children: [\"title\", \"base\", \"link\", \"style\", \"meta\", \"script\", \"noscript\", \"command\"]\n },\n header: S,\n hgroup: S,\n hr: S,\n html: {\n attrs: { manifest: null }\n },\n i: S,\n iframe: {\n attrs: {\n src: null, srcdoc: null, name: null, width: null, height: null,\n sandbox: [\"allow-top-navigation\", \"allow-same-origin\", \"allow-forms\", \"allow-scripts\"],\n seamless: [\"seamless\"]\n }\n },\n img: {\n attrs: {\n alt: null, src: null, ismap: null, usemap: null, width: null, height: null,\n crossorigin: [\"anonymous\", \"use-credentials\"]\n }\n },\n input: {\n attrs: {\n alt: null, dirname: null, form: null, formaction: null,\n height: null, list: null, max: null, maxlength: null, min: null,\n name: null, pattern: null, placeholder: null, size: null, src: null,\n step: null, value: null, width: null,\n accept: [\"audio/*\", \"video/*\", \"image/*\"],\n autocomplete: [\"on\", \"off\"],\n autofocus: [\"autofocus\"],\n checked: [\"checked\"],\n disabled: [\"disabled\"],\n formenctype: Encs,\n formmethod: Methods,\n formnovalidate: [\"novalidate\"],\n formtarget: Targets,\n multiple: [\"multiple\"],\n readonly: [\"readonly\"],\n required: [\"required\"],\n type: [\"hidden\", \"text\", \"search\", \"tel\", \"url\", \"email\", \"password\", \"datetime\", \"date\", \"month\",\n \"week\", \"time\", \"datetime-local\", \"number\", \"range\", \"color\", \"checkbox\", \"radio\",\n \"file\", \"submit\", \"image\", \"reset\", \"button\"]\n }\n },\n ins: { attrs: { cite: null, datetime: null } },\n kbd: S,\n keygen: {\n attrs: {\n challenge: null, form: null, name: null,\n autofocus: [\"autofocus\"],\n disabled: [\"disabled\"],\n keytype: [\"RSA\"]\n }\n },\n label: { attrs: { for: null, form: null } },\n legend: S,\n li: { attrs: { value: null } },\n link: {\n attrs: {\n href: null, type: null,\n hreflang: null,\n media: null,\n sizes: [\"all\", \"16x16\", \"16x16 32x32\", \"16x16 32x32 64x64\"]\n }\n },\n map: { attrs: { name: null } },\n mark: S,\n menu: { attrs: { label: null, type: [\"list\", \"context\", \"toolbar\"] } },\n meta: {\n attrs: {\n content: null,\n charset: Charsets,\n name: [\"viewport\", \"application-name\", \"author\", \"description\", \"generator\", \"keywords\"],\n \"http-equiv\": [\"content-language\", \"content-type\", \"default-style\", \"refresh\"]\n }\n },\n meter: { attrs: { value: null, min: null, low: null, high: null, max: null, optimum: null } },\n nav: S,\n noscript: S,\n object: {\n attrs: {\n data: null, type: null, name: null, usemap: null, form: null, width: null, height: null,\n typemustmatch: [\"typemustmatch\"]\n }\n },\n ol: { attrs: { reversed: [\"reversed\"], start: null, type: [\"1\", \"a\", \"A\", \"i\", \"I\"] },\n children: [\"li\", \"script\", \"template\", \"ul\", \"ol\"] },\n optgroup: { attrs: { disabled: [\"disabled\"], label: null } },\n option: { attrs: { disabled: [\"disabled\"], label: null, selected: [\"selected\"], value: null } },\n output: { attrs: { for: null, form: null, name: null } },\n p: S,\n param: { attrs: { name: null, value: null } },\n pre: S,\n progress: { attrs: { value: null, max: null } },\n q: { attrs: { cite: null } },\n rp: S,\n rt: S,\n ruby: S,\n samp: S,\n script: {\n attrs: {\n type: [\"text/javascript\"],\n src: null,\n async: [\"async\"],\n defer: [\"defer\"],\n charset: Charsets\n }\n },\n section: S,\n select: {\n attrs: {\n form: null, name: null, size: null,\n autofocus: [\"autofocus\"],\n disabled: [\"disabled\"],\n multiple: [\"multiple\"]\n }\n },\n slot: { attrs: { name: null } },\n small: S,\n source: { attrs: { src: null, type: null, media: null } },\n span: S,\n strong: S,\n style: {\n attrs: {\n type: [\"text/css\"],\n media: null,\n scoped: null\n }\n },\n sub: S,\n summary: S,\n sup: S,\n table: S,\n tbody: S,\n td: { attrs: { colspan: null, rowspan: null, headers: null } },\n template: S,\n textarea: {\n attrs: {\n dirname: null, form: null, maxlength: null, name: null, placeholder: null,\n rows: null, cols: null,\n autofocus: [\"autofocus\"],\n disabled: [\"disabled\"],\n readonly: [\"readonly\"],\n required: [\"required\"],\n wrap: [\"soft\", \"hard\"]\n }\n },\n tfoot: S,\n th: { attrs: { colspan: null, rowspan: null, headers: null, scope: [\"row\", \"col\", \"rowgroup\", \"colgroup\"] } },\n thead: S,\n time: { attrs: { datetime: null } },\n title: S,\n tr: S,\n track: {\n attrs: {\n src: null, label: null, default: null,\n kind: [\"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\"],\n srclang: null\n }\n },\n ul: { children: [\"li\", \"script\", \"template\", \"ul\", \"ol\"] },\n var: S,\n video: {\n attrs: {\n src: null, poster: null, width: null, height: null,\n crossorigin: [\"anonymous\", \"use-credentials\"],\n preload: [\"auto\", \"metadata\", \"none\"],\n autoplay: [\"autoplay\"],\n mediagroup: [\"movie\"],\n muted: [\"muted\"],\n controls: [\"controls\"]\n }\n },\n wbr: S\n};\nconst GlobalAttrs = {\n accesskey: null,\n class: null,\n contenteditable: Bool,\n contextmenu: null,\n dir: [\"ltr\", \"rtl\", \"auto\"],\n draggable: [\"true\", \"false\", \"auto\"],\n dropzone: [\"copy\", \"move\", \"link\", \"string:\", \"file:\"],\n hidden: [\"hidden\"],\n id: null,\n inert: [\"inert\"],\n itemid: null,\n itemprop: null,\n itemref: null,\n itemscope: [\"itemscope\"],\n itemtype: null,\n lang: [\"ar\", \"bn\", \"de\", \"en-GB\", \"en-US\", \"es\", \"fr\", \"hi\", \"id\", \"ja\", \"pa\", \"pt\", \"ru\", \"tr\", \"zh\"],\n spellcheck: Bool,\n autocorrect: Bool,\n autocapitalize: Bool,\n style: null,\n tabindex: null,\n title: null,\n translate: [\"yes\", \"no\"],\n rel: [\"stylesheet\", \"alternate\", \"author\", \"bookmark\", \"help\", \"license\", \"next\", \"nofollow\", \"noreferrer\", \"prefetch\", \"prev\", \"search\", \"tag\"],\n role: /*@__PURE__*/\"alert application article banner button cell checkbox complementary contentinfo dialog document feed figure form grid gridcell heading img list listbox listitem main navigation region row rowgroup search switch tab table tabpanel textbox timer\".split(\" \"),\n \"aria-activedescendant\": null,\n \"aria-atomic\": Bool,\n \"aria-autocomplete\": [\"inline\", \"list\", \"both\", \"none\"],\n \"aria-busy\": Bool,\n \"aria-checked\": [\"true\", \"false\", \"mixed\", \"undefined\"],\n \"aria-controls\": null,\n \"aria-describedby\": null,\n \"aria-disabled\": Bool,\n \"aria-dropeffect\": null,\n \"aria-expanded\": [\"true\", \"false\", \"undefined\"],\n \"aria-flowto\": null,\n \"aria-grabbed\": [\"true\", \"false\", \"undefined\"],\n \"aria-haspopup\": Bool,\n \"aria-hidden\": Bool,\n \"aria-invalid\": [\"true\", \"false\", \"grammar\", \"spelling\"],\n \"aria-label\": null,\n \"aria-labelledby\": null,\n \"aria-level\": null,\n \"aria-live\": [\"off\", \"polite\", \"assertive\"],\n \"aria-multiline\": Bool,\n \"aria-multiselectable\": Bool,\n \"aria-owns\": null,\n \"aria-posinset\": null,\n \"aria-pressed\": [\"true\", \"false\", \"mixed\", \"undefined\"],\n \"aria-readonly\": Bool,\n \"aria-relevant\": null,\n \"aria-required\": Bool,\n \"aria-selected\": [\"true\", \"false\", \"undefined\"],\n \"aria-setsize\": null,\n \"aria-sort\": [\"ascending\", \"descending\", \"none\", \"other\"],\n \"aria-valuemax\": null,\n \"aria-valuemin\": null,\n \"aria-valuenow\": null,\n \"aria-valuetext\": null\n};\nconst eventAttributes = /*@__PURE__*/(\"beforeunload copy cut dragstart dragover dragleave dragenter dragend \" +\n \"drag paste focus blur change click load mousedown mouseenter mouseleave \" +\n \"mouseup keydown keyup resize scroll unload\").split(\" \").map(n => \"on\" + n);\nfor (let a of eventAttributes)\n GlobalAttrs[a] = null;\nclass Schema {\n constructor(extraTags, extraAttrs) {\n this.tags = { ...Tags, ...extraTags };\n this.globalAttrs = { ...GlobalAttrs, ...extraAttrs };\n this.allTags = Object.keys(this.tags);\n this.globalAttrNames = Object.keys(this.globalAttrs);\n }\n}\nSchema.default = /*@__PURE__*/new Schema;\nfunction elementName(doc, tree, max = doc.length) {\n if (!tree)\n return \"\";\n let tag = tree.firstChild;\n let name = tag && tag.getChild(\"TagName\");\n return name ? doc.sliceString(name.from, Math.min(name.to, max)) : \"\";\n}\nfunction findParentElement(tree, skip = false) {\n for (; tree; tree = tree.parent)\n if (tree.name == \"Element\") {\n if (skip)\n skip = false;\n else\n return tree;\n }\n return null;\n}\nfunction allowedChildren(doc, tree, schema) {\n let parentInfo = schema.tags[elementName(doc, findParentElement(tree))];\n return (parentInfo === null || parentInfo === void 0 ? void 0 : parentInfo.children) || schema.allTags;\n}\nfunction openTags(doc, tree) {\n let open = [];\n for (let parent = findParentElement(tree); parent && !parent.type.isTop; parent = findParentElement(parent.parent)) {\n let tagName = elementName(doc, parent);\n if (tagName && parent.lastChild.name == \"CloseTag\")\n break;\n if (tagName && open.indexOf(tagName) < 0 && (tree.name == \"EndTag\" || tree.from >= parent.firstChild.to))\n open.push(tagName);\n }\n return open;\n}\nconst identifier = /^[:\\-\\.\\w\\u00b7-\\uffff]*$/;\nfunction completeTag(state, schema, tree, from, to) {\n let end = /\\s*>/.test(state.sliceDoc(to, to + 5)) ? \"\" : \">\";\n let parent = findParentElement(tree, tree.name == \"StartTag\" || tree.name == \"TagName\");\n return { from, to,\n options: allowedChildren(state.doc, parent, schema).map(tagName => ({ label: tagName, type: \"type\" })).concat(openTags(state.doc, tree).map((tag, i) => ({ label: \"/\" + tag, apply: \"/\" + tag + end,\n type: \"type\", boost: 99 - i }))),\n validFor: /^\\/?[:\\-\\.\\w\\u00b7-\\uffff]*$/ };\n}\nfunction completeCloseTag(state, tree, from, to) {\n let end = /\\s*>/.test(state.sliceDoc(to, to + 5)) ? \"\" : \">\";\n return { from, to,\n options: openTags(state.doc, tree).map((tag, i) => ({ label: tag, apply: tag + end, type: \"type\", boost: 99 - i })),\n validFor: identifier };\n}\nfunction completeStartTag(state, schema, tree, pos) {\n let options = [], level = 0;\n for (let tagName of allowedChildren(state.doc, tree, schema))\n options.push({ label: \"<\" + tagName, type: \"type\" });\n for (let open of openTags(state.doc, tree))\n options.push({ label: \"</\" + open + \">\", type: \"type\", boost: 99 - level++ });\n return { from: pos, to: pos, options, validFor: /^<\\/?[:\\-\\.\\w\\u00b7-\\uffff]*$/ };\n}\nfunction completeAttrName(state, schema, tree, from, to) {\n let elt = findParentElement(tree), info = elt ? schema.tags[elementName(state.doc, elt)] : null;\n let localAttrs = info && info.attrs ? Object.keys(info.attrs) : [];\n let names = info && info.globalAttrs === false ? localAttrs\n : localAttrs.length ? localAttrs.concat(schema.globalAttrNames) : schema.globalAttrNames;\n return { from, to,\n options: names.map(attrName => ({ label: attrName, type: \"property\" })),\n validFor: identifier };\n}\nfunction completeAttrValue(state, schema, tree, from, to) {\n var _a;\n let nameNode = (_a = tree.parent) === null || _a === void 0 ? void 0 : _a.getChild(\"AttributeName\");\n let options = [], token = undefined;\n if (nameNode) {\n let attrName = state.sliceDoc(nameNode.from, nameNode.to);\n let attrs = schema.globalAttrs[attrName];\n if (!attrs) {\n let elt = findParentElement(tree), info = elt ? schema.tags[elementName(state.doc, elt)] : null;\n attrs = (info === null || info === void 0 ? void 0 : info.attrs) && info.attrs[attrName];\n }\n if (attrs) {\n let base = state.sliceDoc(from, to).toLowerCase(), quoteStart = '\"', quoteEnd = '\"';\n if (/^['\"]/.test(base)) {\n token = base[0] == '\"' ? /^[^\"]*$/ : /^[^']*$/;\n quoteStart = \"\";\n quoteEnd = state.sliceDoc(to, to + 1) == base[0] ? \"\" : base[0];\n base = base.slice(1);\n from++;\n }\n else {\n token = /^[^\\s<>='\"]*$/;\n }\n for (let value of attrs)\n options.push({ label: value, apply: quoteStart + value + quoteEnd, type: \"constant\" });\n }\n }\n return { from, to, options, validFor: token };\n}\nfunction htmlCompletionFor(schema, context) {\n let { state, pos } = context, tree = syntaxTree(state).resolveInner(pos, -1), around = tree.resolve(pos);\n for (let scan = pos, before; around == tree && (before = tree.childBefore(scan));) {\n let last = before.lastChild;\n if (!last || !last.type.isError || last.from < last.to)\n break;\n around = tree = before;\n scan = last.from;\n }\n if (tree.name == \"TagName\") {\n return tree.parent && /CloseTag$/.test(tree.parent.name) ? completeCloseTag(state, tree, tree.from, pos)\n : completeTag(state, schema, tree, tree.from, pos);\n }\n else if (tree.name == \"StartTag\" || tree.name == \"IncompleteTag\") {\n return completeTag(state, schema, tree, pos, pos);\n }\n else if (tree.name == \"StartCloseTag\" || tree.name == \"IncompleteCloseTag\") {\n return completeCloseTag(state, tree, pos, pos);\n }\n else if (tree.name == \"OpenTag\" || tree.name == \"SelfClosingTag\" || tree.name == \"AttributeName\") {\n return completeAttrName(state, schema, tree, tree.name == \"AttributeName\" ? tree.from : pos, pos);\n }\n else if (tree.name == \"Is\" || tree.name == \"AttributeValue\" || tree.name == \"UnquotedAttributeValue\") {\n return completeAttrValue(state, schema, tree, tree.name == \"Is\" ? pos : tree.from, pos);\n }\n else if (context.explicit && (around.name == \"Element\" || around.name == \"Text\" || around.name == \"Document\")) {\n return completeStartTag(state, schema, tree, pos);\n }\n else {\n return null;\n }\n}\n/**\nHTML tag completion. Opens and closes tags and attributes in a\ncontext-aware way.\n*/\nfunction htmlCompletionSource(context) {\n return htmlCompletionFor(Schema.default, context);\n}\n/**\nCreate a completion source for HTML extended with additional tags\nor attributes.\n*/\nfunction htmlCompletionSourceWith(config) {\n let { extraTags, extraGlobalAttributes: extraAttrs } = config;\n let schema = extraAttrs || extraTags ? new Schema(extraTags, extraAttrs) : Schema.default;\n return (context) => htmlCompletionFor(schema, context);\n}\n\nconst jsonParser = /*@__PURE__*/javascriptLanguage.parser.configure({ top: \"SingleExpression\" });\nconst defaultNesting = [\n { tag: \"script\",\n attrs: attrs => attrs.type == \"text/typescript\" || attrs.lang == \"ts\",\n parser: typescriptLanguage.parser },\n { tag: \"script\",\n attrs: attrs => attrs.type == \"text/babel\" || attrs.type == \"text/jsx\",\n parser: jsxLanguage.parser },\n { tag: \"script\",\n attrs: attrs => attrs.type == \"text/typescript-jsx\",\n parser: tsxLanguage.parser },\n { tag: \"script\",\n attrs(attrs) {\n return /^(importmap|speculationrules|application\\/(.+\\+)?json)$/i.test(attrs.type);\n },\n parser: jsonParser },\n { tag: \"script\",\n attrs(attrs) {\n return !attrs.type || /^(?:text|application)\\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(attrs.type);\n },\n parser: javascriptLanguage.parser },\n { tag: \"style\",\n attrs(attrs) {\n return (!attrs.lang || attrs.lang == \"css\") && (!attrs.type || /^(text\\/)?(x-)?(stylesheet|css)$/i.test(attrs.type));\n },\n parser: cssLanguage.parser }\n];\nconst defaultAttrs = /*@__PURE__*/[\n { name: \"style\",\n parser: /*@__PURE__*/cssLanguage.parser.configure({ top: \"Styles\" }) }\n].concat(/*@__PURE__*/eventAttributes.map(name => ({ name, parser: javascriptLanguage.parser })));\nconst htmlPlain = /*@__PURE__*/LRLanguage.define({\n name: \"html\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n Element(context) {\n let after = /^(\\s*)(<\\/)?/.exec(context.textAfter);\n if (context.node.to <= context.pos + after[0].length)\n return context.continue();\n return context.lineIndent(context.node.from) + (after[2] ? 0 : context.unit);\n },\n \"OpenTag CloseTag SelfClosingTag\"(context) {\n return context.column(context.node.from) + context.unit;\n },\n Document(context) {\n if (context.pos + /\\s*/.exec(context.textAfter)[0].length < context.node.to)\n return context.continue();\n let endElt = null, close;\n for (let cur = context.node;;) {\n let last = cur.lastChild;\n if (!last || last.name != \"Element\" || last.to != cur.to)\n break;\n endElt = cur = last;\n }\n if (endElt && !((close = endElt.lastChild) && (close.name == \"CloseTag\" || close.name == \"SelfClosingTag\")))\n return context.lineIndent(endElt.from) + context.unit;\n return null;\n }\n }),\n /*@__PURE__*/foldNodeProp.add({\n Element(node) {\n let first = node.firstChild, last = node.lastChild;\n if (!first || first.name != \"OpenTag\")\n return null;\n return { from: first.to, to: last.name == \"CloseTag\" ? last.from : node.to };\n }\n }),\n /*@__PURE__*/bracketMatchingHandle.add({\n \"OpenTag CloseTag\": node => node.getChild(\"TagName\")\n })\n ]\n }),\n languageData: {\n commentTokens: { block: { open: \"<!--\", close: \"-->\" } },\n indentOnInput: /^\\s*<\\/\\w+\\W$/,\n wordChars: \"-_\"\n }\n});\n/**\nA language provider based on the [Lezer HTML\nparser](https://github.com/lezer-parser/html), extended with the\nJavaScript and CSS parsers to parse the content of `<script>` and\n`<style>` tags.\n*/\nconst htmlLanguage = /*@__PURE__*/htmlPlain.configure({\n wrap: /*@__PURE__*/configureNesting(defaultNesting, defaultAttrs)\n});\n/**\nLanguage support for HTML, including\n[`htmlCompletion`](https://codemirror.net/6/docs/ref/#lang-html.htmlCompletion) and JavaScript and\nCSS support extensions.\n*/\nfunction html(config = {}) {\n let dialect = \"\", wrap;\n if (config.matchClosingTags === false)\n dialect = \"noMatch\";\n if (config.selfClosingTags === true)\n dialect = (dialect ? dialect + \" \" : \"\") + \"selfClosing\";\n if (config.nestedLanguages && config.nestedLanguages.length ||\n config.nestedAttributes && config.nestedAttributes.length)\n wrap = configureNesting((config.nestedLanguages || []).concat(defaultNesting), (config.nestedAttributes || []).concat(defaultAttrs));\n let lang = wrap ? htmlPlain.configure({ wrap, dialect }) : dialect ? htmlLanguage.configure({ dialect }) : htmlLanguage;\n return new LanguageSupport(lang, [\n htmlLanguage.data.of({ autocomplete: htmlCompletionSourceWith(config) }),\n config.autoCloseTags !== false ? autoCloseTags : [],\n javascript().support,\n css().support\n ]);\n}\nconst selfClosers = /*@__PURE__*/new Set(/*@__PURE__*/\"area base br col command embed frame hr img input keygen link meta param source track wbr menuitem\".split(\" \"));\n/**\nExtension that will automatically insert close tags when a `>` or\n`/` is typed.\n*/\nconst autoCloseTags = /*@__PURE__*/EditorView.inputHandler.of((view, from, to, text, insertTransaction) => {\n if (view.composing || view.state.readOnly || from != to || (text != \">\" && text != \"/\") ||\n !htmlLanguage.isActiveAt(view.state, from, -1))\n return false;\n let base = insertTransaction(), { state } = base;\n let closeTags = state.changeByRange(range => {\n var _a, _b, _c;\n let didType = state.doc.sliceString(range.from - 1, range.to) == text;\n let { head } = range, after = syntaxTree(state).resolveInner(head, -1), name;\n if (didType && text == \">\" && after.name == \"EndTag\") {\n let tag = after.parent;\n if (((_b = (_a = tag.parent) === null || _a === void 0 ? void 0 : _a.lastChild) === null || _b === void 0 ? void 0 : _b.name) != \"CloseTag\" &&\n (name = elementName(state.doc, tag.parent, head)) &&\n !selfClosers.has(name)) {\n let to = head + (state.doc.sliceString(head, head + 1) === \">\" ? 1 : 0);\n let insert = `</${name}>`;\n return { range, changes: { from: head, to, insert } };\n }\n }\n else if (didType && text == \"/\" && after.name == \"IncompleteCloseTag\") {\n let tag = after.parent;\n if (after.from == head - 2 && ((_c = tag.lastChild) === null || _c === void 0 ? void 0 : _c.name) != \"CloseTag\" &&\n (name = elementName(state.doc, tag, head)) && !selfClosers.has(name)) {\n let to = head + (state.doc.sliceString(head, head + 1) === \">\" ? 1 : 0);\n let insert = `${name}>`;\n return {\n range: EditorSelection.cursor(head + insert.length, -1),\n changes: { from: head, to, insert }\n };\n }\n }\n return { range };\n });\n if (closeTags.changes.empty)\n return false;\n view.dispatch([\n base,\n state.update(closeTags, {\n userEvent: \"input.complete\",\n scrollIntoView: true\n })\n ]);\n return true;\n});\n\nexport { autoCloseTags, html, htmlCompletionSource, htmlCompletionSourceWith, htmlLanguage };\n","import { basicSetup, EditorView } from \"codemirror\";\nimport { css as langCss } from \"@codemirror/lang-css\";\nimport { html as langHtml } from \"@codemirror/lang-html\";\nimport { javascript as langJs } from \"@codemirror/lang-javascript\";\nimport { autocompletion } from \"@codemirror/autocomplete\";\n\nimport * as TID from \"@atcute/tid\";\n\nimport * as CID from \"~/common/cid.js\";\nimport * as Output from \"~/common/output.js\";\nimport { facetFromURI } from \"~/common/facets/utils.js\";\nimport { loadURI } from \"~/common/loader.js\";\nimport { signal } from \"~/common/signal.js\";\n\nimport { saveFacet } from \"./crud.js\";\nimport { output } from \"./output.js\";\n\n/**\n * @import {Facet} from \"~/definitions/types.d.ts\"\n */\n\nconst $editor = signal(/** @type {EditorView | null} */ (null));\nconst $editingFacet = signal(/** @type {Facet | null} */ (null));\n\n////////////////////////////////////////////\n// LOADING\n////////////////////////////////////////////\n\nconst LOADING_EL_ID = \"editor-loading\";\n\n/**\n * @param {boolean} loading\n */\nfunction setEditorLoading(loading) {\n const container = /** @type {HTMLElement | null} */ (\n document.querySelector(\"#html-input-container\")\n );\n if (!container) return;\n\n if (loading) {\n if (document.getElementById(LOADING_EL_ID)) return;\n const el = document.createElement(\"div\");\n el.id = LOADING_EL_ID;\n el.className = \"with-icon\";\n el.style.fontSize = \"var(--fs-sm)\";\n el.innerHTML = '<i class=\"ph-bold ph-spinner animate-spin\"></i> Loading…';\n container.before(el);\n container.hidden = true;\n } else {\n document.getElementById(LOADING_EL_ID)?.remove();\n container.hidden = false;\n }\n}\n\n////////////////////////////////////////////\n// EDITOR\n////////////////////////////////////////////\n\nexport function renderEditor() {\n // Code editor\n const editorContainer = document.body.querySelector(\"#html-input-container\");\n if (!editorContainer) throw new Error(\"Editor container not found\");\n\n const editor = new EditorView({\n parent: editorContainer,\n doc: `\n<style>\n @import \"./styles/base.css\";\n</style>\n\n<script type=\"module\">\n import foundation from \"~/common/foundation.js\";\n</script>\n `.trim(),\n extensions: [\n basicSetup,\n langHtml(),\n langCss(),\n langJs(),\n autocompletion(),\n ],\n });\n\n $editor.value = editor;\n return editor;\n}\n\n////////////////////////////////////////////\n// FORM\n////////////////////////////////////////////\n\n/**\n * @param {EditorView} editor\n */\nconst onBuildSubmit = (editor) =>\n/**\n * @param {Event} event\n */\nasync (event) => {\n event.preventDefault();\n\n const nameEl = /** @type {HTMLInputElement | null} */ (document.querySelector(\n \"#name-input\",\n ));\n\n const descriptionEl = /** @type {HTMLTextAreaElement | null} */ (\n document.querySelector(\"#description-input\")\n );\n\n const kindEl = /** @type {HTMLSelectElement | null} */ (\n document.querySelector(\"#kind-input\")\n );\n\n const html = editor.state.doc.toString();\n const cid = await CID.create(0x55, new TextEncoder().encode(html));\n const name = nameEl?.value ?? \"nameless\";\n const description = descriptionEl?.value ?? \"\";\n const kind =\n /** @type {\"interactive\" | \"prelude\"} */ (kindEl?.value ?? \"interactive\");\n\n /** @type {Facet} */\n const facet = $editingFacet.value\n ? {\n ...$editingFacet.value,\n cid,\n description,\n html,\n kind,\n name,\n }\n : {\n $type: \"sh.diffuse.output.facet\",\n id: TID.now(),\n cid,\n description,\n html,\n kind,\n name,\n };\n\n switch (/** @type {any} */ (event).submitter.name) {\n case \"save\":\n await saveFacet(facet);\n break;\n case \"save+open\":\n await saveFacet(facet);\n globalThis.open(`./l/?id=${facet.id}`, \"blank\");\n break;\n }\n};\n\n/**\n * @param {Facet} ogFacet\n */\nasync function editFacet(ogFacet) {\n const facet = { ...ogFacet };\n const nameEl = /** @type {HTMLInputElement | null} */ (document.querySelector(\n \"#name-input\",\n ));\n\n const descriptionEl = /** @type {HTMLTextAreaElement | null} */ (\n document.querySelector(\"#description-input\")\n );\n\n const kindEl = /** @type {HTMLSelectElement | null} */ (\n document.querySelector(\"#kind-input\")\n );\n\n if (!nameEl) return;\n\n // Reset url — remove `id` param if not matching the facet\n const url = new URL(location.href);\n const id = url.searchParams.get(\"id\");\n\n if (id && facet.id !== id) {\n url.searchParams.delete(\"id\");\n history.replaceState(null, \"\", url);\n }\n\n // Scroll to builder\n document.querySelector(\"#build\")?.scrollIntoView();\n\n // Make sure HTML is loaded\n if (!facet.html && facet.uri) {\n setEditorLoading(true);\n const html = await loadURI(facet.uri);\n const cid = await CID.create(0x55, new TextEncoder().encode(html));\n setEditorLoading(false);\n\n facet.html = html;\n facet.cid = cid;\n }\n\n $editingFacet.value = facet;\n nameEl.value = facet.name;\n\n if (kindEl) {\n kindEl.value = facet.kind ?? \"interactive\";\n }\n\n if (descriptionEl) {\n descriptionEl.value = facet.description ?? \"\";\n }\n\n const editor = $editor.value;\n editor?.dispatch({\n changes: { from: 0, to: editor.state.doc.length, insert: facet.html },\n });\n}\n\nexport function handleBuildFormSubmit() {\n const editor = $editor.value;\n if (!editor) return;\n\n document.querySelector(\"#build-form\")?.addEventListener(\n \"submit\",\n onBuildSubmit(editor),\n );\n}\n\n////////////////////////////////////////////\n// EDIT EXAMPLES\n////////////////////////////////////////////\n\nlet isListening = false;\n\nexport function listenForExamplesEdit() {\n if (isListening) return;\n isListening = true;\n\n document.body.addEventListener(\n \"click\",\n /**\n * @param {MouseEvent} event\n */\n async (event) => {\n const target = /** @type {HTMLElement} */ (event.target);\n const rel = target.getAttribute(\"rel\");\n if (!rel) return;\n\n const uri = target.closest(\"li\")?.getAttribute(\"data-uri\");\n if (!uri) return;\n\n const name = target.closest(\"li\")?.getAttribute(\"data-name\");\n if (!name) return;\n\n const kind = target.closest(\"li\")?.getAttribute(\"data-kind\") ?? undefined;\n\n switch (rel) {\n case \"edit\": {\n setEditorLoading(true);\n const facet = await facetFromURI({ kind, name, uri }, {\n fetchHTML: true,\n });\n setEditorLoading(false);\n editFacet(facet);\n document.querySelector(\"#build\")?.scrollIntoView();\n break;\n }\n }\n },\n );\n}\n\n////////////////////////////////////////////\n// EDIT FACET FROM URL\n////////////////////////////////////////////\n\nexport async function editFacetFromURL() {\n const idParam = new URLSearchParams(location.search).get(\"id\");\n\n if (idParam) {\n setEditorLoading(true);\n try {\n const out = await output();\n const col = await Output.data(out.facets);\n const facet = col.find((f) => f.id === idParam);\n if (facet) await editFacet(facet);\n } finally {\n setEditorLoading(false);\n }\n }\n}\n"],"mappings":"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","names":["rangeFrom","rangeTo","numbers","s","i","n","isExtendingChar","code","from","to","mid","__name","isRegionalIndicator","ZWJ","findClusterBreak","str","pos","forward","includeExtending","nextClusterBreak","prevClusterBreak","__name","surrogateLow","surrogateHigh","prev","codePointAt","codePointSize","next","isExtendingChar","isRegionalIndicator","countBefore","i","found","code0","code1","ch","code","Text","_Text","__name","pos","n","from","to","text","clip","parts","TextNode","other","start","end","a","RawTextCursor","b","skip","dir","PartialTextCursor","inner","LineCursor","lines","TextLeaf","_TextLeaf","length","textLength","target","isLine","line","offset","i","string","Line","open","sliceText","prev","joined","appendText","mid","newLen","lineSep","result","part","len","_TextNode","children","child","endLine","childOpen","updated","totalLines","copy","iA","iB","eA","eB","chA","chB","l","ch","flat","chunk","maxChunk","minChunk","chunked","currentLines","currentLen","currentChunk","add","last","node","flush","first","top","offsetValue","size","next","limit","value","done","lineBreak","number","findClusterBreak","str","forward","includeExtending","surrogateLow","surrogateHigh","codePointAt","code0","code1","fromCodePoint","code","codePointSize","DefaultSplit","MapMode","ChangeDesc","_ChangeDesc","sections","ins","f","posA","posB","individual","iterChanges","composeSets","before","mapSet","assoc","mode","endA","json","ChangeSet","_ChangeSet","inserted","doc","fromA","toA","fromB","_toB","index","ranges","resultSections","resultInserted","filteredSections","iter","SectionIter","addSection","addInsert","changes","total","force","set","process","spec","sub","insert","insText","insLen","e","forceJoin","values","desc","endB","setA","setB","mkSet","piece","left","sectionLen","insB","SelectionRange","_SelectionRange","flags","level","change","EditorSelection","head","includeAssoc","_EditorSelection","mainIndex","r","range","main","which","anchor","bidiLevel","goalColumn","checkSelection","selection","docLength","nextID","Facet","_Facet","combine","compareInput","compare","isStatic","enables","config","sameArray","FacetProvider","deps","get","field","x","state","dependencies","facet","type","addresses","_a","getter","id","idx","multi","depDoc","depSel","depAddrs","dep","tr","ensureAll","newVal","compareArray","oldState","oldAddr","oldVal","getAddr","StateField","addrs","changed","addr","ensureAddr","dynamicFacetSlot","providers","providerAddrs","p","providerTypes","dynamic","val","depChanged","oldProviders","oldValue","initField","_StateField","createF","updateF","compareF","init","oldInit","reInit","create","Prec_","prec","ext","PrecExtension","Prec","Compartment","_Compartment","CompartmentInstance","content","compartment","Configuration","_Configuration","base","compartments","dynamicSlots","address","staticValues","facets","fields","newCompartments","flatten","oldFacets","extension","seen","known","found","status","languageData","allowMultipleSelections","v","lineSeparator","changeFilter","transactionFilter","transactionExtender","readOnly","Annotation","AnnotationType","StateEffectType","map","StateEffect","_StateEffect","mapping","mapped","effects","effect","Transaction","_Transaction","startState","annotations","scrollIntoView","ann","event","joinRanges","mergeTransaction","sequential","mapForA","mapForB","resolveTransactionInner","docSize","sel","asArray","resolveTransaction","specs","filter","s","seq","extendTransaction","filterTransaction","back","filtered","filters","extenders","none","CharCategory","nonASCIISingleCaseWordChar","wordChar","hasWordChar","makeCategorizer","wordChars","char","EditorState","_EditorState","computeSlot","require","conf","key","startValues","slot","result1","newChanges","newMapped","j","mapBy","prop","fieldInit","configuration","phrase","m","name","side","provider","at","chars","cat","kA","kB","k","combineConfig","configs","defaults","current","RangeValue","Range","cmpVal","_Range","cmpRange","Chunk","_Chunk","maxPoint","startAt","arr","lo","hi","diff","newPos","curFrom","curTo","newFrom","newTo","RangeSet","_RangeSet","chunkPos","nextLayer","updateSpec","sort","filterFrom","filterTo","cur","LayerCursor","spill","builder","RangeSetBuilder","chunks","touch","HeapCursor","sets","oldSets","newSets","textDiff","comparator","minPointSize","sharedChunks","findSharedChunks","sideA","SpanCursor","sideB","sameValues","iterator","cursor","openRanges","active","openCount","build","lazySort","layer","_RangeSetBuilder","newArrays","inA","shared","minPoint","rank","rangeIndex","_HeapCursor","heap","heapBubble","childIndex","remove","findMinIndex","trackOpen","wasPoint","nextVal","startA","startB","dPos","bounds","boundChange","dEnd","clipEnd","array","foundPos","countColumn","tabSize","findColumn","col","strict","COUNT","SET","top","StyleModule","__name","spec","options","finish","splitSelector","selector","render","selectors","target","isKeyframes","local","isAt","keyframes","prop","value","part","sel","a","b","l","id","root","modules","set","nonce","StyleSet","adoptedSet","doc","win","adopted","sheet","pos","j","i","mod","index","k","text","base","shift","mac","ie","i","code","keyName","event","ignoreKey","name","__name","crelt","elt","i","next","name","value","add","__name","child","nav","doc","ie_edge","ie_upto10","ie_11up","ie","gecko","chrome","webkit","safari","ios","browser","combineAttrs","source","target","name","__name","noAttrs","attrsEq","a","b","ignore","keysA","keysB","key","setAttrs","dom","attrs","i","value","updateAttrs","prev","changed","getAttrs","attr","WidgetType","widget","view","other","event","pos","side","BlockType","Decoration","RangeValue","startSide","endSide","spec","MarkDecoration","block","PointDecoration","start","end","getInclusive","LineDecoration","of","sort","RangeSet","_MarkDecoration","from","to","_LineDecoration","MapMode","_PointDecoration","isReplace","widgetsEq","addRange","ranges","margin","last","BlockWrapper","_BlockWrapper","tagName","attributes","getSelection","root","contains","node","hasSelection","selection","clientRectsFor","textRange","isEquivalentPosition","off","targetNode","targetOff","scanFor","domIndex","index","isBlockElement","dir","maxOffset","parent","flattenRect","rect","left","x","windowRect","win","vp","getScale","elt","scaleX","scaleY","scrollRectIntoView","y","xMargin","yMargin","ltr","cur","stop","bounding","top","moveX","moveY","rectHeight","boundingHeight","movedX","movedY","scrollableParents","getX","DOMSelectionState","domSel","range","anchorNode","focusNode","anchorOffset","focusOffset","preventScrollSupported","focusPreventScroll","stack","scratchRange","dispatchKey","code","mods","options","down","up","getRoot","atElementStart","offset","isScrolledToBottom","textNodeBefore","startNode","startOffset","textNodeAfter","DOMPos","_DOMPos","precise","Direction","LTR","RTL","dec","str","result","LowTypes","ArabicTypes","Brackets","BracketStack","p","l","r","charType","ch","BidiRE","BidiSpan","level","forward","order","assoc","maybe","span","isolatesEq","iA","iB","types","computeCharTypes","line","rFrom","rTo","isolates","outerType","iI","prevType","prevStrong","type","replace","j","processBracketPairs","oppositeType","sI","context","br","sJ","flags","embed","processNeutrals","beforeL","afterL","jI","fromJ","emitSpans","baseLevel","ourType","iCh","sameDir","isNum","next","recurse","localLevel","iScan","run","iso","upto","dirSwap","computeSectionOrder","computeOrder","direction","trivialOrder","length","movedOver","moveVisually","_a","startIndex","spanI","spanEnd","nextI","nextIndex","findClusterBreak","nextSpan","EditorSelection","autoDirection","text","clickAddsSelectionRange","Facet","dragMovesSelection$1","mouseSelectionStyle","exceptionSink","updateListener","inputHandler","focusChangeEffect","clipboardInputFilter","clipboardOutputFilter","perLineTextDirection","values","nativeSelectionHidden","scrollHandler","ScrollTarget","_ScrollTarget","isSnapshot","changes","state","scrollIntoView","StateEffect","t","setEditContextFormatting","logException","exception","handler","editable","nextPluginID","viewPlugin","plugins","ViewPlugin","_ViewPlugin","id","create","domEventHandlers","domEventObservers","buildExtensions","arg","eventHandlers","eventObservers","provide","deco","plugin","ext","decorations","pluginInst","cls","PluginInstance","update","e","editorAttributes","contentAttributes","blockWrappers","outerDecorations","atomicRanges","bidiIsolatedRanges","getIsolatedRanges","sets","fromDoc","toDoc","active","open","add","scrollMargins","getScrollMargins","right","bottom","m","styleModule","ChangedRange","_ChangedRange","fromA","toA","fromB","toB","set","me","diff","dI","rI","nextD","nextR","ViewUpdate","_ViewUpdate","transactions","ChangeSet","tr","changedRanges","noChildren","Tile","track","tile","child","after","DocTile","CompositeTile","tracking","rm$1","f","BlockWrapperTile","before","beforeOff","afterOff","_BlockWrapperTile","wrapper","LineTile","_LineTile","keepAttrs","forCoords","scan","onSameLine","found","fallbackRect","saw","rects","posA","posB","MarkTile","_MarkTile","mark","TextTile","_TextTile","flatten","WidgetTile","_WidgetTile","custom","fromBack","Text","WidgetBufferTile","img","TilePointer","dist","walker","beforeBreak","parents","brk","take","OpenWrapper","rank","TileBuilder","cache","marks","openStart","composition","freeNode","head","nw","oldTile","noSpace","lineBaseAttrs","hasContent","BreakWidget","wrap","TextStream","len","maxLen","lineBreak","done","chars","buckets","TileCache","bucket","test","widgets","pass","TileUpdate","old","disallowBlockEffectsFor","compositionContext","skipA","incStart","incEnd","activeMarks","getMarks","openMarks","pendingLineAttrs","markCount","openEnd","NullWidget","widgetFlags","addLineDeco","requireText","ptr","tag","DocView","readCompositionAt","touchesComposition","findCompositionRange","prevDeco","prevWrappers","decoDiff","findChangedDeco","blockDiff","findChangedWrappers","observer","builder","destroyDropped","gaps","BlockGapWidget","effect","mustRead","fromPointer","activeElt","focused","selectionNotFocus","force","main","anchor","betweenUneditable","dummy","inUneditable","rawSel","nextTo","nextToUneditable","sel","cursor","lineStart","newRange","bias","beforeBad","afterBad","viewport","contentWidth","isWider","widest","spaceAbove","measureBounds","childRect","height","width","lineMeasure","totalWidth","textHeight","lineHeight","charWidth","vs","allDeco","d","dynamicOuter","outerDeco","dynamic","v","ref","margins","targetRect","offsetWidth","offsetHeight","reused","findCompositionNode","headPos","textBefore","textAfter","textNode","tileAfter","tileBefore","inv","DecorationComparator$1","comp","WrapperComparator","inside","touched","groupAt","categorize","linePos","cat","posAtCoordsImprecise","contentRect","into","content","findColumn","blockAt","best","moveToLineBoundary","includeWrap","coords","editorRect","moveByChar","by","spans","check","char","byGroup","nextCat","CharCategory","moveVertically","distance","startPos","goal","startY","startCoords","docTop","resolvedGoal","posAtCoords","skipAtomicRanges","atoms","moved","skipAtomsForSelection","updated","skipAtoms","oldPos","newPos","PosAssoc","scanY","yOffset","halfLine","InlineCoordsScan","baseDir","positions","getRects","lo","hi","seen","bidi","above","below","closestI","closestDx","closestRect","search","mid","adjust","dx","LineBreakPlaceholder","DOMReader","points","EditorState","oldLen","nextTile","isEmptyToEnd","point","re","nextBreak","breakSize","fromView","isAtEnd","w","override","DOMPoint","DOMChange","typeOver","iHead","iAnchor","curSel","domBoundsAround","selPoints","selectionPoints","reader","selectionFromPoints","offFrom","offTo","fromI","fromStart","toI","toEnd","prevEnd","applyDOMChange","domChange","change","newSel","lastKey","preferredPos","preferredSide","cmp","selEnd","findDiff","sameSelPos","applyDOMChangeInner","userEvent","defaultTr","defaultInsert","applyDefaultInsert","h","startState","inAtomic","mainSel","replaced","compositionRange","dLen","rangeChanges","selOff","minLen","move","base","InputState","origin","firefoxCopyCutHack","eventBelongsToEditor","handlers","computeHandlers","passive","exists","modifierCodes","pending","PendingKeys","EmacsyPendingKeys","mouseSelection","bindHandler","record","observers","dragScrollMargin","dragScrollSpeed","MouseSelection","startEvent","style","mustSelect","addsSelectionRange","isInPrimarySelection","getClickType","sx","sy","facet","dragMovesSelection","brokenClipboardAPI","capturePaste","doPaste","textFilter","filter","input","byLine","lastLinewiseCopy","lastLine","insert","iState","touch","makeStyle","basicMouseSelection","mustFocus","mouseSel","rangeForClick","visual","BadMouseDetail","lastMouseDown","lastMouseDownCount","lastMouseDownTime","lastTime","startSel","extend","multiple","removed","startRange","removeRangeAround","inputState","dropText","direct","dropPos","draggedContent","del","ins","files","read","finishFile","s","data","captureCopy","copiedRange","linewise","isFocusChange","Annotation","focusChangeTransaction","focus","effects","getEffect","updateForFocusChange","_b","startViewHeight","appliedFirefoxHack","wrappingWhiteSpace","heightChangeFlag","clearHeightChangeFlag","HeightOracle","lineWrapping","lines","whiteSpace","lineHeights","newHeight","lineLength","knownHeights","MeasuredHeights","heights","BlockInfo","_BlockInfo","_content","QueryType","Epsilon","HeightMap","_HeightMap","_from","_to","nodes","oldDoc","oracle","NodeBuilder","HeightMapText","split","HeightMapBranch","val","SpaceDeco","HeightMapBlock","_oracle","_value","_type","measured","_force","_HeightMapText","HeightMapGap","_HeightMapGap","firstLine","perLine","perChar","totalPerLine","guess","lineTop","linesAbove","first","singleHeight","rightTop","rightOffset","subQuery","rightStart","mergeGaps","rebalance","around","relevantWidgetHeight","_NodeBuilder","breaks","gap","heightRelevantDecoChanges","DecorationComparator","visiblePixelRange","paddingTop","parentRect","inWindow","fullPixelRange","LineGap","size","displaySize","gA","gB","viewState","wrapping","LineGapWidget","vertical","ViewState","IdScaler","guessWrapping","staticDeco","viewports","Viewport","scaler","BigScaler","scaleBlock","scrollTarget","contentChanges","heightChanges","prevHeight","scrollAnchor","viewportChange","refresh","domRect","measureContent","paddingBottom","scrollParent","scrollOffset","pixelViewport","dTop","dBottom","inView","marginTop","map","visibleTop","visibleBottom","viewHeight","topPos","mapped","current","mayMeasure","halfMargin","doubleMargin","addGap","structure","avoid","find","checkLine","lineStructure","viewFrom","viewTo","marginHeight","bot","targetFrac","findFraction","spaceFrac","findPosition","marginWidth","horizOffset","pxLeft","pxRight","fraction","stateDeco","total","ratio","counted","array","outer","_BigScaler","heightMap","vpHeight","domBase","obj","n","bTop","bBottom","theme","strs","darkTheme","baseThemeID","StyleModule","baseLightID","baseDarkID","lightDarkIDs","buildTheme","scopes","baseTheme$1","observeOptions","useCharData","DOMObserver","mutations","mut","EditContextManager","entries","g","wasChanged","safariSelectionRangeHack","local","keyCode","flush","records","readSelection","handled","rec","childBefore","findChild","childAfter","_c","curTile","buildSelectionRangeFromRange","curAnchor","deletes","newLen","format","lineStyle","thickness","drifted","abort","_fromB","_toB","reverted","contextPos","clipLen","c","editorPos","EditorView","_EditorView","config","dispatch","trs","Transaction","redrawn","attrsChanged","focusFlag","dispatchFocus","pendingKey","CachedOrder","listener","newState","hadFocus","prevSpecs","specs","newPlugins","scroll","scrollAnchorPos","scrollAnchorHeight","measuring","BadMeasure","editorAttrs","attrsFromFacet","contentAttrs","changedContent","changedEditor","div","nonce","request","known","initial","MaxBidiLine","entry","scrollTop","scrollLeft","prefix","Prec","_CachedOrder","fresh","lastDir","sources","currentPlatform","normalizeKeyName","platform","parts","alt","ctrl","shift","meta","mod","modifiers","handleKeyEvents","runHandlers","getKeymap","keymap","Keymaps","bindings","buildKeymap","runScopeHandlers","scope","storedPrefix","PrefixTimeout","bound","isPrefix","checkPrefix","is","command","preventDefault","stopPropagation","scopeObj","k","ourObj","full","binding","any","currentKeyEvent","keyName","charCode","codePointAt","isChar","codePointSize","prevented","ran","runFor","cmd","baseName","shiftName","RectangleMarker","_RectangleMarker","className","getBase","rectanglesForRange","wrappedLine","lineElt","leftSide","rightSide","startBlock","endBlock","visualStart","visualEnd","pieces","drawForLine","drawForWidget","between","piece","horizontal","addSpan","fromOpen","toOpen","fromCoords","toCoords","endPos","docLine","spanFrom","spanTo","sameMarker","LayerView","layer","layerOrder","markers","oldI","marker","selectionConfig","configs","combineConfig","drawSelection","cursorLayer","selectionLayer","hideNativeSelection","configChanged","update","selectionConfig","__name","cursorLayer","layer","view","state","conf","cursors","r","prim","browser","className","cursor","EditorSelection","piece","RectangleMarker","dom","tr","confChange","setBlinkRate","selectionLayer","markers","main","ranges","marker","hideNativeSelection","Prec","EditorView","setDropCursorPos","StateEffect","pos","mapping","dropCursorPos","StateField","e","drawDropCursor","ViewPlugin","_a","cursorPos","rect","outer","scaleX","scaleY","event","dropCursor","iterMatches","doc","re","from","to","f","m","matchRanges","maxLength","visible","result","MatchDecorator","config","regexp","decoration","decorate","boundary","match","add","deco","_view","build","RangeSetBuilder","changeFrom","changeTo","_f","_t","updateFrom","updateTo","fromLine","toLine","start","end","UnicodeRegexpSupport","Specials","Names","_supportsTabSize","supportsTabSize","styles","specialCharConfig","Facet","configs","combineConfig","highlightSpecialChars","specialCharPlugin","_plugin","Decoration","code","codePointAt","line","size","col","countColumn","TabWidget","SpecialCharWidget","v","DefaultPlaceholder","placeholder$1","WidgetType","options","other","ph","desc","custom","span","width","highlightActiveLine","activeLineHighlighter","__name","lineDeco","Decoration","ViewPlugin","view","update","lastLineStart","deco","r","line","v","MaxOff","rectangleFor","state","a","b","startLine","endLine","ranges","startOff","endOff","i","line","EditorSelection","startCol","endCol","start","findColumn","end","__name","absoluteColumn","view","x","ref","getPos","event","offset","off","col","countColumn","rectangleSelectionStyle","startSel","update","newStart","newLine","_extend","multiple","cur","rectangularSelection","options","filter","e","EditorView","keys","showCrosshair","crosshairCursor","code","getter","plugin","ViewPlugin","isDown","_a","Outside","TooltipViewManager","facet","createTooltipView","removeTooltipView","t","prev","above","input","tooltips","tooltipViews","newAbove","tip","known","other","tooltipView","val","windowSpace","view","docElt","__name","tooltipConfig","Facet","values","_a","_b","_c","browser","conf","knownHeight","tooltipPlugin","ViewPlugin","config","TooltipViewManager","showTooltip","p","entries","tooltip","update","updated","shouldMeasure","newConfig","t","prev","tooltipView","before","arrow","Outside","scaleX","scaleY","makeAbsolute","dom","rect","visible","margins","getScrollMargins","i","tv","measured","space","others","tView","pos","size","arrowHeight","width","height","offset","noOffset","ltr","Direction","left","above","spaceVert","top","right","r","setLeftStyle","arrowLeft","elt","value","current","baseTheme","EditorView","showHoverTooltip","inputs","a","HoverTooltipHost","_HoverTooltipHost","hostedView","name","given","showHoverTooltipHost","state","tooltips","HoverPlugin","source","field","setHover","hoverTime","hovered","lastMove","tile","side","posCoords","bidi","s","rtl","open","pending","result","e","logException","plugin","index","event","active","isInTooltip","end","isOverRange","watch","tooltipMargin","bottom","arrowRect","from","to","x","y","margin","docBottom","hoverTooltip","options","StateEffect","hoverState","StateField","tr","v","mapped","newPos","MapMode","copy","effect","closeHoverTooltipEffect","f","getTooltip","found","closeHoverTooltipEffect","StateEffect","panelConfig","Facet","configs","topContainer","bottomContainer","c","getPanel","view","panel","plugin","panelPlugin","index","__name","ViewPlugin","showPanel","s","spec","conf","panelConfig","PanelGroup","p","update","input","specs","x","panels","top","bottom","mount","known","EditorView","value","container","parent","curDOM","rm","cls","node","next","Facet","showDialog","config","resolve","promise","r","panelCtor","createDialog","dialogField","openDialogEffect","StateEffect","close","closeDialogEffect","form","f","dialogField","StateField","dialogs","tr","e","openDialogEffect","closeDialogEffect","d","__name","f","showPanel","state","StateEffect","createDialog","view","config","result","content","done","crelt","input","forms","i","form","event","panel","focus","GutterMarker","RangeValue","other","dom","MapMode","gutterLineClass","Facet","gutterWidgetClass","defaults","RangeSet","activeGutters","gutter","gutters","unfixGutters","values","x","gutterView","ViewPlugin","conf","SingleGutterView","update","vpA","vpB","vpOverlap","min","detach","after","lineClasses","classSet","contexts","UpdateContext","line","first","b","BlockType","advanceCursor","cx","prev","cur","change","known","g","plugin","EditorView","value","before","Direction","asArray","val","cursor","collect","pos","viewport","height","block","markers","above","newElt","GutterElement","extraMarkers","localMarkers","forLine","marker","cls","last","prop","target","y","rect","prevMarkers","updated","vp","elt","sameMarkers","domPos","iNew","iOld","skipTo","matched","c","next","a","lineNumberMarkers","lineNumberWidgetMarker","lineNumberConfig","combineConfig","exists","add","NumberMarker","number","formatNumber","lineNumberGutter","others","m","widget","maxLineNumber","spacer","max","lineNumbers","lines","activeLineGutterMarker","activeLineGutterHighlighter","marks","range","linePos","highlightActiveLineGutter","nextPropID","Range","__name","from","to","NodeProp","config","match","NodeType","type","result","str","value","MountedTree","tree","overlay","parser","bracketed","noProps","_NodeType","name","props","id","flags","spec","src","prop","group","map","direct","node","groups","i","found","NodeSet","_NodeSet","types","newTypes","newProps","source","add","CachedNode","CachedInnerNode","IterMode","Tree","_Tree","children","positions","length","mounted","ch","mode","TreeCursor","pos","side","scope","cursor","TreeNode","resolveNode","stackIterator","enter","leave","anon","c","entered","balanceRange","data","buildTree","FlatBufferCursor","_FlatBufferCursor","buffer","index","TreeBuffer","_TreeBuffer","set","endIndex","startIndex","dir","pick","checkSide","startI","endI","b","copy","len","j","overlays","_a","parent","scan","inner","BaseNode","before","after","r","getChildren","context","matchNodeContext","last","_TreeNode","_tree","_parent","e","next","start","BufferNode","BufferContext","hasChild","rPos","enterBracketed","val","cur","p","_BufferNode","parentStart","iterStack","heads","picked","newHeads","StackIterator","layers","mount","root","n","d","child","cache","depth","mustLeave","nodeSet","maxBufferLength","reused","minRepeatType","contextHash","lookAhead","takeNode","minPos","inRepeat","end","size","lookAheadAtStart","contextAtStart","startPos","findBufferSize","endPos","copyToBuffer","localChildren","localPositions","localInRepeat","lastGroup","lastEnd","makeRepeatLeaf","takeFlatNode","make","makeBalanced","makeTree","nodes","nodeCount","stopAt","lastI","lookAheadProp","base","pair","maxSize","fork","skip","minStart","nodeSize","localSkipped","nodeStart","bufferStart","nodeSizeCache","balanceType","mkTop","mkTree","total","maxChild","divide","offset","groupFrom","groupStart","groupSize","nextSize","only","NodeWeakMap","TreeFragment","_TreeFragment","openStart","openEnd","fragments","partial","f","changes","minGap","fI","nextF","cI","off","nextC","nextPos","cut","fFrom","fTo","Parser","input","ranges","StringInput","parse","done","string","parseMixed","nest","MixedParse","InnerParse","target","checkRanges","ActiveOverlay","predicate","mounts","prev","stoppedInner","fragmentCursor","FragmentCursor","covered","isCovered","range","m","checkCover","materialize","oldMounts","punchRanges","enterFragments","sliceBuf","buf","stack","newStack","split","innerOffset","stackPos","targetI","StructureCursor","first","frag","outer","current","gapFrom","gapTo","findCoverChanges","a","iA","iB","inA","inB","nextA","nextB","nextTagID","Tag","_Tag","__name","name","set","base","modified","mod","nameOrParent","parent","tag","t","Modifier","a","b","nextModifierID","_Modifier","mods","exists","sameArray","m","configs","powerSet","config","x","array","sets","i","j","e","styleTags","spec","byName","prop","tags","part","pieces","mode","rest","pos","next","last","inner","rule","Rule","ruleNodeProp","NodeProp","cur","root","take","copy","context","other","tagHighlighter","options","map","style","scope","all","cls","sub","tagClass","highlightTags","highlighters","result","highlighter","value","highlightTree","tree","putStyle","from","to","builder","HighlightBuilder","HighlightBuilder","__name","at","highlighters","span","cls","to","cursor","from","inheritedClass","type","start","end","h","rule","getStyleTags","Rule","tagCls","highlightTags","mounted","NodeProp","inner","innerHighlighters","hasChild","i","pos","next","nextPos","rangeFrom","rangeTo","node","ruleNodeProp","t","Tag","comment","name","typeName","propertyName","literal","string","number","content","heading","keyword","operator","punctuation","bracket","meta","tags","val","classHighlighter","tagHighlighter","_a","languageDataProp","NodeProp","defineLanguageFacet","baseData","Facet","values","__name","sublanguageProp","Language","data","parser","extraExtensions","name","EditorState","syntaxTree","language","state","pos","side","top","topNodeAt","base","sub","innerNode","sublang","lang","result","explore","tree","from","mount","r","size","i","ch","Tree","StateEffect","topLang","node","IterMode","LRLanguage","_LRLanguage","spec","type","options","field","DocInput","__name","doc","pos","from","to","stringStart","currentContext","ParseContext","_ParseContext","parser","state","fragments","tree","treeLen","viewport","skipped","scheduleOn","Tree","until","upto","_a","endTime","done","TreeFragment","f","prev","r","cutFragments","changes","newState","ranges","fromA","toA","fromB","toB","startLen","Parser","input","cx","NodeType","frags","LanguageState","_LanguageState","context","tr","newCx","vpTo","parseState","language","Language","StateField","value","e","requestIdle","callback","timeout","idle","isInputPending","parseWorker","ViewPlugin","view","update","field","deadline","now","viewportFirst","err","logException","Facet","languages","EditorView","lang","LanguageSupport","support","indentService","Facet","indentUnit","__name","values","unit","e","getIndentUnit","state","indentString","cols","result","ts","ch","i","getIndentation","context","pos","EditorState","IndentContext","service","tree","syntaxTree","syntaxIndentation","IndentContext","__name","state","options","getIndentUnit","pos","bias","line","simulateBreak","simulateDoubleBreak","text","from","result","override","countColumn","overriden","indentNodeProp","NodeProp","syntaxIndentation","cx","ast","stack","inner","add","cur","i","indentFor","strategy","indentStrategy","TreeIndentContext","ignoreClosed","tree","first","close","last","closed","delimitedStrategy","topIndent","_TreeIndentContext","base","context","node","atBreak","isParent","parent","of","bracketedAligned","openToken","sim","openLine","lineEnd","next","space","delimitedIndent","closing","align","units","closedAt","after","aligned","flatIndent","continuedIndent","except","matchExcept","DontIndentBeyond","indentOnInput","EditorState","tr","rules","doc","head","lineStart","r","changes","indent","getIndentation","norm","indentString","foldService","Facet","foldNodeProp","foldInside","syntaxFolding","start","end","syntaxTree","found","iter","prop","isUnfinished","value","ch","foldable","service","mapRange","range","mapping","to","foldEffect","StateEffect","unfoldEffect","selectedLines","view","lines","l","foldState","StateField","Decoration","folded","fromA","toA","clearTouchedFolds","e","foldExists","preparePlaceholder","foldConfig","widget","PreparedFoldWidget","foldWidget","f","EditorView","ranges","touched","a","b","findFold","state","from","to","_a","found","foldState","__name","foldExists","folded","a","b","maybeEnable","other","StateEffect","codeFolding","foldCode","view","line","selectedLines","range","foldable","foldEffect","announceFold","unfoldCode","effects","unfoldEffect","fold","lineFrom","lineTo","EditorView","foldAll","pos","unfoldAll","field","foldKeymap","foldCode","unfoldCode","foldAll","unfoldAll","defaultConfig","foldConfig","Facet","values","combineConfig","codeFolding","config","result","foldState","baseTheme$1","__name","widgetToDOM","view","prepared","state","conf","onclick","event","line","folded","findFold","unfoldEffect","element","foldWidget","Decoration","WidgetType","PreparedFoldWidget","value","other","foldGutterDefaults","FoldMarker","GutterMarker","open","span","foldGutter","fullConfig","canFold","canUnfold","markers","ViewPlugin","update","language","syntaxTree","builder","RangeSetBuilder","mark","foldable","domEventHandlers","gutter","_a","RangeSet","range","foldEffect","EditorView","HighlightStyle","_HighlightStyle","specs","options","modSpec","def","spec","cls","StyleModule","all","scopeOpt","Language","type","languageDataProp","tagHighlighter","style","highlighterFacet","fallbackHighlighter","getHighlighters","main","syntaxHighlighting","highlighter","ext","treeHighlighter","themeType","TreeHighlighter","__name","view","syntaxTree","getHighlighters","update","tree","highlighters","styleChange","viewport","decoratedToMapped","Decoration","builder","RangeSetBuilder","from","to","highlightTree","style","treeHighlighter","Prec","ViewPlugin","v","defaultHighlightStyle","HighlightStyle","tags","baseTheme","EditorView","DefaultScanDist","DefaultBrackets","bracketMatchingConfig","Facet","configs","combineConfig","defaultRenderMatch","matchingMark","nonmatchingMark","match","decorations","mark","bracketDeco","state","config","range","matchBrackets","bracketMatcher","bracketMatchingUnique","bracketMatching","bracketMatchingHandle","NodeProp","matchingNodes","node","dir","brackets","byProp","index","findHandle","hasHandle","pos","maxScanDistance","cur","matches","handle","matchMarkedBrackets","matchPlainBrackets","_state","_pos","token","matching","parent","firstToken","depth","cursor","endHandle","tokenType","startCh","bracket","startToken","iter","distance","text","basePos","end","found","noTokens","typeArray","NodeType","warned","byTag","defaultTable","legacyName","name","createTokenType","noTokens","warnForPart","part","msg","warned","__name","createTokenType","extra","tagStr","tags$1","name","found","value","tags","tag","key","t","known","byTag","type","NodeType","typeArray","styleTags","marks","Decoration","Direction","toggleComment","__name","target","state","line","config","getConfig","toggleLineComment","toggleBlockCommentByLine","command","f","option","dispatch","tr","changeLineComment","toggleBlockComment","command","changeBlockComment","toggleBlockCommentByLine","command","o","s","changeBlockComment","selectedLineRanges","getConfig","state","pos","data","__name","SearchMargin","findBlockComment","open","close","from","to","textBefore","textAfter","spaceBefore","spaceAfter","beforeOff","startText","endText","startSpace","endSpace","endOff","ranges","r","fromLine","toLine","last","option","tokens","c","comments","i","range","changes","comment","token","changeLineComment","lines","prevLine","startI","minIndent","line","indent","empty","l","single","changeSet","fromHistory","Annotation","isolateHistory","invertedEffects","Facet","historyConfig","configs","combineConfig","_t","isAdjacent","a","b","tr","adj","historyField_","StateField","HistoryState","config","fromHist","item","HistEvent","other","updateBranch","addSelection","isolate","Transaction","event","time","userEvent","value","json","history","EditorView","view","undo","redo","cmd","side","selection","state","dispatch","historyState","historyField_","tr","__name","undo","redo","undoSelection","redoSelection","HistEvent","_HistEvent","__name","changes","effects","mapped","startSelection","selectionsAfter","after","_a","_b","_c","json","ChangeSet","ChangeDesc","EditorSelection","tr","selection","none","invert","invertedEffects","result","selections","updateBranch","branch","to","maxLen","newEvent","start","newBranch","isAdjacent","a","b","ranges","f","t","_f","_t","i","from","eqSelectionShape","r","conc","MaxSelectionsPerEvent","addSelection","lastEvent","sels","popSelection","last","addMappingToBranch","mapping","length","event","mapEvent","extraSelections","s","mappedChanges","before","fullMapping","StateEffect","joinableUserEvent","HistoryState","_HistoryState","done","undone","prevTime","prevUserEvent","time","userEvent","config","newGroupDelay","side","state","onlySelection","fromHistory","rest","historyKeymap","undo","redo","undoSelection","redoSelection","updateSel","sel","by","setSel","moveSel","dispatch","how","rangeEnd","range","forward","cursorByChar","view","ltrAtCursor","Direction","cursorCharLeft","cursorCharRight","cursorByGroup","view","forward","moveSel","range","rangeEnd","__name","cursorGroupLeft","ltrAtCursor","cursorGroupRight","segmenter","interestingNode","state","node","bracketProp","len","__name","moveBySyntax","start","forward","pos","syntaxTree","NodeProp","at","next","bracket","match","newPos","matchBrackets","EditorSelection","cursorSyntaxLeft","view","moveSel","range","ltrAtCursor","cursorSyntaxRight","cursorByLine","rangeEnd","moved","cursorLineUp","cursorLineDown","pageInfo","selfScroll","marginTop","marginBottom","height","source","EditorView","margins","cursorByPage","page","selection","updateSel","effect","startPos","scrollRect","scrollTop","scrollBottom","setSel","cursorPageUp","cursorPageDown","moveByLineBoundary","line","space","cursorLineBoundaryForward","cursorLineBoundaryBackward","cursorLineBoundaryLeft","cursorLineBoundaryRight","cursorLineStart","cursorLineEnd","toMatchingBracket","dispatch","extend","found","matching","head","cursorMatchingBracket","extendSel","target","how","selection","updateSel","range","head","EditorSelection","setSel","__name","selectByChar","view","forward","selectCharLeft","ltrAtCursor","selectCharRight","selectByGroup","view","forward","extendSel","range","__name","selectGroupLeft","ltrAtCursor","selectGroupRight","selectSyntaxLeft","__name","view","extendSel","range","moveBySyntax","ltrAtCursor","selectSyntaxRight","selectByLine","forward","selectLineUp","selectLineDown","selectByPage","pageInfo","selectPageUp","selectPageDown","selectLineBoundaryForward","moveByLineBoundary","selectLineBoundaryBackward","selectLineBoundaryLeft","selectLineBoundaryRight","selectLineStart","EditorSelection","selectLineEnd","cursorDocStart","state","dispatch","setSel","cursorDocEnd","selectDocStart","selectDocEnd","selectAll","selectLine","ranges","selectedLineBlocks","from","to","selectParentSyntax","selection","updateSel","tree","syntaxTree","stack","stackBefore","cur","node","addCursorVertically","sel","line","next","r","addCursorAbove","addCursorBelow","simplifySelection","deleteBy","target","by","event","changes","towards","skipAtomic","EditorView","pos","f","deleteByChar","byIndentUnit","before","targetPos","col","countColumn","drop","getIndentUnit","i","findClusterBreak","deleteCharBackward","deleteCharForward","__name","view","deleteByChar","deleteByGroup","target","forward","deleteBy","range","pos","state","line","categorize","cat","next","findClusterBreak","nextChar","nextCat","deleteGroupBackward","deleteGroupForward","deleteToLineEnd","__name","view","deleteBy","range","lineEnd","deleteLineBoundaryBackward","__name","view","deleteBy","range","lineStart","deleteLineBoundaryForward","splitLine","__name","state","dispatch","changes","range","Text","EditorSelection","transposeChars","pos","line","from","findClusterBreak","to","selectedLineBlocks","blocks","upto","startLine","endLine","prev","moveLine","forward","ranges","block","nextLine","size","r","moveLineUp","moveLineDown","copyLine","changeSet","copyLineUp","copyLineDown","deleteLine","view","selection","updateSel","dist","isBetweenBrackets","state","pos","context","syntaxTree","before","after","closedBy","NodeProp","__name","insertNewlineAndIndent","newlineAndIndent","insertBlankLine","atEof","dispatch","changes","range","from","to","line","explode","cx","IndentContext","indent","getIndentation","countColumn","insert","indentString","Text","EditorSelection","changeBySelectedLine","f","atLine","changeSet","indentSelection","updated","start","found","cur","norm","indentMore","indentUnit","indentLess","space","col","keep","getIndentUnit","toggleTabFocusMode","view","emacsStyleKeymap","cursorCharLeft","selectCharLeft","cursorCharRight","selectCharRight","cursorLineUp","selectLineUp","cursorLineDown","selectLineDown","cursorLineStart","selectLineStart","cursorLineEnd","selectLineEnd","deleteCharForward","deleteCharBackward","deleteToLineEnd","deleteGroupBackward","splitLine","transposeChars","cursorPageDown","standardKeymap","cursorGroupLeft","selectGroupLeft","cursorLineBoundaryLeft","selectLineBoundaryLeft","cursorGroupRight","selectGroupRight","cursorLineBoundaryRight","selectLineBoundaryRight","cursorDocStart","selectDocStart","cursorPageUp","selectPageUp","cursorDocEnd","selectDocEnd","selectPageDown","cursorLineBoundaryBackward","selectLineBoundaryBackward","cursorLineBoundaryForward","selectLineBoundaryForward","insertNewlineAndIndent","selectAll","deleteGroupForward","deleteLineBoundaryBackward","deleteLineBoundaryForward","b","defaultKeymap","cursorSyntaxLeft","selectSyntaxLeft","cursorSyntaxRight","selectSyntaxRight","moveLineUp","copyLineUp","moveLineDown","copyLineDown","addCursorAbove","addCursorBelow","simplifySelection","insertBlankLine","selectLine","selectParentSyntax","indentLess","indentMore","indentSelection","deleteLine","cursorMatchingBracket","toggleComment","toggleBlockComment","toggleTabFocusMode","basicNormalize","x","SearchCursor","__name","text","query","from","to","normalize","test","codePointAt","next","str","fromCodePoint","start","codePointSize","norm","i","pos","code","match","end","index","keep","empty","baseFlags","RegExpCursor","options","MultilineRegExpCursor","startLine","toCharEnd","skip","off","flattened","FlattenedDoc","_FlattenedDoc","doc","cached","flat","cachedFrom","validRegExp","source","line","gotoLine","view","state","close","result","showDialog","form","sign","ln","cl","percent","col","pc","docLine","selection","EditorSelection","EditorView","defaultHighlightOptions","highlightConfig","Facet","combineConfig","a","b","highlightSelectionMatches","ext","defaultTheme","matchHighlighter","matchDeco","Decoration","mainMatchDeco","insideWordBoundaries","check","CharCategory","insideWord","ViewPlugin","update","conf","sel","range","word","len","deco","part","cursor","v","selectWord","dispatch","newSel","findNextOccurrence","main","ranges","fullWord","cycled","r","selectNextOccurrence","searchedText","searchConfigFacet","configs","SearchPanel","SearchQuery","__name","config","validRegExp","text","_","ch","other","RegExpQuery","StringQuery","state","from","to","st","EditorState","regexpCursor","stringCursor","QueryType","spec","wrapStringTest","test","inner","buffer","bufferPos","match","stringWordTest","SearchCursor","x","doc","categorizer","buf","bufPos","charBefore","CharCategory","charAfter","curFrom","curTo","cursor","end","pos","start","range","found","_result","limit","ranges","add","wrapRegexpTest","regexpWordTest","RegExpCursor","str","index","findClusterBreak","_from","_to","size","result","m","l","n","setSearchQuery","StateEffect","togglePanel","searchState","StateField","SearchState","defaultQuery","value","tr","effect","createSearchPanel","f","showPanel","val","SearchState","__name","query","panel","matchMark","Decoration","selectedMatchMark","searchHighlighter","ViewPlugin","view","searchState","update","state","builder","RangeSetBuilder","i","ranges","l","from","to","selected","r","v","searchCommand","f","openSearchPanel","findNext","next","selection","EditorSelection","config","searchConfigFacet","announceMatch","selectSearchInput","findPrevious","prev","selectMatches","selectSelectionMatches","dispatch","sel","main","cur","SearchCursor","replaceNext","match","changes","replacement","effects","EditorView","changeSet","replaceAll","announceText","createSearchPanel","defaultQuery","fallback","_a","_b","_c","_d","_e","selText","SearchQuery","getSearchInput","getPanel","input","searchInput","setSearchQuery","togglePanel","StateEffect","searchExtensions","closeSearchPanel","searchKeymap","gotoLine","selectNextOccurrence","SearchPanel","crelt","phrase","button","name","onclick","content","e","runScopeHandlers","tr","effect","AnnounceMargin","Break","line","lineEnd","start","end","text","baseTheme","Prec","CompletionContext","__name","state","pos","explicit","view","types","token","syntaxTree","expr","line","start","str","found","ensureAnchor","type","listener","options","toSet","chars","flat","words","prefixMatch","first","rest","label","i","source","completeFromList","list","o","validFor","match","context","ifNotIn","nodes","source","context","pos","syntaxTree","__name","Option","completion","match","score","cur","state","ensureAnchor","expr","start","_a","addStart","addEnd","pickedCompletion","Annotation","insertCompletionText","text","from","to","main","fromOff","toOff","range","lines","EditorSelection","SourceCache","asSource","known","completeFromList","startCompletionEffect","StateEffect","closeCompletionEffect","FuzzyMatcher","pattern","p","char","codePointAt","size","codePointSize","part","upper","matched","word","chars","folded","any","precise","byWord","first","firstSize","direct","len","anyTo","i","e","next","preciseTo","byWordTo","byWordFolded","adjacentTo","adjacentStart","adjacentEnd","hasLower","wordAdjacent","prevType","ch","type","fromCodePoint","positions","result","StrictMatcher","completionConfig","Facet","configs","combineConfig","defaultPositionInfo","a","b","c","joinClass","view","list","option","info","space","tooltip","rtl","Direction","left","narrow","side","offset","maxWidth","spaceLeft","spaceRight","infoWidth","infoHeight","spaceBelow","scaleY","scaleX","setSelectedEffect","optionContent","config","content","icon","cls","_s","_v","labelElt","label","off","j","span","detailElt","rangeAroundSelected","total","selected","max","CompletionTooltip","stateField","applyCompletion","cState","options","dom","move","id","update","prevState","disabled","open","newSel","infoResult","obj","logException","wrap","destroy","set","opt","scrollIntoView","sel","listRect","infoRect","selRect","docElt","ul","curSection","section","name","header","li","node","completionTooltip","container","element","parent","self","sortOptions","active","sections","dynamicSectionScore","addOption","s","conf","getMatch","matcher","sectionOrder","cmp","prev","compare","CompletionDialog","_CompletionDialog","attrs","timestamp","makeAttrs","didSetActive","selectedValue","createTooltip","changes","CompletionState","_CompletionState","none","tr","ActiveSource","didSet","setActiveEffect","sameResults","effect","baseAttrs","noAttrs","iA","iB","endA","endB","getUpdateType","typing","_ActiveSource","explicit","value","ActiveResult","_ActiveResult","limit","checkValid","CompletionContext","mapping","validFor","sources","completionState","StateField","f","showTooltip","val","EditorView","apply","moveCompletionSelection","forward","by","step","getTooltip","length","acceptCompletion","startCompletion","closeCompletion","RunningQuery","MaxUpdateCount","MinAbortTime","completionPlugin","ViewPlugin","doesReset","query","handler","delay","q","r","pending","err","updated","current","event","dialog","windows","commitCharacters","Prec","field","commitChars","baseTheme","FieldPos","line","FieldRange","_FieldRange","MapMode","Snippet","_Snippet","fieldPositions","lineStart","lineObj","baseIndent","indent","tabs","indentUnit","ranges","template","fields","m","seq","rawName","found","snip","_","brace","index","fieldMarker","Decoration","WidgetType","fieldRange","ActiveSnippet","_ActiveSnippet","mapped","setActive","moveToField","snippetState","fieldSelection","snippet","editor","spec","Text","Transaction","effects","addSnippetKeymap","snippetPointerHandler","moveField","dir","dispatch","last","clearSnippet","nextSnippetField","prevSnippetField","defaultSnippetKeymap","nextSnippetField","prevSnippetField","clearSnippet","snippetKeymap","Facet","maps","addSnippetKeymap","Prec","keymap","state","snippetCompletion","template","completion","snippet","__name","snippetPointerHandler","EditorView","event","view","active","snippetState","pos","match","fieldSelection","setActive","ActiveSnippet","defaults","closeBracketEffect","StateEffect","value","mapping","mapped","MapMode","closedBracket","RangeValue","bracketState","StateField","RangeSet","tr","line","__name","from","effect","closeBrackets","inputHandler","definedClosing","closing","ch","i","fromCodePoint","config","state","pos","android","EditorView","view","to","insert","sel","codePointSize","codePointAt","insertBracket","deleteBracketPair","dispatch","tokens","dont","changes","range","before","prevChar","token","nextChar","EditorSelection","closeBracketsKeymap","bracket","conf","tok","closed","handleSame","handleOpen","closedBracketAt","handleClose","found","doc","next","prev","open","close","closeBefore","_open","allowTriple","stringPrefixes","start","nodeStart","content","canStartStringAt","CharCategory","probablyInString","tree","syntaxTree","quoteToken","prefixes","node","maxPrefix","m","p","quotePos","first","parent","charCat","prefix","autocompletion","commitCharacters","completionState","completionConfig","completionPlugin","completionKeymapExt","baseTheme","completionKeymap","startCompletion","closeCompletion","moveCompletionSelection","acceptCompletion","Prec","keymap","SelectedDiagnostic","__name","from","to","diagnostic","LintState","_LintState","diagnostics","panel","selected","state","diagnosticFilter","lintConfig","sorted","a","b","deco","RangeSetBuilder","active","pos","scan","scanPos","docLen","i","next","p","d","widget","behind","check","sev","maxSeverity","Decoration","DiagnosticWidget","markClass","c","set","findDiagnostic","after","found","spec","hideTooltip","tr","tooltip","result","line","e","setDiagnosticsEffect","maybeEnableLint","effects","lintState","StateEffect","lintExtensions","setDiagnosticsEffect","StateEffect","togglePanel","movePanelSelection","lintState","StateField","LintState","Decoration","value","tr","mapped","selected","panel","selPos","findDiagnostic","lintConfig","effect","LintPanel","__name","f","showPanel","val","EditorView","s","activeMark","Decoration","lintTooltip","view","pos","side","diagnostics","lintState","found","start","end","from","to","spec","diagnosticFilter","lintConfig","diagnosticsTooltip","__name","crelt","d","renderDiagnostic","openLintPanel","field","maybeEnableLint","togglePanel","panel","getPanel","LintPanel","closeLintPanel","nextDiagnostic","sel","next","findDiagnostic","lintKeymap","openLintPanel","nextDiagnostic","lintConfig","Facet","input","i","x","combineConfig","__name","combineFilter","a","b","u","t","y","d","s","assignKeys","actions","assigned","name","ch","c","__name","renderDiagnostic","view","diagnostic","inPanel","_a","keys","crelt","action","i","fired","click","e","found","findDiagnostic","lintState","keyIndex","nameElt","markClass","DiagnosticWidget","WidgetType","sev","other","PanelItem","LintPanel","_LintPanel","onkeydown","event","closeLintPanel","onclick","selected","diagnostics","needsSync","newSelectedItem","seen","_start","_end","spec","item","j","sel","panel","scaleY","domPos","rm","prev","selectedIndex","field","selection","movePanelSelection","svg","content","attrs","underline","color","baseTheme","EditorView","severityWeight","maxSeverity","weight","d","w","lintExtensions","lintState","EditorView","state","selected","panel","Decoration","activeMark","hoverTooltip","lintTooltip","hideTooltip","baseTheme","basicSetup","lineNumbers","highlightActiveLineGutter","highlightSpecialChars","history","foldGutter","drawSelection","dropCursor","EditorState","indentOnInput","syntaxHighlighting","defaultHighlightStyle","bracketMatching","closeBrackets","autocompletion","rectangularSelection","crosshairCursor","highlightActiveLine","highlightSelectionMatches","keymap","closeBracketsKeymap","defaultKeymap","searchKeymap","historyKeymap","foldKeymap","completionKeymap","lintKeymap","Stack","_Stack","__name","p","stack","state","reducePos","pos","score","buffer","bufferBase","curContext","lookAhead","parent","_","i","cx","StackContext","start","action","_a","depth","type","parser","lookaheadRecord","dPrec","base","size","count","baseStateID","term","end","mustSink","cur","top","index","mustMove","scan","nextState","skipped","next","nextStart","nextEnd","value","off","isNode","sim","SimulatedStack","nextStates","best","s","v","result","reduce","target","backup","seen","explore","rDepth","found","other","dialectID","last","context","newCx","tracker","goto","StackBufferCursor","_StackBufferCursor","decodeArray","input","Type","array","out","stop","digit","CachedToken","nullToken","InputStream","ranges","offset","assoc","range","idx","resolved","token","endOffset","endPos","chunk","chunkPos","nextChunk","n","from","to","r","TokenGroup","data","id","readToken","LocalTokenGroup","precTable","elseToken","atEof","nextPos","ExternalTokenizer","options","group","precOffset","groupMask","dialect","accEnd","overrides","low","high","mid","findOffset","prev","tableData","tableOffset","iPrev","verbose","stackIDs","cutAt","tree","side","cursor","IterMode","FragmentCursor","fragments","nodeSet","fr","Tree","NodeProp","TokenCache","stream","actionIndex","main","tokenizers","mask","tokenizer","startIndex","set","pair","Parse","stacks","newStacks","stopped","stoppedTokens","tok","finished","findFinished","maxRemaining","a","b","outer","j","split","strictCx","cxHash","cached","match","inner","defaultReduce","actions","localStack","pushStackDedup","tokens","restarted","tokenEnd","force","forceBase","insert","Dialect","source","flags","disabled","x","ContextTracker","spec","LRParser","_LRParser","Parser","nodeNames","topTerms","nodeProps","setProp","nodeID","prop","propSpec","NodeSet","name","NodeType","tokenArray","getSpecializer","parse","w","loose","table","groupTag","terminal","slot","flag","deflt","config","copy","info","t","prec","values","part","descendantOp","Unit","identifier","callee","VariableName","queryIdentifier","queryVariableName","QueryCallee","space","colon","parenL","underscore","bracketL","dash","period","hash","percent","ampersand","backslash","newline","asterisk","isAlpha","ch","__name","isDigit","isHex","identifierTokens","id","varName","input","stack","inside","dashes","i","next","identifiers","ExternalTokenizer","queryIdentifiers","descendant","unitToken","cssHighlighting","styleTags","tags","spec_callee","spec_queryIdentifier","spec_QueryCallee","spec_AtKeyword","spec_identifier","parser","LRParser","LocalTokenGroup","value","_properties","properties","style","names","seen","prop","ch","name","__name","pseudoClasses","values","tags","atRules","label","identifier","variable","isVarArg","node","doc","_a","callee","VariablesByNode","NodeWeakMap","declSelector","astTop","cur","variableNames","isVariable","known","result","cursor","IterMode","option","defineCSSCompletionSource","context","state","pos","syntaxTree","isDash","parent","above","before","cssCompletionSource","cssLanguage","LRLanguage","parser","indentNodeProp","continuedIndent","foldNodeProp","foldInside","css","LanguageSupport","scriptText","StartCloseScriptTag","styleText","StartCloseStyleTag","textareaText","StartCloseTextareaTag","EndTag","SelfClosingEndTag","StartTag","StartScriptTag","StartStyleTag","StartTextareaTag","StartSelfClosingTag","StartCloseTag","NoMatchStartCloseTag","MismatchedStartCloseTag","missingCloseTag","IncompleteTag","IncompleteCloseTag","commentContent$1","Element","TagName","Attribute","AttributeName","AttributeValue","UnquotedAttributeValue","ScriptText","StyleText","TextareaText","OpenTag","CloseTag","Dialect_noMatch","Dialect_selfClosing","selfClosers","implicitlyClosed","closeOnOpen","nameChar","ch","__name","cachedName","cachedInput","cachedPos","tagNameAfter","input","offset","pos","next","name","question","bang","lessThan","greaterThan","slash","dash","ElementContext","parent","startTagTerms","elementContext","ContextTracker","context","term","stack","node","type","tagStart","ExternalTokenizer","close","cx","commentContent","dashes","i","inForeignElement","endTag","selfClosing","contentTokenizer","tag","textToken","endToken","lastState","state","matchedLen","scriptTokens","styleTokens","textareaTokens","htmlHighlighting","styleTags","tags","parser","LRParser","getAttrs","openTag","attrs","att","value","findTagName","tagNameNode","maybeNest","configureNesting","attributes","script","style","textarea","other","attr","parseMixed","id","n","open","tagName","to","nameNode","matches","from","last","noSemi","noSemiType","incdec","incdecPrefix","questionDot","JSXStartTag","insertSemi","spaces","newline","LineComment","BlockComment","Dialect_jsx","space","braceR","semicolon","slash","star","plus","minus","lt","comma","question","dot","bracketL","trackNewline","ContextTracker","context","term","insertSemicolon","ExternalTokenizer","input","stack","next","noSemicolon","after","noSemicolonType","operatorToken","mayPostfix","identifierChar","ch","start","__name","jsx","back","jsHighlight","styleTags","tags","spec_identifier","spec_word","spec_LessThan","parser","LRParser","LocalTokenGroup","value","snippets","snippetCompletion","typescriptSnippets","cache","NodeWeakMap","ScopeNodes","defID","type","node","def","id","__name","functionContext","gatherCompletions","getScope","doc","cached","completions","top","name","IterMode","gather","c","Identifier","dontComplete","localCompletionSource","context","inner","syntaxTree","isWord","options","pos","javascriptLanguage","LRLanguage","parser","indentNodeProp","continuedIndent","flatIndent","__name","context","after","closed","isCase","delimitedIndent","cx","foldNodeProp","foldInside","tree","open","close","_a","name","jsxSublanguage","node","defineLanguageFacet","typescriptLanguage","jsxLanguage","sublanguageProp","tsxLanguage","kwCompletion","keywords","typescriptKeywords","javascript","config","lang","completions","typescriptSnippets","snippets","LanguageSupport","ifNotIn","dontComplete","completeFromList","localCompletionSource","autoCloseTags","findOpenTag","elementName","doc","max","ch","android","EditorView","view","from","to","text","defaultInsert","base","state","closeTags","range","head","around","syntaxTree","empty","insert","EditorSelection","openTag","Targets","Charsets","Methods","Encs","Bool","S","Tags","GlobalAttrs","eventAttributes","a","Schema","__name","extraTags","extraAttrs","elementName","doc","tree","max","tag","name","findParentElement","skip","allowedChildren","schema","parentInfo","openTags","open","parent","tagName","identifier","completeTag","state","from","to","end","i","completeCloseTag","completeStartTag","pos","options","level","completeAttrName","elt","info","localAttrs","names","attrName","completeAttrValue","_a","nameNode","token","attrs","base","quoteStart","quoteEnd","value","htmlCompletionFor","context","syntaxTree","around","scan","before","last","htmlCompletionSourceWith","config","extraTags","extraAttrs","schema","Schema","context","htmlCompletionFor","__name","jsonParser","javascriptLanguage","defaultNesting","attrs","typescriptLanguage","jsxLanguage","tsxLanguage","cssLanguage","defaultAttrs","eventAttributes","name","htmlPlain","LRLanguage","parser","indentNodeProp","after","endElt","close","cur","last","foldNodeProp","node","first","bracketMatchingHandle","htmlLanguage","configureNesting","html","dialect","wrap","lang","LanguageSupport","autoCloseTags","javascript","css","selfClosers","EditorView","view","from","to","text","insertTransaction","base","state","closeTags","range","_a","_b","_c","didType","head","syntaxTree","tag","elementName","insert","EditorSelection","$editor","signal","$editingFacet","LOADING_EL_ID","setEditorLoading","loading","container","el","__name","renderEditor","editorContainer","editor","EditorView","basicSetup","html","css","javascript","autocompletion","onBuildSubmit","event","nameEl","descriptionEl","kindEl","cid","create","name","description","kind","facet","now","saveFacet","editFacet","ogFacet","url","id","loadURI","handleBuildFormSubmit","isListening","listenForExamplesEdit","target","rel","uri","facetFromURI","editFacetFromURL","idParam","out","output","data","f"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-V7SGZC62.js.map"}
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-VDIPTCDI.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-VDIPTCDI.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-VDIPTCDI.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-VDIPTCDI.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-VDIPTCDI.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-VDIPTCDI.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-VJVS6ZD2.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-VJVS6ZD2.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-VJVS6ZD2.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-VJVS6ZD2.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-VJVS6ZD2.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-VJVS6ZD2.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-W6JGGJUD.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-W6JGGJUD.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-W6JGGJUD.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-W6JGGJUD.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-W6JGGJUD.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-W6JGGJUD.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-WLXGGMHC.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-WLXGGMHC.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-WLXGGMHC.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-WLXGGMHC.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-WLXGGMHC.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-WLXGGMHC.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-WTHT2MFL.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-WTHT2MFL.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-WTHT2MFL.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-WTHT2MFL.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-WTHT2MFL.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-WTHT2MFL.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-YEYXC3F5.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-YEYXC3F5.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-YEYXC3F5.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-YEYXC3F5.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-YEYXC3F5.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-YEYXC3F5.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-YI4JYMVI.js
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-YI4JYMVI.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-YI4JYMVI.js.br
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-YI4JYMVI.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-YI4JYMVI.js.map
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-YI4JYMVI.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-YS77VANJ.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-YS77VANJ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-YS77VANJ.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-YS77VANJ.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-YS77VANJ.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-YS77VANJ.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-ZCBN4C3I.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-ZCBN4C3I.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-ZCBN4C3I.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-ZCBN4C3I.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-ZCBN4C3I.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-ZCBN4C3I.js.map
+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-ZMYK46VQ.js
··· 1 + import{a as u}from"./chunk-TPYPBODG.js";import{a as n}from"./chunk-HB7BQ45T.js";import{a as i}from"./chunk-BFIVCPQF.js";function f({id:t}){return async()=>{if(!confirm("Are you sure you want to delete this facet?"))return;let o=await n(),e=await u(o.facets);o.facets.save(e.filter(c=>c.id!==t))}}i(f,"deleteFacet");async function d(t){let a=await n(),e=(await u(a.facets)).filter(c=>c.id!==t.id);await a.facets.save([...e,{...t,updatedAt:new Date().toISOString()}])}i(d,"saveFacet");export{f as a,d as b}; 2 + 3 + //# sourceMappingURL=./chunk-ZMYK46VQ.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-ZMYK46VQ.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/chunk-ZMYK46VQ.js.map
··· 1 + {"version":3,"sources":["/common/pages/crud.js"],"sourcesContent":["import * as Output from \"~/common/output.js\";\nimport { output } from \"./output.js\";\n\n/**\n * @import {Facet} from \"~/definitions/types.d.ts\"\n */\n\n/**\n * @param {{ id: string }} _\n */\nexport function deleteFacet({ id }) {\n return async () => {\n const c = confirm(\"Are you sure you want to delete this facet?\");\n if (!c) return;\n\n const out = await output();\n const col = await Output.data(out.facets);\n\n out.facets.save(col.filter((c) => !(c.id === id)));\n };\n}\n\n/**\n * @param {Facet} facet\n */\nexport async function saveFacet(facet) {\n const out = await output();\n const col = await Output.data(out.facets);\n const colWithoutId = col.filter((c) => c.id !== facet.id);\n await out.facets.save([...colWithoutId, {\n ...facet,\n updatedAt: new Date().toISOString(),\n }]);\n}\n"],"mappings":"wHAUO,SAASA,EAAY,CAAE,GAAAC,CAAG,EAAG,CAClC,MAAO,UAAY,CAEjB,GAAI,CADM,QAAQ,6CAA6C,EACvD,OAER,IAAMC,EAAM,MAAMC,EAAO,EACnBC,EAAM,MAAaC,EAAKH,EAAI,MAAM,EAExCA,EAAI,OAAO,KAAKE,EAAI,OAAQ,GAAQ,EAAE,KAAOH,CAAG,CAAC,CACnD,CACF,CAVgBK,EAAAN,EAAA,eAehB,eAAsBO,EAAUC,EAAO,CACrC,IAAMN,EAAM,MAAMC,EAAO,EAEnBM,GADM,MAAaJ,EAAKH,EAAI,MAAM,GACf,OAAQ,GAAM,EAAE,KAAOM,EAAM,EAAE,EACxD,MAAMN,EAAI,OAAO,KAAK,CAAC,GAAGO,EAAc,CACtC,GAAGD,EACH,UAAW,IAAI,KAAK,EAAE,YAAY,CACpC,CAAC,CAAC,CACJ,CARsBF,EAAAC,EAAA","names":["deleteFacet","id","out","output","col","data","__name","saveFacet","facet","colWithoutId"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-ZMYK46VQ.js.map"}
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/cid.js
··· 1 + ../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/common/cid.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/cid.js.br
··· 1 + ../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/common/cid.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/cid.js.map
··· 1 + ../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/common/cid.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/compare.js
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/compare.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/compare.js.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/compare.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/compare.js.map
··· 1 + ../../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/common/compare.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/element.js
··· 1 + ../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/common/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/element.js.br
··· 1 + ../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/common/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/element.js.map
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/common/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/facets/category.js
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/facets/category.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/facets/category.js.br
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/facets/category.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/facets/category.js.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/facets/category.js.map
+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/facets/constants.js
··· 1 + import{a,b}from"../../chunk-JQ2XTL3Q.js";import"../../chunk-BFIVCPQF.js";export{b as STARTING_SET_URIS,a as TYPE}; 2 + 3 + //# sourceMappingURL=./constants.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/facets/constants.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/facets/constants.js.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/facets/constants.js.map
+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/facets/prelude.js
··· 1 + import{a}from"../../chunk-4KWB43C2.js";import"../../chunk-DFKPZAA6.js";import"../../chunk-6NXS3EXH.js";import"../../chunk-RCK53RB4.js";import"../../chunk-YI4JYMVI.js";import"../../chunk-PBZITCUN.js";import"../../chunk-N6NGHZ4B.js";import"../../chunk-2CFBJKYZ.js";import"../../chunk-524HX7V4.js";import"../../chunk-DFARJRPB.js";import"../../chunk-4I6PUBR2.js";import"../../chunk-GSG5OS62.js";import"../../chunk-BFIVCPQF.js";export{a as insertPreludes}; 2 + 3 + //# sourceMappingURL=./prelude.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/facets/prelude.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/facets/prelude.js.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/facets/prelude.js.map
+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/facets/utils.js
··· 1 + import{a}from"../../chunk-IGGXGJJG.js";import"../../chunk-DFKPZAA6.js";import"../../chunk-6NXS3EXH.js";import"../../chunk-RCK53RB4.js";import"../../chunk-YI4JYMVI.js";import"../../chunk-PBZITCUN.js";import"../../chunk-N6NGHZ4B.js";import"../../chunk-2CFBJKYZ.js";import"../../chunk-524HX7V4.js";import"../../chunk-DFARJRPB.js";import"../../chunk-4I6PUBR2.js";import"../../chunk-GSG5OS62.js";import"../../chunk-BFIVCPQF.js";export{a as facetFromURI}; 2 + 3 + //# sourceMappingURL=./utils.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/facets/utils.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/facets/utils.js.map
··· 1 + ../../../bafybeibpmqpxuvey34kzaxj3yyprwbkgvhbuz3xpxb74jpk7nxgxu2yr74/common/facets/utils.js.map
+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/foundation.js
··· 1 + import{a,b,c,d}from"../chunk-B4XMDCCS.js";import"../chunk-4I6PUBR2.js";import"../chunk-BFIVCPQF.js";export{a as GROUP,b as config,c as default,d as findExistingOrAdd}; 2 + 3 + //# sourceMappingURL=./foundation.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/foundation.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/foundation.js.map
··· 1 + ../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/foundation.js.map
+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/loader.js
··· 1 + import{a,b,c,d}from"../chunk-DFKPZAA6.js";import"../chunk-6NXS3EXH.js";import"../chunk-RCK53RB4.js";import"../chunk-YI4JYMVI.js";import"../chunk-PBZITCUN.js";import"../chunk-N6NGHZ4B.js";import"../chunk-2CFBJKYZ.js";import"../chunk-524HX7V4.js";import"../chunk-DFARJRPB.js";import"../chunk-4I6PUBR2.js";import"../chunk-GSG5OS62.js";import"../chunk-BFIVCPQF.js";export{a as createLoader,c as ensureHTML,b as loadURI,d as renderError}; 2 + 3 + //# sourceMappingURL=./loader.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/loader.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/loader.js.map
··· 1 + ../../bafybeiairw5zug6xd6xosgopcoyu3ieg4kiiesvqeszsk2xvipvsoxasvy/common/loader.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/output.js
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/output.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/output.js.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/output.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/output.js.map
··· 1 + ../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/common/output.js.map
+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/build.js
··· 1 + import{a,b,c,d}from"../../chunk-V7SGZC62.js";import"../../chunk-ZMYK46VQ.js";import"../../chunk-TPYPBODG.js";import"../../chunk-HB7BQ45T.js";import"../../chunk-B4XMDCCS.js";import"../../chunk-4KWB43C2.js";import"../../chunk-IGGXGJJG.js";import"../../chunk-DFKPZAA6.js";import"../../chunk-6NXS3EXH.js";import"../../chunk-RCK53RB4.js";import"../../chunk-YI4JYMVI.js";import"../../chunk-PBZITCUN.js";import"../../chunk-N6NGHZ4B.js";import"../../chunk-2CFBJKYZ.js";import"../../chunk-524HX7V4.js";import"../../chunk-DFARJRPB.js";import"../../chunk-4I6PUBR2.js";import"../../chunk-GSG5OS62.js";import"../../chunk-BFIVCPQF.js";export{d as editFacetFromURL,b as handleBuildFormSubmit,c as listenForExamplesEdit,a as renderEditor}; 2 + 3 + //# sourceMappingURL=./build.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/build.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/build.js.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/pages/build.js.map
+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/crud.js
··· 1 + import{a,b}from"../../chunk-ZMYK46VQ.js";import"../../chunk-TPYPBODG.js";import"../../chunk-HB7BQ45T.js";import"../../chunk-B4XMDCCS.js";import"../../chunk-4KWB43C2.js";import"../../chunk-DFKPZAA6.js";import"../../chunk-6NXS3EXH.js";import"../../chunk-RCK53RB4.js";import"../../chunk-YI4JYMVI.js";import"../../chunk-PBZITCUN.js";import"../../chunk-N6NGHZ4B.js";import"../../chunk-2CFBJKYZ.js";import"../../chunk-524HX7V4.js";import"../../chunk-DFARJRPB.js";import"../../chunk-4I6PUBR2.js";import"../../chunk-GSG5OS62.js";import"../../chunk-BFIVCPQF.js";export{a as deleteFacet,b as saveFacet}; 2 + 3 + //# sourceMappingURL=./crud.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/crud.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/crud.js.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/pages/crud.js.map
+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/dashboard.js
··· 1 + import{a}from"../../chunk-66S4I3DC.js";import"../../chunk-CVJ7NIWC.js";import"../../chunk-RC5PZNFM.js";import"../../chunk-7EUCOO7A.js";import"../../chunk-WLXGGMHC.js";import"../../chunk-QVM63RP5.js";import"../../chunk-UYT7NSKP.js";import"../../chunk-L4VK33Z2.js";import"../../chunk-MWEXZQ4O.js";import"../../chunk-ZMYK46VQ.js";import"../../chunk-TPYPBODG.js";import"../../chunk-HB7BQ45T.js";import"../../chunk-B4XMDCCS.js";import"../../chunk-4KWB43C2.js";import"../../chunk-IGGXGJJG.js";import"../../chunk-DFKPZAA6.js";import"../../chunk-6NXS3EXH.js";import"../../chunk-RCK53RB4.js";import"../../chunk-YI4JYMVI.js";import"../../chunk-PBZITCUN.js";import"../../chunk-N6NGHZ4B.js";import"../../chunk-2CFBJKYZ.js";import"../../chunk-524HX7V4.js";import"../../chunk-DFARJRPB.js";import"../../chunk-ALTFDO6Y.js";import"../../chunk-K2CRUTCH.js";import"../../chunk-4I6PUBR2.js";import"../../chunk-GSG5OS62.js";import"../../chunk-BFIVCPQF.js";export{a as renderList}; 2 + 3 + //# sourceMappingURL=./dashboard.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/dashboard.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/dashboard.js.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/pages/dashboard.js.map
+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/from-uri.js
··· 1 + import{a}from"../../chunk-L4VK33Z2.js";import"../../chunk-MWEXZQ4O.js";import"../../chunk-ZMYK46VQ.js";import"../../chunk-TPYPBODG.js";import"../../chunk-HB7BQ45T.js";import"../../chunk-B4XMDCCS.js";import"../../chunk-4KWB43C2.js";import"../../chunk-IGGXGJJG.js";import"../../chunk-DFKPZAA6.js";import"../../chunk-6NXS3EXH.js";import"../../chunk-RCK53RB4.js";import"../../chunk-YI4JYMVI.js";import"../../chunk-PBZITCUN.js";import"../../chunk-N6NGHZ4B.js";import"../../chunk-2CFBJKYZ.js";import"../../chunk-524HX7V4.js";import"../../chunk-DFARJRPB.js";import"../../chunk-4I6PUBR2.js";import"../../chunk-GSG5OS62.js";import"../../chunk-BFIVCPQF.js";export{a as openAddFromURIModal}; 2 + 3 + //# sourceMappingURL=./from-uri.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/from-uri.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/from-uri.js.map
··· 1 + ../../../bafybeibbvywkxql7k3lipdasrnrtjlmgt6ks3hkv3d6mimsmui6pcpwos4/common/pages/from-uri.js.map
+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/grid.js
··· 1 + import{a,b,c,d}from"../../chunk-B4ATHCVD.js";import"../../chunk-TPYPBODG.js";import"../../chunk-HB7BQ45T.js";import"../../chunk-B4XMDCCS.js";import"../../chunk-4KWB43C2.js";import"../../chunk-IGGXGJJG.js";import"../../chunk-DFKPZAA6.js";import"../../chunk-6NXS3EXH.js";import"../../chunk-RCK53RB4.js";import"../../chunk-YI4JYMVI.js";import"../../chunk-PBZITCUN.js";import"../../chunk-N6NGHZ4B.js";import"../../chunk-2CFBJKYZ.js";import"../../chunk-524HX7V4.js";import"../../chunk-DFARJRPB.js";import"../../chunk-4I6PUBR2.js";import"../../chunk-GSG5OS62.js";import"../../chunk-BFIVCPQF.js";export{c as insertToggleButtons,d as monitorToggleButtonStates,a as setupFilter,b as setupOutputIndicator}; 2 + 3 + //# sourceMappingURL=./grid.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/grid.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/grid.js.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/pages/grid.js.map
+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/guide.js
··· 1 + import{a}from"../../chunk-RHKSCICU.js";import"../../chunk-4KWB43C2.js";import"../../chunk-DFKPZAA6.js";import"../../chunk-6NXS3EXH.js";import"../../chunk-RCK53RB4.js";import"../../chunk-YI4JYMVI.js";import"../../chunk-PBZITCUN.js";import"../../chunk-N6NGHZ4B.js";import"../../chunk-2CFBJKYZ.js";import"../../chunk-524HX7V4.js";import"../../chunk-DFARJRPB.js";import"../../chunk-4I6PUBR2.js";import"../../chunk-GSG5OS62.js";import"../../chunk-BFIVCPQF.js";export{a as setupSampleButton}; 2 + 3 + //# sourceMappingURL=./guide.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/guide.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/guide.js.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/pages/guide.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/nav.js
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/pages/nav.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/nav.js.br
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/pages/nav.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/nav.js.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/pages/nav.js.map
+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/output.js
··· 1 + import{a}from"../../chunk-HB7BQ45T.js";import"../../chunk-B4XMDCCS.js";import"../../chunk-4KWB43C2.js";import"../../chunk-DFKPZAA6.js";import"../../chunk-6NXS3EXH.js";import"../../chunk-RCK53RB4.js";import"../../chunk-YI4JYMVI.js";import"../../chunk-PBZITCUN.js";import"../../chunk-N6NGHZ4B.js";import"../../chunk-2CFBJKYZ.js";import"../../chunk-524HX7V4.js";import"../../chunk-DFARJRPB.js";import"../../chunk-4I6PUBR2.js";import"../../chunk-GSG5OS62.js";import"../../chunk-BFIVCPQF.js";export{a as output}; 2 + 3 + //# sourceMappingURL=./output.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/output.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/output.js.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/pages/output.js.map
+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/ppr.js
··· 1 + import{a as y,b as E,c as F,d as R}from"../../chunk-B4ATHCVD.js";import{a as w}from"../../chunk-RHKSCICU.js";import{a as v,b}from"../../chunk-U6O2MSBF.js";import{a as B,b as S,c as T,d as L}from"../../chunk-V7SGZC62.js";import{a as N}from"../../chunk-66S4I3DC.js";import"../../chunk-CVJ7NIWC.js";import"../../chunk-RC5PZNFM.js";import"../../chunk-7EUCOO7A.js";import"../../chunk-WLXGGMHC.js";import"../../chunk-QVM63RP5.js";import"../../chunk-UYT7NSKP.js";import"../../chunk-L4VK33Z2.js";import"../../chunk-MWEXZQ4O.js";import"../../chunk-ZMYK46VQ.js";import"../../chunk-TPYPBODG.js";import"../../chunk-HB7BQ45T.js";import"../../chunk-B4XMDCCS.js";import"../../chunk-4KWB43C2.js";import"../../chunk-IGGXGJJG.js";import"../../chunk-DFKPZAA6.js";import"../../chunk-6NXS3EXH.js";import"../../chunk-RCK53RB4.js";import"../../chunk-YI4JYMVI.js";import"../../chunk-PBZITCUN.js";import"../../chunk-N6NGHZ4B.js";import"../../chunk-2CFBJKYZ.js";import"../../chunk-524HX7V4.js";import"../../chunk-DFARJRPB.js";import"../../chunk-ALTFDO6Y.js";import"../../chunk-K2CRUTCH.js";import"../../chunk-4I6PUBR2.js";import"../../chunk-GSG5OS62.js";import{a as i}from"../../chunk-BFIVCPQF.js";var q=new URL(document.baseURI).pathname;function k(n){let e=n.replace(/\/$/,""),o=q.replace(/\/$/,"");return o.length>0&&e.startsWith(o)?e.slice(o.length):e}i(k,"relativePathname");async function G(n){let e=k(n.pathname);switch(v(),b(),y(),F(),await R(),await E(),e){case"/build":B(),S(),T(),await L();break;case"/dashboard":await N();break;case"/guide":w();break;default:break}}i(G,"initJsBasedOnPage");G(new URL(location.href));"navigation"in globalThis&&globalThis.navigation.addEventListener("navigate",x);function x(n){if(!n.canIntercept)return;let e=new URL(n.destination.url);if(e.origin!==location.origin)return;let s=k(e.pathname).split("/").filter(Boolean);s.length!==0&&(s.length>2||s[0]!=="l"&&(s.includes("chronicle")||n.intercept({scroll:"manual",async handler(){let M=[...document.querySelectorAll("#diffuse-nav a, #nav-overflow-menu a")],u=i(t=>t.replace(/^\//,""),"stripSlash"),l=M.find(t=>u(new URL(t.href).pathname)===u(e.pathname)),a=l?.querySelector("i"),c=a?.className,r,m=l?setTimeout(()=>{a?a.className="ph-bold ph-spinner animate-spin":(r=document.createElement("i"),r.className="ph-bold ph-spinner animate-spin",(l.querySelector("span")??l).prepend(r))},250):void 0,p;try{let t=await fetch(e);if(!t.ok)throw new Error(`${t.status}`);p=await t.text()}catch{clearTimeout(m),a&&c!==void 0&&(a.className=c),r?.remove(),location.href=e.href;return}finally{clearTimeout(m),a&&c!==void 0&&(a.className=c),r?.remove()}let h=new DOMParser().parseFromString(p,"text/html"),f=h.querySelector("main"),d=document.querySelector("main");if(!f||!d){location.href=e.href;return}document.title=h.title;let g=document.createRange();g.selectNode(d);let U=g.createContextualFragment(f.innerHTML??"");d.innerHTML="",d.append(U),G(e),window.scrollTo({top:0,behavior:"instant"})}})))}i(x,"navigateHandler"); 2 + 3 + //# sourceMappingURL=./ppr.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/ppr.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/ppr.js.map
··· 1 + {"version":3,"sources":["/ppr.js"],"sourcesContent":["import * as Build from \"./build.js\";\nimport * as Dashboard from \"./dashboard.js\";\nimport * as Grid from \"./grid.js\";\nimport * as Guide from \"./guide.js\";\nimport * as Nav from \"./nav.js\";\n\n/** Base pathname of the app (e.g. \"/\" at root, \"/diffuse/\" in a subdirectory). */\nconst BASE_PATHNAME = new URL(document.baseURI).pathname;\n\n/**\n * Strips the app's base path prefix from an absolute pathname,\n * returning a root-relative path like \"/build\".\n *\n * @param {string} pathname\n */\nfunction relativePathname(pathname) {\n const stripped = pathname.replace(/\\/$/, \"\");\n const base = BASE_PATHNAME.replace(/\\/$/, \"\");\n return base.length > 0 && stripped.startsWith(base)\n ? stripped.slice(base.length)\n : stripped;\n}\n\n/**\n * @param {URL} url\n */\nasync function initJsBasedOnPage(url) {\n const path = relativePathname(url.pathname);\n\n Nav.update();\n Nav.watchResize();\n\n Grid.setupFilter();\n Grid.insertToggleButtons();\n await Grid.monitorToggleButtonStates();\n await Grid.setupOutputIndicator();\n\n switch (path) {\n case \"/build\":\n Build.renderEditor();\n Build.handleBuildFormSubmit();\n Build.listenForExamplesEdit();\n await Build.editFacetFromURL();\n break;\n case \"/dashboard\":\n await Dashboard.renderList();\n break;\n case \"/guide\":\n Guide.setupSampleButton();\n break;\n default:\n break;\n }\n}\n\ninitJsBasedOnPage(new URL(location.href));\n\n// Partial page updates for kitchen navigation using the Navigation API.\n// Intercepts nav link clicks, fetches the new page, and swaps <main> content\n// instead of doing a full page load.\n\nif (\"navigation\" in globalThis) {\n /** @type {any} */ (globalThis).navigation.addEventListener(\n \"navigate\",\n navigateHandler,\n );\n}\n\n/** @param {any} event */\nfunction navigateHandler(event) {\n if (!event.canIntercept) return;\n\n const url = new URL(event.destination.url);\n if (url.origin !== location.origin) return;\n\n // Only intercept paths one level deep\n const relative = relativePathname(url.pathname);\n const parts = relative.split(\"/\").filter(Boolean);\n if (parts.length === 0) return;\n if (parts.length > 2) return;\n\n // Skip the loader page\n if (parts[0] === \"l\") return;\n if (parts.includes(\"chronicle\")) return;\n\n event.intercept({\n scroll: \"manual\",\n async handler() {\n const navLinks = /** @type {HTMLAnchorElement[]} */ ([\n ...document.querySelectorAll(\"#diffuse-nav a, #nav-overflow-menu a\"),\n ]);\n const stripSlash = (/** @type {string} */ p) => p.replace(/^\\//, \"\");\n const navLink = navLinks.find(\n (a) =>\n stripSlash(new URL(a.href).pathname) === stripSlash(url.pathname),\n );\n\n const icon = navLink?.querySelector(\"i\");\n const originalIconClass = icon?.className;\n let addedSpinner = /** @type {HTMLElement | undefined} */ (undefined);\n\n const loadingTimer = navLink\n ? setTimeout(() => {\n if (icon) {\n icon.className = \"ph-bold ph-spinner animate-spin\";\n } else {\n addedSpinner = document.createElement(\"i\");\n addedSpinner.className = \"ph-bold ph-spinner animate-spin\";\n const span = navLink.querySelector(\"span\");\n (span ?? navLink).prepend(addedSpinner);\n }\n }, 250)\n : undefined;\n\n let html;\n\n try {\n const response = await fetch(url);\n if (!response.ok) throw new Error(`${response.status}`);\n html = await response.text();\n } catch {\n clearTimeout(loadingTimer);\n if (icon && originalIconClass !== undefined) icon.className = originalIconClass;\n addedSpinner?.remove();\n location.href = url.href;\n return;\n } finally {\n clearTimeout(loadingTimer);\n if (icon && originalIconClass !== undefined) icon.className = originalIconClass;\n addedSpinner?.remove();\n }\n\n const parser = new DOMParser();\n const doc = parser.parseFromString(html, \"text/html\");\n\n const newMain = doc.querySelector(\"main\");\n const currentMain = document.querySelector(\"main\");\n\n if (!newMain || !currentMain) {\n location.href = url.href;\n return;\n }\n\n document.title = doc.title;\n\n // Replace <main> content\n const range = document.createRange();\n range.selectNode(currentMain);\n const documentFragment = range.createContextualFragment(\n newMain.innerHTML ?? \"\",\n );\n\n currentMain.innerHTML = \"\";\n currentMain.append(documentFragment);\n\n initJsBasedOnPage(url);\n\n window.scrollTo({ top: 0, behavior: \"instant\" });\n },\n });\n}\n"],"mappings":"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","names":["BASE_PATHNAME","relativePathname","pathname","stripped","base","__name","initJsBasedOnPage","url","path","update","watchResize","setupFilter","insertToggleButtons","monitorToggleButtonStates","setupOutputIndicator","renderEditor","handleBuildFormSubmit","listenForExamplesEdit","editFacetFromURL","renderList","setupSampleButton","navigateHandler","event","parts","navLinks","stripSlash","p","navLink","a","icon","originalIconClass","addedSpinner","loadingTimer","html","response","doc","newMain","currentMain","range","documentFragment"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/common/pages/ppr.js.map"}
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/version-upgrade.js
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/pages/version-upgrade.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/version-upgrade.js.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/pages/version-upgrade.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/pages/version-upgrade.js.map
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/pages/version-upgrade.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/playlist.js
··· 1 + ../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/common/playlist.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/playlist.js.br
··· 1 + ../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/common/playlist.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/playlist.js.map
··· 1 + ../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/common/playlist.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/signal.js
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/signal.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/signal.js.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/signal.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/signal.js.map
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/common/signal.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/temporal.js
··· 1 + ../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/common/temporal.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/temporal.js.br
··· 1 + ../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/common/temporal.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/temporal.js.map
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/temporal.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/track.js
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/track.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/track.js.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/track.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/track.js.map
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/track.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/utils.js
··· 1 + ../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/common/utils.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/utils.js.br
··· 1 + ../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/common/utils.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/utils.js.map
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/common/utils.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/webawesome/detect-dark.js
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/detect-dark.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/webawesome/detect-dark.js.br
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/detect-dark.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/webawesome/detect-dark.js.map
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/detect-dark.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/webawesome/phosphor/bold.js
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/bold.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/webawesome/phosphor/bold.js.br
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/bold.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/webawesome/phosphor/bold.js.map
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/bold.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/webawesome/phosphor/duotone.js
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/duotone.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/webawesome/phosphor/duotone.js.br
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/duotone.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/webawesome/phosphor/duotone.js.map
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/duotone.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/webawesome/phosphor/fill.js
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/fill.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/webawesome/phosphor/fill.js.br
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/fill.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/webawesome/phosphor/fill.js.map
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/fill.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/webawesome/phosphor/light.js
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/light.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/webawesome/phosphor/light.js.br
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/light.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/webawesome/phosphor/light.js.map
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/light.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/webawesome/phosphor/regular.js
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/regular.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/webawesome/phosphor/regular.js.br
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/regular.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/webawesome/phosphor/regular.js.map
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/regular.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/webawesome/phosphor/thin.js
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/thin.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/webawesome/phosphor/thin.js.br
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/thin.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/webawesome/phosphor/thin.js.map
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/thin.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/worker.js
··· 1 + ../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/common/worker.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/worker.js.br
··· 1 + ../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/common/worker.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/worker.js.map
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/common/worker.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/worker/rpc-channel.js
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/worker/rpc-channel.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/worker/rpc-channel.js.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/worker/rpc-channel.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/common/worker/rpc-channel.js.map
··· 1 + ../../../bafybeidql7hdkrjfygjungtaqteq4sjgcxcjpndgmjqp7yt4rjqzrdfvja/common/worker/rpc-channel.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/configurator/input/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/configurator/input/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/configurator/input/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/configurator/input/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/configurator/input/element.js.map
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/components/configurator/input/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/configurator/input/worker.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/configurator/input/worker.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/configurator/input/worker.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/configurator/input/worker.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/configurator/input/worker.js.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/configurator/input/worker.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/configurator/output/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/configurator/output/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/configurator/output/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/configurator/output/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/configurator/output/element.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/configurator/output/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/configurator/scrobbles/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/configurator/scrobbles/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/configurator/scrobbles/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/configurator/scrobbles/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/configurator/scrobbles/element.js.map
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/configurator/scrobbles/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/engine/audio/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/engine/audio/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/engine/audio/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/engine/audio/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/engine/audio/element.js.map
··· 1 + ../../../../bafybeibbvywkxql7k3lipdasrnrtjlmgt6ks3hkv3d6mimsmui6pcpwos4/components/engine/audio/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/engine/queue/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/engine/queue/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/engine/queue/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/engine/queue/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/engine/queue/element.js.map
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/components/engine/queue/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/engine/queue/worker.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/engine/queue/worker.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/engine/queue/worker.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/engine/queue/worker.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/engine/queue/worker.js.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/engine/queue/worker.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/engine/repeat-shuffle/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/engine/repeat-shuffle/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/engine/repeat-shuffle/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/engine/repeat-shuffle/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/engine/repeat-shuffle/element.js.map
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/engine/repeat-shuffle/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/engine/scope/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/engine/scope/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/engine/scope/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/engine/scope/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/engine/scope/element.js.map
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/components/engine/scope/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/common.js
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/common.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/common.js.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/common.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/common.js.map
··· 1 + ../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/input/common.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/https/common.js
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/https/common.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/https/common.js.br
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/https/common.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/https/common.js.map
··· 1 + ../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/components/input/https/common.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/https/constants.js
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/https/constants.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/https/constants.js.br
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/https/constants.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/https/constants.js.map
··· 1 + ../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/components/input/https/constants.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/https/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/https/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/https/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/https/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/https/element.js.map
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/components/input/https/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/https/worker.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/https/worker.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/https/worker.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/https/worker.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/https/worker.js.map
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/https/worker.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/icecast/common.js
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/icecast/common.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/icecast/common.js.br
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/icecast/common.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/icecast/common.js.map
··· 1 + ../../../../bafybeiexuhqumeljxdmmsdfet5oh2h7pam6fy7gbktqfbsai5qfu2ze6hq/components/input/icecast/common.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/icecast/constants.js
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/icecast/constants.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/icecast/constants.js.br
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/icecast/constants.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/icecast/constants.js.map
··· 1 + ../../../../bafybeiexuhqumeljxdmmsdfet5oh2h7pam6fy7gbktqfbsai5qfu2ze6hq/components/input/icecast/constants.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/icecast/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/icecast/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/icecast/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/icecast/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/icecast/element.js.map
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/components/input/icecast/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/icecast/worker.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/icecast/worker.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/icecast/worker.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/icecast/worker.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/icecast/worker.js.map
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/icecast/worker.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/local/common.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/local/common.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/local/common.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/local/common.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/local/common.js.map
··· 1 + ../../../../bafybeiftqofdq4smwmja7bhcconzsevvy3hqxq2mhyujfz4r5zdx4cb5ma/components/input/local/common.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/local/constants.js
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/local/constants.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/local/constants.js.br
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/local/constants.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/local/constants.js.map
··· 1 + ../../../../bafybeiftqofdq4smwmja7bhcconzsevvy3hqxq2mhyujfz4r5zdx4cb5ma/components/input/local/constants.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/local/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/local/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/local/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/local/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/local/element.js.map
··· 1 + ../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/components/input/local/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/local/worker.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/local/worker.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/local/worker.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/local/worker.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/local/worker.js.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/local/worker.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/opensubsonic/class.js
··· 1 + ../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/components/input/opensubsonic/class.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/opensubsonic/class.js.br
··· 1 + ../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/components/input/opensubsonic/class.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/opensubsonic/class.js.map
··· 1 + ../../../../bafybeidxl54c4ymomv6kytxqps6b5di34hgltpvyomx52g65lplv6dosxy/components/input/opensubsonic/class.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/opensubsonic/common.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/opensubsonic/common.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/opensubsonic/common.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/opensubsonic/common.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/opensubsonic/common.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/input/opensubsonic/common.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/opensubsonic/constants.js
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/opensubsonic/constants.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/opensubsonic/constants.js.br
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/opensubsonic/constants.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/opensubsonic/constants.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/input/opensubsonic/constants.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/opensubsonic/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/opensubsonic/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/opensubsonic/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/opensubsonic/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/opensubsonic/element.js.map
··· 1 + ../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/components/input/opensubsonic/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/opensubsonic/worker.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/opensubsonic/worker.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/opensubsonic/worker.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/opensubsonic/worker.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/opensubsonic/worker.js.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/opensubsonic/worker.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/s3/common.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/s3/common.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/s3/common.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/s3/common.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/s3/common.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/input/s3/common.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/s3/constants.js
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/s3/constants.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/s3/constants.js.br
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/s3/constants.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/s3/constants.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/input/s3/constants.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/s3/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/s3/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/s3/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/s3/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/s3/element.js.map
··· 1 + ../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/components/input/s3/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/s3/worker.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/s3/worker.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/s3/worker.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/s3/worker.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/input/s3/worker.js.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/input/s3/worker.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/auto-queue/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/auto-queue/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/auto-queue/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/auto-queue/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/auto-queue/element.js.map
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/orchestrator/auto-queue/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/favourites/common.js
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/orchestrator/favourites/common.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/favourites/common.js.br
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/orchestrator/favourites/common.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/favourites/common.js.map
··· 1 + ../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/components/orchestrator/favourites/common.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/favourites/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/favourites/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/favourites/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/favourites/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/favourites/element.js.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/favourites/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/favourites/worker.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/favourites/worker.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/favourites/worker.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/favourites/worker.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/favourites/worker.js.map
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/orchestrator/favourites/worker.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/media-session/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/media-session/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/media-session/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/media-session/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/media-session/element.js.map
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/orchestrator/media-session/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/offline/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/offline/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/offline/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/offline/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/offline/element.js.map
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/orchestrator/offline/element.js.map
+33
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/output/element.js
··· 1 + import"../../../chunk-CPZNM23P.js";import"../../../chunk-G2MFBCD7.js";import"../../../chunk-46J3YOS4.js";import"../../../chunk-M33EQ5FN.js";import{a as u}from"../../../chunk-HDWT7CXU.js";import"../../../chunk-TTDW3IDD.js";import"../../../chunk-RJJBOBOS.js";import"../../../chunk-YEYXC3F5.js";import"../../../chunk-6NC6NOLO.js";import"../../../chunk-7VVACK5Z.js";import"../../../chunk-TAWLQTA5.js";import"../../../chunk-74D5IDBG.js";import{a as i,b as d}from"../../../chunk-7EUCOO7A.js";import"../../../chunk-WLXGGMHC.js";import"../../../chunk-QVM63RP5.js";import"../../../chunk-UYT7NSKP.js";import"../../../chunk-MWEXZQ4O.js";import"../../../chunk-JQ2XTL3Q.js";import"../../../chunk-K2CRUTCH.js";import"../../../chunk-GKONEEZQ.js";import"../../../chunk-6TMSPXBP.js";import"../../../chunk-4I6PUBR2.js";import{a as r}from"../../../chunk-BFIVCPQF.js";var o=class extends d{static{r(this,"OutputOrchestrator")}static NAME="diffuse/orchestrator/output";get output(){let t=this.root().querySelector("#do-output__output");if(!t)throw new Error("Output orchestrator did not render yet.");return t}get outputConfigurator(){let t=this.root().querySelector("#do-output__dc-output");if(!t)throw new Error("Output orchestrator did not render yet.");return t}get facets(){return this.output.facets}get playlistItems(){return this.output.playlistItems}get tracks(){return this.output.tracks}get ready(){return this.output.ready}get activated(){return this.outputConfigurator.activated.bind(this.outputConfigurator)}get deselect(){return this.outputConfigurator.deselect.bind(this.outputConfigurator)}get hasDefault(){return this.outputConfigurator.hasDefault.bind(this.outputConfigurator)}get hasSelected(){return this.outputConfigurator.hasSelected.bind(this.outputConfigurator)}get loadSelected(){return this.outputConfigurator.loadSelected.bind(this.outputConfigurator)}get options(){return this.outputConfigurator.options.bind(this.outputConfigurator)}get select(){return this.outputConfigurator.select.bind(this.outputConfigurator)}get selected(){return this.outputConfigurator.selected.bind(this.outputConfigurator)}render({html:t}){let e=this.group===i?void 0:this.group;return t` 2 + <dop-indexed-db 3 + id="do-output__dop-indexed-db__json" 4 + namespace="json" 5 + group="${u(e)}" 6 + ></dop-indexed-db> 7 + 8 + <!-- OUTPUT CONFIGURATOR --> 9 + <dc-output 10 + id="do-output__dc-output" 11 + default="do-output__dc-output__local" 12 + group="${u(e)}" 13 + > 14 + <dtos-json 15 + id="do-output__dc-output__local" 16 + output-selector="#do-output__dop-indexed-db__json" 17 + label="Local" 18 + ></dtos-json> 19 + </dc-output> 20 + 21 + <!-- ENTRY ⬆️ --> 22 + <dtor-initial-contents 23 + id="do-output__dtor-initial-contents" 24 + output-selector="#do-output__dc-output" 25 + ></dtor-initial-contents> 26 + 27 + <dtor-default 28 + id="do-output__output" 29 + output-selector="#do-output__dtor-initial-contents" 30 + ></dtor-default> 31 + `}},C=o,n=o,p="do-output";customElements.define(p,n);export{n as CLASS,p as NAME,C as default}; 32 + 33 + //# sourceMappingURL=./element.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/output/element.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/output/element.js.map
··· 1 + ../../../../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/components/orchestrator/output/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/path-collections/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/path-collections/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/path-collections/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/path-collections/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/path-collections/element.js.map
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/components/orchestrator/path-collections/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/process-tracks/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/process-tracks/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/process-tracks/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/process-tracks/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/process-tracks/element.js.map
··· 1 + ../../../../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/components/orchestrator/process-tracks/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/process-tracks/worker.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/process-tracks/worker.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/process-tracks/worker.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/process-tracks/worker.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/process-tracks/worker.js.map
··· 1 + ../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/components/orchestrator/process-tracks/worker.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/queue-audio/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/queue-audio/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/queue-audio/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/queue-audio/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/queue-audio/element.js.map
··· 1 + ../../../../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/components/orchestrator/queue-audio/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/scoped-tracks/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/scoped-tracks/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/scoped-tracks/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/scoped-tracks/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/scoped-tracks/element.js.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/scoped-tracks/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/scrobble-audio/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/scrobble-audio/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/scrobble-audio/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/scrobble-audio/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/scrobble-audio/element.js.map
··· 1 + ../../../../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/components/orchestrator/scrobble-audio/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/sources/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/sources/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/sources/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/sources/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/orchestrator/sources/element.js.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/orchestrator/sources/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/bytes/s3/constants.js
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/components/output/bytes/s3/constants.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/bytes/s3/constants.js.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/components/output/bytes/s3/constants.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/bytes/s3/constants.js.map
··· 1 + ../../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/components/output/bytes/s3/constants.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/bytes/s3/element.js
··· 1 + ../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/output/bytes/s3/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/bytes/s3/element.js.br
··· 1 + ../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/output/bytes/s3/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/bytes/s3/element.js.map
··· 1 + ../../../../../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/components/output/bytes/s3/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/bytes/s3/worker.js
··· 1 + ../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/output/bytes/s3/worker.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/bytes/s3/worker.js.br
··· 1 + ../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/output/bytes/s3/worker.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/bytes/s3/worker.js.map
··· 1 + ../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/output/bytes/s3/worker.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/common.js
··· 1 + ../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/output/common.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/common.js.br
··· 1 + ../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/output/common.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/common.js.map
··· 1 + ../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/output/common.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/polymorphic/indexed-db/constants.js
··· 1 + ../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/output/polymorphic/indexed-db/constants.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/polymorphic/indexed-db/constants.js.br
··· 1 + ../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/output/polymorphic/indexed-db/constants.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/polymorphic/indexed-db/constants.js.map
··· 1 + ../../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/output/polymorphic/indexed-db/constants.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/polymorphic/indexed-db/element.js
··· 1 + ../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/output/polymorphic/indexed-db/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/polymorphic/indexed-db/element.js.br
··· 1 + ../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/output/polymorphic/indexed-db/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/polymorphic/indexed-db/element.js.map
··· 1 + ../../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/output/polymorphic/indexed-db/element.js.map
+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/raw/atproto/element.js
··· 1 + import{b as pt,d as Y,f as I,g as V}from"../../../../chunk-GEPOAB4D.js";import{a as _t,b as Ft,c as Jt,d as Qt,e as Xt,f as Yt}from"../../../../chunk-3UJOKQHZ.js";import{a as Gt,b as Wt}from"../../../../chunk-RJJBOBOS.js";import{c as Ct,d as Rt}from"../../../../chunk-7VVACK5Z.js";import{a as kt}from"../../../../chunk-74D5IDBG.js";import"../../../../chunk-7EUCOO7A.js";import"../../../../chunk-WLXGGMHC.js";import"../../../../chunk-QVM63RP5.js";import"../../../../chunk-UYT7NSKP.js";import"../../../../chunk-MWEXZQ4O.js";import{b as Ht,c as st,d as Kt}from"../../../../chunk-6NXS3EXH.js";import{c as b,d as S,e as x,f as y,g as a,h as R,i as d,j as k,k as T,l as at,m as St,n as W,o as it,p as n,q as g,r as F,s as e,t as U,u as yt}from"../../../../chunk-RCK53RB4.js";import"../../../../chunk-YI4JYMVI.js";import"../../../../chunk-PBZITCUN.js";import{c as Pt}from"../../../../chunk-N6NGHZ4B.js";import{a as xt,b as bt,c as wt,d as At,g as X,i as zt,j as z}from"../../../../chunk-524HX7V4.js";import{f as Q}from"../../../../chunk-DFARJRPB.js";import"../../../../chunk-K2CRUTCH.js";import"../../../../chunk-GKONEEZQ.js";import"../../../../chunk-6TMSPXBP.js";import{j as Vt,o as ct}from"../../../../chunk-4I6PUBR2.js";import{a as p,d as ye}from"../../../../chunk-BFIVCPQF.js";var ut={};ye(ut,{accountSchema:()=>ie,commitSchema:()=>se,identitySchema:()=>ce,infoSchema:()=>pe,mainSchema:()=>nr,repoOpSchema:()=>le,syncSchema:()=>me});var Xo=e({$type:n(S("com.atproto.sync.subscribeRepos#account")),active:x(),did:d(),seq:y(),status:n(a()),time:R()}),Yo=e({$type:n(S("com.atproto.sync.subscribeRepos#commit")),blobs:g(W()),blocks:b(at(),[St(0,2e6)]),commit:W(),get ops(){return b(g(le),[F(0,200)])},prevData:n(W()),rebase:x(),repo:d(),rev:T(),seq:y(),since:it(T()),time:R(),tooBig:x()}),Zo=e({$type:n(S("com.atproto.sync.subscribeRepos#identity")),did:d(),handle:n(k()),seq:y(),time:R()}),tr=e({$type:n(S("com.atproto.sync.subscribeRepos#info")),message:n(a()),name:a()}),er=yt("com.atproto.sync.subscribeRepos",{params:e({cursor:n(y())}),get message(){return U([ie,se,ce,pe,me])}}),or=e({$type:n(S("com.atproto.sync.subscribeRepos#repoOp")),action:a(),cid:it(W()),path:a(),prev:n(W())}),rr=e({$type:n(S("com.atproto.sync.subscribeRepos#sync")),blocks:b(at(),[St(0,1e4)]),did:d(),rev:a(),seq:y(),time:R()}),ie=Xo,se=Yo,ce=Zo,pe=tr,nr=er,le=or,me=rr;var et=class{static{p(this,"RepoEntry")}collection;rkey;cid;carEntry;constructor(t,i,r,l){this.collection=t,this.rkey=i,this.cid=r,this.carEntry=l}get bytes(){return this.carEntry.bytes}get record(){return I(this.bytes)}},ot=p(c=>{if(c===null||typeof c!="object")return!1;let t=c;return t.version===3&&typeof t.did=="string"&&z(t.data)&&typeof t.rev=="string"&&(t.prev===null||z(t.prev))&&pt(t.sig)},"isCommit");var Ur=Number.MAX_SAFE_INTEGER,dr=Math.min;var It=p((c,t=0,i=c.length)=>{let r=dr(t+i,c.length),l=t;if(l>=r)throw new RangeError("could not decode varint");let s=c[l++],m=s&127;if(s<128)return{value:m,nextOffset:l};if(l>=r)throw new RangeError("could not decode varint");if(s=c[l++],m|=(s&127)<<7,s<128)return{value:m,nextOffset:l};if(l>=r)throw new RangeError("could not decode varint");if(s=c[l++],m|=(s&127)<<14,s<128)return{value:m,nextOffset:l};if(l>=r)throw new RangeError("could not decode varint");if(s=c[l++],m|=(s&127)<<21,s<128)return{value:m,nextOffset:l};if(l>=r)throw new RangeError("could not decode varint");if(s=c[l++],m+=(s&127)*268435456,s<128)return{value:m,nextOffset:l};let h=35;do{if(l>=r)throw new RangeError("could not decode varint");s=c[l++],m+=(s&127)*2**h,h+=7}while(s>=128);return{value:m,nextOffset:l}},"decode");var $t=p(c=>{if(c===null||typeof c!="object")return!1;let{version:t,roots:i}=c;return t===1&&Array.isArray(i)&&i.every(r=>r instanceof zt)},"isCarV1Header");var Bt=p(c=>{let{header:t,nextOffset:i}=vr(c,0),r=i;return{header:t,roots:t.data.roots,iterate(){return{next(){if(r>=c.length)return{done:!0,value:void 0};let l=r,{value:s,nextOffset:m}=It(c,r,8);r=m;let h=r,{cid:B,nextOffset:E}=ur(c,r);r=E;let D=r,N=s-(D-h);if(N<0||D+N>c.length)throw new RangeError("unexpected end of data");let H=D+N,ht=c.subarray(D,H);return r=H,{done:!1,value:{cid:B,bytes:ht,entryStart:l,entryEnd:H,cidStart:h,cidEnd:D,bytesStart:D,bytesEnd:H}}},[Symbol.iterator](){return this}}},[Symbol.iterator](){return this.iterate()}}},"fromUint8Array"),vr=p((c,t)=>{let i=t,{value:r,nextOffset:l}=It(c,t,8);if(r===0)throw new RangeError("invalid car header; length=0");let s=l,m=s+r;if(m>c.length)throw new RangeError("unexpected end of data");let h=I(c.subarray(s,m));if(!$t(h))throw new TypeError("expected a car v1 archive");return{header:{data:h,headerStart:i,headerEnd:m,dataStart:s,dataEnd:m},nextOffset:m}},"readHeader"),ur=p((c,t)=>{let i=t+36;if(i>c.length)throw new RangeError("unexpected end of data");let r=c.subarray(t,i),l=r[0],s=r[1],m=r[2],h=r[3];if(l!==xt)throw new RangeError(`incorrect cid version (got v${l})`);if(s!==At&&s!==wt)throw new RangeError(`incorrect cid codec (got 0x${s.toString(16)})`);if(m!==bt)throw new RangeError(`incorrect cid digest type (got 0x${m.toString(16)})`);if(h!==32)throw new RangeError(`incorrect cid digest size (got ${h})`);return{cid:{version:l,codec:s,digest:{codec:m,contents:r.subarray(4,36)},bytes:r},nextOffset:i}},"readCid");var hr=p(c=>{if(c===null||typeof c!="object")return!1;let t=c;return typeof t.p=="number"&&pt(t.k)&&z(t.v)&&(t.t===null||z(t.t))},"isTreeEntry"),rt=p(c=>{if(c===null||typeof c!="object")return!1;let t=c;return(t.l===null||z(t.l))&&Array.isArray(t.e)&&t.e.every(hr)},"isNodeData");var q=p((c,t)=>{if(!c)throw new Error(t)},"assert");var Tt=p(c=>{let t=c.indexOf("/");return q(t!==-1,`invalid mst key; key=${c}`),{collection:c.slice(0,t),rkey:c.slice(t+1)}},"parseMstKey");function*Lt(c){let t=Bt(c),i=t.roots;q(i.length===1,`expected only 1 root in the car archive; got=${i.length}`);let r=new Map;for(let s of t)r.set(X(s.cid),s);q(r.size>=2,`expected at least 2 blocks in the archive; got=${r.size}`);let l=ue(r,i[0],ot);for(let{key:s,cid:m}of Ot(r,l.data)){let{collection:h,rkey:B}=Tt(s),E=r.get(m.$link);q(E!=null,`cid not found in blockmap; cid=${m}`),yield new et(h,B,m,E)}}p(Lt,"fromUint8Array");var ue=p((c,t,i)=>{let r=t.$link,l=c.get(r);q(l!=null,`cid not found in blockmap; cid=${r}`);let s=I(l.bytes);return q(i(s),`validation failed for cid=${r}`),s},"readEntry");function*Ot(c,t){let i=ue(c,t,rt),r=i.e,l="";i.l!==null&&(yield*Ot(c,i.l));for(let s=0,m=r.length;s<m;s++){let h=r[s],B=Q(Y(h.k)),E=l.slice(0,h.p)+B;l=E,yield{key:E,cid:h.v},h.t!==null&&(yield*Ot(c,h.t))}}p(Ot,"walkMstEntries");var Rr=new Set(["sh.diffuse.output.facet","sh.diffuse.output.playlistItem","sh.diffuse.output.trackBundle"]),nt=class extends Gt{static{p(this,"ATProtoOutput")}static NAME="diffuse/output/raw/atproto";#e;#p=Promise.withResolvers();#o=null;#r=null;#i=null;#l=null;#d=0;constructor(){super();let t=null;this.#e=Wt({facets:{empty:p(()=>[],"empty"),get:p(()=>this.listRecords("sh.diffuse.output.facet"),"get"),put:p(i=>this.putRecords("sh.diffuse.output.facet",i),"put")},playlistItems:{empty:p(()=>[],"empty"),get:p(()=>this.listRecords("sh.diffuse.output.playlistItem"),"get"),put:p(i=>this.putRecords("sh.diffuse.output.playlistItem",i),"put")},tracks:{empty:p(()=>[],"empty"),get:p(async()=>{let r=(await this.listRecords("sh.diffuse.output.trackBundle")).flatMap(l=>l.tracks??[]);return t=r,r},"get"),put:p(async i=>{let r=kt(V(t??[])),l=kt(V(i));if(r===l)return;let s=[];for(let m=0;m<i.length;m+=100)s.push({$type:"sh.diffuse.output.trackBundle",id:Pt(),tracks:i.slice(m,m+100)});await this.putRecords("sh.diffuse.output.trackBundle",s,{upsertBatchSize:1}),t=i},"put")}}),this.facets=this.#e.facets,this.playlistItems=this.#e.playlistItems,this.tracks=this.#e.tracks}#t=ct(null);#m=ct(navigator.onLine);#s=ct(null);did=this.#t.get;rev=this.#s.get;ready=Vt(()=>this.#t.value!==null&&!!this.#o&&this.#m.value);connectedCallback(){this.replicateSavedData(this.#e),super.connectedCallback(),this.#f(),globalThis.addEventListener("online",this.#u),globalThis.addEventListener("offline",this.#v)}disconnectedCallback(){this.#c(),globalThis.removeEventListener("online",this.#u),globalThis.removeEventListener("offline",this.#v)}#v=p(()=>this.#m.set(!1),"#offline");#u=p(()=>this.#m.set(!0),"#online");async login(t){await Jt(t)}async logout(){this.#r&&(this.#c(),await Yt(this.#r),this.#r=null,this.#p=Promise.withResolvers(),this.#t.value=null,this.#i=null,this.#o=null)}#n(){this.#c(),this.#r=null,this.#p=Promise.withResolvers(),this.#t.value=null,this.#i=null,this.#o=null,Xt()}#a(t){return t instanceof _t||t instanceof Kt&&t.status===401?!0:t&&typeof t=="object"&&"cause"in t?this.#a(t.cause):!1}async#f(){await this.whenConnected();try{let t=await Qt();t&&this.#g(t)}catch(t){if(this.#a(t))this.#n();else throw t}}#g(t){let i=new Ft(t),r=i.getSession.bind(i);i.getSession=(...l)=>{let s=r(...l);return s.catch(m=>{m instanceof _t&&this.#n()}),s},this.#r=i,this.#o=new Ht({handler:i}),this.#t.value=t.info.sub,this.#i=t.info.aud,this.#p.resolve(),this.#S()}#c(){let t=this.#l;this.#l=null,t?.return?.()}async#S(){this.#c();let t=++this.#d,i=this.#i;if(!i)return;let r=i.replace(/^https?:\/\//,h=>h==="https://"?"wss://":"ws://"),{FirehoseSubscription:l}=await import("../../../../dist-WH3NPUSC.js");if(this.#d!==t)return;let m=new l({service:r,nsid:ut.mainSchema,validateMessages:!1})[Symbol.asyncIterator]();this.#l=m;try{for await(let h of m)this.#y(h)}catch{}}#y(t){if(t.$type!=="com.atproto.sync.subscribeRepos#commit"||t.repo!==this.#t.value||t.rev===this.#s.value)return;let i=new Set((t.ops??[]).map(r=>r.path?.split("/")[0]).filter(r=>Rr.has(r)));i.size!==0&&(i.has("sh.diffuse.output.facet")&&this.#e.facets.reload(),i.has("sh.diffuse.output.playlistItem")&&this.#e.playlistItems.reload(),i.has("sh.diffuse.output.trackBundle")&&this.#e.tracks.reload())}async getLatestCommit(){let t=this.#t.value,i=this.#o;if(!i||!t)return null;try{let r=await st(i.get("com.atproto.sync.getLatestCommit",{params:{did:t}}));return this.#s.value=r?.rev,r?.rev}catch(r){if(this.#a(r))return this.#n(),null;throw r}}async#h(){let t=this.#t.value,i=this.#o;if(!i||!t)return null;let r=await this.getLatestCommit();if(!r)return null;let l=`diffuse/output/raw/atproto/repo/${t}`,s=await Ct(l);if(s?.rev===r)return s.bytes;let m=await st(i.get("com.atproto.sync.getRepo",{params:{did:t},as:"bytes"}));return await Rt(l,{rev:r,bytes:m}),m}async listRecords(t,i){if(i??=this.#t.value??void 0,!this.#o||!i)return[];try{let r=await this.#h();if(!r)return[];let l=[];for(let s of Lt(r))s.collection===t&&l.push(s.record);return l}catch(r){if(this.#a(r))return this.#n(),[];throw r}}async putRecords(t,i,{deleteBatchSize:r=100,upsertBatchSize:l=r}={}){let s=this.#o,m=this.#t.value;if(!(!s||!m))try{let h=new Map,B=await this.#h();if(B){for(let f of Lt(B))if(f.collection===t){let C=f.record;h.set(C.id,{rkey:f.rkey,value:C})}}let E=new Map(i.map(f=>[f.id,{$type:t,...f}])),D=[],N=[];for(let[f,{rkey:C}]of h)E.has(f)||D.push({$type:"com.atproto.repo.applyWrites#delete",collection:t,rkey:C});for(let[f,C]of E){let M=h.get(f);M?JSON.stringify(M.value)!==JSON.stringify(C)&&N.push({$type:"com.atproto.repo.applyWrites#update",collection:t,rkey:M.rkey,value:C}):N.push({$type:"com.atproto.repo.applyWrites#create",collection:t,rkey:f,value:C})}let H=36e5,ht=1500,ft="diffuse/output/raw/atproto/writes",gt=p(async()=>{let f=Date.now();return(await Ct(ft)??[]).filter(M=>f-M.ts<H)},"loadWindow"),he=p(async f=>{let C=Date.now(),M=await gt();await Rt(ft,[...M,...f.map(K=>({id:K,ts:C}))])},"recordWritten"),qt=p(async f=>{for(;;){let K=await gt(),Nt=new Set(K.map(_=>_.id)),fe=f.map(_=>_.rkey??_.value?.id).filter(Boolean).filter(_=>!Nt.has(_));if(Nt.size+fe.length<=ht)break;let ge=K.reduce((_,Ut)=>_.ts<Ut.ts?_:Ut),Se=H-(Date.now()-ge.ts)+1;await new Promise(_=>setTimeout(_,Se))}let C=await st(s.post("com.atproto.repo.applyWrites",{input:{repo:m,writes:f}})),M=f.map(K=>K.rkey??K.value?.id).filter(Boolean);await he(M),C?.commit?.rev&&(this.#s.value=C.commit.rev)},"applyBatch");for(let f=0;f<D.length;f+=r)await qt(D.slice(f,f+r));for(let f=0;f<N.length;f+=l)await qt(N.slice(f,f+l))}catch(h){if(this.#a(h)){this.#n();return}throw h}}},pi=nt,li=nt,kr="dor-atproto";customElements.define(kr,nt);export{li as CLASS,kr as NAME,pi as default}; 2 + 3 + //# sourceMappingURL=./element.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/raw/atproto/element.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/raw/atproto/element.js.map
··· 1 + {"version":3,"sources":["/node_modules/.deno/@atcute+atproto@3.1.10/node_modules/@atcute/atproto/lib/lexicons/types/com/atproto/sync/subscribeRepos.ts","/node_modules/.deno/@atcute+repo@0.1.3/node_modules/@atcute/repo/lib/types.ts","/node_modules/.deno/@atcute+varint@2.0.0/node_modules/@atcute/varint/lib/index.ts","/node_modules/.deno/@atcute+car@5.1.1/node_modules/@atcute/car/lib/types.ts","/node_modules/.deno/@atcute+car@5.1.1/node_modules/@atcute/car/lib/reader.ts","/node_modules/.deno/@atcute+mst@1.0.0/node_modules/@atcute/mst/lib/types.ts","/node_modules/.deno/@atcute+repo@0.1.3/node_modules/@atcute/repo/lib/utils.ts","/node_modules/.deno/@atcute+repo@0.1.3/node_modules/@atcute/repo/lib/utils/mst.ts","/node_modules/.deno/@atcute+repo@0.1.3/node_modules/@atcute/repo/lib/reader.ts","/element.js"],"sourcesContent":["import type {} from '@atcute/lexicons';\nimport * as v from '@atcute/lexicons/validations';\nimport type {} from '@atcute/lexicons/ambient';\n\nconst _accountSchema = /*#__PURE__*/ v.object({\n\t$type: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.literal('com.atproto.sync.subscribeRepos#account')),\n\t/**\n\t * Indicates that the account has a repository which can be fetched from the host that emitted this event.\n\t */\n\tactive: /*#__PURE__*/ v.boolean(),\n\tdid: /*#__PURE__*/ v.didString(),\n\tseq: /*#__PURE__*/ v.integer(),\n\t/**\n\t * If active=false, this optional field indicates a reason for why the account is not active.\n\t */\n\tstatus: /*#__PURE__*/ v.optional(\n\t\t/*#__PURE__*/ v.string<\n\t\t\t'deactivated' | 'deleted' | 'desynchronized' | 'suspended' | 'takendown' | 'throttled' | (string & {})\n\t\t>(),\n\t),\n\ttime: /*#__PURE__*/ v.datetimeString(),\n});\nconst _commitSchema = /*#__PURE__*/ v.object({\n\t$type: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.literal('com.atproto.sync.subscribeRepos#commit')),\n\tblobs: /*#__PURE__*/ v.array(/*#__PURE__*/ v.cidLink()),\n\t/**\n\t * CAR file containing relevant blocks, as a diff since the previous repo state. The commit must be included as a block, and the commit block CID must be the first entry in the CAR header 'roots' list.\n\t * @maxLength 2000000\n\t */\n\tblocks: /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.bytes(), [/*#__PURE__*/ v.bytesSize(0, 2000000)]),\n\t/**\n\t * Repo commit object CID.\n\t */\n\tcommit: /*#__PURE__*/ v.cidLink(),\n\t/**\n\t * @maxLength 200\n\t */\n\tget ops() {\n\t\treturn /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.array(repoOpSchema), [\n\t\t\t/*#__PURE__*/ v.arrayLength(0, 200),\n\t\t]);\n\t},\n\t/**\n\t * The root CID of the MST tree for the previous commit from this repo (indicated by the 'since' revision field in this message). Corresponds to the 'data' field in the repo commit object. NOTE: this field is effectively required for the 'inductive' version of firehose.\n\t */\n\tprevData: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.cidLink()),\n\t/**\n\t * DEPRECATED -- unused\n\t */\n\trebase: /*#__PURE__*/ v.boolean(),\n\t/**\n\t * The repo this event comes from. Note that all other message types name this field 'did'.\n\t */\n\trepo: /*#__PURE__*/ v.didString(),\n\t/**\n\t * The rev of the emitted commit. Note that this information is also in the commit object included in blocks, unless this is a tooBig event.\n\t */\n\trev: /*#__PURE__*/ v.tidString(),\n\t/**\n\t * The stream sequence number of this message.\n\t */\n\tseq: /*#__PURE__*/ v.integer(),\n\t/**\n\t * The rev of the last emitted commit from this repo (if any).\n\t */\n\tsince: /*#__PURE__*/ v.nullable(/*#__PURE__*/ v.tidString()),\n\t/**\n\t * Timestamp of when this message was originally broadcast.\n\t */\n\ttime: /*#__PURE__*/ v.datetimeString(),\n\t/**\n\t * DEPRECATED -- replaced by #sync event and data limits. Indicates that this commit contained too many ops, or data size was too large. Consumers will need to make a separate request to get missing data.\n\t */\n\ttooBig: /*#__PURE__*/ v.boolean(),\n});\nconst _identitySchema = /*#__PURE__*/ v.object({\n\t$type: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.literal('com.atproto.sync.subscribeRepos#identity')),\n\tdid: /*#__PURE__*/ v.didString(),\n\t/**\n\t * The current handle for the account, or 'handle.invalid' if validation fails. This field is optional, might have been validated or passed-through from an upstream source. Semantics and behaviors for PDS vs Relay may evolve in the future; see atproto specs for more details.\n\t */\n\thandle: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.handleString()),\n\tseq: /*#__PURE__*/ v.integer(),\n\ttime: /*#__PURE__*/ v.datetimeString(),\n});\nconst _infoSchema = /*#__PURE__*/ v.object({\n\t$type: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.literal('com.atproto.sync.subscribeRepos#info')),\n\tmessage: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()),\n\tname: /*#__PURE__*/ v.string<'OutdatedCursor' | (string & {})>(),\n});\nconst _mainSchema = /*#__PURE__*/ v.subscription('com.atproto.sync.subscribeRepos', {\n\tparams: /*#__PURE__*/ v.object({\n\t\t/**\n\t\t * The last known event seq number to backfill from.\n\t\t */\n\t\tcursor: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.integer()),\n\t}),\n\tget message() {\n\t\treturn /*#__PURE__*/ v.variant([accountSchema, commitSchema, identitySchema, infoSchema, syncSchema]);\n\t},\n});\nconst _repoOpSchema = /*#__PURE__*/ v.object({\n\t$type: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.literal('com.atproto.sync.subscribeRepos#repoOp')),\n\taction: /*#__PURE__*/ v.string<'create' | 'delete' | 'update' | (string & {})>(),\n\t/**\n\t * For creates and updates, the new record CID. For deletions, null.\n\t */\n\tcid: /*#__PURE__*/ v.nullable(/*#__PURE__*/ v.cidLink()),\n\tpath: /*#__PURE__*/ v.string(),\n\t/**\n\t * For updates and deletes, the previous record CID (required for inductive firehose). For creations, field should not be defined.\n\t */\n\tprev: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.cidLink()),\n});\nconst _syncSchema = /*#__PURE__*/ v.object({\n\t$type: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.literal('com.atproto.sync.subscribeRepos#sync')),\n\t/**\n\t * CAR file containing the commit, as a block. The CAR header must include the commit block CID as the first 'root'.\n\t * @maxLength 10000\n\t */\n\tblocks: /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.bytes(), [/*#__PURE__*/ v.bytesSize(0, 10000)]),\n\t/**\n\t * The account this repo event corresponds to. Must match that in the commit object.\n\t */\n\tdid: /*#__PURE__*/ v.didString(),\n\t/**\n\t * The rev of the commit. This value must match that in the commit object.\n\t */\n\trev: /*#__PURE__*/ v.string(),\n\t/**\n\t * The stream sequence number of this message.\n\t */\n\tseq: /*#__PURE__*/ v.integer(),\n\t/**\n\t * Timestamp of when this message was originally broadcast.\n\t */\n\ttime: /*#__PURE__*/ v.datetimeString(),\n});\n\ntype account$schematype = typeof _accountSchema;\ntype commit$schematype = typeof _commitSchema;\ntype identity$schematype = typeof _identitySchema;\ntype info$schematype = typeof _infoSchema;\ntype main$schematype = typeof _mainSchema;\ntype repoOp$schematype = typeof _repoOpSchema;\ntype sync$schematype = typeof _syncSchema;\n\nexport interface accountSchema extends account$schematype {}\nexport interface commitSchema extends commit$schematype {}\nexport interface identitySchema extends identity$schematype {}\nexport interface infoSchema extends info$schematype {}\nexport interface mainSchema extends main$schematype {}\nexport interface repoOpSchema extends repoOp$schematype {}\nexport interface syncSchema extends sync$schematype {}\n\nexport const accountSchema = _accountSchema as accountSchema;\nexport const commitSchema = _commitSchema as commitSchema;\nexport const identitySchema = _identitySchema as identitySchema;\nexport const infoSchema = _infoSchema as infoSchema;\nexport const mainSchema = _mainSchema as mainSchema;\nexport const repoOpSchema = _repoOpSchema as repoOpSchema;\nexport const syncSchema = _syncSchema as syncSchema;\n\nexport interface Account extends v.InferInput<typeof accountSchema> {}\nexport interface Commit extends v.InferInput<typeof commitSchema> {}\nexport interface Identity extends v.InferInput<typeof identitySchema> {}\nexport interface Info extends v.InferInput<typeof infoSchema> {}\nexport interface RepoOp extends v.InferInput<typeof repoOpSchema> {}\nexport interface Sync extends v.InferInput<typeof syncSchema> {}\n\nexport interface $params extends v.InferInput<mainSchema['params']> {}\nexport type $message = v.InferInput<mainSchema['message']>;\n\ndeclare module '@atcute/lexicons/ambient' {\n\tinterface XRPCSubscriptions {\n\t\t'com.atproto.sync.subscribeRepos': mainSchema;\n\t}\n}\n","import type { CarEntry } from '@atcute/car';\nimport * as CBOR from '@atcute/cbor';\nimport { isBytes, type Bytes } from '@atcute/cbor';\nimport { isCidLink, type CidLink } from '@atcute/cid';\n\nexport class RepoEntry {\n\t/** the collection this record belongs to */\n\treadonly collection: string;\n\t/** record key */\n\treadonly rkey: string;\n\t/** CID of this record */\n\treadonly cid: CidLink;\n\t/** the associated CarEntry for this record */\n\treadonly carEntry: CarEntry;\n\n\t/** @internal */\n\tconstructor(collection: string, rkey: string, cid: CidLink, carEntry: CarEntry) {\n\t\tthis.collection = collection;\n\t\tthis.rkey = rkey;\n\t\tthis.cid = cid;\n\t\tthis.carEntry = carEntry;\n\t}\n\n\t/**\n\t * raw contents of this record\n\t */\n\tget bytes(): Uint8Array {\n\t\treturn this.carEntry.bytes;\n\t}\n\n\t/**\n\t * decoded contents of this record\n\t */\n\tget record(): unknown {\n\t\treturn CBOR.decode(this.bytes);\n\t}\n}\n\n/** commit object */\nexport interface Commit {\n\tversion: 3;\n\tdid: string;\n\tdata: CidLink;\n\trev: string;\n\tsig: Bytes;\n\t/** backwards compatibility with v2, history bookkeeping is not required */\n\tprev: CidLink | null;\n}\n\n/**\n * checks if value is a valid commit object\n * @param value value to check\n * @returns true if the value is a valid commit object, false otherwise\n */\nexport const isCommit = (value: unknown): value is Commit => {\n\tif (value === null || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\n\tconst obj = value as Record<string, unknown>;\n\n\treturn (\n\t\tobj.version === 3 &&\n\t\ttypeof obj.did === 'string' &&\n\t\tisCidLink(obj.data) &&\n\t\ttypeof obj.rev === 'string' &&\n\t\t(obj.prev === null || isCidLink(obj.prev)) &&\n\t\tisBytes(obj.sig)\n\t);\n};\n","const MSB = 0x80;\nconst REST = 0x7f;\nconst MSBALL = ~REST;\nconst INT = 2 ** 31;\n\nconst N1 = 2 ** 7;\nconst N2 = 2 ** 14;\nconst N3 = 2 ** 21;\nconst N4 = 2 ** 28;\nconst N5 = 2 ** 35;\nconst N6 = 2 ** 42;\nconst N7 = 2 ** 49;\nconst N8 = 2 ** 56;\nconst N9 = 2 ** 63;\n\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER;\n\nconst _min = Math.min;\n\nexport interface DecodeResult {\n\t/** decoded number */\n\tvalue: number;\n\t/** position immediately after the varint */\n\tnextOffset: number;\n}\n\n/**\n * encodes a varint\n * @param num Number to encode\n * @param buf Buffer to write on\n * @param offset Starting position on the buffer\n * @returns The amount of bytes written\n */\nexport const encode = (num: number, buf: Uint8Array, offset = 0): number => {\n\tif (num > MAX_SAFE_INTEGER) {\n\t\tthrow new RangeError('could not encode varint');\n\t}\n\n\tconst start = offset;\n\n\tif (num < N1) {\n\t\tbuf[offset] = num;\n\t\treturn 1;\n\t}\n\n\tif (num < N2) {\n\t\tbuf[offset] = (num & REST) | MSB;\n\t\tbuf[offset + 1] = num >>> 7;\n\t\treturn 2;\n\t}\n\n\tif (num < N3) {\n\t\tbuf[offset] = (num & REST) | MSB;\n\t\tbuf[offset + 1] = ((num >>> 7) & REST) | MSB;\n\t\tbuf[offset + 2] = num >>> 14;\n\t\treturn 3;\n\t}\n\n\tif (num < N4) {\n\t\tbuf[offset] = (num & REST) | MSB;\n\t\tbuf[offset + 1] = ((num >>> 7) & REST) | MSB;\n\t\tbuf[offset + 2] = ((num >>> 14) & REST) | MSB;\n\t\tbuf[offset + 3] = num >>> 21;\n\t\treturn 4;\n\t}\n\n\tif (num < INT) {\n\t\tbuf[offset] = (num & REST) | MSB;\n\t\tbuf[offset + 1] = ((num >>> 7) & REST) | MSB;\n\t\tbuf[offset + 2] = ((num >>> 14) & REST) | MSB;\n\t\tbuf[offset + 3] = ((num >>> 21) & REST) | MSB;\n\t\tbuf[offset + 4] = num >>> 28;\n\t\treturn 5;\n\t}\n\n\twhile (num >= INT) {\n\t\tbuf[offset++] = (num & 0xff) | MSB;\n\t\tnum /= 128;\n\t}\n\n\twhile (num & MSBALL) {\n\t\tbuf[offset++] = (num & 0xff) | MSB;\n\t\tnum >>>= 7;\n\t}\n\n\tbuf[offset] = num | 0;\n\treturn offset - start + 1;\n};\n\n/**\n * decodes a varint and returns the value with the next byte offset\n * @param buf buffer to read from\n * @param offset starting position on the buffer\n * @param length maximum bytes to consume from offset\n * @returns decoded value and the next offset\n */\nexport const decode = (buf: Uint8Array, offset = 0, length = buf.length): DecodeResult => {\n\tconst end = _min(offset + length, buf.length);\n\tlet counter = offset;\n\n\tif (counter >= end) {\n\t\tthrow new RangeError('could not decode varint');\n\t}\n\n\tlet b = buf[counter++];\n\tlet res = b & REST;\n\tif (b < MSB) {\n\t\treturn { value: res, nextOffset: counter };\n\t}\n\n\tif (counter >= end) {\n\t\tthrow new RangeError('could not decode varint');\n\t}\n\n\tb = buf[counter++];\n\tres |= (b & REST) << 7;\n\tif (b < MSB) {\n\t\treturn { value: res, nextOffset: counter };\n\t}\n\n\tif (counter >= end) {\n\t\tthrow new RangeError('could not decode varint');\n\t}\n\n\tb = buf[counter++];\n\tres |= (b & REST) << 14;\n\tif (b < MSB) {\n\t\treturn { value: res, nextOffset: counter };\n\t}\n\n\tif (counter >= end) {\n\t\tthrow new RangeError('could not decode varint');\n\t}\n\n\tb = buf[counter++];\n\tres |= (b & REST) << 21;\n\tif (b < MSB) {\n\t\treturn { value: res, nextOffset: counter };\n\t}\n\n\tif (counter >= end) {\n\t\tthrow new RangeError('could not decode varint');\n\t}\n\n\tb = buf[counter++];\n\tres += (b & REST) * N4;\n\tif (b < MSB) {\n\t\treturn { value: res, nextOffset: counter };\n\t}\n\n\tlet shift = 35;\n\tdo {\n\t\tif (counter >= end) {\n\t\t\tthrow new RangeError('could not decode varint');\n\t\t}\n\n\t\tb = buf[counter++];\n\t\tres += (b & REST) * 2 ** shift;\n\t\tshift += 7;\n\t} while (b >= MSB);\n\n\treturn { value: res, nextOffset: counter };\n};\n\n/**\n * Returns encoding length\n * @param num The number to encode\n * @returns Amount of bytes needed for encoding\n */\nexport const encodingLength = (num: number): number => {\n\treturn num < N1\n\t\t? 1\n\t\t: num < N2\n\t\t\t? 2\n\t\t\t: num < N3\n\t\t\t\t? 3\n\t\t\t\t: num < N4\n\t\t\t\t\t? 4\n\t\t\t\t\t: num < N5\n\t\t\t\t\t\t? 5\n\t\t\t\t\t\t: num < N6\n\t\t\t\t\t\t\t? 6\n\t\t\t\t\t\t\t: num < N7\n\t\t\t\t\t\t\t\t? 7\n\t\t\t\t\t\t\t\t: num < N8\n\t\t\t\t\t\t\t\t\t? 8\n\t\t\t\t\t\t\t\t\t: num < N9\n\t\t\t\t\t\t\t\t\t\t? 9\n\t\t\t\t\t\t\t\t\t\t: 10;\n};\n","import { CidLinkWrapper, type Cid, type CidLink } from '@atcute/cid';\n\nexport interface CarV1Header {\n\tversion: 1;\n\troots: CidLink[];\n}\n\nexport const isCarV1Header = (value: unknown): value is CarV1Header => {\n\tif (value === null || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\n\tconst { version, roots } = value as CarV1Header;\n\treturn version === 1 && Array.isArray(roots) && roots.every((root) => root instanceof CidLinkWrapper);\n};\n\nexport interface CarHeader {\n\theaderStart: number;\n\theaderEnd: number;\n\n\tdata: CarV1Header;\n\tdataStart: number;\n\tdataEnd: number;\n}\n\nexport interface CarEntry {\n\tentryStart: number;\n\tentryEnd: number;\n\n\tcid: Cid;\n\tcidStart: number;\n\tcidEnd: number;\n\n\tbytes: Uint8Array;\n\tbytesStart: number;\n\tbytesEnd: number;\n}\n\n/**\n * represents a block to be written to a CAR file\n */\nexport interface CarBlock {\n\t/** the CID of the block (as bytes) */\n\tcid: Uint8Array;\n\t/** the block data */\n\tdata: Uint8Array;\n}\n","import * as CBOR from '@atcute/cbor';\nimport type { CidLink } from '@atcute/cid';\nimport * as CID from '@atcute/cid';\nimport * as varint from '@atcute/varint';\n\nimport { isCarV1Header, type CarEntry, type CarHeader } from './types.ts';\n\nexport interface SyncCarReader {\n\treadonly header: CarHeader;\n\treadonly roots: CidLink[];\n\n\t/** @deprecated do for..of on the reader directly */\n\titerate(): IterableIterator<CarEntry>;\n\t[Symbol.iterator](): Iterator<CarEntry>;\n}\n\nexport const fromUint8Array = (buffer: Uint8Array): SyncCarReader => {\n\tconst { header, nextOffset: headerOffset } = readHeader(buffer, 0);\n\tlet pos = headerOffset;\n\n\treturn {\n\t\theader,\n\t\troots: header.data.roots,\n\n\t\titerate(): IterableIterator<CarEntry> {\n\t\t\treturn {\n\t\t\t\tnext(): IteratorResult<CarEntry> {\n\t\t\t\t\tif (pos >= buffer.length) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tdone: true,\n\t\t\t\t\t\t\tvalue: undefined,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tconst entryStart = pos;\n\t\t\t\t\tconst { value: entryLength, nextOffset: lengthOffset } = varint.decode(buffer, pos, 8);\n\t\t\t\t\tpos = lengthOffset;\n\n\t\t\t\t\tconst cidStart = pos;\n\t\t\t\t\tconst { cid, nextOffset: cidOffset } = readCid(buffer, pos);\n\t\t\t\t\tpos = cidOffset;\n\n\t\t\t\t\tconst bytesStart = pos;\n\t\t\t\t\tconst bytesSize = entryLength - (bytesStart - cidStart);\n\t\t\t\t\tif (bytesSize < 0 || bytesStart + bytesSize > buffer.length) {\n\t\t\t\t\t\tthrow new RangeError('unexpected end of data');\n\t\t\t\t\t}\n\n\t\t\t\t\tconst bytesEnd = bytesStart + bytesSize;\n\t\t\t\t\tconst bytes = buffer.subarray(bytesStart, bytesEnd);\n\t\t\t\t\tpos = bytesEnd;\n\n\t\t\t\t\tconst cidEnd = bytesStart;\n\t\t\t\t\tconst entryEnd = bytesEnd;\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: false,\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tcid,\n\t\t\t\t\t\t\tbytes,\n\n\t\t\t\t\t\t\tentryStart,\n\t\t\t\t\t\t\tentryEnd,\n\t\t\t\t\t\t\tcidStart,\n\t\t\t\t\t\t\tcidEnd,\n\t\t\t\t\t\t\tbytesStart,\n\t\t\t\t\t\t\tbytesEnd,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t},\n\n\t\t\t\t[Symbol.iterator]() {\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\n\t\t[Symbol.iterator](): Iterator<CarEntry> {\n\t\t\treturn this.iterate();\n\t\t},\n\t};\n};\n\nconst readHeader = (source: Uint8Array, offset: number): { header: CarHeader; nextOffset: number } => {\n\tconst headerStart = offset;\n\tconst { value: length, nextOffset: lengthOffset } = varint.decode(source, offset, 8);\n\tif (length === 0) {\n\t\tthrow new RangeError(`invalid car header; length=0`);\n\t}\n\n\tconst dataStart = lengthOffset;\n\tconst dataEnd = dataStart + length;\n\tif (dataEnd > source.length) {\n\t\tthrow new RangeError('unexpected end of data');\n\t}\n\n\tconst data = CBOR.decode(source.subarray(dataStart, dataEnd));\n\tif (!isCarV1Header(data)) {\n\t\tthrow new TypeError(`expected a car v1 archive`);\n\t}\n\n\tconst headerEnd = dataEnd;\n\n\treturn {\n\t\theader: { data, headerStart, headerEnd, dataStart, dataEnd },\n\t\tnextOffset: dataEnd,\n\t};\n};\n\nconst readCid = (source: Uint8Array, offset: number): { cid: CID.Cid; nextOffset: number } => {\n\tconst cidEnd = offset + 36;\n\tif (cidEnd > source.length) {\n\t\tthrow new RangeError('unexpected end of data');\n\t}\n\n\tconst bytes = source.subarray(offset, cidEnd);\n\n\tconst version = bytes[0];\n\tconst codec = bytes[1];\n\tconst digestType = bytes[2];\n\tconst digestSize = bytes[3];\n\n\tif (version !== CID.CID_VERSION) {\n\t\tthrow new RangeError(`incorrect cid version (got v${version})`);\n\t}\n\n\tif (codec !== CID.CODEC_DCBOR && codec !== CID.CODEC_RAW) {\n\t\tthrow new RangeError(`incorrect cid codec (got 0x${codec.toString(16)})`);\n\t}\n\n\tif (digestType !== CID.HASH_SHA256) {\n\t\tthrow new RangeError(`incorrect cid digest type (got 0x${digestType.toString(16)})`);\n\t}\n\n\tif (digestSize !== 32) {\n\t\tthrow new RangeError(`incorrect cid digest size (got ${digestSize})`);\n\t}\n\n\treturn {\n\t\tcid: {\n\t\t\tversion: version,\n\t\t\tcodec: codec,\n\t\t\tdigest: {\n\t\t\t\tcodec: digestType,\n\t\t\t\tcontents: bytes.subarray(4, 36),\n\t\t\t},\n\t\t\tbytes: bytes,\n\t\t},\n\t\tnextOffset: cidEnd,\n\t};\n};\n","import { isBytes, type Bytes } from '@atcute/cbor';\nimport { isCidLink, type CidLink } from '@atcute/cid';\n\n/**\n * represents a single entry in an MST node\n */\nexport interface TreeEntry {\n\t/** count of bytes shared with previous TreeEntry in this Node (if any) */\n\tp: number;\n\t/** remainder of key for this TreeEntry, after \"prefixlen\" have been removed */\n\tk: Bytes;\n\t/** link to a sub-tree Node at a lower level which has keys sorting after this TreeEntry's key (to the \"right\"), but before the next TreeEntry's key in this Node (if any) */\n\tv: CidLink;\n\t/** next subtree (to the right of leaf) */\n\tt: CidLink | null;\n}\n\n/**\n * validates that an unknown value is a valid TreeEntry\n * @param value the value to check\n * @returns true if value is a TreeEntry, false otherwise\n */\nexport const isTreeEntry = (value: unknown): value is TreeEntry => {\n\tif (value === null || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\n\tconst obj = value as Record<string, unknown>;\n\n\treturn (\n\t\ttypeof obj.p === 'number' && isBytes(obj.k) && isCidLink(obj.v) && (obj.t === null || isCidLink(obj.t))\n\t);\n};\n\n/**\n * represents the serialized data structure of an MST node\n */\nexport interface NodeData {\n\t/** link to sub-tree Node on a lower level and with all keys sorting before keys at this node */\n\tl: CidLink | null;\n\t/** ordered list of TreeEntry objects */\n\te: TreeEntry[];\n}\n\n/**\n * validates that an unknown value is valid NodeData\n * @param value the value to check\n * @returns true if value is NodeData, false otherwise\n */\nexport const isNodeData = (value: unknown): value is NodeData => {\n\tif (value === null || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\n\tconst obj = value as Record<string, unknown>;\n\n\treturn (obj.l === null || isCidLink(obj.l)) && Array.isArray(obj.e) && obj.e.every(isTreeEntry);\n};\n","export const assert: {\n\t(condition: boolean, message: string): asserts condition;\n} = (condition, message) => {\n\tif (!condition) {\n\t\tthrow new Error(message);\n\t}\n};\n","import { assert } from '../utils.ts';\n\nexport const parseMstKey = (key: string): { collection: string; rkey: string } => {\n\tconst slash = key.indexOf('/');\n\tassert(slash !== -1, `invalid mst key; key=${key}`);\n\n\treturn { collection: key.slice(0, slash), rkey: key.slice(slash + 1) };\n};\n","import type { CarEntry } from '@atcute/car';\nimport * as CAR from '@atcute/car';\nimport * as CBOR from '@atcute/cbor';\nimport type { CidLink } from '@atcute/cid';\nimport * as CID from '@atcute/cid';\nimport { isNodeData } from '@atcute/mst';\nimport { decodeUtf8From } from '@atcute/uint8array';\n\nimport { isCommit, RepoEntry } from './types.ts';\nimport { assert } from './utils.ts';\nimport { parseMstKey } from './utils/mst.ts';\n\n/** @internal */\ntype EntryMap = Map<string, CarEntry>;\n\n/** node entry object */\ninterface NodeEntry {\n\tkey: string;\n\tcid: CidLink;\n}\n\nexport function* fromUint8Array(buf: Uint8Array): Generator<RepoEntry> {\n\tconst car = CAR.fromUint8Array(buf);\n\tconst roots = car.roots;\n\n\tassert(roots.length === 1, `expected only 1 root in the car archive; got=${roots.length}`);\n\n\tconst map: EntryMap = new Map();\n\tfor (const entry of car) {\n\t\tmap.set(CID.toString(entry.cid), entry);\n\t}\n\n\t// [commit, mst node, record?]\n\tassert(map.size >= 2, `expected at least 2 blocks in the archive; got=${map.size}`);\n\n\tconst commit = readEntry(map, roots[0], isCommit);\n\n\tfor (const { key, cid } of walkMstEntries(map, commit.data)) {\n\t\tconst { collection, rkey } = parseMstKey(key);\n\n\t\tconst carEntry = map.get(cid.$link);\n\t\tassert(carEntry != null, `cid not found in blockmap; cid=${cid}`);\n\n\t\tyield new RepoEntry(collection, rkey, cid, carEntry);\n\t}\n}\n\n/**\n * reads a block from the blockmap and validates it against the provided validation function\n * @internal\n * @param map a mapping of CID string -> actual bytes\n * @param link a CID link to read\n * @param validate a validation function to validate the decoded data\n * @returns the decoded and validated data\n */\nexport const readEntry = <T>(map: EntryMap, link: CidLink, validate: (value: unknown) => value is T): T => {\n\tconst cid = link.$link;\n\n\tconst entry = map.get(cid);\n\tassert(entry != null, `cid not found in blockmap; cid=${cid}`);\n\n\tconst data = CBOR.decode(entry.bytes);\n\tassert(validate(data), `validation failed for cid=${cid}`);\n\n\treturn data;\n};\n\n/**\n * walks the entries of a Merkle Sorted Tree (MST) in a depth-first manner\n * @internal\n * @param map a mapping of CID string -> actual bytes\n * @param pointer a CID link to the root of the MST\n * @returns a generator that yields the entries of the MST\n */\nexport function* walkMstEntries(map: EntryMap, pointer: CidLink): Generator<NodeEntry> {\n\tconst data = readEntry(map, pointer, isNodeData);\n\tconst entries = data.e;\n\n\tlet lastKey = '';\n\n\tif (data.l !== null) {\n\t\tyield* walkMstEntries(map, data.l);\n\t}\n\n\tfor (let i = 0, il = entries.length; i < il; i++) {\n\t\tconst entry = entries[i];\n\n\t\tconst key_str = decodeUtf8From(CBOR.fromBytes(entry.k));\n\t\tconst key = lastKey.slice(0, entry.p) + key_str;\n\n\t\tlastKey = key;\n\n\t\tyield { key: key, cid: entry.v };\n\n\t\tif (entry.t !== null) {\n\t\t\tyield* walkMstEntries(map, entry.t);\n\t\t}\n\t}\n}\n","import { Client, ClientResponseError, ok } from \"@atcute/client\";\nimport { ComAtprotoSyncSubscribeRepos } from \"@atcute/atproto\";\nimport { encode } from \"@atcute/cbor\";\nimport { xxh32r } from \"xxh32/dist/raw.js\";\nimport * as Repo from \"@atcute/repo\";\nimport * as IDB from \"idb-keyval\";\nimport * as TID from \"@atcute/tid\";\n\nimport { computed, signal } from \"~/common/signal.js\";\nimport { BroadcastedOutputElement, outputManager } from \"../../common.js\";\n\nimport {\n clearStoredSession,\n login,\n logout,\n OAuthUserAgent,\n restoreOrFinalize,\n TokenRefreshError,\n} from \"./oauth.js\";\n\n/**\n * @import {Track, TrackBundle} from \"~/definitions/types.d.ts\"\n * @import {OutputManager} from \"../../types.d.ts\"\n * @import {ATProtoOutputElement} from \"./types.d.ts\"\n */\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\n/** @type {Set<string>} */\nconst WATCHED_COLLECTIONS = new Set([\n \"sh.diffuse.output.facet\",\n \"sh.diffuse.output.playlistItem\",\n \"sh.diffuse.output.trackBundle\",\n]);\n\n/**\n * @implements {ATProtoOutputElement}\n */\nclass ATProtoOutput extends BroadcastedOutputElement {\n static NAME = \"diffuse/output/raw/atproto\";\n\n #manager;\n\n /** @type {PromiseWithResolvers<void>} */\n #authenticated = Promise.withResolvers();\n\n /** @type {Client | null} */\n #rpc = null;\n\n /** @type {OAuthUserAgent | null} */\n #agent = null;\n\n /** @type {string | null} */\n #pdsUrl = null;\n\n /** @type {AsyncIterator<any> | null} */\n #firehoseIterator = null;\n #firehoseGen = 0;\n\n constructor() {\n super();\n\n /** @type {Track[] | null} */\n let lastPersistedTracks = null;\n\n /** @type {OutputManager} */\n this.#manager = outputManager({\n facets: {\n empty: () => [],\n get: () => this.listRecords(\"sh.diffuse.output.facet\"),\n put: (data) => this.putRecords(\"sh.diffuse.output.facet\", data),\n },\n playlistItems: {\n empty: () => [],\n get: () => this.listRecords(\"sh.diffuse.output.playlistItem\"),\n put: (data) => this.putRecords(\"sh.diffuse.output.playlistItem\", data),\n },\n tracks: {\n empty: () => [],\n get: async () => {\n const bundles = await this.listRecords(\n \"sh.diffuse.output.trackBundle\",\n );\n\n const tracks = bundles.flatMap((bundle) => bundle.tracks ?? []);\n lastPersistedTracks = tracks;\n\n return tracks;\n },\n put: async (data) => {\n const hashCurrent = xxh32r(encode(lastPersistedTracks ?? []));\n const hashNew = xxh32r(encode(data));\n\n if (hashCurrent === hashNew) {\n return;\n }\n\n /** @type {TrackBundle[]} */\n const bundles = [];\n\n for (let i = 0; i < data.length; i += 100) {\n bundles.push({\n $type: \"sh.diffuse.output.trackBundle\",\n id: TID.now(),\n tracks: data.slice(i, i + 100),\n });\n }\n\n await this.putRecords(\"sh.diffuse.output.trackBundle\", bundles, {\n upsertBatchSize: 1,\n });\n\n lastPersistedTracks = data;\n },\n },\n });\n\n this.facets = this.#manager.facets;\n this.playlistItems = this.#manager.playlistItems;\n this.tracks = this.#manager.tracks;\n }\n\n // SIGNALS\n\n #did = signal(/** @type {`did:${string}:${string}` | null} */ (null));\n #isOnline = signal(navigator.onLine);\n #rev = signal(/** @type {string | null} */ (null));\n\n did = this.#did.get;\n rev = this.#rev.get;\n\n ready = computed(() => {\n return this.#did.value !== null && !!this.#rpc && this.#isOnline.value;\n });\n\n // LIFECYCLE\n\n /** @override */\n connectedCallback() {\n this.replicateSavedData(this.#manager);\n\n super.connectedCallback();\n\n this.#tryRestore();\n\n globalThis.addEventListener(\"online\", this.#online);\n globalThis.addEventListener(\"offline\", this.#offline);\n }\n\n /** @override */\n disconnectedCallback() {\n this.#stopFirehose();\n globalThis.removeEventListener(\"online\", this.#online);\n globalThis.removeEventListener(\"offline\", this.#offline);\n }\n\n #offline = () => this.#isOnline.set(false);\n #online = () => this.#isOnline.set(true);\n\n // AUTH\n\n /**\n * Initiate the OAuth flow.\n * Navigates the browser to the authorization server.\n *\n * @param {string} handle\n */\n async login(handle) {\n await login(handle);\n }\n\n /**\n * Sign out and revoke the current session.\n */\n async logout() {\n if (this.#agent) {\n this.#stopFirehose();\n await logout(this.#agent);\n this.#agent = null;\n this.#authenticated = Promise.withResolvers();\n this.#did.value = null;\n this.#pdsUrl = null;\n this.#rpc = null;\n }\n }\n\n /**\n * Clear session state without contacting the server.\n * Used when the session has already been revoked.\n */\n #clearSession() {\n this.#stopFirehose();\n this.#agent = null;\n this.#authenticated = Promise.withResolvers();\n this.#did.value = null;\n this.#pdsUrl = null;\n this.#rpc = null;\n\n clearStoredSession();\n }\n\n /**\n * @param {unknown} err\n * @returns {boolean}\n */\n #isSessionError(err) {\n if (err instanceof TokenRefreshError) return true;\n // OAuthUserAgent.handle() swallows TokenRefreshError and returns the\n // original 401 response, which ok() wraps as a ClientResponseError.\n if (err instanceof ClientResponseError && err.status === 401) return true;\n if (err && typeof err === \"object\" && \"cause\" in err) {\n return this.#isSessionError(/** @type {any} */ (err).cause);\n }\n return false;\n }\n\n async #tryRestore() {\n await this.whenConnected();\n\n try {\n const session = await restoreOrFinalize();\n\n if (session) {\n this.#setSession(session);\n }\n } catch (err) {\n if (this.#isSessionError(err)) {\n this.#clearSession();\n } else {\n throw err;\n }\n }\n }\n\n /**\n * @param {import(\"@atcute/oauth-browser-client\").Session} session\n */\n #setSession(session) {\n const agent = new OAuthUserAgent(session);\n\n // Intercept token refresh to detect session revocation proactively.\n // OAuthUserAgent.handle() swallows TokenRefreshError silently,\n // so we hook into getSession to clear state as soon as refresh fails.\n const originalGetSession = agent.getSession.bind(agent);\n agent.getSession = /** @param {any[]} args */ (...args) => {\n const promise = originalGetSession(...args);\n\n promise.catch((err) => {\n if (err instanceof TokenRefreshError) {\n this.#clearSession();\n }\n });\n\n return promise;\n };\n\n this.#agent = agent;\n this.#rpc = new Client({ handler: agent });\n this.#did.value = session.info.sub;\n this.#pdsUrl = session.info.aud;\n this.#authenticated.resolve();\n this.#startFirehose();\n }\n\n // FIREHOSE\n\n #stopFirehose() {\n const iter = this.#firehoseIterator;\n this.#firehoseIterator = null;\n iter?.return?.();\n }\n\n async #startFirehose() {\n this.#stopFirehose();\n\n const gen = ++this.#firehoseGen;\n const pdsUrl = this.#pdsUrl;\n if (!pdsUrl) return;\n\n const wssUrl = pdsUrl.replace(\n /^https?:\\/\\//,\n (m) => m === \"https://\" ? \"wss://\" : \"ws://\",\n );\n\n const { FirehoseSubscription } = await import(\"@atcute/firehose\");\n\n // Abort if superseded while awaiting the import\n if (this.#firehoseGen !== gen) return;\n\n const subscription = new FirehoseSubscription({\n service: wssUrl,\n nsid: ComAtprotoSyncSubscribeRepos.mainSchema,\n validateMessages: false,\n });\n\n const iter = subscription[Symbol.asyncIterator]();\n this.#firehoseIterator = iter;\n\n try {\n for await (const message of iter) {\n this.#handleFirehoseCommit(message);\n }\n } catch {\n // Non-fatal; partysocket handles reconnection automatically\n }\n }\n\n /**\n * @param {any} message\n */\n #handleFirehoseCommit(message) {\n if (message.$type !== \"com.atproto.sync.subscribeRepos#commit\") return;\n if (message.repo !== this.#did.value) return;\n\n // Skip commits we made ourselves (rev already reflects current state)\n if (message.rev === this.#rev.value) return;\n\n const touched = new Set(\n (message.ops ?? [])\n .map((/** @type {any} */ op) => op.path?.split(\"/\")[0])\n .filter((/** @type {string} */ c) => WATCHED_COLLECTIONS.has(c)),\n );\n\n if (touched.size === 0) return;\n\n if (touched.has(\"sh.diffuse.output.facet\")) this.#manager.facets.reload();\n if (touched.has(\"sh.diffuse.output.playlistItem\")) {\n this.#manager.playlistItems.reload();\n }\n if (touched.has(\"sh.diffuse.output.trackBundle\")) {\n this.#manager.tracks.reload();\n }\n }\n\n // RECORDS\n\n /**\n * Fetch the latest commit rev for this repo.\n * Returns `null` if not authenticated or on error.\n *\n * @returns {Promise<string | null>}\n */\n async getLatestCommit() {\n const did = this.#did.value;\n\n const rpc = this.#rpc;\n if (!rpc || !did) return null;\n\n try {\n const result = await ok(rpc.get(\n \"com.atproto.sync.getLatestCommit\",\n { params: { did } },\n ));\n\n this.#rev.value = result?.rev;\n return result?.rev;\n } catch (err) {\n if (this.#isSessionError(err)) {\n this.#clearSession();\n return null;\n }\n\n throw err;\n }\n }\n\n /**\n * Fetch the full repo CAR for the authenticated user, cached in IDB by rev.\n * Returns null if not authenticated or if the commit rev cannot be determined.\n *\n * @returns {Promise<Uint8Array | null>}\n */\n async #getRepoCar() {\n const did = this.#did.value;\n const rpc = this.#rpc;\n if (!rpc || !did) return null;\n\n const latestRev = await this.getLatestCommit();\n if (!latestRev) return null;\n\n const IDB_KEY = `diffuse/output/raw/atproto/repo/${did}`;\n const cached =\n /** @type {{ rev: string, bytes: Uint8Array } | undefined} */ (\n await IDB.get(IDB_KEY)\n );\n\n if (cached?.rev === latestRev) {\n return cached.bytes;\n }\n\n const bytes = await ok(rpc.get(\"com.atproto.sync.getRepo\", {\n params: { did },\n as: \"bytes\",\n }));\n\n await IDB.set(IDB_KEY, { rev: latestRev, bytes });\n return bytes;\n }\n\n /**\n * @template T\n * @param {string} collection\n * @param {string} [did]\n * @returns {Promise<T[]>}\n */\n async listRecords(collection, did) {\n did ??= this.#did.value ?? undefined;\n\n if (!this.#rpc || !did) return [];\n\n try {\n const bytes = await this.#getRepoCar();\n if (!bytes) return [];\n\n const records = [];\n for (const entry of Repo.fromUint8Array(bytes)) {\n if (entry.collection === collection) {\n records.push(/** @type {T} */ (entry.record));\n }\n }\n return records;\n } catch (err) {\n if (this.#isSessionError(err)) {\n this.#clearSession();\n return [];\n }\n\n throw err;\n }\n }\n\n /**\n * @param {string} collection\n * @param {Array<{ id: string }>} data\n * @param {{ deleteBatchSize?: number, upsertBatchSize?: number }} [options]\n */\n async putRecords(\n collection,\n data,\n { deleteBatchSize = 100, upsertBatchSize = deleteBatchSize } = {},\n ) {\n const rpc = this.#rpc;\n const did = this.#did.value;\n\n if (!rpc || !did) return;\n\n try {\n // 1. Fetch current state\n /** @type {Map<string, { rkey: string, value: unknown }>} */\n const existing = new Map();\n\n const repoBytes = await this.#getRepoCar();\n if (repoBytes) {\n for (const entry of Repo.fromUint8Array(repoBytes)) {\n if (entry.collection === collection) {\n const record = /** @type {any} */ (entry.record);\n existing.set(record.id, { rkey: entry.rkey, value: record });\n }\n }\n }\n\n // 2. Build desired state\n const desired = new Map(\n data.map((record) => [record.id, { $type: collection, ...record }]),\n );\n\n // 3. Compute diff\n /** @type {unknown[]} */\n const deletes = [];\n\n /** @type {unknown[]} */\n const upserts = [];\n\n for (const [id, { rkey }] of existing) {\n if (!desired.has(id)) {\n deletes.push({\n $type: \"com.atproto.repo.applyWrites#delete\",\n collection,\n rkey,\n });\n }\n }\n\n for (const [id, record] of desired) {\n const entry = existing.get(id);\n\n if (!entry) {\n upserts.push({\n $type: \"com.atproto.repo.applyWrites#create\",\n collection,\n rkey: id,\n value: record,\n });\n } else if (JSON.stringify(entry.value) !== JSON.stringify(record)) {\n upserts.push({\n $type: \"com.atproto.repo.applyWrites#update\",\n collection,\n rkey: entry.rkey,\n value: record,\n });\n }\n }\n\n // 4. Apply in batches, throttled to 1500 ops/hour via a persisted sliding window\n const WINDOW_MS = 3_600_000;\n const RATE_LIMIT = 1500;\n\n const IDB_KEY = \"diffuse/output/raw/atproto/writes\";\n\n /**\n * Returns all record IDs written within the last hour, loaded from IDB.\n *\n * @returns {Promise<{ id: string, ts: number }[]>}\n */\n const loadWindow = async () => {\n const now = Date.now();\n const all = await IDB.get(IDB_KEY) ?? [];\n return all.filter(\n /**\n * @param {{ id: string, ts: number }} entry\n * @returns {boolean}\n */\n (entry) => now - entry.ts < WINDOW_MS,\n );\n };\n\n /**\n * Records IDs as written, pruning entries older than one hour.\n *\n * @param {string[]} ids\n */\n const recordWritten = async (ids) => {\n const now = Date.now();\n const window = await loadWindow();\n await IDB.set(IDB_KEY, [\n ...window,\n ...ids.map((id) => ({ id, ts: now })),\n ]);\n };\n\n const applyBatch = async (/** @type {any[]} */ batch) => {\n // Wait until the sliding window has room for this batch\n while (true) {\n const window = await loadWindow();\n const uniqueInWindow = new Set(window.map((e) => e.id));\n const batchIds = batch.map((op) => op.rkey ?? op.value?.id).filter(\n Boolean,\n );\n const newIds = batchIds.filter((id) => !uniqueInWindow.has(id));\n\n if (uniqueInWindow.size + newIds.length <= RATE_LIMIT) break;\n\n // Wait until the oldest entry in the window expires\n const oldest = window.reduce((a, b) => a.ts < b.ts ? a : b);\n const waitMs = WINDOW_MS - (Date.now() - oldest.ts) + 1;\n await new Promise((resolve) => setTimeout(resolve, waitMs));\n }\n\n const result = await ok(rpc.post(\"com.atproto.repo.applyWrites\", {\n input: { repo: did, writes: batch },\n }));\n\n const writtenIds = batch.map((op) => op.rkey ?? op.value?.id).filter(\n Boolean,\n );\n\n await recordWritten(writtenIds);\n\n if (result?.commit?.rev) {\n this.#rev.value = result.commit.rev;\n }\n };\n\n for (let i = 0; i < deletes.length; i += deleteBatchSize) {\n await applyBatch(deletes.slice(i, i + deleteBatchSize));\n }\n\n for (let i = 0; i < upserts.length; i += upsertBatchSize) {\n await applyBatch(upserts.slice(i, i + upsertBatchSize));\n }\n } catch (err) {\n if (this.#isSessionError(err)) {\n this.#clearSession();\n return;\n }\n\n throw err;\n }\n }\n}\n\nexport default ATProtoOutput;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = ATProtoOutput;\nexport const NAME = \"dor-atproto\";\n\ncustomElements.define(NAME, ATProtoOutput);\n"],"mappings":"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","names":["subscribeRepos_exports","__export","accountSchema","commitSchema","identitySchema","infoSchema","mainSchema","repoOpSchema","syncSchema","_accountSchema","object","optional","literal","boolean","didString","integer","string","datetimeString","_commitSchema","array","cidLink","constrain","bytes","bytesSize","repoOpSchema","arrayLength","tidString","nullable","_identitySchema","handleString","_infoSchema","_mainSchema","subscription","variant","accountSchema","commitSchema","identitySchema","infoSchema","syncSchema","_repoOpSchema","_syncSchema","mainSchema","RepoEntry","__name","collection","rkey","cid","carEntry","decode","isCommit","value","obj","isCidLink","isBytes","MAX_SAFE_INTEGER","_min","decode","__name","buf","offset","length","end","_min","counter","b","res","shift","isCarV1Header","__name","value","version","roots","root","CidLinkWrapper","fromUint8Array","__name","buffer","header","headerOffset","readHeader","pos","entryStart","entryLength","lengthOffset","decode","cidStart","cid","cidOffset","readCid","bytesStart","bytesSize","bytesEnd","bytes","source","offset","headerStart","length","dataStart","dataEnd","data","isCarV1Header","cidEnd","version","codec","digestType","digestSize","CID_VERSION","CODEC_DCBOR","CODEC_RAW","HASH_SHA256","isTreeEntry","__name","value","obj","isBytes","isCidLink","isNodeData","assert","__name","condition","message","parseMstKey","__name","key","slash","assert","fromUint8Array","buf","car","roots","assert","map","entry","toString","commit","readEntry","isCommit","key","cid","walkMstEntries","collection","rkey","parseMstKey","carEntry","RepoEntry","__name","link","validate","data","decode","pointer","isNodeData","entries","lastKey","i","il","key_str","decodeUtf8From","fromBytes","WATCHED_COLLECTIONS","ATProtoOutput","BroadcastedOutputElement","__name","#manager","#authenticated","#rpc","#agent","#pdsUrl","#firehoseIterator","#firehoseGen","lastPersistedTracks","outputManager","data","tracks","bundle","hashCurrent","xxh32r","encode","hashNew","bundles","i","now","#did","signal","#isOnline","#rev","computed","#tryRestore","#online","#offline","#stopFirehose","handle","login","logout","#clearSession","clearStoredSession","#isSessionError","err","TokenRefreshError","ClientResponseError","session","restoreOrFinalize","#setSession","agent","OAuthUserAgent","originalGetSession","args","promise","Client","#startFirehose","iter","gen","pdsUrl","wssUrl","m","FirehoseSubscription","subscribeRepos_exports","message","#handleFirehoseCommit","touched","op","c","did","rpc","result","ok","#getRepoCar","latestRev","IDB_KEY","cached","get","bytes","set","collection","records","entry","fromUint8Array","deleteBatchSize","upsertBatchSize","existing","repoBytes","record","desired","deletes","upserts","id","rkey","WINDOW_MS","RATE_LIMIT","loadWindow","recordWritten","ids","window","applyBatch","batch","uniqueInWindow","e","newIds","oldest","a","b","waitMs","resolve","writtenIds","element_default","CLASS","NAME"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/components/output/raw/atproto/element.js.map"}
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/raw/atproto/oauth.js
··· 1 + ../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/output/raw/atproto/oauth.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/raw/atproto/oauth.js.br
··· 1 + ../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/output/raw/atproto/oauth.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/output/raw/atproto/oauth.js.map
··· 1 + ../../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/components/output/raw/atproto/oauth.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/artwork/constants.js
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/processor/artwork/constants.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/artwork/constants.js.br
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/processor/artwork/constants.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/artwork/constants.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/processor/artwork/constants.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/artwork/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/processor/artwork/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/artwork/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/processor/artwork/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/artwork/element.js.map
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/processor/artwork/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/artwork/worker.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/processor/artwork/worker.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/artwork/worker.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/processor/artwork/worker.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/artwork/worker.js.map
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/processor/artwork/worker.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/metadata/common.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/processor/metadata/common.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/metadata/common.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/processor/metadata/common.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/metadata/common.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/processor/metadata/common.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/metadata/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/processor/metadata/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/metadata/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/processor/metadata/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/metadata/element.js.map
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/components/processor/metadata/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/metadata/worker.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/processor/metadata/worker.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/metadata/worker.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/processor/metadata/worker.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/metadata/worker.js.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/processor/metadata/worker.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/search/constants.js
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/processor/search/constants.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/search/constants.js.br
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/processor/search/constants.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/search/constants.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/processor/search/constants.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/search/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/processor/search/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/search/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/processor/search/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/search/element.js.map
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/components/processor/search/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/search/worker.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/processor/search/worker.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/search/worker.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/processor/search/worker.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/processor/search/worker.js.map
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/processor/search/worker.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/supplement/last.fm/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/supplement/last.fm/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/supplement/last.fm/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/supplement/last.fm/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/supplement/last.fm/element.js.map
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/components/supplement/last.fm/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/base.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/transformer/output/base.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/base.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/transformer/output/base.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/base.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/transformer/output/base.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/bytes/automerge/constants.js
··· 1 + ../../../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/components/transformer/output/bytes/automerge/constants.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/bytes/automerge/constants.js.br
··· 1 + ../../../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/components/transformer/output/bytes/automerge/constants.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/bytes/automerge/constants.js.map
··· 1 + ../../../../../../bafybeieo3vdz7hmuriods6ueueg5yt6xctzjqrmqdasqr4plalwojiwvou/components/transformer/output/bytes/automerge/constants.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/bytes/automerge/element.js
··· 1 + ../../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/transformer/output/bytes/automerge/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/bytes/automerge/element.js.br
··· 1 + ../../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/transformer/output/bytes/automerge/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/bytes/automerge/element.js.map
··· 1 + ../../../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/components/transformer/output/bytes/automerge/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/bytes/automerge/utils.js
··· 1 + ../../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/transformer/output/bytes/automerge/utils.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/bytes/automerge/utils.js.br
··· 1 + ../../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/transformer/output/bytes/automerge/utils.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/bytes/automerge/utils.js.map
··· 1 + ../../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/transformer/output/bytes/automerge/utils.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/bytes/dasl-sync/constants.js
··· 1 + ../../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/transformer/output/bytes/dasl-sync/constants.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/bytes/dasl-sync/constants.js.br
··· 1 + ../../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/transformer/output/bytes/dasl-sync/constants.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/bytes/dasl-sync/constants.js.map
··· 1 + ../../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/transformer/output/bytes/dasl-sync/constants.js.map
+8
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/bytes/dasl-sync/element.js
··· 1 + import{f as P,g as C}from"../../../../../chunk-GEPOAB4D.js";import{a as B}from"../../../../../chunk-HDWT7CXU.js";import"../../../../../chunk-TTDW3IDD.js";import"../../../../../chunk-RJJBOBOS.js";import{a as O}from"../../../../../chunk-YEYXC3F5.js";import"../../../../../chunk-6NC6NOLO.js";import"../../../../../chunk-7VVACK5Z.js";import{b as N}from"../../../../../chunk-6WW6Q6YW.js";import"../../../../../chunk-7EUCOO7A.js";import"../../../../../chunk-WLXGGMHC.js";import"../../../../../chunk-QVM63RP5.js";import"../../../../../chunk-UYT7NSKP.js";import"../../../../../chunk-MWEXZQ4O.js";import{a as S}from"../../../../../chunk-2CFBJKYZ.js";import"../../../../../chunk-524HX7V4.js";import"../../../../../chunk-DFARJRPB.js";import"../../../../../chunk-K2CRUTCH.js";import{a as M,b as j}from"../../../../../chunk-GKONEEZQ.js";import{a as L}from"../../../../../chunk-6TMSPXBP.js";import{j as A,o as x}from"../../../../../chunk-4I6PUBR2.js";import{a as m}from"../../../../../chunk-BFIVCPQF.js";var T={cid:void 0,data:[],inventory:{current:{},removed:[]}},E=class extends O{static{m(this,"DaslBytesSyncOutputTransformer")}static NAME="diffuse/transformer/output/bytes/dasl-sync";constructor(){super();let e=this.base(),s=this.#e.get,d=m((a,g,k,{saveLocal:w,saveRemote:l})=>{let r=x(T,{compare:j}),p=x(!1),n=x({isBusy:!1,lastCID:""},{compare:M});return this.effect(()=>{if(!p.value||n.value.isBusy)return;let t=g(),o=e.ready()?k():void 0,h=t?.state==="loaded"?t.data:void 0,D=o?.state==="loaded"?o.data:void 0,b=o?.state,v=h?P(h):void 0,u=D&&b==="loaded"?P(D):void 0;u?v?b==="loaded"&&this.hasDiverged({local:v,remote:u})?this.isLeader().then(I=>{I&&(n.value={isBusy:!0,lastCID:n.value.lastCID},this.merge(v,u).then(async f=>{try{if(r.value=f,f.cid===n.value.lastCID)return;let R=this.save(f);f.cid!==v.cid&&await w(R),e.ready()&&b==="loaded"&&f.cid!==u.cid&&await l(R)}finally{n.value={isBusy:!1,lastCID:f.cid??""}}}))}):r.value=v:(r.value=u,this.isLeader().then(I=>{if(!I)return;let f=this.save(u);w(f)})):v&&(r.value=v,e.ready()&&b==="loaded"&&this.isLeader().then(I=>{if(!I)return;let f=this.save(v);l(f)}))}),A(()=>(p.get()||(p.value=!0),r.get()))},"state"),y=d("facets",A(()=>s()?.facets.collection()??{state:"loading"}),e.facets.collection,{saveLocal:m(async a=>s()?.facets.save(a),"saveLocal"),saveRemote:e.facets.save}),i=d("playlistItems",A(()=>s()?.playlistItems.collection()??{state:"loading"}),e.playlistItems.collection,{saveLocal:m(async a=>s()?.playlistItems.save(a),"saveLocal"),saveRemote:e.playlistItems.save}),c=d("tracks",A(()=>s()?.tracks.collection()??{state:"loading"}),e.tracks.collection,{saveLocal:m(async a=>s()?.tracks.save(a),"saveLocal"),saveRemote:e.tracks.save});this.facets=this.managerProp({save:m(async a=>s()?.facets.save(a),"save")},e.facets,e.ready,y),this.playlistItems=this.managerProp({save:m(async a=>s()?.playlistItems.save(a),"save")},e.playlistItems,e.ready,i),this.tracks=this.managerProp({save:m(async a=>s()?.tracks.save(a),"save")},e.tracks,e.ready,c),this.ready=()=>!0}#e=x(void 0);async connectedCallback(){this.hasAttribute("group")&&this.broadcast(this.identifier,{}),super.connectedCallback();let e=this.root().querySelector("dop-indexed-db");if(!e)throw new Error("Can't find local output");customElements.whenDefined(e.localName).then(()=>{this.#e.value=e})}async updateContainer({previous:e,collection:s}){let d=e.inventory,y=s.map(({id:n})=>n),i=new Set(Object.keys(d.current)),c=new Set(y),a=c.difference(i),g=i.difference(c),w=new Set(d.removed).union(g),l={...d.current};g.forEach(n=>{delete l[n]});let r=[];s.forEach(n=>{if(!a.has(n.id))return;let t=C(n);r.push((async()=>{let o=await S(113,t);l[n.id]=o})())}),await Promise.all(r);let p={current:l,removed:Array.from(w)};return{cid:await S(113,C(p)),data:s,inventory:p}}hasDiverged({local:e,remote:s}){return e.cid!==s.cid}async merge(e,s){let d=new Set(e.inventory.removed),y=new Set(s.inventory.removed),i=d.union(y),c=e.inventory.current,a=s.inventory.current,g=new Map(e.data.map(t=>[t.id,t])),k=new Map(s.data.map(t=>[t.id,t])),w=new Set([...Object.keys(c),...Object.keys(a)]),l={},r=[],p=[];for(let t of w)if(!i.has(t))if(t in c&&t in a){let o=g.get(t),h=k.get(t);if(!o||!h){console.warn("Should have found both items but didn't!");continue}if(c[t]===a[t]){r.push(o),l[t]=c[t];continue}let D=o.updatedAt&&h.updatedAt?N(o.updatedAt,h.updatedAt)>0:!1,b=D?o:h,u={...D?h:o};L.applyDiff(u,b),r.push(u),p.push(S(113,C(u)).then(I=>{l[t]=I}))}else{let o=g.get(t)??k.get(t);o&&(r.push(o),l[t]=c[t]??a[t])}await Promise.all(p);let n={current:l,removed:Array.from(i)};return{cid:await S(113,C(n)),data:r,inventory:n}}save(e){return C(e)}managerProp(e,s,d,y){return{collection:A(()=>{let i=y();return i.cid===void 0&&d()&&s.collection().state==="loading"?{state:"loading"}:{state:"loaded",data:i.data}}),reload:s.reload,save:m(async i=>{let c=await this.updateContainer({collection:i,previous:y()}),a=this.save(c);await e.save(a)},"save")}}render({html:e}){return e` 2 + <dop-indexed-db 3 + group="${B(this.getAttribute("group"))}" 4 + namespace="${B(this.getAttribute("namespace"))}" 5 + ></dop-indexed-db> 6 + `}},W=E,q=E,$="dtob-dasl-sync";customElements.define($,q);export{q as CLASS,$ as NAME,W as default}; 7 + 8 + //# sourceMappingURL=./element.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/bytes/dasl-sync/element.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/bytes/dasl-sync/element.js.map
··· 1 + {"version":3,"sources":["/element.js"],"sourcesContent":["import { decode, encode } from \"@atcute/cbor\";\nimport { ifDefined } from \"lit-html/directives/if-defined.js\";\nimport deepDiff from \"@fry69/deep-diff\";\n\nimport \"~/components/output/polymorphic/indexed-db/element.js\";\n\nimport * as CID from \"~/common/cid.js\";\nimport { diff, strictEquality } from \"~/common/compare.js\";\nimport { computed, signal } from \"~/common/signal.js\";\nimport { compareTimestamps } from \"~/common/temporal.js\";\nimport { OutputTransformer } from \"../../base.js\";\n\n/**\n * @import { SignalReader } from \"~/common/signal.d.ts\";\n * @import { RenderArg } from \"~/common/element.d.ts\"\n * @import { OutputElement } from \"~/components/output/types.d.ts\"\n *\n * @import { Container } from \"./types.d.ts\"\n */\n\n/** @type {Container<any>} */\nconst EMPTY = {\n cid: undefined,\n data: [],\n inventory: { current: {}, removed: [] },\n};\n\n/**\n * @extends {OutputTransformer<Uint8Array>}\n */\nclass DaslBytesSyncOutputTransformer extends OutputTransformer {\n static NAME = \"diffuse/transformer/output/bytes/dasl-sync\";\n\n constructor() {\n super();\n\n const remote = this.base();\n const local = this.#localOutput.get;\n\n /**\n * @template {{ id: string; updatedAt: string }} T\n * @param {string} kind\n * @param {SignalReader<{ state: \"loading\" } | { state: \"loaded\"; data: Uint8Array | undefined }>} localCollection\n * @param {SignalReader<{ state: \"loading\" } | { state: \"loaded\"; data: Uint8Array | undefined }>} remoteCollection\n * @param {{ saveLocal: (bytes: Uint8Array) => Promise<void>; saveRemote: (bytes: Uint8Array) => Promise<void> }} sync\n */\n const state = (\n kind,\n localCollection,\n remoteCollection,\n { saveLocal, saveRemote },\n ) => {\n const container = signal(\n /** @type {Container<T>} */ (EMPTY),\n { compare: strictEquality },\n );\n\n const isReady = signal(false);\n const merging = signal({ isBusy: false, lastCID: \"\" }, {\n compare: diff,\n });\n\n this.effect(() => {\n if (!isReady.value) return;\n if (merging.value.isBusy) return;\n\n const lc = localCollection();\n const rc = remote.ready() ? remoteCollection() : undefined;\n\n const lb = lc?.state === \"loaded\" ? lc.data : undefined;\n const rb = rc?.state === \"loaded\" ? rc.data : undefined;\n const rs = rc?.state;\n\n /** @type {Container<T> | undefined} */\n const l = lb ? decode(lb) : undefined;\n\n /** @type {Container<T> | undefined} */\n const r = rb && rs === \"loaded\" ? decode(rb) : undefined;\n\n if (!r) {\n if (l) {\n container.value = l;\n\n if (remote.ready() && rs === \"loaded\") {\n this.isLeader().then((isLeader) => {\n if (!isLeader) return;\n const bytes = this.save(l);\n saveRemote(bytes);\n });\n }\n }\n } else if (!l) {\n container.value = r;\n\n this.isLeader().then((isLeader) => {\n if (!isLeader) return;\n const bytes = this.save(r);\n saveLocal(bytes);\n });\n } else if (\n rs === \"loaded\" && this.hasDiverged({ local: l, remote: r })\n ) {\n // Async merge\n this.isLeader().then((isLeader) => {\n if (!isLeader) return;\n\n merging.value = { isBusy: true, lastCID: merging.value.lastCID };\n\n this.merge(l, r).then(async (c) => {\n try {\n container.value = c;\n\n if (c.cid === merging.value.lastCID) return;\n\n const bytes = this.save(c);\n\n if (c.cid !== l.cid) {\n await saveLocal(bytes);\n }\n\n if (remote.ready() && rs === \"loaded\" && c.cid !== r.cid) {\n await saveRemote(bytes);\n }\n } finally {\n merging.value = { isBusy: false, lastCID: c.cid ?? \"\" };\n }\n });\n });\n } else {\n container.value = l;\n }\n });\n\n return computed(() => {\n if (!isReady.get()) isReady.value = true;\n return container.get();\n });\n };\n\n // Container signals\n const facets = state(\n \"facets\",\n computed(() => local()?.facets.collection() ?? { state: \"loading\" }),\n remote.facets.collection,\n {\n saveLocal: async (v) => local()?.facets.save(v),\n saveRemote: remote.facets.save,\n },\n );\n\n const playlistItems = state(\n \"playlistItems\",\n computed(() =>\n local()?.playlistItems.collection() ?? { state: \"loading\" }\n ),\n remote.playlistItems.collection,\n {\n saveLocal: async (v) => local()?.playlistItems.save(v),\n saveRemote: remote.playlistItems.save,\n },\n );\n\n const tracks = state(\n \"tracks\",\n computed(() => local()?.tracks.collection() ?? { state: \"loading\" }),\n remote.tracks.collection,\n {\n saveLocal: async (v) => local()?.tracks.save(v),\n saveRemote: remote.tracks.save,\n },\n );\n\n // Output manager\n this.facets = this.managerProp(\n { save: async (v) => local()?.facets.save(v) },\n remote.facets,\n remote.ready,\n facets,\n );\n\n this.playlistItems = this.managerProp(\n { save: async (v) => local()?.playlistItems.save(v) },\n remote.playlistItems,\n remote.ready,\n playlistItems,\n );\n\n this.tracks = this.managerProp(\n { save: async (v) => local()?.tracks.save(v) },\n remote.tracks,\n remote.ready,\n tracks,\n );\n\n this.ready = () => true;\n }\n\n // SIGNALS\n\n #localOutput = signal(\n /** @type {OutputElement<any> | undefined} */ (undefined),\n );\n\n // LIFECYCLE\n\n /**\n * @override\n */\n async connectedCallback() {\n // Broadcast if needed\n if (this.hasAttribute(\"group\")) {\n this.broadcast(this.identifier, {});\n }\n\n super.connectedCallback();\n\n /** @type {OutputElement<any> | null} */\n const local = this.root().querySelector(\"dop-indexed-db\");\n if (!local) throw new Error(\"Can't find local output\");\n\n customElements.whenDefined(local.localName).then(() => {\n this.#localOutput.value = local;\n });\n }\n\n // DATA FUNCTIONS\n\n /**\n * @template {{ id: string; updatedAt: string }} T\n * @param {{ previous: Container<T>, collection: T[] }} _\n * @returns {Promise<Container<T>>}\n */\n async updateContainer({ previous, collection }) {\n const inventory = previous.inventory;\n\n const collIds = collection.map(({ id }) => id);\n\n const currSet = new Set(Object.keys(inventory.current));\n const collSet = new Set(collIds);\n\n const newSet = collSet.difference(currSet);\n const remSet = currSet.difference(collSet);\n\n const alreadyRemoved = new Set(inventory.removed);\n const allRemoved = alreadyRemoved.union(remSet);\n\n /** @type {Record<string, string>} */\n const current = { ...inventory.current };\n\n remSet.forEach((id) => {\n delete current[id];\n });\n\n /** @type Promise<void>[] */\n const promises = [];\n\n collection.forEach((a) => {\n if (!newSet.has(a.id)) return;\n\n // Item is new, calculate CID and add it to the `current` dictionary\n const encoded = encode(a);\n\n promises.push((async () => {\n const cid = await CID.create(0x71, encoded);\n current[a.id] = cid;\n })());\n });\n\n await Promise.all(promises);\n\n const newInventory = {\n current,\n removed: Array.from(allRemoved),\n };\n\n return {\n cid: await CID.create(0x71, encode(newInventory)),\n data: collection,\n inventory: newInventory,\n };\n }\n\n /**\n * @template {{ id: string; updatedAt: string }} T\n * @param {{ local: Container<T>, remote: Container<T> }} _\n */\n hasDiverged({ local, remote }) {\n return local.cid !== remote.cid;\n }\n\n /**\n * @template {{ id: string; updatedAt: string }} T\n * @param {Container<T>} a\n * @param {Container<T>} b\n * @returns {Promise<Container<T>>}\n */\n async merge(a, b) {\n const removedA = new Set(a.inventory.removed);\n const removedB = new Set(b.inventory.removed);\n const allRemoved = removedA.union(removedB);\n\n const currentA = a.inventory.current;\n const currentB = b.inventory.current;\n\n const mapA = new Map(a.data.map((item) => [item.id, item]));\n const mapB = new Map(b.data.map((item) => [item.id, item]));\n\n // Combine all known ids from both sides\n const allIds = new Set([\n ...Object.keys(currentA),\n ...Object.keys(currentB),\n ]);\n\n /** @type {Record<string, string>} */\n const current = {};\n\n /** @type {T[]} */\n const data = [];\n\n // Construct `current` and `data`\n /** @type {Promise<void>[]} */\n const cidPromises = [];\n\n for (const id of allIds) {\n if (allRemoved.has(id)) continue;\n\n if (id in currentA && id in currentB) {\n const itemA = mapA.get(id);\n const itemB = mapB.get(id);\n\n if (!itemA || !itemB) {\n console.warn(\"Should have found both items but didn't!\");\n continue;\n }\n\n // Items are identical, no merge or CID recomputation needed\n if (currentA[id] === currentB[id]) {\n data.push(itemA);\n current[id] = currentA[id];\n continue;\n }\n\n const isANewerThanB = itemA.updatedAt && itemB.updatedAt\n ? compareTimestamps(itemA.updatedAt, itemB.updatedAt) > 0\n : false;\n\n const newestItem = isANewerThanB ? itemA : itemB;\n const oldItem = isANewerThanB ? itemB : itemA;\n\n /** @type {T} */\n const mergedItem = { ...oldItem };\n\n deepDiff.applyDiff(mergedItem, newestItem);\n\n data.push(mergedItem);\n\n cidPromises.push(\n CID.create(0x71, encode(mergedItem)).then((cid) => {\n current[id] = cid;\n }),\n );\n } else {\n const item = mapA.get(id) ?? mapB.get(id);\n\n if (item) {\n data.push(item);\n current[id] = currentA[id] ?? currentB[id];\n }\n }\n }\n\n await Promise.all(cidPromises);\n\n // New inventory\n const updatedInventory = { current, removed: Array.from(allRemoved) };\n\n return {\n cid: await CID.create(0x71, encode(updatedInventory)),\n data,\n inventory: updatedInventory,\n };\n }\n\n /**\n * @template {{ id: string; updatedAt: string }} T\n * @param {Container<T>} container\n * @returns {Uint8Array}\n */\n save(container) {\n return encode(container);\n }\n\n // OUTPUT MANAGER FUNCTIONS\n\n /**\n * @template {{ id: string; updatedAt: string }} T\n * @param {{ save: (bytes: Uint8Array) => Promise<void> | void }} local\n * @param {{ collection: SignalReader<{ state: \"loading\" } | { state: \"loaded\"; data: Uint8Array | undefined }>, reload: () => Promise<void>, save: (bytes: Uint8Array) => Promise<void> }} remote\n * @param {SignalReader<boolean>} remoteReady\n * @param {SignalReader<Container<T>>} container\n * @returns {{ collection: SignalReader<{ state: \"loading\" } | { state: \"loaded\"; data: T[] }>, reload: () => Promise<void>, save: (items: T[]) => Promise<void> }}\n */\n managerProp(local, remote, remoteReady, container) {\n return {\n collection: computed(() => {\n const c = container();\n\n if (c.cid === undefined && remoteReady() && remote.collection().state === \"loading\") {\n return { state: \"loading\" };\n }\n\n return { state: \"loaded\", data: c.data };\n }),\n reload: remote.reload,\n save: async (/** @type {T[]} */ newItems) => {\n const adjustedContainer = await this.updateContainer({\n collection: newItems,\n previous: container(),\n });\n\n const bytes = this.save(adjustedContainer);\n await local.save(bytes);\n },\n };\n }\n\n // RENDER\n\n /**\n * @param {RenderArg} _\n */\n render({ html }) {\n return html`\n <dop-indexed-db\n group=\"${ifDefined(this.getAttribute(`group`))}\"\n namespace=\"${ifDefined(this.getAttribute(`namespace`))}\"\n ></dop-indexed-db>\n `;\n }\n}\n\nexport default DaslBytesSyncOutputTransformer;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = DaslBytesSyncOutputTransformer;\nexport const NAME = \"dtob-dasl-sync\";\n\ncustomElements.define(NAME, CLASS);\n"],"mappings":"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","names":["EMPTY","DaslBytesSyncOutputTransformer","OutputTransformer","__name","remote","local","#localOutput","state","kind","localCollection","remoteCollection","saveLocal","saveRemote","container","signal","strictEquality","isReady","merging","diff","lc","rc","lb","rb","rs","l","decode","r","isLeader","c","bytes","computed","facets","v","playlistItems","tracks","previous","collection","inventory","collIds","id","currSet","collSet","newSet","remSet","allRemoved","current","promises","a","encoded","encode","cid","create","newInventory","b","removedA","removedB","currentA","currentB","mapA","item","mapB","allIds","data","cidPromises","itemA","itemB","isANewerThanB","compareTimestamps","newestItem","mergedItem","deep_diff_default","updatedInventory","remoteReady","newItems","adjustedContainer","html","o","element_default","CLASS","NAME"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/components/transformer/output/bytes/dasl-sync/element.js.map"}
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/bytes/json/element.js
··· 1 + ../../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/transformer/output/bytes/json/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/bytes/json/element.js.br
··· 1 + ../../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/transformer/output/bytes/json/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/bytes/json/element.js.map
··· 1 + ../../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/components/transformer/output/bytes/json/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/raw/atproto-sync/element.js
··· 1 + ../../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/transformer/output/raw/atproto-sync/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/raw/atproto-sync/element.js.br
··· 1 + ../../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/transformer/output/raw/atproto-sync/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/raw/atproto-sync/element.js.map
··· 1 + ../../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/components/transformer/output/raw/atproto-sync/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/refiner/default/element.js
··· 1 + ../../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/transformer/output/refiner/default/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/refiner/default/element.js.br
··· 1 + ../../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/transformer/output/refiner/default/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/refiner/default/element.js.map
··· 1 + ../../../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/transformer/output/refiner/default/element.js.map
+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/refiner/initial-contents/element.js
··· 1 + import{a,b,c}from"../../../../../chunk-G2MFBCD7.js";import"../../../../../chunk-46J3YOS4.js";import"../../../../../chunk-YEYXC3F5.js";import"../../../../../chunk-7VVACK5Z.js";import"../../../../../chunk-74D5IDBG.js";import"../../../../../chunk-7EUCOO7A.js";import"../../../../../chunk-WLXGGMHC.js";import"../../../../../chunk-QVM63RP5.js";import"../../../../../chunk-UYT7NSKP.js";import"../../../../../chunk-MWEXZQ4O.js";import"../../../../../chunk-JQ2XTL3Q.js";import"../../../../../chunk-K2CRUTCH.js";import"../../../../../chunk-4I6PUBR2.js";import"../../../../../chunk-BFIVCPQF.js";export{b as CLASS,c as NAME,a as default}; 2 + 3 + //# sourceMappingURL=./element.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/refiner/initial-contents/element.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/refiner/initial-contents/element.js.map
··· 1 + ../../../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/components/transformer/output/refiner/initial-contents/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/refiner/track-uri-passkey/element.js
··· 1 + ../../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/transformer/output/refiner/track-uri-passkey/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/refiner/track-uri-passkey/element.js.br
··· 1 + ../../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/transformer/output/refiner/track-uri-passkey/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/refiner/track-uri-passkey/element.js.map
··· 1 + ../../../../../../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/components/transformer/output/refiner/track-uri-passkey/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/refiner/track-uri-passkey/passkey.js
··· 1 + ../../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/components/transformer/output/refiner/track-uri-passkey/passkey.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/refiner/track-uri-passkey/passkey.js.br
··· 1 + ../../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/components/transformer/output/refiner/track-uri-passkey/passkey.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/refiner/track-uri-passkey/passkey.js.map
··· 1 + ../../../../../../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/components/transformer/output/refiner/track-uri-passkey/passkey.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/string/json/element.js
··· 1 + ../../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/transformer/output/string/json/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/string/json/element.js.br
··· 1 + ../../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/transformer/output/string/json/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/components/transformer/output/string/json/element.js.map
··· 1 + ../../../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/transformer/output/string/json/element.js.map
+185
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/dashboard/index.html
··· 1 + <html lang="en"> 2 + <head> 3 + <meta charset="UTF-8" /> 4 + 5 + <meta name="color-scheme" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + 8 + <meta name="media-controllable" /> 9 + <meta name="mobile-web-app-capable" content="yes" /> 10 + 11 + <title>Your collection | Diffuse</title> 12 + 13 + <!-- Base --> 14 + <base href="../" /> 15 + 16 + <!-- Favicons & Mobile --> 17 + <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" /> 18 + <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" /> 19 + <link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png" /> 20 + <!-- TODO: <link rel="manifest" href="site.webmanifest" />--> 21 + <link rel="mask-icon" href="safari-pinned-tab.svg" color="#8a90a9" /> 22 + <meta name="msapplication-TileColor" content="#8a90a9" /> 23 + <meta name="theme-color" content="#8a90a9" /> 24 + 25 + <!-- Preloads --> 26 + 27 + <!-- Styles --> 28 + <link rel="stylesheet" href="styles/base.css" /> 29 + <link rel="stylesheet" href="styles/diffuse/page.css" /> 30 + <link rel="stylesheet" href="styles/diffuse/code-editor.css" /> 31 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/bold/style.css" /> 32 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/fill/style.css" /> 33 + </head> 34 + <body> 35 + <style> 36 + .construct, h2 { 37 + color: var(--accent); 38 + } 39 + </style> 40 + 41 + <header style="overflow: hidden"> 42 + <div> 43 + <div class="diffuse-logo-container diffuse-logo-container--condensed"> 44 + <a href="./" style="display: inline-block;"> 45 + <svg viewBox="0 0 902 134" width="160"> 46 + <title>Diffuse</title> 47 + <use 48 + xlink:href="images/diffuse-current.svg#diffuse" 49 + href="images/diffuse-current.svg#diffuse"></use> 50 + </svg> 51 + 52 + </a> 53 + </div> 54 + </div> 55 + <div class="dither-mask filler"> 56 + <div id="status--filler-container"> 57 + <span id="status"> 58 + <a href="/latest/" title="Upgrade to latest" class="animate-spin"> 59 + <i class="ph-bold ph-spinner"></i> 60 + </a> 61 + <a href="/chronicle/" title="Browse versions of Diffuse"> 62 + <i class="ph-fill ph-star-four"></i> 63 + </a> 64 + </span> 65 + 66 + </div> 67 + </div> 68 + </header> 69 + 70 + <main> 71 + 72 + <div class="nav-container"> 73 + <nav id="diffuse-nav"> 74 + <a href="dashboard/" class="button button--border"> 75 + <span> 76 + <i class="ph-fill ph-person"></i> 77 + Your Diffuse 78 + </span> 79 + </a> 80 + 81 + <a href="guide/" class="button button--transparent button--border"> 82 + <span> 83 + <i class="ph-fill ph-book-open-text"></i> 84 + Guide 85 + </span> 86 + </a> 87 + 88 + <a href="featured/" class="button button--transparent button--border"> 89 + <span> 90 + <i class="ph-fill ph-sparkle"></i> 91 + Featured 92 + </span> 93 + </a> 94 + 95 + <a href="build/" class="button button--transparent button--border"> 96 + <span> 97 + <i class="ph-fill ph-hammer"></i> 98 + Build 99 + </span> 100 + </a> 101 + 102 + <div class="divider"></div> 103 + 104 + <a href="data/" class="button button--transparent button--border"> 105 + <span>Input & Output</span> 106 + </a> 107 + 108 + <a href="playback/" class="button button--transparent button--border"> 109 + <span>Playback</span> 110 + </a> 111 + 112 + <a href="browsing/" class="button button--transparent button--border"> 113 + <span>Browsing</span> 114 + </a> 115 + 116 + <a href="themes/" class="button button--transparent button--border"> 117 + <span>Themes</span> 118 + </a> 119 + 120 + <a href="misc/" class="button button--transparent button--border"> 121 + <span> 122 + <i class="ph-fill ph-treasure-chest"></i> 123 + </span> 124 + </a> 125 + </nav> 126 + 127 + <button 128 + id="nav-overflow-btn" 129 + class="button button--transparent button--border" 130 + style="display: none; flex-shrink: 0" 131 + popovertarget="nav-overflow-menu" 132 + > 133 + <span class="with-icon"> 134 + <i class="ph-fill ph-dots-three-outline"></i> 135 + </span> 136 + </button> 137 + 138 + <div id="nav-overflow-menu" class="dropdown" popover></div> 139 + </div> 140 + 141 + 142 + <h1 hidden>Your collection</h1> 143 + 144 + <div style="margin-top: var(--space-md);"> 145 + <section> 146 + <div id="list" data-rendered="f"> 147 + <div class="with-icon" style="font-size: var(--fs-sm)"> 148 + <i class="ph-bold ph-spinner animate-spin"></i> 149 + Loading your software 150 + </div> 151 + </div> 152 + </section> 153 + </div> 154 + 155 + </main> 156 + 157 + 158 + <!-- Import map --> 159 + <script type="importmap"> 160 + { 161 + "imports": { 162 + "~/": "./", 163 + 164 + "@awesome.me/webawesome/dist/": "./vendor/@awesome.me/webawesome/", 165 + "@awesome.me/webawesome/dist-cdn/": "./vendor/@awesome.me/webawesome/", 166 + "@phosphor-icons/web/": "./vendor/@phosphor-icons/web/", 167 + 168 + "@atcute/cbor": "./vendor/@atcute/cbor/index.js", 169 + "@atcute/tid": "./vendor/@atcute/tid/index.js", 170 + "idb-keyval": "./vendor/idb-keyval/index.js", 171 + "lit-html": "./vendor/lit-html/index.js", 172 + "throttle-debounce": "./vendor/throttle-debounce/index.js" 173 + } 174 + } 175 + </script> 176 + 177 + <!-- Make every touched URL available offline --> 178 + <do-offline></do-offline> 179 + <script src="components/orchestrator/offline/element.js" type="module"></script> 180 + 181 + <!-- Scripts --> 182 + <script src="common/pages/ppr.js" type="module"></script> 183 + <script src="common/pages/version-upgrade.js" type="module"></script> 184 + </body> 185 + </html>
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/dashboard/index.html.br

This is a binary file and will not be displayed.

+541
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/data/index.html
··· 1 + <html lang="en"> 2 + <head> 3 + <meta charset="UTF-8" /> 4 + 5 + <meta name="color-scheme" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + 8 + <meta name="media-controllable" /> 9 + <meta name="mobile-web-app-capable" content="yes" /> 10 + 11 + <title>Data | Diffuse</title> 12 + 13 + <!-- Base --> 14 + <base href="../" /> 15 + 16 + <!-- Favicons & Mobile --> 17 + <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" /> 18 + <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" /> 19 + <link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png" /> 20 + <!-- TODO: <link rel="manifest" href="site.webmanifest" />--> 21 + <link rel="mask-icon" href="safari-pinned-tab.svg" color="#8a90a9" /> 22 + <meta name="msapplication-TileColor" content="#8a90a9" /> 23 + <meta name="theme-color" content="#8a90a9" /> 24 + 25 + <!-- Preloads --> 26 + 27 + <!-- Styles --> 28 + <link rel="stylesheet" href="styles/base.css" /> 29 + <link rel="stylesheet" href="styles/diffuse/page.css" /> 30 + <link rel="stylesheet" href="styles/diffuse/code-editor.css" /> 31 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/bold/style.css" /> 32 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/fill/style.css" /> 33 + </head> 34 + <body> 35 + <style> 36 + .construct, h2 { 37 + color: var(--accent); 38 + } 39 + </style> 40 + 41 + <header style="overflow: hidden"> 42 + <div> 43 + <div class="diffuse-logo-container diffuse-logo-container--condensed"> 44 + <a href="./" style="display: inline-block;"> 45 + <svg viewBox="0 0 902 134" width="160"> 46 + <title>Diffuse</title> 47 + <use 48 + xlink:href="images/diffuse-current.svg#diffuse" 49 + href="images/diffuse-current.svg#diffuse"></use> 50 + </svg> 51 + 52 + </a> 53 + </div> 54 + </div> 55 + <div class="dither-mask filler"> 56 + <div id="status--filler-container"> 57 + <span id="status"> 58 + <a href="/latest/" title="Upgrade to latest" class="animate-spin"> 59 + <i class="ph-bold ph-spinner"></i> 60 + </a> 61 + <a href="/chronicle/" title="Browse versions of Diffuse"> 62 + <i class="ph-fill ph-star-four"></i> 63 + </a> 64 + </span> 65 + 66 + </div> 67 + </div> 68 + </header> 69 + 70 + <main> 71 + 72 + <div class="nav-container"> 73 + <nav id="diffuse-nav"> 74 + <a href="dashboard/" class="button button--transparent button--border"> 75 + <span> 76 + <i class="ph-fill ph-person"></i> 77 + Your Diffuse 78 + </span> 79 + </a> 80 + 81 + <a href="guide/" class="button button--transparent button--border"> 82 + <span> 83 + <i class="ph-fill ph-book-open-text"></i> 84 + Guide 85 + </span> 86 + </a> 87 + 88 + <a href="featured/" class="button button--transparent button--border"> 89 + <span> 90 + <i class="ph-fill ph-sparkle"></i> 91 + Featured 92 + </span> 93 + </a> 94 + 95 + <a href="build/" class="button button--transparent button--border"> 96 + <span> 97 + <i class="ph-fill ph-hammer"></i> 98 + Build 99 + </span> 100 + </a> 101 + 102 + <div class="divider"></div> 103 + 104 + <a href="data/" class="button button--border"> 105 + <span>Input & Output</span> 106 + </a> 107 + 108 + <a href="playback/" class="button button--transparent button--border"> 109 + <span>Playback</span> 110 + </a> 111 + 112 + <a href="browsing/" class="button button--transparent button--border"> 113 + <span>Browsing</span> 114 + </a> 115 + 116 + <a href="themes/" class="button button--transparent button--border"> 117 + <span>Themes</span> 118 + </a> 119 + 120 + <a href="misc/" class="button button--transparent button--border"> 121 + <span> 122 + <i class="ph-fill ph-treasure-chest"></i> 123 + </span> 124 + </a> 125 + </nav> 126 + 127 + <button 128 + id="nav-overflow-btn" 129 + class="button button--transparent button--border" 130 + style="display: none; flex-shrink: 0" 131 + popovertarget="nav-overflow-menu" 132 + > 133 + <span class="with-icon"> 134 + <i class="ph-fill ph-dots-three-outline"></i> 135 + </span> 136 + </button> 137 + 138 + <div id="nav-overflow-menu" class="dropdown" popover></div> 139 + </div> 140 + 141 + 142 + <section> 143 + <div class="grid-filter"> 144 + <span class="grid-filter--label">Filter by</span> 145 + 146 + <button class="button--border button--tiny" data-filter="all">All</button> 147 + <button class="button--border button--tiny button--bg-twist-4 button--tr-twist-4 button--transparent" data-filter="prelude">Features</button> 148 + <button class="button--border button--tiny button--bg-twist-2 button--tr-twist-2 button--transparent" data-filter="interface">Interfaces</button> 149 + 150 + <div style="flex: 1"></div> 151 + 152 + <span class="grid-filter--label grid-filter--label-output">Userdata from</span> 153 + <span class="grid-filter--output"></span> 154 + </div> 155 + 156 + <ul class="grid" style="margin-top: var(--space-xs);"> 157 + 158 + 159 + <li 160 + class="grid-item" 161 + data-active-color="var(--accent-twist-4)" 162 + data-description="Store tracks locally for offline usage automatically after they've been playing for a little while." 163 + data-name="Cache tracks" 164 + data-kind="prelude" 165 + data-uri="diffuse://facets/data/cache-tracks/index.html" 166 + > 167 + <div 168 + class="grid-item__contents" 169 + style="--grid-item-color: var(--accent-twist-4)" 170 + > 171 + <div class="grid-item__title"> 172 + <span style="color: var(--accent-twist-4); padding: var(--space-3xs) 0"> 173 + Cache tracks 174 + </span> 175 + <span style="flex: 1"></span> 176 + </div> 177 + <div class="list-description"> 178 + Store tracks locally for offline usage automatically after they've been playing for a little while. 179 + </div> 180 + </div> 181 + </li> 182 + 183 + 184 + <li 185 + class="grid-item" 186 + data-active-color="var(--accent-twist-2)" 187 + data-description="A listing of some of the options available to use as an audio source, or as a user-data storage method." 188 + data-name="Connect" 189 + data-kind="interface" 190 + data-uri="diffuse://facets/connect/index.html" 191 + > 192 + <div 193 + class="grid-item__contents" 194 + style="--grid-item-color: var(--accent-twist-2)" 195 + > 196 + <div class="grid-item__title"> 197 + <a href="l/?path=facets%2Fconnect%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 198 + Connect 199 + </a> 200 + <span style="flex: 1"></span> 201 + </div> 202 + <div class="list-description"> 203 + A listing of some of the options available to use as an audio source, or as a user-data storage method. 204 + </div> 205 + </div> 206 + </li> 207 + 208 + 209 + <li 210 + class="grid-item" 211 + data-active-color="var(--accent-twist-2)" 212 + data-description="Use your AT Protocol identity for user-data storage." 213 + data-name="Connect / AT Protocol" 214 + data-kind="interface" 215 + data-uri="diffuse://facets/connect/atproto/index.html" 216 + > 217 + <div 218 + class="grid-item__contents" 219 + style="--grid-item-color: var(--accent-twist-2)" 220 + > 221 + <div class="grid-item__title"> 222 + <a href="l/?path=facets%2Fconnect%2Fatproto%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 223 + Connect / AT Protocol 224 + </a> 225 + <span style="flex: 1"></span> 226 + </div> 227 + <div class="list-description"> 228 + Use your AT Protocol identity for user-data storage. 229 + </div> 230 + </div> 231 + </li> 232 + 233 + 234 + <li 235 + class="grid-item" 236 + data-active-color="var(--accent-twist-2)" 237 + data-description="Add HTTPS URLs as audio sources." 238 + data-name="Connect / HTTPS" 239 + data-kind="interface" 240 + data-uri="diffuse://facets/connect/https/index.html" 241 + > 242 + <div 243 + class="grid-item__contents" 244 + style="--grid-item-color: var(--accent-twist-2)" 245 + > 246 + <div class="grid-item__title"> 247 + <a href="l/?path=facets%2Fconnect%2Fhttps%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 248 + Connect / HTTPS 249 + </a> 250 + <span style="flex: 1"></span> 251 + </div> 252 + <div class="list-description"> 253 + Add HTTPS URLs as audio sources. 254 + </div> 255 + </div> 256 + </li> 257 + 258 + 259 + <li 260 + class="grid-item" 261 + data-active-color="var(--accent-twist-2)" 262 + data-description="Add an Icecast stream as an audio source." 263 + data-name="Connect / Icecast" 264 + data-kind="interface" 265 + data-uri="diffuse://facets/connect/icecast/index.html" 266 + > 267 + <div 268 + class="grid-item__contents" 269 + style="--grid-item-color: var(--accent-twist-2)" 270 + > 271 + <div class="grid-item__title"> 272 + <a href="l/?path=facets%2Fconnect%2Ficecast%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 273 + Connect / Icecast 274 + </a> 275 + <span style="flex: 1"></span> 276 + </div> 277 + <div class="list-description"> 278 + Add an Icecast stream as an audio source. 279 + </div> 280 + </div> 281 + </li> 282 + 283 + 284 + <li 285 + class="grid-item" 286 + data-active-color="var(--accent-twist-2)" 287 + data-description="Add local directories or files as audio sources." 288 + data-name="Connect / Local" 289 + data-kind="interface" 290 + data-uri="diffuse://facets/connect/local/index.html" 291 + > 292 + <div 293 + class="grid-item__contents" 294 + style="--grid-item-color: var(--accent-twist-2)" 295 + > 296 + <div class="grid-item__title"> 297 + <a href="l/?path=facets%2Fconnect%2Flocal%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 298 + Connect / Local 299 + </a> 300 + <span style="flex: 1"></span> 301 + </div> 302 + <div class="list-description"> 303 + Add local directories or files as audio sources. 304 + </div> 305 + </div> 306 + </li> 307 + 308 + 309 + <li 310 + class="grid-item" 311 + data-active-color="var(--accent-twist-2)" 312 + data-description="Connect to an OpenSubsonic server for audio input." 313 + data-name="Connect / OpenSubsonic" 314 + data-kind="interface" 315 + data-uri="diffuse://facets/connect/opensubsonic/index.html" 316 + > 317 + <div 318 + class="grid-item__contents" 319 + style="--grid-item-color: var(--accent-twist-2)" 320 + > 321 + <div class="grid-item__title"> 322 + <a href="l/?path=facets%2Fconnect%2Fopensubsonic%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 323 + Connect / OpenSubsonic 324 + </a> 325 + <span style="flex: 1"></span> 326 + </div> 327 + <div class="list-description"> 328 + Connect to an OpenSubsonic server for audio input. 329 + </div> 330 + </div> 331 + </li> 332 + 333 + 334 + <li 335 + class="grid-item" 336 + data-active-color="var(--accent-twist-2)" 337 + data-description="Connect to an S3-compatible storage for audio input or user-data storage." 338 + data-name="Connect / S3" 339 + data-kind="interface" 340 + data-uri="diffuse://facets/connect/s3/index.html" 341 + > 342 + <div 343 + class="grid-item__contents" 344 + style="--grid-item-color: var(--accent-twist-2)" 345 + > 346 + <div class="grid-item__title"> 347 + <a href="l/?path=facets%2Fconnect%2Fs3%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 348 + Connect / S3 349 + </a> 350 + <span style="flex: 1"></span> 351 + </div> 352 + <div class="list-description"> 353 + Connect to an S3-compatible storage for audio input or user-data storage. 354 + </div> 355 + </div> 356 + </li> 357 + 358 + 359 + <li 360 + class="grid-item" 361 + data-active-color="var(--accent-twist-2)" 362 + data-description="Export all data as a JSON snapshot, or restore from a previously exported file." 363 + data-name="Export & Import" 364 + data-kind="interface" 365 + data-uri="diffuse://facets/data/export-import/index.html" 366 + > 367 + <div 368 + class="grid-item__contents" 369 + style="--grid-item-color: var(--accent-twist-2)" 370 + > 371 + <div class="grid-item__title"> 372 + <a href="l/?path=facets%2Fdata%2Fexport-import%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 373 + Export & Import 374 + </a> 375 + <span style="flex: 1"></span> 376 + </div> 377 + <div class="list-description"> 378 + Export all data as a JSON snapshot, or restore from a previously exported file. 379 + </div> 380 + </div> 381 + </li> 382 + 383 + 384 + <li 385 + class="grid-item" 386 + data-active-color="var(--accent-twist-4)" 387 + data-description="The default setup for audio input sources. Adds support for: HTTPS, Icecast, the local filesystem, OpenSubsonic, and S3-compatible storage." 388 + data-name="Default Input Bundle" 389 + data-kind="prelude" 390 + data-uri="diffuse://facets/data/input-bundle/index.html" 391 + > 392 + <div 393 + class="grid-item__contents" 394 + style="--grid-item-color: var(--accent-twist-4)" 395 + > 396 + <div class="grid-item__title"> 397 + <span style="color: var(--accent-twist-4); padding: var(--space-3xs) 0"> 398 + Default Input Bundle 399 + </span> 400 + <span style="flex: 1"></span> 401 + </div> 402 + <div class="list-description"> 403 + The default setup for audio input sources. Adds support for: HTTPS, Icecast, the local filesystem, OpenSubsonic, and S3-compatible storage. 404 + </div> 405 + </div> 406 + </li> 407 + 408 + 409 + <li 410 + class="grid-item" 411 + data-active-color="var(--accent-twist-4)" 412 + data-description="The default setup for user-data storage output. Adds support for: AT Protocol and S3-compatible storage. For both of these a custom local-first syncing algorithm is used." 413 + data-name="Default Output Bundle" 414 + data-kind="prelude" 415 + data-uri="diffuse://facets/data/output-bundle/index.html" 416 + > 417 + <div 418 + class="grid-item__contents" 419 + style="--grid-item-color: var(--accent-twist-4)" 420 + > 421 + <div class="grid-item__title"> 422 + <span style="color: var(--accent-twist-4); padding: var(--space-3xs) 0"> 423 + Default Output Bundle 424 + </span> 425 + <span style="flex: 1"></span> 426 + </div> 427 + <div class="list-description"> 428 + The default setup for user-data storage output. Adds support for: AT Protocol and S3-compatible storage. For both of these a custom local-first syncing algorithm is used. 429 + </div> 430 + </div> 431 + </li> 432 + 433 + 434 + <li 435 + class="grid-item" 436 + data-active-color="var(--accent-twist-4)" 437 + data-description="Process all your audio inputs into tracks automatically when opening any interface. Only happens once every 10 minutes, if the processing was completed." 438 + data-name="Process Tracks" 439 + data-kind="prelude" 440 + data-uri="diffuse://facets/data/process-tracks/prelude/index.html" 441 + > 442 + <div 443 + class="grid-item__contents" 444 + style="--grid-item-color: var(--accent-twist-4)" 445 + > 446 + <div class="grid-item__title"> 447 + <span style="color: var(--accent-twist-4); padding: var(--space-3xs) 0"> 448 + Process Tracks 449 + </span> 450 + <span style="flex: 1"></span> 451 + </div> 452 + <div class="list-description"> 453 + Process all your audio inputs into tracks automatically when opening any interface. Only happens once every 10 minutes, if the processing was completed. 454 + </div> 455 + </div> 456 + </li> 457 + 458 + 459 + <li 460 + class="grid-item" 461 + data-active-color="var(--accent-twist-2)" 462 + data-description="Process all your audio sources into tracks. Shows a progress bar when processing is occuring." 463 + data-name="Process Tracks" 464 + data-kind="interface" 465 + data-uri="diffuse://facets/data/process-tracks/index.html" 466 + > 467 + <div 468 + class="grid-item__contents" 469 + style="--grid-item-color: var(--accent-twist-2)" 470 + > 471 + <div class="grid-item__title"> 472 + <a href="l/?path=facets%2Fdata%2Fprocess-tracks%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 473 + Process Tracks 474 + </a> 475 + <span style="flex: 1"></span> 476 + </div> 477 + <div class="list-description"> 478 + Process all your audio sources into tracks. Shows a progress bar when processing is occuring. 479 + </div> 480 + </div> 481 + </li> 482 + 483 + 484 + <li 485 + class="grid-item" 486 + data-active-color="var(--accent-twist-2)" 487 + data-description="Import data from Diffuse v3." 488 + data-name="V3.x Import" 489 + data-kind="interface" 490 + data-uri="diffuse://facets/data/v3-import/index.html" 491 + > 492 + <div 493 + class="grid-item__contents" 494 + style="--grid-item-color: var(--accent-twist-2)" 495 + > 496 + <div class="grid-item__title"> 497 + <a href="l/?path=facets%2Fdata%2Fv3-import%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 498 + V3.x Import 499 + </a> 500 + <span style="flex: 1"></span> 501 + </div> 502 + <div class="list-description"> 503 + Import data from Diffuse v3. 504 + </div> 505 + </div> 506 + </li> 507 + </ul> 508 + 509 + </section> 510 + 511 + </main> 512 + 513 + 514 + <!-- Import map --> 515 + <script type="importmap"> 516 + { 517 + "imports": { 518 + "~/": "./", 519 + 520 + "@awesome.me/webawesome/dist/": "./vendor/@awesome.me/webawesome/", 521 + "@awesome.me/webawesome/dist-cdn/": "./vendor/@awesome.me/webawesome/", 522 + "@phosphor-icons/web/": "./vendor/@phosphor-icons/web/", 523 + 524 + "@atcute/cbor": "./vendor/@atcute/cbor/index.js", 525 + "@atcute/tid": "./vendor/@atcute/tid/index.js", 526 + "idb-keyval": "./vendor/idb-keyval/index.js", 527 + "lit-html": "./vendor/lit-html/index.js", 528 + "throttle-debounce": "./vendor/throttle-debounce/index.js" 529 + } 530 + } 531 + </script> 532 + 533 + <!-- Make every touched URL available offline --> 534 + <do-offline></do-offline> 535 + <script src="components/orchestrator/offline/element.js" type="module"></script> 536 + 537 + <!-- Scripts --> 538 + <script src="common/pages/ppr.js" type="module"></script> 539 + <script src="common/pages/version-upgrade.js" type="module"></script> 540 + </body> 541 + </html>
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/data/index.html.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/definitions/index.ts
··· 1 + ../../bafybeicp5hi5rw4vffqlbmyqqaxhmxzx4ilejru3cq4esycpeyuuhen5ha/definitions/index.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/definitions/output/collaboration.json
··· 1 + ../../../bafybeiairw5zug6xd6xosgopcoyu3ieg4kiiesvqeszsk2xvipvsoxasvy/definitions/output/collaboration.json
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/definitions/output/collaboration.json.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/definitions/output/collaboration.json.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/definitions/output/facet.json
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/definitions/output/facet.json
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/definitions/output/facet.json.br
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/definitions/output/facet.json.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/definitions/output/playlistItem.json
··· 1 + ../../../bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/definitions/output/playlistItem.json
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/definitions/output/playlistItem.json.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/definitions/output/playlistItem.json.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/definitions/output/playlistItemBundle.json
··· 1 + ../../../bafybeibq4aqaavbn3syjebgs5wopycz56xxk2lchx5cpxxrr244i2n2ray/definitions/output/playlistItemBundle.json
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/definitions/output/playlistItemBundle.json.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/definitions/output/playlistItemBundle.json.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/definitions/output/track.json
··· 1 + ../../../bafybeiexuhqumeljxdmmsdfet5oh2h7pam6fy7gbktqfbsai5qfu2ze6hq/definitions/output/track.json
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/definitions/output/track.json.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/definitions/output/track.json.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/definitions/output/trackBundle.json
··· 1 + ../../../bafybeidei3ezzvkd2q7yaojc2wlog532cduo5sy2cmeb565bvmb6sfo4bu/definitions/output/trackBundle.json
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/definitions/output/trackBundle.json.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/definitions/output/trackBundle.json.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/dist-WH3NPUSC.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/dist-WH3NPUSC.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/dist-WH3NPUSC.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/dist-WH3NPUSC.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/dist-WH3NPUSC.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/dist-WH3NPUSC.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/elements/index.html
··· 1 + ../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/elements/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/elements/index.html.br
··· 1 + ../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/elements/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/connect/atproto/index.html
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/facets/connect/atproto/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/connect/atproto/index.html.br
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/facets/connect/atproto/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/connect/common.css
··· 1 + ../../../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/facets/connect/common.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/connect/common.css.br
··· 1 + ../../../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/facets/connect/common.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/connect/common.css.map
··· 1 + ../../../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/facets/connect/common.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/connect/common.js
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/facets/connect/common.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/connect/common.js.br
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/facets/connect/common.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/connect/common.js.map
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/facets/connect/common.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/connect/https/index.html
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/facets/connect/https/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/connect/https/index.html.br
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/facets/connect/https/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/connect/icecast/index.html
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/facets/connect/icecast/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/connect/icecast/index.html.br
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/facets/connect/icecast/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/connect/index.html
··· 1 + ../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/facets/connect/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/connect/index.html.br
··· 1 + ../../../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/facets/connect/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/connect/local/index.html
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/facets/connect/local/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/connect/local/index.html.br
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/facets/connect/local/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/connect/opensubsonic/index.html
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/facets/connect/opensubsonic/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/connect/opensubsonic/index.html.br
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/facets/connect/opensubsonic/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/connect/s3/index.html
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/facets/connect/s3/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/connect/s3/index.html.br
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/facets/connect/s3/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/data/cache-tracks/index.html
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/facets/data/cache-tracks/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/data/cache-tracks/index.html.br
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/facets/data/cache-tracks/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/data/export-import/index.html
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/facets/data/export-import/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/data/export-import/index.html.br
··· 1 + ../../../../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/facets/data/export-import/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/data/input-bundle/index.html
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/facets/data/input-bundle/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/data/input-bundle/index.html.br
··· 1 + ../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/facets/data/input-bundle/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/data/output-bundle/index.html
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/facets/data/output-bundle/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/data/output-bundle/index.html.br
··· 1 + ../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/facets/data/output-bundle/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/data/process-tracks/index.html
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/facets/data/process-tracks/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/data/process-tracks/index.html.br
··· 1 + ../../../../bafybeibbvywkxql7k3lipdasrnrtjlmgt6ks3hkv3d6mimsmui6pcpwos4/facets/data/process-tracks/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/data/process-tracks/prelude/index.html
··· 1 + ../../../../../bafybeibbvywkxql7k3lipdasrnrtjlmgt6ks3hkv3d6mimsmui6pcpwos4/facets/data/process-tracks/prelude/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/data/process-tracks/prelude/index.html.br
··· 1 + ../../../../../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/facets/data/process-tracks/prelude/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/data/v3-import/index.html
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/facets/data/v3-import/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/data/v3-import/index.html.br
··· 1 + ../../../../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/facets/data/v3-import/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/examples/generate-playlist/index.html
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/facets/examples/generate-playlist/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/examples/generate-playlist/index.html.br
··· 1 + ../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/facets/examples/generate-playlist/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/examples/now-playing/index.html
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/facets/examples/now-playing/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/examples/now-playing/index.html.br
··· 1 + ../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/facets/examples/now-playing/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/index.js
··· 1 + ../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/facets/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/index.js.br
··· 1 + ../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/facets/index.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/index.js.map
··· 1 + ../../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/facets/index.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/misc/scrobble/index.html
··· 1 + ../../../../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/facets/misc/scrobble/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/misc/scrobble/index.html.br
··· 1 + ../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/facets/misc/scrobble/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/misc/scrobble/last.fm/index.html
··· 1 + ../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/facets/misc/scrobble/last.fm/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/misc/scrobble/last.fm/index.html.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/facets/misc/scrobble/last.fm/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/misc/split-view/index.html
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/facets/misc/split-view/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/misc/split-view/index.html.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/facets/misc/split-view/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/playback/auto-queue/index.html
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/facets/playback/auto-queue/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/playback/auto-queue/index.html.br
··· 1 + ../../../../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/facets/playback/auto-queue/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/playback/auto-queue/prelude/index.html
··· 1 + ../../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/facets/playback/auto-queue/prelude/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/facets/playback/auto-queue/prelude/index.html.br
··· 1 + ../../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/facets/playback/auto-queue/prelude/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/favicon-16x16.png
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/favicon-16x16.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/favicon-32x32.png
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/favicon-32x32.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/favicon.ico
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/favicon.ico
+418
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/featured/index.html
··· 1 + <html lang="en"> 2 + <head> 3 + <meta charset="UTF-8" /> 4 + 5 + <meta name="color-scheme" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + 8 + <meta name="media-controllable" /> 9 + <meta name="mobile-web-app-capable" content="yes" /> 10 + 11 + <title>Featured | Diffuse</title> 12 + 13 + <!-- Base --> 14 + <base href="../" /> 15 + 16 + <!-- Favicons & Mobile --> 17 + <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" /> 18 + <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" /> 19 + <link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png" /> 20 + <!-- TODO: <link rel="manifest" href="site.webmanifest" />--> 21 + <link rel="mask-icon" href="safari-pinned-tab.svg" color="#8a90a9" /> 22 + <meta name="msapplication-TileColor" content="#8a90a9" /> 23 + <meta name="theme-color" content="#8a90a9" /> 24 + 25 + <!-- Preloads --> 26 + 27 + <!-- Styles --> 28 + <link rel="stylesheet" href="styles/base.css" /> 29 + <link rel="stylesheet" href="styles/diffuse/page.css" /> 30 + <link rel="stylesheet" href="styles/diffuse/code-editor.css" /> 31 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/bold/style.css" /> 32 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/fill/style.css" /> 33 + </head> 34 + <body> 35 + <style> 36 + .construct, h2 { 37 + color: var(--accent); 38 + } 39 + </style> 40 + 41 + <header style="overflow: hidden"> 42 + <div> 43 + <div class="diffuse-logo-container diffuse-logo-container--condensed"> 44 + <a href="./" style="display: inline-block;"> 45 + <svg viewBox="0 0 902 134" width="160"> 46 + <title>Diffuse</title> 47 + <use 48 + xlink:href="images/diffuse-current.svg#diffuse" 49 + href="images/diffuse-current.svg#diffuse"></use> 50 + </svg> 51 + 52 + </a> 53 + </div> 54 + </div> 55 + <div class="dither-mask filler"> 56 + <div id="status--filler-container"> 57 + <span id="status"> 58 + <a href="/latest/" title="Upgrade to latest" class="animate-spin"> 59 + <i class="ph-bold ph-spinner"></i> 60 + </a> 61 + <a href="/chronicle/" title="Browse versions of Diffuse"> 62 + <i class="ph-fill ph-star-four"></i> 63 + </a> 64 + </span> 65 + 66 + </div> 67 + </div> 68 + </header> 69 + 70 + <main> 71 + 72 + <div class="nav-container"> 73 + <nav id="diffuse-nav"> 74 + <a href="dashboard/" class="button button--transparent button--border"> 75 + <span> 76 + <i class="ph-fill ph-person"></i> 77 + Your Diffuse 78 + </span> 79 + </a> 80 + 81 + <a href="guide/" class="button button--transparent button--border"> 82 + <span> 83 + <i class="ph-fill ph-book-open-text"></i> 84 + Guide 85 + </span> 86 + </a> 87 + 88 + <a href="featured/" class="button button--border"> 89 + <span> 90 + <i class="ph-fill ph-sparkle"></i> 91 + Featured 92 + </span> 93 + </a> 94 + 95 + <a href="build/" class="button button--transparent button--border"> 96 + <span> 97 + <i class="ph-fill ph-hammer"></i> 98 + Build 99 + </span> 100 + </a> 101 + 102 + <div class="divider"></div> 103 + 104 + <a href="data/" class="button button--transparent button--border"> 105 + <span>Input & Output</span> 106 + </a> 107 + 108 + <a href="playback/" class="button button--transparent button--border"> 109 + <span>Playback</span> 110 + </a> 111 + 112 + <a href="browsing/" class="button button--transparent button--border"> 113 + <span>Browsing</span> 114 + </a> 115 + 116 + <a href="themes/" class="button button--transparent button--border"> 117 + <span>Themes</span> 118 + </a> 119 + 120 + <a href="misc/" class="button button--transparent button--border"> 121 + <span> 122 + <i class="ph-fill ph-treasure-chest"></i> 123 + </span> 124 + </a> 125 + </nav> 126 + 127 + <button 128 + id="nav-overflow-btn" 129 + class="button button--transparent button--border" 130 + style="display: none; flex-shrink: 0" 131 + popovertarget="nav-overflow-menu" 132 + > 133 + <span class="with-icon"> 134 + <i class="ph-fill ph-dots-three-outline"></i> 135 + </span> 136 + </button> 137 + 138 + <div id="nav-overflow-menu" class="dropdown" popover></div> 139 + </div> 140 + 141 + 142 + <h1 hidden>Featured</h1> 143 + 144 + <section> 145 + <div class="grid-filter"> 146 + <span class="grid-filter--label">Filter by</span> 147 + 148 + <button class="button--border button--tiny" data-filter="all">All</button> 149 + <button class="button--border button--tiny button--bg-twist-4 button--tr-twist-4 button--transparent" data-filter="prelude">Features</button> 150 + <button class="button--border button--tiny button--bg-twist-2 button--tr-twist-2 button--transparent" data-filter="interface">Interfaces</button> 151 + 152 + <div style="flex: 1"></div> 153 + 154 + <span class="grid-filter--label grid-filter--label-output">Userdata from</span> 155 + <span class="grid-filter--output"></span> 156 + </div> 157 + 158 + <ul class="grid" style="margin-top: var(--space-xs);"> 159 + 160 + 161 + <li 162 + class="grid-item" 163 + data-active-color="var(--accent-twist-4)" 164 + data-description="Automatically put tracks into the queue. **Always on.** These tracks will always be located after the ones you've added manually." 165 + data-name="Automatic Queue" 166 + data-kind="prelude" 167 + data-uri="diffuse://facets/playback/auto-queue/prelude/index.html" 168 + > 169 + <div 170 + class="grid-item__contents" 171 + style="--grid-item-color: var(--accent-twist-4)" 172 + > 173 + <div class="grid-item__title"> 174 + <span style="color: var(--accent-twist-4); padding: var(--space-3xs) 0"> 175 + Automatic Queue 176 + </span> 177 + <span style="flex: 1"></span> 178 + </div> 179 + <div class="list-description"> 180 + Automatically put tracks into the queue. <strong>Always on.</strong> These tracks will always be located after the ones you've added manually. 181 + </div> 182 + </div> 183 + </li> 184 + 185 + 186 + <li 187 + class="grid-item" 188 + data-active-color="var(--accent-twist-2)" 189 + data-description="Automatically put tracks into the queue when this interface is opened. Also allows for controlling shuffle, repeat, search, sorting and playlist selection." 190 + data-name="Automatic Queue" 191 + data-kind="interface" 192 + data-uri="diffuse://facets/playback/auto-queue/index.html" 193 + > 194 + <div 195 + class="grid-item__contents" 196 + style="--grid-item-color: var(--accent-twist-2)" 197 + > 198 + <div class="grid-item__title"> 199 + <a href="l/?path=facets%2Fplayback%2Fauto-queue%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 200 + Automatic Queue 201 + </a> 202 + <span style="flex: 1"></span> 203 + </div> 204 + <div class="list-description"> 205 + Automatically put tracks into the queue when this interface is opened. Also allows for controlling shuffle, repeat, search, sorting and playlist selection. 206 + </div> 207 + </div> 208 + </li> 209 + 210 + 211 + <li 212 + class="grid-item" 213 + data-active-color="var(--accent-twist-2)" 214 + data-description="Audio playback controller with an artwork display. Play audio from the queue, add tracks to your favourites, control the queue and volume." 215 + data-name="Blur / Artwork controller" 216 + data-kind="interface" 217 + data-uri="diffuse://themes/blur/artwork-controller/facet/index.html" 218 + > 219 + <div 220 + class="grid-item__contents" 221 + style="--grid-item-color: var(--accent-twist-2)" 222 + > 223 + <div class="grid-item__title"> 224 + <a href="l/?path=themes%2Fblur%2Fartwork-controller%2Ffacet%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 225 + Blur / Artwork controller 226 + </a> 227 + <span style="flex: 1"></span> 228 + </div> 229 + <div class="list-description"> 230 + Audio playback controller with an artwork display. Play audio from the queue, add tracks to your favourites, control the queue and volume. 231 + </div> 232 + </div> 233 + </li> 234 + 235 + 236 + <li 237 + class="grid-item" 238 + data-active-color="var(--accent-twist-4)" 239 + data-description="Store tracks locally for offline usage automatically after they've been playing for a little while." 240 + data-name="Cache tracks" 241 + data-kind="prelude" 242 + data-uri="diffuse://facets/data/cache-tracks/index.html" 243 + > 244 + <div 245 + class="grid-item__contents" 246 + style="--grid-item-color: var(--accent-twist-4)" 247 + > 248 + <div class="grid-item__title"> 249 + <span style="color: var(--accent-twist-4); padding: var(--space-3xs) 0"> 250 + Cache tracks 251 + </span> 252 + <span style="flex: 1"></span> 253 + </div> 254 + <div class="list-description"> 255 + Store tracks locally for offline usage automatically after they've been playing for a little while. 256 + </div> 257 + </div> 258 + </li> 259 + 260 + 261 + <li 262 + class="grid-item" 263 + data-active-color="var(--accent-twist-2)" 264 + data-description="A listing of some of the options available to use as an audio source, or as a user-data storage method." 265 + data-name="Connect" 266 + data-kind="interface" 267 + data-uri="diffuse://facets/connect/index.html" 268 + > 269 + <div 270 + class="grid-item__contents" 271 + style="--grid-item-color: var(--accent-twist-2)" 272 + > 273 + <div class="grid-item__title"> 274 + <a href="l/?path=facets%2Fconnect%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 275 + Connect 276 + </a> 277 + <span style="flex: 1"></span> 278 + </div> 279 + <div class="list-description"> 280 + A listing of some of the options available to use as an audio source, or as a user-data storage method. 281 + </div> 282 + </div> 283 + </li> 284 + 285 + 286 + <li 287 + class="grid-item" 288 + data-active-color="var(--accent-twist-4)" 289 + data-description="Process all your audio inputs into tracks automatically when opening any interface. Only happens once every 10 minutes, if the processing was completed." 290 + data-name="Process Tracks" 291 + data-kind="prelude" 292 + data-uri="diffuse://facets/data/process-tracks/prelude/index.html" 293 + > 294 + <div 295 + class="grid-item__contents" 296 + style="--grid-item-color: var(--accent-twist-4)" 297 + > 298 + <div class="grid-item__title"> 299 + <span style="color: var(--accent-twist-4); padding: var(--space-3xs) 0"> 300 + Process Tracks 301 + </span> 302 + <span style="flex: 1"></span> 303 + </div> 304 + <div class="list-description"> 305 + Process all your audio inputs into tracks automatically when opening any interface. Only happens once every 10 minutes, if the processing was completed. 306 + </div> 307 + </div> 308 + </li> 309 + 310 + 311 + <li 312 + class="grid-item" 313 + data-active-color="var(--accent-twist-2)" 314 + data-description="Process all your audio sources into tracks. Shows a progress bar when processing is occuring." 315 + data-name="Process Tracks" 316 + data-kind="interface" 317 + data-uri="diffuse://facets/data/process-tracks/index.html" 318 + > 319 + <div 320 + class="grid-item__contents" 321 + style="--grid-item-color: var(--accent-twist-2)" 322 + > 323 + <div class="grid-item__title"> 324 + <a href="l/?path=facets%2Fdata%2Fprocess-tracks%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 325 + Process Tracks 326 + </a> 327 + <span style="flex: 1"></span> 328 + </div> 329 + <div class="list-description"> 330 + Process all your audio sources into tracks. Shows a progress bar when processing is occuring. 331 + </div> 332 + </div> 333 + </li> 334 + 335 + 336 + <li 337 + class="grid-item" 338 + data-active-color="var(--accent-twist-2)" 339 + data-description="Windows 98 inspired theme with a classic Winamp skin for the audio player. The Winamp playlist is a combination of the queue's history, the track that's currently playing and the future queue items." 340 + data-name="Winamp" 341 + data-kind="interface" 342 + data-uri="diffuse://themes/winamp/facet/index.html" 343 + > 344 + <div 345 + class="grid-item__contents" 346 + style="--grid-item-color: var(--accent-twist-2)" 347 + > 348 + <div class="grid-item__title"> 349 + <a href="l/?path=themes%2Fwinamp%2Ffacet%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 350 + Winamp 351 + </a> 352 + <span style="flex: 1"></span> 353 + </div> 354 + <div class="list-description"> 355 + Windows 98 inspired theme with a classic Winamp skin for the audio player. The Winamp playlist is a combination of the queue's history, the track that's currently playing and the future queue items. 356 + </div> 357 + </div> 358 + </li> 359 + 360 + 361 + <li 362 + class="grid-item" 363 + data-active-color="var(--accent-twist-2)" 364 + data-description="Collection browser and search." 365 + data-name="Winamp / Browser" 366 + data-kind="interface" 367 + data-uri="diffuse://themes/winamp/browser/facet/index.html" 368 + > 369 + <div 370 + class="grid-item__contents" 371 + style="--grid-item-color: var(--accent-twist-2)" 372 + > 373 + <div class="grid-item__title"> 374 + <a href="l/?path=themes%2Fwinamp%2Fbrowser%2Ffacet%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 375 + Winamp / Browser 376 + </a> 377 + <span style="flex: 1"></span> 378 + </div> 379 + <div class="list-description"> 380 + Collection browser and search. 381 + </div> 382 + </div> 383 + </li> 384 + </ul> 385 + 386 + </section> 387 + 388 + </main> 389 + 390 + 391 + <!-- Import map --> 392 + <script type="importmap"> 393 + { 394 + "imports": { 395 + "~/": "./", 396 + 397 + "@awesome.me/webawesome/dist/": "./vendor/@awesome.me/webawesome/", 398 + "@awesome.me/webawesome/dist-cdn/": "./vendor/@awesome.me/webawesome/", 399 + "@phosphor-icons/web/": "./vendor/@phosphor-icons/web/", 400 + 401 + "@atcute/cbor": "./vendor/@atcute/cbor/index.js", 402 + "@atcute/tid": "./vendor/@atcute/tid/index.js", 403 + "idb-keyval": "./vendor/idb-keyval/index.js", 404 + "lit-html": "./vendor/lit-html/index.js", 405 + "throttle-debounce": "./vendor/throttle-debounce/index.js" 406 + } 407 + } 408 + </script> 409 + 410 + <!-- Make every touched URL available offline --> 411 + <do-offline></do-offline> 412 + <script src="components/orchestrator/offline/element.js" type="module"></script> 413 + 414 + <!-- Scripts --> 415 + <script src="common/pages/ppr.js" type="module"></script> 416 + <script src="common/pages/version-upgrade.js" type="module"></script> 417 + </body> 418 + </html>
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/featured/index.html.br

This is a binary file and will not be displayed.

+2016
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/file-tree.json
··· 1 + { 2 + "APEv2Parser-3DAOWBBI.js": "bafkreies2aehvom37nparwecgvpgjwren2kwef54iorclrjwqkxokhooa4", 3 + "APEv2Parser-3DAOWBBI.js.br": "bafkreifcsyd3a7amob7odfuektigslgihhfndrzwstrpduw7i5wnfctnwa", 4 + "APEv2Parser-3DAOWBBI.js.map": "bafkreihrhk25f5xowqwo2wtplr4ga6mr7w7zdj2dojiwbw6bi7gamgvo74", 5 + "AiffParser-75ZZVNXQ.js": "bafkreig33zamq7dlncqdbpgwsmgq2nmdlkil4qcq4m2yhxea6ltqdndxia", 6 + "AiffParser-75ZZVNXQ.js.br": "bafkreie5eq7aseeqivja3g65lncjktjcabfbhmnrbniq3az2fv45nfvvp4", 7 + "AiffParser-75ZZVNXQ.js.map": "bafkreiakr3dninyghgtqriaxhkucoq5cp6zyxzxlau7ob4wlnuy7iawnma", 8 + "AsfParser-L3HWBCWE.js": "bafkreifjbcgunmuvoeu6fiovrctjulb4p5ozw5zecpt2xozq6f5bxyceum", 9 + "AsfParser-L3HWBCWE.js.br": "bafkreiekjes4vbnwykxu23poymxgk27xrenasstef5fihtjsn3tpdwoyoq", 10 + "AsfParser-L3HWBCWE.js.map": "bafkreihjlxih4gre6laonr54eunccoihucgr64ny7yr5inlzimw2uso374", 11 + "DsdiffParser-MWVE427X.js": "bafkreia2sjalpbzz5vvmupdmzgifbghasmp57h7qzxtjukbhqfihhg43si", 12 + "DsdiffParser-MWVE427X.js.br": "bafkreifnddd2pzeipfe3fe5xwxfebykrionxw2ckmnsbf2xv3oe5lyvocu", 13 + "DsdiffParser-MWVE427X.js.map": "bafkreiad5il3lfdtj2xyirxvoag4hdg7ufn4dcoky7gn6lg7yhd5kzw33y", 14 + "DsfParser-2WH6ZWS3.js": "bafkreibc7zsgttfbjkv6jvskz7iycwhxurttyd7lbaqiv7ygdndcsjozha", 15 + "DsfParser-2WH6ZWS3.js.br": "bafkreibx3ch7dselvcjrz3r2yaefimp4bxzjq3ucvfk4zpcmug5e72a72q", 16 + "DsfParser-2WH6ZWS3.js.map": "bafkreielj6npb5oado5pwskka6shp752mchwfjkgoh3ujpymdlfsywtpzm", 17 + "FlacParser-XESAW54U.js": "bafkreieamw73qtdha5hgy57pxjwhnsrd2tnbyxx57e3mor6lqgcrlhz2nq", 18 + "FlacParser-XESAW54U.js.br": "bafkreidmwfugkdxebdslgd343kl6jv4h4wcyz57gvmrnmgupin4msypzzy", 19 + "FlacParser-XESAW54U.js.map": "bafkreif52glqn3bkztm2ykqo7tpsyg4duqh2xzq7xo7adk62slcjpcw4tu", 20 + "MP4Parser-ECXHOMJW.js": "bafkreicwwxiw26ifluxbctxib26u675zksfhoair33hkl4fy5wbe6iangm", 21 + "MP4Parser-ECXHOMJW.js.br": "bafkreigxz7p3jecvpqbmug33mrxf3uq45aeni7igyszdu7cwqjcs2la5hy", 22 + "MP4Parser-ECXHOMJW.js.map": "bafkreibrynmyoeflmxmywldswspwl3yw4ai5wbwhregdz5eyzjbob5rhsy", 23 + "MatroskaParser-NDBVNZPG.js": "bafkreihzpidyb3jtaf2wxiz3ydgos4qvtaz6cmvf3yxgby464q7xd7yqc4", 24 + "MatroskaParser-NDBVNZPG.js.br": "bafkreigod5p7n7i2rgsbkacz7wbomaysb7mzgyonavx7qbxgwjdqieywje", 25 + "MatroskaParser-NDBVNZPG.js.map": "bafkreidv6i4i3tw2zz3b5e3ggql2uzncbjv33xxd4bxldr3ym2ktcfm7me", 26 + "MpegParser-JKEB5YCN.js": "bafkreibap32nkolriwsi4ixwsblrbwhflldafa6mlj6nrxun62jdv3j3d4", 27 + "MpegParser-JKEB5YCN.js.br": "bafkreig3hdy7wxmewdnmtaahr7s6a47ahblpwb2thcucfox3dskgre3uam", 28 + "MpegParser-JKEB5YCN.js.map": "bafkreieebkbv2ejmw4zsa67yq6esmqx35eedbfkccwo5feczff2e3atase", 29 + "MusepackParser-HGJOS4KX.js": "bafkreigpvkm5ekn75qiccg4rlg5muao6kfnc5m44prtlbbupnq2xpeagc4", 30 + "MusepackParser-HGJOS4KX.js.br": "bafkreia5l3cpa57gqzuypipv2sm35okn5dtkgaiz2mt3rnkesddab5t4vm", 31 + "MusepackParser-HGJOS4KX.js.map": "bafkreid6hwnmrslxluvfpjq5aonnxae3ctiyprnpz4ls2sjlbm5hcjq3we", 32 + "OggParser-7RLN5U3F.js": "bafkreic4ivyss7nmx7fkeog6jbfzjbc2s6iit73xb2m5vbuix3kmtowvnq", 33 + "OggParser-7RLN5U3F.js.br": "bafkreihv525u7swjsjo5kgocpx2yi4h6yqlqazmopw6jh5qqsjh2d7pz3e", 34 + "OggParser-7RLN5U3F.js.map": "bafkreibkufahiieopklog2g5c2fa2ohvltepmzoj22gy2negcizve54wku", 35 + "WavPackParser-ZXDV5ACJ.js": "bafkreifycza6krvuogm375aydgg4w3dqno72ae7cpfhjusw6wdoy4jeogm", 36 + "WavPackParser-ZXDV5ACJ.js.br": "bafkreiguhyfmrvrv5q53b5vzpznkswbjtqjz2i3fy554m6muegu5sduuv4", 37 + "WavPackParser-ZXDV5ACJ.js.map": "bafkreicttc4b6bjlk24gqzl7twrtzssljzt4rttjt4uouzhju3yu4j2f3a", 38 + "WaveParser-K3YQ6MR6.js": "bafkreiagmcq7igavgo76ppr4tlh2xozvay34pbfh2spr7qjikumdiyu5qa", 39 + "WaveParser-K3YQ6MR6.js.br": "bafkreiftmalvcpve3rk2tlzsuq2ksjuxywvxlxkh4zwkooejf7wgd65irq", 40 + "WaveParser-K3YQ6MR6.js.map": "bafkreicasgykdehjecg4ccxcftpvjmaeqtoi3bpnxdfzan63uvnl57xwly", 41 + "android-chrome-192x192.png": "bafkreib5iaka6mjidfdftkjsyynvkf6fttbf7u522jt5amae7ad3f7p27e", 42 + "android-chrome-512x512.png": "bafkreicdpn2m4i5bd4elrgrzan2cntq43sb3cnf74rwqvlfl7zftf7m7wy", 43 + "apple-touch-icon.png": "bafkreiaohact4qn66fcnfpmryt7i646iobfeynya2u6k6x3iqxo3kblp34", 44 + "base-5RGOBUOU.js": "bafkreif24mqtgdczdhlsqlwa5tabs2kshfn523qhl4iqvi46y7fxjanmje", 45 + "base-5RGOBUOU.js.br": "bafkreidl2hfpnosrc2udkp7l7evbkb47p6voulmsm3ybyslvaiutdkuori", 46 + "base-5RGOBUOU.js.map": "bafkreihxesv356bhhzxj3mf2on5wdfcsupthpu5u6ce6z33zitumedruqq", 47 + "browserconfig.xml": "bafkreicyxd6gbdflv4b3giegrbtk4qxf2jhx6v27ap76e3mleswv6oawzy", 48 + "browserconfig.xml.br": "bafkreibuvkq2ylaoexpkunebp6x5i6uugqmztwnchcumgogdltkdh3fbqu", 49 + "browsing/index.html": "bafkreietnuzm5r23heqf53ocameogcjbc2h2p5mff4cpm2hfdj4ycxxlza", 50 + "browsing/index.html.br": "bafkreid5dlkrmoyw63zp44qceolll3ifhllavypk23hgzpwmgfaqg2kydy", 51 + "build/index.html": "bafkreicwh3dlofhr5c7ym34d6xe6rucfeimeal7th76qj62zbfxhlsgaum", 52 + "build/index.html.br": "bafkreifk2fyidrr4gajtpckungncehf3ugnvq3vgyjppriqih634hlvoqy", 53 + "butterchurn-OCY4IPUN.js": "bafkreiaxa336vite7mazptrszd2taxjiyj2s23qk547luk3us6rqoqw7ki", 54 + "butterchurn-OCY4IPUN.js.br": "bafkreic37auw6srtl3ovi2v2kzzumcezvxxht5wrw2jqb5au6ntuhx63ha", 55 + "butterchurn-OCY4IPUN.js.map": "bafkreie22opb77sj4r6lj4cjskoc6lsscpfjrzd7qihe5r5azpsdlej4gq", 56 + "chunk-22LCXWVK.js": "bafkreibhyxeejh35hyw4jrpzsgi77bysy76x6vjj3ym6hx3fvpfmpe6ysm", 57 + "chunk-22LCXWVK.js.br": "bafkreifibucjkoddp5gd6du2gbpt5bn6ixibb2zws67plpkplav6wwvu5a", 58 + "chunk-22LCXWVK.js.map": "bafkreibzjvpruk5crx6lg2lcfx7xuezdrccd2r73rfued6ll4jxxxqeivy", 59 + "chunk-2CFBJKYZ.js": "bafkreib2erjs4k5bivierexd4np4jjivf6axwfldicpv6s6nii75l5vi6i", 60 + "chunk-2CFBJKYZ.js.br": "bafkreicu66nausxhqbev5kz4i7jelfojby6matbo3rdqkn2ktohbig6co4", 61 + "chunk-2CFBJKYZ.js.map": "bafkreihwzhrpbcl3rqqs6kzf2r3rfw2fjwpin4z27fxfhlr3fhkmwdgd3q", 62 + "chunk-2DWM2TAZ.js": "bafkreifkeaqscfl3v3xtp3dg3an7uf7iysie5s3pesaizmlv24tpzjqheq", 63 + "chunk-2DWM2TAZ.js.br": "bafkreiasmf7emc2rpn4y6wbqciisgbk2v7zlgaheo2by3lykru4agisir4", 64 + "chunk-2DWM2TAZ.js.map": "bafkreia66hcfa47igjtd253raecco7g5n5z5hd365egds5mi6i4jfj65wq", 65 + "chunk-2KN47T7R.js": "bafkreidquop47nuzkpapyc5o6bgou2nwvxdhn3jgzxeduhxzdpn2btnoty", 66 + "chunk-2KN47T7R.js.br": "bafkreiabkajm4sfiw4eb5ljo5yj6rmrjotfhlwj2uekwia42xhzvhkyc5u", 67 + "chunk-2KN47T7R.js.map": "bafkreihnhxqxmnbocri3fjgoiau5as6p2euqgcb5ukscvcy36xxwtpweke", 68 + "chunk-3LV5SNYF.js": "bafkreiadbeca4q2yybpsxmj2x5cqdiuxslfnixihkgux3d5tcosg5rrb2u", 69 + "chunk-3LV5SNYF.js.br": "bafkreicbqnh343gq7x2mdxaffe3tat3qi7eml4qeml6usymhdt3hlxgea4", 70 + "chunk-3LV5SNYF.js.map": "bafkreicqmux5anxk6tiusvvzqpdcugtsto65ki3kpnzeit6bn5lplilaua", 71 + "chunk-3QGTS6VV.js": "bafkreih73znql4dpxh5lua5smq22n4tmzhqrmoxcuxvbvmy3b7q2aywqua", 72 + "chunk-3QGTS6VV.js.br": "bafkreiaof5m77hmelx2ifamxixsppdyxf6txgjfpqk2ej7424rtdn5fit4", 73 + "chunk-3QGTS6VV.js.map": "bafkreigv5zzpi72yiu45zda47gxj3qli354ffrijalb3t242dtzp76mpsm", 74 + "chunk-3UJOKQHZ.js": "bafkreib3cwvqv2byk3pdaml6dnu43urijpedohsvn4a5b3hseatwak2m6y", 75 + "chunk-3UJOKQHZ.js.br": "bafkreiboowrelxgqt7dkycj6nbhid4rgrkiukpbik6lbjqkvni72pz54bq", 76 + "chunk-3UJOKQHZ.js.map": "bafkreidiw6ar3yu26eavnurwwlarfjdyh6dbrssglfwdnoc7qzg5sui4xq", 77 + "chunk-46J3YOS4.js": "bafkreigdjd3m6dynsgregitaimk2uv2bnfrkfy3yhwfrbzgigwkelypjom", 78 + "chunk-46J3YOS4.js.br": "bafkreielwce6h2npvoyykhm4c6f7hauzq7474f6dyij2voeutigmwkwcjq", 79 + "chunk-46J3YOS4.js.map": "bafkreif3niwddqlzzhpxangrnt4uqzvb2kag55aa34hddwuthloiz4envu", 80 + "chunk-4I6PUBR2.js": "bafkreidqsst3bsdyofn66crgdqky2bbhbpfrxe7zclo65uor5k35jzgnum", 81 + "chunk-4I6PUBR2.js.br": "bafkreibnljtqrt5q4qdjkmx7eezjo5od6ha7je42bbwin3rmliwfy2yizi", 82 + "chunk-4I6PUBR2.js.map": "bafkreieoe4qlh7ps6r7dvwchzaiwtja4kzwst6b23zkth2s5jv6sdn32q4", 83 + "chunk-4KWB43C2.js": "bafkreicqxsoxmx6uvctiv7xbsfkyticysbfopeedum44ykhtfauk5ufm7a", 84 + "chunk-4KWB43C2.js.br": "bafkreieerl376zimameo4zvvtsgur453gjxhp3naoixspsopbuzn24nxi4", 85 + "chunk-4KWB43C2.js.map": "bafkreifvk7bzn2vmldym7b4thsvrnszbj6xax2hsz32rqg6xq4h3pkgosq", 86 + "chunk-4M37HRVT.js": "bafkreiedxurttdxr42joqnnhicdqwdprwetmecjfm7gln3srarujm5jp7y", 87 + "chunk-4M37HRVT.js.br": "bafkreibjjveono5mmtwlgk7dndayfxsyo4emwbld6nmz3labwbtmtuotvu", 88 + "chunk-4M37HRVT.js.map": "bafkreiey6tevwv7c4qiv5c555wl6enrvcptw7g6prmglnzkebykbdm4boe", 89 + "chunk-4MC3BFQS.js": "bafkreicppbbdwfz7fmjlwwaftwwrrkafa4yvf3eshm4bofdhuwopij4iry", 90 + "chunk-4MC3BFQS.js.br": "bafkreietpcvkjute5qo2j22tq5sfom24x2hmuxhw3iwexruppw6gpzqgya", 91 + "chunk-4MC3BFQS.js.map": "bafkreib25bukr7ao6in3uo5xxkreo65udgkycogljahjxgt2gwjdnpgujq", 92 + "chunk-524HX7V4.js": "bafkreidjapjfigrat2qhwxwpp5jq7nthbu7libikb7yvqinso7veztv3uy", 93 + "chunk-524HX7V4.js.br": "bafkreifn52yvqpqij4eeamkvz3icf6q6vnwkfadixzv35zg3647pm2sury", 94 + "chunk-524HX7V4.js.map": "bafkreicmnl36dooxfl4oeyczz7qq6xwjuz7edianrvexizxwvn4b46ilbe", 95 + "chunk-66S4I3DC.js": "bafkreic4ibs7a6yvn7tqa2c5atu3sj5fkmrwgur6ina27w7vjyqjwqjqha", 96 + "chunk-66S4I3DC.js.br": "bafkreifeavaywkof2ypsua7izl73zvjlwbvjua4ewej4pvyfdt5oowhjoq", 97 + "chunk-66S4I3DC.js.map": "bafkreidocbufexzazpmxo324lc4g2p7nsqsohtmfgvdw23nsxshbiy7eci", 98 + "chunk-6NC6NOLO.js": "bafkreigagpa3ku22dtbhnatbnprhyyiku32as3ylrxqxhlza66bujhmuza", 99 + "chunk-6NC6NOLO.js.br": "bafkreichf2iqa6fybrtm53tkn42ffv7lzcquz6kqnd4wwtpldl7664qc7m", 100 + "chunk-6NC6NOLO.js.map": "bafkreideuheiri3pavxxhrql575wjqo4j5d2nkxdayqtrxmpnruuxjmdnq", 101 + "chunk-6NXS3EXH.js": "bafkreiamsndnhrddwqd475klf5775hlk7korlk3upudzyq5co2h4rlmaza", 102 + "chunk-6NXS3EXH.js.br": "bafkreiha3p4hpsgtcscspg37dsdtmmrlbtxjfu7iguxwqt2nwcupbhhytu", 103 + "chunk-6NXS3EXH.js.map": "bafkreihd5bal42edozpwbyvl4irgz2mbcilecfvotcqw6pb33yo7vfhcnq", 104 + "chunk-6TMSPXBP.js": "bafkreifu7vrttrln2m5gma3x3dpugp3cs4mn2zzwrohhf4rdip535oepcy", 105 + "chunk-6TMSPXBP.js.br": "bafkreias4tqjz4eht3czcrqzx2s7hxqlcp4akfj6b7j36q5mtmpdev4sn4", 106 + "chunk-6TMSPXBP.js.map": "bafkreihfe7sxi7wddi7k7nhiice75npav63r3l7ovdx6bxvjolqwcu4kky", 107 + "chunk-6WW6Q6YW.js": "bafkreicpdo3qy5vmzvvphwy2sqmiym4pt6fwxwi5oximohg4yclw2xlfuq", 108 + "chunk-6WW6Q6YW.js.br": "bafkreie2ft4n2xlosb6b3yolsezn7btmbatar4avonlpkgujd6wkv67ora", 109 + "chunk-6WW6Q6YW.js.map": "bafkreihzpvn4dv3u4k2attlalh7yvljvxxjfzohcj33sbesvn5juv44kiy", 110 + "chunk-74D5IDBG.js": "bafkreidlyb3alltk54hfv263eltgi4vwncdocjxbll7icqsuglnbkhzhka", 111 + "chunk-74D5IDBG.js.br": "bafkreianphdj2fvz3a2m767gfrm3cq62wqzflnxhe6yfgpeiczgai7cscm", 112 + "chunk-74D5IDBG.js.map": "bafkreibzjho6hlf2zbrci5tdmytw6zs7urlf2s6dromfw43jxnnrr7rssi", 113 + "chunk-75BXHJJB.js": "bafkreiernb2q266hv7sx7ctutndqpsjsvwnjh73lo565fqiyfe77hlcrxa", 114 + "chunk-75BXHJJB.js.br": "bafkreig4aavkihwzqh32ft5hvuhtlkgfrgzn34t4zpibv2x2vh333bpaw4", 115 + "chunk-75BXHJJB.js.map": "bafkreiakeddl5hpv7bfbryo3fwpvb4xyhsvrtmealciopsdf4k2ht27tru", 116 + "chunk-7EUCOO7A.js": "bafkreib4uruvlmgrw423xt64szyfenk34j5ky5fwgv2ftlihxdsqx7vepa", 117 + "chunk-7EUCOO7A.js.br": "bafkreig2qzp5geupmubuejlg5lysv65u5a6zp6jowywkqq6scmfwwpgx2y", 118 + "chunk-7EUCOO7A.js.map": "bafkreicppro6uw42egfig6disbdtgeifrd3uvbeiywajnfdofi3u2xfkkq", 119 + "chunk-7FH34WAQ.js": "bafkreig5ojq2fh34kmd3pfp5eb466rhpd3dxzljqrp366k7kx4rbiy2ko4", 120 + "chunk-7FH34WAQ.js.br": "bafkreibc5djdbpqk6rzap5xxf4hrutvjgr6lrf7pu6hmzqoteoylxujlle", 121 + "chunk-7FH34WAQ.js.map": "bafkreia3ymdhtfsf6nmhmznxvby32cq6meouwezrns2rpwagfum74nqayi", 122 + "chunk-7TWDCRON.js": "bafkreihrx5fmoxzmpow56tf6apxauwwteqczeowlpxctuns6tgwpmzbu24", 123 + "chunk-7TWDCRON.js.br": "bafkreibyryeqak3jlh2udghr63dxtt4kjnt7ylffu3xqlpqkvnxhq3lgqi", 124 + "chunk-7TWDCRON.js.map": "bafkreif22o3gwj44pudqigqs4n7h535homrwcig2rlna5hxjnngtdqvoly", 125 + "chunk-7VVACK5Z.js": "bafkreiax2dfwquwm557t5yshfshidi6krug5lqr74ut3oyehylfvah2c6e", 126 + "chunk-7VVACK5Z.js.br": "bafkreiehcd3vmsr54lpy5up27iv4dqffwjd4a73zoqqj3fcmu25nbgdm4m", 127 + "chunk-7VVACK5Z.js.map": "bafkreieb6a4766jpaxjqkahiemwzgsa52ufgmetaww4mlgl736drxlivqm", 128 + "chunk-ALTFDO6Y.js": "bafkreigzqbtqric2nruzeux3iigj7wrlebro6naftzpxe5e2m6qygcv4ye", 129 + "chunk-ALTFDO6Y.js.br": "bafkreidi2tiyk2en3pmampjdhvy2ithwfvs4crj5mtalqfe5sdwntu5oie", 130 + "chunk-ALTFDO6Y.js.map": "bafkreihvz7tsbdlmc3yfhkxwiysn4syjhlml5tvkrox55hnpjjjayzp7xi", 131 + "chunk-AXYB47AY.js": "bafkreihypjmys7e7x773sq3hawmwgocfwfiwfjhyo3bcmijuqk6yzv2l7e", 132 + "chunk-AXYB47AY.js.br": "bafkreibqsqwsbx3md7mmmfoqoxbuwki75q5627pppi2wv52c6uoqmfryum", 133 + "chunk-AXYB47AY.js.map": "bafkreidbhi7p75dlbfz2xwdvfrpqxiuzwwocq4edoah4fiiutive6u3dpi", 134 + "chunk-B4ATHCVD.js": "bafkreihnlcg6tzmteh4s6gyead2jy3oflzvriahgcskfbxnyle7bxqtslu", 135 + "chunk-B4ATHCVD.js.br": "bafkreicajdgl2ynjd74ds7dmct76jyge5if4ppu3w7rydob32ryb5o7huu", 136 + "chunk-B4ATHCVD.js.map": "bafkreih5hvkrish5vovpakmrxeiiyetz6rip4qz5f4xv7txa3nsoja4ja4", 137 + "chunk-B4XMDCCS.js": "bafkreibfjkjtkhvcpwcsx5xnua7csf75xwhoxd755b7tkravm45ee2q3sm", 138 + "chunk-B4XMDCCS.js.br": "bafkreihmcpwfqn4jidi6zcyc55n5eti7sq3qydyhqtp6ttqqw6jo66vgvy", 139 + "chunk-B4XMDCCS.js.map": "bafkreidmd7ww3jo6suprx2vel2ckes34hxx2ub6x4kh24ebslfhl443xai", 140 + "chunk-BFIVCPQF.js": "bafkreiblm5bcrt4hs2mhsnl2aujuezaglsm5jjuwt5rp5j7joh5l7ea6ue", 141 + "chunk-BFIVCPQF.js.br": "bafkreibsmrt7qkjhrn6anc2f5lbkusq4vj7yznm5swnw3dbdvoeymjzr6q", 142 + "chunk-BFIVCPQF.js.map": "bafkreiedpj362i2iajq3axfxp4igeunjyvp32by3tswqog35g33bhcojq4", 143 + "chunk-BK2GLO6Y.js": "bafkreifzdwikwxlaubpnhwhzcyxetcdpba2mbirifmxbl75rlvrdpypns4", 144 + "chunk-BK2GLO6Y.js.br": "bafkreiebopae5zlf7g3bt2vwujt2sbu5zwzujrszidhn6zf65v6pz3f4he", 145 + "chunk-BK2GLO6Y.js.map": "bafkreifvt4vknwajy6uomihfdfhe6rbfjlhehetrgvlgkciqofxzjayo3u", 146 + "chunk-BM2NDIFW.js": "bafkreid73262iamxb5eprxkbpnqmfpksgkayu3xec3ktv5upvtp4mvi5ei", 147 + "chunk-BM2NDIFW.js.br": "bafkreigqtegnzdefuisvfanjfn6ro6bemn7zpeakz4tqioawcpzwlwzkwu", 148 + "chunk-BM2NDIFW.js.map": "bafkreidzpno4euqcceqryljtm37xz2yruregck4a36p6au5qrn2ozvmkta", 149 + "chunk-BUMY6KL7.js": "bafkreifbe2cjytlxvpcmgnrcy7go65iagm4ds7hnfnbxmex5gzz2q2n6bq", 150 + "chunk-BUMY6KL7.js.br": "bafkreifrdm72staoqzzhrff7fjgkagtc6kbxvzyh7jengcyvdbonc75qx4", 151 + "chunk-BUMY6KL7.js.map": "bafkreiaouf6zhvcpjo5ffc3u3jio56xrl6aq5tjcyl3iionzqdnvfodyya", 152 + "chunk-CPZNM23P.js": "bafkreib6c46unblohakl32htg4cah3xtzge2fxq4wa6eiqzguhscn3xraq", 153 + "chunk-CPZNM23P.js.br": "bafkreibvjgqqggw4mgsw4sdaol6o33ispikf4pl7bip4ska36zdqsez4oe", 154 + "chunk-CPZNM23P.js.map": "bafkreig4bl7lecrcv43k7stavui7s7akvbqqbs27osb252dpkfi5jkjote", 155 + "chunk-CVJ7NIWC.js": "bafkreih26lntl7rpjvz2zko5iti4bvnfcrpd5n5fxbz746w5dy6vflv7fi", 156 + "chunk-CVJ7NIWC.js.br": "bafkreibi5bwtektnjbs5zicj4uiucqpqym5eiqlsejy23zncfwy2mdik6u", 157 + "chunk-CVJ7NIWC.js.map": "bafkreidigbcl3l56iqsasqz5shbzd6uw7lgkfymi4kjmesenw2f6cjbzza", 158 + "chunk-DF2QQKWM.js": "bafkreicbw4ugp5qpukmdbbt7blst6krm5ol4srxghuyxvtk5uat5odendu", 159 + "chunk-DF2QQKWM.js.br": "bafkreibcnte66i4hypfw5zx57e66ksadveok5wdb6t2kbtx2shsuombmwi", 160 + "chunk-DF2QQKWM.js.map": "bafkreigmrlhlz4ydf6z4v2hs2h6yl3ijzp76uyd6op5n5msawn7t3zjpqy", 161 + "chunk-DFARJRPB.js": "bafkreie7xbfqm6j2y5i2tw5nfuyqfqoq7pq5kps73e67q3nzuojlr7kxyy", 162 + "chunk-DFARJRPB.js.br": "bafkreib3qgyjpik652zbmyx7zhmhy5efhqkhyxxojryfy7uuibsoujrpw4", 163 + "chunk-DFARJRPB.js.map": "bafkreieo5iuithenbfdjznwajia34ft7z7bhkcvweccsb557iguusespkq", 164 + "chunk-DFKPZAA6.js": "bafkreiasps6ze3wsaqnsbuixfbfkgsv5ywfsy5p66aiwyqlj5rflll47gu", 165 + "chunk-DFKPZAA6.js.br": "bafkreifimvy6x5f7u53hkdn3j2rpfoqhacltegwsunkjktocderpdj5ti4", 166 + "chunk-DFKPZAA6.js.map": "bafkreif5vpi7laz6d6gdgvcvubrf5vghpifn4nuziizon76p5b2f5z6ggq", 167 + "chunk-EUC5N2NK.js": "bafkreickgv4e2hmi3lqm2q6kyfkhwongmodirhvvd2wk3hzkpyq65hfxry", 168 + "chunk-EUC5N2NK.js.br": "bafkreibgafaurthmtknsesbyab6lxo6etmzirlrgh4fsbh7icydm62ah5m", 169 + "chunk-EUC5N2NK.js.map": "bafkreifefxe6alksvankgied3bqqtq7b74ltlamqfd5hzaqexzeghgdh3q", 170 + "chunk-FIEVBWUE.js": "bafkreicdifmgv3lealtunxbcmgmyykmitqczm5rte3htspf4o4omkwoqyi", 171 + "chunk-FIEVBWUE.js.br": "bafkreicvgfqm7qez7rqcbthn5ggytngyrxtetjwexperhbvcanflkfhhpu", 172 + "chunk-FIEVBWUE.js.map": "bafkreicpq63p3osex2vowwlgswaybrczqxehoxkcebzrhou7xtgsrdtpoi", 173 + "chunk-G2MFBCD7.js": "bafkreih6ytbdxueyzgeqmcxmydakhku2tazpyk3k6wrawuu55ldyhbtokq", 174 + "chunk-G2MFBCD7.js.br": "bafkreif2ikn6x5lm6rczpcocj4h4wsnfsmfzw5f2rkuib2izvom35twuye", 175 + "chunk-G2MFBCD7.js.map": "bafkreif4frkph6nvuvu7lba2kyoicdgxxlqxqj67yjh4vpop4lwtvxnlky", 176 + "chunk-GCMRUHRX.js": "bafkreicwl4uied7yrv6q2ga5yvgrqqlwv3fwvhmyzvysnorkyvawsdefle", 177 + "chunk-GCMRUHRX.js.br": "bafkreia5zbduspr4nru6ity47xtahudpzr4tef2s6ml2fglrbjcnohpt5u", 178 + "chunk-GCMRUHRX.js.map": "bafkreifahfd67mcfuplhg4nxa2tzqg2pfjwcphbfhzsjoc3ewvsa7es744", 179 + "chunk-GDPVB5VQ.js": "bafkreiaa7c7xtxund7mnvmfrvy5ifsdeaxkqldtpfavd4uz5ucbfdwrc54", 180 + "chunk-GDPVB5VQ.js.br": "bafkreiclldx6yuv7atgvuumh66ogy6wzqobc3mdpsodkkqhewuynvn2a5i", 181 + "chunk-GDPVB5VQ.js.map": "bafkreib3ibnd2fi54df6z26vws2d6m576zz6fl7fgxov35d6p77v3cre3u", 182 + "chunk-GEPOAB4D.js": "bafkreierprmnj7saknow47lqzhkxuilsgtjmz65dhldpm4mqnezzj524ce", 183 + "chunk-GEPOAB4D.js.br": "bafkreiau7m2tcbntlwdw73tlb5amwlisd35pbrdqcd36t6df6det755ycq", 184 + "chunk-GEPOAB4D.js.map": "bafkreiajvujbpcaf4gewtxmt6e7yjvzfjlwcayypjogr2grtq5omagdox4", 185 + "chunk-GKONEEZQ.js": "bafkreiagx4n47zutcmbssyl7i2bppmwgsfmbokmmzjyizcborkaotqjafu", 186 + "chunk-GKONEEZQ.js.br": "bafkreigjhrbephjmzt65gu53sascc5say2gjfkfb7u5o7kg2ip3yroicsi", 187 + "chunk-GKONEEZQ.js.map": "bafkreie65dllicpk76jfnof6fb4nimfajmvcf7ukzdp3qp47z7a7gxlkqm", 188 + "chunk-GSG5OS62.js": "bafkreidbjirksvir2wgrznal4bqdv2uqp6fytssbx5ye4mx4ybzb3s5ccy", 189 + "chunk-GSG5OS62.js.br": "bafkreie4htsnzhfjae6lxelxvkxxnbxzyvr356aovdsouwnx5tzpc2a5jy", 190 + "chunk-GSG5OS62.js.map": "bafkreibxrajsbkcxbpfi7gchvkhhwheehigmcoxji2fyhz2rdfhbd7keta", 191 + "chunk-GUCS2UX4.js": "bafkreiattblmfnvkv4es5vuy65sfjxcjq2ig7mpy3e3xsczwwy4cj4wkjy", 192 + "chunk-GUCS2UX4.js.br": "bafkreic26upqjxlyy2y6syh5hcimaftbg5j5fixkcz3l5ydntpo2b4r25i", 193 + "chunk-GUCS2UX4.js.map": "bafkreic4us2k4d2asm4o5wab3qquft6fncngk2flcewxt6d2ibmql3qqie", 194 + "chunk-H2A3SXZU.js": "bafkreideklsliwg2fqax66mqej5xmiic7o3cvfwdyatx4r477oqmxxmgdm", 195 + "chunk-H2A3SXZU.js.br": "bafkreigwxnncsh7jvux3kvlicyvxg23fcwxqrkd2rpb6vfedtvyex2ehfa", 196 + "chunk-H2A3SXZU.js.map": "bafkreidpsdcz43ieeb5qmyj7sadijocaor6hnmlnkpxmqd5ksdfa7ikgdm", 197 + "chunk-H2EOMKTB.js": "bafkreibe6fhjq4zi6b2aay6zlc7ccatrykaxx4ei5bbsmgutcthz3fm6yi", 198 + "chunk-H2EOMKTB.js.br": "bafkreiedot6vmgfxudc43rsfroxbgai7uro5oppifa7jgtdzudb6dbx7x4", 199 + "chunk-H2EOMKTB.js.map": "bafkreif4dmjbn53an53mr7eliruwlbzivodmbpnxstl2cu63nfr5dt4bju", 200 + "chunk-HB7BQ45T.js": "bafkreibzb3xmxjq3stqqitya7dmmarcd4wsazndmlnrqtyfhgy2crmwery", 201 + "chunk-HB7BQ45T.js.br": "bafkreicndecc3s5stnhlux346qwhliddd5rqpfof7pbn2r43kn7lylojmy", 202 + "chunk-HB7BQ45T.js.map": "bafkreiaxs7klch33y72gqhzp5kjpz65fsvhjkn2xwau565tpuh4zpfxmzy", 203 + "chunk-HDWT7CXU.js": "bafkreigkkftng2bocu26sobvg27uwypqqnk5l6vcmh5jybpz3vbpyztlhu", 204 + "chunk-HDWT7CXU.js.br": "bafkreiacf7euynshfus3qwen74n7io5ldglbkkxsas7xpjpos3kaoitjei", 205 + "chunk-HDWT7CXU.js.map": "bafkreih7xwir5h53c5km5wponkm7sgmlmv74kblm6vtzteoojodueg3whu", 206 + "chunk-HWJBSPKT.js": "bafkreifs7nxmlqgnwk3ikufd5iwmfine373lpyms75lgnggksgwt2wtpqu", 207 + "chunk-HWJBSPKT.js.br": "bafkreia2jimchzeifuns24gsamt22kygwdpgdtuwyp2kbwoyy4bxkqanba", 208 + "chunk-HWJBSPKT.js.map": "bafkreidkacpwxdy77zmasama3pqdyjhkj2i7hc2gxen5n2hlmxjbiicxqm", 209 + "chunk-HXFUI6RJ.js": "bafkreifp5vjclblhpl6bnp4z2kkyqfzluqi4fzjdnrb4jdgurjnkc54oli", 210 + "chunk-HXFUI6RJ.js.br": "bafkreigsnm2hagjxsoqmcp5rz35sg2yvqwmgmfz6sgb55dn2jncwlood34", 211 + "chunk-HXFUI6RJ.js.map": "bafkreichmz4bfzxyxij3db3yidrzlx2j5472myzvoj7gnd7lypz7chova4", 212 + "chunk-HY7Y7RUV.js": "bafkreides6v2sq7wkej5ou7ozpfx4ubkqydvk6arwj77hazaqqjc3tpjda", 213 + "chunk-HY7Y7RUV.js.br": "bafkreigju3kj43jdttsskby7gzqqziutzgav3x7t2ixwjq6e63x3njs7ja", 214 + "chunk-HY7Y7RUV.js.map": "bafkreib5dhyzggjthscub6e7cij3phwjkirs5x35vjittuyhyj6t5dyl7m", 215 + "chunk-IGGXGJJG.js": "bafkreibwu6o625hlxevdbjoera2uuqir6vube27t5ucs2geayubec2flxm", 216 + "chunk-IGGXGJJG.js.br": "bafkreigoojiqnp7jol5p4orn7yse5sy4jjwjffuiyw6md46kx756yc3umm", 217 + "chunk-IGGXGJJG.js.map": "bafkreiheqfkijqsqylpbqv7gk33khcn6jh6ntjrp2vcrk5yl32uvy5f7yq", 218 + "chunk-IUBFNQRH.js": "bafkreid76t73bylv73xaz7zflfdlnrvmtc3zyfqziaodkddjn2ofagvul4", 219 + "chunk-IUBFNQRH.js.br": "bafkreih3fjliawvkserpwvpefztqeyaxk4k7dri3d3tf4tgvja2dfspavy", 220 + "chunk-IUBFNQRH.js.map": "bafkreifvws4z2es4mtgqqvasg2jgygcwgyq2zlbjbhigceyxira6353lze", 221 + "chunk-JQ2XTL3Q.js": "bafkreibrwhkbo5dbofgv52srsimluncdaw6wujbdqym2cxrjv6fgmtcbcu", 222 + "chunk-JQ2XTL3Q.js.br": "bafkreicml4x6z5r6ibd6wpw5dlitpluelgpvvxoqfsp4hvkbb6gfvxd5gm", 223 + "chunk-JQ2XTL3Q.js.map": "bafkreid4xk7ygsnez63lsagpwi2fotsvhm4mrp75vz3fvgufsgjvijoyhy", 224 + "chunk-K2CRUTCH.js": "bafkreifxsdgwust46k7sate5bi3byz33cwxdbz4yyoh3ztc5gpfilqluh4", 225 + "chunk-K2CRUTCH.js.br": "bafkreibugc32e4phfjwk5fzcsro5dyavuq4v5gd7g7cphu2ihkuqk4zb64", 226 + "chunk-K2CRUTCH.js.map": "bafkreigfplrwli24tllfp7y2vn5hxe7anodz7tjsdqpooxiuowk6a7smp4", 227 + "chunk-K6BH4SFA.js": "bafkreidc4qr37nusi3xb2tiux6imsijiummpnvuvoxmj2thxc7jt4x3y7e", 228 + "chunk-K6BH4SFA.js.br": "bafkreichtzca6jrv4mywqcvktlp5ubhlqwfx3cxpavvlmhnvzirmk7zkp4", 229 + "chunk-K6BH4SFA.js.map": "bafkreiegjquidbx6trbzotr4wgdzhdxgzlipf3s5hmrdx2i7o4q2fhfgsu", 230 + "chunk-L4VK33Z2.js": "bafkreiet2rni7zr3nf3skdc2mjmrfyhbvainss3yaqdu4o243ed6l5rwv4", 231 + "chunk-L4VK33Z2.js.br": "bafkreidrerv22ipeossji4aoraybn3cffzcj6eiueciogvcwizx3p6yzla", 232 + "chunk-L4VK33Z2.js.map": "bafkreif26obf7fy73vj3cffvw75aqa7touw3l3k4j65uoirq7hiww3nu6u", 233 + "chunk-M33EQ5FN.js": "bafkreicpk5fd5ntuu5mhfc5r5jmgto75ibzzt27jfs54wi3ktu6ksibgzi", 234 + "chunk-M33EQ5FN.js.br": "bafkreia2spi4l226nnxxxlwztnz6acyvza5zl7atk4maiwnn5d3cpx2jku", 235 + "chunk-M33EQ5FN.js.map": "bafkreict6q2kiom5ogrqgbnf5xplq3wa7bclpxuyydgcqzoclreg74nzti", 236 + "chunk-MWEXZQ4O.js": "bafkreie7olba6sundfegjtamo3t6snmtdl65ctqlpb4n3wi7v5jebsn3gq", 237 + "chunk-MWEXZQ4O.js.br": "bafkreidinrn2ygli4ov2kw2gjcb3dh4qcl5kxhy4gds75e6ocghmsdrrri", 238 + "chunk-MWEXZQ4O.js.map": "bafkreibts6v4fwpmfz7rfqcjcf65zus5cs6x3hlt5m5l5tjgzzur3knxee", 239 + "chunk-N6NGHZ4B.js": "bafkreiatfa5kocbwlxkrq4l72tdsl6gs32jpupd4v4nkqrbxpgmhhxr52u", 240 + "chunk-N6NGHZ4B.js.br": "bafkreicza2tukiq7mec66dyjyr3o3yaqgejh35dhej2lxbt55tcvgdsbgi", 241 + "chunk-N6NGHZ4B.js.map": "bafkreid6nihzj4vvl3jjlkiufjbuxl4a4vow6kbvbwyh52zykqbtqprtee", 242 + "chunk-NBKJT6AU.js": "bafkreihxmdvi2fnxmedkc72xyvop6u3lp2l47xlx6ui4qsid23icww2lja", 243 + "chunk-NBKJT6AU.js.br": "bafkreicbxac6u6wactrdkvxjrozxi4bkba2ee2hzese2alyiqccjhffb4q", 244 + "chunk-NBKJT6AU.js.map": "bafkreici4a6uyteeu3rp3lgzcn3qeezxncdhxih3pbjodrjycpnmsjn3xi", 245 + "chunk-NCKFDOQK.js": "bafkreicfcbelovw3vxb3jkmjw4mgaiiio352h444gkbw5casrmpua2caeu", 246 + "chunk-NCKFDOQK.js.br": "bafkreid2xabfofkgxvxskuuem76vo7gmk6gcepvwxgbz34256ilk2gi4se", 247 + "chunk-NCKFDOQK.js.map": "bafkreibz5z2y3znwe3efckidrqibv3xmsvnffng2stobu665ot4tcptzga", 248 + "chunk-NQMEX7CZ.js": "bafkreifq5lzpd2ebcbnqmvs4np2xrrycj64cmopwhc7kgiqivohsz4j3ta", 249 + "chunk-NQMEX7CZ.js.br": "bafkreigoicsm274wyuyqtvhp6z7n3fzshphng77i3b2ofzhfoj4txzsot4", 250 + "chunk-NQMEX7CZ.js.map": "bafkreienoireyp6phcl3uqm3gnubuhm2fewytdbgj7jksn7g42ynixic5u", 251 + "chunk-PARSEOEI.js": "bafkreiegbnrqgplf4zzl7dwvxr5lljuaqcpzk533w4o7l4unefny2w4ssm", 252 + "chunk-PARSEOEI.js.br": "bafkreihmgdi2qkigj6e5whqdsu6czal6ojjny5pkf3fn7isd6b6r2in63q", 253 + "chunk-PARSEOEI.js.map": "bafkreiepqxaf3v4cft47c4ud2ivh2xu7j7hrfebvfoosx3mxzbfk5dkpcy", 254 + "chunk-PBZITCUN.js": "bafkreiatmad4aidc5xfoyyau7ej4iykh6l3focogb7arenh6vkmyb5pyhy", 255 + "chunk-PBZITCUN.js.br": "bafkreidqfa3njhwjer57lxzajwoayspp2l5dgn7pee64cmzi422jxslecq", 256 + "chunk-PBZITCUN.js.map": "bafkreiciltdszqzgmuvrcmblqubq6h5uzatlyhaffzy2muwu7dankhcljy", 257 + "chunk-QVM63RP5.js": "bafkreihc2x76gioox6f2e2nnnyicerofleetqgeudykaj7lhhd6iitihzy", 258 + "chunk-QVM63RP5.js.br": "bafkreiazz3g4vzlwjubcffcnwz4evgjdllew3ijuh3sfow6u7acwcmvvye", 259 + "chunk-QVM63RP5.js.map": "bafkreiakrkot2wycjtjtjfgfkvlaa3m3irxujk4xft3a7webq2bxkyfw2q", 260 + "chunk-RC5PZNFM.js": "bafkreiagbnczirrnmbmlzy2ancmdzznm3sgwa2rgqybvh7pjmuq7zojqvy", 261 + "chunk-RC5PZNFM.js.br": "bafkreihripcttbudarh6bmevzg5udqfepyflngw72muw2tq5a5trnckx4a", 262 + "chunk-RC5PZNFM.js.map": "bafkreibmbld3uf7n4ht5mu7nzfdnwresfn6k2tyrt3b3hcpjvv6hlwfbvi", 263 + "chunk-RCK53RB4.js": "bafkreifyr2i3ml24iz4usebgwjcz4aavhyx6rekpiho3eo2ct6pik4fncu", 264 + "chunk-RCK53RB4.js.br": "bafkreibtnjq2qy7gdl6vzemtirykfl7qwcfwqvbnbx5blnmdxs5eoi2yga", 265 + "chunk-RCK53RB4.js.map": "bafkreib5lpagcaf3juvkp536ctpnircvzipy6juk3uqjdkyplrkjguic6u", 266 + "chunk-RHKSCICU.js": "bafkreih6j4ss3h3aidvup6ufkwk2a4qk37tphper4psfu3kead5igrmlxu", 267 + "chunk-RHKSCICU.js.br": "bafkreibtb5m7rgzcfvg2wrjtgwxu2rh2jh2lnkxfykcfxr6pgywoune4pu", 268 + "chunk-RHKSCICU.js.map": "bafkreifdt5wbt455ppzpbgx7bf6apge5m2ltfsm3zegznxeecesdqyqt5u", 269 + "chunk-RJJBOBOS.js": "bafkreiboc3aeilbeqbp5qklj3erfwisahska6a4hzabtzluovdaebcwye4", 270 + "chunk-RJJBOBOS.js.br": "bafkreibgybwpehh7yfm52zyq7l5dpvqqxn7oqupu5ig5oqkhag252nl7uu", 271 + "chunk-RJJBOBOS.js.map": "bafkreibkqipepcwdgj6joocfvmvqk2bc6fgsja44xff2lh2x6kjegqgimq", 272 + "chunk-SVXEMCXP.js": "bafkreibmojfvus3akjypv6qdgiwytz5e2grg5c25unjsh2p7th2xp4hxuu", 273 + "chunk-SVXEMCXP.js.br": "bafkreihjagreclhbw4ouijttvznizhwb4b5tpnd6s7hyt7z4zf3yfybk24", 274 + "chunk-SVXEMCXP.js.map": "bafkreidv3u2c65y7i3vnfzqnnyk4ckog7iayzkvfscfh34km7tgg6fnkt4", 275 + "chunk-TAWLQTA5.js": "bafkreidazhqiwicasvschj7l3hyvjg6baooo6xwsnh44zkfxjjqqkf2ojq", 276 + "chunk-TAWLQTA5.js.br": "bafkreigdk6i4u4sjymuhtrokszgyi4p6bkt5sj2ew5ujd37n675z47h6xu", 277 + "chunk-TAWLQTA5.js.map": "bafkreiadg545swn23qwdwkkdsyij56mrr5xderufr74zubnvsp4mgsthwe", 278 + "chunk-TPYPBODG.js": "bafkreie62av5tvpbj7gb55atbftujyk4zbi23q3o7rxyw6iihztk4sjl7q", 279 + "chunk-TPYPBODG.js.br": "bafkreiecl62ullbqtggy2cnfnnm67p6tcjdn4vplatefxare4xcojsl3gm", 280 + "chunk-TPYPBODG.js.map": "bafkreicbzru5kro7arsjwcdzyt2af3tnofmgtkibph3hfppr4v5wpzkq6e", 281 + "chunk-TTDW3IDD.js": "bafkreiae67yvdbbjdj5orfui6o7vexr7e4dn6ksbeft2owfgass34zmyzi", 282 + "chunk-TTDW3IDD.js.br": "bafkreiafu3ubahjsbljk7end7ss5tdszrjtrnbxktkxcyhhnuhfil7pif4", 283 + "chunk-TTDW3IDD.js.map": "bafkreih33ll455lxzpkg4mkasgqag5jsskubqnrzdcdqtfk5b7zij257vm", 284 + "chunk-U2FEVQ4T.js": "bafkreihbtdy3mfzbvglzmkqxx7kgembwcrqiphcm6zaguejipgayh263wm", 285 + "chunk-U2FEVQ4T.js.br": "bafkreicgc7rvxia6vxafawckeit6fmkjssbcua7unp7q3jlvdzquf5zk3i", 286 + "chunk-U2FEVQ4T.js.map": "bafkreih7edadmsxiwe752bgpagtadmi5zdbbsgqukhwldque2sktw5usmi", 287 + "chunk-U34JFBGC.js": "bafkreicuwsqat5dtcba2rsvfx523ociiywmfpktmoqaw63gytwsy4fab3e", 288 + "chunk-U34JFBGC.js.br": "bafkreignxyqld4hfjp5c3z2wdz6z5udxzcenqgiif323fzlo5ylbd3rfju", 289 + "chunk-U34JFBGC.js.map": "bafkreiaj62kdgzmqw4gwrlh47f5yw3zsx5m4eoohesd6tn2rhumflojyoi", 290 + "chunk-U6O2MSBF.js": "bafkreieppvdofyr2fp766katzsiz2d2u2earhyr6x3xjl6uioujmzj3gue", 291 + "chunk-U6O2MSBF.js.br": "bafkreicpcur2y2peclan4gs6tu7xt5mc3ku2ira3cuxuzg5jme26ntcire", 292 + "chunk-U6O2MSBF.js.map": "bafkreifegkmb4jj4ywphayxlrj5a7jlyxo6zw3petjeuvecafj3x4jdnr4", 293 + "chunk-UYT7NSKP.js": "bafkreiaauqkcb7b5e4thydhyxqpx7n5lh6b5unnassmj4f5mertyxsy5kq", 294 + "chunk-UYT7NSKP.js.br": "bafkreiatebqpycfqhotpto2smkb7ywqwlb7oynf7rt5tgudrzoyqff3l5m", 295 + "chunk-UYT7NSKP.js.map": "bafkreifdbv5hqwtprqhzaf3zs3rhqoqo7gtslgy7zk3ibfcmespikrx6mu", 296 + "chunk-V7SGZC62.js": "bafkreiaxs2t4ajdjzgynrdbkdmkmgll7vsoonvfdfdfgxfjlgxofshlomu", 297 + "chunk-V7SGZC62.js.br": "bafkreid3jus2uzi7kziwhw4jutqu5vvhke6wtbajyl6a7l2wfq67okdsoe", 298 + "chunk-V7SGZC62.js.map": "bafkreiaetogs3exndh7xp6u5bg3fk567c4bn3psw75yaluxeuedyp4fx7a", 299 + "chunk-VDIPTCDI.js": "bafkreibesgxun4356oefpt2k5lhlqydwtubh6f2hvacanawxij7spb3nhy", 300 + "chunk-VDIPTCDI.js.br": "bafkreihfc7rzjmrhqh25kqsc3mb2vfcp5pppy5mqm5mlg3iowzq4x3aihq", 301 + "chunk-VDIPTCDI.js.map": "bafkreiggi7yafnlxmlj5dywhcu4yk42pst2xscn5lesyf32dplvj76riyu", 302 + "chunk-VJVS6ZD2.js": "bafkreieivtq2djnbh3fnohyalmkl475st7etiahnlykupnixrzbjzmzyzu", 303 + "chunk-VJVS6ZD2.js.br": "bafkreiaqlenqvgxipfo6hnvmbk6f33hl2rf7n3kp63fqqs2xij7my3xcra", 304 + "chunk-VJVS6ZD2.js.map": "bafkreihyrxqec4u6naaks2kjw3v46ljwxmxq7bhr6xxarlc272kcc6yl6e", 305 + "chunk-W6JGGJUD.js": "bafkreiabmxqpkguzdzrxr4ckufieyl3y2ffa3sthh765drsdntpwnvt5g4", 306 + "chunk-W6JGGJUD.js.br": "bafkreiap2y7yslt4vmvfj3ofyvca4adgeqcmx2ovvwvj267l2tgkzro6na", 307 + "chunk-W6JGGJUD.js.map": "bafkreidueonci3wvpsqfmn22zj5m3lriasznr47dbzggahvwqggjujckxa", 308 + "chunk-WLXGGMHC.js": "bafkreibwg5urpnbmlsctgvv5tbpdztfmtl7vbvsyo2hwuum4ffe57lnj3a", 309 + "chunk-WLXGGMHC.js.br": "bafkreiar6dbftdwx5l3xxehi7setm67mzzkthinwn6o2m4tf27wag5h7vq", 310 + "chunk-WLXGGMHC.js.map": "bafkreihoj6vakurae5cdnmkhmb6aovcichj27cmmtwdaqb43we6aaywmju", 311 + "chunk-WTHT2MFL.js": "bafkreiad5udsgzwugky72jgkgado2dbgdglxdp7hpxvcutwplmth2e5inm", 312 + "chunk-WTHT2MFL.js.br": "bafkreigaf7d5hescl3nhi6mx5z2kwxl5gngaq7i3bmwft45mkclxlwn7ny", 313 + "chunk-WTHT2MFL.js.map": "bafkreieaq55ppupcvk6ozlkawgziqacm56g7t2uzphu6lipupfavydibva", 314 + "chunk-YEYXC3F5.js": "bafkreigdsvrxc6krsyyfparjrvcn7bdg2c3sse3xar3cbw4kcuraen5aom", 315 + "chunk-YEYXC3F5.js.br": "bafkreigqfx5uuyn4kjwe43b2l4suhnsszvjvrkcgecr2esvadmr6ip47c4", 316 + "chunk-YEYXC3F5.js.map": "bafkreifdbx7hb7mto3ks77lumqcqiz4ilgm33y6rw7pkw7jhmox2bkzrlm", 317 + "chunk-YI4JYMVI.js": "bafkreigimlnfkder6bfs6odmsaiaz3gjbzafmixw45rpgs5q5bcoej74fu", 318 + "chunk-YI4JYMVI.js.br": "bafkreihcrgbdbscchr6k4udwp565siinw4keofedkkezkf27xm6xgvfr5u", 319 + "chunk-YI4JYMVI.js.map": "bafkreiednjx3svnvgautogm5ktrab6uwyu53s4wxqwxvycwbvvb7f4lbga", 320 + "chunk-YS77VANJ.js": "bafkreidskq4yhugnbnk666jq2gcu6r2j6gg4iste6t6uwbthcjgjh4yqri", 321 + "chunk-YS77VANJ.js.br": "bafkreifbalaelj6qtv7kr5urjjtacnckaqwzeqdc7kmxsesrsfat3jzo7y", 322 + "chunk-YS77VANJ.js.map": "bafkreifir5y5s2f3iobroxgn5obcldoxxr2rvs4afyeiaasixgjnfgglli", 323 + "chunk-ZCBN4C3I.js": "bafkreigj5l5zh7fsjxs2simmxvulgxsvxc2kkgnaightp4mznu7ja2geiq", 324 + "chunk-ZCBN4C3I.js.br": "bafkreifcljhrd46uchlmjstgklypucprvnpfnbzunfreitos44ymj47xzu", 325 + "chunk-ZCBN4C3I.js.map": "bafkreihsvflvd2xbg7b7xoga32dax2iemb5vupif25uj54ka6txnbidgau", 326 + "chunk-ZMYK46VQ.js": "bafkreifxb5pqd2xrjuy62tncnyavuvhes4p64nvvnk2yzdjuf5m3ub4qdq", 327 + "chunk-ZMYK46VQ.js.br": "bafkreihc57xaj3cbcteaslcfvnif7637xpjsh6gwwjfimzmajbmirsppfa", 328 + "chunk-ZMYK46VQ.js.map": "bafkreic725syarx2rbgy4vgajadrxg5djbkicreowxtyqu53unmeumhqf4", 329 + "common/cid.js": "bafkreicjvwbo6xofcjomcopujasv6iwlag4bewv5nptbyntoeobxwg7zpm", 330 + "common/cid.js.br": "bafkreieywdqq27x7sdubasbthdpriaz464zxkv2nii27mhnqn5mpvfw4jy", 331 + "common/cid.js.map": "bafkreibfypntjwrypmb4dwuh35hsobg6gey42lyq7l7474csgxkvs7dzkm", 332 + "common/compare.js": "bafkreidwflo6jalzhafuvhnpqrmnofoh6cezbqilw4gvzx5m2ircbnxlle", 333 + "common/compare.js.br": "bafkreiftgffsdc42yza2xofsedve4y3ms3noi3yt7usbu32jdy35ccnrnu", 334 + "common/compare.js.map": "bafkreibdioxv7ad5ro6mizexacmouapgmxrpacijxoeghstuw53c4dlppy", 335 + "common/element.js": "bafkreidal6mp2killmbexghsjjljxq7xvprzrmt2hlcsg25vsin5mlwaqy", 336 + "common/element.js.br": "bafkreiej6cdigyagc2z7ogolew4vnshmlzdzqaqfqvvaizecjlakfidndm", 337 + "common/element.js.map": "bafkreih5gvol3utjot77iekxiyz4mswgnhe7lj7vivq62m5bd5ym4ufa5u", 338 + "common/facets/category.js": "bafkreifr3n4sgebyfnqttdvf5rvg3sbrihsbohs7wm6ojfek55eljjpl5q", 339 + "common/facets/category.js.br": "bafkreicbtwdsrejwlab4yuqapsohaxfq4m4sh56ogbs6vuph6zvd4tkh5y", 340 + "common/facets/category.js.map": "bafkreifosw3yxia3dwviitwy7xr7nmuddenlgobp3zavhu5ge6r7e5xlzi", 341 + "common/facets/constants.js": "bafkreifbhebhzfmvzyb2avp54iqnoghcxp3be6csvic6rmjxrlevjpku5e", 342 + "common/facets/constants.js.br": "bafkreie2wtjiawdbhralsyyubkviawtjiboumidqajzwegxowzysb3yvee", 343 + "common/facets/constants.js.map": "bafkreiamhej3cq6fwftdyvzzyvn6dmqk2ptji4jtxlzr3adjlkiounkc2m", 344 + "common/facets/prelude.js": "bafkreid4hgysyvyhafpbifvy7uwvuwmpzjqe3q3gtpbubt4hjd25anzb6u", 345 + "common/facets/prelude.js.br": "bafkreien36sb5anyehs32yyqrfaicohcelcabztsllzgntdyoznn436gxi", 346 + "common/facets/prelude.js.map": "bafkreielj4j63hshicayon5o66yyv46bvxojqhzljwgtz6bgw4u3kdenne", 347 + "common/facets/utils.js": "bafkreibpfdh3w3w4jpintgvpjke5piolv73fj3njhuyvpk7x4j5gusdwwq", 348 + "common/facets/utils.js.br": "bafkreic2szjljvhpwfzjpgcwplt6z6q52tzmfgewb2bi42duorr52etpri", 349 + "common/facets/utils.js.map": "bafkreids5iterd5ztjlb5xuw3sy6ur7xvvkcbwf672o4qzftstu4w6ottu", 350 + "common/foundation.js": "bafkreigphzqe6g35rysg2ac43l5l7irajt5z2mmfgslvijdpa4ieojcvzm", 351 + "common/foundation.js.br": "bafkreida2dmg53zj7jbdsrohxvh2tahcmiaqwfx3bpfqgo3s5kt75wza5a", 352 + "common/foundation.js.map": "bafkreiebjvkqscslzmpqjvv66u373xptpoa5hkawfocom4fkvzedp4mep4", 353 + "common/loader.js": "bafkreida2ggplls762a5hhvzfi74hpli3dz47fbhtyfpjzjxxscl6gfbku", 354 + "common/loader.js.br": "bafkreicsyrmg5afjtoo7e4mxhyjkexoumrup3rdab3g6gf6d2kbmms4o6i", 355 + "common/loader.js.map": "bafkreibxvcabbj5byb6isv6ddlaql2nstsk4mght6ovwdbvwqhwndgecvq", 356 + "common/output.js": "bafkreihjv4vepupxfws46iaoizwy37dinodhby3qkgmnosdpaw2zx6mgjq", 357 + "common/output.js.br": "bafkreigp4c34u6fdrxnxgbebwaf3g56rvurk4xfnhbutbaboexgsajz5ry", 358 + "common/output.js.map": "bafkreiarzk7ofi56yhlxmhyoyshi3tslu4shyu4jefufpwcps5nmab5ola", 359 + "common/pages/build.js": "bafkreih6ltxoy46tjull2kbf6sqaojwn22jilxrmd7asr5os7rmnghgxdi", 360 + "common/pages/build.js.br": "bafkreiacbye4soy5osg3kkrqljmc7o76dnuob7rqif53o4krty33rkxoiy", 361 + "common/pages/build.js.map": "bafkreidl6p5lzwvskpat5bfl7bnjvsquhvjk2lqfbio4yh2ns4askoffjm", 362 + "common/pages/crud.js": "bafkreigvb4sx7a67wa2xabfanfyx54dur7jcnigxh7i2w3tatlvfktjg6m", 363 + "common/pages/crud.js.br": "bafkreifhopfymkntax5tt5m2nu27ehy2jkewodipvcokz6alztr4x5tvfe", 364 + "common/pages/crud.js.map": "bafkreiedxoh4yvu3pjgtszwxcrdelpra5an2u2zscbdaya4zzmfjuy5llu", 365 + "common/pages/dashboard.js": "bafkreidooautrrp2pzqrkgea46ldq7xm2h2fm3poljicjxla2vlhrfewlq", 366 + "common/pages/dashboard.js.br": "bafkreifv5o5r3hc4a3iwzvbpbd4gdewnhb5oaokuxnburqpqeir6lgb2q4", 367 + "common/pages/dashboard.js.map": "bafkreifdywrou4wjvotz5l7zigprs2ofeq4udvsn63xoxm3i5d2yn2lqai", 368 + "common/pages/from-uri.js": "bafkreib3yz27mmeyawy3rt5kjyddr5oenlxnoz73odqbshiligf4za3ege", 369 + "common/pages/from-uri.js.br": "bafkreih34ndh24auekrr3p35gfxkwzf63nsg6kir53vhymbnmhez7fyw6m", 370 + "common/pages/from-uri.js.map": "bafkreicvfguu2jzmgfpv4zlesj54ejy5qvgwikvg2yk6ervcn66scpohyi", 371 + "common/pages/grid.js": "bafkreia7aqzdf4cnvwiqe27rjkkg3req6bckxqfftc2hq2zo7dbcieg6tq", 372 + "common/pages/grid.js.br": "bafkreie3a5k6vv5wgrzrbc6zgadlvqzowmqrplydtwhxhom4u3veqbs3qy", 373 + "common/pages/grid.js.map": "bafkreihkrcxbuxvnfeuwmngevn5vu4ydikilta2gxaymsf7zetozfv6gyy", 374 + "common/pages/guide.js": "bafkreigehwtapq4dvgnkx7le5o74oxyi3volqzx3jucojm33jgchu4gqqa", 375 + "common/pages/guide.js.br": "bafkreiezzo4c4d4nzj3z6gz6xzmd644r2rxzq2sozdanu2i4pd3566q7ni", 376 + "common/pages/guide.js.map": "bafkreientbxoehjkrfz7ypfjuyugm2p7uoucg3p6cfmm6jxslvnx6tiayu", 377 + "common/pages/nav.js": "bafkreifpfnfgiwn4na2b63b2pu7dov6vmvokoo3qqhui6w74ssytoc7omq", 378 + "common/pages/nav.js.br": "bafkreicuv6nnlvrgr4vid3oldnqb2h6szunfoc4csctghy2ufswozacdca", 379 + "common/pages/nav.js.map": "bafkreiedt2i73v36wumwfglgehf2rr3wxv75nwkrirrypy6kwvubzx5sr4", 380 + "common/pages/output.js": "bafkreigypmrc3zv2y4cfeqr5tfg4pum32hxcph2x5sllpptvzi4hjhre2m", 381 + "common/pages/output.js.br": "bafkreiaqd4oydw3cgyehoa4kxgwlploy4qkwxsy5udnnjn7gxboxccllna", 382 + "common/pages/output.js.map": "bafkreifp5xbfzgpim2jils77ps6lei7cpnsqz3zcxofoeqp3ryqxqwjbnu", 383 + "common/pages/ppr.js": "bafkreiapplgtbo3ypuhirwcmxydx5vlchx64q7tuon6at7utb325vjl6hy", 384 + "common/pages/ppr.js.br": "bafkreihjj3qj73lej6eqk2fktufhwix43zewf63yz4me2csr46pphvpxh4", 385 + "common/pages/ppr.js.map": "bafkreibycpd7qdc4ptqt7ycklddogiojg7d33ylo2wzupinu5ycdm5jgvu", 386 + "common/pages/version-upgrade.js": "bafkreidxlsjqi26jd42grpeu72ublnh3egk5bfntyl2aohzsep74g55wxu", 387 + "common/pages/version-upgrade.js.br": "bafkreiehlmco2j3dheplva2tg4dottsoymgwr32po7atcwh4irk6eyr2e4", 388 + "common/pages/version-upgrade.js.map": "bafkreic6susmpnzcqhhqvy65ya4gsqga2froj2gvc3ig33vp4vhx3lljxi", 389 + "common/playlist.js": "bafkreifmlacxn2sihxv5dng7md7d6na6nmfhbnz5mt2lycnnmyh7apnedi", 390 + "common/playlist.js.br": "bafkreic7cuybycoksw3fzri66z4hfqayabt3mkntc7pkqpi7ribzdqzeaq", 391 + "common/playlist.js.map": "bafkreia2jgicwv2ywl6zhioipklgx52fw3r6bn4kb67kq64uhw5one5d2y", 392 + "common/signal.js": "bafkreidkebuv2xfq6qyc2s4m7atfovbvr2wrmv2alt3c4wvtm5zkdmlkvu", 393 + "common/signal.js.br": "bafkreigq2casf4wzo2n5g2ytveajzm7zldwfwtky2cz6mvdztosmkcgqiq", 394 + "common/signal.js.map": "bafkreic7bubha5qokthfjgia7pz66k7k2cmopkp55vjbbtjbizsv3xal3i", 395 + "common/temporal.js": "bafkreiaffbshwrzthhoq6pvu3yxfip4s53m6kb4lpyklpnbrscbjvl5jde", 396 + "common/temporal.js.br": "bafkreibvih6i47lvbylsebiltfdhr2wv3ofwh6vjjdkyabvmtu2vscpkru", 397 + "common/temporal.js.map": "bafkreigvmohdhtpkyyp65uurrlw66xwflb4teh4lizoqomomfdzw7nv4eu", 398 + "common/track.js": "bafkreibz27zfdwcahhplbwjp2hcc6hbguas72p3qfptlo6jpsx3vitqk2i", 399 + "common/track.js.br": "bafkreiex5kgoi2mjxv2rrdorvoypwczx73mmf6wac6c7jx2gxcyao3gkbm", 400 + "common/track.js.map": "bafkreidrdauffts35yduaqqp5owernrkvbhvqmtryk3n4u4oorpdi6lztq", 401 + "common/utils.js": "bafkreie4bl4abuze6xn2dnj2geeiuv72la5oyhc5vuzn3k4lgypahvq2ny", 402 + "common/utils.js.br": "bafkreibcaclixhu4yttd6zvadm6ddqt5pfvazzp2s3jdvyjsdxd4cqmppa", 403 + "common/utils.js.map": "bafkreibbv5lcc6dct7o5kuy6mjphjux5mvefwo5n3jfcwvizr5ow7xnh44", 404 + "common/webawesome/detect-dark.js": "bafkreifugtnl3dfwvcyvywrdsmmi66eructgey5kdepntvfty6xauk2zaa", 405 + "common/webawesome/detect-dark.js.br": "bafkreid7amxmh6dhfushnlcd45vln4vo5gxy72i5swrrj4gzegvia4k5im", 406 + "common/webawesome/detect-dark.js.map": "bafkreigyvbrxextpbt4mhisse7nwm5lz7fusxjarfdg7xrjsquurtqdt2a", 407 + "common/webawesome/phosphor/bold.js": "bafkreiapizhubfy4mszntizlbrbgvytn4tr45ujlfh7cdljgqpnm2hwvca", 408 + "common/webawesome/phosphor/bold.js.br": "bafkreif44fgpjjtaccjnpbizvtb4qwb5iqhffundlzhe5nvyrlevsyfita", 409 + "common/webawesome/phosphor/bold.js.map": "bafkreigkfvaygzr7ljkqdlmgrs5cvz5fwgjiqqya2twgih7yyr3e5omhhq", 410 + "common/webawesome/phosphor/duotone.js": "bafkreifeadb26uzyiya265q44kgqmdv4s6r5pzoxbzvnti72qkt2taw2ga", 411 + "common/webawesome/phosphor/duotone.js.br": "bafkreihv5gldx5cpg44evjfhhj4bm5sj7z2yfpgt6lmwwkbixfwt5jmh7y", 412 + "common/webawesome/phosphor/duotone.js.map": "bafkreiaw7nraf6chxpq3c3q5n4or25y2wov2cuz3kn5kesz5o7w33q2wwu", 413 + "common/webawesome/phosphor/fill.js": "bafkreifsrg5e6574c3r2m3taumk4o5kw5bxws4oogw3ozxkyvncpm6gt6a", 414 + "common/webawesome/phosphor/fill.js.br": "bafkreih2v7ka4ljkwhggs2dqredckapim5aic4x2tbs3su2cs44km4erka", 415 + "common/webawesome/phosphor/fill.js.map": "bafkreiekfbmpm62soj6vwkg4ir7wdkszrpdkkxq5gl2t4wb5a6vbap5ayi", 416 + "common/webawesome/phosphor/light.js": "bafkreid6sdayt3jh4iga4p4tztgc6xdrzob7o7y6afe6a4vl44xpz7d53q", 417 + "common/webawesome/phosphor/light.js.br": "bafkreicxegdcmdlarsbb4ycvodv6br7bjz2ppaz3wekdd3umt6o5ibg3am", 418 + "common/webawesome/phosphor/light.js.map": "bafkreigx5lvxvhlf65exnvgr6nsjeoodn4dujj4hhhcbdubi5tkpyc3vfe", 419 + "common/webawesome/phosphor/regular.js": "bafkreiddnmdzvihootnemua6gj4j2mc5w6tj2tvci6yoln33kleiocqjt4", 420 + "common/webawesome/phosphor/regular.js.br": "bafkreibwmccoy44yukemmwqxnl5abbrlqngpgda6b42sklabng5s5pytye", 421 + "common/webawesome/phosphor/regular.js.map": "bafkreia2qctc7y4n7vgdg5vn33t6fxeqzhizt4uytmaubmez3bjgbbf7oy", 422 + "common/webawesome/phosphor/thin.js": "bafkreias6x43x2dn2p3vckp4gakjouwmmi2hgi4u4rcknakjh4rcjkjd2q", 423 + "common/webawesome/phosphor/thin.js.br": "bafkreibvcn6amunwm3ru2jfsyydkud7ijrsldch3dvkxwaes6wxa4zju6i", 424 + "common/webawesome/phosphor/thin.js.map": "bafkreievedd3phj2pof5q3d3qvzlussfmseal4etu7qsollvt6xri3d67a", 425 + "common/worker.js": "bafkreidudgxu2txuy3ds7ci64od7wnzb7insyodi6gynbffo6hfuneepra", 426 + "common/worker.js.br": "bafkreibjyvjw2anpcczoy6cwwz3jnbwv7rtstyscshea5twfvsy5rkwf7q", 427 + "common/worker.js.map": "bafkreib5qcrmbmhc2wslsk2pdorxbp3wcoemd5e57rmlmnl4o3r4pp3oyu", 428 + "common/worker/rpc-channel.js": "bafkreig7ir34wcbgnqmiinerljb3tnvwtklxyc3iy4vhwszrtrg77cyah4", 429 + "common/worker/rpc-channel.js.br": "bafkreih277jfl57p4jcxh23qp3auazbjy2fxpkl6qhonstjmseaifbi5zy", 430 + "common/worker/rpc-channel.js.map": "bafkreia262yz6qu7pon27vqt5vi7lsc3xz22lmxa6m5vkripw3wo56lgti", 431 + "components/configurator/input/element.js": "bafkreidfuzva7lmeztepxrsezfudrfxtolnwytdwsuzr5s6mkq7upzrpxi", 432 + "components/configurator/input/element.js.br": "bafkreie5tx66uhwdagh5wxejl6bmgqyt73qeilwpjay37e6hsn5hq2l53a", 433 + "components/configurator/input/element.js.map": "bafkreiahcq5xlnn36baou7yfdzj6fpd6la7hdonrehhjbsz4yprbg4yvxy", 434 + "components/configurator/input/worker.js": "bafkreictyuegpfrszgl56kyfq7tz5cvu4imhcmgogoycbffyxvbu6qhfx4", 435 + "components/configurator/input/worker.js.br": "bafkreifn4uie4jtzoaxqaxvgajhuh5hmrysq4oy2sfl3k4ihm2hv6lxdlq", 436 + "components/configurator/input/worker.js.map": "bafkreicrabv2ggh2oaf2qu5kyg4umwuwrdhy2x3we2vrsktfkdympe7r3i", 437 + "components/configurator/output/element.js": "bafkreibqb7nspbxp27fxvo7mssdkjo7ki3r3qplfgxhyasl5qmr3lkcetq", 438 + "components/configurator/output/element.js.br": "bafkreibwfng5eea77hx6vwzjafsunmpl4nw5luae43rubkmawf4c4qsd3e", 439 + "components/configurator/output/element.js.map": "bafkreibtsho7fxzrxnqmdwdmbrcejgzwi7zkprlnxoawjzoosvq5zudwmq", 440 + "components/configurator/scrobbles/element.js": "bafkreibotb3gxyf6vcubyeqh5mmck5ne3twfz7ncf7shit6qd7xx7twxpa", 441 + "components/configurator/scrobbles/element.js.br": "bafkreicdi4lsmekg3zrqeml23ha3f4mn3bnp6vzuakutkjsifsthrf6ve4", 442 + "components/configurator/scrobbles/element.js.map": "bafkreigmjqpqwom7u3so64vy7h4rywk534i4alnfn7kusz3si22qlkulhi", 443 + "components/engine/audio/element.js": "bafkreihphjhigirsy7uhhhiy7dsx7pccszykm3nt66qtgna2dlxn6aryga", 444 + "components/engine/audio/element.js.br": "bafkreiff3banihbkfrkzh4nspul6avfueby3x47nkpyxerkgoyhwmsq26y", 445 + "components/engine/audio/element.js.map": "bafkreigw3gefnqkvfa4eehzzum7yepbeybbnyazyrh4sancda6dymndkcu", 446 + "components/engine/queue/element.js": "bafkreiacvemoonbu2ofvefa5pfzejoo6dnhiv4kgjvlg4a72tiyn7tckdm", 447 + "components/engine/queue/element.js.br": "bafkreib6k7jrka4ebrlhxtmisrm4otc222czni5xpxsd2nmmweouuhwnta", 448 + "components/engine/queue/element.js.map": "bafkreifnqixwwnqrm52mxnfzgnlrayohbwhd3lphsvtqm2xuoq27ddt4xi", 449 + "components/engine/queue/worker.js": "bafkreiasr75a2pfhhadwqvvkcdemuulaikrkexpicfpil7tdkqex4vuxr4", 450 + "components/engine/queue/worker.js.br": "bafkreige7e2qnqu3eh52snikfuomxte57amti3ioxtfw2lcqlzcii6fqxq", 451 + "components/engine/queue/worker.js.map": "bafkreibthqf7mgixu5dp2hefa2tayuqta7hclzck7gifsp4tf3cb3pltx4", 452 + "components/engine/repeat-shuffle/element.js": "bafkreiervg5gl4lsfzkohzoseajouxyzwncm3swmihohdiecowgjamvvee", 453 + "components/engine/repeat-shuffle/element.js.br": "bafkreibknhaq5pmokj2rmzooe5qltru6yad6vkfhhcmro6ptuu6pxzjuna", 454 + "components/engine/repeat-shuffle/element.js.map": "bafkreianz3k7apkd2sixvmlm5onfw45mxnpfqj7uddhyc4x3e5xmjmeyw4", 455 + "components/engine/scope/element.js": "bafkreib5pf3t2k2fcfpfkzghk2rrc4yw3c4chsu4frj75ymd6fmvptjpsq", 456 + "components/engine/scope/element.js.br": "bafkreify6cyz2lttpm7npwgiluupibqc3kon4t2vcxi5a76u4pn24izrt4", 457 + "components/engine/scope/element.js.map": "bafkreifu3smsio2kzqk2jw57tvat5txue3hyzaigzeg54y3orsgi3cyyli", 458 + "components/input/common.js": "bafkreidnygyut6iaxn4evf7qpnlbc7ioxtxhufsc2ap36hwzszshsrl444", 459 + "components/input/common.js.br": "bafkreic35l2bv3lwwibktmardxvmupgrhhnxng7avw2d2q3gzlsly6fugm", 460 + "components/input/common.js.map": "bafkreihg7kl2brm7il4a4ex27pwoimasagoegbunobxxcvoe6bjnmvvc6u", 461 + "components/input/https/common.js": "bafkreibkqiwut2sppglmtowuvonbbyegnwld3rnjia7fzgfcpoztlnrhyu", 462 + "components/input/https/common.js.br": "bafkreibfu4rv7sbyqvcrdjeosl5plf3o3rhmf3vw4pqp7ernv2glltwcbi", 463 + "components/input/https/common.js.map": "bafkreietp46imv5sou2bpyoabyhbgfjq6gafkvrw3y73hqryyygftykfyu", 464 + "components/input/https/constants.js": "bafkreifeyu2qyg5e5rltckpjmk6uzgtfdgc747uy6rnfballvhmi7pow3i", 465 + "components/input/https/constants.js.br": "bafkreib7xukbpu5wflla4ifc77k727zyvakdy7w2gypefxsp5iiocp3cdm", 466 + "components/input/https/constants.js.map": "bafkreihjd3p5xyh4tczkqjn5bbuxhphyfcbxnktgouqimqhbjrw4xib52y", 467 + "components/input/https/element.js": "bafkreidpmjn2bwqzi6iexziq5zmhuawd4gy6vuumspunhwy2zlhyomwzim", 468 + "components/input/https/element.js.br": "bafkreib4q2scoblg7wtdn5lbm7nb4ffql2ae4oczs4worr3oxytj56rqnq", 469 + "components/input/https/element.js.map": "bafkreid4xjhvz3z65vph2fcnkqknzspwnq4qjscwzfidfrgf2plyabv77y", 470 + "components/input/https/worker.js": "bafkreiatyfvprojj5sl4y4wtjfnbnfp6msqizpx56lcky52x6btfjdpuda", 471 + "components/input/https/worker.js.br": "bafkreibf2uw5uczfalvmjssegbdimpnwng6jnz44xbt3vhnjpyfm6sd3me", 472 + "components/input/https/worker.js.map": "bafkreicab77khhjyb3swzgkgkvbijy5jkrfgxs5gq6n64jfmihnknkei2q", 473 + "components/input/icecast/common.js": "bafkreidb7owzerl4mfw2v4ffkudd6tycg5qlok4jlfvppxz3d5cm5fwy3y", 474 + "components/input/icecast/common.js.br": "bafkreiapzbt34o7lbqx74b54rxcxwt7zzxzcr6c3s2ozftalas5hkjnw2a", 475 + "components/input/icecast/common.js.map": "bafkreib6avkdpbp3q2k422dsxw5cyjgwky2ftqqfoqs3fxkrpydsnm7ak4", 476 + "components/input/icecast/constants.js": "bafkreihfestwgmebnxepzhgvif3h5cfinwxtcx7pbnpssiidxmiqosyf74", 477 + "components/input/icecast/constants.js.br": "bafkreicv7b33cpepor23em27l7br3zeocuov52hsho3xprfs6ansn5o3jm", 478 + "components/input/icecast/constants.js.map": "bafkreibmk5pnwzzkwtjryhfaq7cxvnflpad2sksgdrgrr5e2na2aluioja", 479 + "components/input/icecast/element.js": "bafkreifutwwonfcvbzkmnzqdyfqc4da5yq2w4fjnum7osnspcnoh2ginkq", 480 + "components/input/icecast/element.js.br": "bafkreifjhaggwvwp3g7xilppdp25whkamlra42wvmjy5vmr5vtje6aoqce", 481 + "components/input/icecast/element.js.map": "bafkreicqxnyfq5a24avlprsnojfad6pur76dcgw56cs3jtsdiuuz7qkemi", 482 + "components/input/icecast/worker.js": "bafkreifzxotdo7b2dp3zoybhn3rmo43w56g3wgytz674kbkmszzhjk2dgy", 483 + "components/input/icecast/worker.js.br": "bafkreiggslcqauaqis4fv2iucjjhcpgz52vhzaaotkqcfnkoo5ybxvjhva", 484 + "components/input/icecast/worker.js.map": "bafkreiafje7sbx576htrrh5uio5imjy4gvofpkryxo67g5vcsbjzdeetda", 485 + "components/input/local/common.js": "bafkreibb3hj4ounxniy2sh3crtdaohl5372qaypkibkyz7t52iblwe6yre", 486 + "components/input/local/common.js.br": "bafkreihdv6ha2tl3ayxynwu7wz33yu4gejhfpoe3ulnzb2xndpdisscc7u", 487 + "components/input/local/common.js.map": "bafkreifxdxfrfvayl3v4frvxby3cn5a544kp5vwhkgcd55nq4qr36bqjjq", 488 + "components/input/local/constants.js": "bafkreih6g4s6uolsquhq55jrhjoh6z3f72izb7xtkhhnxsqqtpgjlp4hju", 489 + "components/input/local/constants.js.br": "bafkreifg3l6jigzsqzqy6uc67ptafw2reu74eojnlp7y3iawdxeoxxg36u", 490 + "components/input/local/constants.js.map": "bafkreifwlm23oafc2sgpi52yv6tc4ihgy5o27rd56kpcwcyci5vetxycc4", 491 + "components/input/local/element.js": "bafkreiceiox4xmf577wviwrcvqwyvafdnxgt4ljiubbxmhtdypnoql6yz4", 492 + "components/input/local/element.js.br": "bafkreidys3rgwjb4w2gmvo6ghvteahmenuy2sa2x56mflnxrki4b5bwzpy", 493 + "components/input/local/element.js.map": "bafkreih4cm5l4wmtwt6s77pl6mrgasbwprmmunmiflemxjnvaabgsr4vea", 494 + "components/input/local/worker.js": "bafkreieu7piirsp2fsdey7234ivm73u2a3v35om2dpyiylqzt7grjxz4vq", 495 + "components/input/local/worker.js.br": "bafkreigogwrnlmvzs5v4quw4jq6x2scurrtizbybavdvvio73jassuysd4", 496 + "components/input/local/worker.js.map": "bafkreidgqgvm6k4todabyf3skmueggzjlhacvwdca56g5metqwzpgyajem", 497 + "components/input/opensubsonic/class.js": "bafkreibi7t6qzvo3xvk2dfrtcpnpjtxegc3gmznrhm5r7ohmhoupdbluq4", 498 + "components/input/opensubsonic/class.js.br": "bafkreihhsjmag6klrd6tfx72mwabousoimcpwn5wznozkzcydz7zc5amza", 499 + "components/input/opensubsonic/class.js.map": "bafkreiaz6vvpskpxuaq6ean4gtqj5qkkqazop6qqwabswrml52oj6fllme", 500 + "components/input/opensubsonic/common.js": "bafkreiclox6otroqde5av37j7qga2yvxcmlkqhm4bm6twylj57ggpzn3lm", 501 + "components/input/opensubsonic/common.js.br": "bafkreigyuyravrdibihh4ull4zjfjnd3vwmnadoc2mdjjohmej6dq7oawa", 502 + "components/input/opensubsonic/common.js.map": "bafkreid6jboi7m7mkkzhgr6rrlijni3xywaezszejlhayc7yfjtvqxqcia", 503 + "components/input/opensubsonic/constants.js": "bafkreie6pas556tm35i2dfgxp7vs3nlwkmksluqjoe5fc64qpml7znrlnu", 504 + "components/input/opensubsonic/constants.js.br": "bafkreibd2yjlvx7y2tz43i6uw4vy2dwwhqr3ntremkgu76uoyjmm64raze", 505 + "components/input/opensubsonic/constants.js.map": "bafkreih2nvoreon2xobqjfddnbzvnpk4lpms36tdbrualhn2r2diwsncxq", 506 + "components/input/opensubsonic/element.js": "bafkreieyq7b2x44wiuagoktu37znbjb4p43btedtxb6md3mpsbxqwwdeiy", 507 + "components/input/opensubsonic/element.js.br": "bafkreia3ltsypad3nibesqnb6qh563tsaqzyfisjdotpns5h2s6ygpuyri", 508 + "components/input/opensubsonic/element.js.map": "bafkreic2aiod7fvtegbasyhcif3lewsdgr6ie66sxcinflsrbgvs5xmr5y", 509 + "components/input/opensubsonic/worker.js": "bafkreih55c2kl6h2a4vcup7kyjrogb2fezkktudbmrtokxaxcxzzoxzp2a", 510 + "components/input/opensubsonic/worker.js.br": "bafkreifchr7hv253ymiiyp6bxhttnuwa6dhv6dogtd6f2i3gjvlkuoknoy", 511 + "components/input/opensubsonic/worker.js.map": "bafkreif3y2k2nhuob57t3zxdjtgt2pdzqjosnthlt4btga472swxlqljlm", 512 + "components/input/s3/common.js": "bafkreiaeyge7tbfvjunnnnyh4xer4fbuoik2xdxdja6abyt6g7afkle27y", 513 + "components/input/s3/common.js.br": "bafkreihjbd3gbpwxoar53lmukzo6r3l4o6t2hjibmjvuji3f7mbnnxza3q", 514 + "components/input/s3/common.js.map": "bafkreielyial67oo3wtbiu55mpszprrxfwyb7poy5mzjkqtmlxrlvnmhsq", 515 + "components/input/s3/constants.js": "bafkreigwune6nknv37zq3aqqlm2ukapddopc3jqhfxxf6veef4mopsrgsq", 516 + "components/input/s3/constants.js.br": "bafkreidzvsj6kwqqfwdh223tyja4uwjnlrfumqvcdrhvrfrpn6edxoeclu", 517 + "components/input/s3/constants.js.map": "bafkreifpy6fmie2cdiiuxht6b4x44l2oaxtltkwmarwoyljyp75epo4dxq", 518 + "components/input/s3/element.js": "bafkreihwja6zgv77bte7lhbqveo22pywu6juco66fad4j3xarp5t5qcu6q", 519 + "components/input/s3/element.js.br": "bafkreiginkyjjj5xdmymtw2rkjndfdaquuanjdd5xa3oufiqg7mpywy37e", 520 + "components/input/s3/element.js.map": "bafkreib4kgnwkgl6tos3o3j2wdeaofjecqcbzeasperx54fa7g7sormxny", 521 + "components/input/s3/worker.js": "bafkreie7ntvku3vhki2ftkdww3fnihi3j4oimefhktny3xd6qg6tzl6wt4", 522 + "components/input/s3/worker.js.br": "bafkreigbzx2z7d3whnfc4tzbh6nt7w6b37cmhsvyd27bj6prywdkoebq7q", 523 + "components/input/s3/worker.js.map": "bafkreiczejv55negknqljqdp6ehx2roautu6n5zr3nyikynhnbds4pqrny", 524 + "components/orchestrator/auto-queue/element.js": "bafkreifxobhyyr5ubnaihpu5zr64bfnm3ctblftteoemz6viqmvs67xzri", 525 + "components/orchestrator/auto-queue/element.js.br": "bafkreidg4ugumkazqonxizpltju3tynuxvhk3l2rmzz5dycjpsywmwkymq", 526 + "components/orchestrator/auto-queue/element.js.map": "bafkreievxd7ivni3x7k2ax5tb7ynr644csyzt67kkajkhwmviken6fiati", 527 + "components/orchestrator/favourites/common.js": "bafkreicswwynmxguyxq6ie72wbh65saeidymutipvhkumgtc55jda635ia", 528 + "components/orchestrator/favourites/common.js.br": "bafkreiclzy2tae7u46drzvx5pnu6nbnntudc2oemejvmvcyayxwbyjyssm", 529 + "components/orchestrator/favourites/common.js.map": "bafkreihqm5xtijojrq6oz4qx5evwytq5r7r2ug3mhewcfixgltqadmayem", 530 + "components/orchestrator/favourites/element.js": "bafkreiaqiouhhl3dqvgem3rrbr4k3qccgvmix3wmybe7bkcr7ywcmu7nfu", 531 + "components/orchestrator/favourites/element.js.br": "bafkreihhdcirthqxzwd5nhqzkrba5ho5vftraoh7unaauibwfxtjb3sfl4", 532 + "components/orchestrator/favourites/element.js.map": "bafkreieutudb2b2f55glrvjfia4fv2orjlvywlmiveemhcdh2gakvdyjau", 533 + "components/orchestrator/favourites/worker.js": "bafkreieodsatoeva7bs6svziojx5akwkmfiqroi7lxtlitas6nujr7rmki", 534 + "components/orchestrator/favourites/worker.js.br": "bafkreiemcipap2hfgh2ht4lnphfc6nbp72qftqgmzhtrtoyctjncapuhvy", 535 + "components/orchestrator/favourites/worker.js.map": "bafkreiat5pldygs5yfjziax4ezh65o3owj726esqxystdqsbgptezm2g4y", 536 + "components/orchestrator/media-session/element.js": "bafkreid3isof6mcgwxgz3n57vnep3777bo5nvwsd7qymi63zkq347o5abi", 537 + "components/orchestrator/media-session/element.js.br": "bafkreib7tutpeva7nogt6p2cj7yb4odfmfcz6o2e5xzweyoi52at7baafi", 538 + "components/orchestrator/media-session/element.js.map": "bafkreidwvqeusxtjib6o7pxtt33jojnjkmdvqw76ltdezbt6bze2oaab64", 539 + "components/orchestrator/offline/element.js": "bafkreie7mm76o7fynjzvj5aa3lwxeyc66p7rwmi53crckxl3ey5inrjhvy", 540 + "components/orchestrator/offline/element.js.br": "bafkreidihuwq2fx3a3yxx3wz4ywkqu54l3khsjaqodbiy6yvzvwupkzmre", 541 + "components/orchestrator/offline/element.js.map": "bafkreig7y6slxnqdr5hoief6vtau75zbmq3xvwutv5h7yfq3zmoq52q37e", 542 + "components/orchestrator/output/element.js": "bafkreicvl3rxqbywwigdy6seylb5l7pnaekhchuv72wwy6wzuidrenxnjq", 543 + "components/orchestrator/output/element.js.br": "bafkreidkmc2gier67tuitujk5jnqxm6ztedb2zzfb2ok24ze36avvad73u", 544 + "components/orchestrator/output/element.js.map": "bafkreid2447ohxg3pzamsnhjt4ieqs6i4max463kx55dmpxgr4qzk6k2jy", 545 + "components/orchestrator/path-collections/element.js": "bafkreigytlwcbqlvhuwbivnz6nzj2iz4x2jd6vud7ovtz2qvp2tu4mhwvi", 546 + "components/orchestrator/path-collections/element.js.br": "bafkreig3tfnzh2eiyfuahswmksstwfltvwvdsetpchmki2drltwhgadzua", 547 + "components/orchestrator/path-collections/element.js.map": "bafkreibkzpmiomu4hawjin253abgdn6oxfzpzy37qyxqh73jcwawwmjlxy", 548 + "components/orchestrator/process-tracks/element.js": "bafkreianna7x73af6tdhw5giope63f5m2drmqtkpj5ntoeuvmousaebjxe", 549 + "components/orchestrator/process-tracks/element.js.br": "bafkreicev2zbaglzy3xefyvephgcvi4e4cf2q7ouoshedxahaostyzzlie", 550 + "components/orchestrator/process-tracks/element.js.map": "bafkreic4essudz7hgk4mq5gijjvpsl7ldeq55yesq2ox6z6opngi74e5i4", 551 + "components/orchestrator/process-tracks/worker.js": "bafkreiggk76pjfgnmjzw7tvhlhuvq4kfggacmhfcncpqy2pch75ovdpb3m", 552 + "components/orchestrator/process-tracks/worker.js.br": "bafkreia5milcxa5nd4ao2recfgdnfbb2xlmvm3pmffeyops2r53erhjvwq", 553 + "components/orchestrator/process-tracks/worker.js.map": "bafkreifpglawl4z5umhelrgbzczszeqfpmkx3j3pn6xzvz3eitgmja4oum", 554 + "components/orchestrator/queue-audio/element.js": "bafkreienzdwcnxkx76yxed7vakts6b6scqddedrgixanuwfyzkf452w4oe", 555 + "components/orchestrator/queue-audio/element.js.br": "bafkreiaw7mamqrphozqlxwsbkuah4sznfmxqd6kxh6y4kz3qwccwwfh2x4", 556 + "components/orchestrator/queue-audio/element.js.map": "bafkreifqpjfopgoyugb7lwgkxhtsra3efjkk5sgsp4dkcrsogxh5kl5ywu", 557 + "components/orchestrator/scoped-tracks/element.js": "bafkreic6sgjlbfi423qeipfxrw4ucxzxtrrs7tdxrn5mqx375dw6bf2vce", 558 + "components/orchestrator/scoped-tracks/element.js.br": "bafkreif3tplozjkwubpjpvazq2tccbugftuxxwanbtmgx5zirjbai5lx4e", 559 + "components/orchestrator/scoped-tracks/element.js.map": "bafkreiaxaexvza33czhr2efo73tg22xakodpfceasdmr3evzmaiw65lhr4", 560 + "components/orchestrator/scrobble-audio/element.js": "bafkreiar6tfy5vq4rvxljh5u3urnxj3c3binvwi45lry3aaysll6abqu5u", 561 + "components/orchestrator/scrobble-audio/element.js.br": "bafkreihjrla4jclnsc6z4wu4xtqgpp7azzqigx24rkofrnn2ksdwnhotpq", 562 + "components/orchestrator/scrobble-audio/element.js.map": "bafkreiegc4ksmniot6c6zjovdka3fs6jmj4ewoheruktg5cjpnfit7lqqe", 563 + "components/orchestrator/sources/element.js": "bafkreiacdrwvwgipjrn4364jdpbd6iy6jsvd65z3q7btci5xycs2ssculu", 564 + "components/orchestrator/sources/element.js.br": "bafkreic6iufrd6cx6k5ih6erjm7qycf73rnhiah77dtjsoxjeompizrbgm", 565 + "components/orchestrator/sources/element.js.map": "bafkreicnorb55ft2rujwvznkzuuww2yoap5jgr7aow7dc2llefwuh2tleu", 566 + "components/output/bytes/s3/constants.js": "bafkreieu2lwpxrocyqqsbkbnzh75tmtipxm2kdyxucte5n6glsa43dabam", 567 + "components/output/bytes/s3/constants.js.br": "bafkreia2kmqmqe52sy5kbsswbtewfxmzazjqwj7lyx74c3eprom7njd3hi", 568 + "components/output/bytes/s3/constants.js.map": "bafkreigsia7gnntajsx3i22abp3a5eqm63tu4emlzibqwnn2jnrjkeoqv4", 569 + "components/output/bytes/s3/element.js": "bafkreiddja74cwdgx2qxocnqvnqkwaikmywyvvuj2mdyggqhqxgesicge4", 570 + "components/output/bytes/s3/element.js.br": "bafkreicollljhp6fjaf5fo4t5ta6dqzogob5bh6qlifyfbqbty5wiyio7a", 571 + "components/output/bytes/s3/element.js.map": "bafkreiclnsocmqxe4u5zx54boyn5k4fyvrmkpmftljv7tlnvtyijaf77yi", 572 + "components/output/bytes/s3/worker.js": "bafkreieuj7lspjzwimhod4d3nn3ivasklbllsdbk47rkn4fdpfp2y6dpny", 573 + "components/output/bytes/s3/worker.js.br": "bafkreiehx2ysq53n5nvezafxnsxwlkpschthe4xct44qbet4ess5ni47ai", 574 + "components/output/bytes/s3/worker.js.map": "bafkreib7sdgrmdjfy4ircmcpbelt7cwgrmkv6vmh54urx3ihi6zf5aotai", 575 + "components/output/common.js": "bafkreieiegr5kyqxfp2gtadobtluazq5hkqj7qctiipidmz624lmehska4", 576 + "components/output/common.js.br": "bafkreibr6cjlsvmrbahfoh2rvzphqbsu7nghe37bzj3fkg4yeviy6dljve", 577 + "components/output/common.js.map": "bafkreiaaolo3kyzc4adwqoegklzglbd6xnshmcnmq3sqwoxnlksxmnlmki", 578 + "components/output/polymorphic/indexed-db/constants.js": "bafkreibwq45ydsirpbp747maflknq3dx5mtoe76q5tttbuiboxc2izfmdy", 579 + "components/output/polymorphic/indexed-db/constants.js.br": "bafkreiaem5occ6wetpxrft6idlkbcyaiw5nyp2mh2de4izz4hhrje4y5wy", 580 + "components/output/polymorphic/indexed-db/constants.js.map": "bafkreig6g45tfsxwgch7phosjxvuoh55bfgtrjmg4epxtekpopc5i7orp4", 581 + "components/output/polymorphic/indexed-db/element.js": "bafkreiapelvpmmxdzt7dcnff6lqdlltuqko54ybxdsynesqvwtfsbiqade", 582 + "components/output/polymorphic/indexed-db/element.js.br": "bafkreidlda55bwr5bfcqnepmqcjrcjvthbngze3f4p4s3ybknrmimhuncq", 583 + "components/output/polymorphic/indexed-db/element.js.map": "bafkreicu2alw3nb4dmzsy2262va6bw5z4g6pukkn5fwfwlcgt3b2dflpca", 584 + "components/output/raw/atproto/element.js": "bafkreidvkysulxblobisi57blnoipbv2rkbq6mszf3m4f3ehz5j7hsvgkq", 585 + "components/output/raw/atproto/element.js.br": "bafkreiclquhofuenihanohcc74zwcet5rys7g6j4yj3ln6y74jbkvlwc6i", 586 + "components/output/raw/atproto/element.js.map": "bafkreiehjv6ueluzghpn4jlrqsjzesw3m7zwpthjevgskglk5pmdltkkja", 587 + "components/output/raw/atproto/oauth.js": "bafkreicmlfrtsh7sfyaf45jidcmqthydpedmutcmtwbxqaoiclancmihxi", 588 + "components/output/raw/atproto/oauth.js.br": "bafkreig5ekwn677awgppim67telsgxi4onib64pltenwy6fkd5paisie2i", 589 + "components/output/raw/atproto/oauth.js.map": "bafkreidibid7fyo2qs22yps4eaut6kukxo35earvyk4pxkulqrohc4ok54", 590 + "components/processor/artwork/constants.js": "bafkreihgeqc5q3mrer7bkgqiz4ap37wbh7fxfnd7kwvihbxo7mfzpafr2e", 591 + "components/processor/artwork/constants.js.br": "bafkreibvqd6xkiucrciuimmhzj7tobyqtd6rir2tfuxvwwrif2ui4vjrau", 592 + "components/processor/artwork/constants.js.map": "bafkreidwid52fxx7ksdlbh4gvfux4zml7oxstlkpcjutudsphhex742uae", 593 + "components/processor/artwork/element.js": "bafkreibjuawkrb4f3gje3knusdnruiumootslumh6zszv6v64gfswrpnlu", 594 + "components/processor/artwork/element.js.br": "bafkreidbnwsd74xt4ruqylnwog75gszcvayqsfwbwwae7hhp5unvdce6ku", 595 + "components/processor/artwork/element.js.map": "bafkreifqlx7fr3oiis4dnywsd6bss7lfnbhenggwbo7dyr6fiqdfnn52i4", 596 + "components/processor/artwork/worker.js": "bafkreia4nxn54fr54ssi3ghfkezdnvc7zrpz2xv5j2u5jcngsjo4crlbsu", 597 + "components/processor/artwork/worker.js.br": "bafkreidmpxag3xaqwyc74fctfe4yv2fyvlgzq2gumidsswvixzakwfakfm", 598 + "components/processor/artwork/worker.js.map": "bafkreifrjnshzwkv4okuphubgfzlzo4kctarpcq6qee7gl7xrpqyj6wzhq", 599 + "components/processor/metadata/common.js": "bafkreig5usal3ese3x5o4qr3tk3pu5d22ax5h3xqx6xvyqax2v2pky5hui", 600 + "components/processor/metadata/common.js.br": "bafkreifjd6vmea55wmb22ymzi46vu4t7jixygb3mvgz3ryfwrf7o65fjeq", 601 + "components/processor/metadata/common.js.map": "bafkreihrvmyar66rrxpfj5nbzaejs3irbw5gj2fr3tdh6g5sqzrhhtztqe", 602 + "components/processor/metadata/element.js": "bafkreid3dg7hhrjnr5vdoislfmkrp4fcqzw32le4qkqefaguvphvfbqvny", 603 + "components/processor/metadata/element.js.br": "bafkreigx5ntyico7zbou4jb4ptufvq46iyb6ch5lmvdbamfemcjw72qszu", 604 + "components/processor/metadata/element.js.map": "bafkreib3mpjyshzucrz2av6lu4cp4qbo237roelly37xroqywm6h2n35hi", 605 + "components/processor/metadata/worker.js": "bafkreig4plnkhl6jasqjyivjhym3226ef4bvisfmhcrsqius4ge4fxubby", 606 + "components/processor/metadata/worker.js.br": "bafkreibb7lqibi4cjfm53ng7u2oqfv6sjqxkxkko37ghoqa7xetq6qtzma", 607 + "components/processor/metadata/worker.js.map": "bafkreiah6hyaxhnfnunbylf4zqubvdbczb2nw735umr3njdjt55cmrlhpe", 608 + "components/processor/search/constants.js": "bafkreihbgxqtjyl5rxdyrtlpyftdnt5fdi7gy7xcleiolhealokp2fulcq", 609 + "components/processor/search/constants.js.br": "bafkreiarhcwqty32nhgncqj4b2czoc2hioukqrx4hseweqd2v2tuxf5yrq", 610 + "components/processor/search/constants.js.map": "bafkreiaqiilrazg52p7zv326w6mlotafslqtakfqciaez2o2xpqcp3raia", 611 + "components/processor/search/element.js": "bafkreih5v2yarydpmzipqmbehmf6n7sy2645f7xy4pncq5gaw7scqeabgu", 612 + "components/processor/search/element.js.br": "bafkreightorv7yalwxfvnczdub4hisrofng6xko2e4runx7q754b54vwai", 613 + "components/processor/search/element.js.map": "bafkreibmk6wafj3iba7s3g35on6k7pnn46e6eshwytbfb5nqv3maznsqca", 614 + "components/processor/search/worker.js": "bafkreie4gqqgxszvviy6o3k5dlunpoaeykilxzdnuj2mkern6d5o6h533a", 615 + "components/processor/search/worker.js.br": "bafkreianuj3dounppbf74amkhsvh33rc3j7mw7v22jzq657b2ssxnsswji", 616 + "components/processor/search/worker.js.map": "bafkreie2cfgepfxqnjgzmfesq7lesbsao2v7ki7qw4xyixbcrzpruqzcyi", 617 + "components/supplement/last.fm/element.js": "bafkreicsqj4ffrt5wj3skvpl2g7uaklf4puz2a6feiuu3tlfsktuybifcu", 618 + "components/supplement/last.fm/element.js.br": "bafkreifo3ptgqlloq63snmfz4yagp4ilgarljhqycuegbt4xo7ptg3xyba", 619 + "components/supplement/last.fm/element.js.map": "bafkreie4oqrjppod6zcuuqkdk2eaed3apey7apu6qvaetjjhsdxemtnxmm", 620 + "components/transformer/output/base.js": "bafkreiaimiij5w7fgdcbv2rysvygnmajlr4bdcssrmrfcdnbdmcnlcalgi", 621 + "components/transformer/output/base.js.br": "bafkreiajzg7hjyubojcknrjzbgbu6ppsjxgkxxlpvsanzbbcbdstg3usbu", 622 + "components/transformer/output/base.js.map": "bafkreievqmfe74rkyzemlzjzm3nbmefmbyrzubmvpjrhwalyepqb72lcyy", 623 + "components/transformer/output/bytes/automerge/constants.js": "bafkreie5m3tnkuq6hn2ttizdxw2ub6gu4zjsazyz2oq4pcqkxca2q4tm4e", 624 + "components/transformer/output/bytes/automerge/constants.js.br": "bafkreiew5rpz3hxftrt3xutz22zcvgnexaybtaxpwd5btv5cvtgsmhx2qe", 625 + "components/transformer/output/bytes/automerge/constants.js.map": "bafkreiegiqzdnf3hxvbn23ypr37w33d65dh6idg4qrhs6zutckilsri6oq", 626 + "components/transformer/output/bytes/automerge/element.js": "bafkreih74zydxarftgrez3bjowufkwpgnzrpmmeumul7ouibf2vfpw6rby", 627 + "components/transformer/output/bytes/automerge/element.js.br": "bafkreiear6apgb356s2j5ozr2nsplf4sm6glpmyxjcak7oaizuchf6qnv4", 628 + "components/transformer/output/bytes/automerge/element.js.map": "bafkreich57jvzsyocmwhec3dixpxyylgv2qfgv5fp5qmvfmyzow2ja2xsu", 629 + "components/transformer/output/bytes/automerge/utils.js": "bafkreid2tmhm43rqexbtpenvbak2eg3agqclyo2uu6k2rjoxkerc4doc4a", 630 + "components/transformer/output/bytes/automerge/utils.js.br": "bafkreid76q77zmkkt5emvjzo3sr3rlrgmmllr7h7vh4w4tfkqle2gzmjfq", 631 + "components/transformer/output/bytes/automerge/utils.js.map": "bafkreidqmvytmw3jong6chkry4rnfsrq57sx623zcpw65cxpszworm6npm", 632 + "components/transformer/output/bytes/dasl-sync/constants.js": "bafkreialbheq6vtjld4fireh5xhupsofcsslekinvvwlgq2wv6qht4u7nm", 633 + "components/transformer/output/bytes/dasl-sync/constants.js.br": "bafkreigrrpmasmldjxvzelankg6fjp4uckyrxzlixulo3xa53crtj4shhq", 634 + "components/transformer/output/bytes/dasl-sync/constants.js.map": "bafkreidzjxngu2kbeiozl6u2a5kuessqkwicfz27pffinx5c4jabkd5usy", 635 + "components/transformer/output/bytes/dasl-sync/element.js": "bafkreicidkrodmkbsalw4pciugomwmqeaktdx4ppojqld4ckqkxg5anqva", 636 + "components/transformer/output/bytes/dasl-sync/element.js.br": "bafkreibdrlds4oa3u74w7lsk3ereqgq7dmr7gtzefoex5pozqiyqrzptz4", 637 + "components/transformer/output/bytes/dasl-sync/element.js.map": "bafkreide7xeaanrsenazdng4yi5csubhhvkqi7lg6z6nxawip2fmpbcc3a", 638 + "components/transformer/output/bytes/json/element.js": "bafkreihvxfjyltt2iywirlwqpm5c7j53glsgidtyhdnz2e3a65p2gu3e34", 639 + "components/transformer/output/bytes/json/element.js.br": "bafkreihjpjrknbmyqt3mg7466bctekul7wpt26x5uq7do3vxchvukv64lm", 640 + "components/transformer/output/bytes/json/element.js.map": "bafkreibfkgscuoqgpvtiuhujhjf26nhxxxhhcj4nvdnpe7vpswjv3wahwu", 641 + "components/transformer/output/raw/atproto-sync/element.js": "bafkreif4zy3roow5ge37rlc5e7ihusndjssj76e6i423ennzjbq2b7mpbm", 642 + "components/transformer/output/raw/atproto-sync/element.js.br": "bafkreic3kejpvjfcqv3h6p56pbbbp4h3pjgceeelxudiyvk7uqfmucqy6i", 643 + "components/transformer/output/raw/atproto-sync/element.js.map": "bafkreicmxld6iejngj7fv3np5xaiyyjsrallorttafkvaxf7sdsa7gfxzq", 644 + "components/transformer/output/refiner/default/element.js": "bafkreicl2u7dbkyaxj6ljosactulayvcnuvvj2qy2fsyb5fdbxmfha5abi", 645 + "components/transformer/output/refiner/default/element.js.br": "bafkreictmc4lc4jul7gofkmw6kznplalftbwtp3lhfiru3bv4yjegijyma", 646 + "components/transformer/output/refiner/default/element.js.map": "bafkreighh2t5actrn43c72uyraj5sk2y5wwwf7ne43xsui7ipqzah5frcq", 647 + "components/transformer/output/refiner/initial-contents/element.js": "bafkreieqi4p5jq273zo2l4nhlvscl2elkvoxbjofyzv4q3weohi3fhauhe", 648 + "components/transformer/output/refiner/initial-contents/element.js.br": "bafkreih6omvnb76puqgbj46y4fnt3oxcpn6kztybb4tq6nbat4zh3urixe", 649 + "components/transformer/output/refiner/initial-contents/element.js.map": "bafkreifjvuax5rt4bwa6kgqpkv7fumsqy6xlsqeyif3ll35npiz5kfpcgu", 650 + "components/transformer/output/refiner/track-uri-passkey/element.js": "bafkreig5qgqoxp2j7jd2xhgtun6fhvltd5zh5qhke52f5c54p77i6dbxvm", 651 + "components/transformer/output/refiner/track-uri-passkey/element.js.br": "bafkreibnpdcpdwwyv6d6673pokgcklczn4zycadmqnuvys6nyjqhnssevu", 652 + "components/transformer/output/refiner/track-uri-passkey/element.js.map": "bafkreigk5pe6irdygagea7vzjg2rjplpm3e7a4oe54rwzppb63rgwhwwau", 653 + "components/transformer/output/refiner/track-uri-passkey/passkey.js": "bafkreieunxipbg3qualuew4cbzhmxjgcyi6dlji3iknedaqgfux75i4etm", 654 + "components/transformer/output/refiner/track-uri-passkey/passkey.js.br": "bafkreiextnpg6jxjyhg4bop7y6crfnvi7kw3fiyciwdca2wy37g4kmwlzy", 655 + "components/transformer/output/refiner/track-uri-passkey/passkey.js.map": "bafkreiguicxtfrmpnkgxomjqqfvhhsgaepz26ehd3e7x5vg2b7mwyegts4", 656 + "components/transformer/output/string/json/element.js": "bafkreido25drppe2valplfeyfwak6z2ioiisaamvf6vrmhehy24dk3ecki", 657 + "components/transformer/output/string/json/element.js.br": "bafkreiabyq2isvopi722bzvu2j3b2nenhgyc5j4ebfflenwyupilizr3ke", 658 + "components/transformer/output/string/json/element.js.map": "bafkreiglm2gjazyj3pnn4fry245ol2uboosco6lc4xsomlwlfcgevl6nau", 659 + "dashboard/index.html": "bafkreih644amja3xfrxb7uq3v7iktfeinog5jhdbmtb2uyp2cz4a526z4a", 660 + "dashboard/index.html.br": "bafkreifsoc626sgurudfydukjrze4jzj4jj5ez7cp4j7neia5kvlgsq2ba", 661 + "data/index.html": "bafkreigj6c3cpp5njr3olnj4o273luqox6rxh7mhyllopwx7w27iz6ebum", 662 + "data/index.html.br": "bafkreihgct7k6mn6dgzanf2d2lkwzokeh3cg5hcnpo2nwtmd5c466uvpfq", 663 + "definitions/index.ts": "bafkreihslezyiflrzu3s2pykfsnsuhcbtzwnrgdvsv7lyehx53ul65ku74", 664 + "definitions/output/collaboration.json": "bafkreid7vyrj2vy7tkze2pom3qowy33ocbnoex2glk4oazu3juhoeagyae", 665 + "definitions/output/collaboration.json.br": "bafkreiaarrld3ppmwthkfeh32744ua2gvm2fgszynde57s3edvipdehize", 666 + "definitions/output/facet.json": "bafkreibilpeatfx75iec37ucirxb5fwglgcelusp7q4qkaaibspr4vij2i", 667 + "definitions/output/facet.json.br": "bafkreighxh7qty6okqqlqlqkxib5nd7yvgi3su4qzdou75tqi2zuftsvme", 668 + "definitions/output/playlistItem.json": "bafkreiapvfdw7dj5lnshjzu4l2e56mdsqrugqndlixssgxv5n3v273mg7y", 669 + "definitions/output/playlistItem.json.br": "bafkreiepdeno5uzrtvk2wkhtgjrb64oiuoahbfgsqjscd54c3i2tcmughi", 670 + "definitions/output/playlistItemBundle.json": "bafkreifhvypkyasahypxelh2pdb3pdajdm5o5mnwlxwjvu7oruqaqaubci", 671 + "definitions/output/playlistItemBundle.json.br": "bafkreihu4v5u5f6ujpxq7o4zeslf2gwku4zbshvf22g7iiisiuctlpyxfu", 672 + "definitions/output/track.json": "bafkreigih3t4au2xio7vvk3gxgq5fw7ai2luhkjzwjbtz5tigthybxzfhy", 673 + "definitions/output/track.json.br": "bafkreia2w3635dpihg3n3aaoog4tlu7x3im2pwek44nzdebuvo2moihnza", 674 + "definitions/output/trackBundle.json": "bafkreighiul5vbv5xfomwtq3ectjwqxfwmtdm7txbmwrnmkxj4ajsxuv2y", 675 + "definitions/output/trackBundle.json.br": "bafkreiboiakvrfwbs4yuwtgpipoybl7d3zoibkci5p5b62pcm43szl7fy4", 676 + "dist-WH3NPUSC.js": "bafkreiae6jmpfxnjnpu22ygtbpewlgthgbltdfwr6zta2ngfbfple7wnqq", 677 + "dist-WH3NPUSC.js.br": "bafkreiac3twqxjfgldcuyzeajuoccsuipr34in3paragml56aubazdmfty", 678 + "dist-WH3NPUSC.js.map": "bafkreicod6km44qj5q5bikxj65fiqe5s2r7zfe7rc26gqq2nr2ktkvsilm", 679 + "elements/index.html": "bafkreigv2ppxk3xs6go5hyyc4lsjbyzpwjikmyrxyuts7rpp5gu27wip34", 680 + "elements/index.html.br": "bafkreib62ta62lvvgllj57dodvk7apohi5vq42yjysz5rfspifentwyisa", 681 + "facets/connect/atproto/index.html": "bafkreiff6lh5wk4ckiidawf534mblbtjorfcgg47ykcr4kslln3ejy645u", 682 + "facets/connect/atproto/index.html.br": "bafkreigsv7lbmarohzopkmpyizkg6efgfm3ai3nbleyssp2z2ovwjo2t3y", 683 + "facets/connect/common.css": "bafkreibv4vb4bff66dw3ebxeogj45d46jlrols6p5zyotshdv4kokfyzku", 684 + "facets/connect/common.css.br": "bafkreibnh5fvlb3v6p7j7cfekzo6jdo7vkgotuctnool55bqxgyyplkry4", 685 + "facets/connect/common.css.map": "bafkreiexu3iezex3u7sks47ki5zgh75fkf3ht6a7qmjlys43aak3nlzmlu", 686 + "facets/connect/common.js": "bafkreihuzxyg7v2tc4bab33tgrsx7nowr2lw3hjlnnlo2xsvpbmkn4266u", 687 + "facets/connect/common.js.br": "bafkreihq5jegaxwyjb5sdw3x752fcm7z75c6imcgc3qtcxo7guosdlctx4", 688 + "facets/connect/common.js.map": "bafkreiapikmtg6hwqjro55hmvjcihn3o544tc3pxtaldv4r2nk6s7vwtqy", 689 + "facets/connect/https/index.html": "bafkreidcmcmxvfhwakaooibtea6sy5rz5cjmp6u6jnbtmnrgvkd7vqauma", 690 + "facets/connect/https/index.html.br": "bafkreifeagdboiczot46xk35j3cp3n73xemqihjr67xqjwctvwhbvirhsq", 691 + "facets/connect/icecast/index.html": "bafkreiaot6jfdurqug6rs3c3hot3b6bjmsrzrdcorahsvllcfg33dkf3h4", 692 + "facets/connect/icecast/index.html.br": "bafkreifrfgo47bfw4cjetx24gyqjgdwhnazuisftq2srukwaqaw65wwk5y", 693 + "facets/connect/index.html": "bafkreibuuk4k7auud3c3ko247ly3eceb7xpnt2jsuw3c62fh4enwhsxq6m", 694 + "facets/connect/index.html.br": "bafkreibgu262w3w32u5g2rwe6zwcz7jbs4hmodvncjwsuruzx7pmeywwpi", 695 + "facets/connect/local/index.html": "bafkreidp2tgvhkmus2oknwtwf2vodgueq2asqqajb7wjlk4x6ssk5mhb5i", 696 + "facets/connect/local/index.html.br": "bafkreidhdy66xus5tdvae3yibjkkteihaz6wbzbhymjum2vns3mbtixm6y", 697 + "facets/connect/opensubsonic/index.html": "bafkreidqc5oxbjwekwcknvesrf6rzuekicsc3cv6lmtigfypzy7mg6m7cy", 698 + "facets/connect/opensubsonic/index.html.br": "bafkreigyecqeo4bucoxjs6ate7z76or2padskazatw7d37wethmfr342ye", 699 + "facets/connect/s3/index.html": "bafkreiahw4bntcsmgctv5enezrt2bahqg4j5lku4wy7rxplryjbgb4o6ma", 700 + "facets/connect/s3/index.html.br": "bafkreicjgna3blv6ukwxaxo6n3cyp6z4yl4bh2k7xmicn6wwe72najwv2a", 701 + "facets/data/cache-tracks/index.html": "bafkreigule7bb3qkp44raeo76zuajz7kznqj73bxnfoqsdrfsaslzmlwgy", 702 + "facets/data/cache-tracks/index.html.br": "bafkreidxiotexfoeqs6r4yn374pfvmiispyxep4jogb65vhtxsuiwb5cvq", 703 + "facets/data/export-import/index.html": "bafkreiaotyflh4dvjmiwztda2w4nm7wifniwyoatbaryexzrynvu34w6b4", 704 + "facets/data/export-import/index.html.br": "bafkreiffzuwhsnhcxlvmt6prczyajq5y2m7xiy6jqudswvalh7n2auvlsa", 705 + "facets/data/input-bundle/index.html": "bafkreifkcfd42nwhq2azwhjvo6qx5i3wsygohm3hix5fu3rtapqc6qcxhu", 706 + "facets/data/input-bundle/index.html.br": "bafkreian5kvj5z6ayegawa4tzb2yzt4syjgjns7h3ncncfkjmuqw5yl4bi", 707 + "facets/data/output-bundle/index.html": "bafkreidwdeskrrwukplpboyg4kbebgcurzwhxnq4hlebcq6hfl4uy5zb5m", 708 + "facets/data/output-bundle/index.html.br": "bafkreigbfbzaylng4fi7io4t2jtcsmrxuyexhne4juma7o2vvcefoo2zi4", 709 + "facets/data/process-tracks/index.html": "bafkreih4pamo6ufrxmzqkvfof4rju24dcz6ujxletwniaejb4m7xbzhunm", 710 + "facets/data/process-tracks/index.html.br": "bafkreibgwyt6yfauszo3a3kc7h7pzvrbvdympccivbxvdjl3qldiqwzel4", 711 + "facets/data/process-tracks/prelude/index.html": "bafkreicpjbucjeze4y6ouzavk6qo3gsj63fccs4cmgvumq54qpmuup5rxa", 712 + "facets/data/process-tracks/prelude/index.html.br": "bafkreih2qlwwkv6opl3nlq5de6ntzqcbs77ra7g7yormdaajf25jd5huk4", 713 + "facets/data/v3-import/index.html": "bafkreicksja3fb6yqsws5aoz2nhj4elzjysax67q3kf3clfba2axaoqsp4", 714 + "facets/data/v3-import/index.html.br": "bafkreidktljqm5f7sd6fcfenvpshpydh7ub5swb7g33b5icooq7iuywbny", 715 + "facets/examples/generate-playlist/index.html": "bafkreiddk4e7rjaj6tskesxm3qxibtsltbmhfk4nsumvr2nee6v74owz4i", 716 + "facets/examples/generate-playlist/index.html.br": "bafkreidxvujduywkl56nungxwefesb33iqvs67nistzkx3nyjw5ycb5umu", 717 + "facets/examples/now-playing/index.html": "bafkreicmc44wqn3v5bx3woeugg4v5q4nsj5yf4qgrgowf5mpk256icmpce", 718 + "facets/examples/now-playing/index.html.br": "bafkreidcigzmoxahxeczx4s42wcaqwqogq7drezaes2ackp44b3whmetfa", 719 + "facets/index.js": "bafkreiapg53blr4t4e7v76b7znyvml2ydkqzz3vksynun4kg2g4lsykli4", 720 + "facets/index.js.br": "bafkreih2jqwspmuqgvjbx65lg2h5wuhtuv6nvo6x7zutfoc54ijhgw6ewi", 721 + "facets/index.js.map": "bafkreigtkxfenssk2gwjcoqxonk23s5ku5x3inb6gw6fwceg5onoxhggxm", 722 + "facets/misc/scrobble/index.html": "bafkreifbumg5uqeikg43cglr4e4e5g4aqhwtpo34eaxjzgizwlalcdjzsi", 723 + "facets/misc/scrobble/index.html.br": "bafkreibo2ddosgpbppw62laxuujzmwgyx6gauhpyh5swab3s5fzii2xsea", 724 + "facets/misc/scrobble/last.fm/index.html": "bafkreiacepue47hzngzd4pcupczrjzlrmoezowlpzbbn4ek2vrckhfrqvm", 725 + "facets/misc/scrobble/last.fm/index.html.br": "bafkreieqheqln55mbanlyzxgblwuyz2w6i52hefyn2iku5atngsdgdsu54", 726 + "facets/misc/split-view/index.html": "bafkreibmkt5gg2dmutnzbwvvvh77ohyl4dm2lcoorpfs6w4nb7vxlnytqy", 727 + "facets/misc/split-view/index.html.br": "bafkreify2ssaqd3p3wg7wxch6ri4e25ufx6hubrkuoxenfvlxi5sqv6hbq", 728 + "facets/playback/auto-queue/index.html": "bafkreifiqjg26brtbqgfs3x4kwwvla6zpwhmi5bpnwq6zgvvnwsamxmzia", 729 + "facets/playback/auto-queue/index.html.br": "bafkreietlhntk6r4fbrsgzwcrahkxbhimcec2nd2godu3ckqq4yrku7dau", 730 + "facets/playback/auto-queue/prelude/index.html": "bafkreiha6viqer72sl74tab755vxt4clv5pgtmi46jdlentjnc2phr45gy", 731 + "facets/playback/auto-queue/prelude/index.html.br": "bafkreif7tuphzspimri4rqxeynswimogsuoxfbux7kk5lcn47drceb6wt4", 732 + "favicon-16x16.png": "bafkreic36pkur3pew3l3x3yru3ej56fwsiovuqcs7olbudpncb3e65zqpe", 733 + "favicon-32x32.png": "bafkreiakmz2yxpqtltflmxneuv7ennfp54p4in45wwlz7wnhehzsoctj6m", 734 + "favicon.ico": "bafkreigxs6ytelm2gvy35mdctwpns7krudxp5bdynplfvcffhfpnblqhwa", 735 + "featured/index.html": "bafkreienhu4zxe3jpruri35zgzfpvuri76t42ntubolp6plbcx2tb6qcyy", 736 + "featured/index.html.br": "bafkreibnzkzodmnri5v3wxnvhfwvt4i35z2y2fs53nqopt2d66v4jlxahy", 737 + "file-tree.json": "bafkreigkhuldxkyfkoaye4rgcqcwr45667vkygd45plwq6hawy7j4rbdky", 738 + "file-tree.json.br": "bafkreigkzfhkx3hnezjj4vfuduvq3leqcm623x5al7ku7pakx6ss2sqkva", 739 + "fonts/98.css/ms_sans_serif.woff2": "bafkreiarwwtivs3lsz6r7ks2h5megibi5he4vwrxzb3y3homoqk5zjz2gi", 740 + "fonts/98.css/ms_sans_serif_bold.woff2": "bafkreic7h66fpeftcx6blc3usb4op7i5otq7tndd623sm3azbdfyfjcqvy", 741 + "fonts/CommitMonoVariable.woff2": "bafkreihtilfgypzfs7tmb7gyjm7t5vsnhts33nwqv4m5degwiwsvrmopfe", 742 + "fonts/InterVariable-Italic.woff2": "bafkreihfmt3ffelnw3atsvyp564vestxytki6mgjfeun5hnrtnvvy6rgfi", 743 + "fonts/InterVariable.woff2": "bafkreidjhn35j4zo5g4l7smvlcnv7lk6tgw7fazhhbtb6vac7glyikni4m", 744 + "guide/index.html": "bafkreictzvk72jhzx7shkgzchdkfxvnst7xqdwxovcijdi4gpmy4i6dwvq", 745 + "guide/index.html.br": "bafkreifyahfj57sjcy35zhomjfcapf3dw4brlhrb57kjyfkgvcyh4xmqoe", 746 + "images/background/1.jpg": "bafkreigbexdkbyibmizyrjfebapjbm6cjv4rg7cyh6fp6jbopxrxjp5ti4", 747 + "images/background/10.jpg": "bafkreigytwt4zxu7fs2gx54vg53bquylaui5qpwm7rfhem4sxxj3d4wcua", 748 + "images/background/11.jpg": "bafkreibcyuqtbblimw2wkjqzom5odr2ysfpy6bunfppavxk56up3lkjfsm", 749 + "images/background/12.jpg": "bafkreicmxaekbqptple4f7louqdas3zeuofquiudst67yo5262s63ss6lu", 750 + "images/background/13.jpg": "bafkreic5dx2fydehtpjpufoaasypkamipdjnods2w5zzyxsiconcp5hch4", 751 + "images/background/14.jpg": "bafkreiditfiu2bw63kfojntmurc6vgpf77essukvth3icrlgbziq7ynnja", 752 + "images/background/15.jpg": "bafkreicscj7dsqjri3oeqogvuefyadv5pah72oem4y36ukyrwyc2unky2e", 753 + "images/background/16.jpg": "bafkreifuq372zol2j7mhvexwbi4qpulcggk3yx7gjsigsmjyz7tt2in65y", 754 + "images/background/17.jpg": "bafkreidkk2fvaaolnf2ybbks2kbwhgdsphlxbggufowmsx7vus26jg2biy", 755 + "images/background/18.jpg": "bafkreiawovrca3xmghrrvtefpjfcp6sgogrgtepdsl2fyrufgqrqc5mjbe", 756 + "images/background/19.jpg": "bafkreigdjdbjmgersa3jci5hhyly6mhow6a7hct5kn2eu5v56inherjusa", 757 + "images/background/2.jpg": "bafkreiea6g2kuvkrqkqyjt6wb3q6wsoswmuyseiqgmzaki4f5jxnfdxd4q", 758 + "images/background/20.jpg": "bafkreidti4tfrnhptm6ojzcnyb3corn6q2e7rgpje2z6m2egqj542w2eua", 759 + "images/background/21.jpg": "bafkreihcycf4tkq5efttfov7aaggj7r4nyhkpwdbnvrtmhznetevkv7qui", 760 + "images/background/22.jpg": "bafkreidpcfk6zjahcor6jmzhcasmfzikufavlfgrod7cplphj2pg7fmaam", 761 + "images/background/23.jpg": "bafkreiamthr5s75jylnsmea262rl3bb6rxad2iwuj5fpn6rm5cudvcua34", 762 + "images/background/24.jpg": "bafkreicndnihtr2n2g6sj2wowk6ijjcvsy2fzeto5ahxbv5snbsq7tyuqq", 763 + "images/background/25.jpg": "bafkreih7wf7prdxiamu4txtivkfvmnpculstwhgbs6mrhgu4tg6c76twyu", 764 + "images/background/26.jpg": "bafkreictijyyzl7h5xhsmg7kt3b57i7m5ylu2roqpn557cphwqbhzgdmki", 765 + "images/background/27.jpg": "bafkreida52csfluwjk4ibm257fnnju52pi7zbzy2dwnxlr3k7x4c2eqmmi", 766 + "images/background/28.jpg": "bafkreifvgkaidgxle3sagllghq67sxpelhznbd25q5mdtwk6o62hdbx7we", 767 + "images/background/29.jpg": "bafkreicwrbe4jqqisbkxjfgjo26vcogge7sxzr7zu543x4viaecxgixkfq", 768 + "images/background/3.jpg": "bafkreidwm5k57svmmxnepnxcnuhhpivb2pql46w6gvdu5p3dtldq4j5ppy", 769 + "images/background/30.jpg": "bafkreibnhdlgsojsbjibzirz6cfa4nbtlirb6hkvstb7ndv3735zld6xbu", 770 + "images/background/4.jpg": "bafkreidourqg5gmc336a3dvztmh6txozruztcs7pk6jdfbzhrkjvfwdeja", 771 + "images/background/5.jpg": "bafkreiftdyum3lqw2u7e2nam5zkv7qtjmb6rozhju7ongfyqx3hpf563ru", 772 + "images/background/6.jpg": "bafkreigemum5eebiwnqp3kvzze4262hdt24scqupqajachqyjvju4sxkoq", 773 + "images/background/7.jpg": "bafkreigc7lsmf2xq4zaro4bxzz5xlw24wwyxln4drusn2wvjnoqczmzrxu", 774 + "images/background/8.jpg": "bafkreigljtqt5zp265nbvldk3f5ups3r64xyvuxsdfjzsnu2vf6nofkmyy", 775 + "images/background/9.jpg": "bafkreici5ro3rqxzo73gryg677jnrmrkmrzv6pd4rzmwqesjhtluwctrbq", 776 + "images/background/thumbnails/1.jpg": "bafkreigdek46edb7xlyi7ygenjxth6zddgao2gnkyh75ap7bx4qjiq2jjy", 777 + "images/background/thumbnails/10.jpg": "bafkreihope36djibilsx356i3fpvm3a76e5cl64rfl4encm6xm6ignwja4", 778 + "images/background/thumbnails/11.jpg": "bafkreicf3xupqfxaf3zezaiylzpeuhoi6rsopvy7xtmhkbprobpkq2iqvq", 779 + "images/background/thumbnails/12.jpg": "bafkreiboupp6jh6x3bew7g3ywt7frafpbnngmftzszmbqehs6skypznqwy", 780 + "images/background/thumbnails/13.jpg": "bafkreibadvb56gxy65q5lgmcnuqurv2nxcednsrxmghw75o5dsmwv4s3su", 781 + "images/background/thumbnails/14.jpg": "bafkreiajiqyjqsepiz3ks3pr5whw5ra5n4pu7fg77vl63jgei2ycp6roqa", 782 + "images/background/thumbnails/15.jpg": "bafkreicdkdaujofwcbdwcfi2qoosgkmuofq5ycfk7soyxjbkg4wsnfclae", 783 + "images/background/thumbnails/16.jpg": "bafkreiapdhe5ewqmreaj4j7leg72so4zd4eisx3omunjmeaz55dchbopui", 784 + "images/background/thumbnails/17.jpg": "bafkreic3vio4eusr7kajct3bvma3x74ywnaydhcpv5ufliz25lken4yowy", 785 + "images/background/thumbnails/18.jpg": "bafkreifunn24xktlv6dme3b2s5v2decbe57vk4tijz4l2cyphjnc76oas4", 786 + "images/background/thumbnails/19.jpg": "bafkreigvudr2dkthbpssy32qgv7o2jzhz5yroyflouuvdcchwmjeuo6dza", 787 + "images/background/thumbnails/2.jpg": "bafkreiggbf7sxg67maxom3mi7y6zrhzklapplopeowidqb3vmb5rkfx43e", 788 + "images/background/thumbnails/20.jpg": "bafkreidq4mauls3frhsq5ynninsloew2qafsd45n4sitpbhzcxpc2vjyha", 789 + "images/background/thumbnails/21.jpg": "bafkreibhx732pprbos3bmwl33gnkd5kugzftcu4mg5agz67ddbugfks7sq", 790 + "images/background/thumbnails/22.jpg": "bafkreifowjjcogrffeksalbjmhhyiksretlom5hr2bva45llc35s3kcphy", 791 + "images/background/thumbnails/23.jpg": "bafkreic54xvhelqcdznybnrr56gtqxnkihjk2hy2tk4m5udvphvpxk4xym", 792 + "images/background/thumbnails/24.jpg": "bafkreib5pfulmt4aaz4hoxyiouvcjy2fyw472sa7uh6axxuxqf6hvujg2a", 793 + "images/background/thumbnails/25.jpg": "bafkreidqlojj3xnzinma56bpieij6l5jszctc4if3kzr5x2uth6lwt3adu", 794 + "images/background/thumbnails/26.jpg": "bafkreigzogtcfq3gdvmxjldokn46o3mzxyu6gcmcui4lkpoor6reojmouq", 795 + "images/background/thumbnails/27.jpg": "bafkreiczkse4b2h7lve6popmbbcngqri3gxbatl57wbrjkqcwpiokunq5u", 796 + "images/background/thumbnails/28.jpg": "bafkreiegujyqc3ifgb5t2hpzfpnlr7uznkvnmqsz7ta6c3pdlxez6vok2e", 797 + "images/background/thumbnails/29.jpg": "bafkreihqpmnw5xjtxswd66usvy5a2v3dwnm7texstbiij6ujlaur6gncou", 798 + "images/background/thumbnails/3.jpg": "bafkreiee7ckghrwqcvyf6gmgrpm5mprl5jjtmgkfe722eexv5uenov4b2y", 799 + "images/background/thumbnails/30.jpg": "bafkreif6wlxvrmseugl4pj5dykwntlnoonk34s3oz7sjgvaecaxmw2sam4", 800 + "images/background/thumbnails/4.jpg": "bafkreiffyn7kzaxok6judapgg47rwrk5prliu4k2o4c7656gbl75olfr3e", 801 + "images/background/thumbnails/5.jpg": "bafkreie4znco6nv6pup3qiu7gtnz7jm73kz6xn74fy3qkpyfvro5jbfx6e", 802 + "images/background/thumbnails/6.jpg": "bafkreid7ozeylc6iyuw3ebmvkk5ik5neqy2dtpyfuigopf2mzkz6ccyaa4", 803 + "images/background/thumbnails/7.jpg": "bafkreiaxw2imdior4urusp2itg7xly54awns5aioy5wxallmufgdonm7qu", 804 + "images/background/thumbnails/8.jpg": "bafkreidj4wfw2wtg3uk4jpd2oumbxcpjmyy2aptaa6gmiowc3egmdzg2ii", 805 + "images/background/thumbnails/9.jpg": "bafkreie7e4ewtgfj5frmermzyuzlbtpsvcfcgo5hb37ng27lusph3eoqbq", 806 + "images/diffuse-current.svg": "bafkreihnvgi6rwkulrkocema7qdgdpmhcif5r53tskk6fvhhrnln7rfpza", 807 + "images/diffuse-current.svg.br": "bafkreidw5n6zkhyvr7ajkkokz4ffinbbmnbxaol3oyb2neabqvvpya3tny", 808 + "images/diffuse-dark.svg": "bafkreifrokmmfggf3ucwzzxis4sxwharfrl4kbfghxiruse46w4fjnqbgq", 809 + "images/diffuse-dark.svg.br": "bafkreicv43aqxrclavsuw55x5ymv7227r5e3uruu3psrssulssfqqqjxwm", 810 + "images/diffuse-grey.svg": "bafkreicyhxrl7ngliszvx4ygbum4htxt2mnj4pedzilbalh54c2wgkh2xq", 811 + "images/diffuse-grey.svg.br": "bafkreihvc6uoxdjbpundqkdonxrxxx3ypnctthp5bvmx537gdk3jfyefgm", 812 + "images/diffuse-light.svg": "bafkreiawone475qvmqtrcdohnpfiyffwz7y4jnjkqr2ohixqdmynn5obqy", 813 + "images/diffuse-light.svg.br": "bafkreih3fk3brg6kg6arydzpl5pzncufzzrw6nxxbr54t5op3fzesdddxu", 814 + "images/diffuse__icon-dark.svg": "bafkreih32owwo4dayoixi7elkcc7j54kju4mfcqwvvurj5x4b2a5jgktki", 815 + "images/diffuse__icon-dark.svg.br": "bafkreicyfedwh2sfgl7ye54kdgswx5iblpyap4rmowvuawtxz3x7wnjrua", 816 + "images/diffuse__icon-grey.svg": "bafkreifgtyvyc2fmhcuj2gdz55idkk4lrdhwqf63b2tc33m74nasmwfwpu", 817 + "images/diffuse__icon-grey.svg.br": "bafkreibpd6hu2qgknvhbms3poelcyujx7nyi2dthqmgv3fnwsfrfmnxej4", 818 + "images/diffuse__icon-light.svg": "bafkreihgvb5kfdsaxm4cpz2ymgpypihzus4o62hjuxiq6yapeuq6ocv3dq", 819 + "images/diffuse__icon-light.svg.br": "bafkreibdo37xxs3jwtgvuo4fe6hv4xxonpi252c242e6k2elq75tgn7qlq", 820 + "images/icon-square-ws.png": "bafkreiclrysq7wy4zgechj6vwaqz764wco7ri5hf72slgsn53o36jvcmpq", 821 + "images/icon-square.png": "bafkreidrusfeslzubxpmwrzd3i3cfunueh2rlcujfxirwwvpqawyifhimu", 822 + "images/icon.png": "bafkreidskd72nglcusjxpr35n33ksevfxoyl2dreczsx2zcf5ur57grkvq", 823 + "images/icons/windows_98/catalog-1.png": "bafkreid3fkfm4a36dlu2v7ur2wctlggaypgsukokc3ru2scpdhghlcdyl4", 824 + "images/icons/windows_98/cd_audio_cd_a-0.png": "bafkreidubwod24naaya5pgz6dxqzzoy62g6mw5dphrhvym2twdjwqxvft4", 825 + "images/icons/windows_98/cd_audio_cd_a-2.png": "bafkreicknyfgx5indku3qmqwl2ce6llayjbdm3fmhusvxe56vqmmo3hopy", 826 + "images/icons/windows_98/cd_audio_cd_a-3.png": "bafkreifj4q4dfekylecf4ghkyovgrvgtioonx47tkav2vfw5jq5ivzvxca", 827 + "images/icons/windows_98/cd_audio_cd_a-4.png": "bafkreiahnz3rqriinu7ufebbsqnujkf3nghdk7wjqhczipckbyk7ramoeu", 828 + "images/icons/windows_98/cd_drive-0.png": "bafkreihnqltcerdazobtlaalybuh7avcwz2b3gjfl3u7zu36eaokdw64q4", 829 + "images/icons/windows_98/cd_drive_purple-3.png": "bafkreigi526mk6smnpfslqr77cqdky6xh52vjbgulcwavquga43soucmjq", 830 + "images/icons/windows_98/channels-2.png": "bafkreieybr7cfm4s35gh5wscifmd2f4dwtjasnw3tjxtuktyrclcr6bkji", 831 + "images/icons/windows_98/check-0.png": "bafkreid4wzye4ziyfjznmmwrfaf54lhcdociys5rhowshtgmia5sdpdmb4", 832 + "images/icons/windows_98/computer_sound-0.png": "bafkreida2hxgogpcl7hyzzayt2fkmn2d73izegzlzgx4ty3rbjsahbqj5y", 833 + "images/icons/windows_98/computer_user_pencil-0.png": "bafkreicrhtcvihg6csltynbzsr5fnqxkcaf5pi2b6xalecvcldyi2poabq", 834 + "images/icons/windows_98/connected_world-0.png": "bafkreiddb24jheibjbifrb33j6i4tdrim2sc7ofqcp73tznfdwytlilmiy", 835 + "images/icons/windows_98/directory_admin_tools-3.png": "bafkreic4r5wrhgi3hambxezf2r2wzv7nqhav5a5qmfn7et4b73foumzvdi", 836 + "images/icons/windows_98/directory_admin_tools-5.png": "bafkreiee2baq5i6v3hvgrsf4em5zt4ugias2h2c3lbt64possekdtiygsq", 837 + "images/icons/windows_98/directory_channels-2.png": "bafkreih7o7pv7sglszodcpoo55j3773cnvxdexnails5mwcjewddmk5uku", 838 + "images/icons/windows_98/directory_channels-3.png": "bafkreiakc44h5qfvvh3sz6gzcbawivmbcv7a3acgks4vlq4cbrsyg6ylwy", 839 + "images/icons/windows_98/directory_closed-3.png": "bafkreifxy33qmbruyw3wfhkueuo7ss55p4agxjzmk4igdoq5wzewy5fg6a", 840 + "images/icons/windows_98/directory_closed-4.png": "bafkreigw3btdo4ue7ff6q63wa6ka5vt4hbbs7hjnxjuin23mvpfae6f3ge", 841 + "images/icons/windows_98/directory_control_panel-2.png": "bafkreieoui3pvcfmeje5lbf5uo7ycfw5hifxh7zkikcqoqikv6rom3lzwy", 842 + "images/icons/windows_98/directory_control_panel-3.png": "bafkreihsvhsbhvspfxaepqrqllhhxc5jh7rje5qclbnihnolhgktn6u6zq", 843 + "images/icons/windows_98/directory_explorer-4.png": "bafkreibrxt4x5ujfhb3elezujcxmwttsxwsmid6awnjdmllpokxkkwlazq", 844 + "images/icons/windows_98/directory_explorer-5.png": "bafkreia2mkndozcoevqqaxxfrkfjfrrhtg4c3yyjn5lazcshnt67urnhzm", 845 + "images/icons/windows_98/directory_favorites-2.png": "bafkreid4owbgspqriaytvp2vvmaw6isuzkcc2mt2zwic7by7pralh7u5hu", 846 + "images/icons/windows_98/directory_favorites-4.png": "bafkreih3c5dfxz3aiv4vcogl5um4fkmeoyf6wkwnic4u7udkiwebcqmztq", 847 + "images/icons/windows_98/directory_net_web-3.png": "bafkreie2i3c4sannoq7klu3vwritju2n52fkz4yiep3daiur2iipbajw34", 848 + "images/icons/windows_98/directory_net_web-4.png": "bafkreibizxv3ekvs34vjglh7mgle4ol43xgwzal6ifeaougp43shfifa34", 849 + "images/icons/windows_98/directory_network_conn-3.png": "bafkreifn7auzgotpwprmjnvhasjhx37ifssvtciu573isxty3uj2ici5li", 850 + "images/icons/windows_98/directory_network_conn-5.png": "bafkreifakp6raermeltpca6zxisq7xcmt4zahmooek5uxitnpkmamcwtoq", 851 + "images/icons/windows_98/directory_open_file_mydocs_2k-3.png": "bafkreigygdwq5s5pihuof74cwggqxc5q2l43plvddjbpfftity5w6h3vpy", 852 + "images/icons/windows_98/directory_open_file_mydocs_2k-4.png": "bafkreig5kxoilzvdj2ur6wjfnli4iusqslniigkqzwdqf2saqu3sikttki", 853 + "images/icons/windows_98/gears-0.png": "bafkreia2ukuz4bu7xyyeg4fj76utbxcrh3xxj367emusdiokk75nn5nlg4", 854 + "images/icons/windows_98/globe_map-0.png": "bafkreifz32itb55wdqbdmqwibhsk3ddqzatld2y3htdhr7xrmaw5cb74we", 855 + "images/icons/windows_98/help_book_big-0.png": "bafkreiblsqk55e5vh4c5ixuxvn2pjfalagga6m2pyddbweaewuxtrrwpt4", 856 + "images/icons/windows_98/installer-3.png": "bafkreibg5wrytl34pu35766j3s2g5zwxygywzvu5liyh6sp6i5xkhxh6om", 857 + "images/icons/windows_98/installer_generic_old-0.png": "bafkreicqjl54n37ju65tjlqepcakfdfowctk7p7sbhte6fugmjur7gcebe", 858 + "images/icons/windows_98/keys-5.png": "bafkreihd7mue64zccyrkago6gyrs4uzob2psiuchcxnd3l77zq6lx3773y", 859 + "images/icons/windows_98/loudspeaker_wave-0.png": "bafkreigdee7jq3puw5hndm2mu4iee5qogciynqyzzmnqrmw23mc2eboc4y", 860 + "images/icons/windows_98/magnifying_glass-0.png": "bafkreies3swhu46d6iq5evrmrmzyzu6gumyvchhsxfvcaqw73e4yurbelm", 861 + "images/icons/windows_98/magnifying_glass_4-1.png": "bafkreifp5b44fduospp7g42dy3ab2octj5zpceewkc3awchwto3ntoduxe", 862 + "images/icons/windows_98/media_player-0.png": "bafkreiftaqkoxhry524sjzecose2cwkbuxnvypobusojuadajzszsznnli", 863 + "images/icons/windows_98/media_player_stream_no.png": "bafkreif5fiqrtbap5v3m6v6dfu42iccs24nknitfamz52nqbtxucglzc5i", 864 + "images/icons/windows_98/ms_dos-1.png": "bafkreiafx73ozquls6lsjnboqwks2u4b3chfqbqnl3sx5eize4mwu4hpfi", 865 + "images/icons/windows_98/msg_error-0.png": "bafkreigadoy5cepewxz5tpkrxs2iopne3qf477s323normrutwq7f6acpa", 866 + "images/icons/windows_98/msg_information-0.png": "bafkreihh2777ns64mlof3d7rv6qs33goerqeuykxf4b4mxohbngr5od2pa", 867 + "images/icons/windows_98/msg_question-0.png": "bafkreiar3fxkx35t374mwzbncrrozh364dt3manmiwlcbsudewygtawejy", 868 + "images/icons/windows_98/msg_warning-0.png": "bafkreidxucryqy6pvddeied7xuwuf26tgts6oc42mpzxtuklrt37q6sor4", 869 + "images/icons/windows_98/multimedia-4.png": "bafkreiee2tiezulfbn6jrqxinrbfkqeyqy3cllt3kqsnmwynqfq2gyp7oa", 870 + "images/icons/windows_98/network_drive_world-0.png": "bafkreidiwpqdjoj4vjbldyequve76ybjtwesiijaudkhqpa7c2qeblkdnm", 871 + "images/icons/windows_98/no-1.png": "bafkreibslz52jhw7gm57fgnmfu45uhnn25is7kkxvh7quxin4uz4prhe6i", 872 + "images/icons/windows_98/restrict-1.png": "bafkreiglqb27txhhhmiarxyyxubijddiuij4jptd3f3b4pqc4pbmbczo5y", 873 + "images/icons/windows_98/search_computer-0.png": "bafkreib5ttndengayfgzcfmhuhewsbidtkgh2bgqkaf4ippfsfj46ygemu", 874 + "images/icons/windows_98/search_server-1.png": "bafkreie7qnxp5vihtddjevftv5rvds7amufzvkclh4vvjnznwuomdcl3oa", 875 + "images/icons/windows_98/search_web-0.png": "bafkreiaa2q4zdzn5ydkhs2v24gioodt32muvi7ckfyup763pkznteei45y", 876 + "images/icons/windows_98/settings_gear-0.png": "bafkreicdmuawxjazmzvzzpcguzjn7s7wsxsyp5jsrsvyioqhc424vmzqd4", 877 + "images/icons/windows_98/settings_gear-2.png": "bafkreicf6w6z35fz5jparg4ns4d7q3gseudhunxkawn6eqfsvjd4b23n5u", 878 + "images/icons/windows_98/tip.png": "bafkreidrarmhyv2w346vj6j4ubfse6trkkbnhercw7b5g6pogbv37xwnzi", 879 + "images/icons/windows_98/utopia_smiley.png": "bafkreiea2n2s67wtluzoguoozo7pqel6ja6p4fq5wwcn57trlpm23zikhy", 880 + "images/icons/windows_98/winamp2-32x32.png": "bafkreidp6uvjz6tq34wtl7sps2pjkoxcpzf4apn5s67tw7ll2jvynw4kqe", 881 + "images/icons/windows_98/windows-0.png": "bafkreiehwg6dfqnaly73keequtspo3spdqhelo5nikium7s7z7mffmcyta", 882 + "images/icons/windows_98/world-2.png": "bafkreifsektphxnsdc6yfcirdfu5zypzbnjvbcjcq4hrhe22sgvayke2xu", 883 + "images/icons/windows_98/world-4.png": "bafkreihukqde5mcde4kmpy27t5xje2ucw3qihuifjrl4cnybyqjmfgtciu", 884 + "images/icons/windows_98/world_network_directories-3.png": "bafkreib6fjfxkj6qdgncfejalmckrpwnafbur6zgldjs6ghxd3plff33cq", 885 + "index.html": "bafkreibkfgx6232ykhlyun3hz74c7xm4jdcsbigxzvahbhit2ztash62vu", 886 + "index.html.br": "bafkreiccb2m5qvbvpgnlxfqp6pg6hookqc2nyciiegxd2jilpsei2pch7e", 887 + "l/index.html": "bafkreicm4oslgjzbomnd6ar55536uv55idurgfneesepptwdbleiqvc634", 888 + "l/index.html.br": "bafkreid6o75pvjmlnofec7xal4nruivnngmvybjanuvz2qlzmnhe7vajga", 889 + "l/index.js": "bafkreigz3khly5zprfyltbrgpalsjw7q3xz75chwmkfnbct36ylpnd6tla", 890 + "l/index.js.br": "bafkreie367o2lkrd7xxe2vs2wxbl6ouexklsbno6smyqpiob2uwf6e6zfq", 891 + "l/index.js.map": "bafkreidiwz2gy26h64pyq3ohk7s3asolqvlbn4p4pa4ghysrfxgpwmmchi", 892 + "misc/index.html": "bafkreibhese2jigwcsbwi34nh7ztqn6dqgcw3mcp2tocdcjrthvlmd7gey", 893 + "misc/index.html.br": "bafkreigxtctzbp55h3n2rntewemysymhr2qyarz22k4kvsfyx62ulkm7le", 894 + "mstile-150x150.png": "bafkreib4h3p2bdlafrkbuwkhowvh7gzwzpbzhcgiz5zswzgmp64z4b73xq", 895 + "node_crypto-5R4NC7NK.js": "bafkreigfzknjuz6fqpkazuxor7hpuvwvehdaisfmhmaalttqk43iscr2nu", 896 + "node_crypto-5R4NC7NK.js.br": "bafkreihc6kacbqz7pp6huzj7pc7tdt4ghafwnn6yg5btkg7mlwvmoznwhi", 897 + "node_crypto-5R4NC7NK.js.map": "bafkreiebwvu27zsisyfbktzxe3zjqbalqafblj5627ehxkxrrvuttk7qpu", 898 + "oauth-client-metadata.json": "bafkreiewru6nyemrt6kzqfq2lejozln3ai5khg5f7pwzks2prra6xm3m5q", 899 + "oauth-client-metadata.json.br": "bafkreif3rqaci4taw6ne4mzyrb2dosdiydiwlm7fp7cgqcbailj4sft2wm", 900 + "oauth/callback/index.html": "bafkreigrk5zoktusudshbo67af7jjcq2flw4qezlvjmecm3oqnjgf5ljui", 901 + "oauth/callback/index.html.br": "bafkreie4gmjgth4352np4tqayrfpw5yvofrn3ezbeuxbehjjanuakiofku", 902 + "oauth/callback/index.js": "bafkreielkvthippfofjjrswj3iyt54fx3ok7yjfsb3guxfzaecioke57zi", 903 + "oauth/callback/index.js.br": "bafkreid7mdyxvqyp35b54tv4pdeh6vupknpbjpt7m2qpqu4ilwoyp3f67q", 904 + "oauth/callback/index.js.map": "bafkreibbfu7u7skwed2hdnbhakdy52vjtpyxrao3ns6qgnpqjrnjoc6gdu", 905 + "playback/index.html": "bafkreid42pzrbuufm4diylh6c5x7on2shaa2jgzhikh2zu47hjxzugcufe", 906 + "playback/index.html.br": "bafkreiebjft5br5xny7uy6jvp3vrxogwqkag3cfhrvdw4wl76cvooy3cr4", 907 + "safari-pinned-tab.svg": "bafkreihgsd3rmifhstrsd7arkx5fvstlfxrzyjwoxmawprwwsaxqnusp4y", 908 + "safari-pinned-tab.svg.br": "bafkreidonnvzoo5qjx4pada5sfkutnicpxryrin4fbmkspwwp4wsanynte", 909 + "service-worker-offline.js": "bafkreie7wfb7mj5nxyvpgeix4oxzivjrkpl32ocmwkhn2tnle7toe6uayu", 910 + "service-worker-offline.js.br": "bafkreifh4ejl6yhbqhobugmtli7iwrjmzymo353dezdtmozpkies7op7rq", 911 + "service-worker-offline.js.map": "bafkreifzjoravhafctyot6ovlvjpgbe36nnnu7obpe7kprukdpvxij2fqq", 912 + "styles/animations.css": "bafkreifpamtawpkrswogwbz7ug2oe2v3how45ppsgygo6wqb2vfqubmcui", 913 + "styles/animations.css.br": "bafkreihapxqhnxt65ynfyrnckvlvueetflcpa6wklwiq3yrx6eijnhu5ga", 914 + "styles/animations.css.map": "bafkreiebaub4x4gwvcpxsislt5npkd62l6fwgcwevxsho54eri4i2ybny4", 915 + "styles/base.css": "bafkreigdzv2ywpg5s44mqipx7b7xqsu5hccmh23rd55b7g4si4ebjuel4m", 916 + "styles/base.css.br": "bafkreify5p6lzwnb2ickdtewodvsi4thntygircm2hdvjutexghylr77yy", 917 + "styles/base.css.map": "bafkreia526waowg4houiz2izodgww66iehkgdai5tbbsnsodsh5nqwbot4", 918 + "styles/diffuse/code-editor.css": "bafkreigowrnxvpx3gcffhzi7x2tvojpd35unp45yzzxqj53j4as4ag5tv4", 919 + "styles/diffuse/code-editor.css.br": "bafkreiewxwq3lbt2uggb3q4idaxhgcr2uzyb362t774u6s4btttxew5c7m", 920 + "styles/diffuse/code-editor.css.map": "bafkreibn3wwwkarr37uyzkiqopspirfjsdlbdfgzkle5cr4g3gghq6pffy", 921 + "styles/diffuse/colors.css": "bafkreicmb3lbdmq7fj3uwm5vvw6e7swbiipt4xwy74zvjpsozz6ij3rlp4", 922 + "styles/diffuse/colors.css.br": "bafkreiflyjzzrxzsm325kpqwpod6ucqkxwfoq6w4dcyqu3jedb43xn5ciy", 923 + "styles/diffuse/colors.css.map": "bafkreieb3zqrcfix4qjb6yennshpuowj4gnjflagklwknorgb5umslaeda", 924 + "styles/diffuse/font-faces.css": "bafkreie23d4rpa5hce2kezkp3zdps56zuy5dbvql37amkh3uvyxdaut6q4", 925 + "styles/diffuse/font-faces.css.br": "bafkreielieupqj264qt5lb4y27xpjvoofcu6gigpmgmasfc7cd4rrmxzha", 926 + "styles/diffuse/font-faces.css.map": "bafkreib4pkcngl35bkvblmdv435qwnmaxdu2szpcv3uyv7a3ibvn27fofi", 927 + "styles/diffuse/fonts.css": "bafkreigmiuxryzepzsfwhylxetxpumgxf2dxxlfigrwvtufnphdivf26ta", 928 + "styles/diffuse/fonts.css.br": "bafkreih43e4jb5y72yago6qqcjvw2ogquiorouvvajugzmdpgonp6wpsz4", 929 + "styles/diffuse/fonts.css.map": "bafkreibbza6jcsldq7ukcjd3mcovxrawdc7oowe36d4oh7u2jlclfkkslq", 930 + "styles/diffuse/page.css": "bafkreicpughmh73z3txlnjopn6ccxzjv7ejzez2macdqiwnwv27dwn7owq", 931 + "styles/diffuse/page.css.br": "bafkreied43d4nwipsek6ltnztyy7on7kmmudz3qcsc7ar75ftildpmsb2a", 932 + "styles/diffuse/page.css.map": "bafkreiddzmu5rs4o3hbnpltivu7cunfbdh3c5vumgborvhb6rhkokoiyae", 933 + "styles/loader.css": "bafkreigas2biycuplsldo25bk7wfxhrbnqgv2leb2vautkuahrjcgnyyli", 934 + "styles/loader.css.br": "bafkreicmgzaf77i4ntsk44xdzui2vt4fsua4jo5cx2kv4j7x7yiepikgte", 935 + "styles/loader.css.map": "bafkreiczrzlj2eb7tmckbk6tb4irtvxvdngfkkh5nlqlbv5hi5rnzkmcnq", 936 + "styles/reset.css": "bafkreihhsqwey7zjse7pibz24hujcp3grzw7mdp2rq4h45utzytwnfsnny", 937 + "styles/reset.css.br": "bafkreifkmr67s3jtadqpxnzl3r7r2br2p6b6y4l26kv552e4wssj3k4wdu", 938 + "styles/reset.css.map": "bafkreibmdx5vefu7vlhps7r22udrd2wjn2uchhxnil4ub54q6xvptix7ai", 939 + "styles/variables.css": "bafkreihmvyucxbyozjmwu2olnyuhpiej2xlqlck6c4oa6xqhu7arklo62y", 940 + "styles/variables.css.br": "bafkreifqnnuc62j7dmaqtvpifytsofxbgs5ibnqov4enjh35h4ag3dje5u", 941 + "styles/variables.css.map": "bafkreihcgo2hh5ndvifthborbv5p7akexxrd3yzhueoodtbkurwrzsifxm", 942 + "styles/wireframe/ui.css": "bafkreieqkimon7pbxtf6n2gdcqzdonoj6cxfnz2bj2cwkorjgcpwx2bavm", 943 + "styles/wireframe/ui.css.br": "bafkreifakevifyj6ciyofc3netpnx6vkvmrxmnyluwkpyzpurokhd63hcq", 944 + "styles/wireframe/ui.css.map": "bafkreiheskkl5kdrsscjxsrabqxiqy764indbm7bghyktg2u3x25w3aieq", 945 + "temporal-polyfill-WCWY3GMU.js": "bafkreidxeufa3osfq4hccmsbrrjrurthisxsa2gsxr36kf3kmy63bwkabm", 946 + "temporal-polyfill-WCWY3GMU.js.br": "bafkreiel35lyq7puocq6lqbyhcynwrlfe5xvc3lktxinb66hv6dafimknu", 947 + "temporal-polyfill-WCWY3GMU.js.map": "bafkreiatjlyxh3hnt7y7fwvv3d7ddk6o245na5uy73jzdbfrduqlc3c5lu", 948 + "testing/index.html": "bafkreibyf62xcvtlshdpdqvpdmufpwogtsgxkfzfxkevdfjkus4rbetfti", 949 + "testing/index.html.br": "bafkreig63fajfs7n5b6eg5ix32zcfutdndkpit7mpopt2wuldwkr3etrmy", 950 + "testing/sample/tracks.js": "bafkreia35ka6kmapq4exnqok5gndrdi332ndzzykduyrhiczlgklmfibaa", 951 + "testing/sample/tracks.js.br": "bafkreickeyn2tpdxpb3ohi7hhenlqx5ppbftw2p3ui53yf3bqtygkxejky", 952 + "testing/sample/tracks.js.map": "bafkreicxzjw7cmzm4k5tbksmdte4ezjsfznkiqxb4gmp6vkc7najqfng7e", 953 + "themes/blur/artwork-controller/element.css": "bafkreibdm3khmkppcn4hjz72ql43g3kxe7e5cmpxkzaujqw43szsyumrea", 954 + "themes/blur/artwork-controller/element.css.br": "bafkreifqbkts7dzr362nr4dlmrs3ozl6fkagbdmlqfpnhu7xdrueigfyza", 955 + "themes/blur/artwork-controller/element.css.map": "bafkreiclh6vxga2ycqqvdwk467amlh6sulmfbivecmkxxzl42knjz5liie", 956 + "themes/blur/artwork-controller/element.js": "bafkreiakasi5ctdwbzjcn6crwumhzylon3mrksfoyujygmec5efiqg54o4", 957 + "themes/blur/artwork-controller/element.js.br": "bafkreifnfys2umtm6pt27rbvi43ydivnp2jasm2wwsqzye7ejzaybsbf7u", 958 + "themes/blur/artwork-controller/element.js.map": "bafkreibfxtr4y7gwa7iqoibv5ivrtdnjpw55clc66urpskidjaee2do2wi", 959 + "themes/blur/artwork-controller/facet/index.html": "bafkreifulqtbubfvkoincpubvco7awbzozrs2utbewzul3rxvdtggmz64u", 960 + "themes/blur/artwork-controller/facet/index.html.br": "bafkreihudky65r3j2kski7gs7o3tkstubr72f5z57hnodpu7u3ybu4fckm", 961 + "themes/blur/index.css": "bafkreie3uyalwlne5r5na7u3wpj34ex7mvocw7pjjnf2jjvqvptv5ekaxq", 962 + "themes/blur/index.css.br": "bafkreidhgcboqofkdwq3efrczppncmkpp23txdy773fyzvvcnsrjxruof4", 963 + "themes/blur/index.css.map": "bafkreiemev2dgofuillytt44iwo2dq4smhi5fm6k542ji2tem2du2vrhha", 964 + "themes/blur/index.html": "bafkreig5vojfns5qupq2bug2ef6p4cdkpukn6lzgs2ttvexh2gn7seyvki", 965 + "themes/blur/index.html.br": "bafkreidsarvec6kuyzmwrwxksc6t4hf6oyopsa6wn3klnsup5uewcndhcq", 966 + "themes/blur/index.js": "bafkreiaixp6xkuvr7hfpxqnfub4akbb7ppylategnw3w24tsppbztlsgv4", 967 + "themes/blur/index.js.br": "bafkreicbxac6u6wactrdkvxjrozxi4bkba2ee2hzese2alyiqccjhffb4q", 968 + "themes/blur/index.js.map": "bafkreifp3eieveu2dwnfd5pqham32csnkh2ahmys4hmg7mkxp5ppmygita", 969 + "themes/blur/variables.css": "bafkreiabmayfcnehenu3flaiqhrjnbugxoxyucdnx5qzn7mbd64nnqtwqu", 970 + "themes/blur/variables.css.br": "bafkreihrxquiago5ymccdn3uzw4b6boassofwnpqdvslrltza722g6sr7i", 971 + "themes/blur/variables.css.map": "bafkreihsns3k7akfvefzijp5i6qk45ahv2a2tdqbbbaiknosdd3bbpuo4u", 972 + "themes/index.html": "bafkreigabzi5mye4onjw2mzhsi2vgpknra32xqp5z7gclcjmhyeej4h32e", 973 + "themes/index.html.br": "bafkreigkjr2umfm4u2j6bip7qtswsn5fmkshomtrixg6ojlv7nmceahkku", 974 + "themes/winamp/98-extra.css": "bafkreifagimlkymvtrxpiqtlcqg7dpugffl4zefa5lq442q4pceqk3behy", 975 + "themes/winamp/98-extra.css.br": "bafkreia4of7bishroznjxpkfd5wcfweqd4htmzazq6qt45qxchztcx7egy", 976 + "themes/winamp/98-extra.css.map": "bafkreiahhwmnnkvvuxzt2tl6l2edzvs2zbfyxe3j2gwnm43p7hszx34dby", 977 + "themes/winamp/98-vars.css": "bafkreiaie7gkfhlcpdrunivjw42oz25zio5ubg6kkvejeu47ok4bnzl4ku", 978 + "themes/winamp/98-vars.css.br": "bafkreiawxwu27nrrv6aeq26h4fqzyvvf2cth5rlxvirxo2vkzhtwmmy5c4", 979 + "themes/winamp/98-vars.css.map": "bafkreiac2j63gep2a3y2paahfizsrvhbjzlhf3tmp2j6chd6lgmyhklq5u", 980 + "themes/winamp/browser/element.js": "bafkreiexvflfdz3z3rtaa7dhpxmhfjr5mvp7kcopqzjx3lbsjz2kmuntbe", 981 + "themes/winamp/browser/element.js.br": "bafkreiftznjpjucrqhgl5qk7puakj2gtp26iefnyrkxl5xfv2o6plnsycq", 982 + "themes/winamp/browser/element.js.map": "bafkreifk6rlahgva5nzsfo7gihbkx7aabf5cqcbjs76d5cs2gpqe2en4dm", 983 + "themes/winamp/browser/facet/index.html": "bafkreiemiyiikhui2gbj3gxce5s4xusqtsxadzhuaqjhbup5vmcxpzqsoi", 984 + "themes/winamp/browser/facet/index.html.br": "bafkreicqx6f4lsihgitqu2tdzbrdvbtq3cnpxh4khxo7vydd6vejwks6o4", 985 + "themes/winamp/common/ui.js": "bafkreiejqs2ofqjphbd3i4mqzfpgdfnyhosdsmg4hc32d3z4ogtzq4dnr4", 986 + "themes/winamp/common/ui.js.br": "bafkreidembmjmkroabjkoafzn4475acmh2pz3byfo4vkdgqv63df7mghke", 987 + "themes/winamp/common/ui.js.map": "bafkreihxduej5p4vfc5gaqizoxsktpuikkxgf5nd5qdk4fkcutxxqd5emm", 988 + "themes/winamp/facet.css": "bafkreigad7o6ig4mr5zjkjshqphplmkovjucj72jhxcidehceooo3oay7m", 989 + "themes/winamp/facet.css.br": "bafkreia3l3lf3onydhpxw3toabsjr2bbwgga77rkkcdc4rvvtgbc76h5qe", 990 + "themes/winamp/facet.css.map": "bafkreiefsvgpzag2z6blakppzo3o6gtn3juj3oprzyhnysvn3drmlmltnm", 991 + "themes/winamp/facet/index.html": "bafkreibolfn7pzcqbsilekmn2rdyn4qd32mcjyl5kabeengwddf22qqgde", 992 + "themes/winamp/facet/index.html.br": "bafkreihyvgzwgy4rhswkxpbtrpei5nzemademgszoftowbhbfmvrtmw76q", 993 + "themes/winamp/fonts.css": "bafkreiaa242ki57fk7vdmow2uecr2plul3ktqbm52elepij4ghgt53cxgi", 994 + "themes/winamp/fonts.css.br": "bafkreihd7eimxp4krywkcaopnbnj2mdlry6hqecz4bv7naxkxex6cung5q", 995 + "themes/winamp/fonts.css.map": "bafkreibaqsgniwkyr6zshx5m3gml6dklyboekz2bhfayqyrpp7ajnnep4a", 996 + "themes/winamp/index.css": "bafkreiafegrpvvjntqle5bo63alodmg4xcy3nueb74qyp3a35wf2hw3w5i", 997 + "themes/winamp/index.css.br": "bafkreicy7lf5l6ghgmlyy6mmau4wzfvxfswzjryt6f4zwiakb44csvy6em", 998 + "themes/winamp/index.css.map": "bafkreido24pvulehr6fx3vm3yn6lufkhbazscl4ntoblgbzc5o324gi23q", 999 + "themes/winamp/vendor/README/index.html": "bafkreig2dpcsg3ezbjggeu4xk5jfvqzdu2utfxijh4gsehx4tcftwiub3u", 1000 + "themes/winamp/vendor/README/index.html.br": "bafkreiahntfvq3qo2bhdgbeeczcxdktuscwwk3cm27vzbqfjkekp6l5uju", 1001 + "themes/winamp/vendor/base-skin.css": "bafkreicsdrxn4ru6rn4fzb47es6ttx4t33fi53rxsrc7cdpdkdkmw4b4ne", 1002 + "themes/winamp/vendor/base-skin.css.br": "bafkreierfxuezhv63posspmj5xdvuuc56hnh3kbfuoo7d46lcee2lb6duu", 1003 + "themes/winamp/vendor/base-skin.css.map": "bafkreic6fa5jhmos3ow6i7fs4lkp7jesbg52s454apxcyfmkrgkkofpyde", 1004 + "themes/winamp/vendor/context-menu.css": "bafkreibu4v3kabr3z7pkmepr6swuewygbw5iczhrgbuzuueb4wwnqqeqsq", 1005 + "themes/winamp/vendor/context-menu.css.br": "bafkreicjuzivda4z5tqzofg4jxnkerxw3msuganifok54bpamyrglyur44", 1006 + "themes/winamp/vendor/context-menu.css.map": "bafkreignanckpprt2rvfwhific7fcnxjxndn7wpedoxrknndb3lqokafui", 1007 + "themes/winamp/vendor/equalizer-window.css": "bafkreibin5roluz7cxksnzfbofh77hkzwu4ciwaseoqbugqslcxgrvc6tu", 1008 + "themes/winamp/vendor/equalizer-window.css.br": "bafkreifbawbockhcepyyzzrerh5vn4z7korsv7zmqmmi52rij2peproesq", 1009 + "themes/winamp/vendor/equalizer-window.css.map": "bafkreihslq5z5ygjkvwgvs3ktg3lggkukahhb725u5mlyi3wun6js3y4me", 1010 + "themes/winamp/vendor/gen-window.css": "bafkreiegxxaw2pu5ovnnudrgcprqvlocyqecriymfilpxzuyhscfvtudxa", 1011 + "themes/winamp/vendor/gen-window.css.br": "bafkreieezdj6i6kplar3ryp2uenbeg77yvobqewrphte7543ia7pxn2pgq", 1012 + "themes/winamp/vendor/gen-window.css.map": "bafkreihxkl35dmzbrvyeyi4bvgyaveoss34pubui3ulmh77zx2nymy4k3u", 1013 + "themes/winamp/vendor/main-window.css": "bafkreigjsbcqm2egvrzywzsz6eebkqufusfah6m2pqpn2qcgl3neumlnoi", 1014 + "themes/winamp/vendor/main-window.css.br": "bafkreicyn6k4r2dzq6aibi4fchh66wqakykvmy5ctcpcxxq7dvx3hjm5x4", 1015 + "themes/winamp/vendor/main-window.css.map": "bafkreibckezfvmqqas22nkckqzp5yw4krohzlaapwgtdyicvqpfv4pdyey", 1016 + "themes/winamp/vendor/milkdrop-window.css": "bafkreignfdugd4plodefgrpcwnfs3ouf775eolyxpi66yem3lrozi65auu", 1017 + "themes/winamp/vendor/milkdrop-window.css.br": "bafkreiczmlpzhg4o6oftruizq6hnpbebycn54mlwjpsbsggaiwmipavady", 1018 + "themes/winamp/vendor/milkdrop-window.css.map": "bafkreibuxu7s2rjirb4v3ispiqc6vvpjn7urdsfb3ra4fxxepzgxexct3q", 1019 + "themes/winamp/vendor/mini-time.css": "bafkreih3ts5oc7jfjd5jpa5bfi2eskllcoq2sia53h63nzs5l7apoivlpa", 1020 + "themes/winamp/vendor/mini-time.css.br": "bafkreictwf7ijd3bckvzzcjh2pr33baubm5gge4l3lrhlowjn4t5q4isey", 1021 + "themes/winamp/vendor/mini-time.css.map": "bafkreifjerntlq543s7z7q2dz225lyolk7uduzrzmzs3jjcqi6xt5s3wui", 1022 + "themes/winamp/vendor/playlist-window.css": "bafkreicjkgmdrvk2s2sr3sn22nru3tdoz66cfco52dz3stuitjx3sxbsty", 1023 + "themes/winamp/vendor/playlist-window.css.br": "bafkreihv76vx6eqa3u5yijxfc4vtl44ssic2u7ve2bbe447doohjenakxm", 1024 + "themes/winamp/vendor/playlist-window.css.map": "bafkreiarioyno3kilethsllvz4wwlbhgrcofzyc5sv6pfqnwxpb3lsmvvy", 1025 + "themes/winamp/vendor/webamp.css": "bafkreid34t4zwupefluskmz4wd7faxyqupbonw4kdpbbtdrk5if3zhzeue", 1026 + "themes/winamp/vendor/webamp.css.br": "bafkreidszx5ie3qltk65fenndh3asfcceyimcqgugf6okyjqwie3voutua", 1027 + "themes/winamp/vendor/webamp.css.map": "bafkreifwwhajilgc5t6zj4szw6yfjh7w7wxbizrw7hun5iny6qjlixuo6e", 1028 + "themes/winamp/winamp/element.js": "bafkreigw52w5uehbwgasecimt7o3vbucyydfde5lvelbiuympt3eqadsyu", 1029 + "themes/winamp/winamp/element.js.br": "bafkreiapxn2h56wu4pfsy6xmukenbnv4dcppuh4t6jqqxkk5ibsjrgwbky", 1030 + "themes/winamp/winamp/element.js.map": "bafkreif3fgbbzbkzzxd7pilc53etfdvbxztxmkkg2bmazsv45vsm4n6ovi", 1031 + "themes/winamp/window-manager/element.js": "bafkreibxvhrpzkm2oac6scgug6jgx6rgb3qsitmf6gdk5irjgpr7c2rwee", 1032 + "themes/winamp/window-manager/element.js.br": "bafkreihfvj7vsu7f2dd7j74tadotqmvedk4mqc6ikroo2clxh54on3q6za", 1033 + "themes/winamp/window-manager/element.js.map": "bafkreih46nbkr6mccsrzi3qc4y2nieqnbcmfdjhjxbkxlwifmh6xhd7cm4", 1034 + "themes/winamp/window/element.js": "bafkreicgskqgnffpyigqgnxrl3pusuv2ceniqlklzxdd6pvnxzsvkfydtm", 1035 + "themes/winamp/window/element.js.br": "bafkreiazbomyct2wucdbzi7i6ywfal6jf6kmr5hlvowqywudosuxjc5us4", 1036 + "themes/winamp/window/element.js.map": "bafkreibuubad7luc7t2n7ir5dtljpwsmwyigtlxdixqw4wqhycst4p5f4i", 1037 + "vendor/98.css": "bafkreiev2do27rzekietiigmijxkywpqgf6exltmyw54xuq2mlerezm66m", 1038 + "vendor/98.css.br": "bafkreid4lziu5wjt54pilzupvikaietccrxkdtegoeor6wwdpdkpa5amx4", 1039 + "vendor/98.css.map": "bafkreifgh4ss7sdouckjmbhb3ob77wje3bdh6bq2zp5biseuwhms33ms54", 1040 + "vendor/@atcute/cbor/index.js": "bafkreidruql2hgwux3etpz552k7mbhinxcmsdxffvjyzbr3xotedv6qkcu", 1041 + "vendor/@atcute/cbor/index.js.br": "bafkreiawpivkgpxynucalahvayfac3r476un5k5emgwuwmtwyyxszjzusy", 1042 + "vendor/@atcute/cbor/index.js.map": "bafkreibbskfiol3pe7qbl3l2wlw24i3g5p2eu4mgmjdhhyzlpspqqxlppq", 1043 + "vendor/@atcute/tid/index.js": "bafkreifp5ucrw4gl6sgflspwkhed7cqsatvsjvbgkglu3lx57txozxszka", 1044 + "vendor/@atcute/tid/index.js.br": "bafkreichmgtb4ot5tvi5exm37asxq2vosmsmehp4loeegwu4twucte74wu", 1045 + "vendor/@atcute/tid/index.js.map": "bafkreihvmewhpqalc2hgknw347af5pk5cipypsjz7r6h3yhrdglebvz3bi", 1046 + "vendor/@awesome.me/webawesome/chunks/chunk.224Y6VFZ.js": "bafkreig3nwumyopj6xskuls3nxtiafwl5udzm2acox54ydm7tm3wztvs74", 1047 + "vendor/@awesome.me/webawesome/chunks/chunk.25MNBYIM.js": "bafkreig7h62xnwyxyv3bnf73qtq6bv2i34npzuwqdnhy5ut3aq2ibu7fia", 1048 + "vendor/@awesome.me/webawesome/chunks/chunk.25NQ7Q57.js": "bafkreidjm2vl6rm3jsw2ze776g7whajjo7hpgqhyunck7n4g6b3ljw2fme", 1049 + "vendor/@awesome.me/webawesome/chunks/chunk.26QE47KB.js": "bafkreihpnwmga6sgaqipozbbxehcbodblaieaa6vxmlsks3zlp7rx3mfma", 1050 + "vendor/@awesome.me/webawesome/chunks/chunk.2BXLTQVW.js": "bafkreihejbriwwvfaxpbrapxxx4l53mpdcqxx6c5cnrnmgsimt5yzu22ha", 1051 + "vendor/@awesome.me/webawesome/chunks/chunk.2HEFI57S.js": "bafkreicy3o64skmpqwwybfrufoh3k5wpkz5uwoww4z3hzirnpcxxyci6uu", 1052 + "vendor/@awesome.me/webawesome/chunks/chunk.2HSHEUB6.js": "bafkreihkgvd5emp6syjr2tp2wwlaxkzb5dmhecpwpvvzsqrsviyph2hr3u", 1053 + "vendor/@awesome.me/webawesome/chunks/chunk.2JWRV665.js": "bafkreia3xmp7hsv7gejxjo23yzlg6sb65ricelpokq6hxrz5zxq6w6k4oe", 1054 + "vendor/@awesome.me/webawesome/chunks/chunk.2KZDHIGH.js": "bafkreie5bisay5dasjgeuqznipp5vfzn7ys3tdnumibzdxu6sc4p7enbki", 1055 + "vendor/@awesome.me/webawesome/chunks/chunk.2LCUCOAP.js": "bafkreiczciv6qhw6ug6gdvnzcyani4myectxrrg2rv5dm43gwteof4o5uy", 1056 + "vendor/@awesome.me/webawesome/chunks/chunk.2LXKNNNE.js": "bafkreid4zs5uylwdoegnpfu5cke6hugg3w52umoy3idbbixuwgv6jeqaue", 1057 + "vendor/@awesome.me/webawesome/chunks/chunk.2N4IEYIE.js": "bafkreifdxnaat22phsauww3b7rhze6u3vuydyfb5mdprxnkrilzzm64dsa", 1058 + "vendor/@awesome.me/webawesome/chunks/chunk.2PPJ7PQH.js": "bafkreifvucs6k6nnrt52kxl4dw37sc4ivmlli5ysv6sxdpvnayz4quc3oe", 1059 + "vendor/@awesome.me/webawesome/chunks/chunk.2PWIIYRH.js": "bafkreiba4sjbklyg2a76ovdq2jjt3mq5dwx6aertum6lnrgmchdgzjrmxq", 1060 + "vendor/@awesome.me/webawesome/chunks/chunk.2RF2MKWI.js": "bafkreie5ut2sxr5foj4vf62q5bmxax47oydvrr2xei36g6rr7hkmhoarmu", 1061 + "vendor/@awesome.me/webawesome/chunks/chunk.2SVFXWQ3.js": "bafkreidczvoan5kkvaifeb2tbxps7v6jcvneaz7oupk7z7lkdgd2gjaibm", 1062 + "vendor/@awesome.me/webawesome/chunks/chunk.2UDUPMFW.js": "bafkreigzgvj7tkkxqvn4qdttiij3zmq3tgtewjfxbbc3k75t2sr4poicny", 1063 + "vendor/@awesome.me/webawesome/chunks/chunk.33G4LE7T.js": "bafkreihd76xbkrkjivj43j44yfelienzwz77yshals5tgesesd5fmkawym", 1064 + "vendor/@awesome.me/webawesome/chunks/chunk.346V4PTX.js": "bafkreifb5vu6qrt5p3bgqlnzezwtdkghf7dsildosjqnyuo7oobadtvjwy", 1065 + "vendor/@awesome.me/webawesome/chunks/chunk.37LBVLGM.js": "bafkreifiirejrxvtif4n3xb2dh2jrl6dvgstgupytnwnnt4cymr4hrzp5i", 1066 + "vendor/@awesome.me/webawesome/chunks/chunk.3KBWXBDY.js": "bafkreidpfmvn4zdtjnzv3h5k7kkm6ptbkw3onhq3bouvrvlt5zb4evy5sa", 1067 + "vendor/@awesome.me/webawesome/chunks/chunk.3MSWQ3RG.js": "bafkreienbxbbdstc44nax6epnrbrebyw7bojt2a25djhv4myypfr6itegu", 1068 + "vendor/@awesome.me/webawesome/chunks/chunk.3NKIHICW.js": "bafkreiflbe67bbcg5omizde7l6k53w4vpkjdjseor4erycawpujz76xufi", 1069 + "vendor/@awesome.me/webawesome/chunks/chunk.3PFZGTAJ.js": "bafkreihgcbnr7pzltmvp245xhxixez5z6sztssx6k4w5yoh5bauvc3solq", 1070 + "vendor/@awesome.me/webawesome/chunks/chunk.3PKQGQOJ.js": "bafkreidwtepcwgvbo2gklfqfgipltobc26xtubrk5dzw4dmviahgtwof3y", 1071 + "vendor/@awesome.me/webawesome/chunks/chunk.3V4ARLUJ.js": "bafkreif6dhhiw2afesl2tev6qa3yurkn2qjfivixfxvfqhmwmmprovtexy", 1072 + "vendor/@awesome.me/webawesome/chunks/chunk.3XPJKXEA.js": "bafkreihlxxfl5w5fghuxdsowozxv7y5m5byewkqzjhxwbm5yxeoyxvvujq", 1073 + "vendor/@awesome.me/webawesome/chunks/chunk.3YYMF6GR.js": "bafkreidrwk2mese6zxipwcxy7p4itcekenisanbzar25encafjrhlm5kwm", 1074 + "vendor/@awesome.me/webawesome/chunks/chunk.3ZKWV7KX.js": "bafkreif3lgpzmv2wx36tuy3e6lld4yefuzwvzs4aefgbzbh7jf64gx3fyy", 1075 + "vendor/@awesome.me/webawesome/chunks/chunk.4BS7GHFD.js": "bafkreihpgolnv53zqvi24sg4okhwhh6b4oyg6mf2mkpmapuwhktyf4jit4", 1076 + "vendor/@awesome.me/webawesome/chunks/chunk.4VXUYGRW.js": "bafkreia72623y76mbesrxhe7nhrsqhfpvqy2ol6sxsmy7nhyietlhoguyi", 1077 + "vendor/@awesome.me/webawesome/chunks/chunk.4YAZU4IR.js": "bafkreicc4pq6boinirq6vinf6pw4unn7vzbwbwy7ex3an7khtm5hu6tkni", 1078 + "vendor/@awesome.me/webawesome/chunks/chunk.4YO4UQSB.js": "bafkreidxk2bjv6mzqpobrbus3fsnuiofazkwb45asratotbm63k4hdumhm", 1079 + "vendor/@awesome.me/webawesome/chunks/chunk.4ZAKP7NY.js": "bafkreih2btvhtyzbplqk6utbzcwmtqjzmdf6i6ejzi52kkq66ltowrde2a", 1080 + "vendor/@awesome.me/webawesome/chunks/chunk.52WA2DJO.js": "bafkreihhwhwrnjeer7p32ooo3i3khxtmj7ezrxxkgxygz5l7apqxxgvvli", 1081 + "vendor/@awesome.me/webawesome/chunks/chunk.5AVTITY5.js": "bafkreicigw5mqopmusrvug7qd6twaimgzq3tvushecugerf3cipmbosbpe", 1082 + "vendor/@awesome.me/webawesome/chunks/chunk.5JZ3O7VS.js": "bafkreic4ujxrlzuzkp7727tqqdx3qxllqi2ydlqyxk26srhpfsmi5vtlpe", 1083 + "vendor/@awesome.me/webawesome/chunks/chunk.5KZ2OOTU.js": "bafkreidtss5ulhy7o53rdzr272erhcokq7w7awhdexle5gb4tl5ttt6ata", 1084 + "vendor/@awesome.me/webawesome/chunks/chunk.5RT6FRGZ.js": "bafkreiez5b5v2ttznbrb5ltewhg3ka63cjchmw526opolfxxuhbpwzkttu", 1085 + "vendor/@awesome.me/webawesome/chunks/chunk.5WM5WN7Q.js": "bafkreidezjnx66xcnqirncdnbyku6dcgsbvwymdcgnwmfiu33rxo5gpury", 1086 + "vendor/@awesome.me/webawesome/chunks/chunk.62KZ4YOB.js": "bafkreicyfzdrc3snc5pbczsfcalymy72tflunmzcazcjotddahakqqftja", 1087 + "vendor/@awesome.me/webawesome/chunks/chunk.67FTCK4E.js": "bafkreic5vtzmi7ortw45npdja34q5eb2ftyybw3arfbeti4oyznbgeyhbe", 1088 + "vendor/@awesome.me/webawesome/chunks/chunk.6ELKDWMF.js": "bafkreic43uo3vt4q7aawxr6l6f5a64dwjvtow6hwsjq4wyuhbcj4lkszgq", 1089 + "vendor/@awesome.me/webawesome/chunks/chunk.6GLHUJOZ.js": "bafkreihgkqquyyveeafwuz67oe4bjf3jl2brvj2ituwww7ydfrehzvpb2a", 1090 + "vendor/@awesome.me/webawesome/chunks/chunk.6GZW7A44.js": "bafkreie6thlmoa4gafmooo2vgpwg6ako2pldonulrgguxj2ugcl3zpriay", 1091 + "vendor/@awesome.me/webawesome/chunks/chunk.6SNQOYNK.js": "bafkreibt4lo7vr5lqddrfq5xl5aoizg3pxoj2timbqhkeuisujrmhccxmm", 1092 + "vendor/@awesome.me/webawesome/chunks/chunk.6WFYAIVE.js": "bafkreid7vbl7rpuweeqhvrxyfue7ydy6xzqsne4jsoksrfupk6ocgqhmm4", 1093 + "vendor/@awesome.me/webawesome/chunks/chunk.7BXWDFHV.js": "bafkreiccgplkesl64giiib7z7gnscxndw6q2x3lcdjytmqfxpaxgvjzx5y", 1094 + "vendor/@awesome.me/webawesome/chunks/chunk.7GET6FFQ.js": "bafkreigr5cvhc5sqvnqygxod3vv25g7zejuo2sus35v6f7y5k6d2ahaqzi", 1095 + "vendor/@awesome.me/webawesome/chunks/chunk.7GZL6M3M.js": "bafkreidjwsni4g34q4ujqhhnq74q7lulelfdezh7e2ibgvit7ov6axx6xm", 1096 + "vendor/@awesome.me/webawesome/chunks/chunk.7OBLIRXR.js": "bafkreihgabqpbn4cwnixwaav5xrdzmnevd672am35haza7x3do5qxs4lwu", 1097 + "vendor/@awesome.me/webawesome/chunks/chunk.7V5IXQH7.js": "bafkreidu47yaf6a4jei2qn75hkbrzeqxb6qndymcjdkroki5slqbhvut2m", 1098 + "vendor/@awesome.me/webawesome/chunks/chunk.AG44H7MD.js": "bafkreidn5ktlhmpprg6r2ovqdjg2oyazz7sb5xm4pugnzrv3hq45icgxum", 1099 + "vendor/@awesome.me/webawesome/chunks/chunk.AHGNBJDL.js": "bafkreihufrpejimgopt5xryjef3pulcs4jz5h7zipizazfgou2cz25zbuq", 1100 + "vendor/@awesome.me/webawesome/chunks/chunk.AIIMJL75.js": "bafkreifgkzcyeff6umie7ryek2z2kgspsk6jicxclqoo65uidycgrx5s54", 1101 + "vendor/@awesome.me/webawesome/chunks/chunk.AJDO4JA4.js": "bafkreicbdw5f7zpvrb5o7kyz4anakkk52sg7yni7ualksxvgufecz2lu4q", 1102 + "vendor/@awesome.me/webawesome/chunks/chunk.AN55MWWK.js": "bafkreia4nfjllm4suwilwfl57d4vq7jiirdv3gawqez7gvc5r3uiuufafu", 1103 + "vendor/@awesome.me/webawesome/chunks/chunk.B2NR2SDE.js": "bafkreieg6ko4oxr66ujqocjao2gdw6wokqeaeufnizqvjxbcrfevu5bhgu", 1104 + "vendor/@awesome.me/webawesome/chunks/chunk.B32RACHV.js": "bafkreihjsjewkcelf5cifuekpvqbmgpj6o4zr7ii7musdvhr6b52oxpl3q", 1105 + "vendor/@awesome.me/webawesome/chunks/chunk.BFXWLI4G.js": "bafkreicbkonvdaexejbuolyaa4xwsfjfqlcwa4mfwy4esi62ujechsdqri", 1106 + "vendor/@awesome.me/webawesome/chunks/chunk.BJHGYDMM.js": "bafkreievo45flm2p5wnnk542eyrv55hblcnh2ijesdhfqjv77yijudfckm", 1107 + "vendor/@awesome.me/webawesome/chunks/chunk.BKE5EYM3.js": "bafkreiet7qzmxhtxs5mlwjdaqvbnhjpfstgpx44zub2vfrb6bxg7vaugue", 1108 + "vendor/@awesome.me/webawesome/chunks/chunk.BMO76VKZ.js": "bafkreihhwldiqqrlw63gi7cnfgcwkjg6vei5hbqwgjkvq4jm7gry6m6y24", 1109 + "vendor/@awesome.me/webawesome/chunks/chunk.BQNDCXAL.js": "bafkreifikah57msayjjsbz465ehkwxebkiw6rwskp745xulrmvpok4v7g4", 1110 + "vendor/@awesome.me/webawesome/chunks/chunk.BRE7BVFH.js": "bafkreiaxfhhllfrm7qbtkjh4sc55imfkm3rj2ikjvef3a5jtbz53ma23wq", 1111 + "vendor/@awesome.me/webawesome/chunks/chunk.C2QHQYCZ.js": "bafkreicpzriiz5r4277tl4vhkp4d6w35h223jqrs66yozbpluxtgjf7spm", 1112 + "vendor/@awesome.me/webawesome/chunks/chunk.CAMEY652.js": "bafkreickxgj4qaexxaqaoixmg2fzychjx6mztmdppztoyhnuqsfwkzkfjm", 1113 + "vendor/@awesome.me/webawesome/chunks/chunk.CDXMMGZY.js": "bafkreiec4dggxqjmlvozvc7ejnvstgvs5anvvgvr5fg7jcevt7ygwvwtzq", 1114 + "vendor/@awesome.me/webawesome/chunks/chunk.CLPSCLGS.js": "bafkreial4fk3tsiabgqns2iltmhsdnsyoh3ko4nkcokiw72yvdopqx4zrm", 1115 + "vendor/@awesome.me/webawesome/chunks/chunk.CNH6RYYS.js": "bafkreicknmz2vt5zemj72it6td42hfqd5vz5jbgnecbrpaofby4pfdehv4", 1116 + "vendor/@awesome.me/webawesome/chunks/chunk.CQLRXX2P.js": "bafkreig4xbbl2yfp526rr3dtbno6t7hnyzfmif4demwicwrnitlbddm3yq", 1117 + "vendor/@awesome.me/webawesome/chunks/chunk.CSJW4KKV.js": "bafkreicdxjizjnqshzljpyucmkythdbc6mmt7epq6bufnyywimumcspdwa", 1118 + "vendor/@awesome.me/webawesome/chunks/chunk.DBMMBXIQ.js": "bafkreieqxa2ifgu6kpggfmamhjpkvqozpgbjubzggxc2lotm4uif44mt4y", 1119 + "vendor/@awesome.me/webawesome/chunks/chunk.DNBJR3U4.js": "bafkreicwjnoj4pdmmvcfblgfsnpzdxgldpozvau2b6lmcdtg2x2mkouuty", 1120 + "vendor/@awesome.me/webawesome/chunks/chunk.DOFHHKB4.js": "bafkreia3tz7euo3gdimngw2qdw3yiwpoayjynuuzgjwu33bnj63sklg4mm", 1121 + "vendor/@awesome.me/webawesome/chunks/chunk.DP5YIFD7.js": "bafkreiandkdarsswlz6f7rchfa4i46zkjmhug4vp7atjmu4ur6qol3asky", 1122 + "vendor/@awesome.me/webawesome/chunks/chunk.DQOIFYPE.js": "bafkreie5fbat3tx5s5uk3do7shudz3a3viozhcur57di2apvi5ut6atewq", 1123 + "vendor/@awesome.me/webawesome/chunks/chunk.DR66HKSC.js": "bafkreids3ihbsx74s24oknsgwozbt53u4qc5zx547a2hdczacop2id4rbi", 1124 + "vendor/@awesome.me/webawesome/chunks/chunk.EAVEURZ5.js": "bafkreih4byu7bjljba43euaimnqmtst3qoufmbws7rysz7uu7hrqqoj2ce", 1125 + "vendor/@awesome.me/webawesome/chunks/chunk.ECFPM6MU.js": "bafkreiao4kmix6e7a7pdtnklmo3akpu3m5licboksira345gc42y5sqefa", 1126 + "vendor/@awesome.me/webawesome/chunks/chunk.EF25YJJE.js": "bafkreicltdngcyrrq4bseb67ip4ccbroubimwy7m6t2gqisoitmghtspdm", 1127 + "vendor/@awesome.me/webawesome/chunks/chunk.EJKCAJIP.js": "bafkreias652rp2yv6iyzor7b6drxwavjk7y2o2w6trupkwa6wovfjwxtwi", 1128 + "vendor/@awesome.me/webawesome/chunks/chunk.EL5ULUOC.js": "bafkreifxyvr4gtix5nbxmsu577sqngz355csw3uwdoikirwgcxdjosd4ay", 1129 + "vendor/@awesome.me/webawesome/chunks/chunk.F25QOBDY.js": "bafkreidgy2zginps3tr2jjjeailxv4kqzfia3nh6w2art2u2qp3je4bh7u", 1130 + "vendor/@awesome.me/webawesome/chunks/chunk.F4GQ7D5O.js": "bafkreihexhekf7jk6qcv7jb6lnid5nglkc4mn5zb27wjm2xxkpcjiqr35y", 1131 + "vendor/@awesome.me/webawesome/chunks/chunk.FDYDBGOC.js": "bafkreicwq6s2n24sgrjdgjf7dtpgdvzfz3dtwx6ipocr4q7tt7whwkleii", 1132 + "vendor/@awesome.me/webawesome/chunks/chunk.FLK7JXPG.js": "bafkreihuln64smbod6zbaf6lzaz5jxoxw553ekczfryzu6ofvumkguexxa", 1133 + "vendor/@awesome.me/webawesome/chunks/chunk.FSRXYGSW.js": "bafkreiglfz4vgqddn6ckmps4bvw5a2ykq5ip3toash6qsscn3yujkwbwmm", 1134 + "vendor/@awesome.me/webawesome/chunks/chunk.FUDLASS2.js": "bafkreic3pqndgupajse7ntlqhlaeuk2nte7y3p2cbdmi5dsquh73j4tgeq", 1135 + "vendor/@awesome.me/webawesome/chunks/chunk.FYKN76UA.js": "bafkreibh2i4uchspsdqtei5wnmv5kbo4arhlef2kzes2ampep6x5isosai", 1136 + "vendor/@awesome.me/webawesome/chunks/chunk.G5CEXYN4.js": "bafkreif2uuqhqcw3ouw2hcc4np5f4hhsicxduqkaamsk67jok6qnyhzi74", 1137 + "vendor/@awesome.me/webawesome/chunks/chunk.GNS5PRYD.js": "bafkreibfejnqkebtfojacllrvbgwbwlekgna7mwq4kucjicguromzgy7fy", 1138 + "vendor/@awesome.me/webawesome/chunks/chunk.GPOYCJQQ.js": "bafkreib7v4e35tga53jt24dzkah4xd6afq7kouk74oxz2qrpcxhztqtyle", 1139 + "vendor/@awesome.me/webawesome/chunks/chunk.GRV2ULZ4.js": "bafkreidj33dysxmjopxck6dnapgbs6ce4r3qwcwoou6gq74eviwgkwoamu", 1140 + "vendor/@awesome.me/webawesome/chunks/chunk.GUXG4CKE.js": "bafkreielz37jikanw6kuo2lmg232nu3pamonqqbkerayu3m3rpwu2gxgny", 1141 + "vendor/@awesome.me/webawesome/chunks/chunk.GWV6SRET.js": "bafkreidufdmvuhszutql6qxh4cdmtdxvolhatzbv57gny7sxmqwrzuwvua", 1142 + "vendor/@awesome.me/webawesome/chunks/chunk.GXMHI3BM.js": "bafkreibklwikeeklss2v2jwthpdy2p3xsinybgfdr2eipfyrc4gpfvvziq", 1143 + "vendor/@awesome.me/webawesome/chunks/chunk.GXPDMFEM.js": "bafkreiebl56d2rxarwe7j37epjkhgyqsnzsco4y326lonpoedrk2yt5afq", 1144 + "vendor/@awesome.me/webawesome/chunks/chunk.GY7O4RDC.js": "bafkreicvvmswnjm3rsabqdsfe2ma5ao5pmdx46mr57eazl3d7z4fwcidxe", 1145 + "vendor/@awesome.me/webawesome/chunks/chunk.H23DVATU.js": "bafkreibwkvpzaulgw5v6d5wjhzvjccwe6rdpozg25e2fqgwe77kczc23je", 1146 + "vendor/@awesome.me/webawesome/chunks/chunk.H7TA73OO.js": "bafkreicinyxdbqc5zrl2kbetzygqzwsmoshdeguvpdfux6z4ellcd4sa6i", 1147 + "vendor/@awesome.me/webawesome/chunks/chunk.HFMHGWFW.js": "bafkreif6cq75peejgznyv7id5yfywiabvp3jq75raprw6zlbtipxyqelci", 1148 + "vendor/@awesome.me/webawesome/chunks/chunk.HPOJN4W7.js": "bafkreignr3ka4bufdrvfjzpnrwteopfidebwrnzf44ipkvbp6hi3y7ol7y", 1149 + "vendor/@awesome.me/webawesome/chunks/chunk.HPULLNVR.js": "bafkreiaqbyneffx3xxquoy4k3egmitpdfyemwddrinw3u63wmtgjdd5zaq", 1150 + "vendor/@awesome.me/webawesome/chunks/chunk.HQ3KF6CE.js": "bafkreifzy577e4gr6tk5rxbr7bjlup32gtjvmvmrrofvtnfcacekwxlsfm", 1151 + "vendor/@awesome.me/webawesome/chunks/chunk.HYCA6KVN.js": "bafkreichdbsu77wzhpqrbcwxnhsj5p3tabof3ppoejsabmrwkskvj6jjgy", 1152 + "vendor/@awesome.me/webawesome/chunks/chunk.I3SFSSFT.js": "bafkreieddk55i3y3pfdfpzni5dy7nbpmeodvkplbkj5pftdr4vozludnpm", 1153 + "vendor/@awesome.me/webawesome/chunks/chunk.I4KXAHPX.js": "bafkreietbo2jrotb34inxhzxmjfegmdupybmnmcj6zfh2gf2crunrpjym4", 1154 + "vendor/@awesome.me/webawesome/chunks/chunk.I57IM53V.js": "bafkreif3h3kaqaq634bejgg5e7utq7mavfdcouwxumzyq3yabnnwizzj5e", 1155 + "vendor/@awesome.me/webawesome/chunks/chunk.IGNZS56Z.js": "bafkreifla6pwpsr3f6bmuh5e47jliqkuruwfdxauozzu6sng6jvzal3nse", 1156 + "vendor/@awesome.me/webawesome/chunks/chunk.IIHGIRPB.js": "bafkreibajittm3umrkiqcklo6bfqods4oxte63m3iy4ur2if74l73dqc3i", 1157 + "vendor/@awesome.me/webawesome/chunks/chunk.IOJQZIPW.js": "bafkreicavqzpcvhplu56dixzfpmhn7gd3jqtw4rz6pumse2c4xz6xaq3qu", 1158 + "vendor/@awesome.me/webawesome/chunks/chunk.IYXV6LE3.js": "bafkreibstm4ksaezzzf6azgdgduugztb6yjeygtpczf3bie765dqf6ktxu", 1159 + "vendor/@awesome.me/webawesome/chunks/chunk.J5K2HSE4.js": "bafkreif2uv6xx4mcjhb5glzlwc27s7aols26ufa4h274ryahfranoomrz4", 1160 + "vendor/@awesome.me/webawesome/chunks/chunk.JHXED5NM.js": "bafkreidkraiyqxnlmkmjxz3weicax7l4rixzahdkrwaske7h4jgmvhx7ja", 1161 + "vendor/@awesome.me/webawesome/chunks/chunk.JQ3IWABX.js": "bafkreihgvqlxchgymquknz2fihnmhcofc7zz4kp3j7zuxz52dgg2qlb2lu", 1162 + "vendor/@awesome.me/webawesome/chunks/chunk.JR2V3NBQ.js": "bafkreifx4p73tx6hqxvxvumgnl6uwwbv2baquan4se63csvicv74iegafi", 1163 + "vendor/@awesome.me/webawesome/chunks/chunk.JRPGUCID.js": "bafkreibf246wvc3ryvs2gwzidfv6qrzu5fzwp7wakwymgjn4xstborw4te", 1164 + "vendor/@awesome.me/webawesome/chunks/chunk.JTOY5KP3.js": "bafkreidko4smdghi42zhny5vkyg5iiwnhvafxzjnwstwgrpm6wzd7eyvmu", 1165 + "vendor/@awesome.me/webawesome/chunks/chunk.JTQYTLMN.js": "bafkreifq5bea22aqr74akzx3sga2uubccn72iyzepprqvdqzf53ihrqbs4", 1166 + "vendor/@awesome.me/webawesome/chunks/chunk.JVTAGR5B.js": "bafkreih2ztm5it25cpzltgg7ijxfbnyy7bkoqbmqpdrsbnvy5fqazbf724", 1167 + "vendor/@awesome.me/webawesome/chunks/chunk.K5BX3HGV.js": "bafkreickmhyurtqd2jf6u4wz3mtfl3rpwghah2la5x5bgrbf2kbfgasi3i", 1168 + "vendor/@awesome.me/webawesome/chunks/chunk.K6QMUIHP.js": "bafkreie66nvm7yfxirrkhscol7pmeyxpfsvyfo75z65w4lxqff4rqxgflq", 1169 + "vendor/@awesome.me/webawesome/chunks/chunk.KBS6YHTA.js": "bafkreif27qowm22o2zc6fk6kiduv6gektnor7dtssuvdkf662w4qffihkq", 1170 + "vendor/@awesome.me/webawesome/chunks/chunk.KESSODMC.js": "bafkreibqfzafqjxhjptxfpzx3spriarh2p3lbhx4obhu6ljtzaezrp5c4e", 1171 + "vendor/@awesome.me/webawesome/chunks/chunk.KIHB3VMB.js": "bafkreidekp44jyy2irdz7j256bgdlfkd4c4cq4g7zqcwh6d76myhtzahba", 1172 + "vendor/@awesome.me/webawesome/chunks/chunk.KPN3YZ6U.js": "bafkreihrm54vbuh742znjjuck2b4yyl5cpyf4zbifbphtuogi3saeakupu", 1173 + "vendor/@awesome.me/webawesome/chunks/chunk.KPY3CJ6V.js": "bafkreiamamntliha6ppq7wmczunclinp2wjmtiinqjauijlxq4o5juz33m", 1174 + "vendor/@awesome.me/webawesome/chunks/chunk.KVSFINAV.js": "bafkreihi3gmkt524zvx6b623xggmvudefkyufq2mtmvxuhpduwrwvomkbe", 1175 + "vendor/@awesome.me/webawesome/chunks/chunk.KWDPKKFO.js": "bafkreihzxfwibtudowbtgtp32df6j24f7ukr3xzilegya65yjft4csrjyi", 1176 + "vendor/@awesome.me/webawesome/chunks/chunk.KZUC2H3V.js": "bafkreicno2nqwdos4r3avkiq6alakbzliuznznbjskd2ufi3eacjn6gz6u", 1177 + "vendor/@awesome.me/webawesome/chunks/chunk.KZZR6Z6I.js": "bafkreigvvcktpwgy2vwmbm2gkz5ki5b6vlj6tiixzeozxos5ffgefb2dr4", 1178 + "vendor/@awesome.me/webawesome/chunks/chunk.L2BJ53WH.js": "bafkreicvu7mnpj7vd7fuao7fbuvo67cyv4vw7wrcaxz2godxrx72dc5bvq", 1179 + "vendor/@awesome.me/webawesome/chunks/chunk.L6CIKOFQ.js": "bafkreia6ijugtxxi45s7zaanvvaygwsomczlrivwor2axfjvcohzkwmoni", 1180 + "vendor/@awesome.me/webawesome/chunks/chunk.LAELRVAO.js": "bafkreie3y7tvgj5wyzrtvwvcntxgg2px3adxhbkqbhnfzpqr2bmwenzw3u", 1181 + "vendor/@awesome.me/webawesome/chunks/chunk.LC3764TJ.js": "bafkreigzsasykhronbo4rf4q3ygaedw7yn7kkp5vz724wyn2vygsj7usua", 1182 + "vendor/@awesome.me/webawesome/chunks/chunk.LC7FD3GB.js": "bafkreicdcwwufe2lemw6jdgf56nwm5k5ujbom2jm7aqzajbjf7knam5j4m", 1183 + "vendor/@awesome.me/webawesome/chunks/chunk.LCFSCRUJ.js": "bafkreidlo7257a4juuraotl6czzijvsidzholz27y2opo56upjpnxpcbk4", 1184 + "vendor/@awesome.me/webawesome/chunks/chunk.LH72HXK6.js": "bafkreid7xzfhbbw436ojsadxpiqfd4hjtcnacpu5cby5fxbkl26qnv6c6e", 1185 + "vendor/@awesome.me/webawesome/chunks/chunk.LOMMLZPR.js": "bafkreibh2ble7blw3lhjbqllh55n3cdfd4ohif4bhs7vu3un7hny6a4tjy", 1186 + "vendor/@awesome.me/webawesome/chunks/chunk.LRYJ2M5H.js": "bafkreifbp4ilnnnlrrvhxvfvr7bitfy4fp7s2mnge4yltyyg4t2bozjzl4", 1187 + "vendor/@awesome.me/webawesome/chunks/chunk.LUTWAHOL.js": "bafkreiajnptxbj5ps3uajcrbqjewhes2whjiqnfadhduybjqqepcfxuvyu", 1188 + "vendor/@awesome.me/webawesome/chunks/chunk.LY4FQ3ZV.js": "bafkreicbsbn7z5f3gakmoms6netlr42wco3b2scjmjpno5wsc5kpaqda6q", 1189 + "vendor/@awesome.me/webawesome/chunks/chunk.LZHEV7NA.js": "bafkreidby5uplk44qnoft7iswmy5twnntljvqxtqv3rgf6zco5l5fs5jo4", 1190 + "vendor/@awesome.me/webawesome/chunks/chunk.MAFCUMJD.js": "bafkreiemsyxfkno4nowdpujlpgyvcdvgu4pqby36pb5fmjvp5bmv6stp3q", 1191 + "vendor/@awesome.me/webawesome/chunks/chunk.MAHGF7JK.js": "bafkreib2r5qwwtemuj6np6vsqrjxk5dibnao3ev765b7eargatftzzxu5e", 1192 + "vendor/@awesome.me/webawesome/chunks/chunk.MELUIIBM.js": "bafkreibx3t444q35r5e2oa42c4s2awzuywadnvkjnczui65vviaq3kufiy", 1193 + "vendor/@awesome.me/webawesome/chunks/chunk.MEYJNQF4.js": "bafkreigce3scls5i2mgxvoidqeebnwn22sftvch5fryqcc3jb5nd7ygyem", 1194 + "vendor/@awesome.me/webawesome/chunks/chunk.MN256RSG.js": "bafkreihixtldyf2eh6ttn7a76iizv5st6udxc7n4qusxlcmrxqhirbby7e", 1195 + "vendor/@awesome.me/webawesome/chunks/chunk.MQLU5KE6.js": "bafkreifpujm33wip6yn4edsarzojqlws7mebdyuab2fdu6iupwdja752li", 1196 + "vendor/@awesome.me/webawesome/chunks/chunk.MQODJ75V.js": "bafkreigxf2udlu7ob6zp6kiavqsvs5c7lbhjwkgj2pihutxy5xka7qzwti", 1197 + "vendor/@awesome.me/webawesome/chunks/chunk.MRDAZANX.js": "bafkreihcpi3f3fgh52v2ua6mpxtayu4yiheuznisfbwoxvd24fbrxngu4i", 1198 + "vendor/@awesome.me/webawesome/chunks/chunk.MXHGJIUP.js": "bafkreic72yx77ilk2wcg6tzy5tvvmhqm5xzwn4cak7mnedwmfewbflnp2q", 1199 + "vendor/@awesome.me/webawesome/chunks/chunk.MYPDM7WA.js": "bafkreic23sw36kpr43jr3grelkcudwsm6o5rflvy7naskeergwdyoh6yoy", 1200 + "vendor/@awesome.me/webawesome/chunks/chunk.N2QWXH2W.js": "bafkreiajjbjpojdff6lfet3dowxakkjkoqwh7oigd5p34hhpz6pmhmkhue", 1201 + "vendor/@awesome.me/webawesome/chunks/chunk.N2TXQSKF.js": "bafkreif27qowm22o2zc6fk6kiduv6gektnor7dtssuvdkf662w4qffihkq", 1202 + "vendor/@awesome.me/webawesome/chunks/chunk.NAF26OZL.js": "bafkreiee4thsvoykk2jggcfpar56ki3zapbrscizghks5kycba5kq4p67e", 1203 + "vendor/@awesome.me/webawesome/chunks/chunk.NCTGNL46.js": "bafkreihlyjw7pzufowd4jwadv3thixi5noxzoc5s5vklbqlsoawnj7cpmm", 1204 + "vendor/@awesome.me/webawesome/chunks/chunk.NY2PQ35L.js": "bafkreib2bg3ukfziz72y4ixsu5sl5th7e6dktyxsf5tdakrhug4ojbo2aq", 1205 + "vendor/@awesome.me/webawesome/chunks/chunk.O6IZ4I7T.js": "bafkreih3a63fjdmibky4bveuyfuzjqmxiwsoso22wsou7uttrgkmaqztga", 1206 + "vendor/@awesome.me/webawesome/chunks/chunk.O6YZRY24.js": "bafkreib4npddpucqtgyi4ez3ul7ppaon7zkedtqz3a5lb3axjeueklhddu", 1207 + "vendor/@awesome.me/webawesome/chunks/chunk.OH2UNY4J.js": "bafkreihvgurrr72xbijhvalrdsb76bbfisnviu4qsloz54kzdkqcnt2iwa", 1208 + "vendor/@awesome.me/webawesome/chunks/chunk.OJH6FSGP.js": "bafkreifnsogvnl6njfrp3r3revkin7dmxur6jf4mpznfigwfwtbzgxp6ry", 1209 + "vendor/@awesome.me/webawesome/chunks/chunk.OWXHWWWF.js": "bafkreicbaix42z73gw6kx2lvl462pbgg5b24boe7ijmxmfue35umpzmfym", 1210 + "vendor/@awesome.me/webawesome/chunks/chunk.P7AOIZJ4.js": "bafkreidjazye4hk56antt5ixl4o4ou4bkjdmb4g6ynyx3blrjkk32tbxvi", 1211 + "vendor/@awesome.me/webawesome/chunks/chunk.PG7PUEIB.js": "bafkreibljcjtaekeeptisngrmtl2tuoqkalldo735jvaxnc7bzxww6tjti", 1212 + "vendor/@awesome.me/webawesome/chunks/chunk.PMZH6TLQ.js": "bafkreihyramqkoprmmnqyo66aqtl5kwkqeoq2shkiy3jia4f4vccfsbr2e", 1213 + "vendor/@awesome.me/webawesome/chunks/chunk.PVS44CHC.js": "bafkreihe5h7qsdnksgalng2psxtzvesar3bigrwlrfdjzjmmx6bpgrvyl4", 1214 + "vendor/@awesome.me/webawesome/chunks/chunk.PX3HMKF7.js": "bafkreifu6lnrts3iyzoxufvf7br4y52fwuaymmzbfhvk6u4zjmhqdfq44i", 1215 + "vendor/@awesome.me/webawesome/chunks/chunk.PYD5CSTK.js": "bafkreihevhd6wqlivovjh642vkd73hpzht6c6qzdpqjs4forbcna6slnla", 1216 + "vendor/@awesome.me/webawesome/chunks/chunk.PZAN6FPN.js": "bafkreicqqqrep7p23efyambepafk3oqwj7vu7fckkws7jbivgsj6m43zve", 1217 + "vendor/@awesome.me/webawesome/chunks/chunk.Q6XMGFWJ.js": "bafkreig2qrl522osivpqel5j73c6hrnajzrgvgtvul5vyxoehbnnokwlqy", 1218 + "vendor/@awesome.me/webawesome/chunks/chunk.Q7HDHQNJ.js": "bafkreiftfgrwqoozpvxbh3i4otlyf43rv2iw2bp5x4xic57vnh3apmfzbm", 1219 + "vendor/@awesome.me/webawesome/chunks/chunk.QAMJWMA2.js": "bafkreigmuspfkxyp6mkdjolmz32v6cbupq3hydub232iapjaxxizeimc7a", 1220 + "vendor/@awesome.me/webawesome/chunks/chunk.QIG4AMWU.js": "bafkreica4hwslgks5myesgxkbll6737s3zif5di3j3zy6xsj5f5oss3wue", 1221 + "vendor/@awesome.me/webawesome/chunks/chunk.QMGDRBE6.js": "bafkreifjsnwecymk4tifondyfmixvyei6qtqte7ko23fno3znjups4nxzu", 1222 + "vendor/@awesome.me/webawesome/chunks/chunk.QQ52TYKR.js": "bafkreifyafb7mz7dwelo3zqlh7vbegwc6t2lv22sjfniijgcmcxnjuuvpa", 1223 + "vendor/@awesome.me/webawesome/chunks/chunk.QRWQT2VJ.js": "bafkreiclr7tj6uy5m2ldbmx34q2hvbticagrp2ptyiilmaladtyk43tgdy", 1224 + "vendor/@awesome.me/webawesome/chunks/chunk.QVU4R4OL.js": "bafkreiaa3gccgtv3umff7qze32ycdsdubgc3u43wf4oaa7srwrq6t633oq", 1225 + "vendor/@awesome.me/webawesome/chunks/chunk.R7QX4M6R.js": "bafkreidqzomkoohewzetqrjlhmtjsn7fwh5sgbry2aku7rknssivtqypfy", 1226 + "vendor/@awesome.me/webawesome/chunks/chunk.RF2N6EH3.js": "bafkreiewya2oi7jkrjhc47eyw6ef6xghfqdl3pp5nwwdsxeoladyfomsia", 1227 + "vendor/@awesome.me/webawesome/chunks/chunk.RIWG3BWH.js": "bafkreie6yrg7mogqwtskbitl7itrgjhobqccgaf73kbq2yaaumcdwtlyfq", 1228 + "vendor/@awesome.me/webawesome/chunks/chunk.RMJ4JAGK.js": "bafkreifnp6lvf5gwpautpioqmoo5m7dg66srk5rmytunhw4fvzmkzqcbm4", 1229 + "vendor/@awesome.me/webawesome/chunks/chunk.RMZ7BVDM.js": "bafkreidgxmd5shb7awi6qsqi4kyqraygbbfhciouo7ntemi62pfv3heqrm", 1230 + "vendor/@awesome.me/webawesome/chunks/chunk.SDDRXMOC.js": "bafkreiaxhcrgik7zlmmksu7bd7swjunmrkhredwyfjuwsyxe5dm35foxkq", 1231 + "vendor/@awesome.me/webawesome/chunks/chunk.SKLR37OM.js": "bafkreiduffv4t45mo2mjt7h6pcrmcyscdzgob2mllqrt5knghpcuvsm3lq", 1232 + "vendor/@awesome.me/webawesome/chunks/chunk.SUZGY3IK.js": "bafkreiefajqc7vu2etfkp4qpzk7fprmqpmfc7mu2siuxtay3dzuzgzeq2a", 1233 + "vendor/@awesome.me/webawesome/chunks/chunk.T3OVPJUT.js": "bafkreicsatd4nrz37vnegemm7rwgwulksakczesd6m3euy7kjfknp3rsti", 1234 + "vendor/@awesome.me/webawesome/chunks/chunk.T4XXMSJ3.js": "bafkreid55nswxfsmgw52qauno7mx5upuf5u5d4xrgpif5xdz7qge22fvxy", 1235 + "vendor/@awesome.me/webawesome/chunks/chunk.TEXHMVXN.js": "bafkreichjfnehnr2davu2gskxzpby3cgf6bhufnv2kf5isnmd45ema2hsq", 1236 + "vendor/@awesome.me/webawesome/chunks/chunk.TH2X3W4P.js": "bafkreihghwax4dx6u6l2r67oq6ac7ig3bedsiqq5hlwq6aqvuhoy2le6iu", 1237 + "vendor/@awesome.me/webawesome/chunks/chunk.TMRVCQAY.js": "bafkreiaaqlz2hy5b67eemhwpy7ymots7p6hnz7x6hkqu7nu4gdadxqm47a", 1238 + "vendor/@awesome.me/webawesome/chunks/chunk.TONLV6I3.js": "bafkreib6rhs6telqusra4fymquhfusbjplfj5kg24gc3o4lntkscnipwou", 1239 + "vendor/@awesome.me/webawesome/chunks/chunk.U2AYBAKX.js": "bafkreidlwwz3ozsw45c3qtaq2tbaqdgz3ja2wzbf6s4qohfpxakjgbxtce", 1240 + "vendor/@awesome.me/webawesome/chunks/chunk.U36KZLSQ.js": "bafkreihtphvy4zz2bsvpw2k2yomzipeqkelpiz7q4asnoe7m5pydslkuey", 1241 + "vendor/@awesome.me/webawesome/chunks/chunk.UDJHQDK7.js": "bafkreicobtf26vs2pxshwtbixxq4iry5li64isstu47u5wwdcbmtfw634e", 1242 + "vendor/@awesome.me/webawesome/chunks/chunk.UF4WDITO.js": "bafkreic4uvzazflcncsw6anbeboezflhf6e4pvct377f6mcvf3ana4g6uu", 1243 + "vendor/@awesome.me/webawesome/chunks/chunk.UGUGWXGF.js": "bafkreifj2gee5ijwt6zcee46ylkzf342m2yjqirfgajvlsr3omyt4253lu", 1244 + "vendor/@awesome.me/webawesome/chunks/chunk.UHKNUHVA.js": "bafkreihymh4ctqhhm54qh4glfuyahixmhfnjsopb32w6aoahu2jzam4liy", 1245 + "vendor/@awesome.me/webawesome/chunks/chunk.UKQL3GJV.js": "bafkreiaocfpdjpixtru2w4ukl7stigtz4aa2ve5akcxjvsjhroccwyb3p4", 1246 + "vendor/@awesome.me/webawesome/chunks/chunk.UMPX66UO.js": "bafkreidcsnuawxld43bawobqunkb274xhn3m3v2heschpfa4jmlx2olhlq", 1247 + "vendor/@awesome.me/webawesome/chunks/chunk.UUXXLSO6.js": "bafkreid4mcbfxwcbmh3kvttjllyaqcea226onxx5acpqqi5u7vv4rlnbru", 1248 + "vendor/@awesome.me/webawesome/chunks/chunk.UVLZVEH2.js": "bafkreidw7q5l5lfx6ip3qmxl5bsingvvpbjds3cxh6phgz4vwns3erisnm", 1249 + "vendor/@awesome.me/webawesome/chunks/chunk.UVUZFIZX.js": "bafkreidsh5xjgkdv3d2uvjunxcjb7yslmasdeoqlshqyh5cznf3i7wm6uu", 1250 + "vendor/@awesome.me/webawesome/chunks/chunk.UYB2BRKW.js": "bafkreicozi7gtgpmzdmg7pkbukyejrqajlelmmtvame7plcwdmnxw3dbbi", 1251 + "vendor/@awesome.me/webawesome/chunks/chunk.UZM3B662.js": "bafkreia6tu4efovvuesycwjmualio5jxkldi6dk4xozxk3kgoevrs4tpne", 1252 + "vendor/@awesome.me/webawesome/chunks/chunk.VC3BPUZJ.js": "bafkreiarhwwu2e6ta6mk5arkcbao7ljth5afi26lpx4mmuvfor55z2z5gq", 1253 + "vendor/@awesome.me/webawesome/chunks/chunk.VH4CGTVB.js": "bafkreieczmaewa7wj5pgdjxddadnuyirnmt5kf367qwjjduzvkuylod7ga", 1254 + "vendor/@awesome.me/webawesome/chunks/chunk.VKVMGTNY.js": "bafkreia5iosdb4j3nsspjvs2r2husiefz74hquoxbgxfi5w4hpi7ihrx7m", 1255 + "vendor/@awesome.me/webawesome/chunks/chunk.VQZ46MYI.js": "bafkreigtawo5kjwju3a3cmdho5uk5f2loa4ul7p2nodip4rsw5rj5szkd4", 1256 + "vendor/@awesome.me/webawesome/chunks/chunk.VWU24OZA.js": "bafkreif27qowm22o2zc6fk6kiduv6gektnor7dtssuvdkf662w4qffihkq", 1257 + "vendor/@awesome.me/webawesome/chunks/chunk.VZMYU7JT.js": "bafkreigbp5wl3qk7uenpgjjy45ktu5x7jgek43abzkmtdhsl46y762j2aq", 1258 + "vendor/@awesome.me/webawesome/chunks/chunk.W7N25SYR.js": "bafkreihlo75sdy3bznqvmctjnrukyhcb2huiodp2vasr4zlvjcmy7bscuq", 1259 + "vendor/@awesome.me/webawesome/chunks/chunk.WAPTDIMR.js": "bafkreicy5xosavihpw3osuoibqlquqmjqeietuvrliqyqtfrkkm5bpixpq", 1260 + "vendor/@awesome.me/webawesome/chunks/chunk.WBEQDI45.js": "bafkreifajotsowmrvqswlf5scjtbehwj3c3aljobc6nehzyk57caahajrq", 1261 + "vendor/@awesome.me/webawesome/chunks/chunk.WDIIGUNP.js": "bafkreicng4a3kyfrcejp6bifei4zxmo4vvczwniuumtcpakpz73cpo67vm", 1262 + "vendor/@awesome.me/webawesome/chunks/chunk.WGFDW2LC.js": "bafkreif4dr6mbrijmiksqnam5ihj5tc6giq7ptjsrfjruwbqz5qa3lt7w4", 1263 + "vendor/@awesome.me/webawesome/chunks/chunk.WNF6ZKMU.js": "bafkreibfx3vhznarxryljxns2imnrzaeecbkieqwfk45n42mydhjizea2q", 1264 + "vendor/@awesome.me/webawesome/chunks/chunk.WVL3QW4Q.js": "bafkreidrisl42hhax7ggxjyemkkbfl4zfibfsnvkxhepkx7dbl5u5sdzya", 1265 + "vendor/@awesome.me/webawesome/chunks/chunk.WYNTFJHW.js": "bafkreiatqatsm7hq2pmdvbyznnf5cuc7uz64wf24d6ovugqcas2vl5rhme", 1266 + "vendor/@awesome.me/webawesome/chunks/chunk.X55YNZ3B.js": "bafkreiatjdscit42qkgm6g6kvxxzs34hvqqfixpswdbun6eqiii26pcwoy", 1267 + "vendor/@awesome.me/webawesome/chunks/chunk.XCGN6TEE.js": "bafkreiff7yi6armt2itamzy3p35cse4kuogzkmhqcnsrfyzsud3ri5rjfm", 1268 + "vendor/@awesome.me/webawesome/chunks/chunk.XK5OGDNS.js": "bafkreif4s6o5tbyvrcfdmzqhool37y7hj2wu5745figpgarwumt5nynixy", 1269 + "vendor/@awesome.me/webawesome/chunks/chunk.XO6QULQN.js": "bafkreigydvyj5qjd3mdhxgb2owui6loripeww4hwpvualmuuq2h4ejugfm", 1270 + "vendor/@awesome.me/webawesome/chunks/chunk.XU53ZZDC.js": "bafkreigtmeuccmrzkitllhk63qsd34r64bp4auwlv5bn62yoadj24bf7oa", 1271 + "vendor/@awesome.me/webawesome/chunks/chunk.XU6OCJGL.js": "bafkreibsxfcpyxcdusuygzhirfqoghuikgqubqtptd432n2epwdgcxfyoy", 1272 + "vendor/@awesome.me/webawesome/chunks/chunk.XW6BKGGI.js": "bafkreia2smahbgx4mky7q7ledpoqscfyscmskeaqgueh5fveweh5mlb4me", 1273 + "vendor/@awesome.me/webawesome/chunks/chunk.XW6K5DFW.js": "bafkreib7imrjv7fpa7rxan6y5kwrevl7sjfvcj2cuxqekmlcres55rfdgu", 1274 + "vendor/@awesome.me/webawesome/chunks/chunk.XZPLJ4VW.js": "bafkreifwcnidtuy7h26oxzofonrfbpbrbwncwmyxtdmyrdspxycki4f4ci", 1275 + "vendor/@awesome.me/webawesome/chunks/chunk.Y2DUNANZ.js": "bafkreif34uou6yitgbq6n3ivfy6fm7sp6rr2f4jawzebf66x24fs6kon6q", 1276 + "vendor/@awesome.me/webawesome/chunks/chunk.Y2EVO6QT.js": "bafkreig7wz2ge2ddiln7wnu5c3plfq2k4uulauqdqnlqoqmn5ws5ytdmem", 1277 + "vendor/@awesome.me/webawesome/chunks/chunk.Y4A3K2KA.js": "bafkreigf3tb2engp6vmmx5nszkwlutsdsm4kqarrvvd7m6gbtqqsklrp2e", 1278 + "vendor/@awesome.me/webawesome/chunks/chunk.YBFCQDTA.js": "bafkreibudi7lwu7crirhopvv6gcxqknmya3imu2pgecsyjtmi2si75ka44", 1279 + "vendor/@awesome.me/webawesome/chunks/chunk.YDQCS2HK.js": "bafkreibzzfu7fpgv7g7dzr4fgowkkqevq53cokf7lhfztgqrembefyqbd4", 1280 + "vendor/@awesome.me/webawesome/chunks/chunk.YNMVF3IV.js": "bafkreihvnpb7p5xdyn6qkb2md5tcfsvk6z6auc6msp3a3i4au7k2ux3gmu", 1281 + "vendor/@awesome.me/webawesome/chunks/chunk.YNSHTXP2.js": "bafkreia4stmhodrgxgbv7mmg7wnnup5j5jazsfvwdbyq3ccinambe6ivna", 1282 + "vendor/@awesome.me/webawesome/chunks/chunk.YPEIGA7N.js": "bafkreidolpmzmlshswksrii5ywsyvvjv5hdpy2zcba2bdxtdvlrlp2sksq", 1283 + "vendor/@awesome.me/webawesome/chunks/chunk.YY6Y7UJD.js": "bafkreidnhnq3z4i7ljehdlcaae65salkjv3yqepkrtnbprbyvzr7u6dyla", 1284 + "vendor/@awesome.me/webawesome/chunks/chunk.Z6BA4Q5K.js": "bafkreidcnttojjjybn4u5nl2n5nzvafxcwueumewdektystvynlv52ncxq", 1285 + "vendor/@awesome.me/webawesome/chunks/chunk.Z73FKN6X.js": "bafkreiavsmserakjb2xin5kyfcmk46wqqszbqdnfcpftxkjkpflyzmzbfy", 1286 + "vendor/@awesome.me/webawesome/chunks/chunk.ZBM6AQGG.js": "bafkreied6pt6oikoyeecepreaccdypcugyqorf6c2ev36yvjoc4oetuc54", 1287 + "vendor/@awesome.me/webawesome/chunks/chunk.ZJEOBL7L.js": "bafkreidlol6ntq2daxkqnwm4c6usevqkrrzow5pywzzk3dkctiobymvlru", 1288 + "vendor/@awesome.me/webawesome/chunks/chunk.ZKBU46IH.js": "bafkreiarlwrut2m2mjtwerc3qxesinpn4rzzq4piiidxdypqfht6jt7vla", 1289 + "vendor/@awesome.me/webawesome/chunks/chunk.ZSEFTQAO.js": "bafkreiftnxg6kouohn4bsxpa4hhosvggnsig4mjxae7zg4w5zrhx6kctbq", 1290 + "vendor/@awesome.me/webawesome/chunks/chunk.ZT4OZS6F.js": "bafkreic2ik3j4plp7sabcxqxnlmltdmzhcvrjjl7qwfnd77watvnrltunq", 1291 + "vendor/@awesome.me/webawesome/chunks/chunk.ZT5KI4AV.js": "bafkreigtdfuduwmsklnke2wyfv7eiv3piobmtsq6hhzgcke7ulq7xsvt3m", 1292 + "vendor/@awesome.me/webawesome/chunks/chunk.ZWQCGLB5.js": "bafkreievlaom6spuvnyznoyfklrrrapu76bzpf4m5eatac23lbvi7ifgeq", 1293 + "vendor/@awesome.me/webawesome/chunks/qr-creator.es6.min.WXLS2235.js": "bafkreibz3ptd6msyvgzctcfmj2cvyuwdokvewycxw2kgjfwtqwvac277bi", 1294 + "vendor/@awesome.me/webawesome/components/animated-image/animated-image.d.ts": "bafkreieariaky7ojuxauamspal4jdxfxhnpy7zzwydzkal7b7ev6z2om7u", 1295 + "vendor/@awesome.me/webawesome/components/animated-image/animated-image.js": "bafkreib7ryujfpx6gmuufhtqdmtn377vj5r5pxu5zre733565cnbq6hy6u", 1296 + "vendor/@awesome.me/webawesome/components/animated-image/animated-image.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1297 + "vendor/@awesome.me/webawesome/components/animated-image/animated-image.styles.js": "bafkreibnikuzz4il77x75fimmbbtc4k7nkxpelt5ytv4nxjldkd6mzxf4u", 1298 + "vendor/@awesome.me/webawesome/components/animation/animation.d.ts": "bafkreicshs3mz3zggiq52kespnmcxco2jbkyyx7hb2fdqc4aux3mxrk4v4", 1299 + "vendor/@awesome.me/webawesome/components/animation/animation.js": "bafkreiecba7ltrxtgrrrjopnoxynyicg45sgrtzu2kcjfdgs5qhdaath2e", 1300 + "vendor/@awesome.me/webawesome/components/animation/animation.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1301 + "vendor/@awesome.me/webawesome/components/animation/animation.styles.js": "bafkreifsl76r4hm7mu7f7eejj3dmfhk2ebzcs3f4bcxbacb4nvz4cqjwji", 1302 + "vendor/@awesome.me/webawesome/components/animation/animations.d.ts": "bafkreigmx7u3irifnctv6vkp5rv4kd5bmbnkbseykjl3rxbdptmyf4vtzi", 1303 + "vendor/@awesome.me/webawesome/components/animation/animations.js": "bafkreiawddaj6zmikp3x2qklye7vnjmoh6xjvg4i5mcmdu5qkk54zplyxa", 1304 + "vendor/@awesome.me/webawesome/components/avatar/avatar.d.ts": "bafkreidxws72i7mk5vzijsidqpujquiyqaow4y6gymg7yujdse7i3uh4si", 1305 + "vendor/@awesome.me/webawesome/components/avatar/avatar.js": "bafkreigavdqlv7e25lsd3sp2o3yitg3yinf2rqn3qhaua522ky5hxmiaku", 1306 + "vendor/@awesome.me/webawesome/components/avatar/avatar.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1307 + "vendor/@awesome.me/webawesome/components/avatar/avatar.styles.js": "bafkreicberzxkrvcndkz6btvsmpiqa42eau5oj2lbckal7nef3azi3kngi", 1308 + "vendor/@awesome.me/webawesome/components/badge/badge.d.ts": "bafkreigfgopwutduh3zo2dn4ob7ruzmrncswwwuizwwx4nj3rdr3loz7he", 1309 + "vendor/@awesome.me/webawesome/components/badge/badge.js": "bafkreiemxszzj7mdcjvrl5a36lhwm24hwcpnrdor4hrmqr3s4qtthlsa4i", 1310 + "vendor/@awesome.me/webawesome/components/badge/badge.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1311 + "vendor/@awesome.me/webawesome/components/badge/badge.styles.js": "bafkreige7bs5kh375r2t4ae5nflplaymyfkfo5czcs6ax232cowhkijxfu", 1312 + "vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.d.ts": "bafkreiajprhat7mc36655hpr4jmfm53nicax24bssuz4fuith6uxfuy2jq", 1313 + "vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.js": "bafkreihw57pwdqii5awy7gkxy7m6hfqtt26rycs4sotjgldfwplqpfev7q", 1314 + "vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1315 + "vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.styles.js": "bafkreifrurhgafr3ghjsdm2p3p46bm2wwvjxjimp7zerwyne6ttek3ebme", 1316 + "vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.d.ts": "bafkreihujg3uk22hlfwf5lk6qf6iovxwydx5xkmq6zb23jptlklqbwpq4u", 1317 + "vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.js": "bafkreig6wv44qlrmerzqpshj7vdujqjl4hg6kpyfhw7b7tvaoo3jzddjoi", 1318 + "vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1319 + "vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.styles.js": "bafkreigpgrocw37g65grydgfodzzg2wsuugvjzpv7pyzh5h4qtmfbsgiwq", 1320 + "vendor/@awesome.me/webawesome/components/button-group/button-group.d.ts": "bafkreihvywmasnlbhzh6j6aourubhnnjhrhbpgyvm66vwnecbyjjl76uqq", 1321 + "vendor/@awesome.me/webawesome/components/button-group/button-group.js": "bafkreiabd5tsv6szxf2yycaxj33g2owpiwhg56bujla7beryoov3naue2m", 1322 + "vendor/@awesome.me/webawesome/components/button-group/button-group.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1323 + "vendor/@awesome.me/webawesome/components/button-group/button-group.styles.js": "bafkreiama6wtafokc27riqcmgcocsq5cb2mskzwtxg2co4oshxrflccxba", 1324 + "vendor/@awesome.me/webawesome/components/button/button.d.ts": "bafkreiequndyoa44ton5ynhshh27lzhxsn6hufpiigibvnp7nr5dc3ypry", 1325 + "vendor/@awesome.me/webawesome/components/button/button.js": "bafkreib4qovapgp6o2jmyzb7usf2fgjodhxw66wczx2dhqtul3c2ecygzu", 1326 + "vendor/@awesome.me/webawesome/components/button/button.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1327 + "vendor/@awesome.me/webawesome/components/button/button.styles.js": "bafkreie5btz5hukjlnyllxxp6ni4bam4r7i7lf3ws3ixsv6dyga75r2uzq", 1328 + "vendor/@awesome.me/webawesome/components/callout/callout.d.ts": "bafkreifmcinw6b35ochodfzrmhq2wxbhpwoynx7rsbimkckgxisy4sviza", 1329 + "vendor/@awesome.me/webawesome/components/callout/callout.js": "bafkreiczdl3gf7f44vxxhgtzk4illrdlhnq4pw653zv6x2iydbqxxfrzmu", 1330 + "vendor/@awesome.me/webawesome/components/callout/callout.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1331 + "vendor/@awesome.me/webawesome/components/callout/callout.styles.js": "bafkreid7epf7r76kxwjothw4bu2mk5r7aij6ujehnvz7czrh6lqmxedxke", 1332 + "vendor/@awesome.me/webawesome/components/card/card.d.ts": "bafkreid3rjognljrpwfmwxfd3dplo5imokwzossf2ijy2y6tqecbdtph64", 1333 + "vendor/@awesome.me/webawesome/components/card/card.js": "bafkreiddvgjazps5gsu43hmsymnruipi7ygdrvmfqduhs6bstzwvnpdeiq", 1334 + "vendor/@awesome.me/webawesome/components/card/card.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1335 + "vendor/@awesome.me/webawesome/components/card/card.styles.js": "bafkreih5ekhrdi33jbrskaedmjv2rpwn77pdcpxsvswkqtoy5dda7dawom", 1336 + "vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.d.ts": "bafkreih3ys7e6xx7hso4nbl7jvyp5ucwnyn7mrxj5zh7opdbe3ll2isnya", 1337 + "vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.js": "bafkreigdcxoihbl3n6e5oinfctzhcllwfuw2wuyqytwi536ech5iyw6xfa", 1338 + "vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1339 + "vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.styles.js": "bafkreigl5hvkaeyofpskejgiryei7dqppytcbti5rhn2wigp6tbu54yi2a", 1340 + "vendor/@awesome.me/webawesome/components/carousel/autoplay-controller.d.ts": "bafkreig57oajn2qqu4nuycctdvmyghqmkrcppwpfa54e23map7hlve6f7m", 1341 + "vendor/@awesome.me/webawesome/components/carousel/autoplay-controller.js": "bafkreihda5gc4aj2nzb7sodtrcnjr64kj2u46qvrm67xwc3mzmljc4xlgi", 1342 + "vendor/@awesome.me/webawesome/components/carousel/carousel.d.ts": "bafkreic4b2j7snsdslqj5qgw66ybalpk3y4peuhfmokgnulnfkm6fm25gu", 1343 + "vendor/@awesome.me/webawesome/components/carousel/carousel.js": "bafkreigl3hdoepziii22zxpss3qcl7wmpzxfvg4jtjmsex55ymec6e2txa", 1344 + "vendor/@awesome.me/webawesome/components/carousel/carousel.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1345 + "vendor/@awesome.me/webawesome/components/carousel/carousel.styles.js": "bafkreifj4hw2b7mo5ligjwolo3gs4zpwsgkgrdvv2ag3vastovbd5sfpge", 1346 + "vendor/@awesome.me/webawesome/components/carousel/scroll-controller.d.ts": "bafkreib5nfygx7qzmnmiv7eh7nibit2wp6qlm3lypx4neoqlicflh5ifmy", 1347 + "vendor/@awesome.me/webawesome/components/carousel/scroll-controller.js": "bafkreic7hbiegrqc6wlwuw7ny6e747gabjifffrul7ircdoxifzuin2uga", 1348 + "vendor/@awesome.me/webawesome/components/checkbox/checkbox.d.ts": "bafkreibooi5idygncuinjdcks2jgvjsaxym6lufblijigl3dniy2ucipm4", 1349 + "vendor/@awesome.me/webawesome/components/checkbox/checkbox.js": "bafkreihbiz7mq253kesbptd2qycz3jezdqveyjzdbqi4nenvbjgko3hsfa", 1350 + "vendor/@awesome.me/webawesome/components/checkbox/checkbox.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1351 + "vendor/@awesome.me/webawesome/components/checkbox/checkbox.styles.js": "bafkreibh2arcknqru6opbpfgetn6laq2xfpv4pk6alcculqdsacfrgkfyi", 1352 + "vendor/@awesome.me/webawesome/components/color-picker/color-picker.d.ts": "bafkreiatsjy3cdwxlgb4cavuutct2wzxrxdudu2sv25xdx6iivhjwqr2cu", 1353 + "vendor/@awesome.me/webawesome/components/color-picker/color-picker.js": "bafkreifkv4l3u7cpukgxg3rqiqouc6ku5pioacfzpv5hbbvzwpf2v7y3ny", 1354 + "vendor/@awesome.me/webawesome/components/color-picker/color-picker.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1355 + "vendor/@awesome.me/webawesome/components/color-picker/color-picker.styles.js": "bafkreiarvkajqrc76occeib4c5dgzkekcuxwca4ta75lbazxabeq5bdzfq", 1356 + "vendor/@awesome.me/webawesome/components/comparison/comparison.d.ts": "bafkreiamjx646fmatqpbnz2ckzincyhxpmljosydhp2bjab7ilmot3i2km", 1357 + "vendor/@awesome.me/webawesome/components/comparison/comparison.js": "bafkreihun3fnu3bevqpnlgbbzgoysem2qtl732sdbk5dldompkdthxdudi", 1358 + "vendor/@awesome.me/webawesome/components/comparison/comparison.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1359 + "vendor/@awesome.me/webawesome/components/comparison/comparison.styles.js": "bafkreigugyvnsxbx4s6owngcw2er32uhmnvwrtsmddzjwkwrpvfgfqa7ey", 1360 + "vendor/@awesome.me/webawesome/components/copy-button/copy-button.d.ts": "bafkreigxkel7462trxejraa252itaji57um7hclbajlhiws32424t57iiu", 1361 + "vendor/@awesome.me/webawesome/components/copy-button/copy-button.js": "bafkreifzk22zhg2pzdoltt7c6jwpahaxkit7d6izpe3fflze3lo7zmgifq", 1362 + "vendor/@awesome.me/webawesome/components/copy-button/copy-button.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1363 + "vendor/@awesome.me/webawesome/components/copy-button/copy-button.styles.js": "bafkreiet5insgqxd5lxa3jdh6n3w7shpflujjjef3n7zgdunqzyv7k2yh4", 1364 + "vendor/@awesome.me/webawesome/components/details/details.d.ts": "bafkreifhpdzg7cz5kisdx6ma757ab4wdm3ytyhziuaj5pzwqp3ildlao5q", 1365 + "vendor/@awesome.me/webawesome/components/details/details.js": "bafkreihpidwqx3qjinu5sgsmaybi2jb23mxluqerr2c6cdfbnisemsdnwa", 1366 + "vendor/@awesome.me/webawesome/components/details/details.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1367 + "vendor/@awesome.me/webawesome/components/details/details.styles.js": "bafkreidbq3ujwzs557lsd5jjaupuyxuiu3ajbf7df5xfzvebyanmcr22wm", 1368 + "vendor/@awesome.me/webawesome/components/dialog/dialog.d.ts": "bafkreihvp2iy43llqqa6ftcdv762hxwooc3nxnziljbe4lkym37nunlkba", 1369 + "vendor/@awesome.me/webawesome/components/dialog/dialog.js": "bafkreiedej2fy6bivuwc4nnckjai5rtt2dxh66bqei62wxouqhxfk3275y", 1370 + "vendor/@awesome.me/webawesome/components/dialog/dialog.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1371 + "vendor/@awesome.me/webawesome/components/dialog/dialog.styles.js": "bafkreihxzponlhdvz3ggsvmv7canavksmkybzey7i6e67lgdpgsyykv7ve", 1372 + "vendor/@awesome.me/webawesome/components/divider/divider.d.ts": "bafkreiasjxfqrs37vidzmvgjpxscxo574mof7zd2nyu72ring45cjehdzq", 1373 + "vendor/@awesome.me/webawesome/components/divider/divider.js": "bafkreiavupre7obipfqunkvjlz44e746qeq3l64fliqjpamqmfyzwzznz4", 1374 + "vendor/@awesome.me/webawesome/components/divider/divider.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1375 + "vendor/@awesome.me/webawesome/components/divider/divider.styles.js": "bafkreid6m4q7jojjuzebiarpvashpr5hppoyn4zzv7e2v6wpmsl22n6zxq", 1376 + "vendor/@awesome.me/webawesome/components/drawer/drawer.d.ts": "bafkreigylpjunxqdgibydwcs44w52xbykemnfpppfsucoztmhduxlwab6m", 1377 + "vendor/@awesome.me/webawesome/components/drawer/drawer.js": "bafkreif6dzimuehnqyjhj7jayvp3l2ky7pzyxz6juu7tguya7pe47sb6ea", 1378 + "vendor/@awesome.me/webawesome/components/drawer/drawer.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1379 + "vendor/@awesome.me/webawesome/components/drawer/drawer.styles.js": "bafkreifslyscbw5mcum4ggmpdfi2kevz2rclahbk53oinirk5p4owvlxxe", 1380 + "vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.d.ts": "bafkreihyr4svwpcfw23mjir2qqxrgcwmbeg6nvilvpaswjanbqisna277e", 1381 + "vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.js": "bafkreifm2h4xl4u5g2swfwijjogedrg3s5wa7ceks7vqtsu23ql3a7w7rq", 1382 + "vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1383 + "vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.styles.js": "bafkreib7zvifekf2s5cg6sbeei65jhfac7fvb3bhr5h4yhiqnxio355th4", 1384 + "vendor/@awesome.me/webawesome/components/dropdown/dropdown.d.ts": "bafkreiae5vevvliao3r7hs57fjjmoqs4cgaq2kb5nr7eumg6tnthovsatq", 1385 + "vendor/@awesome.me/webawesome/components/dropdown/dropdown.js": "bafkreiewf6wwb2phhv6vutjzlfu2um4lqv47mlksujcsxiuyjf544ri6ga", 1386 + "vendor/@awesome.me/webawesome/components/dropdown/dropdown.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1387 + "vendor/@awesome.me/webawesome/components/dropdown/dropdown.styles.js": "bafkreicqqg7ibpq4ejec5dxhxkcf6pvy265c7t2gntnk6ysk2dp7liiqni", 1388 + "vendor/@awesome.me/webawesome/components/format-bytes/format-bytes.d.ts": "bafkreibh4dxzrejmmvlvvzb3thj4qv6xfo5n23lgqz23jmfvdymjmtw6xa", 1389 + "vendor/@awesome.me/webawesome/components/format-bytes/format-bytes.js": "bafkreidufkcsuqfimp5dgnbluuqvv6pqsesto27qh5ndoxrgglk2wlrr74", 1390 + "vendor/@awesome.me/webawesome/components/format-date/format-date.d.ts": "bafkreig42gqmwesk4giydjabutalhz5ni5k2llomxehjm4ehnqxjpnvxty", 1391 + "vendor/@awesome.me/webawesome/components/format-date/format-date.js": "bafkreiegr2gxhno7mb6mq6osbu5m7kbextwbk7hxa3fymrbo5qr3deipym", 1392 + "vendor/@awesome.me/webawesome/components/format-number/format-number.d.ts": "bafkreib35ux23ucux4ems5vboiq4hfmlz5d2oy52jedrbt33kiqfda6lxi", 1393 + "vendor/@awesome.me/webawesome/components/format-number/format-number.js": "bafkreif6x5vt53qm24fnxtw5rtsmgh24lox2rku3ju5ijkimznmh33z6ze", 1394 + "vendor/@awesome.me/webawesome/components/icon/icon.d.ts": "bafkreidokesjdw2qfdiutotzehpwfg7fuskz7b2suu2ces72wrd34lqklm", 1395 + "vendor/@awesome.me/webawesome/components/icon/icon.js": "bafkreicb42iv3ijhb6jp2dc4wdgkzakveelort77q473d6lc5xee2qsmxe", 1396 + "vendor/@awesome.me/webawesome/components/icon/icon.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1397 + "vendor/@awesome.me/webawesome/components/icon/icon.styles.js": "bafkreiafiwidp6lnyx6ifgosyzf3xlua5gux7tw2s2chzdlipergbefemq", 1398 + "vendor/@awesome.me/webawesome/components/icon/library.d.ts": "bafkreiemmkjxvbpwfivhx74jmdhw6xr3zvvuyh3gpdmavtnjuqtfjvyhie", 1399 + "vendor/@awesome.me/webawesome/components/icon/library.default.d.ts": "bafkreihxmfh7bfclzklfoymhptiv6p5z3n7xndvtm7vqbfnghexk37wfsq", 1400 + "vendor/@awesome.me/webawesome/components/icon/library.default.js": "bafkreiezpc2tdnjeepw4kn2smpah3x6pws7fnydc7glxkfxwy6may4cv4q", 1401 + "vendor/@awesome.me/webawesome/components/icon/library.js": "bafkreic4kjriqgenieonoasi7trienq5epenxntkbjdcsynntncgelp3ti", 1402 + "vendor/@awesome.me/webawesome/components/icon/library.system.d.ts": "bafkreihkzkotqfw4lgymzdo72ccyy2vmjeql45bsus4zv3ipsjrd4sc3yq", 1403 + "vendor/@awesome.me/webawesome/components/icon/library.system.js": "bafkreifc4zxfgoerq5elphvjrr5gr42gxzkrv7r76qkzlbcuppyqww6m2e", 1404 + "vendor/@awesome.me/webawesome/components/include/include.d.ts": "bafkreifo6dupf252cxl4bvbploang7ung3ym5xj62jqtsi2vpllvcim5vu", 1405 + "vendor/@awesome.me/webawesome/components/include/include.js": "bafkreibfxyb3eypgpozhgz6b6zxwxqe7kw732c5fidjo32p26z4y7lms6y", 1406 + "vendor/@awesome.me/webawesome/components/include/include.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1407 + "vendor/@awesome.me/webawesome/components/include/include.styles.js": "bafkreibtwrdighadc7uyvyimzvakvvfu5p5ot4xj6o6p73uggsfl3eq34e", 1408 + "vendor/@awesome.me/webawesome/components/include/request.d.ts": "bafkreiges7phh3umdia4yspecgt56a3442yim2z7pq7qznze3o4fehmvw4", 1409 + "vendor/@awesome.me/webawesome/components/include/request.js": "bafkreibdxcfp55yw3kkahadjrcpepdg357dnvdu6hrpt7aaab73jf54guu", 1410 + "vendor/@awesome.me/webawesome/components/input/input.d.ts": "bafkreif5ynxemyxfnmr7hnkxzc66b73eais7w744l7tjkeqmhwlbgaop7y", 1411 + "vendor/@awesome.me/webawesome/components/input/input.js": "bafkreiblwtm3dnoul6aoevod6u5wexs6rislntyd2g6cvnnxcxl4yysloe", 1412 + "vendor/@awesome.me/webawesome/components/input/input.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1413 + "vendor/@awesome.me/webawesome/components/input/input.styles.js": "bafkreie3iqckcslenwrkv775c5vq2ua7fnj3kypdq2e3pwiimz6wxjicke", 1414 + "vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.d.ts": "bafkreibm3zwovcsaa3yrw52k455uw6lfijsnlej3ovuhd4c6w4mtch4gru", 1415 + "vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.js": "bafkreifqebojtgici5bwsnzjpnif7v5xba5iq5b4t5xwk7ekc5anrxf7tq", 1416 + "vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1417 + "vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.styles.js": "bafkreicscdncz2d5d2uabrtxpervbfum3how4y7a6glqnly6vfqyqidtme", 1418 + "vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.d.ts": "bafkreibpkn4pi5rdm67jlna5wwpgsamp6rbmvxbu2ugi43afihhaes5ziq", 1419 + "vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.js": "bafkreifz4aa3t7mw2x3hybbms5optmvvlrwm2t2eoooleqcygbeuq3stuq", 1420 + "vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1421 + "vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.styles.js": "bafkreidozkj6qnbauiwf4uo53owqj2ndakr337faaxyhlwu62ecuatnjey", 1422 + "vendor/@awesome.me/webawesome/components/number-input/number-input.d.ts": "bafkreigacljh4ptm73iwfsvw6elzxqrf3cs52afluebjill3qu6glfr6sq", 1423 + "vendor/@awesome.me/webawesome/components/number-input/number-input.js": "bafkreibtqmzn6w7z36ko7turr5j5vmcrplc5o6au5uratvchxwvsltq2tu", 1424 + "vendor/@awesome.me/webawesome/components/number-input/number-input.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1425 + "vendor/@awesome.me/webawesome/components/number-input/number-input.styles.js": "bafkreia6iee3gppuzwp4lx7afyswcmwlgj3qtqdmtqyhbopng3c4rss7ta", 1426 + "vendor/@awesome.me/webawesome/components/option/option.d.ts": "bafkreifq44g5gi5jl5em34v24hhpyz5veqgol44axl65rslhhsm4n6koiq", 1427 + "vendor/@awesome.me/webawesome/components/option/option.js": "bafkreigd2z5vlydkdvmromcpcfnflkxnw7cxvcismi44gh6ytrfxpzsj4i", 1428 + "vendor/@awesome.me/webawesome/components/option/option.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1429 + "vendor/@awesome.me/webawesome/components/option/option.styles.js": "bafkreihmxgnceeegok3uvmnoooc7ayvxbhkfmowipvkqa7az7tcxzxbkui", 1430 + "vendor/@awesome.me/webawesome/components/popover/popover.d.ts": "bafkreibkqgvnj546xw7cvj766ropn7afwi7gj3zjj7vhhhgis6t2rf345e", 1431 + "vendor/@awesome.me/webawesome/components/popover/popover.js": "bafkreieadbmh2d55cclct3heoggk4uslqxr2bufd4z5hgacp36l4qyhin4", 1432 + "vendor/@awesome.me/webawesome/components/popover/popover.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1433 + "vendor/@awesome.me/webawesome/components/popover/popover.styles.js": "bafkreigsyyyijuahar7i47ah2hqme75mdng3zyvi4c4j4o5lwzztr7jd54", 1434 + "vendor/@awesome.me/webawesome/components/popup/popup.d.ts": "bafkreiaapsnhe64bkln5j7n3r666ihwuu6qe7dnsl77k7rr66o4tdlfv34", 1435 + "vendor/@awesome.me/webawesome/components/popup/popup.js": "bafkreifdhkjuihi62h7il7k6m6kzinubaemrk6lac5vq3uw6bkmolvueuy", 1436 + "vendor/@awesome.me/webawesome/components/popup/popup.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1437 + "vendor/@awesome.me/webawesome/components/popup/popup.styles.js": "bafkreic6prd4mhegdb4csxspk3qfemkf7y5ifb4sbxdongb2h3rzr2xa5q", 1438 + "vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.d.ts": "bafkreiashpjqz53k33afxyr7mz2cax6ior36hwxz57mjvoewghc3nwr2ue", 1439 + "vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.js": "bafkreiat354kwq7rpjoe4oe6aplbemz2eqd54ydyskvval7wndd5ese3da", 1440 + "vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1441 + "vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.styles.js": "bafkreifairsxr7yjxg2ln7a4efljzn7hjejg2pxcq2qerlji7dn7w36sdu", 1442 + "vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.d.ts": "bafkreihee5exwfsl5yyk2mxi4jblipx5kkbvwaihwae5f3ejz2vzsipjim", 1443 + "vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.js": "bafkreic7kxc7i4hf4osf4p2hl5mqhutupde7frslfocptd6y3vcsm3pot4", 1444 + "vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1445 + "vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.styles.js": "bafkreian36smu2bprq2jah4rihmtsbdlhz72ex34fvqck7gv57uofstzry", 1446 + "vendor/@awesome.me/webawesome/components/qr-code/qr-code.d.ts": "bafkreie4zh2u5btsfjfwdq73u3fkg6olppc2dvx4rbnzjqv2ahoyfpzd3a", 1447 + "vendor/@awesome.me/webawesome/components/qr-code/qr-code.js": "bafkreihbytjz6lg2ifz72d3b3mpch74adjyb6jl2g5qbz7sndnhed4ya4e", 1448 + "vendor/@awesome.me/webawesome/components/qr-code/qr-code.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1449 + "vendor/@awesome.me/webawesome/components/qr-code/qr-code.styles.js": "bafkreigvy44ts2w6bqnoexnyehrigfp3btgomxd32sny7gmwr7e3qfwn3q", 1450 + "vendor/@awesome.me/webawesome/components/radio-group/radio-group.d.ts": "bafkreic4dx465a5s543yrmy2dmxwuwg27iy7brnewcv3vgrhigssepfvrq", 1451 + "vendor/@awesome.me/webawesome/components/radio-group/radio-group.js": "bafkreieuqncbq4dw3uh5kpztzb4ocberw6246drft4aivrbdhjoxqoojge", 1452 + "vendor/@awesome.me/webawesome/components/radio-group/radio-group.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1453 + "vendor/@awesome.me/webawesome/components/radio-group/radio-group.styles.js": "bafkreiayo5hbkd6wku5dartvppgli7mb2tvzqo3adbnmbbfxelf2mf7zwu", 1454 + "vendor/@awesome.me/webawesome/components/radio/radio.d.ts": "bafkreifjprxx2pacayknllmorsfdx26fjrg36m7fdwu4r5wfpe7gobymti", 1455 + "vendor/@awesome.me/webawesome/components/radio/radio.js": "bafkreigrbzpdvvw3mxlgegje4lrgx4qeyl5vpuwqoo2iei47rmd3z6vl74", 1456 + "vendor/@awesome.me/webawesome/components/radio/radio.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1457 + "vendor/@awesome.me/webawesome/components/radio/radio.styles.js": "bafkreih3rv3p3mpusi7tj2nxukohjoajhf7ee5nnebn2fzyibjofbtpdmi", 1458 + "vendor/@awesome.me/webawesome/components/rating/rating.d.ts": "bafkreibavedl4bvnhafpzhvhwmw6skqjquvc72tgqr7cs24mwwqth2pt4e", 1459 + "vendor/@awesome.me/webawesome/components/rating/rating.js": "bafkreid4kuhww5aelmboow55j7kvcnxh6fbb2kf45i4xw2m4nhmzduiwnu", 1460 + "vendor/@awesome.me/webawesome/components/rating/rating.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1461 + "vendor/@awesome.me/webawesome/components/rating/rating.styles.js": "bafkreifh4rfnc5vtiar2vmh66lyystdgazkhup6b6nqo7nwxemfsx5qnxy", 1462 + "vendor/@awesome.me/webawesome/components/relative-time/relative-time.d.ts": "bafkreiajz4ppu7gcillulmndrsly5jepbk77j2uygnisufc4pktpq5zvji", 1463 + "vendor/@awesome.me/webawesome/components/relative-time/relative-time.js": "bafkreicwk2q47h67ul5o5lhk7av4hhpis6l6p3qthg2ki6teiqkyl53qey", 1464 + "vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.d.ts": "bafkreibhfg7ucu6lcezv67sw3wqmg2ctun5szp3lp2yonwcqo3y3gqntga", 1465 + "vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.js": "bafkreie6lxypqzupbcnvci5xgkdiyrkm2xq5d5n2qiqy4lwhba7ox7bum4", 1466 + "vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1467 + "vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.styles.js": "bafkreiatzrjqsguzc76ogqn7grr3yizj4dgep3f2m6ritg4siibbob4jmu", 1468 + "vendor/@awesome.me/webawesome/components/scroller/scroller.d.ts": "bafkreih5ahbusfmphjwmtpyla4r3ec46xbwukctkv53mgfcwexzc3hppq4", 1469 + "vendor/@awesome.me/webawesome/components/scroller/scroller.js": "bafkreihr6n3l3yzqc5pwb4tiksxfwalfyzua23cex3vu65yaqtqthhu4pi", 1470 + "vendor/@awesome.me/webawesome/components/scroller/scroller.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1471 + "vendor/@awesome.me/webawesome/components/scroller/scroller.styles.js": "bafkreidsk3ntxmizcb42z4ikdn4dmyt2lq7rewqojfdtugb64gcrwzsbve", 1472 + "vendor/@awesome.me/webawesome/components/select/select.d.ts": "bafkreifo6vuwwgcs3xmyhqh5uff3fh4m5a3rjxsvrj32qqyu4hj3hkjuxu", 1473 + "vendor/@awesome.me/webawesome/components/select/select.js": "bafkreifqzbqjmc5omlz3penxm27bbezydnyncbb6lxpm2c2ecnd34ss7im", 1474 + "vendor/@awesome.me/webawesome/components/select/select.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1475 + "vendor/@awesome.me/webawesome/components/select/select.styles.js": "bafkreiemkktqs4wq22lbnewxchbvriduddfnksopfm5yhqv2pqq4mtsip4", 1476 + "vendor/@awesome.me/webawesome/components/skeleton/skeleton.d.ts": "bafkreicwjsena3cls4okhml5aun2i4ue34ohwf4qn2otmblxgpymepktg4", 1477 + "vendor/@awesome.me/webawesome/components/skeleton/skeleton.js": "bafkreiahm3oripacgrx4j2l4wyvuxzskuesuzjrpjei3mjodxisfmkaare", 1478 + "vendor/@awesome.me/webawesome/components/skeleton/skeleton.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1479 + "vendor/@awesome.me/webawesome/components/skeleton/skeleton.styles.js": "bafkreib6e4p5p56gsa7vn6bcxjobndeuubmhvzwetct3ccb2ewtol4i5ee", 1480 + "vendor/@awesome.me/webawesome/components/slider/slider.d.ts": "bafkreiguikxqvhmtebzuccghksgjgdot7ryxdjxxezlrcfn2agydj5fjcu", 1481 + "vendor/@awesome.me/webawesome/components/slider/slider.js": "bafkreighpu347wt2x47iqymye6syjpjwvu7eja7gc6rvku2nlnchzpzfyy", 1482 + "vendor/@awesome.me/webawesome/components/slider/slider.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1483 + "vendor/@awesome.me/webawesome/components/slider/slider.styles.js": "bafkreibncspndwmamkmtk66gy65ccok2so542pbcmrywdwnhqxx4yfg4ca", 1484 + "vendor/@awesome.me/webawesome/components/spinner/spinner.d.ts": "bafkreid5uhjxnu5ohr7iz6ttp3tbswmcgccgfoark2ralyqenesu675z4m", 1485 + "vendor/@awesome.me/webawesome/components/spinner/spinner.js": "bafkreifsxndd2ssb6vmuogic67kux23dioirp5nkq26zho4645ndxt6n6q", 1486 + "vendor/@awesome.me/webawesome/components/spinner/spinner.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1487 + "vendor/@awesome.me/webawesome/components/spinner/spinner.styles.js": "bafkreiewk4qb3idhc6c3eysgsj544hwp2mukuf5475le6gs3pbl6faooqi", 1488 + "vendor/@awesome.me/webawesome/components/split-panel/split-panel.d.ts": "bafkreib5r5qbq5hzkb5lfyyiezhw3wbzhot4sv5wncxoab57ojrczirui4", 1489 + "vendor/@awesome.me/webawesome/components/split-panel/split-panel.js": "bafkreifei5za237pxb7axeh4iujxxwnlqpyjm2yn5pzjommw25yuvrccy4", 1490 + "vendor/@awesome.me/webawesome/components/split-panel/split-panel.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1491 + "vendor/@awesome.me/webawesome/components/split-panel/split-panel.styles.js": "bafkreihpfag6u5qme72mujou33f3lxy73pdmoczxpl2klbmqrnydfxwn3y", 1492 + "vendor/@awesome.me/webawesome/components/switch/switch.d.ts": "bafkreianuiqo52dumzlaeqvtx4rhbhuhpgnvuhgdlu4ufqewco3pk36keq", 1493 + "vendor/@awesome.me/webawesome/components/switch/switch.js": "bafkreia3vw5nwez7n6a55pnz4lkyoszrx4uwzouufrabtwhwasi5e32ahq", 1494 + "vendor/@awesome.me/webawesome/components/switch/switch.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1495 + "vendor/@awesome.me/webawesome/components/switch/switch.styles.js": "bafkreif4agj4swuhwdkpe6yyvpejivpou6rg4heektoaot253ukvumptze", 1496 + "vendor/@awesome.me/webawesome/components/tab-group/tab-group.d.ts": "bafkreier2qcmjtuy7nclkxglwzjaejgw5r2qfr54w5ri4dc36jbcug62hq", 1497 + "vendor/@awesome.me/webawesome/components/tab-group/tab-group.js": "bafkreig5nr5vahgkbggohy4372q7n5iklspiohb4nif3hq7ijmj2q445ji", 1498 + "vendor/@awesome.me/webawesome/components/tab-group/tab-group.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1499 + "vendor/@awesome.me/webawesome/components/tab-group/tab-group.styles.js": "bafkreifiv3ayexrtfshacomeesfmphptjs4lrcxjonw3ncbdyhubroxenm", 1500 + "vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.d.ts": "bafkreic2x5qfonuahp3dfyywoszk3bq2hf5dq3kwvqlr756phssmxwyqta", 1501 + "vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.js": "bafkreicqixjyhgbp5u2lwluab5shduvg7i6it724k5fvbspj5dlhjqnhf4", 1502 + "vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1503 + "vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.styles.js": "bafkreid4b3oofzjygpqg6hypfqg3uflktcfhsnhqbmsjwye4deflzxpyh4", 1504 + "vendor/@awesome.me/webawesome/components/tab/tab.d.ts": "bafkreihm7bx53jzh7qxlhnh3fmwobzeostizliskszx2r3rvbxvkeaootu", 1505 + "vendor/@awesome.me/webawesome/components/tab/tab.js": "bafkreifdgdpdkuavkwhliezkkpvt52iyufkxqn5xmueayffdcumxhzjyni", 1506 + "vendor/@awesome.me/webawesome/components/tab/tab.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1507 + "vendor/@awesome.me/webawesome/components/tab/tab.styles.js": "bafkreibyguxshblwbti6pinf43mw444oebowzffmwwdym6aet2edelvega", 1508 + "vendor/@awesome.me/webawesome/components/tag/tag.d.ts": "bafkreic4pttj7mqdwgqrow6v53pq2oxkqz35ihhamcdk763eicauqw23nm", 1509 + "vendor/@awesome.me/webawesome/components/tag/tag.js": "bafkreif5se2r3t4ugaqimjzson6sxlaoam4qbkporf7ndi6f6z56igqq5i", 1510 + "vendor/@awesome.me/webawesome/components/tag/tag.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1511 + "vendor/@awesome.me/webawesome/components/tag/tag.styles.js": "bafkreiaga2cplbqpggl2mvjpzf2tkbn62oheawvwee56s4etja7boosiii", 1512 + "vendor/@awesome.me/webawesome/components/textarea/textarea.d.ts": "bafkreihjmkahefybcer5htuao5u5iszejs4ducxrlcldroebyquwfq35ky", 1513 + "vendor/@awesome.me/webawesome/components/textarea/textarea.js": "bafkreifgnkok44h6g7n5d6q7ppll5v6bppkmam2nqkea2tjb4opzjimlju", 1514 + "vendor/@awesome.me/webawesome/components/textarea/textarea.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1515 + "vendor/@awesome.me/webawesome/components/textarea/textarea.styles.js": "bafkreifjecqqdotp45hraupzvjjhtqndnakorvhggteisaxo5k5rnt5wjq", 1516 + "vendor/@awesome.me/webawesome/components/tooltip/tooltip.d.ts": "bafkreieazo7i2jddmb4jfrj5pbem6ffw6lzlrlmmckw6nniv66ogg47t64", 1517 + "vendor/@awesome.me/webawesome/components/tooltip/tooltip.js": "bafkreic7ry5tzkxpkjsw6goxg73snn7gukygjib3m457xltavb46uf7lse", 1518 + "vendor/@awesome.me/webawesome/components/tooltip/tooltip.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1519 + "vendor/@awesome.me/webawesome/components/tooltip/tooltip.styles.js": "bafkreidfpdydbtgs3hmexs7efksksrsepemsrk6sw6vdrsduv426c2izsu", 1520 + "vendor/@awesome.me/webawesome/components/tree-item/tree-item.d.ts": "bafkreib4axrcztazv5cd4afe3plc2xat6ss3t26oszubtxo7fethojcgri", 1521 + "vendor/@awesome.me/webawesome/components/tree-item/tree-item.js": "bafkreig7okgmta3ptabpvnimy55flbff4foyxviscqvgoca4c7ye63fcea", 1522 + "vendor/@awesome.me/webawesome/components/tree-item/tree-item.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1523 + "vendor/@awesome.me/webawesome/components/tree-item/tree-item.styles.js": "bafkreicfmcoojuogfpfy4iabn2yinvkvhxgf5ssobjjiy2h73buwkcr6ny", 1524 + "vendor/@awesome.me/webawesome/components/tree/tree.d.ts": "bafkreicu42y43ecsepr3huqfzo7lufjoboowarnqtsdwvgnhrwkxst3p44", 1525 + "vendor/@awesome.me/webawesome/components/tree/tree.js": "bafkreidghot4to7p4qxgpt2uz3hvswq3lfnmhpcvpwondfo5rswwjg6zke", 1526 + "vendor/@awesome.me/webawesome/components/tree/tree.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1527 + "vendor/@awesome.me/webawesome/components/tree/tree.styles.js": "bafkreiba25kbokeemi6lgf42asv56m4lioarzlnrtpv3vnw3lj3iskfgr4", 1528 + "vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.d.ts": "bafkreihhq47vagmk4nmg4fvxjrhyberlawzftib2syxvi72veef27dykl4", 1529 + "vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.js": "bafkreibj4qpbyyp6zrfhydfsnoel5h6iqrhobl7mvb5ctcv477bykni3hu", 1530 + "vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1531 + "vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.styles.js": "bafkreigmu5ii7da7hscuvgxkgr24xd7ib32d4z2nbd3c6e5wa3pxs42foe", 1532 + "vendor/@awesome.me/webawesome/custom-elements-jsx.d.ts": "bafkreiab26nb35d5e2mtbvuxvfb26e7jfc3ipr63gegprdo4azeydwrdz4", 1533 + "vendor/@awesome.me/webawesome/custom-elements.json": "bafkreie7tmmlz326zapzcmgmrl3tgbizpdt2xl5waafdpfazw672xxi3wa", 1534 + "vendor/@awesome.me/webawesome/events/after-collapse.d.ts": "bafkreic75vk6syvq354wauficf7ukq2extev5otheqzluhw6phovl7lbyq", 1535 + "vendor/@awesome.me/webawesome/events/after-collapse.js": "bafkreihiasxtck6j2ljmztvwtlsql6xvr7geyj54xoca4k72bn5xalxl4m", 1536 + "vendor/@awesome.me/webawesome/events/after-expand.d.ts": "bafkreiafzl7zgxyhhq6vpidd3k2hrjywfg6kavrm5wzs4hs2z2xohnxzqm", 1537 + "vendor/@awesome.me/webawesome/events/after-expand.js": "bafkreiaedrktbbhj5txfgnfg5l6rpej5jd4gxuy5e4kvctzzvvhavwwi3i", 1538 + "vendor/@awesome.me/webawesome/events/after-hide.d.ts": "bafkreid5bdxocbmr7roycc5t222qafqvdlq25r3mpp5ogddts35of6zby4", 1539 + "vendor/@awesome.me/webawesome/events/after-hide.js": "bafkreihhwvw6t44nobyudab2va2sieqluppbhfyzc32tdtmxeg6r2clxty", 1540 + "vendor/@awesome.me/webawesome/events/after-show.d.ts": "bafkreia2bsvqtkdi345tugktzdiewe53ljgnr4tcxsul3ecwpzzft5hppm", 1541 + "vendor/@awesome.me/webawesome/events/after-show.js": "bafkreiftdwg6xbc62k656oktvi5yyykcp3cej2agbw2l2bfhlxo7iymmje", 1542 + "vendor/@awesome.me/webawesome/events/cancel.d.ts": "bafkreigjuexrmdldwvfld64uzosgd5frqepuq75gtkxlb6nckkttcan4fm", 1543 + "vendor/@awesome.me/webawesome/events/cancel.js": "bafkreihcyetoqgf2fla6yilrk7q6qwtjsp4tqv2fatqkv77acb32hpkaae", 1544 + "vendor/@awesome.me/webawesome/events/clear.d.ts": "bafkreidxrulne6v3n3xeuq5wdzilrrpjnr3fu7onizdkd5revcfqxtfrya", 1545 + "vendor/@awesome.me/webawesome/events/clear.js": "bafkreibzxrgllt4ulatv6ctnw2jy7ysa3rn4kwto7cubka4aubkoacg5um", 1546 + "vendor/@awesome.me/webawesome/events/collapse.d.ts": "bafkreiekq4yxkaigvrxohtyrq3wdelq3jqpklyzqtxd3spwb7s7cxkov74", 1547 + "vendor/@awesome.me/webawesome/events/collapse.js": "bafkreibo4ivswexzjnoncsu3ua4sep7dg572so5ogbweggznom2ohwuxzu", 1548 + "vendor/@awesome.me/webawesome/events/copy.d.ts": "bafkreifwdpe6pbdtulfgj4o7kiu4h4g36hsrsxpcquke7mgnxwwxfhc4c4", 1549 + "vendor/@awesome.me/webawesome/events/copy.js": "bafkreicuhfbzdxzyqcedpe6cfjwkoffddkr6ieskv3f5tuet76sikqinv4", 1550 + "vendor/@awesome.me/webawesome/events/error.d.ts": "bafkreibgs6cv6hkfgbpua6jbx7ui3acvgsirpijxeswpfivbt2jp3ajlum", 1551 + "vendor/@awesome.me/webawesome/events/error.js": "bafkreibudq4jrlznhovu3uoylpva7ijfrh5jyef5vhg6qhvcqkhlcqtzya", 1552 + "vendor/@awesome.me/webawesome/events/events.d.ts": "bafkreie52oechdenhu5bi6w4p4mzj2yxt5nzzpoyqqncluo6qjuxfgymga", 1553 + "vendor/@awesome.me/webawesome/events/events.js": "bafkreiazobpzcfvixklbctiuirczcbij5mgorggtfsc63huowzuufnmyyu", 1554 + "vendor/@awesome.me/webawesome/events/expand.d.ts": "bafkreift4lwudkpq5oi7tjskaa2zr5j2caxhpj2nloi2fgfv6dkipxkokm", 1555 + "vendor/@awesome.me/webawesome/events/expand.js": "bafkreidk6j3375qczwf7uelv23qgic4gshcqsigaa6bgjpc5bszx7l3nvy", 1556 + "vendor/@awesome.me/webawesome/events/finish.d.ts": "bafkreihfutnnryb6fco76b4mo5qtblrahkkdkh42qfnmtmvssdk435rzva", 1557 + "vendor/@awesome.me/webawesome/events/finish.js": "bafkreihzf5bugkto6zzr7uejiehmuk46gfcirsiabfxrd24ifqjkw26yne", 1558 + "vendor/@awesome.me/webawesome/events/hide.d.ts": "bafkreihq5gkt2j5nq4pvwirv7j4x5a6aen3ao4lg5eiy2yfnv4looqsuum", 1559 + "vendor/@awesome.me/webawesome/events/hide.js": "bafkreieccj4xi5m6otneeb7fhpsiehghyfkuyb4z5fozsz63nlfsslby4e", 1560 + "vendor/@awesome.me/webawesome/events/hover.d.ts": "bafkreihc43je5rnt5wp5rpjszzen4gl4ldnlhf3cnwtp3tlqbnma5c4dfe", 1561 + "vendor/@awesome.me/webawesome/events/hover.js": "bafkreifk2eiean7eq4ejcz4rovndzczrioah7hyq7pivtu4fo74c45qnxy", 1562 + "vendor/@awesome.me/webawesome/events/include-error.d.ts": "bafkreidcpoueccgkz7fc67mkyhhogwb6mjuybf4zdcsu5edniry7cp25ya", 1563 + "vendor/@awesome.me/webawesome/events/include-error.js": "bafkreiauhsqck3aunrwcd455w7mcoyp7wefgmhp2uloyonhpysvqmkwope", 1564 + "vendor/@awesome.me/webawesome/events/intersect.d.ts": "bafkreicxmdbi43vzxeohcps7iz7p7cfcbpizlfcrd5xieqvzfzymkjlewy", 1565 + "vendor/@awesome.me/webawesome/events/intersect.js": "bafkreibp7lrl5hpywibypk4g5wwvkzwp2fp35gst74v57kyyldjhh37waa", 1566 + "vendor/@awesome.me/webawesome/events/invalid.d.ts": "bafkreietc3gbs3wduamx4qlxobiw66f6m2cgijs4dvgoi3jqixvvpioeyu", 1567 + "vendor/@awesome.me/webawesome/events/invalid.js": "bafkreieekbikwa3xlpyzmne4gflsrdbrnyfdjm6t4e3u36dcppgdmajv5i", 1568 + "vendor/@awesome.me/webawesome/events/lazy-change.d.ts": "bafkreibyiqj7picbwepuco37yuy2v2x4d5otjjtgdmlpjenmy3ahcr4jki", 1569 + "vendor/@awesome.me/webawesome/events/lazy-change.js": "bafkreierhjiqohgft2nqxpcahjruhge4xjgcf7bhv7w6zrvin2bkp4uchm", 1570 + "vendor/@awesome.me/webawesome/events/lazy-load.d.ts": "bafkreiezh2236ornfkj2axj6mchf3ukicma5iutkyzlltqbduoehlbu66e", 1571 + "vendor/@awesome.me/webawesome/events/lazy-load.js": "bafkreidtycifmw3tcfdruxermv5bev46kegigubxnz3qnmp4cj7oke7mnm", 1572 + "vendor/@awesome.me/webawesome/events/load.d.ts": "bafkreidnsmlcblcg2h2uheaoyuyaluzt752h3452ykz2ozggd5w3myduiy", 1573 + "vendor/@awesome.me/webawesome/events/load.js": "bafkreicllr2w43r4nvvdts5ymluscib3ztwab3hp36vi7ejje2vj37smmu", 1574 + "vendor/@awesome.me/webawesome/events/mutation.d.ts": "bafkreifp5edx3oveimrnzr264ltxnamgt4gntyulla3pmnqofvmgb2o7oq", 1575 + "vendor/@awesome.me/webawesome/events/mutation.js": "bafkreigy3vleoavlmmccut2wtvu56q6qhl3jx5gemtxskti6jtytgcksuq", 1576 + "vendor/@awesome.me/webawesome/events/remove.d.ts": "bafkreicl4q6qftywov24odacid7cbanl5jzvmezkrphublisxgte24e4im", 1577 + "vendor/@awesome.me/webawesome/events/remove.js": "bafkreiemzab2fhyi55y4qzbrr46fbqehnnpfdreazxieh7pdf2fo53wocy", 1578 + "vendor/@awesome.me/webawesome/events/reposition.d.ts": "bafkreign7sfzo6rahboejeibvq7yjitavj2ma3xqqipqhbq7umuoopz5c4", 1579 + "vendor/@awesome.me/webawesome/events/reposition.js": "bafkreiaxqclnxgd2252dx6hd7ajbwrjjo5ptkuypghxao4fdv7uiazgygi", 1580 + "vendor/@awesome.me/webawesome/events/resize.d.ts": "bafkreihw3exwbz56dcxu4ny7jvjutwwg4tupnut7fmb2i253kkt6vqx354", 1581 + "vendor/@awesome.me/webawesome/events/resize.js": "bafkreihan23aigcr7b2xbxbbelk6xv27fpd3scdsig6fzkh3qe6hpwmqfq", 1582 + "vendor/@awesome.me/webawesome/events/select.d.ts": "bafkreifrfk7ilfl7tihcaxlxdqurtfoyezeeaa24yeo53zphdgqz6gvdie", 1583 + "vendor/@awesome.me/webawesome/events/select.js": "bafkreif5taihbgvr4ekkto373r5wtzu6lst36dchcpzq25trremkfhwgii", 1584 + "vendor/@awesome.me/webawesome/events/selection-change.d.ts": "bafkreici4kl3o7k2psl5f5zz5qutdp3ak27sb6k46eh5udb3mlfth3htja", 1585 + "vendor/@awesome.me/webawesome/events/selection-change.js": "bafkreieu6jves5pgattwdbi24exopzwbstzpdoycvb4jxasazu72rpyhwq", 1586 + "vendor/@awesome.me/webawesome/events/show.d.ts": "bafkreidzuhe66ihi65luyb5ci5llgc3bangcflm4kpx4ye22q3p73745zi", 1587 + "vendor/@awesome.me/webawesome/events/show.js": "bafkreier2bv6odqrn3k7xfcm4rlyfzilty3yqi45l7hp7usi5rjvy2m7za", 1588 + "vendor/@awesome.me/webawesome/events/slide-change.d.ts": "bafkreiafpso6eov7eu3glztxb6gyxnog3wddz6vlekz4cgeuastiby5ibm", 1589 + "vendor/@awesome.me/webawesome/events/slide-change.js": "bafkreicdmnlk52riqhstcylflmtzbu625mtakdyxyorryunufece2twaqa", 1590 + "vendor/@awesome.me/webawesome/events/start.d.ts": "bafkreifbah62z6oxqix2astaxybpuhuftk5y7bzdrzl2wmxc3n4xbfxhwu", 1591 + "vendor/@awesome.me/webawesome/events/start.js": "bafkreialyeinlwwhviaz2ookwislrpis7xq3kst4473qcnodv5jfxhqznu", 1592 + "vendor/@awesome.me/webawesome/events/tab-hide.d.ts": "bafkreicv3ojjaxpbhs665r7py6fvh4m5op5ssfbjzb7mfjbjv4szxxu2au", 1593 + "vendor/@awesome.me/webawesome/events/tab-hide.js": "bafkreidrv7mtkfzug4bs2kiklitnxhstrril4ejoqzf26y5rptmjfgdfnm", 1594 + "vendor/@awesome.me/webawesome/events/tab-show.d.ts": "bafkreihb4q2f4hdpo4e2axiegnvaork2xuolbeekdju746h2wu6m63wlq4", 1595 + "vendor/@awesome.me/webawesome/events/tab-show.js": "bafkreif5ffm3oae53jctk4iqdbghpl2du5dldvtdamsemudindohw5qbam", 1596 + "vendor/@awesome.me/webawesome/events/video-change.d.ts": "bafkreigbjux2leuhywuak3hmlo7xia2k7enverrvt73nl7356ordoh52eq", 1597 + "vendor/@awesome.me/webawesome/events/video-change.js": "bafkreih3jp2g2xjzx4s7z7gpv2qazumhixu5b36myw3nlbikflunwp7rya", 1598 + "vendor/@awesome.me/webawesome/internal/active-elements.d.ts": "bafkreiakabrwvggo7u7iqq5yybggs5jcgwlc7v55ehc64e2wniqwhe5di4", 1599 + "vendor/@awesome.me/webawesome/internal/animate.d.ts": "bafkreif6s7xzyhmms2shrcw4y2h4ntfeowm2opukjfwctxpavcks23on44", 1600 + "vendor/@awesome.me/webawesome/internal/computed-style.d.ts": "bafkreieqnjv5w2bwx5ojgjbkxk3xtyszuiji3y63pf4cxlfrdxlvs5m7oe", 1601 + "vendor/@awesome.me/webawesome/internal/debounce.d.ts": "bafkreidd7zfsfamexjb25p4nupvbr4i2ujzqtgm245d6bamp37dscoxyo4", 1602 + "vendor/@awesome.me/webawesome/internal/default-value.d.ts": "bafkreih2mztvb55pdr3vrp2snq4qxgvsf7qzow6iquw4s7n6kdzgqzcefi", 1603 + "vendor/@awesome.me/webawesome/internal/dismissible-stack.d.ts": "bafkreiczvlnxqe3iwkrd2gc6gu2oatjgvrooo2pv6xnvvixzhitmywh2gi", 1604 + "vendor/@awesome.me/webawesome/internal/drag.d.ts": "bafkreictmlfqozahap7a5pwn2tlgzy577v7mrgu4erpd7xz25z5emagtke", 1605 + "vendor/@awesome.me/webawesome/internal/event.d.ts": "bafkreibpvlfhlb4yh5kmoz6uda4pxobjtht4eqep7fjlbilwpnzah6w5ta", 1606 + "vendor/@awesome.me/webawesome/internal/get-text.d.ts": "bafkreidsqks56qgzdcbxqeuyvddisrsf7jjlfyeocnpg4zqgsnziwhu5c4", 1607 + "vendor/@awesome.me/webawesome/internal/math.d.ts": "bafkreihaxdhyvnnwv2zwzrmjdx25m4cg3vwyjuxs7ovtnobbdtkh5cwwua", 1608 + "vendor/@awesome.me/webawesome/internal/offset.d.ts": "bafkreicxfivdvuen5jm6dk4tmf4pygfr5zbpixicmzjxjfhi2i7lb5ze2e", 1609 + "vendor/@awesome.me/webawesome/internal/parse.d.ts": "bafkreicbnsvfyn26xas5uqo4i3rzfrjaabuauwrxqlv5qhgkueu24gpczq", 1610 + "vendor/@awesome.me/webawesome/internal/scroll.d.ts": "bafkreich2ch5s3q5whfvhm3wirn7xnrhywroz45gkne5ap7pyrddlplmf4", 1611 + "vendor/@awesome.me/webawesome/internal/scrollend-polyfill.d.ts": "bafkreieomcn3ohbaxbmmo7yot6ilweyz3ochpmj7t6lf6gq6dbjex5iiqe", 1612 + "vendor/@awesome.me/webawesome/internal/slot.d.ts": "bafkreidapgxicdasvupwgy3k2ge55iiwia3ujqzcxziftd5a6tnb54teue", 1613 + "vendor/@awesome.me/webawesome/internal/submit-on-enter.d.ts": "bafkreifhsb7qlcvtalpyaewewdqvrmefkacqjiyoxhsarlnktf3l5njlea", 1614 + "vendor/@awesome.me/webawesome/internal/test/data-testid-helpers.d.ts": "bafkreifaotjntugl4itg5oanfin4vjqvobifsc66kxncja6ia7xbu2vak4", 1615 + "vendor/@awesome.me/webawesome/internal/test/element-visible-overflow.d.ts": "bafkreicb7oebtkiniypqbdfqpglfp7mwyek4qsoyaw5csovsqvwamx7yiy", 1616 + "vendor/@awesome.me/webawesome/internal/test/fixture.d.ts": "bafkreig3ixfddibauynsuftvrdb2qcclcjavxv3mzl3wv5wzgtjfmrxf4a", 1617 + "vendor/@awesome.me/webawesome/internal/test/form-control-base-tests.d.ts": "bafkreictofsj26kpkn5e4zdgwoqqml4msachpiwznhr37tjgxatnubczp4", 1618 + "vendor/@awesome.me/webawesome/internal/test/pointer-utilities.d.ts": "bafkreiczfp22kr5qbw5ul5imcmcug4hektiehry4fiev4fcswbn3alutay", 1619 + "vendor/@awesome.me/webawesome/internal/test/wait-for-scrolling.d.ts": "bafkreibbeyo5sx64pov7tusvzremr3smmv7fx6lxb3ia7lqllvqryui4hi", 1620 + "vendor/@awesome.me/webawesome/internal/validators/custom-error-validator.d.ts": "bafkreiha2nm4j3u462exqjuxwkklkemqmw3z7ethei6ietimy6sdwe5afm", 1621 + "vendor/@awesome.me/webawesome/internal/validators/mirror-validator.d.ts": "bafkreigp62byc2da2vgf2eochcikrqzuioqigyqdvsmd326wrfdf2t2spy", 1622 + "vendor/@awesome.me/webawesome/internal/validators/required-validator.d.ts": "bafkreidihpayslxrdzlnmdenhsw7ia3b7qyrun7nyhzpnaklk4vt3u3hay", 1623 + "vendor/@awesome.me/webawesome/internal/validators/slider-validator.d.ts": "bafkreigfagcm6ciqu6z2x564m625n5rwcdjab4rokldgqrzolasfobdlsi", 1624 + "vendor/@awesome.me/webawesome/internal/watch.d.ts": "bafkreihtqc4ppu5bsh5xrk3hefmlc7owvb5v24wej6qq73wjjzhnpmenk4", 1625 + "vendor/@awesome.me/webawesome/internal/webawesome-element.d.ts": "bafkreiebjgm6vjeeu2mnzi2ggacvqoowdfqupiuwq3liigzpmjad6zajqq", 1626 + "vendor/@awesome.me/webawesome/internal/webawesome-form-associated-element.d.ts": "bafkreiaar36qzccm5a7py5xfqwixufkk4dmhal2wv2ahl44azkrncpdham", 1627 + "vendor/@awesome.me/webawesome/llms.txt": "bafkreidtokgxyznhlv4euizfuoisiiss4qsh3q276erul5kvfngjhhctru", 1628 + "vendor/@awesome.me/webawesome/react/animated-image/index.d.ts": "bafkreibr7hm2iyanxqzlkbicjqt7wq4zgpgtmtxnrf2rbiuwmcphevqzf4", 1629 + "vendor/@awesome.me/webawesome/react/animated-image/index.js": "bafkreid6k2rioq3tiki2rrmznejd2scpbqv7uduqt4amgfj6l7f5xxgqfm", 1630 + "vendor/@awesome.me/webawesome/react/animation/index.d.ts": "bafkreick6ujrvxmr33yq6a5eprctl3naqb3t3mkiab4szamaqvcr5vjqia", 1631 + "vendor/@awesome.me/webawesome/react/animation/index.js": "bafkreiajs3p3skx6dugqg5vrmnhb3wecw5kowpphtk7lgxiyuyonoleewq", 1632 + "vendor/@awesome.me/webawesome/react/avatar/index.d.ts": "bafkreiaszsycktg7mkvrcnpum337mgs62lrcuzdm2ku22uav6j7wwkw2pu", 1633 + "vendor/@awesome.me/webawesome/react/avatar/index.js": "bafkreih6gi33ubzk2pn77behb2b2v53lfpfh5laxcr4yxwekjvprbd3ema", 1634 + "vendor/@awesome.me/webawesome/react/badge/index.d.ts": "bafkreifvtr3azsveqdjsprb4ki6ual6lbjku2ppdlznfxbsox6xqit3iai", 1635 + "vendor/@awesome.me/webawesome/react/badge/index.js": "bafkreict2y43lzrdfsbyizvxhwj2ezmflaadq7jlfgld6mlhkkppvwqvnm", 1636 + "vendor/@awesome.me/webawesome/react/breadcrumb-item/index.d.ts": "bafkreiafelshjwrcjcow4ktfp5dcbsi746bjxnsww4i6v26iksyawuhbq4", 1637 + "vendor/@awesome.me/webawesome/react/breadcrumb-item/index.js": "bafkreiftp74b3ctffsmxtfe32kubwzztytddwdl7qm5ljpztuoq4mf3rde", 1638 + "vendor/@awesome.me/webawesome/react/breadcrumb/index.d.ts": "bafkreihv24t4mwisgw32ifx7bcg3vrgdfgfkfz46ijco5d56g2khxi4r2a", 1639 + "vendor/@awesome.me/webawesome/react/breadcrumb/index.js": "bafkreiakps6t3l6gqe32xjnbg44ti665wpjwzqs7k6j3mrfvpzzusyoauq", 1640 + "vendor/@awesome.me/webawesome/react/button-group/index.d.ts": "bafkreib44ikcyj45cuifxry7e3wye3hq3acv5uz4anhsith7tx5qpmavay", 1641 + "vendor/@awesome.me/webawesome/react/button-group/index.js": "bafkreibfxcfhya4eaph4vbtg7q7fdybjm6wo527htrtwh4ri2dygvlhtu4", 1642 + "vendor/@awesome.me/webawesome/react/button/index.d.ts": "bafkreifeqddrcnqy6fabxmrg7qududmsq2mclp25hlgcxzvz4qdwicm43e", 1643 + "vendor/@awesome.me/webawesome/react/button/index.js": "bafkreiedht3jubjec7k5ap36awsb2yvzc3e3siln5eastchloe6nv7bze4", 1644 + "vendor/@awesome.me/webawesome/react/callout/index.d.ts": "bafkreibhxgjpdy3dotitmgn62pyehnuixzyiwzqhx236pyoiwoignflrmq", 1645 + "vendor/@awesome.me/webawesome/react/callout/index.js": "bafkreieso2t7k7qieq5yysmy2k4ljdfmbs6ay3gmimaoij3d7zf2wuaqx4", 1646 + "vendor/@awesome.me/webawesome/react/card/index.d.ts": "bafkreicwfmumqxlrvtc6bvnlybsw3hifutuuisk2eh2cx4jmr52oxjezrm", 1647 + "vendor/@awesome.me/webawesome/react/card/index.js": "bafkreifqvcy2t6uokipua4zpm6qdtrgfy3633jthimgtzvro2jvfctncpm", 1648 + "vendor/@awesome.me/webawesome/react/carousel-item/index.d.ts": "bafkreidlvsfsghtxmhz7xjqovk445bsd46u6q7ydipm2xttadtmeesfvwa", 1649 + "vendor/@awesome.me/webawesome/react/carousel-item/index.js": "bafkreihj7u3prgax5dqghrawl2j6337mhposon77jvk4tkxviz7dj4vqlm", 1650 + "vendor/@awesome.me/webawesome/react/carousel/index.d.ts": "bafkreibivvwmucjlmprhp5yoch4q325pq6wdmnuxiw6h4zslsog6dlhhji", 1651 + "vendor/@awesome.me/webawesome/react/carousel/index.js": "bafkreieg5yavhok7rfyxakwe2lhvkia3yetfn54qe57q3uk33pxzzrniwi", 1652 + "vendor/@awesome.me/webawesome/react/checkbox/index.d.ts": "bafkreiboj6tib4vrgt6qwlhtlpcefjevtfidaefexuaunj3vbee43jmqjq", 1653 + "vendor/@awesome.me/webawesome/react/checkbox/index.js": "bafkreiaxuy5xefjafcsfdftm3tvmeaajk2ggukoonhxui44yg5lu263u6i", 1654 + "vendor/@awesome.me/webawesome/react/color-picker/index.d.ts": "bafkreihnjnptoabbbxlo35orpdza6dedhsv47zghh676okb7srwuhis3vy", 1655 + "vendor/@awesome.me/webawesome/react/color-picker/index.js": "bafkreiecuzcukkfksxk5w2cy4m42sdkgit2zfz2lx3gtf2f6d5ftqgvspm", 1656 + "vendor/@awesome.me/webawesome/react/comparison/index.d.ts": "bafkreigytkkokuzozhej7tsy5ccmjcmsmvnae3bwehqkf6wjpyajoo6cim", 1657 + "vendor/@awesome.me/webawesome/react/comparison/index.js": "bafkreiahbgl2coxvbndkuf32hsdtzaf3y2jbhmyqlwyciey6wbw4qt6uq4", 1658 + "vendor/@awesome.me/webawesome/react/copy-button/index.d.ts": "bafkreiccl5jnnftjsg6lwwuuxlbazctt4faiviqj5poaj4wuumjezckpra", 1659 + "vendor/@awesome.me/webawesome/react/copy-button/index.js": "bafkreibsubdhabv4clh2l75kagrag2rfpav56necrnnhraq2kkwyqn3goy", 1660 + "vendor/@awesome.me/webawesome/react/details/index.d.ts": "bafkreieuj35bxr5xom4jtay3i43ms7eyvodi4ankz66uwao6jtcrydvhv4", 1661 + "vendor/@awesome.me/webawesome/react/details/index.js": "bafkreidjiegiwfuxjqrufbylq457hejqtfu22lrs2houdv3do3zr7ni26y", 1662 + "vendor/@awesome.me/webawesome/react/dialog/index.d.ts": "bafkreiexms3nyd4p2wjsdfaeg6lwns4aqbiphniagxl5paaf27rltmfl2u", 1663 + "vendor/@awesome.me/webawesome/react/dialog/index.js": "bafkreignsa6uhbpohowsn4gnbr3pu42aqtv72x5gunerkh7sq4s73zqqdy", 1664 + "vendor/@awesome.me/webawesome/react/divider/index.d.ts": "bafkreic7jks26uod56owgkr5iw3cd4voeif6s6xdabvqhfmk4xhejxrn6a", 1665 + "vendor/@awesome.me/webawesome/react/divider/index.js": "bafkreievgvczgbgvw6b3zrrlcmb2arvl4nyvtflo2tntek23hbgijegjfu", 1666 + "vendor/@awesome.me/webawesome/react/drawer/index.d.ts": "bafkreidsw7jbwrrqa6ibivveat46uzaad6ura6gqs7vc2khha2lyyiwh2u", 1667 + "vendor/@awesome.me/webawesome/react/drawer/index.js": "bafkreidulvoyomzdybbkoqdvkqzb5e4xdlw6ln6spfzfkecgtckb52ltcu", 1668 + "vendor/@awesome.me/webawesome/react/dropdown-item/index.d.ts": "bafkreid4ru4k56bvtze6uzwhcbcag6frsz36t7qboabweslxwa4xtt4ibe", 1669 + "vendor/@awesome.me/webawesome/react/dropdown-item/index.js": "bafkreidmtqlnwoypn2faatk3wrrkqvk27wx2xmakitwg4ynwaco3yrvypa", 1670 + "vendor/@awesome.me/webawesome/react/dropdown/index.d.ts": "bafkreigagvgcekpuodpks4tefgusoxsgj3cer7sian6k5dwrdilzy33lfy", 1671 + "vendor/@awesome.me/webawesome/react/dropdown/index.js": "bafkreiccw4onuhqoenomv6s6rk2iisxorcuqjo2jm36emkqcbj4zzjayfm", 1672 + "vendor/@awesome.me/webawesome/react/format-bytes/index.d.ts": "bafkreiczjzejzo3rdxlgux32vwcsn37yuogeh6t4z7cgscmmvxfwhqnd7u", 1673 + "vendor/@awesome.me/webawesome/react/format-bytes/index.js": "bafkreiaeydxchof2nptsk5dez3rg4j67tosk3pt6fhaqia4vdhh42p5ylm", 1674 + "vendor/@awesome.me/webawesome/react/format-date/index.d.ts": "bafkreifj6sqr5pf2e7p73ai7gxhdsgxxy6eq3s6veixleebafvhzyku4r4", 1675 + "vendor/@awesome.me/webawesome/react/format-date/index.js": "bafkreid7licfmx4ez2apdroortc77s5ghh4art2urlm5afotmfgrc34tr4", 1676 + "vendor/@awesome.me/webawesome/react/format-number/index.d.ts": "bafkreidsn7pphtdftjejgk75lazvixwpfwr7r7l4gnlh6bkhejgppkkgsm", 1677 + "vendor/@awesome.me/webawesome/react/format-number/index.js": "bafkreibecals7w6et5nuzqcuaqoqtzugc2oo7qd7qeqpnox35yd3m53th4", 1678 + "vendor/@awesome.me/webawesome/react/icon/index.d.ts": "bafkreif2wu364pd2zvc3lb5go7lfecmt6ledcshqttbwmgbcjpo4h26xza", 1679 + "vendor/@awesome.me/webawesome/react/icon/index.js": "bafkreiaobrhvyluwlzzjz7ra7mbfhsjjpye36twfft2gl3i25vmjmu3un4", 1680 + "vendor/@awesome.me/webawesome/react/include/index.d.ts": "bafkreib4euwmu7k7gpq3nan3nxze4tjvumu5puilekn7urcpydqraj3b7a", 1681 + "vendor/@awesome.me/webawesome/react/include/index.js": "bafkreihxumwiaoi6mlexmrzqmxdmy7j36eovh22ucgqdxtejjimj4ibrku", 1682 + "vendor/@awesome.me/webawesome/react/index.d.ts": "bafkreie2defnbeh2fiatlrbmtqgj6nzegr2sdjuonjjw5tin7gealppmzi", 1683 + "vendor/@awesome.me/webawesome/react/index.js": "bafkreiakhnbhjqwrnfz6mocqqtjixa55nbcxzarrf5wahnx26esgkkolz4", 1684 + "vendor/@awesome.me/webawesome/react/input/index.d.ts": "bafkreido7emyyfc7u5akoa2fnhkam3cy3uaizhqrodrbad5x7e42fwf2ji", 1685 + "vendor/@awesome.me/webawesome/react/input/index.js": "bafkreihdll5vfpzxpi7cqyzwea3czcm2zfpn2qlbfl7oahpmnhs732i3mi", 1686 + "vendor/@awesome.me/webawesome/react/intersection-observer/index.d.ts": "bafkreih7cog5mgjqltayqr4wzz7fr4dltr42mokl6qbhwvqqfaqzfstsgu", 1687 + "vendor/@awesome.me/webawesome/react/intersection-observer/index.js": "bafkreievtninsv25ydvkz2gksax5lgkcb3ui5l7z46oypskcg4ku7he324", 1688 + "vendor/@awesome.me/webawesome/react/mutation-observer/index.d.ts": "bafkreicivvog3gcmydbalunbrobqbrkr2zszbyplyqdczav6opbpm6f2bu", 1689 + "vendor/@awesome.me/webawesome/react/mutation-observer/index.js": "bafkreidde4ehkcrbrpbvdb63rlukinxx3eg7dxnypm6yyfg5ga237n7etq", 1690 + "vendor/@awesome.me/webawesome/react/number-input/index.d.ts": "bafkreiflqofnrtaooclyzofa7k2krsu43qm3xhnneenredphvlpqjuwqnm", 1691 + "vendor/@awesome.me/webawesome/react/number-input/index.js": "bafkreibxbggquej5zir2iyraccvvboriuozfujw2ieraiqpevp3nhi5ytu", 1692 + "vendor/@awesome.me/webawesome/react/option/index.d.ts": "bafkreifcj3og2gevf6prywshlv2m3wtll33bicyvgrnqy2shp4evfdnkzm", 1693 + "vendor/@awesome.me/webawesome/react/option/index.js": "bafkreih75c3iw36z73uybvytgiyl3a4jm2aakgdrd4qi67e2tokduu2x4i", 1694 + "vendor/@awesome.me/webawesome/react/popover/index.d.ts": "bafkreia23ifabaqxfuu2ov6ialcd7llxli3dgonjaodsoxhkkvf6h4r7q4", 1695 + "vendor/@awesome.me/webawesome/react/popover/index.js": "bafkreibs2rlnkb6l2drjm5sfckxfu4xv7bf55ehywg5mfailtudf45rcem", 1696 + "vendor/@awesome.me/webawesome/react/popup/index.d.ts": "bafkreic2dvapzgt2zqdaiexxdenehz2nn2vuaeovt42mjlzg6arv2xeucq", 1697 + "vendor/@awesome.me/webawesome/react/popup/index.js": "bafkreiadietgnntvuvewb6e5j6y5pgijxhf3uhjwtu2cna5l5stqme2o4u", 1698 + "vendor/@awesome.me/webawesome/react/progress-bar/index.d.ts": "bafkreiegykshsdgig3mjy5cftxch4qib6cb5zpixqsqns5pqnvfuqajxla", 1699 + "vendor/@awesome.me/webawesome/react/progress-bar/index.js": "bafkreihrseuxlc6vmy3mn5pjvnt3hcasdafhpbrritfjyxgtdsadruwg54", 1700 + "vendor/@awesome.me/webawesome/react/progress-ring/index.d.ts": "bafkreies52noc2snaobynrg54nxnxkaiaxb5mtpdv4uywo7yr4mhcccgku", 1701 + "vendor/@awesome.me/webawesome/react/progress-ring/index.js": "bafkreidm7rou2nxghatiuzgmiqtsc4f3ofe262kqcthjqnwu4pxnj7bffa", 1702 + "vendor/@awesome.me/webawesome/react/qr-code/index.d.ts": "bafkreieqzkr2iuqvuy7rvqj6x7zktcil665uuy4rrw4mblcbist47t3p5u", 1703 + "vendor/@awesome.me/webawesome/react/qr-code/index.js": "bafkreidrynf2uq62mro3ntrdhgrp3l47crcapdugs26zpyxl44xvcplqra", 1704 + "vendor/@awesome.me/webawesome/react/radio-group/index.d.ts": "bafkreiflrm3yedzy3wemreacufrbxc4xkjj2ecysiyhhqz7rnyjac7xela", 1705 + "vendor/@awesome.me/webawesome/react/radio-group/index.js": "bafkreidr2ks6k7tmectd6osepbx2gf7zzhgvpdn5tpzidpnpmovv4pnlmu", 1706 + "vendor/@awesome.me/webawesome/react/radio/index.d.ts": "bafkreickx77c5vweobglydue3cj74eqpeh3uhz7iakx5bqls6cah75jomm", 1707 + "vendor/@awesome.me/webawesome/react/radio/index.js": "bafkreiagdujvywxe65vo2gtpavzaekf6dhyhc6qynaxsonvibvu3twaf6i", 1708 + "vendor/@awesome.me/webawesome/react/rating/index.d.ts": "bafkreicjjky2f6jvjrv4ocl2tdopcgjss2g4qorcibywkkb62awxdpy4fy", 1709 + "vendor/@awesome.me/webawesome/react/rating/index.js": "bafkreidps5bqqeel5rlghewou3ijkzuidtwtzcvqc5dyllpetnbbmxqydy", 1710 + "vendor/@awesome.me/webawesome/react/relative-time/index.d.ts": "bafkreifaobt7bfuuyhpi7eraxhsibjwrh72dkyhvlifrrfxhaevtccg67a", 1711 + "vendor/@awesome.me/webawesome/react/relative-time/index.js": "bafkreig6tmvy6jrwqzn5wspbt7dyjgmcyktcn7lnfpwmvy6jan7jpqda5q", 1712 + "vendor/@awesome.me/webawesome/react/resize-observer/index.d.ts": "bafkreidonuqmz7nzbhofb5o4rswghzf24bh32kwiv2t5xaxokvsoqc65zm", 1713 + "vendor/@awesome.me/webawesome/react/resize-observer/index.js": "bafkreibux2vpxwasv2kc5o5ydv3gn55l4azxfhiryv5qaqnmmah7d7pk7e", 1714 + "vendor/@awesome.me/webawesome/react/scroller/index.d.ts": "bafkreigezuijgwfjfc27nuzap5tc5gyomtkmbn7d4sjcyfoukhiyrgvla4", 1715 + "vendor/@awesome.me/webawesome/react/scroller/index.js": "bafkreibnzqbjcrircu2gm7cyw7xikvxpua3ctd73gjo3twph4bdpaerc34", 1716 + "vendor/@awesome.me/webawesome/react/select/index.d.ts": "bafkreieglj6hfrkpnmfx7foi3d4rtdm6sswopvkvhtqc3u5duxvucqk7na", 1717 + "vendor/@awesome.me/webawesome/react/select/index.js": "bafkreifydy4djdjircwra62n3ffdxasuqp3fhtkkf7i3cpk5r76nyt7gri", 1718 + "vendor/@awesome.me/webawesome/react/skeleton/index.d.ts": "bafkreiawbdsykpzaxhblzpvsf5mg4ho775nmaheimjusgb2l2ey5i54ewe", 1719 + "vendor/@awesome.me/webawesome/react/skeleton/index.js": "bafkreidg2bfvdmyrba2esfpm6tum2w2o23krdqfwzy7a4ijc4jpa42leey", 1720 + "vendor/@awesome.me/webawesome/react/slider/index.d.ts": "bafkreib4nxpysftmsb5edomaynrwugbuiynryck2du2rvd2oqhbs3sneu4", 1721 + "vendor/@awesome.me/webawesome/react/slider/index.js": "bafkreicjqpl72mzv5rxh7bcb7gztfqcge42kobec7aync6guxubf4grkzq", 1722 + "vendor/@awesome.me/webawesome/react/spinner/index.d.ts": "bafkreidos6f7b2fkyioukq4f3glsnrqb5eyrwx53xja6oe5oojpo3pfji4", 1723 + "vendor/@awesome.me/webawesome/react/spinner/index.js": "bafkreihonlqvio4frc7wndwquaigrdpm4c3n3umycznvpfxpkdbacljwie", 1724 + "vendor/@awesome.me/webawesome/react/split-panel/index.d.ts": "bafkreif2nwbtfbgvx3cstznwh2j2a4nweswp2l7jpjc5vymy7i4czwkn24", 1725 + "vendor/@awesome.me/webawesome/react/split-panel/index.js": "bafkreidcfpmpwgpf2dhyur5nu7uzivx4mipt7dwyhslqtwrimsfuktll74", 1726 + "vendor/@awesome.me/webawesome/react/switch/index.d.ts": "bafkreifuwez6dous7jnqiwtga3mtbhzjnrutpjxkelankvgn532idywima", 1727 + "vendor/@awesome.me/webawesome/react/switch/index.js": "bafkreidhcvqvg3jjo7zosn6tathzvzsjze2eonwc6ddebk3z4iwz4lcx2y", 1728 + "vendor/@awesome.me/webawesome/react/tab-group/index.d.ts": "bafkreihh6mev2achtalqgvv7zbp6z4dcfofi5wmpxfsbhg6n5kvcxcpcoi", 1729 + "vendor/@awesome.me/webawesome/react/tab-group/index.js": "bafkreigxca5k3yhixbk33ybzsxfuntywrvakzfv6b72qfiprwywinxp6v4", 1730 + "vendor/@awesome.me/webawesome/react/tab-panel/index.d.ts": "bafkreihsu4pepv2ro2poch6vhi2kiyth6rhrkhzm7f3a73e7qkd7akkkgq", 1731 + "vendor/@awesome.me/webawesome/react/tab-panel/index.js": "bafkreih4sldf3rieqyphwnl7h6c4jutwlrokl3y55vzxiezkhd73bj3i5y", 1732 + "vendor/@awesome.me/webawesome/react/tab/index.d.ts": "bafkreiar3h3y3igbq4uzrbxrahwhnxqrejwfytpdttnye3e5acyi235ole", 1733 + "vendor/@awesome.me/webawesome/react/tab/index.js": "bafkreib762ty5minsmr24nu4uitzz7pwa52ct3z3ahkdtqw7qymq5wwbbu", 1734 + "vendor/@awesome.me/webawesome/react/tag/index.d.ts": "bafkreidfvtsxf7l5acuqdnjvso7ds3tmdicbr2tqep7ihjmcd44p3wx5lm", 1735 + "vendor/@awesome.me/webawesome/react/tag/index.js": "bafkreia2iegnfkqq7udhlk27ea4xiwhkixhe3otph4pi7ky33nabh4asde", 1736 + "vendor/@awesome.me/webawesome/react/textarea/index.d.ts": "bafkreicugjgn4kzrdnkhiqw5mxsbuiu3vzr5zpuonhi5ek7qn3wrwhsdjq", 1737 + "vendor/@awesome.me/webawesome/react/textarea/index.js": "bafkreigjhspvaygyrsxdyesaaokad33b5tnjptmpaltzqp7jlp2fl6chxa", 1738 + "vendor/@awesome.me/webawesome/react/tooltip/index.d.ts": "bafkreib4ietxsh42smfj6ndwbpeggs7pqqubxndivdj6saybjgowefzqna", 1739 + "vendor/@awesome.me/webawesome/react/tooltip/index.js": "bafkreicujbardtqmw2nppfmcley2t6h4fyy6vjxjpgcxl7iuqsrzqkd57m", 1740 + "vendor/@awesome.me/webawesome/react/tree-item/index.d.ts": "bafkreigwfuzxyix5uergx4ldfznssl7yqg5jcrgpdorqnninfrfmbt2kty", 1741 + "vendor/@awesome.me/webawesome/react/tree-item/index.js": "bafkreihltvdgjz5lesuhljii3f4vtruubjnib72zvn3zxiyyksa2cepz3m", 1742 + "vendor/@awesome.me/webawesome/react/tree/index.d.ts": "bafkreiexyxdhh5triohlrnydjmhl2ylbxtnlaurzrkb2gwiup6qjzqousm", 1743 + "vendor/@awesome.me/webawesome/react/tree/index.js": "bafkreieug7tzpffpaju6a7454dozugy7xqnajcc44ledf662fneaelhzmi", 1744 + "vendor/@awesome.me/webawesome/react/zoomable-frame/index.d.ts": "bafkreib3nlfaajuzal5am73xudmgzuvvsfvj35rv6xtbxmmen3pxroafra", 1745 + "vendor/@awesome.me/webawesome/react/zoomable-frame/index.js": "bafkreifbad6mjcqtmwyvm2kk222aopznrnksptifxdmnfncxforbffni5m", 1746 + "vendor/@awesome.me/webawesome/skills/webawesome/SKILL.md": "bafkreicyguxmd4ow76jfv7wkrq75xalxbmdgq65mt4fhkynnc62adzjeau", 1747 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/animated-image.md": "bafkreiaaimmpfvrue3ujrycldyc5l6u56k76yrfvjzjtnr4ivqek6atkzi", 1748 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/animation.md": "bafkreihsjjuyxpgjtvubl444u723z3tie4ljmhvzpdcpqyhotapgpcy4zi", 1749 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/avatar.md": "bafkreieqv5pnxbhv3xkuz6v7x4hvnhs7wpsc2gk3ei35t7ipdpehgzjwzm", 1750 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/badge.md": "bafkreiabsicpk24drkwjuk6mmhjef6lg42g7tncmvcqehadxn4p2zh5g5q", 1751 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/breadcrumb-item.md": "bafkreihte4ofwvrbpfkbjxkfaykplwliryyb5zbt4xufbqeldtxccyvaaa", 1752 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/breadcrumb.md": "bafkreiapqzkxahokgav3kc3f6cfqgdziswmfg7pdeww5h25mvt4kymgoee", 1753 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/button-group.md": "bafkreidmskcqj53mkrwltjhj4koho7jlwu5iwzdf625zetyfyp2kfkwkx4", 1754 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/button.md": "bafkreiea7b4iopu4deky3ltd5g2vxjembsbgmffumuy3ksv6hdg4wsgo3u", 1755 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/callout.md": "bafkreids5cdy54ikavuxpgmh4uigizh6sv2ga6zrlfmsbywkovzlsdb2ca", 1756 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/card.md": "bafkreie3jjblk3gmvpxwgvxet3o7een2lz3icmmax6g4fvzmes7243hboa", 1757 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/carousel-item.md": "bafkreiayika3slfnobfhni7z4vxojgqkboom6gnsqkiukkitfvfcqtipja", 1758 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/carousel.md": "bafkreiarn6xb3kpvrh3fluqbeeku3jzyrcw6bktmwty2kal5kh5o3wojxu", 1759 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/checkbox.md": "bafkreihh5aesmp36kidckbim7m5nzeylizn2rbxxqxs4objbwgdxb3ghum", 1760 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/color-picker.md": "bafkreicwhmxw2afggnvjnzuvokzehpxreaxnlvb6pcptsrefj3qt2e2uj4", 1761 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/comparison.md": "bafkreia4csbovzz645fqbafhasucjetjkxl6gsvge47rnfs5jt4rdv3kai", 1762 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/copy-button.md": "bafkreihqy5nlamatehshva67t5hk6kqa53dibb7gepqahzxnm42s6aahuq", 1763 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/details.md": "bafkreidbkw2ys7tdhp77jpaxng4jrzpwpocpw2dldcevamxtfddiiehfdy", 1764 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/dialog.md": "bafkreigfr7a5pu7ebvwwu57mykqil3575suhlf4fz26lowe5b3cifgpuqm", 1765 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/divider.md": "bafkreichcklofijk57imdzdd2jv5kjw476wo4qppyrdgcx3ltd7m4a4fnm", 1766 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/drawer.md": "bafkreig2jyekvd36xhhadi45xgnremkua7xmi4xzwztcyxpygrtci27qwu", 1767 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/dropdown-item.md": "bafkreibwrwz2nikcsqkorrrznifydcur42ktiup4pjixpt6x3xnv2bs56q", 1768 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/dropdown.md": "bafkreidfcqioifplkhinf3arpe3s2mmfleez2st7tppatl4zbtez3wb5fy", 1769 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/format-bytes.md": "bafkreie53gboplmqmvj5cw6wott257bman7g5id6ufwqb53srcpejtzwme", 1770 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/format-date.md": "bafkreialo77fida74jkq6oxdta4xupguxeird2ip3sysbaskhbqtxtg4e4", 1771 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/format-number.md": "bafkreidiutccfy5ujfmaois7crjcenxhh2d7kyi4eofwonfj4nkfgpbuf4", 1772 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/icon.md": "bafkreiauboba3vhblxmvjzx6ffdiqhmepb4hmbyfn25g7w6vvnalahukaa", 1773 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/include.md": "bafkreiecmygxaugbcufujz4a3zur6yezxguwjf73zhr43k3jk5y4ksip7m", 1774 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/input.md": "bafkreia3poi2p4byjanq6krwnb2cecea2ox7jbzwbeuvwugzfjvscyjvny", 1775 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/intersection-observer.md": "bafkreibkoglea4hkffqa4q4ebz3tdq5guwa6nnw5ww657rqjy76e2ncilu", 1776 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/mutation-observer.md": "bafkreiewv7fxksu35fipjtpwkey7rmavqojqqsxkwlibm5667pw65dheaa", 1777 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/number-input.md": "bafkreidnsvzsji5v7msnnsb3xycsvmbrf4mehktl4xulfn3q74xf2jyhxm", 1778 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/option.md": "bafkreie3iqcozdwr3be6l77iy2ztcfmpy7lrh2iz66nqz5nypd34klocn4", 1779 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/popover.md": "bafkreiadwjvo34f3uui4wv6q2r4oyk3gx2755pkpp4gxdeydjcfkgclchu", 1780 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/popup.md": "bafkreifdmfce7razki5kesflvh43ezx6aoh6ycht7x6qys57wivjlhlj2a", 1781 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/progress-bar.md": "bafkreihqkm6erv2vno3awjqytppt4ri3blzraoly3qbrg7n6quosx54asy", 1782 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/progress-ring.md": "bafkreids6ze4vk3l7pnrq7u5doaevqta4a5o6pgc4ercbvtfase3rrnwqi", 1783 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/qr-code.md": "bafkreigobltsmfgoibv7isoypmgzegoga5d3js7fff23geqd2rutkvd5l4", 1784 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/radio-group.md": "bafkreifrsgai55ofeujzgxtziwyvmebw2fiwonovsm44trehf6iczkbicq", 1785 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/radio.md": "bafkreieroxhdklaqvw5wosbakvhdwg3ito5daf5lusdytaipyv6vvjpkzq", 1786 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/rating.md": "bafkreihfgaqwjqv6p2eqtclwko3z2o6c7r2725nm5nuoq4xticvliocoaq", 1787 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/relative-time.md": "bafkreibhahv3mu66eca2otoytmzl5cbnvrsrvwh6cts7hsie3op7tndrlu", 1788 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/resize-observer.md": "bafkreideenpny2c4ugsljutb37fr6qk2l3rff3b7lngy3lrqhp4kc474n4", 1789 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/scroller.md": "bafkreih3zkbekp7zfzfyyptztzcr6ntj4upq2wwnvegyjai2bcw2xq2tpa", 1790 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/select.md": "bafkreien7inq2yqi2be2pz55unlonf2wghj2q4a466vdxl5j3l737kyuza", 1791 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/skeleton.md": "bafkreig2ftvp3koefej4pg6rceovuds3dxzvabxdwj3hzgcj3rjvmzyxse", 1792 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/slider.md": "bafkreihalwc6dgglaq2zalfafbcvsw5okxuk3rdrqyckc3exnfysp2wvpa", 1793 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/spinner.md": "bafkreigyhkqhvds2mydx7pomzc3d3xdnnbrvg6a5rz3tjkhxk2ib2kyzju", 1794 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/split-panel.md": "bafkreifp3gg6ij767ybxgfkkcrpxe6uoxeeafuytp6nugonki5w5bno6au", 1795 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/switch.md": "bafkreiavwuqcwdu2e5libapdsg7jneyo47aag5rqexbuz6zgrjdpm3napy", 1796 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/tab-group.md": "bafkreia742tzi6aum6i5fjdepzfz5tec5moiqfvsmr2tcjngxidc6nxoae", 1797 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/tab-panel.md": "bafkreiesisqdbanxrhxlmdw6njj3tibjd252hjfgzgpc22ga2qxfcslyte", 1798 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/tab.md": "bafkreidynw2jofzzeh4iaoijl6fynduxfnovgsxooce2x5br7cwzhqgce4", 1799 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/tag.md": "bafkreidj67nvjtumvdhchv4euhu4eprc6ijepbnblrqv5yanbsulitcgp4", 1800 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/textarea.md": "bafkreicfuhtbfhjsxqxthqrtjebths7kh4e55n6xxn2lu6e5clrfn22k5y", 1801 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/tooltip.md": "bafkreibboirytviecgkdf6so24ceom5d3cau26ckxcddiccylsfrjn62lq", 1802 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/tree-item.md": "bafkreie3fth4i65wi2zipx4hxt3pqptxwvubnd5e33phw5mkn32g5dynyy", 1803 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/tree.md": "bafkreih4s5i3hlpwyt3gntzb4la5xrkuwj4biok5hqdw6y6puazftuunsu", 1804 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/zoomable-frame.md": "bafkreiamw7onswgea2wscsh4yuz6e45iujrlhvkqutetkweuypu6zhonvm", 1805 + "vendor/@awesome.me/webawesome/skills/webawesome/references/customizing.md": "bafkreif4be4s7xs4wueyzvj7oq2xpubpsa2htqarqpganbozgj23equkf4", 1806 + "vendor/@awesome.me/webawesome/skills/webawesome/references/form-controls.md": "bafkreibjt2tmtyzol2i6bll2eva63fbf6mmbgb64qfoi262qn42kykj4qy", 1807 + "vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/angular.md": "bafkreiatawe777kbxa27tuxkpmhtzimlb6dd4w4mhzmhup4nvxqhusgjvu", 1808 + "vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/react.md": "bafkreicdmlpw424psqljwmgb6qky5mypcrkdkt5osnyc4v4bkzxxrztzxm", 1809 + "vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/svelte.md": "bafkreidgnkxclm3buqyevz5hsvrxg2cyugftbghiiqtetpq66o7mmvukta", 1810 + "vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/vue.md": "bafkreieo4lqx4hlr5aopcqpuwzxvorxnrosondaawm6z6yje3swmvqdldu", 1811 + "vendor/@awesome.me/webawesome/skills/webawesome/references/installation.md": "bafkreibartlnjicf53j6v4nbvgjv5yzjv6e6ihe6lusmucmy3tqazskwqq", 1812 + "vendor/@awesome.me/webawesome/skills/webawesome/references/localization.md": "bafkreieyk5kzylpzb3zikhvu2rrb2fkprhqnicivhlfireeqebj3bvdena", 1813 + "vendor/@awesome.me/webawesome/skills/webawesome/references/support.md": "bafkreigexzlbanyxhfgxpzm5g3pxyfoorcbhkw2uafdhycz5a62fya3yhe", 1814 + "vendor/@awesome.me/webawesome/skills/webawesome/references/themes.md": "bafkreid554opk5yfvkh2kxlsq4546z4nrrgr3lfxpoa7sez77jrvf4qnme", 1815 + "vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/borders.md": "bafkreidzfl7ssjgskr55thdx6xm6wqrl2qa7xjyu2waaa2rbxeiwudqcl4", 1816 + "vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/color.md": "bafkreiahboavzmpg34ag35w5ql7bezdefoumarasi5st4xiyftgwhkysdq", 1817 + "vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/component-groups.md": "bafkreicz7gwk2zh6r54alzbvflp22s7nxqhyfn6wqize7mjsd5nfvs3hpa", 1818 + "vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/focus.md": "bafkreib6gwxbjbisp7wkabkfsaknje6veqr2o6jgkfugzzzl5wdmdammba", 1819 + "vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/shadows.md": "bafkreiflslxxcd2hppm3zlk4axj7ujkdnoladch7er4hjwt3uot3yo3uvu", 1820 + "vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/space.md": "bafkreibsqwnpyaly6wekruzeqf4d4qccygbe46qmnmxyh2a4x4i5ejckz4", 1821 + "vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/transitions.md": "bafkreibi3ilxlwqwwh5vh4qtk7gklkjtj53m2skkcyb5vqnqovxp2sybdi", 1822 + "vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/typography.md": "bafkreifqwabc5nrwhynsocsb46wngwp3pyrl7z2curldjvjt7qsuz6zijq", 1823 + "vendor/@awesome.me/webawesome/skills/webawesome/references/usage.md": "bafkreih5t67aiobybnani7jikynkduibuls3yk4ups5smwt2afjhcfqe7m", 1824 + "vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/color.md": "bafkreibyquyarldey6oigw5h2tedloodr7idu3otqsndx5yseyvj4xlq2u", 1825 + "vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/fouce.md": "bafkreifdahr2qwd64bevie63slxlympud7p74ermp2ryjltyun2k2ucepm", 1826 + "vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/layout.md": "bafkreieqxdp3p56shwsmz6oseh7xa3zkapiu4zhac6laihap2imegvidzy", 1827 + "vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/native.md": "bafkreifjul6gsqd3tt3c4qiwmqdzdl4s4w3opdxmf2jeguzmn6a4johoge", 1828 + "vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/rounding.md": "bafkreig3eeg2a5yfw2lzatuyedle5nza2iprqfffqaqzudlq7kjxzyqp6m", 1829 + "vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/text.md": "bafkreibbi34dub4pnbrx55jsxq22663mpo4dus75z57appbjnpqqg35hfm", 1830 + "vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/visually-hidden.md": "bafkreifc7sntk2s3z34i34n7wunx3sd6q4lkjl32urxkk2zlgcjo6p3lsu", 1831 + "vendor/@awesome.me/webawesome/styles/color/palettes/base.css": "bafkreie2onky2mzp24dxdtzk4wu4arv62m754ww4fr372rxrn3cqia5qce", 1832 + "vendor/@awesome.me/webawesome/styles/color/palettes/bright.css": "bafkreierxkqshujsvubxkymx27v67iw5wumqcwoceqofog6aag7wqepfpq", 1833 + "vendor/@awesome.me/webawesome/styles/color/palettes/default.css": "bafkreid72wbf2sds2ief5thim53nhvjyhrqgrawvmz7w6mif6bfrltgwty", 1834 + "vendor/@awesome.me/webawesome/styles/color/palettes/shoelace.css": "bafkreigaxrgruw53dwva3hv3ypigscswwm6hipmd7afpj2vmj6aaszrsgi", 1835 + "vendor/@awesome.me/webawesome/styles/color/variants.css": "bafkreifhmtkjir4botkvhbnckf3wwi6lkxx3ngmcnz7ukky6kwawspjdza", 1836 + "vendor/@awesome.me/webawesome/styles/color/variants/brand.css": "bafkreifcqkmdca37vxly22ndsmd2hibelijoe23zdfeb4cgpfyh64grnsi", 1837 + "vendor/@awesome.me/webawesome/styles/color/variants/danger.css": "bafkreiamwo7uggg6jam37uop4oa63ddqrr5drq2dixolfo2kglczn5bto4", 1838 + "vendor/@awesome.me/webawesome/styles/color/variants/neutral.css": "bafkreighhw3oblelaf7qah7teoeptsel6qcmgclkjeo3ecevdxxfx7bavi", 1839 + "vendor/@awesome.me/webawesome/styles/color/variants/success.css": "bafkreiacrv7c6uoiqfkeg65cdqa4mra34pnnhjpslz7vqa5nztqgvehava", 1840 + "vendor/@awesome.me/webawesome/styles/color/variants/warning.css": "bafkreifrbpk4ihb4u6b5ioewqwwasrrwpzt2dqcljlrptfmvsuclc6pmje", 1841 + "vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1842 + "vendor/@awesome.me/webawesome/styles/component/form-control.styles.ts": "bafkreibdydtb4qskcktqipksdnu4nhz5rlh7eh2eevvh6pk2uqntd3ba6a", 1843 + "vendor/@awesome.me/webawesome/styles/component/host.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1844 + "vendor/@awesome.me/webawesome/styles/component/host.styles.ts": "bafkreibsyfxihiaqkbtyfpouo7ptw44jqny4ifuzkky6liwk55ukskqapa", 1845 + "vendor/@awesome.me/webawesome/styles/component/size.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1846 + "vendor/@awesome.me/webawesome/styles/component/size.styles.ts": "bafkreieh7jcgbmwaquopal2knxhxhljj2725dx4subns74v5uombn2q6m4", 1847 + "vendor/@awesome.me/webawesome/styles/component/variants.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1848 + "vendor/@awesome.me/webawesome/styles/component/variants.styles.ts": "bafkreihuwssoyugi2l3glpl7yzvm53xqg7xpmcqz6dzo7nvmbjgzn7idbm", 1849 + "vendor/@awesome.me/webawesome/styles/component/visually-hidden.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1850 + "vendor/@awesome.me/webawesome/styles/component/visually-hidden.styles.ts": "bafkreibp7qtsfyltv3xiikhpgrpqrulnmwbgzeqlgaez7acf7ho3iywzbe", 1851 + "vendor/@awesome.me/webawesome/styles/layers.css": "bafkreibfgszzxtipjbgmw54a56uuekox3hm3nvqdxrwy3n5hfjkwxcwowa", 1852 + "vendor/@awesome.me/webawesome/styles/native.css": "bafkreiaydzvsybxqven277vgmdvfmskbsk2dpgsskgbofn7bqadcwp73wy", 1853 + "vendor/@awesome.me/webawesome/styles/themes/awesome.css": "bafkreif46lu35zcogx7abct3vgrbjjerj2tl7acyl7qaka5q725572ob5i", 1854 + "vendor/@awesome.me/webawesome/styles/themes/default.css": "bafkreifaaa4nljcnygkp2rk2dpujfs7dhkownzvpbcdf5a6zcgnqzpbk6m", 1855 + "vendor/@awesome.me/webawesome/styles/themes/shoelace.css": "bafkreidqlhvr7kr6glkjvzqcccirqnijukcjrm63rf2u4i4xuiqsxvjcpq", 1856 + "vendor/@awesome.me/webawesome/styles/utilities.css": "bafkreic46fcaxay4u6kxddz5bsuspdmz2hdvydy4b6kxhb4rntpgr2fnbe", 1857 + "vendor/@awesome.me/webawesome/styles/utilities/align-items.css": "bafkreihor6nzxodkzzrfffgzl6cmbt5s7ldae7wlcwb774kimawrjrnkwa", 1858 + "vendor/@awesome.me/webawesome/styles/utilities/border-radius.css": "bafkreidy7ioezfpm43afu4ncemktikvfsifycjgdwwc3jt4hyt3yjlvkjy", 1859 + "vendor/@awesome.me/webawesome/styles/utilities/flex-wrap.css": "bafkreihsnm3hwk2r2onoaecjayulougf2x4rc2fs7gzkewdur3cx6sep6a", 1860 + "vendor/@awesome.me/webawesome/styles/utilities/fouce.css": "bafkreidtqbbxw4px7ixu6nturrpmo7sirnvekwd54ksvgw6qrmjplx72pa", 1861 + "vendor/@awesome.me/webawesome/styles/utilities/gap.css": "bafkreihzrvzbsfconndwccsja26nzzig466cdpmhby7dvz5d3g6y5iigce", 1862 + "vendor/@awesome.me/webawesome/styles/utilities/justify-content.css": "bafkreiambkmxlmsf364hswarjivby6fwlk27pfmv4eo2cdj2l5tumxnph4", 1863 + "vendor/@awesome.me/webawesome/styles/utilities/layout.css": "bafkreicowrqy2dqcugmw4zazpmlnpglp6sth4pp6rj3yrwdttxy7yzkw74", 1864 + "vendor/@awesome.me/webawesome/styles/utilities/placeholder.css": "bafkreibqt6o6xl4lwnvldhmqht5pncuh3fp26esovheeg7je2egcbtur3m", 1865 + "vendor/@awesome.me/webawesome/styles/utilities/scroll-lock.css": "bafkreibzmgheh36qgcofe6x3ztmnbabb36uo3qsjxst2weo24zg433vleq", 1866 + "vendor/@awesome.me/webawesome/styles/utilities/size.css": "bafkreidbl4oq7s5ygjxqnfyxkowielmmsuxgyelt6bbq2sn5sum6frzkhi", 1867 + "vendor/@awesome.me/webawesome/styles/utilities/text.css": "bafkreiheo6ug2dgyd2cewxbat3w562vhzf2lyvzfy7r6sxv7qvnnah2jzy", 1868 + "vendor/@awesome.me/webawesome/styles/utilities/variants.css": "bafkreigm4je6s6awgzwy6675zhon2lrf7qfopjrub4llbnj64wfzgmda3i", 1869 + "vendor/@awesome.me/webawesome/styles/utilities/visually-hidden.css": "bafkreihjmxbcvpgeui3sle3raqzjlgijw4ij3kkdis4nzgskduscwoyjpi", 1870 + "vendor/@awesome.me/webawesome/styles/webawesome.css": "bafkreicdbmout7nc5myl5tc2ufyt5e5srm7iddnullqd5c3l2rn4xqt664", 1871 + "vendor/@awesome.me/webawesome/translations/ar.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1872 + "vendor/@awesome.me/webawesome/translations/ar.js": "bafkreigpj2hspuntswezgkhmsfwhiznblnqhftznluut6jssetfzhkubs4", 1873 + "vendor/@awesome.me/webawesome/translations/cs.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1874 + "vendor/@awesome.me/webawesome/translations/cs.js": "bafkreic2z7rip5sjwghudzcuvpc6ejo7lml2piw5oieghkxqyiwpum67fi", 1875 + "vendor/@awesome.me/webawesome/translations/da.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1876 + "vendor/@awesome.me/webawesome/translations/da.js": "bafkreigvallkxuka4yxjulkjclgpfongajhnmzronq5qz6ufzpjwkc6yyq", 1877 + "vendor/@awesome.me/webawesome/translations/de-ch.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1878 + "vendor/@awesome.me/webawesome/translations/de-ch.js": "bafkreiccx3uhghhglm3prv6qpdmempucnziny5sruhb7od4nexjgn7d7aq", 1879 + "vendor/@awesome.me/webawesome/translations/de.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1880 + "vendor/@awesome.me/webawesome/translations/de.js": "bafkreid2bfo3s7fgdec5ojmynwawrkofoh5qvixxmrv2huznhtbbzki36a", 1881 + "vendor/@awesome.me/webawesome/translations/en-gb.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1882 + "vendor/@awesome.me/webawesome/translations/en-gb.js": "bafkreiepatxobtrkbva6orko6alkdvq7vlgyf76ugbgulzykua4hicmb5a", 1883 + "vendor/@awesome.me/webawesome/translations/en.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1884 + "vendor/@awesome.me/webawesome/translations/en.js": "bafkreiczhx4wf5cjmm34b5ynkdyck22vkpt2cs6xm7cegfqeav7ru3jzpe", 1885 + "vendor/@awesome.me/webawesome/translations/es.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1886 + "vendor/@awesome.me/webawesome/translations/es.js": "bafkreif2s4h4hxjxf3juh3i6ilf7q5lqdgqocrjgbkvm2bcelak57sp4wa", 1887 + "vendor/@awesome.me/webawesome/translations/fa.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1888 + "vendor/@awesome.me/webawesome/translations/fa.js": "bafkreifnqt2qmny3g5ycvxo2hxxanz2e7wgud7gkoq2htuthlc6guj32ay", 1889 + "vendor/@awesome.me/webawesome/translations/fi.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1890 + "vendor/@awesome.me/webawesome/translations/fi.js": "bafkreihw6asodocjr5w5rzcp6sr6kg4f3gldootdc63ryjbvtsvxrtk4fy", 1891 + "vendor/@awesome.me/webawesome/translations/fr.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1892 + "vendor/@awesome.me/webawesome/translations/fr.js": "bafkreiee2jjye32tmbx7tutjgnqloroms5xa4v7opnr73xeuzvxx6vpcc4", 1893 + "vendor/@awesome.me/webawesome/translations/he.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1894 + "vendor/@awesome.me/webawesome/translations/he.js": "bafkreieynffwkmnltmlvrxom7chimersmeem4l2ioy3m7xkvxa6jrjdgru", 1895 + "vendor/@awesome.me/webawesome/translations/hi.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1896 + "vendor/@awesome.me/webawesome/translations/hi.js": "bafkreicggda35rc2fl43zmteywfpnmiqspcgay6wyc7xcqlwofx4m6ytte", 1897 + "vendor/@awesome.me/webawesome/translations/hr.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1898 + "vendor/@awesome.me/webawesome/translations/hr.js": "bafkreiggp7ghwkzlxqo3od2x32xeenxhn5dhe5zp33s35h6yjyadyw2poe", 1899 + "vendor/@awesome.me/webawesome/translations/hu.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1900 + "vendor/@awesome.me/webawesome/translations/hu.js": "bafkreiabo6q33daet35zwcj4etwh3sm2jos5jsmnp2to55327t5txmbpaq", 1901 + "vendor/@awesome.me/webawesome/translations/id.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1902 + "vendor/@awesome.me/webawesome/translations/id.js": "bafkreihylqc7sucvncgrvuxtgeapb3mvzbmh2mlcgmgznattvwn2xhobby", 1903 + "vendor/@awesome.me/webawesome/translations/it.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1904 + "vendor/@awesome.me/webawesome/translations/it.js": "bafkreiccq7arhenps2brxu5vfpqrxl24vv4g5mi34qygwa27vkfwes64pe", 1905 + "vendor/@awesome.me/webawesome/translations/ja.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1906 + "vendor/@awesome.me/webawesome/translations/ja.js": "bafkreicsbjlm4rc6cqtd4pczwrfbkc4f2dgif3z3dvrl3bc64jlks4o5nu", 1907 + "vendor/@awesome.me/webawesome/translations/kk.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1908 + "vendor/@awesome.me/webawesome/translations/kk.js": "bafkreiaeskebbp4ms4lkm4zmsbdazkie2bqeuqot6yborzw3b4jxzhrrau", 1909 + "vendor/@awesome.me/webawesome/translations/nb.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1910 + "vendor/@awesome.me/webawesome/translations/nb.js": "bafkreictdolzrnhkoazhoozdi2q4nhjln25te5slag5nw2b3jgtg4aevfu", 1911 + "vendor/@awesome.me/webawesome/translations/nl.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1912 + "vendor/@awesome.me/webawesome/translations/nl.js": "bafkreifam2rtnj2s7s7lu65civ6wpl2sdl2v2no7jpl56fpmlnkndcivu4", 1913 + "vendor/@awesome.me/webawesome/translations/nn.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1914 + "vendor/@awesome.me/webawesome/translations/nn.js": "bafkreifa2hs7kl4kp5nrrqqtxx3dbe4ksn6bug3nnvazq4fucxrkwxfjdq", 1915 + "vendor/@awesome.me/webawesome/translations/pl.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1916 + "vendor/@awesome.me/webawesome/translations/pl.js": "bafkreicop52t3u2cpfm6okdsatfjwbgqfx6z6eiuflmlevwpyaci2k7ibm", 1917 + "vendor/@awesome.me/webawesome/translations/pt.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1918 + "vendor/@awesome.me/webawesome/translations/pt.js": "bafkreifobjufhwqled3uj54pfpvu2l6ui563iiiu74yvtz4quy2wc3foma", 1919 + "vendor/@awesome.me/webawesome/translations/ru.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1920 + "vendor/@awesome.me/webawesome/translations/ru.js": "bafkreigblvqsj7fx7tjtth2bk22r6qkgryd3foptatsmwr4mb7ykuf3cna", 1921 + "vendor/@awesome.me/webawesome/translations/sl.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1922 + "vendor/@awesome.me/webawesome/translations/sl.js": "bafkreiah7hx6jbqqi4432zj4qasef3teljrsucc5fk3gkhov76xyj3gmby", 1923 + "vendor/@awesome.me/webawesome/translations/sv.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1924 + "vendor/@awesome.me/webawesome/translations/sv.js": "bafkreicfxh3a5mz3dg665e67rzdpr36rimcsjcdkfrwbrstvrvmngimtqm", 1925 + "vendor/@awesome.me/webawesome/translations/tr.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1926 + "vendor/@awesome.me/webawesome/translations/tr.js": "bafkreicacwbjnslqohowkdznaypfqy7hgwdxytqg3fslkup5o6v673rkxe", 1927 + "vendor/@awesome.me/webawesome/translations/uk.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1928 + "vendor/@awesome.me/webawesome/translations/uk.js": "bafkreibwxpcoab4s6lhtw4jkkydvlgsfgpz7wycarf2zmw5ty23bxgcrai", 1929 + "vendor/@awesome.me/webawesome/translations/zh-cn.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1930 + "vendor/@awesome.me/webawesome/translations/zh-cn.js": "bafkreibvpithaasxtx4vt6x32ge4mdtzgdq3madqjfyyqs2ais2kkllm64", 1931 + "vendor/@awesome.me/webawesome/translations/zh-tw.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 1932 + "vendor/@awesome.me/webawesome/translations/zh-tw.js": "bafkreifptkjmljp2bxrwgfzsax4ejigkl4rv5orn2pkhkl7ezl4ikldn7m", 1933 + "vendor/@awesome.me/webawesome/types/svelte/index.d.ts": "bafkreig2hmlc3jvfv662hu6jvootvem4jss3el6edb5ror5d2citfkeo5m", 1934 + "vendor/@awesome.me/webawesome/types/vue/index.d.ts": "bafkreifq75dcu5m2ghtjv7g5rgwiisjbjphxz3jzmmf37hyteuznuabwie", 1935 + "vendor/@awesome.me/webawesome/utilities/animation.d.ts": "bafkreidwfk3xf7s3wcq7jcewgofc6pjl66vkmkfdzdljjdpmk6ja75l7xm", 1936 + "vendor/@awesome.me/webawesome/utilities/animation.js": "bafkreifixqetp2phzxlmo6i4dgj2ok4vivb5rhozv7aaitqqaejqvfmqpu", 1937 + "vendor/@awesome.me/webawesome/utilities/autoloader.d.ts": "bafkreifwopj3cmmegy2np4tok2ueb44rdeoplwu5hobwdifpzjy3lv4gs4", 1938 + "vendor/@awesome.me/webawesome/utilities/autoloader.js": "bafkreievyi5l36dm4lmykls43g7cp4df637ivklqfabx3zoi7xil24bh4a", 1939 + "vendor/@awesome.me/webawesome/utilities/base-path.d.ts": "bafkreia4us3ltofrn6foeppdsqkyygzyv5ojofp53zhidfkx3wvkauhqu4", 1940 + "vendor/@awesome.me/webawesome/utilities/base-path.js": "bafkreibj6aooucve7cz6ugjsjra6mxwozddf2hdqvxaslejieq6oniauce", 1941 + "vendor/@awesome.me/webawesome/utilities/defined.d.ts": "bafkreicrnlejxiddfto5xvlupxhj3ptr6qnown35c5lzmdooe56hzyokxe", 1942 + "vendor/@awesome.me/webawesome/utilities/defined.js": "bafkreiges3pksmxbjew3wvmmee7mefeoqugnx3oxf5izsed7prpu6ro65i", 1943 + "vendor/@awesome.me/webawesome/utilities/form.d.ts": "bafkreicz5i53tg2rrukzci22ykucpbvbvcahew33ht3r47hhdc3f6447ve", 1944 + "vendor/@awesome.me/webawesome/utilities/form.js": "bafkreifhav2tlrbr26jddrqp5vvnlnxrudzrccrgusu3o4whimrqvcbky4", 1945 + "vendor/@awesome.me/webawesome/utilities/localize.d.ts": "bafkreibqgbniyktlx2fpqtzrz62pl3lxn5r23tnqd4m4dehestofhoh3zq", 1946 + "vendor/@awesome.me/webawesome/utilities/localize.js": "bafkreiajvnia25k6cfgcmmcsfm333yg25zxleneqx4pru7lsecwcpgmpky", 1947 + "vendor/@awesome.me/webawesome/vscode.html-custom-data.json": "bafkreiab54gjejndfkiz7tz5z4xy2mfzwd62k5d32tmb5n2hmrujj6rsaa", 1948 + "vendor/@awesome.me/webawesome/web-types.json": "bafkreidzeormmgprmeokdsml4moylkl7cxgfywmazl5elmsusbsiknxg6u", 1949 + "vendor/@awesome.me/webawesome/webawesome.d.ts": "bafkreigmfea4rbz5ml7jwvfota7alzoe2yzdnyzc2gbghszvbzyfrbzds4", 1950 + "vendor/@awesome.me/webawesome/webawesome.js": "bafkreigrpgn6y5xzwzn6bnhyqbd53uhuxfhllo2lzyt3h6otinjucyozoe", 1951 + "vendor/@awesome.me/webawesome/webawesome.loader.d.ts": "bafkreie5iunv7njz66rij2yglwm2tw5vq3t3amsvhloak2z4qcjzgcp7au", 1952 + "vendor/@awesome.me/webawesome/webawesome.loader.js": "bafkreigv5j26jhqmdbvxzynktrbyxt2bqfwzedhb7izigoxnldgv6mpdmy", 1953 + "vendor/@awesome.me/webawesome/webawesome.ssr-loader.d.ts": "bafkreielbfcxkwwoc4fk3lj7mrx55zcmhxpvzuthnxhu5kwdbjrds2imwi", 1954 + "vendor/@awesome.me/webawesome/webawesome.ssr-loader.js": "bafkreihtcnvfskpcq7hyjxolezushtsajvam2vpoq4lzopwaki2nlasqhy", 1955 + "vendor/@phosphor-icons/web/bold/Phosphor-Bold.svg": "bafkreihci5zzwjugodkwck5kseqa6d3wc2m65nuhknggqu3oug3z3fi364", 1956 + "vendor/@phosphor-icons/web/bold/Phosphor-Bold.svg.br": "bafkreih3wwj6wnrmll442h57xeohdrj6wzvlzwbhpxxhdmbdhxoghemlpq", 1957 + "vendor/@phosphor-icons/web/bold/Phosphor-Bold.ttf": "bafkreiaqucq4wt4bk2scb6pyjtzuytuyohsy5uw55ipwvadzvudsiot7wi", 1958 + "vendor/@phosphor-icons/web/bold/Phosphor-Bold.woff": "bafkreig6jxgj2ggpgm3dygoszesmtwovdyqqs6f5hzxmkcfoy4lhbm63ay", 1959 + "vendor/@phosphor-icons/web/bold/Phosphor-Bold.woff2": "bafkreibbko2sz2u6a36azscjmbel4sc3hana7c7rgcw6uwuxk36i6ealq4", 1960 + "vendor/@phosphor-icons/web/bold/selection.json": "bafkreibcj3z7tpa4d4y6s6jqyhxr6kmtwfas3dfdkyjxj4v7ybqctqdwii", 1961 + "vendor/@phosphor-icons/web/bold/selection.json.br": "bafkreihxta7vu27ze3qrpd2kxcr4jiuhtnyeg5kutnncdrpbp3fc645jla", 1962 + "vendor/@phosphor-icons/web/bold/style.css": "bafkreidhr6z4ydsn7bked2ib4letuhaaj4gvzxhrypqrxm2cmbutth65gy", 1963 + "vendor/@phosphor-icons/web/bold/style.css.br": "bafkreidihvtitqitduvf3e5tcbjiu6st2o7j7k47qivd6ghr74rl5uzl6i", 1964 + "vendor/@phosphor-icons/web/bold/style.css.map": "bafkreihq4cuc267db7xnrax7wmva3hrrzrqjpyu2cubq3odr67shhyl7fq", 1965 + "vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.svg": "bafkreielzftesde6xqjjmxcaf7nuvaqclkasal7vcy3p6uupyy2j7g3wdi", 1966 + "vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.svg.br": "bafkreidhzktuw56zhjwpnj34qbg7qhomxwoqkgmn2w5hiplme3jlt2y5s4", 1967 + "vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.ttf": "bafkreiea43ynn6um5fvjsm7urkvl3xczfroswuwk7dybbj7fjil4oqeex4", 1968 + "vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.woff": "bafkreih4vgop6pz6zawoy7s6zglt4iu55ohp5r2desc3tizzx6uxw3l3ou", 1969 + "vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.woff2": "bafkreiet2fr42sy7a5zw2nf756aiansgvmbsf35ji6uy4oltufcq4pjazq", 1970 + "vendor/@phosphor-icons/web/duotone/selection.json": "bafkreihzrrqlsaeo3clkrpi3wctde6unihzzx5irlbfacdi2raglugtkxe", 1971 + "vendor/@phosphor-icons/web/duotone/selection.json.br": "bafkreifp5t6y6wg2j3lmz7t4lm4h6ibowhcoje56rupkzruock6fen5jaa", 1972 + "vendor/@phosphor-icons/web/duotone/style.css": "bafkreib7wphukfrv75gdniwlmy2mwbrzpiwdf4z4bytorrrw2mfiufrlkq", 1973 + "vendor/@phosphor-icons/web/duotone/style.css.br": "bafkreiaycl6rtjencqixe2lbo3n2xedbqwwkt577j3xe5tf7emquvceam4", 1974 + "vendor/@phosphor-icons/web/duotone/style.css.map": "bafkreibvos4hgzpg3uegcayxhpqbdf53haqzcvbxklut2oxcnpassyce4y", 1975 + "vendor/@phosphor-icons/web/fill/Phosphor-Fill.svg": "bafkreig7gzbkt3q5heypkox2dqz726xzebipglhoptefkllrubzets56me", 1976 + "vendor/@phosphor-icons/web/fill/Phosphor-Fill.svg.br": "bafkreie222d6znlvpa2jd5cxragqypzhjaktqzbgsyrchdosl3n4hf5veu", 1977 + "vendor/@phosphor-icons/web/fill/Phosphor-Fill.ttf": "bafkreiffh5osmmgkwxr3ou3ozoowtvyvdgrbsauyyivr7dlxbxjxxquubi", 1978 + "vendor/@phosphor-icons/web/fill/Phosphor-Fill.woff": "bafkreic55juosgmbejug5qtyr6a6gronkdbo5gma63eqpv2c7eok2sa5ja", 1979 + "vendor/@phosphor-icons/web/fill/Phosphor-Fill.woff2": "bafkreidgbplaixaobwlvnto3rorozy5k3bk567kkc4hpep33dqf7keoega", 1980 + "vendor/@phosphor-icons/web/fill/selection.json": "bafkreicmefa643uo3g2tizvsnzedzjgyl7hsaratqauqsxkw7eiodoo2wi", 1981 + "vendor/@phosphor-icons/web/fill/selection.json.br": "bafkreidnn7ty5cjkeqzxfgcksewmnleic5yxeonnwkoreg4dlcuzzznuxe", 1982 + "vendor/@phosphor-icons/web/fill/style.css": "bafkreihbqsjavqblau6khhufexdqnnq3komqgoumw26xuqpn5g6os6aqvq", 1983 + "vendor/@phosphor-icons/web/fill/style.css.br": "bafkreichhpresqjoxjpbrixyn2je22d5nh5mk2lr7ia2ps7lfajcdwqheq", 1984 + "vendor/@phosphor-icons/web/fill/style.css.map": "bafkreifw7ffciurwtt2plh3h4c72wtajb5o4onxjjhgwin5ftbetwgtqqq", 1985 + "vendor/@phosphor-icons/web/light/Phosphor-Light.svg": "bafkreigr5sqrmuzdr2m4rszi7z42uuf3b5m6kmqvnh5soutwobzueumi3i", 1986 + "vendor/@phosphor-icons/web/light/Phosphor-Light.svg.br": "bafkreig5ut6sz2ny4br7d22ywpgfgo3vz4suqclwlc4lbw5xlay6tzvo3y", 1987 + "vendor/@phosphor-icons/web/light/Phosphor-Light.ttf": "bafkreifbb332ayy5ubdcn7fc5k4sduklhelut7o7undfosjwr4q3fd6unq", 1988 + "vendor/@phosphor-icons/web/light/Phosphor-Light.woff": "bafkreidngtltuajqlizgbmpil2e4mw6ac4bhjrmhjoezlia3pheghj5bye", 1989 + "vendor/@phosphor-icons/web/light/Phosphor-Light.woff2": "bafkreie4ixubnccsb2lh4lozhvyc53kz2jndvf6yzsbjgky5c4thuj4yq4", 1990 + "vendor/@phosphor-icons/web/light/selection.json": "bafkreifwg2mjcpjckrduqvivbe2gt4qdr3rezmc4yfzg7lqstvdiltxpha", 1991 + "vendor/@phosphor-icons/web/light/selection.json.br": "bafkreie7ap3v7qbtfkleael6kvfjmo7s2tkt2vfs75bgnvr7jfie2i423y", 1992 + "vendor/@phosphor-icons/web/light/style.css": "bafkreibhpvm45srhdstylqnrlcneu3isfq36wxxudeet4jhux35xkqglru", 1993 + "vendor/@phosphor-icons/web/light/style.css.br": "bafkreiez3nthzebnge7qvkrw653o6fthual7s6ao3g54illfhgtlqeqj7u", 1994 + "vendor/@phosphor-icons/web/light/style.css.map": "bafkreih6wz5dwkf4scffhbmpsskftiinxm2gwcz6mpolsx6qmd5g37q7oi", 1995 + "vendor/@phosphor-icons/web/regular/Phosphor.svg": "bafkreihiottrfu7rw53uwtf2pwx5uhxm3mpqoxgv4lwbccoaku2cd3fo2m", 1996 + "vendor/@phosphor-icons/web/regular/Phosphor.svg.br": "bafkreicm5tgg44momm5ogisus6kjtp7xruaobwqr2csocdws3ksslikd4u", 1997 + "vendor/@phosphor-icons/web/regular/Phosphor.ttf": "bafkreiagxepaek365cm2mpx45wdzhevhj4f2zpnfjzcgp2pwmmra2fz2ca", 1998 + "vendor/@phosphor-icons/web/regular/Phosphor.woff": "bafkreibznrpk47zn7ngr6vbs5xmhccpnul4suri3eft6iorgcznye5ypou", 1999 + "vendor/@phosphor-icons/web/regular/Phosphor.woff2": "bafkreigc5jc6ubp7lr67de3hodaqi4s7fjupip6tipzv6pnchiyle7pdfi", 2000 + "vendor/@phosphor-icons/web/regular/selection.json": "bafkreiggdk3iig4lv4z6b3ytgjwotnw3n2cficwuezfz7eqfbueqvtizhy", 2001 + "vendor/@phosphor-icons/web/regular/selection.json.br": "bafkreigfgvirutip6aimn7akzlmls7erko5hqsk4f76vqr5c4tye64ranu", 2002 + "vendor/@phosphor-icons/web/regular/style.css": "bafkreifrzr5ahkcwhasa5f2d2t2n4t4isk6efcou7olxd4aneu5dbyboly", 2003 + "vendor/@phosphor-icons/web/regular/style.css.br": "bafkreigvpaba7ftep2nrkiyjhktxbxeignx2mxb6scxahnlsdwb2q75fra", 2004 + "vendor/@phosphor-icons/web/regular/style.css.map": "bafkreie4tbgkqtss7msrkxf3wrevvgop6us65agbncz4bi2z3f7hcwaame", 2005 + "vendor/idb-keyval/index.js": "bafkreia4ra4nxptlpwbhdcbykmlffqtwexs3xf4lhmm4sd4hewvjmlfwjq", 2006 + "vendor/idb-keyval/index.js.br": "bafkreicemklckedfezfkhr7ziosse7lekiwibgm2uypvoxfs77mz6que3a", 2007 + "vendor/idb-keyval/index.js.map": "bafkreie7e5gbjkloe6s6c5jidwkccoqffyfv3pl7cotwf5tqkc2o6hebfi", 2008 + "vendor/lit-html/index.js": "bafkreibortghxtvcg2xpd66hwlxtnllmu3ihca4l2tc5rvltcklamzmhay", 2009 + "vendor/lit-html/index.js.br": "bafkreibngqpu6oplyoff7uskwk5nehsw62y2at7jwgwwc4c3zokg4eskba", 2010 + "vendor/lit-html/index.js.map": "bafkreiauphodjl2v3pfgnimyauic5nx2j5zty43g2jndeshokz625olu6y", 2011 + "vendor/ms_sans_serif.woff2": "bafkreiarwwtivs3lsz6r7ks2h5megibi5he4vwrxzb3y3homoqk5zjz2gi", 2012 + "vendor/ms_sans_serif_bold.woff2": "bafkreic7h66fpeftcx6blc3usb4op7i5otq7tndd623sm3azbdfyfjcqvy", 2013 + "vendor/throttle-debounce/index.js": "bafkreiggjb4ce4y5kb5ihgd65r46w42odayigch5sniw37kxypn5qrtgma", 2014 + "vendor/throttle-debounce/index.js.br": "bafkreib33xto3vhsobmzcwbdnhfysmb2p7owhk2xjyaj5tdoquq52wuqya", 2015 + "vendor/throttle-debounce/index.js.map": "bafkreib6jlcm43iemz2jvxubmd2mkqh5mbtbb35f3isjqc57esowz2riem" 2016 + }
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/file-tree.json.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/file-tree.json.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/fonts/98.css/ms_sans_serif.woff2
··· 1 + ../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/ms_sans_serif.woff2
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/fonts/98.css/ms_sans_serif_bold.woff2
··· 1 + ../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/ms_sans_serif_bold.woff2
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/fonts/CommitMonoVariable.woff2
··· 1 + ../../bafybeiezh4rgv7gk73o5dalfyilv5nfopezyvshtj5j7hrn23r4n27k7da/fonts/CommitMonoVariable.woff2
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/fonts/InterVariable-Italic.woff2
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/fonts/InterVariable-Italic.woff2
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/fonts/InterVariable.woff2
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/fonts/InterVariable.woff2
+280
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/guide/index.html
··· 1 + <html lang="en"> 2 + <head> 3 + <meta charset="UTF-8" /> 4 + 5 + <meta name="color-scheme" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + 8 + <meta name="media-controllable" /> 9 + <meta name="mobile-web-app-capable" content="yes" /> 10 + 11 + <title>Guide | Diffuse</title> 12 + 13 + <!-- Base --> 14 + <base href="../" /> 15 + 16 + <!-- Favicons & Mobile --> 17 + <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" /> 18 + <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" /> 19 + <link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png" /> 20 + <!-- TODO: <link rel="manifest" href="site.webmanifest" />--> 21 + <link rel="mask-icon" href="safari-pinned-tab.svg" color="#8a90a9" /> 22 + <meta name="msapplication-TileColor" content="#8a90a9" /> 23 + <meta name="theme-color" content="#8a90a9" /> 24 + 25 + <!-- Preloads --> 26 + 27 + <!-- Styles --> 28 + <link rel="stylesheet" href="styles/base.css" /> 29 + <link rel="stylesheet" href="styles/diffuse/page.css" /> 30 + <link rel="stylesheet" href="styles/diffuse/code-editor.css" /> 31 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/bold/style.css" /> 32 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/fill/style.css" /> 33 + </head> 34 + <body> 35 + <style> 36 + .construct, h2 { 37 + color: var(--accent); 38 + } 39 + </style> 40 + 41 + <header style="overflow: hidden"> 42 + <div> 43 + <div class="diffuse-logo-container diffuse-logo-container--condensed"> 44 + <a href="./" style="display: inline-block;"> 45 + <svg viewBox="0 0 902 134" width="160"> 46 + <title>Diffuse</title> 47 + <use 48 + xlink:href="images/diffuse-current.svg#diffuse" 49 + href="images/diffuse-current.svg#diffuse"></use> 50 + </svg> 51 + 52 + </a> 53 + </div> 54 + </div> 55 + <div class="dither-mask filler"> 56 + <div id="status--filler-container"> 57 + <span id="status"> 58 + <a href="/latest/" title="Upgrade to latest" class="animate-spin"> 59 + <i class="ph-bold ph-spinner"></i> 60 + </a> 61 + <a href="/chronicle/" title="Browse versions of Diffuse"> 62 + <i class="ph-fill ph-star-four"></i> 63 + </a> 64 + </span> 65 + 66 + </div> 67 + </div> 68 + </header> 69 + 70 + <main> 71 + 72 + <div class="nav-container"> 73 + <nav id="diffuse-nav"> 74 + <a href="dashboard/" class="button button--transparent button--border"> 75 + <span> 76 + <i class="ph-fill ph-person"></i> 77 + Your Diffuse 78 + </span> 79 + </a> 80 + 81 + <a href="guide/" class="button button--border"> 82 + <span> 83 + <i class="ph-fill ph-book-open-text"></i> 84 + Guide 85 + </span> 86 + </a> 87 + 88 + <a href="featured/" class="button button--transparent button--border"> 89 + <span> 90 + <i class="ph-fill ph-sparkle"></i> 91 + Featured 92 + </span> 93 + </a> 94 + 95 + <a href="build/" class="button button--transparent button--border"> 96 + <span> 97 + <i class="ph-fill ph-hammer"></i> 98 + Build 99 + </span> 100 + </a> 101 + 102 + <div class="divider"></div> 103 + 104 + <a href="data/" class="button button--transparent button--border"> 105 + <span>Input & Output</span> 106 + </a> 107 + 108 + <a href="playback/" class="button button--transparent button--border"> 109 + <span>Playback</span> 110 + </a> 111 + 112 + <a href="browsing/" class="button button--transparent button--border"> 113 + <span>Browsing</span> 114 + </a> 115 + 116 + <a href="themes/" class="button button--transparent button--border"> 117 + <span>Themes</span> 118 + </a> 119 + 120 + <a href="misc/" class="button button--transparent button--border"> 121 + <span> 122 + <i class="ph-fill ph-treasure-chest"></i> 123 + </span> 124 + </a> 125 + </nav> 126 + 127 + <button 128 + id="nav-overflow-btn" 129 + class="button button--transparent button--border" 130 + style="display: none; flex-shrink: 0" 131 + popovertarget="nav-overflow-menu" 132 + > 133 + <span class="with-icon"> 134 + <i class="ph-fill ph-dots-three-outline"></i> 135 + </span> 136 + </button> 137 + 138 + <div id="nav-overflow-menu" class="dropdown" popover></div> 139 + </div> 140 + 141 + 142 + <h1 hidden>Guide</h1> 143 + 144 + <div class="columns"> 145 + <section> 146 + <h3>Concept</h3> 147 + 148 + <p> 149 + Diffuse is unlike traditional software; instead of combining several features into a single user interface and producing data output, we do the opposite, we start with the data and work our way up from there. 150 + </p> 151 + 152 + <p> 153 + <strong>It provides every user the ability to choose which features and interfaces they want to layer on top of their data.</strong> 154 + </p> 155 + 156 + <p> 157 + These features and interfaces are housed into units that we call "facets". They consist of <a href="elements/">Diffuse elements</a> that are connected, they broadcast their state and the parts of your data that have been updated. 158 + </p> 159 + 160 + <p> 161 + Finally, facets are just regular web pages so they can live wherever. We save them to the user-data storage that's configured and give the user the option to share it. This means that you can load features and interfaces from other people, <strong>building software cooperatively</strong>. 162 + </p> 163 + </section> 164 + 165 + <section> 166 + <h3>Getting started</h3> 167 + 168 + <p> 169 + <small><i class="ph-fill ph-info"></i> <em>There's a <a href="guide/#tutorial">tutorial</a> below if you prefer a long-form introduction.</em></small> 170 + </p> 171 + 172 + <ul style="display: flex; flex-direction: column; gap: var(--space-md); margin-top: var(--space-md); padding-left: 0"> 173 + <!-- 1 --> 174 + <li class="with-icon" style="gap: var(--space-sm)"> 175 + <i class="ph-fill ph-file-audio" style="opacity: 0.4"></i> 176 + <span><strong>Add some audio files or streams.</strong> The wide range of <a href="l/?path=facets%2Fconnect%2Findex.html">connect interfaces</a> can be used for this, or use the demo from the tutorial below.</span> 177 + </li> 178 + 179 + <!-- 2 --> 180 + <li class="with-icon" style="gap: var(--space-sm)"> 181 + <i class="ph-fill ph-gear-six" style="opacity: 0.4"></i> 182 + <span><strong>Wait until the processing of audio sources into tracks is completed.</strong> You can monitor it using this <a href="l/?path=facets%2Fdata%2Fprocess-tracks%2Findex.html">interface</a>. The tutorial demo will show it directly.</span> 183 + </li> 184 + 185 + <!-- 3 --> 186 + <li class="with-icon" style="gap: var(--space-sm)"> 187 + <i class="ph-fill ph-paint-brush" style="opacity: 0.4"></i> 188 + <span><strong style="color: var(--accent-twist-2)">Explore the interfaces that can be used to play and manage your audio.</strong> Check out the <a href="featured/?filter=interface">featured interfaces</a>.</span> 189 + </li> 190 + 191 + <!-- 4 --> 192 + <li class="with-icon" style="gap: var(--space-sm)"> 193 + <i class="ph-fill ph-sparkle" style="opacity: 0.4"></i> 194 + <span><strong style="color: var(--accent-twist-4)">Continue exploring, enable some additional features</strong> such as making played audio available offline automatically.</span> 195 + </li> 196 + 197 + <!-- 5 --> 198 + <li class="with-icon" style="gap: var(--space-sm)"> 199 + <i class="ph-fill ph-person" style="opacity: 0.4"></i> 200 + <span><strong>Sync your configuration and playlists with your other devices.</strong> Or share it with other people.</span> 201 + </li> 202 + </ul> 203 + </section> 204 + </div> 205 + 206 + <section> 207 + <h3 id="tutorial">Tutorial</h3> 208 + 209 + <p> 210 + <strong>Diffuse is not your typical streaming service, you have to add sources of audio so you have stuff to play.</strong> This button below adds some demo content, so you can experiment with the software right away. 211 + </p> 212 + 213 + <p> 214 + <button id="add-sample-content" class="button--bg-accent"> 215 + <span>Add sample content</span> 216 + </button> 217 + </p> 218 + 219 + <p> 220 + Now we should explore what is possible with our audio. Because Diffuse is cooperative and malleable software, our interface can look like anything, and we can pick the features we like. That might sound overwhelming, so let's keep it simple for now. 221 + </p> 222 + 223 + <p> 224 + By default a feature is enabled which puts audio in the queue automatically. <strong>Let's pick an interface</strong> to play what got put into the queue for us. 225 + </p> 226 + 227 + <p> 228 + <a class="button button--bg-accent" href="l/?path=themes%2Fblur%2Fartwork-controller%2Ffacet%2Findex.html" target="_blank"> 229 + Play audio 230 + </a> 231 + </p> 232 + 233 + <p> 234 + <em>So you said I could pick the features and interfaces that I liked, how does that work?</em> 235 + </p> 236 + 237 + <p> 238 + To do that, we have to look at the other pages shown in the navigation here, such as the <a href="featured/">featured page</a>. There you'll be able to browse through all the features and interfaces that are provided by Diffuse. 239 + </p> 240 + 241 + <p> 242 + <strong>To use a feature, you click the toggle to enable it</strong>, this will add it to your software. Interfaces can be added too, but it's not required, you can try them out right away by clicking the link in their title. For interfaces that are more like traditional web applications, delivering more encompassing experiences, look at <a href="themes/">themes</a>. 243 + </p> 244 + 245 + <p> 246 + TODO: explain adding your own inputs, syncing user data, editing/forking facets, creating your own facet, etc. 247 + </p> 248 + </section> 249 + 250 + </main> 251 + 252 + 253 + <!-- Import map --> 254 + <script type="importmap"> 255 + { 256 + "imports": { 257 + "~/": "./", 258 + 259 + "@awesome.me/webawesome/dist/": "./vendor/@awesome.me/webawesome/", 260 + "@awesome.me/webawesome/dist-cdn/": "./vendor/@awesome.me/webawesome/", 261 + "@phosphor-icons/web/": "./vendor/@phosphor-icons/web/", 262 + 263 + "@atcute/cbor": "./vendor/@atcute/cbor/index.js", 264 + "@atcute/tid": "./vendor/@atcute/tid/index.js", 265 + "idb-keyval": "./vendor/idb-keyval/index.js", 266 + "lit-html": "./vendor/lit-html/index.js", 267 + "throttle-debounce": "./vendor/throttle-debounce/index.js" 268 + } 269 + } 270 + </script> 271 + 272 + <!-- Make every touched URL available offline --> 273 + <do-offline></do-offline> 274 + <script src="components/orchestrator/offline/element.js" type="module"></script> 275 + 276 + <!-- Scripts --> 277 + <script src="common/pages/ppr.js" type="module"></script> 278 + <script src="common/pages/version-upgrade.js" type="module"></script> 279 + </body> 280 + </html>
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/guide/index.html.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/1.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/1.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/10.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/10.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/11.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/11.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/12.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/12.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/13.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/13.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/14.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/14.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/15.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/15.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/16.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/16.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/17.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/17.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/18.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/18.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/19.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/19.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/2.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/2.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/20.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/20.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/21.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/21.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/22.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/22.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/23.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/23.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/24.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/24.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/25.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/25.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/26.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/26.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/27.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/27.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/28.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/28.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/29.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/29.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/3.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/3.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/30.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/30.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/4.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/4.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/5.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/5.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/6.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/6.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/7.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/7.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/8.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/8.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/9.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/9.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/1.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/1.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/10.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/10.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/11.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/11.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/12.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/12.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/13.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/13.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/14.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/14.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/15.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/15.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/16.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/16.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/17.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/17.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/18.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/18.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/19.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/19.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/2.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/2.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/20.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/20.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/21.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/21.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/22.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/22.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/23.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/23.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/24.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/24.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/25.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/25.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/26.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/26.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/27.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/27.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/28.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/28.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/29.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/29.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/3.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/3.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/30.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/30.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/4.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/4.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/5.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/5.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/6.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/6.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/7.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/7.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/8.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/8.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/background/thumbnails/9.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/9.jpg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/diffuse-current.svg
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/diffuse-current.svg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/diffuse-current.svg.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/images/diffuse-current.svg.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/diffuse-dark.svg
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/diffuse-dark.svg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/diffuse-dark.svg.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/images/diffuse-dark.svg.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/diffuse-grey.svg
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/diffuse-grey.svg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/diffuse-grey.svg.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/images/diffuse-grey.svg.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/diffuse-light.svg
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/diffuse-light.svg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/diffuse-light.svg.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/images/diffuse-light.svg.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/diffuse__icon-dark.svg
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/diffuse__icon-dark.svg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/diffuse__icon-dark.svg.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/images/diffuse__icon-dark.svg.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/diffuse__icon-grey.svg
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/diffuse__icon-grey.svg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/diffuse__icon-grey.svg.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/images/diffuse__icon-grey.svg.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/diffuse__icon-light.svg
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/diffuse__icon-light.svg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/diffuse__icon-light.svg.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/images/diffuse__icon-light.svg.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icon-square-ws.png
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/icon-square-ws.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icon-square.png
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/icon-square.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icon.png
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/icon.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/catalog-1.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/catalog-1.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/cd_audio_cd_a-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/cd_audio_cd_a-0.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/cd_audio_cd_a-2.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/cd_audio_cd_a-2.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/cd_audio_cd_a-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/cd_audio_cd_a-3.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/cd_audio_cd_a-4.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/cd_audio_cd_a-4.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/cd_drive-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/cd_drive-0.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/cd_drive_purple-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/cd_drive_purple-3.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/channels-2.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/channels-2.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/check-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/check-0.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/computer_sound-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/computer_sound-0.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/computer_user_pencil-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/computer_user_pencil-0.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/connected_world-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/connected_world-0.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/directory_admin_tools-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_admin_tools-3.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/directory_admin_tools-5.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_admin_tools-5.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/directory_channels-2.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_channels-2.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/directory_channels-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_channels-3.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/directory_closed-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_closed-3.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/directory_closed-4.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_closed-4.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/directory_control_panel-2.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_control_panel-2.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/directory_control_panel-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_control_panel-3.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/directory_explorer-4.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_explorer-4.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/directory_explorer-5.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_explorer-5.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/directory_favorites-2.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_favorites-2.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/directory_favorites-4.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_favorites-4.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/directory_net_web-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_net_web-3.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/directory_net_web-4.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_net_web-4.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/directory_network_conn-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_network_conn-3.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/directory_network_conn-5.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_network_conn-5.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/directory_open_file_mydocs_2k-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_open_file_mydocs_2k-3.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/directory_open_file_mydocs_2k-4.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_open_file_mydocs_2k-4.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/gears-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/gears-0.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/globe_map-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/globe_map-0.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/help_book_big-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/help_book_big-0.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/installer-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/installer-3.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/installer_generic_old-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/installer_generic_old-0.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/keys-5.png
··· 1 + ../../../../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/images/icons/windows_98/keys-5.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/loudspeaker_wave-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/loudspeaker_wave-0.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/magnifying_glass-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/magnifying_glass-0.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/magnifying_glass_4-1.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/magnifying_glass_4-1.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/media_player-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/media_player-0.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/media_player_stream_no.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/media_player_stream_no.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/ms_dos-1.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/ms_dos-1.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/msg_error-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/msg_error-0.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/msg_information-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/msg_information-0.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/msg_question-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/msg_question-0.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/msg_warning-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/msg_warning-0.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/multimedia-4.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/multimedia-4.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/network_drive_world-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/network_drive_world-0.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/no-1.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/no-1.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/restrict-1.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/restrict-1.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/search_computer-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/search_computer-0.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/search_server-1.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/search_server-1.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/search_web-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/search_web-0.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/settings_gear-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/settings_gear-0.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/settings_gear-2.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/settings_gear-2.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/tip.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/tip.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/utopia_smiley.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/utopia_smiley.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/winamp2-32x32.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/winamp2-32x32.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/windows-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/windows-0.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/world-2.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/world-2.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/world-4.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/world-4.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/images/icons/windows_98/world_network_directories-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/world_network_directories-3.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/index.html
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/index.html.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/index.html.br
+66
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/l/index.html
··· 1 + <html lang="en"> 2 + <head> 3 + <meta charset="UTF-8" /> 4 + 5 + <meta name="color-scheme" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + 8 + <meta name="media-controllable" /> 9 + <meta name="mobile-web-app-capable" content="yes" /> 10 + 11 + <title>Diffuse</title> 12 + 13 + <!-- Base --> 14 + <base href="../" /> 15 + 16 + <!-- Favicons & Mobile --> 17 + <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" /> 18 + <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" /> 19 + <link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png" /> 20 + <!-- TODO: <link rel="manifest" href="site.webmanifest" />--> 21 + <link rel="mask-icon" href="safari-pinned-tab.svg" color="#8a90a9" /> 22 + <meta name="msapplication-TileColor" content="#8a90a9" /> 23 + <meta name="theme-color" content="#8a90a9" /> 24 + 25 + <!-- Preloads --> 26 + 27 + <!-- Styles --> 28 + <link rel="stylesheet" href="styles/loader.css" /> 29 + </head> 30 + <body> 31 + <div id="container"> 32 + <div class="diffuse"> 33 + <div id="diffuse-loader" class="flex"> 34 + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" viewBox="0 0 256 256" class="animate-bounce"><path d="M212.92,17.71a7.89,7.89,0,0,0-6.86-1.46l-128,32A8,8,0,0,0,72,56V166.1A36,36,0,1,0,88,196V102.25l112-28V134.1A36,36,0,1,0,216,164V24A8,8,0,0,0,212.92,17.71Z"></path></svg> 35 + </div> 36 + </div> 37 + </div> 38 + 39 + 40 + <!-- Import map --> 41 + <script type="importmap"> 42 + { 43 + "imports": { 44 + "~/": "./", 45 + 46 + "@awesome.me/webawesome/dist/": "./vendor/@awesome.me/webawesome/", 47 + "@awesome.me/webawesome/dist-cdn/": "./vendor/@awesome.me/webawesome/", 48 + "@phosphor-icons/web/": "./vendor/@phosphor-icons/web/", 49 + 50 + "@atcute/cbor": "./vendor/@atcute/cbor/index.js", 51 + "@atcute/tid": "./vendor/@atcute/tid/index.js", 52 + "idb-keyval": "./vendor/idb-keyval/index.js", 53 + "lit-html": "./vendor/lit-html/index.js", 54 + "throttle-debounce": "./vendor/throttle-debounce/index.js" 55 + } 56 + } 57 + </script> 58 + 59 + <!-- Make every touched URL available offline --> 60 + <do-offline></do-offline> 61 + <script src="components/orchestrator/offline/element.js" type="module"></script> 62 + 63 + <!-- Scripts --> 64 + <script src="l/index.js" type="module"></script> 65 + </body> 66 + </html>
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/l/index.html.br

This is a binary file and will not be displayed.

+3
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/l/index.js
··· 1 + import{a as d}from"../chunk-TPYPBODG.js";import{c as i}from"../chunk-B4XMDCCS.js";import{a as s}from"../chunk-4KWB43C2.js";import{a as n,d as c}from"../chunk-DFKPZAA6.js";import"../chunk-6NXS3EXH.js";import"../chunk-RCK53RB4.js";import"../chunk-YI4JYMVI.js";import"../chunk-PBZITCUN.js";import"../chunk-N6NGHZ4B.js";import{b as a}from"../chunk-2CFBJKYZ.js";import"../chunk-524HX7V4.js";import"../chunk-DFARJRPB.js";import"../chunk-4I6PUBR2.js";import"../chunk-GSG5OS62.js";import{a as r}from"../chunk-BFIVCPQF.js";var m=await i.orchestrator.output(),e=document.querySelector("#container"),p=await d(m.facets),u=!1;n({$type:"sh.diffuse.output.facet",label:"Facet",source:r(()=>m.facets,"source"),async render(t){if(t.cid&&!await a(new TextEncoder().encode(t.html??""),t.cid)){c(e,"CID mismatch: HTML content does not match the CID");return}u||(u=!0,await s(p,document.body));let o=document.createRange();o.selectNode(e);let f=o.createContextualFragment(t.html??"");e.append(f)}}); 2 + 3 + //# sourceMappingURL=./index.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/l/index.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/l/index.js.map
··· 1 + ../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/l/index.js.map
+266
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/misc/index.html
··· 1 + <html lang="en"> 2 + <head> 3 + <meta charset="UTF-8" /> 4 + 5 + <meta name="color-scheme" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + 8 + <meta name="media-controllable" /> 9 + <meta name="mobile-web-app-capable" content="yes" /> 10 + 11 + <title>Misc | Diffuse</title> 12 + 13 + <!-- Base --> 14 + <base href="../" /> 15 + 16 + <!-- Favicons & Mobile --> 17 + <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" /> 18 + <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" /> 19 + <link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png" /> 20 + <!-- TODO: <link rel="manifest" href="site.webmanifest" />--> 21 + <link rel="mask-icon" href="safari-pinned-tab.svg" color="#8a90a9" /> 22 + <meta name="msapplication-TileColor" content="#8a90a9" /> 23 + <meta name="theme-color" content="#8a90a9" /> 24 + 25 + <!-- Preloads --> 26 + 27 + <!-- Styles --> 28 + <link rel="stylesheet" href="styles/base.css" /> 29 + <link rel="stylesheet" href="styles/diffuse/page.css" /> 30 + <link rel="stylesheet" href="styles/diffuse/code-editor.css" /> 31 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/bold/style.css" /> 32 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/fill/style.css" /> 33 + </head> 34 + <body> 35 + <style> 36 + .construct, h2 { 37 + color: var(--accent); 38 + } 39 + </style> 40 + 41 + <header style="overflow: hidden"> 42 + <div> 43 + <div class="diffuse-logo-container diffuse-logo-container--condensed"> 44 + <a href="./" style="display: inline-block;"> 45 + <svg viewBox="0 0 902 134" width="160"> 46 + <title>Diffuse</title> 47 + <use 48 + xlink:href="images/diffuse-current.svg#diffuse" 49 + href="images/diffuse-current.svg#diffuse"></use> 50 + </svg> 51 + 52 + </a> 53 + </div> 54 + </div> 55 + <div class="dither-mask filler"> 56 + <div id="status--filler-container"> 57 + <span id="status"> 58 + <a href="/latest/" title="Upgrade to latest" class="animate-spin"> 59 + <i class="ph-bold ph-spinner"></i> 60 + </a> 61 + <a href="/chronicle/" title="Browse versions of Diffuse"> 62 + <i class="ph-fill ph-star-four"></i> 63 + </a> 64 + </span> 65 + 66 + </div> 67 + </div> 68 + </header> 69 + 70 + <main> 71 + 72 + <div class="nav-container"> 73 + <nav id="diffuse-nav"> 74 + <a href="dashboard/" class="button button--transparent button--border"> 75 + <span> 76 + <i class="ph-fill ph-person"></i> 77 + Your Diffuse 78 + </span> 79 + </a> 80 + 81 + <a href="guide/" class="button button--transparent button--border"> 82 + <span> 83 + <i class="ph-fill ph-book-open-text"></i> 84 + Guide 85 + </span> 86 + </a> 87 + 88 + <a href="featured/" class="button button--transparent button--border"> 89 + <span> 90 + <i class="ph-fill ph-sparkle"></i> 91 + Featured 92 + </span> 93 + </a> 94 + 95 + <a href="build/" class="button button--transparent button--border"> 96 + <span> 97 + <i class="ph-fill ph-hammer"></i> 98 + Build 99 + </span> 100 + </a> 101 + 102 + <div class="divider"></div> 103 + 104 + <a href="data/" class="button button--transparent button--border"> 105 + <span>Input & Output</span> 106 + </a> 107 + 108 + <a href="playback/" class="button button--transparent button--border"> 109 + <span>Playback</span> 110 + </a> 111 + 112 + <a href="browsing/" class="button button--transparent button--border"> 113 + <span>Browsing</span> 114 + </a> 115 + 116 + <a href="themes/" class="button button--transparent button--border"> 117 + <span>Themes</span> 118 + </a> 119 + 120 + <a href="misc/" class="button button--border"> 121 + <span> 122 + <i class="ph-fill ph-treasure-chest"></i> 123 + </span> 124 + </a> 125 + </nav> 126 + 127 + <button 128 + id="nav-overflow-btn" 129 + class="button button--transparent button--border" 130 + style="display: none; flex-shrink: 0" 131 + popovertarget="nav-overflow-menu" 132 + > 133 + <span class="with-icon"> 134 + <i class="ph-fill ph-dots-three-outline"></i> 135 + </span> 136 + </button> 137 + 138 + <div id="nav-overflow-menu" class="dropdown" popover></div> 139 + </div> 140 + 141 + 142 + <section> 143 + <div class="grid-filter"> 144 + <span class="grid-filter--label">Filter by</span> 145 + 146 + <button class="button--border button--tiny" data-filter="all">All</button> 147 + <button class="button--border button--tiny button--bg-twist-4 button--tr-twist-4 button--transparent" data-filter="prelude">Features</button> 148 + <button class="button--border button--tiny button--bg-twist-2 button--tr-twist-2 button--transparent" data-filter="interface">Interfaces</button> 149 + 150 + <div style="flex: 1"></div> 151 + 152 + <span class="grid-filter--label grid-filter--label-output">Userdata from</span> 153 + <span class="grid-filter--output"></span> 154 + </div> 155 + 156 + <ul class="grid" style="margin-top: var(--space-xs);"> 157 + 158 + 159 + <li 160 + class="grid-item" 161 + data-active-color="var(--accent-twist-4)" 162 + data-description="Enable scrobbling, keep track of what you're listening to. Adds support for these scrobblers: Last.fm" 163 + data-name="Scrobble" 164 + data-kind="prelude" 165 + data-uri="diffuse://facets/misc/scrobble/index.html" 166 + > 167 + <div 168 + class="grid-item__contents" 169 + style="--grid-item-color: var(--accent-twist-4)" 170 + > 171 + <div class="grid-item__title"> 172 + <span style="color: var(--accent-twist-4); padding: var(--space-3xs) 0"> 173 + Scrobble 174 + </span> 175 + <span style="flex: 1"></span> 176 + </div> 177 + <div class="list-description"> 178 + Enable scrobbling, keep track of what you're listening to. Adds support for these scrobblers: Last.fm 179 + </div> 180 + </div> 181 + </li> 182 + 183 + 184 + <li 185 + class="grid-item" 186 + data-active-color="var(--accent-twist-2)" 187 + data-description="Connect to Last.fm to setup the Last.fm scrobbler." 188 + data-name="Scrobble / Last.fm" 189 + data-kind="interface" 190 + data-uri="diffuse://facets/misc/scrobble/last.fm/index.html" 191 + > 192 + <div 193 + class="grid-item__contents" 194 + style="--grid-item-color: var(--accent-twist-2)" 195 + > 196 + <div class="grid-item__title"> 197 + <a href="l/?path=facets%2Fmisc%2Fscrobble%2Flast.fm%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 198 + Scrobble / Last.fm 199 + </a> 200 + <span style="flex: 1"></span> 201 + </div> 202 + <div class="list-description"> 203 + Connect to Last.fm to setup the Last.fm scrobbler. 204 + </div> 205 + </div> 206 + </li> 207 + 208 + 209 + <li 210 + class="grid-item" 211 + data-active-color="var(--accent-twist-2)" 212 + data-description="Arrange multiple facets side-by-side in a resizable split-panel layout." 213 + data-name="Split View" 214 + data-kind="interface" 215 + data-uri="diffuse://facets/misc/split-view/index.html" 216 + > 217 + <div 218 + class="grid-item__contents" 219 + style="--grid-item-color: var(--accent-twist-2)" 220 + > 221 + <div class="grid-item__title"> 222 + <a href="l/?path=facets%2Fmisc%2Fsplit-view%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 223 + Split View 224 + </a> 225 + <span style="flex: 1"></span> 226 + </div> 227 + <div class="list-description"> 228 + Arrange multiple facets side-by-side in a resizable split-panel layout. 229 + </div> 230 + </div> 231 + </li> 232 + </ul> 233 + 234 + </section> 235 + 236 + </main> 237 + 238 + 239 + <!-- Import map --> 240 + <script type="importmap"> 241 + { 242 + "imports": { 243 + "~/": "./", 244 + 245 + "@awesome.me/webawesome/dist/": "./vendor/@awesome.me/webawesome/", 246 + "@awesome.me/webawesome/dist-cdn/": "./vendor/@awesome.me/webawesome/", 247 + "@phosphor-icons/web/": "./vendor/@phosphor-icons/web/", 248 + 249 + "@atcute/cbor": "./vendor/@atcute/cbor/index.js", 250 + "@atcute/tid": "./vendor/@atcute/tid/index.js", 251 + "idb-keyval": "./vendor/idb-keyval/index.js", 252 + "lit-html": "./vendor/lit-html/index.js", 253 + "throttle-debounce": "./vendor/throttle-debounce/index.js" 254 + } 255 + } 256 + </script> 257 + 258 + <!-- Make every touched URL available offline --> 259 + <do-offline></do-offline> 260 + <script src="components/orchestrator/offline/element.js" type="module"></script> 261 + 262 + <!-- Scripts --> 263 + <script src="common/pages/ppr.js" type="module"></script> 264 + <script src="common/pages/version-upgrade.js" type="module"></script> 265 + </body> 266 + </html>
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/misc/index.html.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/mstile-150x150.png
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/mstile-150x150.png
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/node_crypto-5R4NC7NK.js
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/node_crypto-5R4NC7NK.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/node_crypto-5R4NC7NK.js.br
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/node_crypto-5R4NC7NK.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/node_crypto-5R4NC7NK.js.map
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/node_crypto-5R4NC7NK.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/oauth-client-metadata.json
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/oauth-client-metadata.json
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/oauth-client-metadata.json.br
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/oauth-client-metadata.json.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/oauth/callback/index.html
··· 1 + ../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/oauth/callback/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/oauth/callback/index.html.br
··· 1 + ../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/oauth/callback/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/oauth/callback/index.js
··· 1 + ../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/oauth/callback/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/oauth/callback/index.js.br
··· 1 + ../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/oauth/callback/index.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/oauth/callback/index.js.map
··· 1 + ../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/oauth/callback/index.js.map
+266
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/playback/index.html
··· 1 + <html lang="en"> 2 + <head> 3 + <meta charset="UTF-8" /> 4 + 5 + <meta name="color-scheme" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + 8 + <meta name="media-controllable" /> 9 + <meta name="mobile-web-app-capable" content="yes" /> 10 + 11 + <title>Playback | Diffuse</title> 12 + 13 + <!-- Base --> 14 + <base href="../" /> 15 + 16 + <!-- Favicons & Mobile --> 17 + <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" /> 18 + <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" /> 19 + <link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png" /> 20 + <!-- TODO: <link rel="manifest" href="site.webmanifest" />--> 21 + <link rel="mask-icon" href="safari-pinned-tab.svg" color="#8a90a9" /> 22 + <meta name="msapplication-TileColor" content="#8a90a9" /> 23 + <meta name="theme-color" content="#8a90a9" /> 24 + 25 + <!-- Preloads --> 26 + 27 + <!-- Styles --> 28 + <link rel="stylesheet" href="styles/base.css" /> 29 + <link rel="stylesheet" href="styles/diffuse/page.css" /> 30 + <link rel="stylesheet" href="styles/diffuse/code-editor.css" /> 31 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/bold/style.css" /> 32 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/fill/style.css" /> 33 + </head> 34 + <body> 35 + <style> 36 + .construct, h2 { 37 + color: var(--accent); 38 + } 39 + </style> 40 + 41 + <header style="overflow: hidden"> 42 + <div> 43 + <div class="diffuse-logo-container diffuse-logo-container--condensed"> 44 + <a href="./" style="display: inline-block;"> 45 + <svg viewBox="0 0 902 134" width="160"> 46 + <title>Diffuse</title> 47 + <use 48 + xlink:href="images/diffuse-current.svg#diffuse" 49 + href="images/diffuse-current.svg#diffuse"></use> 50 + </svg> 51 + 52 + </a> 53 + </div> 54 + </div> 55 + <div class="dither-mask filler"> 56 + <div id="status--filler-container"> 57 + <span id="status"> 58 + <a href="/latest/" title="Upgrade to latest" class="animate-spin"> 59 + <i class="ph-bold ph-spinner"></i> 60 + </a> 61 + <a href="/chronicle/" title="Browse versions of Diffuse"> 62 + <i class="ph-fill ph-star-four"></i> 63 + </a> 64 + </span> 65 + 66 + </div> 67 + </div> 68 + </header> 69 + 70 + <main> 71 + 72 + <div class="nav-container"> 73 + <nav id="diffuse-nav"> 74 + <a href="dashboard/" class="button button--transparent button--border"> 75 + <span> 76 + <i class="ph-fill ph-person"></i> 77 + Your Diffuse 78 + </span> 79 + </a> 80 + 81 + <a href="guide/" class="button button--transparent button--border"> 82 + <span> 83 + <i class="ph-fill ph-book-open-text"></i> 84 + Guide 85 + </span> 86 + </a> 87 + 88 + <a href="featured/" class="button button--transparent button--border"> 89 + <span> 90 + <i class="ph-fill ph-sparkle"></i> 91 + Featured 92 + </span> 93 + </a> 94 + 95 + <a href="build/" class="button button--transparent button--border"> 96 + <span> 97 + <i class="ph-fill ph-hammer"></i> 98 + Build 99 + </span> 100 + </a> 101 + 102 + <div class="divider"></div> 103 + 104 + <a href="data/" class="button button--transparent button--border"> 105 + <span>Input & Output</span> 106 + </a> 107 + 108 + <a href="playback/" class="button button--border"> 109 + <span>Playback</span> 110 + </a> 111 + 112 + <a href="browsing/" class="button button--transparent button--border"> 113 + <span>Browsing</span> 114 + </a> 115 + 116 + <a href="themes/" class="button button--transparent button--border"> 117 + <span>Themes</span> 118 + </a> 119 + 120 + <a href="misc/" class="button button--transparent button--border"> 121 + <span> 122 + <i class="ph-fill ph-treasure-chest"></i> 123 + </span> 124 + </a> 125 + </nav> 126 + 127 + <button 128 + id="nav-overflow-btn" 129 + class="button button--transparent button--border" 130 + style="display: none; flex-shrink: 0" 131 + popovertarget="nav-overflow-menu" 132 + > 133 + <span class="with-icon"> 134 + <i class="ph-fill ph-dots-three-outline"></i> 135 + </span> 136 + </button> 137 + 138 + <div id="nav-overflow-menu" class="dropdown" popover></div> 139 + </div> 140 + 141 + 142 + <section> 143 + <div class="grid-filter"> 144 + <span class="grid-filter--label">Filter by</span> 145 + 146 + <button class="button--border button--tiny" data-filter="all">All</button> 147 + <button class="button--border button--tiny button--bg-twist-4 button--tr-twist-4 button--transparent" data-filter="prelude">Features</button> 148 + <button class="button--border button--tiny button--bg-twist-2 button--tr-twist-2 button--transparent" data-filter="interface">Interfaces</button> 149 + 150 + <div style="flex: 1"></div> 151 + 152 + <span class="grid-filter--label grid-filter--label-output">Userdata from</span> 153 + <span class="grid-filter--output"></span> 154 + </div> 155 + 156 + <ul class="grid" style="margin-top: var(--space-xs);"> 157 + 158 + 159 + <li 160 + class="grid-item" 161 + data-active-color="var(--accent-twist-4)" 162 + data-description="Automatically put tracks into the queue. **Always on.** These tracks will always be located after the ones you've added manually." 163 + data-name="Automatic Queue" 164 + data-kind="prelude" 165 + data-uri="diffuse://facets/playback/auto-queue/prelude/index.html" 166 + > 167 + <div 168 + class="grid-item__contents" 169 + style="--grid-item-color: var(--accent-twist-4)" 170 + > 171 + <div class="grid-item__title"> 172 + <span style="color: var(--accent-twist-4); padding: var(--space-3xs) 0"> 173 + Automatic Queue 174 + </span> 175 + <span style="flex: 1"></span> 176 + </div> 177 + <div class="list-description"> 178 + Automatically put tracks into the queue. <strong>Always on.</strong> These tracks will always be located after the ones you've added manually. 179 + </div> 180 + </div> 181 + </li> 182 + 183 + 184 + <li 185 + class="grid-item" 186 + data-active-color="var(--accent-twist-2)" 187 + data-description="Automatically put tracks into the queue when this interface is opened. Also allows for controlling shuffle, repeat, search, sorting and playlist selection." 188 + data-name="Automatic Queue" 189 + data-kind="interface" 190 + data-uri="diffuse://facets/playback/auto-queue/index.html" 191 + > 192 + <div 193 + class="grid-item__contents" 194 + style="--grid-item-color: var(--accent-twist-2)" 195 + > 196 + <div class="grid-item__title"> 197 + <a href="l/?path=facets%2Fplayback%2Fauto-queue%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 198 + Automatic Queue 199 + </a> 200 + <span style="flex: 1"></span> 201 + </div> 202 + <div class="list-description"> 203 + Automatically put tracks into the queue when this interface is opened. Also allows for controlling shuffle, repeat, search, sorting and playlist selection. 204 + </div> 205 + </div> 206 + </li> 207 + 208 + 209 + <li 210 + class="grid-item" 211 + data-active-color="var(--accent-twist-2)" 212 + data-description="Audio playback controller with an artwork display. Play audio from the queue, add tracks to your favourites, control the queue and volume." 213 + data-name="Blur / Artwork controller" 214 + data-kind="interface" 215 + data-uri="diffuse://themes/blur/artwork-controller/facet/index.html" 216 + > 217 + <div 218 + class="grid-item__contents" 219 + style="--grid-item-color: var(--accent-twist-2)" 220 + > 221 + <div class="grid-item__title"> 222 + <a href="l/?path=themes%2Fblur%2Fartwork-controller%2Ffacet%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 223 + Blur / Artwork controller 224 + </a> 225 + <span style="flex: 1"></span> 226 + </div> 227 + <div class="list-description"> 228 + Audio playback controller with an artwork display. Play audio from the queue, add tracks to your favourites, control the queue and volume. 229 + </div> 230 + </div> 231 + </li> 232 + </ul> 233 + 234 + </section> 235 + 236 + </main> 237 + 238 + 239 + <!-- Import map --> 240 + <script type="importmap"> 241 + { 242 + "imports": { 243 + "~/": "./", 244 + 245 + "@awesome.me/webawesome/dist/": "./vendor/@awesome.me/webawesome/", 246 + "@awesome.me/webawesome/dist-cdn/": "./vendor/@awesome.me/webawesome/", 247 + "@phosphor-icons/web/": "./vendor/@phosphor-icons/web/", 248 + 249 + "@atcute/cbor": "./vendor/@atcute/cbor/index.js", 250 + "@atcute/tid": "./vendor/@atcute/tid/index.js", 251 + "idb-keyval": "./vendor/idb-keyval/index.js", 252 + "lit-html": "./vendor/lit-html/index.js", 253 + "throttle-debounce": "./vendor/throttle-debounce/index.js" 254 + } 255 + } 256 + </script> 257 + 258 + <!-- Make every touched URL available offline --> 259 + <do-offline></do-offline> 260 + <script src="components/orchestrator/offline/element.js" type="module"></script> 261 + 262 + <!-- Scripts --> 263 + <script src="common/pages/ppr.js" type="module"></script> 264 + <script src="common/pages/version-upgrade.js" type="module"></script> 265 + </body> 266 + </html>
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/playback/index.html.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/safari-pinned-tab.svg
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/safari-pinned-tab.svg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/safari-pinned-tab.svg.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/safari-pinned-tab.svg.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/service-worker-offline.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/service-worker-offline.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/service-worker-offline.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/service-worker-offline.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/service-worker-offline.js.map
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/service-worker-offline.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/animations.css
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/animations.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/animations.css.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/animations.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/animations.css.map
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/animations.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/base.css
··· 1 + ../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/styles/base.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/base.css.br
··· 1 + ../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/styles/base.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/base.css.map
··· 1 + ../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/styles/base.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/diffuse/code-editor.css
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/styles/diffuse/code-editor.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/diffuse/code-editor.css.br
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/styles/diffuse/code-editor.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/diffuse/code-editor.css.map
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/styles/diffuse/code-editor.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/diffuse/colors.css
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/styles/diffuse/colors.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/diffuse/colors.css.br
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/styles/diffuse/colors.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/diffuse/colors.css.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/styles/diffuse/colors.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/diffuse/font-faces.css
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/font-faces.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/diffuse/font-faces.css.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/font-faces.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/diffuse/font-faces.css.map
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/styles/diffuse/font-faces.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/diffuse/fonts.css
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/diffuse/fonts.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/diffuse/fonts.css.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/diffuse/fonts.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/diffuse/fonts.css.map
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/diffuse/fonts.css.map
+2
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/diffuse/page.css
··· 1 + body{background-color:var(--bg-color);color:var(--text-color);text-rendering:optimizeLegibility}[id]{scroll-margin-top:var(--space-md)}::-moz-selection{background:var(--accent-highlight)}::selection{background:var(--accent-highlight)}code{background:var(--code-color);border-radius:var(--radius-sm);color:var(--text-color);font-size:86%;padding:var(--space-3xs)}.code-block code{border-radius:0;display:block;overflow:hidden;padding:var(--space-sm);white-space:pre-wrap;word-break:break-all}.code-block{max-width:var(--container-xl)}.code-block,ol,p,ul{margin:var(--space-sm) 0}ol,p,ul{max-width:var(--container-sm)}footer nav{align-items:center;display:flex;font-size:var(--fs-base);gap:var(--space-sm);margin-top:var(--space-md);a{opacity:.3;text-decoration:none;transition:opacity .25s}a:focus,a:hover{opacity:.6}}header{display:block;@media (min-width:42rem){display:flex;gap:var(--space-lg)}}header,main{margin:var(--space-md) auto;max-width:var(--container-7xl);padding:0 var(--space-md);@media (min-width:42rem){padding:0 var(--space-lg)}}main{margin-bottom:var(--space-lg)}.columns{display:block;@media (min-width:42rem){display:flex;flex-wrap:wrap;gap:0 var(--space-3xl)}}ul.columns{list-style:none;max-width:100%;padding:0;li{margin-bottom:var(--space-xl)}li::marker{content:none}li i.ph-fill{opacity:.4}}.filler{background:oklch(from var(--text-color) l c h/.2);flex:1;&.filler--bg-accent{background-color:oklch(from var(--accent) l c h/.2)}&.filler--bg-twist-1{background-color:oklch(from var(--accent-twist-1) l c h/.2)}&.filler--bg-twist-2{background-color:oklch(from var(--accent-twist-2) l c h/.2)}&.filler--bg-twist-3{background-color:oklch(from var(--accent-twist-3) l c h/.2)}&.filler--bg-twist-4{background-color:oklch(from var(--accent-twist-4) l c h/.2)}&.filler--bg-twist-5{background-color:oklch(from var(--accent-twist-5) l c h/.2)}}.flex{flex:1;margin-bottom:var(--space-xs);min-width:var(--container-3xs)}.flex p{max-width:100%}dialog{background:var(--bg-color);border:0;border-radius:var(--radius-md);min-width:min(87.5dvw,var(--container-sm));padding:var(--space-lg)}.dropdown{background:oklch(from var(--bg-color) calc(l + .2) c h);border:0;border-radius:var(--radius-md);box-shadow:var(--box-shadow-xl);color:var(--text-color);font-size:var(--fs-sm);margin:0;margin-top:var(--space-3xs);padding:0;position:fixed;position-area:bottom span-left;text-align:left;@media (prefers-color-scheme:dark){background:oklch(from var(--bg-color) calc(l - .05) c h)}&::backdrop{background:transparent}&>a{cursor:pointer;display:block;min-width:var(--space-3xl);padding:var(--space-xs) var(--space-sm);text-decoration:none;&>*{pointer-events:none}}&>a:not(:last-child){border-bottom:1px solid var(--border-color)}i{opacity:.4;transition:opacity .25s}a:hover i{opacity:1}.with-icon{gap:var(--space-2xs)}}label{display:block;font-size:var(--fs-xs);font-weight:600;letter-spacing:var(--tracking-wide);margin-bottom:var(--space-3xs);opacity:.6;text-transform:uppercase}input,textarea{background:transparent;border:3px solid var(--form-color);border-radius:var(--radius-sm);color:inherit;font-size:var(--fs-sm);padding:var(--space-2xs);width:100%}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:3px solid var(--form-color);border-radius:var(--radius-sm);color:inherit;font-family:inherit;font-size:var(--fs-sm);padding:var(--space-2xs) var(--space-xs);transition-duration:.25s;transition-property:border-color;width:100%;optgroup,option{color:#000}}textarea{padding:var(--space-xs);resize:none}.grid{display:grid;gap:var(--space-2xs);grid-template-columns:repeat(auto-fill,minmax(min(var(--container-xs),100%),1fr));list-style:none;max-width:100%;padding:0;li::marker{content:none}.grid-item{border:1px solid var(--border-color);border-radius:var(--radius-md);display:flex;&[hidden]{display:none}}.grid-item__contents{flex:1;padding:var(--space-md);position:relative;--grid-item-gradient-opacity:0.125;@media (prefers-color-scheme:dark){--grid-item-gradient-opacity:0.075}&:before{background:linear-gradient(to bottom,oklch(from var(--grid-item-color,transparent) l c h/var(--grid-item-gradient-opacity)),transparent 65%);content:"";inset:0;pointer-events:none;position:absolute}}.grid-item__menu{border-left:1px solid var(--border-color);display:flex;flex-direction:column;justify-content:space-evenly;hr{background:var(--border-color);border:0;height:1px;margin:0;padding:0}}.grid-item__menu .button,.grid-item__menu button{--button-bg-opacity:0.3;align-items:center;border-radius:0;display:flex;flex:1;justify-content:center}.grid-item__kind{border:1.5px solid transparent;border-radius:9999px;color:var(--bg-color);display:inline-block;font-size:var(--fs-2xs);font-weight:600;line-height:.75;opacity:.6;padding:var(--space-3xs);text-box:trim-both cap alphabetic;vertical-align:middle;&[hidden]{display:none}&[title]{height:16px;padding:0;width:6px}}.grid-item__title{align-items:center;display:flex;gap:var(--space-2xs)}}.grid-filter{align-items:center;display:flex;gap:var(--space-2xs);margin-bottom:var(--space-md);margin-top:var(--space-md);.grid-filter--label{display:none;font-size:var(--fs-xs);font-weight:600;margin-right:var(--space-2xs);opacity:.4;@media (min-width:31.5rem){display:block}}.grid-filter--output{font-size:var(--fs-xs);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.grid-filter--label-output,.grid-filter--output{opacity:0;transition:opacity .25s}}.construct{color:var(--accent);font-size:var(--fs-3xl);image-rendering:pixelated;line-height:.775em;line-height:1.05cap;margin-bottom:var(--space-md);max-width:var(--container-xl)}.construct,h2{font-weight:900;letter-spacing:-.0125em;text-transform:uppercase}h2{font-size:var(--fs-xl);margin:var(--space-2xl) 0 var(--space-md)}h2,h3{line-height:1}h3{font-size:var(--fs-md);font-weight:800;margin:var(--space-xl) 0 var(--space-sm);text-transform:uppercase}h2+h3{margin-top:var(--space-md)}a{color:inherit;text-underline-offset:6px;&.button{text-decoration:none}}abbr{text-underline-offset:6px}a.button,button{--button-bg-opacity:0.6;background:oklch(from var(--text-color) l c h/var(--button-bg-opacity));border:0;border-radius:999px;color:var(--bg-color);cursor:pointer;display:inline-block;font-family:inherit;font-weight:500;line-height:var(--leading-tight);padding:var(--space-2xs) calc((var(--space-xs) + var(--space-sm))/2);transition-duration:.25s;transition-property:background-color,border-color,opacity;& *{pointer-events:none}&[disabled]{--button-bg-opacity:0.4;cursor:not-allowed}&:focus:not([disabled]),&:hover:not([disabled]){--button-bg-opacity:1}&.button--bg-accent{background-color:oklch(from var(--accent) l c h/var(--button-bg-opacity))}&.button--bg-twist-1{background-color:oklch(from var(--accent-twist-1) l c h/var(--button-bg-opacity))}&.button--bg-twist-2{background-color:oklch(from var(--accent-twist-2) l c h/var(--button-bg-opacity))}&.button--bg-twist-3{background-color:oklch(from var(--accent-twist-3) l c h/var(--button-bg-opacity))}&.button--bg-twist-4{background-color:oklch(from var(--accent-twist-4) l c h/var(--button-bg-opacity))}&.button--bg-twist-5{background-color:oklch(from var(--accent-twist-5) l c h/var(--button-bg-opacity))}&.button--border{border:2px solid transparent}&.button--small{font-size:var(--fs-sm);line-height:.75;padding:var(--space-2xs);text-box:trim-both cap alphabetic}&.button--subtle{--button-bg-opacity:0.3}&.button--tag{font-size:var(--fs-2xs);font-weight:600;line-height:.75;padding:var(--space-3xs);text-box:trim-both cap alphabetic;vertical-align:middle;&.button--border{border-width:1.5px}&.button--tag-alt{padding:calc((var(--space-2xs) + var(--space-3xs))/2) var(--space-2xs)}}&.button--tiny{font-size:var(--fs-xs);line-height:1;padding:var(--space-3xs) calc((var(--space-2xs) + var(--space-3xs))/2)}&.button--transparent{background-color:transparent;color:var(--text-color);opacity:var(--button-bg-opacity);&.button--border{border-color:oklch(from currentColor l c h/var(--button-bg-opacity))}&.button--tr-accent{color:var(--accent)}&.button--tr-twist-1{color:var(--accent-twist-1)}&.button--tr-twist-2{color:var(--accent-twist-2)}&.button--tr-twist-3{color:var(--accent-twist-3)}&.button--tr-twist-4{color:var(--accent-twist-4)}&.button--tr-twist-5{color:var(--accent-twist-5)}}.button__supplementary-text{display:none;@media (min-width:42rem){display:inline-flex}}&>span{align-items:center;display:inline-flex;gap:var(--space-3xs);padding-top:1px}}small{font-size:var(--fs-xs);a{text-underline-offset:3px}}strong{font-weight:600}.button-col{flex-direction:column}.button-col,.button-row{display:inline-flex;gap:var(--space-2xs)}.divider{align-self:stretch;background-color:var(--border-color);width:1px}.todo{font-size:var(--fs-sm);font-weight:600;opacity:.4}.with-icon{align-items:center;display:inline-flex;gap:var(--space-3xs)}ol,ul{padding-left:var(--space-md)}ul li::marker{color:oklch(from currentColor l c h/.4);content:"◦ "}.element{min-width:min(var(--container-xs),100%);width:32.5%}.list-description{color:oklch(from currentColor l c h/.6);font-size:var(--fs-xs);margin-bottom:var(--space-xs);margin-top:var(--space-2xs);a{text-underline-offset:3px}}.table-of-contents{font-weight:300;list-style:none;padding:0;& li{display:flex;gap:var(--space-3xs);white-space:nowrap}& li:after{content:" ............................................................................................................................................................................";direction:rtl;flex:1;opacity:.4;overflow:hidden;text-align:right;text-overflow:ellipsis}& a{text-decoration:none}}.diffuse-logo-container{align-items:center;display:flex;font-size:var(--fs-lg);justify-content:space-between;margin:var(--space-lg) 0 var(--space-xl);svg{fill:oklch(from var(--bg-color) calc(l - .5) c h);opacity:.2;padding:var(--space-3xs) 0;width:4.25em;@media (prefers-color-scheme:dark){fill:var(--text-color);opacity:.25}}&.diffuse-logo-container--condensed{margin-bottom:var(--space-lg)}}.nav-container{align-items:center;border-bottom:1px solid var(--border-color);display:flex;gap:var(--space-xs);margin-top:var(--space-md);padding-bottom:var(--space-md)}nav{align-items:center;display:flex;flex:1;flex-wrap:nowrap;font-size:var(--fs-sm);gap:var(--space-xs);overflow:hidden;.button{flex-shrink:0;overflow:hidden;white-space:nowrap}}#status{align-items:center;display:flex;font-size:var(--fs-sm);gap:var(--space-3xs);a{display:inline-block;opacity:.55;padding:var(--space-3xs);text-decoration:none;transition-duration:.25s;transition-property:opacity;&:focus,&:hover{opacity:1}}a.hidden{opacity:0;pointer-events:none}.ph-spinner{position:relative;top:1px}}#status--filler-container{align-items:center;display:flex;height:var(--space-xl);justify-content:end;padding:0 var(--space-lg);@media (min-width:42rem){height:100%}}.dither-mask,.grid-item__contents:before,h2,h3{-webkit-mask:url("data:image/png;base64,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"),radial-gradient(circle at 50% 0,transparent 45%,oklab(0 0 0/.65) 85%) 0 0/50% 100%;mask:url("data:image/png;base64,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"),radial-gradient(circle at 50% 0,transparent 45%,oklab(0 0 0/.65) 85%) 0 0/50% 100%} 2 + /*# sourceMappingURL=./page.css.map */
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/diffuse/page.css.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/diffuse/page.css.map
··· 1 + {"version":3,"sources":["/src/styles/diffuse/page.css"],"names":[],"mappings":"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","file":"/styles/diffuse/page.css.map","sourcesContent":["body {\n background-color: var(--bg-color);\n color: var(--text-color);\n text-rendering: optimizeLegibility;\n}\n\n[id] {\n scroll-margin-top: var(--space-md);\n}\n\n::selection {\n background: var(--accent-highlight);\n}\n\n/**\n * Code\n */\n\ncode {\n background: var(--code-color);\n border-radius: var(--radius-sm);\n color: var(--text-color);\n font-size: 86%;\n padding: var(--space-3xs);\n}\n\n.code-block code {\n border-radius: 0;\n display: block;\n overflow: hidden;\n padding: var(--space-sm);\n white-space: pre-wrap;\n word-break: break-all;\n}\n\n.code-block {\n margin: var(--space-sm) 0;\n max-width: var(--container-xl);\n}\n\n/**\n * Containers\n */\n\np,\nul,\nol {\n margin: var(--space-sm) 0;\n max-width: var(--container-sm);\n}\n\nfooter nav {\n align-items: center;\n display: flex;\n font-size: var(--fs-base);\n gap: var(--space-sm);\n margin-top: var(--space-md);\n\n a {\n opacity: 0.3;\n text-decoration: none;\n transition: opacity 250ms;\n }\n\n a:focus,\n a:hover {\n opacity: 0.6;\n }\n}\n\nheader {\n display: block;\n\n @media (min-width: 42rem) {\n display: flex;\n gap: var(--space-lg);\n }\n}\n\nheader,\nmain {\n margin: var(--space-md) auto;\n max-width: var(--container-7xl);\n padding: 0 var(--space-md);\n\n @media (min-width: 42rem) {\n padding: 0 var(--space-lg);\n }\n}\n\nmain {\n margin-bottom: var(--space-lg);\n}\n\n.columns {\n display: block;\n\n @media (min-width: 42rem) {\n display: flex;\n flex-wrap: wrap;\n gap: 0 var(--space-3xl);\n }\n}\n\nul.columns {\n list-style: none;\n padding: 0;\n max-width: 100%;\n\n li {\n margin-bottom: var(--space-xl);\n }\n\n li::marker {\n content: none;\n }\n\n li i.ph-fill {\n opacity: 0.4;\n }\n}\n\n.filler {\n background: oklch(from var(--text-color) l c h / 0.2);\n flex: 1;\n\n &.filler--bg-accent {\n background-color: oklch(from var(--accent) l c h / 0.2);\n }\n\n &.filler--bg-twist-1 {\n background-color: oklch(from var(--accent-twist-1) l c h / 0.2);\n }\n\n &.filler--bg-twist-2 {\n background-color: oklch(from var(--accent-twist-2) l c h / 0.2);\n }\n\n &.filler--bg-twist-3 {\n background-color: oklch(from var(--accent-twist-3) l c h / 0.2);\n }\n\n &.filler--bg-twist-4 {\n background-color: oklch(from var(--accent-twist-4) l c h / 0.2);\n }\n\n &.filler--bg-twist-5 {\n background-color: oklch(from var(--accent-twist-5) l c h / 0.2);\n }\n}\n\n.flex {\n flex: 1;\n margin-bottom: var(--space-xs);\n min-width: var(--container-3xs);\n}\n\n.flex p {\n max-width: 100%;\n}\n\n/**\n * Dialog\n */\n\ndialog {\n background: var(--bg-color);\n border: 0;\n border-radius: var(--radius-md);\n padding: var(--space-lg);\n min-width: min(87.5dvw, var(--container-sm));\n}\n\n/**\n * Dropdown menu\n */\n\n.dropdown {\n background: oklch(from var(--bg-color) calc(l + 0.2) c h);\n border: 0;\n border-radius: var(--radius-md);\n box-shadow: var(--box-shadow-xl);\n color: var(--text-color);\n font-size: var(--fs-sm);\n margin: 0;\n margin-top: var(--space-3xs);\n padding: 0;\n position: fixed;\n position-area: bottom span-left;\n text-align: left;\n\n @media (prefers-color-scheme: dark) {\n background: oklch(from var(--bg-color) calc(l - 0.05) c h);\n }\n\n &::backdrop {\n background: transparent;\n }\n\n & > a {\n cursor: pointer;\n display: block;\n min-width: var(--space-3xl);\n padding: var(--space-xs) var(--space-sm);\n text-decoration: none;\n\n & > * {\n pointer-events: none;\n }\n }\n\n & > a:not(:last-child) {\n border-bottom: 1px solid var(--border-color);\n }\n\n i {\n opacity: 0.4;\n transition: opacity 250ms;\n }\n\n a:hover i {\n opacity: 1;\n }\n\n .with-icon {\n gap: var(--space-2xs);\n }\n}\n\n/**\n * Forms\n */\n\nlabel {\n display: block;\n font-size: var(--fs-xs);\n font-weight: 600;\n letter-spacing: var(--tracking-wide);\n margin-bottom: var(--space-3xs);\n opacity: 0.6;\n text-transform: uppercase;\n}\n\ninput,\ntextarea {\n background: transparent;\n border: 3px solid var(--form-color);\n border-radius: var(--radius-sm);\n color: inherit;\n font-size: var(--fs-sm);\n padding: var(--space-2xs);\n width: 100%;\n}\n\nselect {\n appearance: none;\n background: transparent;\n border: 3px solid var(--form-color);\n border-radius: var(--radius-sm);\n color: inherit;\n font-family: inherit;\n font-size: var(--fs-sm);\n padding: var(--space-2xs) var(--space-xs);\n transition-duration: 250ms;\n transition-property: border-color;\n width: 100%;\n\n option,\n optgroup {\n color: black;\n }\n}\n\ntextarea {\n padding: var(--space-xs);\n resize: none;\n}\n\n/**\n * Grid\n */\n\n.grid {\n display: grid;\n gap: var(--space-2xs);\n grid-template-columns: repeat(auto-fill, minmax(min(var(--container-xs), 100%), 1fr));\n list-style: none;\n max-width: 100%;\n padding: 0;\n\n li::marker {\n content: none;\n }\n\n .grid-item {\n border: 1px solid var(--border-color);\n border-radius: var(--radius-md);\n display: flex;\n\n &[hidden] {\n display: none;\n }\n }\n\n .grid-item__contents {\n flex: 1;\n padding: var(--space-md);\n position: relative;\n\n --grid-item-gradient-opacity: 0.125;\n\n @media (prefers-color-scheme: dark) {\n --grid-item-gradient-opacity: 0.075;\n }\n\n &::before {\n background: linear-gradient(\n to bottom,\n oklch(from var(--grid-item-color, transparent) l c h / var(--grid-item-gradient-opacity)),\n transparent 65%\n );\n content: \"\";\n inset: 0;\n pointer-events: none;\n position: absolute;\n }\n }\n\n .grid-item__menu {\n border-left: 1px solid var(--border-color);\n display: flex;\n flex-direction: column;\n justify-content: space-evenly;\n\n hr {\n background: var(--border-color);\n border: 0;\n height: 1px;\n margin: 0;\n padding: 0;\n }\n }\n\n .grid-item__menu button,\n .grid-item__menu .button {\n --button-bg-opacity: 0.3;\n align-items: center;\n border-radius: 0;\n display: flex;\n flex: 1;\n justify-content: center;\n }\n\n .grid-item__kind {\n border: 1.5px solid transparent;\n border-radius: 9999px;\n color: var(--bg-color);\n display: inline-block;\n font-size: var(--fs-2xs);\n font-weight: 600;\n line-height: 0.75;\n opacity: 0.6;\n padding: var(--space-3xs);\n text-box: trim-both cap alphabetic;\n vertical-align: middle;\n\n &[hidden] {\n display: none;\n }\n\n &[title] {\n height: 16px;\n padding: 0;\n width: 6px;\n }\n }\n\n .grid-item__title {\n align-items: center;\n display: flex;\n gap: var(--space-2xs);\n }\n}\n\n.grid-filter {\n align-items: center;\n display: flex;\n gap: var(--space-2xs);\n margin-bottom: var(--space-md);\n margin-top: var(--space-md);\n\n .grid-filter--label {\n display: none;\n font-size: var(--fs-xs);\n font-weight: 600;\n margin-right: var(--space-2xs);\n opacity: 0.4;\n\n @media (min-width: 31.5rem) {\n display: block;\n }\n }\n\n .grid-filter--output {\n font-size: var(--fs-xs);\n font-weight: 600;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .grid-filter--label-output,\n .grid-filter--output {\n opacity: 0;\n transition: opacity 250ms;\n }\n}\n\n/**\n * Headers\n */\n\n.construct {\n color: var(--accent);\n font-size: var(--fs-3xl);\n font-weight: 900;\n image-rendering: pixelated;\n letter-spacing: -0.0125em;\n line-height: 0.775em;\n line-height: 1.05cap;\n margin-bottom: var(--space-md);\n max-width: var(--container-xl);\n text-transform: uppercase;\n}\n\nh2 {\n /* color: oklch(from var(--bg-color) calc(l - 0.25) c h); */\n font-size: var(--fs-xl);\n font-weight: 900;\n letter-spacing: -0.0125em;\n line-height: 1;\n margin: var(--space-2xl) 0 var(--space-md);\n text-transform: uppercase;\n}\n\nh3 {\n font-size: var(--fs-md);\n font-weight: 800;\n line-height: 1;\n margin: var(--space-xl) 0 var(--space-sm);\n text-transform: uppercase;\n}\n\nh2 + h3 {\n margin-top: var(--space-md);\n}\n\n/**\n * Inline\n */\n\na {\n color: inherit;\n text-underline-offset: 6px;\n\n &.button {\n text-decoration: none;\n }\n}\n\nabbr {\n text-underline-offset: 6px;\n}\n\nbutton,\na.button {\n --button-bg-opacity: 0.6;\n background: oklch(from var(--text-color) l c h / var(--button-bg-opacity));\n border: 0;\n border-radius: 999px;\n color: var(--bg-color);\n cursor: pointer;\n display: inline-block;\n font-family: inherit;\n font-weight: 500;\n line-height: var(--leading-tight);\n padding: var(--space-2xs) calc((var(--space-xs) + var(--space-sm)) / 2);\n transition-duration: 250ms;\n transition-property: background-color, border-color, opacity;\n\n & * {\n pointer-events: none;\n }\n\n &[disabled] {\n --button-bg-opacity: 0.4;\n cursor: not-allowed;\n }\n\n &:hover:not([disabled]),\n &:focus:not([disabled]) {\n --button-bg-opacity: 1;\n }\n\n &.button--bg-accent {\n background-color: oklch(from var(--accent) l c h / var(--button-bg-opacity));\n }\n\n &.button--bg-twist-1 {\n background-color: oklch(from var(--accent-twist-1) l c h / var(--button-bg-opacity));\n }\n\n &.button--bg-twist-2 {\n background-color: oklch(from var(--accent-twist-2) l c h / var(--button-bg-opacity));\n }\n\n &.button--bg-twist-3 {\n background-color: oklch(from var(--accent-twist-3) l c h / var(--button-bg-opacity));\n }\n\n &.button--bg-twist-4 {\n background-color: oklch(from var(--accent-twist-4) l c h / var(--button-bg-opacity));\n }\n\n &.button--bg-twist-5 {\n background-color: oklch(from var(--accent-twist-5) l c h / var(--button-bg-opacity));\n }\n\n &.button--border {\n border: 2px solid transparent;\n }\n\n &.button--small {\n font-size: var(--fs-sm);\n line-height: 0.75;\n padding: var(--space-2xs);\n text-box: trim-both cap alphabetic;\n }\n\n &.button--subtle {\n --button-bg-opacity: 0.3;\n }\n\n &.button--tag {\n font-size: var(--fs-2xs);\n font-weight: 600;\n line-height: 0.75;\n padding: var(--space-3xs);\n text-box: trim-both cap alphabetic;\n vertical-align: middle;\n\n &.button--border {\n border-width: 1.5px;\n }\n\n &.button--tag-alt {\n padding: calc((var(--space-2xs) + var(--space-3xs)) / 2) var(--space-2xs);\n }\n }\n\n &.button--tiny {\n font-size: var(--fs-xs);\n line-height: 1;\n padding: var(--space-3xs) calc((var(--space-2xs) + var(--space-3xs)) / 2);\n }\n\n &.button--transparent {\n background-color: transparent;\n color: var(--text-color);\n opacity: var(--button-bg-opacity);\n\n &.button--border {\n border-color: oklch(from currentColor l c h / var(--button-bg-opacity));\n }\n\n &.button--tr-accent {\n color: var(--accent);\n }\n\n &.button--tr-twist-1 {\n color: var(--accent-twist-1);\n }\n\n &.button--tr-twist-2 {\n color: var(--accent-twist-2);\n }\n\n &.button--tr-twist-3 {\n color: var(--accent-twist-3);\n }\n\n &.button--tr-twist-4 {\n color: var(--accent-twist-4);\n }\n\n &.button--tr-twist-5 {\n color: var(--accent-twist-5);\n }\n }\n\n .button__supplementary-text {\n display: none;\n\n @media (min-width: 42rem) {\n display: inline-flex;\n }\n }\n\n & > span {\n align-items: center;\n display: inline-flex;\n gap: var(--space-3xs);\n padding-top: 1px;\n }\n}\n\nsmall {\n font-size: var(--fs-xs);\n\n a {\n text-underline-offset: 3px;\n }\n}\n\nstrong {\n font-weight: 600;\n}\n\n.button-col {\n display: inline-flex;\n flex-direction: column;\n gap: var(--space-2xs);\n}\n\n.button-row {\n display: inline-flex;\n gap: var(--space-2xs);\n}\n\n.divider {\n align-self: stretch;\n background-color: var(--border-color);\n width: 1px;\n}\n\n.todo {\n font-size: var(--fs-sm);\n font-weight: 600;\n opacity: 0.4;\n}\n\n.with-icon {\n align-items: center;\n display: inline-flex;\n gap: var(--space-3xs);\n}\n\n/**\n * Lists\n */\n\nul,\nol {\n padding-left: var(--space-md);\n}\n\nul li::marker {\n color: oklch(from currentColor l c h / 0.4);\n content: \"◦ \";\n}\n\n.element {\n min-width: min(var(--container-xs), 100%);\n width: 32.5%;\n}\n\n/**\n * Lists\n */\n\n.list-description {\n color: oklch(from currentColor l c h / 0.6);\n font-size: var(--fs-xs);\n margin-bottom: var(--space-xs);\n margin-top: var(--space-2xs);\n\n a {\n text-underline-offset: 3px;\n }\n}\n\n.table-of-contents {\n font-weight: 300;\n list-style: none;\n padding: 0;\n\n & li {\n display: flex;\n gap: var(--space-3xs);\n white-space: nowrap;\n }\n\n & li:after {\n content: \" ............................................................................................................................................................................\";\n direction: rtl;\n flex: 1;\n opacity: 0.4;\n overflow: hidden;\n text-align: right;\n text-overflow: ellipsis;\n }\n\n & a {\n text-decoration: none;\n }\n}\n\n/**\n * Logo\n */\n\n.diffuse-logo-container {\n align-items: center;\n display: flex;\n font-size: var(--fs-lg);\n justify-content: space-between;\n margin: var(--space-lg) 0 var(--space-xl);\n\n svg {\n fill: oklch(from var(--bg-color) calc(l - 0.5) c h);\n opacity: 0.2;\n padding: var(--space-3xs) 0;\n width: 4.25em;\n\n @media (prefers-color-scheme: dark) {\n fill: var(--text-color);\n opacity: 0.25;\n }\n }\n\n &.diffuse-logo-container--condensed {\n margin-bottom: var(--space-lg);\n }\n}\n\n/**\n * Nav\n */\n\n.nav-container {\n align-items: center;\n border-bottom: 1px solid var(--border-color);\n display: flex;\n gap: var(--space-xs);\n margin-top: var(--space-md);\n padding-bottom: var(--space-md);\n}\n\nnav {\n align-items: center;\n display: flex;\n flex: 1;\n flex-wrap: nowrap;\n font-size: var(--fs-sm);\n gap: var(--space-xs);\n overflow: hidden;\n\n .button {\n flex-shrink: 0;\n overflow: hidden;\n white-space: nowrap;\n }\n}\n\n/**\n * Status\n */\n#status {\n align-items: center;\n display: flex;\n font-size: var(--fs-sm);\n gap: var(--space-3xs);\n\n a {\n display: inline-block;\n opacity: 0.55;\n padding: var(--space-3xs);\n text-decoration: none;\n transition-duration: 250ms;\n transition-property: opacity;\n\n &:hover,\n &:focus {\n opacity: 1;\n }\n }\n\n a.hidden {\n opacity: 0;\n pointer-events: none;\n }\n\n .ph-spinner {\n position: relative;\n top: 1px;\n }\n}\n\n#status--filler-container {\n align-items: center;\n display: flex;\n height: var(--space-xl);\n justify-content: end;\n padding: 0 var(--space-lg);\n\n @media (min-width: 42rem) {\n height: 100%;\n }\n}\n\n/**\n * 😶‍🌫️\n */\n\n.dither-mask,\n.grid-item__contents::before,\nh2,\nh3 {\n mask:\n url(\"data:image/png;base64,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\"),\n radial-gradient(circle at 50% 0, transparent 45%, oklab(0 0 0 / 0.65) 85%) 0 0/50% 100%;\n}\n"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse"}
+2
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/loader.css
··· 1 + @layer base.variables{:root{--fs-3xs:clamp(0.41rem,-0.06vi + 0.42rem,0.38rem);--fs-2xs:clamp(0.51rem,-0.02vi + 0.52rem,0.5rem);--fs-xs:clamp(0.64rem,0.05vi + 0.63rem,0.67rem);--fs-sm:clamp(0.8rem,0.17vi + 0.76rem,0.89rem);--fs-base:clamp(1rem,0.34vi + 0.91rem,1.19rem);--fs-md:clamp(1.25rem,0.61vi + 1.1rem,1.58rem);--fs-lg:clamp(1.56rem,1vi + 1.31rem,2.11rem);--fs-xl:clamp(1.95rem,1.56vi + 1.56rem,2.81rem);--fs-2xl:clamp(2.44rem,2.38vi + 1.85rem,3.75rem);--fs-3xl:clamp(3.05rem,3.54vi + 2.17rem,5rem);--space-3xs:clamp(0.25rem,0.2216rem + 0.1136vw,0.3125rem);--space-2xs:clamp(0.5rem,0.4432rem + 0.2273vw,0.625rem);--space-xs:clamp(0.75rem,0.6932rem + 0.2273vw,0.875rem);--space-sm:clamp(1rem,0.9148rem + 0.3409vw,1.1875rem);--space-md:clamp(1.5rem,1.358rem + 0.5682vw,1.8125rem);--space-lg:clamp(2rem,1.8295rem + 0.6818vw,2.375rem);--space-xl:clamp(3rem,2.7443rem + 1.0227vw,3.5625rem);--space-2xl:clamp(4rem,3.6591rem + 1.3636vw,4.75rem);--space-3xl:clamp(6rem,5.4886rem + 2.0455vw,7.125rem);--radius-xs:0.125rem;--radius-sm:0.25rem;--radius-md:0.375rem;--radius-lg:0.5rem;--radius-xl:0.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--radius-4xl:2rem;--container-3xs:16rem;--container-2xs:18rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--container-7xl:80rem;--container-8xl:88rem;--container-9xl:96rem;--tracking-tighter:-0.05em;--tracking-tight:-0.025em;--tracking-normal:0em;--tracking-wide:0.025em;--tracking-wider:0.05em;--tracking-widest:0.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--leading-loose:2;--box-shadow-2xs:0 1px rgba(0,0,0,.05);--box-shadow-xs:0 1px 2px 0 rgba(0,0,0,.05);--box-shadow-sm:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--box-shadow-md:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--box-shadow-lg:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--box-shadow-xl:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--box-shadow-2xl:0 25px 50px -12px rgba(0,0,0,.25);--text-shadow-2xs:0px 1px 0px rgba(0,0,0,.15);--text-shadow-xs:0px 1px 1px rgba(0,0,0,.2);--text-shadow-sm:0px 1px 0px rgba(0,0,0,.075),0px 1px 1px rgba(0,0,0,.075),0px 2px 2px rgba(0,0,0,.075);--text-shadow-md:0px 1px 1px rgba(0,0,0,.1),0px 1px 2px rgba(0,0,0,.1),0px 2px 4px rgba(0,0,0,.1);--text-shadow-lg:0px 1px 2px rgba(0,0,0,.1),0px 3px 2px rgba(0,0,0,.1),0px 4px 8px rgba(0,0,0,.1)}}@layer base.animations{:root{--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0,0,0.2,1) infinite;--animate-pulse:pulse 2s cubic-bezier(0.4,0,0.6,1) infinite;--animate-bounce:bounce 1s infinite}.animate-spin{animation:var(--animate-spin)}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-bounce{animation:var(--animate-bounce)}@keyframes spin{to{transform:rotate(1turn)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}}@layer diffuse.colors{:root{--color-1:oklch(4.1308% 0.25306 109.22);--color-2:oklch(98.369% 0.01834 67.664);--color-3:oklch(26.787% 0.00168 186.65);--accent:oklch(0.49552082493478433 0.08959833768631711 126.18581796616421);--accent-twist-1:oklch(0.4394087182327507 0.07236154661033459 126.18581796616421);--accent-twist-2:oklch(0.595520818778872 0.0651155417011046 241.18580587451083);--accent-twist-3:oklch(0.6455208185961163 0.07999998225841164 241.185809134907);--accent-twist-4:oklch(0.49552082249860496 0.056052673525189174 11.185823191211629);--accent-twist-5:oklch(0.4155208216940155 0.07999998497864118 11.185815502393897);--accent-mark:oklch(from var(--accent-twist-1) l c h/0.125);--accent-highlight:oklch(from var(--accent) l c h/0.375);--bg-color:var(--color-2);--text-color:var(--color-1);--border-color:oklch(from var(--text-color) l c h/0.05);--code-color:oklch(from #fefcf1 l c h);--form-color:oklch(from var(--bg-color) calc(l - 0.075) c h/1)}@media (prefers-color-scheme:dark){:root{--accent:oklch(0.9588262863391736 0.06116191577190922 140.4794385054261);--accent-twist-1:oklch(0.990000017539932 0.040000057532729824 140.4794373213467);--accent-twist-2:oklch(0.8588262791075975 0.05264925002780416 250.47942154450243);--accent-twist-3:oklch(0.6788262741405414 0.07999998302468042 250.47944272057788);--accent-twist-4:oklch(0.758826283102734 0.08415801238169258 15.479456004219076);--accent-twist-5:oklch(0.4288262770395823 0.05680666043681931 15.47945273215004);--bg-color:var(--color-3);--text-color:var(--color-2);--code-color:oklch(from var(--bg-color) calc(l + 0.0375) c h/1);--form-color:oklch(from var(--bg-color) calc(l + 0.075) c h/1)}}}@layer diffuse.font-faces{@font-face{font-display:swap;font-family:CommitMonoVariable;font-style:normal;font-weight:100 900;src:url(../fonts/CommitMonoVariable.woff2) format("woff2")}@font-face{font-display:swap;font-family:InterVariable;font-style:normal;font-weight:100 900;src:url(../fonts/InterVariable.woff2) format("woff2")}@font-face{font-display:swap;font-family:InterVariable;font-style:italic;font-weight:100 900;src:url(../fonts/InterVariable-Italic.woff2) format("woff2")}}@layer diffuse.fonts{:root{font-family:Inter,sans-serif;font-size:var(--fs-base)}@supports (font-variation-settings:normal){:root{font-family:InterVariable,sans-serif;font-feature-settings:"ss03" 2;font-optical-sizing:auto}}.monospace-font,code{font-family:CommitMonoVariable,Commit Mono,monospace}}body{background:var(--bg-color);color:var(--text-color)}@scope (.diffuse){:scope{color:var(--text-color);font-size:var(--fs-md);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.flex{align-items:center;display:flex;gap:var(--space-2xs);justify-content:center}#diffuse-loader{pointer-events:none;transition:opacity .5s ease;&.loaded{opacity:0}}} 2 + /*# sourceMappingURL=./loader.css.map */
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/loader.css.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/loader.css.map
··· 1 + {"version":3,"sources":["/src/styles/variables.css","/src/styles/animations.css","/src/styles/diffuse/colors.css","/src/styles/diffuse/font-faces.css","/src/styles/diffuse/fonts.css","/src/styles/loader.css"],"names":[],"mappings":"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","file":"/styles/loader.css.map","sourcesContent":[":root {\n /* Font scales */\n --fs-3xs: clamp(0.41rem, -0.06vi + 0.42rem, 0.38rem);\n --fs-2xs: clamp(0.51rem, -0.02vi + 0.52rem, 0.5rem);\n --fs-xs: clamp(0.64rem, 0.05vi + 0.63rem, 0.67rem);\n --fs-sm: clamp(0.8rem, 0.17vi + 0.76rem, 0.89rem);\n --fs-base: clamp(1rem, 0.34vi + 0.91rem, 1.19rem);\n --fs-md: clamp(1.25rem, 0.61vi + 1.1rem, 1.58rem);\n --fs-lg: clamp(1.56rem, 1vi + 1.31rem, 2.11rem);\n --fs-xl: clamp(1.95rem, 1.56vi + 1.56rem, 2.81rem);\n --fs-2xl: clamp(2.44rem, 2.38vi + 1.85rem, 3.75rem);\n --fs-3xl: clamp(3.05rem, 3.54vi + 2.17rem, 5rem);\n\n /* Space scales */\n --space-3xs: clamp(0.25rem, 0.2216rem + 0.1136vw, 0.3125rem);\n --space-2xs: clamp(0.5rem, 0.4432rem + 0.2273vw, 0.625rem);\n --space-xs: clamp(0.75rem, 0.6932rem + 0.2273vw, 0.875rem);\n --space-sm: clamp(1rem, 0.9148rem + 0.3409vw, 1.1875rem);\n --space-md: clamp(1.5rem, 1.358rem + 0.5682vw, 1.8125rem);\n --space-lg: clamp(2rem, 1.8295rem + 0.6818vw, 2.375rem);\n --space-xl: clamp(3rem, 2.7443rem + 1.0227vw, 3.5625rem);\n --space-2xl: clamp(4rem, 3.6591rem + 1.3636vw, 4.75rem);\n --space-3xl: clamp(6rem, 5.4886rem + 2.0455vw, 7.125rem);\n\n /* Border-radius */\n --radius-xs: 0.125rem;\n --radius-sm: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-xl: 0.75rem;\n --radius-2xl: 1rem;\n --radius-3xl: 1.5rem;\n --radius-4xl: 2rem;\n\n /* Containers */\n --container-3xs: 16rem;\n --container-2xs: 18rem;\n --container-xs: 20rem;\n --container-sm: 24rem;\n --container-md: 28rem;\n --container-lg: 32rem;\n --container-xl: 36rem;\n --container-2xl: 42rem;\n --container-3xl: 48rem;\n --container-4xl: 56rem;\n --container-5xl: 64rem;\n --container-6xl: 72rem;\n --container-7xl: 80rem;\n --container-8xl: 88rem;\n --container-9xl: 96rem;\n\n /* Letter-spacing */\n --tracking-tighter: -0.05em;\n --tracking-tight: -0.025em;\n --tracking-normal: 0em;\n --tracking-wide: 0.025em;\n --tracking-wider: 0.05em;\n --tracking-widest: 0.1em;\n\n /* Line-height */\n --leading-tight: 1.25;\n --leading-snug: 1.375;\n --leading-normal: 1.5;\n --leading-relaxed: 1.625;\n --leading-loose: 2;\n\n /* Shadows */\n --box-shadow-2xs: 0 1px rgb(0 0 0 / 0.05);\n --box-shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --box-shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --box-shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --box-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --box-shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\n --box-shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n\n --text-shadow-2xs: 0px 1px 0px rgb(0 0 0 / 0.15);\n --text-shadow-xs: 0px 1px 1px rgb(0 0 0 / 0.2);\n --text-shadow-sm:\n 0px 1px 0px rgb(0 0 0 / 0.075), 0px 1px 1px rgb(0 0 0 / 0.075), 0px 2px 2px rgb(0 0 0 / 0.075);\n --text-shadow-md:\n 0px 1px 1px rgb(0 0 0 / 0.1), 0px 1px 2px rgb(0 0 0 / 0.1), 0px 2px 4px rgb(0 0 0 / 0.1);\n --text-shadow-lg:\n 0px 1px 2px rgb(0 0 0 / 0.1), 0px 3px 2px rgb(0 0 0 / 0.1), 0px 4px 8px rgb(0 0 0 / 0.1);\n}\n",":root {\n --animate-spin: spin 1s linear infinite;\n --animate-ping: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --animate-bounce: bounce 1s infinite;\n}\n\n.animate-spin {\n animation: var(--animate-spin);\n}\n\n.animate-ping {\n animation: var(--animate-ping);\n}\n\n.animate-pulse {\n animation: var(--animate-pulse);\n}\n\n.animate-bounce {\n animation: var(--animate-bounce);\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes ping {\n 75%,\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n}\n\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n\n@keyframes bounce {\n 0%,\n 100% {\n transform: translateY(-25%);\n animation-timing-function: cubic-bezier(0.8, 0, 1, 1);\n }\n 50% {\n transform: none;\n animation-timing-function: cubic-bezier(0, 0, 0.2, 1);\n }\n}\n",":root{--color-1:oklch(4.1308% 0.25306 109.22);--color-2:oklch(98.369% 0.01834 67.664);--color-3:oklch(26.787% 0.00168 186.65);--accent:oklch(0.49552082493478433 0.08959833768631711 126.18581796616421);--accent-twist-1:oklch(0.4394087182327507 0.07236154661033459 126.18581796616421);--accent-twist-2:oklch(0.595520818778872 0.0651155417011046 241.18580587451083);--accent-twist-3:oklch(0.6455208185961163 0.07999998225841164 241.185809134907);--accent-twist-4:oklch(0.49552082249860496 0.056052673525189174 11.185823191211629);--accent-twist-5:oklch(0.4155208216940155 0.07999998497864118 11.185815502393897);--accent-mark:oklch(from var(--accent-twist-1) l c h/0.125);--accent-highlight:oklch(from var(--accent) l c h/0.375);--bg-color:var(--color-2);--text-color:var(--color-1);--border-color:oklch(from var(--text-color) l c h/0.05);--code-color:oklch(from #fefcf1 l c h);--form-color:oklch(from var(--bg-color) calc(l - 0.075) c h/1)}@media (prefers-color-scheme:dark){:root{--accent:oklch(0.9588262863391736 0.06116191577190922 140.4794385054261);--accent-twist-1:oklch(0.990000017539932 0.040000057532729824 140.4794373213467);--accent-twist-2:oklch(0.8588262791075975 0.05264925002780416 250.47942154450243);--accent-twist-3:oklch(0.6788262741405414 0.07999998302468042 250.47944272057788);--accent-twist-4:oklch(0.758826283102734 0.08415801238169258 15.479456004219076);--accent-twist-5:oklch(0.4288262770395823 0.05680666043681931 15.47945273215004);--bg-color:var(--color-3);--text-color:var(--color-2);--code-color:oklch(from var(--bg-color) calc(l + 0.0375) c h/1);--form-color:oklch(from var(--bg-color) calc(l + 0.075) c h/1)}}","@font-face{font-display:swap;font-family:CommitMonoVariable;font-style:normal;font-weight:100 900;src:url(../fonts/CommitMonoVariable.woff2) format(\"woff2\")}@font-face{font-display:swap;font-family:InterVariable;font-style:normal;font-weight:100 900;src:url(../fonts/InterVariable.woff2) format(\"woff2\")}@font-face{font-display:swap;font-family:InterVariable;font-style:italic;font-weight:100 900;src:url(../fonts/InterVariable-Italic.woff2) format(\"woff2\")}",":root{font-family:Inter,sans-serif;font-size:var(--fs-base)}@supports (font-variation-settings:normal){:root{font-family:InterVariable,sans-serif;font-feature-settings:\"ss03\" 2;font-optical-sizing:auto}}.monospace-font,code{font-family:CommitMonoVariable,Commit Mono,monospace}","@import \"./variables.css\" layer(base.variables);\n@import \"./animations.css\" layer(base.animations);\n\n@import \"./diffuse/colors.css\" layer(diffuse.colors);\n@import \"./diffuse/font-faces.css\" layer(diffuse.font-faces);\n@import \"./diffuse/fonts.css\" layer(diffuse.fonts);\n\nbody {\n background: var(--bg-color);\n color: var(--text-color);\n}\n\n@scope (.diffuse) {\n :scope {\n color: var(--text-color);\n font-size: var(--fs-md);\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%);\n }\n\n .flex {\n align-items: center;\n display: flex;\n gap: var(--space-2xs);\n justify-content: center;\n }\n\n #diffuse-loader {\n pointer-events: none;\n transition: opacity 500ms ease;\n\n &.loaded {\n opacity: 0;\n }\n }\n}\n"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse"}
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/reset.css
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/reset.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/reset.css.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/reset.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/reset.css.map
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/reset.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/variables.css
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/variables.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/variables.css.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/variables.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/variables.css.map
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/variables.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/wireframe/ui.css
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/wireframe/ui.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/wireframe/ui.css.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/wireframe/ui.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/styles/wireframe/ui.css.map
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/wireframe/ui.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/temporal-polyfill-WCWY3GMU.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/temporal-polyfill-WCWY3GMU.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/temporal-polyfill-WCWY3GMU.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/temporal-polyfill-WCWY3GMU.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/temporal-polyfill-WCWY3GMU.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/temporal-polyfill-WCWY3GMU.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/testing/index.html
··· 1 + ../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/testing/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/testing/index.html.br
··· 1 + ../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/testing/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/testing/sample/tracks.js
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/testing/sample/tracks.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/testing/sample/tracks.js.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/testing/sample/tracks.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/testing/sample/tracks.js.map
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/testing/sample/tracks.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/blur/artwork-controller/element.css
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/blur/artwork-controller/element.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/blur/artwork-controller/element.css.br
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/blur/artwork-controller/element.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/blur/artwork-controller/element.css.map
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/blur/artwork-controller/element.css.map
+138
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/blur/artwork-controller/element.js
··· 1 + import{b as U}from"../../../chunk-3QGTS6VV.js";import{a as A}from"../../../chunk-6WW6Q6YW.js";import{a as N}from"../../../chunk-74D5IDBG.js";import{b as _,c as q,d as C,e as S,f as M,g as E,h as L,i as V}from"../../../chunk-RC5PZNFM.js";import{a as D,b as P,e as $,h as F}from"../../../chunk-7EUCOO7A.js";import"../../../chunk-WLXGGMHC.js";import"../../../chunk-QVM63RP5.js";import"../../../chunk-UYT7NSKP.js";import{e as O,g as W}from"../../../chunk-MWEXZQ4O.js";import"../../../chunk-K2CRUTCH.js";import{j as y,o as v,p as x}from"../../../chunk-4I6PUBR2.js";import{a as o}from"../../../chunk-BFIVCPQF.js";function it(e){var t=e.toString(16);return t.length===1?"0"+t:t}o(it,"toHex");function G(e){return"#"+e.map(it).join("")}o(G,"arrayToHex");function st(e){var t=(e[0]*299+e[1]*587+e[2]*114)/1e3;return t<128}o(st,"isDark");function nt(e){return e?at(e)?e:[e]:[]}o(nt,"prepareIgnoredColor");function at(e){return Array.isArray(e[0])}o(at,"isRGBArray");function R(e,t,r){for(var s=0;s<r.length;s++)if(ot(e,t,r[s]))return!0;return!1}o(R,"isIgnoredColor");function ot(e,t,r){switch(r.length){case 3:if(ut(e,t,r))return!0;break;case 4:if(lt(e,t,r))return!0;break;case 5:if(ct(e,t,r))return!0;break;default:return!1}}o(ot,"isIgnoredColorAsNumbers");function ut(e,t,r){return e[t+3]!==255||e[t]===r[0]&&e[t+1]===r[1]&&e[t+2]===r[2]}o(ut,"isIgnoredRGBColor");function lt(e,t,r){return e[t+3]&&r[3]?e[t]===r[0]&&e[t+1]===r[1]&&e[t+2]===r[2]&&e[t+3]===r[3]:e[t+3]===r[3]}o(lt,"isIgnoredRGBAColor");function T(e,t,r){return e>=t-r&&e<=t+r}o(T,"inRange");function ct(e,t,r){var s=r[0],i=r[1],a=r[2],n=r[3],u=r[4],l=e[t+3],d=T(l,n,u);return n?!!(!l&&d||T(e[t],s,u)&&T(e[t+1],i,u)&&T(e[t+2],a,u)&&d):d}o(ct,"isIgnoredRGBAColorWithThreshold");var dt=24;function ht(e,t,r){for(var s={},i=r.dominantDivider||dt,a=r.ignoredColor,n=r.step,u=[0,0,0,0,0],l=0;l<t;l+=n){var d=e[l],c=e[l+1],g=e[l+2],f=e[l+3];if(!(a&&R(e,l,a))){var h=Math.round(d/i)+","+Math.round(c/i)+","+Math.round(g/i);s[h]?s[h]=[s[h][0]+d*f,s[h][1]+c*f,s[h][2]+g*f,s[h][3]+f,s[h][4]+1]:s[h]=[d*f,c*f,g*f,f,1],u[4]<s[h][4]&&(u=s[h])}}var p=u[0],tt=u[1],et=u[2],b=u[3],rt=u[4];return b?[Math.round(p/b),Math.round(tt/b),Math.round(et/b),Math.round(b/rt)]:r.defaultColor}o(ht,"dominantAlgorithm");function ft(e,t,r){for(var s=0,i=0,a=0,n=0,u=0,l=r.ignoredColor,d=r.step,c=0;c<t;c+=d){var g=e[c+3],f=e[c]*g,h=e[c+1]*g,p=e[c+2]*g;l&&R(e,c,l)||(s+=f,i+=h,a+=p,n+=g,u++)}return n?[Math.round(s/n),Math.round(i/n),Math.round(a/n),Math.round(n/u)]:r.defaultColor}o(ft,"simpleAlgorithm");function vt(e,t,r){for(var s=0,i=0,a=0,n=0,u=0,l=r.ignoredColor,d=r.step,c=0;c<t;c+=d){var g=e[c],f=e[c+1],h=e[c+2],p=e[c+3];l&&R(e,c,l)||(s+=g*g*p,i+=f*f*p,a+=h*h*p,n+=p,u++)}return n?[Math.round(Math.sqrt(s/n)),Math.round(Math.sqrt(i/n)),Math.round(Math.sqrt(a/n)),Math.round(n/u)]:r.defaultColor}o(vt,"sqrtAlgorithm");function j(e){return w(e,"defaultColor",[0,0,0,0])}o(j,"getDefaultColor");function w(e,t,r){return e[t]===void 0?r:e[t]}o(w,"getOption");var B=10,H=100;function gt(e){return e.search(/\.svg(\?|$)/i)!==-1}o(gt,"isSvg");function mt(e){if(X(e)){var t=e.naturalWidth,r=e.naturalHeight;return!e.naturalWidth&&gt(e.src)&&(t=r=H),{width:t,height:r}}return $t(e)?{width:e.videoWidth,height:e.videoHeight}:Q(e)?{width:e.codedWidth,height:e.codedHeight}:{width:e.width,height:e.height}}o(mt,"getOriginalSize");function z(e){return bt(e)?"canvas":pt(e)?"offscreencanvas":Q(e)?"videoframe":kt(e)?"imagebitmap":e.src}o(z,"getSrc");function X(e){return typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement}o(X,"isInstanceOfHTMLImageElement");var Z=typeof OffscreenCanvas<"u";function pt(e){return Z&&e instanceof OffscreenCanvas}o(pt,"isInstanceOfOffscreenCanvas");function $t(e){return typeof HTMLVideoElement<"u"&&e instanceof HTMLVideoElement}o($t,"isInstanceOfHTMLVideoElement");function Q(e){return typeof VideoFrame<"u"&&e instanceof VideoFrame}o(Q,"isInstanceOfVideoFrame");function bt(e){return typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement}o(bt,"isInstanceOfHTMLCanvasElement");function kt(e){return typeof ImageBitmap<"u"&&e instanceof ImageBitmap}o(kt,"isInstanceOfImageBitmap");function wt(e,t){var r=w(t,"left",0),s=w(t,"top",0),i=w(t,"width",e.width),a=w(t,"height",e.height),n=i,u=a;if(t.mode==="precision")return{srcLeft:r,srcTop:s,srcWidth:i,srcHeight:a,destWidth:n,destHeight:u};var l;return i>a?(l=i/a,n=H,u=Math.round(n/l)):(l=a/i,u=H,n=Math.round(u/l)),(n>i||u>a||n<B||u<B)&&(n=i,u=a),{srcLeft:r,srcTop:s,srcWidth:i,srcHeight:a,destWidth:n,destHeight:u}}o(wt,"prepareSizeAndPosition");var yt=typeof window>"u";function Tt(){return yt?Z?new OffscreenCanvas(1,1):null:document.createElement("canvas")}o(Tt,"makeCanvas");var It="FastAverageColor: ";function m(e){return Error(It+e)}o(m,"getError");function k(e,t){t||console.error(e)}o(k,"outputError");var Y=(function(){function e(){this.canvas=null,this.ctx=null}return o(e,"FastAverageColor"),e.prototype.getColorAsync=function(t,r){if(!t)return Promise.reject(m("call .getColorAsync() without resource"));if(typeof t=="string"){if(typeof Image>"u")return Promise.reject(m("resource as string is not supported in this environment"));var s=new Image;return s.crossOrigin=r&&r.crossOrigin||"",s.src=t,this.bindImageEvents(s,r)}else{if(X(t)&&!t.complete)return this.bindImageEvents(t,r);var i=this.getColor(t,r);return i.error?Promise.reject(i.error):Promise.resolve(i)}},e.prototype.getColor=function(t,r){r=r||{};var s=j(r);if(!t){var i=m("call .getColor() without resource");return k(i,r.silent),this.prepareResult(s,i)}var a=mt(t),n=wt(a,r);if(!n.srcWidth||!n.srcHeight||!n.destWidth||!n.destHeight){var i=m('incorrect sizes for resource "'.concat(z(t),'"'));return k(i,r.silent),this.prepareResult(s,i)}if(!this.canvas&&(this.canvas=Tt(),!this.canvas)){var i=m("OffscreenCanvas is not supported in this browser");return k(i,r.silent),this.prepareResult(s,i)}if(!this.ctx){if(this.ctx=this.canvas.getContext("2d",{willReadFrequently:!0}),!this.ctx){var i=m("Canvas Context 2D is not supported in this browser");return k(i,r.silent),this.prepareResult(s)}this.ctx.imageSmoothingEnabled=!1}this.canvas.width=n.destWidth,this.canvas.height=n.destHeight;try{this.ctx.clearRect(0,0,n.destWidth,n.destHeight),this.ctx.drawImage(t,n.srcLeft,n.srcTop,n.srcWidth,n.srcHeight,0,0,n.destWidth,n.destHeight);var u=this.ctx.getImageData(0,0,n.destWidth,n.destHeight).data;return this.prepareResult(this.getColorFromArray4(u,r))}catch(l){var i=m("security error (CORS) for resource ".concat(z(t),`. 2 + Details: https://developer.mozilla.org/en/docs/Web/HTML/CORS_enabled_image`));return k(i,r.silent),r.silent||console.error(l),this.prepareResult(s,i)}},e.prototype.getColorFromArray4=function(t,r){r=r||{};var s=4,i=t.length,a=j(r);if(i<s)return a;var n=i-i%s,u=(r.step||1)*s,l;switch(r.algorithm||"sqrt"){case"simple":l=ft;break;case"sqrt":l=vt;break;case"dominant":l=ht;break;default:throw m("".concat(r.algorithm," is unknown algorithm"))}return l(t,n,{defaultColor:a,ignoredColor:nt(r.ignoredColor),step:u,dominantDivider:r.dominantDivider})},e.prototype.prepareResult=function(t,r){var s=t.slice(0,3),i=[t[0],t[1],t[2],t[3]/255],a=st(t);return{value:[t[0],t[1],t[2],t[3]],rgb:"rgb("+s.join(",")+")",rgba:"rgba("+i.join(",")+")",hex:G(s),hexa:G(t),isDark:a,isLight:!a,error:r}},e.prototype.destroy=function(){this.canvas&&(this.canvas.width=1,this.canvas.height=1,this.canvas=null),this.ctx=null},e.prototype.bindImageEvents=function(t,r){var s=this;return new Promise(function(i,a){var n=o(function(){d();var c=s.getColor(t,r);c.error?a(c.error):i(c)},"onload"),u=o(function(){d(),a(m('Error loading image "'.concat(t.src,'"')))},"onerror"),l=o(function(){d(),a(m('Image "'.concat(t.src,'" loading aborted')))},"onabort"),d=o(function(){t.removeEventListener("load",n),t.removeEventListener("error",u),t.removeEventListener("abort",l)},"unbindEvents");t.addEventListener("load",n),t.addEventListener("error",u),t.addEventListener("abort",l)})},e})();var J=o(e=>S(e)?e._$litType$.h:e.strings,"d"),K=_(class extends q{constructor(e){super(e),this.et=new WeakMap}render(e){return[e]}update(e,[t]){let r=C(this.it)?J(this.it):null,s=C(t)?J(t):null;if(r!==null&&(s===null||r!==s)){let i=L(e).pop(),a=this.et.get(r);if(a===void 0){let n=document.createDocumentFragment();a=W(O,n),a.setConnected(!1),this.et.set(r,a)}E(a,[i]),M(a,void 0,i)}if(s!==null){if(r===null||r!==s){let i=this.et.get(s);if(i!==void 0){let a=L(i).pop();V(e),M(e,void 0,a),E(e,[a])}}this.it=t}else this.it=void 0;return this.render(t)}});var I=class extends P{static{o(this,"ArtworkController")}constructor(){super(),this.attachShadow({mode:"open"})}#n=void 0;#t=v({current:null,previous:null});#i=v(void 0);#a=v(!1);#s=v("0:00");#r=v(!0);#e=v("0:00");$artwork=v(void 0);$audio=v(void 0);$favourites=v(void 0);$input=v(void 0);$output=v(void 0);$queue=v(void 0);audio=y(()=>{let t=this.$queue.value?.now();return t?this.$audio.value?.state(t.id):void 0});currentTrack=y(()=>{let t=this.$queue.value?.now();if(!t)return;let r=this.$output.value?.tracks.collection();if(!(!r||r.state!=="loaded"))return r.data.find(s=>s.id===t.id)});isPlaying=y(()=>this.$audio.value?.isPlaying());connectedCallback(){super.connectedCallback();let t=$(this,"artwork-processor-selector"),r=$(this,"audio-engine-selector"),s=$(this,"input-selector"),i=$(this,"output-selector"),a=$(this,"queue-engine-selector"),n=$(this,"favourites-orchestrator-selector");F({audio:r,artwork:t,favourites:n,input:s,output:i,queue:a}).then(()=>{this.$artwork.value=t,this.$audio.value=r,this.$input.value=s,this.$output.value=i,this.$queue.value=a,this.$favourites.value=n;let u=U(1e3,this.#l.bind(this));this.effect(()=>{let l=this.currentTrack();u()}),this.effect(()=>this.#c()),this.effect(()=>this.#u()),this.effect(()=>{let l=!!a.now(),d=this.audio()?.loadingState(),c=l&&d!=="loaded";this.#n&&clearTimeout(this.#n),c?this.#n=setTimeout(()=>this.#r.value=!0,2e3):this.#r.value=!1})})}#u(){let t=this.root().querySelector(".controller__inner");t&&(this.#a.value?t.classList.add("controller__inner--light-mode"):t.classList.remove("controller__inner--light-mode"))}async#l(){let t=this.currentTrack(),r=x(this.#t.get);if(!t){r.current&&(this.#t.value={current:null,previous:r.current});return}let s=t.id,i=await this.$input.value?.resolve({method:"GET",uri:t.uri}),a=await this.$input.value?.resolve({method:"HEAD",uri:t.uri});if(!i)return;let n="stream"in i?{cacheId:s,stream:i.stream,tags:t.tags}:{cacheId:s,tags:t.tags,urls:{get:i.url,head:a&&"url"in a?a.url:i.url}};if(this.$queue.value?.now()?.id!==t?.id)return;let u=await this.$artwork.value?.artwork(n)??[],l=this.currentTrack(),d=l?l.id:void 0;if(s===d){let c=u[0];this.#t.set({previous:r.current?{...r.current,loaded:!1}:null,current:c?{...c,hash:N(c.bytes).toString(),index:(r.current?.index??0)+1,loaded:!1,url:URL.createObjectURL(new Blob([c.bytes.buffer],{type:c.mime}))}:null}),c||(this.#i.value=void 0,this.#a.value=!1)}}#c(){let t=this.currentTrack(),r=this.audio(),s=(r?.currentTime()??0)*1e3,i=t?.stats?.duration??(r?.duration()!=null?r.duration()*1e3:void 0);if(r&&i&&!isNaN(i)){let a=A.Duration.from({milliseconds:Math.round(s)}).round({largestUnit:"hours",smallestUnit:"seconds"});if(i===1/0){this.#e.value=this.#o(a),this.#s.value="\u221E";return}let n=A.Duration.from({milliseconds:Math.round(i)}).round({largestUnit:"hours",smallestUnit:"seconds"});this.#e.value=this.#o(a),this.#s.value=this.#o(n)}else this.#e.value="0:00",this.#s.value="0:00"}#o(t){return`${t.hours>0?t.hours.toFixed(0)+":":""}${t.hours>0?t.minutes>9?t.minutes.toFixed(0):"0"+t.minutes.toFixed(0):t.minutes.toFixed(0)}:${t.seconds>9?t.seconds.toFixed(0):"0"+t.seconds.toFixed(0)}`}artworkLoaded=o(t=>{if(!(t.target instanceof HTMLImageElement))return;let r=t.target.getAttribute("data-hash");if(!r||r!==this.#t.value.current?.hash||this.#t.value.current?.loaded)return;let i=new Y().getColor(t.target),a=i.value,n=Math.round((a[0]*299+a[1]*587+a[2]*114)/1e3);this.#i.value=i.rgba,this.#a.value=n>165,this.#t.value={previous:this.#t.value.previous,current:{...this.#t.value.current,loaded:!0}}},"artworkLoaded");fullVolume=o(()=>{this.$audio.value?.adjustVolume({volume:1})},"fullVolume");mute=o(()=>{this.$audio.value?.adjustVolume({volume:0})},"mute");next=o(()=>{this.$queue.value?.shift()},"next");playPause=o(()=>{let t=this.$queue.value?.now()?.id;this.isPlaying()&&t?this.$audio.value?.pause({audioId:t}):t&&this.$audio.value?.play({audioId:t})},"playPause");previous=o(()=>{this.$queue.value?.unshift()},"previous");seek=o(t=>{let r=t.target?t.target:null,s=r?t.offsetX/r.clientWidth:0,i=this.$queue.value?.now()?.id;i&&this.$audio.value?.seek({audioId:i,percentage:s})},"seek");setVolume=o(t=>{let r=t.target?t.target:null,s=r?t.offsetX/r.clientWidth:0;this.$audio.value?.adjustVolume({volume:s})},"setVolume");toggleFavourite=o(()=>{let t=this.currentTrack();t&&this.$favourites.value?.toggle(t)},"toggleFavourite");render({html:t}){let r=this.currentTrack(),s=r?this.$favourites.value?.isFavourite(r)??!1:!1,a=[this.#t.value.previous,this.#t.value.current].sort((n,u)=>!n||!u?0:n.index%2?1:-1).map(n=>n===null?null:K(t` 3 + <img 4 + @load="${this.artworkLoaded}" 5 + data-hash="${n.hash}" 6 + src="${n.url}" 7 + style="opacity: ${n.loaded?"1":"0"}" 8 + /> 9 + `));return t` 10 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/bold/style.css" /> 11 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/fill/style.css" /> 12 + <link rel="stylesheet" href="styles/animations.css" /> 13 + <link rel="stylesheet" href="themes/blur/artwork-controller/element.css" /> 14 + 15 + <main style="background-color: ${this.#i.value??"var(--color-3)"}; opacity: 0;"> 16 + <section class="artwork"> 17 + <label style="display: ${this.group===D?"none":"block"};"> 18 + ${this.group} 19 + </label> 20 + 21 + ${a} 22 + </section> 23 + 24 + <section class="controller"> 25 + <div class="gradient-blur"> 26 + <div></div> 27 + <div></div> 28 + <div></div> 29 + <div></div> 30 + <div></div> 31 + <div></div> 32 + <div></div> 33 + <div></div> 34 + </div> 35 + 36 + <div 37 + class="controller__background" 38 + style="background-color: ${this.#i.value??"transparent"};" 39 + > 40 + </div> 41 + 42 + <section class="controller__inner"> 43 + <!-- NOW PLAYING --> 44 + 45 + <cite> 46 + <strong>${r?.tags?.title||"Diffuse"}</strong> 47 + <span style="font-style: ${r?"normal":"italic"}"> 48 + ${r?.tags?.artist??(r?"":"Waiting on queue ...")} 49 + </span> 50 + </cite> 51 + 52 + <!-- PROGRESS --> 53 + 54 + <div class="progress" @click="${this.seek}"> 55 + <progress max="100" value="${(this.audio()?.loadingState()==="loaded"?this.audio()?.progress()??0:0)*100}"></progress> 56 + <div class="timestamps"> 57 + <time datetime="${this.#e.value}">${this.#e.value}</time> 58 + <time datetime="${this.#e.value}">${this.#s.value}</time> 59 + </div> 60 + </div> 61 + 62 + <!-- CONTROLS --> 63 + 64 + <menu> 65 + <!-- previous --> 66 + <li @click="${this.previous}"> 67 + <i class="ph-fill ph-rewind" title="Previous track"></i> 68 + </li> 69 + 70 + <!-- loading ... --> 71 + <div 72 + class="animate-bounce menu__loader" 73 + style="display: ${this.#r.value?"inherit":"none"};" 74 + > 75 + <i class="ph-fill ph-vinyl-record" title="Loading ..."></i> 76 + </div> 77 + 78 + <!-- play --> 79 + <li 80 + @click="${this.playPause}" 81 + style="display: ${!this.#r.value&&!this.isPlaying()?"inline":"none"};" 82 + > 83 + <i class="ph-fill ph-play" title="Play"></i> 84 + </li> 85 + 86 + <!-- pause --> 87 + <li 88 + @click="${this.playPause}" 89 + style="display: ${!this.#r.value&&this.isPlaying()?"inline":"none"};" 90 + > 91 + <i class="ph-fill ph-pause" title="Pause"></i> 92 + </li> 93 + 94 + <!-- next --> 95 + <li @click="${this.next}"> 96 + <i class="ph-fill ph-fast-forward" title="Next track"></i> 97 + </li> 98 + </menu> 99 + 100 + <!-- VOLUME --> 101 + 102 + <div class="volume"> 103 + <i @click="${this.mute}" class="ph-fill ph-speaker-none"></i> 104 + <div @click="${this.setVolume}" class="progress-bar"> 105 + <progress max="100" value="${(this.$audio.value?.volume()??0)*100}"></progress> 106 + </div> 107 + <i @click="${this.fullVolume}" class="ph-fill ph-speaker-high"></i> 108 + </div> 109 + 110 + <footer> 111 + <div class="button-row"> 112 + <button 113 + title="Toggle favourite" 114 + data-enabled="${s?"t":"f"}" 115 + @click="${this.toggleFavourite}" 116 + > 117 + <i class="ph-${s?"fill":"bold"} ph-star"></i> 118 + </button> 119 + </div> 120 + </footer> 121 + </section> 122 + </section> 123 + </main> 124 + `}},Nt=I,Ct=I,Mt="db-artwork-controller";customElements.define(Mt,Ct);export{Ct as CLASS,Mt as NAME,Nt as default}; 125 + /*! Bundled license information: 126 + 127 + fast-average-color/dist/index.esm.js: 128 + (*! Fast Average Color | © 2025 Denis Seleznev | MIT License | https://github.com/fast-average-color/fast-average-color *) 129 + 130 + lit-html/node/directives/cache.js: 131 + (** 132 + * @license 133 + * Copyright 2017 Google LLC 134 + * SPDX-License-Identifier: BSD-3-Clause 135 + *) 136 + */ 137 + 138 + //# sourceMappingURL=./element.js.map
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/blur/artwork-controller/element.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/blur/artwork-controller/element.js.map
··· 1 + ../../../../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/themes/blur/artwork-controller/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/blur/artwork-controller/facet/index.html
··· 1 + ../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/blur/artwork-controller/facet/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/blur/artwork-controller/facet/index.html.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/themes/blur/artwork-controller/facet/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/blur/index.css
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/blur/index.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/blur/index.css.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/blur/index.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/blur/index.css.map
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/blur/index.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/blur/index.html
··· 1 + ../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/blur/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/blur/index.html.br
··· 1 + ../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/blur/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/blur/index.js
··· 1 + ../../../bafybeiezh4rgv7gk73o5dalfyilv5nfopezyvshtj5j7hrn23r4n27k7da/themes/loader/constituent/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/blur/index.js.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/blur/index.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/blur/index.js.map
··· 1 + ../../../bafybeia4lo67fqia3emjf54vzbrvfyao6fwndoc4rnqpav4yezowfg4j6e/themes/blur/index.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/blur/variables.css
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/blur/variables.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/blur/variables.css.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/blur/variables.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/blur/variables.css.map
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/blur/variables.css.map
+216
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/index.html
··· 1 + <html lang="en"> 2 + <head> 3 + <meta charset="UTF-8" /> 4 + 5 + <meta name="color-scheme" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + 8 + <meta name="media-controllable" /> 9 + <meta name="mobile-web-app-capable" content="yes" /> 10 + 11 + <title>Themes | Diffuse</title> 12 + 13 + <!-- Base --> 14 + <base href="../" /> 15 + 16 + <!-- Favicons & Mobile --> 17 + <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" /> 18 + <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" /> 19 + <link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png" /> 20 + <!-- TODO: <link rel="manifest" href="site.webmanifest" />--> 21 + <link rel="mask-icon" href="safari-pinned-tab.svg" color="#8a90a9" /> 22 + <meta name="msapplication-TileColor" content="#8a90a9" /> 23 + <meta name="theme-color" content="#8a90a9" /> 24 + 25 + <!-- Preloads --> 26 + 27 + <!-- Styles --> 28 + <link rel="stylesheet" href="styles/base.css" /> 29 + <link rel="stylesheet" href="styles/diffuse/page.css" /> 30 + <link rel="stylesheet" href="styles/diffuse/code-editor.css" /> 31 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/bold/style.css" /> 32 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/fill/style.css" /> 33 + </head> 34 + <body> 35 + <style> 36 + .construct, h2 { 37 + color: var(--accent); 38 + } 39 + </style> 40 + 41 + <header style="overflow: hidden"> 42 + <div> 43 + <div class="diffuse-logo-container diffuse-logo-container--condensed"> 44 + <a href="./" style="display: inline-block;"> 45 + <svg viewBox="0 0 902 134" width="160"> 46 + <title>Diffuse</title> 47 + <use 48 + xlink:href="images/diffuse-current.svg#diffuse" 49 + href="images/diffuse-current.svg#diffuse"></use> 50 + </svg> 51 + 52 + </a> 53 + </div> 54 + </div> 55 + <div class="dither-mask filler"> 56 + <div id="status--filler-container"> 57 + <span id="status"> 58 + <a href="/latest/" title="Upgrade to latest" class="animate-spin"> 59 + <i class="ph-bold ph-spinner"></i> 60 + </a> 61 + <a href="/chronicle/" title="Browse versions of Diffuse"> 62 + <i class="ph-fill ph-star-four"></i> 63 + </a> 64 + </span> 65 + 66 + </div> 67 + </div> 68 + </header> 69 + 70 + <main> 71 + 72 + <div class="nav-container"> 73 + <nav id="diffuse-nav"> 74 + <a href="dashboard/" class="button button--transparent button--border"> 75 + <span> 76 + <i class="ph-fill ph-person"></i> 77 + Your Diffuse 78 + </span> 79 + </a> 80 + 81 + <a href="guide/" class="button button--transparent button--border"> 82 + <span> 83 + <i class="ph-fill ph-book-open-text"></i> 84 + Guide 85 + </span> 86 + </a> 87 + 88 + <a href="featured/" class="button button--transparent button--border"> 89 + <span> 90 + <i class="ph-fill ph-sparkle"></i> 91 + Featured 92 + </span> 93 + </a> 94 + 95 + <a href="build/" class="button button--transparent button--border"> 96 + <span> 97 + <i class="ph-fill ph-hammer"></i> 98 + Build 99 + </span> 100 + </a> 101 + 102 + <div class="divider"></div> 103 + 104 + <a href="data/" class="button button--transparent button--border"> 105 + <span>Input & Output</span> 106 + </a> 107 + 108 + <a href="playback/" class="button button--transparent button--border"> 109 + <span>Playback</span> 110 + </a> 111 + 112 + <a href="browsing/" class="button button--transparent button--border"> 113 + <span>Browsing</span> 114 + </a> 115 + 116 + <a href="themes/" class="button button--border"> 117 + <span>Themes</span> 118 + </a> 119 + 120 + <a href="misc/" class="button button--transparent button--border"> 121 + <span> 122 + <i class="ph-fill ph-treasure-chest"></i> 123 + </span> 124 + </a> 125 + </nav> 126 + 127 + <button 128 + id="nav-overflow-btn" 129 + class="button button--transparent button--border" 130 + style="display: none; flex-shrink: 0" 131 + popovertarget="nav-overflow-menu" 132 + > 133 + <span class="with-icon"> 134 + <i class="ph-fill ph-dots-three-outline"></i> 135 + </span> 136 + </button> 137 + 138 + <div id="nav-overflow-menu" class="dropdown" popover></div> 139 + </div> 140 + 141 + 142 + <section> 143 + <div class="grid-filter"> 144 + <span class="grid-filter--label">Filter by</span> 145 + 146 + <button class="button--border button--tiny" data-filter="all">All</button> 147 + <button class="button--border button--tiny button--bg-twist-4 button--tr-twist-4 button--transparent" data-filter="prelude">Features</button> 148 + <button class="button--border button--tiny button--bg-twist-2 button--tr-twist-2 button--transparent" data-filter="interface">Interfaces</button> 149 + 150 + <div style="flex: 1"></div> 151 + 152 + <span class="grid-filter--label grid-filter--label-output">Userdata from</span> 153 + <span class="grid-filter--output"></span> 154 + </div> 155 + 156 + <ul class="grid" style="margin-top: var(--space-xs);"> 157 + 158 + 159 + <li 160 + class="grid-item" 161 + data-active-color="var(--accent-twist-2)" 162 + data-description="Windows 98 inspired theme with a classic Winamp skin for the audio player. The Winamp playlist is a combination of the queue's history, the track that's currently playing and the future queue items." 163 + data-name="Winamp" 164 + data-kind="interface" 165 + data-uri="diffuse://themes/winamp/facet/index.html" 166 + > 167 + <div 168 + class="grid-item__contents" 169 + style="--grid-item-color: var(--accent-twist-2)" 170 + > 171 + <div class="grid-item__title"> 172 + <a href="l/?path=themes%2Fwinamp%2Ffacet%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 173 + Winamp 174 + </a> 175 + <span style="flex: 1"></span> 176 + </div> 177 + <div class="list-description"> 178 + Windows 98 inspired theme with a classic Winamp skin for the audio player. The Winamp playlist is a combination of the queue's history, the track that's currently playing and the future queue items. 179 + </div> 180 + </div> 181 + </li> 182 + </ul> 183 + 184 + </section> 185 + 186 + </main> 187 + 188 + 189 + <!-- Import map --> 190 + <script type="importmap"> 191 + { 192 + "imports": { 193 + "~/": "./", 194 + 195 + "@awesome.me/webawesome/dist/": "./vendor/@awesome.me/webawesome/", 196 + "@awesome.me/webawesome/dist-cdn/": "./vendor/@awesome.me/webawesome/", 197 + "@phosphor-icons/web/": "./vendor/@phosphor-icons/web/", 198 + 199 + "@atcute/cbor": "./vendor/@atcute/cbor/index.js", 200 + "@atcute/tid": "./vendor/@atcute/tid/index.js", 201 + "idb-keyval": "./vendor/idb-keyval/index.js", 202 + "lit-html": "./vendor/lit-html/index.js", 203 + "throttle-debounce": "./vendor/throttle-debounce/index.js" 204 + } 205 + } 206 + </script> 207 + 208 + <!-- Make every touched URL available offline --> 209 + <do-offline></do-offline> 210 + <script src="components/orchestrator/offline/element.js" type="module"></script> 211 + 212 + <!-- Scripts --> 213 + <script src="common/pages/ppr.js" type="module"></script> 214 + <script src="common/pages/version-upgrade.js" type="module"></script> 215 + </body> 216 + </html>
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/index.html.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/98-extra.css
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/webamp/98-extra.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/98-extra.css.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/webamp/98-extra.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/98-extra.css.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/themes/winamp/98-extra.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/98-vars.css
··· 1 + ../../../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/themes/winamp/98-vars.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/98-vars.css.br
··· 1 + ../../../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/themes/winamp/98-vars.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/98-vars.css.map
··· 1 + ../../../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/themes/winamp/98-vars.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/browser/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/browser/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/browser/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/browser/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/browser/element.js.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/browser/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/browser/facet/index.html
··· 1 + ../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/browser/facet/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/browser/facet/index.html.br
··· 1 + ../../../../../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/themes/winamp/browser/facet/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/common/ui.js
··· 1 + ../../../../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/themes/winamp/common/ui.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/common/ui.js.br
··· 1 + ../../../../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/themes/winamp/common/ui.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/common/ui.js.map
··· 1 + ../../../../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/themes/winamp/common/ui.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/facet.css
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/webamp/facet.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/facet.css.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/webamp/facet.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/facet.css.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/themes/winamp/facet.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/facet/index.html
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/facet/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/facet/index.html.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/facet/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/fonts.css
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/webamp/fonts.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/fonts.css.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/webamp/fonts.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/fonts.css.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/themes/winamp/fonts.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/index.css
··· 1 + ../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/index.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/index.css.br
··· 1 + ../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/index.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/index.css.map
··· 1 + ../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/index.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/README/index.html
··· 1 + ../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/README/index.html
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/README/index.html.br
··· 1 + ../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/README/index.html.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/base-skin.css
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/base-skin.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/base-skin.css.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/base-skin.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/base-skin.css.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/base-skin.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/context-menu.css
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/context-menu.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/context-menu.css.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/context-menu.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/context-menu.css.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/context-menu.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/equalizer-window.css
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/equalizer-window.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/equalizer-window.css.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/equalizer-window.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/equalizer-window.css.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/equalizer-window.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/gen-window.css
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/gen-window.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/gen-window.css.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/gen-window.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/gen-window.css.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/gen-window.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/main-window.css
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/main-window.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/main-window.css.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/main-window.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/main-window.css.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/main-window.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/milkdrop-window.css
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/milkdrop-window.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/milkdrop-window.css.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/milkdrop-window.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/milkdrop-window.css.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/milkdrop-window.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/mini-time.css
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/mini-time.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/mini-time.css.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/mini-time.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/mini-time.css.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/mini-time.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/playlist-window.css
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/playlist-window.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/playlist-window.css.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/playlist-window.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/playlist-window.css.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/playlist-window.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/webamp.css
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/webamp.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/webamp.css.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/webamp.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/vendor/webamp.css.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/webamp.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/winamp/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/winamp/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/winamp/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/winamp/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/winamp/element.js.map
··· 1 + {"version":3,"sources":["/element.js"],"sourcesContent":["import {\n DiffuseElement,\n query,\n whenElementsDefined,\n} from \"~/common/element.js\";\nimport { computed, signal, untracked } from \"~/common/signal.js\";\n\n/**\n * @import {RenderArg} from \"~/common/element.d.ts\"\n *\n * @import {OutputElement} from \"~/components/output/types.d.ts\"\n * @import AudioEngine from \"~/components/engine/audio/element.js\"\n * @import QueueEngine from \"~/components/engine/queue/element.js\"\n * @import RepeatShuffleEngine from \"~/components/engine/repeat-shuffle/element.js\"\n */\n\n////////////////////////////////////////////\n// UI STATE\n////////////////////////////////////////////\n\nconst UI_STATE_KEY = \"themes/winamp/winamp/ui\";\n\n/** @returns {{ eqOpen: boolean, playlistOpen: boolean, milkdropOpen: boolean, eqOn: boolean, eqSliders: Record<string, number> | null, mainShade: boolean, eqShade: boolean, playlistShade: boolean, positions: Record<string, {x:number,y:number}> | null, sizes: Record<string, {width:number,height:number}> | null }} */\nfunction loadUiState() {\n try {\n return {\n eqOpen: true,\n playlistOpen: true,\n milkdropOpen: true,\n eqOn: false,\n eqSliders: null,\n mainShade: false,\n eqShade: false,\n playlistShade: false,\n positions: null,\n sizes: null,\n ...JSON.parse(localStorage.getItem(UI_STATE_KEY) ?? \"{}\"),\n };\n } catch {\n return { eqOpen: true, playlistOpen: true, milkdropOpen: true, eqOn: false, eqSliders: null, mainShade: false, eqShade: false, playlistShade: false, positions: null, sizes: null };\n }\n}\n\n////////////////////////////////////////////\n// EQ\n////////////////////////////////////////////\n\nconst EQ_BANDS = [60, 170, 310, 600, 1000, 3000, 6000, 12000, 14000, 16000];\n\n// EQ band at center (0dB): spriteNumber(50) = 14, spriteOffsets(14) = {x:0, y:1}\n// backgroundPosition = \"0px -65px\", handle top = (62-11) * (1 - 0.5) = 26px\n\n////////////////////////////////////////////\n// CONSTANTS\n////////////////////////////////////////////\n\n/**\n * Webamp's Nullsoft FFT — ported from webamp.bundle.js\n * Converts 1024 time-domain samples → 512 spectral magnitude values.\n */\nclass WinampFFT {\n static #TWO_PI = 6.2831853;\n static #HALF_PI = 1.5707963268;\n\n constructor() {\n const NFREQ = 1024; // samplesOut * 2\n this.#bitrev = this.#initBitRev(NFREQ);\n this.#cossint = this.#initCosSin(NFREQ);\n this.#envelope = this.#initEnvelope(1024, 1.0);\n this.#equalize = this.#initEqualize(NFREQ);\n this.#temp1 = new Float32Array(NFREQ);\n this.#temp2 = new Float32Array(NFREQ);\n }\n\n /** @type {number[]} */ #bitrev;\n /** @type {Float32Array[]} */ #cossint;\n /** @type {Float32Array} */ #envelope;\n /** @type {Float32Array} */ #equalize;\n /** @type {Float32Array} */ #temp1;\n /** @type {Float32Array} */ #temp2;\n\n /** @param {number} NFREQ */\n #initBitRev(NFREQ) {\n const t = Array.from({ length: NFREQ }, (_, i) => i);\n for (let i = 0, j = 0; i < NFREQ; i++) {\n if (j > i) { const tmp = t[i]; t[i] = t[j]; t[j] = tmp; }\n let m = NFREQ >> 1;\n while (m >= 1 && j >= m) { j -= m; m >>= 1; }\n j += m;\n }\n return t;\n }\n\n /** @param {number} NFREQ */\n #initCosSin(NFREQ) {\n const table = [];\n let d = 2;\n while (d <= NFREQ) {\n const theta = (-2.0 * Math.PI) / d;\n table.push(new Float32Array([Math.cos(theta), Math.sin(theta)]));\n d <<= 1;\n }\n return table;\n }\n\n /** @param {number} n @param {number} power */\n #initEnvelope(n, power) {\n const mult = (1.0 / n) * WinampFFT.#TWO_PI;\n return Float32Array.from({ length: n }, (_, i) =>\n Math.pow(0.5 + 0.5 * Math.sin(i * mult - WinampFFT.#HALF_PI), power)\n );\n }\n\n /** @param {number} NFREQ */\n #initEqualize(NFREQ) {\n const eq = new Float32Array(NFREQ / 2);\n let bias = 0.04;\n for (let i = 0; i < NFREQ / 2; i++) {\n const inv = (9.0 - bias) / (NFREQ / 2);\n eq[i] = Math.log10(1.0 + bias + (i + 1) * inv);\n bias /= 1.0025;\n }\n return eq;\n }\n\n /**\n * @param {Float32Array} inWave 1024 samples\n * @param {Float32Array} outSpec 512 output magnitudes\n */\n timeToFrequencyDomain(inWave, outSpec) {\n const real = this.#temp1;\n const imag = this.#temp2;\n const bitrev = this.#bitrev;\n const env = this.#envelope;\n\n for (let i = 0; i < real.length; i++) {\n const idx = bitrev[i];\n real[i] = idx < inWave.length ? inWave[idx] * env[idx] : 0;\n }\n imag.fill(0);\n\n let dftsize = 2, t = 0;\n while (dftsize <= real.length) {\n const [wpr, wpi] = this.#cossint[t];\n let wr = 1.0, wi = 0.0;\n const half = dftsize >> 1;\n for (let m = 0; m < half; m++) {\n for (let i = m; i < real.length; i += dftsize) {\n const j = i + half;\n const tr = wr * real[j] - wi * imag[j];\n const ti = wr * imag[j] + wi * real[j];\n real[j] = real[i] - tr; imag[j] = imag[i] - ti;\n real[i] += tr; imag[i] += ti;\n }\n const wt = wr;\n wr = wr * wpr - wi * wpi;\n wi = wi * wpr + wt * wpi;\n }\n dftsize <<= 1; t++;\n }\n\n const eq = this.#equalize;\n for (let i = 0; i < outSpec.length; i++) {\n outSpec[i] = Math.sqrt(real[i] * real[i] + imag[i] * imag[i]) * eq[i];\n }\n }\n}\n\nclass WinampElement extends DiffuseElement {\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" });\n }\n\n // SIGNALS - UI\n\n #marqueeOverride = signal(/** @type {string | null} */ (null));\n /** @type {ReturnType<typeof setTimeout> | undefined} */\n #marqueeOverrideTimeout = undefined;\n #marqueeCurrentOffset = 0;\n /** @type {HTMLElement | null} */\n #marqueeScroller = null;\n /** @type {HTMLElement | null} */\n #playlistHandle = null;\n\n // Web Audio / Visualizer\n /** @type {AudioContext | null} */\n #audioCtx = null;\n /** @type {GainNode | null} */\n #preampNode = null;\n /** @type {BiquadFilterNode[]} */\n #eqNodes = [];\n /** @type {AnalyserNode | null} */\n #analyser = null;\n /** @type {Map<string, MediaElementAudioSourceNode>} */\n #srcNodes = new Map();\n /** @type {number | undefined} */\n #visRAF = undefined;\n /** @type {ReturnType<typeof setInterval> | undefined} */\n #marqueeStepInterval = undefined;\n #marqueeText = signal(\"\");\n #selectedIndex = signal(/** @type {number | null} */ (null));\n #mainOpen = signal(true);\n #eqOpen = signal(true);\n #mainShade = signal(false);\n #eqShade = signal(false);\n #playlistShade = signal(false);\n #eqOn = signal(false);\n #eqSliders = signal({ preamp: 50, bands: /** @type {number[]} */ (Array(10).fill(50)) });\n #balance = signal(0);\n #stopped = signal(false);\n #seekingProgress = signal(/** @type {number | null} */ (null));\n #focusedWindow = signal(/** @type {\"main\" | \"eq\" | \"playlist\" | \"milkdrop\"} */ (\"main\"));\n #playlistOpen = signal(true);\n #milkdropOpen = signal(true);\n\n // Window positions — plain objects (not signals) so dragging doesn't\n // trigger re-renders, but the current value is always read on each render.\n #mainPos = { x: 0, y: 0 };\n #eqPos = { x: 0, y: 116 };\n #playlistPos = { x: 0, y: 232 };\n #playlistSize = { width: 275, height: 232 };\n #milkdropPos = { x: 275, y: 0 };\n #milkdropSize = { width: 275, height: 232 };\n\n // Butterchurn\n /** @type {any} */\n #butterchurn = null;\n /** @type {number | undefined} */\n #butterchurnRAF = undefined;\n /** @type {ReturnType<typeof setInterval> | undefined} */\n #butterchurnCycleInterval = undefined;\n /** @type {Array<any>} */\n #butterchurnPresetList = [];\n\n // SIGNALS - DEPENDENCIES\n\n $audio = signal(/** @type {AudioEngine | undefined} */ (undefined));\n $output = signal(/** @type {OutputElement | undefined} */ (undefined));\n $queue = signal(/** @type {QueueEngine | undefined} */ (undefined));\n $repeatShuffle = signal(\n /** @type {RepeatShuffleEngine | undefined} */ (undefined),\n );\n\n // SIGNALS - COMPUTED\n\n audio = computed(() => {\n const curr = this.$queue.value?.now();\n return curr ? this.$audio.value?.state(curr.id) : undefined;\n });\n\n currentTrack = computed(() => {\n const item = this.$queue.value?.now();\n if (!item) return undefined;\n const col = this.$output.value?.tracks.collection();\n if (!col || col.state !== \"loaded\") return undefined;\n return col.data.find((t) => t.id === item.id);\n });\n\n isPlaying = computed(() => {\n return this.$audio.value?.isPlaying();\n });\n\n // LIFECYCLE\n\n /**\n * @override\n */\n connectedCallback() {\n super.connectedCallback();\n\n /** @type {AudioEngine} */\n const audio = query(this, \"audio-engine-selector\");\n\n /** @type {OutputElement} */\n const output = query(this, \"output-selector\");\n\n /** @type {QueueEngine} */\n const queue = query(this, \"queue-engine-selector\");\n\n /** @type {RepeatShuffleEngine} */\n const repeatShuffle = query(this, \"repeat-shuffle-engine-selector\");\n\n whenElementsDefined({ audio, output, queue, repeatShuffle }).then(() => {\n this.$audio.value = audio;\n this.$output.value = output;\n this.$queue.value = queue;\n this.$repeatShuffle.value = repeatShuffle;\n\n this.effect(() => {\n const track = this.currentTrack();\n if (!track) return; // preserve last text during track transitions\n const aud = this.audio();\n\n const artist = (track.tags?.artist ?? \"\").toUpperCase();\n const title = (track.tags?.title ?? \"\").toUpperCase();\n const durSeconds = track.stats?.duration\n ? track.stats.duration / 1000\n : untracked(() => aud?.duration() ?? 0);\n const durMinutes = Math.floor(durSeconds / 60);\n const durSecs = Math.floor(durSeconds % 60);\n this.#marqueeText.value = `${artist} - ${title} (${durMinutes}:${\n durSecs.toString().padStart(2, \"0\")\n })`;\n this.#marqueeCurrentOffset = 0;\n });\n\n this.effect(() => {\n const audioId = this.$queue.value?.now()?.id;\n const playing = this.isPlaying();\n untracked(() => {\n if (audioId) this.#connectToAnalyser(audioId);\n if (playing) {\n this.#ensureAnalyser();\n this.#audioCtx?.resume();\n this.#startVisualizer();\n }\n });\n });\n });\n\n // UI State\n const ui = loadUiState();\n this.#eqOpen.value = ui.eqOpen;\n this.#eqOn.value = ui.eqOn;\n this.#mainShade.value = ui.mainShade;\n this.#eqShade.value = ui.eqShade;\n this.#playlistShade.value = ui.playlistShade;\n this.#playlistOpen.value = ui.playlistOpen;\n this.#milkdropOpen.value = ui.milkdropOpen;\n if (ui.eqSliders) {\n const s = ui.eqSliders;\n this.#eqSliders.value = {\n preamp: s[\"preamp\"] ?? 50,\n bands: EQ_BANDS.map((_, i) => s[`band_${i}`] ?? 50),\n };\n }\n\n if (ui.sizes) {\n if (ui.sizes.playlist) Object.assign(this.#playlistSize, ui.sizes.playlist);\n if (ui.sizes.milkdrop) Object.assign(this.#milkdropSize, ui.sizes.milkdrop);\n }\n\n if (ui.positions) {\n if (ui.positions.main) Object.assign(this.#mainPos, ui.positions.main);\n if (ui.positions.eq) Object.assign(this.#eqPos, ui.positions.eq);\n if (ui.positions.playlist) Object.assign(this.#playlistPos, ui.positions.playlist);\n if (ui.positions.milkdrop) Object.assign(this.#milkdropPos, ui.positions.milkdrop);\n } else {\n // Center the windows on startup\n const leftColH = 116 + 116 + this.#playlistSize.height;\n const milkdropOpen = this.#milkdropOpen.value;\n const totalW = milkdropOpen ? 275 + this.#milkdropSize.width : 275;\n const totalH = milkdropOpen ? Math.max(leftColH, this.#milkdropSize.height) : leftColH;\n const cx = Math.round((window.innerWidth - totalW) / 2);\n const cy = Math.round((window.innerHeight - totalH) / 2);\n this.#mainPos.x = cx;\n this.#mainPos.y = cy;\n this.#eqPos.x = cx;\n this.#eqPos.y = cy + 116;\n this.#playlistPos.x = cx;\n this.#playlistPos.y = cy + 232;\n this.#milkdropPos.x = cx + 275;\n this.#milkdropPos.y = cy;\n }\n\n this.effect(() => {\n if (!this.#milkdropOpen.value) {\n untracked(() => this.#stopButterchurn());\n return;\n }\n untracked(() => {\n requestAnimationFrame(() => {\n const canvas = this.root().querySelector(\"#milkdrop-canvas\");\n if (!(canvas instanceof HTMLCanvasElement)) return;\n if (!this.#butterchurn) {\n this.#initButterchurn(canvas);\n } else {\n this.#startButterchurn();\n }\n });\n });\n });\n\n this.forceRender();\n this.#marqueeScroller = this.root().querySelector(\"#marquee > div\");\n this.#playlistHandle = this.root().querySelector(\".playlist-scrollbar-handle\");\n requestAnimationFrame(() => {\n this.#drawEqGraph();\n this.#updatePlaylistHandle();\n });\n\n // Custom playlist scrollbar\n const playlistContent = this.root().querySelector(\".playlist-middle-center\");\n const playlistHandle = this.root().querySelector(\".playlist-scrollbar-handle\");\n const playlistScrollbar = this.root().querySelector(\".playlist-scrollbar\");\n if (playlistContent instanceof HTMLElement) {\n playlistContent.addEventListener(\"scroll\", () => this.#updatePlaylistHandle());\n }\n if (\n playlistHandle instanceof HTMLElement &&\n playlistScrollbar instanceof HTMLElement &&\n playlistContent instanceof HTMLElement\n ) {\n playlistHandle.addEventListener(\"mousedown\", (e) => {\n e.preventDefault();\n const TRACK_H = 13;\n const HANDLE_H = 18;\n const range = playlistScrollbar.clientHeight - HANDLE_H;\n const startY = e.clientY;\n const startTop = parseFloat(playlistHandle.style.top) || 0;\n const maxScroll = playlistContent.scrollHeight - playlistContent.clientHeight;\n /** @param {MouseEvent} mv */\n const onMove = (mv) => {\n const newTop = Math.max(0, Math.min(range, startTop + mv.clientY - startY));\n const rawScroll = (newTop / range) * maxScroll;\n playlistContent.scrollTop = Math.round(rawScroll / TRACK_H) * TRACK_H;\n };\n const onUp = () => {\n document.removeEventListener(\"mousemove\", onMove);\n document.removeEventListener(\"mouseup\", onUp);\n };\n document.addEventListener(\"mousemove\", onMove);\n document.addEventListener(\"mouseup\", onUp);\n });\n }\n\n this.#marqueeStepInterval = setInterval(() => {\n const text = untracked(\n () => this.#marqueeOverride.value ?? this.#marqueeText.value,\n );\n const MAX = WinampElement.#MARQUEE_MAX_LENGTH;\n const W = WinampElement.#CHAR_WIDTH;\n const SEP = WinampElement.#MARQUEE_SEPARATOR;\n if (text.length >= MAX) {\n const stringLength = (text.length + SEP.length) * W;\n this.#marqueeCurrentOffset = WinampElement.#marqueeMod(\n this.#marqueeCurrentOffset + W,\n stringLength,\n );\n } else {\n this.#marqueeCurrentOffset = 0;\n }\n if (!this.#marqueeScroller?.isConnected) {\n this.#marqueeScroller = this.root().querySelector(\"#marquee > div\");\n }\n if (this.#marqueeScroller) {\n this.#marqueeScroller.style.transform =\n `translateX(-${this.#marqueeCurrentOffset}px)`;\n }\n }, 220);\n\n // winamp-active press feedback + window focus via event delegation\n this.root().addEventListener(\"pointerdown\", (e) => {\n if (!(e.target instanceof HTMLElement)) return;\n // Window focus\n const win = e.target.closest(\"#main-window, #equalizer-window, #playlist-window, #playlist-window-shade, #milkdrop-window\");\n if (win instanceof HTMLElement) {\n if (win.id === \"main-window\") this.#focusedWindow.value = \"main\";\n else if (win.id === \"equalizer-window\") this.#focusedWindow.value = \"eq\";\n else if (win.id === \"milkdrop-window\") this.#focusedWindow.value = \"milkdrop\";\n else this.#focusedWindow.value = \"playlist\";\n }\n // Press feedback\n if (e.target.tagName !== \"DIV\" || !e.target.id) return;\n const el = e.target;\n el.classList.add(\"winamp-active\");\n const cleanup = () => {\n el.classList.remove(\"winamp-active\");\n document.removeEventListener(\"pointerup\", cleanup);\n };\n document.addEventListener(\"pointerup\", cleanup);\n });\n\n // Window dragging\n this.root().addEventListener(\"mousedown\", /** @type {EventListener} */ (this.#onWindowDragStart));\n }\n\n /** @override */\n disconnectedCallback() {\n clearInterval(this.#marqueeStepInterval);\n this.root().removeEventListener(\"mousedown\", /** @type {EventListener} */ (this.#onWindowDragStart));\n if (this.#visRAF !== undefined) {\n cancelAnimationFrame(this.#visRAF);\n this.#visRAF = undefined;\n }\n this.#stopButterchurn();\n }\n\n // WINDOW SNAPPING — ported from webamp/js/snapUtils.ts\n\n static #SNAP_DISTANCE = 15;\n\n /** @param {number} a @param {number} b */\n static #near(a, b) {\n return Math.abs(a - b) < WinampElement.#SNAP_DISTANCE;\n }\n\n /**\n * @param {{ x: number, y: number, width: number, height: number }} a\n * @param {{ x: number, y: number, width: number, height: number }} b\n */\n static #overlapX(a, b) {\n const D = WinampElement.#SNAP_DISTANCE;\n return a.x <= b.x + b.width + D && b.x <= a.x + a.width + D;\n }\n\n /**\n * @param {{ x: number, y: number, width: number, height: number }} a\n * @param {{ x: number, y: number, width: number, height: number }} b\n */\n static #overlapY(a, b) {\n const D = WinampElement.#SNAP_DISTANCE;\n return a.y <= b.y + b.height + D && b.y <= a.y + a.height + D;\n }\n\n /**\n * Returns snapped position of `a` toward `b`, if close enough.\n * @param {{ x: number, y: number, width: number, height: number }} a\n * @param {{ x: number, y: number, width: number, height: number }} b\n */\n static #snapTo(a, b) {\n const near = WinampElement.#near;\n let x, y;\n if (WinampElement.#overlapY(a, b)) {\n if (near(a.x, b.x + b.width)) x = b.x + b.width;\n else if (near(a.x + a.width, b.x)) x = b.x - a.width;\n else if (near(a.x, b.x)) x = b.x;\n else if (near(a.x + a.width, b.x + b.width)) x = b.x + b.width - a.width;\n }\n if (WinampElement.#overlapX(a, b)) {\n if (near(a.y, b.y + b.height)) y = b.y + b.height;\n else if (near(a.y + a.height, b.y)) y = b.y - a.height;\n else if (near(a.y, b.y)) y = b.y;\n else if (near(a.y + a.height, b.y + b.height)) y = b.y + b.height - a.height;\n }\n return { x, y };\n }\n\n /**\n * @param {{ x: number, y: number, width: number, height: number }} a\n * @param {{ x: number, y: number, width: number, height: number }[]} others\n */\n static #snapToMany(a, others) {\n let x, y;\n for (const b of others) {\n const s = WinampElement.#snapTo(a, b);\n x ??= s.x;\n y ??= s.y;\n }\n return { x, y };\n }\n\n /**\n * Two windows are \"attached\" if their edges are already touching (≤1px).\n * @param {{ x: number, y: number, width: number, height: number }} a\n * @param {{ x: number, y: number, width: number, height: number }} b\n */\n static #areTouching(a, b) {\n const T = 1;\n const hTouch = Math.abs(a.x - (b.x + b.width)) <= T || Math.abs(b.x - (a.x + a.width)) <= T;\n const vTouch = Math.abs(a.y - (b.y + b.height)) <= T || Math.abs(b.y - (a.y + a.height)) <= T;\n const oX = a.x < b.x + b.width + T && b.x < a.x + a.width + T;\n const oY = a.y < b.y + b.height + T && b.y < a.y + a.height + T;\n return (hTouch && oY) || (vTouch && oX);\n }\n\n // WINDOW DRAGGING & RESIZING\n\n /** @param {MouseEvent} e */\n #onWindowDragStart = (e) => {\n if (!(e.target instanceof HTMLElement)) return;\n\n // Resize handle takes priority\n if (e.target.id === \"playlist-resize-target\") {\n this.#onPlaylistResizeStart(e);\n return;\n }\n if (e.target.id === \"gen-resize-target\") {\n this.#onMilkdropResizeStart(e);\n return;\n }\n\n const draggable = e.target.closest(\".draggable\");\n if (!draggable) return;\n const win = draggable.closest(\n \"#main-window, #equalizer-window, #playlist-window, #milkdrop-window\",\n );\n if (!(win instanceof HTMLElement)) return;\n\n e.preventDefault();\n\n const allWindows = this.#windowEntries();\n const draggedEntry = allWindows.find((w) => w.el === win);\n if (!draggedEntry) return;\n\n // Only the main window drags attached windows along with it\n /** @type {Set<typeof allWindows[0]>} */\n const attached = new Set();\n if (win.id === \"main-window\") {\n const trace = (/** @type {typeof allWindows[0]} */ entry) => {\n for (const other of allWindows) {\n if (other === entry || other === draggedEntry || attached.has(other)) continue;\n if (WinampElement.#areTouching(entry.box(), other.box())) {\n attached.add(other);\n trace(other);\n }\n }\n };\n trace(draggedEntry);\n }\n\n const startMouseX = e.clientX;\n const startMouseY = e.clientY;\n const startPos = { x: draggedEntry.pos.x, y: draggedEntry.pos.y };\n const attachedStarts = [...attached].map((w) => ({ w, x: w.pos.x, y: w.pos.y }));\n const snapTargets = allWindows\n .filter((w) => w !== draggedEntry && !attached.has(w))\n .map((w) => w.box());\n\n /** @param {MouseEvent} mv */\n const onMove = (mv) => {\n const dx = mv.clientX - startMouseX;\n const dy = mv.clientY - startMouseY;\n const newX = startPos.x + dx;\n const newY = startPos.y + dy;\n\n const snapped = WinampElement.#snapToMany(\n { ...draggedEntry.box(), x: newX, y: newY },\n snapTargets,\n );\n const finalX = snapped.x ?? newX;\n const finalY = snapped.y ?? newY;\n\n draggedEntry.pos.x = finalX;\n draggedEntry.pos.y = finalY;\n win.style.left = `${finalX}px`;\n win.style.top = `${finalY}px`;\n\n const snapDx = finalX - newX;\n const snapDy = finalY - newY;\n for (const { w, x: sx, y: sy } of attachedStarts) {\n w.pos.x = sx + dx + snapDx;\n w.pos.y = sy + dy + snapDy;\n w.el.style.left = `${w.pos.x}px`;\n w.el.style.top = `${w.pos.y}px`;\n }\n };\n\n const onUp = () => {\n document.removeEventListener(\"mousemove\", onMove);\n document.removeEventListener(\"mouseup\", onUp);\n this.forceRender();\n this.#saveLayout();\n };\n\n document.addEventListener(\"mousemove\", onMove);\n document.addEventListener(\"mouseup\", onUp);\n };\n\n /** @param {MouseEvent} e */\n #onMilkdropResizeStart = (e) => {\n e.preventDefault();\n\n const milkdropEl = this.root().querySelector(\"#milkdrop-window\");\n if (!(milkdropEl instanceof HTMLElement)) return;\n\n const startMouseX = e.clientX;\n const startMouseY = e.clientY;\n const startWidth = this.#milkdropSize.width;\n const startHeight = this.#milkdropSize.height;\n const STEP_W = 25, STEP_H = 29, MIN_W = 275, MIN_H = 116;\n\n /** @param {MouseEvent} mv */\n const onMove = (mv) => {\n const newWidth = Math.max(\n MIN_W,\n startWidth + Math.round((mv.clientX - startMouseX) / STEP_W) * STEP_W,\n );\n const newHeight = Math.max(\n MIN_H,\n startHeight + Math.round((mv.clientY - startMouseY) / STEP_H) * STEP_H,\n );\n this.#milkdropSize.width = newWidth;\n this.#milkdropSize.height = newHeight;\n milkdropEl.style.width = `${newWidth}px`;\n milkdropEl.style.height = `${newHeight}px`;\n const canvas = this.root().querySelector(\"#milkdrop-canvas\");\n if (canvas instanceof HTMLCanvasElement) {\n const cw = canvas.clientWidth;\n const ch = canvas.clientHeight;\n canvas.width = cw;\n canvas.height = ch;\n this.#butterchurn?.setRendererSize(cw, ch);\n }\n };\n\n const onUp = () => {\n document.removeEventListener(\"mousemove\", onMove);\n document.removeEventListener(\"mouseup\", onUp);\n this.#saveLayout();\n };\n\n document.addEventListener(\"mousemove\", onMove);\n document.addEventListener(\"mouseup\", onUp);\n };\n\n /** @param {MouseEvent} e */\n #onPlaylistResizeStart = (e) => {\n e.preventDefault();\n\n const playlistEl = this.root().querySelector(\"#playlist-window\");\n if (!(playlistEl instanceof HTMLElement)) return;\n\n const startMouseX = e.clientX;\n const startMouseY = e.clientY;\n const startWidth = this.#playlistSize.width;\n const startHeight = this.#playlistSize.height;\n\n // Webamp resize segment: 25px wide, 29px tall\n const STEP_W = 25, STEP_H = 29, MIN_W = 275, MIN_H = 116;\n\n /** @param {MouseEvent} mv */\n const onMove = (mv) => {\n const newWidth = Math.max(\n MIN_W,\n startWidth + Math.round((mv.clientX - startMouseX) / STEP_W) * STEP_W,\n );\n const newHeight = Math.max(\n MIN_H,\n startHeight + Math.round((mv.clientY - startMouseY) / STEP_H) * STEP_H,\n );\n this.#playlistSize.width = newWidth;\n this.#playlistSize.height = newHeight;\n playlistEl.style.width = `${newWidth}px`;\n playlistEl.style.height = `${newHeight}px`;\n };\n\n const onUp = () => {\n document.removeEventListener(\"mousemove\", onMove);\n document.removeEventListener(\"mouseup\", onUp);\n this.#saveLayout();\n };\n\n document.addEventListener(\"mousemove\", onMove);\n document.addEventListener(\"mouseup\", onUp);\n };\n\n #updatePlaylistHandle() {\n if (!this.#playlistHandle?.isConnected) {\n this.#playlistHandle = this.root().querySelector(\".playlist-scrollbar-handle\");\n }\n const handle = this.#playlistHandle;\n const content = this.root().querySelector(\".playlist-middle-center\");\n const scrollbar = this.root().querySelector(\".playlist-scrollbar\");\n if (!handle || !(content instanceof HTMLElement) || !(scrollbar instanceof HTMLElement)) return;\n\n const HANDLE_H = 18;\n const range = Math.max(0, scrollbar.clientHeight - HANDLE_H);\n const scrollFraction = content.scrollHeight > content.clientHeight\n ? content.scrollTop / (content.scrollHeight - content.clientHeight)\n : 0;\n handle.style.top = `${scrollFraction * range}px`;\n }\n\n /**\n * Returns live box descriptors for all three windows.\n */\n #windowEntries() {\n const root = this.root();\n const ps = this.#playlistSize;\n return [\n {\n el: /** @type {HTMLElement} */ (root.querySelector(\"#main-window\")),\n pos: this.#mainPos,\n box: () => ({ x: this.#mainPos.x, y: this.#mainPos.y, width: 275, height: this.#mainShade.value ? 14 : 116 }),\n },\n {\n el: /** @type {HTMLElement} */ (root.querySelector(\"#equalizer-window\")),\n pos: this.#eqPos,\n box: () => ({ x: this.#eqPos.x, y: this.#eqPos.y, width: 275, height: this.#eqShade.value ? 14 : 116 }),\n },\n {\n el: /** @type {HTMLElement} */ (root.querySelector(\"#playlist-window\")),\n pos: this.#playlistPos,\n box: () => ({ x: this.#playlistPos.x, y: this.#playlistPos.y, width: ps.width, height: ps.height }),\n },\n {\n el: /** @type {HTMLElement} */ (root.querySelector(\"#milkdrop-window\")),\n pos: this.#milkdropPos,\n box: () => ({ x: this.#milkdropPos.x, y: this.#milkdropPos.y, width: this.#milkdropSize.width, height: this.#milkdropSize.height }),\n },\n ].filter((e) => e.el != null);\n }\n\n // MARQUEE\n\n static #MARQUEE_MAX_LENGTH = 31;\n static #MARQUEE_SEPARATOR = \" *** \";\n static #CHAR_WIDTH = 5;\n\n /** @param {number} n @param {number} m */\n static #marqueeMod(n, m) {\n return ((n % m) + m) % m;\n }\n\n /** @param {string} text */\n static #marqueeLoopText(text) {\n const MAX = WinampElement.#MARQUEE_MAX_LENGTH;\n return text.length >= MAX\n ? `${text}${WinampElement.#MARQUEE_SEPARATOR}${text}`\n : text.padEnd(MAX, \" \");\n }\n\n // SPECTRUM VISUALIZER\n\n // Webamp default viscolors[0..15]: y=0 top (black), y=2 loud (red), y=15 quiet (green)\n static #BAR_COLORS = [\n \"rgb(0,0,0)\", // 0 — black (never visible)\n \"rgb(24,33,41)\", // 1 — grid dot color (never visible with pushDown=2)\n \"rgb(239,49,16)\", // 2 — bright red (loud)\n \"rgb(206,41,16)\", // 3\n \"rgb(214,90,0)\", // 4\n \"rgb(214,102,0)\", // 5\n \"rgb(214,115,0)\", // 6\n \"rgb(198,123,8)\", // 7\n \"rgb(222,165,24)\", // 8\n \"rgb(214,181,33)\", // 9\n \"rgb(189,222,41)\", // 10\n \"rgb(148,222,33)\", // 11\n \"rgb(41,206,16)\", // 12\n \"rgb(50,190,16)\", // 13\n \"rgb(57,181,16)\", // 14\n \"rgb(49,156,8)\", // 15 — dim green (quiet)\n ];\n\n #ensureAnalyser() {\n if (this.#analyser) return;\n this.#audioCtx = new AudioContext();\n\n this.#preampNode = this.#audioCtx.createGain();\n this.#eqNodes = EQ_BANDS.map((freq) => {\n const f = /** @type {AudioContext} */ (this.#audioCtx).createBiquadFilter();\n f.type = \"peaking\";\n f.frequency.value = freq;\n f.Q.value = 1.0;\n f.gain.value = 0;\n return f;\n });\n this.#analyser = this.#audioCtx.createAnalyser();\n this.#analyser.fftSize = 1024;\n this.#analyser.smoothingTimeConstant = 0;\n\n // Chain: source → preamp → eq[0..9] → analyser → destination\n this.#preampNode.connect(this.#eqNodes[0]);\n for (let i = 0; i < this.#eqNodes.length - 1; i++) {\n this.#eqNodes[i].connect(this.#eqNodes[i + 1]);\n }\n this.#eqNodes[this.#eqNodes.length - 1].connect(this.#analyser);\n this.#analyser.connect(this.#audioCtx.destination);\n\n this.#applyEq();\n }\n\n /** @param {string} audioId */\n #connectToAnalyser(audioId) {\n if (this.#srcNodes.has(audioId)) return;\n const audioEl = this.$audio.value\n ?.querySelector(`de-audio-item[id=\"${audioId}\"]:not([preload]) audio`);\n if (!(audioEl instanceof HTMLAudioElement)) return;\n this.#ensureAnalyser();\n const src = /** @type {AudioContext} */ (this.#audioCtx)\n .createMediaElementSource(audioEl);\n src.connect(/** @type {GainNode} */ (this.#preampNode));\n this.#srcNodes.set(audioId, src);\n }\n\n #startVisualizer() {\n if (this.#visRAF !== undefined) return;\n const canvas = this.root().querySelector(\"#visualizer\");\n if (!(canvas instanceof HTMLCanvasElement)) return;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx || !this.#analyser) return;\n\n ctx.imageSmoothingEnabled = false;\n\n const MAX_WIDTH = 75;\n const FALL_RATE = 12 / 16;\n const PEAK_FALLOFF = 1.1;\n const analyser = this.#analyser;\n\n // Webamp FFT (Nullsoft implementation)\n const fft = new WinampFFT();\n const inWaveData = new Float32Array(1024);\n const outSpectralData = new Float32Array(512);\n const timeDomainBuf = new Uint8Array(1024);\n\n // Per-bar state (matches webamp's BarPaintHandler)\n const sample = new Float32Array(MAX_WIDTH);\n const saFalloff = new Float32Array(MAX_WIDTH);\n const saPeaks = new Int16Array(MAX_WIDTH);\n const saData2 = new Float32Array(MAX_WIDTH);\n const barPeak = new Float32Array(MAX_WIDTH);\n\n // Cached off-screen canvases — rebuilt when canvas dimensions change\n const bgCanvas = document.createElement(\"canvas\");\n const bgCtx = bgCanvas.getContext(\"2d\");\n const gradCanvas = document.createElement(\"canvas\");\n gradCanvas.width = 1;\n const gradCtx = gradCanvas.getContext(\"2d\");\n const peakCanvas = document.createElement(\"canvas\");\n peakCanvas.width = 1; peakCanvas.height = 1;\n const peakCtx = peakCanvas.getContext(\"2d\");\n if (peakCtx) {\n peakCtx.fillStyle = \"rgb(150,150,150)\";\n peakCtx.fillRect(0, 0, 1, 1);\n }\n\n let cachedH = 0;\n let cachedW = 0;\n\n /** @param {number} W @param {number} H */\n const rebuildCaches = (W, H) => {\n bgCanvas.width = W; bgCanvas.height = H;\n if (bgCtx) {\n bgCtx.fillStyle = \"rgb(0,0,0)\";\n bgCtx.fillRect(0, 0, W, H);\n bgCtx.fillStyle = \"rgb(24,33,41)\";\n for (let x = 0; x < W; x += 2)\n for (let y = 1; y < H; y += 2)\n bgCtx.fillRect(x, y, 1, 1);\n }\n gradCanvas.height = H;\n if (gradCtx) {\n const maxColorIdx = WinampElement.#BAR_COLORS.length - 1;\n for (let y = 0; y < H; y++) {\n const colorIdx = H > 1 ? Math.round((y / (H - 1)) * maxColorIdx) : 0;\n gradCtx.fillStyle = WinampElement.#BAR_COLORS[colorIdx] ?? \"rgb(0,0,0)\";\n gradCtx.fillRect(0, y, 1, 1);\n }\n }\n cachedH = H; cachedW = W;\n };\n\n const logMaxFreqIndex = Math.log10(512);\n const scale = 0.91;\n\n const step = () => {\n this.#visRAF = requestAnimationFrame(step);\n\n const W = canvas.width;\n const H = canvas.height;\n if (W !== cachedW || H !== cachedH) rebuildCaches(W, H);\n\n // Height-dependent constants\n const FULL_HEIGHT = 15; // reference height (16px canvas)\n const MAX_HEIGHT = H - 1;\n const HEIGHT_SCALE = MAX_HEIGHT / FULL_HEIGHT;\n const PUSH_DOWN = H >= 16 ? 2 : 0;\n\n // Lazy-connect current audio\n const audioId = this.$queue.value?.now()?.id;\n if (audioId) this.#connectToAnalyser(audioId);\n\n // Time-domain → FFT → spectral data\n analyser.getByteTimeDomainData(timeDomainBuf);\n for (let i = 0; i < 1024; i++) inWaveData[i] = (timeDomainBuf[i] - 128) / 24;\n fft.timeToFrequencyDomain(inWaveData, outSpectralData);\n\n for (let x = 0; x < MAX_WIDTH; x++) {\n const linIdx = (x / (MAX_WIDTH - 1)) * 511;\n const logIdx = Math.pow(10, (logMaxFreqIndex * x) / (MAX_WIDTH - 1));\n const si = (1.0 - scale) * linIdx + scale * logIdx;\n const i1 = Math.min(511, Math.floor(si));\n const i2 = Math.min(511, Math.ceil(si));\n sample[x] = i1 === i2\n ? outSpectralData[i1]\n : (1 - (si - i1)) * outSpectralData[i1] + (si - i1) * outSpectralData[i2];\n }\n\n ctx.drawImage(bgCanvas, 0, 0);\n\n for (let x = 0; x < MAX_WIDTH; x++) {\n const chunk = x & ~3;\n const saData = Math.min(\n (((sample[chunk] ?? 0) + (sample[chunk + 1] ?? 0) +\n (sample[chunk + 2] ?? 0) + (sample[chunk + 3] ?? 0)) / 4) * HEIGHT_SCALE,\n MAX_HEIGHT\n );\n\n if (saPeaks[x] >= MAX_HEIGHT * 256) saPeaks[x] = MAX_HEIGHT * 256;\n\n saFalloff[x] -= FALL_RATE;\n if (saFalloff[x] < saData) saFalloff[x] = saData;\n\n if (saPeaks[x] <= Math.round(saFalloff[x] * 256)) {\n saPeaks[x] = saFalloff[x] * 256;\n saData2[x] = 3.0;\n }\n barPeak[x] = saPeaks[x] / 256;\n saPeaks[x] -= Math.round(saData2[x]);\n saData2[x] *= PEAK_FALLOFF;\n if (saPeaks[x] < 0) saPeaks[x] = 0;\n if (Math.round(barPeak[x]) < 1) barPeak[x] = -3;\n\n if (x === chunk + 3) continue;\n\n const barHeight = Math.round(saFalloff[x]) - PUSH_DOWN;\n if (barHeight > 0) {\n ctx.drawImage(gradCanvas, 0, H - barHeight, 1, barHeight, x, H - barHeight, 1, barHeight);\n }\n\n const peakHeight = barPeak[x] + 1 - PUSH_DOWN;\n if (peakHeight > 0) {\n ctx.drawImage(peakCanvas, 0, 0, 1, 1, x, H - peakHeight, 1, 1);\n }\n }\n };\n\n step();\n }\n\n // EQ\n\n #applyEq() {\n if (!this.#preampNode || !this.#eqNodes.length) return;\n const { preamp, bands } = this.#eqSliders.value;\n const on = this.#eqOn.value;\n const preampDB = on ? (preamp - 50) / 50 * 12 : 0;\n this.#preampNode.gain.value = Math.pow(10, preampDB / 20);\n this.#eqNodes.forEach((node, i) => {\n node.gain.value = on ? (bands[i] - 50) / 50 * 12 : 0;\n });\n }\n\n #saveEqState() {\n const { preamp, bands } = this.#eqSliders.value;\n /** @type {Record<string, number>} */\n const sliders = { preamp };\n bands.forEach((v, i) => { sliders[`band_${i}`] = v; });\n const ui = loadUiState();\n localStorage.setItem(UI_STATE_KEY, JSON.stringify({ ...ui, eqOn: this.#eqOn.value, eqSliders: sliders }));\n }\n\n /**\n * @param {MouseEvent} e\n * @param {boolean} isPreamp\n * @param {number} bandIndex\n */\n #startSliderDrag(e, isPreamp, bandIndex = 0) {\n e.preventDefault();\n const RANGE = 52; // px travel for handle (63 - 11)\n const SNAP = 5; // webamp BAND_SNAP_DISTANCE\n const startY = e.clientY;\n const startValue = isPreamp ? this.#eqSliders.value.preamp : this.#eqSliders.value.bands[bandIndex];\n const startTop = Math.floor((1 - startValue / 100) * RANGE);\n\n const onMove = (/** @type {MouseEvent} */ mv) => {\n const newTop = Math.max(0, Math.min(RANGE, startTop + mv.clientY - startY));\n const raw = Math.round((1 - newTop / RANGE) * 100);\n const value = Math.abs(raw - 50) < SNAP ? 50 : raw;\n const cur = this.#eqSliders.value;\n if (isPreamp) {\n this.#eqSliders.value = { ...cur, preamp: value };\n } else {\n const bands = [...cur.bands];\n bands[bandIndex] = value;\n this.#eqSliders.value = { ...cur, bands };\n }\n this.#applyEq();\n this.#drawEqGraph();\n };\n\n const onUp = () => {\n document.removeEventListener(\"mousemove\", onMove);\n document.removeEventListener(\"mouseup\", onUp);\n this.#saveEqState();\n };\n document.addEventListener(\"mousemove\", onMove);\n document.addEventListener(\"mouseup\", onUp);\n }\n\n #toggleEqOn = () => {\n this.#eqOn.value = !this.#eqOn.value;\n this.#applyEq();\n this.#saveEqState();\n requestAnimationFrame(() => this.#drawEqGraph());\n };\n\n #resetEq = () => {\n this.#eqSliders.value = { preamp: 50, bands: Array(10).fill(50) };\n this.#applyEq();\n this.#saveEqState();\n requestAnimationFrame(() => this.#drawEqGraph());\n };\n\n // EQ GRAPH\n\n // EQ_GRAPH_LINE_COLORS: 1×19px gradient from webamp's default skin\n static #EQ_COLORS = [\n [211, 34, 27],\n [239, 82, 33],\n [239, 123, 33],\n [224, 146, 40],\n [224, 146, 40],\n [224, 146, 40],\n [224, 178, 40],\n [239, 220, 49],\n [239, 220, 49],\n [239, 220, 49],\n [210, 235, 53],\n [210, 235, 53],\n [164, 226, 56],\n [164, 226, 56],\n [137, 226, 48],\n [113, 205, 52],\n [90, 176, 44],\n [42, 154, 22],\n [42, 154, 22],\n ];\n\n #drawEqGraph() {\n const canvas = this.root().querySelector(\"#eqGraph\");\n if (!(canvas instanceof HTMLCanvasElement)) return;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return;\n\n const { bands } = this.#eqSliders.value;\n const H = canvas.height - 1; // 18\n const paddingLeft = 2;\n const totalW = 108; // 9 intervals × 12px\n\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n for (let x = 0; x <= totalW; x++) {\n // Interpolate between the 10 band values\n const t = (x / totalW) * 9;\n const i1 = Math.min(9, Math.floor(t));\n const i2 = Math.min(9, i1 + 1);\n const v = bands[i1] * (1 - (t - i1)) + bands[i2] * (t - i1);\n const y = Math.round((1 - v / 100) * H);\n const [r, g, b] = WinampElement.#EQ_COLORS[y] ?? WinampElement.#EQ_COLORS[0];\n ctx.fillStyle = `rgb(${r},${g},${b})`;\n ctx.fillRect(paddingLeft + x, y, 1, 1);\n }\n }\n\n // EVENTS\n\n /** @param {Event} e */\n #onVolumeInput = (e) => {\n if (!(e.target instanceof HTMLInputElement)) return;\n const volume = Number(e.target.value) / 100;\n this.$audio.value?.adjustVolume({ volume });\n\n this.#marqueeOverride.value = `Volume: ${Math.round(volume * 100)}%`;\n clearTimeout(this.#marqueeOverrideTimeout);\n this.#marqueeOverrideTimeout = setTimeout(() => {\n this.#marqueeOverride.value = null;\n }, 2000);\n };\n\n /** @param {Event} e */\n #onBalanceInput = (e) => {\n if (!(e.target instanceof HTMLInputElement)) return;\n this.#balance.value = Number(e.target.value);\n };\n\n /** @param {Event} e */\n #onPositionInput = (e) => {\n if (!(e.target instanceof HTMLInputElement)) return;\n const percentage = Number(e.target.value) / 100;\n this.#seekingProgress.value = percentage;\n const duration = this.audio()?.duration() ?? 0;\n const secs = Math.round(percentage * duration);\n const m = Math.floor(secs / 60);\n const s = secs % 60;\n this.#marqueeOverride.value = `Seek to: ${m}:${String(s).padStart(2, \"0\")} (${Math.round(percentage * 100)}%)`;\n clearTimeout(this.#marqueeOverrideTimeout);\n };\n\n /** @param {Event} e */\n #onPositionChange = (e) => {\n if (!(e.target instanceof HTMLInputElement)) return;\n const percentage = Number(e.target.value) / 100;\n const audioId = this.$queue.value?.now()?.id;\n if (audioId) this.$audio.value?.seek({ audioId, percentage });\n this.#marqueeOverride.value = null;\n setTimeout(() => { this.#seekingProgress.value = null; }, 250);\n };\n\n #playPause = () => {\n const audioId = this.$queue.value?.now()?.id;\n this.#stopped.value = false;\n if (this.isPlaying() && audioId) {\n this.$audio.value?.pause({ audioId });\n } else if (audioId) {\n this.$audio.value?.play({ audioId });\n }\n };\n\n #stop = () => {\n const audioId = this.$queue.value?.now()?.id;\n if (!audioId) return;\n if (this.isPlaying()) this.$audio.value?.pause({ audioId });\n this.$audio.value?.seek({ audioId, percentage: 0 });\n this.#stopped.value = true;\n };\n\n #openConnect = () => {\n window.open(\"l/?path=facets%2Fconnect%2Findex.html\", \"_blank\");\n };\n\n #next = () => {\n this.$queue.value?.shift();\n };\n\n #previous = () => {\n this.$queue.value?.unshift();\n };\n\n #toggleShuffle = () => {\n const rs = this.$repeatShuffle.value;\n if (rs) rs.setShuffle(!rs.shuffle());\n };\n\n #toggleRepeat = () => {\n const rs = this.$repeatShuffle.value;\n if (rs) rs.setRepeat(!rs.repeat());\n };\n\n #centerWindows = () => {\n const leftColH = 116 + 116 + this.#playlistSize.height;\n const milkdropOpen = this.#milkdropOpen.value;\n const totalW = milkdropOpen ? 275 + this.#milkdropSize.width : 275;\n const totalH = milkdropOpen ? Math.max(leftColH, this.#milkdropSize.height) : leftColH;\n const cx = Math.round((window.innerWidth - totalW) / 2);\n const cy = Math.round((window.innerHeight - totalH) / 2);\n this.#mainPos.x = cx; this.#mainPos.y = cy;\n this.#eqPos.x = cx; this.#eqPos.y = cy + 116;\n this.#playlistPos.x = cx; this.#playlistPos.y = cy + 232;\n this.#milkdropPos.x = cx + 275; this.#milkdropPos.y = cy;\n this.forceRender();\n this.#saveLayout();\n };\n\n #saveLayout = () => {\n const ui = loadUiState();\n localStorage.setItem(UI_STATE_KEY, JSON.stringify({\n ...ui,\n positions: {\n main: { ...this.#mainPos },\n eq: { ...this.#eqPos },\n playlist: { ...this.#playlistPos },\n milkdrop: { ...this.#milkdropPos },\n },\n sizes: {\n playlist: { ...this.#playlistSize },\n milkdrop: { ...this.#milkdropSize },\n },\n }));\n };\n\n #toggleMilkdrop = () => {\n this.#milkdropOpen.value = !this.#milkdropOpen.value;\n const ui = loadUiState();\n localStorage.setItem(UI_STATE_KEY, JSON.stringify({ ...ui, milkdropOpen: this.#milkdropOpen.value }));\n };\n\n /** @param {HTMLCanvasElement} canvas */\n #initButterchurn = async (canvas) => {\n this.#ensureAnalyser();\n if (!this.#audioCtx || !this.#analyser) return;\n\n const { default: butterchurn } = await import(\"butterchurn\");\n const w = canvas.clientWidth || canvas.offsetWidth || this.#milkdropSize.width;\n const h = canvas.clientHeight || canvas.offsetHeight || (this.#milkdropSize.height - 34);\n canvas.width = w;\n canvas.height = h;\n this.#butterchurn = butterchurn.createVisualizer(this.#audioCtx, canvas, { width: w, height: h });\n this.#butterchurn.connectAudio(this.#analyser);\n\n const { default: raw } = await import(\"butterchurn-presets/dist/base.js\");\n const presets = typeof raw?.default === \"object\" && raw.default !== null ? raw.default : raw;\n this.#butterchurnPresetList = Object.values(presets ?? {});\n this.#cyclePreset(0);\n\n this.#butterchurnCycleInterval = setInterval(() => this.#cyclePreset(5.7), 15000);\n this.#startButterchurn();\n };\n\n #startButterchurn = () => {\n if (this.#butterchurnRAF !== undefined) return;\n const step = () => {\n this.#butterchurnRAF = requestAnimationFrame(step);\n if (this.isPlaying()) this.#butterchurn?.render();\n };\n step();\n if (this.#butterchurnCycleInterval === undefined && this.#butterchurnPresetList.length) {\n this.#butterchurnCycleInterval = setInterval(() => this.#cyclePreset(5.7), 15000);\n }\n };\n\n /** @param {number} transitionSecs */\n #cyclePreset = (transitionSecs) => {\n const list = this.#butterchurnPresetList;\n if (!list.length) return;\n const preset = list[Math.floor(Math.random() * list.length)];\n this.#butterchurn?.loadPreset(preset, transitionSecs);\n };\n\n #stopButterchurn = () => {\n if (this.#butterchurnRAF !== undefined) {\n cancelAnimationFrame(this.#butterchurnRAF);\n this.#butterchurnRAF = undefined;\n }\n if (this.#butterchurnCycleInterval !== undefined) {\n clearInterval(this.#butterchurnCycleInterval);\n this.#butterchurnCycleInterval = undefined;\n }\n };\n\n #closeMain = () => {\n const audioId = this.$queue.value?.now()?.id;\n if (audioId && this.isPlaying()) this.$audio.value?.pause({ audioId });\n this.#mainOpen.value = false;\n };\n\n open = () => {\n this.#mainOpen.value = true;\n };\n\n #toggleEq = () => {\n this.#eqOpen.value = !this.#eqOpen.value;\n const ui = loadUiState();\n localStorage.setItem(\n UI_STATE_KEY,\n JSON.stringify({ ...ui, eqOpen: this.#eqOpen.value }),\n );\n };\n\n #toggleMainShade = () => {\n this.#mainShade.value = !this.#mainShade.value;\n const ui = loadUiState();\n localStorage.setItem(UI_STATE_KEY, JSON.stringify({ ...ui, mainShade: this.#mainShade.value }));\n };\n\n #toggleEqShade = () => {\n this.#eqShade.value = !this.#eqShade.value;\n const ui = loadUiState();\n localStorage.setItem(UI_STATE_KEY, JSON.stringify({ ...ui, eqShade: this.#eqShade.value }));\n if (!this.#eqShade.value) {\n requestAnimationFrame(() => this.#drawEqGraph());\n }\n };\n\n #togglePlaylistShade = () => {\n this.#playlistShade.value = !this.#playlistShade.value;\n const ui = loadUiState();\n localStorage.setItem(UI_STATE_KEY, JSON.stringify({ ...ui, playlistShade: this.#playlistShade.value }));\n };\n\n #togglePlaylist = () => {\n this.#playlistOpen.value = !this.#playlistOpen.value;\n const ui = loadUiState();\n localStorage.setItem(\n UI_STATE_KEY,\n JSON.stringify({ ...ui, playlistOpen: this.#playlistOpen.value }),\n );\n };\n\n /** @param {number} idx */\n #selectTrack = (idx) => {\n this.#selectedIndex.value = idx;\n };\n\n /** @param {number} idx */\n #playTrack = (idx) => {\n this.#selectedIndex.value = idx;\n const queue = this.$queue.value;\n if (!queue) return;\n const past = queue.past();\n const pastLen = past.length;\n if (idx === pastLen) return;\n if (idx < pastLen) {\n const stepsBack = pastLen - idx;\n for (let i = 0; i < stepsBack; i++) queue.unshift();\n return;\n }\n const stepsForward = idx - pastLen;\n for (let i = 0; i < stepsForward; i++) queue.shift();\n };\n\n // RENDER\n\n /**\n * @param {RenderArg} _\n */\n render({ html }) {\n requestAnimationFrame(() => this.#updatePlaylistHandle());\n\n const { preamp: preampVal, bands: bandVals } = this.#eqSliders.value;\n\n /**\n * @param {number} value 0–100\n * @param {boolean} isPreamp\n * @param {number} bandIndex\n */\n const bandSlider = (value, isPreamp, bandIndex = 0) => {\n const handleTop = Math.floor((1 - value / 100) * 52);\n const n = Math.round((value / 100) * 27);\n const sx = (n % 14) * 15;\n const sy = Math.floor(n / 14) * 65;\n return html`\n <div class=\"band\" style=\"background-position: -${sx}px -${sy}px; width: 14px; height: 63px; position: relative;\">\n <div\n class=\"slider-handle\"\n style=\"position: absolute; top: ${handleTop}px; width: 11px; height: 11px; margin-left: 1px;\"\n @mousedown=\"${(/** @type {MouseEvent} */ e) => this.#startSliderDrag(e, isPreamp, bandIndex)}\"\n ></div>\n </div>\n `;\n };\n\n const volume = this.$audio.value?.volume() ?? 1;\n const volumeSprite = Math.round(volume * 28);\n const volumeBgPos = `0 -${(volumeSprite - 1) * 15}px`;\n const volumePct = Math.round(volume * 100);\n const volumeClass = volumePct < 50 ? \"left\" : volumePct > 50 ? \"right\" : \"center\";\n const balance = this.#balance.value;\n const balanceClass = balance < 0 ? \"left\" : balance > 0 ? \"right\" : \"center\";\n\n const audio = this.audio();\n const focused = this.#focusedWindow.value;\n\n // Track metadata\n const track = this.currentTrack();\n const kbps = track?.stats?.bitrate ? Math.round(track.stats.bitrate / 1000) : null;\n const khz = track?.stats?.sampleRate ? Math.round(track.stats.sampleRate / 1000) : null;\n const channels = track?.stats?.numberOfChannels ?? null;\n const isStereo = channels !== null && channels >= 2;\n const isMono = channels === 1;\n const kbpsChars = kbps != null ? [...String(kbps)].map((c) =>\n html`<span class=\"character character-${c.charCodeAt(0)}\">${c}</span>`\n ) : [];\n const khzChars = khz != null ? [...String(khz)].map((c) =>\n html`<span class=\"character character-${c.charCodeAt(0)}\">${c}</span>`\n ) : [];\n\n const seekPct = this.#seekingProgress.value;\n const timeSeconds = seekPct !== null\n ? seekPct * (audio?.duration() ?? 0)\n : audio?.currentTime() ?? 0;\n const timeMinutes = Math.floor(timeSeconds / 60);\n const timeSecs = Math.floor(timeSeconds % 60);\n const miniTimeStr = `${String(timeMinutes).padStart(2, \"0\")}:${String(timeSecs).padStart(2, \"0\")}`;\n const miniTimeChars = [...miniTimeStr].map((c, i) =>\n c === \":\" ? null : html`<span class=\"character character-${c.charCodeAt(0)}\" style=\"left: ${i * 5}px\">${c}</span>`\n );\n const d = {\n mFirst: Math.floor(timeMinutes / 10),\n mSecond: timeMinutes % 10,\n sFirst: Math.floor(timeSecs / 10),\n sSecond: timeSecs % 10,\n };\n\n // Playlist\n const queueEl = this.$queue.value;\n const nowItem = queueEl?.now();\n const allItems = [\n ...(queueEl?.past() ?? []),\n ...(nowItem ? [nowItem] : []),\n ...(queueEl?.future() ?? []),\n ];\n const col = this.$output.value?.tracks.collection();\n const trackMap = col?.state === \"loaded\"\n ? new Map(col.data.map((t) => [t.id, t]))\n : new Map();\n const selectedIdx = this.#selectedIndex.value;\n const nowIdx = nowItem ? (queueEl?.past().length ?? 0) : -1;\n const playlistRows = allItems.map((item, i) => {\n const track = trackMap.get(item.id);\n const isCurrent = i === nowIdx;\n const isSelected = selectedIdx === i;\n const artist = track?.tags?.artist ?? \"\";\n const title = track?.tags?.title ?? \"\";\n const label = artist ? `${artist} - ${title}` : title;\n const durSec = track?.stats?.duration ? track.stats.duration / 1000 : 0;\n const dur = durSec > 0\n ? `${Math.floor(durSec / 60)}:${\n String(Math.floor(durSec % 60)).padStart(2, \"0\")\n }`\n : \"\";\n const color = isCurrent ? \"#FFFFFF\" : \"#00FF00\";\n const bg = isSelected && !isCurrent ? \"#0000FF\" : \"transparent\";\n return { idx: i, n: i + 1, label, dur, color, bg };\n });\n\n // Playlist running time display: currentTrackDuration/totalPlaylistDuration\n const nowTrackSec = (() => {\n const d = trackMap.get(nowItem?.id ?? \"\")?.stats?.duration;\n return d ? d / 1000 : 0;\n })();\n const totalSec = allItems.reduce((sum, item) => {\n const d = trackMap.get(item.id)?.stats?.duration;\n return sum + (d ? d / 1000 : 0);\n }, 0);\n /** @param {number} s */\n const fmtDur = (s) => {\n const h = Math.floor(s / 3600);\n const m = Math.floor((s % 3600) / 60);\n const sec = Math.floor(s % 60);\n return h > 0\n ? `${h}:${String(m).padStart(2, \"0\")}:${String(sec).padStart(2, \"0\")}`\n : `${m}:${String(sec).padStart(2, \"0\")}`;\n };\n const runningTimeStr = `${fmtDur(nowTrackSec)}/${fmtDur(totalSec)}`;\n const totalTimeChars = [...runningTimeStr].map((c) =>\n html`<span class=\"character character-${c.charCodeAt(0)}\">${c}</span>`\n );\n\n const isPaused = !!audio && !this.isPlaying() && !this.#stopped.value;\n\n // Playlist mini-time (current playback position)\n const playlistMiniTimeChars = [...miniTimeStr].map((c, i) =>\n c === \":\" ? null : html`<span class=\"character character-${c.charCodeAt(0)}\" style=\"left: ${i * 5}px\">${c}</span>`\n );\n\n // Playlist shade: current track title + time\n const nowTrack = trackMap.get(nowItem?.id ?? \"\");\n const shadeArtist = nowTrack?.tags?.artist ?? \"\";\n const shadeTitle = shadeArtist\n ? `${shadeArtist} - ${nowTrack?.tags?.title ?? \"\"}`.toLowerCase()\n : (nowTrack?.tags?.title ?? \"\").toLowerCase();\n const shadeTitleChars = [...shadeTitle].map((c) =>\n html`<span class=\"character character-${c.charCodeAt(0)}\">${c}</span>`\n );\n const shadeTimeChars = [...miniTimeStr].map((c, i) =>\n c === \":\" ? null : html`<span class=\"character character-${c.charCodeAt(0)}\" style=\"left: ${i * 5}px\">${c}</span>`\n );\n\n const activeMarquee = this.#marqueeOverride.value ??\n this.#marqueeText.value;\n const loopedMarquee = WinampElement.#marqueeLoopText(activeMarquee);\n\n const marqueeChars = [...loopedMarquee].map((char) =>\n html`\n <span class=\"character character-${char.toLowerCase().charCodeAt(\n 0,\n )}\">${char}</span>\n `\n );\n\n return html`\n <style>\n @import \"./themes/winamp/vendor/webamp.css\";\n @import \"./themes/winamp/vendor/gen-window.css\";\n\n #webamp .playlist-track-titles > div {\n padding-left: 3px;\n }\n\n #webamp .playlist-middle-center {\n scrollbar-width: none;\n }\n #webamp .playlist-middle-center::-webkit-scrollbar {\n display: none;\n }\n #webamp .playlist-middle {\n min-height: 0;\n }\n #webamp .playlist-scrollbar {\n position: absolute;\n top: 0;\n bottom: 0;\n right: 7px;\n width: 8px;\n }\n #webamp .playlist-scrollbar-handle {\n position: absolute;\n top: 0;\n width: 8px;\n height: 18px;\n }\n #webamp #main-window.shade,\n #webamp #equalizer-window.shade {\n overflow: hidden;\n }\n #webamp #main-window.shade #visualizer {\n clip-path: inset(0 38px 0 0);\n }\n #webamp #playlist-window .mini-time {\n left: 72px;\n right: auto;\n }\n #webamp .gen-top-title {\n margin-top: 4px;\n }\n #webamp .gen-middle-left,\n #webamp .gen-middle-right,\n #webamp .gen-bottom {\n position: relative;\n }\n #webamp #milkdrop-window .gen-middle-center {\n overflow: hidden;\n }\n </style>\n\n <div id=\"webamp\" style=\"display: ${this.#mainOpen.value ? \"block\" : \"none\"}\">\n <div\n id=\"main-window\"\n class=\"window ${this.#stopped.value ? \"stop\" : this.isPlaying() ? \"play\" : audio ? \"pause\" : \"stop\"}${this.#mainShade.value ? \" shade\" : \"\"}${focused === \"main\" ? \" selected\" : \"\"}\"\n style=\"position: absolute; top: ${this.#mainPos.y}px; left: ${this.#mainPos.x}px;\"\n >\n <div id=\"title-bar\" class=\"draggable\" @dblclick=\"${this.#toggleMainShade}\">\n <div id=\"option-context\" @click=\"${this.#toggleMilkdrop}\"><div id=\"option\"></div></div>\n <div id=\"minimize\"></div>\n <div id=\"shade\" @click=\"${this.#toggleMainShade}\"></div>\n ${this.#mainShade.value ? html`<div class=\"mini-time${isPaused ? \" blinking\" : \"\"}\">${miniTimeChars}</div>` : \"\"}\n <div id=\"close\" @click=\"${this.#closeMain}\"></div>\n </div>\n <div class=\"webamp-status\">\n <div id=\"clutter-bar\">\n <div id=\"button-o\" @click=\"${this.#centerWindows}\"></div>\n <div id=\"button-a\"></div>\n <div id=\"button-i\"></div>\n <div id=\"button-d\"></div>\n <div id=\"button-v\"></div>\n </div>\n <div id=\"play-pause\"></div>\n <div id=\"work-indicator\"></div>\n <div id=\"time\">\n <div id=\"minus-sign\"></div>\n <div id=\"minute-first-digit\" class=\"digit digit-${d\n .mFirst}\"></div>\n <div id=\"minute-second-digit\" class=\"digit digit-${d\n .mSecond}\"></div>\n <div id=\"second-first-digit\" class=\"digit digit-${d\n .sFirst}\"></div>\n <div id=\"second-second-digit\" class=\"digit digit-${d\n .sSecond}\"></div>\n </div>\n </div>\n <canvas id=\"visualizer\" width=\"76\" height=\"${this.#mainShade.value ? 5 : 16}\"></canvas>\n <div class=\"media-info\">\n <div id=\"marquee\">\n <div style=\"white-space: nowrap; will-change: transform; font-size: 0;\">\n ${marqueeChars}\n </div>\n </div>\n <div id=\"kbps\">${kbpsChars}</div>\n <div id=\"khz\">${khzChars}</div>\n <div class=\"mono-stereo\">\n <div id=\"mono\" class=\"${isMono ? \"selected\" : \"\"}\"></div>\n <div id=\"stereo\" class=\"${isStereo ? \"selected\" : \"\"}\"></div>\n </div>\n </div>\n <div id=\"volume\" style=\"background-position: ${volumeBgPos};\">\n <input\n type=\"range\"\n min=\"0\"\n max=\"100\"\n value=\"${volume * 100}\"\n @input=\"${this.#onVolumeInput}\"\n >\n </div>\n <input type=\"range\" id=\"balance\" min=\"-100\" max=\"100\" value=\"0\">\n <div class=\"windows\">\n <div id=\"equalizer-button\" class=\"${this.#eqOpen.value\n ? \"selected\"\n : \"\"}\" @click=\"${this.#toggleEq}\"></div>\n <div id=\"playlist-button\" class=\"${this.#playlistOpen.value\n ? \"selected\"\n : \"\"}\" @click=\"${this.#togglePlaylist}\"></div>\n </div>\n <input\n type=\"range\"\n id=\"position\"\n min=\"0\"\n max=\"100\"\n .value=\"${(this.#seekingProgress.value !== null\n ? this.#seekingProgress.value\n : this.audio()?.loadingState() === \"loaded\"\n ? (this.audio()?.progress() ?? 0)\n : 0) * 100}\"\n @input=\"${this.#onPositionInput}\"\n @change=\"${this.#onPositionChange}\"\n >\n <div class=\"actions\">\n <div id=\"previous\" @click=\"${this.#previous}\"></div>\n <div id=\"play\" @click=\"${this.#playPause}\"></div>\n <div id=\"pause\" @click=\"${this.#playPause}\"></div>\n <div id=\"stop\" @click=\"${this.#stop}\"></div>\n <div id=\"next\" @click=\"${this.#next}\"></div>\n </div>\n <div id=\"eject\" @click=\"${this.#openConnect}\"></div>\n <div class=\"shuffle-repeat\">\n <div id=\"shuffle\" class=\"${this.$repeatShuffle.value?.shuffle()\n ? \"selected\"\n : \"\"}\" @click=\"${this.#toggleShuffle}\"></div>\n <div id=\"repeat\" class=\"${this.$repeatShuffle.value?.repeat()\n ? \"selected\"\n : \"\"}\" @click=\"${this.#toggleRepeat}\"></div>\n </div>\n <a id=\"about\" title=\"About\" target=\"_blank\"></a>\n </div>\n\n <div\n id=\"equalizer-window\"\n class=\"window${this.#eqShade.value ? \" shade\" : \"\"}${focused === \"eq\" ? \" selected\" : \"\"}\"\n style=\"position: absolute; top: ${this.#eqPos.y}px; left: ${this.#eqPos.x}px; display: ${this.#eqOpen.value ? \"block\" : \"none\"};\"\n >\n ${this.#eqShade.value ? html`\n <div class=\"draggable\" style=\"width: 100%; height: 100%;\" @dblclick=\"${this.#toggleEqShade}\">\n <div id=\"equalizer-shade\" @click=\"${this.#toggleEqShade}\"></div>\n <div id=\"equalizer-close\" @click=\"${this.#toggleEq}\"></div>\n <input type=\"range\" id=\"equalizer-volume\" class=\"${volumeClass}\" min=\"0\" max=\"100\" value=\"${volumePct}\" @input=\"${this.#onVolumeInput}\">\n <input type=\"range\" id=\"equalizer-balance\" class=\"${balanceClass}\" min=\"-100\" max=\"100\" value=\"${balance}\" @input=\"${this.#onBalanceInput}\">\n </div>\n ` : html`\n <div class=\"equalizer-top title-bar draggable\" @dblclick=\"${this.#toggleEqShade}\">\n <div id=\"equalizer-shade\" @click=\"${this.#toggleEqShade}\"></div>\n <div id=\"equalizer-close\" @click=\"${this.#toggleEq}\"></div>\n </div>\n <div id=\"on\" class=\"${this.#eqOn.value ? \"selected\" : \"\"}\" @click=\"${this.#toggleEqOn}\"></div>\n <div id=\"auto\" @click=\"${this.#resetEq}\"></div>\n <canvas id=\"eqGraph\" width=\"113\" height=\"19\"></canvas>\n <div id=\"presets-context\"><div id=\"presets\"></div></div>\n <div id=\"preamp\">${bandSlider(preampVal, true)}</div>\n <div id=\"preamp-line\"></div>\n <div id=\"plus12db\"></div>\n <div id=\"zerodb\"></div>\n <div id=\"minus12db\"></div>\n ${EQ_BANDS.map((hz, i) =>\n html`<div id=\"band-${hz}\">${bandSlider(bandVals[i], false, i)}</div>`\n )}\n `}\n </div>\n\n ${this.#playlistShade.value && this.#playlistOpen.value ? html`\n <div\n id=\"playlist-window-shade\"\n class=\"window draggable${focused === \"playlist\" ? \" selected\" : \"\"}\"\n style=\"position: absolute; top: ${this.#playlistPos.y}px; left: ${this.#playlistPos.x}px; width: ${this.#playlistSize.width}px;\"\n >\n <div class=\"left\">\n <div class=\"right draggable\">\n <div id=\"playlist-shade-track-title\">${shadeTitleChars}</div>\n <div id=\"playlist-shade-time\">${shadeTimeChars}</div>\n <div id=\"playlist-shade-button\" @click=\"${this.#togglePlaylistShade}\"></div>\n <div id=\"playlist-close-button\" @click=\"${this.#togglePlaylist}\"></div>\n </div>\n </div>\n </div>\n ` : \"\"}\n\n <div\n id=\"playlist-window\"\n class=\"window${focused === \"playlist\" ? \" selected\" : \"\"}\"\n style=\"position: absolute; top: ${this.#playlistPos.y}px; left: ${this.#playlistPos.x}px; height: ${this.#playlistSize.height}px; width: ${this.#playlistSize.width}px; display: ${this.#playlistOpen.value && !this.#playlistShade.value ? \"flex\" : \"none\"};\"\n >\n <div class=\"playlist-top draggable\" @dblclick=\"${this.#togglePlaylistShade}\">\n <div class=\"playlist-top-left draggable\"></div>\n <div class=\"playlist-top-left-fill draggable\"></div>\n <div class=\"playlist-top-title draggable\"></div>\n <div class=\"playlist-top-right-fill draggable\"></div>\n <div class=\"playlist-top-right draggable\">\n <div id=\"playlist-shade-button\" @click=\"${this.#togglePlaylistShade}\"></div>\n <div id=\"playlist-close-button\" @click=\"${this.#togglePlaylist}\"></div>\n </div>\n </div>\n <div class=\"playlist-middle\">\n <div class=\"playlist-middle-left\"></div>\n <div\n class=\"playlist-middle-center\"\n style=\"background-color: #000000; overflow-y: auto; font-family: Arial, sans-serif;\"\n >\n <div class=\"playlist-tracks\">\n <div class=\"playlist-track-titles\">\n ${playlistRows.map((r) =>\n html`\n <div\n class=\"track-cell\"\n style=\"color: ${r.color}; background-color: ${r.bg};\"\n @click=\"${() => this.#selectTrack(r.idx)}\"\n @dblclick=\"${() => this.#playTrack(r.idx)}\"\n >\n ${r.n}. ${r.label}\n </div>\n `\n )}\n </div>\n <div class=\"playlist-track-durations\">\n ${playlistRows.map((r) =>\n html`\n <div\n class=\"track-cell\"\n style=\"color: ${r.color}; background-color: ${r.bg};\"\n @click=\"${() => this.#selectTrack(r.idx)}\"\n @dblclick=\"${() => this.#playTrack(r.idx)}\"\n >\n ${r.dur}\n </div>\n `\n )}\n </div>\n </div>\n </div>\n <div class=\"playlist-middle-right\">\n <div class=\"playlist-scrollbar\">\n <div class=\"playlist-scrollbar-handle\"></div>\n </div>\n </div>\n </div>\n <div class=\"playlist-bottom\">\n <div class=\"playlist-bottom-left\">\n <div id=\"playlist-add-menu\" class=\"playlist-menu\" @click=\"${this.#openConnect}\"></div>\n <div id=\"playlist-remove-menu\" class=\"playlist-menu\"></div>\n <div id=\"playlist-selection-menu\" class=\"playlist-menu\"></div>\n <div id=\"playlist-misc-menu\" class=\"playlist-menu\"></div>\n </div>\n <div class=\"playlist-bottom-center\"></div>\n <div class=\"playlist-bottom-right\">\n <div class=\"playlist-running-time-display draggable\">${totalTimeChars}</div>\n <div class=\"mini-time${isPaused ? \" blinking\" : \"\"}\">${playlistMiniTimeChars}</div>\n <div class=\"playlist-action-buttons\">\n <div class=\"playlist-previous-button\" @click=\"${this.#previous}\"></div>\n <div class=\"playlist-play-button\" @click=\"${this.#playPause}\"></div>\n <div class=\"playlist-pause-button\" @click=\"${this.#playPause}\"></div>\n <div class=\"playlist-stop-button\" @click=\"${this.#stop}\"></div>\n <div class=\"playlist-next-button\" @click=\"${this.#next}\"></div>\n <div class=\"playlist-eject-button\" @click=\"${this.#openConnect}\"></div>\n </div>\n <div id=\"playlist-list-menu\" class=\"playlist-menu\"></div>\n <div id=\"playlist-resize-target\"></div>\n </div>\n </div>\n </div>\n\n <div\n id=\"milkdrop-window\"\n class=\"window gen-window${this.#focusedWindow.value === \"milkdrop\" ? \" selected\" : \"\"}\"\n style=\"position: absolute; top: ${this.#milkdropPos.y}px; left: ${this.#milkdropPos.x}px; width: ${this.#milkdropSize.width}px; height: ${this.#milkdropSize.height}px; display: ${this.#milkdropOpen.value ? \"flex\" : \"none\"};\"\n >\n <div class=\"gen-top draggable\">\n <div class=\"gen-top-left draggable\"></div>\n <div class=\"gen-top-left-fill draggable\"></div>\n <div class=\"gen-top-left-end draggable\"></div>\n <div class=\"gen-top-title draggable\">\n ${\"MILKDROP\".split(\"\").map((c) => html`<div class=\"draggable gen-text-letter gen-text-${c.toLowerCase()}\"></div>`)}\n </div>\n <div class=\"gen-top-right-end draggable\"></div>\n <div class=\"gen-top-right-fill draggable\"></div>\n <div class=\"gen-top-right draggable\">\n <div class=\"gen-close selected\" @click=\"${this.#toggleMilkdrop}\"></div>\n </div>\n </div>\n <div class=\"gen-middle\">\n <div class=\"gen-middle-left draggable\">\n <div class=\"gen-middle-left-bottom draggable\"></div>\n </div>\n <div class=\"gen-middle-center\" style=\"background: #000;\">\n <canvas id=\"milkdrop-canvas\" style=\"position: absolute; inset: 0; width: 100%; height: 100%;\"></canvas>\n </div>\n <div class=\"gen-middle-right draggable\">\n <div class=\"gen-middle-right-bottom draggable\"></div>\n </div>\n </div>\n <div class=\"gen-bottom draggable\">\n <div class=\"gen-bottom-left draggable\"></div>\n <div class=\"gen-bottom-right draggable\">\n <div id=\"gen-resize-target\"></div>\n </div>\n </div>\n </div>\n\n </div>\n `;\n }\n}\n\nexport default WinampElement;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = WinampElement;\nexport const NAME = \"dtw-winamp\";\n\ncustomElements.define(NAME, WinampElement);\n"],"mappings":"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","names":["UI_STATE_KEY","loadUiState","__name","EQ_BANDS","WinampFFT","_WinampFFT","#TWO_PI","#HALF_PI","#bitrev","#initBitRev","#cossint","#initCosSin","#envelope","#initEnvelope","#equalize","#initEqualize","#temp1","#temp2","NFREQ","t","_","i","j","tmp","m","table","d","theta","n","power","mult","eq","bias","inv","inWave","outSpec","real","imag","bitrev","env","idx","dftsize","wpr","wpi","wr","wi","half","tr","ti","wt","WinampElement","_WinampElement","DiffuseElement","#marqueeOverride","signal","#marqueeOverrideTimeout","#marqueeCurrentOffset","#marqueeScroller","#playlistHandle","#audioCtx","#preampNode","#eqNodes","#analyser","#srcNodes","#visRAF","#marqueeStepInterval","#marqueeText","#selectedIndex","#mainOpen","#eqOpen","#mainShade","#eqShade","#playlistShade","#eqOn","#eqSliders","#balance","#stopped","#seekingProgress","#focusedWindow","#playlistOpen","#milkdropOpen","#mainPos","#eqPos","#playlistPos","#playlistSize","#milkdropPos","#milkdropSize","#butterchurn","#butterchurnRAF","#butterchurnCycleInterval","#butterchurnPresetList","computed","curr","item","col","audio","query","output","queue","repeatShuffle","whenElementsDefined","track","aud","artist","title","durSeconds","untracked","durMinutes","durSecs","audioId","playing","#connectToAnalyser","#ensureAnalyser","#startVisualizer","ui","s","leftColH","milkdropOpen","totalW","totalH","cx","cy","#stopButterchurn","canvas","#startButterchurn","#initButterchurn","#drawEqGraph","#updatePlaylistHandle","playlistContent","playlistHandle","playlistScrollbar","e","TRACK_H","range","startY","startTop","maxScroll","onMove","mv","rawScroll","onUp","text","MAX","#MARQUEE_MAX_LENGTH","W","#CHAR_WIDTH","SEP","#MARQUEE_SEPARATOR","stringLength","#marqueeMod","win","el","cleanup","#onWindowDragStart","#SNAP_DISTANCE","#near","a","b","#overlapX","D","#overlapY","#snapTo","near","x","y","#snapToMany","others","#areTouching","hTouch","vTouch","oX","oY","#onPlaylistResizeStart","#onMilkdropResizeStart","draggable","allWindows","#windowEntries","draggedEntry","w","attached","trace","entry","other","startMouseX","startMouseY","startPos","attachedStarts","snapTargets","dx","dy","newX","newY","snapped","finalX","finalY","snapDx","snapDy","sx","sy","#saveLayout","milkdropEl","startWidth","startHeight","STEP_W","STEP_H","MIN_W","MIN_H","newWidth","newHeight","cw","ch","playlistEl","handle","content","scrollbar","scrollFraction","root","ps","#marqueeLoopText","#BAR_COLORS","freq","f","#applyEq","audioEl","src","ctx","MAX_WIDTH","FALL_RATE","PEAK_FALLOFF","analyser","fft","inWaveData","outSpectralData","timeDomainBuf","sample","saFalloff","saPeaks","saData2","barPeak","bgCanvas","bgCtx","gradCanvas","gradCtx","peakCanvas","peakCtx","cachedH","cachedW","rebuildCaches","H","maxColorIdx","colorIdx","logMaxFreqIndex","scale","step","FULL_HEIGHT","MAX_HEIGHT","HEIGHT_SCALE","PUSH_DOWN","linIdx","logIdx","si","i1","i2","chunk","saData","barHeight","peakHeight","preamp","bands","on","preampDB","node","#saveEqState","sliders","v","#startSliderDrag","isPreamp","bandIndex","RANGE","SNAP","startValue","newTop","raw","value","cur","#toggleEqOn","#resetEq","#EQ_COLORS","paddingLeft","r","g","#onVolumeInput","volume","#onBalanceInput","#onPositionInput","percentage","duration","secs","#onPositionChange","#playPause","#stop","#openConnect","#next","#previous","#toggleShuffle","rs","#toggleRepeat","#centerWindows","#toggleMilkdrop","butterchurn","h","presets","#cyclePreset","transitionSecs","list","preset","#closeMain","#toggleEq","#toggleMainShade","#toggleEqShade","#togglePlaylistShade","#togglePlaylist","#selectTrack","#playTrack","pastLen","stepsBack","stepsForward","html","preampVal","bandVals","bandSlider","handleTop","volumeBgPos","volumePct","volumeClass","balance","balanceClass","focused","kbps","khz","channels","isStereo","isMono","kbpsChars","c","khzChars","seekPct","timeSeconds","timeMinutes","timeSecs","miniTimeStr","miniTimeChars","queueEl","nowItem","allItems","trackMap","selectedIdx","nowIdx","playlistRows","isCurrent","isSelected","label","durSec","dur","color","bg","nowTrackSec","totalSec","sum","fmtDur","sec","totalTimeChars","isPaused","playlistMiniTimeChars","nowTrack","shadeArtist","shadeTitleChars","shadeTimeChars","activeMarquee","marqueeChars","char","hz","element_default","CLASS","NAME"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/themes/winamp/winamp/element.js.map"}
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/window-manager/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/window-manager/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/window-manager/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/window-manager/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/window-manager/element.js.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/window-manager/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/window/element.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/window/element.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/window/element.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/window/element.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/themes/winamp/window/element.js.map
··· 1 + ../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/themes/winamp/window/element.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/98.css
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/vendor/98.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/98.css.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/vendor/98.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/98.css.map
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/vendor/98.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@atcute/cbor/index.js
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/vendor/@atcute/cbor/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@atcute/cbor/index.js.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/vendor/@atcute/cbor/index.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@atcute/cbor/index.js.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/vendor/@atcute/cbor/index.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@atcute/tid/index.js
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/vendor/@atcute/tid/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@atcute/tid/index.js.br
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/vendor/@atcute/tid/index.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@atcute/tid/index.js.map
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/vendor/@atcute/tid/index.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.224Y6VFZ.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.224Y6VFZ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.25MNBYIM.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.25MNBYIM.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.25NQ7Q57.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.25NQ7Q57.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.26QE47KB.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.26QE47KB.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.2BXLTQVW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.2BXLTQVW.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.2HEFI57S.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.2HEFI57S.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.2HSHEUB6.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.2HSHEUB6.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.2JWRV665.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.2JWRV665.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.2KZDHIGH.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.2KZDHIGH.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.2LCUCOAP.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.2LCUCOAP.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.2LXKNNNE.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.2LXKNNNE.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.2N4IEYIE.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.2N4IEYIE.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.2PPJ7PQH.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.2PPJ7PQH.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.2PWIIYRH.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.2PWIIYRH.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.2RF2MKWI.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.2RF2MKWI.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.2SVFXWQ3.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.2SVFXWQ3.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.2UDUPMFW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.2UDUPMFW.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.33G4LE7T.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.33G4LE7T.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.346V4PTX.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.346V4PTX.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.37LBVLGM.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.37LBVLGM.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.3KBWXBDY.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.3KBWXBDY.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.3MSWQ3RG.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.3MSWQ3RG.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.3NKIHICW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.3NKIHICW.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.3PFZGTAJ.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.3PFZGTAJ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.3PKQGQOJ.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.3PKQGQOJ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.3V4ARLUJ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.3V4ARLUJ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.3XPJKXEA.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.3XPJKXEA.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.3YYMF6GR.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.3YYMF6GR.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.3ZKWV7KX.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.3ZKWV7KX.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.4BS7GHFD.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.4BS7GHFD.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.4VXUYGRW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.4VXUYGRW.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.4YAZU4IR.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.4YAZU4IR.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.4YO4UQSB.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.4YO4UQSB.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.4ZAKP7NY.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.4ZAKP7NY.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.52WA2DJO.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.52WA2DJO.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.5AVTITY5.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.5AVTITY5.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.5JZ3O7VS.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.5JZ3O7VS.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.5KZ2OOTU.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.5KZ2OOTU.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.5RT6FRGZ.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.5RT6FRGZ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.5WM5WN7Q.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.5WM5WN7Q.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.62KZ4YOB.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.62KZ4YOB.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.67FTCK4E.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.67FTCK4E.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.6ELKDWMF.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.6ELKDWMF.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.6GLHUJOZ.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.6GLHUJOZ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.6GZW7A44.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.6GZW7A44.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.6SNQOYNK.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.6SNQOYNK.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.6WFYAIVE.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.6WFYAIVE.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.7BXWDFHV.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.7BXWDFHV.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.7GET6FFQ.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.7GET6FFQ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.7GZL6M3M.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.7GZL6M3M.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.7OBLIRXR.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.7OBLIRXR.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.7V5IXQH7.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.7V5IXQH7.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.AG44H7MD.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.AG44H7MD.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.AHGNBJDL.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.AHGNBJDL.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.AIIMJL75.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.AIIMJL75.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.AJDO4JA4.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.AJDO4JA4.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.AN55MWWK.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.AN55MWWK.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.B2NR2SDE.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.B2NR2SDE.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.B32RACHV.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.B32RACHV.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.BFXWLI4G.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.BFXWLI4G.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.BJHGYDMM.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.BJHGYDMM.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.BKE5EYM3.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.BKE5EYM3.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.BMO76VKZ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.BMO76VKZ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.BQNDCXAL.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.BQNDCXAL.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.BRE7BVFH.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.BRE7BVFH.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.C2QHQYCZ.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.C2QHQYCZ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.CAMEY652.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.CAMEY652.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.CDXMMGZY.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.CDXMMGZY.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.CLPSCLGS.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.CLPSCLGS.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.CNH6RYYS.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.CNH6RYYS.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.CQLRXX2P.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.CQLRXX2P.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.CSJW4KKV.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.CSJW4KKV.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.DBMMBXIQ.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.DBMMBXIQ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.DNBJR3U4.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.DNBJR3U4.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.DOFHHKB4.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.DOFHHKB4.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.DP5YIFD7.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.DP5YIFD7.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.DQOIFYPE.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.DQOIFYPE.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.DR66HKSC.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.DR66HKSC.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.EAVEURZ5.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.EAVEURZ5.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.ECFPM6MU.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.ECFPM6MU.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.EF25YJJE.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.EF25YJJE.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.EJKCAJIP.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.EJKCAJIP.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.EL5ULUOC.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.EL5ULUOC.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.F25QOBDY.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.F25QOBDY.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.F4GQ7D5O.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.F4GQ7D5O.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.FDYDBGOC.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.FDYDBGOC.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.FLK7JXPG.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.FLK7JXPG.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.FSRXYGSW.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.FSRXYGSW.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.FUDLASS2.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.FUDLASS2.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.FYKN76UA.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.FYKN76UA.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.G5CEXYN4.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.G5CEXYN4.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.GNS5PRYD.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.GNS5PRYD.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.GPOYCJQQ.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.GPOYCJQQ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.GRV2ULZ4.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.GRV2ULZ4.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.GUXG4CKE.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.GUXG4CKE.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.GWV6SRET.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.GWV6SRET.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.GXMHI3BM.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.GXMHI3BM.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.GXPDMFEM.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.GXPDMFEM.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.GY7O4RDC.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.GY7O4RDC.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.H23DVATU.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.H23DVATU.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.H7TA73OO.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.H7TA73OO.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.HFMHGWFW.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.HFMHGWFW.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.HPOJN4W7.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.HPOJN4W7.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.HPULLNVR.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.HPULLNVR.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.HQ3KF6CE.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.HQ3KF6CE.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.HYCA6KVN.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.HYCA6KVN.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.I3SFSSFT.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.I3SFSSFT.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.I4KXAHPX.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.I4KXAHPX.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.I57IM53V.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.I57IM53V.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.IGNZS56Z.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.IGNZS56Z.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.IIHGIRPB.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.IIHGIRPB.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.IOJQZIPW.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.IOJQZIPW.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.IYXV6LE3.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.IYXV6LE3.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.J5K2HSE4.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.J5K2HSE4.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.JHXED5NM.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.JHXED5NM.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.JQ3IWABX.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.JQ3IWABX.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.JR2V3NBQ.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.JR2V3NBQ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.JRPGUCID.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.JRPGUCID.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.JTOY5KP3.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.JTOY5KP3.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.JTQYTLMN.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.JTQYTLMN.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.JVTAGR5B.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.JVTAGR5B.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.K5BX3HGV.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.K5BX3HGV.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.K6QMUIHP.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.K6QMUIHP.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.KBS6YHTA.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KBS6YHTA.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.KESSODMC.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KESSODMC.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.KIHB3VMB.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.KIHB3VMB.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.KPN3YZ6U.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KPN3YZ6U.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.KPY3CJ6V.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KPY3CJ6V.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.KVSFINAV.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.KVSFINAV.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.KWDPKKFO.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KWDPKKFO.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.KZUC2H3V.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.KZUC2H3V.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.KZZR6Z6I.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KZZR6Z6I.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.L2BJ53WH.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.L2BJ53WH.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.L6CIKOFQ.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.L6CIKOFQ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.LAELRVAO.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.LAELRVAO.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.LC3764TJ.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.LC3764TJ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.LC7FD3GB.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.LC7FD3GB.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.LCFSCRUJ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.LCFSCRUJ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.LH72HXK6.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.LH72HXK6.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.LOMMLZPR.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.LOMMLZPR.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.LRYJ2M5H.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.LRYJ2M5H.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.LUTWAHOL.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.LUTWAHOL.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.LY4FQ3ZV.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.LY4FQ3ZV.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.LZHEV7NA.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.LZHEV7NA.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.MAFCUMJD.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.MAFCUMJD.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.MAHGF7JK.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MAHGF7JK.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.MELUIIBM.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MELUIIBM.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.MEYJNQF4.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MEYJNQF4.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.MN256RSG.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MN256RSG.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.MQLU5KE6.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MQLU5KE6.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.MQODJ75V.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MQODJ75V.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.MRDAZANX.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.MRDAZANX.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.MXHGJIUP.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MXHGJIUP.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.MYPDM7WA.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MYPDM7WA.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.N2QWXH2W.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.N2QWXH2W.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.N2TXQSKF.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KBS6YHTA.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.NAF26OZL.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.NAF26OZL.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.NCTGNL46.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.NCTGNL46.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.NY2PQ35L.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.NY2PQ35L.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.O6IZ4I7T.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.O6IZ4I7T.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.O6YZRY24.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.O6YZRY24.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.OH2UNY4J.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.OH2UNY4J.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.OJH6FSGP.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.OJH6FSGP.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.OWXHWWWF.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.OWXHWWWF.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.P7AOIZJ4.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.P7AOIZJ4.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.PG7PUEIB.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.PG7PUEIB.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.PMZH6TLQ.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.PMZH6TLQ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.PVS44CHC.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.PVS44CHC.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.PX3HMKF7.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.PX3HMKF7.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.PYD5CSTK.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.PYD5CSTK.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.PZAN6FPN.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.PZAN6FPN.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.Q6XMGFWJ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.Q6XMGFWJ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.Q7HDHQNJ.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.Q7HDHQNJ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.QAMJWMA2.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.QAMJWMA2.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.QIG4AMWU.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.QIG4AMWU.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.QMGDRBE6.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.QMGDRBE6.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.QQ52TYKR.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.QQ52TYKR.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.QRWQT2VJ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.QRWQT2VJ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.QVU4R4OL.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.QVU4R4OL.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.R7QX4M6R.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.R7QX4M6R.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.RF2N6EH3.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.RF2N6EH3.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.RIWG3BWH.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.RIWG3BWH.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.RMJ4JAGK.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.RMJ4JAGK.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.RMZ7BVDM.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.RMZ7BVDM.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.SDDRXMOC.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.SDDRXMOC.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.SKLR37OM.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.SKLR37OM.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.SUZGY3IK.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.SUZGY3IK.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.T3OVPJUT.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.T3OVPJUT.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.T4XXMSJ3.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.T4XXMSJ3.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.TEXHMVXN.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.TEXHMVXN.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.TH2X3W4P.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.TH2X3W4P.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.TMRVCQAY.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.TMRVCQAY.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.TONLV6I3.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.TONLV6I3.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.U2AYBAKX.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.U2AYBAKX.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.U36KZLSQ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.U36KZLSQ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.UDJHQDK7.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.UDJHQDK7.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.UF4WDITO.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.UF4WDITO.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.UGUGWXGF.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.UGUGWXGF.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.UHKNUHVA.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.UHKNUHVA.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.UKQL3GJV.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.UKQL3GJV.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.UMPX66UO.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.UMPX66UO.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.UUXXLSO6.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.UUXXLSO6.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.UVLZVEH2.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.UVLZVEH2.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.UVUZFIZX.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.UVUZFIZX.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.UYB2BRKW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.UYB2BRKW.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.UZM3B662.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.UZM3B662.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.VC3BPUZJ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.VC3BPUZJ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.VH4CGTVB.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.VH4CGTVB.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.VKVMGTNY.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.VKVMGTNY.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.VQZ46MYI.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.VQZ46MYI.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.VWU24OZA.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KBS6YHTA.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.VZMYU7JT.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.VZMYU7JT.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.W7N25SYR.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.W7N25SYR.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.WAPTDIMR.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.WAPTDIMR.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.WBEQDI45.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.WBEQDI45.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.WDIIGUNP.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.WDIIGUNP.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.WGFDW2LC.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.WGFDW2LC.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.WNF6ZKMU.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.WNF6ZKMU.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.WVL3QW4Q.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.WVL3QW4Q.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.WYNTFJHW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.WYNTFJHW.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.X55YNZ3B.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.X55YNZ3B.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.XCGN6TEE.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.XCGN6TEE.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.XK5OGDNS.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.XK5OGDNS.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.XO6QULQN.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.XO6QULQN.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.XU53ZZDC.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.XU53ZZDC.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.XU6OCJGL.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.XU6OCJGL.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.XW6BKGGI.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.XW6BKGGI.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.XW6K5DFW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.XW6K5DFW.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.XZPLJ4VW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.XZPLJ4VW.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.Y2DUNANZ.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.Y2DUNANZ.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.Y2EVO6QT.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.Y2EVO6QT.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.Y4A3K2KA.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.Y4A3K2KA.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.YBFCQDTA.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.YBFCQDTA.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.YDQCS2HK.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.YDQCS2HK.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.YNMVF3IV.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.YNMVF3IV.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.YNSHTXP2.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.YNSHTXP2.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.YPEIGA7N.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.YPEIGA7N.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.YY6Y7UJD.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.YY6Y7UJD.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.Z6BA4Q5K.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.Z6BA4Q5K.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.Z73FKN6X.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.Z73FKN6X.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.ZBM6AQGG.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.ZBM6AQGG.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.ZJEOBL7L.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.ZJEOBL7L.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.ZKBU46IH.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.ZKBU46IH.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.ZSEFTQAO.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.ZSEFTQAO.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.ZT4OZS6F.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.ZT4OZS6F.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.ZT5KI4AV.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.ZT5KI4AV.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/chunk.ZWQCGLB5.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.ZWQCGLB5.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/chunks/qr-creator.es6.min.WXLS2235.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/qr-creator.es6.min.WXLS2235.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/animated-image/animated-image.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/animated-image/animated-image.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/animated-image/animated-image.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/animated-image/animated-image.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/animated-image/animated-image.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/animated-image/animated-image.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/animated-image/animated-image.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/animation/animation.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/animation/animation.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/animation/animation.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/animation/animation.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/animation/animation.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/animation/animation.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/animation/animation.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/animation/animations.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/animation/animations.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/animation/animations.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/animation/animations.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/avatar/avatar.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/avatar/avatar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/avatar/avatar.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/avatar/avatar.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/avatar/avatar.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/avatar/avatar.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/avatar/avatar.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/badge/badge.d.ts
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/badge/badge.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/badge/badge.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/badge/badge.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/badge/badge.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/badge/badge.styles.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/badge/badge.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/button-group/button-group.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/button-group/button-group.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/button-group/button-group.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/button-group/button-group.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/button-group/button-group.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/button-group/button-group.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/button-group/button-group.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/button/button.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/button/button.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/button/button.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/button/button.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/button/button.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/button/button.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/button/button.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/callout/callout.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/callout/callout.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/callout/callout.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/callout/callout.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/callout/callout.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/callout/callout.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/callout/callout.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/card/card.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/card/card.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/card/card.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/card/card.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/card/card.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/card/card.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/card/card.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/carousel/autoplay-controller.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/carousel/autoplay-controller.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/carousel/autoplay-controller.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/carousel/autoplay-controller.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/carousel/carousel.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/carousel/carousel.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/carousel/carousel.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/carousel/carousel.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/carousel/carousel.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/carousel/carousel.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/carousel/carousel.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/carousel/scroll-controller.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/carousel/scroll-controller.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/carousel/scroll-controller.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/carousel/scroll-controller.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/checkbox/checkbox.d.ts
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/checkbox/checkbox.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/checkbox/checkbox.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/checkbox/checkbox.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/checkbox/checkbox.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/checkbox/checkbox.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/checkbox/checkbox.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/color-picker/color-picker.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/color-picker/color-picker.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/color-picker/color-picker.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/color-picker/color-picker.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/color-picker/color-picker.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/color-picker/color-picker.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/color-picker/color-picker.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/comparison/comparison.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/comparison/comparison.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/comparison/comparison.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/comparison/comparison.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/comparison/comparison.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/comparison/comparison.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/comparison/comparison.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/copy-button/copy-button.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/copy-button/copy-button.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/copy-button/copy-button.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/copy-button/copy-button.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/copy-button/copy-button.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/copy-button/copy-button.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/copy-button/copy-button.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/details/details.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/details/details.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/details/details.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/details/details.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/details/details.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/details/details.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/details/details.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/dialog/dialog.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/dialog/dialog.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/dialog/dialog.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/dialog/dialog.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/dialog/dialog.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/dialog/dialog.styles.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/dialog/dialog.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/divider/divider.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/divider/divider.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/divider/divider.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/divider/divider.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/divider/divider.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/divider/divider.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/divider/divider.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/drawer/drawer.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/drawer/drawer.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/drawer/drawer.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/drawer/drawer.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/drawer/drawer.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/drawer/drawer.styles.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/drawer/drawer.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.d.ts
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.styles.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/dropdown/dropdown.d.ts
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/dropdown/dropdown.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/dropdown/dropdown.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/dropdown/dropdown.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/dropdown/dropdown.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/dropdown/dropdown.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/dropdown/dropdown.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/format-bytes/format-bytes.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/format-bytes/format-bytes.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/format-bytes/format-bytes.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/format-bytes/format-bytes.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/format-date/format-date.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/format-date/format-date.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/format-date/format-date.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/format-date/format-date.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/format-number/format-number.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/format-number/format-number.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/format-number/format-number.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/format-number/format-number.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/icon/icon.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/icon/icon.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/icon/icon.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/icon/icon.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/icon/icon.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/icon/icon.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/icon/icon.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/icon/library.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/icon/library.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/icon/library.default.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/icon/library.default.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/icon/library.default.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/icon/library.default.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/icon/library.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/icon/library.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/icon/library.system.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/icon/library.system.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/icon/library.system.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/icon/library.system.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/include/include.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/include/include.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/include/include.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/include/include.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/include/include.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/include/include.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/include/include.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/include/request.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/include/request.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/include/request.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/include/request.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/input/input.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/input/input.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/input/input.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/input/input.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/input/input.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/input/input.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/input/input.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/number-input/number-input.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/number-input/number-input.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/number-input/number-input.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/number-input/number-input.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/number-input/number-input.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/number-input/number-input.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/number-input/number-input.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/option/option.d.ts
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/option/option.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/option/option.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/option/option.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/option/option.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/option/option.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/option/option.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/popover/popover.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/popover/popover.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/popover/popover.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/popover/popover.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/popover/popover.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/popover/popover.styles.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/popover/popover.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/popup/popup.d.ts
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/popup/popup.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/popup/popup.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/popup/popup.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/popup/popup.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/popup/popup.styles.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/popup/popup.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/qr-code/qr-code.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/qr-code/qr-code.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/qr-code/qr-code.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/qr-code/qr-code.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/qr-code/qr-code.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/qr-code/qr-code.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/qr-code/qr-code.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/radio-group/radio-group.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/radio-group/radio-group.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/radio-group/radio-group.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/radio-group/radio-group.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/radio-group/radio-group.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/radio-group/radio-group.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/radio-group/radio-group.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/radio/radio.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/radio/radio.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/radio/radio.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/radio/radio.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/radio/radio.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/radio/radio.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/radio/radio.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/rating/rating.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/rating/rating.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/rating/rating.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/rating/rating.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/rating/rating.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/rating/rating.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/rating/rating.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/relative-time/relative-time.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/relative-time/relative-time.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/relative-time/relative-time.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/relative-time/relative-time.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/scroller/scroller.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/scroller/scroller.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/scroller/scroller.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/scroller/scroller.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/scroller/scroller.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/scroller/scroller.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/scroller/scroller.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/select/select.d.ts
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/select/select.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/select/select.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/select/select.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/select/select.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/select/select.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/select/select.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/skeleton/skeleton.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/skeleton/skeleton.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/skeleton/skeleton.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/skeleton/skeleton.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/skeleton/skeleton.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/skeleton/skeleton.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/skeleton/skeleton.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/slider/slider.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/slider/slider.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/slider/slider.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/slider/slider.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/slider/slider.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/slider/slider.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/slider/slider.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/spinner/spinner.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/spinner/spinner.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/spinner/spinner.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/spinner/spinner.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/spinner/spinner.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/spinner/spinner.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/spinner/spinner.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/split-panel/split-panel.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/split-panel/split-panel.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/split-panel/split-panel.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/split-panel/split-panel.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/split-panel/split-panel.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/split-panel/split-panel.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/split-panel/split-panel.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/switch/switch.d.ts
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/switch/switch.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/switch/switch.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/switch/switch.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/switch/switch.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/switch/switch.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/switch/switch.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tab-group/tab-group.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tab-group/tab-group.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tab-group/tab-group.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/tab-group/tab-group.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tab-group/tab-group.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tab-group/tab-group.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tab-group/tab-group.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tab/tab.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tab/tab.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tab/tab.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/tab/tab.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tab/tab.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tab/tab.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tab/tab.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tag/tag.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tag/tag.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tag/tag.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/tag/tag.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tag/tag.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tag/tag.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tag/tag.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/textarea/textarea.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/textarea/textarea.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/textarea/textarea.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/textarea/textarea.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/textarea/textarea.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/textarea/textarea.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/textarea/textarea.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tooltip/tooltip.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tooltip/tooltip.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tooltip/tooltip.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/tooltip/tooltip.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tooltip/tooltip.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tooltip/tooltip.styles.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/tooltip/tooltip.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tree-item/tree-item.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tree-item/tree-item.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tree-item/tree-item.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/tree-item/tree-item.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tree-item/tree-item.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tree-item/tree-item.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tree-item/tree-item.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tree/tree.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tree/tree.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tree/tree.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/tree/tree.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tree/tree.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/tree/tree.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tree/tree.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.styles.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/custom-elements-jsx.d.ts
··· 1 + ../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/custom-elements-jsx.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/custom-elements.json
··· 1 + ../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/custom-elements.json
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/after-collapse.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/after-collapse.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/after-collapse.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/after-collapse.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/after-expand.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/after-expand.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/after-expand.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/after-expand.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/after-hide.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/after-hide.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/after-hide.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/after-hide.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/after-show.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/after-show.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/after-show.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/after-show.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/cancel.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/cancel.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/cancel.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/cancel.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/clear.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/clear.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/clear.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/clear.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/collapse.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/collapse.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/collapse.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/collapse.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/copy.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/copy.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/copy.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/copy.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/error.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/error.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/error.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/error.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/events.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/events.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/events.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/events.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/expand.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/expand.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/expand.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/expand.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/finish.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/finish.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/finish.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/finish.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/hide.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/hide.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/hide.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/hide.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/hover.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/hover.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/hover.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/hover.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/include-error.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/include-error.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/include-error.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/include-error.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/intersect.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/intersect.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/intersect.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/intersect.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/invalid.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/invalid.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/invalid.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/invalid.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/lazy-change.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/lazy-change.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/lazy-change.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/lazy-change.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/lazy-load.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/lazy-load.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/lazy-load.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/lazy-load.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/load.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/load.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/load.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/load.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/mutation.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/mutation.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/mutation.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/mutation.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/remove.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/remove.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/remove.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/remove.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/reposition.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/reposition.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/reposition.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/reposition.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/resize.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/resize.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/resize.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/resize.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/select.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/select.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/select.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/select.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/selection-change.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/selection-change.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/selection-change.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/selection-change.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/show.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/show.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/show.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/show.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/slide-change.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/slide-change.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/slide-change.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/slide-change.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/start.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/start.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/start.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/start.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/tab-hide.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/tab-hide.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/tab-hide.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/tab-hide.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/tab-show.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/tab-show.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/tab-show.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/tab-show.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/video-change.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/video-change.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/events/video-change.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/video-change.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/active-elements.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/active-elements.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/animate.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/animate.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/computed-style.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/computed-style.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/debounce.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/debounce.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/default-value.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/default-value.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/dismissible-stack.d.ts
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/internal/dismissible-stack.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/drag.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/drag.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/event.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/event.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/get-text.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/get-text.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/math.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/math.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/offset.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/offset.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/parse.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/parse.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/scroll.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/scroll.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/scrollend-polyfill.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/scrollend-polyfill.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/slot.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/slot.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/submit-on-enter.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/submit-on-enter.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/test/data-testid-helpers.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/test/data-testid-helpers.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/test/element-visible-overflow.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/test/element-visible-overflow.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/test/fixture.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/test/fixture.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/test/form-control-base-tests.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/test/form-control-base-tests.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/test/pointer-utilities.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/test/pointer-utilities.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/test/wait-for-scrolling.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/test/wait-for-scrolling.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/validators/custom-error-validator.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/validators/custom-error-validator.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/validators/mirror-validator.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/validators/mirror-validator.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/validators/required-validator.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/validators/required-validator.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/validators/slider-validator.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/validators/slider-validator.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/watch.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/watch.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/webawesome-element.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/webawesome-element.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/internal/webawesome-form-associated-element.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/webawesome-form-associated-element.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/llms.txt
··· 1 + ../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/llms.txt
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/animated-image/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/animated-image/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/animated-image/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/animated-image/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/animation/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/animation/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/animation/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/animation/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/avatar/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/avatar/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/avatar/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/avatar/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/badge/index.d.ts
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/badge/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/badge/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/badge/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/breadcrumb-item/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/breadcrumb-item/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/breadcrumb-item/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/breadcrumb-item/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/breadcrumb/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/breadcrumb/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/breadcrumb/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/breadcrumb/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/button-group/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/button-group/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/button-group/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/button-group/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/button/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/button/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/button/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/button/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/callout/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/callout/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/callout/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/callout/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/card/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/card/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/card/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/card/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/carousel-item/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/carousel-item/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/carousel-item/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/carousel-item/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/carousel/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/carousel/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/carousel/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/carousel/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/checkbox/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/checkbox/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/checkbox/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/checkbox/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/color-picker/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/color-picker/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/color-picker/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/color-picker/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/comparison/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/comparison/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/comparison/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/comparison/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/copy-button/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/copy-button/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/copy-button/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/copy-button/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/details/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/details/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/details/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/details/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/dialog/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/dialog/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/dialog/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/dialog/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/divider/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/divider/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/divider/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/divider/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/drawer/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/drawer/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/drawer/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/drawer/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/dropdown-item/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/dropdown-item/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/dropdown-item/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/dropdown-item/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/dropdown/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/dropdown/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/dropdown/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/dropdown/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/format-bytes/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/format-bytes/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/format-bytes/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/format-bytes/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/format-date/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/format-date/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/format-date/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/format-date/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/format-number/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/format-number/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/format-number/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/format-number/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/icon/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/icon/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/icon/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/icon/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/include/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/include/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/include/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/include/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/index.d.ts
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/index.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/input/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/input/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/input/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/input/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/intersection-observer/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/intersection-observer/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/intersection-observer/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/intersection-observer/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/mutation-observer/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/mutation-observer/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/mutation-observer/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/mutation-observer/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/number-input/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/number-input/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/number-input/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/number-input/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/option/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/option/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/option/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/option/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/popover/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/popover/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/popover/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/popover/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/popup/index.d.ts
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/popup/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/popup/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/popup/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/progress-bar/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/progress-bar/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/progress-bar/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/progress-bar/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/progress-ring/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/progress-ring/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/progress-ring/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/progress-ring/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/qr-code/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/qr-code/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/qr-code/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/qr-code/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/radio-group/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/radio-group/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/radio-group/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/radio-group/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/radio/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/radio/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/radio/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/radio/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/rating/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/rating/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/rating/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/rating/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/relative-time/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/relative-time/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/relative-time/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/relative-time/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/resize-observer/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/resize-observer/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/resize-observer/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/resize-observer/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/scroller/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/scroller/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/scroller/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/scroller/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/select/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/select/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/select/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/select/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/skeleton/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/skeleton/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/skeleton/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/skeleton/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/slider/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/slider/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/slider/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/slider/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/spinner/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/spinner/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/spinner/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/spinner/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/split-panel/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/split-panel/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/split-panel/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/split-panel/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/switch/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/switch/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/switch/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/switch/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/tab-group/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tab-group/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/tab-group/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/tab-group/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/tab-panel/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tab-panel/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/tab-panel/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/tab-panel/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/tab/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tab/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/tab/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/tab/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/tag/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tag/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/tag/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/tag/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/textarea/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/textarea/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/textarea/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/textarea/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/tooltip/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tooltip/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/tooltip/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/tooltip/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/tree-item/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tree-item/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/tree-item/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/tree-item/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/tree/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tree/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/tree/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/tree/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/zoomable-frame/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/zoomable-frame/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/react/zoomable-frame/index.js
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/zoomable-frame/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/SKILL.md
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/SKILL.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/animated-image.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/animated-image.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/animation.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/animation.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/avatar.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/avatar.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/badge.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/badge.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/breadcrumb-item.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/breadcrumb-item.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/breadcrumb.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/breadcrumb.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/button-group.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/button-group.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/button.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/button.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/callout.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/callout.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/card.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/card.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/carousel-item.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/carousel-item.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/carousel.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/carousel.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/checkbox.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/checkbox.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/color-picker.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/color-picker.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/comparison.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/comparison.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/copy-button.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/copy-button.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/details.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/details.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/dialog.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/dialog.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/divider.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/divider.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/drawer.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/drawer.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/dropdown-item.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/dropdown-item.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/dropdown.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/dropdown.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/format-bytes.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/format-bytes.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/format-date.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/format-date.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/format-number.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/format-number.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/icon.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/icon.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/include.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/include.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/input.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/input.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/intersection-observer.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/intersection-observer.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/mutation-observer.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/mutation-observer.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/number-input.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/number-input.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/option.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/option.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/popover.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/popover.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/popup.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/popup.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/progress-bar.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/progress-bar.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/progress-ring.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/progress-ring.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/qr-code.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/qr-code.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/radio-group.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/radio-group.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/radio.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/radio.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/rating.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/rating.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/relative-time.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/relative-time.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/resize-observer.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/resize-observer.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/scroller.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/scroller.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/select.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/select.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/skeleton.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/skeleton.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/slider.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/slider.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/spinner.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/spinner.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/split-panel.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/split-panel.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/switch.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/switch.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tab-group.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tab-group.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tab-panel.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tab-panel.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tab.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tab.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tag.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tag.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/textarea.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/textarea.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tooltip.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tooltip.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tree-item.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tree-item.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tree.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tree.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/components/zoomable-frame.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/zoomable-frame.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/customizing.md
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/customizing.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/form-controls.md
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/form-controls.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/angular.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/angular.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/react.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/react.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/svelte.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/svelte.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/vue.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/vue.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/installation.md
··· 1 + ../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/installation.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/localization.md
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/localization.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/support.md
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/support.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/themes.md
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/themes.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/borders.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/borders.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/color.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/color.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/component-groups.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/component-groups.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/focus.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/focus.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/shadows.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/shadows.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/space.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/space.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/transitions.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/transitions.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/typography.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/typography.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/usage.md
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/usage.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/color.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/color.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/fouce.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/fouce.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/layout.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/layout.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/native.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/native.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/rounding.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/rounding.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/text.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/text.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/visually-hidden.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/visually-hidden.md
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/color/palettes/base.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/palettes/base.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/color/palettes/bright.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/palettes/bright.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/color/palettes/default.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/palettes/default.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/color/palettes/shoelace.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/palettes/shoelace.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/color/variants.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/variants.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/color/variants/brand.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/variants/brand.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/color/variants/danger.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/variants/danger.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/color/variants/neutral.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/variants/neutral.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/color/variants/success.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/variants/success.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/color/variants/warning.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/variants/warning.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/component/form-control.styles.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/component/host.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/component/host.styles.ts
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/styles/component/host.styles.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/component/size.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/component/size.styles.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/size.styles.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/component/variants.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/component/variants.styles.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/variants.styles.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/component/visually-hidden.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/component/visually-hidden.styles.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/visually-hidden.styles.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/layers.css
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/layers.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/native.css
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/styles/native.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/themes/awesome.css
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/styles/themes/awesome.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/themes/default.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/themes/default.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/themes/shoelace.css
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/styles/themes/shoelace.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/utilities.css
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/utilities/align-items.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/align-items.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/utilities/border-radius.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/border-radius.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/utilities/flex-wrap.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/flex-wrap.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/utilities/fouce.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/fouce.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/utilities/gap.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/gap.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/utilities/justify-content.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/justify-content.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/utilities/layout.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/layout.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/utilities/placeholder.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/placeholder.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/utilities/scroll-lock.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/scroll-lock.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/utilities/size.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/size.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/utilities/text.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/text.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/utilities/variants.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/variants.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/utilities/visually-hidden.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/visually-hidden.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/styles/webawesome.css
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/webawesome.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/ar.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/ar.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/cs.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/cs.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/cs.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/da.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/da.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/da.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/de-ch.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/de-ch.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/de-ch.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/de.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/de.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/de.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/en-gb.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/en-gb.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/en-gb.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/en.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/en.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/en.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/es.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/es.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/es.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/fa.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/fa.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/fa.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/fi.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/fi.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/fi.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/fr.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/fr.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/fr.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/he.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/he.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/he.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/hi.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/hi.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/hi.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/hr.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/hr.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/hr.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/hu.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/hu.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/hu.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/id.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/id.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/id.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/it.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/it.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/it.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/ja.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/ja.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ja.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/kk.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/kk.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/kk.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/nb.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/nb.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/nb.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/nl.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/nl.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/nl.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/nn.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/nn.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/nn.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/pl.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/pl.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/pl.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/pt.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/pt.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/pt.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/ru.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/ru.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ru.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/sl.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/sl.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/sl.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/sv.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/sv.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/sv.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/tr.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/tr.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/tr.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/uk.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/uk.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/uk.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/zh-cn.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/zh-cn.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/zh-cn.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/zh-tw.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/translations/zh-tw.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/zh-tw.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/types/svelte/index.d.ts
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/types/svelte/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/types/vue/index.d.ts
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/types/vue/index.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/utilities/animation.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/animation.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/utilities/animation.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/animation.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/utilities/autoloader.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/autoloader.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/utilities/autoloader.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/autoloader.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/utilities/base-path.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/base-path.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/utilities/base-path.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/base-path.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/utilities/defined.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/defined.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/utilities/defined.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/defined.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/utilities/form.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/form.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/utilities/form.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/form.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/utilities/localize.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/localize.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/utilities/localize.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/localize.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/vscode.html-custom-data.json
··· 1 + ../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/vscode.html-custom-data.json
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/web-types.json
··· 1 + ../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/web-types.json
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/webawesome.d.ts
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/webawesome.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/webawesome.js
··· 1 + ../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/webawesome.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/webawesome.loader.d.ts
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/webawesome.loader.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/webawesome.loader.js
··· 1 + ../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/webawesome.loader.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/webawesome.ssr-loader.d.ts
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/webawesome.ssr-loader.d.ts
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@awesome.me/webawesome/webawesome.ssr-loader.js
··· 1 + ../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/webawesome.ssr-loader.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/bold/Phosphor-Bold.svg
··· 1 + ../../../../../bafybeidxl54c4ymomv6kytxqps6b5di34hgltpvyomx52g65lplv6dosxy/styles/vendor/phosphor/bold/Phosphor-Bold.svg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/bold/Phosphor-Bold.svg.br
··· 1 + ../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/vendor/@phosphor-icons/bold/Phosphor-Bold.svg.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/bold/Phosphor-Bold.ttf
··· 1 + ../../../../../bafybeidxl54c4ymomv6kytxqps6b5di34hgltpvyomx52g65lplv6dosxy/styles/vendor/phosphor/bold/Phosphor-Bold.ttf
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/bold/Phosphor-Bold.woff
··· 1 + ../../../../../bafybeidxl54c4ymomv6kytxqps6b5di34hgltpvyomx52g65lplv6dosxy/styles/vendor/phosphor/bold/Phosphor-Bold.woff
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/bold/Phosphor-Bold.woff2
··· 1 + ../../../../../bafybeidxl54c4ymomv6kytxqps6b5di34hgltpvyomx52g65lplv6dosxy/styles/vendor/phosphor/bold/Phosphor-Bold.woff2
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/bold/selection.json
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/bold/selection.json
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/bold/selection.json.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/bold/selection.json.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/bold/style.css
··· 1 + ../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/vendor/@phosphor-icons/bold/style.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/bold/style.css.br
··· 1 + ../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/vendor/@phosphor-icons/bold/style.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/bold/style.css.map
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/bold/style.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.svg
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.svg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.svg.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.svg.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.ttf
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.ttf
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.woff
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.woff
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.woff2
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.woff2
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/duotone/selection.json
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/duotone/selection.json
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/duotone/selection.json.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/duotone/selection.json.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/duotone/style.css
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/duotone/style.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/duotone/style.css.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/duotone/style.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/duotone/style.css.map
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/duotone/style.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/fill/Phosphor-Fill.svg
··· 1 + ../../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/phosphor/fill/Phosphor-Fill.svg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/fill/Phosphor-Fill.svg.br
··· 1 + ../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/vendor/@phosphor-icons/fill/Phosphor-Fill.svg.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/fill/Phosphor-Fill.ttf
··· 1 + ../../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/phosphor/fill/Phosphor-Fill.ttf
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/fill/Phosphor-Fill.woff
··· 1 + ../../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/phosphor/fill/Phosphor-Fill.woff
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/fill/Phosphor-Fill.woff2
··· 1 + ../../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/phosphor/fill/Phosphor-Fill.woff2
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/fill/selection.json
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/fill/selection.json
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/fill/selection.json.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/fill/selection.json.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/fill/style.css
··· 1 + ../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/vendor/@phosphor-icons/fill/style.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/fill/style.css.br
··· 1 + ../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/vendor/@phosphor-icons/fill/style.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/fill/style.css.map
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/fill/style.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/light/Phosphor-Light.svg
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/light/Phosphor-Light.svg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/light/Phosphor-Light.svg.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/light/Phosphor-Light.svg.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/light/Phosphor-Light.ttf
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/light/Phosphor-Light.ttf
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/light/Phosphor-Light.woff
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/light/Phosphor-Light.woff
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/light/Phosphor-Light.woff2
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/light/Phosphor-Light.woff2
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/light/selection.json
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/light/selection.json
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/light/selection.json.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/light/selection.json.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/light/style.css
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/light/style.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/light/style.css.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/light/style.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/light/style.css.map
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/light/style.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/regular/Phosphor.svg
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/regular/Phosphor.svg
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/regular/Phosphor.svg.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/regular/Phosphor.svg.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/regular/Phosphor.ttf
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/regular/Phosphor.ttf
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/regular/Phosphor.woff
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/regular/Phosphor.woff
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/regular/Phosphor.woff2
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/regular/Phosphor.woff2
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/regular/selection.json
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/regular/selection.json
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/regular/selection.json.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/regular/selection.json.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/regular/style.css
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/regular/style.css
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/regular/style.css.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/regular/style.css.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/@phosphor-icons/web/regular/style.css.map
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/regular/style.css.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/idb-keyval/index.js
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/idb-keyval/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/idb-keyval/index.js.br
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/idb-keyval/index.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/idb-keyval/index.js.map
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/idb-keyval/index.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/lit-html/index.js
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/lit-html/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/lit-html/index.js.br
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/lit-html/index.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/lit-html/index.js.map
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/lit-html/index.js.map
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/ms_sans_serif.woff2
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/ms_sans_serif.woff2
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/ms_sans_serif_bold.woff2
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/ms_sans_serif_bold.woff2
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/throttle-debounce/index.js
··· 1 + ../../../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/vendor/throttle-debounce/index.js
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/throttle-debounce/index.js.br
··· 1 + ../../../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/vendor/throttle-debounce/index.js.br
+1
artifacts/bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi/vendor/throttle-debounce/index.js.map
··· 1 + ../../../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/vendor/throttle-debounce/index.js.map
+2 -2
artifacts/versions.json
··· 5 5 "version": "3.5.0" 6 6 }, 7 7 "4.0.0-alpha": { 8 - "cid": "bafybeibqqkingsvabbigdzqis4onfv7whabex4r5m6ziajvzo3nhh4f4e4", 9 - "createdAt": "2026-03-28T10:38:33.551Z", 8 + "cid": "bafybeihmzzn3urlv4vhsjcpsigycnboyadyng5cfbu6i3zkwpk5mk4stxi", 9 + "createdAt": "2026-03-28T17:12:56.306Z", 10 10 "version": "4.0.0-alpha" 11 11 } 12 12 }
+4
site/chronicle/index.css
··· 1 + h2 { 2 + color: var(--accent); 3 + } 4 + 1 5 .chronicle { 2 6 margin-top: var(--space-xl); 3 7 max-width: var(--container-4xl);
+2 -1
site/chronicle/index.vto
··· 1 1 --- 2 2 layout: diffuse/layouts/diffuse.vto 3 3 base: ../ 4 + title: Chronicle | Diffuse 4 5 5 6 styles: 6 7 - styles/base.css ··· 11 12 12 13 <header> 13 14 <div> 14 - <h1 hidden>Diffuse</h1> 15 + <h1 hidden>Chronicle</h1> 15 16 <div class="diffuse-logo-container"> 16 17 {{ await comp.diffuse.logo() }} 17 18 </div>