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

+8047 -2
+5
artifacts/artifacts.json
··· 383 383 "cid": "bafybeidcqjj5ooqx36uomtsgqcpuu5bjordymamrliah7o2bq7ghzvfxgm", 384 384 "createdAt": "2026-04-13T11:28:25.127Z", 385 385 "version": "4.0.0-alpha" 386 + }, 387 + "bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu": { 388 + "cid": "bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu", 389 + "createdAt": "2026-04-14T11:11:50.734Z", 390 + "version": "4.0.0-alpha" 386 391 } 387 392 }
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/APEv2Parser-B45AF6F2.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/APEv2Parser-B45AF6F2.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/APEv2Parser-B45AF6F2.js.br
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/APEv2Parser-B45AF6F2.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/APEv2Parser-B45AF6F2.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/APEv2Parser-B45AF6F2.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/AiffParser-6MUZMZMI.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/AiffParser-6MUZMZMI.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/AiffParser-6MUZMZMI.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/AiffParser-6MUZMZMI.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/AiffParser-6MUZMZMI.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/AiffParser-6MUZMZMI.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/AsfParser-JPPU2U74.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/AsfParser-JPPU2U74.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/AsfParser-JPPU2U74.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/AsfParser-JPPU2U74.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/AsfParser-JPPU2U74.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/AsfParser-JPPU2U74.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/DsdiffParser-FLM2HTLC.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/DsdiffParser-FLM2HTLC.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/DsdiffParser-FLM2HTLC.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/DsdiffParser-FLM2HTLC.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/DsdiffParser-FLM2HTLC.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/DsdiffParser-FLM2HTLC.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/DsfParser-3ZOLFQRK.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/DsfParser-3ZOLFQRK.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/DsfParser-3ZOLFQRK.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/DsfParser-3ZOLFQRK.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/DsfParser-3ZOLFQRK.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/DsfParser-3ZOLFQRK.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/FlacParser-PHDBPMR7.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/FlacParser-PHDBPMR7.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/FlacParser-PHDBPMR7.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/FlacParser-PHDBPMR7.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/FlacParser-PHDBPMR7.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/FlacParser-PHDBPMR7.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/MP4Parser-YD7KPZIH.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/MP4Parser-YD7KPZIH.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/MP4Parser-YD7KPZIH.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/MP4Parser-YD7KPZIH.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/MP4Parser-YD7KPZIH.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/MP4Parser-YD7KPZIH.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/MatroskaParser-DIAEHWB3.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/MatroskaParser-DIAEHWB3.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/MatroskaParser-DIAEHWB3.js.br
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/MatroskaParser-DIAEHWB3.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/MatroskaParser-DIAEHWB3.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/MatroskaParser-DIAEHWB3.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/MpegParser-GFNSZQV6.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/MpegParser-GFNSZQV6.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/MpegParser-GFNSZQV6.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/MpegParser-GFNSZQV6.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/MpegParser-GFNSZQV6.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/MpegParser-GFNSZQV6.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/MusepackParser-CWYQKXJE.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/MusepackParser-CWYQKXJE.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/MusepackParser-CWYQKXJE.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/MusepackParser-CWYQKXJE.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/MusepackParser-CWYQKXJE.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/MusepackParser-CWYQKXJE.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/OggParser-JF4DUIRA.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/OggParser-JF4DUIRA.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/OggParser-JF4DUIRA.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/OggParser-JF4DUIRA.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/OggParser-JF4DUIRA.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/OggParser-JF4DUIRA.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/WavPackParser-DE3XWLT6.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/WavPackParser-DE3XWLT6.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/WavPackParser-DE3XWLT6.js.br
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/WavPackParser-DE3XWLT6.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/WavPackParser-DE3XWLT6.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/WavPackParser-DE3XWLT6.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/WaveParser-YZXHHK73.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/WaveParser-YZXHHK73.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/WaveParser-YZXHHK73.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/WaveParser-YZXHHK73.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/WaveParser-YZXHHK73.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/WaveParser-YZXHHK73.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/android-chrome-192x192.png
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/android-chrome-192x192.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/android-chrome-512x512.png
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/android-chrome-512x512.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/apple-touch-icon.png
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/apple-touch-icon.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/base-5RGOBUOU.js
··· 1 + ../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/base-5RGOBUOU.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/base-5RGOBUOU.js.br
··· 1 + ../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/base-5RGOBUOU.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/base-5RGOBUOU.js.map
··· 1 + ../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/base-5RGOBUOU.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/browserconfig.xml
··· 1 + ../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/browserconfig.xml
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/browserconfig.xml.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/browserconfig.xml.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/butterchurn-OCY4IPUN.js
··· 1 + ../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/butterchurn-OCY4IPUN.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/butterchurn-OCY4IPUN.js.br
··· 1 + ../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/butterchurn-OCY4IPUN.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/butterchurn-OCY4IPUN.js.map
··· 1 + ../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/butterchurn-OCY4IPUN.js.map
+1759
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/catalogue/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>Catalogue | 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 + <link rel="manifest" href="site.webmanifest" /> 21 + 22 + <!-- Preloads --> 23 + 24 + <!-- Styles --> 25 + <link rel="stylesheet" href="styles/base.css" /> 26 + <link rel="stylesheet" href="styles/diffuse/page.css" /> 27 + <link rel="stylesheet" href="styles/diffuse/code-editor.css" /> 28 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/bold/style.css" /> 29 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/fill/style.css" /> 30 + </head> 31 + <body> 32 + <header> 33 + <div class="header__nav"> 34 + <div style="flex-shrink: 0;"> 35 + <div class="diffuse-logo-container diffuse-logo-container--condensed"> 36 + <a href="./" style="display: inline-block;"> 37 + <svg viewBox="0 0 902 134" width="160"> 38 + <title>Diffuse</title> 39 + <use 40 + xlink:href="images/diffuse-current.svg#diffuse" 41 + href="images/diffuse-current.svg#diffuse"></use> 42 + </svg> 43 + 44 + </a> 45 + </div> 46 + </div> 47 + 48 + <div class="nav-container"> 49 + <nav id="diffuse-nav"> 50 + <a href="dashboard/" class="button button--transparent button--border"> 51 + <span class="with-icon"> 52 + <i class="ph-fill ph-person"></i> 53 + Your Diffuse 54 + </span> 55 + </a> 56 + 57 + <a href="guide/" class="button button--transparent button--border"> 58 + <span class="with-icon"> 59 + <i class="ph-fill ph-book-open-text"></i> 60 + Guide 61 + </span> 62 + </a> 63 + 64 + <a href="featured/" class="button button--transparent button--border"> 65 + <span class="with-icon"> 66 + <i class="ph-fill ph-sparkle"></i> 67 + Featured 68 + </span> 69 + </a> 70 + 71 + <a href="catalogue/" class="button button--border"> 72 + <span class="with-icon"> 73 + <i class="ph-fill ph-storefront"></i> 74 + Catalogue 75 + </span> 76 + </a> 77 + 78 + <a href="code/" class="button button--transparent button--border"> 79 + <span class="with-icon"> 80 + <i class="ph-fill ph-hammer"></i> 81 + Code 82 + </span> 83 + </a> 84 + </nav> 85 + 86 + <button 87 + id="nav-overflow-btn" 88 + class="button button--transparent button--border" 89 + style="display: none; flex-shrink: 0" 90 + popovertarget="nav-overflow-menu" 91 + > 92 + <span class="with-icon"> 93 + <i class="ph-fill ph-dots-three-outline"></i> 94 + </span> 95 + </button> 96 + 97 + <div id="nav-overflow-menu" class="dropdown" popover></div> 98 + </div> 99 + 100 + </div> 101 + </header> 102 + 103 + <main> 104 + <h1 hidden>Featured</h1> 105 + 106 + <section> 107 + <div class="grid-filter"> 108 + <span class="grid-filter--label">Filter by</span> 109 + 110 + <button class="button--border button--tiny button--transparent" data-filter="all">All</button> 111 + <button class="button--border button--tiny button--bg-twist-4 button--tr-twist-4 button--transparent" data-filter="prelude">Features</button> 112 + <button class="button--border button--tiny button--bg-twist-2 button--tr-twist-2 button--transparent" data-filter="interface">Interfaces</button> 113 + 114 + <button class="button--border button--tiny button--transparent" title="Show the hidden essential features" data-filter="base">Base</button> 115 + 116 + <div style="flex: 1"></div> 117 + 118 + <span class="grid-filter--label">Category</span> 119 + <div class="grid-filter--categories"></div> 120 + </div> 121 + 122 + <ul class="grid" style="margin-top: var(--space-xs);"> 123 + 124 + 125 + 126 + <li 127 + class="grid-item" 128 + style="--grid-item-color: var(--accent-twist-4)" 129 + data-active-color="var(--accent-twist-4)" 130 + data-description="Automatically put tracks into the queue. **Always on.** These tracks will always be located after the ones you've added manually." 131 + data-name="Automatic Queue" 132 + data-category="Playback" 133 + data-kind="prelude" 134 + data-tags="" 135 + data-uri="diffuse://facets/playback/auto-queue/prelude/index.html" 136 + > 137 + <div class="grid-item__contents"> 138 + <div class="grid-item__title"> 139 + <span style="color: var(--accent-twist-4); padding: var(--space-3xs) 0"> 140 + Automatic Queue 141 + </span> 142 + <span style="flex: 1"></span> 143 + </div> 144 + <div class="list-description"> 145 + Automatically put tracks into the queue. <strong>Always on.</strong> These tracks will always be located after the ones you've added manually. 146 + </div> 147 + </div> 148 + <div class="grid-item__menu"> 149 + <button 150 + class="button--transparent" 151 + data-action="toggle" 152 + style="opacity: 0" 153 + title="Add" 154 + > 155 + <i class="ph-bold ph-plus"></i> 156 + </button> 157 + <hr /> 158 + <button 159 + class="button--transparent" 160 + title="More actions" 161 + popovertarget="grid-item-menu-0" 162 + > 163 + <i class="ph-bold ph-dots-three-vertical"></i> 164 + </button> 165 + <div id="grid-item-menu-0" class="dropdown" popover> 166 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fplayback%2Fauto-queue%2Fprelude%2Findex.html&name=Automatic%20Queue&kind=prelude&description=Automatically%20put%20tracks%20into%20the%20queue.%20**Always%20on.**%20These%20tracks%20will%20always%20be%20located%20after%20the%20ones%20you've%20added%20manually."> 167 + <i class="ph-fill ph-code-block"></i> 168 + Open code in editor 169 + </a> 170 + </div> 171 + </div> 172 + </li> 173 + 174 + 175 + 176 + <li 177 + class="grid-item" 178 + style="--grid-item-color: var(--accent-twist-2)" 179 + data-active-color="var(--accent-twist-2)" 180 + data-description="Automatically put tracks into the queue when this interface is opened. Also allows for controlling shuffle, repeat, search, sorting and playlist selection." 181 + data-name="Automatic Queue" 182 + data-category="Playback" 183 + data-kind="interface" 184 + data-tags="" 185 + data-uri="diffuse://facets/playback/auto-queue/index.html" 186 + > 187 + <div class="grid-item__contents"> 188 + <div class="grid-item__title"> 189 + <a href="l/?path=facets%2Fplayback%2Fauto-queue%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 190 + Automatic Queue 191 + </a> 192 + <span style="flex: 1"></span> 193 + </div> 194 + <div class="list-description"> 195 + Automatically put tracks into the queue when this interface is opened. Also allows for controlling shuffle, repeat, search, sorting and playlist selection. 196 + </div> 197 + </div> 198 + <div class="grid-item__menu"> 199 + <button 200 + class="button--transparent" 201 + data-action="toggle" 202 + style="opacity: 0" 203 + title="Bookmark" 204 + > 205 + <i class="ph-bold ph-bookmark"></i> 206 + </button> 207 + <hr /> 208 + <button 209 + class="button--transparent" 210 + title="More actions" 211 + popovertarget="grid-item-menu-1" 212 + > 213 + <i class="ph-bold ph-dots-three-vertical"></i> 214 + </button> 215 + <div id="grid-item-menu-1" class="dropdown" popover> 216 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fplayback%2Fauto-queue%2Findex.html&name=Automatic%20Queue&kind=interface&description=Automatically%20put%20tracks%20into%20the%20queue%20when%20this%20interface%20is%20opened.%20Also%20allows%20for%20controlling%20shuffle%2C%20repeat%2C%20search%2C%20sorting%20and%20playlist%20selection."> 217 + <i class="ph-fill ph-code-block"></i> 218 + Open code in editor 219 + </a> 220 + </div> 221 + </div> 222 + </li> 223 + 224 + 225 + 226 + <li 227 + class="grid-item" 228 + style="--grid-item-color: var(--accent-twist-2)" 229 + data-active-color="var(--accent-twist-2)" 230 + data-description="A combination of the classic Diffuse browser and the Apple Music iOS playback screen." 231 + data-name="Blur" 232 + data-category="Themes" 233 + data-kind="interface" 234 + data-tags="" 235 + data-uri="diffuse://themes/blur/facet/index.html" 236 + > 237 + <div class="grid-item__contents"> 238 + <div class="grid-item__title"> 239 + <a href="l/?path=themes%2Fblur%2Ffacet%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 240 + Blur 241 + </a> 242 + <span style="flex: 1"></span> 243 + </div> 244 + <div class="list-description"> 245 + A combination of the classic Diffuse browser and the Apple Music iOS playback screen. 246 + </div> 247 + </div> 248 + <div class="grid-item__menu"> 249 + <button 250 + class="button--transparent" 251 + data-action="toggle" 252 + style="opacity: 0" 253 + title="Bookmark" 254 + > 255 + <i class="ph-bold ph-bookmark"></i> 256 + </button> 257 + <hr /> 258 + <button 259 + class="button--transparent" 260 + title="More actions" 261 + popovertarget="grid-item-menu-2" 262 + > 263 + <i class="ph-bold ph-dots-three-vertical"></i> 264 + </button> 265 + <div id="grid-item-menu-2" class="dropdown" popover> 266 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Fthemes%2Fblur%2Ffacet%2Findex.html&name=Blur&kind=interface&description=A%20combination%20of%20the%20classic%20Diffuse%20browser%20and%20the%20Apple%20Music%20iOS%20playback%20screen."> 267 + <i class="ph-fill ph-code-block"></i> 268 + Open code in editor 269 + </a> 270 + </div> 271 + </div> 272 + </li> 273 + 274 + 275 + 276 + <li 277 + class="grid-item" 278 + style="--grid-item-color: var(--accent-twist-2)" 279 + data-active-color="var(--accent-twist-2)" 280 + data-description="Audio playback controller with an artwork display. Play audio from the queue, add tracks to your favourites, control the queue and volume." 281 + data-name="Blur / Artwork Controller" 282 + data-category="Playback" 283 + data-kind="interface" 284 + data-tags="" 285 + data-uri="diffuse://themes/blur/artwork-controller/facet/index.html" 286 + > 287 + <div class="grid-item__contents"> 288 + <div class="grid-item__title"> 289 + <a href="l/?path=themes%2Fblur%2Fartwork-controller%2Ffacet%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 290 + Blur / Artwork Controller 291 + </a> 292 + <span style="flex: 1"></span> 293 + </div> 294 + <div class="list-description"> 295 + Audio playback controller with an artwork display. Play audio from the queue, add tracks to your favourites, control the queue and volume. 296 + </div> 297 + </div> 298 + <div class="grid-item__menu"> 299 + <button 300 + class="button--transparent" 301 + data-action="toggle" 302 + style="opacity: 0" 303 + title="Bookmark" 304 + > 305 + <i class="ph-bold ph-bookmark"></i> 306 + </button> 307 + <hr /> 308 + <button 309 + class="button--transparent" 310 + title="More actions" 311 + popovertarget="grid-item-menu-3" 312 + > 313 + <i class="ph-bold ph-dots-three-vertical"></i> 314 + </button> 315 + <div id="grid-item-menu-3" class="dropdown" popover> 316 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Fthemes%2Fblur%2Fartwork-controller%2Ffacet%2Findex.html&name=Blur%20%2F%20Artwork%20Controller&kind=interface&description=Audio%20playback%20controller%20with%20an%20artwork%20display.%20Play%20audio%20from%20the%20queue%2C%20add%20tracks%20to%20your%20favourites%2C%20control%20the%20queue%20and%20volume."> 317 + <i class="ph-fill ph-code-block"></i> 318 + Open code in editor 319 + </a> 320 + </div> 321 + </div> 322 + </li> 323 + 324 + 325 + 326 + <li 327 + class="grid-item" 328 + style="--grid-item-color: var(--accent-twist-2)" 329 + data-active-color="var(--accent-twist-2)" 330 + data-description="Collection browser and search with favourite toggling, date grouping, and virtual scrolling." 331 + data-name="Blur / Browser" 332 + data-category="Browsing" 333 + data-kind="interface" 334 + data-tags="" 335 + data-uri="diffuse://themes/blur/browser/facet/index.html" 336 + > 337 + <div class="grid-item__contents"> 338 + <div class="grid-item__title"> 339 + <a href="l/?path=themes%2Fblur%2Fbrowser%2Ffacet%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 340 + Blur / Browser 341 + </a> 342 + <span style="flex: 1"></span> 343 + </div> 344 + <div class="list-description"> 345 + Collection browser and search with favourite toggling, date grouping, and virtual scrolling. 346 + </div> 347 + </div> 348 + <div class="grid-item__menu"> 349 + <button 350 + class="button--transparent" 351 + data-action="toggle" 352 + style="opacity: 0" 353 + title="Bookmark" 354 + > 355 + <i class="ph-bold ph-bookmark"></i> 356 + </button> 357 + <hr /> 358 + <button 359 + class="button--transparent" 360 + title="More actions" 361 + popovertarget="grid-item-menu-4" 362 + > 363 + <i class="ph-bold ph-dots-three-vertical"></i> 364 + </button> 365 + <div id="grid-item-menu-4" class="dropdown" popover> 366 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Fthemes%2Fblur%2Fbrowser%2Ffacet%2Findex.html&name=Blur%20%2F%20Browser&kind=interface&description=Collection%20browser%20and%20search%20with%20favourite%20toggling%2C%20date%20grouping%2C%20and%20virtual%20scrolling."> 367 + <i class="ph-fill ph-code-block"></i> 368 + Open code in editor 369 + </a> 370 + </div> 371 + </div> 372 + </li> 373 + 374 + 375 + 376 + <li 377 + class="grid-item" 378 + style="--grid-item-color: var(--accent-twist-4)" 379 + data-active-color="var(--accent-twist-4)" 380 + data-description="Store tracks locally for offline usage automatically after they've been playing for a little while." 381 + data-name="Cache Tracks" 382 + data-category="Data" 383 + data-kind="prelude" 384 + data-tags="" 385 + data-uri="diffuse://facets/data/cache-tracks/index.html" 386 + > 387 + <div class="grid-item__contents"> 388 + <div class="grid-item__title"> 389 + <span style="color: var(--accent-twist-4); padding: var(--space-3xs) 0"> 390 + Cache Tracks 391 + </span> 392 + <span style="flex: 1"></span> 393 + </div> 394 + <div class="list-description"> 395 + Store tracks locally for offline usage automatically after they've been playing for a little while. 396 + </div> 397 + </div> 398 + <div class="grid-item__menu"> 399 + <button 400 + class="button--transparent" 401 + data-action="toggle" 402 + style="opacity: 0" 403 + title="Add" 404 + > 405 + <i class="ph-bold ph-plus"></i> 406 + </button> 407 + <hr /> 408 + <button 409 + class="button--transparent" 410 + title="More actions" 411 + popovertarget="grid-item-menu-5" 412 + > 413 + <i class="ph-bold ph-dots-three-vertical"></i> 414 + </button> 415 + <div id="grid-item-menu-5" class="dropdown" popover> 416 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fdata%2Fcache-tracks%2Findex.html&name=Cache%20Tracks&kind=prelude&description=Store%20tracks%20locally%20for%20offline%20usage%20automatically%20after%20they've%20been%20playing%20for%20a%20little%20while."> 417 + <i class="ph-fill ph-code-block"></i> 418 + Open code in editor 419 + </a> 420 + </div> 421 + </div> 422 + </li> 423 + 424 + 425 + 426 + <li 427 + class="grid-item" 428 + style="--grid-item-color: var(--accent-twist-2)" 429 + data-active-color="var(--accent-twist-2)" 430 + data-description="A command palette for various actions." 431 + data-name="Command Menu" 432 + data-category="Miscellaneous" 433 + data-kind="interface" 434 + data-tags="" 435 + data-uri="diffuse://facets/misc/command/index.html" 436 + > 437 + <div class="grid-item__contents"> 438 + <div class="grid-item__title"> 439 + <a href="l/?path=facets%2Fmisc%2Fcommand%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 440 + Command Menu 441 + </a> 442 + <span style="flex: 1"></span> 443 + </div> 444 + <div class="list-description"> 445 + A command palette for various actions. 446 + </div> 447 + </div> 448 + <div class="grid-item__menu"> 449 + <button 450 + class="button--transparent" 451 + data-action="toggle" 452 + style="opacity: 0" 453 + title="Bookmark" 454 + > 455 + <i class="ph-bold ph-bookmark"></i> 456 + </button> 457 + <hr /> 458 + <button 459 + class="button--transparent" 460 + title="More actions" 461 + popovertarget="grid-item-menu-6" 462 + > 463 + <i class="ph-bold ph-dots-three-vertical"></i> 464 + </button> 465 + <div id="grid-item-menu-6" class="dropdown" popover> 466 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fmisc%2Fcommand%2Findex.html&name=Command%20Menu&kind=interface&description=A%20command%20palette%20for%20various%20actions."> 467 + <i class="ph-fill ph-code-block"></i> 468 + Open code in editor 469 + </a> 470 + </div> 471 + </div> 472 + </li> 473 + 474 + 475 + 476 + <li 477 + class="grid-item" 478 + style="--grid-item-color: var(--accent-twist-2)" 479 + data-active-color="var(--accent-twist-2)" 480 + data-description="A listing of some of the options available to use as an audio source, or as a user-data storage method." 481 + data-name="Connect" 482 + data-category="Data" 483 + data-kind="interface" 484 + data-tags="" 485 + data-uri="diffuse://facets/connect/index.html" 486 + > 487 + <div class="grid-item__contents"> 488 + <div class="grid-item__title"> 489 + <a href="l/?path=facets%2Fconnect%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 490 + Connect 491 + </a> 492 + <span style="flex: 1"></span> 493 + </div> 494 + <div class="list-description"> 495 + A listing of some of the options available to use as an audio source, or as a user-data storage method. 496 + </div> 497 + </div> 498 + <div class="grid-item__menu"> 499 + <button 500 + class="button--transparent" 501 + data-action="toggle" 502 + style="opacity: 0" 503 + title="Bookmark" 504 + > 505 + <i class="ph-bold ph-bookmark"></i> 506 + </button> 507 + <hr /> 508 + <button 509 + class="button--transparent" 510 + title="More actions" 511 + popovertarget="grid-item-menu-7" 512 + > 513 + <i class="ph-bold ph-dots-three-vertical"></i> 514 + </button> 515 + <div id="grid-item-menu-7" class="dropdown" popover> 516 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fconnect%2Findex.html&name=Connect&kind=interface&description=A%20listing%20of%20some%20of%20the%20options%20available%20to%20use%20as%20an%20audio%20source%2C%20or%20as%20a%20user-data%20storage%20method."> 517 + <i class="ph-fill ph-code-block"></i> 518 + Open code in editor 519 + </a> 520 + </div> 521 + </div> 522 + </li> 523 + 524 + 525 + 526 + <li 527 + class="grid-item" 528 + style="--grid-item-color: var(--accent-twist-2)" 529 + data-active-color="var(--accent-twist-2)" 530 + data-description="Use your AT Protocol identity for user-data storage." 531 + data-name="Connect / AT Protocol" 532 + data-category="Data" 533 + data-kind="interface" 534 + data-tags="" 535 + data-uri="diffuse://facets/connect/atproto/index.html" 536 + > 537 + <div class="grid-item__contents"> 538 + <div class="grid-item__title"> 539 + <a href="l/?path=facets%2Fconnect%2Fatproto%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 540 + Connect / AT Protocol 541 + </a> 542 + <span style="flex: 1"></span> 543 + </div> 544 + <div class="list-description"> 545 + Use your AT Protocol identity for user-data storage. 546 + </div> 547 + </div> 548 + <div class="grid-item__menu"> 549 + <button 550 + class="button--transparent" 551 + data-action="toggle" 552 + style="opacity: 0" 553 + title="Bookmark" 554 + > 555 + <i class="ph-bold ph-bookmark"></i> 556 + </button> 557 + <hr /> 558 + <button 559 + class="button--transparent" 560 + title="More actions" 561 + popovertarget="grid-item-menu-8" 562 + > 563 + <i class="ph-bold ph-dots-three-vertical"></i> 564 + </button> 565 + <div id="grid-item-menu-8" class="dropdown" popover> 566 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fconnect%2Fatproto%2Findex.html&name=Connect%20%2F%20AT%20Protocol&kind=interface&description=Use%20your%20AT%20Protocol%20identity%20for%20user-data%20storage."> 567 + <i class="ph-fill ph-code-block"></i> 568 + Open code in editor 569 + </a> 570 + </div> 571 + </div> 572 + </li> 573 + 574 + 575 + 576 + <li 577 + class="grid-item" 578 + style="--grid-item-color: var(--accent-twist-2)" 579 + data-active-color="var(--accent-twist-2)" 580 + data-description="Add HTTPS URLs as audio sources." 581 + data-name="Connect / HTTPS" 582 + data-category="Data" 583 + data-kind="interface" 584 + data-tags="" 585 + data-uri="diffuse://facets/connect/https/index.html" 586 + > 587 + <div class="grid-item__contents"> 588 + <div class="grid-item__title"> 589 + <a href="l/?path=facets%2Fconnect%2Fhttps%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 590 + Connect / HTTPS 591 + </a> 592 + <span style="flex: 1"></span> 593 + </div> 594 + <div class="list-description"> 595 + Add HTTPS URLs as audio sources. 596 + </div> 597 + </div> 598 + <div class="grid-item__menu"> 599 + <button 600 + class="button--transparent" 601 + data-action="toggle" 602 + style="opacity: 0" 603 + title="Bookmark" 604 + > 605 + <i class="ph-bold ph-bookmark"></i> 606 + </button> 607 + <hr /> 608 + <button 609 + class="button--transparent" 610 + title="More actions" 611 + popovertarget="grid-item-menu-9" 612 + > 613 + <i class="ph-bold ph-dots-three-vertical"></i> 614 + </button> 615 + <div id="grid-item-menu-9" class="dropdown" popover> 616 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fconnect%2Fhttps%2Findex.html&name=Connect%20%2F%20HTTPS&kind=interface&description=Add%20HTTPS%20URLs%20as%20audio%20sources."> 617 + <i class="ph-fill ph-code-block"></i> 618 + Open code in editor 619 + </a> 620 + </div> 621 + </div> 622 + </li> 623 + 624 + 625 + 626 + <li 627 + class="grid-item" 628 + style="--grid-item-color: var(--accent-twist-2)" 629 + data-active-color="var(--accent-twist-2)" 630 + data-description="Add an Icecast stream as an audio source." 631 + data-name="Connect / Icecast" 632 + data-category="Data" 633 + data-kind="interface" 634 + data-tags="" 635 + data-uri="diffuse://facets/connect/icecast/index.html" 636 + > 637 + <div class="grid-item__contents"> 638 + <div class="grid-item__title"> 639 + <a href="l/?path=facets%2Fconnect%2Ficecast%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 640 + Connect / Icecast 641 + </a> 642 + <span style="flex: 1"></span> 643 + </div> 644 + <div class="list-description"> 645 + Add an Icecast stream as an audio source. 646 + </div> 647 + </div> 648 + <div class="grid-item__menu"> 649 + <button 650 + class="button--transparent" 651 + data-action="toggle" 652 + style="opacity: 0" 653 + title="Bookmark" 654 + > 655 + <i class="ph-bold ph-bookmark"></i> 656 + </button> 657 + <hr /> 658 + <button 659 + class="button--transparent" 660 + title="More actions" 661 + popovertarget="grid-item-menu-10" 662 + > 663 + <i class="ph-bold ph-dots-three-vertical"></i> 664 + </button> 665 + <div id="grid-item-menu-10" class="dropdown" popover> 666 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fconnect%2Ficecast%2Findex.html&name=Connect%20%2F%20Icecast&kind=interface&description=Add%20an%20Icecast%20stream%20as%20an%20audio%20source."> 667 + <i class="ph-fill ph-code-block"></i> 668 + Open code in editor 669 + </a> 670 + </div> 671 + </div> 672 + </li> 673 + 674 + 675 + 676 + <li 677 + class="grid-item" 678 + style="--grid-item-color: var(--accent-twist-2)" 679 + data-active-color="var(--accent-twist-2)" 680 + data-description="Add local directories or files as audio sources." 681 + data-name="Connect / Local" 682 + data-category="Data" 683 + data-kind="interface" 684 + data-tags="" 685 + data-uri="diffuse://facets/connect/local/index.html" 686 + > 687 + <div class="grid-item__contents"> 688 + <div class="grid-item__title"> 689 + <a href="l/?path=facets%2Fconnect%2Flocal%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 690 + Connect / Local 691 + </a> 692 + <span style="flex: 1"></span> 693 + </div> 694 + <div class="list-description"> 695 + Add local directories or files as audio sources. 696 + </div> 697 + </div> 698 + <div class="grid-item__menu"> 699 + <button 700 + class="button--transparent" 701 + data-action="toggle" 702 + style="opacity: 0" 703 + title="Bookmark" 704 + > 705 + <i class="ph-bold ph-bookmark"></i> 706 + </button> 707 + <hr /> 708 + <button 709 + class="button--transparent" 710 + title="More actions" 711 + popovertarget="grid-item-menu-11" 712 + > 713 + <i class="ph-bold ph-dots-three-vertical"></i> 714 + </button> 715 + <div id="grid-item-menu-11" class="dropdown" popover> 716 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fconnect%2Flocal%2Findex.html&name=Connect%20%2F%20Local&kind=interface&description=Add%20local%20directories%20or%20files%20as%20audio%20sources."> 717 + <i class="ph-fill ph-code-block"></i> 718 + Open code in editor 719 + </a> 720 + </div> 721 + </div> 722 + </li> 723 + 724 + 725 + 726 + <li 727 + class="grid-item" 728 + style="--grid-item-color: var(--accent-twist-2)" 729 + data-active-color="var(--accent-twist-2)" 730 + data-description="Connect to an OpenSubsonic server for audio input." 731 + data-name="Connect / OpenSubsonic" 732 + data-category="Data" 733 + data-kind="interface" 734 + data-tags="" 735 + data-uri="diffuse://facets/connect/opensubsonic/index.html" 736 + > 737 + <div class="grid-item__contents"> 738 + <div class="grid-item__title"> 739 + <a href="l/?path=facets%2Fconnect%2Fopensubsonic%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 740 + Connect / OpenSubsonic 741 + </a> 742 + <span style="flex: 1"></span> 743 + </div> 744 + <div class="list-description"> 745 + Connect to an OpenSubsonic server for audio input. 746 + </div> 747 + </div> 748 + <div class="grid-item__menu"> 749 + <button 750 + class="button--transparent" 751 + data-action="toggle" 752 + style="opacity: 0" 753 + title="Bookmark" 754 + > 755 + <i class="ph-bold ph-bookmark"></i> 756 + </button> 757 + <hr /> 758 + <button 759 + class="button--transparent" 760 + title="More actions" 761 + popovertarget="grid-item-menu-12" 762 + > 763 + <i class="ph-bold ph-dots-three-vertical"></i> 764 + </button> 765 + <div id="grid-item-menu-12" class="dropdown" popover> 766 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fconnect%2Fopensubsonic%2Findex.html&name=Connect%20%2F%20OpenSubsonic&kind=interface&description=Connect%20to%20an%20OpenSubsonic%20server%20for%20audio%20input."> 767 + <i class="ph-fill ph-code-block"></i> 768 + Open code in editor 769 + </a> 770 + </div> 771 + </div> 772 + </li> 773 + 774 + 775 + 776 + <li 777 + class="grid-item" 778 + style="--grid-item-color: var(--accent-twist-2)" 779 + data-active-color="var(--accent-twist-2)" 780 + data-description="Connect to an S3-compatible storage for audio input or user-data storage." 781 + data-name="Connect / S3" 782 + data-category="Data" 783 + data-kind="interface" 784 + data-tags="" 785 + data-uri="diffuse://facets/connect/s3/index.html" 786 + > 787 + <div class="grid-item__contents"> 788 + <div class="grid-item__title"> 789 + <a href="l/?path=facets%2Fconnect%2Fs3%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 790 + Connect / S3 791 + </a> 792 + <span style="flex: 1"></span> 793 + </div> 794 + <div class="list-description"> 795 + Connect to an S3-compatible storage for audio input or user-data storage. 796 + </div> 797 + </div> 798 + <div class="grid-item__menu"> 799 + <button 800 + class="button--transparent" 801 + data-action="toggle" 802 + style="opacity: 0" 803 + title="Bookmark" 804 + > 805 + <i class="ph-bold ph-bookmark"></i> 806 + </button> 807 + <hr /> 808 + <button 809 + class="button--transparent" 810 + title="More actions" 811 + popovertarget="grid-item-menu-13" 812 + > 813 + <i class="ph-bold ph-dots-three-vertical"></i> 814 + </button> 815 + <div id="grid-item-menu-13" class="dropdown" popover> 816 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fconnect%2Fs3%2Findex.html&name=Connect%20%2F%20S3&kind=interface&description=Connect%20to%20an%20S3-compatible%20storage%20for%20audio%20input%20or%20user-data%20storage."> 817 + <i class="ph-fill ph-code-block"></i> 818 + Open code in editor 819 + </a> 820 + </div> 821 + </div> 822 + </li> 823 + 824 + 825 + 826 + <li 827 + class="grid-item" 828 + style="--grid-item-color: var(--accent-twist-4)" 829 + data-active-color="var(--accent-twist-4)" 830 + data-description="The default setup for track artwork retrieval. Adds support for: embedded audio metadata, Last.fm, and MusicBrainz." 831 + data-name="Default Artwork Bundle" 832 + data-category="Data" 833 + data-kind="prelude" 834 + data-tags="base" 835 + data-uri="diffuse://facets/data/artwork-bundle/index.html" 836 + > 837 + <div class="grid-item__contents"> 838 + <div class="grid-item__title"> 839 + <span style="color: var(--accent-twist-4); padding: var(--space-3xs) 0"> 840 + Default Artwork Bundle 841 + </span> 842 + <span style="flex: 1"></span> 843 + </div> 844 + <div class="list-description"> 845 + The default setup for track artwork retrieval. Adds support for: embedded audio metadata, Last.fm, and MusicBrainz. 846 + </div> 847 + </div> 848 + <div class="grid-item__menu"> 849 + <button 850 + class="button--transparent" 851 + data-action="toggle" 852 + style="opacity: 0" 853 + title="Add" 854 + > 855 + <i class="ph-bold ph-plus"></i> 856 + </button> 857 + <hr /> 858 + <button 859 + class="button--transparent" 860 + title="More actions" 861 + popovertarget="grid-item-menu-14" 862 + > 863 + <i class="ph-bold ph-dots-three-vertical"></i> 864 + </button> 865 + <div id="grid-item-menu-14" class="dropdown" popover> 866 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fdata%2Fartwork-bundle%2Findex.html&name=Default%20Artwork%20Bundle&kind=prelude&description=The%20default%20setup%20for%20track%20artwork%20retrieval.%20Adds%20support%20for%3A%20embedded%20audio%20metadata%2C%20Last.fm%2C%20and%20MusicBrainz."> 867 + <i class="ph-fill ph-code-block"></i> 868 + Open code in editor 869 + </a> 870 + </div> 871 + </div> 872 + </li> 873 + 874 + 875 + 876 + <li 877 + class="grid-item" 878 + style="--grid-item-color: var(--accent-twist-4)" 879 + data-active-color="var(--accent-twist-4)" 880 + data-description="The default setup for audio input sources. Adds support for: HTTPS, Icecast, the local filesystem, OpenSubsonic, and S3-compatible storage." 881 + data-name="Default Input Bundle" 882 + data-category="Data" 883 + data-kind="prelude" 884 + data-tags="base" 885 + data-uri="diffuse://facets/data/input-bundle/index.html" 886 + > 887 + <div class="grid-item__contents"> 888 + <div class="grid-item__title"> 889 + <span style="color: var(--accent-twist-4); padding: var(--space-3xs) 0"> 890 + Default Input Bundle 891 + </span> 892 + <span style="flex: 1"></span> 893 + </div> 894 + <div class="list-description"> 895 + The default setup for audio input sources. Adds support for: HTTPS, Icecast, the local filesystem, OpenSubsonic, and S3-compatible storage. 896 + </div> 897 + </div> 898 + <div class="grid-item__menu"> 899 + <button 900 + class="button--transparent" 901 + data-action="toggle" 902 + style="opacity: 0" 903 + title="Add" 904 + > 905 + <i class="ph-bold ph-plus"></i> 906 + </button> 907 + <hr /> 908 + <button 909 + class="button--transparent" 910 + title="More actions" 911 + popovertarget="grid-item-menu-15" 912 + > 913 + <i class="ph-bold ph-dots-three-vertical"></i> 914 + </button> 915 + <div id="grid-item-menu-15" class="dropdown" popover> 916 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fdata%2Finput-bundle%2Findex.html&name=Default%20Input%20Bundle&kind=prelude&description=The%20default%20setup%20for%20audio%20input%20sources.%20Adds%20support%20for%3A%20HTTPS%2C%20Icecast%2C%20the%20local%20filesystem%2C%20OpenSubsonic%2C%20and%20S3-compatible%20storage."> 917 + <i class="ph-fill ph-code-block"></i> 918 + Open code in editor 919 + </a> 920 + </div> 921 + </div> 922 + </li> 923 + 924 + 925 + 926 + <li 927 + class="grid-item" 928 + style="--grid-item-color: var(--accent-twist-4)" 929 + data-active-color="var(--accent-twist-4)" 930 + data-description="The default setup for track metadata lookups. Reads tags and audio stats from audio files." 931 + data-name="Default Metadata Bundle" 932 + data-category="Data" 933 + data-kind="prelude" 934 + data-tags="base" 935 + data-uri="diffuse://facets/data/metadata-bundle/index.html" 936 + > 937 + <div class="grid-item__contents"> 938 + <div class="grid-item__title"> 939 + <span style="color: var(--accent-twist-4); padding: var(--space-3xs) 0"> 940 + Default Metadata Bundle 941 + </span> 942 + <span style="flex: 1"></span> 943 + </div> 944 + <div class="list-description"> 945 + The default setup for track metadata lookups. Reads tags and audio stats from audio files. 946 + </div> 947 + </div> 948 + <div class="grid-item__menu"> 949 + <button 950 + class="button--transparent" 951 + data-action="toggle" 952 + style="opacity: 0" 953 + title="Add" 954 + > 955 + <i class="ph-bold ph-plus"></i> 956 + </button> 957 + <hr /> 958 + <button 959 + class="button--transparent" 960 + title="More actions" 961 + popovertarget="grid-item-menu-16" 962 + > 963 + <i class="ph-bold ph-dots-three-vertical"></i> 964 + </button> 965 + <div id="grid-item-menu-16" class="dropdown" popover> 966 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fdata%2Fmetadata-bundle%2Findex.html&name=Default%20Metadata%20Bundle&kind=prelude&description=The%20default%20setup%20for%20track%20metadata%20lookups.%20Reads%20tags%20and%20audio%20stats%20from%20audio%20files."> 967 + <i class="ph-fill ph-code-block"></i> 968 + Open code in editor 969 + </a> 970 + </div> 971 + </div> 972 + </li> 973 + 974 + 975 + 976 + <li 977 + class="grid-item" 978 + style="--grid-item-color: var(--accent-twist-4)" 979 + data-active-color="var(--accent-twist-4)" 980 + 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." 981 + data-name="Default Output Bundle" 982 + data-category="Data" 983 + data-kind="prelude" 984 + data-tags="base" 985 + data-uri="diffuse://facets/data/output-bundle/index.html" 986 + > 987 + <div class="grid-item__contents"> 988 + <div class="grid-item__title"> 989 + <span style="color: var(--accent-twist-4); padding: var(--space-3xs) 0"> 990 + Default Output Bundle 991 + </span> 992 + <span style="flex: 1"></span> 993 + </div> 994 + <div class="list-description"> 995 + 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. 996 + </div> 997 + </div> 998 + <div class="grid-item__menu"> 999 + <button 1000 + class="button--transparent" 1001 + data-action="toggle" 1002 + style="opacity: 0" 1003 + title="Add" 1004 + > 1005 + <i class="ph-bold ph-plus"></i> 1006 + </button> 1007 + <hr /> 1008 + <button 1009 + class="button--transparent" 1010 + title="More actions" 1011 + popovertarget="grid-item-menu-17" 1012 + > 1013 + <i class="ph-bold ph-dots-three-vertical"></i> 1014 + </button> 1015 + <div id="grid-item-menu-17" class="dropdown" popover> 1016 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fdata%2Foutput-bundle%2Findex.html&name=Default%20Output%20Bundle&kind=prelude&description=The%20default%20setup%20for%20user-data%20storage%20output.%20Adds%20support%20for%3A%20AT%20Protocol%20and%20S3-compatible%20storage.%20For%20both%20of%20these%20a%20custom%20local-first%20syncing%20algorithm%20is%20used."> 1017 + <i class="ph-fill ph-code-block"></i> 1018 + Open code in editor 1019 + </a> 1020 + </div> 1021 + </div> 1022 + </li> 1023 + 1024 + 1025 + 1026 + <li 1027 + class="grid-item" 1028 + style="--grid-item-color: var(--accent-twist-2)" 1029 + data-active-color="var(--accent-twist-2)" 1030 + data-description="Export all data as a JSON snapshot, or restore from a previously exported file." 1031 + data-name="Export & Import" 1032 + data-category="Data" 1033 + data-kind="interface" 1034 + data-tags="" 1035 + data-uri="diffuse://facets/data/export-import/index.html" 1036 + > 1037 + <div class="grid-item__contents"> 1038 + <div class="grid-item__title"> 1039 + <a href="l/?path=facets%2Fdata%2Fexport-import%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 1040 + Export & Import 1041 + </a> 1042 + <span style="flex: 1"></span> 1043 + </div> 1044 + <div class="list-description"> 1045 + Export all data as a JSON snapshot, or restore from a previously exported file. 1046 + </div> 1047 + </div> 1048 + <div class="grid-item__menu"> 1049 + <button 1050 + class="button--transparent" 1051 + data-action="toggle" 1052 + style="opacity: 0" 1053 + title="Bookmark" 1054 + > 1055 + <i class="ph-bold ph-bookmark"></i> 1056 + </button> 1057 + <hr /> 1058 + <button 1059 + class="button--transparent" 1060 + title="More actions" 1061 + popovertarget="grid-item-menu-18" 1062 + > 1063 + <i class="ph-bold ph-dots-three-vertical"></i> 1064 + </button> 1065 + <div id="grid-item-menu-18" class="dropdown" popover> 1066 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fdata%2Fexport-import%2Findex.html&name=Export%20%26%20Import&kind=interface&description=Export%20all%20data%20as%20a%20JSON%20snapshot%2C%20or%20restore%20from%20a%20previously%20exported%20file."> 1067 + <i class="ph-fill ph-code-block"></i> 1068 + Open code in editor 1069 + </a> 1070 + </div> 1071 + </div> 1072 + </li> 1073 + 1074 + 1075 + 1076 + <li 1077 + class="grid-item" 1078 + style="--grid-item-color: var(--accent-twist-2)" 1079 + data-active-color="var(--accent-twist-2)" 1080 + data-description="An overview of all playlists and their contents." 1081 + data-name="Playlists" 1082 + data-category="Data" 1083 + data-kind="interface" 1084 + data-tags="" 1085 + data-uri="diffuse://facets/data/playlists/index.html" 1086 + > 1087 + <div class="grid-item__contents"> 1088 + <div class="grid-item__title"> 1089 + <a href="l/?path=facets%2Fdata%2Fplaylists%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 1090 + Playlists 1091 + </a> 1092 + <span style="flex: 1"></span> 1093 + </div> 1094 + <div class="list-description"> 1095 + An overview of all playlists and their contents. 1096 + </div> 1097 + </div> 1098 + <div class="grid-item__menu"> 1099 + <button 1100 + class="button--transparent" 1101 + data-action="toggle" 1102 + style="opacity: 0" 1103 + title="Bookmark" 1104 + > 1105 + <i class="ph-bold ph-bookmark"></i> 1106 + </button> 1107 + <hr /> 1108 + <button 1109 + class="button--transparent" 1110 + title="More actions" 1111 + popovertarget="grid-item-menu-19" 1112 + > 1113 + <i class="ph-bold ph-dots-three-vertical"></i> 1114 + </button> 1115 + <div id="grid-item-menu-19" class="dropdown" popover> 1116 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fdata%2Fplaylists%2Findex.html&name=Playlists&kind=interface&description=An%20overview%20of%20all%20playlists%20and%20their%20contents."> 1117 + <i class="ph-fill ph-code-block"></i> 1118 + Open code in editor 1119 + </a> 1120 + </div> 1121 + </div> 1122 + </li> 1123 + 1124 + 1125 + 1126 + <li 1127 + class="grid-item" 1128 + style="--grid-item-color: var(--accent-twist-4)" 1129 + data-active-color="var(--accent-twist-4)" 1130 + data-description="Automatically preload the next track in the queue." 1131 + data-name="Preload Tracks" 1132 + data-category="Playback" 1133 + data-kind="prelude" 1134 + data-tags="" 1135 + data-uri="diffuse://facets/playback/preload/prelude/index.html" 1136 + > 1137 + <div class="grid-item__contents"> 1138 + <div class="grid-item__title"> 1139 + <span style="color: var(--accent-twist-4); padding: var(--space-3xs) 0"> 1140 + Preload Tracks 1141 + </span> 1142 + <span style="flex: 1"></span> 1143 + </div> 1144 + <div class="list-description"> 1145 + Automatically preload the next track in the queue. 1146 + </div> 1147 + </div> 1148 + <div class="grid-item__menu"> 1149 + <button 1150 + class="button--transparent" 1151 + data-action="toggle" 1152 + style="opacity: 0" 1153 + title="Add" 1154 + > 1155 + <i class="ph-bold ph-plus"></i> 1156 + </button> 1157 + <hr /> 1158 + <button 1159 + class="button--transparent" 1160 + title="More actions" 1161 + popovertarget="grid-item-menu-20" 1162 + > 1163 + <i class="ph-bold ph-dots-three-vertical"></i> 1164 + </button> 1165 + <div id="grid-item-menu-20" class="dropdown" popover> 1166 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fplayback%2Fpreload%2Fprelude%2Findex.html&name=Preload%20Tracks&kind=prelude&description=Automatically%20preload%20the%20next%20track%20in%20the%20queue."> 1167 + <i class="ph-fill ph-code-block"></i> 1168 + Open code in editor 1169 + </a> 1170 + </div> 1171 + </div> 1172 + </li> 1173 + 1174 + 1175 + 1176 + <li 1177 + class="grid-item" 1178 + style="--grid-item-color: var(--accent-twist-4)" 1179 + data-active-color="var(--accent-twist-4)" 1180 + 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." 1181 + data-name="Process Tracks" 1182 + data-category="Data" 1183 + data-kind="prelude" 1184 + data-tags="" 1185 + data-uri="diffuse://facets/data/process-tracks/prelude/index.html" 1186 + > 1187 + <div class="grid-item__contents"> 1188 + <div class="grid-item__title"> 1189 + <span style="color: var(--accent-twist-4); padding: var(--space-3xs) 0"> 1190 + Process Tracks 1191 + </span> 1192 + <span style="flex: 1"></span> 1193 + </div> 1194 + <div class="list-description"> 1195 + Process all your audio inputs into tracks automatically when opening any interface. Only happens once every 10 minutes, if the processing was completed. 1196 + </div> 1197 + </div> 1198 + <div class="grid-item__menu"> 1199 + <button 1200 + class="button--transparent" 1201 + data-action="toggle" 1202 + style="opacity: 0" 1203 + title="Add" 1204 + > 1205 + <i class="ph-bold ph-plus"></i> 1206 + </button> 1207 + <hr /> 1208 + <button 1209 + class="button--transparent" 1210 + title="More actions" 1211 + popovertarget="grid-item-menu-21" 1212 + > 1213 + <i class="ph-bold ph-dots-three-vertical"></i> 1214 + </button> 1215 + <div id="grid-item-menu-21" class="dropdown" popover> 1216 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fdata%2Fprocess-tracks%2Fprelude%2Findex.html&name=Process%20Tracks&kind=prelude&description=Process%20all%20your%20audio%20inputs%20into%20tracks%20automatically%20when%20opening%20any%20interface.%20Only%20happens%20once%20every%2010%20minutes%2C%20if%20the%20processing%20was%20completed."> 1217 + <i class="ph-fill ph-code-block"></i> 1218 + Open code in editor 1219 + </a> 1220 + </div> 1221 + </div> 1222 + </li> 1223 + 1224 + 1225 + 1226 + <li 1227 + class="grid-item" 1228 + style="--grid-item-color: var(--accent-twist-2)" 1229 + data-active-color="var(--accent-twist-2)" 1230 + data-description="Process all your audio sources into tracks. Shows a progress bar when processing is occuring." 1231 + data-name="Process Tracks" 1232 + data-category="Data" 1233 + data-kind="interface" 1234 + data-tags="" 1235 + data-uri="diffuse://facets/data/process-tracks/index.html" 1236 + > 1237 + <div class="grid-item__contents"> 1238 + <div class="grid-item__title"> 1239 + <a href="l/?path=facets%2Fdata%2Fprocess-tracks%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 1240 + Process Tracks 1241 + </a> 1242 + <span style="flex: 1"></span> 1243 + </div> 1244 + <div class="list-description"> 1245 + Process all your audio sources into tracks. Shows a progress bar when processing is occuring. 1246 + </div> 1247 + </div> 1248 + <div class="grid-item__menu"> 1249 + <button 1250 + class="button--transparent" 1251 + data-action="toggle" 1252 + style="opacity: 0" 1253 + title="Bookmark" 1254 + > 1255 + <i class="ph-bold ph-bookmark"></i> 1256 + </button> 1257 + <hr /> 1258 + <button 1259 + class="button--transparent" 1260 + title="More actions" 1261 + popovertarget="grid-item-menu-22" 1262 + > 1263 + <i class="ph-bold ph-dots-three-vertical"></i> 1264 + </button> 1265 + <div id="grid-item-menu-22" class="dropdown" popover> 1266 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fdata%2Fprocess-tracks%2Findex.html&name=Process%20Tracks&kind=interface&description=Process%20all%20your%20audio%20sources%20into%20tracks.%20Shows%20a%20progress%20bar%20when%20processing%20is%20occuring."> 1267 + <i class="ph-fill ph-code-block"></i> 1268 + Open code in editor 1269 + </a> 1270 + </div> 1271 + </div> 1272 + </li> 1273 + 1274 + 1275 + 1276 + <li 1277 + class="grid-item" 1278 + style="--grid-item-color: var(--accent-twist-4)" 1279 + data-active-color="var(--accent-twist-4)" 1280 + data-description="Enable scrobbling, keep track of what you're listening to. Adds support for these scrobblers: Last.fm, ListenBrainz, Rocksky" 1281 + data-name="Scrobble" 1282 + data-category="Miscellaneous" 1283 + data-kind="prelude" 1284 + data-tags="" 1285 + data-uri="diffuse://facets/misc/scrobble/index.html" 1286 + > 1287 + <div class="grid-item__contents"> 1288 + <div class="grid-item__title"> 1289 + <span style="color: var(--accent-twist-4); padding: var(--space-3xs) 0"> 1290 + Scrobble 1291 + </span> 1292 + <span style="flex: 1"></span> 1293 + </div> 1294 + <div class="list-description"> 1295 + Enable scrobbling, keep track of what you're listening to. Adds support for these scrobblers: Last.fm, ListenBrainz, Rocksky 1296 + </div> 1297 + </div> 1298 + <div class="grid-item__menu"> 1299 + <button 1300 + class="button--transparent" 1301 + data-action="toggle" 1302 + style="opacity: 0" 1303 + title="Add" 1304 + > 1305 + <i class="ph-bold ph-plus"></i> 1306 + </button> 1307 + <hr /> 1308 + <button 1309 + class="button--transparent" 1310 + title="More actions" 1311 + popovertarget="grid-item-menu-23" 1312 + > 1313 + <i class="ph-bold ph-dots-three-vertical"></i> 1314 + </button> 1315 + <div id="grid-item-menu-23" class="dropdown" popover> 1316 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fmisc%2Fscrobble%2Findex.html&name=Scrobble&kind=prelude&description=Enable%20scrobbling%2C%20keep%20track%20of%20what%20you're%20listening%20to.%20Adds%20support%20for%20these%20scrobblers%3A%20Last.fm%2C%20ListenBrainz%2C%20Rocksky"> 1317 + <i class="ph-fill ph-code-block"></i> 1318 + Open code in editor 1319 + </a> 1320 + </div> 1321 + </div> 1322 + </li> 1323 + 1324 + 1325 + 1326 + <li 1327 + class="grid-item" 1328 + style="--grid-item-color: var(--accent-twist-2)" 1329 + data-active-color="var(--accent-twist-2)" 1330 + data-description="Connect to Last.fm to setup the Last.fm scrobbler." 1331 + data-name="Scrobble / Last.fm" 1332 + data-category="Miscellaneous" 1333 + data-kind="interface" 1334 + data-tags="" 1335 + data-uri="diffuse://facets/misc/scrobble/last.fm/index.html" 1336 + > 1337 + <div class="grid-item__contents"> 1338 + <div class="grid-item__title"> 1339 + <a href="l/?path=facets%2Fmisc%2Fscrobble%2Flast.fm%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 1340 + Scrobble / Last.fm 1341 + </a> 1342 + <span style="flex: 1"></span> 1343 + </div> 1344 + <div class="list-description"> 1345 + Connect to Last.fm to setup the Last.fm scrobbler. 1346 + </div> 1347 + </div> 1348 + <div class="grid-item__menu"> 1349 + <button 1350 + class="button--transparent" 1351 + data-action="toggle" 1352 + style="opacity: 0" 1353 + title="Bookmark" 1354 + > 1355 + <i class="ph-bold ph-bookmark"></i> 1356 + </button> 1357 + <hr /> 1358 + <button 1359 + class="button--transparent" 1360 + title="More actions" 1361 + popovertarget="grid-item-menu-24" 1362 + > 1363 + <i class="ph-bold ph-dots-three-vertical"></i> 1364 + </button> 1365 + <div id="grid-item-menu-24" class="dropdown" popover> 1366 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fmisc%2Fscrobble%2Flast.fm%2Findex.html&name=Scrobble%20%2F%20Last.fm&kind=interface&description=Connect%20to%20Last.fm%20to%20setup%20the%20Last.fm%20scrobbler."> 1367 + <i class="ph-fill ph-code-block"></i> 1368 + Open code in editor 1369 + </a> 1370 + </div> 1371 + </div> 1372 + </li> 1373 + 1374 + 1375 + 1376 + <li 1377 + class="grid-item" 1378 + style="--grid-item-color: var(--accent-twist-2)" 1379 + data-active-color="var(--accent-twist-2)" 1380 + data-description="Connect to ListenBrainz to setup the ListenBrainz scrobbler." 1381 + data-name="Scrobble / ListenBrainz" 1382 + data-category="Miscellaneous" 1383 + data-kind="interface" 1384 + data-tags="" 1385 + data-uri="diffuse://facets/misc/scrobble/listenbrainz/index.html" 1386 + > 1387 + <div class="grid-item__contents"> 1388 + <div class="grid-item__title"> 1389 + <a href="l/?path=facets%2Fmisc%2Fscrobble%2Flistenbrainz%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 1390 + Scrobble / ListenBrainz 1391 + </a> 1392 + <span style="flex: 1"></span> 1393 + </div> 1394 + <div class="list-description"> 1395 + Connect to ListenBrainz to setup the ListenBrainz scrobbler. 1396 + </div> 1397 + </div> 1398 + <div class="grid-item__menu"> 1399 + <button 1400 + class="button--transparent" 1401 + data-action="toggle" 1402 + style="opacity: 0" 1403 + title="Bookmark" 1404 + > 1405 + <i class="ph-bold ph-bookmark"></i> 1406 + </button> 1407 + <hr /> 1408 + <button 1409 + class="button--transparent" 1410 + title="More actions" 1411 + popovertarget="grid-item-menu-25" 1412 + > 1413 + <i class="ph-bold ph-dots-three-vertical"></i> 1414 + </button> 1415 + <div id="grid-item-menu-25" class="dropdown" popover> 1416 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fmisc%2Fscrobble%2Flistenbrainz%2Findex.html&name=Scrobble%20%2F%20ListenBrainz&kind=interface&description=Connect%20to%20ListenBrainz%20to%20setup%20the%20ListenBrainz%20scrobbler."> 1417 + <i class="ph-fill ph-code-block"></i> 1418 + Open code in editor 1419 + </a> 1420 + </div> 1421 + </div> 1422 + </li> 1423 + 1424 + 1425 + 1426 + <li 1427 + class="grid-item" 1428 + style="--grid-item-color: var(--accent-twist-2)" 1429 + data-active-color="var(--accent-twist-2)" 1430 + data-description="Connect to Rocksky to setup the Rocksky scrobbler." 1431 + data-name="Scrobble / Rocksky" 1432 + data-category="Miscellaneous" 1433 + data-kind="interface" 1434 + data-tags="" 1435 + data-uri="diffuse://facets/misc/scrobble/rocksky/index.html" 1436 + > 1437 + <div class="grid-item__contents"> 1438 + <div class="grid-item__title"> 1439 + <a href="l/?path=facets%2Fmisc%2Fscrobble%2Frocksky%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 1440 + Scrobble / Rocksky 1441 + </a> 1442 + <span style="flex: 1"></span> 1443 + </div> 1444 + <div class="list-description"> 1445 + Connect to Rocksky to setup the Rocksky scrobbler. 1446 + </div> 1447 + </div> 1448 + <div class="grid-item__menu"> 1449 + <button 1450 + class="button--transparent" 1451 + data-action="toggle" 1452 + style="opacity: 0" 1453 + title="Bookmark" 1454 + > 1455 + <i class="ph-bold ph-bookmark"></i> 1456 + </button> 1457 + <hr /> 1458 + <button 1459 + class="button--transparent" 1460 + title="More actions" 1461 + popovertarget="grid-item-menu-26" 1462 + > 1463 + <i class="ph-bold ph-dots-three-vertical"></i> 1464 + </button> 1465 + <div id="grid-item-menu-26" class="dropdown" popover> 1466 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fmisc%2Fscrobble%2Frocksky%2Findex.html&name=Scrobble%20%2F%20Rocksky&kind=interface&description=Connect%20to%20Rocksky%20to%20setup%20the%20Rocksky%20scrobbler."> 1467 + <i class="ph-fill ph-code-block"></i> 1468 + Open code in editor 1469 + </a> 1470 + </div> 1471 + </div> 1472 + </li> 1473 + 1474 + 1475 + 1476 + <li 1477 + class="grid-item" 1478 + style="--grid-item-color: var(--accent-twist-2)" 1479 + data-active-color="var(--accent-twist-2)" 1480 + data-description="An overview of all audio inputs. Disable a source to hide its tracks without removing them." 1481 + data-name="Sources" 1482 + data-category="Data" 1483 + data-kind="interface" 1484 + data-tags="" 1485 + data-uri="diffuse://facets/data/sources/index.html" 1486 + > 1487 + <div class="grid-item__contents"> 1488 + <div class="grid-item__title"> 1489 + <a href="l/?path=facets%2Fdata%2Fsources%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 1490 + Sources 1491 + </a> 1492 + <span style="flex: 1"></span> 1493 + </div> 1494 + <div class="list-description"> 1495 + An overview of all audio inputs. Disable a source to hide its tracks without removing them. 1496 + </div> 1497 + </div> 1498 + <div class="grid-item__menu"> 1499 + <button 1500 + class="button--transparent" 1501 + data-action="toggle" 1502 + style="opacity: 0" 1503 + title="Bookmark" 1504 + > 1505 + <i class="ph-bold ph-bookmark"></i> 1506 + </button> 1507 + <hr /> 1508 + <button 1509 + class="button--transparent" 1510 + title="More actions" 1511 + popovertarget="grid-item-menu-27" 1512 + > 1513 + <i class="ph-bold ph-dots-three-vertical"></i> 1514 + </button> 1515 + <div id="grid-item-menu-27" class="dropdown" popover> 1516 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fdata%2Fsources%2Findex.html&name=Sources&kind=interface&description=An%20overview%20of%20all%20audio%20inputs.%20Disable%20a%20source%20to%20hide%20its%20tracks%20without%20removing%20them."> 1517 + <i class="ph-fill ph-code-block"></i> 1518 + Open code in editor 1519 + </a> 1520 + </div> 1521 + </div> 1522 + </li> 1523 + 1524 + 1525 + 1526 + <li 1527 + class="grid-item" 1528 + style="--grid-item-color: var(--accent-twist-2)" 1529 + data-active-color="var(--accent-twist-2)" 1530 + data-description="Arrange multiple facets side-by-side in a resizable split-panel layout." 1531 + data-name="Split View" 1532 + data-category="Miscellaneous" 1533 + data-kind="interface" 1534 + data-tags="" 1535 + data-uri="diffuse://facets/misc/split-view/index.html" 1536 + > 1537 + <div class="grid-item__contents"> 1538 + <div class="grid-item__title"> 1539 + <a href="l/?path=facets%2Fmisc%2Fsplit-view%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 1540 + Split View 1541 + </a> 1542 + <span style="flex: 1"></span> 1543 + </div> 1544 + <div class="list-description"> 1545 + Arrange multiple facets side-by-side in a resizable split-panel layout. 1546 + </div> 1547 + </div> 1548 + <div class="grid-item__menu"> 1549 + <button 1550 + class="button--transparent" 1551 + data-action="toggle" 1552 + style="opacity: 0" 1553 + title="Bookmark" 1554 + > 1555 + <i class="ph-bold ph-bookmark"></i> 1556 + </button> 1557 + <hr /> 1558 + <button 1559 + class="button--transparent" 1560 + title="More actions" 1561 + popovertarget="grid-item-menu-28" 1562 + > 1563 + <i class="ph-bold ph-dots-three-vertical"></i> 1564 + </button> 1565 + <div id="grid-item-menu-28" class="dropdown" popover> 1566 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fmisc%2Fsplit-view%2Findex.html&name=Split%20View&kind=interface&description=Arrange%20multiple%20facets%20side-by-side%20in%20a%20resizable%20split-panel%20layout."> 1567 + <i class="ph-fill ph-code-block"></i> 1568 + Open code in editor 1569 + </a> 1570 + </div> 1571 + </div> 1572 + </li> 1573 + 1574 + 1575 + 1576 + <li 1577 + class="grid-item" 1578 + style="--grid-item-color: var(--accent-twist-2)" 1579 + data-active-color="var(--accent-twist-2)" 1580 + data-description="Import data from Diffuse v3." 1581 + data-name="V3.x Import" 1582 + data-category="Data" 1583 + data-kind="interface" 1584 + data-tags="" 1585 + data-uri="diffuse://facets/data/v3-import/index.html" 1586 + > 1587 + <div class="grid-item__contents"> 1588 + <div class="grid-item__title"> 1589 + <a href="l/?path=facets%2Fdata%2Fv3-import%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 1590 + V3.x Import 1591 + </a> 1592 + <span style="flex: 1"></span> 1593 + </div> 1594 + <div class="list-description"> 1595 + Import data from Diffuse v3. 1596 + </div> 1597 + </div> 1598 + <div class="grid-item__menu"> 1599 + <button 1600 + class="button--transparent" 1601 + data-action="toggle" 1602 + style="opacity: 0" 1603 + title="Bookmark" 1604 + > 1605 + <i class="ph-bold ph-bookmark"></i> 1606 + </button> 1607 + <hr /> 1608 + <button 1609 + class="button--transparent" 1610 + title="More actions" 1611 + popovertarget="grid-item-menu-29" 1612 + > 1613 + <i class="ph-bold ph-dots-three-vertical"></i> 1614 + </button> 1615 + <div id="grid-item-menu-29" class="dropdown" popover> 1616 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fdata%2Fv3-import%2Findex.html&name=V3.x%20Import&kind=interface&description=Import%20data%20from%20Diffuse%20v3."> 1617 + <i class="ph-fill ph-code-block"></i> 1618 + Open code in editor 1619 + </a> 1620 + </div> 1621 + </div> 1622 + </li> 1623 + 1624 + 1625 + 1626 + <li 1627 + class="grid-item" 1628 + style="--grid-item-color: var(--accent-twist-2)" 1629 + data-active-color="var(--accent-twist-2)" 1630 + 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." 1631 + data-name="Winamp" 1632 + data-category="Themes" 1633 + data-kind="interface" 1634 + data-tags="" 1635 + data-uri="diffuse://themes/winamp/facet/index.html" 1636 + > 1637 + <div class="grid-item__contents"> 1638 + <div class="grid-item__title"> 1639 + <a href="l/?path=themes%2Fwinamp%2Ffacet%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 1640 + Winamp 1641 + </a> 1642 + <span style="flex: 1"></span> 1643 + </div> 1644 + <div class="list-description"> 1645 + 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. 1646 + </div> 1647 + </div> 1648 + <div class="grid-item__menu"> 1649 + <button 1650 + class="button--transparent" 1651 + data-action="toggle" 1652 + style="opacity: 0" 1653 + title="Bookmark" 1654 + > 1655 + <i class="ph-bold ph-bookmark"></i> 1656 + </button> 1657 + <hr /> 1658 + <button 1659 + class="button--transparent" 1660 + title="More actions" 1661 + popovertarget="grid-item-menu-30" 1662 + > 1663 + <i class="ph-bold ph-dots-three-vertical"></i> 1664 + </button> 1665 + <div id="grid-item-menu-30" class="dropdown" popover> 1666 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Fthemes%2Fwinamp%2Ffacet%2Findex.html&name=Winamp&kind=interface&description=Windows%2098%20inspired%20theme%20with%20a%20classic%20Winamp%20skin%20for%20the%20audio%20player.%20The%20Winamp%20playlist%20is%20a%20combination%20of%20the%20queue's%20history%2C%20the%20track%20that's%20currently%20playing%20and%20the%20future%20queue%20items."> 1667 + <i class="ph-fill ph-code-block"></i> 1668 + Open code in editor 1669 + </a> 1670 + </div> 1671 + </div> 1672 + </li> 1673 + 1674 + 1675 + 1676 + <li 1677 + class="grid-item" 1678 + style="--grid-item-color: var(--accent-twist-2)" 1679 + data-active-color="var(--accent-twist-2)" 1680 + data-description="Collection browser and search." 1681 + data-name="Winamp / Browser" 1682 + data-category="Browsing" 1683 + data-kind="interface" 1684 + data-tags="" 1685 + data-uri="diffuse://themes/winamp/browser/facet/index.html" 1686 + > 1687 + <div class="grid-item__contents"> 1688 + <div class="grid-item__title"> 1689 + <a href="l/?path=themes%2Fwinamp%2Fbrowser%2Ffacet%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 1690 + Winamp / Browser 1691 + </a> 1692 + <span style="flex: 1"></span> 1693 + </div> 1694 + <div class="list-description"> 1695 + Collection browser and search. 1696 + </div> 1697 + </div> 1698 + <div class="grid-item__menu"> 1699 + <button 1700 + class="button--transparent" 1701 + data-action="toggle" 1702 + style="opacity: 0" 1703 + title="Bookmark" 1704 + > 1705 + <i class="ph-bold ph-bookmark"></i> 1706 + </button> 1707 + <hr /> 1708 + <button 1709 + class="button--transparent" 1710 + title="More actions" 1711 + popovertarget="grid-item-menu-31" 1712 + > 1713 + <i class="ph-bold ph-dots-three-vertical"></i> 1714 + </button> 1715 + <div id="grid-item-menu-31" class="dropdown" popover> 1716 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Fthemes%2Fwinamp%2Fbrowser%2Ffacet%2Findex.html&name=Winamp%20%2F%20Browser&kind=interface&description=Collection%20browser%20and%20search."> 1717 + <i class="ph-fill ph-code-block"></i> 1718 + Open code in editor 1719 + </a> 1720 + </div> 1721 + </div> 1722 + </li> 1723 + </ul> 1724 + 1725 + </section> 1726 + 1727 + </main> 1728 + 1729 + 1730 + <!-- Import map --> 1731 + <script type="importmap"> 1732 + { 1733 + "imports": { 1734 + "~/": "./", 1735 + 1736 + "@awesome.me/webawesome/dist/": "./vendor/@awesome.me/webawesome/", 1737 + "@awesome.me/webawesome/dist-cdn/": "./vendor/@awesome.me/webawesome/", 1738 + "@phosphor-icons/web/": "./vendor/@phosphor-icons/web/", 1739 + 1740 + "@atcute/cbor": "./vendor/@atcute/cbor/index.js", 1741 + "@atcute/oauth-browser-client": "./vendor/@atcute/oauth-browser-client/index.js", 1742 + "@atcute/tid": "./vendor/@atcute/tid/index.js", 1743 + "idb-keyval": "./vendor/idb-keyval/index.js", 1744 + "kmenu": "./vendor/kmenu-core/index.js", 1745 + "lit-html": "./vendor/lit-html/index.js", 1746 + "throttle-debounce": "./vendor/throttle-debounce/index.js" 1747 + } 1748 + } 1749 + </script> 1750 + 1751 + <!-- Make every touched URL available offline --> 1752 + <do-offline></do-offline> 1753 + <script src="components/orchestrator/offline/element.js" type="module"></script> 1754 + 1755 + <!-- Scripts --> 1756 + <script src="common/pages/ppr.js" type="module"></script> 1757 + <script src="common/pages/version-upgrade.js" type="module"></script> 1758 + </body> 1759 + </html>
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/catalogue/index.html.br

This is a binary file and will not be displayed.

+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-23J7PJHO.js
··· 1 + import{o as c}from"./chunk-YHFKI4Y2.js";import{a as s}from"./chunk-BFIVCPQF.js";var q=new URL(document.location.href),a=q.searchParams.get("group")??"facets",o={configurator:{artwork:c(null),metadata:c(null),input:c(null),scrobbles:c(null)},engine:{audio:c(null),queue:c(null),repeatShuffle:c(null),scope:c(null)},orchestrator:{artwork:c(null),controller:c(null),autoQueue:c(null),favourites:c(null),mediaSession:c(null),output:c(null),pathCollections:c(null),processTracks:c(null),queueAudio:c(null),scopedTracks:c(null),scrobbleAudio:c(null),sources:c(null)}},m={GROUP:a,configurator:{artwork:S,metadata:h,input:d,scrobbles:w},engine:{audio:g,queue:b,repeatShuffle:f,scope:y},orchestrator:{artwork:C,controller:O,autoQueue:L,favourites:P,mediaSession:T,output:p,pathCollections:E,processTracks:v,queueAudio:Q,scopedTracks:k,scrobbleAudio:x,sources:R},signals:{configurator:{artwork:o.configurator.artwork.get,metadata:o.configurator.metadata.get,input:o.configurator.input.get,scrobbles:o.configurator.scrobbles.get},engine:{audio:o.engine.audio.get,queue:o.engine.queue.get,repeatShuffle:o.engine.repeatShuffle.get,scope:o.engine.scope.get},orchestrator:{artwork:o.orchestrator.artwork.get,controller:o.orchestrator.controller.get,autoQueue:o.orchestrator.autoQueue.get,favourites:o.orchestrator.favourites.get,mediaSession:o.orchestrator.mediaSession.get,output:o.orchestrator.output.get,pathCollections:o.orchestrator.pathCollections.get,processTracks:o.orchestrator.processTracks.get,queueAudio:o.orchestrator.queueAudio.get,scopedTracks:o.orchestrator.scopedTracks.get,scrobbleAudio:o.orchestrator.scrobbleAudio.get,sources:o.orchestrator.sources.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},"setup"),ready:s(()=>{m.hideLoader(),requestAnimationFrame(()=>{requestAnimationFrame(()=>{document.querySelector("#container")?.classList.add("has-loaded")})})},"ready")},M=m;async function S(){let{CLASS:e}=await import("./components/configurator/artwork/element.js"),t=new e;return t.setAttribute("group",a),t.setAttribute("id","artwork"),i(t,o.configurator.artwork)}s(S,"configuratorArtwork");async function h(){let{CLASS:e}=await import("./components/configurator/metadata/element.js"),t=new e;return t.setAttribute("group",a),t.setAttribute("id","metadata"),i(t,o.configurator.metadata)}s(h,"configuratorMetadata");async function d(){let{CLASS:e}=await import("./components/configurator/input/element.js"),t=new e;return t.setAttribute("group",a),t.setAttribute("id","input"),i(t,o.configurator.input)}s(d,"input");async function w(){let{CLASS:e}=await import("./components/configurator/scrobbles/element.js"),t=new e;t.setAttribute("group",a),t.setAttribute("id","scrobbles");let r=document.body.querySelector(t.selector);return r||(document.body.append(t),t)}s(w,"scrobbles");async function g(){let{CLASS:e}=await import("./components/engine/audio/element.js"),t=new e;return t.setAttribute("group",a),i(t,o.engine.audio)}s(g,"audio");async function b(){let{CLASS:e}=await import("./components/engine/queue/element.js"),t=new e;return t.setAttribute("group",a),i(t,o.engine.queue)}s(b,"queue");async function f(){let{CLASS:e}=await import("./components/engine/repeat-shuffle/element.js"),t=new e;return t.setAttribute("group",a),i(t,o.engine.repeatShuffle)}s(f,"repeatShuffle");async function y(){let{CLASS:e}=await import("./components/engine/scope/element.js"),t=new e;return t.setAttribute("group",a),i(t,o.engine.scope)}s(y,"scope");async function C(){let[{CLASS:e},t]=await Promise.all([import("./components/orchestrator/artwork/element.js"),S()]),r=new e;return r.setAttribute("group",a),r.setAttribute("artwork-selector",t.selector),i(r,o.orchestrator.artwork)}s(C,"artwork");async function L(){let[{CLASS:e},t,r,n]=await Promise.all([import("./components/orchestrator/auto-queue/element.js"),b(),f(),k()]),u=new e;return u.setAttribute("group",a),u.setAttribute("queue-engine-selector",t.selector),u.setAttribute("repeat-shuffle-engine-selector",r.selector),u.setAttribute("tracks-selector",n.selector),i(u,o.orchestrator.autoQueue)}s(L,"autoQueue");async function O(){let[{CLASS:e},t,r,n]=await Promise.all([import("./components/orchestrator/controller/element.js"),g(),p(),b()]),u=new e;return u.setAttribute("audio-engine-selector",t.selector),u.setAttribute("output-selector",r.selector),u.setAttribute("queue-engine-selector",n.selector),i(u,o.orchestrator.controller)}s(O,"controller");async function P(){let[{CLASS:e},t]=await Promise.all([import("./components/orchestrator/favourites/element.js"),p()]),r=new e;return r.setAttribute("group",a),r.setAttribute("output-selector",t.selector),i(r,o.orchestrator.favourites)}s(P,"favourites");async function T(){let[{CLASS:e},t,r,n,u]=await Promise.all([import("./components/orchestrator/media-session/element.js"),g(),C(),p(),b()]),l=new e;return l.setAttribute("group",a),l.setAttribute("audio-engine-selector",t.selector),l.setAttribute("artwork-selector",r.selector),l.setAttribute("output-selector",n.selector),l.setAttribute("queue-engine-selector",u.selector),i(l,o.orchestrator.mediaSession)}s(T,"mediaSession");async function p(e){let{CLASS:t}=await import("./components/orchestrator/output/element.js"),r=new t;return r.setAttribute("group",a),r.setAttribute("id","output"),e?.namespace&&r.setAttribute("namespace",e.namespace),i(r,o.orchestrator.output)}s(p,"output");async function v(e={disableWhenReady:!1}){let[{CLASS:t},r,n,u]=await Promise.all([import("./components/orchestrator/process-tracks/element.js"),d(),p(),h()]),l=new t;return l.setAttribute("group",a),l.setAttribute("input-selector",r.selector),l.setAttribute("output-selector",n.selector),l.setAttribute("metadata-selector",u.selector),e.disableWhenReady||l.toggleAttribute("process-when-ready"),i(l,o.orchestrator.processTracks)}s(v,"processTracks");async function Q(){let[{CLASS:e},t,r,n,u,l]=await Promise.all([import("./components/orchestrator/queue-audio/element.js"),g(),d(),p(),b(),f()]),A=new e;return A.setAttribute("group",a),A.setAttribute("audio-engine-selector",t.selector),A.setAttribute("input-selector",r.selector),A.setAttribute("output-selector",n.selector),A.setAttribute("queue-engine-selector",u.selector),A.setAttribute("repeat-shuffle-engine-selector",l.selector),i(A,o.orchestrator.queueAudio)}s(Q,"queueAudio");async function k(){let[{CLASS:e},t,r,n]=await Promise.all([import("./components/orchestrator/scoped-tracks/element.js"),d(),p(),y()]),u=new e;return u.setAttribute("group",a),u.setAttribute("input-selector",t.selector),u.setAttribute("output-selector",r.selector),u.setAttribute("scope-engine-selector",n.selector),i(u,o.orchestrator.scopedTracks)}s(k,"scopedTracks");async function x(){let[{CLASS:e},t,r]=await Promise.all([import("./components/orchestrator/scrobble-audio/element.js"),g(),w()]),n=new e;return n.setAttribute("group",a),n.setAttribute("audio-engine-selector",t.selector),n.setAttribute("scrobble-selector",r.selector),i(n,o.orchestrator.scrobbleAudio)}s(x,"scrobbleAudio");async function E(){let[{CLASS:e},t]=await Promise.all([import("./components/orchestrator/path-collections/element.js"),p()]),r=new e;return r.setAttribute("group",a),r.setAttribute("output-selector",t.selector),i(r,o.orchestrator.pathCollections)}s(E,"pathCollections");async function R(){let[{CLASS:e},t,r]=await Promise.all([import("./components/orchestrator/sources/element.js"),d(),p()]),n=new e;return n.setAttribute("group",a),n.setAttribute("input-selector",t.selector),n.setAttribute("output-selector",r.selector),i(n,o.orchestrator.sources)}s(R,"sources");function i(e,t){let r=document.body.querySelector(e.selector);return r?(t.value=r,r):(document.body.append(e),t.value=e,e)}s(i,"findExistingOrAdd");export{a,m as b,M as c,i as d}; 2 + 3 + //# sourceMappingURL=./chunk-23J7PJHO.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-23J7PJHO.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-23J7PJHO.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 artwork: signal(\n /** @type {import(\"~/components/configurator/artwork/element.js\").CLASS | null} */ (null),\n ),\n metadata: signal(\n /** @type {import(\"~/components/configurator/metadata/element.js\").CLASS | null} */ (null),\n ),\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 artwork: signal(\n /** @type {import(\"~/components/orchestrator/artwork/element.js\").CLASS | null} */ (null),\n ),\n controller: signal(\n /** @type {import(\"~/components/orchestrator/controller/element.js\").CLASS | null} */ (null),\n ),\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 pathCollections: signal(\n /** @type {import(\"~/components/orchestrator/path-collections/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\n/**\n * Default config for facets.\n */\nexport const config = {\n GROUP,\n\n // Elements\n configurator: {\n artwork: configuratorArtwork,\n metadata: configuratorMetadata,\n input,\n scrobbles,\n },\n\n engine: {\n audio,\n queue,\n repeatShuffle,\n scope,\n },\n\n orchestrator: {\n artwork,\n controller,\n autoQueue,\n favourites,\n mediaSession,\n output,\n pathCollections,\n processTracks,\n queueAudio,\n scopedTracks,\n scrobbleAudio,\n sources,\n },\n\n /**\n * Element signals\n */\n signals: {\n configurator: {\n artwork: signals.configurator.artwork.get,\n metadata: signals.configurator.metadata.get,\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 artwork: signals.orchestrator.artwork.get,\n controller: signals.orchestrator.controller.get,\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 pathCollections: signals.orchestrator.pathCollections.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\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 },\n\n /**\n * Hide the loader and fade in the facet content by adding the `has-loaded`\n * class to `#container` after two animation frames (so the initial opacity:0\n * is painted first and the CSS transition actually runs).\n */\n ready: () => {\n config.hideLoader();\n\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n document.querySelector(\"#container\")?.classList.add(\"has-loaded\");\n });\n });\n },\n};\n\nexport default config;\n\n// 🥡\n\n// Configurators\n\nasync function configuratorArtwork() {\n const { CLASS: ArtworkConfigurator } = await import(\n \"~/components/configurator/artwork/element.js\"\n );\n\n const ac = new ArtworkConfigurator();\n ac.setAttribute(\"group\", GROUP);\n ac.setAttribute(\"id\", \"artwork\");\n\n return findExistingOrAdd(ac, signals.configurator.artwork);\n}\n\nasync function configuratorMetadata() {\n const { CLASS: MetadataConfigurator } = await import(\n \"~/components/configurator/metadata/element.js\"\n );\n\n const mc = new MetadataConfigurator();\n mc.setAttribute(\"group\", GROUP);\n mc.setAttribute(\"id\", \"metadata\");\n\n return findExistingOrAdd(mc, signals.configurator.metadata);\n}\n\nasync function input() {\n const { CLASS: 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 { CLASS: 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 { CLASS: 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 { CLASS: 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 { CLASS: 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 { CLASS: 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// Orchestrators (cont.)\nasync function artwork() {\n const [{ CLASS: ArtworkOrchestrator }, ac] = await Promise.all([\n import(\"~/components/orchestrator/artwork/element.js\"),\n configuratorArtwork(),\n ]);\n\n const a = new ArtworkOrchestrator();\n a.setAttribute(\"group\", GROUP);\n a.setAttribute(\"artwork-selector\", ac.selector);\n\n return findExistingOrAdd(a, signals.orchestrator.artwork);\n}\n\n// Orchestrators\nasync function autoQueue() {\n const [{ CLASS: 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 controller() {\n const [{ CLASS: ControllerOrchestrator }, a, o, q] = await Promise.all([\n import(\"~/components/orchestrator/controller/element.js\"),\n audio(),\n output(),\n queue(),\n ]);\n\n const co = new ControllerOrchestrator();\n co.setAttribute(\"audio-engine-selector\", a.selector);\n co.setAttribute(\"output-selector\", o.selector);\n co.setAttribute(\"queue-engine-selector\", q.selector);\n\n return findExistingOrAdd(co, signals.orchestrator.controller);\n}\n\nasync function favourites() {\n const [{ CLASS: 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 [{ CLASS: 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-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\n/**\n * @param {Object} [options] - Options\n * @param {string} [options.namespace] - The namespace to use for the output.\n */\nasync function output(options) {\n const { CLASS: 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 if (options?.namespace) o.setAttribute(\"namespace\", options.namespace);\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 [{ CLASS: ProcessTracksOrchestrator }, i, o, m] = await Promise.all([\n import(\"~/components/orchestrator/process-tracks/element.js\"),\n input(),\n output(),\n configuratorMetadata(),\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-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 [{ CLASS: 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 [{ CLASS: ScopedTracksOrchestrator }, i, o, e] = await Promise.all([\n import(\"~/components/orchestrator/scoped-tracks/element.js\"),\n input(),\n output(),\n scope(),\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\n return findExistingOrAdd(sto, signals.orchestrator.scopedTracks);\n}\n\nasync function scrobbleAudio() {\n const [{ CLASS: 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 pathCollections() {\n const [{ CLASS: PathCollectionsOrchestrator }, o] = await Promise.all([\n import(\"~/components/orchestrator/path-collections/element.js\"),\n output(),\n ]);\n\n const pco = new PathCollectionsOrchestrator();\n pco.setAttribute(\"group\", GROUP);\n pco.setAttribute(\"output-selector\", o.selector);\n\n return findExistingOrAdd(pco, signals.orchestrator.pathCollections);\n}\n\nasync function sources() {\n const [{ CLASS: 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","configuratorArtwork","configuratorMetadata","input","scrobbles","audio","queue","repeatShuffle","scope","artwork","controller","autoQueue","favourites","mediaSession","output","pathCollections","processTracks","queueAudio","scopedTracks","scrobbleAudio","sources","__name","loader","title","foundation_default","ArtworkConfigurator","ac","findExistingOrAdd","MetadataConfigurator","mc","InputConfigurator","i","ScrobblesConfigurator","sc","existing","AudioEngine","a","Queue","q","RepeatShuffleEngine","r","ScopeEngine","s","ArtworkOrchestrator","AutoQueueOrchestrator","t","aqo","ControllerOrchestrator","o","co","FavouritesOrchestrator","fo","MediaSessionOrchestrator","aw","mso","options","OutputOrchestrator","opts","ProcessTracksOrchestrator","m","opt","QueueAudioOrchestrator","oqa","ScopedTracksOrchestrator","e","sto","ScrobbleAudioOrchestrator","sao","PathCollectionsOrchestrator","pco","SourcesOrchestrator","so","element","alreadyAdded"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-23J7PJHO.js.map"}
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-2CE4HY7O.js
··· 1 + ../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/chunk-2CE4HY7O.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-2CE4HY7O.js.br
··· 1 + ../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/chunk-2CE4HY7O.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-2CE4HY7O.js.map
··· 1 + ../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/chunk-2CE4HY7O.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-2RVTEEJK.js
··· 1 + import{a as w}from"./chunk-6AH2OFQT.js";import{a as b}from"./chunk-MWWZQLVP.js";import{a as v}from"./chunk-UMFFTZJV.js";import{k as A}from"./chunk-YHFKI4Y2.js";import{a as h}from"./chunk-BFIVCPQF.js";function x(){let f=document.querySelectorAll(".grid-filter button[data-filter]"),a=document.querySelectorAll(".grid-item"),n=document.querySelector(".grid-filter--categories"),r=[...new Set([...a].map(e=>e.dataset.category).filter(Boolean))].sort(),l=null,o=null;if(n&&r.length>1){l=document.createElement("span"),l.textContent="All";let e=document.createElement("button");e.className="button--border button--tiny button--transparent",e.setAttribute("popovertarget","grid-category-menu");let t=document.createElement("span");t.className="with-icon",t.appendChild(l);let s=document.createElement("i");s.className="ph-bold ph-caret-down",t.appendChild(s),e.appendChild(t),o=document.createElement("div"),o.id="grid-category-menu",o.className="dropdown",o.setAttribute("popover","");for(let d of["all",...r]){let m=document.createElement("button");m.dataset.category=d,m.textContent=d==="all"?"All":d,m.addEventListener("click",()=>{i=d;let y=new URL(location.href);d==="all"?y.searchParams.delete("category"):y.searchParams.set("category",d),history.replaceState(null,"",y),o?.hidePopover(),u(c,i)}),o.appendChild(m)}n.appendChild(e),n.appendChild(o)}let g="diffuse/dashboard/filter",c="all",i="all";function u(e,t){f.forEach(s=>{let d=s.dataset.filter!==e;s.classList.contains("button--transparent")!==d&&s.classList.toggle("button--transparent",d)}),l&&(l.textContent=t==="all"?"All":t),a.forEach(s=>{let d=(s.dataset.tags??"").split(",").includes("base");if(e==="base")s.hidden=!d;else{let m=e==="all"||s.dataset.kind===e,y=t==="all"||s.dataset.category===t;s.hidden=!(m&&y&&!d)}})}h(u,"applyFilter"),f.forEach(e=>{e.addEventListener("click",()=>{c=e.dataset.filter??"all",localStorage.setItem(g,c),u(c,i)})});let p=localStorage.getItem(g);c=p==="prelude"||p==="interface"||p==="base"?p:"all",i=new URL(location.href).searchParams.get("category")??"all",u(c,i)}h(x,"setupFilter");function k(){let f=document.querySelectorAll(".grid li");for(let a of f){let n=a.querySelector("button[data-action='toggle']");n&&n.addEventListener("click",async()=>{let r=a.getAttribute("data-uri"),l=a.getAttribute("data-name"),o=a.getAttribute("data-kind")??void 0,g=a.getAttribute("data-description")??void 0,c=a.getAttribute("data-tags"),i=c?c.split(",").filter(Boolean):void 0;if(!r||!l)return;let u=await b(),p=await w(u.facets);if(p.some(t=>t.uri===r&&t.html===void 0))u.facets.save(p.filter(t=>t.uri!==r));else{let t=await v({description:g,kind:o,name:l,tags:i,uri:r},{fetchHTML:!1});u.facets.save([...p,t])}})}}h(k,"insertToggleButtons");var E;async function B(){E&&E();let f=await b();E=A(()=>{let a=document.querySelectorAll(".grid li"),n=f.facets.collection(),r=n.state==="loaded"?n.data:[],l=new Map(r.map(o=>[o.uri,o]));for(let o of a){let g=o.getAttribute("data-uri"),c=o.querySelector(".grid-item__menu"),i=o.querySelector("button[data-action='toggle']"),u=i?.querySelector("i");if(!c||!i||!u||!g)continue;let p=l.get(g),e=p&&p.html===void 0,t=o.dataset.kind==="prelude";c.classList.toggle("grid-item__menu--active",e??!1),i.style.opacity="revert-layer",i.title=e?t?"Remove feature":"Unpin interface":t?"Add feature":"Pin interface",u.className=e?t?"ph-bold ph-check":"ph-fill ph-push-pin":t?"ph-bold ph-plus":"ph-bold ph-push-pin",u.style.transform=e&&!t?"rotate(-45deg)":""}})}h(B,"monitorToggleButtonStates");var S;async function M(){S&&S();let f=document.querySelector(".grid-filter");if(!f)return;let a=await b(),n=f.querySelector(".grid-filter--output");if(!n)return;let r=f.querySelector(".grid-filter--label-output");r&&(setTimeout(()=>{n.style.opacity="1",r.style.opacity="0.4"},250),S=A(()=>{let l=a.selected(),o=l?.label??l?.getAttribute?.("label")??"Local storage";n.textContent=o}))}h(M,"setupOutputIndicator");export{x as a,k as b,B as c,M as d}; 2 + 3 + //# sourceMappingURL=./chunk-2RVTEEJK.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-2RVTEEJK.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-2RVTEEJK.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 kindButtons = document.querySelectorAll(\n \".grid-filter button[data-filter]\",\n );\n\n /** @type {NodeListOf<HTMLElement>} */\n const items = document.querySelectorAll(\".grid-item\");\n\n // Build category buttons from the categories present in the current grid\n const categoriesEl = document.querySelector(\".grid-filter--categories\");\n const categories = /** @type {string[]} */ (\n [...new Set([...items].map((i) => i.dataset.category).filter(Boolean))]\n .sort()\n );\n\n /** @type {HTMLElement | null} */\n let categoryLabelEl = null;\n /** @type {HTMLElement | null} */\n let categoryMenuEl = null;\n\n if (categoriesEl && categories.length > 1) {\n categoryLabelEl = document.createElement(\"span\");\n categoryLabelEl.textContent = \"All\";\n\n const triggerBtn = document.createElement(\"button\");\n triggerBtn.className = \"button--border button--tiny button--transparent\";\n triggerBtn.setAttribute(\"popovertarget\", \"grid-category-menu\");\n const span = document.createElement(\"span\");\n span.className = \"with-icon\";\n span.appendChild(categoryLabelEl);\n const caret = document.createElement(\"i\");\n caret.className = \"ph-bold ph-caret-down\";\n span.appendChild(caret);\n triggerBtn.appendChild(span);\n\n categoryMenuEl = document.createElement(\"div\");\n categoryMenuEl.id = \"grid-category-menu\";\n categoryMenuEl.className = \"dropdown\";\n categoryMenuEl.setAttribute(\"popover\", \"\");\n\n for (const cat of [\"all\", ...categories]) {\n const item = document.createElement(\"button\");\n item.dataset.category = cat;\n item.textContent = cat === \"all\" ? \"All\" : cat;\n item.addEventListener(\"click\", () => {\n activeCategory = cat;\n const url = new URL(location.href);\n if (cat === \"all\") url.searchParams.delete(\"category\");\n else url.searchParams.set(\"category\", cat);\n history.replaceState(null, \"\", url);\n categoryMenuEl?.hidePopover();\n applyFilter(activeKind, activeCategory);\n });\n categoryMenuEl.appendChild(item);\n }\n\n categoriesEl.appendChild(triggerBtn);\n categoriesEl.appendChild(categoryMenuEl);\n }\n\n const FILTER_KIND_STORAGE_KEY = \"diffuse/dashboard/filter\";\n\n let activeKind = \"all\";\n let activeCategory = \"all\";\n\n /**\n * @param {string} kind\n * @param {string} category\n */\n function applyFilter(kind, category) {\n kindButtons.forEach((b) => {\n const transparent = b.dataset.filter !== kind;\n if (b.classList.contains(\"button--transparent\") !== transparent) {\n b.classList.toggle(\"button--transparent\", transparent);\n }\n });\n if (categoryLabelEl) {\n categoryLabelEl.textContent = category === \"all\" ? \"All\" : category;\n }\n items.forEach((item) => {\n const isBase = (item.dataset.tags ?? \"\").split(\",\").includes(\"base\");\n if (kind === \"base\") {\n item.hidden = !isBase;\n } else {\n const kindMatch = kind === \"all\" || item.dataset.kind === kind;\n const catMatch = category === \"all\" ||\n item.dataset.category === category;\n item.hidden = !(kindMatch && catMatch && !isBase);\n }\n });\n }\n\n kindButtons.forEach((b) => {\n b.addEventListener(\"click\", () => {\n activeKind = b.dataset.filter ?? \"all\";\n localStorage.setItem(FILTER_KIND_STORAGE_KEY, activeKind);\n applyFilter(activeKind, activeCategory);\n });\n });\n\n const storedKind = localStorage.getItem(FILTER_KIND_STORAGE_KEY);\n activeKind = storedKind === \"prelude\" || storedKind === \"interface\" ||\n storedKind === \"base\"\n ? storedKind\n : \"all\";\n activeCategory = new URL(location.href).searchParams.get(\"category\") ?? \"all\";\n applyFilter(activeKind, activeCategory);\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 button = li.querySelector(\"button[data-action='toggle']\");\n if (!button) continue;\n\n button.addEventListener(\"click\", async () => {\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 const tagsRaw = li.getAttribute(\"data-tags\");\n const tags = tagsRaw ? tagsRaw.split(\",\").filter(Boolean) : 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(\n { description, kind, name, tags, uri },\n {\n fetchHTML: false,\n },\n );\n out.facets.save([...collection, facet]);\n }\n });\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 menu = /** @type {HTMLElement | null} */ (\n li.querySelector(\".grid-item__menu\")\n );\n\n const button = /** @type {HTMLElement | null} */ (\n li.querySelector(\"button[data-action='toggle']\")\n );\n\n const icon = button?.querySelector(\"i\");\n\n if (!menu || !button || !icon || !uri) continue;\n\n const item = colMap.get(uri);\n const isActive = item && item.html === undefined;\n const isPrelude = li.dataset.kind === \"prelude\";\n\n menu.classList.toggle(\"grid-item__menu--active\", isActive ?? false);\n\n button.style.opacity = \"revert-layer\";\n button.title = isActive\n ? (isPrelude ? \"Remove feature\" : \"Unpin interface\")\n : (isPrelude ? \"Add feature\" : \"Pin interface\");\n\n icon.className = isActive\n ? isPrelude ? \"ph-bold ph-check\" : \"ph-fill ph-push-pin\"\n : isPrelude\n ? \"ph-bold ph-plus\"\n : \"ph-bold ph-push-pin\";\n\n /** @type {HTMLElement} */ (icon).style.transform = isActive && !isPrelude\n ? \"rotate(-45deg)\"\n : \"\";\n }\n });\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"],"mappings":"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","names":["setupFilter","kindButtons","items","categoriesEl","categories","i","categoryLabelEl","categoryMenuEl","triggerBtn","span","caret","cat","item","activeCategory","url","applyFilter","activeKind","FILTER_KIND_STORAGE_KEY","kind","category","b","transparent","isBase","kindMatch","catMatch","__name","storedKind","insertToggleButtons","gridItems","li","button","uri","name","description","tagsRaw","tags","out","output","collection","data","f","facet","facetFromURI","stopMonitor","monitorToggleButtonStates","effect","col","colMap","menu","icon","isActive","isPrelude","stopOutputIndicator","setupOutputIndicator","filterEl","indicator","label","selected"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-2RVTEEJK.js.map"}
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-2SBW6H34.js
··· 1 + ../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/chunk-2SBW6H34.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-2SBW6H34.js.br
··· 1 + ../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/chunk-2SBW6H34.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-2SBW6H34.js.map
··· 1 + ../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/chunk-2SBW6H34.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-3J6MXMAM.js
··· 1 + ../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/chunk-3J6MXMAM.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-3J6MXMAM.js.br
··· 1 + ../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/chunk-3J6MXMAM.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-3J6MXMAM.js.map
··· 1 + ../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/chunk-3J6MXMAM.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-3QGTS6VV.js
··· 1 + ../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/chunk-3QGTS6VV.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-3QGTS6VV.js.br
··· 1 + ../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/chunk-3QGTS6VV.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-3QGTS6VV.js.map
··· 1 + ../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/chunk-3QGTS6VV.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-4M37HRVT.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-4M37HRVT.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-4M37HRVT.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-4M37HRVT.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-4M37HRVT.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-4M37HRVT.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-6AH2OFQT.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-6AH2OFQT.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-6AH2OFQT.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-6AH2OFQT.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-6AH2OFQT.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-6AH2OFQT.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-6L4CMSHO.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-6L4CMSHO.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-6L4CMSHO.js.br
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-6L4CMSHO.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-6L4CMSHO.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-6L4CMSHO.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-6NC6NOLO.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-6NC6NOLO.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-6NC6NOLO.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-6NC6NOLO.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-6NC6NOLO.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-6NC6NOLO.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-6TMSPXBP.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-6TMSPXBP.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-6TMSPXBP.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-6TMSPXBP.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-6TMSPXBP.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-6TMSPXBP.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-74D5IDBG.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-74D5IDBG.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-74D5IDBG.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-74D5IDBG.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-74D5IDBG.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-74D5IDBG.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-75BXHJJB.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-75BXHJJB.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-75BXHJJB.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-75BXHJJB.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-75BXHJJB.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-75BXHJJB.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-7IN7CTC7.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-7IN7CTC7.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-7IN7CTC7.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-H2EOMKTB.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-7IN7CTC7.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-7IN7CTC7.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-7J3HROIN.js
··· 1 + ../bafybeifk3idtk5ytkhfeerkhjjsxp6r473jckrigzh7ujrx72kmhqqkulu/chunk-7J3HROIN.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-7J3HROIN.js.br
··· 1 + ../bafybeifk3idtk5ytkhfeerkhjjsxp6r473jckrigzh7ujrx72kmhqqkulu/chunk-7J3HROIN.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-7J3HROIN.js.map
··· 1 + ../bafybeifk3idtk5ytkhfeerkhjjsxp6r473jckrigzh7ujrx72kmhqqkulu/chunk-7J3HROIN.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-7VVACK5Z.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-7VVACK5Z.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-7VVACK5Z.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-7VVACK5Z.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-7VVACK5Z.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-7VVACK5Z.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-ATHACRS2.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-ATHACRS2.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-ATHACRS2.js.br
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-ATHACRS2.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-ATHACRS2.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-ATHACRS2.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-AUOLVULE.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-AUOLVULE.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-AUOLVULE.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-FIEVBWUE.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-AUOLVULE.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-AUOLVULE.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-BFIVCPQF.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-BFIVCPQF.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-BFIVCPQF.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-BFIVCPQF.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-BFIVCPQF.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-BFIVCPQF.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-BNUDHFYP.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-BNUDHFYP.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-BNUDHFYP.js.br
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-BNUDHFYP.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-BNUDHFYP.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-BNUDHFYP.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-BR5FNG6K.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-BR5FNG6K.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-BR5FNG6K.js.br
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-BR5FNG6K.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-BR5FNG6K.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-BR5FNG6K.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-BUMY6KL7.js
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-BUMY6KL7.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-BUMY6KL7.js.br
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-BUMY6KL7.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-BUMY6KL7.js.map
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-BUMY6KL7.js.map
+14
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-C64DBEMP.js
··· 1 + import{a as i}from"./chunk-FKLEXSNK.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-C64DBEMP.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-C64DBEMP.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-C64DBEMP.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-C64DBEMP.js.map"}
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-CFGHNC4Y.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-CFGHNC4Y.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-CFGHNC4Y.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-6WW6Q6YW.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-CFGHNC4Y.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-CFGHNC4Y.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-CQ2X4SJL.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-CQ2X4SJL.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-CQ2X4SJL.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-GKONEEZQ.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-CQ2X4SJL.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-CQ2X4SJL.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-DGFSH4HV.js
··· 1 + ../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/chunk-DGFSH4HV.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-DGFSH4HV.js.br
··· 1 + ../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/chunk-DGFSH4HV.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-DGFSH4HV.js.map
··· 1 + ../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/chunk-DGFSH4HV.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-E6MUW73D.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-E6MUW73D.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-E6MUW73D.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-E6MUW73D.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-E6MUW73D.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-E6MUW73D.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-ECL7O5N5.js
··· 1 + ../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/chunk-ECL7O5N5.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-ECL7O5N5.js.br
··· 1 + ../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/chunk-ECL7O5N5.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-ECL7O5N5.js.map
··· 1 + ../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/chunk-ECL7O5N5.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-EGZNAJEA.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-EGZNAJEA.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-EGZNAJEA.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-EGZNAJEA.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-EGZNAJEA.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-EGZNAJEA.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-ENJURKXP.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-ENJURKXP.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-ENJURKXP.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-ENJURKXP.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-ENJURKXP.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-ENJURKXP.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-EUSG77BC.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-EUSG77BC.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-EUSG77BC.js.br
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-EUSG77BC.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-EUSG77BC.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-EUSG77BC.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-FHDZ2ZCI.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-FHDZ2ZCI.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-FHDZ2ZCI.js.br
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-FHDZ2ZCI.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-FHDZ2ZCI.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-FHDZ2ZCI.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-FKLEXSNK.js
··· 1 + import{b as a}from"./chunk-K24WPOYB.js";import{a as r}from"./chunk-BFIVCPQF.js";async function u(l,n){n??=document.body;let o=document.createRange();o.selectNode(n);let d=l.filter(e=>e.kind==="prelude"&&e.enabled!==!1).sort((e,t)=>e.name.localeCompare(t.name));for(let e of d){let t=e.html??(e.uri?await a(e.uri):"");if(!t)continue;let c=o.createContextualFragment(t);n.append(c)}}r(u,"insertPreludes");export{u as a}; 2 + 3 + //# sourceMappingURL=./chunk-FKLEXSNK.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-FKLEXSNK.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-FKLEXSNK.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\" && f.enabled !== false)\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,WAAaA,EAAE,UAAY,EAAK,EACzD,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-FKLEXSNK.js.map"}
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-GO3MGAOG.js
··· 1 + ../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/chunk-GO3MGAOG.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-GO3MGAOG.js.br
··· 1 + ../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/chunk-GO3MGAOG.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-GO3MGAOG.js.map
··· 1 + ../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/chunk-GO3MGAOG.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-GSG5OS62.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-GSG5OS62.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-GSG5OS62.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-GSG5OS62.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-GSG5OS62.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-GSG5OS62.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-H6DQPAGD.js
··· 1 + ../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/chunk-H6DQPAGD.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-H6DQPAGD.js.br
··· 1 + ../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/chunk-H6DQPAGD.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-H6DQPAGD.js.map
··· 1 + ../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/chunk-H6DQPAGD.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-HDWT7CXU.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-HDWT7CXU.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-HDWT7CXU.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-HDWT7CXU.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-HDWT7CXU.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-HDWT7CXU.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-HNJVICLT.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-HNJVICLT.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-HNJVICLT.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-HNJVICLT.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-HNJVICLT.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-HNJVICLT.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-ILLNXOTI.js
··· 1 + ../bafybeieet7tkfiaiqveyit6c275hhlk2awzqx5d5kflyav7ev3ikqoqgb4/chunk-ILLNXOTI.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-ILLNXOTI.js.br
··· 1 + ../bafybeieet7tkfiaiqveyit6c275hhlk2awzqx5d5kflyav7ev3ikqoqgb4/chunk-ILLNXOTI.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-ILLNXOTI.js.map
··· 1 + ../bafybeieet7tkfiaiqveyit6c275hhlk2awzqx5d5kflyav7ev3ikqoqgb4/chunk-ILLNXOTI.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-IUBFNQRH.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-IUBFNQRH.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-IUBFNQRH.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-IUBFNQRH.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-IUBFNQRH.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-IUBFNQRH.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-J3RODCWD.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-J3RODCWD.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-J3RODCWD.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-J3RODCWD.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-J3RODCWD.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-J3RODCWD.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-J4KMYVZI.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-J4KMYVZI.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-J4KMYVZI.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-J4KMYVZI.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-J4KMYVZI.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-J4KMYVZI.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-JPVVQ3UF.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-JPVVQ3UF.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-JPVVQ3UF.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-JPVVQ3UF.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-JPVVQ3UF.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-JPVVQ3UF.js.map
+10
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-K24WPOYB.js
··· 1 + import{a as x,b as R,c as D}from"./chunk-T734Y7R7.js";import{a as g,b as I,c as L,d as $,e as U}from"./chunk-RQJCYF4B.js";import{c as h}from"./chunk-K4RUWDWS.js";import{a as C}from"./chunk-QOBPHMGK.js";import{k as H}from"./chunk-YHFKI4Y2.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-K24WPOYB.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-K24WPOYB.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-K24WPOYB.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-K24WPOYB.js.map"}
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-K2CRUTCH.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-K2CRUTCH.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-K2CRUTCH.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-K2CRUTCH.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-K2CRUTCH.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-K2CRUTCH.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-K4RUWDWS.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-K4RUWDWS.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-K4RUWDWS.js.br
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-K4RUWDWS.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-K4RUWDWS.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-K4RUWDWS.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-K6H6JNTP.js
··· 1 + ../bafybeifx752kc2bw6iwva6wlszmblridjre556w2llag4tcnmy76k66r6y/chunk-K6H6JNTP.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-K6H6JNTP.js.br
··· 1 + ../bafybeifx752kc2bw6iwva6wlszmblridjre556w2llag4tcnmy76k66r6y/chunk-K6H6JNTP.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-K6H6JNTP.js.map
··· 1 + ../bafybeifx752kc2bw6iwva6wlszmblridjre556w2llag4tcnmy76k66r6y/chunk-K6H6JNTP.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-KCNZQKXQ.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-KCNZQKXQ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-KCNZQKXQ.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-KCNZQKXQ.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-KCNZQKXQ.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-KCNZQKXQ.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-KHNFRM4M.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-KHNFRM4M.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-KHNFRM4M.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-KHNFRM4M.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-KHNFRM4M.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-KHNFRM4M.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-MKW7W2JZ.js
··· 1 + ../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/chunk-MKW7W2JZ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-MKW7W2JZ.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-GDPVB5VQ.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-MKW7W2JZ.js.map
··· 1 + ../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/chunk-MKW7W2JZ.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-MSK7QOJU.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-MSK7QOJU.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-MSK7QOJU.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-EUC5N2NK.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-MSK7QOJU.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-MSK7QOJU.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-MTCNS3JB.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-MTCNS3JB.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-MTCNS3JB.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-XXSTPF57.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-MTCNS3JB.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-MTCNS3JB.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-MWEXZQ4O.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-MWEXZQ4O.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-MWEXZQ4O.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-MWEXZQ4O.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-MWEXZQ4O.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-MWEXZQ4O.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-MWWZQLVP.js
··· 1 + import{c as r}from"./chunk-23J7PJHO.js";import{a}from"./chunk-FKLEXSNK.js";import{k as o}from"./chunk-YHFKI4Y2.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-MWWZQLVP.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-MWWZQLVP.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-MWWZQLVP.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-MWWZQLVP.js.map"}
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-MZPUBSAE.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-MZPUBSAE.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-MZPUBSAE.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-MZPUBSAE.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-MZPUBSAE.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-MZPUBSAE.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-NEVFAOVJ.js
··· 1 + import{a as v}from"./chunk-PUCB64SE.js";import{a as I}from"./chunk-PYJ4JJFC.js";import{c as y,d as o}from"./chunk-7VVACK5Z.js";import{a as S}from"./chunk-74D5IDBG.js";import{e as g}from"./chunk-JPVVQ3UF.js";import{j as u,n as c,o as n,p as f}from"./chunk-YHFKI4Y2.js";import{a as p,b as m,c as h}from"./chunk-PMV3ISAT.js";import{a}from"./chunk-BFIVCPQF.js";var d="diffuse/transformer/output/refiner/initial-contents/initialized",r=class extends I{static{a(this,"InitialContentsTransformer")}static NAME="diffuse/transformer/output/refiner/initial-contents";#e=n(!1);#t=n(!1);constructor(){super();let s=this.base();y(d).then(t=>{c(()=>{this.#t.value=!!t,this.#e.value=!0})});let i={facets:{...s.facets,collection:u(()=>{if(!this.#e.get())return{state:"loading"};let t=s.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:v.flatMap(e=>h.includes(e.url)?[{$type:p,id:E("diffuse://"+e.url),description:e.desc,enabled:!m.includes(e.url),kind:e.kind==="prelude"?"prelude":"interactive",name:e.title,tags:e.tags?.length?e.tags:void 0,uri:"diffuse://"+e.url}]:[])}}),save:a(async t=>{this.#t.value||(this.#t.value=!0,o(d,!0)),await s.facets.save(t)},"save")},playlistItems:s.playlistItems,settings:s.settings,tracks:s.tracks,ready:s.ready};this.facets=i.facets,this.playlistItems=i.playlistItems,this.settings=i.settings,this.tracks=i.tracks,this.ready=i.ready}},w=r;function E(l){return S(new TextEncoder().encode(l)).toString(16).padStart(8,"0")}a(E,"uriToRkey");var T=r,k="dtor-initial-contents";g(k,T);export{w as a,T as b,k as c}; 2 + 3 + //# sourceMappingURL=./chunk-NEVFAOVJ.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-NEVFAOVJ.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-NEVFAOVJ.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\";\nimport { defineElement } from \"~/common/element.js\";\n\nimport {\n STARTING_SET_DISABLED,\n STARTING_SET_URIS,\n TYPE,\n} 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 enabled: STARTING_SET_DISABLED.includes(facet.url)\n ? false\n : true,\n kind: facet.kind === \"prelude\"\n ? /** @type {const} */ (\"prelude\")\n : /** @type {const} */ (\"interactive\"),\n name: facet.title,\n tags: facet.tags?.length ? facet.tags : undefined,\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 settings: base.settings,\n tracks: base.tracks,\n ready: base.ready,\n };\n\n this.facets = manager.facets;\n this.playlistItems = manager.playlistItems;\n this.settings = manager.settings;\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\ndefineElement(NAME, CLASS);\n"],"mappings":"qWAoBA,IAAMA,EACJ,kEASIC,EAAN,cAAyCC,CAAkB,CA9B3D,MA8B2D,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,EAyBpC,CAAE,MAAO,SAAU,KArBbG,EAAO,QAASC,GACvBC,EAAkB,SAASD,EAAM,GAAG,EAC/B,CAAC,CACN,MAAOE,EACP,GAAIC,EAAU,aAAeH,EAAM,GAAG,EACtC,YAAaA,EAAM,KACnB,QAAS,CAAAI,EAAsB,SAASJ,EAAM,GAAG,EAGjD,KAAMA,EAAM,OAAS,UACK,UACA,cAC1B,KAAMA,EAAM,MACZ,KAAMA,EAAM,MAAM,OAASA,EAAM,KAAO,OACxC,IAAK,aAAeA,EAAM,GAC5B,CAAC,EAGI,CAAC,CACT,CAE8B,CACjC,CAAC,EAED,KAAMd,EAAA,MAAOmB,GAAc,CAGpB,KAAKhB,GAAa,QACrB,KAAKA,GAAa,MAAQ,GACtBS,EAAIf,EAAS,EAAI,GAGvB,MAAMO,EAAK,OAAO,KAAKe,CAAS,CAClC,EATM,OAUR,EAEA,cAAef,EAAK,cACpB,SAAUA,EAAK,SACf,OAAQA,EAAK,OACb,MAAOA,EAAK,KACd,EAEA,KAAK,OAASI,EAAQ,OACtB,KAAK,cAAgBA,EAAQ,cAC7B,KAAK,SAAWA,EAAQ,SACxB,KAAK,OAASA,EAAQ,OACtB,KAAK,MAAQA,EAAQ,KACvB,CACF,EAEOY,EAAQtB,EAGf,SAASmB,EAAUI,EAAK,CACtB,OAAOC,EAAO,IAAI,YAAY,EAAE,OAAOD,CAAG,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CAC3E,CAFSrB,EAAAiB,EAAA,aAQF,IAAMM,EAAQzB,EACR0B,EAAO,wBAEpBC,EAAcD,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","STARTING_SET_DISABLED","newFacets","element_default","uri","xxh32r","CLASS","NAME","defineElement"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-NEVFAOVJ.js.map"}
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-NQMEX7CZ.js
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-NQMEX7CZ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-NQMEX7CZ.js.br
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-NQMEX7CZ.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-NQMEX7CZ.js.map
··· 1 + ../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/chunk-NQMEX7CZ.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-OTRNQYY2.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-OTRNQYY2.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-OTRNQYY2.js.br
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-OTRNQYY2.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-OTRNQYY2.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-OTRNQYY2.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-OYKE33NH.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-OYKE33NH.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-OYKE33NH.js.br
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-OYKE33NH.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-OYKE33NH.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-OYKE33NH.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-PBZITCUN.js
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-PBZITCUN.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-PBZITCUN.js.br
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-PBZITCUN.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-PBZITCUN.js.map
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-PBZITCUN.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-PMV3ISAT.js
··· 1 + var e="sh.diffuse.output.facet",t=["facets/misc/scrobble/index.html"],a=["facets/connect/index.html","facets/data/sources/index.html","themes/blur/artwork-controller/facet/index.html","facets/data/metadata-bundle/index.html","facets/data/artwork-bundle/index.html","facets/data/input-bundle/index.html","facets/data/output-bundle/index.html","facets/data/process-tracks/prelude/index.html","facets/misc/scrobble/index.html","facets/playback/auto-queue/prelude/index.html","facets/playback/preload/prelude/index.html"];export{e as a,t as b,a as c}; 2 + 3 + //# sourceMappingURL=./chunk-PMV3ISAT.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-PMV3ISAT.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-PMV3ISAT.js.map
··· 1 + {"version":3,"sources":["/common/facets/constants.js"],"sourcesContent":["/**\n * @example TYPE is the ATProto type string for facets\n * ```js\n * import { TYPE } from \"~/common/facets/constants.js\";\n *\n * if (TYPE !== \"sh.diffuse.output.facet\") throw new Error(`expected \"sh.diffuse.output.facet\", got \"${TYPE}\"`);\n * ```\n */\nexport const TYPE = /** @type {const} */ (\"sh.diffuse.output.facet\");\n\nexport const STARTING_SET_DISABLED = [\n \"facets/misc/scrobble/index.html\",\n];\n\nexport const STARTING_SET_URIS = [\n // INTERACTIVE\n \"facets/connect/index.html\",\n \"facets/data/sources/index.html\",\n \"themes/blur/artwork-controller/facet/index.html\",\n\n // PRELUDES\n \"facets/data/metadata-bundle/index.html\",\n \"facets/data/artwork-bundle/index.html\",\n \"facets/data/input-bundle/index.html\",\n \"facets/data/output-bundle/index.html\",\n \"facets/data/process-tracks/prelude/index.html\",\n \"facets/misc/scrobble/index.html\",\n \"facets/playback/auto-queue/prelude/index.html\",\n \"facets/playback/preload/prelude/index.html\",\n];\n"],"mappings":"AAQO,IAAMA,EAA6B,0BAE7BC,EAAwB,CACnC,iCACF,EAEaC,EAAoB,CAE/B,4BACA,iCACA,kDAGA,yCACA,wCACA,sCACA,uCACA,gDACA,kCACA,gDACA,4CACF","names":["TYPE","STARTING_SET_DISABLED","STARTING_SET_URIS"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-PMV3ISAT.js.map"}
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-PPKEFF43.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-PPKEFF43.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-PPKEFF43.js.br
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-PPKEFF43.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-PPKEFF43.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-PPKEFF43.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-PU3KOTNM.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-PU3KOTNM.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-PU3KOTNM.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-PU3KOTNM.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-PU3KOTNM.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-PU3KOTNM.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-PUCB64SE.js
··· 1 + var a=[{url:"facets/playback/auto-queue/prelude/index.html",title:"Automatic Queue",kind:"prelude",category:"Playback",featured:!0,desc:"Automatically put tracks into the queue. **Always on.** These tracks will always be located after the ones you've added manually."},{url:"facets/playback/auto-queue/index.html",title:"Automatic Queue",category:"Playback",desc:"Automatically put tracks into the queue when this interface is opened. Also allows for controlling shuffle, repeat, search, sorting and playlist selection."},{url:"themes/blur/facet/index.html",title:"Blur",category:"Themes",featured:!0,desc:"A combination of the classic Diffuse browser and the Apple Music iOS playback screen."},{url:"themes/blur/artwork-controller/facet/index.html",title:"Blur / Artwork Controller",category:"Playback",featured:!0,desc:"Audio playback controller with an artwork display. Play audio from the queue, add tracks to your favourites, control the queue and volume."},{url:"themes/blur/browser/facet/index.html",title:"Blur / Browser",category:"Browsing",featured:!0,desc:"Collection browser and search with favourite toggling, date grouping, and virtual scrolling."},{url:"facets/data/cache-tracks/index.html",title:"Cache Tracks",kind:"prelude",category:"Data",featured:!0,desc:"Store tracks locally for offline usage automatically after they've been playing for a little while."},{url:"facets/misc/command/index.html",title:"Command Menu",category:"Miscellaneous",desc:"A command palette for various actions."},{url:"facets/connect/index.html",title:"Connect",category:"Data",featured:!0,desc:"A listing of some of the options available to use as an audio source, or as a user-data storage method."},{url:"facets/connect/atproto/index.html",title:"Connect / AT Protocol",category:"Data",desc:"Use your AT Protocol identity for user-data storage."},{url:"facets/connect/https/index.html",title:"Connect / HTTPS",category:"Data",desc:"Add HTTPS URLs as audio sources."},{url:"facets/connect/icecast/index.html",title:"Connect / Icecast",category:"Data",desc:"Add an Icecast stream as an audio source."},{url:"facets/connect/local/index.html",title:"Connect / Local",category:"Data",desc:"Add local directories or files as audio sources."},{url:"facets/connect/opensubsonic/index.html",title:"Connect / OpenSubsonic",category:"Data",desc:"Connect to an OpenSubsonic server for audio input."},{url:"facets/connect/s3/index.html",title:"Connect / S3",category:"Data",desc:"Connect to an S3-compatible storage for audio input or user-data storage."},{url:"facets/data/artwork-bundle/index.html",title:"Default Artwork Bundle",kind:"prelude",category:"Data",tags:["base"],desc:"The default setup for track artwork retrieval. Adds support for: embedded audio metadata, Last.fm, and MusicBrainz."},{url:"facets/data/input-bundle/index.html",title:"Default Input Bundle",kind:"prelude",category:"Data",tags:["base"],desc:"The default setup for audio input sources. Adds support for: HTTPS, Icecast, the local filesystem, OpenSubsonic, and S3-compatible storage."},{url:"facets/data/metadata-bundle/index.html",title:"Default Metadata Bundle",kind:"prelude",category:"Data",tags:["base"],desc:"The default setup for track metadata lookups. Reads tags and audio stats from audio files."},{url:"facets/data/output-bundle/index.html",title:"Default Output Bundle",kind:"prelude",category:"Data",tags:["base"],desc:"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."},{url:"facets/data/export-import/index.html",title:"Export & Import",category:"Data",desc:"Export all data as a JSON snapshot, or restore from a previously exported file."},{url:"facets/data/playlists/index.html",title:"Playlists",category:"Data",featured:!0,desc:"An overview of all playlists and their contents."},{url:"facets/playback/preload/prelude/index.html",title:"Preload Tracks",kind:"prelude",category:"Playback",desc:"Automatically preload the next track in the queue."},{url:"facets/data/process-tracks/prelude/index.html",title:"Process Tracks",kind:"prelude",category:"Data",desc:"Process all your audio inputs into tracks automatically when opening any interface. Only happens once every 10 minutes, if the processing was completed."},{url:"facets/data/process-tracks/index.html",title:"Process Tracks",category:"Data",desc:"Process all your audio sources into tracks. Shows a progress bar when processing is occuring."},{url:"facets/misc/scrobble/index.html",title:"Scrobble",kind:"prelude",category:"Miscellaneous",desc:"Enable scrobbling, keep track of what you're listening to. Adds support for these scrobblers: Last.fm, ListenBrainz, Rocksky"},{url:"facets/misc/scrobble/last.fm/index.html",title:"Scrobble / Last.fm",category:"Miscellaneous",desc:"Connect to Last.fm to setup the Last.fm scrobbler."},{url:"facets/misc/scrobble/listenbrainz/index.html",title:"Scrobble / ListenBrainz",category:"Miscellaneous",desc:"Connect to ListenBrainz to setup the ListenBrainz scrobbler."},{url:"facets/misc/scrobble/rocksky/index.html",title:"Scrobble / Rocksky",category:"Miscellaneous",desc:"Connect to Rocksky to setup the Rocksky scrobbler."},{url:"facets/data/sources/index.html",title:"Sources",category:"Data",featured:!0,desc:"An overview of all audio inputs. Disable a source to hide its tracks without removing them."},{url:"facets/misc/split-view/index.html",title:"Split View",category:"Miscellaneous",desc:"Arrange multiple facets side-by-side in a resizable split-panel layout."},{url:"facets/data/v3-import/index.html",title:"V3.x Import",category:"Data",desc:"Import data from Diffuse v3."},{url:"themes/winamp/facet/index.html",title:"Winamp",category:"Themes",featured:!0,desc:"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."},{url:"themes/winamp/browser/facet/index.html",title:"Winamp / Browser",category:"Browsing",desc:"Collection browser and search."}];export{a}; 2 + 3 + //# sourceMappingURL=./chunk-PUCB64SE.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-PUCB64SE.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-PUCB64SE.js.map
··· 1 + {"version":3,"sources":["/_data/facets.json"],"sourcesContent":["[\n {\n \"url\": \"facets/playback/auto-queue/prelude/index.html\",\n \"title\": \"Automatic Queue\",\n \"kind\": \"prelude\",\n \"category\": \"Playback\",\n \"featured\": true,\n \"desc\": \"Automatically put tracks into the queue. **Always on.** These tracks will always be located after the ones you've added manually.\"\n },\n {\n \"url\": \"facets/playback/auto-queue/index.html\",\n \"title\": \"Automatic Queue\",\n \"category\": \"Playback\",\n \"desc\": \"Automatically put tracks into the queue when this interface is opened. Also allows for controlling shuffle, repeat, search, sorting and playlist selection.\"\n },\n {\n \"url\": \"themes/blur/facet/index.html\",\n \"title\": \"Blur\",\n \"category\": \"Themes\",\n \"featured\": true,\n \"desc\": \"A combination of the classic Diffuse browser and the Apple Music iOS playback screen.\"\n },\n {\n \"url\": \"themes/blur/artwork-controller/facet/index.html\",\n \"title\": \"Blur / Artwork Controller\",\n \"category\": \"Playback\",\n \"featured\": true,\n \"desc\": \"Audio playback controller with an artwork display. Play audio from the queue, add tracks to your favourites, control the queue and volume.\"\n },\n {\n \"url\": \"themes/blur/browser/facet/index.html\",\n \"title\": \"Blur / Browser\",\n \"category\": \"Browsing\",\n \"featured\": true,\n \"desc\": \"Collection browser and search with favourite toggling, date grouping, and virtual scrolling.\"\n },\n {\n \"url\": \"facets/data/cache-tracks/index.html\",\n \"title\": \"Cache Tracks\",\n \"kind\": \"prelude\",\n \"category\": \"Data\",\n \"featured\": true,\n \"desc\": \"Store tracks locally for offline usage automatically after they've been playing for a little while.\"\n },\n {\n \"url\": \"facets/misc/command/index.html\",\n \"title\": \"Command Menu\",\n \"category\": \"Miscellaneous\",\n \"desc\": \"A command palette for various actions.\"\n },\n {\n \"url\": \"facets/connect/index.html\",\n \"title\": \"Connect\",\n \"category\": \"Data\",\n \"featured\": true,\n \"desc\": \"A listing of some of the options available to use as an audio source, or as a user-data storage method.\"\n },\n {\n \"url\": \"facets/connect/atproto/index.html\",\n \"title\": \"Connect / AT Protocol\",\n \"category\": \"Data\",\n \"desc\": \"Use your AT Protocol identity for user-data storage.\"\n },\n {\n \"url\": \"facets/connect/https/index.html\",\n \"title\": \"Connect / HTTPS\",\n \"category\": \"Data\",\n \"desc\": \"Add HTTPS URLs as audio sources.\"\n },\n {\n \"url\": \"facets/connect/icecast/index.html\",\n \"title\": \"Connect / Icecast\",\n \"category\": \"Data\",\n \"desc\": \"Add an Icecast stream as an audio source.\"\n },\n {\n \"url\": \"facets/connect/local/index.html\",\n \"title\": \"Connect / Local\",\n \"category\": \"Data\",\n \"desc\": \"Add local directories or files as audio sources.\"\n },\n {\n \"url\": \"facets/connect/opensubsonic/index.html\",\n \"title\": \"Connect / OpenSubsonic\",\n \"category\": \"Data\",\n \"desc\": \"Connect to an OpenSubsonic server for audio input.\"\n },\n {\n \"url\": \"facets/connect/s3/index.html\",\n \"title\": \"Connect / S3\",\n \"category\": \"Data\",\n \"desc\": \"Connect to an S3-compatible storage for audio input or user-data storage.\"\n },\n {\n \"url\": \"facets/data/artwork-bundle/index.html\",\n \"title\": \"Default Artwork Bundle\",\n \"kind\": \"prelude\",\n \"category\": \"Data\",\n \"tags\": [\"base\"],\n \"desc\": \"The default setup for track artwork retrieval. Adds support for: embedded audio metadata, Last.fm, and MusicBrainz.\"\n },\n {\n \"url\": \"facets/data/input-bundle/index.html\",\n \"title\": \"Default Input Bundle\",\n \"kind\": \"prelude\",\n \"category\": \"Data\",\n \"tags\": [\"base\"],\n \"desc\": \"The default setup for audio input sources. Adds support for: HTTPS, Icecast, the local filesystem, OpenSubsonic, and S3-compatible storage.\"\n },\n {\n \"url\": \"facets/data/metadata-bundle/index.html\",\n \"title\": \"Default Metadata Bundle\",\n \"kind\": \"prelude\",\n \"category\": \"Data\",\n \"tags\": [\"base\"],\n \"desc\": \"The default setup for track metadata lookups. Reads tags and audio stats from audio files.\"\n },\n {\n \"url\": \"facets/data/output-bundle/index.html\",\n \"title\": \"Default Output Bundle\",\n \"kind\": \"prelude\",\n \"category\": \"Data\",\n \"tags\": [\"base\"],\n \"desc\": \"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.\"\n },\n {\n \"url\": \"facets/data/export-import/index.html\",\n \"title\": \"Export & Import\",\n \"category\": \"Data\",\n \"desc\": \"Export all data as a JSON snapshot, or restore from a previously exported file.\"\n },\n {\n \"url\": \"facets/data/playlists/index.html\",\n \"title\": \"Playlists\",\n \"category\": \"Data\",\n \"featured\": true,\n \"desc\": \"An overview of all playlists and their contents.\"\n },\n {\n \"url\": \"facets/playback/preload/prelude/index.html\",\n \"title\": \"Preload Tracks\",\n \"kind\": \"prelude\",\n \"category\": \"Playback\",\n \"desc\": \"Automatically preload the next track in the queue.\"\n },\n {\n \"url\": \"facets/data/process-tracks/prelude/index.html\",\n \"title\": \"Process Tracks\",\n \"kind\": \"prelude\",\n \"category\": \"Data\",\n \"desc\": \"Process all your audio inputs into tracks automatically when opening any interface. Only happens once every 10 minutes, if the processing was completed.\"\n },\n {\n \"url\": \"facets/data/process-tracks/index.html\",\n \"title\": \"Process Tracks\",\n \"category\": \"Data\",\n \"desc\": \"Process all your audio sources into tracks. Shows a progress bar when processing is occuring.\"\n },\n {\n \"url\": \"facets/misc/scrobble/index.html\",\n \"title\": \"Scrobble\",\n \"kind\": \"prelude\",\n \"category\": \"Miscellaneous\",\n \"desc\": \"Enable scrobbling, keep track of what you're listening to. Adds support for these scrobblers: Last.fm, ListenBrainz, Rocksky\"\n },\n {\n \"url\": \"facets/misc/scrobble/last.fm/index.html\",\n \"title\": \"Scrobble / Last.fm\",\n \"category\": \"Miscellaneous\",\n \"desc\": \"Connect to Last.fm to setup the Last.fm scrobbler.\"\n },\n {\n \"url\": \"facets/misc/scrobble/listenbrainz/index.html\",\n \"title\": \"Scrobble / ListenBrainz\",\n \"category\": \"Miscellaneous\",\n \"desc\": \"Connect to ListenBrainz to setup the ListenBrainz scrobbler.\"\n },\n {\n \"url\": \"facets/misc/scrobble/rocksky/index.html\",\n \"title\": \"Scrobble / Rocksky\",\n \"category\": \"Miscellaneous\",\n \"desc\": \"Connect to Rocksky to setup the Rocksky scrobbler.\"\n },\n {\n \"url\": \"facets/data/sources/index.html\",\n \"title\": \"Sources\",\n \"category\": \"Data\",\n \"featured\": true,\n \"desc\": \"An overview of all audio inputs. Disable a source to hide its tracks without removing them.\"\n },\n {\n \"url\": \"facets/misc/split-view/index.html\",\n \"title\": \"Split View\",\n \"category\": \"Miscellaneous\",\n \"desc\": \"Arrange multiple facets side-by-side in a resizable split-panel layout.\"\n },\n {\n \"url\": \"facets/data/v3-import/index.html\",\n \"title\": \"V3.x Import\",\n \"category\": \"Data\",\n \"desc\": \"Import data from Diffuse v3.\"\n },\n {\n \"url\": \"themes/winamp/facet/index.html\",\n \"title\": \"Winamp\",\n \"category\": \"Themes\",\n \"featured\": true,\n \"desc\": \"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.\"\n },\n {\n \"url\": \"themes/winamp/browser/facet/index.html\",\n \"title\": \"Winamp / Browser\",\n \"category\": \"Browsing\",\n \"desc\": \"Collection browser and search.\"\n }\n]\n"],"mappings":"AAAA,IAAAA,EAAA,CACE,CACE,IAAO,gDACP,MAAS,kBACT,KAAQ,UACR,SAAY,WACZ,SAAY,GACZ,KAAQ,mIACV,EACA,CACE,IAAO,wCACP,MAAS,kBACT,SAAY,WACZ,KAAQ,6JACV,EACA,CACE,IAAO,+BACP,MAAS,OACT,SAAY,SACZ,SAAY,GACZ,KAAQ,uFACV,EACA,CACE,IAAO,kDACP,MAAS,4BACT,SAAY,WACZ,SAAY,GACZ,KAAQ,4IACV,EACA,CACE,IAAO,uCACP,MAAS,iBACT,SAAY,WACZ,SAAY,GACZ,KAAQ,8FACV,EACA,CACE,IAAO,sCACP,MAAS,eACT,KAAQ,UACR,SAAY,OACZ,SAAY,GACZ,KAAQ,qGACV,EACA,CACE,IAAO,iCACP,MAAS,eACT,SAAY,gBACZ,KAAQ,wCACV,EACA,CACE,IAAO,4BACP,MAAS,UACT,SAAY,OACZ,SAAY,GACZ,KAAQ,yGACV,EACA,CACE,IAAO,oCACP,MAAS,wBACT,SAAY,OACZ,KAAQ,sDACV,EACA,CACE,IAAO,kCACP,MAAS,kBACT,SAAY,OACZ,KAAQ,kCACV,EACA,CACE,IAAO,oCACP,MAAS,oBACT,SAAY,OACZ,KAAQ,2CACV,EACA,CACE,IAAO,kCACP,MAAS,kBACT,SAAY,OACZ,KAAQ,kDACV,EACA,CACE,IAAO,yCACP,MAAS,yBACT,SAAY,OACZ,KAAQ,oDACV,EACA,CACE,IAAO,+BACP,MAAS,eACT,SAAY,OACZ,KAAQ,2EACV,EACA,CACE,IAAO,wCACP,MAAS,yBACT,KAAQ,UACR,SAAY,OACZ,KAAQ,CAAC,MAAM,EACf,KAAQ,qHACV,EACA,CACE,IAAO,sCACP,MAAS,uBACT,KAAQ,UACR,SAAY,OACZ,KAAQ,CAAC,MAAM,EACf,KAAQ,6IACV,EACA,CACE,IAAO,yCACP,MAAS,0BACT,KAAQ,UACR,SAAY,OACZ,KAAQ,CAAC,MAAM,EACf,KAAQ,4FACV,EACA,CACE,IAAO,uCACP,MAAS,wBACT,KAAQ,UACR,SAAY,OACZ,KAAQ,CAAC,MAAM,EACf,KAAQ,4KACV,EACA,CACE,IAAO,uCACP,MAAS,kBACT,SAAY,OACZ,KAAQ,iFACV,EACA,CACE,IAAO,mCACP,MAAS,YACT,SAAY,OACZ,SAAY,GACZ,KAAQ,kDACV,EACA,CACE,IAAO,6CACP,MAAS,iBACT,KAAQ,UACR,SAAY,WACZ,KAAQ,oDACV,EACA,CACE,IAAO,gDACP,MAAS,iBACT,KAAQ,UACR,SAAY,OACZ,KAAQ,0JACV,EACA,CACE,IAAO,wCACP,MAAS,iBACT,SAAY,OACZ,KAAQ,+FACV,EACA,CACE,IAAO,kCACP,MAAS,WACT,KAAQ,UACR,SAAY,gBACZ,KAAQ,8HACV,EACA,CACE,IAAO,0CACP,MAAS,qBACT,SAAY,gBACZ,KAAQ,oDACV,EACA,CACE,IAAO,+CACP,MAAS,0BACT,SAAY,gBACZ,KAAQ,8DACV,EACA,CACE,IAAO,0CACP,MAAS,qBACT,SAAY,gBACZ,KAAQ,oDACV,EACA,CACE,IAAO,iCACP,MAAS,UACT,SAAY,OACZ,SAAY,GACZ,KAAQ,6FACV,EACA,CACE,IAAO,oCACP,MAAS,aACT,SAAY,gBACZ,KAAQ,yEACV,EACA,CACE,IAAO,mCACP,MAAS,cACT,SAAY,OACZ,KAAQ,8BACV,EACA,CACE,IAAO,iCACP,MAAS,SACT,SAAY,SACZ,SAAY,GACZ,KAAQ,wMACV,EACA,CACE,IAAO,yCACP,MAAS,mBACT,SAAY,WACZ,KAAQ,gCACV,CACF","names":["facets_default"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-PUCB64SE.js.map"}
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-PYJ4JJFC.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-PYJ4JJFC.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-PYJ4JJFC.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-PYJ4JJFC.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-PYJ4JJFC.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-PYJ4JJFC.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-QOBPHMGK.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-QOBPHMGK.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-QOBPHMGK.js.br
··· 1 + ../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/chunk-7UDK7NVH.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-QOBPHMGK.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-QOBPHMGK.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-QQ3UQ3JQ.js
··· 1 + import{a as i}from"./chunk-6AH2OFQT.js";import{a as u}from"./chunk-MWWZQLVP.js";import{a as n}from"./chunk-BFIVCPQF.js";function f({id:t}){return async()=>{if(!confirm("Are you sure you want to delete this facet?"))return;let c=await u(),a=await i(c.facets);c.facets.save(a.filter(e=>e.id!==t))}}n(f,"deleteFacet");function d({id:t}){return async()=>{let o=await u(),c=await i(o.facets),a=c.find(e=>e.id===t);a&&await o.facets.save([...c.filter(e=>e.id!==t),{...a,enabled:!(a.enabled??!0),updatedAt:new Date().toISOString()}])}}n(d,"toggleFacetEnabled");async function l(t){let o=await u(),a=(await i(o.facets)).filter(e=>e.id!==t.id);await o.facets.save([...a,{...t,updatedAt:new Date().toISOString()}])}n(l,"saveFacet");export{f as a,d as b,l as c}; 2 + 3 + //# sourceMappingURL=./chunk-QQ3UQ3JQ.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-QQ3UQ3JQ.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-QQ3UQ3JQ.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 {{ id: string }} _\n */\nexport function toggleFacetEnabled({ id }) {\n return async () => {\n const out = await output();\n const col = await Output.data(out.facets);\n const facet = col.find((c) => c.id === id);\n if (!facet) return;\n await out.facets.save([\n ...col.filter((c) => c.id !== id),\n { ...facet, enabled: !(facet.enabled ?? true), updatedAt: new Date().toISOString() },\n ]);\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,OAAQE,GAAQA,EAAE,KAAOL,CAAG,CAAC,CACnD,CACF,CAVgBM,EAAAP,EAAA,eAeT,SAASQ,EAAmB,CAAE,GAAAP,CAAG,EAAG,CACzC,MAAO,UAAY,CACjB,IAAMC,EAAM,MAAMC,EAAO,EACnBC,EAAM,MAAaC,EAAKH,EAAI,MAAM,EAClCO,EAAQL,EAAI,KAAME,GAAMA,EAAE,KAAOL,CAAE,EACpCQ,GACL,MAAMP,EAAI,OAAO,KAAK,CACpB,GAAGE,EAAI,OAAQE,GAAMA,EAAE,KAAOL,CAAE,EAChC,CAAE,GAAGQ,EAAO,QAAS,EAAEA,EAAM,SAAW,IAAO,UAAW,IAAI,KAAK,EAAE,YAAY,CAAE,CACrF,CAAC,CACH,CACF,CAXgBF,EAAAC,EAAA,sBAgBhB,eAAsBE,EAAUD,EAAO,CACrC,IAAMP,EAAM,MAAMC,EAAO,EAEnBQ,GADM,MAAaN,EAAKH,EAAI,MAAM,GACf,OAAQI,GAAMA,EAAE,KAAOG,EAAM,EAAE,EACxD,MAAMP,EAAI,OAAO,KAAK,CAAC,GAAGS,EAAc,CACtC,GAAGF,EACH,UAAW,IAAI,KAAK,EAAE,YAAY,CACpC,CAAC,CAAC,CACJ,CARsBF,EAAAG,EAAA","names":["deleteFacet","id","out","output","col","data","c","__name","toggleFacetEnabled","facet","saveFacet","colWithoutId"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-QQ3UQ3JQ.js.map"}
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-QVM63RP5.js
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-QVM63RP5.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-QVM63RP5.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-QVM63RP5.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-QVM63RP5.js.map
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-QVM63RP5.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-RHZZBZQZ.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-RHZZBZQZ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-RHZZBZQZ.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-RHZZBZQZ.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-RHZZBZQZ.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-RHZZBZQZ.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-RPJXLERJ.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-RPJXLERJ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-RPJXLERJ.js.br
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-RPJXLERJ.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-RPJXLERJ.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-RPJXLERJ.js.map
+223
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-RPTB6G7G.js
··· 1 + import{a as fe}from"./chunk-H6DQPAGD.js";import{a as D,b as M,c as Z}from"./chunk-DGFSH4HV.js";import{a as we}from"./chunk-SMPARDQR.js";import{a as m,d as B,e as L,g as W}from"./chunk-MWEXZQ4O.js";import{a as xe,b as me}from"./chunk-QQ3UQ3JQ.js";import{a as be}from"./chunk-MWWZQLVP.js";import{a as ge,b as ke}from"./chunk-YXAKQEZA.js";import{k as X,o as de}from"./chunk-YHFKI4Y2.js";import{a as h}from"./chunk-BFIVCPQF.js";var ye=M(class extends Z{constructor(s){if(super(s),s.type!==D.ATTRIBUTE||s.name!=="class"||s.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(s){return" "+Object.keys(s).filter(e=>s[e]).join(" ")+" "}update(s,[e]){if(this.st===void 0){this.st=new Set,s.strings!==void 0&&(this.nt=new Set(s.strings.join(" ").split(/\s/).filter(n=>n!=="")));for(let n in e)e[n]&&!this.nt?.has(n)&&this.st.add(n);return this.render(e)}let r=s.element.classList;for(let n of this.st)n in e||(r.remove(n),this.st.delete(n));for(let n in e){let t=!!e[n];t===this.st.has(n)||this.nt?.has(n)||(t?(r.add(n),this.st.add(n)):(r.remove(n),this.st.delete(n)))}return B}});function V(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}h(V,"M");var v=V();function Ae(s){v=s}h(Ae,"G");var S={exec:h(()=>null,"exec")};function d(s,e=""){let r=typeof s=="string"?s:s.source,n={replace:h((t,l)=>{let i=typeof l=="string"?l:l.source;return i=i.replace(x.caret,"$1"),r=r.replace(t,i),n},"replace"),getRegex:h(()=>new RegExp(r,e),"getRegex")};return n}h(d,"k");var Qe=(()=>{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(s=>new RegExp(`^( {0,3}${s})((?:[ ][^\\n]*)?(?:\\n|$))`),"listItemRegex"),nextBulletRegex:h(s=>new RegExp(`^ {0,${Math.min(3,s-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),"nextBulletRegex"),hrRegex:h(s=>new RegExp(`^ {0,${Math.min(3,s-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),"hrRegex"),fencesBeginRegex:h(s=>new RegExp(`^ {0,${Math.min(3,s-1)}}(?:\`\`\`|~~~)`),"fencesBeginRegex"),headingBeginRegex:h(s=>new RegExp(`^ {0,${Math.min(3,s-1)}}#`),"headingBeginRegex"),htmlBeginRegex:h(s=>new RegExp(`^ {0,${Math.min(3,s-1)}}<(?:[a-z].*>|!--)`,"i"),"htmlBeginRegex"),blockquoteBeginRegex:h(s=>new RegExp(`^ {0,${Math.min(3,s-1)}}>`),"blockquoteBeginRegex")},Fe=/^(?:[ \t]*(?:\n|$))+/,je=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Ne=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,E=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Oe=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,ee=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,_e=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Le=d(_e).replace(/bull/g,ee).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=d(_e).replace(/bull/g,ee).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(),te=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Ge=/^[^\n]+/,re=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Xe=d(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",re).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),We=d(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,ee).getRegex(),N="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",se=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Ye=d("^ {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",se).replace("tag",N).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Ie=d(te).replace("hr",E).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",N).getRegex(),Ke=d(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Ie).getRegex(),ne={blockquote:Ke,code:je,def:Xe,fences:Ne,heading:Oe,hr:E,html:Ye,lheading:Le,list:We,newline:Fe,paragraph:Ie,table:S,text:Ge},$e=d("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",E).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",N).getRegex(),Je={...ne,lheading:Ue,table:$e,paragraph:d(te).replace("hr",E).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",$e).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",N).getRegex()},Ve={...ne,html:d(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",se).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:d(te).replace("hr",E).replace("heading",` *#{1,6} *[^ 2 + ]`).replace("lheading",Le).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},et=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,tt=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Pe=/^( {2,}|\\)\n(?!\s*$)/,rt=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,A=/[\p{P}\p{S}]/u,O=/[\s\p{P}\p{S}]/u,ie=/[^\s\p{P}\p{S}]/u,st=d(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,O).getRegex(),Ce=/(?!~)[\p{P}\p{S}]/u,nt=/(?!~)[\s\p{P}\p{S}]/u,it=/(?:[^\s\p{P}\p{S}]|~)/u,lt=d(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",Qe?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),Ee=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,at=d(Ee,"u").replace(/punct/g,A).getRegex(),ot=d(Ee,"u").replace(/punct/g,Ce).getRegex(),qe="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",ct=d(qe,"gu").replace(/notPunctSpace/g,ie).replace(/punctSpace/g,O).replace(/punct/g,A).getRegex(),pt=d(qe,"gu").replace(/notPunctSpace/g,it).replace(/punctSpace/g,nt).replace(/punct/g,Ce).getRegex(),ht=d("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,ie).replace(/punctSpace/g,O).replace(/punct/g,A).getRegex(),ut=d(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,A).getRegex(),dt="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",gt=d(dt,"gu").replace(/notPunctSpace/g,ie).replace(/punctSpace/g,O).replace(/punct/g,A).getRegex(),kt=d(/\\(punct)/,"gu").replace(/punct/g,A).getRegex(),ft=d(/^<(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(),bt=d(se).replace("(?:-->|$)","-->").getRegex(),xt=d("^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",bt).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Q=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,mt=d(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",Q).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Be=d(/^!?\[(label)\]\[(ref)\]/).replace("label",Q).replace("ref",re).getRegex(),De=d(/^!?\[(ref)\](?:\[\])?/).replace("ref",re).getRegex(),wt=d("reflink|nolink(?!\\()","g").replace("reflink",Be).replace("nolink",De).getRegex(),Re=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,le={_backpedal:S,anyPunctuation:kt,autolink:ft,blockSkip:lt,br:Pe,code:tt,del:S,delLDelim:S,delRDelim:S,emStrongLDelim:at,emStrongRDelimAst:ct,emStrongRDelimUnd:ht,escape:et,link:mt,nolink:De,punctuation:st,reflink:Be,reflinkSearch:wt,tag:xt,text:rt,url:S},yt={...le,link:d(/^!?\[(label)\]\((.*?)\)/).replace("label",Q).getRegex(),reflink:d(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Q).getRegex()},Y={...le,emStrongRDelimAst:pt,emStrongLDelim:ot,delLDelim:ut,delRDelim:gt,url:d(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",Re).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:d(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",Re).getRegex()},$t={...Y,br:d(Pe).replace("{2,}","*").getRegex(),text:d(Y.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},H={normal:ne,gfm:Je,pedantic:Ve},I={normal:le,gfm:Y,breaks:$t,pedantic:yt},Rt={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},Se=h(s=>Rt[s],"ke");function $(s,e){if(e){if(x.escapeTest.test(s))return s.replace(x.escapeReplace,Se)}else if(x.escapeTestNoEncode.test(s))return s.replace(x.escapeReplaceNoEncode,Se);return s}h($,"O");function Te(s){try{s=encodeURI(s).replace(x.percentDecode,"%")}catch{return null}return s}h(Te,"J");function ve(s,e){let r=s.replace(x.findPipe,(l,i,c)=>{let a=!1,o=i;for(;--o>=0&&c[o]==="\\";)a=!a;return a?"|":" |"}),n=r.split(x.splitPipe),t=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length<e;)n.push("");for(;t<n.length;t++)n[t]=n[t].trim().replace(x.slashPipe,"|");return n}h(ve,"V");function P(s,e,r){let n=s.length;if(n===0)return"";let t=0;for(;t<n;){let l=s.charAt(n-t-1);if(l===e&&!r)t++;else if(l!==e&&r)t++;else break}return s.slice(0,n-t)}h(P,"I");function St(s,e){if(s.indexOf(e[1])===-1)return-1;let r=0;for(let n=0;n<s.length;n++)if(s[n]==="\\")n++;else if(s[n]===e[0])r++;else if(s[n]===e[1]&&(r--,r<0))return n;return r>0?-2:-1}h(St,"de");function Tt(s,e=0){let r=e,n="";for(let t of s)if(t===" "){let l=4-r%4;n+=" ".repeat(l),r+=l}else n+=t,r++;return n}h(Tt,"ge");function ze(s,e,r,n,t){let l=e.href,i=e.title||null,c=s[1].replace(t.other.outputLinkReplace,"$1");n.state.inLink=!0;let a={type:s[0].charAt(0)==="!"?"image":"link",raw:r,href:l,title:i,text:c,tokens:n.inlineTokens(c)};return n.state.inLink=!1,a}h(ze,"fe");function vt(s,e,r){let n=s.match(r.other.indentCodeCompensation);if(n===null)return e;let t=n[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(vt,"nt");var F=class{static{h(this,"w")}options;rules;lexer;constructor(s){this.options=s||v}space(s){let e=this.rules.block.newline.exec(s);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(s){let e=this.rules.block.code.exec(s);if(e){let r=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?r:P(r,` 5 + `)}}}fences(s){let e=this.rules.block.fences.exec(s);if(e){let r=e[0],n=vt(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:n}}}heading(s){let e=this.rules.block.heading.exec(s);if(e){let r=e[2].trim();if(this.rules.other.endingHash.test(r)){let n=P(r,"#");(this.options.pedantic||!n||this.rules.other.endingSpaceChar.test(n))&&(r=n.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:r,tokens:this.lexer.inline(r)}}}hr(s){let e=this.rules.block.hr.exec(s);if(e)return{type:"hr",raw:P(e[0],` 6 + `)}}blockquote(s){let e=this.rules.block.blockquote.exec(s);if(e){let r=P(e[0],` 7 + `).split(` 8 + `),n="",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,"");n=n?`${n} 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 g=l.at(-1);if(g?.type==="code")break;if(g?.type==="blockquote"){let b=g,f=b.raw+` 13 + `+r.join(` 14 + `),R=this.blockquote(f);l[l.length-1]=R,n=n.substring(0,n.length-b.raw.length)+R.raw,t=t.substring(0,t.length-b.text.length)+R.text;break}else if(g?.type==="list"){let b=g,f=b.raw+` 15 + `+r.join(` 16 + `),R=this.list(f);l[l.length-1]=R,n=n.substring(0,n.length-g.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:n,tokens:l,text:t}}}list(s){let e=this.rules.block.list.exec(s);if(e){let r=e[1].trim(),n=r.length>1,t={type:"list",raw:"",ordered:n,start:n?+r.slice(0,-1):"",loose:!1,items:[]};r=n?`\\d{1,9}\\${r.slice(-1)}`:`\\${r}`,this.options.pedantic&&(r=n?r:"[*+-]");let l=this.rules.other.listItemRegex(r),i=!1;for(;s;){let a=!1,o="",p="";if(!(e=l.exec(s))||this.rules.block.hr.test(s))break;o=e[0],s=s.substring(o.length);let u=Tt(e[2].split(` 18 + `,1)[0],e[1].length),g=s.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(g)&&(o+=g+` 20 + `,s=s.substring(g.length+1),a=!0),!a){let R=this.rules.other.nextBulletRegex(f),pe=this.rules.other.hrRegex(f),he=this.rules.other.fencesBeginRegex(f),ue=this.rules.other.headingBeginRegex(f),Ze=this.rules.other.htmlBeginRegex(f),He=this.rules.other.blockquoteBeginRegex(f);for(;s;){let G=s.split(` 21 + `,1)[0],_;if(g=G,this.options.pedantic?(g=g.replace(this.rules.other.listReplaceNesting," "),_=g):_=g.replace(this.rules.other.tabCharGlobal," "),he.test(g)||ue.test(g)||Ze.test(g)||He.test(g)||R.test(g)||pe.test(g))break;if(_.search(this.rules.other.nonSpaceChar)>=f||!g.trim())p+=` 22 + `+_.slice(f);else{if(b||u.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||he.test(u)||ue.test(u)||pe.test(u))break;p+=` 23 + `+g}b=!g.trim(),o+=G+` 24 + `,s=s.substring(G.length+1),u=_.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(s){let e=this.rules.block.html.exec(s);if(e)return{type:"html",block:!0,raw:e[0],pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:e[0]}}def(s){let e=this.rules.block.def.exec(s);if(e){let r=e[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),n=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:n,title:t}}}table(s){let e=this.rules.block.table.exec(s);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let r=ve(e[1]),n=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===n.length){for(let i of n)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(ve(i,l.header.length).map((c,a)=>({text:c,tokens:this.lexer.inline(c),header:!1,align:l.align[a]})));return l}}lheading(s){let e=this.rules.block.lheading.exec(s);if(e){let r=e[1].trim();return{type:"heading",raw:e[0],depth:e[2].charAt(0)==="="?1:2,text:r,tokens:this.lexer.inline(r)}}}paragraph(s){let e=this.rules.block.paragraph.exec(s);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(s){let e=this.rules.block.text.exec(s);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(s){let e=this.rules.inline.escape.exec(s);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(s){let e=this.rules.inline.tag.exec(s);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(s){let e=this.rules.inline.link.exec(s);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=P(r.slice(0,-1),"\\");if((r.length-l.length)%2===0)return}else{let l=St(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 n=e[2],t="";if(this.options.pedantic){let l=this.rules.other.pedanticHrefTitle.exec(n);l&&(n=l[1],t=l[3])}else t=e[3]?e[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(r)?n=n.slice(1):n=n.slice(1,-1)),ze(e,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:t&&t.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(s,e){let r;if((r=this.rules.inline.reflink.exec(s))||(r=this.rules.inline.nolink.exec(s))){let n=(r[2]||r[1]).replace(this.rules.other.multipleSpaceGlobal," "),t=e[n.toLowerCase()];if(!t){let l=r[0].charAt(0);return{type:"text",raw:l,text:l}}return ze(r,t,r[0],this.lexer,this.rules)}}emStrong(s,e,r=""){let n=this.rules.inline.emStrongLDelim.exec(s);if(!(!n||!n[1]&&!n[2]&&!n[3]&&!n[4]||n[4]&&r.match(this.rules.other.unicodeAlphaNumeric))&&(!(n[1]||n[3])||!r||this.rules.inline.punctuation.exec(r))){let t=[...n[0]].length-1,l,i,c=t,a=0,o=n[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(o.lastIndex=0,e=e.slice(-1*s.length+t);(n=o.exec(e))!=null;){if(l=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],!l)continue;if(i=[...l].length,n[3]||n[4]){c+=i;continue}else if((n[5]||n[6])&&t%3&&!((t+i)%3)){a+=i;continue}if(c-=i,c>0)continue;i=Math.min(i,i+c+a);let p=[...n[0]][0].length,u=s.slice(0,t+n.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 g=u.slice(2,-2);return{type:"strong",raw:u,text:g,tokens:this.lexer.inlineTokens(g)}}}}codespan(s){let e=this.rules.inline.code.exec(s);if(e){let r=e[2].replace(this.rules.other.newLineCharGlobal," "),n=this.rules.other.nonSpaceChar.test(r),t=this.rules.other.startingSpaceChar.test(r)&&this.rules.other.endingSpaceChar.test(r);return n&&t&&(r=r.substring(1,r.length-1)),{type:"codespan",raw:e[0],text:r}}}br(s){let e=this.rules.inline.br.exec(s);if(e)return{type:"br",raw:e[0]}}del(s,e,r=""){let n=this.rules.inline.delLDelim.exec(s);if(n&&(!n[1]||!r||this.rules.inline.punctuation.exec(r))){let t=[...n[0]].length-1,l,i,c=t,a=this.rules.inline.delRDelim;for(a.lastIndex=0,e=e.slice(-1*s.length+t);(n=a.exec(e))!=null;){if(l=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],!l||(i=[...l].length,i!==t))continue;if(n[3]||n[4]){c+=i;continue}if(c-=i,c>0)continue;i=Math.min(i,i+c);let o=[...n[0]][0].length,p=s.slice(0,t+n.index+o+i),u=p.slice(t,-t);return{type:"del",raw:p,text:u,tokens:this.lexer.inlineTokens(u)}}}}autolink(s){let e=this.rules.inline.autolink.exec(s);if(e){let r,n;return e[2]==="@"?(r=e[1],n="mailto:"+r):(r=e[1],n=r),{type:"link",raw:e[0],text:r,href:n,tokens:[{type:"text",raw:r,text:r}]}}}url(s){let e;if(e=this.rules.inline.url.exec(s)){let r,n;if(e[2]==="@")r=e[0],n="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."?n="http://"+e[0]:n=e[0]}return{type:"link",raw:e[0],text:r,href:n,tokens:[{type:"text",raw:r,text:r}]}}}inlineText(s){let e=this.rules.inline.text.exec(s);if(e){let r=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:r}}}},w=class K{static{h(this,"u")}tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||v,this.options.tokenizer=this.options.tokenizer||new F,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:H.normal,inline:I.normal};this.options.pedantic?(r.block=H.pedantic,r.inline=I.pedantic):this.options.gfm&&(r.block=H.gfm,this.options.breaks?r.inline=I.breaks:r.inline=I.gfm),this.tokenizer.rules=r}static get rules(){return{block:H,inline:I}}static lex(e,r){return new K(r).lex(e)}static lexInline(e,r){return new K(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 n=this.inlineQueue[r];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,r=[],n=!1){for(this.tokenizer.lexer=this,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);n&&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),n=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=[]){this.tokenizer.lexer=this;let n=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(n))!=null;)a.includes(t[0].slice(t[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,t.index)+"["+"a".repeat(t[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(t=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,t.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let l;for(;(t=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)l=t[2]?t[2].length:0,n=n.slice(0,t.index+l)+"["+"a".repeat(t[0].length-l-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;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,n,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,n,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),g;this.options.extensions.startInline.forEach(b=>{g=b.call({lexer:this},u),typeof g=="number"&&g>=0&&(p=Math.min(p,g))}),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}},j=class{static{h(this,"y")}options;parser;constructor(s){this.options=s||v}space(s){return""}code({text:s,lang:e,escaped:r}){let n=(e||"").match(x.notSpaceStart)?.[0],t=s.replace(x.endingNewline,"")+` 41 + `;return n?'<pre><code class="language-'+$(n)+'">'+(r?t:$(t,!0))+`</code></pre> 42 + `:"<pre><code>"+(r?t:$(t,!0))+`</code></pre> 43 + `}blockquote({tokens:s}){return`<blockquote> 44 + ${this.parser.parse(s)}</blockquote> 45 + `}html({text:s}){return s}def(s){return""}heading({tokens:s,depth:e}){return`<h${e}>${this.parser.parseInline(s)}</h${e}> 46 + `}hr(s){return`<hr> 47 + `}list(s){let e=s.ordered,r=s.start,n="";for(let i=0;i<s.items.length;i++){let c=s.items[i];n+=this.listitem(c)}let t=e?"ol":"ul",l=e&&r!==1?' start="'+r+'"':"";return"<"+t+l+`> 48 + `+n+"</"+t+`> 49 + `}listitem(s){return`<li>${this.parser.parse(s.tokens)}</li> 50 + `}checkbox({checked:s}){return"<input "+(s?'checked="" ':"")+'disabled="" type="checkbox"> '}paragraph({tokens:s}){return`<p>${this.parser.parseInline(s)}</p> 51 + `}table(s){let e="",r="";for(let t=0;t<s.header.length;t++)r+=this.tablecell(s.header[t]);e+=this.tablerow({text:r});let n="";for(let t=0;t<s.rows.length;t++){let l=s.rows[t];r="";for(let i=0;i<l.length;i++)r+=this.tablecell(l[i]);n+=this.tablerow({text:r})}return n&&(n=`<tbody>${n}</tbody>`),`<table> 52 + <thead> 53 + `+e+`</thead> 54 + `+n+`</table> 55 + `}tablerow({text:s}){return`<tr> 56 + ${s}</tr> 57 + `}tablecell(s){let e=this.parser.parseInline(s.tokens),r=s.header?"th":"td";return(s.align?`<${r} align="${s.align}">`:`<${r}>`)+e+`</${r}> 58 + `}strong({tokens:s}){return`<strong>${this.parser.parseInline(s)}</strong>`}em({tokens:s}){return`<em>${this.parser.parseInline(s)}</em>`}codespan({text:s}){return`<code>${$(s,!0)}</code>`}br(s){return"<br>"}del({tokens:s}){return`<del>${this.parser.parseInline(s)}</del>`}link({href:s,title:e,tokens:r}){let n=this.parser.parseInline(r),t=Te(s);if(t===null)return n;s=t;let l='<a href="'+s+'"';return e&&(l+=' title="'+$(e)+'"'),l+=">"+n+"</a>",l}image({href:s,title:e,text:r,tokens:n}){n&&(r=this.parser.parseInline(n,this.parser.textRenderer));let t=Te(s);if(t===null)return $(r);s=t;let l=`<img src="${s}" alt="${$(r)}"`;return e&&(l+=` title="${$(e)}"`),l+=">",l}text(s){return"tokens"in s&&s.tokens?this.parser.parseInline(s.tokens):"escaped"in s&&s.escaped?s.text:$(s.text)}},ae=class{static{h(this,"$")}strong({text:s}){return s}em({text:s}){return s}codespan({text:s}){return s}del({text:s}){return s}html({text:s}){return s}text({text:s}){return s}link({text:s}){return""+s}image({text:s}){return""+s}br(){return""}checkbox({raw:s}){return s}},y=class J{static{h(this,"u")}options;renderer;textRenderer;constructor(e){this.options=e||v,this.options.renderer=this.options.renderer||new j,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new ae}static parse(e,r){return new J(r).parse(e)}static parseInline(e,r){return new J(r).parseInline(e)}parse(e){this.renderer.parser=this;let r="";for(let n=0;n<e.length;n++){let t=e[n];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){this.renderer.parser=this;let n="";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)){n+=c||"";continue}}let i=l;switch(i.type){case"escape":{n+=r.text(i);break}case"html":{n+=r.html(i);break}case"link":{n+=r.link(i);break}case"image":{n+=r.image(i);break}case"checkbox":{n+=r.checkbox(i);break}case"strong":{n+=r.strong(i);break}case"em":{n+=r.em(i);break}case"codespan":{n+=r.codespan(i);break}case"br":{n+=r.br(i);break}case"del":{n+=r.del(i);break}case"text":{n+=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 n}},C=class{static{h(this,"P")}options;block;constructor(s){this.options=s||v}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(s){return s}postprocess(s){return s}processAllTokens(s){return s}emStrongMask(s){return s}provideLexer(){return this.block?w.lex:w.lexInline}provideParser(){return this.block?y.parse:y.parseInline}},zt=class{static{h(this,"D")}defaults=V();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=y;Renderer=j;TextRenderer=ae;Lexer=w;Tokenizer=F;Hooks=C;constructor(...s){this.use(...s)}walkTokens(s,e){let r=[];for(let n of s)switch(r=r.concat(e.call(this,n)),n.type){case"table":{let t=n;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=n;r=r.concat(this.walkTokens(t.items,e));break}default:{let t=n;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(...s){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return s.forEach(r=>{let n={...r};if(n.async=this.defaults.async||n.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)}),n.extensions=e),r.renderer){let t=this.defaults.renderer||new j(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||""}}n.renderer=t}if(r.tokenizer){let t=this.defaults.tokenizer||new F(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}}n.tokenizer=t}if(r.hooks){let t=this.defaults.hooks||new C;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];C.passThroughHooks.has(l)?t[i]=o=>{if(this.defaults.async&&C.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}}n.hooks=t}if(r.walkTokens){let t=this.defaults.walkTokens,l=r.walkTokens;n.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,...n}}),this}setOptions(s){return this.defaults={...this.defaults,...s},this}lexer(s,e){return w.lex(s,e??this.defaults)}parser(s,e){return y.parse(s,e??this.defaults)}parseMarkdown(s){return(e,r)=>{let n={...r},t={...this.defaults,...n},l=this.onError(!!t.silent,!!t.async);if(this.defaults.async===!0&&n.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=s),t.async)return(async()=>{let i=t.hooks?await t.hooks.preprocess(e):e,c=await(t.hooks?await t.hooks.provideLexer():s?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():s?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():s?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():s?y.parse:y.parseInline)(i,t);return t.hooks&&(c=t.hooks.postprocess(c)),c}catch(i){return l(i)}}}onError(s,e){return r=>{if(r.message+=` 59 + Please report this to https://github.com/markedjs/marked.`,s){let n="<p>An error occurred:</p><pre>"+$(r.message+"",!0)+"</pre>";return e?Promise.resolve(n):n}if(e)return Promise.reject(r);throw r}}},T=new zt;function k(s,e){return T.parse(s,e)}h(k,"g");k.options=k.setOptions=function(s){return T.setOptions(s),k.defaults=T.defaults,Ae(k.defaults),k};k.getDefaults=V;k.defaults=v;k.use=function(...s){return T.use(...s),k.defaults=T.defaults,Ae(k.defaults),k};k.walkTokens=function(s,e){return T.walkTokens(s,e)};k.parseInline=T.parseInline;k.Parser=y;k.parser=y.parse;k.Renderer=j;k.TextRenderer=ae;k.Lexer=w;k.lexer=w.lex;k.Tokenizer=F;k.Hooks=C;k.parse=k;var Et=k.options,qt=k.setOptions,Bt=k.use,Dt=k.walkTokens,Mt=k.parseInline;var Zt=y.parse,Ht=w.lex;var q=class extends Z{static{h(this,"e")}constructor(e){if(super(e),this.it=L,e.type!==D.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(e){if(e===L||e==null)return this._t=void 0,this.it=e;if(e===B)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:[]}}};q.directiveName="unsafeHTML",q.resultType=1;var Me=M(q);var ce="diffuse/dashboard/filter",U=localStorage.getItem(ce),z=de(U==="prelude"||U==="interface"||U==="base"?U:"all");X(()=>{localStorage.setItem(ce,z.get())});var At=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"),oe;async function cr(){oe&&oe(),z.set((()=>{let r=localStorage.getItem(ce);return r==="prelude"||r==="interface"||r==="base"?r:"all"})());let s=document.querySelector("#list");if(!s)throw new Error("List element not found");s.getAttribute("data-rendered")==="f"&&(s.innerHTML="",s.removeAttribute("data-rendered"));let e=await be();oe=X(()=>{_t(e,s)})}h(cr,"renderList");function _t(s,e){let r=s.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 + `;W(o,e);return}let n=z.get(),t=r.state==="loaded"?[...r.data].filter(o=>n==="base"?!!o.tags?.includes("base"):(n==="all"||(n==="prelude"?o.kind==="prelude":o.kind!=="prelude"))&&!o.tags?.includes("base")).sort((o,p)=>o.name.toLocaleLowerCase().localeCompare(p.name.toLocaleLowerCase())||o.id.localeCompare(p.id)):[],l=s.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 ${n==="all"?"":"button--transparent"}" 79 + @click="${()=>z.set("all")}" 80 + > 81 + All 82 + </button> 83 + <button 84 + class="button--border button--tiny button--bg-twist-4 button--tr-twist-4 ${n==="prelude"?"":"button--transparent"}" 85 + @click="${()=>z.set("prelude")}" 86 + > 87 + Features 88 + </button> 89 + <button 90 + class="button--border button--tiny button--bg-twist-2 button--tr-twist-2 ${n==="interface"?"":"button--transparent"}" 91 + @click="${()=>z.set("interface")}" 92 + > 93 + Interfaces 94 + </button> 95 + 96 + <button 97 + class="button--border button--tiny ${n==="base"?"":"button--transparent"}" 98 + title="Show the hidden essential features" 99 + @click="${()=>z.set("base")}" 100 + > 101 + Base 102 + </button> 103 + 104 + <span class="divider"></span> 105 + 106 + <button 107 + class="button--border button--tiny button--bg-accent button--tr-accent button--transparent" 108 + @click="${()=>we()}" 109 + > 110 + <span class="with-repositioned-icon"> 111 + <i class="ph-fill ph-plus-circle"></i> 112 + <span class="button__supplementary-text">Add from URI</span> 113 + </span> 114 + </button> 115 + 116 + <div style="flex: 1"></div> 117 + 118 + <span class="grid-filter--label grid-filter--label-output" 119 + >Userdata from</span> 120 + <span class="grid-filter--output">${i}</span> 121 + </div> 122 + `,a=t.length||n!=="all"?m` 123 + ${c} 124 + <ul class="grid" style="margin: 0"> 125 + ${t.map((o,p)=>{let u=ge(o),g=ke(o),b=o.kind==="prelude"?m` 126 + <span style="display: inline-block; padding: var(--space-3xs) 0"> 127 + ${o.name} 128 + </span> 129 + `:m` 130 + <a 131 + href="l/?id=${o.id}" 132 + style="display: inline-block; padding: var(--space-3xs) 0" 133 + > 134 + ${o.name} 135 + </a> 136 + `;return fe(o.id,m` 137 + <li 138 + class="grid-item" 139 + style="--grid-item-color: ${u}" 140 + ?data-disabled="${!(o.enabled??!0)}" 141 + > 142 + <div class="grid-item__contents"> 143 + <div class="grid-item__title" style="color: ${u}"> 144 + ${b} 145 + </div> 146 + <div class="list-description"> 147 + <div> 148 + ${o.description?.trim().length?Me(k.parse(o.description,{async:!1})):L} 149 + </div> 150 + <div> 151 + ${o.uri&&!o.html?m` 152 + <span class="with-icon"> 153 + <i class="ph-fill ph-binoculars"></i> 154 + <span>Tracking the original <a href="${o.uri}">URI</a></span> 155 + </span> 156 + `:m` 157 + <span class="with-icon"> 158 + <i class="ph-fill ph-code-simple"></i> 159 + <span>Custom code</span> 160 + </span> 161 + `} 162 + </div> 163 + </div> 164 + </div> 165 + 166 + <div class="grid-item__menu ${ye({"grid-item__menu--active":o.enabled??!0})}"> 167 + <button 168 + class="button--transparent" 169 + title="${o.enabled??!0?o.kind==="prelude"?"Disable":"Dim":o.kind==="prelude"?"Enable":"Light"}" 170 + @click="${me({id:o.id})}" 171 + > 172 + <i class="${o.enabled??!0?o.kind==="prelude"?"ph-fill ph-lightning":"ph-fill ph-eye":o.kind==="prelude"?"ph-bold ph-lightning-slash":"ph-bold ph-eye-slash"}"></i> 173 + </button> 174 + <hr /> 175 + <button 176 + class="button--transparent" 177 + title="More actions" 178 + popovertarget="facet-menu-${o.id}" 179 + > 180 + <i class="ph-bold ph-dots-three-vertical"></i> 181 + </button> 182 + <div id="facet-menu-${o.id}" class="dropdown" popover> 183 + <a 184 + class="with-icon" 185 + href="code/?id=${encodeURIComponent(o.id)}" 186 + > 187 + <i class="ph-fill ph-code-block"></i> 188 + Edit 189 + </a> 190 + <a 191 + class="with-icon" 192 + href="#" 193 + @click="${f=>{f.preventDefault(),xe({id:o.id})()}}" 194 + > 195 + <i class="ph-fill ph-skull"></i> 196 + Delete 197 + </a> 198 + </div> 199 + </div> 200 + </li> 201 + `)})} 202 + </ul> 203 + `:m` 204 + ${c} ${At()} 205 + `;W(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(_t,"_renderList");export{cr as a}; 206 + /*! Bundled license information: 207 + 208 + lit-html/node/directives/class-map.js: 209 + (** 210 + * @license 211 + * Copyright 2018 Google LLC 212 + * SPDX-License-Identifier: BSD-3-Clause 213 + *) 214 + 215 + lit-html/node/directives/unsafe-html.js: 216 + (** 217 + * @license 218 + * Copyright 2017 Google LLC 219 + * SPDX-License-Identifier: BSD-3-Clause 220 + *) 221 + */ 222 + 223 + //# sourceMappingURL=./chunk-RPTB6G7G.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-RPTB6G7G.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-RPTB6G7G.js.map
··· 1 + {"version":3,"sources":["/node_modules/.deno/lit-html@3.3.2/node_modules/lit-html/src/directives/class-map.ts","/node_modules/.deno/marked@17.0.5/node_modules/marked/src/defaults.ts","/node_modules/.deno/marked@17.0.5/node_modules/marked/src/rules.ts","/node_modules/.deno/marked@17.0.5/node_modules/marked/src/helpers.ts","/node_modules/.deno/marked@17.0.5/node_modules/marked/src/Tokenizer.ts","/node_modules/.deno/marked@17.0.5/node_modules/marked/src/Lexer.ts","/node_modules/.deno/marked@17.0.5/node_modules/marked/src/Renderer.ts","/node_modules/.deno/marked@17.0.5/node_modules/marked/src/TextRenderer.ts","/node_modules/.deno/marked@17.0.5/node_modules/marked/src/Parser.ts","/node_modules/.deno/marked@17.0.5/node_modules/marked/src/Hooks.ts","/node_modules/.deno/marked@17.0.5/node_modules/marked/src/Instance.ts","/node_modules/.deno/marked@17.0.5/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":["/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {AttributePart, noChange} from '../lit-html.js';\nimport {\n directive,\n Directive,\n DirectiveParameters,\n PartInfo,\n PartType,\n} from '../directive.js';\n\n/**\n * A key-value set of class names to truthy values.\n */\nexport interface ClassInfo {\n [name: string]: string | boolean | number;\n}\n\nclass ClassMapDirective extends Directive {\n /**\n * Stores the ClassInfo object applied to a given AttributePart.\n * Used to unset existing values when a new ClassInfo object is applied.\n */\n private _previousClasses?: Set<string>;\n private _staticClasses?: Set<string>;\n\n constructor(partInfo: PartInfo) {\n super(partInfo);\n if (\n partInfo.type !== PartType.ATTRIBUTE ||\n partInfo.name !== 'class' ||\n (partInfo.strings?.length as number) > 2\n ) {\n throw new Error(\n '`classMap()` can only be used in the `class` attribute ' +\n 'and must be the only part in the attribute.'\n );\n }\n }\n\n render(classInfo: ClassInfo) {\n // Add spaces to ensure separation from static classes\n return (\n ' ' +\n Object.keys(classInfo)\n .filter((key) => classInfo[key])\n .join(' ') +\n ' '\n );\n }\n\n override update(part: AttributePart, [classInfo]: DirectiveParameters<this>) {\n // Remember dynamic classes on the first render\n if (this._previousClasses === undefined) {\n this._previousClasses = new Set();\n if (part.strings !== undefined) {\n this._staticClasses = new Set(\n part.strings\n .join(' ')\n .split(/\\s/)\n .filter((s) => s !== '')\n );\n }\n for (const name in classInfo) {\n if (classInfo[name] && !this._staticClasses?.has(name)) {\n this._previousClasses.add(name);\n }\n }\n return this.render(classInfo);\n }\n\n const classList = part.element.classList;\n\n // Remove old classes that no longer apply\n for (const name of this._previousClasses) {\n if (!(name in classInfo)) {\n classList.remove(name);\n this._previousClasses!.delete(name);\n }\n }\n\n // Add or remove classes based on their classMap value\n for (const name in classInfo) {\n // We explicitly want a loose truthy check of `value` because it seems\n // more convenient that '' and 0 are skipped.\n const value = !!classInfo[name];\n if (\n value !== this._previousClasses.has(name) &&\n !this._staticClasses?.has(name)\n ) {\n if (value) {\n classList.add(name);\n this._previousClasses.add(name);\n } else {\n classList.remove(name);\n this._previousClasses.delete(name);\n }\n }\n }\n return noChange;\n }\n}\n\n/**\n * A directive that applies dynamic CSS classes.\n *\n * This must be used in the `class` attribute and must be the only part used in\n * the attribute. It takes each property in the `classInfo` argument and adds\n * the property name to the element's `classList` if the property value is\n * truthy; if the property value is falsy, the property name is removed from\n * the element's `class`.\n *\n * For example `{foo: bar}` applies the class `foo` if the value of `bar` is\n * truthy.\n *\n * @param classInfo\n */\nexport const classMap = directive(ClassMapDirective);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {ClassMapDirective};\n","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// 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, _punctuation)\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, _notPunctuationOrSpace)\n .replace(/punctSpace/g, _punctuationOrSpace)\n .replace(/punct/g, _punctuation)\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 const text = cap[1].trim();\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text,\n tokens: this.lexer.inline(text),\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 if (!match[1] && !match[2] && !match[3] && !match[4]) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[4] && prevChar.match(this.rules.other.unicodeAlphaNumeric)) return;\n\n const nextChar = match[1] || match[3] || '';\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 this.tokenizer.lexer = this;\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 this.tokenizer.lexer = this;\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 this.renderer.parser = this;\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 this.renderer.parser = this;\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 { classMap } from \"lit-html/directives/class-map.js\";\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, toggleFacetEnabled } 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 === \"base\"\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 activeFilter.set((() => {\n const stored = localStorage.getItem(FILTER_STORAGE_KEY);\n return stored === \"prelude\" || stored === \"interface\" || stored === \"base\"\n ? stored\n : \"all\";\n })());\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 === \"base\" ? !!c.tags?.includes(\"base\") : (filter === \"all\" ||\n (filter === \"prelude\"\n ? c.kind === \"prelude\"\n : c.kind !== \"prelude\")) &&\n !c.tags?.includes(\"base\")\n )\n .sort((a, b) => {\n return a.name.toLocaleLowerCase().localeCompare(\n b.name.toLocaleLowerCase(),\n ) || a.id.localeCompare(b.id);\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 <button\n class=\"button--border button--tiny ${filter === \"base\"\n ? \"\"\n : \"button--transparent\"}\"\n title=\"Show the hidden essential features\"\n @click=\"${() => activeFilter.set(\"base\")}\"\n >\n Base\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\"\n @click=\"${() => openAddFromURIModal()}\"\n >\n <span class=\"with-repositioned-icon\">\n <i class=\"ph-fill ph-plus-circle\"></i>\n <span class=\"button__supplementary-text\">Add from URI</span>\n </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\n class=\"grid-item\"\n style=\"--grid-item-color: ${color}\"\n ?data-disabled=\"${!(c.enabled ?? true)}\"\n >\n <div class=\"grid-item__contents\">\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 ${classMap({\n \"grid-item__menu--active\": c.enabled ?? true,\n })}\">\n <button\n class=\"button--transparent\"\n title=\"${(c.enabled ?? true)\n ? c.kind === \"prelude\" ? \"Disable\" : \"Dim\"\n : c.kind === \"prelude\"\n ? \"Enable\"\n : \"Light\"}\"\n @click=\"${toggleFacetEnabled({ id: c.id })}\"\n >\n <i class=\"${(c.enabled ?? true)\n ? c.kind === \"prelude\"\n ? \"ph-fill ph-lightning\"\n : \"ph-fill ph-eye\"\n : c.kind === \"prelude\"\n ? \"ph-bold ph-lightning-slash\"\n : \"ph-bold ph-eye-slash\"}\"></i>\n </button>\n <hr />\n <button\n class=\"button--transparent\"\n title=\"More actions\"\n popovertarget=\"facet-menu-${c.id}\"\n >\n <i class=\"ph-bold ph-dots-three-vertical\"></i>\n </button>\n <div id=\"facet-menu-${c.id}\" class=\"dropdown\" popover>\n <a\n class=\"with-icon\"\n href=\"code/?id=${encodeURIComponent(c.id)}\"\n >\n <i class=\"ph-fill ph-code-block\"></i>\n Edit\n </a>\n <a\n class=\"with-icon\"\n href=\"#\"\n @click=\"${(/** @type {MouseEvent} */ e) => {\n e.preventDefault();\n deleteFacet({ id: c.id })();\n }}\"\n >\n <i class=\"ph-fill ph-skull\"></i>\n Delete\n </a>\n </div>\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":["classMap","directive","Directive","partInfo","super","type","PartType","ATTRIBUTE","name","strings","length","Error","classInfo","Object","keys","filter","key","join","part","this","_previousClasses","Set","_staticClasses","split","s","has","add","render","classList","element","remove","delete","value","noChange","_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","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","stored","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","e","toggleFacetEnabled","deleteFacet","l"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-RPTB6G7G.js.map"}
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-RQJCYF4B.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-RQJCYF4B.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-RQJCYF4B.js.br
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-RQJCYF4B.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-RQJCYF4B.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-RQJCYF4B.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-RYLJEHBJ.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-RYLJEHBJ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-RYLJEHBJ.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-HY7Y7RUV.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-RYLJEHBJ.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-RYLJEHBJ.js.map
+49
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-SMPARDQR.js
··· 1 + import{a as n,g as c}from"./chunk-MWEXZQ4O.js";import{c as u}from"./chunk-QQ3UQ3JQ.js";import{a as l}from"./chunk-UMFFTZJV.js";import{a as d}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 39 + style="display: flex; font-size: var(--fs-sm); gap: var(--space-xs); margin-top: var(--space-sm)" 40 + > 41 + <button type="submit" class="button--bg-accent">Add</button> 42 + <button type="button" id="add-uri-cancel"> 43 + Cancel 44 + </button> 45 + </div> 46 + </form> 47 + `,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"),i=m?.value.trim()??"",v=f?.value??"interactive",o=p?.value.trim()??"";if(!i||!o)return;let y=await l({kind:v,name:i,uri:o},{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()}d(E,"openAddFromURIModal");export{E as a}; 48 + 49 + //# sourceMappingURL=./chunk-SMPARDQR.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-SMPARDQR.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-SMPARDQR.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\n style=\"display: flex; font-size: var(--fs-sm); gap: var(--space-xs); margin-top: var(--space-sm)\"\n >\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\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 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;AAAA;AAAA,QA+CAF,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,EAGhCK,EACJL,EAAO,cAAc,eAAe,EAGhCM,EACJN,EAAO,cAAc,cAAc,EAGjCI,IAAQA,EAAO,MAAQ,IACvBC,IAAQA,EAAO,MAAQ,eACvBC,IAAOA,EAAM,MAAQ,IAEzBN,EAAO,UAAU,CACnB,CAzHgBa,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-SMPARDQR.js.map"}
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-SVXEMCXP.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-SVXEMCXP.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-SVXEMCXP.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-SVXEMCXP.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-SVXEMCXP.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-SVXEMCXP.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-T734Y7R7.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-T734Y7R7.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-T734Y7R7.js.br
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-T734Y7R7.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-T734Y7R7.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-T734Y7R7.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-TAKUCXMA.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-TAKUCXMA.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-TAKUCXMA.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/blur/index.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-TAKUCXMA.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-TAKUCXMA.js.map
+34
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-TGHFO6M4.js
··· 1 + import{c as Ys}from"./chunk-QQ3UQ3JQ.js";import{a as kh}from"./chunk-6AH2OFQT.js";import{a as $h}from"./chunk-MWWZQLVP.js";import{a as _s}from"./chunk-UMFFTZJV.js";import{b as wh}from"./chunk-K24WPOYB.js";import{c as Qh}from"./chunk-K4RUWDWS.js";import{a as zs}from"./chunk-QOBPHMGK.js";import{o as Vs}from"./chunk-YHFKI4Y2.js";import{a as c}from"./chunk-BFIVCPQF.js";var Ds=[],Ch=[];(()=>{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?Ch:Ds).push(t=t+n[e])})();function gp(n){if(n<768)return!1;for(let e=0,t=Ds.length;;){let i=e+t>>1;if(n<Ds[i])t=i;else if(n>=Ch[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 Zh(n,e,t=!0,i=!0){return(t?Xh:Sp)(n,e,i)}c(Zh,"findClusterBreak");function Xh(n,e,t){if(e==n.length)return e;e&&Ah(n.charCodeAt(e))&&Rh(n.charCodeAt(e-1))&&e--;let i=Ws(n,e);for(e+=Th(i);e<n.length;){let r=Ws(n,e);if(i==Ph||r==Ph||t&&gp(r))e+=Th(r),i=r;else if(vh(r)){let s=0,o=e-2;for(;o>=0&&vh(Ws(n,o));)s++,o-=2;if(s%2==0)break;e+=2}else break}return e}c(Xh,"nextClusterBreak");function Sp(n,e,t){for(;e>0;){let i=Xh(n,e-2,t);if(i<e)return i;e--}return 0}c(Sp,"prevClusterBreak");function Ws(n,e){let t=n.charCodeAt(e);if(!Rh(t)||e+1==n.length)return t;let i=n.charCodeAt(e+1);return Ah(i)?(t-55296<<10)+(i-56320)+65536:t}c(Ws,"codePointAt");function Ah(n){return n>=56320&&n<57344}c(Ah,"surrogateLow");function Rh(n){return n>=55296&&n<56320}c(Rh,"surrogateHigh");function Th(n){return n<65536?1:2}c(Th,"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 r=[];return this.decompose(0,e,r,2),i.length&&i.decompose(0,i.length,r,3),this.decompose(t,this.length,r,1),di.from(r,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),r=new Bt(this),s=new Bt(e);for(let o=t,l=t;;){if(r.next(o),s.next(o),o=0,r.lineBreak!=s.lineBreak||r.done!=s.done||r.value!=s.value)return!1;if(l+=r.value.length,r.done||l>=i)return!0}}iter(e=1){return new Bt(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 r=this.line(e).from;i=this.iterRange(r,Math.max(r,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=yp(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,i,r){for(let s=0;;s++){let o=this.text[s],l=r+o.length;if((t?i:l)>=e)return new qs(r,l,i,o);r=l+1,i++}}decompose(e,t,i,r){let s=e<=0&&t>=this.length?this:new n(Mh(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(r&1){let o=i.pop(),l=Fn(s.text,o.text.slice(),0,s.length);if(l.length<=32)i.push(new n(l,o.length+s.length));else{let a=l.length>>1;i.push(new n(l.slice(0,a)),new n(l.slice(a)))}}else i.push(s)}replace(e,t,i){if(!(i instanceof n))return super.replace(e,t,i);[e,t]=mi(this,e,t);let r=Fn(this.text,Fn(i.text,Mh(this.text,0,e)),t),s=this.length+i.length-(t-e);return r.length<=32?new n(r,s):di.from(n.split(r,[]),s)}sliceString(e,t=this.length,i=` 2 + `){[e,t]=mi(this,e,t);let r="";for(let s=0,o=0;s<=t&&o<this.text.length;o++){let l=this.text[o],a=s+l.length;s>e&&o&&(r+=i),e<a&&t>s&&(r+=l.slice(Math.max(0,e-s),t-s)),s=a+1}return r}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let i=[],r=-1;for(let s of e)i.push(s),r+=s.length+1,i.length==32&&(t.push(new n(i,r)),i=[],r=-1);return r>-1&&t.push(new n(i,r)),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,r){for(let s=0;;s++){let o=this.children[s],l=r+o.length,a=i+o.lines-1;if((t?a:l)>=e)return o.lineInner(e,t,i,r);r=l+1,i=a+1}}decompose(e,t,i,r){for(let s=0,o=0;o<=t&&s<this.children.length;s++){let l=this.children[s],a=o+l.length;if(e<=a&&t>=o){let h=r&((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 r=0,s=0;r<this.children.length;r++){let o=this.children[r],l=s+o.length;if(e>=s&&t<=l){let a=o.replace(e-s,t-s,i),h=this.lines-o.lines+a.lines;if(a.lines<h>>4&&a.lines>h>>6){let f=this.children.slice();return f[r]=a,new n(f,this.length-(t-e)+i.length)}return super.replace(s,l,a)}s=l+1}return super.replace(e,t,i)}sliceString(e,t=this.length,i=` 3 + `){[e,t]=mi(this,e,t);let r="";for(let s=0,o=0;s<this.children.length&&o<=t;s++){let l=this.children[s],a=o+l.length;o>e&&s&&(r+=i),e<a&&t>o&&(r+=l.sliceString(e-o,t-o,i)),o=a+1}return r}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof n))return 0;let i=0,[r,s,o,l]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;r+=t,s+=t){if(r==o||s==l)return i;let a=this.children[r],h=e.children[s];if(a!=h)return i+a.scanIdentical(h,t);i+=a.length+1}}static from(e,t=e.reduce((i,r)=>i+r.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 r=Math.max(32,i>>5),s=r<<1,o=r>>1,l=[],a=0,h=-1,f=[];function u(O){let p;if(O.lines>s&&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>r&&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 yp(n){let e=-1;for(let t of n)e+=t.length+1;return e}c(yp,"textLength");function Fn(n,e,t=0,i=1e9){for(let r=0,s=0,o=!0;s<n.length&&r<=i;s++){let l=n[s],a=r+l.length;a>=t&&(a>i&&(l=l.slice(0,i-r)),r<t&&(l=l.slice(t-r)),o?(e[e.length-1]+=l,o=!1):e.push(l)),r=a+1}return e}c(Fn,"appendText");function Mh(n,e,t){return Fn(n,[""],e,t)}c(Mh,"sliceText");var Bt=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,r=this.nodes[i],s=this.offsets[i],o=s>>1,l=r instanceof Ce?r.text.length:r.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((s&1)==(t>0?0:1)){if(this.offsets[i]+=t,e==0)return this.lineBreak=!0,this.value=` 4 + `,this;e--}else if(r instanceof Ce){let a=r.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=r.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 Bt(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:r}=this.cursor.next(e);return this.pos+=(r.length+e)*t,this.value=r.length<=i?r:t<0?r.slice(r.length-i):r.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:r}=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=r,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<"u"&&(V.prototype[Symbol.iterator]=function(){return this.iter()},Bt.prototype[Symbol.iterator]=Hn.prototype[Symbol.iterator]=Kn.prototype[Symbol.iterator]=function(){return this});var qs=class{static{c(this,"Line")}constructor(e,t,i,r){this.from=e,this.to=t,this.number=i,this.text=r}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 Zh(n,e,t,i)}c(ne,"findClusterBreak");function bp(n){return n>=56320&&n<57344}c(bp,"surrogateLow");function xp(n){return n>=55296&&n<56320}c(xp,"surrogateHigh");function ce(n,e){let t=n.charCodeAt(e);if(!xp(t)||e+1==n.length)return t;let i=n.charCodeAt(e+1);return bp(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 Xe(n){return n<65536?1:2}c(Xe,"codePointSize");var Bs=/\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,r=0;t<this.sections.length;){let s=this.sections[t++],o=this.sections[t++];o<0?(e(i,r,s),r+=s):r+=o,i+=s}}iterChangedRanges(e,t=!1){Is(this,e,t)}get invertedDesc(){let e=[];for(let t=0;t<this.sections.length;){let i=this.sections[t++],r=this.sections[t++];r<0?e.push(i,r):e.push(r,i)}return new n(e)}composeDesc(e){return this.empty?e:e.empty?this:_h(this,e)}mapDesc(e,t=!1){return e.empty?this:Ns(this,e,t)}mapPos(e,t=-1,i=oe.Simple){let r=0,s=0;for(let o=0;o<this.sections.length;){let l=this.sections[o++],a=this.sections[o++],h=r+l;if(a<0){if(h>e)return s+(e-r);s+=l}else{if(i!=oe.Simple&&h>=e&&(i==oe.TrackDel&&r<e&&h>e||i==oe.TrackBefore&&r<e||i==oe.TrackAfter&&h>e))return null;if(h>e||h==e&&t<0&&!l)return e==r||t<0?s:s+a;s+=a}r=h}if(e>r)throw new RangeError(`Position ${e} is out of range for changeset of length ${r}`);return s}touchesRange(e,t=e){for(let i=0,r=0;i<this.sections.length&&r<=t;){let s=this.sections[i++],o=this.sections[i++],l=r+s;if(o>=0&&r<=t&&l>=e)return r<e&&l>t?"cover":!0;r=l}return!1}toString(){let e="";for(let t=0;t<this.sections.length;){let i=this.sections[t++],r=this.sections[t++];e+=(e?" ":"")+i+(r>=0?":"+r:"")}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 Is(this,(t,i,r,s,o)=>e=e.replace(r,r+(i-t),o),!1),e}mapDesc(e,t=!1){return Ns(this,e,t,!0)}invert(e){let t=this.sections.slice(),i=[];for(let r=0,s=0;r<t.length;r+=2){let o=t[r],l=t[r+1];if(l>=0){t[r]=l,t[r+1]=o;let a=r>>1;for(;i.length<a;)i.push(V.empty);i.push(o?e.slice(s,s+o):V.empty)}s+=o}return new n(t,i)}compose(e){return this.empty?e:e.empty?this:_h(this,e,!0)}map(e,t=!1){return e.empty?this:Ns(this,e,t,!0)}iterChanges(e,t=!1){Is(this,e,t)}get desc(){return ut.create(this.sections)}filter(e){let t=[],i=[],r=[],s=new It(this);e:for(let o=0,l=0;;){let a=o==e.length?1e9:e[o++];for(;l<a||l==a&&s.len==0;){if(s.done)break e;let f=Math.min(s.len,a-l);Oe(r,f,-1);let u=s.ins==-1?-1:s.off==0?s.ins:0;Oe(t,f,u),u>0&&Qt(i,t,s.text),s.forward(f),l+=f}let h=e[o++];for(;l<h;){if(s.done)break e;let f=Math.min(s.len,h-l);Oe(t,f,-1),Oe(r,f,s.ins==-1?-1:s.off==0?s.ins:0),s.forward(f),l+=f}}return{changes:new n(t,i),filtered:ut.create(r)}}toJSON(){let e=[];for(let t=0;t<this.sections.length;t+=2){let i=this.sections[t],r=this.sections[t+1];r<0?e.push(i):r==0?e.push([i]):e.push([i].concat(this.inserted[t>>1].toJSON()))}return e}static of(e,t,i){let r=[],s=[],o=0,l=null;function a(f=!1){if(!f&&!r.length)return;o<t&&Oe(r,t-o,-1);let u=new n(r,s);l=l?l.compose(u.map(l)):u,r=[],s=[],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||Bs)):O:V.empty,m=p.length;if(u==d&&m==0)return;u<o&&a(),u>o&&Oe(r,u-o,-1),Oe(r,d-u,m),Qt(s,r,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 r=0;r<e.length;r++){let s=e[r];if(typeof s=="number")t.push(s,-1);else{if(!Array.isArray(s)||typeof s[0]!="number"||s.some((o,l)=>l&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(s.length==1)t.push(s[0],0);else{for(;i.length<r;)i.push(V.empty);i[r]=V.of(s.slice(1)),t.push(s[0],i[r].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 r=n.length-2;r>=0&&t<=0&&t==n[r+1]?n[r]+=e:r>=0&&e==0&&n[r]==0?n[r+1]+=t:i?(n[r]+=e,n[r+1]+=t):n.push(e,t)}c(Oe,"addSection");function Qt(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(Qt,"addInsert");function Is(n,e,t){let i=n.inserted;for(let r=0,s=0,o=0;o<n.sections.length;){let l=n.sections[o++],a=n.sections[o++];if(a<0)r+=l,s+=l;else{let h=r,f=s,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(r,h,s,f,u),r=h,s=f}}}c(Is,"iterChanges");function Ns(n,e,t,i=!1){let r=[],s=i?[]:null,o=new It(n),l=new It(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(r,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(r,l.ins,-1);h;){let f=Math.min(o.len,h);o.ins>=0&&a<o.i&&o.len<=f&&(Oe(r,0,o.ins),s&&Qt(s,r,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(r,h,a<o.i?o.ins:0),s&&a<o.i&&Qt(s,r,o.text),a=o.i,o.forward(o.len-f)}else{if(o.done&&l.done)return s?Se.createSet(r,s):ut.create(r);throw new Error("Mismatched change set lengths")}}}c(Ns,"mapSet");function _h(n,e,t=!1){let i=[],r=t?[]:null,s=new It(n),o=new It(e);for(let l=!1;;){if(s.done&&o.done)return r?Se.createSet(i,r):ut.create(i);if(s.ins==0)Oe(i,s.len,0,l),s.next();else if(o.len==0&&!o.done)Oe(i,0,o.ins,l),r&&Qt(r,i,o.text),o.next();else{if(s.done||o.done)throw new Error("Mismatched change set lengths");{let a=Math.min(s.len2,o.len),h=i.length;if(s.ins==-1){let f=o.ins==-1?-1:o.off?0:o.ins;Oe(i,a,f,l),r&&f&&Qt(r,i,o.text)}else o.ins==-1?(Oe(i,s.off?0:s.len,a,l),r&&Qt(r,i,s.textBit(a))):(Oe(i,s.off?0:s.len,o.off?0:o.ins,l),r&&!o.off&&Qt(r,i,o.text));l=(s.ins>a||o.ins>=0&&o.len>a)&&(l||i.length>h),s.forward2(a),o.forward(a)}}}}c(_h,"composeSets");var It=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,r;return this.empty?i=r=e.mapPos(this.from,t):(i=e.mapPos(this.from,1),r=e.mapPos(this.to,-1)),i==this.from&&r==this.to?this:new n(i,r,this.flags)}extend(e,t=e,i=0){if(e<=this.anchor&&t>=this.anchor)return b.range(e,t,void 0,void 0,i);let r=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return b.range(this.anchor,r,void 0,void 0,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 b.range(e.anchor,e.head)}static create(e,t,i){return new n(e,t,i)}},b=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,r=0;r<e.length;r++){let s=e[r];if(s.empty?s.from<=i:s.from<i)return n.normalized(e.slice(),t);i=s.to}return new n(e,t)}static cursor(e,t=0,i,r){return ui.create(e,e,(t==0?0:t<0?8:16)|(i==null?7:Math.min(6,i))|(r??16777215)<<6)}static range(e,t,i,r,s){let o=(i??16777215)<<6|(r==null?7:Math.min(6,r));return!s&&e!=t&&(s=t<e?1:-1),t<e?ui.create(t,e,48|o):ui.create(e,t,(s?s<0?8:16:0)|o)}static normalized(e,t=0){let i=e[t];e.sort((r,s)=>r.from-s.from),t=e.indexOf(i);for(let r=1;r<e.length;r++){let s=e[r],o=e[r-1];if(s.empty?s.from<=o.to:s.from<o.to){let l=o.from,a=Math.max(s.to,o.to);r<=t&&t--,e.splice(--r,2,s.anchor>s.head?n.range(a,l):n.range(l,a))}}return new n(e,t)}};function Yh(n,e){for(let t of n.ranges)if(t.to>e)throw new RangeError("Selection points outside of document")}c(Yh,"checkSelection");var no=0,P=class n{static{c(this,"Facet")}constructor(e,t,i,r,s){this.combine=e,this.compareInput=t,this.compare=i,this.isStatic=r,this.id=no++,this.default=e([]),this.extensions=typeof s=="function"?s(this):s}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:ro),!!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 ro(n,e){return n==e||n.length==e.length&&n.every((t,i)=>t===e[i])}c(ro,"sameArray");var Oi=class{static{c(this,"FacetProvider")}constructor(e,t,i,r){this.dependencies=e,this.facet=t,this.type=i,this.value=r,this.id=no++}dynamicSlot(e){var t;let i=this.value,r=this.facet.compareInput,s=this.id,o=e[s]>>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)||Gs(u,f)){let O=i(u);if(l?!jh(O,u.values[o],r):!r(O,u.values[o]))return u.values[o]=O,1}return 0},reconfigure:c((u,d)=>{let O,p=d.config.address[s];if(p!=null){let m=ir(d,p);if(this.dependencies.every(g=>g instanceof P?d.facet(g)===u.facet(g):g instanceof ie?d.field(g,!1)==u.field(g,!1):!0)||(l?jh(O=i(u),m,r):r(O=i(u),m)))return u.values[o]=m,0}else O=i(u);return u.values[o]=O,1},"reconfigure")}}};function jh(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(jh,"compareArray");function Gs(n,e){let t=!1;for(let i of e)Hi(n,i)&1&&(t=!0);return t}c(Gs,"ensureAll");function Qp(n,e,t){let i=t.map(a=>n[a.id]),r=t.map(a=>a.type),s=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=ir(a,i[f]);if(r[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(!Gs(a,s))return 0;let f=l(a);return e.compare(f,a.values[o])?0:(a.values[o]=f,1)},reconfigure(a,h){let f=Gs(a,i),u=h.config.facets[e.id],d=h.facet(e);if(u&&!f&&ro(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(Qp,"dynamicFacetSlot");var Nn=P.define({static:!0}),ie=class n{static{c(this,"StateField")}constructor(e,t,i,r,s){this.id=e,this.createF=t,this.updateF=i,this.compareF=r,this.spec=s,this.provides=void 0}static define(e){let t=new n(no++,e.create,e.update,e.compare||((i,r)=>i===r),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,r)=>{let s=i.values[t],o=this.updateF(s,r);return this.compareF(s,o)?0:(i.values[t]=o,1)},"update"),reconfigure:c((i,r)=>{let s=i.facet(Nn),o=r.facet(Nn),l;return(l=s.find(a=>a.field==this))&&l!=o.find(a=>a.field==this)?(i.values[t]=l.create(i),1):r.config.address[this.id]!=null?(i.values[t]=r.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}},Lt={lowest:4,low:3,default:2,high:1,highest:0};function Fi(n){return e=>new Jn(e,n)}c(Fi,"prec");var De={highest:Fi(Lt.highest),high:Fi(Lt.high),default:Fi(Lt.default),low:Fi(Lt.low),lowest:Fi(Lt.lowest)},Jn=class{static{c(this,"PrecExtension")}constructor(e,t){this.inner=e,this.prec=t}},er=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}},tr=class n{static{c(this,"Configuration")}constructor(e,t,i,r,s,o){for(this.base=e,this.compartments=t,this.dynamicSlots=i,this.address=r,this.staticValues=s,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 r=[],s=Object.create(null),o=new Map;for(let d of wp(e,t,o))d instanceof ie?r.push(d):(s[d.facet.id]||(s[d.facet.id]=[])).push(d);let l=Object.create(null),a=[],h=[];for(let d of r)l[d.id]=h.length<<1,h.push(O=>d.slot(O));let f=i?.config.facets;for(let d in s){let O=s[d],p=O[0].facet,m=f&&f[d]||[];if(O.every(g=>g.type==0))if(l[p.id]=a.length<<1|1,ro(m,O))a.push(i.facet(p));else{let g=p.combine(O.map(y=>y.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(y=>g.dynamicSlot(y)));l[p.id]=h.length<<1,h.push(g=>Qp(g,p,O))}}let u=h.map(d=>d(l));return new n(e,o,u,l,a,s)}};function wp(n,e,t){let i=[[],[],[],[],[]],r=new Map;function s(o,l){let a=r.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(r.set(o,l),Array.isArray(o))for(let h of o)s(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),s(h,l)}else if(o instanceof Jn)s(o.inner,o.prec);else if(o instanceof ie)i[l].push(o),o.provides&&s(o.provides,l);else if(o instanceof Oi)i[l].push(o),o.facet.extensions&&s(o.facet.extensions,Lt.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.`);s(h,l)}}return c(s,"inner"),s(n,Lt.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 r=n.computeSlot(n,n.config.dynamicSlots[t]);return n.status[t]=2|r}c(Hi,"ensureAddr");function ir(n,e){return e&1?n.config.staticValues[e>>1]:n.values[e>>1]}c(ir,"getAddr");var Wh=P.define(),Us=P.define({combine:c(n=>n.some(e=>e),"combine"),static:!0}),Dh=P.define({combine:c(n=>n.length?n[0]:void 0,"combine"),static:!0}),Lh=P.define(),qh=P.define(),Bh=P.define(),Ih=P.define({combine:c(n=>n.length?n[0]:!1,"combine")}),Qe=class{static{c(this,"Annotation")}constructor(e,t){this.type=e,this.value=t}static define(){return new Fs}},Fs=class{static{c(this,"AnnotationType")}of(e){return new Qe(this,e)}},Hs=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 Hs(e.map||(t=>t))}static mapEffects(e,t){if(!e.length)return e;let i=[];for(let r of e){let s=r.map(t);s&&i.push(s)}return i}};R.reconfigure=R.define();R.appendConfig=R.define();var re=class n{static{c(this,"Transaction")}constructor(e,t,i,r,s,o){this.startState=e,this.changes=t,this.selection=i,this.effects=r,this.annotations=s,this.scrollIntoView=o,this._doc=null,this._state=null,i&&Yh(i,t.newLength),s.some(l=>l.type==n.time)||(this.annotations=s.concat(n.time.of(Date.now())))}static create(e,t,i,r,s,o){return new n(e,t,i,r,s,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]=="."))}};re.time=Qe.define();re.userEvent=Qe.define();re.addToHistory=Qe.define();re.remote=Qe.define();function kp(n,e){let t=[];for(let i=0,r=0;;){let s,o;if(i<n.length&&(r==e.length||e[r]>=n[i]))s=n[i++],o=n[i++];else if(r<e.length)s=e[r++],o=e[r++];else return t;!t.length||t[t.length-1]<s?t.push(s,o):t[t.length-1]<o&&(t[t.length-1]=o)}}c(kp,"joinRanges");function Nh(n,e,t){var i;let r,s,o;return t?(r=e.changes,s=Se.empty(e.changes.length),o=n.changes.compose(e.changes)):(r=e.changes.map(n.changes),s=n.changes.mapDesc(e.changes,!0),o=n.changes.compose(r)),{changes:o,selection:e.selection?e.selection.map(s):(i=n.selection)===null||i===void 0?void 0:i.map(r),effects:R.mapEffects(n.effects,r).concat(R.mapEffects(e.effects,s)),annotations:n.annotations.length?n.annotations.concat(e.annotations):e.annotations,scrollIntoView:n.scrollIntoView||e.scrollIntoView}}c(Nh,"mergeTransaction");function Ks(n,e,t){let i=e.selection,r=pi(e.annotations);return e.userEvent&&(r=r.concat(re.userEvent.of(e.userEvent))),{changes:e.changes instanceof Se?e.changes:Se.of(e.changes||[],t,n.facet(Dh)),selection:i&&(i instanceof b?i:b.single(i.anchor,i.head)),effects:pi(e.effects),annotations:r,scrollIntoView:!!e.scrollIntoView}}c(Ks,"resolveTransactionInner");function Gh(n,e,t){let i=Ks(n,e.length?e[0]:{},n.doc.length);e.length&&e[0].filter===!1&&(t=!1);for(let s=1;s<e.length;s++){e[s].filter===!1&&(t=!1);let o=!!e[s].sequential;i=Nh(i,Ks(n,e[s],o?i.changes.newLength:n.doc.length),o)}let r=re.create(n,i.changes,i.selection,i.effects,i.annotations,i.scrollIntoView);return vp(t?$p(r):r)}c(Gh,"resolveTransaction");function $p(n){let e=n.startState,t=!0;for(let r of e.facet(Lh)){let s=r(n);if(s===!1){t=!1;break}Array.isArray(s)&&(t=t===!0?s:kp(t,s))}if(t!==!0){let r,s;if(t===!1)s=n.changes.invertedDesc,r=Se.empty(e.doc.length);else{let o=n.changes.filter(t);r=o.changes,s=o.filtered.mapDesc(o.changes).invertedDesc}n=re.create(e,r,n.selection&&n.selection.map(s),R.mapEffects(n.effects,s),n.annotations,n.scrollIntoView)}let i=e.facet(qh);for(let r=i.length-1;r>=0;r--){let s=i[r](n);s instanceof re?n=s:Array.isArray(s)&&s.length==1&&s[0]instanceof re?n=s[0]:n=Gh(e,pi(s),!1)}return n}c($p,"filterTransaction");function vp(n){let e=n.startState,t=e.facet(Bh),i=n;for(let r=t.length-1;r>=0;r--){let s=t[r](n);s&&Object.keys(s).length&&(i=Nh(i,Ks(e,s,n.changes.newLength),!0))}return i==n?n:re.create(e,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}c(vp,"extendTransaction");var Pp=[];function pi(n){return n==null?Pp:Array.isArray(n)?n:[n]}c(pi,"asArray");var I=(function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n})(I||(I={})),Tp=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Js;try{Js=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function Cp(n){if(Js)return Js.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 I.Space;if(Cp(e))return I.Word;for(let t=0;t<n.length;t++)if(e.indexOf(n[t])>-1)return I.Word;return I.Other}}c(Zp,"makeCategorizer");var G=class n{static{c(this,"EditorState")}constructor(e,t,i,r,s,o){this.config=e,this.doc=t,this.selection=i,this.values=r,this.status=e.statusTemplate.slice(),this.computeSlot=s,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),ir(this,i)}update(...e){return Gh(this,e,!0)}applyTransaction(e){let t=this.config,{base:i,compartments:r}=t;for(let l of e.effects)l.is(er.reconfigure)?(t&&(r=new Map,t.compartments.forEach((a,h)=>r.set(h,a)),t=null),r.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 s;t?s=e.startState.values.slice():(t=tr.resolve(i,r,this),s=new n(t,this.doc,this.selection,t.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=e.startState.facet(Us)?e.newSelection:e.newSelection.asSingle();new n(t,e.newDoc,o,s,(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:b.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,i=e(t.ranges[0]),r=this.changes(i.changes),s=[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(r);for(let d=0;d<l;d++)s[d]=s[d].map(f);let u=r.mapDesc(h,!0);s.push(a.range.map(u)),r=r.compose(f),o=R.mapEffects(o,f).concat(R.mapEffects(pi(a.effects),u))}return{changes:r,selection:b.create(s,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)||Bs))}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),ir(this,t))}toJSON(e){let t={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(e)for(let i in e){let r=e[i];r instanceof ie&&this.config.address[r.id]!=null&&(t[i]=r.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 r=[];if(i){for(let s in i)if(Object.prototype.hasOwnProperty.call(e,s)){let o=i[s],l=e[s];r.push(o.init(a=>o.spec.fromJSON(l,a)))}}return n.create({doc:e.doc,selection:b.fromJSON(e.selection),extensions:t.extensions?r.concat([t.extensions]):r})}static create(e={}){let t=tr.resolve(e.extensions||[],new Map),i=e.doc instanceof V?e.doc:V.of((e.doc||"").split(t.staticFacet(n.lineSeparator)||Bs)),r=e.selection?e.selection instanceof b?e.selection:b.single(e.selection.anchor,e.selection.head):b.single(0);return Yh(r,i.length),t.staticFacet(Us)||(r=r.asSingle()),new n(t,i,r,t.dynamicSlots.map(()=>null),(s,o)=>o.create(s),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,r)=>{if(r=="$")return"$";let s=+(r||1);return!s||s>t.length?i:t[s-1]})),e}languageDataAt(e,t,i=-1){let r=[];for(let s of this.facet(Wh))for(let o of s(this,t,i))Object.prototype.hasOwnProperty.call(o,e)&&r.push(o[e]);return r}charCategorizer(e){let t=this.languageDataAt("wordChars",e);return Zp(t.length?t[0]:"")}wordAt(e){let{text:t,from:i,length:r}=this.doc.lineAt(e),s=this.charCategorizer(e),o=e-i,l=e-i;for(;o>0;){let a=ne(t,o,!1);if(s(t.slice(a,o))!=I.Word)break;o=a}for(;l<r;){let a=ne(t,l);if(s(t.slice(l,a))!=I.Word)break;l=a}return o==l?null:b.range(o+i,l+i)}};G.allowMultipleSelections=Us;G.tabSize=P.define({combine:c(n=>n.length?n[0]:4,"combine")});G.lineSeparator=Dh;G.readOnly=Ih;G.phrases=P.define({compare(n,e){let t=Object.keys(n),i=Object.keys(e);return t.length==i.length&&t.every(r=>n[r]==e[r])}});G.languageData=Wh;G.changeFilter=Lh;G.transactionFilter=qh;G.transactionExtender=Bh;er.reconfigure=R.define();function pe(n,e,t={}){let i={};for(let r of n)for(let s of Object.keys(r)){let o=r[s],l=i[s];if(l===void 0)i[s]=o;else if(!(l===o||o===void 0))if(Object.hasOwnProperty.call(t,s))i[s]=t[s](l,o);else throw new Error("Config merge conflict for field "+s)}for(let r in e)i[r]===void 0&&(i[r]=e[r]);return i}c(pe,"combineConfig");var We=class{static{c(this,"RangeValue")}eq(e){return this==e}range(e,t=e){return Ji.create(e,t,this)}};We.prototype.startSide=We.prototype.endSide=0;We.prototype.point=!1;We.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 eo(n,e){return n.from-e.from||n.value.startSide-e.value.startSide}c(eo,"cmpRange");var to=class n{static{c(this,"Chunk")}constructor(e,t,i,r){this.from=e,this.to=t,this.value=i,this.maxPoint=r}get length(){return this.to[this.to.length-1]}findIndex(e,t,i,r=0){let s=i?this.to:this.from;for(let o=r,l=s.length;;){if(o==l)return o;let a=o+l>>1,h=s[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,r){for(let s=this.findIndex(t,-1e9,!0),o=this.findIndex(i,1e9,!1,s);s<o;s++)if(r(this.from[s]+e,this.to[s]+e,this.value[s])===!1)return!1}map(e,t){let i=[],r=[],s=[],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),r.push(d-o),s.push(O-o))}return{mapped:i.length?new n(r,s,i,l):null,pos:o}}},Y=class n{static{c(this,"RangeSet")}constructor(e,t,i,r){this.chunkPos=e,this.chunk=t,this.nextLayer=i,this.maxPoint=r}static create(e,t,i,r){return new n(e,t,i,r)}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:r=0,filterTo:s=this.length}=e,o=e.filter;if(t.length==0&&!o)return this;if(i&&(t=t.slice().sort(eo)),this.isEmpty)return t.length?n.of(t):this;let l=new nr(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||r>this.chunkEnd(l.chunkIndex)||s<this.chunkPos[l.chunkIndex])&&f.addChunk(this.chunkPos[l.chunkIndex],this.chunk[l.chunkIndex])?l.nextChunk():((!o||r>l.to||s<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:r,filterTo:s}))}map(e){if(e.empty||this.isEmpty)return this;let t=[],i=[],r=-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)r=Math.max(r,a.maxPoint),t.push(a),i.push(e.mapPos(l));else if(h===!0){let{mapped:f,pos:u}=a.map(l,e);f&&(r=Math.max(r,f.maxPoint),t.push(f),i.push(u))}}let s=this.nextLayer.map(e);return t.length==0?s:new n(i,t,s||n.empty,r)}between(e,t,i){if(!this.isEmpty){for(let r=0;r<this.chunk.length;r++){let s=this.chunkPos[r],o=this.chunk[r];if(t>=s&&e<=s+o.length&&o.between(s,e-s,t-s,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,r,s=-1){let o=e.filter(u=>u.maxPoint>0||!u.isEmpty&&u.maxPoint>=s),l=t.filter(u=>u.maxPoint>0||!u.isEmpty&&u.maxPoint>=s),a=Eh(o,l,i),h=new qt(o,a,s),f=new qt(l,a,s);i.iterGaps((u,d,O)=>zh(h,u,f,d,O,r)),i.empty&&i.length==0&&zh(h,0,f,0,0,r)}static eq(e,t,i=0,r){r==null&&(r=999999999);let s=e.filter(f=>!f.isEmpty&&t.indexOf(f)<0),o=t.filter(f=>!f.isEmpty&&e.indexOf(f)<0);if(s.length!=o.length)return!1;if(!s.length)return!0;let l=Eh(s,o),a=new qt(s,l,0).goto(i),h=new qt(o,l,0).goto(i);for(;;){if(a.to!=h.to||!io(a.active,h.active)||a.point&&(!h.point||!so(a.point,h.point)))return!1;if(a.to>r)return!0;a.next(),h.next()}}static spans(e,t,i,r,s=-1){let o=new qt(e,null,s).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);r.point(l,h,o.point,f,u,o.pointRank),a=Math.min(o.openEnd(h),f.length)}else h>l&&(r.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 r of e instanceof Ji?[e]:t?Xp(e):e)i.add(r.from,r.to,r.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 r=e[i];r!=n.empty;r=r.nextLayer)t=new n(r.chunkPos,r.chunk,t,Math.max(r.maxPoint,t.maxPoint));return t}};Y.empty=new Y([],[],null,-1);function Xp(n){if(n.length>1)for(let e=n[0],t=1;t<n.length;t++){let i=n[t];if(eo(e,i)>0)return n.slice().sort(eo);e=i}return n}c(Xp,"lazySort");Y.empty.nextLayer=Y.empty;var Ze=class n{static{c(this,"RangeSetBuilder")}finishChunk(e){this.chunks.push(new to(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 r=e-this.lastTo||i.startSide-this.last.endSide;if(r<=0&&(e-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return r<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(Y.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let t=Y.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 s of n)for(let o=0;o<s.chunk.length;o++)s.chunk[o].maxPoint<=0&&i.set(s.chunk[o],s.chunkPos[o]);let r=new Set;for(let s of e)for(let o=0;o<s.chunk.length;o++){let l=i.get(s.chunk[o]);l!=null&&(t?t.mapPos(l):l)==s.chunkPos[o]&&!t?.touchesRange(l,l+s.chunk[o].length)&&r.add(s.chunk[o])}return r}c(Eh,"findSharedChunks");var nr=class{static{c(this,"LayerCursor")}constructor(e,t,i,r=0){this.layer=e,this.skip=t,this.minPoint=i,this.rank=r}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 r=this.layer.chunk[this.chunkIndex];if(!(this.skip&&this.skip.has(r)||this.layer.chunkEnd(this.chunkIndex)<e||r.maxPoint<this.minPoint))break;this.chunkIndex++,i=!1}if(this.chunkIndex<this.layer.chunk.length){let r=this.layer.chunk[this.chunkIndex].findIndex(e-this.layer.chunkPos[this.chunkIndex],t,!0);(!i||this.rangeIndex<r)&&this.setRangeIndex(r)}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 r=[];for(let s=0;s<e.length;s++)for(let o=e[s];!o.isEmpty;o=o.nextLayer)o.maxPoint>=i&&r.push(new nr(o,t,i,s));return r.length==1?r[0]:new n(r)}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--)Ls(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--)Ls(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(),Ls(this.heap,0)}}};function Ls(n,e){for(let t=n[e];;){let i=(e<<1)+1;if(i>=n.length)break;let r=n[i];if(i+1<n.length&&r.compare(n[i+1])>=0&&(r=n[i+1],i++),t.compare(r)<0)break;n[i]=t,n[e]=r,e=i}}c(Ls,"heapBubble");var qt=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=Vh(this.active,this.activeTo)}addActive(e){let t=0,{value:i,to:r,rank:s}=this.cursor;for(;t<this.activeRank.length&&(s-this.activeRank[t]||r-this.activeTo[t])>0;)t++;Un(this.active,t,i),Un(this.activeTo,t,r),Un(this.activeRank,t,s),e&&Un(e,t,this.cursor.from),this.minActive=Vh(this.active,this.activeTo)}next(){let e=this.to,t=this.point;this.point=null;let i=this.openStart<0?[]:null;for(;;){let r=this.minActive;if(r>-1&&(this.activeTo[r]-this.cursor.from||this.active[r].endSide-this.cursor.startSide)<0){if(this.activeTo[r]>e){this.to=this.activeTo[r],this.endSide=this.active[r].endSide;break}this.removeActive(r),i&&Gn(i,r)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let s=this.cursor.value;if(!s.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=s,this.pointFrom=this.cursor.from,this.pointRank=this.cursor.rank,this.to=this.cursor.to,this.endSide=s.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 r=i.length-1;r>=0&&i[r]<e;r--)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,r,s){n.goto(e),t.goto(i);let o=i+r,l=i,a=i-e,h=!!s.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)&&io(n.activeForPoint(n.to),t.activeForPoint(t.to))||s.comparePoint(l,p,n.point,t.point),f=!1):(f&&s.boundChange(l),p>l&&!io(n.active,t.active)&&s.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 io(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(io,"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 Vh(n,e){let t=-1,i=1e9;for(let r=0;r<e.length;r++)(e[r]-i||n[r].endSide-n[t].endSide)<0&&(t=r,i=e[r]);return t}c(Vh,"findMinIndex");function dt(n,e,t=n.length){let i=0;for(let r=0;r<t&&r<n.length;)n.charCodeAt(r)==9?(i+=e-i%e,r++):(i++,r=ne(n,r));return i}c(dt,"countColumn");function rr(n,e,t,i){for(let r=0,s=0;;){if(s>=e)return r;if(r==n.length)break;s+=n.charCodeAt(r)==9?t-s%t:1,r=ne(n,r)}return i===!0?-1:n.length}c(rr,"findColumn");var Uh=typeof Symbol>"u"?"__\u037C":Symbol.for("\u037C"),oo=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),Fh=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{},Le=class{static{c(this,"StyleModule")}constructor(e,t){this.rules=[];let{finish:i}=t||{};function r(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}c(r,"splitSelector");function s(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))s(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.");s(r(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(s,"render");for(let o in e)s(r(o),e[o],this.rules)}getRules(){return this.rules.join(` 6 + `)}static newName(){let e=Fh[Uh]||1;return Fh[Uh]=e+1,"\u037C"+e.toString(36)}static mount(e,t,i){let r=e[oo],s=i&&i.nonce;r?s&&r.setNonce(s):r=new lo(e,s),r.mount(Array.isArray(t)?t:[t],e)}},Hh=new Map,lo=class{static{c(this,"StyleSet")}constructor(e,t){let i=e.ownerDocument||e,r=i.defaultView;if(!e.head&&e.adoptedStyleSheets&&r.CSSStyleSheet){let s=Hh.get(i);if(s)return e[oo]=s;this.sheet=new r.CSSStyleSheet,Hh.set(i,this)}else this.styleTag=i.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[oo]=this}mount(e,t){let i=this.sheet,r=0,s=0;for(let o=0;o<e.length;o++){let l=e[o],a=this.modules.indexOf(l);if(a<s&&a>-1&&(this.modules.splice(a,1),s--,a=-1),a==-1){if(this.modules.splice(s++,0,l),i)for(let h=0;h<l.rules.length;h++)i.insertRule(l.rules[h],r++)}else{for(;s<a;)r+=this.modules[s++].rules.length;r+=l.rules.length,s++}}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:'"'},Ap=typeof navigator<"u"&&/Mac/.test(navigator.platform),Rp=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(se=0;se<10;se++)Ot[48+se]=Ot[96+se]=String(se);var se;for(se=1;se<=24;se++)Ot[se+111]="F"+se;var se;for(se=65;se<=90;se++)Ot[se]=String.fromCharCode(se+32),gi[se]=String.fromCharCode(se);var se;for(sr in Ot)gi.hasOwnProperty(sr)||(gi[sr]=Ot[sr]);var sr;function Kh(n){var e=Ap&&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(Kh,"keyName");function D(){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 r=t[i];typeof r=="string"?n.setAttribute(i,r):r!=null&&(n[i]=r)}e++}for(;e<arguments.length;e++)Jh(n,arguments[e]);return n}c(D,"crelt");function Jh(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++)Jh(n,e[t]);else throw new RangeError("Unsupported child node: "+e)}c(Jh,"add");var ye=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},So=typeof document<"u"?document:{documentElement:{style:{}}},yo=/Edge\/(\d+)/.exec(ye.userAgent),Vc=/MSIE \d/.test(ye.userAgent),bo=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(ye.userAgent),Vr=!!(Vc||bo||yo),ec=!Vr&&/gecko\/(\d+)/i.test(ye.userAgent),ao=!Vr&&/Chrome\/(\d+)/.exec(ye.userAgent),tc="webkitFontSmoothing"in So.documentElement.style,xo=!Vr&&/Apple Computer/.test(ye.vendor),ic=xo&&(/Mobile\/\w+/.test(ye.userAgent)||ye.maxTouchPoints>2),C={mac:ic||/Mac/.test(ye.platform),windows:/Win/.test(ye.platform),linux:/Linux|X11/.test(ye.platform),ie:Vr,ie_version:Vc?So.documentMode||6:bo?+bo[1]:yo?+yo[1]:0,gecko:ec,gecko_version:ec?+(/Firefox\/(\d+)/.exec(ye.userAgent)||[0,0])[1]:0,chrome:!!ao,chrome_version:ao?+ao[1]:0,ios:ic,android:/Android\b/.test(ye.userAgent),webkit:tc,webkit_version:tc?+(/\bAppleWebKit\/(\d+)/.exec(ye.userAgent)||[0,0])[1]:0,safari:xo,safari_version:xo?+(/\bVersion\/(\d+(\.\d+)?)/.exec(ye.userAgent)||[0,0])[1]:0,tabSize:So.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function dl(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(dl,"combineAttrs");var br=Object.create(null);function Ol(n,e,t){if(n==e)return!0;n||(n=br),e||(e=br);let i=Object.keys(n),r=Object.keys(e);if(i.length-(t&&i.indexOf(t)>-1?1:0)!=r.length-(t&&r.indexOf(t)>-1?1:0))return!1;for(let s of i)if(s!=t&&(r.indexOf(s)==-1||n[s]!==e[s]))return!1;return!0}c(Ol,"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 nc(n,e,t){let i=!1;if(e)for(let r in e)t&&r in t||(i=!0,r=="style"?n.style.cssText="":n.removeAttribute(r));if(t)for(let r in t)e&&e[r]==t[r]||(i=!0,r=="style"?n.style.cssText=t[r]:n.setAttribute(r,t[r]));return i}c(nc,"updateAttrs");function jp(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(jp,"getAttrs");var be=class{static{c(this,"WidgetType")}eq(e){return!1}updateDOM(e,t,i){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={})),X=class extends We{static{c(this,"Decoration")}constructor(e,t,i,r){super(),this.startSide=e,this.endSide=t,this.widget=i,this.spec=r}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,r;if(e.isBlockGap)i=-5e8,r=4e8;else{let{start:s,end:o}=_c(e,t);i=(s?t?-3e8:-1:5e8)-1,r=(o?t?2e8:1:-6e8)+1}return new Ft(e,i,r,t,e.widget||null,!0)}static line(e){return new mn(e)}static set(e,t=!1){return Y.of(e,t)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};X.none=Y.empty;var pn=class n extends X{static{c(this,"MarkDecoration")}constructor(e){let{start:t,end:i}=_c(e);super(t?-1:5e8,i?1:-6e8,null,e),this.tagName=e.tagName||"span",this.attrs=e.class&&e.attributes?dl(e.attributes,{class:e.class}):e.class?{class:e.class}:e.attributes||br}eq(e){return this==e||e instanceof n&&this.tagName==e.tagName&&Ol(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 X{static{c(this,"LineDecoration")}constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof n&&this.spec.class==e.spec.class&&Ol(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 X{static{c(this,"PointDecoration")}constructor(e,t,i,r,s,o){super(t,i,s,e),this.block=r,this.isReplace=o,this.mapMode=r?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&&Ep(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 _c(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(_c,"getInclusive");function Ep(n,e){return n==e||!!(n&&e&&n.compare(e))}c(Ep,"widgetsEq");function wi(n,e,t,i=0){let r=t.length-1;r>=0&&t[r]+i>=n?t[r]=Math.max(t[r],e):t.push(n,e)}c(wi,"addRange");var xr=class n extends We{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&&Ol(this.attributes,e.attributes)}static create(e){return new n(e.tagName,e.attributes||br)}static set(e,t=!1){return Y.of(e,t)}};xr.prototype.startSide=xr.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 Qo(n,e){return e?n==e||n.contains(e.nodeType!=1?e.parentNode:e):!1}c(Qo,"contains");function on(n,e){if(!e.anchorNode)return!1;try{return Qo(n,e.anchorNode)}catch{return!1}}c(on,"hasSelection");function pr(n){return n.nodeType==3?Sn(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}c(pr,"clientRectsFor");function ln(n,e,t,i){return t?rc(n,e,t,i,-1)||rc(n,e,t,i,1):!1}c(ln,"isEquivalentPosition");function $t(n){for(var e=0;;e++)if(n=n.previousSibling,!n)return e}c($t,"domIndex");function Qr(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}c(Qr,"isBlockElement");function rc(n,e,t,i,r){for(;;){if(n==t&&e==i)return!0;if(e==(r<0?0:gt(n))){if(n.nodeName=="DIV")return!1;let s=n.parentNode;if(!s||s.nodeType!=1)return!1;e=$t(n)+(r<0?0:1),n=s}else if(n.nodeType==1){if(n=n.childNodes[e+(r<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;e=r<0?gt(n):0}else return!1}}c(rc,"scanFor");function gt(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}c(gt,"maxOffset");function wr(n,e){let t=e?n.left:n.right;return{left:t,right:t,top:n.top,bottom:n.bottom}}c(wr,"flattenRect");function zp(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(zp,"windowRect");function Yc(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(Yc,"getScale");function Vp(n,e,t,i,r,s,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=zp(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 x=f.getBoundingClientRect();({scaleX:p,scaleY:m}=Yc(f,x)),d={left:x.left,right:x.left+f.clientWidth*p,top:x.top,bottom:x.top+f.clientHeight*m}}let g=0,y=0;if(r=="nearest")e.top<d.top+o?(y=e.top-(d.top+o),t>0&&e.bottom>d.bottom+y&&(y=e.bottom-d.bottom+o)):e.bottom>d.bottom-o&&(y=e.bottom-d.bottom+o,t<0&&e.top-y<d.top&&(y=e.top-(d.top+o)));else{let x=e.bottom-e.top,Q=d.bottom-d.top;y=(r=="center"&&x<=Q?e.top+x/2-Q/2:r=="start"||r=="center"&&t<0?e.top-o:e.bottom-Q+o)-d.top}if(i=="nearest"?e.left<d.left+s?(g=e.left-(d.left+s),t>0&&e.right>d.right+g&&(g=e.right-d.right+s)):e.right>d.right-s&&(g=e.right-d.right+s,t<0&&e.left<d.left+g&&(g=e.left-(d.left+s))):g=(i=="center"?e.left+(e.right-e.left)/2-(d.right-d.left)/2:i=="start"==l?e.left-s:e.right-(d.right-d.left)+s)-d.left,g||y)if(O)h.scrollBy(g,y);else{let x=0,Q=0;if(y){let Z=f.scrollTop;f.scrollTop+=y/m,Q=(f.scrollTop-Z)*m}if(g){let Z=f.scrollLeft;f.scrollLeft+=g/p,x=(f.scrollLeft-Z)*p}e={left:e.left-x,top:e.top-Q,right:e.right-x,bottom:e.bottom-Q},x&&Math.abs(x-g)<1&&(i="nearest"),Q&&Math.abs(Q-y)<1&&(r="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 Wc(n,e=!0){let t=n.ownerDocument,i=null,r=null;for(let s=n.parentNode;s&&!(s==t.body||(!e||i)&&r);)if(s.nodeType==1)!r&&s.scrollHeight>s.clientHeight&&(r=s),e&&!i&&s.scrollWidth>s.clientWidth&&(i=s),s=s.assignedSlot||s.parentNode;else if(s.nodeType==11)s=s.host;else break;return{x:i,y:r}}c(Wc,"scrollableParents");var wo=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,r){this.anchorNode=e,this.anchorOffset=t,this.focusNode=i,this.focusOffset=r}},Nt=null;C.safari&&C.safari_version>=26&&(Nt=!1);function Dc(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++],r=e[t++],s=e[t++];i.scrollTop!=r&&(i.scrollTop=r),i.scrollLeft!=s&&(i.scrollLeft=s)}}}c(Dc,"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 r={key:e,code:e,keyCode:t,which:t,cancelable:!0};i&&({altKey:r.altKey,ctrlKey:r.ctrlKey,shiftKey:r.shiftKey,metaKey:r.metaKey}=i);let s=new KeyboardEvent("keydown",r);s.synthetic=!0,n.dispatchEvent(s);let o=new KeyboardEvent("keyup",r);return o.synthetic=!0,n.dispatchEvent(o),s.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 Yp(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 r=t.childNodes[i-1];r.contentEditable=="false"?i--:(t=r,i=gt(t))}else{if(t==n)return!0;i=$t(t),t=t.parentNode}}c(Yp,"atElementStart");function Lc(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(Lc,"isScrolledToBottom");function qc(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&&!Qr(t))i=$t(t),t=t.parentNode;else return null}}c(qc,"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&&!Qr(t))i=$t(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,$t(e),t)}static after(e,t){return new n(e.parentNode,$t(e)+1,t)}},q=(function(n){return n[n.LTR=0]="LTR",n[n.RTL=1]="RTL",n})(q||(q={})),Ht=q.LTR,pl=q.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 Wp=Ic("88888888888888888888888888888888888666888888787833333333337888888000000000000000000000000008888880000000000000000000000000088888888888888888888888888888888888887866668888088888663380888308888800000000000000000000000800000000000000000000000000000008"),Dp=Ic("4444448826627288999999999992222222222222222222222222222222222222222222222229999999999999999999994444444444644222822222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222999999949999999229989999223333333333"),ko=Object.create(null),ot=[];for(let n of["()","[]","{}"]){let e=n.charCodeAt(0),t=n.charCodeAt(1);ko[e]=t,ko[t]=-e}function Nc(n){return n<=247?Wp[n]:1424<=n&&n<=1524?2:1536<=n&&n<=1785?Dp[n-1536]:1774<=n&&n<=2220?4:8192<=n&&n<=8204?256:64336<=n&&n<=65023?4:1}c(Nc,"charType");var Lp=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\ufb50-\ufdff]/,Ie=class{static{c(this,"BidiSpan")}get dir(){return this.level%2?pl: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,r){let s=-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;(s<0||(r!=0?r<0?l.from<t:l.to>t:e[s].level>l.level))&&(s=o)}}if(s<0)throw new RangeError("Index out of range");return s}};function Gc(n,e){if(n.length!=e.length)return!1;for(let t=0;t<n.length;t++){let i=n[t],r=e[t];if(i.from!=r.from||i.to!=r.to||i.direction!=r.direction||!Gc(i.inner,r.inner))return!1}return!0}c(Gc,"isolatesEq");var U=[];function qp(n,e,t,i,r){for(let s=0;s<=i.length;s++){let o=s?i[s-1].to:e,l=s<i.length?i[s].from:t,a=s?256:r;for(let h=o,f=a,u=a;h<l;h++){let d=Nc(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(qp,"computeCharTypes");function Bp(n,e,t,i,r){let s=r==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=ko[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],y=g&2?r:g&4?g&1?s:r:0;y&&(U[u]=U[ot[m]]=y),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==r;a=m?0:1;for(let g=l-3;g>=0;g-=3){let y=ot[g+2];if(y&2)break;if(m)ot[g+2]|=2;else{if(y&4)break;ot[g+2]|=4}}}}}c(Bp,"processBracketPairs");function Ip(n,e,t,i){for(let r=0,s=i;r<=t.length;r++){let o=r?t[r-1].to:n,l=r<t.length?t[r].from:e;for(let a=o;a<l;){let h=U[a];if(h==256){let f=a+1;for(;;)if(f==l){if(r==t.length)break;f=t[r++].to,l=r<t.length?t[r].from:e}else if(U[f]==256)f++;else break;let u=s==1,d=(f<e?U[f]:i)==1,O=u==d?u?1:2:i;for(let p=f,m=r,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 s=h,a++}}}c(Ip,"processNeutrals");function $o(n,e,t,i,r,s,o){let l=i%2?2:1;if(i%2==r%2)for(let a=e,h=0;a<t;){let f=!0,u=!1;if(h==s.length||a<s[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<s.length&&p==s[h].from){if(u)break e;let m=s[h];if(!f)for(let g=m.to,y=h+1;;){if(g==t)break e;if(y<s.length&&s[y].from==g)g=s[y++].to;else{if(U[g]==l)break e;break}}if(h++,d)d.push(m);else{m.from>a&&o.push(new Ie(a,m.from,O));let g=m.direction==Ht!=!(O%2);vo(n,g?i+1:i,r,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?$o(n,a,p,i+1,r,d,o):a<p&&o.push(new Ie(a,p,O)),a=p}else for(let a=t,h=s.length;a>e;){let f=!0,u=!1;if(!h||a>s[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==s[h-1].to){if(u)break e;let m=s[--h];if(!f)for(let g=m.from,y=h;;){if(g==e)break e;if(y&&s[y-1].to==g)g=s[--y].from;else{if(U[g-1]==l)break e;break}}if(d)d.push(m);else{m.to<a&&o.push(new Ie(m.to,a,O));let g=m.direction==Ht!=!(O%2);vo(n,g?i+1:i,r,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?$o(n,p,a,i+1,r,d,o):p<a&&o.push(new Ie(p,a,O)),a=p}}c($o,"emitSpans");function vo(n,e,t,i,r,s,o){let l=e%2?2:1;qp(n,r,s,i,l),Bp(n,r,s,i,l),Ip(r,s,i,l),$o(n,r,s,e,t,i,o)}c(vo,"computeSectionOrder");function Np(n,e,t){if(!n)return[new Ie(0,0,e==pl?1:0)];if(e==Ht&&!t.length&&!Lp.test(n))return Uc(n.length);if(t.length)for(;n.length>U.length;)U[U.length]=256;let i=[],r=e==Ht?0:1;return vo(n,r,r,t,0,n.length,i),i}c(Np,"computeOrder");function Uc(n){return[new Ie(0,n,0)]}c(Uc,"trivialOrder");var Fc="";function Gp(n,e,t,i,r){var s;let o=i.head-n.from,l=Ie.find(e,o,(s=i.bidiLevel)!==null&&s!==void 0?s:-1,i.assoc),a=e[l],h=a.side(r,t);if(o==h){let d=l+=r?1:-1;if(d<0||d>=e.length)return null;a=e[l=d],o=a.side(!r,t),h=a.side(r,t)}let f=ne(n.text,o,a.forward(r,t));(f<a.from||f>a.to)&&(f=h),Fc=n.text.slice(Math.min(o,f),Math.max(o,f));let u=l==(r?e.length-1:0)?null:e[l+(r?1:-1)];return u&&f==h&&u.level+(r?0:1)<a.level?b.cursor(u.side(!r,t)+n.from,u.forward(r,t)?1:-1,u.level):b.cursor(f+n.from,a.forward(r,t)?-1:1,a.level)}c(Gp,"moveVisually");function Up(n,e,t){for(let i=e;i<t;i++){let r=Nc(n.charCodeAt(i));if(r==1)return Ht;if(r==2||r==4)return pl}return Ht}c(Up,"autoDirection");var Hc=P.define(),Kc=P.define(),Jc=P.define(),ef=P.define(),Po=P.define(),tf=P.define(),nf=P.define(),ml=P.define(),gl=P.define(),rf=P.define({combine:c(n=>n.some(e=>e),"combine")}),sf=P.define({combine:c(n=>n.some(e=>e),"combine")}),of=P.define(),an=class n{static{c(this,"ScrollTarget")}constructor(e,t,i,r,s,o=!1){this.range=e,this.y=t,this.x=i,this.yMargin=r,this.xMargin=s,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(b.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},or=R.define({map:c((n,e)=>n.map(e),"map")}),lf=R.define();function fe(n,e,t){let i=n.facet(ef);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=P.define({combine:c(n=>n.length?n[0]:!0,"combine")}),Fp=0,yi=P.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,r,s){this.id=e,this.create=t,this.domEventHandlers=i,this.domEventObservers=r,this.baseExtensions=s(this),this.extension=this.baseExtensions.concat(yi.of({plugin:this,arg:void 0}))}of(e){return this.baseExtensions.concat(yi.of({plugin:this,arg:e}))}static define(e,t){let{eventHandlers:i,eventObservers:r,provide:s,decorations:o}=t||{};return new n(Fp++,e,i,r,l=>{let a=[];return o&&a.push(_r.of(h=>{let f=h.plugin(l);return f?o(f):X.none})),s&&a.push(s(l)),a})}static fromClass(e,t){return n.define((i,r)=>new e(i,r),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}},af=P.define(),Sl=P.define(),_r=P.define(),hf=P.define(),yl=P.define(),yn=P.define(),cf=P.define();function oc(n,e){let t=n.state.facet(cf);if(!t.length)return t;let i=t.map(s=>s instanceof Function?s(n):s),r=[];return Y.spans(i,e.from,e.to,{point(){},span(s,o,l,a){let h=s-e.from,f=o-e.from,u=r;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}}}}),r}c(oc,"getIsolatedRanges");var ff=P.define();function bl(n){let e=0,t=0,i=0,r=0;for(let s of n.state.facet(ff)){let o=s(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&&(r=Math.max(r,o.bottom)))}return{left:e,right:t,top:i,bottom:r}}c(bl,"getScrollMargins");var nn=P.define(),Fe=class n{static{c(this,"ChangedRange")}constructor(e,t,i,r){this.fromA=e,this.toA=t,this.fromB=i,this.toB=r}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 r=e[t-1];if(!(r.fromA>i.toA)){if(r.toA<i.fromA)break;i=i.join(r),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 r=0,s=0,o=0;;){let l=r<e.length?e[r].fromB:1e9,a=s<t.length?t[s]:1e9,h=Math.min(l,a);if(h==1e9)break;let f=h+o,u=h,d=f;for(;;)if(s<t.length&&t[s]<=u){let O=t[s+1];s+=2,u=Math.max(u,O);for(let p=r;p<e.length&&e[p].fromB<=u;p++)o=e[p].toA-e[p].toB;d=Math.max(d,O+o)}else if(r<e.length&&e[r].fromB<=u){let O=e[r++];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}},kr=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 s of i)this.changes=this.changes.compose(s.changes);let r=[];this.changes.iterChangedRanges((s,o,l,a)=>r.push(new Fe(s,o,l,a))),this.changedRanges=r}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 r of this.children){if(r==e)return i;i+=r.length+r.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=$t(this.dom),r=this.length?e>0:t>0;return new lt(this.parent.dom,i+(r?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 vi)return e;return null}static get(e){return e.cmTile}},$i=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,r,s=e?.node==t?e:null,o=0;for(let l of this.children){if(l.sync(e),o+=l.length+l.breakAfter,r=i?i.nextSibling:t.firstChild,s&&r!=l.dom&&(s.written=!0),l.dom.parentNode==t)for(;r&&r!=l.dom;)r=lc(r);else t.insertBefore(l.dom,r);i=l.dom}for(r=i?i.nextSibling:t.firstChild,s&&r&&(s.written=!0);r;)r=lc(r);this.length=o}};function lc(n){let e=n.nextSibling;return n.parentNode.removeChild(n),e}c(lc,"rm$1");var vi=class extends $i{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,r=0,s=0;;)if(r==i.children.length){if(!t.length)return;i=i.parent,i.breakAfter&&s++,r=t.pop()}else{let o=i.children[r++];if(o instanceof mt)t.push(r),i=o,r=0;else{let l=s+o.length,a=e(o,s);if(a!==void 0)return a;s=l+o.breakAfter}}}resolveBlock(e,t){let i,r=-1,s,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,r=e-a),(h>e||e==a&&(t>1?l.length:l.covers(-1)))&&(!s||!l.isWidget()&&s.isWidget())&&(s=l,o=e-a)}}),!i&&!s)throw new Error("No tile at position "+e);return i&&t<0||!s?{tile:i,offset:r}:{tile:s,offset:o}}},mt=class n extends $i{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}},Pi=class n extends $i{static{c(this,"LineTile")}constructor(e,t){super(e),this.attrs=t}isLine(){return!0}static start(e,t,i){let r=new n(t||document.createElement("div"),e);return(!t||!i)&&(r.flags|=4),r}get domAttrs(){return this.attrs}resolveInline(e,t,i){let r=null,s=-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)&&(r=p,s=u-O)),O=m}}c(a,"scan"),a(this,e);let h=(t<0?r:o)||r||o;return h?{tile:h,offset:h==r?s: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:r,offset:s}=i;if(this.dom.contains(r.dom))return r.isText()?new lt(r.dom,Math.min(r.dom.nodeValue.length,s)):r.domPosFor(s,r.flags&16?1:r.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=pr(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 $i{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 r=e,s=e,o=0;e==0&&t<0||e==i&&t>=0?C.chrome||C.gecko||(e?(r--,o=1):s<i&&(s++,o=-1)):t<0?r--:s<i&&s++;let l=Sn(this.dom,r,s).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?wr(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,r){super(e,t,r),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 r=this.widget.coordsAt(this.dom,e,t);if(r)return r;if(i)return wr(this.dom.getBoundingClientRect(),this.length?e==0:t<=0);{let s=this.dom.getClientRects(),o=null;if(!s.length)return null;let l=this.flags&16?!0:this.flags&32?!1:e>0;for(let a=l?s.length-1:0;o=s[a],!(e>0?a==0:a==s.length-1||o.top<o.bottom);a+=l?-1:1);return wr(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,r,s){return s||(s=e.toDOM(t),e.editable||(s.contentEditable="false")),new n(s,i,e,r)}},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()}},To=class{static{c(this,"TilePointer")}constructor(e){this.index=0,this.beforeBreak=!1,this.parents=[],this.tile=e}advance(e,t,i){let{tile:r,index:s,beforeBreak:o,parents:l}=this;for(;e||t>0;)if(r.isComposite())if(o){if(!e)break;i&&i.break(),e--,o=!1}else if(s==r.children.length){if(!e&&!l.length)break;i&&i.leave(r),o=!!r.breakAfter,{tile:r,index:s}=l.pop(),s++}else{let a=r.children[s],h=a.breakAfter;(t>0?a.length<=e:a.length<e)&&(!i||i.skip(a,0,a.length)!==!1||!a.isComposite)?(o=!!h,s++,e-=a.length):(l.push({tile:r,index:s}),r=a,s=0,i&&a.isComposite()&&i.enter(a))}else if(s==r.length)o=!!r.breakAfter,{tile:r,index:s}=l.pop(),s++;else if(e){let a=Math.min(e,r.length-s);i&&i.skip(r,s,s+a),e-=a,s+=a}else break;return this.tile=r,this.index=s,this.beforeBreak=o,this}get root(){return this.parents.length?this.parents[0].tile:this.tile}},Co=class{static{c(this,"OpenWrapper")}constructor(e,t,i,r){this.from=e,this.to=t,this.wrapper=i,this.rank=r}},Zo=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,r){var s;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(r||Gt.of(e,(s=this.cache.find(Gt))===null||s===void 0?void 0:s.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)?ho(t.line.dom):t.line.dom),this.cache.reused.set(t.line,2));let r=i;for(let l=t.marks.length-1;l>=0;l--){let a=t.marks[l],h=r.lastChild;if(h instanceof we&&h.mark.eq(a.mark))h.dom!=a.dom&&h.setDOM(ho(a.dom)),r=h;else{if(this.cache.reused.get(a)){let u=ee.get(a.dom);u&&u.setDOM(ho(a.dom))}let f=we.of(a.mark,a.dom);r.append(f),r=f}this.cache.reused.set(a,2)}let s=ee.get(e.text);s&&this.cache.reused.set(s,2);let o=new Gt(e.text,e.text.nodeValue);o.flags|=8,r.append(o)}addInlineWidget(e,t,i){let r=this.afterWidget&&e.flags&48&&(this.afterWidget.flags&48)==(e.flags&48);r||this.flushBuffer();let s=this.ensureMarks(t,i);!r&&!(e.flags&16)&&s.append(this.getBuffer(1)),s.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=uf);let r=Pi.start(e,t||((i=this.cache.find(Pi))===null||i===void 0?void 0:i.dom),!!t);this.getBlockPos().append(this.lastBlock=this.curLine=r)}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 r=this.curLine;for(let s=e.length-1;s>=0;s--){let o=e[s],l;if(t>0&&(l=r.lastChild)&&l instanceof we&&l.mark.eq(o))r=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);r.append(a),r=a,t=0}}return r}endLine(){if(this.curLine){this.flushBuffer();let e=this.curLine.lastChild;(!e||!ac(this.curLine,!1)||e.dom.nodeName!="BR"&&e.isWidget()&&!(C.ios&&ac(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(co,0,32)||new Kt(co.toDOM(),0,co,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 Co(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 r=t.lastChild;if(i.from<this.pos&&r instanceof mt&&r.wrapper.eq(i.wrapper))t=r;else{let s=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(s),t=s}}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)}},Xo=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:r,lineBreak:s,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=r;let l=this.textOff=Math.min(e,r.length);return s?null:r.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}},$r=[Kt,Pi,Gt,we,Ti,mt,vi];for(let n=0;n<$r.length;n++)$r[n].bucket=n;var Ao=class{static{c(this,"TileCache")}constructor(e){this.view=e,this.buckets=$r.map(()=>[]),this.index=$r.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 r=e.bucket,s=this.buckets[r],o=this.index[r];for(let l=s.length-1;l>=0;l--){let a=(l+o)%s.length,h=s[a];if((!t||t(h))&&!this.reused.has(h))return s.splice(a,1),a<o&&this.index[r]--,this.reused.set(h,i),h}return null}findWidget(e,t,i){let r=this.buckets[0];if(r.length)for(let s=0,o=0;;s++){if(s==r.length){if(o)return null;o=1,s=0}let l=r[s];if(!this.reused.has(l)&&(o==0?l.widget.compare(e):l.widget.constructor==e.constructor&&e.updateDOM(l.dom,this.view,l.widget)))return r.splice(s,1),s<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}},Ro=class{static{c(this,"TileUpdate")}constructor(e,t,i,r,s){this.view=e,this.decorations=r,this.disallowBlockEffectsFor=s,this.openWidget=!1,this.openMarks=0,this.cache=new Ao(e),this.text=new Xo(e.state.doc),this.builder=new Zo(this.cache,new vi(e,e.contentDOM),Y.iter(i)),this.cache.reused.set(t,2),this.old=new To(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 r=0,s=0,o=0;;){let l=o<e.length?e[o++]:null,a=l?l.fromA:this.old.root.length;if(a>r){let h=a-r;this.preserve(h,!o,!l),r=a,s+=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(s,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(s,l.toB)),s=l.toB,r=l.toA}return this.builder.curLine&&this.builder.endLine(),this.builder.root}preserve(e,t,i){let r=im(this.old),s=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,r,s),s=r.length)}else if(o.isText())this.builder.ensureLine(null),!l&&a==o.length&&!this.cache.reused.has(o)?this.builder.addText(o.text,r,s,this.cache.reuse(o)):(this.cache.add(o),this.builder.addText(o.text.slice(l,a),r,s)),s=r.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,r,s),this.cache.reused.set(o,1),s=r.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&&r.unshift(o.mark)),this.openWidget=!1},"enter"),leave:c(o=>{o.isLine()?r.length&&(r.length=s=0):o instanceof we&&(r.shift(),s=Math.min(s,r.length))},"leave"),break:c(()=>{this.builder.addBreak(),this.openWidget=!1},"break")}),this.text.skip(e)}emit(e,t){let i=null,r=this.builder,s=0,o=Y.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(s=f.length,u>f.length)r.continueWidget(a-l);else{let O=h.widget||(h.block?vt.block:vt.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&&r.addLineStartIfNotCovered(i),r.addBlockWidget(m)):(r.ensureLine(i),r.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?(r.addLineStartIfNotCovered(i),r.addBreak(),u++):(r.ensureLine(i),r.addText(d,h,u==l?f:h.length),u+=d.length),i=null}},"span")});r.addLineStartIfNotCovered(i),this.openWidget=o>s,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 r=e.parentNode;;r=r.parentNode){let s=ee.get(r);if(r==this.view.contentDOM)break;s instanceof we?t.push(s):s?.isLine()?i=s:s instanceof mt||(r.nodeName=="DIV"&&!i&&r!=this.view.contentDOM?i=new Pi(r,uf):i||t.push(we.of(new pn({tagName:r.nodeName.toLowerCase(),attributes:jp(r)}),r)))}return{line:i,marks:t}}};function ac(n,e){let t=c(i=>{for(let r of i.children)if((e?r.isText():r.length)||t(r))return!0;return!1},"scan");return t(n)}c(ac,"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 uf={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&&dl(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 ho(n){let e=ee.get(n);return e&&e.setDOM(n.cloneNode()),n}c(ho,"freeNode");var vt=class extends be{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}};vt.inline=new vt("span");vt.block=new vt("div");var co=new class extends be{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},vr=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=X.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 vi(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 r=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((t=this.domChanged)===null||t===void 0)&&t.newSel?r=this.domChanged.newSel.head:!cm(e.changes,this.hasComposition)&&!e.selectionSet&&(r=e.state.selection.main.head));let s=r>-1?rm(this.view,e.changes,r):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=s?{from:s.range.fromB,to:s.range.toB}:null,(C.ie||C.chrome)&&!s&&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)),s&&!i.some(f=>f.fromA<=s.range.fromA&&f.toA>=s.range.toA)&&(i=s.range.addToSet(i.slice())),this.tile.flags&2&&i.length==0?!1:(this.updateInner(i,s),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 Ro(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),Mo(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 s=C.chrome||C.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(s),s&&(s.written||i.selectionRange.focusNode!=s.node||!this.tile.dom.contains(s.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let r=[];if(this.view.viewport.from||this.view.viewport.to<this.view.state.doc.length)for(let s of this.tile.children)s.isWidget()&&s.widget instanceof cn&&r.push(s.dom);i.updateGaps(r)}updateEditContextFormatting(e){this.editContextFormatting=this.editContextFormatting.map(e.changes);for(let t of e.transactions)for(let i of t.effects)i.is(lf)&&(this.editContextFormatting=i.value)}updateSelection(e=!1,t=!1){(e||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange();let{dom:i}=this.tile,r=this.view.root.activeElement,s=r==i,o=!s&&!(this.view.state.facet(pt)||i.tabIndex>-1)&&on(i,this.view.observer.selectionRange)&&!(r&&i.contains(r));if(!(s||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=sm(h.node,h.offset);if(O&&O!=3){let p=(O==1?qc: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(),r&&r.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:r,anchorOffset:s}=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(r,s)}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 r=i.posAtStart;if(i.isComposite()){let s;if(e==i.dom)s=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?s=e:s=e.nextSibling}if(s==i.dom.firstChild)return r;for(;s&&!ee.get(s);)s=s.nextSibling;if(!s)return r+i.length;for(let o=0,l=r;;o++){let a=i.children[o];if(a.dom==s)return l;l+=a.length+a.breakAfter}}else return i.isText()?e==i.dom?r+t:r+(t?i.length:0):r}domAtPos(e,t){let{tile:i,offset:r}=this.tile.resolveBlock(e,t);return i.isWidget()?i.domPosFor(e,t):i.domIn(r,t)}inlineDOMNearPos(e,t){let i,r=-1,s=!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&&(s=!0)}else{let u=f+h.length;if(f<=e&&(i=h,r=e-f,s=u<e),u>=e&&!o&&(o=h,l=e-f,a=f>e),f>e&&o)return!0}}),!i&&!o?this.domAtPos(e,t):(s&&o?i=null:a&&i&&(o=null),i&&t<0||!o?i.domIn(r,t):o.domIn(l,t))}coordsAt(e,t){let{tile:i,offset:r}=this.tile.resolveBlock(e,t);return i.isWidget()?i.widget instanceof cn?null:i.coordsInWidget(r,t,!0):i.coordsIn(r,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 r(s,o){if(s.isComposite())for(let l of s.children){if(l.length>=o){let a=r(l,o);if(a)return a}if(o-=l.length,o<0)break}else if(s.isText()&&o<s.length){let l=ne(s.text,o);if(l==o)return null;let a=Sn(s.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(r,"scan"),r(t,i)}measureVisibleLineHeights(e){let t=[],{from:i,to:r}=e,s=this.view.contentDOM.clientWidth,o=s>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==q.LTR,h=0,f=c((u,d,O)=>{for(let p=0;p<u.children.length&&!(d>r);p++){let m=u.children[p],g=d+m.length,y=m.dom.getBoundingClientRect(),{height:x}=y;if(O&&!p&&(h+=y.top-O.top),m instanceof mt)g>i&&f(m,d,y);else if(d>=i&&(h>0&&t.push(-h),t.push(x+h),h=0,o)){let Q=m.dom.lastChild,Z=Q?pr(Q):[];if(Z.length){let w=Z[Z.length-1],k=a?w.right-y.left:y.right-w.left;k>l&&(l=k,this.minWidth=s,this.minWidthFrom=d,this.minWidthTo=g)}}O&&p==u.children.length-1&&(h+=O.bottom-y.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"?q.RTL:q.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=pr(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,r,s;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=pr(t.firstChild)[0];i=t.getBoundingClientRect().height,r=o&&o.width?o.width/27:7,s=o&&o.height?o.height:i,t.remove()}),{lineHeight:i,charWidth:r,textHeight:s}}computeBlockGapDeco(){let e=[],t=this.view.viewState;for(let i=0,r=0;;r++){let s=r==t.viewports.length?null:t.viewports[r],o=s?s.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(X.replace({widget:new cn(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!s)break;i=s.to+1}return X.set(e)}updateDeco(){let e=1,t=this.view.state.facet(_r).map(s=>(this.dynamicDecorationMap[e++]=typeof s=="function")?s(this.view):s),i=!1,r=this.view.state.facet(yl).map((s,o)=>{let l=typeof s=="function";return l&&(i=!0),l?s(this.view):s});for(r.length&&(this.dynamicDecorationMap[e++]=i,t.push(Y.join(r))),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(hf).map(s=>typeof s=="function"?s(this.view):s)}scrollIntoView(e){var t;if(e.isSnapshot){let f=this.view.viewState.lineBlockAt(e.range.head);this.view.scrollDOM.scrollTop=f.top-e.yMargin,this.view.scrollDOM.scrollLeft=e.xMargin;return}for(let f of this.view.state.facet(of))try{if(f(this.view,e.range,e))return!0}catch(u){fe(this.view.state,u,"scroll handler")}let{range:i}=e,r=this.coordsAt(i.head,(t=i.assoc)!==null&&t!==void 0?t:i.empty?0:i.head>i.anchor?-1:1),s;if(!r)return;!i.empty&&(s=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(r={left:Math.min(r.left,s.left),top:Math.min(r.top,s.top),right:Math.max(r.right,s.right),bottom:Math.max(r.bottom,s.bottom)});let o=bl(this.view),l={left:r.left-o.left,top:r.top-o.top,right:r.right+o.right,bottom:r.bottom+o.bottom},{offsetWidth:a,offsetHeight:h}=this.view.scrollDOM;if(Vp(this.view.scrollDOM,l,i.head<i.anchor?-1:1,e.x,e.y,Math.max(Math.min(e.xMargin,a),-a),Math.max(Math.min(e.yMargin,h),-h),this.view.textDirection==q.LTR),window.visualViewport&&window.innerHeight-window.visualViewport.height>1&&(r.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||r.bottom<window.pageYOffset+window.visualViewport.offsetTop)){let f=this.view.docView.lineAt(i.head,1);f&&f.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(){Mo(this.tile)}};function Mo(n,e){let t=e?.get(n);if(t!=1){t==null&&n.destroy();for(let i of n.children)Mo(i,e)}}c(Mo,"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 df(n,e){let t=n.observer.selectionRange;if(!t.focusNode)return null;let i=qc(t.focusNode,t.focusOffset),r=Bc(t.focusNode,t.focusOffset),s=i||r;if(r&&i&&r.node!=i.node){let l=ee.get(r.node);if(!l||l.isText()&&l.text!=r.node.nodeValue)s=r;else if(n.docView.lastCompositionAfterCursor){let a=ee.get(i.node);!a||a.isText()&&a.text!=i.node.nodeValue||(s=r)}}if(n.docView.lastCompositionAfterCursor=s!=i,!s)return null;let o=e-s.offset;return{from:o,to:o+s.node.nodeValue.length,node:s.node}}c(df,"findCompositionNode");function rm(n,e,t){let i=df(n,t);if(!i)return null;let{node:r,from:s,to:o}=i,l=r.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(s),a.mapPos(o),s,o),text:r}}c(rm,"findCompositionRange");function sm(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(sm,"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 Y.compare(n,e,t,i),i.changes}c(lm,"findChangedDeco");var jo=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 jo;return Y.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,r)=>{i<e.to&&r>e.from&&(t=!0)}),t}c(cm,"touchesComposition");var cn=class extends be{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),r=n.doc.lineAt(e),s=e-r.from;if(r.length==0)return b.cursor(e);s==0?t=1:s==r.length&&(t=-1);let o=s,l=s;t<0?o=ne(r.text,s,!1):l=ne(r.text,s);let a=i(r.text.slice(o,l));for(;o>0;){let h=ne(r.text,o,!1);if(i(r.text.slice(h,o))!=a)break;o=h}for(;l<r.length;){let h=ne(r.text,l);if(i(r.text.slice(l,h))!=a)break;l=h}return b.range(o+r.from,l+r.from)}c(fm,"groupAt");function um(n,e,t,i,r){let s=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((r-t.top-(n.defaultLineHeight-l)*.5)/l);s+=a*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(t.from,t.to);return t.from+rr(o,s,n.state.tabSize)}c(um,"posAtCoordsImprecise");function Eo(n,e,t){let i=n.lineBlockAt(e);if(Array.isArray(i.type)){let r;for(let s of i.type){if(s.from>e)break;if(!(s.to<e)){if(s.from<e&&s.to>e)return s;(!r||s.type==ue.Text&&(r.type!=s.type||(t<0?s.from<e:s.to>e)))&&(r=s)}}return r||i}return i}c(Eo,"blockAt");function dm(n,e,t,i){let r=Eo(n,e.head,e.assoc||-1),s=!i||r.type!=ue.Text||!(n.lineWrapping||r.widgetLineBreaks)?null:n.coordsAtPos(e.assoc<0&&e.head>r.from?e.head-1:e.head);if(s){let o=n.dom.getBoundingClientRect(),l=n.textDirectionAt(r.from),a=n.posAtCoords({x:t==(l==q.LTR)?o.right-1:o.left+1,y:(s.top+s.bottom)/2});if(a!=null)return b.cursor(a,t?-1:1)}return b.cursor(t?r.to:r.from,t?-1:1)}c(dm,"moveToLineBoundary");function hc(n,e,t,i){let r=n.state.doc.lineAt(e.head),s=n.bidiSpans(r),o=n.textDirectionAt(r.from);for(let l=e,a=null;;){let h=Gp(r,s,o,l,t),f=Fc;if(!h){if(r.number==(t?n.state.doc.lines:1))return l;f=` 8 + `,r=n.state.doc.line(r.number+(t?1:-1)),s=n.bidiSpans(r),h=n.visualLineSide(r,!t)}if(a){if(!a(f))return l}else{if(!i)return h;a=i(f)}l=h}}c(hc,"moveByChar");function Om(n,e,t){let i=n.state.charCategorizer(e),r=i(t);return s=>{let o=i(s);return r==I.Space&&(r=o),r==o}}c(Om,"byGroup");function pm(n,e,t,i){let r=e.head,s=t?1:-1;if(r==(t?n.state.doc.length:0))return b.cursor(r,e.assoc);let o=e.goalColumn,l,a=n.contentDOM.getBoundingClientRect(),h=n.coordsAtPos(r,e.assoc||((e.empty?t:e.head==e.from)?1:-1)),f=n.documentTop;if(h)o==null&&(o=h.left-a.left),l=s<0?h.top:h.bottom;else{let p=n.viewState.lineBlockAt(r);o==null&&(o=Math.min(a.right-a.left,n.defaultCharacterWidth*(r-p.from))),l=(s<0?p.top:p.bottom)+f}let u=a.left+o,d=n.viewState.heightOracle.textHeight>>1,O=i??d;for(let p=0;;p+=d){let m=l+(O+p)*s,g=zo(n,{x:u,y:m},!1,s);if(t?m>a.bottom:m<a.top)return b.cursor(g.pos,g.assoc);let y=n.coordsAtPos(g.pos,g.assoc),x=y?(y.top+y.bottom)/2:0;if(!y||(t?x>l:x<l))return b.cursor(g.pos,g.assoc,void 0,o)}}c(pm,"moveVertically");function fn(n,e,t){for(;;){let i=0;for(let r of n)r.between(e-1,e+1,(s,o,l)=>{if(e>s&&e<o){let a=i||t||(e-s<o-e?-1:1);e=a<0?s:o,i=a}});if(!i)return e}}c(fn,"skipAtomicRanges");function Of(n,e){let t=null;for(let i=0;i<e.ranges.length;i++){let r=e.ranges[i],s=null;if(r.empty){let o=fn(n,r.from,0);o!=r.from&&(s=b.cursor(o,-1))}else{let o=fn(n,r.from,-1),l=fn(n,r.to,1);(o!=r.from||l!=r.to)&&(s=b.range(r.from==r.anchor?o:l,r.from==r.head?o:l))}s&&(t||(t=e.ranges.slice()),t[i]=s)}return t?b.create(t,e.mainIndex):e}c(Of,"skipAtomsForSelection");function fo(n,e,t){let i=fn(n.state.facet(yn).map(r=>r(n)),t.from,e.head>t.from?-1:1);return i==t.from?t:b.cursor(i,i<t.from?1:-1)}c(fo,"skipAtoms");var Be=class{static{c(this,"PosAssoc")}constructor(e,t){this.pos=e,this.assoc=t}};function zo(n,e,t,i){let r=n.contentDOM.getBoundingClientRect(),s=r.top+n.viewState.paddingTop,{x:o,y:l}=e,a=l-s,h;for(;;){if(a<0)return new Be(0,1);if(a>n.viewState.docHeight)return new Be(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+s:d.bottom>=a+s))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,r,h,o,l);return new Be(u,u==h.from?1:-1)}}if(h.type!=ue.Text)return a<(h.top+h.bottom)/2?new Be(h.from,1):new Be(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 Vo(n,o,l,n.textDirectionAt(h.from)).scanTile(f,h.from)}c(zo,"posAtCoords");var Vo=class{static{c(this,"InlineCoordsScan")}constructor(e,t,i,r){this.view=e,this.x=t,this.y=i,this.baseDir=r,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:r}=this.bidiSpansAt(e);return r[Ie.find(r,e-i.from,-1,t)].level==this.baseDir}dirAt(e,t){let{line:i,spans:r}=this.bidiSpansAt(e);return r[Ie.find(r,e-i.from,-1,t)].dir}bidiIn(e,t){let{spans:i,line:r}=this.bidiSpansAt(e);return i.length>1||i.length&&(i[0].level!=this.baseDir||i[0].to+r.from<t)}scan(e,t){let i=0,r=e.length-1,s=new Set,o=this.bidiIn(e[0],e[r]),l,a,h=-1,f=1e9,u;e:for(;i<r;){let O=r-i,p=i+r>>1;t:if(s.has(p)){let g=i+Math.floor(Math.random()*O);for(let y=0;y<O;y++){if(!s.has(g)){p=g;break t}g++,g==r&&(g=i)}break e}s.add(p);let m=t(p);if(m)for(let g=0;g<m.length;g++){let y=m[g],x=0;if(!(y.width==0&&m.length>1)){if(y.bottom<this.y)(!l||l.bottom<y.bottom)&&(l=y),x=1;else if(y.top>this.y)(!a||a.top>y.top)&&(a=y),x=-1;else{let Q=y.left>this.x?this.x-y.left:y.right<this.x?this.x-y.right:0,Z=Math.abs(Q);Z<f&&(h=p,f=Z,u=y),Q&&(x=Q<0==(this.baseDir==q.LTR)?-1:1)}x==-1&&(!o||this.baseDirAt(e[p],1))?r=p:x==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)}if(f){if(l&&l.bottom>u.top)return this.y=l.bottom-1,this.scan(e,t);if(a&&a.top<u.bottom)return this.y=a.top+1,this.scan(e,t)}let d=(o?this.dirAt(e[h],1):this.baseDir)==q.LTR;return{i:h,after:this.x>(u.left+u.right)/2==d}}scanText(e,t){let i=[];for(let s=0;s<e.length;s=ne(e.text,s))i.push(t+s);i.push(t+e.length);let r=this.scan(i,s=>{let o=i[s]-t,l=i[s+1]-t;return Sn(e.dom,o,l).getClientRects()});return r.after?new Be(i[r.i+1],-1):new Be(i[r.i],1)}scanTile(e,t){if(!e.length)return new Be(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 r=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()}),s=e.children[r.i],o=i[r.i];return s.isText()?this.scanText(s,o):s.isComposite()?this.scanTile(s,o):r.after?new Be(i[r.i+1],-1):new Be(o,1)}},Si="\uFFFF",_o=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 r=e;;){this.findPointBefore(i,r);let s=this.text.length;this.readNode(r);let o=ee.get(r),l=r.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:Qr(r))||Qr(l)&&(r.nodeName!="BR"||o?.isWidget())&&this.text.length>s)&&!gm(l,t)&&this.lineBreak(),r=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,r=this.lineSeparator?null:/\r\n?|\n/g;;){let s=-1,o=1,l;if(this.lineSeparator?(s=t.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(l=r.exec(t))&&(s=l.index,o=l[0].length),this.append(t.slice(i,s<0?t.length:s)),s<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=s+o}}readNode(e){let t=ee.get(e),i=t&&t.overrideDOMText;if(i!=null){this.findPointInside(e,i.length);for(let r=i.iter();!r.next().done;)r.lineBreak?this.lineBreak():this.append(r.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=$t(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 r=i.overrideDOMText;if(r?.length)return!1}return!0}c(gm,"isEmptyToEnd");var Pr=class{static{c(this,"DOMPoint")}constructor(e,t){this.node=e,this.offset=t,this.pos=-1}},Yo=class{static{c(this,"DOMChange")}constructor(e,t,i,r){this.typeOver=r,this.bounds=null,this.text="",this.domChanged=t>-1;let{impreciseHead:s,impreciseAnchor:o}=e.docView,l=e.state.selection;if(e.state.readOnly&&t>-1)this.newSel=null;else if(t>-1&&(this.bounds=pf(e.docView.tile,t,i,0))){let a=s||o?[]:ym(e),h=new _o(a,e);h.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=h.text,this.newSel=bm(a,this.bounds.from)}else{let a=e.observer.selectionRange,h=s&&s.node==a.focusNode&&s.offset==a.focusOffset||!Qo(e.contentDOM,a.focusNode)?l.main.head:e.docView.posFromDOM(a.focusNode,a.focusOffset),f=o&&o.node==a.anchorNode&&o.offset==a.anchorOffset||!Qo(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(b.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=b.create([b.cursor(h,O)])}else this.newSel=b.single(f,h)}}};function pf(n,e,t,i){if(n.isComposite()){let r=-1,s=-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 pf(u,e,t,h);if(d>=e&&r==-1&&(r=a,s=h),h>t&&u.dom.parentNode==n.dom){o=a,l=f;break}f=d,h=d+u.breakAfter}return{from:s,to:l<0?i+n.length:l,startDOM:(r?n.children[r-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(pf,"domBoundsAround");function mf(n,e){let t,{newSel:i}=e,{state:r}=n,s=r.selection.main,o=n.inputState.lastKeyTime>Date.now()-100?n.inputState.lastKeyCode:-1;if(e.bounds){let{from:l,to:a}=e.bounds,h=s.from,f=null;(o===8||C.android&&e.text.length<a-l)&&(h=s.to,f="end");let u=r.doc.sliceString(l,a,Si),d,O;!s.empty&&s.from>=l&&s.to<=a&&(e.typeOver||u!=e.text)&&u.slice(0,s.from-l)==e.text.slice(0,s.from-l)&&u.slice(s.to-l)==e.text.slice(d=e.text.length-(u.length-(s.to-l)))?t={from:s.from,to:s.to,insert:V.of(e.text.slice(s.from-l,d).split(Si))}:(O=gf(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&&r.facet(pt)||Tr(i,s))&&(i=null);if(!t&&!i)return!1;if((C.mac||C.android)&&t&&t.from==t.to&&t.from==s.head-1&&/^\. ?$/.test(t.insert.toString())&&n.contentDOM.getAttribute("autocorrect")=="off"?(i&&t.insert.length==2&&(i=b.single(i.main.anchor-1,i.main.head-1)),t={from:t.from,to:t.to,insert:V.of([t.insert.toString().replace("."," ")])}):r.doc.lineAt(s.from).to<s.to&&n.docView.lineHasWidget(s.to)&&n.inputState.insertingTextAt>Date.now()-50?t={from:s.from,to:s.to,insert:r.toText(n.inputState.insertingText)}:C.chrome&&t&&t.from==t.to&&t.from==s.head&&t.insert.toString()==` 9 + `&&n.lineWrapping&&(i&&(i=b.single(i.main.anchor-1,i.main.head-1)),t={from:s.from,to:s.to,insert:V.of([" "])}),t)return xl(n,t,i,o);if(i&&!Tr(i,s)){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=Of(r.facet(yn).map(h=>h(n)),i))),n.dispatch({selection:i,scrollIntoView:l,userEvent:a}),!0}else return!1}c(mf,"applyDOMChange");function xl(n,e,t,i=-1){if(C.ios&&n.inputState.flushIOSKey(e))return!0;let r=n.state.selection.main;if(C.android&&(e.to==r.to&&(e.from==r.from||e.from==r.from-1&&n.state.sliceDoc(e.from,r.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&ki(n.contentDOM,"Enter",13)||(e.from==r.from-1&&e.to==r.to&&e.insert.length==0||i==8&&e.insert.length<e.to-e.from&&e.to>r.head)&&ki(n.contentDOM,"Backspace",8)||e.from==r.from&&e.to==r.to+1&&e.insert.length==0&&ki(n.contentDOM,"Delete",46)))return!0;let s=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(tf).some(a=>a(n,e.from,e.to,s,l))||n.dispatch(l()),!0}c(xl,"applyDOMChangeInner");function Sm(n,e,t){let i,r=n.state,s=r.selection.main,o=-1;if(e.from==e.to&&e.from<s.from||e.from>s.to){let a=e.from<s.from?-1:1,h=a<0?s.from:s.to,f=fn(r.facet(yn).map(u=>u(n)),h,a);e.from==f&&(o=f)}if(o>-1)i={changes:e,selection:b.cursor(e.from+e.insert.length,-1)};else if(e.from>=s.from&&e.to<=s.to&&e.to-e.from>=(s.to-s.from)/3&&(!t||t.main.empty&&t.main.from==e.from+e.insert.length)&&n.inputState.composing<0){let a=s.from<e.from?r.sliceDoc(s.from,e.from):"",h=s.to>e.to?r.sliceDoc(e.to,s.to):"";i=r.replaceSelection(n.state.toText(a+e.insert.sliceString(0,void 0,n.state.lineBreak)+h))}else{let a=r.changes(e),h=t&&t.main.to<=a.newLength?t.main:void 0;if(r.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&e.to<=s.to+10&&e.to>=s.to-10){let f=n.state.sliceDoc(e.from,e.to),u,d=t&&df(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(s.head);let O=s.to-e.to;i=r.changeByRange(p=>{if(p.from==s.from&&p.to==s.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 y=r.changes({from:g,to:m,insert:e.insert}),x=p.to-s.to;return{changes:y,range:h?b.range(Math.max(0,h.anchor+x),Math.max(0,h.head+x)):p.map(y)}})}else i={changes:a,selection:h&&r.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)),r.update(i,{userEvent:l,scrollIntoView:!0})}c(Sm,"applyDefaultInsert");function gf(n,e,t,i){let r=Math.min(n.length,e.length),s=0;for(;s<r&&n.charCodeAt(s)==e.charCodeAt(s);)s++;if(s==r&&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,s-Math.min(o,l));t-=o+a-s}if(o<s&&n.length<e.length){let a=t<=s&&t>=o?s-t:0;s-=a,l=s+(l-o),o=s}else if(l<s){let a=t<=s&&t>=l?s-t:0;s-=a,o=s+(o-l),l=s}return{from:s,toA:o,toB:l}}c(gf,"findDiff");function ym(n){let e=[];if(n.root.activeElement!=n.contentDOM)return e;let{anchorNode:t,anchorOffset:i,focusNode:r,focusOffset:s}=n.observer.selectionRange;return t&&(e.push(new Pr(t,i)),(r!=t||s!=i)&&e.push(new Pr(r,s))),e}c(ym,"selectionPoints");function bm(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?b.single(t+e,i+e):null}c(bm,"selectionFromPoints");function Tr(n,e){return e.head==n.main.head&&e.anchor==n.main.anchor}c(Tr,"sameSelPos");var Wo=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){!Pm(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 r of i.observers)r(this.view,t);for(let r of i.handlers){if(t.defaultPrevented)break;if(r(this.view,t)){t.preventDefault();break}}}}ensureHandlers(e){let t=xm(e),i=this.handlers,r=this.view.contentDOM;for(let s in t)if(s!="scroll"){let o=!t[s].handlers.length,l=i[s];l&&o!=!l.handlers.length&&(r.removeEventListener(s,this.handleEvent),l=null),l||r.addEventListener(s,this.handleEvent,{passive:o})}for(let s in i)s!="scroll"&&!t[s]&&r.removeEventListener(s,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&&yf.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&&!e.shiftKey&&((t=Sf.find(i=>i.keyCode==e.keyCode))&&!e.ctrlKey||Qm.indexOf(e.key)>-1&&e.ctrlKey)?(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 cc(n,e){return(t,i)=>{try{return e.call(n,i,t)}catch(r){fe(t.state,r)}}}c(cc,"bindHandler");function xm(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 r=i.spec,s=r&&r.plugin.domEventHandlers,o=r&&r.plugin.domEventObservers;if(s)for(let l in s){let a=s[l];a&&t(l).handlers.push(cc(i.value,a))}if(o)for(let l in o){let a=o[l];a&&t(l).observers.push(cc(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(xm,"computeHandlers");var Sf=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],Qm="dthko",yf=[16,17,18,20,91,92,224,225],lr=6;function ar(n){return Math.max(0,n)*.7+8}c(ar,"dragScrollSpeed");function wm(n,e){return Math.max(Math.abs(n.clientX-e.clientX),Math.abs(n.clientY-e.clientY))}c(wm,"dist");var Do=class{static{c(this,"MouseSelection")}constructor(e,t,i,r){this.view=e,this.startEvent=t,this.style=i,this.mustSelect=r,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=t,this.scrollParents=Wc(e.contentDOM),this.atoms=e.state.facet(yn).map(o=>o(e));let s=e.contentDOM.ownerDocument;s.addEventListener("mousemove",this.move=this.move.bind(this)),s.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=t.shiftKey,this.multiple=e.state.facet(G.allowMultipleSelections)&&km(e,t),this.dragging=vm(e,t)&&Qf(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,r=0,s=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:r,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:s,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=bl(this.view);e.clientX-a.left<=r+lr?t=-ar(r-e.clientX):e.clientX+a.right>=o-lr&&(t=ar(e.clientX-o)),e.clientY-a.top<=s+lr?i=-ar(s-e.clientY):e.clientY+a.bottom>=l-lr&&(i=ar(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=Of(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(Hc);return t.length?t[0](e):C.mac?e.metaKey:e.ctrlKey}c(km,"addsSelectionRange");function $m(n,e){let t=n.state.facet(Kc);return t.length?t[0](e):C.mac?!e.altKey:!e.ctrlKey}c($m,"dragMovesSelection");function vm(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 r=i.getRangeAt(0).getClientRects();for(let s=0;s<r.length;s++){let o=r[s];if(o.left<=e.clientX&&o.right>=e.clientX&&o.top<=e.clientY&&o.bottom>=e.clientY)return!0}return!1}c(vm,"isInPrimarySelection");function Pm(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(Pm,"eventBelongsToEditor");var He=Object.create(null),ke=Object.create(null),bf=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(),xf(n,t.value)},50)}c(Tm,"capturePaste");function Yr(n,e,t){for(let i of n.facet(e))t=i(t,n);return t}c(Yr,"textFilter");function xf(n,e){e=Yr(n.state,ml,e);let{state:t}=n,i,r=1,s=t.toText(e),o=s.lines==t.selection.ranges.length;if(Lo!=null&&t.selection.ranges.every(a=>a.empty)&&Lo==s.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?s.line(r++).text:e)+t.lineBreak);return{changes:{from:f.from,insert:u},range:b.cursor(h.from+u.length)}})}else o?i=t.changeByRange(a=>{let h=s.line(r++);return{changes:{from:a.from,to:a.to,insert:h.text},range:b.cursor(a.from+h.length)}}):i=t.replaceSelection(s);n.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}c(xf,"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(Jc))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 Do(n,e,t,i)),i&&n.observer.ignore(()=>{Dc(n.contentDOM);let s=n.root.activeElement;s&&!s.contains(n.contentDOM)&&s.blur()});let r=n.inputState.mouseSelection;if(r)return r.start(e),r.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function fc(n,e,t,i){if(i==1)return b.cursor(e,t);if(i==2)return fm(n.state,e,t);{let r=n.docView.lineAt(e,t),s=n.state.doc.lineAt(r?r.posAtEnd:e),o=r?r.posAtStart:s.from,l=r?r.posAtEnd:s.to;return l<n.state.doc.length&&l==s.to&&l++,b.range(o,l)}}c(fc,"rangeForClick");var Cm=C.ie&&C.ie_version<=11,uc=null,dc=0,Oc=0;function Qf(n){if(!Cm)return n.detail;let e=uc,t=Oc;return uc=n,Oc=Date.now(),dc=!e||t>Date.now()-400&&Math.abs(e.clientX-n.clientX)<2&&Math.abs(e.clientY-n.clientY)<2?(dc+1)%3:1}c(Qf,"getClickType");function Zm(n,e){let t=n.posAndSideAtCoords({x:e.clientX,y:e.clientY},!1),i=Qf(e),r=n.state.selection;return{update(s){s.docChanged&&(t.pos=s.changes.mapPos(t.pos),r=r.map(s.changes))},get(s,o,l){let a=n.posAndSideAtCoords({x:s.clientX,y:s.clientY},!1),h,f=fc(n,a.pos,a.assoc,i);if(t.pos!=a.pos&&!o){let u=fc(n,t.pos,t.assoc,i),d=Math.min(u.from,f.from),O=Math.max(u.to,f.to);f=d<f.from?b.range(d,O,f.assoc):b.range(O,d,f.assoc)}return o?r.replaceRange(r.main.extend(f.from,f.to,f.assoc)):l&&i==1&&r.ranges.length>1&&(h=Xm(r,a.pos))?h:l?r.addRange(f):b.create([f])}}}c(Zm,"basicMouseSelection");function Xm(n,e){for(let t=0;t<n.ranges.length;t++){let{from:i,to:r}=n.ranges[t];if(i<=e&&r>=e)return b.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(Xm,"removeRangeAround");He.dragstart=(n,e)=>{let{selection:{main:t}}=n.state;if(e.target.draggable){let r=n.docView.tile.nearest(e.target);if(r&&r.isWidget()){let s=r.posAtStart,o=s+r.length;(s>=t.to||o<=t.from)&&(t=b.range(s,o))}}let{inputState:i}=n;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=t,e.dataTransfer&&(e.dataTransfer.setData("Text",Yr(n.state,gl,n.state.sliceDoc(t.from,t.to))),e.dataTransfer.effectAllowed="copyMove"),!1};He.dragend=n=>(n.inputState.draggedContent=null,!1);function pc(n,e,t,i){if(t=Yr(n.state,ml,t),!t)return;let r=n.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:s}=n.inputState,o=i&&s&&$m(n,e)?{from:s.from,to:s.to}:null,l={from:r,insert:t},a=n.state.changes(o?[o,l]:l);n.focus(),n.dispatch({changes:a,selection:{anchor:a.mapPos(r,-1),head:a.mapPos(r,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}c(pc,"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),r=0,s=c(()=>{++r==t.length&&pc(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=s,l.onload=()=>{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),s()},l.readAsText(t[o])}return!0}else{let i=e.dataTransfer.getData("Text");if(i)return pc(n,e,i,!0),!0}return!1};He.paste=(n,e)=>{if(n.state.readOnly)return!0;n.observer.flush();let t=bf?null:e.clipboardData;return t?(xf(n,t.getData("text/plain")||t.getData("text/uri-list")),!0):(Tm(n),!1)};function Am(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(Am,"captureCopy");function Rm(n){let e=[],t=[],i=!1;for(let r of n.selection.ranges)r.empty||(e.push(n.sliceDoc(r.from,r.to)),t.push(r));if(!e.length){let r=-1;for(let{from:s}of n.selection.ranges){let o=n.doc.lineAt(s);o.number>r&&(e.push(o.text),t.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),r=o.number}i=!0}return{text:Yr(n,gl,e.join(n.lineBreak)),ranges:t,linewise:i}}c(Rm,"copiedRange");var Lo=null;He.copy=He.cut=(n,e)=>{if(!on(n.contentDOM,n.observer.selectionRange))return!1;let{text:t,ranges:i,linewise:r}=Rm(n.state);if(!t&&!r)return!1;Lo=r?t:null,e.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let s=bf?null:e.clipboardData;return s?(s.clearData(),s.setData("text/plain",t),!0):(Am(n,t),!1)};var wf=Qe.define();function kf(n,e){let t=[];for(let i of n.facet(nf)){let r=i(n,e);r&&t.push(r)}return t.length?n.update({effects:t,annotations:wf.of(!0)}):null}c(kf,"focusChangeTransaction");function $f(n){setTimeout(()=>{let e=n.hasFocus;if(e!=n.inputState.notifiedFocused){let t=kf(n.state,e);t?n.dispatch(t):n.update([])}},10)}c($f,"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),$f(n)};ke.blur=n=>{n.observer.clearSelectionRange(),$f(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 s=(t=e.dataTransfer)===null||t===void 0?void 0:t.getData("text/plain"),o=e.getTargetRanges();if(s&&o.length){let l=o[0],a=n.posAtDOM(l.startContainer,l.startOffset),h=n.posAtDOM(l.endContainer,l.endOffset);return xl(n,{from:a,to:h,insert:n.state.toText(s)},null),!0}}let r;if(C.chrome&&C.android&&(r=Sf.find(s=>s.inputType==e.inputType))&&(n.observer.delayAndroidKey(r.key,r.keyCode),r.key=="Backspace"||r.key=="Delete")){let s=((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)>s+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 mc=new Set;function Mm(n){mc.has(n)||(mc.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}c(Mm,"firefoxCopyCutHack");var gc=["pre-wrap","normal","pre-line","break-spaces"],Ci=!1;function Sc(){Ci=!1}c(Sc,"clearHeightChangeFlag");var qo=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 gc.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let t=!1;for(let i=0;i<e.length;i++){let r=e[i];r<0?i++:this.heightSamples[Math.floor(r*10)]||(t=!0,this.heightSamples[Math.floor(r*10)]=!0)}return t}refresh(e,t,i,r,s,o){let l=gc.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=r,this.lineLength=s,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,r,s){this.from=e,this.length=t,this.top=i,this.height=r,this._content=s}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={})),mr=.001,Ae=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)>mr&&(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,r){let s=this,o=i.doc;for(let l=r.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:f,toB:u}=r[l],d=s.lineAt(a,K.ByPosNoHeight,i.setDoc(t),0,0),O=d.to>=h?d:s.lineAt(h,K.ByPosNoHeight,i,0,0);for(u+=O.to-h,h=O.to;l>0&&d.from<=r[l-1].toA;)a=r[l-1].fromA,f=r[l-1].fromB,l--,a<d.from&&(d=s.lineAt(a,K.ByPosNoHeight,i,0,0));f+=d.from-a,a=d.from;let p=No.build(i.setDoc(o),e,f,u);s=Cr(s,s.replace(a,h,p))}return s.updateHeight(i,0)}static empty(){return new qe(0,0,0)}static of(e){if(e.length==1)return e[0];let t=0,i=e.length,r=0,s=0;for(;;)if(t==i)if(r>s*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,r-=l.size}else if(s>r*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,s-=l.size}else break;else if(r<s){let l=e[t++];l&&(r+=l.size)}else{let l=e[--i];l&&(s+=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 Cr(n,e){return n==e?n:(n.constructor!=e.constructor&&(Ci=!0),e)}c(Cr,"replace");Ae.prototype.size=1;var jm=X.replace({}),Zr=class extends Ae{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,r){return this.spaceAbove&&e<i+this.spaceAbove?new Ue(r,0,i,this.spaceAbove,jm):this.mainBlock(i,r)}lineAt(e,t,i,r,s){let o=this.mainBlock(r,s);return this.spaceAbove?this.blockAt(0,i,r,s).join(o):o}forEachLine(e,t,i,r,s,o){e<=s+this.length&&t>=s&&o(this.lineAt(0,K.ByPos,i,r,s))}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,r){return r&&r.from<=t&&r.more&&this.setMeasuredHeight(r),this.outdated=!1,this}toString(){return`block(${this.length})`}},qe=class n extends Zr{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 r=i[0];return i.length==1&&(r instanceof n||r instanceof kt&&r.flags&4)&&Math.abs(this.length-r.length)<10?(r instanceof kt?r=new n(r.length,this.height,this.spaceAbove):r.height=this.height,this.outdated||(r.outdated=!1),r):Ae.of(i)}updateHeight(e,t=0,i=!1,r){return r&&r.from<=t&&r.more?this.setMeasuredHeight(r):(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 Ae{static{c(this,"HeightMapGap")}constructor(e){super(e,0)}heightMetrics(e,t){let i=e.doc.lineAt(t).number,r=e.doc.lineAt(t+this.length).number,s=r-i+1,o,l=0;if(e.lineWrapping){let a=Math.min(this.height,e.lineHeight*s);o=a/s,this.length>s+1&&(l=(this.height-a)/(this.length-s-1))}else o=this.height/s;return{firstLine:i,lastLine:r,perLine:o,perChar:l}}blockAt(e,t,i,r){let{firstLine:s,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(t,r);if(t.lineWrapping){let h=r+(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-s,Math.floor((e-i)/l))),{from:f,length:u}=t.doc.line(s+h);return new Ue(f,u,i+l*h,l,0)}}lineAt(e,t,i,r,s){if(t==K.ByHeight)return this.blockAt(e,i,r,s);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,s),h=i.doc.lineAt(e),f=l+h.length*a,u=h.number-o,d=r+l*u+a*(h.from-s-u);return new Ue(h.from,h.length,Math.max(r,Math.min(d,r+this.height-f)),f,0)}forEachLine(e,t,i,r,s,o){e=Math.max(e,s),t=Math.min(t,s+this.length);let{firstLine:l,perLine:a,perChar:h}=this.heightMetrics(i,s);for(let f=e,u=r;f<=t;){let d=i.doc.lineAt(f);if(f==e){let p=d.number-l;u+=a*p+h*(e-s-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 r=this.length-t;if(r>0){let s=i[i.length-1];s instanceof n?i[i.length-1]=new n(s.length+r):i.push(null,new n(r-1))}if(e>0){let s=i[0];s instanceof n?i[0]=new n(e+s.length):i.unshift(new n(e-1),null)}return Ae.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,r){let s=t+this.length;if(r&&r.from<=t+this.length&&r.more){let o=[],l=Math.max(t,r.from),a=-1;for(r.from>t&&o.push(new n(r.from-t-1).updateHeight(e,t));l<=s&&r.more;){let f=e.doc.lineAt(l).length;o.length&&o.push(null);let u=r.heights[r.index++],d=0;u<0&&(d=-u,u=r.heights[r.index++]),a==-1?a=u:Math.abs(u-a)>=mr&&(a=-2);let O=new qe(f,u,d);O.outdated=!1,o.push(O),l+=f+1}l<=s&&o.push(null,new n(s-l).updateHeight(e,l));let h=Ae.of(o);return(a<0||Math.abs(h.height-this.height)>=mr||Math.abs(a-this.heightMetrics(e,t).perLine)>=mr)&&(Ci=!0),Cr(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 Ae{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,r){let s=i+this.left.height;return e<s?this.left.blockAt(e,t,i,r):this.right.blockAt(e,t,s,r+this.left.length+this.break)}lineAt(e,t,i,r,s){let o=r+this.left.height,l=s+this.left.length+this.break,a=t==K.ByHeight?e<o:e<l,h=a?this.left.lineAt(e,t,i,r,s):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,r,s).join(h)}forEachLine(e,t,i,r,s,o){let l=r+this.left.height,a=s+this.left.length+this.break;if(this.break)e<a&&this.left.forEachLine(e,t,i,r,s,o),t>=a&&this.right.forEachLine(e,t,i,l,a,o);else{let h=this.lineAt(a,K.ByPos,i,r,s);e<h.from&&this.left.forEachLine(e,h.from-1,i,r,s,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 r=this.left.length+this.break;if(t<r)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-r,t-r,i));let s=[];e>0&&this.decomposeLeft(e,s);let o=s.length;for(let l of i)s.push(l);if(e>0&&yc(s,o-1),t<this.length){let l=s.length;this.decomposeRight(t,s),yc(s,l)}return Ae.of(s)}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,r=i+this.break;if(e>=r)return this.right.decomposeRight(e-r,t);e<i&&this.left.decomposeRight(e,t),this.break&&e<r&&t.push(null),t.push(this.right)}balanced(e,t){return e.size>2*t.size||t.size>2*e.size?Ae.of(this.break?[e,null,t]:[e,t]):(this.left=Cr(this.left,e),this.right=Cr(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,r){let{left:s,right:o}=this,l=t+s.length+this.break,a=null;return r&&r.from<=t+s.length&&r.more?a=s=s.updateHeight(e,t,i,r):s.updateHeight(e,t,i),r&&r.from<=l+o.length&&r.more?a=o=o.updateHeight(e,l,i,r):o.updateHeight(e,l,i),a?this.balanced(s,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function yc(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(yc,"mergeGaps");var Em=5,No=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),r=this.nodes[this.nodes.length-1];r instanceof qe?r.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new qe(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 r=i.widget?i.widget.estimatedHeight:0,s=i.widget?i.widget.lineBreaks:0;r<0&&(r=this.oracle.lineHeight);let o=t-e;i.block?this.addBlock(new Zr(o,r,i)):(o||s||r>=Em)&&this.addLineDeco(r,s,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 qe(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 qe)return e;let t=new qe(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 r=this.ensureLine();r.length+=i,r.collapsed+=i,r.widgetHeight=Math.max(r.widgetHeight,e),r.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 qe)&&!this.isCovered?this.nodes.push(new qe(0,-1,0)):(this.writtenTo<this.pos||t==null)&&this.nodes.push(this.blankContent(this.writtenTo,this.pos));let i=e;for(let r of this.nodes)r instanceof qe&&r.updateHeight(this.oracle,i),i+=r?r.length:1;return this.nodes}static build(e,t,i,r){let s=new n(i,e);return Y.spans(t,i,r,s,0),s.finish(i)}};function zm(n,e,t){let i=new Go;return Y.compare(n,e,t,i,0),i.changes}c(zm,"heightRelevantDecoChanges");var Go=class{static{c(this,"DecorationComparator")}constructor(){this.changes=[]}compareRange(){}comparePoint(e,t,i,r){(e<t||i&&i.heightRelevant||r&&r.heightRelevant)&&wi(e,t,this.changes,5)}};function Vm(n,e){let t=n.getBoundingClientRect(),i=n.ownerDocument,r=i.defaultView||window,s=Math.max(0,t.left),o=Math.min(r.innerWidth,t.right),l=Math.max(0,t.top),a=Math.min(r.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();s=Math.max(s,d.left),o=Math.min(o,d.right),l=Math.max(l,d.top),a=Math.min(h==n.parentNode?r.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:s-t.left,right:Math.max(s,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 Ym(n,e){let t=n.getBoundingClientRect();return{left:0,right:t.right-t.left,top:e,bottom:t.bottom-(t.top+e)}}c(Ym,"fullPixelRange");var un=class{static{c(this,"LineGap")}constructor(e,t,i,r){this.from=e,this.to=t,this.size=i,this.displaySize=r}static same(e,t){if(e.length!=t.length)return!1;for(let i=0;i<e.length;i++){let r=e[i],s=t[i];if(r.from!=s.from||r.to!=s.to||r.size!=s.size)return!1}return!0}draw(e,t){return X.replace({widget:new Uo(this.displaySize*(t?e.scaleY:e.scaleX),t)}).range(this.from,this.to)}},Uo=class extends be{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}},Xr=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=bc,this.scrollTarget=null,this.printing=!1,this.mustMeasureContent=!0,this.defaultTextDirection=q.LTR,this.visibleRanges=[],this.mustEnforceCursorAssoc=!1;let i=t.facet(Sl).some(r=>typeof r!="function"&&r.class=="cm-lineWrapping");this.heightOracle=new qo(i),this.stateDeco=xc(t),this.heightMap=Ae.empty().applyChanges(this.stateDeco,V.empty,this.heightOracle.setDoc(t.doc),[new Fe(0,0,0,t.doc.length)]);for(let r=0;r<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());r++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=X.set(this.lineGaps.map(r=>r.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 r=i?t.head:t.anchor;if(!e.some(({from:s,to:o})=>r>=s&&r<=o)){let{from:s,to:o}=this.lineBlockAt(r);e.push(new bi(s,o))}}return this.viewports=e.sort((i,r)=>i.from-r.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?bc:new Fo(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(rn(e,this.scaler))})}update(e,t=null){this.state=e.state;let i=this.stateDeco;this.stateDeco=xc(this.state);let r=e.changedRanges,s=Fe.extendWithRanges(r,zm(i,this.stateDeco,e?e.changes:Se.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);Sc(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),s),(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=s.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),r=this.heightOracle,s=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?q.RTL:q.LTR;let o=this.heightOracle.mustRefreshForWrapping(s)||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}=Yc(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&&(r.lineWrapping&&(a=!0),this.editorWidth=e.scrollDOM.clientWidth,h|=16);let O=Wc(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=Lc(this.scrollParent||e.win);let m=(this.printing?Ym:Vm)(t,this.paddingTop),g=m.top-this.pixelViewport.top,y=m.bottom-this.pixelViewport.bottom;this.pixelViewport=m;let x=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(x!=this.inView&&(this.inView=x,x&&(a=!0)),!this.inView&&!this.scrollTarget&&!_m(e.dom))return 0;let Q=l.width;if((this.contentDOMWidth!=Q||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(r.mustRefreshForHeights(w)&&(o=!0),o||r.lineWrapping&&Math.abs(Q-this.contentDOMWidth)>r.charWidth){let{lineHeight:k,charWidth:$,textHeight:E}=e.docView.measureTextSize();o=k>0&&r.refresh(s,k,$,E,Math.max(5,Q/$),w),o&&(e.docView.minWidth=0,h|=16)}g>0&&y>0?f=Math.max(g,y):g<0&&y<0&&(f=Math.min(g,y)),Sc();for(let k of this.viewports){let $=k.from==this.viewport.from?w:e.docView.measureVisibleLineHeights(k);this.heightMap=(o?Ae.empty().applyChanges(this.stateDeco,V.empty,this.heightOracle,[new Fe(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(r,0,o,new Bo(k.from,$))}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)),r=this.heightMap,s=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new bi(r.lineAt(o-i*1e3,K.ByHeight,s,0,0).from,r.lineAt(l+(1-i)*1e3,K.ByHeight,s,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=r.lineAt(h,K.ByPos,s,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 bi(r.lineAt(d-1e3/2,K.ByHeight,s,0,0).from,r.lineAt(d+f+1e3/2,K.ByHeight,s,0,0).to)}}return a}mapViewport(e,t){let i=t.mapPos(e.from,-1),r=t.mapPos(e.to,1);return new bi(this.heightMap.lineAt(i,K.ByPos,this.heightOracle,0,0).from,this.heightMap.lineAt(r,K.ByPos,this.heightOracle,0,0).to)}viewportIsAppropriate({from:e,to:t},i=0){if(!this.inView)return!0;let{top:r}=this.heightMap.lineAt(e,K.ByPos,this.heightOracle,0,0),{bottom:s}=this.heightMap.lineAt(t,K.ByPos,this.heightOracle,0,0),{visibleTop:o,visibleBottom:l}=this;return(e==0||r<=o-Math.max(10,Math.min(-i,250)))&&(t==this.state.doc.length||s>=l+Math.max(10,Math.min(i,250)))&&r>o-2*1e3&&s<l+2*1e3}mapLineGaps(e,t){if(!e.length||t.empty)return e;let i=[];for(let r of e)t.touchesRange(r.from,r.to)||i.push(new un(t.mapPos(r.from),t.mapPos(r.to),r.size,r.displaySize));return i}ensureLineGaps(e,t){let i=this.heightOracle.lineWrapping,r=i?1e4:2e3,s=r>>1,o=r<<1;if(this.defaultTextDirection!=q.LTR&&!i)return[];let l=[],a=c((f,u,d,O)=>{if(u-f<s)return;let p=this.state.selection.main,m=[p.from];p.empty||m.push(p.to);for(let y of m)if(y>f&&y<u){a(f,y-10,d,O),a(y+10,u,d,O);return}let g=Dm(e,y=>y.from>=d.from&&y.to<=d.to&&Math.abs(y.from-f)<s&&Math.abs(y.to-u)<s&&!m.some(x=>y.from<x&&y.to>x));if(!g){if(u<d.to&&t&&i&&t.visibleRanges.some(Q=>Q.from<=u&&Q.to>=u)){let Q=t.moveToLineBoundary(b.cursor(u),!1,!0).head;Q>f&&(u=Q)}let y=this.gapSize(d,f,u,O),x=i||y<2e6?y:2e6;g=new un(f,u,y,x)}l.push(g)},"addGap"),h=c(f=>{if(f.length<o||f.type!=ue.Text)return;let u=Wm(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=r/this.heightOracle.lineLength*this.heightOracle.lineHeight,g,y;if(d!=null){let x=cr(u,d),Q=((this.visibleBottom-this.visibleTop)/2+m)/f.height;g=x-Q,y=x+Q}else g=(this.visibleTop-f.top-m)/f.height,y=(this.visibleBottom-f.top+m)/f.height;O=hr(u,g),p=hr(u,y)}else{let m=u.total*this.heightOracle.charWidth,g=r*this.heightOracle.charWidth,y=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+y<this.pixelViewport.left&&(y=k.size-k.displaySize);let x=this.pixelViewport.left+y,Q=this.pixelViewport.right+y,Z,w;if(d!=null){let k=cr(u,d),$=((Q-x)/2+g)/m;Z=k-$,w=k+$}else Z=(x-g)/m,w=(Q+g)/m;O=hr(u,Z),p=hr(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,r){let s=cr(r,i)-cr(r,t);return this.heightOracle.lineWrapping?e.height*s:r.total*this.heightOracle.charWidth*s}updateLineGaps(e){un.same(e,this.lineGaps)||(this.lineGaps=e,this.lineGapDeco=X.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=[];Y.spans(t,this.viewport.from,this.viewport.to,{span(s,o){i.push({from:s,to:o})},point(){}},20);let r=0;if(i.length!=this.visibleRanges.length)r=12;else for(let s=0;s<i.length&&!(r&8);s++){let o=this.visibleRanges[s],l=i[s];(o.from!=l.from||o.to!=l.to)&&(r|=4,e&&e.mapPos(o.from,-1)==l.from&&e.mapPos(o.to,1)==l.to||(r|=8))}return this.visibleRanges=i,r}lineBlockAt(e){return e>=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(t=>t.from<=e&&t.to>=e)||rn(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)||rn(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 rn(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}},bi=class{static{c(this,"Viewport")}constructor(e,t){this.from=e,this.to=t}};function Wm(n,e,t){let i=[],r=n,s=0;return Y.spans(t,n,e,{span(){},point(o,l){o>r&&(i.push({from:r,to:o}),s+=o-r),r=l}},20),r<e&&(i.push({from:r,to:e}),s+=e-r),{total:s,ranges:i}}c(Wm,"lineStructure");function hr({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 r=0;;r++){let{from:s,to:o}=e[r],l=o-s;if(i<=l)return s+i;i-=l}}c(hr,"findPosition");function cr(n,e){let t=0;for(let{from:i,to:r}of n.ranges){if(e<=r){t+=e-i;break}t+=r-i}return t/n.total}c(cr,"findFraction");function Dm(n,e){for(let t of n)if(e(t))return t}c(Dm,"find");var bc={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};function xc(n){let e=n.facet(_r).filter(i=>typeof i!="function"),t=n.facet(yl).filter(i=>typeof i!="function");return t.length&&e.push(Y.join(t)),e}c(xc,"staticDeco");var Fo=class n{static{c(this,"BigScaler")}constructor(e,t,i){let r=0,s=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 r+=f-h,{from:l,to:a,top:h,bottom:f,domTop:0,domBottom:0}}),this.scale=(7e6-r)/(t.height-r);for(let l of this.viewports)l.domTop=o+(l.top-s)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),s=l.bottom}toDOM(e){for(let t=0,i=0,r=0;;t++){let s=t<this.viewports.length?this.viewports[t]:null;if(!s||e<s.top)return r+(e-i)*this.scale;if(e<=s.bottom)return s.domTop+(e-s.top);i=s.bottom,r=s.domBottom}}fromDOM(e){for(let t=0,i=0,r=0;;t++){let s=t<this.viewports.length?this.viewports[t]:null;if(!s||e<s.domTop)return i+(e-r)/this.scale;if(e<=s.domBottom)return s.top+(e-s.domTop);i=s.bottom,r=s.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 rn(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(r=>rn(r,e)):n._content)}c(rn,"scaleBlock");var fr=P.define({combine:c(n=>n.join(" "),"combine")}),Ho=P.define({combine:c(n=>n.indexOf(!0)>-1,"combine")}),Ko=Le.newName(),vf=Le.newName(),Pf=Le.newName(),Tf={"&light":"."+vf,"&dark":"."+Pf};function Jo(n,e,t){return new Le(e,{finish(i){return/&/.test(i)?i.replace(/&\w*/,r=>{if(r=="&")return n;if(!t||!t[r])throw new RangeError(`Unsupported selector: ${r}`);return t[r]}):n+" "+i}})}c(Jo,"buildTheme");var Lm=Jo("."+Ko,{"&":{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"}},Tf),qm={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},uo=C.ie&&C.ie_version<=11,el=class{static{c(this,"DOMObserver")}constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new wo,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 tl(e),e.state.facet(pt)&&(e.contentDOM.editContext=this.editContext.editContext)),uo&&(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,r=this.selectionRange;if(i.state.facet(pt)?i.root.activeElement!=this.dom:!on(this.dom,r))return;let s=r.anchorNode&&i.docView.tile.nearest(r.anchorNode);if(s&&s.isWidget()&&s.widget.ignoreEvent(e)){t||(this.selectionChanged=!1);return}(C.ie&&C.ie_version<=11||C.android&&C.chrome)&&!i.state.selection.main.empty&&r.focusNode&&ln(r.focusNode,r.focusOffset,r.anchorNode,r.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&&Bm(this.view,t)||t;if(!i||this.selectionRange.eq(i))return!1;let r=on(this.dom,i);return r&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime<Date.now()-300&&Yp(this.dom,i)?(this.view.inputState.lastFocusTime=0,e.docView.updateSelection(),!1):(this.selectionRange.setRange(i),r&&(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,qm),uo&&this.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.active=!0)}stop(){this.active&&(this.active=!1,this.observer.disconnect(),uo&&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 r=c(()=>{let s=this.delayedAndroidKey;s&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=s.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&s.force&&ki(this.dom,s.key,s.keyCode))},"flush");this.flushingAndroidKey=this.view.win.requestAnimationFrame(r)}(!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,r=!1;for(let s of e){let o=this.readMutation(s);o&&(o.typeOver&&(r=!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:r}}readChange(){let{from:e,to:t,typeOver:i}=this.processRecords(),r=this.selectionChanged&&on(this.dom,this.selectionRange);if(e<0&&!r)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let s=new Yo(this.view,e,t,i);return this.view.docView.domChanged={newSel:s.newSel?s.newSel.main:null},s}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,r=mf(this.view,t);return this.view.state==i&&(t.domChanged||t.newSel&&!Tr(this.view.state.selection,t.newSel.main))&&this.view.update([]),r}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=Qc(t,e.previousSibling||e.target.previousSibling,-1),r=Qc(t,e.nextSibling||e.target.nextSibling,1);return{from:i?t.posAfter(i):t.posAtStart,to:r?t.posBefore(r):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 r of this.scrollTargets)r.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 Qc(n,e,t){for(;e;){let i=ee.get(e);if(i&&i.parent==n)return i;let r=e.parentNode;e=r!=n.dom?r:t>0?e.nextSibling:e.previousSibling}return null}c(Qc,"findChild");function wc(n,e){let t=e.startContainer,i=e.startOffset,r=e.endContainer,s=e.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor,1);return ln(o.node,o.offset,r,s)&&([t,i,r,s]=[r,s,t,i]),{anchorNode:t,anchorOffset:i,focusNode:r,focusOffset:s}}c(wc,"buildSelectionRangeFromRange");function Bm(n,e){if(e.getComposedRanges){let r=e.getComposedRanges(n.root)[0];if(r)return wc(n,r)}let t=null;function i(r){r.preventDefault(),r.stopImmediatePropagation(),t=r.getTargetRanges()[0]}return c(i,"read"),n.contentDOM.addEventListener("beforeinput",i,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",i,!0),t?wc(n,t):null}c(Bm,"safariSelectionRangeHack");var tl=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 r=e.state.selection.main,{anchor:s,head:o}=r,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&&s<this.from?l=s:a==this.to&&s>this.to&&(a=s);let f=gf(e.state.sliceDoc(l,a),i.text,(h?r.from:r.to)-l,h?"end":null);if(!f){let d=b.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));Tr(d,r)||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);xl(e,u,b.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 r=[],s=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o<l;o++){let a=e.coordsForChar(o);s=a&&new DOMRect(a.left,a.top,a.right-a.left,a.bottom-a.top)||s||new DOMRect,r.push(s)}t.updateCharacterBounds(i.rangeStart,r)},this.handlers.textformatupdate=i=>{let r=[];for(let s of i.getTextFormats()){let o=s.underlineStyle,l=s.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(s.rangeStart),h=this.toEditorPos(s.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`;r.push(X.mark({attributes:{style:f}}).range(a,h))}}}e.dispatch({effects:lf.of(X.set(r))})},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 r=gn(i.root);r&&r.rangeCount&&this.editContext.updateSelectionBounds(r.getRangeAt(0).getBoundingClientRect())},"read")}}applyEdits(e){let t=0,i=!1,r=this.pendingContextChange;return e.changes.iterChanges((s,o,l,a,h)=>{if(i)return;let f=h.length-(o-s);if(r&&o>=r.to)if(r.from==s&&r.to==o&&r.insert.eq(h)){r=this.pendingContextChange=null,t+=f,this.to+=f;return}else r=null,this.revertPending(e.state);if(s+=t,o+=t,o<=this.from)this.from+=f,this.to+=f;else if(s<this.to){if(s<this.from||o>this.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(s),this.toContextPos(o),h.toString()),this.to+=f}t+=f}),r&&!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(r=>!r.isUserEvent("input.type")&&r.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))),r=this.toContextPos(t.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=r)&&this.editContext.updateSelection(i,r)}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])}},v=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&&(r=>r.forEach(s=>i(s,this)))||(r=>this.update(r)),this.dispatch=this.dispatch.bind(this),this._root=e.root||_p(e.parent)||document,this.viewState=new Xr(this,e.state||G.create(e)),e.scrollTo&&e.scrollTo.is(or)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(yi).map(r=>new hn(r));for(let r of this.plugins)r.update(this);this.observer=new el(this),this.inputState=new Wo(this),this.inputState.ensureHandlers(this.plugins),this.docView=new vr(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 re?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,r,s=this.state;for(let d of e){if(d.startState!=s)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");s=d.state}if(this.destroyed){this.viewState.state=s;return}let o=this.hasFocus,l=0,a=null;e.some(d=>d.annotation(wf))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=kf(s,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(s.doc)||!this.state.selection.eq(s.selection))&&(f=null)):this.observer.clear(),s.facet(G.phrases)!=this.state.facet(G.phrases))return this.setState(s);r=kr.create(this,s,e),r.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,{x:p,y:m}=this.state.facet(n.cursorScrollMargin);u=new an(O.empty?O:b.cursor(O.head,O.head>O.anchor?-1:1),"nearest","nearest",m,p)}for(let O of d.effects)O.is(or)&&(u=O.value.clip(this.state))}this.viewState.update(r,u),this.bidiCache=Ar.update(this.bidiCache,r.changes),r.empty||(this.updatePlugins(r),this.inputState.update(r)),t=this.docView.update(r),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(r.startState.facet(fr)!=r.state.facet(fr)&&(this.viewState.mustMeasureContent=!0),(t||i||u||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),t&&this.docViewUpdate(),!r.empty)for(let d of this.state.facet(Po))try{d(r)}catch(O){fe(this.state,O,"update listener")}(a||f)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),f&&!mf(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 Xr(this,e),this.plugins=e.facet(yi).map(i=>new hn(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new vr(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(yi),i=e.state.facet(yi);if(t!=i){let r=[];for(let s of i){let o=t.indexOf(s);if(o<0)r.push(new hn(s));else{let l=this.plugins[o];l.mustUpdate=e,r.push(l)}}for(let s of this.plugins)s.mustUpdate!=e&&s.destroy(this);this.plugins=r,this.pluginMap.clear()}else for(let r of this.plugins)r.mustUpdate=e;for(let r=0;r<this.plugins.length;r++)this.plugins[r].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,r=this.viewState.getScrollOffset(),{scrollAnchorPos:s,scrollAnchorHeight:o}=this.viewState;Math.abs(r-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(Lc(i||this.win))s=-1,o=this.viewState.heightMap.height;else{let O=this.viewState.scrollAnchorAt(r);s=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),kc}}),u=kr.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]!=kc)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=((s<0?this.viewState.heightMap.height:this.viewState.lineBlockAt(s).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)){r=r+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 Ko+" "+(this.state.facet(Ho)?Pf:vf)+" "+this.state.facet(fr)}updateAttrs(){let e=$c(this,af,{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"),$c(this,Sl,t);let i=this.observer.ignore(()=>{let r=nc(this.contentDOM,this.contentAttrs,t),s=nc(this.dom,this.editorAttrs,e);return r||s});return this.editorAttrs=e,this.contentAttrs=t,i}showAnnouncements(e){let t=!0;for(let i of e)for(let r of i.effects)if(r.is(n.announce)){t&&(this.announceDOM.textContent=""),t=!1;let s=this.announceDOM.appendChild(document.createElement("div"));s.textContent=r.value}}mountStyles(){this.styleModules=this.state.facet(nn);let e=this.state.facet(n.cspNonce);Le.mount(this.root,this.styleModules.concat(Lm).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 fo(this,e,hc(this,e,t,i))}moveByGroup(e,t){return fo(this,e,hc(this,e,t,i=>Om(this,e.head,i)))}visualLineSide(e,t){let i=this.bidiSpans(e),r=this.textDirectionAt(e.from),s=i[t?i.length-1:0];return b.cursor(s.side(t,r)+e.from,s.forward(!t,r)?1:-1)}moveToLineBoundary(e,t,i=!0){return dm(this,e,t,i)}moveVertically(e,t,i){return fo(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 r=this.state.doc.lineAt(e),s=this.bidiSpans(r),o=s[Ie.find(s,e-r.from,-1,t)];return wr(i,o.dir==q.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(rf)||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>Im)return Uc(e.length);let t=this.textDirectionAt(e.from),i;for(let s of this.bidiCache)if(s.from==e.from&&s.dir==t&&(s.fresh||Gc(s.isolates,i=oc(this,e))))return s.order;i||(i=oc(this,e));let r=Np(e.text,t,i);return this.bidiCache.push(new Ar(e.from,e.to,t,i,!0,r)),r}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(()=>{Dc(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={}){var i,r,s,o;return or.of(new an(typeof e=="number"?b.cursor(e):e,(i=t.y)!==null&&i!==void 0?i:"nearest",(r=t.x)!==null&&r!==void 0?r:"nearest",(s=t.yMargin)!==null&&s!==void 0?s:5,(o=t.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:e,scrollLeft:t}=this.scrollDOM,i=this.viewState.scrollAnchorAt(e);return or.of(new an(b.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=Le.newName(),r=[fr.of(i),nn.of(Jo(`.${i}`,e))];return t&&t.dark&&r.push(Ho.of(!0)),r}static baseTheme(e){return De.lowest(nn.of(Jo("."+Ko,e,Tf)))}static findFromDOM(e){var t;let i=e.querySelector(".cm-content"),r=i&&ee.get(i)||ee.get(e);return((t=r?.root)===null||t===void 0?void 0:t.view)||null}};v.styleModule=nn;v.inputHandler=tf;v.clipboardInputFilter=ml;v.clipboardOutputFilter=gl;v.scrollHandler=of;v.focusChangeEffect=nf;v.perLineTextDirection=rf;v.exceptionSink=ef;v.updateListener=Po;v.editable=pt;v.mouseSelectionStyle=Jc;v.dragMovesSelection=Kc;v.clickAddsSelectionRange=Hc;v.decorations=_r;v.blockWrappers=hf;v.outerDecorations=yl;v.atomicRanges=yn;v.bidiIsolatedRanges=cf;v.cursorScrollMargin=P.define({combine:c(n=>{let e=5,t=5;for(let i of n)typeof i=="number"?e=t=i:{x:e,y:t}=i;return{x:e,y:t}},"combine")});v.scrollMargins=ff;v.darkTheme=Ho;v.cspNonce=P.define({combine:c(n=>n.length?n[0]:"","combine")});v.contentAttributes=Sl;v.editorAttributes=af;v.lineWrapping=v.contentAttributes.of({class:"cm-lineWrapping"});v.announce=R.define();var Im=4096,kc={},Ar=class n{static{c(this,"CachedOrder")}constructor(e,t,i,r,s,o){this.from=e,this.to=t,this.dir=i,this.isolates=r,this.fresh=s,this.order=o}static update(e,t){if(t.empty&&!e.some(s=>s.fresh))return e;let i=[],r=e.length?e[e.length-1].dir:q.LTR;for(let s=Math.max(0,e.length-10);s<e.length;s++){let o=e[s];o.dir==r&&!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 $c(n,e,t){for(let i=n.state.facet(e),r=i.length-1;r>=0;r--){let s=i[r],o=typeof s=="function"?s(n):s;o&&dl(o,t)}return t}c($c,"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 r,s,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))r=!0;else if(/^(c|ctrl|control)$/i.test(h))s=!0;else if(/^s(hift)?$/i.test(h))o=!0;else if(/^mod$/i.test(h))e=="mac"?l=!0:s=!0;else throw new Error("Unrecognized modifier name: "+h)}return r&&(i="Alt-"+i),s&&(i="Ctrl-"+i),l&&(i="Meta-"+i),o&&(i="Shift-"+i),i}c(Gm,"normalizeKeyName");function ur(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(ur,"modifiers");var Um=De.default(v.domEventHandlers({keydown(n,e){return Xf(Cf(e.state),n,e,"editor")}})),Xi=P.define({enables:Um}),vc=new WeakMap;function Cf(n){let e=n.facet(Xi),t=vc.get(e);return t||vc.set(e,t=Hm(e.reduce((i,r)=>i.concat(r),[]))),t}c(Cf,"getKeymap");function Zf(n,e,t){return Xf(Cf(n.state),e,n,t)}c(Zf,"runScopeHandlers");var wt=null,Fm=4e3;function Hm(n,e=Nm){let t=Object.create(null),i=Object.create(null),r=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"),s=c((o,l,a,h,f)=>{var u,d;let O=t[o]||(t[o]=Object.create(null)),p=l.split(/ (?!$)/).map(y=>Gm(y,e));for(let y=1;y<p.length;y++){let x=p.slice(0,y).join(" ");r(x,!0),O[x]||(O[x]={preventDefault:!0,stopPropagation:!1,run:[Q=>{let Z=wt={view:Q,prefix:x,scope:o};return setTimeout(()=>{wt==Z&&(wt=null)},Fm),!0}]})}let m=p.join(" ");r(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,il))}let a=o[e]||o.key;if(a)for(let h of l)s(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&s(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return t}c(Hm,"buildKeymap");var il=null;function Xf(n,e,t,i){il=e;let r=Kh(e),s=ce(r,0),o=Xe(s)==r.length&&r!=" ",l="",a=!1,h=!1,f=!1;wt&&wt.view==t&&wt.scope==i&&(l=wt.prefix+" ",yf.indexOf(e.keyCode)<0&&(h=!0,wt=null));let u=new Set,d=c(g=>{if(g){for(let y of g.run)if(!u.has(y)&&(u.add(y),y(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+ur(r,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!=r?(d(O[l+ur(p,e,!0)])||e.shiftKey&&(m=gi[e.keyCode])!=r&&m!=p&&d(O[l+ur(m,e,!1)]))&&(a=!0):o&&e.shiftKey&&d(O[l+ur(r,e,!0)])&&(a=!0),!a&&d(O._any)&&(a=!0)),h&&(a=!0),a&&f&&e.stopPropagation(),il=null,a}c(Xf,"runHandlers");var Ut=class n{static{c(this,"RectangleMarker")}constructor(e,t,i,r,s){this.className=e,this.left=t,this.top=i,this.width=r,this.height=s}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 r=e.coordsAtPos(i.head,i.assoc||1);if(!r)return[];let s=Af(e);return[new n(t,r.left-s.left,r.top-s.top,null,r.bottom-r.top)]}else return Km(e,t,i)}};function Af(n){let e=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==q.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 r=n.coordsAtPos(e,t*2);if(!r)return i;let s=n.dom.getBoundingClientRect(),o=(r.top+r.bottom)/2,l=n.posAtCoords({x:s.left+1,y:o}),a=n.posAtCoords({x:s.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),r=Math.min(t.to,n.viewport.to),s=n.textDirection==q.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,r,-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,r,-1,g)),m&&g&&m.from==g.from&&m.to==g.to)return x(Q(t.from,t.to,m));{let w=m?Q(t.from,null,m):Z(O,!1),k=g?Q(null,t.to,g):Z(p,!0),$=[];return(m||O).to<(g||p).from-(m&&g?1:0)||O.widgetLineBreaks>1&&w.bottom+n.defaultLineHeight/2<k.top?$.push(y(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),x(w).concat($).concat(x(k))}function y(w,k,$,E){return new Ut(e,w-a.left,k-a.top,Math.max(0,$-w),E-k)}c(y,"piece");function x({top:w,bottom:k,horizontal:$}){let E=[];for(let _=0;_<$.length;_+=2)E.push(y($[_],w,$[_+1],k));return E}c(x,"pieces");function Q(w,k,$){let E=1e9,_=-1e9,N=[];function z(L,H,ge,Te,rt){let he=n.coordsAtPos(L,L==$.to?-2:2),_e=n.coordsAtPos(ge,ge==$.from?2:-2);!he||!_e||(E=Math.min(he.top,_e.top,E),_=Math.max(he.bottom,_e.bottom,_),rt==q.LTR?N.push(s&&H?u:he.left,s&&Te?d:_e.right):N.push(!s&&Te?u:_e.left,!s&&H?d:he.right))}c(z,"addSpan");let M=w??$.from,B=k??$.to;for(let L of n.visibleRanges)if(L.to>M&&L.from<B)for(let H=Math.max(L.from,M),ge=Math.min(L.to,B);;){let Te=n.state.doc.lineAt(H);for(let rt of n.bidiSpans(Te)){let he=rt.from+Te.from,_e=rt.to+Te.from;if(he>=ge)break;_e>H&&z(Math.max(he,H),w==null&&he<=M,Math.min(_e,ge),k==null&&_e>=B,rt.dir)}if(H=Te.to+1,H>=ge)break}return N.length==0&&z(M,w==null,B,k==null,n.textDirection),{top:E,bottom:_,horizontal:N}}c(Q,"drawForLine");function Z(w,k){let $=l.top+(k?w.top:w.bottom);return{top:$,bottom:$,horizontal:[]}}c(Z,"drawForWidget")}c(Km,"rectanglesForRange");function Jm(n,e){return n.constructor==e.constructor&&n.eq(e)}c(Jm,"sameMarker");var nl=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(gr)!=e.state.facet(gr)&&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(gr);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 r of e)r.update&&t&&r.constructor&&this.drawn[i].constructor&&r.update(t,this.drawn[i])?(t=t.nextSibling,i++):this.dom.insertBefore(r.draw(),t);for(;t;){let r=t.nextSibling;t.remove(),t=r}this.drawn=e,C.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},gr=P.define();function Rf(n){return[te.define(e=>new nl(e,n)),gr.of(n)]}c(Rf,"layer");var Zi=P.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 Mf(n={}){return[Zi.of(n),eg,tg,ig,sf.of(!0)]}c(Mf,"drawSelection");function jf(n){return n.startState.facet(Zi)!=n.state.facet(Zi)}c(jf,"configChanged");var eg=Rf({above:!0,markers(n){let{state:e}=n,t=e.facet(Zi),i=[];for(let r of e.selection.ranges){let s=r==e.selection.main;if(r.empty||t.drawRangeCursor&&!(s&&C.ios&&t.iosSelectionHandles)){let o=s?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=r.empty?r:b.cursor(r.head,r.assoc);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=jf(n);return t&&Tc(n.state,e),n.docChanged||n.selectionSet||t},mount(n,e){Tc(e.state,n)},class:"cm-cursorLayer"});function Tc(n,e){e.style.animationDuration=n.facet(Zi).cursorBlinkRate+"ms"}c(Tc,"setBlinkRate");var tg=Rf({above:!1,markers(n){let e=[],{main:t,ranges:i}=n.state.selection;for(let r of i)if(!r.empty)for(let s of Ut.forRange(n,"cm-selectionBackground",r))e.push(s);if(C.ios&&!t.empty&&n.state.facet(Zi).iosSelectionHandles){for(let r of Ut.forRange(n,"cm-selectionHandle cm-selectionHandle-start",b.cursor(t.from,1)))e.push(r);for(let r of Ut.forRange(n,"cm-selectionHandle cm-selectionHandle-end",b.cursor(t.to,1)))e.push(r)}return e},update(n,e){return n.docChanged||n.selectionSet||n.viewportChanged||jf(n)},class:"cm-selectionLayer"}),ig=De.highest(v.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)}}),sn=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(sn);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(sn)!=t||n.docChanged||n.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:n}=this,e=n.state.field(sn),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(sn)!=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[sn,ng]}c(zf,"dropCursor");function Cc(n,e,t,i,r){e.lastIndex=0;for(let s=n.iterRange(t,i),o=t,l;!s.next().done;o+=s.value.length)if(!s.lineBreak)for(;l=e.exec(s.value);)r(o+l.index,l)}c(Cc,"iterMatches");function rg(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:r,to:s}of t)r=Math.max(n.state.doc.lineAt(r).from,r-e),s=Math.min(n.state.doc.lineAt(s).to,s+e),i.length&&i[i.length-1].to>=r?i[i.length-1].to=s:i.push({from:r,to:s});return i}c(rg,"matchRanges");var rl=class{static{c(this,"MatchDecorator")}constructor(e){let{regexp:t,decoration:i,decorate:r,boundary:s,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,r)this.addMatch=(l,a,h,f)=>r(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=s,this.maxLength=o}createDeco(e){let t=new Ze,i=t.add.bind(t);for(let{from:r,to:s}of rg(e,this.maxLength))Cc(e.state.doc,this.regexp,r,s,(o,l)=>this.addMatch(l,e,o,i));return t.finish()}updateDeco(e,t){let i=1e9,r=-1;return e.docChanged&&e.changes.iterChanges((s,o,l,a)=>{a>=e.view.viewport.from&&l<=e.view.viewport.to&&(i=Math.min(l,i),r=Math.max(a,r))}),e.viewportMoved||r-i>1e3?this.createDeco(e.view):r>-1?this.updateRange(e.view,t.map(e.changes),i,r):t}updateRange(e,t,i,r){for(let s of e.visibleRanges){let o=Math.max(s.from,i),l=Math.min(s.to,r);if(l>=o){let a=e.state.doc.lineAt(o),h=a.to<l?e.state.doc.lineAt(l):a,f=Math.max(s.from,a.from),u=Math.min(s.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,y)=>d.push(y.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 Cc(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",sg=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"},Oo=null;function lg(){var n;if(Oo==null&&typeof document<"u"&&document.body){let e=document.body.style;Oo=((n=e.tabSize)!==null&&n!==void 0?n:e.MozTabSize)!=null}return Oo||!1}c(lg,"supportsTabSize");var Sr=P.define({combine(n){let e=pe(n,{render:null,specialChars:sg,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 Vf(n={}){return[Sr.of(n),ag()]}c(Vf,"highlightSpecialChars");var Zc=null;function ag(){return Zc||(Zc=te.fromClass(class{constructor(n){this.view=n,this.decorations=X.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(n.state.facet(Sr)),this.decorations=this.decorator.createDeco(n)}makeDecorator(n){return new rl({regexp:n.specialChars,decoration:c((e,t,i)=>{let{doc:r}=t.state,s=ce(e[0],0);if(s==9){let o=r.lineAt(i),l=t.state.tabSize,a=dt(o.text,l,i-o.from);return X.replace({widget:new ll((l-a%l)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[s]||(this.decorationCache[s]=X.replace({widget:new ol(n,s)}))},"decoration"),boundary:n.replaceTabs?void 0:/[^]/})}update(n){let e=n.state.facet(Sr);n.startState.facet(Sr)!=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 ol=class extends be{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)),r=this.options.render&&this.options.render(this.code,i,t);if(r)return r;let s=document.createElement("span");return s.textContent=t,s.title=i,s.setAttribute("aria-label",i),s.className="cm-specialChar",s}ignoreEvent(){return!1}},ll=class extends be{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 _f(){return ug}c(_f,"highlightActiveLine");var fg=X.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 r=n.lineBlockAt(i.head);r.from>e&&(t.push(fg.range(r.from)),e=r.from)}return X.set(t)}},{decorations:c(n=>n.decorations,"decorations")});var al=2e3;function dg(n,e,t){let i=Math.min(e.line,t.line),r=Math.max(e.line,t.line),s=[];if(e.off>al||t.off>al||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<=r;a++){let h=n.doc.line(a);h.length<=l&&s.push(b.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<=r;a++){let h=n.doc.line(a),f=rr(h.text,o,n.tabSize,!0);if(f<0)s.push(b.cursor(h.to));else{let u=rr(h.text,l,n.tabSize);s.push(b.range(h.from+f,h.from+u))}}}return s}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 Xc(n,e){let t=n.posAtCoords({x:e.clientX,y:e.clientY},!1),i=n.state.doc.lineAt(t),r=t-i.from,s=r>al?-1:r==i.length?Og(n,e.clientX):dt(i.text,n.state.tabSize,t-i.from);return{line:i.number,col:s,off:r}}c(Xc,"getPos");function pg(n,e){let t=Xc(n,e),i=n.state.selection;return t?{update(r){if(r.docChanged){let s=r.changes.mapPos(r.startState.doc.line(t.line).from),o=r.state.doc.lineAt(s);t={line:o.number,col:t.col,off:Math.min(t.off,o.length)},i=i.map(r.changes)}},get(r,s,o){let l=Xc(n,r);if(!l)return i;let a=dg(n.state,t,l);return a.length?o?b.create(a.concat(i.ranges)):b.create(a):i}}:null}c(pg,"rectangleSelectionStyle");function Yf(n){let e=n?.eventFilter||(t=>t.altKey&&t.button==0);return v.mouseSelectionStyle.of((t,i)=>e(i)?pg(t,i):null)}c(Yf,"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 Wf(n={}){let[e,t]=mg[n.key||"Alt"],i=te.fromClass(class{constructor(r){this.view=r,this.isDown=!1}set(r){this.isDown!=r&&(this.isDown=r,this.view.update([]))}},{eventObservers:{keydown(r){this.set(r.keyCode==e||t(r))},keyup(r){(r.keyCode==e||!t(r))&&this.set(!1)},mousemove(r){this.set(t(r))}}});return[i,v.contentAttributes.of(r=>{var s;return!((s=r.plugin(i))===null||s===void 0)&&s.isDown?gg:null})]}c(Wf,"crosshairCursor");var dr="-10000px",Rr=class{static{c(this,"TooltipViewManager")}constructor(e,t,i,r){this.facet=t,this.createTooltipView=i,this.removeTooltipView=r,this.input=e.state.facet(t),this.tooltips=this.input.filter(o=>o);let s=null;this.tooltipViews=this.tooltips.map(o=>s=i(o,s))}update(e,t){var i;let r=e.state.facet(this.facet),s=r.filter(a=>a);if(r===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<s.length;a++){let h=s[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=r,this.tooltips=s,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 po=P.define({combine:c(n=>{var e,t,i;return{position:C.ios?"absolute":((e=n.find(r=>r.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((t=n.find(r=>r.parent))===null||t===void 0?void 0:t.parent)||null,tooltipSpace:((i=n.find(r=>r.tooltipSpace))===null||i===void 0?void 0:i.tooltipSpace)||Sg}},"combine")}),Ac=new WeakMap,Ql=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(po);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 Rr(n,bn,(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(po);if(i.position!=this.position&&!this.madeAbsolute){this.position=i.position;for(let r of this.manager.tooltipViews)r.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 r of this.manager.tooltipViews)this.container.appendChild(r.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 r=document.createElement("div");r.className="cm-tooltip-arrow",t.dom.appendChild(r)}return t.dom.style.position=this.position,t.dom.style.top=dr,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:s}=this.manager.tooltipViews[0];if(C.safari){let o=s.getBoundingClientRect();t=Math.abs(o.top+1e4)>1||Math.abs(o.left)>1}else t=!!s.offsetParent&&s.offsetParent!=this.container.ownerDocument.body}if(t||this.position=="absolute")if(this.parent){let s=this.parent.getBoundingClientRect();s.width&&s.height&&(n=s.width/this.parent.offsetWidth,e=s.height/this.parent.offsetHeight)}else({scaleX:n,scaleY:e}=this.view.viewState);let i=this.view.scrollDOM.getBoundingClientRect(),r=bl(this.view);return{visible:{left:i.left+r.left,top:i.top+r.top,right:i.right-r.right,bottom:i.bottom-r.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((s,o)=>{let l=this.manager.tooltipViews[o];return l.getCoords?l.getCoords(s.pos):this.view.coordsAtPos(s.pos)}),size:this.manager.tooltipViews.map(({dom:s})=>s.getBoundingClientRect()),space:this.view.state.facet(po).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:r,scaleY:s}=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=dr;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,y=h.offset||bg,x=this.view.textDirection==q.LTR,Q=d.width>i.right-i.left?x?i.left:i.right-d.width:x?Math.max(i.left,Math.min(u.left-(O?14:0)+y.x,i.right-m)):Math.min(Math.max(i.left,u.left-m+(O?14:0)-y.x),i.right-m),Z=this.above[l];!a.strictSide&&(Z?u.top-g-p-y.y<i.top:u.bottom+g+p+y.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=dr;continue}Ac.set(h,g),f.style.height=(g=w)/s+"px"}else f.style.height&&(f.style.height="");let k=Z?u.top-g-p-y.y:u.bottom+p+y.y,$=Q+m;if(h.overlap!==!0)for(let E of o)E.left<$&&E.right>Q&&E.top<k+g&&E.bottom>k&&(k=Z?E.top-g-2-p:E.bottom+p+2);if(this.position=="absolute"?(f.style.top=(k-n.parent.top)/s+"px",Rc(f,(Q-n.parent.left)/r)):(f.style.top=k/s+"px",Rc(f,Q/r)),O){let E=u.left+(x?y.x:-y.x)-(Q+14-7);O.style.left=E/r+"px"}h.overlap!==!0&&o.push({left:Q,top:k,right:$,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=dr}},{eventObservers:{scroll(){this.maybeMeasure()}}});function Rc(n,e){let t=parseInt(n.style.left,10);(isNaN(t)||Math.abs(e-t)>1)&&(n.style.left=e+"px")}c(Rc,"setLeftStyle");var yg=v.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"}}}),bg={x:0,y:0},bn=P.define({enables:[Ql,yg]}),Mr=P.define({combine:c(n=>n.reduce((e,t)=>e.concat(t),[]),"combine")}),jr=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 Rr(e,Mr,(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 r=i[e];if(r!==void 0){if(t===void 0)t=r;else if(t!==r)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")}},xg=bn.compute([Mr],n=>{let e=n.facet(Mr);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:jr.create,above:e[0].above,arrow:e.some(t=>t.arrow)}}),hl=class{static{c(this,"HoverPlugin")}constructor(e,t,i,r,s){this.view=e,this.source=t,this.field=i,this.setHover=r,this.hoverTime=s,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 r,s=1;if(i.isWidget())r=i.posAtStart;else{if(r=e.posAtCoords(t),r==null)return;let l=e.coordsAtPos(r);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(r)).find(f=>f.from<=r&&f.to>=r),h=a&&a.dir==q.RTL?-1:1;s=t.x<l.left?-h:h}let o=this.source(e,r,s);if(o?.then){let l=this.pending={pos:r};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(Ql),t=e?e.manager.tooltips.findIndex(i=>i.create==jr.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:r,tooltip:s}=this;if(r.length&&s&&!Qg(s.dom,e)||this.pending){let{pos:o}=r[0]||this.pending,l=(i=(t=r[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)}},Or=4;function Qg(n,e){let{left:t,right:i,top:r,bottom:s}=n.getBoundingClientRect(),o;if(o=n.querySelector(".cm-tooltip-arrow")){let l=o.getBoundingClientRect();r=Math.min(l.top,r),s=Math.max(l.bottom,s)}return e.clientX>=t-Or&&e.clientX<=i+Or&&e.clientY>=r-Or&&e.clientY<=s+Or}c(Qg,"isInTooltip");function wg(n,e,t,i,r,s){let o=n.scrollDOM.getBoundingClientRect(),l=n.documentTop+n.documentPadding.top+n.contentHeight;if(o.left>i||o.right<i||o.top>r||Math.min(o.bottom,l)<r)return!1;let a=n.posAtCoords({x:i,y:r},!1);return a>=e&&a<=t}c(wg,"isOverRange");function Df(n,e={}){let t=R.define(),i=ie.define({create(){return[]},update(r,s){if(r.length&&(e.hideOnChange&&(s.docChanged||s.selection)?r=[]:e.hideOn&&(r=r.filter(o=>!e.hideOn(s,o))),s.docChanged)){let o=[];for(let l of r){let a=s.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=s.changes.mapPos(h.end)),o.push(h)}}r=o}for(let o of s.effects)o.is(t)&&(r=o.value),o.is(kg)&&(r=[]);return r},provide:c(r=>Mr.from(r),"provide")});return{active:i,extension:[i,te.define(r=>new hl(r,n,i,t,e.hoverTime||300)),xg]}}c(Df,"hoverTooltip");function wl(n,e){let t=n.plugin(Ql);if(!t)return null;let i=t.manager.tooltips.indexOf(e);return i<0?null:t.manager.tooltipViews[i]}c(wl,"getTooltip");var kg=R.define();var Mc=P.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 xn(n,e){let t=n.plugin(Lf),i=t?t.specs.indexOf(e):-1;return i>-1?t.panels[i]:null}c(xn,"getPanel");var Lf=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(Mc);this.top=new xi(n,!0,e.topContainer),this.bottom=new xi(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(Mc);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new xi(n.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new xi(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),r=[],s=[],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)),r.push(f),(f.top?s:o).push(f)}this.specs=i,this.panels=r,this.top.sync(s),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=>v.scrollMargins.of(e=>{let t=e.plugin(n);return t&&{top:t.top.scrollMargin(),bottom:t.bottom.scrollMargin()}}),"provide")}),xi=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=jc(e);e=e.nextSibling}else this.dom.insertBefore(t.dom,e);for(;e;)e=jc(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 jc(n){let e=n.nextSibling;return n.remove(),e}c(jc,"rm");var Jt=P.define({enables:Lf});function qf(n,e){let t,i=new Promise(o=>t=o),r=c(o=>$g(o,e,t),"panelCtor");n.state.field(mo,!1)?n.dispatch({effects:Bf.of(r)}):n.dispatch({effects:R.appendConfig.of(mo.init(()=>[r]))});let s=If.of(r);return{close:s,result:i.then(o=>((n.win.queueMicrotask||(a=>n.win.setTimeout(a,10)))(()=>{n.state.field(mo).indexOf(r)>-1&&n.dispatch({effects:s})}),o))}}c(qf,"showDialog");var mo=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 $g(n,e,t){let i=e.content?e.content(n,()=>o(null)):null;if(!i){if(i=D("form"),e.input){let l=D("input",e.input);/^(text|password|number|email|tel|url)$/.test(l.type)&&l.classList.add("cm-textfield"),l.name||(l.name="input"),i.appendChild(D("label",(e.label||"")+": ",l))}else i.appendChild(document.createTextNode(e.label||""));i.appendChild(document.createTextNode(" ")),i.appendChild(D("button",{class:"cm-button",type:"submit"},e.submitLabel||"OK"))}let r=i.nodeName=="FORM"?[i]:i.querySelectorAll("form");for(let l=0;l<r.length;l++){let a=r[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 s=D("div",i,D("button",{onclick:c(()=>o(null),"onclick"),"aria-label":n.state.phrase("close"),class:"cm-dialog-close",type:"button"},["\xD7"]));e.class&&(s.className=e.class),s.classList.add("cm-dialog");function o(l){s.contains(s.ownerDocument.activeElement)&&n.focus(),t(l)}return c(o,"done"),{dom:s,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($g,"createDialog");var Re=class extends We{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 yr=P.define(),vg=P.define(),Pg={class:"",renderEmptyElements:!1,elementStyle:"",markers:c(()=>Y.empty,"markers"),lineMarker:c(()=>null,"lineMarker"),widgetMarker:c(()=>null,"widgetMarker"),lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:"before"},dn=P.define();function kl(n){return[Nf(),dn.of({...Pg,...n})]}c(kl,"gutter");var cl=P.define({combine:c(n=>n.some(e=>e),"combine")});function Nf(n){let e=[Tg];return n&&n.fixed===!1&&e.push(cl.of(!0)),e}c(Nf,"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 Er(n,e)),this.fixed=!n.state.facet(cl);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(cl)!=!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=Y.iter(this.view.state.facet(yr),this.view.viewport.from),i=[],r=this.gutters.map(s=>new ul(s,this.view.viewport,-this.view.documentPadding.top));for(let s of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(s.type)){let o=!0;for(let l of s.type)if(l.type==ue.Text&&o){fl(t,i,l.from);for(let a of r)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of r)a.widget(this.view,l)}else if(s.type==ue.Text){fl(t,i,s.from);for(let o of r)o.line(this.view,s,i)}else if(s.widget)for(let o of r)o.widget(this.view,s);for(let s of r)s.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||!Y.eq(n.startState.facet(yr),n.state.facet(yr),n.view.viewport.from,n.view.viewport.to);if(e==t)for(let r of this.gutters)r.update(n)&&(i=!0);else{i=!0;let r=[];for(let s of t){let o=e.indexOf(s);o<0?r.push(new Er(this.view,s)):(this.gutters[o].update(n),r.push(this.gutters[o]))}for(let s of this.gutters)s.dom.remove(),r.indexOf(s)<0&&s.destroy();for(let s of r)s.config.side=="after"?this.getDOMAfter().appendChild(s.dom):this.dom.appendChild(s.dom);this.gutters=r}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:c(n=>v.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,r=t.domAfter?t.domAfter.offsetWidth*e.scaleX:0;return e.textDirection==q.LTR?{left:i,right:r}:{right:i,left:r}}),"provide")});function Ec(n){return Array.isArray(n)?n:[n]}c(Ec,"asArray");function fl(n,e,t){for(;n.value&&n.from<=t;)n.from==t&&e.push(n.value),n.next()}c(fl,"advanceCursor");var ul=class{static{c(this,"UpdateContext")}constructor(e,t,i){this.gutter=e,this.height=i,this.i=0,this.cursor=Y.iter(e.markers,t.from)}addElement(e,t,i){let{gutter:r}=this,s=(t.top-this.height)/e.scaleY,o=t.height/e.scaleY;if(this.i==r.elements.length){let l=new zr(e,o,s,i);r.elements.push(l),r.dom.appendChild(l.dom)}else r.elements[this.i].update(e,o,s,i);this.height=t.bottom,this.i++}line(e,t,i){let r=[];fl(this.cursor,r,t.from),i.length&&(r=r.concat(i));let s=this.gutter.config.lineMarker(e,t,r);s&&r.unshift(s);let o=this.gutter;r.length==0&&!o.config.renderEmptyElements||this.addElement(e,t,r)}widget(e,t){let i=this.gutter.config.widgetMarker(e,t.widget,t),r=i?[i]:null;for(let s of e.state.facet(vg)){let o=s(e,t.widget,t);o&&(r||(r=[])).push(o)}r&&this.addElement(e,t,r)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let t=e.elements.pop();e.dom.removeChild(t.dom),t.destroy()}}},Er=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,r=>{let s=r.target,o;if(s!=this.dom&&this.dom.contains(s)){for(;s.parentNode!=this.dom;)s=s.parentNode;let a=s.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=r.clientY;let l=e.lineBlockAtHeight(o-e.documentTop);t.domEventHandlers[i](e,l,r)&&r.preventDefault()});this.markers=Ec(t.markers(e)),t.initialSpacer&&(this.spacer=new zr(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 r=this.config.updateSpacer(this.spacer.markers[0],e);r!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[r])}let i=e.view.viewport;return!Y.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()}},zr=class{static{c(this,"GutterElement")}constructor(e,t,i,r){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,t,i,r)}update(e,t,i,r){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,r)||this.setMarkers(e,r)}setMarkers(e,t){let i="cm-gutterElement",r=this.dom.firstChild;for(let s=0,o=0;;){let l=o,a=s<t.length?t[s++]: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(r);let u=r.nextSibling;r.remove(),r=u}}if(!a)break;a.toDOM&&(h?r=r.nextSibling:this.dom.insertBefore(a.toDOM(e),r)),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=P.define(),Xg=P.define(),Qi=P.define({combine(n){return pe(n,{formatNumber:String,domEventHandlers:{}},{domEventHandlers(e,t){let i=Object.assign({},e);for(let r in t){let s=i[r],o=t[r];i[r]=s?(l,a,h)=>s(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 go(n,e){return n.state.facet(Qi).formatNumber(e,n.state)}c(go,"formatNumber");var Ag=dn.compute([Qi],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(Zg)},lineMarker(e,t,i){return i.some(r=>r.toDOM)?null:new On(go(e,e.state.doc.lineAt(t.from).number))},widgetMarker:c((e,t,i)=>{for(let r of e.state.facet(Xg)){let s=r(e,t,i);if(s)return s}return null},"widgetMarker"),lineMarkerChange:c(e=>e.startState.facet(Qi)!=e.state.facet(Qi),"lineMarkerChange"),initialSpacer(e){return new On(go(e,zc(e.state.doc.lines)))},updateSpacer(e,t){let i=go(t.view,zc(t.view.state.doc.lines));return i==e.number?e:new On(i)},domEventHandlers:n.facet(Qi).domEventHandlers,side:"before"}));function Gf(n={}){return[Qi.of(n),Nf(),Ag]}c(Gf,"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=yr.compute(["selection"],n=>{let e=[],t=-1;for(let i of n.selection.ranges){let r=n.doc.lineAt(i.head).from;r>t&&(t=r,e.push(Rg.range(r)))}return Y.of(e)});function Uf(){return Mg}c(Uf,"highlightActiveLineGutter");var jg=0,$e=class{static{c(this,"Range")}constructor(e,t){this.from=e,this.to=t}},j=class{static{c(this,"NodeProp")}constructor(e={}){this.id=jg++,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]}}};j.closedBy=new j({deserialize:c(n=>n.split(" "),"deserialize")});j.openedBy=new j({deserialize:c(n=>n.split(" "),"deserialize")});j.group=new j({deserialize:c(n=>n.split(" "),"deserialize")});j.isolate=new j({deserialize:c(n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"},"deserialize")});j.contextHash=new j({perNode:!0});j.lookAhead=new j({perNode:!0});j.mounted=new j({perNode:!0});var Pt=class{static{c(this,"MountedTree")}constructor(e,t,i,r=!1){this.tree=e,this.overlay=t,this.parser=i,this.bracketed=r}static get(e){return e&&e.props&&e.props[j.mounted.id]}},Eg=Object.create(null),de=class n{static{c(this,"NodeType")}constructor(e,t,i,r=0){this.name=e,this.props=t,this.id=i,this.flags=r}static define(e){let t=e.props&&e.props.length?Object.create(null):Eg,i=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),r=new n(e.name||"",t,e.id,i);if(e.props){for(let s of e.props)if(Array.isArray(s)||(s=s(r)),s){if(s[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");t[s[0].id]=s[1]}}return r}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(j.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 r of i.split(" "))t[r]=e[i];return i=>{for(let r=i.prop(j.group),s=-1;s<(r?r.length:0);s++){let o=t[s<0?i.name:r[s]];if(o)return o}}}};de.none=new de("",Object.create(null),0,8);var Qn=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 r=null;for(let s of e){let o=s(i);if(o){r||(r=Object.assign({},i.props));let l=o[1],a=o[0];a.combine&&a.id in r&&(l=a.combine(r[a.id],l)),r[a.id]=l}}t.push(r?new de(i.name,r,i.id,i.flags):i)}return new n(t)}},Wr=new WeakMap,Ff=new WeakMap,W;(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"})(W||(W={}));var J=class n{static{c(this,"Tree")}constructor(e,t,i,r,s){if(this.type=e,this.children=t,this.positions=i,this.length=r,this.props=null,s&&s.length){this.props=Object.create(null);for(let[o,l]of s)this.props[typeof o=="number"?o:o.id]=l}}toString(){let e=Pt.get(this);if(e&&!e.overlay)return e.tree.toString();let t="";for(let i of this.children){let r=i.toString();r&&(t&&(t+=","),t+=r)}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 Ai(this.topNode,e)}cursorAt(e,t=0,i=0){let r=Wr.get(this)||this.topNode,s=new Ai(r);return s.moveTo(e,t),Wr.set(this,s._tree),s}get topNode(){return new ve(this,0,0,null)}resolve(e,t=0){let i=wn(Wr.get(this)||this.topNode,e,t,!1);return Wr.set(this,i),i}resolveInner(e,t=0){let i=wn(Ff.get(this)||this.topNode,e,t,!0);return Ff.set(this,i),i}resolveStack(e,t=0){return zg(this,e,t)}iterate(e){let{enter:t,leave:i,from:r=0,to:s=this.length}=e,o=e.mode||0,l=(o&W.IncludeAnonymous)>0;for(let a=this.cursor(o|W.IncludeAnonymous);;){let h=!1;if(a.from<=s&&a.to>=r&&(!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:jl(de.none,this.children,this.positions,0,this.children.length,0,this.length,(t,i,r)=>new n(this.type,t,i,r,this.propValues),e.makeTree||((t,i,r)=>new n(de.none,t,i,r)))}static build(e){return Vg(e)}};J.empty=new J(de.none,[],[],0);var $l=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],r=this.set.types[t],s=r.name;if(/\W/.test(s)&&!r.isError&&(s=JSON.stringify(s)),e+=4,i==e)return s;let o=[];for(;e<i;)o.push(this.childString(e)),e=this.buffer[e+3];return s+"("+o.join(",")+")"}findChild(e,t,i,r,s){let{buffer:o}=this,l=-1;for(let a=e;a!=t&&!(nu(s,r,o[a+1],o[a+2])&&(l=a,i>0));a=o[a+3]);return l}slice(e,t,i){let r=this.buffer,s=new Uint16Array(t-e),o=0;for(let l=e,a=0;l<t;){s[a++]=r[l++],s[a++]=r[l++]-i;let h=s[a++]=r[l++]-i;s[a++]=r[l++]-e,o=Math.max(o,h)}return new n(s,o,this.set)}};function nu(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(nu,"checkSide");function wn(n,e,t,i){for(var r;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 ve&&n.index<0?null:n.parent;if(!o)return n;n=o}let s=i?0:W.IgnoreOverlays;if(i)for(let o=n,l=o.parent;l;o=l,l=o.parent)o instanceof ve&&o.index<0&&((r=l.enter(e,t,s))===null||r===void 0?void 0:r.from)!=o.from&&(n=l);for(;;){let o=n.enter(e,t,s);if(!o)return n;n=o}}c(wn,"resolveNode");var Lr=class{static{c(this,"BaseNode")}cursor(e=0){return new Ai(this,e)}getChild(e,t=null,i=null){let r=Hf(this,e,t,i);return r.length?r[0]:null}getChildren(e,t=null,i=null){return Hf(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 r=t.lastChild;if(!r||r.to!=t.to)break;r.type.isError&&r.from==r.to?(i=t,t=r.prevSibling):t=r}return i}get node(){return this}get next(){return this.parent}},ve=class n extends Lr{static{c(this,"TreeNode")}constructor(e,t,i,r){super(),this._tree=e,this.from=t,this.index=i,this._parent=r}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,r,s=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(!(!(s&W.EnterBracketed&&f instanceof J&&(d=Pt.get(f))&&!d.overlay&&d.bracketed&&i>=u&&i<=u+f.length)&&!nu(r,i,u,u+f.length))){if(f instanceof Tt){if(s&W.ExcludeBuffers)continue;let O=f.findChild(0,f.buffer.length,t,i-u,r);if(O>-1)return new ei(new Pl(o,f,e,u),null,O)}else if(s&W.IncludeAnonymous||!f.type.isAnonymous||Ml(f)){let O;if(!(s&W.IgnoreMounts)&&(O=Pt.get(f))&&!O.overlay)return new n(O.tree,u,e,o);let p=new n(f,u,e,o);return s&W.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(t<0?f.children.length-1:0,t,i,r,s)}}}if(s&W.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 r;if(!(i&W.IgnoreOverlays)&&(r=Pt.get(this._tree))&&r.overlay){let s=e-this.from,o=i&W.EnterBracketed&&r.bracketed;for(let{from:l,to:a}of r.overlay)if((t>0||o?l<=s:l<s)&&(t<0||o?a>=s:a>s))return new n(r.tree,r.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 Hf(n,e,t,i){let r=n.cursor(),s=[];if(!r.firstChild())return s;if(t!=null){for(let o=!1;!o;)if(o=r.type.is(t),!r.nextSibling())return s}for(;;){if(i!=null&&r.type.is(i))return s;if(r.type.is(e)&&s.push(r.node),!r.nextSibling())return i==null?s:[]}}c(Hf,"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,r){this.parent=e,this.buffer=t,this.index=i,this.start=r}},ei=class n extends Lr{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:r}=this.context,s=r.findChild(this.index+4,r.buffer[this.index+3],e,t-this.context.start,i);return s<0?null:new n(this.context,this,s)}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&W.ExcludeBuffers)return null;let{buffer:r}=this.context,s=r.findChild(this.index+4,r.buffer[this.index+3],t>0?1:-1,e-this.context.start,t);return s<0?null:new n(this.context,this,s)}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,r=this.index+4,s=i.buffer[this.index+3];if(s>r){let o=i.buffer[this.index+1];e.push(i.slice(r,s,o)),t.push(0)}return new J(this.type,e,t,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function ru(n){if(!n.length)return null;let e=0,t=n[0];for(let s=1;s<n.length;s++){let o=n[s];(o.from>t.from||o.to<t.to)&&(t=o,e=s)}let i=t instanceof ve&&t.index<0?null:t.parent,r=n.slice();return i?r[e]=i:r.splice(e,1),new Tl(r,t)}c(ru,"iterStack");var Tl=class{static{c(this,"StackIterator")}constructor(e,t){this.heads=e,this.node=t}get next(){return ru(this.heads)}};function zg(n,e,t){let i=n.resolveInner(e,t),r=null;for(let s=i instanceof ve?i:i.context.parent;s;s=s.parent)if(s.index<0){let o=s.parent;(r||(r=[i])).push(o.resolve(e,t)),s=o}else{let o=Pt.get(s.tree);if(o&&o.overlay&&o.overlay[0].from<=e&&o.overlay[o.overlay.length-1].to>=e){let l=new ve(o.tree,o.overlay[0].from+s.from,-1,s);(r||(r=[i])).push(wn(l,e,t,!1))}}return r?ru(r):i}c(zg,"stackIterator");var Ai=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&~W.EnterBracketed,e instanceof ve)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:r}=this.buffer;return this.type=t||r.set.types[r.buffer[e]],this.from=i+r.buffer[e+1],this.to=i+r.buffer[e+2],!0}yield(e){return e?e instanceof ve?(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:r}=this.buffer,s=r.findChild(this.index+4,r.buffer[this.index+3],e,t-this.buffer.start,i);return s<0?!1:(this.stack.push(this.index),this.yieldBuf(s))}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&W.ExcludeBuffers?!1:this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&W.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&W.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 r=i<0?0:this.stack[i]+4;if(this.index!=r)return this.yieldBuf(t.findChild(r,this.index,-1,0,4))}else{let r=t.buffer[this.index+3];if(r<(i<0?t.buffer.length:t.buffer[this.stack[i]+3]))return this.yieldBuf(r)}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:r}=this;if(r){if(e>0){if(this.index<r.buffer.buffer.length)return!1}else for(let s=0;s<this.index;s++)if(r.buffer.buffer[s+3]<this.index)return!1;({index:t,parent:i}=r)}else({index:t,_parent:i}=this._tree);for(;i;{index:t,_parent:i}=i)if(t>-1)for(let s=t+e,o=e<0?-1:i._tree.children.length;s!=o;s+=e){let l=i._tree.children[s];if(this.mode&W.IncludeAnonymous||l instanceof Tt||!l.type.isAnonymous||Ml(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 r=this.index,s=this.stack.length;s>=0;){for(let o=e;o;o=o._parent)if(o.index==r){if(r==this.index)return o;t=o,i=s+1;break e}r=this.stack[--s]}for(let r=i;r<this.stack.length;r++)t=new ei(this.buffer,t,this.stack[r]);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 r=!1;if(this.type.isAnonymous||e(this)!==!1){if(this.firstChild()){i++;continue}this.type.isAnonymous||(r=!0)}for(;;){if(r&&t&&t(this),r=this.type.isAnonymous,!i)return;if(this.nextSibling())break;this.parent(),i--,r=!0}}}matchContext(e){if(!this.buffer)return vl(this.node.parent,e);let{buffer:t}=this.buffer,{types:i}=t.set;for(let r=e.length-1,s=this.stack.length-1;r>=0;s--){if(s<0)return vl(this._tree,e,r);let o=i[t.buffer[this.stack[s]]];if(!o.isAnonymous){if(e[r]&&e[r]!=o.name)return!1;r--}}return!0}};function Ml(n){return n.children.some(e=>e instanceof Tt||!e.type.isAnonymous||Ml(e))}c(Ml,"hasChild");function Vg(n){var e;let{buffer:t,nodeSet:i,maxBufferLength:r=1024,reused:s=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(t)?new $l(t,t.length):t,a=i.types,h=0,f=0;function u(w,k,$,E,_,N){let{id:z,start:M,end:B,size:L}=l,H=f,ge=h;if(L<0)if(l.next(),L==-1){let ft=s[z];$.push(ft),E.push(M-w);return}else if(L==-3){h=z;return}else if(L==-4){f=z;return}else throw new RangeError(`Unrecognized record size: ${L}`);let Te=a[z],rt,he,_e=M-w;if(B-M<=r&&(he=g(l.pos-k,_))){let ft=new Uint16Array(he.size-he.skip),Ye=l.pos-he.size,st=ft.length;for(;l.pos>Ye;)st=y(he.start,ft,st);rt=new Tt(ft,B-he.start,i),_e=he.start-w}else{let ft=l.pos-L;l.next();let Ye=[],st=[],Dt=z>=o?z:-1,fi=0,In=B;for(;l.pos>ft;)Dt>=0&&l.id==Dt&&l.size>=0?(l.end<=In-r&&(p(Ye,st,M,fi,l.end,In,Dt,H,ge),fi=Ye.length,In=l.end),l.next()):N>2500?d(M,ft,Ye,st):u(M,ft,Ye,st,Dt,N+1);if(Dt>=0&&fi>0&&fi<Ye.length&&p(Ye,st,M,fi,M,In,Dt,H,ge),Ye.reverse(),st.reverse(),Dt>-1&&fi>0){let xh=O(Te,ge);rt=jl(Te,Ye,st,0,Ye.length,0,B-M,xh,xh)}else rt=m(Te,Ye,st,B-M,H-B,ge)}$.push(rt),E.push(_e)}c(u,"takeNode");function d(w,k,$,E){let _=[],N=0,z=-1;for(;l.pos>k;){let{id:M,start:B,end:L,size:H}=l;if(H>4)l.next();else{if(z>-1&&B<z)break;z<0&&(z=L-r),_.push(M,B,L),N++,l.next()}}if(N){let M=new Uint16Array(N*4),B=_[_.length-2];for(let L=_.length-3,H=0;L>=0;L-=3)M[H++]=_[L],M[H++]=_[L+1]-B,M[H++]=_[L+2]-B,M[H++]=H;$.push(new Tt(M,_[2]-B,i)),E.push(B-w)}}c(d,"takeFlatNode");function O(w,k){return($,E,_)=>{let N=0,z=$.length-1,M,B;if(z>=0&&(M=$[z])instanceof J){if(!z&&M.type==w&&M.length==_)return M;(B=M.prop(j.lookAhead))&&(N=E[z]+M.length+B)}return m(w,$,E,_,N,k)}}c(O,"makeBalanced");function p(w,k,$,E,_,N,z,M,B){let L=[],H=[];for(;w.length>E;)L.push(w.pop()),H.push(k.pop()+$-_);w.push(m(i.types[z],L,H,N-_,M-N,B)),k.push(_-$)}c(p,"makeRepeatLeaf");function m(w,k,$,E,_,N,z){if(N){let M=[j.contextHash,N];z=z?[M].concat(z):[M]}if(_>25){let M=[j.lookAhead,_];z=z?[M].concat(z):[M]}return new J(w,k,$,E,z)}c(m,"makeTree");function g(w,k){let $=l.fork(),E=0,_=0,N=0,z=$.end-r,M={size:0,start:0,skip:0};e:for(let B=$.pos-w;$.pos>B;){let L=$.size;if($.id==k&&L>=0){M.size=E,M.start=_,M.skip=N,N+=4,E+=4,$.next();continue}let H=$.pos-L;if(L<0||H<B||$.start<z)break;let ge=$.id>=o?4:0,Te=$.start;for($.next();$.pos>H;){if($.size<0)if($.size==-3||$.size==-4)ge+=4;else break e;else $.id>=o&&(ge+=4);$.next()}_=Te,E+=L,N+=ge}return(k<0||E==w)&&(M.size=E,M.start=_,M.skip=N),M.size>4?M:void 0}c(g,"findBufferSize");function y(w,k,$){let{id:E,start:_,end:N,size:z}=l;if(l.next(),z>=0&&E<o){let M=$;if(z>4){let B=l.pos-(z-4);for(;l.pos>B;)$=y(w,k,$)}k[--$]=M,k[--$]=N-w,k[--$]=_-w,k[--$]=E}else z==-3?h=E:z==-4&&(f=E);return $}c(y,"copyToBuffer");let x=[],Q=[];for(;l.pos>0;)u(n.start||0,n.bufferStart||0,x,Q,-1,0);let Z=(e=n.length)!==null&&e!==void 0?e:x.length?Q[0]+x[0].length:0;return new J(a[n.topID],x.reverse(),Q.reverse(),Z)}c(Vg,"buildTree");var Kf=new WeakMap;function Dr(n,e){if(!n.isAnonymous||e instanceof Tt||e.type!=n)return 1;let t=Kf.get(e);if(t==null){t=1;for(let i of e.children){if(i.type!=n||!(i instanceof J)){t=1;break}t+=Dr(n,i)}Kf.set(e,t)}return t}c(Dr,"nodeSize");function jl(n,e,t,i,r,s,o,l,a){let h=0;for(let p=i;p<r;p++)h+=Dr(n,e[p]);let f=Math.ceil(h*1.5/8),u=[],d=[];function O(p,m,g,y,x){for(let Q=g;Q<y;){let Z=Q,w=m[Q],k=Dr(n,p[Q]);for(Q++;Q<y;Q++){let $=Dr(n,p[Q]);if(k+$>=f)break;k+=$}if(Q==Z+1){if(k>f){let $=p[Z];O($.children,$.positions,0,$.children.length,m[Z]+x);continue}u.push(p[Z])}else{let $=m[Q-1]+p[Q-1].length-w;u.push(jl(n,p,m,Z,Q,w,$,null,a))}d.push(w+x-s)}}return c(O,"divide"),O(e,t,i,r,0),(l||a)(u,d,o)}c(jl,"balanceRange");var Ri=class{static{c(this,"NodeWeakMap")}constructor(){this.map=new WeakMap}setBuffer(e,t,i){let r=this.map.get(e);r||this.map.set(e,r=new Map),r.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 ve&&this.map.set(e.tree,t)}get(e){return e instanceof ei?this.getBuffer(e.context.buffer,e.index):e instanceof ve?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,r,s=!1,o=!1){this.from=e,this.to=t,this.tree=i,this.offset=r,this.open=(s?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 r=[new n(0,e.length,e,0,!1,i)];for(let s of t)s.to>e.length&&r.push(s);return r}static applyChanges(e,t,i=128){if(!t.length)return e;let r=[],s=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&&r.push(d),o.to>u)break;o=s<e.length?e[s++]:null}if(!f)break;a=f.toA,h=f.toA-f.toB}return r}},Mi=class{static{c(this,"Parser")}startParse(e,t,i){return typeof e=="string"&&(e=new Cl(e)),i=i?i.length?i.map(r=>new $e(r.from,r.to)):[new $e(0,0)]:[new $e(0,e.length)],this.createParse(e,t||[],i)}parse(e,t,i){let r=this.startParse(e,t,i);for(;;){let s=r.advance();if(s)return s}}},Cl=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,r)=>new Al(e,n,t,i,r)}c(su,"parseMixed");var qr=class{static{c(this,"InnerParse")}constructor(e,t,i,r,s,o){this.parser=e,this.parse=t,this.overlay=i,this.bracketed=r,this.target=s,this.from=o}};function Jf(n){if(!n.length||n.some(e=>e.from>=e.to))throw new RangeError("Invalid inner parse ranges given: "+JSON.stringify(n))}c(Jf,"checkRanges");var Zl=class{static{c(this,"ActiveOverlay")}constructor(e,t,i,r,s,o,l,a){this.parser=e,this.predicate=t,this.mounts=i,this.index=r,this.start=s,this.bracketed=o,this.target=l,this.prev=a,this.depth=0,this.ranges=[]}},Xl=new j({perNode:!0}),Al=class{static{c(this,"MixedParse")}constructor(e,t,i,r,s){this.nest=t,this.input=i,this.fragments=r,this.ranges=s,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 r of this.inner)r.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([[Xl,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[j.mounted.id]=new Pt(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 Rl(this.fragments),t=null,i=null,r=new Ai(new ve(this.baseTree,this.ranges[0].from,0,null),W.IncludeAnonymous|W.IgnoreMounts);e:for(let s,o;;){let l=!0,a;if(this.stoppedAt!=null&&r.from>=this.stoppedAt)l=!1;else if(e.hasNode(r)){if(t){let h=t.mounts.find(f=>f.frag.from<=r.from&&f.frag.to>=r.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>=r.from&&d<=r.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,r.from,r.to)))l=o!=2;else if(!r.type.isAnonymous&&(s=this.nest(r,this.input))&&(r.from<r.to||!s.overlay)){r.tree||(Yg(r),t&&t.depth++,i&&i.depth++);let h=e.findMounts(r.from,s.parser);if(typeof s.overlay=="function")t=new Zl(s.parser,s.overlay,h,this.inner.length,r.from,!!s.bracketed,r.tree,t);else{let f=tu(this.ranges,s.overlay||(r.from<r.to?[new $e(r.from,r.to)]:[]));f.length&&Jf(f),(f.length||!s.overlay)&&this.inner.push(new qr(s.parser,f.length?s.parser.startParse(this.input,iu(h,f),f):s.parser.startParse(""),s.overlay?s.overlay.map(u=>new $e(u.from-r.from,u.to-r.from)):null,!!s.bracketed,r.tree,f.length?f[0].from:r.from)),s.overlay?f.length&&(i={ranges:f,depth:0,prev:i}):l=!1}}else if(t&&(a=t.predicate(r))&&(a===!0&&(a=new $e(r.from,r.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&&r.firstChild())t&&t.depth++,i&&i.depth++;else for(;!r.nextSibling();){if(!r.parent())break e;if(t&&!--t.depth){let h=tu(this.ranges,t.ranges);h.length&&(Jf(h),this.inner.splice(t.index,0,new qr(t.parser,t.parser.startParse(this.input,iu(t.mounts,h),h),t.ranges.map(f=>new $e(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 eu(n,e,t,i,r,s){if(e<t){let o=n.buffer[e+1];i.push(n.slice(e,t,o)),r.push(o-s)}}c(eu,"sliceBuf");function Yg(n){let{node:e}=n,t=[],i=e.context.buffer;do t.push(n.index),n.parent();while(!n.tree);let r=n.tree,s=r.children.indexOf(i),o=r.children[s],l=o.buffer,a=[s];function h(f,u,d,O,p,m){let g=t[m],y=[],x=[];eu(o,f,g,y,x,O);let Q=l[g+1],Z=l[g+2];a.push(y.length);let w=m?h(g+4,l[g+3],o.set.types[l[g]],Q,Z-Q,m-1):e.toTree();return y.push(w),x.push(Q-O),eu(o,l[g+3],u,y,x,O),new J(d,y,x,p)}c(h,"split"),r.children[s]=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 ve(u,d+n.from,f,n._tree))}}c(Yg,"materialize");var Br=class{static{c(this,"StructureCursor")}constructor(e,t){this.offset=t,this.done=!1,this.cursor=e.cursor(W.IncludeAnonymous|W.IgnoreMounts)}moveTo(e){let{cursor:t}=this,i=e-this.offset;for(;!this.done&&t.from<i;)t.to>=e&&t.enter(i,1,W.IgnoreOverlays|W.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}},Rl=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(Xl))!==null&&t!==void 0?t:i.to,this.inner=new Br(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(Xl))!==null&&e!==void 0?e:t.to,this.inner=new Br(t.tree,-t.offset)}}findMounts(e,t){var i;let r=[];if(this.inner){this.inner.cursor.moveTo(e,1);for(let s=this.inner.cursor.node;s;s=s.parent){let o=(i=s.tree)===null||i===void 0?void 0:i.prop(j.mounted);if(o&&o.parser==t)for(let l=this.fragI;l<this.fragments.length;l++){let a=this.fragments[l];if(a.from>=s.to)break;a.tree==this.curFrag.tree&&r.push({frag:a,pos:s.from-a.offset,mount:o})}}}return r}};function tu(n,e){let t=null,i=e;for(let r=1,s=0;r<n.length;r++){let o=n[r-1].to,l=n[r].from;for(;s<i.length;s++){let a=i[s];if(a.from>=l)break;a.to<=o||(t||(i=t=e.slice()),a.from<o?(t[s]=new $e(a.from,o),a.to>l&&t.splice(s+1,0,new $e(l,a.to))):a.to>l?t[s--]=new $e(l,a.to):t.splice(s--,1))}}return i}c(tu,"punchRanges");function Wg(n,e,t,i){let r=0,s=0,o=!1,l=!1,a=-1e9,h=[];for(;;){let f=r==n.length?1e9:o?n[r].to:n[r].from,u=s==e.length?1e9:l?e[s].to:e[s].from;if(o!=l){let d=Math.max(a,t),O=Math.min(f,u,i);d<O&&h.push(new $e(d,O))}if(a=Math.min(f,u),a==1e9)break;f==a&&(o?(o=!1,r++):o=!0),u==a&&(l?(l=!1,s++):l=!0)}return h}c(Wg,"findCoverChanges");function iu(n,e){let t=[];for(let{pos:i,mount:r,frag:s}of n){let o=i+(r.overlay?r.overlay[0].from:0),l=o+r.tree.length,a=Math.max(s.from,o),h=Math.min(s.to,l);if(r.overlay){let f=r.overlay.map(d=>new $e(d.from+i,d.to+i)),u=Wg(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,r.tree,-o,s.from>=O||s.openStart,s.to<=m||s.openEnd)),p)break;O=u[d].to}}else t.push(new St(a,h,r.tree,-o,s.from>=o||s.openStart,s.to<=l||s.openEnd))}return t}c(iu,"enterFragments");var Dg=0,Ke=class n{static{c(this,"Tag")}constructor(e,t,i,r){this.name=e,this.set=t,this.base=i,this.modified=r,this.id=Dg++}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 r=new n(i,[],null,[]);if(r.set.push(r),t)for(let s of t.set)r.set.push(s);return r}static defineModifier(e){let t=new Ur(e);return i=>i.modified.indexOf(t)>-1?i:Ur.get(i.base||i,i.modified.concat(t).sort((r,s)=>r.id-s.id))}},Lg=0,Ur=class n{static{c(this,"Modifier")}constructor(e){this.name=e,this.instances=[],this.id=Lg++}static get(e,t){if(!t.length)return e;let i=t[0].instances.find(l=>l.base==e&&qg(t,l.modified));if(i)return i;let r=[],s=new Ke(e.name,r,e,t);for(let l of t)l.instances.push(s);let o=Bg(t);for(let l of e.set)if(!l.modified.length)for(let a of o)r.push(n.get(l,a));return s}};function qg(n,e){return n.length==e.length&&n.every((t,i)=>t==e[i])}c(qg,"sameArray");function Bg(n){let e=[[]];for(let t=0;t<n.length;t++)for(let i=0,r=e.length;i<r;i++)e.push(e[i].concat(n[t]));return e.sort((t,i)=>i.length-t.length)}c(Bg,"powerSet");function Xt(n){let e=Object.create(null);for(let t in n){let i=n[t];Array.isArray(i)||(i=[i]);for(let r of t.split(" "))if(r){let s=[],o=2,l=r;for(let u=0;;){if(l=="..."&&u>0&&u+3==r.length){o=1;break}let d=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!d)throw new RangeError("Invalid path: "+r);if(s.push(d[0]=="*"?"":d[0][0]=='"'?JSON.parse(d[0]):d[0]),u+=d[0].length,u==r.length)break;let O=r[u++];if(u==r.length&&O=="!"){o=0;break}if(O!="/")throw new RangeError("Invalid path: "+r);l=r.slice(u)}let a=s.length-1,h=s[a];if(!h)throw new RangeError("Invalid path: "+r);let f=new ii(i,o,a>0?s.slice(0,a):null);e[h]=f.sort(e[h])}}return au.add(e)}c(Xt,"styleTags");var au=new j({combine(n,e){let t,i,r;for(;n||e;){if(!n||e&&n.depth>=e.depth?(r=e,e=e.next):(r=n,n=n.next),t&&t.mode==r.mode&&!r.context&&!t.context)continue;let s=new ii(r.tags,r.mode,r.context);t?t.next=s:i=s,t=s}return i}}),ii=class{static{c(this,"Rule")}constructor(e,t,i,r){this.tags=e,this.mode=t,this.context=i,this.next=r}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 _l(n,e){let t=Object.create(null);for(let s of n)if(!Array.isArray(s.tag))t[s.tag.id]=s.class;else for(let o of s.tag)t[o.id]=s.class;let{scope:i,all:r=null}=e||{};return{style:c(s=>{let o=r;for(let l of s)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(_l,"tagHighlighter");function Ig(n,e){let t=null;for(let i of n){let r=i.style(e);r&&(t=t?t+" "+r:r)}return t}c(Ig,"highlightTags");function hu(n,e,t,i=0,r=n.length){let s=new zl(i,Array.isArray(e)?e:[e],t);s.highlightRange(n.cursor(),i,r,"",s.highlighters),s.flush(r)}c(hu,"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,r,s){let{type:o,from:l,to:a}=e;if(l>=i||a<=t)return;o.isTop&&(s=this.highlighters.filter(O=>!O.scope||O.scope(o)));let h=r,f=Ng(e)||ii.empty,u=Ig(s,f.tags);if(u&&(h&&(h+=" "),h+=u,f.mode==1&&(r+=(r?" ":"")+u)),this.startSpan(Math.max(t,l),h),f.opaque)return;let d=e.tree&&e.tree.prop(j.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,y=l;;g++){let x=g<d.overlay.length?d.overlay[g]:null,Q=x?x.from+l:a,Z=Math.max(t,y),w=Math.min(i,Q);if(Z<w&&m)for(;e.from<w&&(this.highlightRange(e,Z,w,r,s),this.startSpan(Math.min(w,e.to),h),!(e.to>=Q||!e.nextSibling())););if(!x||Q>i)break;y=x.to+l,y>t&&(this.highlightRange(O.cursor(),Math.max(t,x.from+l),Math.min(i,y),"",p),this.startSpan(Math.min(i,y),h))}m&&e.parent()}else if(e.firstChild()){d&&(r="");do if(!(e.to<=t)){if(e.from>=i)break;this.highlightRange(e,t,i,r,s),this.startSpan(Math.min(i,e.to),h)}while(e.nextSibling());e.parent()}}};function Ng(n){let e=n.type.prop(au);for(;e&&e.context&&!n.matchContext(e.context);)e=e.next;return e||null}c(Ng,"getStyleTags");var T=Ke.define,Ir=T(),Ct=T(),ou=T(Ct),lu=T(Ct),Zt=T(),Nr=T(Zt),El=T(Zt),ct=T(),ti=T(ct),at=T(),ht=T(),Vl=T(),kn=T(Vl),Gr=T(),S={comment:Ir,lineComment:T(Ir),blockComment:T(Ir),docComment:T(Ir),name:Ct,variableName:T(Ct),typeName:ou,tagName:T(ou),propertyName:lu,attributeName:T(lu),className:T(Ct),labelName:T(Ct),namespace:T(Ct),macroName:T(Ct),literal:Zt,string:Nr,docString:T(Nr),character:T(Nr),attributeValue:T(Nr),number:El,integer:T(El),float:T(El),bool:T(Zt),regexp:T(Zt),escape:T(Zt),color:T(Zt),url:T(Zt),keyword:at,self:T(at),null:T(at),atom:T(at),unit:T(at),modifier:T(at),operatorKeyword:T(at),controlKeyword:T(at),definitionKeyword:T(at),moduleKeyword:T(at),operator:ht,derefOperator:T(ht),arithmeticOperator:T(ht),logicOperator:T(ht),bitwiseOperator:T(ht),compareOperator:T(ht),updateOperator:T(ht),definitionOperator:T(ht),typeOperator:T(ht),controlOperator:T(ht),punctuation:Vl,separator:T(Vl),bracket:kn,angleBracket:T(kn),squareBracket:T(kn),paren:T(kn),brace:T(kn),content:ct,heading:ti,heading1:T(ti),heading2:T(ti),heading3:T(ti),heading4:T(ti),heading5:T(ti),heading6:T(ti),contentSeparator:T(ct),list:T(ct),quote:T(ct),emphasis:T(ct),strong:T(ct),link:T(ct),monospace:T(ct),strikethrough:T(ct),inserted:T(),deleted:T(),changed:T(),invalid:T(),meta:Gr,documentMeta:T(Gr),annotation:T(Gr),processingInstruction:T(Gr),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 Gx=_l([{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 Yl,ji=new j;function Kl(n){return P.define({combine:n?e=>e.concat(n):void 0})}c(Kl,"defineLanguageFacet");var Jr=new j,Me=class{static{c(this,"Language")}constructor(e,t,i=[],r=""){this.data=e,this.name=r,G.prototype.hasOwnProperty("tree")||Object.defineProperty(G.prototype,"tree",{get(){return F(this)}}),this.parser=t,this.extension=[Rt.of(this),G.languageData.of((s,o,l)=>{let a=cu(s,o,l),h=a.type.prop(ji);if(!h)return[];let f=s.facet(h),u=a.type.prop(Jr);if(u){let d=a.resolve(o-a.from,l);for(let O of u)if(O.test(d,s)){let p=s.facet(O.facet);return O.type=="replace"?p:p.concat(f)}}return f})].concat(i)}isActiveAt(e,t,i=-1){return cu(e,t,i).type.prop(ji)==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=[],r=c((s,o)=>{if(s.prop(ji)==this.data){i.push({from:o,to:o+s.length});return}let l=s.prop(j.mounted);if(l){if(l.tree.prop(ji)==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+s.length});return}else if(l.overlay){let a=i.length;if(r(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;a<s.children.length;a++){let h=s.children[a];h instanceof J&&r(h,s.positions[a]+o)}},"explore");return r(F(e),0),i}get allowsNesting(){return!0}};Me.setState=R.define();function cu(n,e,t){let i=n.facet(Rt),r=F(n).topNode;if(!i||i.allowsNesting)for(let s=r;s;s=s.enter(e,t,W.ExcludeBuffers|W.EnterBracketed))s.type.isTop&&(r=s);return r}c(cu,"topNodeAt");var At=class n extends Me{static{c(this,"LRLanguage")}constructor(e,t,i){super(e,t,[],i),this.parser=t}static define(e){let t=Kl(e.languageData);return new n(t,e.parser.configure({props:[ji.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 ql=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)}},$n=null,Bl=class n{static{c(this,"ParseContext")}constructor(e,t,i=[],r,s,o,l,a){this.parser=e,this.state=t,this.fragments=i,this.tree=r,this.treeLen=s,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 ql(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 r=Date.now()+e;e=c(()=>Date.now()>r,"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 r=this.parse.advance();if(r)if(this.fragments=this.withoutTempSkipped(St.addTree(r,this.fragments,this.parse.stoppedAt!=null)),this.treeLen=(i=this.parse.stoppedAt)!==null&&i!==void 0?i:this.state.doc.length,this.tree=r,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=$n;$n=this;try{return e()}finally{$n=t}}withoutTempSkipped(e){for(let t;t=this.tempSkipped.pop();)e=fu(e,t.from,t.to);return e}changes(e,t){let{fragments:i,tree:r,treeLen:s,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),r=J.empty,s=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,r,s,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:r,to:s}=this.skipped[i];r<e.to&&s>e.from&&(this.fragments=fu(this.fragments,r,s),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,r){let s=r[0].from,o=r[r.length-1].to;return{parsedPos:s,advance(){let a=$n;if(a){for(let h of r)a.tempSkipped.push(h);e&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,e]):e)}return this.parsedPos=o,new J(de.none,[],[],o-s)},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 $n}};function fu(n,e,t){return St.applyChanges(n,[{fromA:e,toA:t,fromB:e,toB:t}])}c(fu,"cutFragments");var Pn=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:Pn.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)?Pn.init(e.state):n.apply(e)}});var Su=c(n=>{let e=setTimeout(()=>n(),500);return()=>clearTimeout(e)},"requestIdle");typeof requestIdleCallback<"u"&&(Su=c(n=>{let e=-1,t=setTimeout(()=>{e=requestIdleCallback(n,{timeout:400})},100);return()=>e<0?clearTimeout(t):cancelIdleCallback(e)},"requestIdle"));var Wl=typeof navigator<"u"&&(!((Yl=navigator.scheduling)===null||Yl===void 0)&&Yl.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=Su(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:r}}=this.view,s=i.field(Me.state);if(s.tree==s.context.tree&&s.context.isDone(r+1e5))return;let o=Date.now()+Math.min(this.chunkBudget,100,e&&!Wl?Math.max(25,e.timeRemaining()-5):1e9),l=s.context.treeLen<r&&i.doc.length>r+1e3,a=s.context.work(()=>Wl&&Wl()||Date.now()>o,r+(l?0:1e5));this.chunkBudget-=Date.now()-t,(a||this.chunkBudget<=0)&&(s.context.takeTree(),this.view.dispatch({effects:Me.setState.of(new Pn(s.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(s.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=P.define({combine(n){return n.length?n[0]:null},enables:c(n=>[Me.state,Gg,v.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=P.define(),Ei=P.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(Ei);return e.charCodeAt(0)==9?n.tabSize*e.length:e.length}c(Tn,"getIndentUnit");function zi(n,e){let t="",i=n.tabSize,r=n.facet(Ei)[0];if(r==" "){for(;e>=i;)t+=" ",e-=i;r=" "}for(let s=0;s<e;s++)t+=r;return t}c(zi,"indentString");function es(n,e){n instanceof G&&(n=new ni(n));for(let i of n.state.facet(Ug)){let r=i(n,e);if(r!==void 0)return r}let t=F(n.state);return t.length>=e?Fg(n,t,e):null}c(es,"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:r,simulateDoubleBreak:s}=this.options;return r!=null&&r>=i.from&&r<=i.to?s&&r==e?{text:"",from:e}:(t<0?r<e:r<=e)?{text:i.text.slice(r-i.from),from:r}:{text:i.text.slice(0,r-i.from),from:i.from}:i}textAfterPos(e,t=1){if(this.options.simulateDoubleBreak&&e==this.options.simulateBreak)return"";let{text:i,from:r}=this.lineAt(e,t);return i.slice(e-r,Math.min(i.length,e+100-r))}column(e,t=1){let{text:i,from:r}=this.lineAt(e,t),s=this.countColumn(i,e-r),o=this.options.overrideIndentation?this.options.overrideIndentation(r):-1;return o>-1&&(s+=o-this.countColumn(i,i.search(/\S|$/))),s}countColumn(e,t=e.length){return dt(e,this.state.tabSize,t)}lineIndent(e,t=1){let{text:i,from:r}=this.lineAt(e,t),s=this.options.overrideIndentation;if(s){let o=s(r);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},si=new j;function Fg(n,e,t){let i=e.resolveStack(t),r=e.resolveInner(t,-1).resolve(t,0).enterUnfinishedNodesBefore(t);if(r!=i.node){let s=[];for(let o=r;o&&!(o.from<i.node.from||o.to>i.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)s.push(o);for(let o=s.length-1;o>=0;o--)i={node:s[o],next:i}}return yu(i,n,t)}c(Fg,"syntaxIndentation");function yu(n,e,t){for(let i=n;i;i=i.next){let r=Kg(i.node);if(r)return r(Il.create(e,t,i))}return 0}c(yu,"indentFor");function Hg(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}c(Hg,"ignoreClosed");function Kg(n){let e=n.type.prop(si);if(e)return e;let t=n.firstChild,i;if(t&&(i=t.type.prop(j.closedBy))){let r=n.lastChild,s=r&&i.indexOf(r.name)>-1;return o=>xu(o,!0,1,void 0,s&&!Hg(o)?r.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 yu(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 r=n.options.simulateBreak,s=n.state.doc.lineAt(t.from),o=r==null||r<=s.from?s.to:Math.min(s.to,r);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(s.text.slice(t.to-s.from))[0].length;return{from:t.from,to:t.to+h}}l=a.to}}c(t0,"bracketedAligned");function bu({closing:n,align:e=!0,units:t=1}){return i=>xu(i,e,t,n)}c(bu,"delimitedIndent");function xu(n,e,t,i,r){let s=n.textAfter,o=s.match(/^\s*/)[0].length,l=i&&s.slice(o,o+i.length)==i||r==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(xu,"delimitedStrategy");var Qu=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 wu(){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,r=t.lineAt(i);if(i>r.from+i0)return n;let s=t.sliceString(r.from,i);if(!e.some(h=>h.test(s)))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=es(o,f.from);if(u==null)continue;let d=/^\s*/.exec(f.text)[0],O=zi(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(wu,"indentOnInput");var n0=P.define(),oi=new j;function ts(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(ts,"foldInside");function r0(n,e,t){let i=F(n);if(i.length<t)return null;let r=i.resolveStack(t,1),s=null;for(let o=r;o;o=o.next){let l=o.node;if(l.to<=t||l.from>t)continue;if(s&&l.from<e)break;let a=l.type.prop(oi);if(a&&(l.to<i.length-50||i.length==n.doc.length||!s0(l))){let h=a(l,n);h&&h.from<=t&&h.from>=e&&h.to>t&&(s=h)}}return s}c(r0,"syntaxFolding");function s0(n){let e=n.lastChild;return e&&e.to==n.to&&e.type.isError}c(s0,"isUnfinished");function Fr(n,e,t){for(let i of n.facet(n0)){let r=i(n,e,t);if(r)return r}return r0(n,e,t)}c(Fr,"foldable");function ku(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(ku,"mapRange");var is=R.define({map:ku}),Cn=R.define({map:ku});function $u(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($u,"selectedLines");var ri=ie.define({create(){return X.none},update(n,e){e.isUserEvent("delete")&&e.changes.iterChangedRanges((t,i)=>n=uu(n,t,i)),n=n.map(e.changes);for(let t of e.effects)if(t.is(is)&&!o0(n,t.value.from,t.value.to)){let{preparePlaceholder:i}=e.state.facet(Jl),r=i?X.replace({widget:new Nl(i(e.state,t.value))}):du;n=n.update({add:[r.range(t.value.from,t.value.to)]})}else t.is(Cn)&&(n=n.update({filter:c((i,r)=>t.value.from!=i||t.value.to!=r,"filter"),filterFrom:t.value.from,filterTo:t.value.to}));return e.selection&&(n=uu(n,e.selection.main.head)),n},provide:c(n=>v.decorations.from(n),"provide"),toJSON(n,e){let t=[];return n.between(0,e.doc.length,(i,r)=>{t.push(i,r)}),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++],r=n[t++];if(typeof i!="number"||typeof r!="number")throw new RangeError("Invalid JSON for fold state");e.push(du.range(i,r))}return X.set(e,!0)}});function uu(n,e,t=e){let i=!1;return n.between(e,t,(r,s)=>{r<t&&s>e&&(i=!0)}),i?n.update({filterFrom:e,filterTo:t,filter:c((r,s)=>r>=t||s<=e,"filter")}):n}c(uu,"clearTouchedFolds");function Hr(n,e,t){var i;let r=null;return(i=n.field(ri,!1))===null||i===void 0||i.between(e,t,(s,o)=>{(!r||r.from>s)&&(r={from:s,to:o})}),r}c(Hr,"findFold");function o0(n,e,t){let i=!1;return n.between(e,e,(r,s)=>{r==e&&s==t&&(i=!0)}),i}c(o0,"foldExists");function vu(n,e){return n.field(ri,!1)?e:e.concat(R.appendConfig.of(Cu()))}c(vu,"maybeEnable");var l0=c(n=>{for(let e of $u(n)){let t=Fr(n.state,e.from,e.to);if(t)return n.dispatch({effects:vu(n.state,[is.of(t),Pu(n,t)])}),!0}return!1},"foldCode"),a0=c(n=>{if(!n.state.field(ri,!1))return!1;let e=[];for(let t of $u(n)){let i=Hr(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,r=n.state.doc.lineAt(e.to).number;return v.announce.of(`${n.state.phrase(t?"Folded lines":"Unfolded lines")} ${i} ${n.state.phrase("to")} ${r}.`)}c(Pu,"announceFold");var h0=c(n=>{let{state:e}=n,t=[];for(let i=0;i<e.doc.length;){let r=n.lineBlockAt(i),s=Fr(e,r.from,r.to);s&&t.push(is.of(s)),i=(s?n.lineBlockAt(s.to):r).to+1}return t.length&&n.dispatch({effects:vu(n.state,t)}),!!t.length},"foldAll"),c0=c(n=>{let e=n.state.field(ri,!1);if(!e||!e.size)return!1;let t=[];return e.between(0,n.state.doc.length,(i,r)=>{t.push(Cn.of({from:i,to:r}))}),n.dispatch({effects:t}),!0},"unfoldAll");var Tu=[{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"},Jl=P.define({combine(n){return pe(n,f0)}});function Cu(n){let e=[ri,d0];return n&&e.push(Jl.of(n)),e}c(Cu,"codeFolding");function Zu(n,e){let{state:t}=n,i=t.facet(Jl),r=c(o=>{let l=n.lineBlockAt(n.posAtDOM(o.target)),a=Hr(n.state,l.from,l.to);a&&n.dispatch({effects:Cn.of(a)}),o.preventDefault()},"onclick");if(i.placeholderDOM)return i.placeholderDOM(n,r,e);let s=document.createElement("span");return s.textContent=i.placeholderText,s.setAttribute("aria-label",t.phrase("folded code")),s.title=t.phrase("unfold"),s.className="cm-foldPlaceholder",s.onclick=r,s}c(Zu,"widgetToDOM");var du=X.replace({widget:new class extends be{toDOM(n){return Zu(n,null)}}}),Nl=class extends be{static{c(this,"PreparedFoldWidget")}constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return Zu(e,this.value)}},u0={openText:"\u2304",closedText:"\u203A",markerDOM:null,domEventHandlers:{},foldingChanged:c(()=>!1,"foldingChanged")},vn=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 Xu(n={}){let e={...u0,...n},t=new vn(e,!0),i=new vn(e,!1),r=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(ri,!1)!=o.state.field(ri,!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=Hr(o.state,a.from,a.to)?i:Fr(o.state,a.from,a.to)?t:null;h&&l.add(a.from,a.from,h)}return l.finish()}}),{domEventHandlers:s}=e;return[r,kl({class:"cm-foldGutter",markers(o){var l;return((l=o.plugin(r))===null||l===void 0?void 0:l.markers)||Y.empty},initialSpacer(){return new vn(e,!1)},domEventHandlers:{...s,click:c((o,l,a)=>{if(s.click&&s.click(o,l,a))return!0;let h=Hr(o.state,l.from,l.to);if(h)return o.dispatch({effects:Cn.of(h)}),!0;let f=Fr(o.state,l.from,l.to);return f?(o.dispatch({effects:is.of(f)}),!0):!1},"click")}}),Cu()]}c(Xu,"foldGutter");var d0=v.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"}}),Kr=class n{static{c(this,"HighlightStyle")}constructor(e,t){this.specs=e;let i;function r(l){let a=Le.newName();return(i||(i=Object.create(null)))["."+a]=l,a}c(r,"def");let s=typeof t.all=="string"?t.all:t.all?r(t.all):void 0,o=t.scope;this.scope=o instanceof Me?l=>l.prop(ji)==o.data:o?l=>l==o:void 0,this.style=_l(e.map(l=>({tag:l.tag,class:l.class||r(Object.assign({},l,{tag:null}))})),{all:s}).style,this.module=i?new Le(i):null,this.themeType=t.themeType}static define(e,t){return new n(e,t||{})}},Gl=P.define(),Au=P.define({combine(n){return n.length?[n[0]]:null}});function Dl(n){let e=n.facet(Gl);return e.length?e:n.facet(Au)}c(Dl,"getHighlighters");function Ru(n,e){let t=[O0],i;return n instanceof Kr&&(n.module&&t.push(v.styleModule.of(n.module)),i=n.themeType),e?.fallback?t.push(Au.of(n)):i?t.push(Gl.computeN([v.darkTheme],r=>r.facet(v.darkTheme)==(i=="dark")?[n]:[])):t.push(Gl.of(n)),t}c(Ru,"syntaxHighlighting");var Ul=class{static{c(this,"TreeHighlighter")}constructor(e){this.markCache=Object.create(null),this.tree=F(e.state),this.decorations=this.buildDeco(e,Dl(e.state)),this.decoratedTo=e.viewport.to}update(e){let t=F(e.state),i=Dl(e.state),r=i!=Dl(e.startState),{viewport:s}=e.view,o=e.changes.mapPos(this.decoratedTo,1);t.length<s.to&&!r&&t.type==this.tree.type&&o>=s.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=o):(t!=this.tree||e.viewportChanged||r)&&(this.tree=t,this.decorations=this.buildDeco(e.view,i),this.decoratedTo=s.to)}buildDeco(e,t){if(!t||!this.tree.length)return X.none;let i=new Ze;for(let{from:r,to:s}of e.visibleRanges)hu(this.tree,t,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=X.mark({class:a})))},r,s);return i.finish()}},O0=De.high(te.fromClass(Ul,{decorations:c(n=>n.decorations,"decorations")})),Mu=Kr.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=v.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),ju=1e4,Eu="()[]{}",zu=P.define({combine(n){return pe(n,{afterCursor:!0,brackets:Eu,maxScanDistance:ju,renderMatch:S0})}}),m0=X.mark({class:"cm-matchingBracket"}),g0=X.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 Ou(n){let e=[],t=n.facet(zu);for(let i of n.selection.ranges){if(!i.empty)continue;let r=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));r&&(e=e.concat(t.renderMatch(r,n)))}return X.set(e,!0)}c(Ou,"bracketDeco");var y0=te.fromClass(class{constructor(n){this.paused=!1,this.decorations=Ou(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=Ou(n.state),this.paused=!1))}},{decorations:c(n=>n.decorations,"decorations")}),b0=[y0,p0];function Vu(n={}){return[zu.of(n),b0]}c(Vu,"bracketMatching");var ea=new j;function Fl(n,e,t){let i=n.prop(e<0?j.openedBy:j.closedBy);if(i)return i;if(n.name.length==1){let r=t.indexOf(n.name);if(r>-1&&r%2==(e<0?1:0))return[t[r+e]]}return null}c(Fl,"matchingNodes");function Hl(n){let e=n.type.prop(ea);return e?e(n.node):n}c(Hl,"findHandle");function Je(n,e,t,i={}){let r=i.maxScanDistance||ju,s=i.brackets||Eu,o=F(n),l=o.resolveInner(e,t);for(let a=l;a;a=a.parent){let h=Fl(a.type,t,s);if(h&&a.from<a.to){let f=Hl(a);if(f&&(t>0?e>=f.from&&e<f.to:e>f.from&&e<=f.to))return x0(n,e,t,a,f,h,s)}}return Q0(n,e,t,o,l.type,r,s)}c(Je,"matchBrackets");function x0(n,e,t,i,r,s,o){let l=i.parent,a={from:r.from,to:r.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&&s.indexOf(f.type.name)>-1&&f.from<f.to){let u=Hl(f);return{start:a,end:u?{from:u.from,to:u.to}:void 0,matched:!0}}else if(Fl(f.type,t,o))h++;else if(Fl(f.type,-t,o)){if(h==0){let u=Hl(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(x0,"matchMarkedBrackets");function Q0(n,e,t,i,r,s,o){if(t<0?!e:e==n.doc.length)return null;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<=s;){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 y=o.indexOf(O[m]);if(!(y<0||i.resolveInner(p+m,1).type!=r))if(y%2==0==t>0)u++;else{if(u==1)return{start:h,end:{from:p+m,to:p+m+1},matched:y>>1==a>>1};u--}}t>0&&(d+=O.length)}return f.done?{start:h,matched:!1}:null}c(Q0,"matchPlainBrackets");var w0=Object.create(null),pu=[de.none];var mu=[],gu=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]=$0(w0,e);function Ll(n,e){mu.indexOf(n)>-1||(mu.push(n),console.warn(e))}c(Ll,"warnForPart");function $0(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):Ll(h,`Modifier ${h} used at start of tag`):a.length?Ll(h,`Tag ${h} used as modifier`):a=Array.isArray(f)?f:[f]:Ll(h,`Unknown highlighting tag ${h}`)}for(let h of a)t.push(h)}if(!t.length)return 0;let i=e.replace(/ /g,"_"),r=i+" "+t.map(l=>l.id),s=gu[r];if(s)return s.id;let o=gu[r]=de.define({id:pu.length,name:i,props:[Xt({[i]:t})]});return pu.push(o),o.id}c($0,"createTokenType");var nQ={rtl:X.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:q.RTL}),ltr:X.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:q.LTR}),auto:X.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var v0=c(n=>{let{state:e}=n,t=e.doc.lineAt(e.selection.main.from),i=la(n.state,t.from);return i.line?P0(n):i.block?C0(n):!1},"toggleComment");function oa(n,e){return({state:t,dispatch:i})=>{if(t.readOnly)return!1;let r=n(e,t);return r?(i(t.update(r)),!0):!1}}c(oa,"command");var P0=oa(A0,0);var T0=oa(Nu,0);var C0=oa((n,e)=>Nu(n,e,X0(e)),0);function la(n,e){let t=n.languageDataAt("commentTokens",e,1);return t.length?t[0]:{}}c(la,"getConfig");var Zn=50;function Z0(n,{open:e,close:t},i,r){let s=n.sliceDoc(i-Zn,i),o=n.sliceDoc(r,r+Zn),l=/\s*$/.exec(s)[0].length,a=/^\s*/.exec(o)[0].length,h=s.length-l;if(s.slice(h-e.length,h)==e&&o.slice(a,a+t.length)==t)return{open:{pos:i-l,margin:l&&1},close:{pos:r+a,margin:a&&1}};let f,u;r-i<=2*Zn?f=u=n.sliceDoc(i,r):(f=n.sliceDoc(i,i+Zn),u=n.sliceDoc(r-Zn,r));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:r-O-t.length,margin:/\s/.test(u.charAt(p-1))?1:0}}:null}c(Z0,"findBlockComment");function X0(n){let e=[];for(let t of n.selection.ranges){let i=n.doc.lineAt(t.from),r=t.to<=i.to?i:n.doc.lineAt(t.to);r.from>i.from&&r.from==t.to&&(r=t.to==i.to+1?i:n.doc.lineAt(t.to-1));let s=e.length-1;s>=0&&e[s].to>i.from?e[s].to=r.to:e.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:r.to})}return e}c(X0,"selectedLineRanges");function Nu(n,e,t=e.selection.ranges){let i=t.map(s=>la(e,s.from).block);if(!i.every(s=>s))return null;let r=t.map((s,o)=>Z0(e,i[o],s.from,s.to));if(n!=2&&!r.every(s=>s))return{changes:e.changes(t.map((s,o)=>r[o]?[]:[{from:s.from,insert:i[o].open+" "},{from:s.to,insert:" "+i[o].close}]))};if(n!=1&&r.some(s=>s)){let s=[];for(let o=0,l;o<r.length;o++)if(l=r[o]){let a=i[o],{open:h,close:f}=l;s.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:s}}return null}c(Nu,"changeBlockComment");function A0(n,e,t=e.selection.ranges){let i=[],r=-1;e:for(let{from:s,to:o}of t){let l=i.length,a=1e9,h;for(let f=s;f<=o;){let u=e.doc.lineAt(f);if(h==null&&(h=la(e,u.from).line,!h))continue e;if(u.from>r&&(s==o||o>u.from)){r=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(s=>s.comment<0&&(!s.empty||s.single))){let s=[];for(let{line:l,token:a,indent:h,empty:f,single:u}of i)(u||!f)&&s.push({from:l.from+h,insert:a+" "});let o=e.changes(s);return{changes:o,selection:e.selection.map(o,1)}}else if(n!=1&&i.some(s=>s.comment>=0)){let s=[];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++,s.push({from:h,to:f})}return{changes:s}}return null}c(A0,"changeLineComment");var ia=Qe.define(),R0=Qe.define(),M0=P.define(),Gu=P.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,r)=>e(i,r)||t(i,r),"joinToEvent")})}}),Uu=ie.define({create(){return li.empty},update(n,e){let t=e.state.facet(Gu),i=e.annotation(ia);if(i){let a=et.fromTransaction(e,i.selection),h=i.side,f=h==0?n.undone:n.done;return a?f=rs(f,f.length,t.minDepth,a):f=Ju(f,e.startState.selection),new li(h==0?i.rest:f,h==0?f:i.rest)}let r=e.annotation(R0);if((r=="full"||r=="before")&&(n=n.isolate()),e.annotation(re.addToHistory)===!1)return e.changes.empty?n:n.addMapping(e.changes.desc);let s=et.fromTransaction(e),o=e.annotation(re.time),l=e.annotation(re.userEvent);return s?n=n.addChanges(s,o,l,t,e):e.selection&&(n=n.addSelection(e.startState.selection,o,l,t.newGroupDelay)),(r=="full"||r=="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 Fu(n={}){return[Uu,Gu.of(n),v.domEventHandlers({beforeinput(e,t){let i=e.inputType=="historyUndo"?Hu:e.inputType=="historyRedo"?na:null;return i?(e.preventDefault(),i(t)):!1}})]}c(Fu,"history");function ss(n,e){return function({state:t,dispatch:i}){if(!e&&t.readOnly)return!1;let r=t.field(Uu,!1);if(!r)return!1;let s=r.pop(n,t,e);return s?(i(s),!0):!1}}c(ss,"cmd");var Hu=ss(0,!1),na=ss(1,!1),j0=ss(0,!0),E0=ss(1,!0);var et=class n{static{c(this,"HistEvent")}constructor(e,t,i,r,s){this.changes=e,this.effects=t,this.mapped=i,this.startSelection=r,this.selectionsAfter=s}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(r=>r.toJSON())}}static fromJSON(e){return new n(e.changes&&Se.fromJSON(e.changes),[],e.mapped&&ut.fromJSON(e.mapped),e.startSelection&&b.fromJSON(e.startSelection),e.selectionsAfter.map(b.fromJSON))}static fromTransaction(e,t){let i=Ne;for(let r of e.startState.facet(M0)){let s=r(e);s.length&&(i=i.concat(s))}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 rs(n,e,t,i){let r=e+1>t+20?e-t-1:0,s=n.slice(r,e);return s.push(i),s}c(rs,"updateBranch");function z0(n,e){let t=[],i=!1;return n.iterChangedRanges((r,s)=>t.push(r,s)),e.iterChangedRanges((r,s,o,l)=>{for(let a=0;a<t.length;){let h=t[a++],f=t[a++];l>=h&&o<=f&&(i=!0)}}),i}c(z0,"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 Ku(n,e){return n.length?e.length?n.concat(e):n:e}c(Ku,"conc");var Ne=[],_0=200;function Ju(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),rs(n,n.length-1,1e9,t.setSelAfter(i)))}else return[et.selection([e])]}c(Ju,"addSelection");function Y0(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(Y0,"popSelection");function ta(n,e){if(!n.length)return n;let t=n.length,i=Ne;for(;t;){let r=W0(n[t-1],e,i);if(r.changes&&!r.changes.empty||r.effects.length){let s=n.slice(0,t);return s[t-1]=r,s}else e=r.mapped,t--,i=r.selectionsAfter}return i.length?[et.selection(i)]:Ne}c(ta,"addMappingToBranch");function W0(n,e,t){let i=Ku(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(e)):Ne,t);if(!n.changes)return et.selection(i);let r=n.changes.map(e),s=e.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(s):s;return new et(r,R.mapEffects(n.effects,e),o,n.startSelection.map(s),i)}c(W0,"mapEvent");var D0=/^(input\.type|delete)($|\.)/,li=class n{static{c(this,"HistoryState")}constructor(e,t,i=0,r=void 0){this.done=e,this.undone=t,this.prevTime=i,this.prevUserEvent=r}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(e,t,i,r,s){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&e.changes&&(!i||D0.test(i))&&(!l.selectionsAfter.length&&t-this.prevTime<r.newGroupDelay&&r.joinToEvent(s,z0(l.changes,e.changes))||i=="input.type.compose")?o=rs(o,o.length-1,r.minDepth,new et(e.changes.compose(l.changes),Ku(R.mapEffects(e.effects,l.changes),l.effects),l.mapped,l.startSelection,Ne)):o=rs(o,o.length,r.minDepth,e),new n(o,Ne,t,i)}addSelection(e,t,i,r){let s=this.done.length?this.done[this.done.length-1].selectionsAfter:Ne;return s.length>0&&t-this.prevTime<r&&i==this.prevUserEvent&&i&&/^select($|\.)/.test(i)&&V0(s[s.length-1],e)?this:new n(Ju(this.done,e),this.undone,t,i)}addMapping(e){return new n(ta(this.done,e),ta(this.undone,e),this.prevTime,this.prevUserEvent)}pop(e,t,i){let r=e==0?this.done:this.undone;if(r.length==0)return null;let s=r[r.length-1],o=s.selectionsAfter[0]||(s.startSelection?s.startSelection.map(s.changes.invertedDesc,1):t.selection);if(i&&s.selectionsAfter.length)return t.update({selection:s.selectionsAfter[s.selectionsAfter.length-1],annotations:ia.of({side:e,rest:Y0(r),selection:o}),userEvent:e==0?"select.undo":"select.redo",scrollIntoView:!0});if(s.changes){let l=r.length==1?Ne:r.slice(0,r.length-1);return s.mapped&&(l=ta(l,s.mapped)),t.update({changes:s.changes,selection:s.startSelection,effects:s.effects,annotations:ia.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 ed=[{key:"Mod-z",run:Hu,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:na,preventDefault:!0},{linux:"Ctrl-Shift-z",run:na,preventDefault:!0},{key:"Mod-u",run:j0,preventDefault:!0},{key:"Alt-u",mac:"Mod-Shift-u",run:E0,preventDefault:!0}];function _i(n,e){return b.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 os(n,e){return b.cursor(e?n.to:n.from)}c(os,"rangeEnd");function td(n,e){return it(n,t=>t.empty?n.moveByChar(t,e):os(t,e))}c(td,"cursorByChar");function me(n){return n.textDirectionAt(n.state.selection.main.head)==q.LTR}c(me,"ltrAtCursor");var id=c(n=>td(n,!me(n)),"cursorCharLeft"),nd=c(n=>td(n,me(n)),"cursorCharRight");function rd(n,e){return it(n,t=>t.empty?n.moveByGroup(t,e):os(t,e))}c(rd,"cursorByGroup");var L0=c(n=>rd(n,!me(n)),"cursorGroupLeft"),q0=c(n=>rd(n,me(n)),"cursorGroupRight");var OQ=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function B0(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(B0,"interestingNode");function ls(n,e,t){let i=F(n).resolveInner(e.head),r=t?j.closedBy:j.openedBy;for(let a=e.head;;){let h=t?i.childAfter(a):i.childBefore(a);if(!h)break;B0(n,h,r)?i=h:a=t?h.to:h.from}let s=i.type.prop(r),o,l;return s&&(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,b.cursor(l,t?-1:1)}c(ls,"moveBySyntax");var I0=c(n=>it(n,e=>ls(n.state,e,!me(n))),"cursorSyntaxLeft"),N0=c(n=>it(n,e=>ls(n.state,e,me(n))),"cursorSyntaxRight");function sd(n,e){return it(n,t=>{if(!t.empty)return os(t,e);let i=n.moveVertically(t,e);return i.head!=t.head?i:n.moveToLineBoundary(t,e)})}c(sd,"cursorByLine");var od=c(n=>sd(n,!1),"cursorLineUp"),ld=c(n=>sd(n,!0),"cursorLineDown");function ad(n){let e=n.scrollDOM.clientHeight<n.scrollDOM.scrollHeight-2,t=0,i=0,r;if(e){for(let s of n.state.facet(v.scrollMargins)){let o=s(n);o?.top&&(t=Math.max(o?.top,t)),o?.bottom&&(i=Math.max(o?.bottom,i))}r=n.scrollDOM.clientHeight-t-i}else r=(n.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:t,marginBottom:i,selfScroll:e,height:Math.max(n.defaultLineHeight,r-5)}}c(ad,"pageInfo");function hd(n,e){let t=ad(n),{state:i}=n,r=_i(i.selection,o=>o.empty?n.moveVertically(o,e,t.height):os(o,e));if(r.eq(i.selection))return!1;let s;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&&(s=v.scrollIntoView(r.main.head,{y:"start",yMargin:o.top-a}))}return n.dispatch(tt(i,r),{effects:s}),!0}c(hd,"cursorByPage");var _u=c(n=>hd(n,!1),"cursorPageUp"),ra=c(n=>hd(n,!0),"cursorPageDown");function jt(n,e,t){let i=n.lineBlockAt(e.head),r=n.moveToLineBoundary(e,t);if(r.head==e.head&&r.head!=(t?i.to:i.from)&&(r=n.moveToLineBoundary(e,t,!1)),!t&&r.head==i.from&&i.length){let s=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;s&&e.head!=i.from+s&&(r=b.cursor(i.from+s))}return r}c(jt,"moveByLineBoundary");var G0=c(n=>it(n,e=>jt(n,e,!0)),"cursorLineBoundaryForward"),U0=c(n=>it(n,e=>jt(n,e,!1)),"cursorLineBoundaryBackward"),F0=c(n=>it(n,e=>jt(n,e,!me(n))),"cursorLineBoundaryLeft"),H0=c(n=>it(n,e=>jt(n,e,me(n))),"cursorLineBoundaryRight"),K0=c(n=>it(n,e=>b.cursor(n.lineBlockAt(e.head).from,1)),"cursorLineStart"),J0=c(n=>it(n,e=>b.cursor(n.lineBlockAt(e.head).to,-1)),"cursorLineEnd");function eS(n,e,t){let i=!1,r=_i(n.selection,s=>{let o=Je(n,s.head,-1)||Je(n,s.head,1)||s.head>0&&Je(n,s.head-1,1)||s.head<n.doc.length&&Je(n,s.head+1,-1);if(!o||!o.end)return s;i=!0;let l=o.start.from==s.head?o.end.to:o.end.from;return t?b.range(s.anchor,l):b.cursor(l)});return i?(e(tt(n,r)),!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 r=e(i);return b.range(i.anchor,r.head,r.goalColumn,r.bidiLevel||void 0,r.assoc)});return t.eq(n.state.selection)?!1:(n.dispatch(tt(n.state,t)),!0)}c(Ge,"extendSel");function cd(n,e){return Ge(n,t=>n.moveByChar(t,e))}c(cd,"selectByChar");var fd=c(n=>cd(n,!me(n)),"selectCharLeft"),ud=c(n=>cd(n,me(n)),"selectCharRight");function dd(n,e){return Ge(n,t=>n.moveByGroup(t,e))}c(dd,"selectByGroup");var iS=c(n=>dd(n,!me(n)),"selectGroupLeft"),nS=c(n=>dd(n,me(n)),"selectGroupRight");var rS=c(n=>Ge(n,e=>ls(n.state,e,!me(n))),"selectSyntaxLeft"),sS=c(n=>Ge(n,e=>ls(n.state,e,me(n))),"selectSyntaxRight");function Od(n,e){return Ge(n,t=>n.moveVertically(t,e))}c(Od,"selectByLine");var pd=c(n=>Od(n,!1),"selectLineUp"),md=c(n=>Od(n,!0),"selectLineDown");function gd(n,e){return Ge(n,t=>n.moveVertically(t,e,ad(n).height))}c(gd,"selectByPage");var Yu=c(n=>gd(n,!1),"selectPageUp"),Wu=c(n=>gd(n,!0),"selectPageDown"),oS=c(n=>Ge(n,e=>jt(n,e,!0)),"selectLineBoundaryForward"),lS=c(n=>Ge(n,e=>jt(n,e,!1)),"selectLineBoundaryBackward"),aS=c(n=>Ge(n,e=>jt(n,e,!me(n))),"selectLineBoundaryLeft"),hS=c(n=>Ge(n,e=>jt(n,e,me(n))),"selectLineBoundaryRight"),cS=c(n=>Ge(n,e=>b.cursor(n.lineBlockAt(e.head).from)),"selectLineStart"),fS=c(n=>Ge(n,e=>b.cursor(n.lineBlockAt(e.head).to)),"selectLineEnd"),Du=c(({state:n,dispatch:e})=>(e(tt(n,{anchor:0})),!0),"cursorDocStart"),Lu=c(({state:n,dispatch:e})=>(e(tt(n,{anchor:n.doc.length})),!0),"cursorDocEnd"),qu=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=as(n).map(({from:i,to:r})=>b.range(i,Math.min(r+1,n.doc.length)));return e(n.update({selection:b.create(t),userEvent:"select"})),!0},"selectLine"),OS=c(({state:n,dispatch:e})=>{let t=_i(n.selection,i=>{let r=F(n),s=r.resolveStack(i.from,1);if(i.empty){let o=r.resolveStack(i.from,-1);o.node.from>=s.node.from&&o.node.to<=s.node.to&&(s=o)}for(let o=s;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 b.range(l.to,l.from)}return i});return t.eq(n.selection)?!1:(e(tt(n,t)),!0)},"selectParentSyntax");function Sd(n,e){let{state:t}=n,i=t.selection,r=t.selection.ranges.slice();for(let s of t.selection.ranges){let o=t.doc.lineAt(s.head);if(e?o.to<n.state.doc.length:o.from>0)for(let l=s;;){let a=n.moveVertically(l,e);if(a.head<o.from||a.head>o.to){r.some(h=>h.head==a.head)||r.push(a);break}else{if(a.head==l.head)break;l=a}}}return r.length==i.ranges.length?!1:(n.dispatch(tt(t,b.create(r,r.length-1))),!0)}c(Sd,"addCursorVertically");var pS=c(n=>Sd(n,!1),"addCursorAbove"),mS=c(n=>Sd(n,!0),"addCursorBelow"),gS=c(({state:n,dispatch:e})=>{let t=n.selection,i=null;return t.ranges.length>1?i=b.create([t.main]):t.main.empty||(i=b.create([b.cursor(t.main.head)])),i?(e(tt(n,i)),!0):!1},"simplifySelection");function Xn(n,e){if(n.state.readOnly)return!1;let t="delete.selection",{state:i}=n,r=i.changeByRange(s=>{let{from:o,to:l}=s;if(o==l){let a=e(s);a<o?(t="delete.backward",a=ns(n,a,!1)):a>o&&(t="delete.forward",a=ns(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=ns(n,o,!1),l=ns(n,l,!0);return o==l?{range:s}:{changes:{from:o,to:l},range:b.cursor(o,o<s.head?-1:1)}});return r.changes.empty?!1:(n.dispatch(i.update(r,{scrollIntoView:!0,userEvent:t,effects:t=="delete.selection"?v.announce.of(i.phrase("Selection deleted")):void 0})),!0)}c(Xn,"deleteBy");function ns(n,e,t){if(n instanceof v)for(let i of n.state.facet(v.atomicRanges).map(r=>r(n)))i.between(e,e,(r,s)=>{r<e&&s>e&&(e=t?s:r)});return e}c(ns,"skipAtomic");var yd=c((n,e,t)=>Xn(n,i=>{let r=i.from,{state:s}=n,o=s.doc.lineAt(r),l,a;if(t&&!e&&r>o.from&&r<o.from+200&&!/[^ \t]/.test(l=o.text.slice(0,r-o.from))){if(l[l.length-1]==" ")return r-1;let h=dt(l,s.tabSize),f=h%Tn(s)||Tn(s);for(let u=0;u<f&&l[l.length-1-u]==" ";u++)r--;a=r}else a=ne(o.text,r-o.from,e,e)+o.from,a==r&&o.number!=(e?s.doc.lines:1)?a+=e?1:-1:!e&&/[\ufe00-\ufe0f]/.test(o.text.slice(a-o.from,r-o.from))&&(a=ne(o.text,a-o.from,!1,!1)+o.from);return a}),"deleteByChar"),sa=c(n=>yd(n,!1,!0),"deleteCharBackward");var bd=c(n=>yd(n,!0,!1),"deleteCharForward"),xd=c((n,e)=>Xn(n,t=>{let i=t.head,{state:r}=n,s=r.doc.lineAt(i),o=r.charCategorizer(i);for(let l=null;;){if(i==(e?s.to:s.from)){i==t.head&&s.number!=(e?r.doc.lines:1)&&(i+=e?1:-1);break}let a=ne(s.text,i-s.from,e)+s.from,h=s.text.slice(Math.min(i,a)-s.from,Math.max(i,a)-s.from),f=o(h);if(l!=null&&f!=l)break;(h!=" "||i!=t.head)&&(l=f),i=a}return i}),"deleteByGroup"),Qd=c(n=>xd(n,!1),"deleteGroupBackward"),SS=c(n=>xd(n,!0),"deleteGroupForward");var yS=c(n=>Xn(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 bS=c(n=>Xn(n,e=>{let t=n.moveToLineBoundary(e,!1).head;return e.head>t?t:Math.max(0,e.head-1)}),"deleteLineBoundaryBackward"),xS=c(n=>Xn(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 QS=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:b.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 r=i.from,s=n.doc.lineAt(r),o=r==s.from?r-1:ne(s.text,r-s.from,!1)+s.from,l=r==s.to?r+1:ne(s.text,r-s.from,!0)+s.from;return{changes:{from:o,to:l,insert:n.doc.slice(r,l).append(n.doc.slice(o,r))},range:b.cursor(l)}});return t.changes.empty?!1:(e(n.update(t,{scrollIntoView:!0,userEvent:"move.character"})),!0)},"transposeChars");function as(n){let e=[],t=-1;for(let i of n.selection.ranges){let r=n.doc.lineAt(i.from),s=n.doc.lineAt(i.to);if(!i.empty&&i.to==s.from&&(s=n.doc.lineAt(i.to-1)),t>=r.number){let o=e[e.length-1];o.to=s.to,o.ranges.push(i)}else e.push({from:r.from,to:s.to,ranges:[i]});t=s.number+1}return e}c(as,"selectedLineBlocks");function wd(n,e,t){if(n.readOnly)return!1;let i=[],r=[];for(let s of as(n)){if(t?s.to==n.doc.length:s.from==0)continue;let o=n.doc.lineAt(t?s.to+1:s.from-1),l=o.length+1;if(t){i.push({from:s.to,to:o.to},{from:s.from,insert:o.text+n.lineBreak});for(let a of s.ranges)r.push(b.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:s.from},{from:s.to,insert:n.lineBreak+o.text});for(let a of s.ranges)r.push(b.range(a.anchor-l,a.head-l))}}return i.length?(e(n.update({changes:i,scrollIntoView:!0,selection:b.create(r,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}c(wd,"moveLine");var kS=c(({state:n,dispatch:e})=>wd(n,e,!1),"moveLineUp"),$S=c(({state:n,dispatch:e})=>wd(n,e,!0),"moveLineDown");function kd(n,e,t){if(n.readOnly)return!1;let i=[];for(let s of as(n))t?i.push({from:s.from,insert:n.doc.slice(s.from,s.to)+n.lineBreak}):i.push({from:s.to,insert:n.lineBreak+n.doc.slice(s.from,s.to)});let r=n.changes(i);return e(n.update({changes:r,selection:n.selection.map(r,t?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}c(kd,"copyLine");var vS=c(({state:n,dispatch:e})=>kd(n,e,!1),"copyLineUp"),PS=c(({state:n,dispatch:e})=>kd(n,e,!0),"copyLineDown"),TS=c(n=>{if(n.state.readOnly)return!1;let{state:e}=n,t=e.changes(as(e).map(({from:r,to:s})=>(r>0?r--:s<e.doc.length&&s++,{from:r,to:s}))),i=_i(e.selection,r=>{let s;if(n.lineWrapping){let o=n.lineBlockAt(r.head),l=n.coordsAtPos(r.head,r.assoc||1);l&&(s=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(r,!0,s)}).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),r=t.childAfter(e),s;return i&&r&&i.to<=e&&r.from>=e&&(s=i.type.prop(j.closedBy))&&s.indexOf(r.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(r.from).from&&!/\S/.test(n.sliceDoc(i.to,r.from))?{from:i.to,to:r.from}:null}c(CS,"isBetweenBrackets");var Iu=$d(!1),ZS=$d(!0);function $d(n){return({state:e,dispatch:t})=>{if(e.readOnly)return!1;let i=e.changeByRange(r=>{let{from:s,to:o}=r,l=e.doc.lineAt(s),a=!n&&s==o&&CS(e,s);n&&(s=o=(o<=l.to?l:e.doc.lineAt(o)).to);let h=new ni(e,{simulateBreak:s,simulateDoubleBreak:!!a}),f=es(h,s);for(f==null&&(f=dt(/^\s*/.exec(e.doc.lineAt(s).text)[0],e.tabSize));o<l.to&&/\s/.test(l.text[o-l.from]);)o++;a?{from:s,to:o}=a:s>l.from&&s<l.from+100&&!/\S/.test(l.text.slice(0,s))&&(s=l.from);let u=["",zi(e,f)];return a&&u.push(zi(e,h.lineIndent(l.from,-1))),{changes:{from:s,to:o,insert:V.of(u)},range:b.cursor(s+1+u[1].length)}});return t(e.update(i,{scrollIntoView:!0,userEvent:"input"})),!0}}c($d,"newlineAndIndent");function aa(n,e){let t=-1;return n.changeByRange(i=>{let r=[];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,r,i),t=l.number),o=l.to+1}let s=n.changes(r);return{changes:r,range:b.range(s.mapPos(i.anchor,1),s.mapPos(i.head,1))}})}c(aa,"changeBySelectedLine");var XS=c(({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=Object.create(null),i=new ni(n,{overrideIndentation:c(s=>{let o=t[s];return o??-1},"overrideIndentation")}),r=aa(n,(s,o,l)=>{let a=es(i,s.from);if(a==null)return;/\S/.test(s.text)||(a=0);let h=/^\s*/.exec(s.text)[0],f=zi(n,a);(h!=f||l.from<s.from+h.length)&&(t[s.from]=a,o.push({from:s.from,to:s.from+h.length,insert:f}))});return r.changes.empty||e(n.update(r,{userEvent:"indent"})),!0},"indentSelection"),AS=c(({state:n,dispatch:e})=>n.readOnly?!1:(e(n.update(aa(n,(t,i)=>{i.push({from:t.from,insert:n.facet(Ei)})}),{userEvent:"input.indent"})),!0),"indentMore"),RS=c(({state:n,dispatch:e})=>n.readOnly?!1:(e(n.update(aa(n,(t,i)=>{let r=/^\s*/.exec(t.text)[0];if(!r)return;let s=dt(r,n.tabSize),o=0,l=zi(n,Math.max(0,s-Tn(n)));for(;o<r.length&&o<l.length&&r.charCodeAt(o)==l.charCodeAt(o);)o++;i.push({from:t.from+o,to:t.from+r.length,insert:l.slice(o)})}),{userEvent:"delete.dedent"})),!0),"indentLess"),MS=c(n=>(n.setTabFocusMode(),!0),"toggleTabFocusMode");var jS=[{key:"Ctrl-b",run:id,shift:fd,preventDefault:!0},{key:"Ctrl-f",run:nd,shift:ud},{key:"Ctrl-p",run:od,shift:pd},{key:"Ctrl-n",run:ld,shift:md},{key:"Ctrl-a",run:K0,shift:cS},{key:"Ctrl-e",run:J0,shift:fS},{key:"Ctrl-d",run:bd},{key:"Ctrl-h",run:sa},{key:"Ctrl-k",run:yS},{key:"Ctrl-Alt-h",run:Qd},{key:"Ctrl-o",run:QS},{key:"Ctrl-t",run:wS},{key:"Ctrl-v",run:ra}],ES=[{key:"ArrowLeft",run:id,shift:fd,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:L0,shift:iS,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:F0,shift:aS,preventDefault:!0},{key:"ArrowRight",run:nd,shift:ud,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:q0,shift:nS,preventDefault:!0},{mac:"Cmd-ArrowRight",run:H0,shift:hS,preventDefault:!0},{key:"ArrowUp",run:od,shift:pd,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Du,shift:qu},{mac:"Ctrl-ArrowUp",run:_u,shift:Yu},{key:"ArrowDown",run:ld,shift:md,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Lu,shift:Bu},{mac:"Ctrl-ArrowDown",run:ra,shift:Wu},{key:"PageUp",run:_u,shift:Yu},{key:"PageDown",run:ra,shift:Wu},{key:"Home",run:U0,shift:lS,preventDefault:!0},{key:"Mod-Home",run:Du,shift:qu},{key:"End",run:G0,shift:oS,preventDefault:!0},{key:"Mod-End",run:Lu,shift:Bu},{key:"Enter",run:Iu,shift:Iu},{key:"Mod-a",run:uS},{key:"Backspace",run:sa,shift:sa,preventDefault:!0},{key:"Delete",run:bd,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:Qd,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:SS,preventDefault:!0},{mac:"Mod-Backspace",run:bS,preventDefault:!0},{mac:"Mod-Delete",run:xS,preventDefault:!0}].concat(jS.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),vd=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:I0,shift:rS},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:N0,shift:sS},{key:"Alt-ArrowUp",run:kS},{key:"Shift-Alt-ArrowUp",run:vS},{key:"Alt-ArrowDown",run:$S},{key:"Shift-Alt-ArrowDown",run:PS},{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:AS},{key:"Mod-Alt-\\",run:XS},{key:"Shift-Mod-k",run:TS},{key:"Shift-Mod-\\",run:tS},{key:"Mod-/",run:v0},{key:"Alt-A",run:T0},{key:"Ctrl-m",mac:"Shift-Alt-m",run:MS}].concat(ES);var Pd=typeof String.prototype.normalize=="function"?n=>n.normalize("NFKD"):n=>n,zt=class{static{c(this,"SearchCursor")}constructor(e,t,i=0,r=e.length,s,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,r),this.bufferStart=i,this.normalize=s?l=>s(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+=Xe(e);let r=this.normalize(t);if(r.length)for(let s=0,o=i;;s++){let l=r.charCodeAt(s),a=this.match(l,o,this.bufferPos+this.bufferStart);if(s==r.length-1){if(a)return this.value=a,this;break}o==i&&s<t.length&&t.charCodeAt(s)==l&&o++}}}match(e,t,i){let r=null;for(let s=0;s<this.matches.length;s+=2){let o=this.matches[s],l=!1;this.query.charCodeAt(o)==e&&(o==this.query.length-1?r={from:this.matches[s+1],to:i}:(this.matches[s]++,l=!0)),l||(this.matches.splice(s,2),s-=2)}return this.query.charCodeAt(0)==e&&(this.query.length==1?r={from:t,to:i}:this.matches.push(1,t)),r&&this.test&&!this.test(r.from,r.to,this.buffer,this.bufferStart)&&(r=null),r}};typeof Symbol<"u"&&(zt.prototype[Symbol.iterator]=function(){return this});var Zd={from:-1,to:-1,match:/.*/.exec("")},Oa="gm"+(/x/.unicode==null?"":"u"),fs=class{static{c(this,"RegExpCursor")}constructor(e,t,i,r=0,s=e.length){if(this.text=e,this.to=s,this.curLine="",this.done=!1,this.value=Zd,/\\[sWDnr]|\n|\r|\[\^/.test(t))return new ds(e,t,i,r,s);this.re=new RegExp(t,Oa+(i?.ignoreCase?"i":"")),this.test=i?.test,this.iter=e.iter();let o=e.lineAt(r);this.curLineStart=o.from,this.matchPos=Os(e,r),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,r=i+t[0].length;if(this.matchPos=Os(this.text,r+(i==r?1:0)),i==this.curLineStart+this.curLine.length&&this.nextLine(),(i<r||i>this.value.to)&&(!this.test||this.test(i,r,t)))return this.value={from:i,to:r,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}}},ha=new WeakMap,us=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 r=ha.get(e);if(!r||r.from>=i||r.to<=t){let l=new n(t,e.sliceString(t,i));return ha.set(e,l),l}if(r.from==t&&r.to==i)return r;let{text:s,from:o}=r;return o>t&&(s=e.sliceString(t,o)+s,o=t),r.to<i&&(s+=e.sliceString(r.to,i)),ha.set(e,new n(o,s)),new n(t,s.slice(t-o,i-o))}},ds=class{static{c(this,"MultilineRegExpCursor")}constructor(e,t,i,r,s){this.text=e,this.to=s,this.done=!1,this.value=Zd,this.matchPos=Os(e,r),this.re=new RegExp(t,Oa+(i?.ignoreCase?"i":"")),this.test=i?.test,this.flat=us.get(e,r,this.chunkEnd(r+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,r=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,r,t)))return this.value={from:i,to:r,match:t},this.matchPos=Os(this.text,r+(i==r?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=us.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}};typeof Symbol<"u"&&(fs.prototype[Symbol.iterator]=ds.prototype[Symbol.iterator]=function(){return this});function zS(n){try{return new RegExp(n,Oa),!0}catch{return!1}}c(zS,"validRegExp");function Os(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(Os,"toCharEnd");var VS=c(n=>{let{state:e}=n,t=String(e.doc.lineAt(n.state.selection.main.head).number),{close:i,result:r}=qf(n,{label:e.phrase("Go to line"),input:{type:"text",name:"line",value:t},focus:!0,submitLabel:e.phrase("go")});return r.then(s=>{let o=s&&/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(s.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=b.cursor(p.from+Math.max(0,Math.min(d,p.length)));n.dispatch({effects:[i,v.scrollIntoView(m.from,{y:"center"})],selection:m})}),!0},"gotoLine"),_S={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},Xd=P.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=[qS,LS];return n&&e.push(Xd.of(n)),e}c(Ad,"highlightSelectionMatches");var YS=X.mark({class:"cm-selectionMatch"}),WS=X.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function Td(n,e,t,i){return(t==0||n(e.sliceDoc(t-1,t))!=I.Word)&&(i==e.doc.length||n(e.sliceDoc(i,i+1))!=I.Word)}c(Td,"insideWordBoundaries");function DS(n,e,t,i){return n(e.sliceDoc(t,t+1))==I.Word&&n(e.sliceDoc(i-1,i))==I.Word}c(DS,"insideWord");var LS=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(Xd),{state:t}=n,i=t.selection;if(i.ranges.length>1)return X.none;let r=i.main,s,o=null;if(r.empty){if(!e.highlightWordAroundCursor)return X.none;let a=t.wordAt(r.head);if(!a)return X.none;o=t.charCategorizer(r.head),s=t.sliceDoc(a.from,a.to)}else{let a=r.to-r.from;if(a<e.minSelectionLength||a>200)return X.none;if(e.wholeWords){if(s=t.sliceDoc(r.from,r.to),o=t.charCategorizer(r.head),!(Td(o,t,r.from,r.to)&&DS(o,t,r.from,r.to)))return X.none}else if(s=t.sliceDoc(r.from,r.to),!s)return X.none}let l=[];for(let a of n.visibleRanges){let h=new zt(t.doc,s,a.from,a.to);for(;!h.next().done;){let{from:f,to:u}=h.value;if((!o||Td(o,t,f,u))&&(r.empty&&f<=r.from&&u>=r.to?l.push(WS.range(f,u)):(f>=r.to||u<=r.from)&&l.push(YS.range(f,u)),l.length>e.maxMatches))return X.none}}return X.set(l)}},{decorations:c(n=>n.decorations,"decorations")}),qS=v.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),BS=c(({state:n,dispatch:e})=>{let{selection:t}=n,i=b.create(t.ranges.map(r=>n.wordAt(r.head)||b.cursor(r.head)),t.mainIndex);return i.eq(t)?!1:(e(n.update({selection:i})),!0)},"selectWord");function IS(n,e){let{main:t,ranges:i}=n.selection,r=n.wordAt(t.head),s=r&&r.from==t.from&&r.to==t.to;for(let o=!1,l=new zt(n.doc,e,i[i.length-1].to);;)if(l.next(),l.done){if(o)return null;l=new zt(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(s){let a=n.wordAt(l.value.from);if(!a||a.from!=l.value.from||a.to!=l.value.to)continue}return l.value}}c(IS,"findNextOccurrence");var NS=c(({state:n,dispatch:e})=>{let{ranges:t}=n.selection;if(t.some(s=>s.from===s.to))return BS({state:n,dispatch:e});let i=n.sliceDoc(t[0].from,t[0].to);if(n.selection.ranges.some(s=>n.sliceDoc(s.from,s.to)!=i))return!1;let r=IS(n,i);return r?(e(n.update({selection:n.selection.addRange(b.range(r.from,r.to),!1),effects:v.scrollIntoView(r.to)})),!0):!1},"selectNextOccurrence"),Di=P.define({combine(n){return pe(n,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:c(e=>new da(e),"createPanel"),scrollToMatch:c(e=>v.scrollIntoView(e),"scrollToMatch")})}});var ps=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||zS(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 fa(this):new ca(this)}getCursor(e,t=0,i){let r=e.doc?e:G.create({doc:e});return i==null&&(i=r.doc.length),this.regexp?Wi(this,r,t,i):Yi(this,r,t,i)}},ms=class{static{c(this,"QueryType")}constructor(e){this.spec=e}};function GS(n,e,t){return(i,r,s,o)=>{if(t&&!t(i,r,s,o))return!1;let l=i>=o&&r<=o+s.length?s.slice(i-o,r-o):e.doc.sliceString(i,r);return n(l,e,i,r)}}c(GS,"wrapStringTest");function Yi(n,e,t,i){let r;return n.wholeWord&&(r=US(e.doc,e.charCategorizer(e.selection.main.head))),n.test&&(r=GS(n.test,e,r)),new zt(e.doc,n.unquoted,t,i,n.caseSensitive?void 0:s=>s.toLowerCase(),r)}c(Yi,"stringCursor");function US(n,e){return(t,i,r,s)=>((s>t||s+r.length<i)&&(s=Math.max(0,t-2),r=n.sliceString(s,Math.min(n.length,i+2))),(e(gs(r,t-s))!=I.Word||e(Ss(r,t-s))!=I.Word)&&(e(Ss(r,i-s))!=I.Word||e(gs(r,i-s))!=I.Word))}c(US,"stringWordTest");var ca=class extends ms{static{c(this,"StringQuery")}constructor(e){super(e)}nextMatch(e,t,i){let r=Yi(this.spec,e,i,e.doc.length).nextOverlapping();if(r.done){let s=Math.min(e.doc.length,t+this.spec.unquoted.length);r=Yi(this.spec,e,0,s).nextOverlapping()}return r.done||r.value.from==t&&r.value.to==i?null:r.value}prevMatchInRange(e,t,i){for(let r=i;;){let s=Math.max(t,r-1e4-this.spec.unquoted.length),o=Yi(this.spec,e,s,r),l=null;for(;!o.nextOverlapping().done;)l=o.value;if(l)return l;if(s==t)return null;r-=1e4}}prevMatch(e,t,i){let r=this.prevMatchInRange(e,0,t);return r||(r=this.prevMatchInRange(e,Math.max(0,i-this.spec.unquoted.length),e.doc.length)),r&&(r.from!=t||r.to!=i)?r:null}getReplacement(e){return this.spec.unquote(this.spec.replace)}matchAll(e,t){let i=Yi(this.spec,e,0,e.doc.length),r=[];for(;!i.next().done;){if(r.length>=t)return null;r.push(i.value)}return r}highlight(e,t,i,r){let s=Yi(this.spec,e,Math.max(0,t-this.spec.unquoted.length),Math.min(i+this.spec.unquoted.length,e.doc.length));for(;!s.next().done;)r(s.value.from,s.value.to)}};function FS(n,e,t){return(i,r,s)=>(!t||t(i,r,s))&&n(s[0],e,i,r)}c(FS,"wrapRegexpTest");function Wi(n,e,t,i){let r;return n.wholeWord&&(r=HS(e.charCategorizer(e.selection.main.head))),n.test&&(r=FS(n.test,e,r)),new fs(e.doc,n.search,{ignoreCase:!n.caseSensitive,test:r},t,i)}c(Wi,"regexpCursor");function gs(n,e){return n.slice(ne(n,e,!1),e)}c(gs,"charBefore");function Ss(n,e){return n.slice(e,ne(n,e))}c(Ss,"charAfter");function HS(n){return(e,t,i)=>!i[0].length||(n(gs(i.input,i.index))!=I.Word||n(Ss(i.input,i.index))!=I.Word)&&(n(Ss(i.input,i.index+i[0].length))!=I.Word||n(gs(i.input,i.index+i[0].length))!=I.Word)}c(HS,"regexpWordTest");var fa=class extends ms{static{c(this,"RegExpQuery")}nextMatch(e,t,i){let r=Wi(this.spec,e,i,e.doc.length).next();return r.done&&(r=Wi(this.spec,e,0,t).next()),r.done?null:r.value}prevMatchInRange(e,t,i){for(let r=1;;r++){let s=Math.max(t,i-r*1e4),o=Wi(this.spec,e,s,i),l=null;for(;!o.next().done;)l=o.value;if(l&&(s==t||l.from>s+10))return l;if(s==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 r=i.length;r>0;r--){let s=+i.slice(0,r);if(s>0&&s<e.match.length)return e.match[s]+i.slice(r)}return t})}matchAll(e,t){let i=Wi(this.spec,e,0,e.doc.length),r=[];for(;!i.next().done;){if(r.length>=t)return null;r.push(i.value)}return r}highlight(e,t,i,r){let s=Wi(this.spec,e,Math.max(0,t-250),Math.min(i+250,e.doc.length));for(;!s.next().done;)r(s.value.from,s.value.to)}},Rn=R.define(),pa=R.define(),Et=ie.define({create(n){return new An(ua(n).create(),null)},update(n,e){for(let t of e.effects)t.is(Rn)?n=new An(t.value.create(),n.panel):t.is(pa)&&(n=new An(n.query,t.value?ma:null));return n},provide:c(n=>Jt.from(n,e=>e.panel),"provide")});var An=class{static{c(this,"SearchState")}constructor(e,t){this.query=e,this.panel=t}},KS=X.mark({class:"cm-searchMatch"}),JS=X.mark({class:"cm-searchMatch cm-searchMatch-selected"}),ey=te.fromClass(class{constructor(n){this.view=n,this.decorations=this.highlight(n.state.field(Et))}update(n){let e=n.state.field(Et);(e!=n.startState.field(Et)||n.docChanged||n.selectionSet||n.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:n,panel:e}){if(!e||!n.spec.valid)return X.none;let{view:t}=this,i=new Ze;for(let r=0,s=t.visibleRanges,o=s.length;r<o;r++){let{from:l,to:a}=s[r];for(;r<o-1&&a>s[r+1].from-500;)a=s[++r].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(Et,!1);return t&&t.query.spec.valid?n(e,t):jd(e)}}c(Mn,"searchCommand");var ys=Mn((n,{query:e})=>{let{to:t}=n.state.selection.main,i=e.nextMatch(n.state,t,t);if(!i)return!1;let r=b.single(i.from,i.to),s=n.state.facet(Di);return n.dispatch({selection:r,effects:[ga(n,i),s.scrollToMatch(r.main,n)],userEvent:"select.search"}),Md(n),!0}),bs=Mn((n,{query:e})=>{let{state:t}=n,{from:i}=t.selection.main,r=e.prevMatch(t,i,i);if(!r)return!1;let s=b.single(r.from,r.to),o=n.state.facet(Di);return n.dispatch({selection:s,effects:[ga(n,r),o.scrollToMatch(s.main,n)],userEvent:"select.search"}),Md(n),!0}),ty=Mn((n,{query:e})=>{let t=e.matchAll(n.state,1e3);return!t||!t.length?!1:(n.dispatch({selection:b.create(t.map(i=>b.range(i.from,i.to))),userEvent:"select.search.matches"}),!0)}),iy=c(({state:n,dispatch:e})=>{let t=n.selection;if(t.ranges.length>1||t.main.empty)return!1;let{from:i,to:r}=t.main,s=[],o=0;for(let l=new zt(n.doc,n.sliceDoc(i,r));!l.next().done;){if(s.length>1e3)return!1;l.value.from==i&&(o=s.length),s.push(b.range(l.value.from,l.value.to))}return e(n.update({selection:b.create(s,o),userEvent:"select.search.matches"})),!0},"selectSelectionMatches"),Cd=Mn((n,{query:e})=>{let{state:t}=n,{from:i,to:r}=t.selection.main;if(t.readOnly)return!1;let s=e.nextMatch(t,i,i);if(!s)return!1;let o=s,l=[],a,h,f=[];o.from==i&&o.to==r&&(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(v.announce.of(t.phrase("replaced match on line $",t.doc.lineAt(i).number)+".")));let u=n.state.changes(l);return o&&(a=b.single(o.from,o.to).map(u),f.push(ga(n,o)),f.push(t.facet(Di).scrollToMatch(a.main,n))),n.dispatch({changes:u,selection:a,effects:f,userEvent:"input.replace"}),!0}),ny=Mn((n,{query:e})=>{if(n.state.readOnly)return!1;let t=e.matchAll(n.state,1e9).map(r=>{let{from:s,to:o}=r;return{from:s,to:o,insert:e.getReplacement(r)}});if(!t.length)return!1;let i=n.state.phrase("replaced $ matches",t.length)+".";return n.dispatch({changes:t,effects:v.announce.of(i),userEvent:"input.replace.all"}),!0});function ma(n){return n.state.facet(Di).createPanel(n)}c(ma,"createSearchPanel");function ua(n,e){var t,i,r,s,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(Di);return new ps({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:(r=e?.literal)!==null&&r!==void 0?r:h.literal,regexp:(s=e?.regexp)!==null&&s!==void 0?s:h.regexp,wholeWord:(o=e?.wholeWord)!==null&&o!==void 0?o:h.wholeWord})}c(ua,"defaultQuery");function Rd(n){let e=xn(n,ma);return e&&e.dom.querySelector("[main-field]")}c(Rd,"getSearchInput");function Md(n){let e=Rd(n);e&&e==n.root.activeElement&&e.select()}c(Md,"selectSearchInput");var jd=c(n=>{let e=n.state.field(Et,!1);if(e&&e.panel){let t=Rd(n);if(t&&t!=n.root.activeElement){let i=ua(n.state,e.query.spec);i.valid&&n.dispatch({effects:Rn.of(i)}),t.focus(),t.select()}}else n.dispatch({effects:[pa.of(!0),e?Rn.of(ua(n.state,e.query.spec)):R.appendConfig.of(sy)]});return!0},"openSearchPanel"),Ed=c(n=>{let e=n.state.field(Et,!1);if(!e||!e.panel)return!1;let t=xn(n,ma);return t&&t.dom.contains(n.root.activeElement)&&n.focus(),n.dispatch({effects:pa.of(!1)}),!0},"closeSearchPanel"),zd=[{key:"Mod-f",run:jd,scope:"editor search-panel"},{key:"F3",run:ys,shift:bs,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:ys,shift:bs,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:Ed,scope:"editor search-panel"},{key:"Mod-Shift-l",run:iy},{key:"Mod-Alt-g",run:VS},{key:"Mod-d",run:NS,preventDefault:!0}],da=class{static{c(this,"SearchPanel")}constructor(e){this.view=e;let t=this.query=e.state.field(Et).query.spec;this.commit=this.commit.bind(this),this.searchField=D("input",{value:t.search,placeholder:je(e,"Find"),"aria-label":je(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=D("input",{value:t.replace,placeholder:je(e,"Replace"),"aria-label":je(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=D("input",{type:"checkbox",name:"case",form:"",checked:t.caseSensitive,onchange:this.commit}),this.reField=D("input",{type:"checkbox",name:"re",form:"",checked:t.regexp,onchange:this.commit}),this.wordField=D("input",{type:"checkbox",name:"word",form:"",checked:t.wholeWord,onchange:this.commit});function i(r,s,o){return D("button",{class:"cm-button",name:r,onclick:s,type:"button"},o)}c(i,"button"),this.dom=D("div",{onkeydown:c(r=>this.keydown(r),"onkeydown"),class:"cm-search"},[this.searchField,i("next",()=>ys(e),[je(e,"next")]),i("prev",()=>bs(e),[je(e,"previous")]),i("select",()=>ty(e),[je(e,"all")]),D("label",null,[this.caseField,je(e,"match case")]),D("label",null,[this.reField,je(e,"regexp")]),D("label",null,[this.wordField,je(e,"by word")]),...e.state.readOnly?[]:[D("br"),this.replaceField,i("replace",()=>Cd(e),[je(e,"replace")]),i("replaceAll",()=>ny(e),[je(e,"replace all")])],D("button",{name:"close",onclick:c(()=>Ed(e),"onclick"),"aria-label":je(e,"close"),type:"button"},["\xD7"])])}commit(){let e=new ps({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){Zf(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?bs:ys)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),Cd(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(Di).top}};function je(n,e){return n.state.phrase(e)}c(je,"phrase");var hs=30,cs=/[\s\.,:;?!]/;function ga(n,{from:e,to:t}){let i=n.state.doc.lineAt(e),r=n.state.doc.lineAt(t).to,s=Math.max(i.from,e-hs),o=Math.min(r,t+hs),l=n.state.sliceDoc(s,o);if(s!=i.from){for(let a=0;a<hs;a++)if(!cs.test(l[a+1])&&cs.test(l[a])){l=l.slice(a);break}}if(o!=r){for(let a=l.length-1;a>l.length-hs;a--)if(!cs.test(l[a-1])&&cs.test(l[a])){l=l.slice(0,a);break}}return v.announce.of(`${n.state.phrase("current match")}. ${l} ${n.state.phrase("on line")} ${i.number}.`)}c(ga,"announceMatch");var ry=v.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"}}),sy=[Et,De.low(ey),ry];var Qs=class{static{c(this,"CompletionContext")}constructor(e,t,i,r){this.state=e,this.pos=t,this.explicit=i,this.view=r,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),r=t.text.slice(i-t.from,this.pos-t.from),s=r.search(Nd(e,!1));return s<0?null:{from:i+s,to:this.pos,text:r.slice(s)}}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 Vd(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(Vd,"toSet");function oy(n){let e=Object.create(null),t=Object.create(null);for(let{label:r}of n){e[r[0]]=!0;for(let s=1;s<r.length;s++)t[r[s]]=!0}let i=Vd(e)+Vd(t)+"*$";return[new RegExp("^"+i),new RegExp(i)]}c(oy,"prefixMatch");function Za(n){let e=n.map(r=>typeof r=="string"?{label:r}:r),[t,i]=e.every(r=>/^\w+$/.test(r.label))?[/\w*$/,/\w+$/]:oy(e);return r=>{let s=r.matchBefore(i);return s||r.explicit?{from:s?s.from:r.pos,options:e,validFor:t}:null}}c(Za,"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 ws=class{static{c(this,"Option")}constructor(e,t,i,r){this.completion=e,this.source=t,this.match=i,this.score=r}};function hi(n){return n.selection.main.from}c(hi,"cur");function Nd(n,e){var t;let{source:i}=n,r=e&&i[0]!="^",s=i[i.length-1]!="$";return!r&&!s?n:new RegExp(`${r?"^":""}(?:${i})${s?"$":""}`,(t=n.flags)!==null&&t!==void 0?t:n.ignoreCase?"i":"")}c(Nd,"ensureAnchor");var Xa=Qe.define();function ly(n,e,t,i){let{main:r}=n.selection,s=t-r.from,o=i-r.from;return{...n.changeByRange(l=>{if(l!=r&&t!=i&&n.sliceDoc(l.from+s,l.from+o)!=n.sliceDoc(t,i))return{range:l};let a=n.toText(e);return{changes:{from:l.from+s,to:i==r.from?l.to:l.from+o,insert:a},range:b.cursor(l.from+s+a.length)}}),scrollIntoView:!0,userEvent:"input.complete"}}c(ly,"insertCompletionText");var _d=new WeakMap;function ay(n){if(!Array.isArray(n))return n;let e=_d.get(n);return e||_d.set(n,e=Za(n)),e}c(ay,"asSource");var ks=R.define(),jn=R.define(),xa=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),r=Xe(i);this.chars.push(i);let s=e.slice(t,t+r),o=s.toUpperCase();this.folded.push(ce(o==s?s.toLowerCase():o,0)),t+=r}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:r,precise:s,byWord:o}=this;if(t.length==1){let x=ce(e,0),Q=Xe(x),Z=Q==e.length?0:-100;if(x!=t[0])if(x==i[0])Z+=-200;else return null;return this.ret(Z,[0,Q])}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 x=0,Q=Math.min(e.length,200);x<Q&&h<a;){let Z=ce(e,x);(Z==t[h]||Z==i[h])&&(r[h++]=x),x+=Xe(Z)}if(h<a)return null}let f=0,u=0,d=!1,O=0,p=-1,m=-1,g=/[a-z]/.test(e),y=!0;for(let x=0,Q=Math.min(e.length,200),Z=0;x<Q&&u<a;){let w=ce(e,x);l<0&&(f<a&&w==t[f]&&(s[f++]=x),O<a&&(w==t[O]||w==i[O]?(O==0&&(p=x),m=x+1,O++):O=0));let k,$=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;(!x||$==1&&g||Z==0&&$!=0)&&(t[u]==w||i[u]==w&&(d=!0)?o[u++]=x:o.length&&(y=!1)),Z=$,x+=Xe(w)}return u==a&&o[0]==0&&y?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+(y?0:-1100),o,e):t.length==2?null:this.result((r[0]?-700:0)+-200+-1100,r,e)}result(e,t,i){let r=[],s=0;for(let o of t){let l=o+(this.astral?Xe(ce(i,o)):1);s&&r[s-1]==o?r[s-1]=l:(r[s++]=o,r[s++]=l)}return this.ret(e-i.length,r)}},Qa=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=P.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:hy,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=>Yd(e(i),t(i)),"tooltipClass"),optionClass:c((e,t)=>i=>Yd(e(i),t(i)),"optionClass"),addToOptions:c((e,t)=>e.concat(t),"addToOptions"),filterStrict:c((e,t)=>e||t,"filterStrict")})}});function Yd(n,e){return n?e?n+" "+e:n:e}c(Yd,"joinClass");function hy(n,e,t,i,r,s){let o=n.textDirection==q.RTL,l=o,a=!1,h="top",f,u,d=e.left-r.left,O=r.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(r.top,Math.min(t.top,r.bottom-m))-e.top,u=Math.min(400,l?d:O);else{a=!0,u=Math.min(400,(o?e.right:r.right-e.left)-30);let x=r.bottom-e.bottom;x>=m||x>e.top?f=t.bottom-e.top:(h="bottom",f=e.bottom-t.top)}let g=(e.bottom-e.top)/s.offsetHeight,y=(e.right-e.left)/s.offsetWidth;return{style:`${h}: ${f/g}px; max-width: ${u/y}px`,class:"cm-completionInfo-"+(a?o?"left-narrow":"right-narrow":l?"left":"right")}}c(hy,"defaultPositionInfo");var Aa=R.define();function cy(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(r=>"cm-completionIcon-"+r)),i.setAttribute("aria-hidden","true"),i},position:20}),e.push({render(t,i,r,s){let o=document.createElement("span");o.className="cm-completionLabel";let l=t.displayLabel||t.label,a=0;for(let h=0;h<s.length;){let f=s[h++],u=s[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(cy,"optionContent");function Sa(n,e,t){if(n<=t)return{from:0,to:n};if(e<0&&(e=0),e<=n>>1){let r=Math.floor(e/t);return{from:r*t,to:(r+1)*t}}let i=Math.floor((n-e)/t);return{from:n-(i+1)*t,to:n-i*t}}c(Sa,"rangeAroundSelected");var wa=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 r=e.state.field(t),{options:s,selected:o}=r.open,l=e.state.facet(le);this.optionContent=cy(l),this.optionClass=l.optionClass,this.tooltipClass=l.tooltipClass,this.range=Sa(s.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:jn.of(null)})}),this.showOptions(s,r.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),r=e.startState.field(this.stateField);if(this.updateTooltipClass(e.state),i!=r){let{options:s,selected:o,disabled:l}=i.open;(!r.open||r.open.options!=s)&&(this.range=Sa(s.length,o,e.state.facet(le).maxRenderedOptions),this.showOptions(s,i.id)),this.updateSel(),l!=((t=r.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=Sa(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:r}=t.options[t.selected],{info:s}=r;if(!s)return;let o=typeof s=="string"?document.createTextNode(s):s(r);if(!o)return;"then"in o?o.then(l=>{l&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(l,r)}).catch(l=>fe(this.view.state,l,"completion info")):(this.addInfoPane(o,r),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:r,destroy:s}=e;i.appendChild(r),this.infoDestroy=s||null}this.dom.appendChild(i),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(e){let t=null;for(let i=this.list.firstChild,r=this.range.from;i;i=i.nextSibling,r++)i.nodeName!="LI"||!i.id?r--:r==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&&uy(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(),r=e.getBoundingClientRect(),s=this.space;if(!s){let o=this.dom.ownerDocument.documentElement;s={left:0,top:0,right:o.clientWidth,bottom:o.clientHeight}}return r.top>Math.min(s.bottom,t.bottom)-10||r.bottom<Math.max(s.top,t.top)+10?null:this.view.state.facet(le).positionInfo(this.view,t,r,i,s,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 r=document.createElement("ul");r.id=t,r.setAttribute("role","listbox"),r.setAttribute("aria-expanded","true"),r.setAttribute("aria-label",this.view.state.phrase("Completions")),r.addEventListener("mousedown",o=>{o.target==r&&o.preventDefault()});let s=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!=s&&(o>i.from||i.from==0))if(s=d,typeof h!="string"&&h.header)r.appendChild(h.header(h));else{let O=r.appendChild(document.createElement("completion-section"));O.textContent=d}}let f=r.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&&r.classList.add("cm-completionListIncompleteTop"),i.to<e.length&&r.classList.add("cm-completionListIncompleteBottom"),r}destroyInfo(){this.info&&(this.infoDestroy&&this.infoDestroy(),this.info.remove(),this.info=null)}destroy(){this.destroyInfo()}};function fy(n,e){return t=>new wa(t,n,e)}c(fy,"completionTooltip");function uy(n,e){let t=n.getBoundingClientRect(),i=e.getBoundingClientRect(),r=t.height/n.offsetHeight;i.top<t.top?n.scrollTop-=(t.top-i.top)/r:i.bottom>t.bottom&&(n.scrollTop+=(i.bottom-t.bottom)/r)}c(uy,"scrollIntoView");function Wd(n){return(n.boost||0)*100+(n.apply?10:0)+(n.info?5:0)+(n.type?1:0)}c(Wd,"score");function dy(n,e){let t=[],i=null,r=null,s=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)s(new ws(d,f.source,u?u(d):[],1e9-t.length));else{let d=e.sliceDoc(f.from,f.to),O,p=o.filterStrict?new Qa(d):new xa(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,y=O.score+(m.boost||0);if(s(new ws(m,f.source,g,y)),typeof m.section=="object"&&m.section.rank==="dynamic"){let{name:x}=m.section;r||(r=Object.create(null)),r[x]=Math.max(y,r[x]||-1e9)}}}}if(i){let f=Object.create(null),u=0,d=c((O,p)=>(O.rank==="dynamic"&&p.rank==="dynamic"?r[p.name]-r[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):Wd(f.completion)>Wd(a)&&(l[l.length-1]=f),a=f.completion}return l}c(dy,"sortOptions");var ka=class n{static{c(this,"CompletionDialog")}constructor(e,t,i,r,s,o){this.options=e,this.attrs=t,this.tooltip=i,this.timestamp=r,this.selected=s,this.disabled=o}setSelected(e,t){return e==this.selected||e>=this.options.length?this:new n(this.options,Dd(t,e),this.tooltip,this.timestamp,e,this.disabled)}static build(e,t,i,r,s,o){if(r&&!o&&e.some(h=>h.isPending))return r.setDisabled();let l=dy(e,t);if(!l.length)return r&&e.some(h=>h.isPending)?r.setDisabled():null;let a=t.facet(le).selectOnOpen?0:-1;if(r&&r.selected!=a&&r.selected!=-1){let h=r.options[r.selected].completion;for(let f=0;f<l.length;f++)if(l[f].completion==h){a=f;break}}return new n(l,Dd(i,a),{pos:e.reduce((h,f)=>f.hasResult()?Math.min(h,f.from):h,1e8),create:yy,above:s.aboveCursor},r?r.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)}},$a=class n{static{c(this,"CompletionState")}constructor(e,t,i){this.active=e,this.id=t,this.open=i}static start(){return new n(gy,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:t}=e,i=t.facet(le),s=(i.override||t.languageDataAt("autocomplete",hi(t)).map(ay)).map(a=>(this.active.find(f=>f.source==a)||new yt(a,this.active.some(f=>f.state!=0)?1:0)).update(e,i));s.length==this.active.length&&s.every((a,h)=>a==this.active[h])&&(s=this.active);let o=this.open,l=e.effects.some(a=>a.is(Ra));o&&e.docChanged&&(o=o.map(e.changes)),e.selection||s.some(a=>a.hasResult()&&e.changes.touchesRange(a.from,a.to))||!Oy(s,this.active)||l?o=ka.build(s,t,this.id,o,i,l):o&&o.disabled&&!s.some(a=>a.isPending)&&(o=null),!o&&s.every(a=>!a.isPending)&&s.some(a=>a.hasResult())&&(s=s.map(a=>a.hasResult()?new yt(a.source,0):a));for(let a of e.effects)a.is(Aa)&&(o=o&&o.setSelected(a.value,this.id));return s==this.active&&o==this.open?this:new n(s,this.id,o)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?py:my}};function Oy(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 r=t==n.length,s=i==e.length;if(r||s)return r==s;if(n[t++].result!=e[i++].result)return!1}}c(Oy,"sameResults");var py={"aria-autocomplete":"list"},my={};function Dd(n,e){let t={"aria-autocomplete":"list","aria-haspopup":"listbox","aria-controls":n};return e>-1&&(t["aria-activedescendant"]=n+"-"+e),t}c(Dd,"makeAttrs");var gy=[];function Gd(n,e){if(n.isUserEvent("input.complete")){let i=n.annotation(Xa);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(Gd,"getUpdateType");var yt=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=Gd(e,t),r=this;(i&8||i&16&&this.touches(e))&&(r=new n(r.source,0)),i&4&&r.state==0&&(r=new n(this.source,1)),r=r.updateFor(e,i);for(let s of e.effects)if(s.is(ks))r=new n(r.source,1,s.value);else if(s.is(jn))r=new n(r.source,0);else if(s.is(Ra))for(let o of s.value)o.source==r.source&&(r=o);return r}updateFor(e,t){return this.map(e.changes)}map(e){return this}touches(e){return e.changes.touchesRange(hi(e.state))}},$s=class n extends yt{static{c(this,"ActiveResult")}constructor(e,t,i,r,s,o){super(e,3,t),this.limit=i,this.result=r,this.from=s,this.to=o}hasResult(){return!0}updateFor(e,t){var i;if(!(t&3))return this.map(e.changes);let r=this.result;r.map&&!e.changes.empty&&(r=r.map(r,e.changes));let s=e.changes.mapPos(this.from),o=e.changes.mapPos(this.to,1),l=hi(e.state);if(l>o||!r||t&2&&(hi(e.startState)==this.from||l<this.limit))return new yt(this.source,t&4?1:0);let a=e.changes.mapPos(this.limit);return Sy(r.validFor,e.state,s,o)?new n(this.source,this.explicit,a,r,s,o):r.update&&(r=r.update(r,s,o,new Qs(e.state,l,!1)))?new n(this.source,this.explicit,a,r,r.from,(i=r.to)!==null&&i!==void 0?i:hi(e.state)):new yt(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 yt(this.source,0)}touches(e){return e.changes.touchesRange(this.from,this.to)}};function Sy(n,e,t,i){if(!n)return!1;let r=e.sliceDoc(t,i);return typeof n=="function"?n(r,t,i,e):Nd(n,!0).test(r)}c(Sy,"checkValid");var Ra=R.define({map(n,e){return n.map(t=>t.map(e))}}),Pe=ie.define({create(){return $a.start()},update(n,e){return n.update(e)},provide:c(n=>[bn.from(n,e=>e.tooltip),v.contentAttributes.from(n,e=>e.attrs)],"provide")});function Ma(n,e){let t=e.completion.apply||e.completion.label,i=n.state.field(Pe).active.find(r=>r.source==e.source);return i instanceof $s?(typeof t=="string"?n.dispatch({...ly(n.state,t,i.from,i.to),annotations:Xa.of(e.completion)}):t(n,e.completion,i.from,i.to),!0):!1}c(Ma,"applyCompletion");var yy=fy(Pe,Ma);function xs(n,e="option"){return t=>{let i=t.state.field(Pe,!1);if(!i||!i.open||i.open.disabled||Date.now()-i.open.timestamp<t.state.facet(le).interactionDelay)return!1;let r=1,s;e=="page"&&(s=wl(t,i.open.tooltip))&&(r=Math.max(2,Math.floor(s.dom.offsetHeight/s.dom.querySelector("li").offsetHeight)-1));let{length:o}=i.open.options,l=i.open.selected>-1?i.open.selected+r*(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(xs,"moveCompletionSelection");var by=c(n=>{let e=n.state.field(Pe,!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:Ma(n,e.open.options[e.open.selected])},"acceptCompletion"),ya=c(n=>n.state.field(Pe,!1)?(n.dispatch({effects:ks.of(!0)}),!0):!1,"startCompletion"),xy=c(n=>{let e=n.state.field(Pe,!1);return!e||!e.active.some(t=>t.state!=0)?!1:(n.dispatch({effects:jn.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}},Qy=50,wy=1e3,ky=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(Pe).active)e.isPending&&this.startQuery(e)}update(n){let e=n.state.field(Pe),t=n.state.facet(le);if(!n.selectionSet&&!n.docChanged&&n.startState.field(Pe)==e)return;let i=n.transactions.some(s=>{let o=Gd(s,t);return o&8||(s.selection||s.docChanged)&&!(o&3)});for(let s=0;s<this.running.length;s++){let o=this.running[s];if(i||o.context.abortOnDocChange&&n.docChanged||o.updates.length+n.transactions.length>Qy&&Date.now()-o.time>wy){for(let l of o.context.abortListeners)try{l()}catch(a){fe(this.view.state,a)}o.context.abortListeners=null,this.running.splice(s--,1)}else o.updates.push(...n.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),n.transactions.some(s=>s.effects.some(o=>o.is(ks)))&&(this.pendingStart=!0);let r=this.pendingStart?50:t.activateOnTypingDelay;if(this.debounceUpdate=e.active.some(s=>s.isPending&&!this.running.some(o=>o.active.source==s.source))?setTimeout(()=>this.startUpdate(),r):-1,this.composing!=0)for(let s of n.transactions)s.isUserEvent("input.type")?this.composing=2:this.composing==2&&s.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:n}=this.view,e=n.field(Pe);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 Qs(e,t,n.explicit,this.view),r=new va(n,i);this.running.push(r),Promise.resolve(n.source(i)).then(s=>{r.context.aborted||(r.done=s||null,this.scheduleAccept())},s=>{this.view.dispatch({effects:jn.of(null)}),fe(this.view.state,s)})}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(Pe);for(let r=0;r<this.running.length;r++){let s=this.running[r];if(s.done===void 0)continue;if(this.running.splice(r--,1),s.done){let l=hi(s.updates.length?s.updates[0].startState:this.view.state),a=Math.min(l,s.done.from+(s.active.explicit?0:1)),h=new $s(s.active.source,s.active.explicit,a,s.done,s.done.from,(n=s.done.to)!==null&&n!==void 0?n:l);for(let f of s.updates)h=h.update(f,t);if(h.hasResult()){e.push(h);continue}}let o=i.active.find(l=>l.source==s.active.source);if(o&&o.isPending)if(s.done==null){let l=new yt(s.active.source,0);for(let a of s.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:Ra.of(e)})}},{eventHandlers:{blur(n){let e=this.view.state.field(Pe,!1);if(e&&e.tooltip&&this.view.state.facet(le).closeOnBlur){let t=e.open&&wl(this.view,e.open.tooltip);(!t||!t.dom.contains(n.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:jn.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:ks.of(!1)}),20),this.composing=0}}}),$y=typeof navigator=="object"&&/Win/.test(navigator.platform),vy=De.highest(v.domEventHandlers({keydown(n,e){let t=e.state.field(Pe,!1);if(!t||!t.open||t.open.disabled||t.open.selected<0||n.key.length>1||n.ctrlKey&&!($y&&n.altKey)||n.metaKey)return!1;let i=t.open.options[t.open.selected],r=t.active.find(o=>o.source==i.source),s=i.completion.commitCharacters||r.result.commitCharacters;return s&&s.indexOf(n.key)>-1&&Ma(e,i),!1}})),Ud=v.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,r){this.field=e,this.line=t,this.from=i,this.to=r}},Ta=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)}},Ca=class n{static{c(this,"Snippet")}constructor(e,t){this.lines=e,this.fieldPositions=t}instantiate(e,t){let i=[],r=[t],s=e.doc.lineAt(t),o=/^\s*/.exec(s.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(Ei);r.push(t+h.length-f),a=h+a.slice(f)}i.push(a),t+=a.length+1}let l=this.fieldPositions.map(a=>new Ta(a.field,r[a.line]+a.from,r[a.line]+a.to));return{text:i,ranges:l}}static parse(e){let t=[],i=[],r=[],s;for(let o of e.split(/\r\n?|\n/)){for(;s=/[#$]\{(?:(\d+)(?::([^{}]*))?|((?:\\[{}]|[^{}])*))\}/.exec(o);){let l=s[1]?+s[1]:null,a=s[2]||s[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 r)d.field>=h&&d.field++}for(let u of r)if(u.line==i.length&&u.from>s.index){let d=s[2]?3+(s[1]||"").length:2;u.from-=d,u.to-=d}r.push(new Pa(h,i.length,s.index,s.index+f.length)),o=o.slice(0,s.index)+a+o.slice(s.index+s[0].length)}o=o.replace(/\\([{}])/g,(l,a,h)=>{for(let f of r)f.line==i.length&&f.from>h&&(f.from--,f.to--);return a}),i.push(o)}return new n(i,r)}},Py=X.widget({widget:new class extends be{toDOM(){let n=document.createElement("span");return n.className="cm-snippetFieldPosition",n}ignoreEvent(){return!1}}}),Ty=X.mark({class:"cm-snippetField"}),Li=class n{static{c(this,"ActiveSnippet")}constructor(e,t){this.ranges=e,this.active=t,this.deco=X.set(e.map(i=>(i.from==i.to?Py:Ty).range(i.from,i.to)),!0)}map(e){let t=[];for(let i of this.ranges){let r=i.map(e);if(!r)return null;t.push(r)}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)}}),Cy=R.define(),En=ie.define({create(){return null},update(n,e){for(let t of e.effects){if(t.is(Vn))return t.value;if(t.is(Cy)&&n)return new Li(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=>v.decorations.from(n,e=>e?e.deco:X.none),"provide")});function ja(n,e){return b.create(n.filter(t=>t.field==e).map(t=>b.range(t.from,t.to)))}c(ja,"fieldSelection");function Zy(n){let e=Ca.parse(n);return(t,i,r,s)=>{let{text:o,ranges:l}=e.instantiate(t.state,r),{main:a}=t.state.selection,h={changes:{from:r,to:s==a.from?a.to:s,insert:V.of(o)},scrollIntoView:!0,annotations:i?[Xa.of(i),re.userEvent.of("input.complete")]:void 0};if(l.length&&(h.selection=ja(l,0)),l.some(f=>f.field>0)){let f=new Li(l,0),u=h.effects=[Vn.of(f)];t.state.field(En,!1)===void 0&&u.push(R.appendConfig.of([En,jy,Ey,Ud]))}t.dispatch(t.state.update(h))}}c(Zy,"snippet");function Fd(n){return({state:e,dispatch:t})=>{let i=e.field(En,!1);if(!i||n<0&&i.active==0)return!1;let r=i.active+n,s=n>0&&!i.ranges.some(o=>o.field==r+n);return t(e.update({selection:ja(i.ranges,r),effects:Vn.of(s?null:new Li(i.ranges,r)),scrollIntoView:!0})),!0}}c(Fd,"moveField");var Xy=c(({state:n,dispatch:e})=>n.field(En,!1)?(e(n.update({effects:Vn.of(null)})),!0):!1,"clearSnippet"),Ay=Fd(1),Ry=Fd(-1);var My=[{key:"Tab",run:Ay,shift:Ry},{key:"Escape",run:Xy}],Ld=P.define({combine(n){return n.length?n[0]:My}}),jy=De.highest(Xi.compute([Ld],n=>n.facet(Ld)));function xe(n,e){return{...e,apply:Zy(n)}}c(xe,"snippetCompletion");var Ey=v.domEventHandlers({mousedown(n,e){let t=e.state.field(En,!1),i;if(!t||(i=e.posAtCoords({x:n.clientX,y:n.clientY}))==null)return!1;let r=t.ranges.find(s=>s.from<=i&&s.to>=i);return!r||r.field==t.active?!1:(e.dispatch({selection:ja(t.ranges,r.field),effects:Vn.of(t.ranges.some(s=>s.field>r.field)?new Li(t.ranges,r.field):null),scrollIntoView:!0}),!0)}});var zn={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 We{};Ea.startSide=1;Ea.endSide=-1;var Hd=ie.define({create(){return Y.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 Kd(){return[Vy,Hd]}c(Kd,"closeBrackets");var ba="()[]{}<>\xAB\xBB\xBB\xAB\uFF3B\uFF3D\uFF5B\uFF5D";function Jd(n){for(let e=0;e<ba.length;e+=2)if(ba.charCodeAt(e)==n)return ba.charAt(e+1);return tn(n<128?n:n+1)}c(Jd,"closing");function eO(n,e){return n.languageDataAt("closeBrackets",e)[0]||zn}c(eO,"config");var zy=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),Vy=v.inputHandler.of((n,e,t,i)=>{if((zy?n.composing:n.compositionStarted)||n.state.readOnly)return!1;let r=n.state.selection.main;if(i.length>2||i.length==2&&Xe(ce(i,0))==1||e!=r.from||t!=r.to)return!1;let s=Yy(n.state,i);return s?(n.dispatch(s),!0):!1}),_y=c(({state:n,dispatch:e})=>{if(n.readOnly)return!1;let i=eO(n,n.selection.main.head).brackets||zn.brackets,r=null,s=n.changeByRange(o=>{if(o.empty){let l=Wy(n.doc,o.head);for(let a of i)if(a==l&&vs(n.doc,o.head)==Jd(ce(a,0)))return{changes:{from:o.head-a.length,to:o.head+a.length},range:b.cursor(o.head-a.length)}}return{range:r=o}});return r||e(n.update(s,{scrollIntoView:!0,userEvent:"delete.backward"})),!r},"deleteBracketPair"),tO=[{key:"Backspace",run:_y}];function Yy(n,e){let t=eO(n,n.selection.main.head),i=t.brackets||zn.brackets;for(let r of i){let s=Jd(ce(r,0));if(e==r)return s==r?qy(n,r,i.indexOf(r+r+r)>-1,t):Dy(n,r,s,t.before||zn.before);if(e==s&&iO(n,n.selection.main.from))return Ly(n,r,s)}return null}c(Yy,"insertBracket");function iO(n,e){let t=!1;return n.field(Hd).between(0,n.doc.length,i=>{i==e&&(t=!0)}),t}c(iO,"closedBracketAt");function vs(n,e){let t=n.sliceString(e,e+2);return t.slice(0,Xe(ce(t,0)))}c(vs,"nextChar");function Wy(n,e){let t=n.sliceString(e-2,e);return Xe(ce(t,0))==t.length?t:t.slice(1)}c(Wy,"prevChar");function Dy(n,e,t,i){let r=null,s=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:b.range(o.anchor+e.length,o.head+e.length)};let l=vs(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:b.cursor(o.head+e.length)}:{range:r=o}});return r?null:n.update(s,{scrollIntoView:!0,userEvent:"input.type"})}c(Dy,"handleOpen");function Ly(n,e,t){let i=null,r=n.changeByRange(s=>s.empty&&vs(n.doc,s.head)==t?{changes:{from:s.head,to:s.head+t.length,insert:t},range:b.cursor(s.head+t.length)}:i={range:s});return i?null:n.update(r,{scrollIntoView:!0,userEvent:"input.type"})}c(Ly,"handleClose");function qy(n,e,t,i){let r=i.stringPrefixes||zn.stringPrefixes,s=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:b.range(l.anchor+e.length,l.head+e.length)};let a=l.head,h=vs(n.doc,a),f;if(h==e){if(qd(n,a))return{changes:{insert:e+e,from:a},effects:ai.of(a+e.length),range:b.cursor(a+e.length)};if(iO(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:b.cursor(a+d.length)}}}else{if(t&&n.sliceDoc(a-2*e.length,a)==e+e&&(f=Bd(n,a-2*e.length,r))>-1&&qd(n,f))return{changes:{insert:e+e+e+e,from:a},effects:ai.of(a+e.length),range:b.cursor(a+e.length)};if(n.charCategorizer(a)(h)!=I.Word&&Bd(n,a,r)>-1&&!By(n,a,e,r))return{changes:{insert:e+e,from:a},effects:ai.of(a+e.length),range:b.cursor(a+e.length)}}return{range:s=l}});return s?null:n.update(o,{scrollIntoView:!0,userEvent:"input.type"})}c(qy,"handleSame");function qd(n,e){let t=F(n).resolveInner(e+1);return t.parent&&t.from==e}c(qd,"nodeStart");function By(n,e,t,i){let r=F(n).resolveInner(e,-1),s=i.reduce((o,l)=>Math.max(o,l.length),0);for(let o=0;o<5;o++){let l=n.sliceDoc(r.from,Math.min(r.to,r.from+t.length+s)),a=l.indexOf(t);if(!a||a>-1&&i.indexOf(l.slice(0,a))>-1){let f=r.firstChild;for(;f&&f.from==r.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=r.to==e&&r.parent;if(!h)break;r=h}return!1}c(By,"probablyInString");function Bd(n,e,t){let i=n.charCategorizer(e);if(i(n.sliceDoc(e-1,e))!=I.Word)return e;for(let r of t){let s=e-r.length;if(n.sliceDoc(s,e)==r&&i(n.sliceDoc(s-1,s))!=I.Word)return s}return-1}c(Bd,"canStartStringAt");function Ps(n={}){return[vy,Pe,le.of(n),ky,Iy,Ud]}c(Ps,"autocompletion");var za=[{key:"Ctrl-Space",run:ya},{mac:"Alt-`",run:ya},{mac:"Alt-i",run:ya},{key:"Escape",run:xy},{key:"ArrowDown",run:xs(!0)},{key:"ArrowUp",run:xs(!1)},{key:"PageDown",run:xs(!0,"page")},{key:"PageUp",run:xs(!1,"page")},{key:"Enter",run:by}],Iy=De.highest(Xi.computeN([le],n=>n.facet(le).defaultKeymap?[za]:[]));var Cs=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 r=i.facet(_n).markerFilter;r&&(e=r(e,i));let s=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==s.length?null:s[O];if(!p&&!l.length)break;let m,g;if(l.length)m=a,g=l.reduce((Q,Z)=>Math.min(Q,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<s.length;){let Q=s[O];if(Q.from==m&&(Q.to>Q.from||Q.to==m))l.push(Q),O++,g=Math.min(Q.to,g);else{g=Math.min(Q.from,g);break}}g=Math.min(g,u);let y=!1;if(l.some(Q=>Q.from==m&&(Q.to==g||g==u))&&(y=m==g,!y&&g-m<10)){let Q=m-(f+h.value.length);Q>0&&(h.next(Q),f=m);for(let Z=m;;){if(Z>=g){y=!0;break}if(!h.lineBreak&&f+h.value.length>Z)break;Z=f+h.value.length,f+=h.value.length,h.next()}}let x=nb(l);if(y)o.add(m,m,X.widget({widget:new Va(x),diagnostics:l.slice()}));else{let Q=l.reduce((Z,w)=>w.markClass?Z+" "+w.markClass:Z,"");o.add(m,g,X.mark({class:"cm-lintRange cm-lintRange-"+x+Q,diagnostics:l.slice(),inclusiveEnd:l.some(Z=>Z.to>g)}))}if(a=g,a==u)break;for(let Q=0;Q<l.length;Q++)l[Q].to<=a&&l.splice(Q--,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,(r,s,{spec:o})=>{if(!(e&&o.diagnostics.indexOf(e)<0))if(!i)i=new Cs(r,s,e||o.diagnostics[0]);else{if(o.diagnostics.indexOf(i.diagnostic)<0)return!1;i=new Cs(i.from,s,i.diagnostic)}}),i}c(Vt,"findDiagnostic");function Ny(n,e){let t=e.pos,i=e.end||t,r=n.state.facet(_n).hideOn(n,t,i);if(r!=null)return r;let s=n.startState.doc.lineAt(e.pos);return!!(n.effects.some(o=>o.is(sO))||n.changes.touchesRange(s.from,Math.max(s.to,i)))}c(Ny,"hideTooltip");function Gy(n,e){return n.field(Ee,!1)?e:e.concat(R.appendConfig.of(rb))}c(Gy,"maybeEnableLint");var sO=R.define(),_a=R.define(),oO=R.define(),Ee=ie.define({create(){return new ci(X.none,null,null)},update(n,e){if(e.docChanged&&n.diagnostics.size){let t=n.diagnostics.map(e.changes),i=null,r=n.panel;if(n.selected){let s=e.changes.mapPos(n.selected.from,1);i=Vt(t,n.selected.diagnostic,s)||Vt(t,null,s)}!t.size&&r&&e.state.facet(_n).autoPanel&&(r=null),n=new ci(t,r,i)}for(let t of e.effects)if(t.is(sO)){let i=e.state.facet(_n).autoPanel?t.value.length?Yn.open:null:n.panel;n=ci.init(t.value,i,e.state)}else t.is(_a)?n=new ci(n.diagnostics,t.value?Yn.open:null,n.selected):t.is(oO)&&(n=new ci(n.diagnostics,n.panel,t.value));return n},provide:c(n=>[Jt.from(n,e=>e.panel),v.decorations.from(n,e=>e.diagnostics)],"provide")});var Uy=X.mark({class:"cm-lintRange cm-lintRange-active"});function Fy(n,e,t){let{diagnostics:i}=n.state.field(Ee),r,s=-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 r=f.diagnostics,s=a,o=h,!1});let l=n.state.facet(_n).tooltipFilter;return r&&l&&(r=l(r,n.state)),r?{pos:s,end:o,above:n.state.doc.lineAt(s).to<o,create(){return{dom:Hy(n,r)}}}:null}c(Fy,"lintTooltip");function Hy(n,e){return D("ul",{class:"cm-tooltip-lint"},e.map(t=>hO(n,t,!1)))}c(Hy,"diagnosticsTooltip");var Ky=c(n=>{let e=n.state.field(Ee,!1);(!e||!e.panel)&&n.dispatch({effects:Gy(n.state,[_a.of(!0)])});let t=xn(n,Yn.open);return t&&t.dom.querySelector(".cm-panel-lint ul").focus(),!0},"openLintPanel"),nO=c(n=>{let e=n.state.field(Ee,!1);return!e||!e.panel?!1:(n.dispatch({effects:_a.of(!1)}),!0)},"closeLintPanel"),Jy=c(n=>{let e=n.state.field(Ee,!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 lO=[{key:"Mod-Shift-m",run:Ky,preventDefault:!0},{key:"F8",run:Jy}];var _n=P.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:rO,tooltipFilter:rO,needsRefresh:c((e,t)=>e?t?i=>e(i)||t(i):e:t,"needsRefresh"),hideOn:c((e,t)=>e?t?(i,r,s)=>e(i,r,s)||t(i,r,s):e:t,"hideOn"),autoPanel:c((e,t)=>e||t,"autoPanel")})}}});function rO(n,e){return n?e?(t,i)=>e(n(t,i),i):n:e}c(rO,"combineFilter");function aO(n){let e=[];if(n)e:for(let{name:t}of n){for(let i=0;i<t.length;i++){let r=t[i];if(/[a-zA-Z]/.test(r)&&!e.some(s=>s.toLowerCase()==r.toLowerCase())){e.push(r);continue e}}e.push("")}return e}c(aO,"assignKeys");function hO(n,e,t){var i;let r=t?aO(e.actions):[];return D("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},D("span",{class:"cm-diagnosticText"},e.renderMessage?e.renderMessage(n):e.message),(i=e.actions)===null||i===void 0?void 0:i.map((s,o)=>{let l=!1,a=c(O=>{if(O.preventDefault(),l)return;l=!0;let p=Vt(n.state.field(Ee).diagnostics,e);p&&s.apply(n,p.from,p.to)},"click"),{name:h}=s,f=r[o]?h.indexOf(r[o]):-1,u=f<0?h:[h.slice(0,f),D("u",h.slice(f,f+1)),h.slice(f+1)],d=s.markClass?" "+s.markClass:"";return D("button",{type:"button",class:"cm-diagnosticAction"+d,onclick:a,onmousedown:a,"aria-label":` Action: ${h}${f<0?"":` (access key "${r[o]})"`}.`},u)}),e.source&&D("div",{class:"cm-diagnosticSource"},e.source))}c(hO,"renderDiagnostic");var Va=class extends be{static{c(this,"DiagnosticWidget")}constructor(e){super(),this.sev=e}eq(e){return e.sev==this.sev}toDOM(){return D("span",{class:"cm-lintPoint cm-lintPoint-"+this.sev})}},Zs=class{static{c(this,"PanelItem")}constructor(e,t){this.diagnostic=t,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=hO(e,t,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}},Yn=class n{static{c(this,"LintPanel")}constructor(e){this.view=e,this.items=[];let t=c(r=>{if(!(r.ctrlKey||r.altKey||r.metaKey)){if(r.keyCode==27)nO(this.view),this.view.focus();else if(r.keyCode==38||r.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(r.keyCode==40||r.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(r.keyCode==36)this.moveSelection(0);else if(r.keyCode==35)this.moveSelection(this.items.length-1);else if(r.keyCode==13)this.view.focus();else if(r.keyCode>=65&&r.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:s}=this.items[this.selectedIndex],o=aO(s.actions);for(let l=0;l<o.length;l++)if(o[l].toUpperCase().charCodeAt(0)==r.keyCode){let a=Vt(this.view.state.field(Ee).diagnostics,s);a&&s.actions[l].apply(e,a.from,a.to)}}else return;r.preventDefault()}},"onkeydown"),i=c(r=>{for(let s=0;s<this.items.length;s++)this.items[s].dom.contains(r.target)&&this.moveSelection(s)},"onclick");this.list=D("ul",{tabIndex:0,role:"listbox","aria-label":this.view.state.phrase("Diagnostics"),onkeydown:t,onclick:i}),this.dom=D("div",{class:"cm-panel-lint"},this.list,D("button",{type:"button",name:"close","aria-label":this.view.state.phrase("close"),onclick:c(()=>nO(this.view),"onclick")},"\xD7")),this.update()}get selectedIndex(){let e=this.view.state.field(Ee).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(Ee),i=0,r=!1,s=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 Zs(this.view,f),this.items.splice(i,0,d),r=!0):(d=this.items[u],u>i&&(this.items.splice(i,u-i),r=!0)),t&&d.diagnostic==t.diagnostic?d.dom.hasAttribute("aria-selected")||(d.dom.setAttribute("aria-selected","true"),s=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);)r=!0,this.items.pop();this.items.length==0&&(this.items.push(new Zs(this.view,{from:-1,to:-1,severity:"info",message:this.view.state.phrase("No diagnostics")})),r=!0),s?(this.list.setAttribute("aria-activedescendant",s.id),this.view.requestMeasure({key:this,read:c(()=>({sel:s.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"),r&&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(Ee),i=Vt(t.diagnostics,this.items[e].diagnostic);i&&this.view.dispatch({selection:{anchor:i.from,head:i.to},scrollIntoView:!0,effects:oO.of(i)})}static open(e){return new n(e)}};function eb(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(eb,"svg");function Ts(n){return eb(`<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(Ts,"underline");var tb=v.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:Ts("#d11")},".cm-lintRange-warning":{backgroundImage:Ts("orange")},".cm-lintRange-info":{backgroundImage:Ts("#999")},".cm-lintRange-hint":{backgroundImage:Ts("#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 ib(n){return n=="error"?4:n=="warning"?3:n=="info"?2:1}c(ib,"severityWeight");function nb(n){let e="hint",t=1;for(let i of n){let r=ib(i.severity);r>t&&(t=r,e=i.severity)}return e}c(nb,"maxSeverity");var rb=[Ee,v.decorations.compute([Ee],n=>{let{selected:e,panel:t}=n.field(Ee);return!e||!t||e.from==e.to?X.none:X.set([Uy.range(e.from,e.to)])}),Df(Fy,{hideOn:Ny}),tb];var cO=[Gf(),Uf(),Vf(),Fu(),Xu(),Mf(),zf(),G.allowMultipleSelections.of(!0),wu(),Ru(Mu,{fallback:!0}),Vu(),Kd(),Ps(),Yf(),Wf(),_f(),Ad(),Xi.of([...tO,...vd,...zd,...ed,...Tu,...za,...lO])];var Da=class n{static{c(this,"Stack")}constructor(e,t,i,r,s,o,l,a,h,f=0,u){this.p=e,this.stack=t,this.state=i,this.reducePos=r,this.pos=s,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 r=e.parser.context;return new n(e,[],t,i,i,0,[],0,r?new Xs(r,r.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,r=e&65535,{parser:s}=this.p,o=this.reducePos<this.pos-25&&this.setLookAhead(this.pos),l=s.dynamicPrecedence(r);if(l&&(this.score+=l),i==0){this.pushState(s.getGoto(this.state,r,!0),this.reducePos),r<s.minRepeatTerm&&this.storeNode(r,this.reducePos,this.reducePos,o?8:4,!0),this.reduceContext(r,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[r])===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(r<s.minRepeatTerm||e&131072){let O=s.stateFlag(this.state,1)?this.pos:this.reducePos;this.storeNode(r,h,O,d+4,!0)}if(e&262144)this.state=this.stack[a];else{let O=this.stack[a-3];this.state=s.getGoto(O,r,!0)}for(;this.stack.length>a;)this.stack.pop();this.reduceContext(r,h)}storeNode(e,t,i,r=4,s=!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(!s||this.pos==i)this.buffer.push(e,t,i,r);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,r>4&&(r-=4)}this.buffer[o]=e,this.buffer[o+1]=t,this.buffer[o+2]=i,this.buffer[o+3]=r}}shift(e,t,i,r){if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let s=e,{parser:o}=this.p;this.pos=r;let l=o.stateFlag(s,1);!l&&(r>i||t<=o.maxNode)&&(this.reducePos=r),this.pushState(s,l?i:Math.min(i,this.reducePos)),this.shiftContext(t,i),t<=o.maxNode&&this.buffer.push(t,i,r,4)}else this.pos=r,this.shiftContext(t,i),t<=this.p.parser.maxNode&&this.buffer.push(t,i,r,4)}apply(e,t,i,r){e&65536?this.reduce(e):this.shift(e,t,i,r)}useNode(e,t){let i=this.p.reused.length-1;(i<0||this.p.reused[i]!=e)&&(this.p.reused.push(e),i++);let r=this.pos;this.reducePos=this.pos=r+e.length,this.pushState(t,r),this.buffer.push(i,r,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),r=e.bufferBase+t;for(;e&&r==e.bufferBase;)e=e.parent;return new n(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,i,r,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 La(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 r=[];for(let s=0,o;s<t.length;s+=2)(o=t[s+1])!=this.state&&this.p.parser.hasAction(o,e)&&r.push(t[s],o);if(this.stack.length<120)for(let s=0;r.length<8&&s<t.length;s+=2){let o=t[s+1];r.some((l,a)=>a&1&&l==o)||r.push(t[s],o)}t=r}let i=[];for(let r=0;r<t.length&&i.length<4;r+=2){let s=t[r+1];if(s==this.state)continue;let o=this.split();o.pushState(s,this.pos),o.storeNode(0,o.pos,o.pos,4,!0),o.shiftContext(t[r],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,r=t&65535,s=this.stack.length-i*3;if(s<0||e.getGoto(this.stack[s],r,!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((r,s)=>{if(!t.includes(r))return t.push(r),e.allActions(r,o=>{if(!(o&393216))if(o&65536){let l=(o>>19)-s;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,s+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 Xs(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()}},Xs=class{static{c(this,"StackContext")}constructor(e,t){this.tracker=e,this.context=t,this.hash=e.strict?e.hash(t):0}},La=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 r=this.start.p.parser.getGoto(this.stack[this.base-3],t,!0);this.state=r}},qa=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 Wn(n,e=Uint16Array){if(typeof n!="string")return n;let t=null;for(let i=0,r=0;i<n.length;){let s=0;for(;;){let o=n.charCodeAt(i++),l=!1;if(o==126){s=65535;break}o>=92&&o--,o>=34&&o--;let a=o-32;if(a>=46&&(a-=46,l=!0),s+=a,l)break;s*=46}t?t[r++]=s:t=new e(s)}return t}c(Wn,"decodeArray");var qi=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}},fO=new qi,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=fO,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,r=this.rangeIndex,s=this.pos+e;for(;s<i.from;){if(!r)return null;let o=this.ranges[--r];s-=i.from-o.to,i=o}for(;t<0?s>i.to:s>=i.to;){if(r==this.ranges.length-1)return null;let o=this.ranges[++r];s+=o.from-i.to,i=o}return s}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,r;if(t>=0&&t<this.chunk.length)i=this.pos+e,r=this.chunk.charCodeAt(t);else{let s=this.resolveOffset(e,1);if(s==null)return-1;if(i=s,i>=this.chunk2Pos&&i<this.chunk2Pos+this.chunk2.length)r=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)),r=this.chunk2.charCodeAt(0)}}return i>=this.token.lookAhead&&(this.token.lookAhead=i+1),r}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=fO,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 r of this.ranges){if(r.from>=t)break;r.to>e&&(i+=this.input.read(Math.max(r.from,e),Math.min(r.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;mO(this.data,e,t,this.id,i.data,i.tokenPrecTable)}};_t.prototype.contextual=_t.prototype.fallback=_t.prototype.extend=!1;var Yt=class{static{c(this,"LocalTokenGroup")}constructor(e,t,i){this.precTable=t,this.elseToken=i,this.data=typeof e=="string"?Wn(e):e}token(e,t){let i=e.pos,r=0;for(;;){let s=e.next<0,o=e.resolveOffset(1,1);if(mO(this.data,e,t,0,this.data,this.precTable),e.token.value>-1)break;if(this.elseToken==null)return;if(s||r++,o==null)break;e.reset(o,e.token)}r&&(e.reset(i,e.token),e.acceptToken(this.elseToken,r))}};Yt.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 mO(n,e,t,i,r,s){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||ob(p,e.token.value,r,s))){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(mO,"readToken");function uO(n,e,t){for(let i=e,r;(r=n[i])!=65535;i++)if(r==t)return i-e;return-1}c(uO,"findOffset");function ob(n,e,t,i){let r=uO(t,i,e);return r<0||uO(t,i,n)<r}c(ob,"overrides");var ze=typeof process<"u"&&process.env&&/\bparse\b/.test(process.env.LOG),Ya=null;function dO(n,e,t){let i=n.cursor(W.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(dO,"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?dO(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?dO(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],r=this.index[t];if(r==i.children.length){this.trees.pop(),this.start.pop(),this.index.pop();continue}let s=i.children[r],o=this.start[t]+i.positions[r];if(o>e)return this.nextStart=o,null;if(s instanceof J){if(o==e){if(o<this.safeFrom)return null;let l=o+s.length;if(l<=this.safeTo){let a=s.prop(j.lookAhead);if(!a||l+a<this.fragment.to)return s}}this.index[t]++,o+s.length>=Math.max(this.safeFrom,e)&&(this.trees.push(s),this.start.push(o),this.index.push(0))}else this.index[t]++,this.nextStart=o+s.length}}},Na=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 qi)}getActions(e){let t=0,i=null,{parser:r}=e.p,{tokenizers:s}=r,o=r.stateSlot(e.state,3),l=e.curContext?e.curContext.hash:0,a=0;for(let h=0;h<s.length;h++){if((1<<h&o)==0)continue;let f=s[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 qi,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 qi,{pos:i,p:r}=e;return t.start=i,t.end=Math.min(i+1,r.stream.end),t.value=i==r.stream.end?r.parser.eofTerm:0,t}updateCachedToken(e,t,i){let r=this.stream.clipPos(i.pos);if(t.token(this.stream.reset(r,e),i),e.value>-1){let{parser:s}=i.p;for(let o=0;o<s.specialized.length;o++)if(s.specialized[o]==e.value){let l=s.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(r+1)}putAction(e,t,i,r){for(let s=0;s<r;s+=3)if(this.actions[s]==e)return r;return this.actions[r++]=e,this.actions[r++]=t,this.actions[r++]=i,r}addActions(e,t,i,r){let{state:s}=e,{parser:o}=e.p,{data:l}=o;for(let a=0;a<2;a++)for(let h=o.stateSlot(s,a?2:1);;h+=3){if(l[h]==65535)if(l[h+1]==1)h=bt(l,h+2);else{r==0&&l[h+1]==2&&(r=this.putAction(bt(l,h+2),t,i,r));break}l[h]==t&&(r=this.putAction(bt(l,h+1),t,i,r))}return r}},Ga=class{static{c(this,"Parse")}constructor(e,t,i,r){this.parser=e,this.input=t,this.ranges=r,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,r),this.tokens=new Na(e,this.stream),this.topTerm=e.top[1];let{from:s}=r[0];this.stacks=[Da.start(this,e.top[0],s)],this.fragments=i.length&&this.stream.end-s>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=[],r,s;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;{r||(r=[],s=[]),r.push(l);let a=this.tokens.getMainToken(l);s.push(a.value,a.end)}}break}}if(!i.length){let o=r&&lb(r);if(o)return ze&&console.log("Finish with "+this.stackID(o)),this.stackToTree(o);if(this.parser.strict)throw ze&&r&&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&&r){let o=this.stoppedAt!=null&&r[0].pos>this.stoppedAt?r[0]:this.runRecovery(r,s,i);if(o)return ze&&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 r=e.pos,{parser:s}=this,o=ze?this.stackID(e)+" -> ":"";if(this.stoppedAt!=null&&r>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(r);u;){let d=this.parser.nodeSet.types[u.type.id]==u.type?s.getGoto(e.state,u.type.id):-1;if(d>-1&&u.length&&(!h||(u.prop(j.contextHash)||0)==f))return e.useNode(u,d),ze&&console.log(o+this.stackID(e)+` (via reuse of ${s.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=s.stateSlot(e.state,4);if(l>0)return e.reduce(l),ze&&console.log(o+this.stackID(e)+` (via always-reduce ${s.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),ze&&console.log(o+this.stackID(p)+` (via ${(f&65536)==0?"shift":`reduce of ${s.getName(f&65535)}`} for ${s.getName(u)} @ ${r}${p==e?"":", split"})`),O)return!0;p.pos>r?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 OO(e,t),!0}}runRecovery(e,t,i){let r=null,s=!1;for(let o=0;o<e.length;o++){let l=e[o],a=t[o<<1],h=t[(o<<1)+1],f=ze?this.stackID(l)+" -> ":"";if(l.deadEnd&&(s||(s=!0,l.restart(),ze&&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()&&(ze&&console.log(d+this.stackID(u)+" (via force-reduce)"),!this.advanceFully(u,i));O++)ze&&(d=this.stackID(u)+" -> ");for(let O of l.recoverByInsert(a))ze&&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),ze&&console.log(f+this.stackID(l)+` (via recover-delete ${this.parser.getName(a)})`),OO(l,i)):(!r||r.score<u.score)&&(r=u)}return r}stackToTree(e){return e.close(),J.build({buffer:qa.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=(Ya||(Ya=new WeakMap)).get(e);return t||Ya.set(e,t=String.fromCodePoint(this.nextStackID++)),t+e}};function OO(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(OO,"pushStackDedup");var Ua=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}},Wa=c(n=>n,"id"),Bi=class{static{c(this,"ContextTracker")}constructor(e){this.start=e.start,this.shift=e.shift||Wa,this.reduce=e.reduce||Wa,this.reuse=e.reuse||Wa,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}},Wt=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]),r=[];for(let l=0;l<t.length;l++)r.push([]);function s(l,a,h){r[l].push([a,a.deserialize(String(h))])}if(c(s,"setProp"),e.nodeProps)for(let l of e.nodeProps){let a=l[0];typeof a=="string"&&(a=j[a]);for(let h=1;h<l.length;){let f=l[h++];if(f>=0)s(f,a,l[h++]);else{let u=l[h+-f];for(let d=-f;d>0;d--)s(l[h++],a,u);h++}}}this.nodeSet=new Qn(t.map((l,a)=>de.define({name:a>=this.minRepeatTerm?void 0:l,id:a,props:r[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=Wn(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(pO),this.states=Wn(e.states,Uint32Array),this.data=Wn(e.stateData),this.goto=Wn(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 r=new Ga(this,e,t,i);for(let s of this.wrappers)r=s(r,e,t,i);return r}getGoto(e,t,i=!1){let r=this.goto;if(t>=r[0])return-1;for(let s=r[t+1];;){let o=r[s++],l=o&1,a=r[s++];if(l&&i)return a;for(let h=s+(o>>1);s<h;s++)if(r[s]==e)return a;if(l)return-1}}hasAction(e,t){let i=this.data;for(let r=0;r<2;r++)for(let s=this.stateSlot(e,r?2:1),o;;s+=3){if((o=i[s])==65535)if(i[s+1]==1)o=i[s=bt(i,s+2)];else{if(i[s+1]==2)return bt(i,s+2);break}if(o==t||o==0)return bt(i,s+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),r=i?t(i):void 0;for(let s=this.stateSlot(e,1);r==null;s+=3){if(this.data[s]==65535)if(this.data[s+1]==1)s=bt(this.data,s+2);else break;r=t(bt(this.data,s+1))}return r}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=bt(this.data,i+2);else break;if((this.data[i+2]&1)==0){let r=this.data[i+1];t.some((s,o)=>o&1&&s==r)||t.push(this.data[i],r)}}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 r=e.tokenizers.find(s=>s.from==i);return r?r.to:i})),e.specializers&&(t.specializers=this.specializers.slice(),t.specializerSpecs=this.specializerSpecs.map((i,r)=>{let s=e.specializers.find(l=>l.from==i.external);if(!s)return i;let o=Object.assign(Object.assign({},i),{external:s.to});return t.specializers[r]=pO(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 s of e.split(" ")){let o=t.indexOf(s);o>=0&&(i[o]=!0)}let r=null;for(let s=0;s<t.length;s++)if(!i[s])for(let o=this.dialects[t[s]],l;(l=this.data[o++])!=65535;)(r||(r=new Uint8Array(this.maxTerm+1)))[l]=1;return new Ua(e,i,r)}static deserialize(e){return new n(e)}};function bt(n,e){return n[e]|n[e+1]<<16}c(bt,"pair");function lb(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(lb,"findFinished");function pO(n){if(n.external){let e=n.extend?1:0;return(t,i)=>n.external(t,i)<<1|e}return n.get}c(pO,"getSpecializer");var ab=135,gO=1,hb=136,cb=137,yO=2,fb=138,ub=3,db=4,bO=[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],Ob=58,pb=40,xO=95,mb=91,As=45,gb=46,Sb=35,yb=37,bb=38,xb=92,Qb=10,wb=42;function Dn(n){return n>=65&&n<=90||n>=97&&n<=122||n>=161}c(Dn,"isAlpha");function Fa(n){return n>=48&&n<=57}c(Fa,"isDigit");function SO(n){return Fa(n)||n>=97&&n<=102||n>=65&&n<=70}c(SO,"isHex");var QO=c((n,e,t)=>(i,r)=>{for(let s=!1,o=0,l=0;;l++){let{next:a}=i;if(Dn(a)||a==As||a==xO||s&&Fa(a))!s&&(a!=As||l>0)&&(s=!0),o===l&&a==As&&o++,i.advance();else if(a==xb&&i.peek(1)!=Qb){if(i.advance(),SO(i.next)){do i.advance();while(SO(i.next));i.next==32&&i.advance()}else i.next>-1&&i.advance();s=!0}else{s&&i.acceptToken(o==2&&r.canShift(yO)?e:a==pb?t:n);break}}},"identifierTokens"),kb=new ae(QO(hb,yO,cb),{contextual:!0}),$b=new ae(QO(fb,ub,db),{contextual:!0}),vb=new ae(n=>{if(bO.includes(n.peek(-1))){let{next:e}=n;(Dn(e)||e==xO||e==Sb||e==gb||e==wb||e==mb||e==Ob&&Dn(n.peek(1))||e==As||e==bb)&&n.acceptToken(ab)}}),Pb=new ae(n=>{if(!bO.includes(n.peek(-1))){let{next:e}=n;if(e==yb&&(n.advance(),n.acceptToken(gO)),Dn(e)){do n.advance();while(Dn(n.next)||Fa(n.next));n.acceptToken(gO)}}}),Tb=Xt({"AtKeyword import charset namespace keyframes media supports font-feature-values":S.definitionKeyword,"from to selector scope MatchFlag":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 FontName":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}),Cb={__proto__:null,lang:44,"nth-child":44,"nth-last-child":44,"nth-of-type":44,"nth-last-of-type":44,dir:44,"host-context":44,if:90,url:132,"url-prefix":132,domain:132,regexp:132},Zb={__proto__:null,or:104,and:104,not:112,only:112,layer:186},Xb={__proto__:null,selector:118,layer:182},Ab={__proto__:null,"@import":178,"@media":190,"@charset":194,"@namespace":198,"@keyframes":204,"@supports":216,"@scope":220,"@font-feature-values":226},Rb={__proto__:null,to:223},wO=Wt.deserialize({version:14,states:"IpQYQdOOO#}QdOOP$UO`OOO%OQaO'#CfOOQP'#Ce'#CeO%VQdO'#CgO%[Q`O'#CgO%aQaO'#FdO&XQdO'#CkO&xQaO'#CcO'SQdO'#CnO'_QdO'#DtO'dQdO'#DvO'oQdO'#D}O'oQdO'#EQOOQP'#Fd'#FdO)OQhO'#EsOOQS'#Fc'#FcOOQS'#Ev'#EvQYQdOOO)VQdO'#EWO*cQhO'#E^O)VQdO'#E`O*jQdO'#EbO*uQdO'#EeO)zQhO'#EkO*}QdO'#EmO+YQdO'#EpO+_QaO'#CfO+fQ`O'#ETO+kQ`O'#FnO+vQdO'#FnQOQ`OOP,QO&jO'#CaPOOO)CAR)CAROOQP'#Ci'#CiOOQP,59R,59RO%VQdO,59ROOQP'#Cm'#CmOOQP,59V,59VO&XQdO,59VO,]QdO,59YO'_QdO,5:`O'dQdO,5:bO'oQdO,5:iO'oQdO,5:kO'oQdO,5:lO'oQdO'#E}O,hQ`O,58}O,pQdO'#ESOOQS,58},58}OOQP'#Cq'#CqOOQO'#Dr'#DrOOQP,59Y,59YO,wQ`O,59YO,|Q`O,59YOOQP'#Du'#DuOOQP,5:`,5:`O-RQpO'#DwO-^QdO'#DxO-cQ`O'#DxO-hQpO,5:bO.RQaO,5:iO.iQaO,5:lOOQW'#D^'#D^O/eQhO'#DgO/xQhO,5;_O)zQhO'#DeO0VQ`O'#DkO0[QhO'#DnOOQW'#Fj'#FjOOQS,5;_,5;_O0aQ`O'#DhOOQS-E8t-E8tOOQ['#Cv'#CvO0fQdO'#CwO0|QdO'#C}O1dQdO'#DQO1zQ!pO'#DSO4TQ!jO,5:rOOQO'#DX'#DXO,|Q`O'#DWO4eQ!nO'#FgO6hQ`O'#DYO6mQ`O'#DoOOQ['#Fg'#FgO6rQhO'#FqO7QQ`O,5:xO7VQ!bO,5:zOOQS'#Ed'#EdO7_Q`O,5:|O7dQdO,5:|OOQO'#Eg'#EgO7lQ`O,5;PO7qQhO,5;VO'oQdO'#DjOOQS,5;X,5;XO0aQ`O,5;XO7yQdO,5;XOOQS'#FU'#FUO8RQdO'#ErO7QQ`O,5;[O8ZQdO,5:oO8kQdO'#FPO8xQ`O,5<YO8xQ`O,5<YPOOO'#Eu'#EuP9TO&jO,58{POOO,58{,58{OOQP1G.m1G.mOOQP1G.q1G.qOOQP1G.t1G.tO,wQ`O1G.tO,|Q`O1G.tOOQP1G/z1G/zO9`QpO1G/|O9hQaO1G0TO:OQaO1G0VO:fQaO1G0WO:|QaO,5;iOOQO-E8{-E8{OOQS1G.i1G.iO;WQ`O,5:nO;]QdO'#DsO;dQdO'#CuOOQO'#Dz'#DzOOQO,5:d,5:dO-^QdO,5:dOOQP1G/|1G/|O)VQdO1G/|O;kQ!jO'#D^O;yQ!bO,59yO<RQhO,5:ROOQO'#Fk'#FkO;|Q!bO,59}O<ZQhO'#FVO)zQhO,59{O)zQhO'#FVO=OQhO1G0yOOQS1G0y1G0yO=YQhO,5:PO>QQhO'#DlOOQW,5:V,5:VOOQW,5:Y,5:YOOQW,5:S,5:SO>[Q!fO'#FhOOQS'#Fh'#FhOOQS'#Ex'#ExO?lQdO,59cOOQ[,59c,59cO@SQdO,59iOOQ[,59i,59iO@jQdO,59lOOQ[,59l,59lOOQ[,59n,59nO)VQdO,59pOAQQhO'#EYOOQW'#EY'#EYOAlQ`O1G0^O4^QhO1G0^OOQ[,59r,59rO)zQhO'#D[OOQ[,59t,59tOAqQ#tO,5:ZOA|QhO'#FROBZQ`O,5<]OOQS1G0d1G0dOOQS1G0f1G0fOOQS1G0h1G0hOBfQ`O1G0hOBkQdO'#EhOOQS1G0k1G0kOOQS1G0q1G0qOBvQaO,5:UO7QQ`O1G0sOOQS1G0s1G0sO0aQ`O1G0sOOQS-E9S-E9SOOQS1G0v1G0vOB}Q!fO1G0ZOCeQ`O'#EVOOQO1G0Z1G0ZOOQO,5;k,5;kOCjQdO,5;kOOQO-E8}-E8}OCwQ`O1G1tPOOO-E8s-E8sPOOO1G.g1G.gOOQP7+$`7+$`OOQP7+%h7+%hO)VQdO7+%hOOQS1G0Y1G0YODSQaO'#FmOD^Q`O,5:_ODcQ!fO'#EwOEaQdO'#FfOEkQ`O,59aOOQO1G0O1G0OOEpQ!bO7+%hO)VQdO1G/eOE{QhO1G/iOOQW1G/m1G/mOOQW1G/g1G/gOF^QhO,5;qOOQW-E9T-E9TOOQS7+&e7+&eOGRQhO'#D^OGaQhO'#FlOGlQ`O'#FlOGqQ`O,5:WOOQS-E8v-E8vOOQ[1G.}1G.}OOQ[1G/T1G/TOOQ[1G/W1G/WOOQ[1G/[1G/[OGvQdO,5:tOOQS7+%x7+%xOG{Q`O7+%xOHQQhO'#D]OHYQ`O,59vO)zQhO,59vOOQ[1G/u1G/uOHbQ`O1G/uOHgQhO,5;mOOQO-E9P-E9POOQS7+&S7+&SOHuQbO'#DSOOQO'#Ej'#EjOITQ`O'#EiOOQO'#Ei'#EiOI`Q`O'#FSOIhQdO,5;SOOQS,5;S,5;SOOQ[1G/p1G/pOOQS7+&_7+&_O7QQ`O7+&_OIsQ!fO'#FOO)VQdO'#FOOJzQdO7+%uOOQO7+%u7+%uOOQO,5:q,5:qOOQO1G1V1G1VOK_Q!bO<<ISOKjQdO'#E|OKtQ`O,5<XOOQP1G/y1G/yOOQS-E8u-E8uOK|QdO'#E{OLWQ`O,5<QOOQ]1G.{1G.{OOQP<<IS<<ISOL`Q`O<<ISOLeQdO7+%POOQO'#D`'#D`OLlQ!bO7+%TOLtQhO'#EzOMRQ`O,5<WO)VQdO,5<WOOQW1G/r1G/rOOQO'#E['#E[OMZQ`O1G0`OOQS<<Id<<IdO)VQdO,59wOMzQhO1G/bOOQ[1G/b1G/bONRQ`O1G/bOOQW-E8w-E8wOOQ[7+%a7+%aOOQO,5;T,5;TOBnQdO'#FTOI`Q`O,5;nOOQS,5;n,5;nOOQS-E9Q-E9QOOQS1G0n1G0nOOQS<<Iy<<IyONZQ!fO,5;jOOQS-E8|-E8|OOQO<<Ia<<IaOOQPAN>nAN>nO! bQ`OAN>nO! gQaO,5;hOOQO-E8z-E8zO! qQdO,5;gOOQO-E8y-E8yOOQW<<Hk<<HkOOQW<<Ho<<HoO! {QhO<<HoO!!^QhO,5;fO!!iQ`O,5;fOOQO-E8x-E8xO!!nQdO1G1rOGvQdO'#FQO!!xQ`O7+%zOOQW7+%z7+%zO!#QQ!bO1G/cOOQ[7+$|7+$|O!#]QhO7+$|P!#dQ`O'#EyOOQO,5;o,5;oOOQO-E9R-E9ROOQS1G1Y1G1YOOQPG24YG24YO!#iQ`OAN>ZO)VQdO1G1QO!#nQ`O7+'^OOQO,5;l,5;lOOQO-E9O-E9OOOQW<<If<<IfOOQ[<<Hh<<HhPOQW,5;e,5;eOOQWG23uG23uO!#vQdO7+&l",stateData:"!$Z~O$QOS$RQQ~OWVO^_O`WOcYOdYOl`OmZOp[O!r]O!u^O!{dO#ReO#TfO#VgO#YhO#`iO#bjO#ekO#|RO$XTO~OQmOWVO^_O`WOcYOdYOl`OmZOp[O!r]O!u^O!{dO#ReO#TfO#VgO#YhO#`iO#bjO#ekO#|lO$XTO~O#z$bP~P!jO$RqO~O`YXcYXdYXmYXpYXsYX!aYX!rYX!uYX#{YX$X[X~OgYX~P$ZO#|sO~O$XuO~O$XuO`$WXc$WXd$WXm$WXp$WXs$WX!a$WX!r$WX!u$WX#{$WXg$WX~O#|vO~O`xOcyOdyOmzOp{O!r|O!u!OO#{}O~Os!RO!a!PO~P&^Of!XO#|!TO#}!UO~O#|!YO~OW!^O#|![O$X!]O~OWVO^_O`WOcYOdYOmZOp[O!r]O!u^O#|RO$XTO~OS!fOc!gOd!gOh!cOs!RO!Y!eO!]!jO$O!bO~On!iO~P(dOQ!tOh!mOp!nOs!oOu!wOw!wO}!uO!d!vO#|!lO#}!rO$]!pO~OS!fOc!gOd!gOh!cO!Y!eO!]!jO$O!bO~Os$eP~P)zOw!|O!d!vO#|!{O~Ow#OO#|#OO~Oh#ROs!RO#c#TO~O#|#VO~Oc!xX~P$ZOc#YO~On#ZO#z$bXr$bX~O#z$bXr$bX~P!jO$S#^O$T#^O$U#`O~Of#eO#|!TO#}!UO~Os!RO!a!PO~Or$bP~P!jOh#oO~Oh#pO~Oo!kX!o!kX$X!mX~O#|#qO~O$X#sO~Oo#tO!o#uO~O`xOcyOdyOmzOp{O~Os!qa!a!qa!r!qa!u!qa#{!qag!qa~P-pOs!ta!a!ta!r!ta!u!ta#{!tag!ta~P-pOS!fOc!gOd!gOh!cO!Y!eO!]!jO~OR#yOu#yOw#yO$O#vO$]!pO~P/POn$PO!U#|O!a#}O~P(dOh$RO~O$O$TO~Oh#RO~O`$WOc$WOg$ZOl$WOm$WOn$WO~P)VO`$WOc$WOl$WOm$WOn$WOo$]O~P)VO`$WOc$WOl$WOm$WOn$WOr$_O~P)VOP$`OSvXcvXdvXhvXnvXyvX!YvX!]vX!}vX#PvX$OvX!WvXQvX`vXgvXlvXmvXpvXsvXuvXwvX}vX!dvX#|vX#}vX$]vXovXrvX!avX#zvX$dvX!pvX~Oy$aO!}$bO#P$cOn$eP~P)zOh#pOS$ZXc$ZXd$ZXn$ZXy$ZX!Y$ZX!]$ZX!}$ZX#P$ZX$O$ZXQ$ZX`$ZXg$ZXl$ZXm$ZXp$ZXs$ZXu$ZXw$ZX}$ZX!d$ZX#|$ZX#}$ZX$]$ZXo$ZXr$ZX!a$ZX#z$ZX$d$ZX!p$ZX~Oh$gO~Oh$iO~O!U#|O!a$jOs$eXn$eX~Os!RO~On$mOy$aO~On$nO~Ow$oO!d!vO~Os$pO~Os!RO!U#|O~Os!RO#c$vO~O#|#VOs#fX~O$d$zOn!wa#z!war!wa~P)VOn#sX#z#sXr#sX~P!jOn#ZO#z$bar$ba~O$S#^O$T#^O$U%RO~Oo%TO!o%UO~Os!qi!a!qi!r!qi!u!qi#{!qig!qi~P-pOs!si!a!si!r!si!u!si#{!sig!si~P-pOs!ti!a!ti!r!ti!u!ti#{!tig!ti~P-pOs#qa!a#qa~P&^Or%VO~Og$aP~P'oOg$YP~P)VOc!SXg!QX!U!QX!W!SX~Oc%_O!W%`O~Og%aO!U#|O~O!U#|OS#yXc#yXd#yXh#yXn#yXs#yX!Y#yX!]#yX!a#yX$O#yX~On%eO!a#}O~P(dO!U#|OS!Xac!Xad!Xah!Xan!Xas!Xa!Y!Xa!]!Xa!a!Xa$O!Xag!Xa~O$O%fOg$`P~P/POy$aOQ$[X`$[Xc$[Xg$[Xh$[Xl$[Xm$[Xn$[Xp$[Xs$[Xu$[Xw$[X}$[X!d$[X#|$[X#}$[X$]$[Xo$[Xr$[X~O`$WOc$WOg%kOl$WOm$WOn$WO~P)VO`$WOc$WOl$WOm$WOn$WOo%lO~P)VO`$WOc$WOl$WOm$WOn$WOr%mO~P)VOh%oOS!|Xc!|Xd!|Xn!|X!Y!|X!]!|X$O!|X~On%pO~Og%uOw%vO!e%vO~Os#uX!a#uXn#uX~P)zO!a$jOs$ean$ea~On%yO~Or&QO#|%{O$]%zO~Og&RO~P&^Oy$aO!a&VO$d$zOn!wi#z!wir!wi~P)VO$c&YO~On#sa#z#sar#sa~P!jOn#ZO#z$bir$bi~O!a&]Og$aX~P&^Og&_O~Oy$aOQ#kXg#kXh#kXp#kXs#kXu#kXw#kX}#kX!a#kX!d#kX#|#kX#}#kX$]#kX~O!a&aOg$YX~P)VOg&cO~Oo&dOy$aO!p&eO~OR#yOu#yOw#yO$O&gO$]!pO~O!U#|OS#yac#yad#yah#yan#yas#ya!Y#ya!]#ya!a#ya$O#ya~Oc!SXg!QX!U!QX!a!QX~O!U#|O!a&iOg$`X~Oc&kO~Og&lO~O#|&mO~On&oO~Oc&pO!U#|O~Og&rOn&qO~Og&uO~O!U#|Os#ua!a#uan#ua~OP$`OsvX!avXgvX~O$]%zOs#]X!a#]X~Os!RO!a&wO~Or&{O#|%{O$]%zO~Oy$aOQ#rXh#rXn#rXp#rXs#rXu#rXw#rX}#rX!a#rX!d#rX#z#rX#|#rX#}#rX$]#rX$d#rXr#rX~O!a&VO$d$zOn!wq#z!wqr!wq~P)VOo'QOy$aO!p'RO~Og#pX!a#pX~P'oO!a&]Og$aa~Og#oX!a#oX~P)VO!a&aOg$Ya~Oo'QO~Og'WO~P)VOg'XO!W'YO~O$O%fOg#nX!a#nX~P/PO!a&iOg$`a~O`'_Og'aO~OS#mac#mad#mah#ma!Y#ma!]#ma$O#ma~Og'cO~PMcOg'cOn'dO~Oy$aOQ#rah#ran#rap#ras#rau#raw#ra}#ra!a#ra!d#ra#z#ra#|#ra#}#ra$]#ra$d#rar#ra~Oo'iO~Og#pa!a#pa~P&^Og#oa!a#oa~P)VOR#yOu#yOw#yO$O&gO$]%zO~O!U#|Og#na!a#na~Oc'kO~O!a&iOg$`i~P)VO`'_Og'oO~Oy$aOg!Pin!Pi~Og'pO~PMcOn'qO~Og'rO~O!a&iOg$`q~Og#nq!a#nq~P)VO$Q!e$R$]`$]y!u~",goto:"4h$fPPPPP$gP$jP$s%V$s%i%{P$sP&R$sPP&XPPP&_&i&iPPPPP&iPP&iP'VP&iP&i(Q&iP(n(q(w(w)Z(wP(wP(wP(w(wP)j(w)vP(w)yPP*m*s$s*y$s+P+P+V+ZPP$sP$s$sP+a,],j,q$jP,zP,}P$jP$jP$jP-T$jP-W-Z-^-e$jP$jPP$jP-j$jP-m-s.S.j.x/O/Y/`/f/l/r/|0S0Y0`0f0lPPPPPPPPPPP0r0{P1q1t2vP3O3x4R4U4XPP4_RrQ_aOPco!R#Z$}q_OP]^co|}!O!P!R#R#Z#o$}&]qSOP]^co|}!O!P!R#R#Z#o$}&]qUOP]^co|}!O!P!R#R#Z#o$}&]QtTR#auQwWR#bxQ!VYR#cyQ#c!XS$f!s!tR%S#e!V!wdf!m!n!o#Y#p#u$Y$[$^$a$y%U%Z%_&V&W&a&f&k&p'U'^'k's!U!wdf!m!n!o#Y#p#u$Y$[$^$a$y%U%Z%_&V&W&a&f&k&p'U'^'k'sU#y!c%`'YU%}$p&P&wR&v%|!V!sdf!m!n!o#Y#p#u$Y$[$^$a$y%U%Z%_&V&W&a&f&k&p'U'^'k'sR$h!uQ%s$gR&s%tq!h`ei!c!d!e!q#|#}$O$R$e$g$j%t&iQ#w!cQ%h$RQ&h%`Q'[&iR'j'YQ#UjQ$U!jQ$t#TR&T$vR$S!f!U!wdf!m!n!o#Y#p#u$Y$[$^$a$y%U%Z%_&V&W&a&f&k&p'U'^'k'sQ!|gR$o!}Q!WYR#dyQ#c!WR%S#dQ!ZZR#fzQ!_[R#g{T!^[{Q#r!]R%]#sQ!SXQ!i`Q#SjQ#m!QQ$P!dQ$l!yQ$r#QQ$u#UQ$x#XQ%e$OQ&S$tQ&y&OQ&|&TR'h&xSnP!RQ#]oQ$|#ZR&Z$}ZmPo!R#Z$}Q${#YQ&X$yR'P&WR$e!qQ&n%oR'm'_R!}gR#PhR$q#PS&O$p&PR'f&wV%|$p&P&wR#XkQ#_qR%Q#_QcOSoP!RU!kco$}R$}#ZQ%Z#pY&`%Z&f'U'^'sQ&f%_Q'U&aQ'^&kR's'kQ$Y!mQ$[!nQ$^!oV%j$Y$[$^Q%t$gR&t%tQ&j%gS']&j'lR'l'^Q&b%ZR'V&bQ&^%WR'T&^Q!QXR#l!QQ&W$yR'O&WQ#[nS%O#[%PR%P#]Q'`&nR'n'`Q$k!xR%x$kQ&P$pR&z&PQ&x&OR'g&xQ#WkR$w#WQ$O!dR%d$O_bOPco!R#Z$}^XOPco!R#Z$}Q!`]Q!a^Q#h|Q#i}Q#j!OQ#k!PQ$s#RQ%W#oR'S&]R%[#pQ!qdQ!zf[$V!m!n!o$Y$[$^Q$y#Yd%Y#p%Z%_&a&f&k'U'^'k'sQ%^#uQ%n$aS&U$y&WQ&[%UQ&}&VR'b&p]$X!m!n!o$Y$[$^Q!d`U!xe!q$eQ#QiQ#x!cS#{!d$OQ$Q!eQ%b#|Q%c#}Q%g$RS%r$g%tQ%w$jR'Z&iQ#z!cQ&h%`R'j'YR%i$RR%X#oQpPR#n!RQ!yeQ$d!qR%q$e",nodeNames:"\u26A0 Unit VariableName VariableName QueryCallee Comment StyleSheet RuleSet UniversalSelector TagSelector TagName NamespacedTagSelector NamespaceName 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 , PseudoQuery CallLiteral CallTag ParenthesizedContent PseudoClassName ArgList IdSelector IdName AttributeSelector AttributeName NamespacedAttribute NamespaceName AttributeName MatchOp MatchFlag 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 FontFeatureStatement font-feature-values FontName AtRule Styles",maxTerm:159,nodeProps:[["isolate",-2,5,39,""],["openedBy",23,"(",31,"[",34,"{"],["closedBy",24,")",32,"]",35,"}"]],propSources:[Tb],skippedNodes:[0,5,117],repeatNodeCount:17,tokenData:"K`~R!bOX%ZX^&R^p%Zpq&Rqr)ers)vst+jtu2Xuv%Zvw3Rwx3dxy5Ryz5dz{5i{|6S|}:u}!O;W!O!P;u!P!Q<^!Q![=V![!]>Q!]!^>|!^!_?_!_!`@Z!`!a@n!a!b%Z!b!cAo!c!k%Z!k!lC|!l!u%Z!u!vC|!v!}%Z!}#OD_#O#P%Z#P#QDp#Q#R2X#R#]%Z#]#^ER#^#g%Z#g#hC|#h#o%Z#o#pIf#p#qIw#q#rJ`#r#sJq#s#y%Z#y#z&R#z$f%Z$f$g&R$g#BY%Z#BY#BZ&R#BZ$IS%Z$IS$I_&R$I_$I|%Z$I|$JO&R$JO$JT%Z$JT$JU&R$JU$KV%Z$KV$KW&R$KW&FU%Z&FU&FV&R&FV;'S%Z;'S;=`KY<%lO%Z`%^SOy%jz;'S%j;'S;=`%{<%lO%j`%oS!e`Oy%jz;'S%j;'S;=`%{<%lO%j`&OP;=`<%l%j~&Wh$Q~OX%jX^'r^p%jpq'rqy%jz#y%j#y#z'r#z$f%j$f$g'r$g#BY%j#BY#BZ'r#BZ$IS%j$IS$I_'r$I_$I|%j$I|$JO'r$JO$JT%j$JT$JU'r$JU$KV%j$KV$KW'r$KW&FU%j&FU&FV'r&FV;'S%j;'S;=`%{<%lO%j~'yh$Q~!e`OX%jX^'r^p%jpq'rqy%jz#y%j#y#z'r#z$f%j$f$g'r$g#BY%j#BY#BZ'r#BZ$IS%j$IS$I_'r$I_$I|%j$I|$JO'r$JO$JT%j$JT$JU'r$JU$KV%j$KV$KW'r$KW&FU%j&FU&FV'r&FV;'S%j;'S;=`%{<%lO%jj)jS$dYOy%jz;'S%j;'S;=`%{<%lO%j~)yWOY)vZr)vrs*cs#O)v#O#P*h#P;'S)v;'S;=`+d<%lO)v~*hOw~~*kRO;'S)v;'S;=`*t;=`O)v~*wXOY)vZr)vrs*cs#O)v#O#P*h#P;'S)v;'S;=`+d;=`<%l)v<%lO)v~+gP;=`<%l)vj+oYmYOy%jz!Q%j!Q![,_![!c%j!c!i,_!i#T%j#T#Z,_#Z;'S%j;'S;=`%{<%lO%jj,dY!e`Oy%jz!Q%j!Q![-S![!c%j!c!i-S!i#T%j#T#Z-S#Z;'S%j;'S;=`%{<%lO%jj-XY!e`Oy%jz!Q%j!Q![-w![!c%j!c!i-w!i#T%j#T#Z-w#Z;'S%j;'S;=`%{<%lO%jj.OYuY!e`Oy%jz!Q%j!Q![.n![!c%j!c!i.n!i#T%j#T#Z.n#Z;'S%j;'S;=`%{<%lO%jj.uYuY!e`Oy%jz!Q%j!Q![/e![!c%j!c!i/e!i#T%j#T#Z/e#Z;'S%j;'S;=`%{<%lO%jj/jY!e`Oy%jz!Q%j!Q![0Y![!c%j!c!i0Y!i#T%j#T#Z0Y#Z;'S%j;'S;=`%{<%lO%jj0aYuY!e`Oy%jz!Q%j!Q![1P![!c%j!c!i1P!i#T%j#T#Z1P#Z;'S%j;'S;=`%{<%lO%jj1UY!e`Oy%jz!Q%j!Q![1t![!c%j!c!i1t!i#T%j#T#Z1t#Z;'S%j;'S;=`%{<%lO%jj1{SuY!e`Oy%jz;'S%j;'S;=`%{<%lO%jd2[UOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jd2uS!oS!e`Oy%jz;'S%j;'S;=`%{<%lO%jb3WS^QOy%jz;'S%j;'S;=`%{<%lO%j~3gWOY3dZw3dwx*cx#O3d#O#P4P#P;'S3d;'S;=`4{<%lO3d~4SRO;'S3d;'S;=`4];=`O3d~4`XOY3dZw3dwx*cx#O3d#O#P4P#P;'S3d;'S;=`4{;=`<%l3d<%lO3d~5OP;=`<%l3dj5WShYOy%jz;'S%j;'S;=`%{<%lO%j~5iOg~n5pUWQyWOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jj6ZWyW!uQOy%jz!O%j!O!P6s!P!Q%j!Q![9x![;'S%j;'S;=`%{<%lO%jj6xU!e`Oy%jz!Q%j!Q![7[![;'S%j;'S;=`%{<%lO%jj7cY!e`$]YOy%jz!Q%j!Q![7[![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj8WY!e`Oy%jz{%j{|8v|}%j}!O8v!O!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj8{U!e`Oy%jz!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj9fU!e`$]YOy%jz!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj:P[!e`$]YOy%jz!O%j!O!P7[!P!Q%j!Q![9x![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj:zS!aYOy%jz;'S%j;'S;=`%{<%lO%jj;]WyWOy%jz!O%j!O!P6s!P!Q%j!Q![9x![;'S%j;'S;=`%{<%lO%jj;zU`YOy%jz!Q%j!Q![7[![;'S%j;'S;=`%{<%lO%j~<cTyWOy%jz{<r{;'S%j;'S;=`%{<%lO%j~<yS!e`$R~Oy%jz;'S%j;'S;=`%{<%lO%jj=[[$]YOy%jz!O%j!O!P7[!P!Q%j!Q![9x![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj>VUcYOy%jz![%j![!]>i!];'S%j;'S;=`%{<%lO%jj>pSdY!e`Oy%jz;'S%j;'S;=`%{<%lO%jj?RSnYOy%jz;'S%j;'S;=`%{<%lO%jh?dU!WWOy%jz!_%j!_!`?v!`;'S%j;'S;=`%{<%lO%jh?}S!WW!e`Oy%jz;'S%j;'S;=`%{<%lO%jl@bS!WW!oSOy%jz;'S%j;'S;=`%{<%lO%jj@uV!rQ!WWOy%jz!_%j!_!`?v!`!aA[!a;'S%j;'S;=`%{<%lO%jbAcS!rQ!e`Oy%jz;'S%j;'S;=`%{<%lO%jjArYOy%jz}%j}!OBb!O!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jjBgW!e`Oy%jz!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jjCW[lY!e`Oy%jz}%j}!OCP!O!Q%j!Q![CP![!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jhDRS!pWOy%jz;'S%j;'S;=`%{<%lO%jjDdSpYOy%jz;'S%j;'S;=`%{<%lO%jnDuSo^Oy%jz;'S%j;'S;=`%{<%lO%jjEWU!pWOy%jz#a%j#a#bEj#b;'S%j;'S;=`%{<%lO%jbEoU!e`Oy%jz#d%j#d#eFR#e;'S%j;'S;=`%{<%lO%jbFWU!e`Oy%jz#c%j#c#dFj#d;'S%j;'S;=`%{<%lO%jbFoU!e`Oy%jz#f%j#f#gGR#g;'S%j;'S;=`%{<%lO%jbGWU!e`Oy%jz#h%j#h#iGj#i;'S%j;'S;=`%{<%lO%jbGoU!e`Oy%jz#T%j#T#UHR#U;'S%j;'S;=`%{<%lO%jbHWU!e`Oy%jz#b%j#b#cHj#c;'S%j;'S;=`%{<%lO%jbHoU!e`Oy%jz#h%j#h#iIR#i;'S%j;'S;=`%{<%lO%jbIYS$cQ!e`Oy%jz;'S%j;'S;=`%{<%lO%jjIkSsYOy%jz;'S%j;'S;=`%{<%lO%jfI|U$XUOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jjJeSrYOy%jz;'S%j;'S;=`%{<%lO%jfJvU!uQOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%j`K]P;=`<%l%Z",tokenizers:[vb,Pb,kb,$b,1,2,3,4,new Yt("m~RRYZ[z{a~~g~aO$T~~dP!P!Qg~lO$U~~",28,142)],topRules:{StyleSheet:[0,6],Styles:[1,116]},dynamicPrecedences:{84:1},specialized:[{term:137,get:c(n=>Cb[n]||-1,"get")},{term:138,get:c(n=>Zb[n]||-1,"get")},{term:4,get:c(n=>Xb[n]||-1,"get")},{term:28,get:c(n=>Ab[n]||-1,"get")},{term:136,get:c(n=>Rb[n]||-1,"get")}],tokenPrec:2256});var Ha=null;function Ka(){if(!Ha&&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,r=>"-"+r.toLowerCase())),t.has(i)||(e.push(i),t.add(i)));Ha=e.sort().map(i=>({type:"property",label:i,apply:i+": "}))}return Ha||[]}c(Ka,"properties");var kO=["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})),$O=["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}))),Mb=["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})),jb=["@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})),xt=/^(\w[\w-]*|-\w[\w-]*|)$/,Eb=/^-(-[\w-]*)?$/;function zb(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(zb,"isVarArg");var vO=new Ri,Vb=["Declaration"];function _b(n){for(let e=n;;){if(e.type.isTop)return e;if(!(e=e.parent))return n}}c(_b,"astTop");function PO(n,e,t){if(e.to-e.from>4096){let i=vO.get(e);if(i)return i;let r=[],s=new Set,o=e.cursor(W.IncludeAnonymous);if(o.firstChild())do for(let l of PO(n,o.node,t))s.has(l.label)||(s.add(l.label),r.push(l));while(o.nextSibling());return vO.set(e,r),r}else{let i=[],r=new Set;return e.cursor().iterate(s=>{var o;if(t(s)&&s.matchContext(Vb)&&((o=s.node.nextSibling)===null||o===void 0?void 0:o.name)==":"){let l=n.sliceString(s.from,s.to);r.has(l)||(r.add(l),i.push({label:l,type:"variable"}))}}),i}}c(PO,"variableNames");var Yb=c(n=>e=>{let{state:t,pos:i}=e,r=F(t).resolveInner(i,-1),s=r.type.isError&&r.from==r.to-1&&t.doc.sliceString(r.from,r.to)=="-";if(r.name=="PropertyName"||(s||r.name=="TagName")&&/^(Block|Styles)$/.test(r.resolve(r.to).name))return{from:r.from,options:Ka(),validFor:xt};if(r.name=="ValueName")return{from:r.from,options:$O,validFor:xt};if(r.name=="PseudoClassName")return{from:r.from,options:kO,validFor:xt};if(n(r)||(e.explicit||s)&&zb(r,t.doc))return{from:n(r)||s?r.from:i,options:PO(t.doc,_b(r),n),validFor:Eb};if(r.name=="TagName"){for(let{parent:a}=r;a;a=a.parent)if(a.name=="Block")return{from:r.from,options:Ka(),validFor:xt};return{from:r.from,options:Mb,validFor:xt}}if(r.name=="AtKeyword")return{from:r.from,options:jb,validFor:xt};if(!e.explicit)return null;let o=r.resolve(i),l=o.childBefore(i);return l&&l.name==":"&&o.name=="PseudoClassSelector"?{from:i,options:kO,validFor:xt}:l&&l.name==":"&&o.name=="Declaration"||o.name=="ArgList"?{from:i,options:$O,validFor:xt}:o.name=="Block"||o.name=="Styles"?{from:i,options:Ka(),validFor:xt}:null},"defineCSSCompletionSource"),Wb=Yb(n=>n.name=="VariableName"),Ln=At.define({name:"css",parser:wO.configure({props:[si.add({Declaration:Vi()}),oi.add({"Block KeyframeList":ts})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"}},indentOnInput:/^\s*\}$/,wordChars:"-"}});function Rs(){return new Mt(Ln,Ln.data.of({autocomplete:Wb}))}c(Rs,"css");var Db=55,Lb=1,qb=56,Bb=2,Ib=57,Nb=3,TO=4,Gb=5,nh=6,EO=7,zO=8,VO=9,_O=10,Ub=11,Fb=12,Hb=13,Ja=58,Kb=14,Jb=15,CO=59,YO=21,e1=23,WO=24,t1=25,th=27,DO=28,i1=29,n1=32,r1=35,s1=37,o1=38,l1=0,a1=1,h1={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},c1={dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},ZO={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 f1(n){return n==45||n==46||n==58||n>=65&&n<=90||n==95||n>=97&&n<=122||n>=161}c(f1,"nameChar");var XO=null,AO=null,RO=0;function ih(n,e){let t=n.pos+e;if(RO==t&&AO==n)return XO;let i=n.peek(e),r="";for(;f1(i);)r+=String.fromCharCode(i),i=n.peek(++e);return AO=n,RO=t,XO=r?r.toLowerCase():i==u1||i==d1?void 0:null}c(ih,"tagNameAfter");var LO=60,Ms=62,rh=47,u1=63,d1=33,O1=45;function MO(n,e){this.name=n,this.parent=e}c(MO,"ElementContext");var p1=[nh,_O,EO,zO,VO],m1=new Bi({start:null,shift(n,e,t,i){return p1.indexOf(e)>-1?new MO(ih(i,1)||"",n):n},reduce(n,e){return e==YO&&n?n.parent:n},reuse(n,e,t,i){let r=e.type.id;return r==nh||r==s1?new MO(ih(i,1)||"",n):n},strict:!1}),g1=new ae((n,e)=>{if(n.next!=LO){n.next<0&&e.context&&n.acceptToken(Ja);return}n.advance();let t=n.next==rh;t&&n.advance();let i=ih(n,0);if(i===void 0)return;if(!i)return n.acceptToken(t?Jb:Kb);let r=e.context?e.context.name:null;if(t){if(i==r)return n.acceptToken(Ub);if(r&&c1[r])return n.acceptToken(Ja,-2);if(e.dialectEnabled(l1))return n.acceptToken(Fb);for(let s=e.context;s;s=s.parent)if(s.name==i)return;n.acceptToken(Hb)}else{if(i=="script")return n.acceptToken(EO);if(i=="style")return n.acceptToken(zO);if(i=="textarea")return n.acceptToken(VO);if(h1.hasOwnProperty(i))return n.acceptToken(_O);r&&ZO[r]&&ZO[r][i]?n.acceptToken(Ja,-1):n.acceptToken(nh)}},{contextual:!0}),S1=new ae(n=>{for(let e=0,t=0;;t++){if(n.next<0){t&&n.acceptToken(CO);break}if(n.next==O1)e++;else if(n.next==Ms&&e>=2){t>=3&&n.acceptToken(CO,-2);break}else e=0;n.advance()}});function y1(n){for(;n;n=n.parent)if(n.name=="svg"||n.name=="math")return!0;return!1}c(y1,"inForeignElement");var b1=new ae((n,e)=>{if(n.next==rh&&n.peek(1)==Ms){let t=e.dialectEnabled(a1)||y1(e.context);n.acceptToken(t?Gb:TO,2)}else n.next==Ms&&n.acceptToken(TO,1)});function sh(n,e,t){let i=2+n.length;return new ae(r=>{for(let s=0,o=0,l=0;;l++){if(r.next<0){l&&r.acceptToken(e);break}if(s==0&&r.next==LO||s==1&&r.next==rh||s>=2&&s<i&&r.next==n.charCodeAt(s-2))s++,o++;else if(s==i&&r.next==Ms){l>o?r.acceptToken(e,-o):r.acceptToken(t,-(o-2));break}else if((r.next==10||r.next==13)&&l){r.acceptToken(e,1);break}else s=o=0;r.advance()}})}c(sh,"contentTokenizer");var x1=sh("script",Db,Lb),Q1=sh("style",qb,Bb),w1=sh("textarea",Ib,Nb),k1=Xt({"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}),qO=Wt.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:m1,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:[k1],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:[x1,Q1,w1,b1,g1,S1,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(WO)){let r=i.getChild(t1),s=i.getChild(th)||i.getChild(DO);r&&(t[e.read(r.from,r.to)]=s?s.type.id==th?e.read(s.from+1,s.to-1):e.read(s.from,s.to):"")}return t}c(BO,"getAttrs");function jO(n,e){let t=n.getChild(e1);return t?e.read(t.from,t.to):" "}c(jO,"findTagName");function eh(n,e,t){let i;for(let r of t)if(!r.attrs||r.attrs(i||(i=BO(n.node.parent.firstChild,e))))return{parser:r.parser,bracketed:!0};return null}c(eh,"maybeNest");function oh(n=[],e=[]){let t=[],i=[],r=[],s=[];for(let l of n)(l.tag=="script"?t:l.tag=="style"?i:l.tag=="textarea"?r:s).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==i1)return eh(l,a,t);if(h==n1)return eh(l,a,i);if(h==r1)return eh(l,a,r);if(h==YO&&s.length){let f=l.node,u=f.firstChild,d=u&&jO(u,a),O;if(d){for(let p of s)if(p.tag==d&&(!p.attrs||p.attrs(O||(O=BO(u,a))))){let m=f.lastChild,g=m.type.id==o1?m.from:f.to;if(g>u.to)return{parser:p.parser,overlay:[{from:u.to,to:g}]}}}}if(o&&h==WO){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!=jO(f.parent,a))continue;let p=f.lastChild;if(p.type.id==th){let m=p.from+1,g=p.lastChild,y=p.to-(g&&g.isError?0:1);if(y>m)return{parser:O.parser,overlay:[{from:m,to:y}],bracketed:!0}}else if(p.type.id==DO)return{parser:O.parser,overlay:[{from:p.from,to:p.to}]}}}}return null})}c(oh,"configureNesting");var $1=316,v1=317,IO=1,P1=2,T1=3,C1=4,Z1=318,X1=320,A1=321,R1=5,M1=6,j1=0,ah=[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],NO=125,E1=59,hh=47,z1=42,V1=43,_1=45,Y1=60,W1=44,D1=63,L1=46,q1=91,B1=new Bi({start:!1,shift(n,e){return e==R1||e==M1||e==X1?n:e==A1},strict:!1}),I1=new ae((n,e)=>{let{next:t}=n;(t==NO||t==-1||e.context)&&n.acceptToken(Z1)},{contextual:!0,fallback:!0}),N1=new ae((n,e)=>{let{next:t}=n,i;ah.indexOf(t)>-1||t==hh&&((i=n.peek(1))==hh||i==z1)||t!=NO&&t!=E1&&t!=-1&&!e.context&&n.acceptToken($1)},{contextual:!0}),G1=new ae((n,e)=>{n.next==q1&&!e.context&&n.acceptToken(v1)},{contextual:!0}),U1=new ae((n,e)=>{let{next:t}=n;if(t==V1||t==_1){if(n.advance(),t==n.next){n.advance();let i=!e.context&&e.canShift(IO);n.acceptToken(i?IO:P1)}}else t==D1&&n.peek(1)==L1&&(n.advance(),n.advance(),(n.next<48||n.next>57)&&n.acceptToken(T1))},{contextual:!0});function lh(n,e){return n>=65&&n<=90||n>=97&&n<=122||n==95||n>=192||!e&&n>=48&&n<=57}c(lh,"identifierChar");var F1=new ae((n,e)=>{if(n.next!=Y1||!e.dialectEnabled(j1)||(n.advance(),n.next==hh))return;let t=0;for(;ah.indexOf(n.next)>-1;)n.advance(),t++;if(lh(n.next,!0)){for(n.advance(),t++;lh(n.next,!1);)n.advance(),t++;for(;ah.indexOf(n.next)>-1;)n.advance(),t++;if(n.next==W1)return;for(let i=0;;i++){if(i==7){if(!lh(n.next,!0))return;break}if(n.next!="extends".charCodeAt(i))break;n.advance(),t++}}n.acceptToken(C1,-t)}),H1=Xt({"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)}),K1={__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},J1={__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},ex={__proto__:null,"<":193},GO=Wt.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:B1,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:[H1],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:[N1,G1,U1,F1,2,3,4,5,6,7,8,9,10,11,12,13,14,I1,new Yt("$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 Yt("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=>K1[n]||-1,"get")},{term:343,get:c(n=>J1[n]||-1,"get")},{term:95,get:c(n=>ex[n]||-1,"get")}],tokenPrec:15201});var KO=[xe("function ${name}(${params}) {\n ${}\n}",{label:"function",detail:"definition",type:"keyword"}),xe("for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),xe("for (let ${name} of ${collection}) {\n ${}\n}",{label:"for",detail:"of loop",type:"keyword"}),xe("do {\n ${}\n} while (${})",{label:"do",detail:"loop",type:"keyword"}),xe("while (${}) {\n ${}\n}",{label:"while",detail:"loop",type:"keyword"}),xe(`try { 13 + \${} 14 + } catch (\${error}) { 15 + \${} 16 + }`,{label:"try",detail:"/ catch block",type:"keyword"}),xe("if (${}) {\n ${}\n}",{label:"if",detail:"block",type:"keyword"}),xe(`if (\${}) { 17 + \${} 18 + } else { 19 + \${} 20 + }`,{label:"if",detail:"/ else block",type:"keyword"}),xe(`class \${name} { 21 + constructor(\${params}) { 22 + \${} 23 + } 24 + }`,{label:"class",detail:"definition",type:"keyword"}),xe('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),xe('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],tx=KO.concat([xe("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),xe("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),xe("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),UO=new Ri,JO=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function qn(n){return(e,t)=>{let i=e.node.getChild("VariableDefinition");return i&&t(i,n),!0}}c(qn,"defID");var ix=["FunctionDeclaration"],nx={FunctionDeclaration:qn("function"),ClassDeclaration:qn("class"),ClassExpression:c(()=>!0,"ClassExpression"),EnumDeclaration:qn("constant"),TypeAliasDeclaration:qn("type"),NamespaceDeclaration:qn("namespace"),VariableDefinition(n,e){n.matchContext(ix)||e(n,"variable")},TypeDefinition(n,e){e(n,"type")},__proto__:null};function ep(n,e){let t=UO.get(e);if(t)return t;let i=[],r=!0;function s(o,l){let a=n.sliceString(o.from,o.to);i.push({label:a,type:l})}return c(s,"def"),e.cursor(W.IncludeAnonymous).iterate(o=>{if(r)r=!1;else if(o.name){let l=nx[o.name];if(l&&l(o,s)||JO.has(o.name))return!1}else if(o.to-o.from>8192){for(let l of ep(n,o.node))i.push(l);return!1}}),UO.set(e,i),i}c(ep,"getScope");var FO=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,tp=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function rx(n){let e=F(n.state).resolveInner(n.pos,-1);if(tp.indexOf(e.name)>-1)return null;let t=e.name=="VariableName"||e.to-e.from<20&&FO.test(n.state.sliceDoc(e.from,e.to));if(!t&&!n.explicit)return null;let i=[];for(let r=e;r;r=r.parent)JO.has(r.name)&&(i=i.concat(ep(n.state.doc,r)));return{options:i,from:t?e.from:n.pos,validFor:FO}}c(rx,"localCompletionSource");var nt=At.define({name:"javascript",parser:GO.configure({props:[si.add({IfStatement:Vi({except:/^\s*({|else\b)/}),TryStatement:Vi({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:Qu,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:bu({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":ts,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:"$"}}),ip={test:c(n=>/^JSX/.test(n.name),"test"),facet:Kl({commentTokens:{block:{open:"{/*",close:"*/}"}}})},ch=nt.configure({dialect:"ts"},"typescript"),fh=nt.configure({dialect:"jsx",props:[Jr.add(n=>n.isTop?[ip]:void 0)]}),uh=nt.configure({dialect:"jsx ts",props:[Jr.add(n=>n.isTop?[ip]:void 0)]},"typescript"),np=c(n=>({label:n,type:"keyword"}),"kwCompletion"),rp="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(np),sx=rp.concat(["declare","implements","private","protected","public"].map(np));function js(n={}){let e=n.jsx?n.typescript?uh:fh:n.typescript?ch:nt,t=n.typescript?tx.concat(sx):KO.concat(rp);return new Mt(e,[nt.data.of({autocomplete:Id(tp,Za(t))}),nt.data.of({autocomplete:rx}),n.jsx?ax:[]])}c(js,"javascript");function ox(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(ox,"findOpenTag");function HO(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(HO,"elementName");var lx=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),ax=v.inputHandler.of((n,e,t,i,r)=>{if((lx?n.composing:n.compositionStarted)||n.state.readOnly||e!=t||i!=">"&&i!="/"||!nt.isActiveAt(n.state,e,-1))return!1;let s=r(),{state:o}=s,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=HO(o.doc,p.firstChild,f))||((h=p.firstChild)===null||h===void 0?void 0:h.name)=="JSXFragmentTag")){let m=`${d}>`;return{range:b.cursor(f+m.length,-1),changes:{from:f,insert:m}}}}else if(i==">"){let O=ox(u);if(O&&O.name=="JSXOpenTag"&&!/^\/?>|^<\//.test(o.doc.sliceString(f,f+2))&&(d=HO(o.doc,O,f)))return{range:a,changes:{from:f,insert:`</${d}>`}}}}return{range:a}});return l.changes.empty?!1:(n.dispatch([s,o.update(l,{userEvent:"input.complete",scrollIntoView:!0})]),!0)});var Bn=["_blank","_self","_top","_parent"],dh=["ascii","utf-8","utf-16","latin1","latin1"],Oh=["get","post","put","delete"],ph=["application/x-www-form-urlencoded","multipart/form-data","text/plain"],Ve=["true","false"],A={},hx={a:{attrs:{href:null,ping:null,type:null,media:null,target:Bn,hreflang:null}},abbr:A,address:A,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:null,hreflang:null,type:null,shape:["default","rect","circle","poly"]}},article:A,aside:A,audio:{attrs:{src:null,mediagroup:null,crossorigin:["anonymous","use-credentials"],preload:["none","metadata","auto"],autoplay:["autoplay"],loop:["loop"],controls:["controls"]}},b:A,base:{attrs:{href:null,target:Bn}},bdi:A,bdo:A,blockquote:{attrs:{cite:null}},body:A,br:A,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:["autofocus"],disabled:["autofocus"],formenctype:ph,formmethod:Oh,formnovalidate:["novalidate"],formtarget:Bn,type:["submit","reset","button"]}},canvas:{attrs:{width:null,height:null}},caption:A,center:A,cite:A,code:A,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:A,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:["open"]}},dfn:A,div:A,dl:A,dt:A,em:A,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:["disabled"],form:null,name:null}},figcaption:A,figure:A,footer:A,form:{attrs:{action:null,name:null,"accept-charset":dh,autocomplete:["on","off"],enctype:ph,method:Oh,novalidate:["novalidate"],target:Bn}},h1:A,h2:A,h3:A,h4:A,h5:A,h6:A,head:{children:["title","base","link","style","meta","script","noscript","command"]},header:A,hgroup:A,hr:A,html:{attrs:{manifest:null}},i:A,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:ph,formmethod:Oh,formnovalidate:["novalidate"],formtarget:Bn,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:A,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:["autofocus"],disabled:["disabled"],keytype:["RSA"]}},label:{attrs:{for:null,form:null}},legend:A,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:A,menu:{attrs:{label:null,type:["list","context","toolbar"]}},meta:{attrs:{content:null,charset:dh,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:A,noscript:A,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:A,param:{attrs:{name:null,value:null}},pre:A,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:A,rt:A,ruby:A,samp:A,script:{attrs:{type:["text/javascript"],src:null,async:["async"],defer:["defer"],charset:dh}},section:A,select:{attrs:{form:null,name:null,size:null,autofocus:["autofocus"],disabled:["disabled"],multiple:["multiple"]}},slot:{attrs:{name:null}},small:A,source:{attrs:{src:null,type:null,media:null}},span:A,strong:A,style:{attrs:{type:["text/css"],media:null,scoped:null}},sub:A,summary:A,sup:A,table:A,tbody:A,td:{attrs:{colspan:null,rowspan:null,headers:null}},template:A,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:A,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:["row","col","rowgroup","colgroup"]}},thead:A,time:{attrs:{datetime:null}},title:A,tr:A,track:{attrs:{src:null,label:null,default:null,kind:["subtitles","captions","descriptions","chapters","metadata"],srclang:null}},ul:{children:["li","script","template","ul","ol"]},var:A,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:A},ap={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},hp="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 hp)ap[n]=null;var Ii=class{static{c(this,"Schema")}constructor(e,t){this.tags={...hx,...e},this.globalAttrs={...ap,...t},this.allTags=Object.keys(this.tags),this.globalAttrNames=Object.keys(this.globalAttrs)}};Ii.default=new Ii;function Ni(n,e,t=n.length){if(!e)return"";let i=e.firstChild,r=i&&i.getChild("TagName");return r?n.sliceString(r.from,Math.min(r.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 cp(n,e,t){let i=t.tags[Ni(n,Gi(e))];return i?.children||t.allTags}c(cp,"allowedChildren");function mh(n,e){let t=[];for(let i=Gi(e);i&&!i.type.isTop;i=Gi(i.parent)){let r=Ni(n,i);if(r&&i.lastChild.name=="CloseTag")break;r&&t.indexOf(r)<0&&(e.name=="EndTag"||e.from>=i.firstChild.to)&&t.push(r)}return t}c(mh,"openTags");var fp=/^[:\-\.\w\u00b7-\uffff]*$/;function sp(n,e,t,i,r){let s=/\s*>/.test(n.sliceDoc(r,r+5))?"":">",o=Gi(t,t.name=="StartTag"||t.name=="TagName");return{from:i,to:r,options:cp(n.doc,o,e).map(l=>({label:l,type:"type"})).concat(mh(n.doc,t).map((l,a)=>({label:"/"+l,apply:"/"+l+s,type:"type",boost:99-a}))),validFor:/^\/?[:\-\.\w\u00b7-\uffff]*$/}}c(sp,"completeTag");function op(n,e,t,i){let r=/\s*>/.test(n.sliceDoc(i,i+5))?"":">";return{from:t,to:i,options:mh(n.doc,e).map((s,o)=>({label:s,apply:s+r,type:"type",boost:99-o})),validFor:fp}}c(op,"completeCloseTag");function cx(n,e,t,i){let r=[],s=0;for(let o of cp(n.doc,t,e))r.push({label:"<"+o,type:"type"});for(let o of mh(n.doc,t))r.push({label:"</"+o+">",type:"type",boost:99-s++});return{from:i,to:i,options:r,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}c(cx,"completeStartTag");function fx(n,e,t,i,r){let s=Gi(t),o=s?e.tags[Ni(n.doc,s)]: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:r,options:a.map(h=>({label:h,type:"property"})),validFor:fp}}c(fx,"completeAttrName");function ux(n,e,t,i,r){var s;let o=(s=t.parent)===null||s===void 0?void 0:s.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,r).toLowerCase(),d='"',O='"';/^['"]/.test(u)?(a=u[0]=='"'?/^[^"]*$/:/^[^']*$/,d="",O=n.sliceDoc(r,r+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:r,options:l,validFor:a}}c(ux,"completeAttrValue");function dx(n,e){let{state:t,pos:i}=e,r=F(t).resolveInner(i,-1),s=r.resolve(i);for(let o=i,l;s==r&&(l=r.childBefore(o));){let a=l.lastChild;if(!a||!a.type.isError||a.from<a.to)break;s=r=l,o=a.from}return r.name=="TagName"?r.parent&&/CloseTag$/.test(r.parent.name)?op(t,r,r.from,i):sp(t,n,r,r.from,i):r.name=="StartTag"||r.name=="IncompleteTag"?sp(t,n,r,i,i):r.name=="StartCloseTag"||r.name=="IncompleteCloseTag"?op(t,r,i,i):r.name=="OpenTag"||r.name=="SelfClosingTag"||r.name=="AttributeName"?fx(t,n,r,r.name=="AttributeName"?r.from:i,i):r.name=="Is"||r.name=="AttributeValue"||r.name=="UnquotedAttributeValue"?ux(t,n,r,r.name=="Is"?i:r.from,i):e.explicit&&(s.name=="Element"||s.name=="Text"||s.name=="Document")?cx(t,n,r,i):null}c(dx,"htmlCompletionFor");function Ox(n){let{extraTags:e,extraGlobalAttributes:t}=n,i=t||e?new Ii(e,t):Ii.default;return r=>dx(i,r)}c(Ox,"htmlCompletionSourceWith");var px=nt.parser.configure({top:"SingleExpression"}),up=[{tag:"script",attrs:c(n=>n.type=="text/typescript"||n.lang=="ts","attrs"),parser:ch.parser},{tag:"script",attrs:c(n=>n.type=="text/babel"||n.type=="text/jsx","attrs"),parser:fh.parser},{tag:"script",attrs:c(n=>n.type=="text/typescript-jsx","attrs"),parser:uh.parser},{tag:"script",attrs(n){return/^(importmap|speculationrules|application\/(.+\+)?json)$/i.test(n.type)},parser:px},{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:Ln.parser}],dp=[{name:"style",parser:Ln.parser.configure({top:"Styles"})}].concat(hp.map(n=>({name:n,parser:nt.parser}))),Op=At.define({name:"html",parser:qO.configure({props:[si.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 r=i.lastChild;if(!r||r.name!="Element"||r.to!=i.to)break;e=i=r}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}}}),ea.add({"OpenTag CloseTag":c(n=>n.getChild("TagName"),"OpenTag CloseTag")})]}),languageData:{commentTokens:{block:{open:"<!--",close:"-->"}},indentOnInput:/^\s*<\/\w+\W$/,wordChars:"-_"}}),Es=Op.configure({wrap:oh(up,dp)});function pp(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=oh((n.nestedLanguages||[]).concat(up),(n.nestedAttributes||[]).concat(dp)));let i=t?Op.configure({wrap:t,dialect:e}):e?Es.configure({dialect:e}):Es;return new Mt(i,[Es.data.of({autocomplete:Ox(n)}),n.autoCloseTags!==!1?mx:[],js().support,Rs().support])}c(pp,"html");var lp=new Set("area base br col command embed frame hr img input keygen link meta param source track wbr menuitem".split(" ")),mx=v.inputHandler.of((n,e,t,i,r)=>{if(n.composing||n.state.readOnly||e!=t||i!=">"&&i!="/"||!Es.isActiveAt(n.state,e,-1))return!1;let s=r(),{state:o}=s,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))&&!lp.has(m)){let y=O+(o.doc.sliceString(O,O+1)===">"?1:0),x=`</${m}>`;return{range:a,changes:{from:O,to:y,insert:x}}}}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))&&!lp.has(m)){let y=O+(o.doc.sliceString(O,O+1)===">"?1:0),x=`${m}>`;return{range:b.cursor(O+x.length,-1),changes:{from:O,to:y,insert:x}}}}return{range:a}});return l.changes.empty?!1:(n.dispatch([s,o.update(l,{userEvent:"input.complete",scrollIntoView:!0})]),!0)});var bh=Vs(null),Sh=Vs(null),gh="editor-loading";function Ui(n){let e=document.querySelector("#html-input-container");if(e)if(n){if(document.getElementById(gh))return;let t=document.createElement("div");t.id=gh,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(gh)?.remove(),e.hidden=!1}c(Ui,"setEditorLoading");function Dw(){let n=document.body.querySelector("#html-input-container");if(!n)throw new Error("Editor container not found");let e=new v({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:[cO,pp(),Rs(),js(),Ps()]});return bh.value=e,e}c(Dw,"renderEditor");var gx=c(n=>async e=>{e.preventDefault();let t=document.querySelector("#name-input"),i=document.querySelector("#description-input"),r=document.querySelector("#kind-input"),s=n.state.doc.toString(),o=await zs(85,new TextEncoder().encode(s)),l=t?.value??"nameless",a=i?.value??"",h=r?.value??"interactive",f=Sh.value?{...Sh.value,cid:o,description:a,html:s,kind:h,name:l}:{$type:"sh.diffuse.output.facet",id:Qh(),cid:o,description:a,html:s,kind:h,name:l};switch(e.submitter.name){case"save":await Ys(f);break;case"save+open":await Ys(f),globalThis.open(`./l/?id=${f.id}`,"blank");break}},"onBuildSubmit");async function yh(n){let e={...n},t=document.querySelector("#name-input"),i=document.querySelector("#description-input"),r=document.querySelector("#kind-input");if(!t)return;let s=new URL(location.href),o=s.searchParams.get("id");if(o&&e.id!==o&&(s.searchParams.delete("id"),history.replaceState(null,"",s)),document.querySelector("#code")?.scrollIntoView(),!e.html&&e.uri){Ui(!0);let a=await wh(e.uri),h=await zs(85,new TextEncoder().encode(a));Ui(!1),e.html=a,e.cid=h}Sh.value=e,t.value=e.name,r&&(r.value=e.kind??"interactive"),i&&(i.value=e.description??"");let l=bh.value;l?.dispatch({changes:{from:0,to:l.state.doc.length,insert:e.html}})}c(yh,"editFacet");function Lw(){let n=bh.value;n&&document.querySelector("#code-form")?.addEventListener("submit",gx(n))}c(Lw,"handleBuildFormSubmit");var mp=!1;function qw(){mp||(mp=!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 r=e.closest("li")?.getAttribute("data-name");if(!r)return;let s=e.closest("li")?.getAttribute("data-kind")??void 0;if(t==="edit"){Ui(!0);let o=await _s({kind:s,name:r,uri:i},{fetchHTML:!0});Ui(!1),yh(o),document.querySelector("#code")?.scrollIntoView()}}))}c(qw,"listenForExamplesEdit");async function Bw(){let n=new URLSearchParams(location.search),e=n.get("id"),t=n.get("uri");Ui(!0);try{if(e){let i=await $h(),s=(await kh(i.facets)).find(o=>o.id===e);s&&await yh(s)}else if(t){let i=await _s({uri:t,name:n.get("name")??"",kind:n.get("kind")??void 0,description:n.get("description")??void 0},{fetchHTML:!0});await yh(i)}}finally{Ui(!1)}}c(Bw,"editFacetFromURL");export{Dw as a,Lw as b,qw as c,Bw as d}; 33 + 34 + //# sourceMappingURL=./chunk-TGHFO6M4.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-TGHFO6M4.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-TGHFO6M4.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.6.0/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.41.0/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.3/node_modules/@codemirror/language/dist/index.js","/node_modules/.deno/@codemirror+commands@6.10.3/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.3/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/code.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, assoc = 0) {\n if (from <= this.anchor && to >= this.anchor)\n return EditorSelection.range(from, to, undefined, undefined, assoc);\n let head = Math.abs(from - this.anchor) > Math.abs(to - this.anchor) ? from : to;\n return EditorSelection.range(this.anchor, head, undefined, undefined, assoc);\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, assoc) {\n let flags = ((goalColumn !== null && goalColumn !== void 0 ? goalColumn : 16777215 /* RangeFlag.NoGoalColumn */) << 6 /* RangeFlag.GoalColumnOffset */) |\n (bidiLevel == null ? 7 : Math.min(6, bidiLevel));\n if (!assoc && anchor != head)\n assoc = head < anchor ? 1 : -1;\n return head < anchor ? SelectionRange.create(head, anchor, 32 /* RangeFlag.Inverted */ | 16 /* RangeFlag.AssocAfter */ | flags)\n : SelectionRange.create(anchor, head, (!assoc ? 0 : assoc < 0 ? 8 /* RangeFlag.AssocBefore */ : 16 /* RangeFlag.AssocAfter */) | 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, from) { 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 + yMargin) {\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 - yMargin) {\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 + xMargin) {\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 - xMargin) {\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, x, yMargin, xMargin, \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, tile.widget))) {\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 var _a;\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, (_a = range.assoc) !== null && _a !== void 0 ? _a : (range.empty ? 0 : 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.assoc || ((start.empty ? forward : start.head == start.from) ? 1 : -1));\n let 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 halfText = view.viewState.heightOracle.textHeight >> 1, dist = distance !== null && distance !== void 0 ? distance : halfText;\n for (let scan = 0;; scan += halfText) {\n let y = startY + (dist + scan) * dir;\n let pos = posAtCoords(view, { x: resolvedGoal, y }, false, dir);\n if (forward ? y > rect.bottom : y < rect.top)\n return EditorSelection.cursor(pos.pos, pos.assoc);\n let posCoords = view.coordsAtPos(pos.pos, pos.assoc), mid = posCoords ? (posCoords.top + posCoords.bottom) / 2 : 0;\n if (!posCoords || (forward ? mid > startY : mid < startY))\n return EditorSelection.cursor(pos.pos, pos.assoc, undefined, goal);\n }\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 // Handle the case where closest matched a higher element on the\n // same line as an element below/above the coords\n if (closestDx) {\n if (above && above.bottom > closestRect.top) {\n this.y = above.bottom - 1;\n return this.scan(positions, getRects);\n }\n if (below && below.top < closestRect.bottom) {\n this.y = below.top + 1;\n return this.scan(positions, getRects);\n }\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 && !event.shiftKey &&\n ((pending = PendingKeys.find(key => key.keyCode == event.keyCode)) && !event.ctrlKey ||\n EmacsyPendingKeys.indexOf(event.key) > -1 && event.ctrlKey)) {\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, range.assoc) : EditorSelection.range(to, from, range.assoc);\n }\n if (extend)\n return startSel.replaceRange(startSel.main.extend(range.from, range.to, range.assoc));\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 let { x, y } = this.state.facet(EditorView.cursorScrollMargin);\n scrollTarget = new ScrollTarget(main.empty ? main : EditorSelection.cursor(main.head, main.head > main.anchor ? -1 : 1), \"nearest\", \"nearest\", y, x);\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 var _a, _b, _c, _d;\n return scrollIntoView.of(new ScrollTarget(typeof pos == \"number\" ? EditorSelection.cursor(pos) : pos, (_a = options.y) !== null && _a !== void 0 ? _a : \"nearest\", (_b = options.x) !== null && _b !== void 0 ? _b : \"nearest\", (_c = options.yMargin) !== null && _c !== void 0 ? _c : 5, (_d = options.xMargin) !== null && _d !== void 0 ? _d : 5));\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/**\nCan be used to specify the distance that scrolling cursor into\nview keeps it away from the sides of the editor, either as a\nsingle pixel number or two different values for the different\naxes. Defaults to 5 pixels on both axes.\n*/\nEditorView.cursorScrollMargin = /*@__PURE__*/Facet.define({\n combine: inputs => {\n let x = 5, y = 5;\n for (let i of inputs) {\n if (typeof i == \"number\")\n x = y = i;\n else\n ({ x, y } = i);\n }\n return { x, y };\n }\n});\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). Not to be confused with\n[`cursorScrollMargin`](https://codemirror.net/6/docs/ref/#view.EditorView^cursorScrollMargin).\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.webkit) // Issue #1600, 1627, 1686\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.assoc);\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 if (dir < 0 ? !pos : pos == state.doc.length)\n return null;\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, head.assoc);\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 = 135,\n Unit = 1,\n identifier = 136,\n callee = 137,\n VariableName = 2,\n queryIdentifier = 138,\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 {contextual: true}\n);\nconst queryIdentifiers = new ExternalTokenizer(\n identifierTokens(queryIdentifier, queryVariableName, QueryCallee),\n {contextual: true}\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 font-feature-values\": tags.definitionKeyword,\n \"from to selector scope MatchFlag\": 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 FontName\": 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:44, \"nth-child\":44, \"nth-last-child\":44, \"nth-of-type\":44, \"nth-last-of-type\":44, dir:44, \"host-context\":44, if:90, url:132, \"url-prefix\":132, domain:132, regexp:132};\nconst spec_queryIdentifier = {__proto__:null,or:104, and:104, not:112, only:112, layer:186};\nconst spec_QueryCallee = {__proto__:null,selector:118, layer:182};\nconst spec_AtKeyword = {__proto__:null,\"@import\":178, \"@media\":190, \"@charset\":194, \"@namespace\":198, \"@keyframes\":204, \"@supports\":216, \"@scope\":220, \"@font-feature-values\":226};\nconst spec_identifier = {__proto__:null,to:223};\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"IpQYQdOOO#}QdOOP$UO`OOO%OQaO'#CfOOQP'#Ce'#CeO%VQdO'#CgO%[Q`O'#CgO%aQaO'#FdO&XQdO'#CkO&xQaO'#CcO'SQdO'#CnO'_QdO'#DtO'dQdO'#DvO'oQdO'#D}O'oQdO'#EQOOQP'#Fd'#FdO)OQhO'#EsOOQS'#Fc'#FcOOQS'#Ev'#EvQYQdOOO)VQdO'#EWO*cQhO'#E^O)VQdO'#E`O*jQdO'#EbO*uQdO'#EeO)zQhO'#EkO*}QdO'#EmO+YQdO'#EpO+_QaO'#CfO+fQ`O'#ETO+kQ`O'#FnO+vQdO'#FnQOQ`OOP,QO&jO'#CaPOOO)CAR)CAROOQP'#Ci'#CiOOQP,59R,59RO%VQdO,59ROOQP'#Cm'#CmOOQP,59V,59VO&XQdO,59VO,]QdO,59YO'_QdO,5:`O'dQdO,5:bO'oQdO,5:iO'oQdO,5:kO'oQdO,5:lO'oQdO'#E}O,hQ`O,58}O,pQdO'#ESOOQS,58},58}OOQP'#Cq'#CqOOQO'#Dr'#DrOOQP,59Y,59YO,wQ`O,59YO,|Q`O,59YOOQP'#Du'#DuOOQP,5:`,5:`O-RQpO'#DwO-^QdO'#DxO-cQ`O'#DxO-hQpO,5:bO.RQaO,5:iO.iQaO,5:lOOQW'#D^'#D^O/eQhO'#DgO/xQhO,5;_O)zQhO'#DeO0VQ`O'#DkO0[QhO'#DnOOQW'#Fj'#FjOOQS,5;_,5;_O0aQ`O'#DhOOQS-E8t-E8tOOQ['#Cv'#CvO0fQdO'#CwO0|QdO'#C}O1dQdO'#DQO1zQ!pO'#DSO4TQ!jO,5:rOOQO'#DX'#DXO,|Q`O'#DWO4eQ!nO'#FgO6hQ`O'#DYO6mQ`O'#DoOOQ['#Fg'#FgO6rQhO'#FqO7QQ`O,5:xO7VQ!bO,5:zOOQS'#Ed'#EdO7_Q`O,5:|O7dQdO,5:|OOQO'#Eg'#EgO7lQ`O,5;PO7qQhO,5;VO'oQdO'#DjOOQS,5;X,5;XO0aQ`O,5;XO7yQdO,5;XOOQS'#FU'#FUO8RQdO'#ErO7QQ`O,5;[O8ZQdO,5:oO8kQdO'#FPO8xQ`O,5<YO8xQ`O,5<YPOOO'#Eu'#EuP9TO&jO,58{POOO,58{,58{OOQP1G.m1G.mOOQP1G.q1G.qOOQP1G.t1G.tO,wQ`O1G.tO,|Q`O1G.tOOQP1G/z1G/zO9`QpO1G/|O9hQaO1G0TO:OQaO1G0VO:fQaO1G0WO:|QaO,5;iOOQO-E8{-E8{OOQS1G.i1G.iO;WQ`O,5:nO;]QdO'#DsO;dQdO'#CuOOQO'#Dz'#DzOOQO,5:d,5:dO-^QdO,5:dOOQP1G/|1G/|O)VQdO1G/|O;kQ!jO'#D^O;yQ!bO,59yO<RQhO,5:ROOQO'#Fk'#FkO;|Q!bO,59}O<ZQhO'#FVO)zQhO,59{O)zQhO'#FVO=OQhO1G0yOOQS1G0y1G0yO=YQhO,5:PO>QQhO'#DlOOQW,5:V,5:VOOQW,5:Y,5:YOOQW,5:S,5:SO>[Q!fO'#FhOOQS'#Fh'#FhOOQS'#Ex'#ExO?lQdO,59cOOQ[,59c,59cO@SQdO,59iOOQ[,59i,59iO@jQdO,59lOOQ[,59l,59lOOQ[,59n,59nO)VQdO,59pOAQQhO'#EYOOQW'#EY'#EYOAlQ`O1G0^O4^QhO1G0^OOQ[,59r,59rO)zQhO'#D[OOQ[,59t,59tOAqQ#tO,5:ZOA|QhO'#FROBZQ`O,5<]OOQS1G0d1G0dOOQS1G0f1G0fOOQS1G0h1G0hOBfQ`O1G0hOBkQdO'#EhOOQS1G0k1G0kOOQS1G0q1G0qOBvQaO,5:UO7QQ`O1G0sOOQS1G0s1G0sO0aQ`O1G0sOOQS-E9S-E9SOOQS1G0v1G0vOB}Q!fO1G0ZOCeQ`O'#EVOOQO1G0Z1G0ZOOQO,5;k,5;kOCjQdO,5;kOOQO-E8}-E8}OCwQ`O1G1tPOOO-E8s-E8sPOOO1G.g1G.gOOQP7+$`7+$`OOQP7+%h7+%hO)VQdO7+%hOOQS1G0Y1G0YODSQaO'#FmOD^Q`O,5:_ODcQ!fO'#EwOEaQdO'#FfOEkQ`O,59aOOQO1G0O1G0OOEpQ!bO7+%hO)VQdO1G/eOE{QhO1G/iOOQW1G/m1G/mOOQW1G/g1G/gOF^QhO,5;qOOQW-E9T-E9TOOQS7+&e7+&eOGRQhO'#D^OGaQhO'#FlOGlQ`O'#FlOGqQ`O,5:WOOQS-E8v-E8vOOQ[1G.}1G.}OOQ[1G/T1G/TOOQ[1G/W1G/WOOQ[1G/[1G/[OGvQdO,5:tOOQS7+%x7+%xOG{Q`O7+%xOHQQhO'#D]OHYQ`O,59vO)zQhO,59vOOQ[1G/u1G/uOHbQ`O1G/uOHgQhO,5;mOOQO-E9P-E9POOQS7+&S7+&SOHuQbO'#DSOOQO'#Ej'#EjOITQ`O'#EiOOQO'#Ei'#EiOI`Q`O'#FSOIhQdO,5;SOOQS,5;S,5;SOOQ[1G/p1G/pOOQS7+&_7+&_O7QQ`O7+&_OIsQ!fO'#FOO)VQdO'#FOOJzQdO7+%uOOQO7+%u7+%uOOQO,5:q,5:qOOQO1G1V1G1VOK_Q!bO<<ISOKjQdO'#E|OKtQ`O,5<XOOQP1G/y1G/yOOQS-E8u-E8uOK|QdO'#E{OLWQ`O,5<QOOQ]1G.{1G.{OOQP<<IS<<ISOL`Q`O<<ISOLeQdO7+%POOQO'#D`'#D`OLlQ!bO7+%TOLtQhO'#EzOMRQ`O,5<WO)VQdO,5<WOOQW1G/r1G/rOOQO'#E['#E[OMZQ`O1G0`OOQS<<Id<<IdO)VQdO,59wOMzQhO1G/bOOQ[1G/b1G/bONRQ`O1G/bOOQW-E8w-E8wOOQ[7+%a7+%aOOQO,5;T,5;TOBnQdO'#FTOI`Q`O,5;nOOQS,5;n,5;nOOQS-E9Q-E9QOOQS1G0n1G0nOOQS<<Iy<<IyONZQ!fO,5;jOOQS-E8|-E8|OOQO<<Ia<<IaOOQPAN>nAN>nO! bQ`OAN>nO! gQaO,5;hOOQO-E8z-E8zO! qQdO,5;gOOQO-E8y-E8yOOQW<<Hk<<HkOOQW<<Ho<<HoO! {QhO<<HoO!!^QhO,5;fO!!iQ`O,5;fOOQO-E8x-E8xO!!nQdO1G1rOGvQdO'#FQO!!xQ`O7+%zOOQW7+%z7+%zO!#QQ!bO1G/cOOQ[7+$|7+$|O!#]QhO7+$|P!#dQ`O'#EyOOQO,5;o,5;oOOQO-E9R-E9ROOQS1G1Y1G1YOOQPG24YG24YO!#iQ`OAN>ZO)VQdO1G1QO!#nQ`O7+'^OOQO,5;l,5;lOOQO-E9O-E9OOOQW<<If<<IfOOQ[<<Hh<<HhPOQW,5;e,5;eOOQWG23uG23uO!#vQdO7+&l\",\n stateData: \"!$Z~O$QOS$RQQ~OWVO^_O`WOcYOdYOl`OmZOp[O!r]O!u^O!{dO#ReO#TfO#VgO#YhO#`iO#bjO#ekO#|RO$XTO~OQmOWVO^_O`WOcYOdYOl`OmZOp[O!r]O!u^O!{dO#ReO#TfO#VgO#YhO#`iO#bjO#ekO#|lO$XTO~O#z$bP~P!jO$RqO~O`YXcYXdYXmYXpYXsYX!aYX!rYX!uYX#{YX$X[X~OgYX~P$ZO#|sO~O$XuO~O$XuO`$WXc$WXd$WXm$WXp$WXs$WX!a$WX!r$WX!u$WX#{$WXg$WX~O#|vO~O`xOcyOdyOmzOp{O!r|O!u!OO#{}O~Os!RO!a!PO~P&^Of!XO#|!TO#}!UO~O#|!YO~OW!^O#|![O$X!]O~OWVO^_O`WOcYOdYOmZOp[O!r]O!u^O#|RO$XTO~OS!fOc!gOd!gOh!cOs!RO!Y!eO!]!jO$O!bO~On!iO~P(dOQ!tOh!mOp!nOs!oOu!wOw!wO}!uO!d!vO#|!lO#}!rO$]!pO~OS!fOc!gOd!gOh!cO!Y!eO!]!jO$O!bO~Os$eP~P)zOw!|O!d!vO#|!{O~Ow#OO#|#OO~Oh#ROs!RO#c#TO~O#|#VO~Oc!xX~P$ZOc#YO~On#ZO#z$bXr$bX~O#z$bXr$bX~P!jO$S#^O$T#^O$U#`O~Of#eO#|!TO#}!UO~Os!RO!a!PO~Or$bP~P!jOh#oO~Oh#pO~Oo!kX!o!kX$X!mX~O#|#qO~O$X#sO~Oo#tO!o#uO~O`xOcyOdyOmzOp{O~Os!qa!a!qa!r!qa!u!qa#{!qag!qa~P-pOs!ta!a!ta!r!ta!u!ta#{!tag!ta~P-pOS!fOc!gOd!gOh!cO!Y!eO!]!jO~OR#yOu#yOw#yO$O#vO$]!pO~P/POn$PO!U#|O!a#}O~P(dOh$RO~O$O$TO~Oh#RO~O`$WOc$WOg$ZOl$WOm$WOn$WO~P)VO`$WOc$WOl$WOm$WOn$WOo$]O~P)VO`$WOc$WOl$WOm$WOn$WOr$_O~P)VOP$`OSvXcvXdvXhvXnvXyvX!YvX!]vX!}vX#PvX$OvX!WvXQvX`vXgvXlvXmvXpvXsvXuvXwvX}vX!dvX#|vX#}vX$]vXovXrvX!avX#zvX$dvX!pvX~Oy$aO!}$bO#P$cOn$eP~P)zOh#pOS$ZXc$ZXd$ZXn$ZXy$ZX!Y$ZX!]$ZX!}$ZX#P$ZX$O$ZXQ$ZX`$ZXg$ZXl$ZXm$ZXp$ZXs$ZXu$ZXw$ZX}$ZX!d$ZX#|$ZX#}$ZX$]$ZXo$ZXr$ZX!a$ZX#z$ZX$d$ZX!p$ZX~Oh$gO~Oh$iO~O!U#|O!a$jOs$eXn$eX~Os!RO~On$mOy$aO~On$nO~Ow$oO!d!vO~Os$pO~Os!RO!U#|O~Os!RO#c$vO~O#|#VOs#fX~O$d$zOn!wa#z!war!wa~P)VOn#sX#z#sXr#sX~P!jOn#ZO#z$bar$ba~O$S#^O$T#^O$U%RO~Oo%TO!o%UO~Os!qi!a!qi!r!qi!u!qi#{!qig!qi~P-pOs!si!a!si!r!si!u!si#{!sig!si~P-pOs!ti!a!ti!r!ti!u!ti#{!tig!ti~P-pOs#qa!a#qa~P&^Or%VO~Og$aP~P'oOg$YP~P)VOc!SXg!QX!U!QX!W!SX~Oc%_O!W%`O~Og%aO!U#|O~O!U#|OS#yXc#yXd#yXh#yXn#yXs#yX!Y#yX!]#yX!a#yX$O#yX~On%eO!a#}O~P(dO!U#|OS!Xac!Xad!Xah!Xan!Xas!Xa!Y!Xa!]!Xa!a!Xa$O!Xag!Xa~O$O%fOg$`P~P/POy$aOQ$[X`$[Xc$[Xg$[Xh$[Xl$[Xm$[Xn$[Xp$[Xs$[Xu$[Xw$[X}$[X!d$[X#|$[X#}$[X$]$[Xo$[Xr$[X~O`$WOc$WOg%kOl$WOm$WOn$WO~P)VO`$WOc$WOl$WOm$WOn$WOo%lO~P)VO`$WOc$WOl$WOm$WOn$WOr%mO~P)VOh%oOS!|Xc!|Xd!|Xn!|X!Y!|X!]!|X$O!|X~On%pO~Og%uOw%vO!e%vO~Os#uX!a#uXn#uX~P)zO!a$jOs$ean$ea~On%yO~Or&QO#|%{O$]%zO~Og&RO~P&^Oy$aO!a&VO$d$zOn!wi#z!wir!wi~P)VO$c&YO~On#sa#z#sar#sa~P!jOn#ZO#z$bir$bi~O!a&]Og$aX~P&^Og&_O~Oy$aOQ#kXg#kXh#kXp#kXs#kXu#kXw#kX}#kX!a#kX!d#kX#|#kX#}#kX$]#kX~O!a&aOg$YX~P)VOg&cO~Oo&dOy$aO!p&eO~OR#yOu#yOw#yO$O&gO$]!pO~O!U#|OS#yac#yad#yah#yan#yas#ya!Y#ya!]#ya!a#ya$O#ya~Oc!SXg!QX!U!QX!a!QX~O!U#|O!a&iOg$`X~Oc&kO~Og&lO~O#|&mO~On&oO~Oc&pO!U#|O~Og&rOn&qO~Og&uO~O!U#|Os#ua!a#uan#ua~OP$`OsvX!avXgvX~O$]%zOs#]X!a#]X~Os!RO!a&wO~Or&{O#|%{O$]%zO~Oy$aOQ#rXh#rXn#rXp#rXs#rXu#rXw#rX}#rX!a#rX!d#rX#z#rX#|#rX#}#rX$]#rX$d#rXr#rX~O!a&VO$d$zOn!wq#z!wqr!wq~P)VOo'QOy$aO!p'RO~Og#pX!a#pX~P'oO!a&]Og$aa~Og#oX!a#oX~P)VO!a&aOg$Ya~Oo'QO~Og'WO~P)VOg'XO!W'YO~O$O%fOg#nX!a#nX~P/PO!a&iOg$`a~O`'_Og'aO~OS#mac#mad#mah#ma!Y#ma!]#ma$O#ma~Og'cO~PMcOg'cOn'dO~Oy$aOQ#rah#ran#rap#ras#rau#raw#ra}#ra!a#ra!d#ra#z#ra#|#ra#}#ra$]#ra$d#rar#ra~Oo'iO~Og#pa!a#pa~P&^Og#oa!a#oa~P)VOR#yOu#yOw#yO$O&gO$]%zO~O!U#|Og#na!a#na~Oc'kO~O!a&iOg$`i~P)VO`'_Og'oO~Oy$aOg!Pin!Pi~Og'pO~PMcOn'qO~Og'rO~O!a&iOg$`q~Og#nq!a#nq~P)VO$Q!e$R$]`$]y!u~\",\n goto: \"4h$fPPPPP$gP$jP$s%V$s%i%{P$sP&R$sPP&XPPP&_&i&iPPPPP&iPP&iP'VP&iP&i(Q&iP(n(q(w(w)Z(wP(wP(wP(w(wP)j(w)vP(w)yPP*m*s$s*y$s+P+P+V+ZPP$sP$s$sP+a,],j,q$jP,zP,}P$jP$jP$jP-T$jP-W-Z-^-e$jP$jPP$jP-j$jP-m-s.S.j.x/O/Y/`/f/l/r/|0S0Y0`0f0lPPPPPPPPPPP0r0{P1q1t2vP3O3x4R4U4XPP4_RrQ_aOPco!R#Z$}q_OP]^co|}!O!P!R#R#Z#o$}&]qSOP]^co|}!O!P!R#R#Z#o$}&]qUOP]^co|}!O!P!R#R#Z#o$}&]QtTR#auQwWR#bxQ!VYR#cyQ#c!XS$f!s!tR%S#e!V!wdf!m!n!o#Y#p#u$Y$[$^$a$y%U%Z%_&V&W&a&f&k&p'U'^'k's!U!wdf!m!n!o#Y#p#u$Y$[$^$a$y%U%Z%_&V&W&a&f&k&p'U'^'k'sU#y!c%`'YU%}$p&P&wR&v%|!V!sdf!m!n!o#Y#p#u$Y$[$^$a$y%U%Z%_&V&W&a&f&k&p'U'^'k'sR$h!uQ%s$gR&s%tq!h`ei!c!d!e!q#|#}$O$R$e$g$j%t&iQ#w!cQ%h$RQ&h%`Q'[&iR'j'YQ#UjQ$U!jQ$t#TR&T$vR$S!f!U!wdf!m!n!o#Y#p#u$Y$[$^$a$y%U%Z%_&V&W&a&f&k&p'U'^'k'sQ!|gR$o!}Q!WYR#dyQ#c!WR%S#dQ!ZZR#fzQ!_[R#g{T!^[{Q#r!]R%]#sQ!SXQ!i`Q#SjQ#m!QQ$P!dQ$l!yQ$r#QQ$u#UQ$x#XQ%e$OQ&S$tQ&y&OQ&|&TR'h&xSnP!RQ#]oQ$|#ZR&Z$}ZmPo!R#Z$}Q${#YQ&X$yR'P&WR$e!qQ&n%oR'm'_R!}gR#PhR$q#PS&O$p&PR'f&wV%|$p&P&wR#XkQ#_qR%Q#_QcOSoP!RU!kco$}R$}#ZQ%Z#pY&`%Z&f'U'^'sQ&f%_Q'U&aQ'^&kR's'kQ$Y!mQ$[!nQ$^!oV%j$Y$[$^Q%t$gR&t%tQ&j%gS']&j'lR'l'^Q&b%ZR'V&bQ&^%WR'T&^Q!QXR#l!QQ&W$yR'O&WQ#[nS%O#[%PR%P#]Q'`&nR'n'`Q$k!xR%x$kQ&P$pR&z&PQ&x&OR'g&xQ#WkR$w#WQ$O!dR%d$O_bOPco!R#Z$}^XOPco!R#Z$}Q!`]Q!a^Q#h|Q#i}Q#j!OQ#k!PQ$s#RQ%W#oR'S&]R%[#pQ!qdQ!zf[$V!m!n!o$Y$[$^Q$y#Yd%Y#p%Z%_&a&f&k'U'^'k'sQ%^#uQ%n$aS&U$y&WQ&[%UQ&}&VR'b&p]$X!m!n!o$Y$[$^Q!d`U!xe!q$eQ#QiQ#x!cS#{!d$OQ$Q!eQ%b#|Q%c#}Q%g$RS%r$g%tQ%w$jR'Z&iQ#z!cQ&h%`R'j'YR%i$RR%X#oQpPR#n!RQ!yeQ$d!qR%q$e\",\n nodeNames: \"⚠ Unit VariableName VariableName QueryCallee Comment StyleSheet RuleSet UniversalSelector TagSelector TagName NamespacedTagSelector NamespaceName 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 , PseudoQuery CallLiteral CallTag ParenthesizedContent PseudoClassName ArgList IdSelector IdName AttributeSelector AttributeName NamespacedAttribute NamespaceName AttributeName MatchOp MatchFlag 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 FontFeatureStatement font-feature-values FontName AtRule Styles\",\n maxTerm: 159,\n nodeProps: [\n [\"isolate\", -2,5,39,\"\"],\n [\"openedBy\", 23,\"(\",31,\"[\",34,\"{\"],\n [\"closedBy\", 24,\")\",32,\"]\",35,\"}\"]\n ],\n propSources: [cssHighlighting],\n skippedNodes: [0,5,117],\n repeatNodeCount: 17,\n tokenData: \"K`~R!bOX%ZX^&R^p%Zpq&Rqr)ers)vst+jtu2Xuv%Zvw3Rwx3dxy5Ryz5dz{5i{|6S|}:u}!O;W!O!P;u!P!Q<^!Q![=V![!]>Q!]!^>|!^!_?_!_!`@Z!`!a@n!a!b%Z!b!cAo!c!k%Z!k!lC|!l!u%Z!u!vC|!v!}%Z!}#OD_#O#P%Z#P#QDp#Q#R2X#R#]%Z#]#^ER#^#g%Z#g#hC|#h#o%Z#o#pIf#p#qIw#q#rJ`#r#sJq#s#y%Z#y#z&R#z$f%Z$f$g&R$g#BY%Z#BY#BZ&R#BZ$IS%Z$IS$I_&R$I_$I|%Z$I|$JO&R$JO$JT%Z$JT$JU&R$JU$KV%Z$KV$KW&R$KW&FU%Z&FU&FV&R&FV;'S%Z;'S;=`KY<%lO%Z`%^SOy%jz;'S%j;'S;=`%{<%lO%j`%oS!e`Oy%jz;'S%j;'S;=`%{<%lO%j`&OP;=`<%l%j~&Wh$Q~OX%jX^'r^p%jpq'rqy%jz#y%j#y#z'r#z$f%j$f$g'r$g#BY%j#BY#BZ'r#BZ$IS%j$IS$I_'r$I_$I|%j$I|$JO'r$JO$JT%j$JT$JU'r$JU$KV%j$KV$KW'r$KW&FU%j&FU&FV'r&FV;'S%j;'S;=`%{<%lO%j~'yh$Q~!e`OX%jX^'r^p%jpq'rqy%jz#y%j#y#z'r#z$f%j$f$g'r$g#BY%j#BY#BZ'r#BZ$IS%j$IS$I_'r$I_$I|%j$I|$JO'r$JO$JT%j$JT$JU'r$JU$KV%j$KV$KW'r$KW&FU%j&FU&FV'r&FV;'S%j;'S;=`%{<%lO%jj)jS$dYOy%jz;'S%j;'S;=`%{<%lO%j~)yWOY)vZr)vrs*cs#O)v#O#P*h#P;'S)v;'S;=`+d<%lO)v~*hOw~~*kRO;'S)v;'S;=`*t;=`O)v~*wXOY)vZr)vrs*cs#O)v#O#P*h#P;'S)v;'S;=`+d;=`<%l)v<%lO)v~+gP;=`<%l)vj+oYmYOy%jz!Q%j!Q![,_![!c%j!c!i,_!i#T%j#T#Z,_#Z;'S%j;'S;=`%{<%lO%jj,dY!e`Oy%jz!Q%j!Q![-S![!c%j!c!i-S!i#T%j#T#Z-S#Z;'S%j;'S;=`%{<%lO%jj-XY!e`Oy%jz!Q%j!Q![-w![!c%j!c!i-w!i#T%j#T#Z-w#Z;'S%j;'S;=`%{<%lO%jj.OYuY!e`Oy%jz!Q%j!Q![.n![!c%j!c!i.n!i#T%j#T#Z.n#Z;'S%j;'S;=`%{<%lO%jj.uYuY!e`Oy%jz!Q%j!Q![/e![!c%j!c!i/e!i#T%j#T#Z/e#Z;'S%j;'S;=`%{<%lO%jj/jY!e`Oy%jz!Q%j!Q![0Y![!c%j!c!i0Y!i#T%j#T#Z0Y#Z;'S%j;'S;=`%{<%lO%jj0aYuY!e`Oy%jz!Q%j!Q![1P![!c%j!c!i1P!i#T%j#T#Z1P#Z;'S%j;'S;=`%{<%lO%jj1UY!e`Oy%jz!Q%j!Q![1t![!c%j!c!i1t!i#T%j#T#Z1t#Z;'S%j;'S;=`%{<%lO%jj1{SuY!e`Oy%jz;'S%j;'S;=`%{<%lO%jd2[UOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jd2uS!oS!e`Oy%jz;'S%j;'S;=`%{<%lO%jb3WS^QOy%jz;'S%j;'S;=`%{<%lO%j~3gWOY3dZw3dwx*cx#O3d#O#P4P#P;'S3d;'S;=`4{<%lO3d~4SRO;'S3d;'S;=`4];=`O3d~4`XOY3dZw3dwx*cx#O3d#O#P4P#P;'S3d;'S;=`4{;=`<%l3d<%lO3d~5OP;=`<%l3dj5WShYOy%jz;'S%j;'S;=`%{<%lO%j~5iOg~n5pUWQyWOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jj6ZWyW!uQOy%jz!O%j!O!P6s!P!Q%j!Q![9x![;'S%j;'S;=`%{<%lO%jj6xU!e`Oy%jz!Q%j!Q![7[![;'S%j;'S;=`%{<%lO%jj7cY!e`$]YOy%jz!Q%j!Q![7[![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj8WY!e`Oy%jz{%j{|8v|}%j}!O8v!O!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj8{U!e`Oy%jz!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj9fU!e`$]YOy%jz!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj:P[!e`$]YOy%jz!O%j!O!P7[!P!Q%j!Q![9x![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj:zS!aYOy%jz;'S%j;'S;=`%{<%lO%jj;]WyWOy%jz!O%j!O!P6s!P!Q%j!Q![9x![;'S%j;'S;=`%{<%lO%jj;zU`YOy%jz!Q%j!Q![7[![;'S%j;'S;=`%{<%lO%j~<cTyWOy%jz{<r{;'S%j;'S;=`%{<%lO%j~<yS!e`$R~Oy%jz;'S%j;'S;=`%{<%lO%jj=[[$]YOy%jz!O%j!O!P7[!P!Q%j!Q![9x![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj>VUcYOy%jz![%j![!]>i!];'S%j;'S;=`%{<%lO%jj>pSdY!e`Oy%jz;'S%j;'S;=`%{<%lO%jj?RSnYOy%jz;'S%j;'S;=`%{<%lO%jh?dU!WWOy%jz!_%j!_!`?v!`;'S%j;'S;=`%{<%lO%jh?}S!WW!e`Oy%jz;'S%j;'S;=`%{<%lO%jl@bS!WW!oSOy%jz;'S%j;'S;=`%{<%lO%jj@uV!rQ!WWOy%jz!_%j!_!`?v!`!aA[!a;'S%j;'S;=`%{<%lO%jbAcS!rQ!e`Oy%jz;'S%j;'S;=`%{<%lO%jjArYOy%jz}%j}!OBb!O!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jjBgW!e`Oy%jz!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jjCW[lY!e`Oy%jz}%j}!OCP!O!Q%j!Q![CP![!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jhDRS!pWOy%jz;'S%j;'S;=`%{<%lO%jjDdSpYOy%jz;'S%j;'S;=`%{<%lO%jnDuSo^Oy%jz;'S%j;'S;=`%{<%lO%jjEWU!pWOy%jz#a%j#a#bEj#b;'S%j;'S;=`%{<%lO%jbEoU!e`Oy%jz#d%j#d#eFR#e;'S%j;'S;=`%{<%lO%jbFWU!e`Oy%jz#c%j#c#dFj#d;'S%j;'S;=`%{<%lO%jbFoU!e`Oy%jz#f%j#f#gGR#g;'S%j;'S;=`%{<%lO%jbGWU!e`Oy%jz#h%j#h#iGj#i;'S%j;'S;=`%{<%lO%jbGoU!e`Oy%jz#T%j#T#UHR#U;'S%j;'S;=`%{<%lO%jbHWU!e`Oy%jz#b%j#b#cHj#c;'S%j;'S;=`%{<%lO%jbHoU!e`Oy%jz#h%j#h#iIR#i;'S%j;'S;=`%{<%lO%jbIYS$cQ!e`Oy%jz;'S%j;'S;=`%{<%lO%jjIkSsYOy%jz;'S%j;'S;=`%{<%lO%jfI|U$XUOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jjJeSrYOy%jz;'S%j;'S;=`%{<%lO%jfJvU!uQOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%j`K]P;=`<%l%Z\",\n tokenizers: [descendant, unitToken, identifiers, queryIdentifiers, 1, 2, 3, 4, new LocalTokenGroup(\"m~RRYZ[z{a~~g~aO$T~~dP!P!Qg~lO$U~~\", 28, 142)],\n topRules: {\"StyleSheet\":[0,6],\"Styles\":[1,116]},\n dynamicPrecedences: {\"84\":1},\n specialized: [{term: 137, get: (value) => spec_callee[value] || -1},{term: 138, get: (value) => spec_queryIdentifier[value] || -1},{term: 4, get: (value) => spec_QueryCallee[value] || -1},{term: 28, get: (value) => spec_AtKeyword[value] || -1},{term: 136, get: (value) => spec_identifier[value] || -1}],\n tokenPrec: 2256\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(\"#code\")?.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(\"#code-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(\"#code\")?.scrollIntoView();\n break;\n }\n }\n },\n );\n}\n\n////////////////////////////////////////////\n// EDIT FACET FROM URL\n////////////////////////////////////////////\n\nexport async function editFacetFromURL() {\n const params = new URLSearchParams(location.search);\n const idParam = params.get(\"id\");\n const uriParam = params.get(\"uri\");\n\n setEditorLoading(true);\n try {\n if (idParam) {\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 } else if (uriParam) {\n const facet = await facetFromURI({\n uri: uriParam,\n name: params.get(\"name\") ?? \"\",\n kind: /** @type {any} */ (params.get(\"kind\") ?? undefined),\n description: params.get(\"description\") ?? undefined,\n }, { fetchHTML: true });\n await editFacet(facet);\n }\n } finally {\n setEditorLoading(false);\n }\n}\n"],"mappings":"gXAEA,IAAIA,GAAY,CAAC,EAAGC,GAAU,CAAC,GAE7B,IAAM,CAON,IAAIC,EAAU,izCAAizC,MAAM,GAAG,EAAE,IAAIC,GAAKA,EAAI,SAASA,EAAG,EAAE,EAAI,CAAC,EAC12C,QAASC,EAAI,EAAGC,EAAI,EAAGD,EAAIF,EAAQ,OAAQE,KACxCA,EAAI,EAAIH,GAAUD,IAAW,KAAKK,EAAIA,EAAIH,EAAQE,CAAC,CAAC,CACzD,GAAG,EAEI,SAASE,GAAgBC,EAAM,CACpC,GAAIA,EAAO,IAAK,MAAO,GACvB,QAASC,EAAO,EAAGC,EAAKT,GAAU,SAAU,CAC1C,IAAIU,EAAOF,EAAOC,GAAO,EACzB,GAAIF,EAAOP,GAAUU,CAAG,EAAGD,EAAKC,UACvBH,GAAQN,GAAQS,CAAG,EAAGF,EAAOE,EAAM,MACvC,OAAO,GACZ,GAAIF,GAAQC,EAAI,MAAO,EACzB,CACF,CATgBE,EAAAL,GAAA,mBAWhB,SAASM,GAAoBL,EAAM,CACjC,OAAOA,GAAQ,QAAWA,GAAQ,MACpC,CAFSI,EAAAC,GAAA,uBAWT,IAAMC,GAAM,KAEL,SAASC,GAAiBC,EAAKC,EAAKC,EAAU,GAAMC,EAAmB,GAAM,CAClF,OAAQD,EAAUE,GAAmBC,IAAkBL,EAAKC,EAAKE,CAAgB,CACnF,CAFgBG,EAAAP,GAAA,oBAIhB,SAASK,GAAiBJ,EAAKC,EAAKE,EAAkB,CACpD,GAAIF,GAAOD,EAAI,OAAQ,OAAOC,EAE1BA,GAAOM,GAAaP,EAAI,WAAWC,CAAG,CAAC,GAAKO,GAAcR,EAAI,WAAWC,EAAM,CAAC,CAAC,GAAGA,IACxF,IAAIQ,EAAOC,GAAYV,EAAKC,CAAG,EAE/B,IADAA,GAAOU,GAAcF,CAAI,EAClBR,EAAMD,EAAI,QAAQ,CACvB,IAAIY,EAAOF,GAAYV,EAAKC,CAAG,EAC/B,GAAIQ,GAAQX,IAAOc,GAAQd,IAAOK,GAAoBU,GAAgBD,CAAI,EACxEX,GAAOU,GAAcC,CAAI,EACzBH,EAAOG,UACEE,GAAoBF,CAAI,EAAG,CACpC,IAAIG,EAAc,EAAGC,EAAIf,EAAM,EAC/B,KAAOe,GAAK,GAAKF,GAAoBJ,GAAYV,EAAKgB,CAAC,CAAC,GAAKD,IAAeC,GAAK,EACjF,GAAID,EAAc,GAAK,EAAG,MACrBd,GAAO,CACd,KACE,MAEJ,CACA,OAAOA,CACT,CArBSK,EAAAF,GAAA,oBAuBT,SAASC,GAAiBL,EAAKC,EAAKE,EAAkB,CACpD,KAAOF,EAAM,GAAG,CACd,IAAIgB,EAAQb,GAAiBJ,EAAKC,EAAM,EAAGE,CAAgB,EAC3D,GAAIc,EAAQhB,EAAK,OAAOgB,EACxBhB,GACF,CACA,MAAO,EACT,CAPSK,EAAAD,GAAA,oBAST,SAASK,GAAYV,EAAKC,EAAK,CAC7B,IAAIiB,EAAQlB,EAAI,WAAWC,CAAG,EAC9B,GAAI,CAACO,GAAcU,CAAK,GAAKjB,EAAM,GAAKD,EAAI,OAAQ,OAAOkB,EAC3D,IAAIC,EAAQnB,EAAI,WAAWC,EAAM,CAAC,EAClC,OAAKM,GAAaY,CAAK,GACdD,EAAQ,OAAW,KAAOC,EAAQ,OAAU,MADpBD,CAEnC,CANSZ,EAAAI,GAAA,eAQT,SAASH,GAAaa,EAAI,CAAE,OAAOA,GAAM,OAAUA,EAAK,KAAO,CAAtDd,EAAAC,GAAA,gBACT,SAASC,GAAcY,EAAI,CAAE,OAAOA,GAAM,OAAUA,EAAK,KAAO,CAAvDd,EAAAE,GAAA,iBACT,SAASG,GAAcU,EAAM,CAAE,OAAOA,EAAO,MAAU,EAAI,CAAE,CAApDf,EAAAK,GAAA,iBCjFT,IAAMW,EAAN,MAAMC,CAAK,CALX,MAKW,CAAAC,EAAA,aAIP,OAAOC,EAAK,CACR,GAAIA,EAAM,GAAKA,EAAM,KAAK,OACtB,MAAM,IAAI,WAAW,oBAAoBA,CAAG,0BAA0B,KAAK,MAAM,EAAE,EACvF,OAAO,KAAK,UAAUA,EAAK,GAAO,EAAG,CAAC,CAC1C,CAIA,KAAKC,EAAG,CACJ,GAAIA,EAAI,GAAKA,EAAI,KAAK,MAClB,MAAM,IAAI,WAAW,uBAAuBA,CAAC,OAAO,KAAK,KAAK,gBAAgB,EAClF,OAAO,KAAK,UAAUA,EAAG,GAAM,EAAG,CAAC,CACvC,CAIA,QAAQC,EAAMC,EAAIC,EAAM,CACpB,CAACF,EAAMC,CAAE,EAAIE,GAAK,KAAMH,EAAMC,CAAE,EAChC,IAAIG,EAAQ,CAAC,EACb,YAAK,UAAU,EAAGJ,EAAMI,EAAO,CAAe,EAC1CF,EAAK,QACLA,EAAK,UAAU,EAAGA,EAAK,OAAQE,EAAO,CAAmC,EAC7E,KAAK,UAAUH,EAAI,KAAK,OAAQG,EAAO,CAAiB,EACjDC,GAAS,KAAKD,EAAO,KAAK,QAAUH,EAAKD,GAAQE,EAAK,MAAM,CACvE,CAIA,OAAOI,EAAO,CACV,OAAO,KAAK,QAAQ,KAAK,OAAQ,KAAK,OAAQA,CAAK,CACvD,CAIA,MAAMN,EAAMC,EAAK,KAAK,OAAQ,CAC1B,CAACD,EAAMC,CAAE,EAAIE,GAAK,KAAMH,EAAMC,CAAE,EAChC,IAAIG,EAAQ,CAAC,EACb,YAAK,UAAUJ,EAAMC,EAAIG,EAAO,CAAC,EAC1BC,GAAS,KAAKD,EAAOH,EAAKD,CAAI,CACzC,CAIA,GAAGM,EAAO,CACN,GAAIA,GAAS,KACT,MAAO,GACX,GAAIA,EAAM,QAAU,KAAK,QAAUA,EAAM,OAAS,KAAK,MACnD,MAAO,GACX,IAAIC,EAAQ,KAAK,cAAcD,EAAO,CAAC,EAAGE,EAAM,KAAK,OAAS,KAAK,cAAcF,EAAO,EAAE,EACtFG,EAAI,IAAIC,GAAc,IAAI,EAAGC,EAAI,IAAID,GAAcJ,CAAK,EAC5D,QAASM,EAAOL,EAAOT,EAAMS,IAAS,CAIlC,GAHAE,EAAE,KAAKG,CAAI,EACXD,EAAE,KAAKC,CAAI,EACXA,EAAO,EACHH,EAAE,WAAaE,EAAE,WAAaF,EAAE,MAAQE,EAAE,MAAQF,EAAE,OAASE,EAAE,MAC/D,MAAO,GAEX,GADAb,GAAOW,EAAE,MAAM,OACXA,EAAE,MAAQX,GAAOU,EACjB,MAAO,EACf,CACJ,CAMA,KAAKK,EAAM,EAAG,CAAE,OAAO,IAAIH,GAAc,KAAMG,CAAG,CAAG,CAKrD,UAAUb,EAAMC,EAAK,KAAK,OAAQ,CAAE,OAAO,IAAIa,GAAkB,KAAMd,EAAMC,CAAE,CAAG,CAQlF,UAAUD,EAAMC,EAAI,CAChB,IAAIc,EACJ,GAAIf,GAAQ,KACRe,EAAQ,KAAK,KAAK,MAEjB,CACGd,GAAM,OACNA,EAAK,KAAK,MAAQ,GACtB,IAAIM,EAAQ,KAAK,KAAKP,CAAI,EAAE,KAC5Be,EAAQ,KAAK,UAAUR,EAAO,KAAK,IAAIA,EAAON,GAAM,KAAK,MAAQ,EAAI,KAAK,OAASA,GAAM,EAAI,EAAI,KAAK,KAAKA,EAAK,CAAC,EAAE,EAAE,CAAC,CAC1H,CACA,OAAO,IAAIe,GAAWD,CAAK,CAC/B,CAKA,UAAW,CAAE,OAAO,KAAK,YAAY,CAAC,CAAG,CAKzC,QAAS,CACL,IAAIE,EAAQ,CAAC,EACb,YAAK,QAAQA,CAAK,EACXA,CACX,CAIA,aAAc,CAAE,CAIhB,OAAO,GAAGf,EAAM,CACZ,GAAIA,EAAK,QAAU,EACf,MAAM,IAAI,WAAW,wCAAwC,EACjE,OAAIA,EAAK,QAAU,GAAK,CAACA,EAAK,CAAC,EACpBN,EAAK,MACTM,EAAK,QAAU,GAAuB,IAAIgB,GAAShB,CAAI,EAAIG,GAAS,KAAKa,GAAS,MAAMhB,EAAM,CAAC,CAAC,CAAC,CAC5G,CACJ,EAIMgB,GAAN,MAAMC,UAAiBxB,CAAK,CArI5B,MAqI4B,CAAAE,EAAA,iBACxB,YAAYK,EAAMkB,EAASC,GAAWnB,CAAI,EAAG,CACzC,MAAM,EACN,KAAK,KAAOA,EACZ,KAAK,OAASkB,CAClB,CACA,IAAI,OAAQ,CAAE,OAAO,KAAK,KAAK,MAAQ,CACvC,IAAI,UAAW,CAAE,OAAO,IAAM,CAC9B,UAAUE,EAAQC,EAAQC,EAAMC,EAAQ,CACpC,QAASC,EAAI,GAAIA,IAAK,CAClB,IAAIC,EAAS,KAAK,KAAKD,CAAC,EAAGlB,EAAMiB,EAASE,EAAO,OACjD,IAAKJ,EAASC,EAAOhB,IAAQc,EACzB,OAAO,IAAIM,GAAKH,EAAQjB,EAAKgB,EAAMG,CAAM,EAC7CF,EAASjB,EAAM,EACfgB,GACJ,CACJ,CACA,UAAUxB,EAAMC,EAAIqB,EAAQO,EAAM,CAC9B,IAAI3B,EAAOF,GAAQ,GAAKC,GAAM,KAAK,OAAS,KACtC,IAAIkB,EAASW,GAAU,KAAK,KAAM9B,EAAMC,CAAE,EAAG,KAAK,IAAIA,EAAI,KAAK,MAAM,EAAI,KAAK,IAAI,EAAGD,CAAI,CAAC,EAChG,GAAI6B,EAAO,EAAmB,CAC1B,IAAIE,EAAOT,EAAO,IAAI,EAClBU,EAASC,GAAW/B,EAAK,KAAM6B,EAAK,KAAK,MAAM,EAAG,EAAG7B,EAAK,MAAM,EACpE,GAAI8B,EAAO,QAAU,GACjBV,EAAO,KAAK,IAAIH,EAASa,EAAQD,EAAK,OAAS7B,EAAK,MAAM,CAAC,MAE1D,CACD,IAAIgC,EAAMF,EAAO,QAAU,EAC3BV,EAAO,KAAK,IAAIH,EAASa,EAAO,MAAM,EAAGE,CAAG,CAAC,EAAG,IAAIf,EAASa,EAAO,MAAME,CAAG,CAAC,CAAC,CACnF,CACJ,MAEIZ,EAAO,KAAKpB,CAAI,CAExB,CACA,QAAQF,EAAMC,EAAIC,EAAM,CACpB,GAAI,EAAEA,aAAgBiB,GAClB,OAAO,MAAM,QAAQnB,EAAMC,EAAIC,CAAI,EACvC,CAACF,EAAMC,CAAE,EAAIE,GAAK,KAAMH,EAAMC,CAAE,EAChC,IAAIgB,EAAQgB,GAAW,KAAK,KAAMA,GAAW/B,EAAK,KAAM4B,GAAU,KAAK,KAAM,EAAG9B,CAAI,CAAC,EAAGC,CAAE,EACtFkC,EAAS,KAAK,OAASjC,EAAK,QAAUD,EAAKD,GAC/C,OAAIiB,EAAM,QAAU,GACT,IAAIE,EAASF,EAAOkB,CAAM,EAC9B9B,GAAS,KAAKc,EAAS,MAAMF,EAAO,CAAC,CAAC,EAAGkB,CAAM,CAC1D,CACA,YAAYnC,EAAMC,EAAK,KAAK,OAAQmC,EAAU;AAAA,EAAM,CAChD,CAACpC,EAAMC,CAAE,EAAIE,GAAK,KAAMH,EAAMC,CAAE,EAChC,IAAIoC,EAAS,GACb,QAASvC,EAAM,EAAG4B,EAAI,EAAG5B,GAAOG,GAAMyB,EAAI,KAAK,KAAK,OAAQA,IAAK,CAC7D,IAAIF,EAAO,KAAK,KAAKE,CAAC,EAAGlB,EAAMV,EAAM0B,EAAK,OACtC1B,EAAME,GAAQ0B,IACdW,GAAUD,GACVpC,EAAOQ,GAAOP,EAAKH,IACnBuC,GAAUb,EAAK,MAAM,KAAK,IAAI,EAAGxB,EAAOF,CAAG,EAAGG,EAAKH,CAAG,GAC1DA,EAAMU,EAAM,CAChB,CACA,OAAO6B,CACX,CACA,QAAQf,EAAQ,CACZ,QAASE,KAAQ,KAAK,KAClBF,EAAO,KAAKE,CAAI,CACxB,CACA,eAAgB,CAAE,MAAO,EAAG,CAC5B,OAAO,MAAMtB,EAAMoB,EAAQ,CACvB,IAAIgB,EAAO,CAAC,EAAGC,EAAM,GACrB,QAASf,KAAQtB,EACboC,EAAK,KAAKd,CAAI,EACde,GAAOf,EAAK,OAAS,EACjBc,EAAK,QAAU,KACfhB,EAAO,KAAK,IAAIH,EAASmB,EAAMC,CAAG,CAAC,EACnCD,EAAO,CAAC,EACRC,EAAM,IAGd,OAAIA,EAAM,IACNjB,EAAO,KAAK,IAAIH,EAASmB,EAAMC,CAAG,CAAC,EAChCjB,CACX,CACJ,EAKMjB,GAAN,MAAMmC,UAAiB7C,CAAK,CAxN5B,MAwN4B,CAAAE,EAAA,iBACxB,YAAY4C,EAAUrB,EAAQ,CAC1B,MAAM,EACN,KAAK,SAAWqB,EAChB,KAAK,OAASrB,EACd,KAAK,MAAQ,EACb,QAASsB,KAASD,EACd,KAAK,OAASC,EAAM,KAC5B,CACA,UAAUpB,EAAQC,EAAQC,EAAMC,EAAQ,CACpC,QAASC,EAAI,GAAIA,IAAK,CAClB,IAAIgB,EAAQ,KAAK,SAAShB,CAAC,EAAGlB,EAAMiB,EAASiB,EAAM,OAAQC,EAAUnB,EAAOkB,EAAM,MAAQ,EAC1F,IAAKnB,EAASoB,EAAUnC,IAAQc,EAC5B,OAAOoB,EAAM,UAAUpB,EAAQC,EAAQC,EAAMC,CAAM,EACvDA,EAASjB,EAAM,EACfgB,EAAOmB,EAAU,CACrB,CACJ,CACA,UAAU3C,EAAMC,EAAIqB,EAAQO,EAAM,CAC9B,QAASH,EAAI,EAAG5B,EAAM,EAAGA,GAAOG,GAAMyB,EAAI,KAAK,SAAS,OAAQA,IAAK,CACjE,IAAIgB,EAAQ,KAAK,SAAShB,CAAC,EAAGlB,EAAMV,EAAM4C,EAAM,OAChD,GAAI1C,GAAQQ,GAAOP,GAAMH,EAAK,CAC1B,IAAI8C,EAAYf,IAAS/B,GAAOE,EAAO,EAAoB,IAAMQ,GAAOP,EAAK,EAAkB,IAC3FH,GAAOE,GAAQQ,GAAOP,GAAM,CAAC2C,EAC7BtB,EAAO,KAAKoB,CAAK,EAEjBA,EAAM,UAAU1C,EAAOF,EAAKG,EAAKH,EAAKwB,EAAQsB,CAAS,CAC/D,CACA9C,EAAMU,EAAM,CAChB,CACJ,CACA,QAAQR,EAAMC,EAAIC,EAAM,CAEpB,GADA,CAACF,EAAMC,CAAE,EAAIE,GAAK,KAAMH,EAAMC,CAAE,EAC5BC,EAAK,MAAQ,KAAK,MAClB,QAASwB,EAAI,EAAG5B,EAAM,EAAG4B,EAAI,KAAK,SAAS,OAAQA,IAAK,CACpD,IAAIgB,EAAQ,KAAK,SAAShB,CAAC,EAAGlB,EAAMV,EAAM4C,EAAM,OAIhD,GAAI1C,GAAQF,GAAOG,GAAMO,EAAK,CAC1B,IAAIqC,EAAUH,EAAM,QAAQ1C,EAAOF,EAAKG,EAAKH,EAAKI,CAAI,EAClD4C,EAAa,KAAK,MAAQJ,EAAM,MAAQG,EAAQ,MACpD,GAAIA,EAAQ,MAASC,GAAe,GAChCD,EAAQ,MAASC,GAAe,EAAgC,CAChE,IAAIC,EAAO,KAAK,SAAS,MAAM,EAC/B,OAAAA,EAAKrB,CAAC,EAAImB,EACH,IAAIL,EAASO,EAAM,KAAK,QAAU9C,EAAKD,GAAQE,EAAK,MAAM,CACrE,CACA,OAAO,MAAM,QAAQJ,EAAKU,EAAKqC,CAAO,CAC1C,CACA/C,EAAMU,EAAM,CAChB,CACJ,OAAO,MAAM,QAAQR,EAAMC,EAAIC,CAAI,CACvC,CACA,YAAYF,EAAMC,EAAK,KAAK,OAAQmC,EAAU;AAAA,EAAM,CAChD,CAACpC,EAAMC,CAAE,EAAIE,GAAK,KAAMH,EAAMC,CAAE,EAChC,IAAIoC,EAAS,GACb,QAASX,EAAI,EAAG5B,EAAM,EAAG4B,EAAI,KAAK,SAAS,QAAU5B,GAAOG,EAAIyB,IAAK,CACjE,IAAIgB,EAAQ,KAAK,SAAShB,CAAC,EAAGlB,EAAMV,EAAM4C,EAAM,OAC5C5C,EAAME,GAAQ0B,IACdW,GAAUD,GACVpC,EAAOQ,GAAOP,EAAKH,IACnBuC,GAAUK,EAAM,YAAY1C,EAAOF,EAAKG,EAAKH,EAAKsC,CAAO,GAC7DtC,EAAMU,EAAM,CAChB,CACA,OAAO6B,CACX,CACA,QAAQf,EAAQ,CACZ,QAASoB,KAAS,KAAK,SACnBA,EAAM,QAAQpB,CAAM,CAC5B,CACA,cAAchB,EAAOO,EAAK,CACtB,GAAI,EAAEP,aAAiBkC,GACnB,MAAO,GACX,IAAIpB,EAAS,EACT,CAAC4B,EAAIC,EAAIC,EAAIC,CAAE,EAAItC,EAAM,EAAI,CAAC,EAAG,EAAG,KAAK,SAAS,OAAQP,EAAM,SAAS,MAAM,EAC7E,CAAC,KAAK,SAAS,OAAS,EAAGA,EAAM,SAAS,OAAS,EAAG,GAAI,EAAE,EAClE,MAAQ0C,GAAMnC,EAAKoC,GAAMpC,EAAK,CAC1B,GAAImC,GAAME,GAAMD,GAAME,EAClB,OAAO/B,EACX,IAAIgC,EAAM,KAAK,SAASJ,CAAE,EAAGK,EAAM/C,EAAM,SAAS2C,CAAE,EACpD,GAAIG,GAAOC,EACP,OAAOjC,EAASgC,EAAI,cAAcC,EAAKxC,CAAG,EAC9CO,GAAUgC,EAAI,OAAS,CAC3B,CACJ,CACA,OAAO,KAAKX,EAAUrB,EAASqB,EAAS,OAAO,CAACa,EAAGC,IAAOD,EAAIC,EAAG,OAAS,EAAG,EAAE,EAAG,CAC9E,IAAItC,EAAQ,EACZ,QAASsC,KAAMd,EACXxB,GAASsC,EAAG,MAChB,GAAItC,EAAQ,GAAsB,CAC9B,IAAIuC,EAAO,CAAC,EACZ,QAASD,KAAMd,EACXc,EAAG,QAAQC,CAAI,EACnB,OAAO,IAAItC,GAASsC,EAAMpC,CAAM,CACpC,CACA,IAAIqC,EAAQ,KAAK,IAAI,GAAsBxC,GAAS,CAAwB,EAAGyC,EAAWD,GAAS,EAAGE,EAAWF,GAAS,EACtHG,EAAU,CAAC,EAAGC,EAAe,EAAGC,EAAa,GAAIC,EAAe,CAAC,EACrE,SAASC,EAAItB,EAAO,CAChB,IAAIuB,EACJ,GAAIvB,EAAM,MAAQgB,GAAYhB,aAAiBF,EAC3C,QAAS0B,KAAQxB,EAAM,SACnBsB,EAAIE,CAAI,OAEPxB,EAAM,MAAQiB,IAAaE,EAAeF,GAAY,CAACE,IAC5DM,EAAM,EACNP,EAAQ,KAAKlB,CAAK,GAEbA,aAAiBxB,IAAY2C,IACjCI,EAAOF,EAAaA,EAAa,OAAS,CAAC,aAAc7C,IAC1DwB,EAAM,MAAQuB,EAAK,OAAS,IAC5BJ,GAAgBnB,EAAM,MACtBoB,GAAcpB,EAAM,OAAS,EAC7BqB,EAAaA,EAAa,OAAS,CAAC,EAAI,IAAI7C,GAAS+C,EAAK,KAAK,OAAOvB,EAAM,IAAI,EAAGuB,EAAK,OAAS,EAAIvB,EAAM,MAAM,IAG7GmB,EAAenB,EAAM,MAAQe,GAC7BU,EAAM,EACVN,GAAgBnB,EAAM,MACtBoB,GAAcpB,EAAM,OAAS,EAC7BqB,EAAa,KAAKrB,CAAK,EAE/B,CAxBS7C,EAAAmE,EAAA,OAyBT,SAASG,GAAQ,CACTN,GAAgB,IAEpBD,EAAQ,KAAKG,EAAa,QAAU,EAAIA,EAAa,CAAC,EAAIvB,EAAS,KAAKuB,EAAcD,CAAU,CAAC,EACjGA,EAAa,GACbD,EAAeE,EAAa,OAAS,EACzC,CANSlE,EAAAsE,EAAA,SAOT,QAASzB,KAASD,EACduB,EAAItB,CAAK,EACb,OAAAyB,EAAM,EACCP,EAAQ,QAAU,EAAIA,EAAQ,CAAC,EAAI,IAAIpB,EAASoB,EAASxC,CAAM,CAC1E,CACJ,EACAzB,EAAK,MAAqB,IAAIuB,GAAS,CAAC,EAAE,EAAG,CAAC,EAC9C,SAASG,GAAWnB,EAAM,CACtB,IAAIkB,EAAS,GACb,QAASI,KAAQtB,EACbkB,GAAUI,EAAK,OAAS,EAC5B,OAAOJ,CACX,CALSvB,EAAAwB,GAAA,cAMT,SAASY,GAAW/B,EAAMoB,EAAQtB,EAAO,EAAGC,EAAK,IAAK,CAClD,QAASH,EAAM,EAAG4B,EAAI,EAAG0C,EAAQ,GAAM1C,EAAIxB,EAAK,QAAUJ,GAAOG,EAAIyB,IAAK,CACtE,IAAIF,EAAOtB,EAAKwB,CAAC,EAAGlB,EAAMV,EAAM0B,EAAK,OACjChB,GAAOR,IACHQ,EAAMP,IACNuB,EAAOA,EAAK,MAAM,EAAGvB,EAAKH,CAAG,GAC7BA,EAAME,IACNwB,EAAOA,EAAK,MAAMxB,EAAOF,CAAG,GAC5BsE,GACA9C,EAAOA,EAAO,OAAS,CAAC,GAAKE,EAC7B4C,EAAQ,IAGR9C,EAAO,KAAKE,CAAI,GAExB1B,EAAMU,EAAM,CAChB,CACA,OAAOc,CACX,CAlBSzB,EAAAoC,GAAA,cAmBT,SAASH,GAAU5B,EAAMF,EAAMC,EAAI,CAC/B,OAAOgC,GAAW/B,EAAM,CAAC,EAAE,EAAGF,EAAMC,CAAE,CAC1C,CAFSJ,EAAAiC,GAAA,aAGT,IAAMpB,GAAN,KAAoB,CA7XpB,MA6XoB,CAAAb,EAAA,sBAChB,YAAYK,EAAMW,EAAM,EAAG,CACvB,KAAK,IAAMA,EACX,KAAK,KAAO,GACZ,KAAK,UAAY,GACjB,KAAK,MAAQ,GACb,KAAK,MAAQ,CAACX,CAAI,EAClB,KAAK,QAAU,CAACW,EAAM,EAAI,GAAKX,aAAgBgB,GAAWhB,EAAK,KAAK,OAASA,EAAK,SAAS,SAAW,CAAC,CAC3G,CACA,UAAUU,EAAMC,EAAK,CAEjB,IADA,KAAK,KAAO,KAAK,UAAY,KACpB,CACL,IAAIoD,EAAO,KAAK,MAAM,OAAS,EAC3BI,EAAM,KAAK,MAAMJ,CAAI,EAAGK,EAAc,KAAK,QAAQL,CAAI,EAAGxC,EAAS6C,GAAe,EAClFC,EAAOF,aAAenD,GAAWmD,EAAI,KAAK,OAASA,EAAI,SAAS,OACpE,GAAI5C,IAAWZ,EAAM,EAAI0D,EAAO,GAAI,CAChC,GAAIN,GAAQ,EACR,YAAK,KAAO,GACZ,KAAK,MAAQ,GACN,KAEPpD,EAAM,GACN,KAAK,QAAQoD,EAAO,CAAC,IACzB,KAAK,MAAM,IAAI,EACf,KAAK,QAAQ,IAAI,CACrB,UACUK,EAAc,KAAOzD,EAAM,EAAI,EAAI,GAAI,CAE7C,GADA,KAAK,QAAQoD,CAAI,GAAKpD,EAClBD,GAAQ,EACR,YAAK,UAAY,GACjB,KAAK,MAAQ;AAAA,EACN,KAEXA,GACJ,SACSyD,aAAenD,GAAU,CAE9B,IAAIsD,EAAOH,EAAI,KAAK5C,GAAUZ,EAAM,EAAI,GAAK,EAAE,EAE/C,GADA,KAAK,QAAQoD,CAAI,GAAKpD,EAClB2D,EAAK,OAAS,KAAK,IAAI,EAAG5D,CAAI,EAC9B,YAAK,MAAQA,GAAQ,EAAI4D,EAAO3D,EAAM,EAAI2D,EAAK,MAAM5D,CAAI,EAAI4D,EAAK,MAAM,EAAGA,EAAK,OAAS5D,CAAI,EACtF,KAEXA,GAAQ4D,EAAK,MACjB,KACK,CACD,IAAIA,EAAOH,EAAI,SAAS5C,GAAUZ,EAAM,EAAI,GAAK,EAAE,EAC/CD,EAAO4D,EAAK,QACZ5D,GAAQ4D,EAAK,OACb,KAAK,QAAQP,CAAI,GAAKpD,IAGlBA,EAAM,GACN,KAAK,QAAQoD,CAAI,IACrB,KAAK,MAAM,KAAKO,CAAI,EACpB,KAAK,QAAQ,KAAK3D,EAAM,EAAI,GAAK2D,aAAgBtD,GAAWsD,EAAK,KAAK,OAASA,EAAK,SAAS,SAAW,CAAC,EAEjH,CACJ,CACJ,CACA,KAAK5D,EAAO,EAAG,CACX,OAAIA,EAAO,IACP,KAAK,UAAU,CAACA,EAAO,CAAC,KAAK,GAAI,EACjCA,EAAO,KAAK,MAAM,QAEf,KAAK,UAAUA,EAAM,KAAK,GAAG,CACxC,CACJ,EACME,GAAN,KAAwB,CAjcxB,MAicwB,CAAAjB,EAAA,0BACpB,YAAYK,EAAMK,EAAOC,EAAK,CAC1B,KAAK,MAAQ,GACb,KAAK,KAAO,GACZ,KAAK,OAAS,IAAIE,GAAcR,EAAMK,EAAQC,EAAM,GAAK,CAAC,EAC1D,KAAK,IAAMD,EAAQC,EAAMN,EAAK,OAAS,EACvC,KAAK,KAAO,KAAK,IAAIK,EAAOC,CAAG,EAC/B,KAAK,GAAK,KAAK,IAAID,EAAOC,CAAG,CACjC,CACA,UAAUI,EAAMC,EAAK,CACjB,GAAIA,EAAM,EAAI,KAAK,KAAO,KAAK,KAAO,KAAK,KAAO,KAAK,GACnD,YAAK,MAAQ,GACb,KAAK,KAAO,GACL,KAEXD,GAAQ,KAAK,IAAI,EAAGC,EAAM,EAAI,KAAK,IAAM,KAAK,GAAK,KAAK,KAAO,KAAK,GAAG,EACvE,IAAI4D,EAAQ5D,EAAM,EAAI,KAAK,IAAM,KAAK,KAAO,KAAK,GAAK,KAAK,IACxDD,EAAO6D,IACP7D,EAAO6D,GACXA,GAAS7D,EACT,GAAI,CAAE,MAAA8D,CAAM,EAAI,KAAK,OAAO,KAAK9D,CAAI,EACrC,YAAK,MAAQ8D,EAAM,OAAS9D,GAAQC,EACpC,KAAK,MAAQ6D,EAAM,QAAUD,EAAQC,EAAQ7D,EAAM,EAAI6D,EAAM,MAAMA,EAAM,OAASD,CAAK,EAAIC,EAAM,MAAM,EAAGD,CAAK,EAC/G,KAAK,KAAO,CAAC,KAAK,MACX,IACX,CACA,KAAK7D,EAAO,EAAG,CACX,OAAIA,EAAO,EACPA,EAAO,KAAK,IAAIA,EAAM,KAAK,KAAO,KAAK,GAAG,EACrCA,EAAO,IACZA,EAAO,KAAK,IAAIA,EAAM,KAAK,GAAK,KAAK,GAAG,GACrC,KAAK,UAAUA,EAAM,KAAK,OAAO,GAAG,CAC/C,CACA,IAAI,WAAY,CAAE,OAAO,KAAK,OAAO,WAAa,KAAK,OAAS,EAAI,CACxE,EACMI,GAAN,KAAiB,CApejB,MAoeiB,CAAAnB,EAAA,mBACb,YAAYkB,EAAO,CACf,KAAK,MAAQA,EACb,KAAK,WAAa,GAClB,KAAK,MAAQ,GACb,KAAK,KAAO,EAChB,CACA,KAAKH,EAAO,EAAG,CACX,GAAI,CAAE,KAAA+D,EAAM,UAAAC,EAAW,MAAAF,CAAM,EAAI,KAAK,MAAM,KAAK9D,CAAI,EACrD,OAAI+D,GAAQ,KAAK,YACb,KAAK,MAAQ,GACb,KAAK,WAAa,IAEbA,GACL,KAAK,KAAO,GACZ,KAAK,MAAQ,IAERC,EACD,KAAK,WACL,KAAK,MAAQ,IAGb,KAAK,WAAa,GAClB,KAAK,KAAK,IAId,KAAK,MAAQF,EACb,KAAK,WAAa,IAEf,IACX,CACA,IAAI,WAAY,CAAE,MAAO,EAAO,CACpC,EACI,OAAO,OAAU,MACjB/E,EAAK,UAAU,OAAO,QAAQ,EAAI,UAAY,CAAE,OAAO,KAAK,KAAK,CAAG,EACpEe,GAAc,UAAU,OAAO,QAAQ,EAAII,GAAkB,UAAU,OAAO,QAAQ,EAClFE,GAAW,UAAU,OAAO,QAAQ,EAAI,UAAY,CAAE,OAAO,IAAM,GAM3E,IAAMY,GAAN,KAAW,CA/gBX,MA+gBW,CAAA/B,EAAA,aAIP,YAIAG,EAKAC,EAIA4E,EAIA3E,EAAM,CACF,KAAK,KAAOF,EACZ,KAAK,GAAKC,EACV,KAAK,OAAS4E,EACd,KAAK,KAAO3E,CAChB,CAIA,IAAI,QAAS,CAAE,OAAO,KAAK,GAAK,KAAK,IAAM,CAC/C,EACA,SAASC,GAAKD,EAAMF,EAAMC,EAAI,CAC1B,OAAAD,EAAO,KAAK,IAAI,EAAG,KAAK,IAAIE,EAAK,OAAQF,CAAI,CAAC,EACvC,CAACA,EAAM,KAAK,IAAIA,EAAM,KAAK,IAAIE,EAAK,OAAQD,CAAE,CAAC,CAAC,CAC3D,CAHSJ,EAAAM,GAAA,QAaT,SAAS2E,GAAiBC,EAAKjF,EAAKkF,EAAU,GAAMC,EAAmB,GAAM,CACzE,OAAOH,GAAmBC,EAAKjF,EAAKkF,EAASC,CAAgB,CACjE,CAFSpF,EAAAiF,GAAA,oBAGT,SAASI,GAAa3B,EAAI,CAAE,OAAOA,GAAM,OAAUA,EAAK,KAAQ,CAAvD1D,EAAAqF,GAAA,gBACT,SAASC,GAAc5B,EAAI,CAAE,OAAOA,GAAM,OAAUA,EAAK,KAAQ,CAAxD1D,EAAAsF,GAAA,iBAMT,SAASC,GAAYL,EAAKjF,EAAK,CAC3B,IAAIuF,EAAQN,EAAI,WAAWjF,CAAG,EAC9B,GAAI,CAACqF,GAAcE,CAAK,GAAKvF,EAAM,GAAKiF,EAAI,OACxC,OAAOM,EACX,IAAIC,EAAQP,EAAI,WAAWjF,EAAM,CAAC,EAClC,OAAKoF,GAAaI,CAAK,GAEdD,EAAQ,OAAW,KAAOC,EAAQ,OAAU,MAD1CD,CAEf,CARSxF,EAAAuF,GAAA,eAcT,SAASG,GAAcC,EAAM,CACzB,OAAIA,GAAQ,MACD,OAAO,aAAaA,CAAI,GACnCA,GAAQ,MACD,OAAO,cAAcA,GAAQ,IAAM,OAASA,EAAO,MAAQ,KAAM,EAC5E,CALS3F,EAAA0F,GAAA,iBAST,SAASE,GAAcD,EAAM,CAAE,OAAOA,EAAO,MAAU,EAAI,CAAG,CAArD3F,EAAA4F,GAAA,iBAET,IAAMC,GAAe,WAIjBC,IAAwB,SAAUA,EAAS,CAK3C,OAAAA,EAAQA,EAAQ,OAAY,CAAC,EAAI,SAIjCA,EAAQA,EAAQ,SAAc,CAAC,EAAI,WAInCA,EAAQA,EAAQ,YAAiB,CAAC,EAAI,cAItCA,EAAQA,EAAQ,WAAgB,CAAC,EAAI,aAClCA,CAAO,GAAGA,KAAYA,GAAU,CAAC,EAAE,EAMpCC,GAAN,MAAMC,CAAW,CA3nBjB,MA2nBiB,CAAAhG,EAAA,mBASb,YAIAiG,EAAU,CACN,KAAK,SAAWA,CACpB,CAIA,IAAI,QAAS,CACT,IAAIzD,EAAS,EACb,QAASX,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQA,GAAK,EAC3CW,GAAU,KAAK,SAASX,CAAC,EAC7B,OAAOW,CACX,CAIA,IAAI,WAAY,CACZ,IAAIA,EAAS,EACb,QAASX,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQA,GAAK,EAAG,CAC9C,IAAIqE,EAAM,KAAK,SAASrE,EAAI,CAAC,EAC7BW,GAAU0D,EAAM,EAAI,KAAK,SAASrE,CAAC,EAAIqE,CAC3C,CACA,OAAO1D,CACX,CAIA,IAAI,OAAQ,CAAE,OAAO,KAAK,SAAS,QAAU,GAAK,KAAK,SAAS,QAAU,GAAK,KAAK,SAAS,CAAC,EAAI,CAAG,CAMrG,SAAS2D,EAAG,CACR,QAAStE,EAAI,EAAGuE,EAAO,EAAGC,EAAO,EAAGxE,EAAI,KAAK,SAAS,QAAS,CAC3D,IAAIa,EAAM,KAAK,SAASb,GAAG,EAAGqE,EAAM,KAAK,SAASrE,GAAG,EACjDqE,EAAM,GACNC,EAAEC,EAAMC,EAAM3D,CAAG,EACjB2D,GAAQ3D,GAGR2D,GAAQH,EAEZE,GAAQ1D,CACZ,CACJ,CAaA,kBAAkByD,EAAGG,EAAa,GAAO,CACrCC,GAAY,KAAMJ,EAAGG,CAAU,CACnC,CAIA,IAAI,cAAe,CACf,IAAIL,EAAW,CAAC,EAChB,QAASpE,EAAI,EAAGA,EAAI,KAAK,SAAS,QAAS,CACvC,IAAIa,EAAM,KAAK,SAASb,GAAG,EAAGqE,EAAM,KAAK,SAASrE,GAAG,EACjDqE,EAAM,EACND,EAAS,KAAKvD,EAAKwD,CAAG,EAEtBD,EAAS,KAAKC,EAAKxD,CAAG,CAC9B,CACA,OAAO,IAAIsD,EAAWC,CAAQ,CAClC,CAMA,YAAYxF,EAAO,CAAE,OAAO,KAAK,MAAQA,EAAQA,EAAM,MAAQ,KAAO+F,GAAY,KAAM/F,CAAK,CAAG,CAOhG,QAAQA,EAAOgG,EAAS,GAAO,CAAE,OAAOhG,EAAM,MAAQ,KAAOiG,GAAO,KAAMjG,EAAOgG,CAAM,CAAG,CAC1F,OAAOxG,EAAK0G,EAAQ,GAAIC,EAAOd,GAAQ,OAAQ,CAC3C,IAAIM,EAAO,EAAGC,EAAO,EACrB,QAASxE,EAAI,EAAGA,EAAI,KAAK,SAAS,QAAS,CACvC,IAAIa,EAAM,KAAK,SAASb,GAAG,EAAGqE,EAAM,KAAK,SAASrE,GAAG,EAAGgF,EAAOT,EAAO1D,EACtE,GAAIwD,EAAM,EAAG,CACT,GAAIW,EAAO5G,EACP,OAAOoG,GAAQpG,EAAMmG,GACzBC,GAAQ3D,CACZ,KACK,CACD,GAAIkE,GAAQd,GAAQ,QAAUe,GAAQ5G,IACjC2G,GAAQd,GAAQ,UAAYM,EAAOnG,GAAO4G,EAAO5G,GAC9C2G,GAAQd,GAAQ,aAAeM,EAAOnG,GACtC2G,GAAQd,GAAQ,YAAce,EAAO5G,GACzC,OAAO,KACX,GAAI4G,EAAO5G,GAAO4G,GAAQ5G,GAAO0G,EAAQ,GAAK,CAACjE,EAC3C,OAAOzC,GAAOmG,GAAQO,EAAQ,EAAIN,EAAOA,EAAOH,EACpDG,GAAQH,CACZ,CACAE,EAAOS,CACX,CACA,GAAI5G,EAAMmG,EACN,MAAM,IAAI,WAAW,YAAYnG,CAAG,4CAA4CmG,CAAI,EAAE,EAC1F,OAAOC,CACX,CAMA,aAAalG,EAAMC,EAAKD,EAAM,CAC1B,QAAS,EAAI,EAAGF,EAAM,EAAG,EAAI,KAAK,SAAS,QAAUA,GAAOG,GAAK,CAC7D,IAAIsC,EAAM,KAAK,SAAS,GAAG,EAAGwD,EAAM,KAAK,SAAS,GAAG,EAAGvF,EAAMV,EAAMyC,EACpE,GAAIwD,GAAO,GAAKjG,GAAOG,GAAMO,GAAOR,EAChC,OAAOF,EAAME,GAAQQ,EAAMP,EAAK,QAAU,GAC9CH,EAAMU,CACV,CACA,MAAO,EACX,CAIA,UAAW,CACP,IAAI6B,EAAS,GACb,QAASX,EAAI,EAAGA,EAAI,KAAK,SAAS,QAAS,CACvC,IAAIa,EAAM,KAAK,SAASb,GAAG,EAAGqE,EAAM,KAAK,SAASrE,GAAG,EACrDW,IAAWA,EAAS,IAAM,IAAME,GAAOwD,GAAO,EAAI,IAAMA,EAAM,GAClE,CACA,OAAO1D,CACX,CAIA,QAAS,CAAE,OAAO,KAAK,QAAU,CAKjC,OAAO,SAASsE,EAAM,CAClB,GAAI,CAAC,MAAM,QAAQA,CAAI,GAAKA,EAAK,OAAS,GAAKA,EAAK,KAAKlG,GAAK,OAAOA,GAAK,QAAQ,EAC9E,MAAM,IAAI,WAAW,2CAA2C,EACpE,OAAO,IAAIoF,EAAWc,CAAI,CAC9B,CAIA,OAAO,OAAOb,EAAU,CAAE,OAAO,IAAID,EAAWC,CAAQ,CAAG,CAC/D,EAMMc,GAAN,MAAMC,UAAkBjB,EAAW,CAxyBnC,MAwyBmC,CAAA/F,EAAA,kBAC/B,YAAYiG,EAIZgB,EAAU,CACN,MAAMhB,CAAQ,EACd,KAAK,SAAWgB,CACpB,CAKA,MAAMC,EAAK,CACP,GAAI,KAAK,QAAUA,EAAI,OACnB,MAAM,IAAI,WAAW,yDAAyD,EAClF,OAAAX,GAAY,KAAM,CAACY,EAAOC,EAAKC,EAAOC,EAAMjH,IAAS6G,EAAMA,EAAI,QAAQG,EAAOA,GAASD,EAAMD,GAAQ9G,CAAI,EAAG,EAAK,EAC1G6G,CACX,CACA,QAAQzG,EAAOgG,EAAS,GAAO,CAAE,OAAOC,GAAO,KAAMjG,EAAOgG,EAAQ,EAAI,CAAG,CAO3E,OAAOS,EAAK,CACR,IAAIjB,EAAW,KAAK,SAAS,MAAM,EAAGgB,EAAW,CAAC,EAClD,QAASpF,EAAI,EAAG5B,EAAM,EAAG4B,EAAIoE,EAAS,OAAQpE,GAAK,EAAG,CAClD,IAAIa,EAAMuD,EAASpE,CAAC,EAAGqE,EAAMD,EAASpE,EAAI,CAAC,EAC3C,GAAIqE,GAAO,EAAG,CACVD,EAASpE,CAAC,EAAIqE,EACdD,EAASpE,EAAI,CAAC,EAAIa,EAClB,IAAI6E,EAAQ1F,GAAK,EACjB,KAAOoF,EAAS,OAASM,GACrBN,EAAS,KAAKnH,EAAK,KAAK,EAC5BmH,EAAS,KAAKvE,EAAMwE,EAAI,MAAMjH,EAAKA,EAAMyC,CAAG,EAAI5C,EAAK,KAAK,CAC9D,CACAG,GAAOyC,CACX,CACA,OAAO,IAAIsE,EAAUf,EAAUgB,CAAQ,CAC3C,CAOA,QAAQxG,EAAO,CAAE,OAAO,KAAK,MAAQA,EAAQA,EAAM,MAAQ,KAAO+F,GAAY,KAAM/F,EAAO,EAAI,CAAG,CAclG,IAAIA,EAAOgG,EAAS,GAAO,CAAE,OAAOhG,EAAM,MAAQ,KAAOiG,GAAO,KAAMjG,EAAOgG,EAAQ,EAAI,CAAG,CAU5F,YAAYN,EAAGG,EAAa,GAAO,CAC/BC,GAAY,KAAMJ,EAAGG,CAAU,CACnC,CAKA,IAAI,MAAO,CAAE,OAAOP,GAAW,OAAO,KAAK,QAAQ,CAAG,CAItD,OAAOyB,EAAQ,CACX,IAAIC,EAAiB,CAAC,EAAGC,EAAiB,CAAC,EAAGC,EAAmB,CAAC,EAC9DC,EAAO,IAAIC,GAAY,IAAI,EAC/B/C,EAAM,QAASjD,EAAI,EAAG5B,EAAM,IAAK,CAC7B,IAAI0E,EAAO9C,GAAK2F,EAAO,OAAS,IAAMA,EAAO3F,GAAG,EAChD,KAAO5B,EAAM0E,GAAQ1E,GAAO0E,GAAQiD,EAAK,KAAO,GAAG,CAC/C,GAAIA,EAAK,KACL,MAAM9C,EACV,IAAIpC,EAAM,KAAK,IAAIkF,EAAK,IAAKjD,EAAO1E,CAAG,EACvC6H,GAAWH,EAAkBjF,EAAK,EAAE,EACpC,IAAIwD,EAAM0B,EAAK,KAAO,GAAK,GAAKA,EAAK,KAAO,EAAIA,EAAK,IAAM,EAC3DE,GAAWL,EAAgB/E,EAAKwD,CAAG,EAC/BA,EAAM,GACN6B,GAAUL,EAAgBD,EAAgBG,EAAK,IAAI,EACvDA,EAAK,QAAQlF,CAAG,EAChBzC,GAAOyC,CACX,CACA,IAAI/B,EAAM6G,EAAO3F,GAAG,EACpB,KAAO5B,EAAMU,GAAK,CACd,GAAIiH,EAAK,KACL,MAAM9C,EACV,IAAIpC,EAAM,KAAK,IAAIkF,EAAK,IAAKjH,EAAMV,CAAG,EACtC6H,GAAWL,EAAgB/E,EAAK,EAAE,EAClCoF,GAAWH,EAAkBjF,EAAKkF,EAAK,KAAO,GAAK,GAAKA,EAAK,KAAO,EAAIA,EAAK,IAAM,CAAC,EACpFA,EAAK,QAAQlF,CAAG,EAChBzC,GAAOyC,CACX,CACJ,CACA,MAAO,CAAE,QAAS,IAAIsE,EAAUS,EAAgBC,CAAc,EAC1D,SAAU3B,GAAW,OAAO4B,CAAgB,CAAE,CACtD,CAIA,QAAS,CACL,IAAIpH,EAAQ,CAAC,EACb,QAASsB,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQA,GAAK,EAAG,CAC9C,IAAIa,EAAM,KAAK,SAASb,CAAC,EAAGqE,EAAM,KAAK,SAASrE,EAAI,CAAC,EACjDqE,EAAM,EACN3F,EAAM,KAAKmC,CAAG,EACTwD,GAAO,EACZ3F,EAAM,KAAK,CAACmC,CAAG,CAAC,EAEhBnC,EAAM,KAAK,CAACmC,CAAG,EAAE,OAAO,KAAK,SAASb,GAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAC/D,CACA,OAAOtB,CACX,CAKA,OAAO,GAAGyH,EAASzG,EAAQgB,EAAS,CAChC,IAAI0D,EAAW,CAAC,EAAGgB,EAAW,CAAC,EAAGhH,EAAM,EACpCgI,EAAQ,KACZ,SAAS3D,EAAM4D,EAAQ,GAAO,CAC1B,GAAI,CAACA,GAAS,CAACjC,EAAS,OACpB,OACAhG,EAAMsB,GACNuG,GAAW7B,EAAU1E,EAAStB,EAAK,EAAE,EACzC,IAAIkI,EAAM,IAAInB,EAAUf,EAAUgB,CAAQ,EAC1CgB,EAAQA,EAAQA,EAAM,QAAQE,EAAI,IAAIF,CAAK,CAAC,EAAIE,EAChDlC,EAAW,CAAC,EACZgB,EAAW,CAAC,EACZhH,EAAM,CACV,CAVSD,EAAAsE,EAAA,SAWT,SAAS8D,EAAQC,EAAM,CACnB,GAAI,MAAM,QAAQA,CAAI,EAClB,QAASC,KAAOD,EACZD,EAAQE,CAAG,UAEVD,aAAgBrB,EAAW,CAChC,GAAIqB,EAAK,QAAU9G,EACf,MAAM,IAAI,WAAW,qCAAqC8G,EAAK,MAAM,cAAc9G,CAAM,GAAG,EAChG+C,EAAM,EACN2D,EAAQA,EAAQA,EAAM,QAAQI,EAAK,IAAIJ,CAAK,CAAC,EAAII,CACrD,KACK,CACD,GAAI,CAAE,KAAAlI,EAAM,GAAAC,EAAKD,EAAM,OAAAoI,CAAO,EAAIF,EAClC,GAAIlI,EAAOC,GAAMD,EAAO,GAAKC,EAAKmB,EAC9B,MAAM,IAAI,WAAW,wBAAwBpB,CAAI,OAAOC,CAAE,sBAAsBmB,CAAM,GAAG,EAC7F,IAAIiH,EAAWD,EAAsB,OAAOA,GAAU,SAAWzI,EAAK,GAAGyI,EAAO,MAAMhG,GAAWsD,EAAY,CAAC,EAAI0C,EAA1FzI,EAAK,MACzB2I,EAASD,EAAQ,OACrB,GAAIrI,GAAQC,GAAMqI,GAAU,EACxB,OACAtI,EAAOF,GACPqE,EAAM,EACNnE,EAAOF,GACP6H,GAAW7B,EAAU9F,EAAOF,EAAK,EAAE,EACvC6H,GAAW7B,EAAU7F,EAAKD,EAAMsI,CAAM,EACtCV,GAAUd,EAAUhB,EAAUuC,CAAO,EACrCvI,EAAMG,CACV,CACJ,CA3BS,OAAAJ,EAAAoI,EAAA,WA4BTA,EAAQJ,CAAO,EACf1D,EAAM,CAAC2D,CAAK,EACLA,CACX,CAIA,OAAO,MAAM1G,EAAQ,CACjB,OAAO,IAAIyF,EAAUzF,EAAS,CAACA,EAAQ,EAAE,EAAI,CAAC,EAAG,CAAC,CAAC,CACvD,CAKA,OAAO,SAASuF,EAAM,CAClB,GAAI,CAAC,MAAM,QAAQA,CAAI,EACnB,MAAM,IAAI,WAAW,0CAA0C,EACnE,IAAIb,EAAW,CAAC,EAAGgB,EAAW,CAAC,EAC/B,QAASpF,EAAI,EAAGA,EAAIiF,EAAK,OAAQjF,IAAK,CAClC,IAAIY,EAAOqE,EAAKjF,CAAC,EACjB,GAAI,OAAOY,GAAQ,SACfwD,EAAS,KAAKxD,EAAM,EAAE,MAErB,IAAI,CAAC,MAAM,QAAQA,CAAI,GAAK,OAAOA,EAAK,CAAC,GAAK,UAAYA,EAAK,KAAK,CAACiG,EAAG7G,IAAMA,GAAK,OAAO6G,GAAK,QAAQ,EACxG,MAAM,IAAI,WAAW,0CAA0C,EAE9D,GAAIjG,EAAK,QAAU,EACpBwD,EAAS,KAAKxD,EAAK,CAAC,EAAG,CAAC,MAEvB,CACD,KAAOwE,EAAS,OAASpF,GACrBoF,EAAS,KAAKnH,EAAK,KAAK,EAC5BmH,EAASpF,CAAC,EAAI/B,EAAK,GAAG2C,EAAK,MAAM,CAAC,CAAC,EACnCwD,EAAS,KAAKxD,EAAK,CAAC,EAAGwE,EAASpF,CAAC,EAAE,MAAM,CAC7C,EACJ,CACA,OAAO,IAAImF,EAAUf,EAAUgB,CAAQ,CAC3C,CAIA,OAAO,UAAUhB,EAAUgB,EAAU,CACjC,OAAO,IAAID,EAAUf,EAAUgB,CAAQ,CAC3C,CACJ,EACA,SAASa,GAAW7B,EAAUvD,EAAKwD,EAAKyC,EAAY,GAAO,CACvD,GAAIjG,GAAO,GAAKwD,GAAO,EACnB,OACJ,IAAI9B,EAAO6B,EAAS,OAAS,EACzB7B,GAAQ,GAAK8B,GAAO,GAAKA,GAAOD,EAAS7B,EAAO,CAAC,EACjD6B,EAAS7B,CAAI,GAAK1B,EACb0B,GAAQ,GAAK1B,GAAO,GAAKuD,EAAS7B,CAAI,GAAK,EAChD6B,EAAS7B,EAAO,CAAC,GAAK8B,EACjByC,GACL1C,EAAS7B,CAAI,GAAK1B,EAClBuD,EAAS7B,EAAO,CAAC,GAAK8B,GAGtBD,EAAS,KAAKvD,EAAKwD,CAAG,CAC9B,CAdSlG,EAAA8H,GAAA,cAeT,SAASC,GAAUa,EAAQ3C,EAAUpB,EAAO,CACxC,GAAIA,EAAM,QAAU,EAChB,OACJ,IAAI0C,EAAStB,EAAS,OAAS,GAAM,EACrC,GAAIsB,EAAQqB,EAAO,OACfA,EAAOA,EAAO,OAAS,CAAC,EAAIA,EAAOA,EAAO,OAAS,CAAC,EAAE,OAAO/D,CAAK,MAEjE,CACD,KAAO+D,EAAO,OAASrB,GACnBqB,EAAO,KAAK9I,EAAK,KAAK,EAC1B8I,EAAO,KAAK/D,CAAK,CACrB,CACJ,CAZS7E,EAAA+H,GAAA,aAaT,SAASxB,GAAYsC,EAAM1C,EAAGG,EAAY,CACtC,IAAIW,EAAW4B,EAAK,SACpB,QAASzC,EAAO,EAAGC,EAAO,EAAGxE,EAAI,EAAGA,EAAIgH,EAAK,SAAS,QAAS,CAC3D,IAAInG,EAAMmG,EAAK,SAAShH,GAAG,EAAGqE,EAAM2C,EAAK,SAAShH,GAAG,EACrD,GAAIqE,EAAM,EACNE,GAAQ1D,EACR2D,GAAQ3D,MAEP,CACD,IAAImE,EAAOT,EAAM0C,EAAOzC,EAAMhG,EAAOP,EAAK,MAC1C,KACI+G,GAAQnE,EACRoG,GAAQ5C,EACJA,GAAOe,IACP5G,EAAOA,EAAK,OAAO4G,EAAUpF,EAAI,GAAM,CAAC,CAAC,GACzC,EAAAyE,GAAczE,GAAKgH,EAAK,SAAS,QAAUA,EAAK,SAAShH,EAAI,CAAC,EAAI,IAEtEa,EAAMmG,EAAK,SAAShH,GAAG,EACvBqE,EAAM2C,EAAK,SAAShH,GAAG,EAE3BsE,EAAEC,EAAMS,EAAMR,EAAMyC,EAAMzI,CAAI,EAC9B+F,EAAOS,EACPR,EAAOyC,CACX,CACJ,CACJ,CAzBS9I,EAAAuG,GAAA,eA0BT,SAASG,GAAOqC,EAAMC,EAAMvC,EAAQwC,EAAQ,GAAO,CAG/C,IAAIhD,EAAW,CAAC,EAAGsC,EAASU,EAAQ,CAAC,EAAI,KACrCrI,EAAI,IAAIiH,GAAYkB,CAAI,EAAGjI,EAAI,IAAI+G,GAAYmB,CAAI,EAKvD,QAAS/B,EAAW,KAAM,CACtB,GAAIrG,EAAE,MAAQE,EAAE,KAAOA,EAAE,MAAQF,EAAE,IAC/B,MAAM,IAAI,MAAM,+BAA+B,EAE9C,GAAIA,EAAE,KAAO,IAAME,EAAE,KAAO,GAAI,CAEjC,IAAI4B,EAAM,KAAK,IAAI9B,EAAE,IAAKE,EAAE,GAAG,EAC/BgH,GAAW7B,EAAUvD,EAAK,EAAE,EAC5B9B,EAAE,QAAQ8B,CAAG,EACb5B,EAAE,QAAQ4B,CAAG,CACjB,SACS5B,EAAE,KAAO,IAAMF,EAAE,IAAM,GAAKqG,GAAYrG,EAAE,GAAKA,EAAE,KAAO,IAAME,EAAE,IAAMF,EAAE,KAAOE,EAAE,KAAOF,EAAE,KAAO,CAAC6F,IAAU,CAIjH,IAAI/D,EAAM5B,EAAE,IAEZ,IADAgH,GAAW7B,EAAUnF,EAAE,IAAK,EAAE,EACvB4B,GAAK,CACR,IAAIwG,EAAQ,KAAK,IAAItI,EAAE,IAAK8B,CAAG,EAC3B9B,EAAE,KAAO,GAAKqG,EAAWrG,EAAE,GAAKA,EAAE,KAAOsI,IACzCpB,GAAW7B,EAAU,EAAGrF,EAAE,GAAG,EACzB2H,GACAR,GAAUQ,EAAQtC,EAAUrF,EAAE,IAAI,EACtCqG,EAAWrG,EAAE,GAEjBA,EAAE,QAAQsI,CAAK,EACfxG,GAAOwG,CACX,CACApI,EAAE,KAAK,CACX,SACSF,EAAE,KAAO,EAAG,CAGjB,IAAI8B,EAAM,EAAGyG,EAAOvI,EAAE,IACtB,KAAOuI,GACH,GAAIrI,EAAE,KAAO,GAAI,CACb,IAAIoI,EAAQ,KAAK,IAAIC,EAAMrI,EAAE,GAAG,EAChC4B,GAAOwG,EACPC,GAAQD,EACRpI,EAAE,QAAQoI,CAAK,CACnB,SACSpI,EAAE,KAAO,GAAKA,EAAE,IAAMqI,EAC3BA,GAAQrI,EAAE,IACVA,EAAE,KAAK,MAGP,OAGRgH,GAAW7B,EAAUvD,EAAKuE,EAAWrG,EAAE,EAAIA,EAAE,IAAM,CAAC,EAChD2H,GAAUtB,EAAWrG,EAAE,GACvBmH,GAAUQ,EAAQtC,EAAUrF,EAAE,IAAI,EACtCqG,EAAWrG,EAAE,EACbA,EAAE,QAAQA,EAAE,IAAMuI,CAAI,CAC1B,KACK,IAAIvI,EAAE,MAAQE,EAAE,KACjB,OAAOyH,EAASxB,GAAU,UAAUd,EAAUsC,CAAM,EAAIxC,GAAW,OAAOE,CAAQ,EAGlF,MAAM,IAAI,MAAM,+BAA+B,EAEvD,CACJ,CAvESjG,EAAA0G,GAAA,UAwET,SAASF,GAAYuC,EAAMC,EAAMC,EAAQ,GAAO,CAC5C,IAAIhD,EAAW,CAAC,EACZsC,EAASU,EAAQ,CAAC,EAAI,KACtBrI,EAAI,IAAIiH,GAAYkB,CAAI,EAAGjI,EAAI,IAAI+G,GAAYmB,CAAI,EACvD,QAAShH,EAAO,KAAS,CACrB,GAAIpB,EAAE,MAAQE,EAAE,KACZ,OAAOyH,EAASxB,GAAU,UAAUd,EAAUsC,CAAM,EAAIxC,GAAW,OAAOE,CAAQ,EAEjF,GAAIrF,EAAE,KAAO,EACdkH,GAAW7B,EAAUrF,EAAE,IAAK,EAAGoB,CAAI,EACnCpB,EAAE,KAAK,UAEFE,EAAE,KAAO,GAAK,CAACA,EAAE,KACtBgH,GAAW7B,EAAU,EAAGnF,EAAE,IAAKkB,CAAI,EAC/BuG,GACAR,GAAUQ,EAAQtC,EAAUnF,EAAE,IAAI,EACtCA,EAAE,KAAK,MAEN,IAAIF,EAAE,MAAQE,EAAE,KACjB,MAAM,IAAI,MAAM,+BAA+B,EAE9C,CACD,IAAI4B,EAAM,KAAK,IAAI9B,EAAE,KAAME,EAAE,GAAG,EAAGsI,EAAanD,EAAS,OACzD,GAAIrF,EAAE,KAAO,GAAI,CACb,IAAIyI,EAAOvI,EAAE,KAAO,GAAK,GAAKA,EAAE,IAAM,EAAIA,EAAE,IAC5CgH,GAAW7B,EAAUvD,EAAK2G,EAAMrH,CAAI,EAChCuG,GAAUc,GACVtB,GAAUQ,EAAQtC,EAAUnF,EAAE,IAAI,CAC1C,MACSA,EAAE,KAAO,IACdgH,GAAW7B,EAAUrF,EAAE,IAAM,EAAIA,EAAE,IAAK8B,EAAKV,CAAI,EAC7CuG,GACAR,GAAUQ,EAAQtC,EAAUrF,EAAE,QAAQ8B,CAAG,CAAC,IAG9CoF,GAAW7B,EAAUrF,EAAE,IAAM,EAAIA,EAAE,IAAKE,EAAE,IAAM,EAAIA,EAAE,IAAKkB,CAAI,EAC3DuG,GAAU,CAACzH,EAAE,KACbiH,GAAUQ,EAAQtC,EAAUnF,EAAE,IAAI,GAE1CkB,GAAQpB,EAAE,IAAM8B,GAAO5B,EAAE,KAAO,GAAKA,EAAE,IAAM4B,KAASV,GAAQiE,EAAS,OAASmD,GAChFxI,EAAE,SAAS8B,CAAG,EACd5B,EAAE,QAAQ4B,CAAG,CACjB,EACJ,CACJ,CA5CS1C,EAAAwG,GAAA,eA6CT,IAAMqB,GAAN,KAAkB,CAhrClB,MAgrCkB,CAAA7H,EAAA,oBACd,YAAYmI,EAAK,CACb,KAAK,IAAMA,EACX,KAAK,EAAI,EACT,KAAK,KAAK,CACd,CACA,MAAO,CACH,GAAI,CAAE,SAAAlC,CAAS,EAAI,KAAK,IACpB,KAAK,EAAIA,EAAS,QAClB,KAAK,IAAMA,EAAS,KAAK,GAAG,EAC5B,KAAK,IAAMA,EAAS,KAAK,GAAG,IAG5B,KAAK,IAAM,EACX,KAAK,IAAM,IAEf,KAAK,IAAM,CACf,CACA,IAAI,MAAO,CAAE,OAAO,KAAK,KAAO,EAAI,CACpC,IAAI,MAAO,CAAE,OAAO,KAAK,IAAM,EAAI,KAAK,IAAM,KAAK,GAAK,CACxD,IAAI,MAAO,CACP,GAAI,CAAE,SAAAgB,CAAS,EAAI,KAAK,IAAKM,EAAS,KAAK,EAAI,GAAM,EACrD,OAAOA,GAASN,EAAS,OAASnH,EAAK,MAAQmH,EAASM,CAAK,CACjE,CACA,QAAQ7E,EAAK,CACT,GAAI,CAAE,SAAAuE,CAAS,EAAI,KAAK,IAAKM,EAAS,KAAK,EAAI,GAAM,EACrD,OAAOA,GAASN,EAAS,QAAU,CAACvE,EAAM5C,EAAK,MACzCmH,EAASM,CAAK,EAAE,MAAM,KAAK,IAAK7E,GAAO,KAAO,OAAY,KAAK,IAAMA,CAAG,CAClF,CACA,QAAQA,EAAK,CACLA,GAAO,KAAK,IACZ,KAAK,KAAK,GAEV,KAAK,KAAOA,EACZ,KAAK,KAAOA,EAEpB,CACA,SAASA,EAAK,CACN,KAAK,KAAO,GACZ,KAAK,QAAQA,CAAG,EACXA,GAAO,KAAK,IACjB,KAAK,KAAK,GAEV,KAAK,KAAOA,EACZ,KAAK,KAAOA,EAEpB,CACJ,EAQM4G,GAAN,MAAMC,CAAe,CAvuCrB,MAuuCqB,CAAAvJ,EAAA,uBACjB,YAIAG,EAIAC,EAAIoJ,EAAO,CACP,KAAK,KAAOrJ,EACZ,KAAK,GAAKC,EACV,KAAK,MAAQoJ,CACjB,CAKA,IAAI,QAAS,CAAE,OAAO,KAAK,MAAQ,GAA8B,KAAK,GAAK,KAAK,IAAM,CAKtF,IAAI,MAAO,CAAE,OAAO,KAAK,MAAQ,GAA8B,KAAK,KAAO,KAAK,EAAI,CAIpF,IAAI,OAAQ,CAAE,OAAO,KAAK,MAAQ,KAAK,EAAI,CAO3C,IAAI,OAAQ,CAAE,OAAO,KAAK,MAAQ,EAAgC,GAAK,KAAK,MAAQ,GAAgC,EAAI,CAAG,CAK3H,IAAI,WAAY,CACZ,IAAIC,EAAQ,KAAK,MAAQ,EACzB,OAAOA,GAAS,EAAI,KAAOA,CAC/B,CAOA,IAAI,YAAa,CACb,IAAI5E,EAAQ,KAAK,OAAS,EAC1B,OAAOA,GAAS,SAAwC,OAAYA,CACxE,CAKA,IAAI6E,EAAQ/C,EAAQ,GAAI,CACpB,IAAIxG,EAAMC,EACV,OAAI,KAAK,MACLD,EAAOC,EAAKsJ,EAAO,OAAO,KAAK,KAAM/C,CAAK,GAG1CxG,EAAOuJ,EAAO,OAAO,KAAK,KAAM,CAAC,EACjCtJ,EAAKsJ,EAAO,OAAO,KAAK,GAAI,EAAE,GAE3BvJ,GAAQ,KAAK,MAAQC,GAAM,KAAK,GAAK,KAAO,IAAImJ,EAAepJ,EAAMC,EAAI,KAAK,KAAK,CAC9F,CAIA,OAAOD,EAAMC,EAAKD,EAAMwG,EAAQ,EAAG,CAC/B,GAAIxG,GAAQ,KAAK,QAAUC,GAAM,KAAK,OAClC,OAAOuJ,EAAgB,MAAMxJ,EAAMC,EAAI,OAAW,OAAWuG,CAAK,EACtE,IAAIiD,EAAO,KAAK,IAAIzJ,EAAO,KAAK,MAAM,EAAI,KAAK,IAAIC,EAAK,KAAK,MAAM,EAAID,EAAOC,EAC9E,OAAOuJ,EAAgB,MAAM,KAAK,OAAQC,EAAM,OAAW,OAAWjD,CAAK,CAC/E,CAIA,GAAGlG,EAAOoJ,EAAe,GAAO,CAC5B,OAAO,KAAK,QAAUpJ,EAAM,QAAU,KAAK,MAAQA,EAAM,MAAQ,KAAK,YAAcA,EAAM,aACrF,CAACoJ,GAAgB,CAAC,KAAK,OAAS,KAAK,OAASpJ,EAAM,MAC7D,CAIA,QAAS,CAAE,MAAO,CAAE,OAAQ,KAAK,OAAQ,KAAM,KAAK,IAAK,CAAG,CAK5D,OAAO,SAASqG,EAAM,CAClB,GAAI,CAACA,GAAQ,OAAOA,EAAK,QAAU,UAAY,OAAOA,EAAK,MAAQ,SAC/D,MAAM,IAAI,WAAW,gDAAgD,EACzE,OAAO6C,EAAgB,MAAM7C,EAAK,OAAQA,EAAK,IAAI,CACvD,CAIA,OAAO,OAAO3G,EAAMC,EAAIoJ,EAAO,CAC3B,OAAO,IAAID,EAAepJ,EAAMC,EAAIoJ,CAAK,CAC7C,CACJ,EAIMG,EAAN,MAAMG,CAAgB,CAl1CtB,MAk1CsB,CAAA9J,EAAA,wBAClB,YAKAwH,EAKAuC,EAAW,CACP,KAAK,OAASvC,EACd,KAAK,UAAYuC,CACrB,CAKA,IAAIL,EAAQ/C,EAAQ,GAAI,CACpB,OAAI+C,EAAO,MACA,KACJI,EAAgB,OAAO,KAAK,OAAO,IAAIE,GAAKA,EAAE,IAAIN,EAAQ/C,CAAK,CAAC,EAAG,KAAK,SAAS,CAC5F,CAOA,GAAGlG,EAAOoJ,EAAe,GAAO,CAC5B,GAAI,KAAK,OAAO,QAAUpJ,EAAM,OAAO,QACnC,KAAK,WAAaA,EAAM,UACxB,MAAO,GACX,QAAS,EAAI,EAAG,EAAI,KAAK,OAAO,OAAQ,IACpC,GAAI,CAAC,KAAK,OAAO,CAAC,EAAE,GAAGA,EAAM,OAAO,CAAC,EAAGoJ,CAAY,EAChD,MAAO,GACf,MAAO,EACX,CAMA,IAAI,MAAO,CAAE,OAAO,KAAK,OAAO,KAAK,SAAS,CAAG,CAKjD,UAAW,CACP,OAAO,KAAK,OAAO,QAAU,EAAI,KAAO,IAAIC,EAAgB,CAAC,KAAK,IAAI,EAAG,CAAC,CAC9E,CAIA,SAASG,EAAOC,EAAO,GAAM,CACzB,OAAOJ,EAAgB,OAAO,CAACG,CAAK,EAAE,OAAO,KAAK,MAAM,EAAGC,EAAO,EAAI,KAAK,UAAY,CAAC,CAC5F,CAKA,aAAaD,EAAOE,EAAQ,KAAK,UAAW,CACxC,IAAI3C,EAAS,KAAK,OAAO,MAAM,EAC/B,OAAAA,EAAO2C,CAAK,EAAIF,EACTH,EAAgB,OAAOtC,EAAQ,KAAK,SAAS,CACxD,CAKA,QAAS,CACL,MAAO,CAAE,OAAQ,KAAK,OAAO,IAAIwC,GAAKA,EAAE,OAAO,CAAC,EAAG,KAAM,KAAK,SAAU,CAC5E,CAIA,OAAO,SAASlD,EAAM,CAClB,GAAI,CAACA,GAAQ,CAAC,MAAM,QAAQA,EAAK,MAAM,GAAK,OAAOA,EAAK,MAAQ,UAAYA,EAAK,MAAQA,EAAK,OAAO,OACjG,MAAM,IAAI,WAAW,iDAAiD,EAC1E,OAAO,IAAIgD,EAAgBhD,EAAK,OAAO,IAAKkD,GAAMV,GAAe,SAASU,CAAC,CAAC,EAAGlD,EAAK,IAAI,CAC5F,CAIA,OAAO,OAAOsD,EAAQR,EAAOQ,EAAQ,CACjC,OAAO,IAAIN,EAAgB,CAACA,EAAgB,MAAMM,EAAQR,CAAI,CAAC,EAAG,CAAC,CACvE,CAKA,OAAO,OAAOpC,EAAQuC,EAAY,EAAG,CACjC,GAAIvC,EAAO,QAAU,EACjB,MAAM,IAAI,WAAW,sCAAsC,EAC/D,QAASvH,EAAM,EAAG4B,EAAI,EAAGA,EAAI2F,EAAO,OAAQ3F,IAAK,CAC7C,IAAIoI,EAAQzC,EAAO3F,CAAC,EACpB,GAAIoI,EAAM,MAAQA,EAAM,MAAQhK,EAAMgK,EAAM,KAAOhK,EAC/C,OAAO6J,EAAgB,WAAWtC,EAAO,MAAM,EAAGuC,CAAS,EAC/D9J,EAAMgK,EAAM,EAChB,CACA,OAAO,IAAIH,EAAgBtC,EAAQuC,CAAS,CAChD,CAKA,OAAO,OAAO9J,EAAK0G,EAAQ,EAAG0D,EAAWC,EAAY,CACjD,OAAOhB,GAAe,OAAOrJ,EAAKA,GAAM0G,GAAS,EAAI,EAAIA,EAAQ,EAAI,EAAgC,KAChG0D,GAAa,KAAO,EAAI,KAAK,IAAI,EAAGA,CAAS,IAC5CC,GAA4D,WAA0C,CAAmC,CACnJ,CAIA,OAAO,MAAMF,EAAQR,EAAMU,EAAYD,EAAW1D,EAAO,CACrD,IAAI6C,GAAUc,GAA4D,WAA0C,GAC/GD,GAAa,KAAO,EAAI,KAAK,IAAI,EAAGA,CAAS,GAClD,MAAI,CAAC1D,GAASyD,GAAUR,IACpBjD,EAAQiD,EAAOQ,EAAS,EAAI,IACzBR,EAAOQ,EAASd,GAAe,OAAOM,EAAMQ,EAAQ,GAA8DZ,CAAK,EACxHF,GAAe,OAAOc,EAAQR,GAAQjD,EAAYA,EAAQ,EAAI,EAAgC,GAAhD,GAAiF6C,CAAK,CAC9I,CAIA,OAAO,WAAWhC,EAAQuC,EAAY,EAAG,CACrC,IAAIG,EAAO1C,EAAOuC,CAAS,EAC3BvC,EAAO,KAAK,CAAC5G,EAAGE,IAAMF,EAAE,KAAOE,EAAE,IAAI,EACrCiJ,EAAYvC,EAAO,QAAQ0C,CAAI,EAC/B,QAASrI,EAAI,EAAGA,EAAI2F,EAAO,OAAQ3F,IAAK,CACpC,IAAIoI,EAAQzC,EAAO3F,CAAC,EAAGK,EAAOsF,EAAO3F,EAAI,CAAC,EAC1C,GAAIoI,EAAM,MAAQA,EAAM,MAAQ/H,EAAK,GAAK+H,EAAM,KAAO/H,EAAK,GAAI,CAC5D,IAAI/B,EAAO+B,EAAK,KAAM9B,EAAK,KAAK,IAAI6J,EAAM,GAAI/H,EAAK,EAAE,EACjDL,GAAKkI,GACLA,IACJvC,EAAO,OAAO,EAAE3F,EAAG,EAAGoI,EAAM,OAASA,EAAM,KAAOH,EAAgB,MAAM1J,EAAID,CAAI,EAAI2J,EAAgB,MAAM3J,EAAMC,CAAE,CAAC,CACvH,CACJ,CACA,OAAO,IAAI0J,EAAgBtC,EAAQuC,CAAS,CAChD,CACJ,EACA,SAASQ,GAAeC,EAAWC,EAAW,CAC1C,QAASR,KAASO,EAAU,OACxB,GAAIP,EAAM,GAAKQ,EACX,MAAM,IAAI,WAAW,sCAAsC,CACvE,CAJSzK,EAAAuK,GAAA,kBAMT,IAAIG,GAAS,EAcPC,EAAN,MAAMC,CAAM,CAp/CZ,MAo/CY,CAAA5K,EAAA,cACR,YAIA6K,EAIAC,EAIAC,EAASC,EAAUC,EAAS,CACxB,KAAK,QAAUJ,EACf,KAAK,aAAeC,EACpB,KAAK,QAAUC,EACf,KAAK,SAAWC,EAIhB,KAAK,GAAKN,KACV,KAAK,QAAUG,EAAQ,CAAC,CAAC,EACzB,KAAK,WAAa,OAAOI,GAAW,WAAaA,EAAQ,IAAI,EAAIA,CACrE,CAKA,IAAI,QAAS,CAAE,OAAO,IAAM,CAI5B,OAAO,OAAOC,EAAS,CAAC,EAAG,CACvB,OAAO,IAAIN,EAAMM,EAAO,UAAatK,GAAMA,GAAIsK,EAAO,eAAiB,CAACtK,EAAGE,IAAMF,IAAME,GAAIoK,EAAO,UAAaA,EAAO,QAAsB,CAACtK,EAAGE,IAAMF,IAAME,EAA5BqK,IAAgC,CAAC,CAACD,EAAO,OAAQA,EAAO,OAAO,CACnM,CAIA,GAAGrG,EAAO,CACN,OAAO,IAAIuG,GAAc,CAAC,EAAG,KAAM,EAAyBvG,CAAK,CACrE,CAUA,QAAQwG,EAAMC,EAAK,CACf,GAAI,KAAK,SACL,MAAM,IAAI,MAAM,8BAA8B,EAClD,OAAO,IAAIF,GAAcC,EAAM,KAAM,EAAyBC,CAAG,CACrE,CAKA,SAASD,EAAMC,EAAK,CAChB,GAAI,KAAK,SACL,MAAM,IAAI,MAAM,8BAA8B,EAClD,OAAO,IAAIF,GAAcC,EAAM,KAAM,EAAwBC,CAAG,CACpE,CACA,KAAKC,EAAOD,EAAK,CACb,OAAKA,IACDA,EAAMtL,EAAAwL,GAAKA,EAAL,QACH,KAAK,QAAQ,CAACD,CAAK,EAAGE,GAASH,EAAIG,EAAM,MAAMF,CAAK,CAAC,CAAC,CACjE,CACJ,EACA,SAASJ,GAAUvK,EAAGE,EAAG,CACrB,OAAOF,GAAKE,GAAKF,EAAE,QAAUE,EAAE,QAAUF,EAAE,MAAM,CAAC8H,EAAG,IAAMA,IAAM5H,EAAE,CAAC,CAAC,CACzE,CAFSd,EAAAmL,GAAA,aAGT,IAAMC,GAAN,KAAoB,CA9jDpB,MA8jDoB,CAAApL,EAAA,sBAChB,YAAY0L,EAAcC,EAAOC,EAAM/G,EAAO,CAC1C,KAAK,aAAe6G,EACpB,KAAK,MAAQC,EACb,KAAK,KAAOC,EACZ,KAAK,MAAQ/G,EACb,KAAK,GAAK6F,IACd,CACA,YAAYmB,EAAW,CACnB,IAAIC,EACJ,IAAIC,EAAS,KAAK,MACdhB,EAAU,KAAK,MAAM,aACrBiB,EAAK,KAAK,GAAIC,EAAMJ,EAAUG,CAAE,GAAK,EAAGE,EAAQ,KAAK,MAAQ,EAC7DC,EAAS,GAAOC,EAAS,GAAOC,EAAW,CAAC,EAChD,QAASC,KAAO,KAAK,aACbA,GAAO,MACPH,EAAS,GACJG,GAAO,YACZF,EAAS,MACDN,EAAKD,EAAUS,EAAI,EAAE,KAAO,MAAQR,IAAO,OAASA,EAAK,GAAK,IAAM,GAC5EO,EAAS,KAAKR,EAAUS,EAAI,EAAE,CAAC,EAEvC,MAAO,CACH,OAAOb,EAAO,CACV,OAAAA,EAAM,OAAOQ,CAAG,EAAIF,EAAON,CAAK,EACzB,CACX,EACA,OAAOA,EAAOc,EAAI,CACd,GAAKJ,GAAUI,EAAG,YAAgBH,IAAWG,EAAG,YAAcA,EAAG,YAAeC,GAAUf,EAAOY,CAAQ,EAAG,CACxG,IAAII,EAASV,EAAON,CAAK,EACzB,GAAIS,EAAQ,CAACQ,GAAaD,EAAQhB,EAAM,OAAOQ,CAAG,EAAGlB,CAAO,EAAI,CAACA,EAAQ0B,EAAQhB,EAAM,OAAOQ,CAAG,CAAC,EAC9F,OAAAR,EAAM,OAAOQ,CAAG,EAAIQ,EACb,CAEf,CACA,MAAO,EACX,EACA,YAAazM,EAAA,CAACyL,EAAOkB,IAAa,CAC9B,IAAIF,EAAQG,EAAUD,EAAS,OAAO,QAAQX,CAAE,EAChD,GAAIY,GAAW,KAAM,CACjB,IAAIC,EAASC,GAAQH,EAAUC,CAAO,EACtC,GAAI,KAAK,aAAa,MAAMN,GACjBA,aAAe3B,EAAQgC,EAAS,MAAML,CAAG,IAAMb,EAAM,MAAMa,CAAG,EACjEA,aAAeS,GAAaJ,EAAS,MAAML,EAAK,EAAK,GAAKb,EAAM,MAAMa,EAAK,EAAK,EAAI,EAC3F,IAAMJ,EAAQQ,GAAaD,EAASV,EAAON,CAAK,EAAGoB,EAAQ9B,CAAO,EAAIA,EAAQ0B,EAASV,EAAON,CAAK,EAAGoB,CAAM,GACzG,OAAApB,EAAM,OAAOQ,CAAG,EAAIY,EACb,CAEf,MAEIJ,EAASV,EAAON,CAAK,EAEzB,OAAAA,EAAM,OAAOQ,CAAG,EAAIQ,EACb,CACX,EAjBa,cAkBjB,CACJ,CACJ,EACA,SAASC,GAAa9L,EAAGE,EAAGiK,EAAS,CACjC,GAAInK,EAAE,QAAUE,EAAE,OACd,MAAO,GACX,QAAS,EAAI,EAAG,EAAIF,EAAE,OAAQ,IAC1B,GAAI,CAACmK,EAAQnK,EAAE,CAAC,EAAGE,EAAE,CAAC,CAAC,EACnB,MAAO,GACf,MAAO,EACX,CAPSd,EAAA0M,GAAA,gBAQT,SAASF,GAAUf,EAAOuB,EAAO,CAC7B,IAAIC,EAAU,GACd,QAASC,KAAQF,EACTG,GAAW1B,EAAOyB,CAAI,EAAI,IAC1BD,EAAU,IAClB,OAAOA,CACX,CANSjN,EAAAwM,GAAA,aAOT,SAASY,GAAiBvB,EAAWF,EAAO0B,EAAW,CACnD,IAAIC,EAAgBD,EAAU,IAAIE,GAAK1B,EAAU0B,EAAE,EAAE,CAAC,EAClDC,EAAgBH,EAAU,IAAIE,GAAKA,EAAE,IAAI,EACzCE,EAAUH,EAAc,OAAOC,GAAK,EAAEA,EAAI,EAAE,EAC5CtB,EAAMJ,EAAUF,EAAM,EAAE,GAAK,EACjC,SAASL,EAAIG,EAAO,CAChB,IAAI7C,EAAS,CAAC,EACd,QAAS/G,EAAI,EAAGA,EAAIyL,EAAc,OAAQzL,IAAK,CAC3C,IAAIgD,EAAQiI,GAAQrB,EAAO6B,EAAczL,CAAC,CAAC,EAC3C,GAAI2L,EAAc3L,CAAC,GAAK,EACpB,QAAS6L,KAAO7I,EACZ+D,EAAO,KAAK8E,CAAG,OAEnB9E,EAAO,KAAK/D,CAAK,CACzB,CACA,OAAO8G,EAAM,QAAQ/C,CAAM,CAC/B,CAXS,OAAA5I,EAAAsL,EAAA,OAYF,CACH,OAAOG,EAAO,CACV,QAASyB,KAAQI,EACbH,GAAW1B,EAAOyB,CAAI,EAC1B,OAAAzB,EAAM,OAAOQ,CAAG,EAAIX,EAAIG,CAAK,EACtB,CACX,EACA,OAAOA,EAAOc,EAAI,CACd,GAAI,CAACC,GAAUf,EAAOgC,CAAO,EACzB,MAAO,GACX,IAAI5I,EAAQyG,EAAIG,CAAK,EACrB,OAAIE,EAAM,QAAQ9G,EAAO4G,EAAM,OAAOQ,CAAG,CAAC,EAC/B,GACXR,EAAM,OAAOQ,CAAG,EAAIpH,EACb,EACX,EACA,YAAY4G,EAAOkB,EAAU,CACzB,IAAIgB,EAAanB,GAAUf,EAAO6B,CAAa,EAC3CM,EAAejB,EAAS,OAAO,OAAOhB,EAAM,EAAE,EAAGkC,EAAWlB,EAAS,MAAMhB,CAAK,EACpF,GAAIiC,GAAgB,CAACD,GAAcxC,GAAUkC,EAAWO,CAAY,EAChE,OAAAnC,EAAM,OAAOQ,CAAG,EAAI4B,EACb,EAEX,IAAIhJ,EAAQyG,EAAIG,CAAK,EACrB,OAAIE,EAAM,QAAQ9G,EAAOgJ,CAAQ,GAC7BpC,EAAM,OAAOQ,CAAG,EAAI4B,EACb,IAEXpC,EAAM,OAAOQ,CAAG,EAAIpH,EACb,EACX,CACJ,CACJ,CAjDS7E,EAAAoN,GAAA,oBAkDT,IAAMU,GAAyBnD,EAAM,OAAO,CAAE,OAAQ,EAAK,CAAC,EAKtDoC,GAAN,MAAMgB,CAAW,CA9rDjB,MA8rDiB,CAAA/N,EAAA,mBACb,YAIAgM,EAAIgC,EAASC,EAASC,EAItB7F,EAAM,CACF,KAAK,GAAK2D,EACV,KAAK,QAAUgC,EACf,KAAK,QAAUC,EACf,KAAK,SAAWC,EAChB,KAAK,KAAO7F,EAIZ,KAAK,SAAW,MACpB,CAIA,OAAO,OAAO6C,EAAQ,CAClB,IAAIK,EAAQ,IAAIwC,EAAWrD,KAAUQ,EAAO,OAAQA,EAAO,OAAQA,EAAO,UAAY,CAACtK,EAAGE,IAAMF,IAAME,GAAIoK,CAAM,EAChH,OAAIA,EAAO,UACPK,EAAM,SAAWL,EAAO,QAAQK,CAAK,GAClCA,CACX,CACA,OAAOE,EAAO,CACV,IAAI0C,EAAO1C,EAAM,MAAMqC,EAAS,EAAE,KAAK,GAAK,EAAE,OAAS,IAAI,EAC3D,OAAqDK,GAAK,QAAW,KAAK,SAAS1C,CAAK,CAC5F,CAIA,KAAKI,EAAW,CACZ,IAAII,EAAMJ,EAAU,KAAK,EAAE,GAAK,EAChC,MAAO,CACH,OAAQ7L,EAACyL,IACLA,EAAM,OAAOQ,CAAG,EAAI,KAAK,OAAOR,CAAK,EAC9B,GAFH,UAIR,OAAQzL,EAAA,CAACyL,EAAOc,IAAO,CACnB,IAAIM,EAASpB,EAAM,OAAOQ,CAAG,EACzBpH,EAAQ,KAAK,QAAQgI,EAAQN,CAAE,EACnC,OAAI,KAAK,SAASM,EAAQhI,CAAK,EACpB,GACX4G,EAAM,OAAOQ,CAAG,EAAIpH,EACb,EACX,EAPQ,UAQR,YAAa7E,EAAA,CAACyL,EAAOkB,IAAa,CAC9B,IAAIwB,EAAO1C,EAAM,MAAMqC,EAAS,EAAGM,EAAUzB,EAAS,MAAMmB,EAAS,EAAGO,EACxE,OAAKA,EAASF,EAAK,KAAKtM,GAAKA,EAAE,OAAS,IAAI,IAAMwM,GAAUD,EAAQ,KAAKvM,GAAKA,EAAE,OAAS,IAAI,GACzF4J,EAAM,OAAOQ,CAAG,EAAIoC,EAAO,OAAO5C,CAAK,EAChC,GAEPkB,EAAS,OAAO,QAAQ,KAAK,EAAE,GAAK,MACpClB,EAAM,OAAOQ,CAAG,EAAIU,EAAS,MAAM,IAAI,EAChC,IAEXlB,EAAM,OAAOQ,CAAG,EAAI,KAAK,OAAOR,CAAK,EAC9B,EACX,EAZa,cAajB,CACJ,CAMA,KAAK6C,EAAQ,CACT,MAAO,CAAC,KAAMR,GAAU,GAAG,CAAE,MAAO,KAAM,OAAAQ,CAAO,CAAC,CAAC,CACvD,CAMA,IAAI,WAAY,CAAE,OAAO,IAAM,CACnC,EACMC,GAAQ,CAAE,OAAQ,EAAG,IAAK,EAAG,QAAS,EAAG,KAAM,EAAG,QAAS,CAAE,EACnE,SAASC,GAAK3J,EAAO,CACjB,OAAQ4J,GAAQ,IAAIC,GAAcD,EAAK5J,CAAK,CAChD,CAFS7E,EAAAwO,GAAA,QAaT,IAAMG,GAAO,CAKT,QAAsBH,GAAKD,GAAM,OAAO,EAKxC,KAAmBC,GAAKD,GAAM,IAAI,EAKlC,QAAsBC,GAAKD,GAAM,OAAO,EAIxC,IAAkBC,GAAKD,GAAM,GAAG,EAKhC,OAAqBC,GAAKD,GAAM,MAAM,CAC1C,EACMG,GAAN,KAAoB,CAvzDpB,MAuzDoB,CAAA1O,EAAA,sBAChB,YAAYkB,EAAOsN,EAAM,CACrB,KAAK,MAAQtN,EACb,KAAK,KAAOsN,CAChB,CACJ,EAQMI,GAAN,MAAMC,CAAY,CAp0DlB,MAo0DkB,CAAA7O,EAAA,oBAKd,GAAGyO,EAAK,CAAE,OAAO,IAAIK,GAAoB,KAAML,CAAG,CAAG,CAKrD,YAAYM,EAAS,CACjB,OAAOF,EAAY,YAAY,GAAG,CAAE,YAAa,KAAM,UAAWE,CAAQ,CAAC,CAC/E,CAKA,IAAItD,EAAO,CACP,OAAOA,EAAM,OAAO,aAAa,IAAI,IAAI,CAC7C,CACJ,EACMqD,GAAN,KAA0B,CAz1D1B,MAy1D0B,CAAA9O,EAAA,4BACtB,YAAYgP,EAAa9N,EAAO,CAC5B,KAAK,YAAc8N,EACnB,KAAK,MAAQ9N,CACjB,CACJ,EACM+N,GAAN,MAAMC,CAAc,CA/1DpB,MA+1DoB,CAAAlP,EAAA,sBAChB,YAAYmP,EAAMC,EAAcC,EAAcC,EAASC,EAAcC,EAAQ,CAQzE,IAPA,KAAK,KAAOL,EACZ,KAAK,aAAeC,EACpB,KAAK,aAAeC,EACpB,KAAK,QAAUC,EACf,KAAK,aAAeC,EACpB,KAAK,OAASC,EACd,KAAK,eAAiB,CAAC,EAChB,KAAK,eAAe,OAASH,EAAa,QAC7C,KAAK,eAAe,KAAK,CAA6B,CAC9D,CACA,YAAY1D,EAAO,CACf,IAAIuB,EAAO,KAAK,QAAQvB,EAAM,EAAE,EAChC,OAAOuB,GAAQ,KAAOvB,EAAM,QAAU,KAAK,aAAauB,GAAQ,CAAC,CACrE,CACA,OAAO,QAAQiC,EAAMC,EAAczC,EAAU,CACzC,IAAI8C,EAAS,CAAC,EACVD,EAAS,OAAO,OAAO,IAAI,EAC3BE,EAAkB,IAAI,IAC1B,QAASjB,KAAOkB,GAAQR,EAAMC,EAAcM,CAAe,EACnDjB,aAAe1B,GACf0C,EAAO,KAAKhB,CAAG,GAEde,EAAOf,EAAI,MAAM,EAAE,IAAMe,EAAOf,EAAI,MAAM,EAAE,EAAI,CAAC,IAAI,KAAKA,CAAG,EAEtE,IAAIa,EAAU,OAAO,OAAO,IAAI,EAC5BC,EAAe,CAAC,EAChBF,EAAe,CAAC,EACpB,QAAS9D,KAASkE,EACdH,EAAQ/D,EAAM,EAAE,EAAI8D,EAAa,QAAU,EAC3CA,EAAa,KAAKzO,GAAK2K,EAAM,KAAK3K,CAAC,CAAC,EAExC,IAAIgP,EAAgEjD,GAAS,OAAO,OACpF,QAASX,KAAMwD,EAAQ,CACnB,IAAInC,EAAYmC,EAAOxD,CAAE,EAAGL,EAAQ0B,EAAU,CAAC,EAAE,MAC7CO,EAAegC,GAAaA,EAAU5D,CAAE,GAAK,CAAC,EAClD,GAAIqB,EAAU,MAAME,GAAKA,EAAE,MAAQ,CAAuB,EAEtD,GADA+B,EAAQ3D,EAAM,EAAE,EAAK4D,EAAa,QAAU,EAAK,EAC7CpE,GAAUyC,EAAcP,CAAS,EACjCkC,EAAa,KAAK5C,EAAS,MAAMhB,CAAK,CAAC,MAEtC,CACD,IAAI9G,EAAQ8G,EAAM,QAAQ0B,EAAU,IAAIE,GAAKA,EAAE,KAAK,CAAC,EACrDgC,EAAa,KAAK5C,GAAYhB,EAAM,QAAQ9G,EAAO8H,EAAS,MAAMhB,CAAK,CAAC,EAAIgB,EAAS,MAAMhB,CAAK,EAAI9G,CAAK,CAC7G,KAEC,CACD,QAAS0I,KAAKF,EACNE,EAAE,MAAQ,GACV+B,EAAQ/B,EAAE,EAAE,EAAKgC,EAAa,QAAU,EAAK,EAC7CA,EAAa,KAAKhC,EAAE,KAAK,IAGzB+B,EAAQ/B,EAAE,EAAE,EAAI8B,EAAa,QAAU,EACvCA,EAAa,KAAKzO,GAAK2M,EAAE,YAAY3M,CAAC,CAAC,GAG/C0O,EAAQ3D,EAAM,EAAE,EAAI0D,EAAa,QAAU,EAC3CA,EAAa,KAAKzO,GAAKwM,GAAiBxM,EAAG+K,EAAO0B,CAAS,CAAC,CAChE,CACJ,CACA,IAAII,EAAU4B,EAAa,IAAIlJ,GAAKA,EAAEmJ,CAAO,CAAC,EAC9C,OAAO,IAAIJ,EAAcC,EAAMO,EAAiBjC,EAAS6B,EAASC,EAAcC,CAAM,CAC1F,CACJ,EACA,SAASG,GAAQE,EAAWT,EAAcM,EAAiB,CACvD,IAAIlN,EAAS,CAAC,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,EAC5BsN,EAAO,IAAI,IACf,SAAS5O,EAAMuN,EAAKD,EAAM,CACtB,IAAIuB,EAAQD,EAAK,IAAIrB,CAAG,EACxB,GAAIsB,GAAS,KAAM,CACf,GAAIA,GAASvB,EACT,OACJ,IAAIwB,EAAQxN,EAAOuN,CAAK,EAAE,QAAQtB,CAAG,EACjCuB,EAAQ,IACRxN,EAAOuN,CAAK,EAAE,OAAOC,EAAO,CAAC,EAC7BvB,aAAeK,IACfY,EAAgB,OAAOjB,EAAI,WAAW,CAC9C,CAEA,GADAqB,EAAK,IAAIrB,EAAKD,CAAI,EACd,MAAM,QAAQC,CAAG,EACjB,QAAS/F,KAAK+F,EACVvN,EAAMwH,EAAG8F,CAAI,UAEZC,aAAeK,GAAqB,CACzC,GAAIY,EAAgB,IAAIjB,EAAI,WAAW,EACnC,MAAM,IAAI,WAAW,4CAA4C,EACrE,IAAIM,EAAUK,EAAa,IAAIX,EAAI,WAAW,GAAKA,EAAI,MACvDiB,EAAgB,IAAIjB,EAAI,YAAaM,CAAO,EAC5C7N,EAAM6N,EAASP,CAAI,CACvB,SACSC,aAAeC,GACpBxN,EAAMuN,EAAI,MAAOA,EAAI,IAAI,UAEpBA,aAAe1B,GACpBvK,EAAOgM,CAAI,EAAE,KAAKC,CAAG,EACjBA,EAAI,UACJvN,EAAMuN,EAAI,SAAUD,CAAI,UAEvBC,aAAerD,GACpB5I,EAAOgM,CAAI,EAAE,KAAKC,CAAG,EACjBA,EAAI,MAAM,YACVvN,EAAMuN,EAAI,MAAM,WAAYF,GAAM,OAAO,MAE5C,CACD,IAAIQ,EAAUN,EAAI,UAClB,GAAI,CAACM,EACD,MAAM,IAAI,MAAM,kDAAkDN,CAAG,mHAAmH,EAC5LvN,EAAM6N,EAASP,CAAI,CACvB,CACJ,CA1CS,OAAAxO,EAAAkB,EAAA,SA2CTA,EAAM2O,EAAWtB,GAAM,OAAO,EACvB/L,EAAO,OAAO,CAAC5B,EAAGE,IAAMF,EAAE,OAAOE,CAAC,CAAC,CAC9C,CAhDSd,EAAA2P,GAAA,WAiDT,SAASxC,GAAW1B,EAAOyB,EAAM,CAC7B,GAAIA,EAAO,EACP,MAAO,GACX,IAAIjB,EAAMiB,GAAQ,EACd+C,EAASxE,EAAM,OAAOQ,CAAG,EAC7B,GAAIgE,GAAU,EACV,MAAM,IAAI,MAAM,gDAAgD,EACpE,GAAIA,EAAS,EACT,OAAOA,EACXxE,EAAM,OAAOQ,CAAG,EAAI,EACpB,IAAIgB,EAAUxB,EAAM,YAAYA,EAAOA,EAAM,OAAO,aAAaQ,CAAG,CAAC,EACrE,OAAOR,EAAM,OAAOQ,CAAG,EAAI,EAA8BgB,CAC7D,CAZSjN,EAAAmN,GAAA,cAaT,SAASL,GAAQrB,EAAOyB,EAAM,CAC1B,OAAOA,EAAO,EAAIzB,EAAM,OAAO,aAAayB,GAAQ,CAAC,EAAIzB,EAAM,OAAOyB,GAAQ,CAAC,CACnF,CAFSlN,EAAA8M,GAAA,WAIT,IAAMoD,GAA4BvF,EAAM,OAAO,EACzCwF,GAAuCxF,EAAM,OAAO,CACtD,QAAS3K,EAAA4I,GAAUA,EAAO,KAAKwH,GAAKA,CAAC,EAA5B,WACT,OAAQ,EACZ,CAAC,EACKC,GAA6B1F,EAAM,OAAO,CAC5C,QAAS3K,EAAA4I,GAAUA,EAAO,OAASA,EAAO,CAAC,EAAI,OAAtC,WACT,OAAQ,EACZ,CAAC,EACK0H,GAA4B3F,EAAM,OAAO,EACzC4F,GAAiC5F,EAAM,OAAO,EAC9C6F,GAAmC7F,EAAM,OAAO,EAChD8F,GAAwB9F,EAAM,OAAO,CACvC,QAAS3K,EAAA4I,GAAUA,EAAO,OAASA,EAAO,CAAC,EAAI,GAAtC,UACb,CAAC,EAWK8H,GAAN,KAAiB,CA5/DjB,MA4/DiB,CAAA1Q,EAAA,mBAIb,YAIA4L,EAIA/G,EAAO,CACH,KAAK,KAAO+G,EACZ,KAAK,MAAQ/G,CACjB,CAIA,OAAO,QAAS,CAAE,OAAO,IAAI8L,EAAkB,CACnD,EAIMA,GAAN,KAAqB,CAphErB,MAohEqB,CAAA3Q,EAAA,uBAIjB,GAAG6E,EAAO,CAAE,OAAO,IAAI6L,GAAW,KAAM7L,CAAK,CAAG,CACpD,EAKM+L,GAAN,KAAsB,CA9hEtB,MA8hEsB,CAAA5Q,EAAA,wBAIlB,YAQA6Q,EAAK,CACD,KAAK,IAAMA,CACf,CAKA,GAAGhM,EAAO,CAAE,OAAO,IAAIiM,EAAY,KAAMjM,CAAK,CAAG,CACrD,EAQMiM,EAAN,MAAMC,CAAY,CA1jElB,MA0jEkB,CAAA/Q,EAAA,oBAId,YAIA4L,EAIA/G,EAAO,CACH,KAAK,KAAO+G,EACZ,KAAK,MAAQ/G,CACjB,CAKA,IAAImM,EAAS,CACT,IAAIC,EAAS,KAAK,KAAK,IAAI,KAAK,MAAOD,CAAO,EAC9C,OAAOC,IAAW,OAAY,OAAYA,GAAU,KAAK,MAAQ,KAAO,IAAIF,EAAY,KAAK,KAAME,CAAM,CAC7G,CAKA,GAAGrF,EAAM,CAAE,OAAO,KAAK,MAAQA,CAAM,CAQrC,OAAO,OAAOvD,EAAO,CAAC,EAAG,CACrB,OAAO,IAAIuI,GAAgBvI,EAAK,MAAQ+H,GAAKA,EAAE,CACnD,CAIA,OAAO,WAAWc,EAASF,EAAS,CAChC,GAAI,CAACE,EAAQ,OACT,OAAOA,EACX,IAAI1O,EAAS,CAAC,EACd,QAAS2O,KAAUD,EAAS,CACxB,IAAID,EAASE,EAAO,IAAIH,CAAO,EAC3BC,GACAzO,EAAO,KAAKyO,CAAM,CAC1B,CACA,OAAOzO,CACX,CACJ,EAQAsO,EAAY,YAA2BA,EAAY,OAAO,EAI1DA,EAAY,aAA4BA,EAAY,OAAO,EAU3D,IAAMM,GAAN,MAAMC,CAAY,CAroElB,MAqoEkB,CAAArR,EAAA,oBACd,YAIAsR,EAIAtJ,EAKAwC,EAIA0G,EAIAK,EAKAC,EAAgB,CACZ,KAAK,WAAaF,EAClB,KAAK,QAAUtJ,EACf,KAAK,UAAYwC,EACjB,KAAK,QAAU0G,EACf,KAAK,YAAcK,EACnB,KAAK,eAAiBC,EAItB,KAAK,KAAO,KAIZ,KAAK,OAAS,KACVhH,GACAD,GAAeC,EAAWxC,EAAQ,SAAS,EAC1CuJ,EAAY,KAAM3Q,GAAMA,EAAE,MAAQyQ,EAAY,IAAI,IACnD,KAAK,YAAcE,EAAY,OAAOF,EAAY,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,EAC7E,CAIA,OAAO,OAAOC,EAAYtJ,EAASwC,EAAW0G,EAASK,EAAaC,EAAgB,CAChF,OAAO,IAAIH,EAAYC,EAAYtJ,EAASwC,EAAW0G,EAASK,EAAaC,CAAc,CAC/F,CASA,IAAI,QAAS,CACT,OAAO,KAAK,OAAS,KAAK,KAAO,KAAK,QAAQ,MAAM,KAAK,WAAW,GAAG,EAC3E,CAOA,IAAI,cAAe,CACf,OAAO,KAAK,WAAa,KAAK,WAAW,UAAU,IAAI,KAAK,OAAO,CACvE,CAOA,IAAI,OAAQ,CACR,OAAK,KAAK,QACN,KAAK,WAAW,iBAAiB,IAAI,EAClC,KAAK,MAChB,CAIA,WAAW5F,EAAM,CACb,QAAS6F,KAAO,KAAK,YACjB,GAAIA,EAAI,MAAQ7F,EACZ,OAAO6F,EAAI,KAEvB,CAIA,IAAI,YAAa,CAAE,MAAO,CAAC,KAAK,QAAQ,KAAO,CAO/C,IAAI,cAAe,CAAE,OAAO,KAAK,WAAW,QAAU,KAAK,MAAM,MAAQ,CAQzE,YAAYC,EAAO,CACf,IAAIhJ,EAAI,KAAK,WAAW2I,EAAY,SAAS,EAC7C,MAAO,CAAC,EAAE3I,IAAMA,GAAKgJ,GAAShJ,EAAE,OAASgJ,EAAM,QAAUhJ,EAAE,MAAM,EAAGgJ,EAAM,MAAM,GAAKA,GAAShJ,EAAEgJ,EAAM,MAAM,GAAK,KACrH,CACJ,EAKAN,GAAY,KAAoBV,GAAW,OAAO,EA2BlDU,GAAY,UAAyBV,GAAW,OAAO,EAKvDU,GAAY,aAA4BV,GAAW,OAAO,EAO1DU,GAAY,OAAsBV,GAAW,OAAO,EACpD,SAASiB,GAAW/Q,EAAGE,EAAG,CACtB,IAAI0B,EAAS,CAAC,EACd,QAASW,EAAK,EAAGC,EAAK,IAAK,CACvB,IAAIjD,EAAMC,EACV,GAAI+C,EAAKvC,EAAE,SAAWwC,GAAMtC,EAAE,QAAUA,EAAEsC,CAAE,GAAKxC,EAAEuC,CAAE,GACjDhD,EAAOS,EAAEuC,GAAI,EACb/C,EAAKQ,EAAEuC,GAAI,UAENC,EAAKtC,EAAE,OACZX,EAAOW,EAAEsC,GAAI,EACbhD,EAAKU,EAAEsC,GAAI,MAGX,QAAOZ,EACP,CAACA,EAAO,QAAUA,EAAOA,EAAO,OAAS,CAAC,EAAIrC,EAC9CqC,EAAO,KAAKrC,EAAMC,CAAE,EACfoC,EAAOA,EAAO,OAAS,CAAC,EAAIpC,IACjCoC,EAAOA,EAAO,OAAS,CAAC,EAAIpC,EACpC,CACJ,CAnBSJ,EAAA2R,GAAA,cAoBT,SAASC,GAAiBhR,EAAGE,EAAG+Q,EAAY,CACxC,IAAI/F,EACJ,IAAIgG,EAASC,EAAS/J,EACtB,OAAI6J,GACAC,EAAUhR,EAAE,QACZiR,EAAUhL,GAAU,MAAMjG,EAAE,QAAQ,MAAM,EAC1CkH,EAAUpH,EAAE,QAAQ,QAAQE,EAAE,OAAO,IAGrCgR,EAAUhR,EAAE,QAAQ,IAAIF,EAAE,OAAO,EACjCmR,EAAUnR,EAAE,QAAQ,QAAQE,EAAE,QAAS,EAAI,EAC3CkH,EAAUpH,EAAE,QAAQ,QAAQkR,CAAO,GAEhC,CACH,QAAA9J,EACA,UAAWlH,EAAE,UAAYA,EAAE,UAAU,IAAIiR,CAAO,GAAKjG,EAAKlL,EAAE,aAAe,MAAQkL,IAAO,OAAS,OAASA,EAAG,IAAIgG,CAAO,EAC1H,QAAShB,EAAY,WAAWlQ,EAAE,QAASkR,CAAO,EAAE,OAAOhB,EAAY,WAAWhQ,EAAE,QAASiR,CAAO,CAAC,EACrG,YAAanR,EAAE,YAAY,OAASA,EAAE,YAAY,OAAOE,EAAE,WAAW,EAAIA,EAAE,YAC5E,eAAgBF,EAAE,gBAAkBE,EAAE,cAC1C,CACJ,CApBSd,EAAA4R,GAAA,oBAqBT,SAASI,GAAwBvG,EAAOpD,EAAM4J,EAAS,CACnD,IAAIC,EAAM7J,EAAK,UAAWkJ,EAAcY,GAAQ9J,EAAK,WAAW,EAChE,OAAIA,EAAK,YACLkJ,EAAcA,EAAY,OAAOH,GAAY,UAAU,GAAG/I,EAAK,SAAS,CAAC,GACtE,CACH,QAASA,EAAK,mBAAmBtB,GAAYsB,EAAK,QAC5CtB,GAAU,GAAGsB,EAAK,SAAW,CAAC,EAAG4J,EAASxG,EAAM,MAAM4E,EAAa,CAAC,EAC1E,UAAW6B,IAAQA,aAAevI,EAAkBuI,EAAMvI,EAAgB,OAAOuI,EAAI,OAAQA,EAAI,IAAI,GACrG,QAASC,GAAQ9J,EAAK,OAAO,EAC7B,YAAAkJ,EACA,eAAgB,CAAC,CAAClJ,EAAK,cAC3B,CACJ,CAZSrI,EAAAgS,GAAA,2BAaT,SAASI,GAAmB3G,EAAO4G,EAAOC,EAAQ,CAC9C,IAAIC,EAAIP,GAAwBvG,EAAO4G,EAAM,OAASA,EAAM,CAAC,EAAI,CAAC,EAAG5G,EAAM,IAAI,MAAM,EACjF4G,EAAM,QAAUA,EAAM,CAAC,EAAE,SAAW,KACpCC,EAAS,IACb,QAASzQ,EAAI,EAAGA,EAAIwQ,EAAM,OAAQxQ,IAAK,CAC/BwQ,EAAMxQ,CAAC,EAAE,SAAW,KACpByQ,EAAS,IACb,IAAIE,EAAM,CAAC,CAACH,EAAMxQ,CAAC,EAAE,WACrB0Q,EAAIX,GAAiBW,EAAGP,GAAwBvG,EAAO4G,EAAMxQ,CAAC,EAAG2Q,EAAMD,EAAE,QAAQ,UAAY9G,EAAM,IAAI,MAAM,EAAG+G,CAAG,CACvH,CACA,IAAIjG,EAAK6E,GAAY,OAAO3F,EAAO8G,EAAE,QAASA,EAAE,UAAWA,EAAE,QAASA,EAAE,YAAaA,EAAE,cAAc,EACrG,OAAOE,GAAkBH,EAASI,GAAkBnG,CAAE,EAAIA,CAAE,CAChE,CAZSvM,EAAAoS,GAAA,sBAcT,SAASM,GAAkBnG,EAAI,CAC3B,IAAId,EAAQc,EAAG,WAEX/J,EAAS,GACb,QAAS8P,KAAU7G,EAAM,MAAM6E,EAAY,EAAG,CAC1C,IAAIzL,EAAQyN,EAAO/F,CAAE,EACrB,GAAI1H,IAAU,GAAO,CACjBrC,EAAS,GACT,KACJ,CACI,MAAM,QAAQqC,CAAK,IACnBrC,EAASA,IAAW,GAAOqC,EAAQ8M,GAAWnP,EAAQqC,CAAK,EACnE,CACA,GAAIrC,IAAW,GAAM,CACjB,IAAIwF,EAAS2K,EACb,GAAInQ,IAAW,GACXmQ,EAAOpG,EAAG,QAAQ,aAClBvE,EAAUjB,GAAU,MAAM0E,EAAM,IAAI,MAAM,MAEzC,CACD,IAAImH,EAAWrG,EAAG,QAAQ,OAAO/J,CAAM,EACvCwF,EAAU4K,EAAS,QACnBD,EAAOC,EAAS,SAAS,QAAQA,EAAS,OAAO,EAAE,YACvD,CACArG,EAAK6E,GAAY,OAAO3F,EAAOzD,EAASuE,EAAG,WAAaA,EAAG,UAAU,IAAIoG,CAAI,EAAG7B,EAAY,WAAWvE,EAAG,QAASoG,CAAI,EAAGpG,EAAG,YAAaA,EAAG,cAAc,CAC/J,CAEA,IAAIsG,EAAUpH,EAAM,MAAM8E,EAAiB,EAC3C,QAAS1O,EAAIgR,EAAQ,OAAS,EAAGhR,GAAK,EAAGA,IAAK,CAC1C,IAAI+Q,EAAWC,EAAQhR,CAAC,EAAE0K,CAAE,EACxBqG,aAAoBxB,GACpB7E,EAAKqG,EACA,MAAM,QAAQA,CAAQ,GAAKA,EAAS,QAAU,GAAKA,EAAS,CAAC,YAAaxB,GAC/E7E,EAAKqG,EAAS,CAAC,EAEfrG,EAAK6F,GAAmB3G,EAAO0G,GAAQS,CAAQ,EAAG,EAAK,CAC/D,CACA,OAAOrG,CACX,CAtCSvM,EAAA0S,GAAA,qBAuCT,SAASD,GAAkBlG,EAAI,CAC3B,IAAId,EAAQc,EAAG,WAAYuG,EAAYrH,EAAM,MAAM+E,EAAmB,EAAGnI,EAAOkE,EAChF,QAAS1K,EAAIiR,EAAU,OAAS,EAAGjR,GAAK,EAAGA,IAAK,CAC5C,IAAIgO,EAAYiD,EAAUjR,CAAC,EAAE0K,CAAE,EAC3BsD,GAAa,OAAO,KAAKA,CAAS,EAAE,SACpCxH,EAAOuJ,GAAiBvJ,EAAM2J,GAAwBvG,EAAOoE,EAAWtD,EAAG,QAAQ,SAAS,EAAG,EAAI,EAC3G,CACA,OAAOlE,GAAQkE,EAAKA,EAAK6E,GAAY,OAAO3F,EAAOc,EAAG,QAASA,EAAG,UAAWlE,EAAK,QAASA,EAAK,YAAaA,EAAK,cAAc,CACpI,CARSrI,EAAAyS,GAAA,qBAST,IAAMM,GAAO,CAAC,EACd,SAASZ,GAAQtN,EAAO,CACpB,OAAOA,GAAS,KAAOkO,GAAO,MAAM,QAAQlO,CAAK,EAAIA,EAAQ,CAACA,CAAK,CACvE,CAFS7E,EAAAmS,GAAA,WAST,IAAIa,GAA6B,SAAUA,EAAc,CAIrD,OAAAA,EAAaA,EAAa,KAAU,CAAC,EAAI,OAIzCA,EAAaA,EAAa,MAAW,CAAC,EAAI,QAI1CA,EAAaA,EAAa,MAAW,CAAC,EAAI,QACvCA,CAAY,GAAGA,IAAiBA,EAAe,CAAC,EAAE,EACnDC,GAA6B,4GAC/BC,GACJ,GAAI,CACAA,GAAwB,IAAI,OAAO,gCAAiC,GAAG,CAC3E,MACU,CAAE,CACZ,SAASC,GAAYjO,EAAK,CACtB,GAAIgO,GACA,OAAOA,GAAS,KAAKhO,CAAG,EAC5B,QAASrD,EAAI,EAAGA,EAAIqD,EAAI,OAAQrD,IAAK,CACjC,IAAI6B,EAAKwB,EAAIrD,CAAC,EACd,GAAI,KAAK,KAAK6B,CAAE,GAAKA,EAAK,SAAWA,EAAG,YAAY,GAAKA,EAAG,YAAY,GAAKuP,GAA2B,KAAKvP,CAAE,GAC3G,MAAO,EACf,CACA,MAAO,EACX,CATS1D,EAAAmT,GAAA,eAUT,SAASC,GAAgBC,EAAW,CAChC,OAAQC,GAAS,CACb,GAAI,CAAC,KAAK,KAAKA,CAAI,EACf,OAAON,EAAa,MACxB,GAAIG,GAAYG,CAAI,EAChB,OAAON,EAAa,KACxB,QAASnR,EAAI,EAAGA,EAAIwR,EAAU,OAAQxR,IAClC,GAAIyR,EAAK,QAAQD,EAAUxR,CAAC,CAAC,EAAI,GAC7B,OAAOmR,EAAa,KAC5B,OAAOA,EAAa,KACxB,CACJ,CAXShT,EAAAoT,GAAA,mBAsBT,IAAMG,EAAN,MAAMC,CAAY,CAv9ElB,MAu9EkB,CAAAxT,EAAA,oBACd,YAIAkL,EAIAhE,EAIAsD,EAIA5B,EAAQ6K,EAAalH,EAAI,CACrB,KAAK,OAASrB,EACd,KAAK,IAAMhE,EACX,KAAK,UAAYsD,EACjB,KAAK,OAAS5B,EACd,KAAK,OAASsC,EAAO,eAAe,MAAM,EAC1C,KAAK,YAAcuI,EAGflH,IACAA,EAAG,OAAS,MAChB,QAAS1K,EAAI,EAAGA,EAAI,KAAK,OAAO,aAAa,OAAQA,IACjDsL,GAAW,KAAMtL,GAAK,CAAC,EAC3B,KAAK,YAAc,IACvB,CACA,MAAM0J,EAAOmI,EAAU,GAAM,CACzB,IAAIxG,EAAO,KAAK,OAAO,QAAQ3B,EAAM,EAAE,EACvC,GAAI2B,GAAQ,KAAM,CACd,GAAIwG,EACA,MAAM,IAAI,WAAW,oCAAoC,EAC7D,MACJ,CACA,OAAAvG,GAAW,KAAMD,CAAI,EACdJ,GAAQ,KAAMI,CAAI,CAC7B,CAgBA,UAAUmF,EAAO,CACb,OAAOD,GAAmB,KAAMC,EAAO,EAAI,CAC/C,CAIA,iBAAiB9F,EAAI,CACjB,IAAIoH,EAAO,KAAK,OAAQ,CAAE,KAAAxE,EAAM,aAAAC,CAAa,EAAIuE,EACjD,QAASxC,KAAU5E,EAAG,QACd4E,EAAO,GAAGvC,GAAY,WAAW,GAC7B+E,IACAvE,EAAe,IAAI,IACnBuE,EAAK,aAAa,QAAQ,CAACjG,EAAKkG,IAAQxE,EAAa,IAAIwE,EAAKlG,CAAG,CAAC,EAClEiG,EAAO,MAEXvE,EAAa,IAAI+B,EAAO,MAAM,YAAaA,EAAO,MAAM,SAAS,GAE5DA,EAAO,GAAGL,EAAY,WAAW,GACtC6C,EAAO,KACPxE,EAAOgC,EAAO,OAETA,EAAO,GAAGL,EAAY,YAAY,IACvC6C,EAAO,KACPxE,EAAOgD,GAAQhD,CAAI,EAAE,OAAOgC,EAAO,KAAK,GAGhD,IAAI0C,EACCF,EAMDE,EAActH,EAAG,WAAW,OAAO,MAAM,GALzCoH,EAAO1E,GAAc,QAAQE,EAAMC,EAAc,IAAI,EAErDyE,EADwB,IAAIL,EAAYG,EAAM,KAAK,IAAK,KAAK,UAAWA,EAAK,aAAa,IAAI,IAAM,IAAI,EAAG,CAAClI,EAAOqI,IAASA,EAAK,YAAYrI,EAAO,IAAI,EAAG,IAAI,EAC/H,QAKpC,IAAIjB,EAAY+B,EAAG,WAAW,MAAM4D,EAAuB,EAAI5D,EAAG,aAAeA,EAAG,aAAa,SAAS,EAC1G,IAAIiH,EAAYG,EAAMpH,EAAG,OAAQ/B,EAAWqJ,EAAa,CAACpI,EAAOqI,IAASA,EAAK,OAAOrI,EAAOc,CAAE,EAAGA,CAAE,CACxG,CAKA,iBAAiBlM,EAAM,CACnB,OAAI,OAAOA,GAAQ,WACfA,EAAO,KAAK,OAAOA,CAAI,GACpB,KAAK,cAAc4J,IAAU,CAAE,QAAS,CAAE,KAAMA,EAAM,KAAM,GAAIA,EAAM,GAAI,OAAQ5J,CAAK,EAC1F,MAAOsJ,EAAgB,OAAOM,EAAM,KAAO5J,EAAK,MAAM,CAAE,EAAE,CAClE,CAYA,cAAc8F,EAAG,CACb,IAAI+L,EAAM,KAAK,UACX6B,EAAU5N,EAAE+L,EAAI,OAAO,CAAC,CAAC,EACzBlK,EAAU,KAAK,QAAQ+L,EAAQ,OAAO,EAAGvM,EAAS,CAACuM,EAAQ,KAAK,EAChE7C,EAAUiB,GAAQ4B,EAAQ,OAAO,EACrC,QAASlS,EAAI,EAAGA,EAAIqQ,EAAI,OAAO,OAAQrQ,IAAK,CACxC,IAAIW,EAAS2D,EAAE+L,EAAI,OAAOrQ,CAAC,CAAC,EACxBmS,EAAa,KAAK,QAAQxR,EAAO,OAAO,EAAGyR,EAAYD,EAAW,IAAIhM,CAAO,EACjF,QAASkM,EAAI,EAAGA,EAAIrS,EAAGqS,IACnB1M,EAAO0M,CAAC,EAAI1M,EAAO0M,CAAC,EAAE,IAAID,CAAS,EACvC,IAAIE,EAAQnM,EAAQ,QAAQgM,EAAY,EAAI,EAC5CxM,EAAO,KAAKhF,EAAO,MAAM,IAAI2R,CAAK,CAAC,EACnCnM,EAAUA,EAAQ,QAAQiM,CAAS,EACnC/C,EAAUJ,EAAY,WAAWI,EAAS+C,CAAS,EAAE,OAAOnD,EAAY,WAAWqB,GAAQ3P,EAAO,OAAO,EAAG2R,CAAK,CAAC,CACtH,CACA,MAAO,CACH,QAAAnM,EACA,UAAW2B,EAAgB,OAAOnC,EAAQ0K,EAAI,SAAS,EACvD,QAAAhB,CACJ,CACJ,CAMA,QAAQ7I,EAAO,CAAC,EAAG,CACf,OAAIA,aAAgBtB,GACTsB,EACJtB,GAAU,GAAGsB,EAAM,KAAK,IAAI,OAAQ,KAAK,MAAMmL,EAAY,aAAa,CAAC,CACpF,CAMA,OAAO1R,EAAQ,CACX,OAAOhC,EAAK,GAAGgC,EAAO,MAAM,KAAK,MAAM0R,EAAY,aAAa,GAAK3N,EAAY,CAAC,CACtF,CAIA,SAAS1F,EAAO,EAAGC,EAAK,KAAK,IAAI,OAAQ,CACrC,OAAO,KAAK,IAAI,YAAYD,EAAMC,EAAI,KAAK,SAAS,CACxD,CAIA,MAAMuL,EAAO,CACT,IAAIuB,EAAO,KAAK,OAAO,QAAQvB,EAAM,EAAE,EACvC,OAAIuB,GAAQ,KACDvB,EAAM,SACjBwB,GAAW,KAAMD,CAAI,EACdJ,GAAQ,KAAMI,CAAI,EAC7B,CAOA,OAAOuC,EAAQ,CACX,IAAIjN,EAAS,CACT,IAAK,KAAK,SAAS,EACnB,UAAW,KAAK,UAAU,OAAO,CACrC,EACA,GAAIiN,EACA,QAAS2E,KAAQ3E,EAAQ,CACrB,IAAI5K,EAAQ4K,EAAO2E,CAAI,EACnBvP,aAAiBkI,IAAc,KAAK,OAAO,QAAQlI,EAAM,EAAE,GAAK,OAChErC,EAAO4R,CAAI,EAAIvP,EAAM,KAAK,OAAO,KAAK,MAAM4K,EAAO2E,CAAI,CAAC,EAAG,IAAI,EACvE,CACJ,OAAO5R,CACX,CAOA,OAAO,SAASsE,EAAMoE,EAAS,CAAC,EAAGuE,EAAQ,CACvC,GAAI,CAAC3I,GAAQ,OAAOA,EAAK,KAAO,SAC5B,MAAM,IAAI,WAAW,6CAA6C,EACtE,IAAIuN,EAAY,CAAC,EACjB,GAAI5E,GACA,QAAS2E,KAAQ3E,EACb,GAAI,OAAO,UAAU,eAAe,KAAK3I,EAAMsN,CAAI,EAAG,CAClD,IAAI7I,EAAQkE,EAAO2E,CAAI,EAAGvP,EAAQiC,EAAKsN,CAAI,EAC3CC,EAAU,KAAK9I,EAAM,KAAKE,GAASF,EAAM,KAAK,SAAS1G,EAAO4G,CAAK,CAAC,CAAC,CACzE,EAER,OAAO+H,EAAY,OAAO,CACtB,IAAK1M,EAAK,IACV,UAAW6C,EAAgB,SAAS7C,EAAK,SAAS,EAClD,WAAYoE,EAAO,WAAamJ,EAAU,OAAO,CAACnJ,EAAO,UAAU,CAAC,EAAImJ,CAC5E,CAAC,CACL,CAMA,OAAO,OAAOnJ,EAAS,CAAC,EAAG,CACvB,IAAIoJ,EAAgBrF,GAAc,QAAQ/D,EAAO,YAAc,CAAC,EAAG,IAAI,GAAG,EACtEhE,EAAMgE,EAAO,eAAepL,EAAOoL,EAAO,IACxCpL,EAAK,IAAIoL,EAAO,KAAO,IAAI,MAAMoJ,EAAc,YAAYd,EAAY,aAAa,GAAK3N,EAAY,CAAC,EACxG2E,EAAaU,EAAO,UAClBA,EAAO,qBAAqBvB,EAAkBuB,EAAO,UACjDvB,EAAgB,OAAOuB,EAAO,UAAU,OAAQA,EAAO,UAAU,IAAI,EAF3CvB,EAAgB,OAAO,CAAC,EAG5D,OAAAY,GAAeC,EAAWtD,EAAI,MAAM,EAC/BoN,EAAc,YAAYnE,EAAuB,IAClD3F,EAAYA,EAAU,SAAS,GAC5B,IAAIgJ,EAAYc,EAAepN,EAAKsD,EAAW8J,EAAc,aAAa,IAAI,IAAM,IAAI,EAAG,CAAC7I,EAAOqI,IAASA,EAAK,OAAOrI,CAAK,EAAG,IAAI,CAC/I,CAKA,IAAI,SAAU,CAAE,OAAO,KAAK,MAAM+H,EAAY,OAAO,CAAG,CAKxD,IAAI,WAAY,CAAE,OAAO,KAAK,MAAMA,EAAY,aAAa,GAAK;AAAA,CAAM,CAKxE,IAAI,UAAW,CAAE,OAAO,KAAK,MAAM/C,EAAQ,CAAG,CAW9C,OAAO8D,KAAWhM,EAAQ,CACtB,QAASsI,KAAO,KAAK,MAAM2C,EAAY,OAAO,EAC1C,GAAI,OAAO,UAAU,eAAe,KAAK3C,EAAK0D,CAAM,EAAG,CACnDA,EAAS1D,EAAI0D,CAAM,EACnB,KACJ,CACJ,OAAIhM,EAAO,SACPgM,EAASA,EAAO,QAAQ,cAAe,CAACC,EAAG3S,IAAM,CAC7C,GAAIA,GAAK,IACL,MAAO,IACX,IAAI3B,EAAI,EAAE2B,GAAK,GACf,MAAO,CAAC3B,GAAKA,EAAIqI,EAAO,OAASiM,EAAIjM,EAAOrI,EAAI,CAAC,CACrD,CAAC,GACEqU,CACX,CAiBA,eAAeE,EAAMxU,EAAKyU,EAAO,GAAI,CACjC,IAAI9L,EAAS,CAAC,EACd,QAAS+L,KAAY,KAAK,MAAMzE,EAAY,EACxC,QAAS1N,KAAUmS,EAAS,KAAM1U,EAAKyU,CAAI,EACnC,OAAO,UAAU,eAAe,KAAKlS,EAAQiS,CAAI,GACjD7L,EAAO,KAAKpG,EAAOiS,CAAI,CAAC,EAGpC,OAAO7L,CACX,CAYA,gBAAgBgM,EAAI,CAChB,IAAIC,EAAQ,KAAK,eAAe,YAAaD,CAAE,EAC/C,OAAOxB,GAAgByB,EAAM,OAASA,EAAM,CAAC,EAAI,EAAE,CACvD,CAOA,OAAO5U,EAAK,CACR,GAAI,CAAE,KAAAI,EAAM,KAAAF,EAAM,OAAAoB,CAAO,EAAI,KAAK,IAAI,OAAOtB,CAAG,EAC5C6U,EAAM,KAAK,gBAAgB7U,CAAG,EAC9BS,EAAQT,EAAME,EAAMQ,EAAMV,EAAME,EACpC,KAAOO,EAAQ,GAAG,CACd,IAAIwB,EAAO+C,GAAiB5E,EAAMK,EAAO,EAAK,EAC9C,GAAIoU,EAAIzU,EAAK,MAAM6B,EAAMxB,CAAK,CAAC,GAAKsS,EAAa,KAC7C,MACJtS,EAAQwB,CACZ,CACA,KAAOvB,EAAMY,GAAQ,CACjB,IAAIoD,EAAOM,GAAiB5E,EAAMM,CAAG,EACrC,GAAImU,EAAIzU,EAAK,MAAMM,EAAKgE,CAAI,CAAC,GAAKqO,EAAa,KAC3C,MACJrS,EAAMgE,CACV,CACA,OAAOjE,GAASC,EAAM,KAAOgJ,EAAgB,MAAMjJ,EAAQP,EAAMQ,EAAMR,CAAI,CAC/E,CACJ,EASAoT,EAAY,wBAA0BpD,GAMtCoD,EAAY,QAAuB5I,EAAM,OAAO,CAC5C,QAAS3K,EAAA4I,GAAUA,EAAO,OAASA,EAAO,CAAC,EAAI,EAAtC,UACb,CAAC,EAUD2K,EAAY,cAAgBlD,GAc5BkD,EAAY,SAAW9C,GAOvB8C,EAAY,QAAuB5I,EAAM,OAAO,CAC5C,QAAQ/J,EAAGE,EAAG,CACV,IAAIiU,EAAK,OAAO,KAAKnU,CAAC,EAAGoU,EAAK,OAAO,KAAKlU,CAAC,EAC3C,OAAOiU,EAAG,QAAUC,EAAG,QAAUD,EAAG,MAAME,GAAKrU,EAAEqU,CAAC,GAAKnU,EAAEmU,CAAC,CAAC,CAC/D,CACJ,CAAC,EAKD1B,EAAY,aAAerD,GAe3BqD,EAAY,aAAejD,GAoB3BiD,EAAY,kBAAoBhD,GAchCgD,EAAY,oBAAsB/C,GAClC5B,GAAY,YAA2BkC,EAAY,OAAO,EAW1D,SAASoE,GAAcC,EAASC,EAChCvK,EAAU,CAAC,EAAG,CACV,IAAIrI,EAAS,CAAC,EACd,QAAS0I,KAAUiK,EACf,QAASvB,KAAO,OAAO,KAAK1I,CAAM,EAAG,CACjC,IAAIrG,EAAQqG,EAAO0I,CAAG,EAAGyB,EAAU7S,EAAOoR,CAAG,EAC7C,GAAIyB,IAAY,OACZ7S,EAAOoR,CAAG,EAAI/O,UACT,EAAAwQ,IAAYxQ,GAASA,IAAU,QACnC,GAAI,OAAO,eAAe,KAAKgG,EAAS+I,CAAG,EAC5CpR,EAAOoR,CAAG,EAAI/I,EAAQ+I,CAAG,EAAEyB,EAASxQ,CAAK,MAEzC,OAAM,IAAI,MAAM,mCAAqC+O,CAAG,CAChE,CACJ,QAASA,KAAOwB,EACR5S,EAAOoR,CAAG,IAAM,SAChBpR,EAAOoR,CAAG,EAAIwB,EAASxB,CAAG,GAClC,OAAOpR,CACX,CAlBSxC,EAAAkV,GAAA,iBAwBT,IAAMI,GAAN,KAAiB,CAr7FjB,MAq7FiB,CAAAtV,EAAA,mBAQb,GAAGS,EAAO,CAAE,OAAO,MAAQA,CAAO,CAIlC,MAAMN,EAAMC,EAAKD,EAAM,CAAE,OAAOoV,GAAM,OAAOpV,EAAMC,EAAI,IAAI,CAAG,CAClE,EACAkV,GAAW,UAAU,UAAYA,GAAW,UAAU,QAAU,EAChEA,GAAW,UAAU,MAAQ,GAC7BA,GAAW,UAAU,QAAUxP,GAAQ,SACvC,SAAS0P,GAAO5U,EAAGE,EAAG,CAClB,OAAOF,GAAKE,GAAKF,EAAE,aAAeE,EAAE,aAAeF,EAAE,GAAGE,CAAC,CAC7D,CAFSd,EAAAwV,GAAA,UAMT,IAAMD,GAAN,MAAME,CAAM,CA58FZ,MA48FY,CAAAzV,EAAA,cACR,YAIAG,EAIAC,EAIAyE,EAAO,CACH,KAAK,KAAO1E,EACZ,KAAK,GAAKC,EACV,KAAK,MAAQyE,CACjB,CAIA,OAAO,OAAO1E,EAAMC,EAAIyE,EAAO,CAC3B,OAAO,IAAI4Q,EAAMtV,EAAMC,EAAIyE,CAAK,CACpC,CACJ,EACA,SAAS6Q,GAAS9U,EAAGE,EAAG,CACpB,OAAOF,EAAE,KAAOE,EAAE,MAAQF,EAAE,MAAM,UAAYE,EAAE,MAAM,SAC1D,CAFSd,EAAA0V,GAAA,YAGT,IAAMC,GAAN,MAAMC,CAAM,CAx+FZ,MAw+FY,CAAA5V,EAAA,cACR,YAAYG,EAAMC,EAAIyE,EAKtBgR,EAAU,CACN,KAAK,KAAO1V,EACZ,KAAK,GAAKC,EACV,KAAK,MAAQyE,EACb,KAAK,SAAWgR,CACpB,CACA,IAAI,QAAS,CAAE,OAAO,KAAK,GAAG,KAAK,GAAG,OAAS,CAAC,CAAG,CAGnD,UAAU5V,EAAKyU,EAAM/T,EAAKmV,EAAU,EAAG,CACnC,IAAIC,EAAMpV,EAAM,KAAK,GAAK,KAAK,KAC/B,QAASqV,EAAKF,EAASG,EAAKF,EAAI,SAAU,CACtC,GAAIC,GAAMC,EACN,OAAOD,EACX,IAAI3T,EAAO2T,EAAKC,GAAO,EACnBC,EAAOH,EAAI1T,CAAG,EAAIpC,IAAQU,EAAM,KAAK,MAAM0B,CAAG,EAAE,QAAU,KAAK,MAAMA,CAAG,EAAE,WAAaqS,EAC3F,GAAIrS,GAAO2T,EACP,OAAOE,GAAQ,EAAIF,EAAKC,EACxBC,GAAQ,EACRD,EAAK5T,EAEL2T,EAAK3T,EAAM,CACnB,CACJ,CACA,QAAQT,EAAQzB,EAAMC,EAAI+F,EAAG,CACzB,QAAStE,EAAI,KAAK,UAAU1B,EAAM,KAAyB,EAAI,EAAGuI,EAAI,KAAK,UAAUtI,EAAI,IAAwB,GAAOyB,CAAC,EAAGA,EAAI6G,EAAG7G,IAC/H,GAAIsE,EAAE,KAAK,KAAKtE,CAAC,EAAID,EAAQ,KAAK,GAAGC,CAAC,EAAID,EAAQ,KAAK,MAAMC,CAAC,CAAC,IAAM,GACjE,MAAO,EACnB,CACA,IAAID,EAAQoG,EAAS,CACjB,IAAInD,EAAQ,CAAC,EAAG1E,EAAO,CAAC,EAAGC,EAAK,CAAC,EAAG+V,EAAS,GAAIN,EAAW,GAC5D,QAAShU,EAAI,EAAGA,EAAI,KAAK,MAAM,OAAQA,IAAK,CACxC,IAAI6L,EAAM,KAAK,MAAM7L,CAAC,EAAGuU,EAAU,KAAK,KAAKvU,CAAC,EAAID,EAAQyU,EAAQ,KAAK,GAAGxU,CAAC,EAAID,EAAQ0U,EAASC,EAChG,GAAIH,GAAWC,EAAO,CAClB,IAAIpF,EAASjJ,EAAQ,OAAOoO,EAAS1I,EAAI,UAAWA,EAAI,OAAO,EAI/D,GAHIuD,GAAU,OAEdqF,EAAUC,EAAQtF,EACdvD,EAAI,WAAaA,EAAI,UACrB6I,EAAQvO,EAAQ,OAAOoO,EAAS1I,EAAI,OAAO,EACvC6I,EAAQD,IACR,QAEZ,SAEIA,EAAUtO,EAAQ,OAAOoO,EAAS1I,EAAI,SAAS,EAC/C6I,EAAQvO,EAAQ,OAAOqO,EAAO3I,EAAI,OAAO,EACrC4I,EAAUC,GAASD,GAAWC,GAAS7I,EAAI,UAAY,GAAKA,EAAI,SAAW,EAC3E,UAEH6I,EAAQD,GAAW5I,EAAI,QAAUA,EAAI,WAAa,IAEnDyI,EAAS,IACTA,EAASG,GACT5I,EAAI,QACJmI,EAAW,KAAK,IAAIA,EAAUU,EAAQD,CAAO,GACjDzR,EAAM,KAAK6I,CAAG,EACdvN,EAAK,KAAKmW,EAAUH,CAAM,EAC1B/V,EAAG,KAAKmW,EAAQJ,CAAM,EAC1B,CACA,MAAO,CAAE,OAAQtR,EAAM,OAAS,IAAI+Q,EAAMzV,EAAMC,EAAIyE,EAAOgR,CAAQ,EAAI,KAAM,IAAKM,CAAO,CAC7F,CACJ,EAOMK,EAAN,MAAMC,CAAS,CAnjGf,MAmjGe,CAAAzW,EAAA,iBACX,YAIA0W,EAIA9S,EAIA+S,EAIAd,EAAU,CACN,KAAK,SAAWa,EAChB,KAAK,MAAQ9S,EACb,KAAK,UAAY+S,EACjB,KAAK,SAAWd,CACpB,CAIA,OAAO,OAAOa,EAAU9S,EAAO+S,EAAWd,EAAU,CAChD,OAAO,IAAIY,EAASC,EAAU9S,EAAO+S,EAAWd,CAAQ,CAC5D,CAIA,IAAI,QAAS,CACT,IAAIzR,EAAO,KAAK,MAAM,OAAS,EAC/B,OAAOA,EAAO,EAAI,EAAI,KAAK,IAAI,KAAK,SAASA,CAAI,EAAG,KAAK,UAAU,MAAM,CAC7E,CAIA,IAAI,MAAO,CACP,GAAI,KAAK,QACL,MAAO,GACX,IAAIM,EAAO,KAAK,UAAU,KAC1B,QAASd,KAAS,KAAK,MACnBc,GAAQd,EAAM,MAAM,OACxB,OAAOc,CACX,CAIA,SAAS6C,EAAO,CACZ,OAAO,KAAK,SAASA,CAAK,EAAI,KAAK,MAAMA,CAAK,EAAE,MACpD,CAUA,OAAOqP,EAAY,CACf,GAAI,CAAE,IAAAzS,EAAM,CAAC,EAAG,KAAA0S,EAAO,GAAO,WAAAC,EAAa,EAAG,SAAAC,EAAW,KAAK,MAAO,EAAIH,EACrEtE,EAASsE,EAAW,OACxB,GAAIzS,EAAI,QAAU,GAAK,CAACmO,EACpB,OAAO,KAGX,GAFIuE,IACA1S,EAAMA,EAAI,MAAM,EAAE,KAAKuR,EAAQ,GAC/B,KAAK,QACL,OAAOvR,EAAI,OAASsS,EAAS,GAAGtS,CAAG,EAAI,KAC3C,IAAI6S,EAAM,IAAIC,GAAY,KAAM,KAAM,EAAE,EAAE,KAAK,CAAC,EAAGpV,EAAI,EAAGqV,EAAQ,CAAC,EAC/DC,EAAU,IAAIC,GAClB,KAAOJ,EAAI,OAASnV,EAAIsC,EAAI,QACxB,GAAItC,EAAIsC,EAAI,SAAW6S,EAAI,KAAO7S,EAAItC,CAAC,EAAE,MAAQmV,EAAI,UAAY7S,EAAItC,CAAC,EAAE,MAAM,YAAc,EAAG,CAC3F,IAAIoI,EAAQ9F,EAAItC,GAAG,EACdsV,EAAQ,SAASlN,EAAM,KAAMA,EAAM,GAAIA,EAAM,KAAK,GACnDiN,EAAM,KAAKjN,CAAK,CACxB,MACS+M,EAAI,YAAc,GAAKA,EAAI,WAAa,KAAK,MAAM,SACvDnV,GAAKsC,EAAI,QAAU,KAAK,SAAS6S,EAAI,UAAU,EAAI7S,EAAItC,CAAC,EAAE,QAC1D,CAACyQ,GAAUwE,EAAa,KAAK,SAASE,EAAI,UAAU,GAAKD,EAAW,KAAK,SAASC,EAAI,UAAU,IACjGG,EAAQ,SAAS,KAAK,SAASH,EAAI,UAAU,EAAG,KAAK,MAAMA,EAAI,UAAU,CAAC,EAC1EA,EAAI,UAAU,IAGV,CAAC1E,GAAUwE,EAAaE,EAAI,IAAMD,EAAWC,EAAI,MAAQ1E,EAAO0E,EAAI,KAAMA,EAAI,GAAIA,EAAI,KAAK,KACtFG,EAAQ,SAASH,EAAI,KAAMA,EAAI,GAAIA,EAAI,KAAK,GAC7CE,EAAM,KAAK3B,GAAM,OAAOyB,EAAI,KAAMA,EAAI,GAAIA,EAAI,KAAK,CAAC,GAE5DA,EAAI,KAAK,GAGjB,OAAOG,EAAQ,YAAY,KAAK,UAAU,SAAW,CAACD,EAAM,OAAST,EAAS,MACxE,KAAK,UAAU,OAAO,CAAE,IAAKS,EAAO,OAAA5E,EAAQ,WAAAwE,EAAY,SAAAC,CAAS,CAAC,CAAC,CAC7E,CAIA,IAAI/O,EAAS,CACT,GAAIA,EAAQ,OAAS,KAAK,QACtB,OAAO,KACX,IAAIqP,EAAS,CAAC,EAAGX,EAAW,CAAC,EAAGb,EAAW,GAC3C,QAAShU,EAAI,EAAGA,EAAI,KAAK,MAAM,OAAQA,IAAK,CACxC,IAAInB,EAAQ,KAAK,SAASmB,CAAC,EAAG+B,EAAQ,KAAK,MAAM/B,CAAC,EAC9CyV,EAAQtP,EAAQ,aAAatH,EAAOA,EAAQkD,EAAM,MAAM,EAC5D,GAAI0T,IAAU,GACVzB,EAAW,KAAK,IAAIA,EAAUjS,EAAM,QAAQ,EAC5CyT,EAAO,KAAKzT,CAAK,EACjB8S,EAAS,KAAK1O,EAAQ,OAAOtH,CAAK,CAAC,UAE9B4W,IAAU,GAAM,CACrB,GAAI,CAAE,OAAArG,EAAQ,IAAAhR,CAAI,EAAI2D,EAAM,IAAIlD,EAAOsH,CAAO,EAC1CiJ,IACA4E,EAAW,KAAK,IAAIA,EAAU5E,EAAO,QAAQ,EAC7CoG,EAAO,KAAKpG,CAAM,EAClByF,EAAS,KAAKzW,CAAG,EAEzB,CACJ,CACA,IAAI0E,EAAO,KAAK,UAAU,IAAIqD,CAAO,EACrC,OAAOqP,EAAO,QAAU,EAAI1S,EAAO,IAAI8R,EAASC,EAAUW,EAAQ1S,GAAQ8R,EAAS,MAAOZ,CAAQ,CACtG,CAOA,QAAQ1V,EAAMC,EAAI+F,EAAG,CACjB,GAAI,MAAK,QAET,SAAStE,EAAI,EAAGA,EAAI,KAAK,MAAM,OAAQA,IAAK,CACxC,IAAInB,EAAQ,KAAK,SAASmB,CAAC,EAAG+B,EAAQ,KAAK,MAAM/B,CAAC,EAClD,GAAIzB,GAAMM,GAASP,GAAQO,EAAQkD,EAAM,QACrCA,EAAM,QAAQlD,EAAOP,EAAOO,EAAON,EAAKM,EAAOyF,CAAC,IAAM,GACtD,MACR,CACA,KAAK,UAAU,QAAQhG,EAAMC,EAAI+F,CAAC,EACtC,CAKA,KAAKhG,EAAO,EAAG,CACX,OAAOoX,GAAW,KAAK,CAAC,IAAI,CAAC,EAAE,KAAKpX,CAAI,CAC5C,CAIA,IAAI,SAAU,CAAE,OAAO,KAAK,WAAa,IAAM,CAK/C,OAAO,KAAKqX,EAAMrX,EAAO,EAAG,CACxB,OAAOoX,GAAW,KAAKC,CAAI,EAAE,KAAKrX,CAAI,CAC1C,CAKA,OAAO,QAAQsX,EAASC,EAKxBC,EAAUC,EAKVC,EAAe,GAAI,CACf,IAAIjX,EAAI6W,EAAQ,OAAOtP,GAAOA,EAAI,SAAW,GAAK,CAACA,EAAI,SAAWA,EAAI,UAAY0P,CAAY,EAC1F/W,EAAI4W,EAAQ,OAAOvP,GAAOA,EAAI,SAAW,GAAK,CAACA,EAAI,SAAWA,EAAI,UAAY0P,CAAY,EAC1FC,EAAeC,GAAiBnX,EAAGE,EAAG6W,CAAQ,EAC9CK,EAAQ,IAAIC,GAAWrX,EAAGkX,EAAcD,CAAY,EACpDK,EAAQ,IAAID,GAAWnX,EAAGgX,EAAcD,CAAY,EACxDF,EAAS,SAAS,CAACxQ,EAAOE,EAAO9F,IAAWwJ,GAAQiN,EAAO7Q,EAAO+Q,EAAO7Q,EAAO9F,EAAQqW,CAAU,CAAC,EAC/FD,EAAS,OAASA,EAAS,QAAU,GACrC5M,GAAQiN,EAAO,EAAGE,EAAO,EAAG,EAAGN,CAAU,CACjD,CAKA,OAAO,GAAGH,EAASC,EAASvX,EAAO,EAAGC,EAAI,CAClCA,GAAM,OACNA,EAAK,WACT,IAAIQ,EAAI6W,EAAQ,OAAOtP,GAAO,CAACA,EAAI,SAAWuP,EAAQ,QAAQvP,CAAG,EAAI,CAAC,EAClErH,EAAI4W,EAAQ,OAAOvP,GAAO,CAACA,EAAI,SAAWsP,EAAQ,QAAQtP,CAAG,EAAI,CAAC,EACtE,GAAIvH,EAAE,QAAUE,EAAE,OACd,MAAO,GACX,GAAI,CAACF,EAAE,OACH,MAAO,GACX,IAAIkX,EAAeC,GAAiBnX,EAAGE,CAAC,EACpCkX,EAAQ,IAAIC,GAAWrX,EAAGkX,EAAc,CAAC,EAAE,KAAK3X,CAAI,EAAG+X,EAAQ,IAAID,GAAWnX,EAAGgX,EAAc,CAAC,EAAE,KAAK3X,CAAI,EAC/G,OAAS,CACL,GAAI6X,EAAM,IAAME,EAAM,IAClB,CAACC,GAAWH,EAAM,OAAQE,EAAM,MAAM,GACtCF,EAAM,QAAU,CAACE,EAAM,OAAS,CAAC1C,GAAOwC,EAAM,MAAOE,EAAM,KAAK,GAChE,MAAO,GACX,GAAIF,EAAM,GAAK5X,EACX,MAAO,GACX4X,EAAM,KAAK,EACXE,EAAM,KAAK,CACf,CACJ,CAQA,OAAO,MAAMV,EAAMrX,EAAMC,EAAIgY,EAK7BP,EAAe,GAAI,CACf,IAAIQ,EAAS,IAAIJ,GAAWT,EAAM,KAAMK,CAAY,EAAE,KAAK1X,CAAI,EAAGF,EAAME,EACpEmY,EAAaD,EAAO,UACxB,OAAS,CACL,IAAIhC,EAAQ,KAAK,IAAIgC,EAAO,GAAIjY,CAAE,EAClC,GAAIiY,EAAO,MAAO,CACd,IAAIE,EAASF,EAAO,eAAeA,EAAO,EAAE,EACxCG,EAAYH,EAAO,UAAYlY,EAAOoY,EAAO,OAAS,EACpDF,EAAO,MAAM,UAAY,EAAIE,EAAO,OAChC,KAAK,IAAIA,EAAO,OAAQD,CAAU,EAC5CF,EAAS,MAAMnY,EAAKoW,EAAOgC,EAAO,MAAOE,EAAQC,EAAWH,EAAO,SAAS,EAC5EC,EAAa,KAAK,IAAID,EAAO,QAAQhC,CAAK,EAAGkC,EAAO,MAAM,CAC9D,MACSlC,EAAQpW,IACbmY,EAAS,KAAKnY,EAAKoW,EAAOgC,EAAO,OAAQC,CAAU,EACnDA,EAAaD,EAAO,QAAQhC,CAAK,GAErC,GAAIgC,EAAO,GAAKjY,EACZ,OAAOkY,GAAcD,EAAO,OAASA,EAAO,GAAKjY,EAAK,EAAI,GAC9DH,EAAMoY,EAAO,GACbA,EAAO,KAAK,CAChB,CACJ,CAQA,OAAO,GAAG7Q,EAAQqP,EAAO,GAAO,CAC5B,IAAI4B,EAAQ,IAAIrB,GAChB,QAASnN,KAASzC,aAAkB+N,GAAQ,CAAC/N,CAAM,EAAIqP,EAAO6B,GAASlR,CAAM,EAAIA,EAC7EiR,EAAM,IAAIxO,EAAM,KAAMA,EAAM,GAAIA,EAAM,KAAK,EAC/C,OAAOwO,EAAM,OAAO,CACxB,CAIA,OAAO,KAAKjB,EAAM,CACd,GAAI,CAACA,EAAK,OACN,OAAOf,EAAS,MACpB,IAAIjU,EAASgV,EAAKA,EAAK,OAAS,CAAC,EACjC,QAAS,EAAIA,EAAK,OAAS,EAAG,GAAK,EAAG,IAClC,QAASmB,EAAQnB,EAAK,CAAC,EAAGmB,GAASlC,EAAS,MAAOkC,EAAQA,EAAM,UAC7DnW,EAAS,IAAIiU,EAASkC,EAAM,SAAUA,EAAM,MAAOnW,EAAQ,KAAK,IAAImW,EAAM,SAAUnW,EAAO,QAAQ,CAAC,EAE5G,OAAOA,CACX,CACJ,EAIAgU,EAAS,MAAqB,IAAIA,EAAS,CAAC,EAAG,CAAC,EAAG,KAAM,EAAE,EAC3D,SAASkC,GAASlR,EAAQ,CACtB,GAAIA,EAAO,OAAS,EAChB,QAAStF,EAAOsF,EAAO,CAAC,EAAG3F,EAAI,EAAGA,EAAI2F,EAAO,OAAQ3F,IAAK,CACtD,IAAImV,EAAMxP,EAAO3F,CAAC,EAClB,GAAI6T,GAASxT,EAAM8U,CAAG,EAAI,EACtB,OAAOxP,EAAO,MAAM,EAAE,KAAKkO,EAAQ,EACvCxT,EAAO8U,CACX,CACJ,OAAOxP,CACX,CATSxH,EAAA0Y,GAAA,YAUTlC,EAAS,MAAM,UAAYA,EAAS,MAMpC,IAAMY,GAAN,MAAMwB,CAAgB,CAr1GtB,MAq1GsB,CAAA5Y,EAAA,wBAClB,YAAY6Y,EAAW,CACnB,KAAK,OAAO,KAAK,IAAIlD,GAAM,KAAK,KAAM,KAAK,GAAI,KAAK,MAAO,KAAK,QAAQ,CAAC,EACzE,KAAK,SAAS,KAAK,KAAK,UAAU,EAClC,KAAK,WAAa,GAClB,KAAK,YAAc,KAAK,IAAI,KAAK,YAAa,KAAK,QAAQ,EAC3D,KAAK,SAAW,GACZkD,IACA,KAAK,KAAO,CAAC,EACb,KAAK,GAAK,CAAC,EACX,KAAK,MAAQ,CAAC,EAEtB,CAIA,aAAc,CACV,KAAK,OAAS,CAAC,EACf,KAAK,SAAW,CAAC,EACjB,KAAK,WAAa,GAClB,KAAK,KAAO,KACZ,KAAK,SAAW,KAChB,KAAK,OAAS,KACd,KAAK,KAAO,CAAC,EACb,KAAK,GAAK,CAAC,EACX,KAAK,MAAQ,CAAC,EACd,KAAK,SAAW,GAChB,KAAK,YAAc,GACnB,KAAK,UAAY,IACrB,CAKA,IAAI1Y,EAAMC,EAAIyE,EAAO,CACZ,KAAK,SAAS1E,EAAMC,EAAIyE,CAAK,IAC7B,KAAK,YAAc,KAAK,UAAY,IAAI+T,IAAkB,IAAIzY,EAAMC,EAAIyE,CAAK,CACtF,CAIA,SAAS1E,EAAMC,EAAIyE,EAAO,CACtB,IAAIqR,EAAO/V,EAAO,KAAK,QAAU0E,EAAM,UAAY,KAAK,KAAK,QAC7D,GAAIqR,GAAQ,IAAM/V,EAAO,KAAK,UAAY0E,EAAM,UAAY,KAAK,KAAK,WAAa,EAC/E,MAAM,IAAI,MAAM,gEAAgE,EACpF,OAAIqR,EAAO,EACA,IACP,KAAK,KAAK,QAAU,KACpB,KAAK,YAAY,EAAI,EACrB,KAAK,WAAa,IAClB,KAAK,WAAa/V,GACtB,KAAK,KAAK,KAAKA,EAAO,KAAK,UAAU,EACrC,KAAK,GAAG,KAAKC,EAAK,KAAK,UAAU,EACjC,KAAK,KAAOyE,EACZ,KAAK,SAAW1E,EAChB,KAAK,OAASC,EACd,KAAK,MAAM,KAAKyE,CAAK,EACjBA,EAAM,QACN,KAAK,SAAW,KAAK,IAAI,KAAK,SAAUzE,EAAKD,CAAI,GAC9C,GACX,CAIA,SAASA,EAAMyD,EAAO,CAClB,IAAKzD,EAAO,KAAK,QAAUyD,EAAM,MAAM,CAAC,EAAE,UAAY,KAAK,KAAK,SAAW,EACvE,MAAO,GACP,KAAK,KAAK,QACV,KAAK,YAAY,EAAI,EACzB,KAAK,YAAc,KAAK,IAAI,KAAK,YAAaA,EAAM,QAAQ,EAC5D,KAAK,OAAO,KAAKA,CAAK,EACtB,KAAK,SAAS,KAAKzD,CAAI,EACvB,IAAIiE,EAAOR,EAAM,MAAM,OAAS,EAChC,YAAK,KAAOA,EAAM,MAAMQ,CAAI,EAC5B,KAAK,SAAWR,EAAM,KAAKQ,CAAI,EAAIjE,EACnC,KAAK,OAASyD,EAAM,GAAGQ,CAAI,EAAIjE,EACxB,EACX,CAKA,QAAS,CAAE,OAAO,KAAK,YAAYqW,EAAS,KAAK,CAAG,CAIpD,YAAY7R,EAAM,CAGd,GAFI,KAAK,KAAK,QACV,KAAK,YAAY,EAAK,EACtB,KAAK,OAAO,QAAU,EACtB,OAAOA,EACX,IAAInC,EAASgU,EAAS,OAAO,KAAK,SAAU,KAAK,OAAQ,KAAK,UAAY,KAAK,UAAU,YAAY7R,CAAI,EAAIA,EAAM,KAAK,WAAW,EACnI,YAAK,KAAO,KACLnC,CACX,CACJ,EACA,SAASuV,GAAiBnX,EAAGE,EAAG6W,EAAU,CACtC,IAAImB,EAAM,IAAI,IACd,QAAS3Q,KAAOvH,EACZ,QAASiB,EAAI,EAAGA,EAAIsG,EAAI,MAAM,OAAQtG,IAC9BsG,EAAI,MAAMtG,CAAC,EAAE,UAAY,GACzBiX,EAAI,IAAI3Q,EAAI,MAAMtG,CAAC,EAAGsG,EAAI,SAAStG,CAAC,CAAC,EACjD,IAAIkX,EAAS,IAAI,IACjB,QAAS5Q,KAAOrH,EACZ,QAASe,EAAI,EAAGA,EAAIsG,EAAI,MAAM,OAAQtG,IAAK,CACvC,IAAIkO,EAAQ+I,EAAI,IAAI3Q,EAAI,MAAMtG,CAAC,CAAC,EAC5BkO,GAAS,OAAS4H,EAAWA,EAAS,OAAO5H,CAAK,EAAIA,IAAU5H,EAAI,SAAStG,CAAC,GAC9E,CAAsD8V,GAAS,aAAa5H,EAAOA,EAAQ5H,EAAI,MAAMtG,CAAC,EAAE,MAAM,GAC9GkX,EAAO,IAAI5Q,EAAI,MAAMtG,CAAC,CAAC,CAC/B,CACJ,OAAOkX,CACX,CAfS/Y,EAAA+X,GAAA,oBAgBT,IAAMd,GAAN,KAAkB,CAr8GlB,MAq8GkB,CAAAjX,EAAA,oBACd,YAAY2Y,EAAO5X,EAAMiY,EAAUC,EAAO,EAAG,CACzC,KAAK,MAAQN,EACb,KAAK,KAAO5X,EACZ,KAAK,SAAWiY,EAChB,KAAK,KAAOC,CAChB,CACA,IAAI,WAAY,CAAE,OAAO,KAAK,MAAQ,KAAK,MAAM,UAAY,CAAG,CAChE,IAAI,SAAU,CAAE,OAAO,KAAK,MAAQ,KAAK,MAAM,QAAU,CAAG,CAC5D,KAAKhZ,EAAKyU,EAAO,KAAyB,CACtC,YAAK,WAAa,KAAK,WAAa,EACpC,KAAK,UAAUzU,EAAKyU,EAAM,EAAK,EACxB,IACX,CACA,UAAUzU,EAAKyU,EAAMvP,EAAS,CAC1B,KAAO,KAAK,WAAa,KAAK,MAAM,MAAM,QAAQ,CAC9C,IAAIR,EAAO,KAAK,MAAM,MAAM,KAAK,UAAU,EAC3C,GAAI,EAAE,KAAK,MAAQ,KAAK,KAAK,IAAIA,CAAI,GACjC,KAAK,MAAM,SAAS,KAAK,UAAU,EAAI1E,GACvC0E,EAAK,SAAW,KAAK,UACrB,MACJ,KAAK,aACLQ,EAAU,EACd,CACA,GAAI,KAAK,WAAa,KAAK,MAAM,MAAM,OAAQ,CAC3C,IAAI+T,EAAa,KAAK,MAAM,MAAM,KAAK,UAAU,EAAE,UAAUjZ,EAAM,KAAK,MAAM,SAAS,KAAK,UAAU,EAAGyU,EAAM,EAAI,GAC/G,CAACvP,GAAW,KAAK,WAAa+T,IAC9B,KAAK,cAAcA,CAAU,CACrC,CACA,KAAK,KAAK,CACd,CACA,QAAQjZ,EAAKyU,EAAM,EACV,KAAK,GAAKzU,GAAO,KAAK,QAAUyU,GAAQ,GACzC,KAAK,UAAUzU,EAAKyU,EAAM,EAAI,CACtC,CACA,MAAO,CACH,OACI,GAAI,KAAK,YAAc,KAAK,MAAM,MAAM,OAAQ,CAC5C,KAAK,KAAO,KAAK,GAAK,IACtB,KAAK,MAAQ,KACb,KACJ,KACK,CACD,IAAIgC,EAAW,KAAK,MAAM,SAAS,KAAK,UAAU,EAAG9S,EAAQ,KAAK,MAAM,MAAM,KAAK,UAAU,EACzFzD,EAAOuW,EAAW9S,EAAM,KAAK,KAAK,UAAU,EAKhD,GAJA,KAAK,KAAOzD,EACZ,KAAK,GAAKuW,EAAW9S,EAAM,GAAG,KAAK,UAAU,EAC7C,KAAK,MAAQA,EAAM,MAAM,KAAK,UAAU,EACxC,KAAK,cAAc,KAAK,WAAa,CAAC,EAClC,KAAK,SAAW,GAAK,KAAK,MAAM,OAAS,KAAK,GAAK,KAAK,MAAQ,KAAK,SACrE,KACR,CAER,CACA,cAAc2D,EAAO,CACjB,GAAIA,GAAS,KAAK,MAAM,MAAM,KAAK,UAAU,EAAE,MAAM,OAAQ,CAEzD,GADA,KAAK,aACD,KAAK,KACL,KAAO,KAAK,WAAa,KAAK,MAAM,MAAM,QAAU,KAAK,KAAK,IAAI,KAAK,MAAM,MAAM,KAAK,UAAU,CAAC,GAC/F,KAAK,aAEb,KAAK,WAAa,CACtB,MAEI,KAAK,WAAaA,CAE1B,CACA,WAAY,CACR,KAAK,aACL,KAAK,WAAa,EAClB,KAAK,KAAK,CACd,CACA,QAAQ9G,EAAO,CACX,OAAO,KAAK,KAAOA,EAAM,MAAQ,KAAK,UAAYA,EAAM,WAAa,KAAK,KAAOA,EAAM,MACnF,KAAK,GAAKA,EAAM,IAAM,KAAK,QAAUA,EAAM,OACnD,CACJ,EACM8W,GAAN,MAAM4B,CAAW,CAlhHjB,MAkhHiB,CAAAnZ,EAAA,mBACb,YAAYoZ,EAAM,CACd,KAAK,KAAOA,CAChB,CACA,OAAO,KAAK5B,EAAMzW,EAAO,KAAMiY,EAAW,GAAI,CAC1C,IAAII,EAAO,CAAC,EACZ,QAASvX,EAAI,EAAGA,EAAI2V,EAAK,OAAQ3V,IAC7B,QAASmV,EAAMQ,EAAK3V,CAAC,EAAG,CAACmV,EAAI,QAASA,EAAMA,EAAI,UACxCA,EAAI,UAAYgC,GAChBI,EAAK,KAAK,IAAInC,GAAYD,EAAKjW,EAAMiY,EAAUnX,CAAC,CAAC,EAG7D,OAAOuX,EAAK,QAAU,EAAIA,EAAK,CAAC,EAAI,IAAID,EAAWC,CAAI,CAC3D,CACA,IAAI,WAAY,CAAE,OAAO,KAAK,MAAQ,KAAK,MAAM,UAAY,CAAG,CAChE,KAAKnZ,EAAKyU,EAAO,KAAyB,CACtC,QAASsC,KAAO,KAAK,KACjBA,EAAI,KAAK/W,EAAKyU,CAAI,EACtB,QAAS,EAAI,KAAK,KAAK,QAAU,EAAG,GAAK,EAAG,IACxC2E,GAAW,KAAK,KAAM,CAAC,EAC3B,YAAK,KAAK,EACH,IACX,CACA,QAAQpZ,EAAKyU,EAAM,CACf,QAASsC,KAAO,KAAK,KACjBA,EAAI,QAAQ/W,EAAKyU,CAAI,EACzB,QAAS,EAAI,KAAK,KAAK,QAAU,EAAG,GAAK,EAAG,IACxC2E,GAAW,KAAK,KAAM,CAAC,GACtB,KAAK,GAAKpZ,GAAO,KAAK,MAAM,QAAUyU,GAAQ,GAC/C,KAAK,KAAK,CAClB,CACA,MAAO,CACH,GAAI,KAAK,KAAK,QAAU,EACpB,KAAK,KAAO,KAAK,GAAK,IACtB,KAAK,MAAQ,KACb,KAAK,KAAO,OAEX,CACD,IAAIlQ,EAAM,KAAK,KAAK,CAAC,EACrB,KAAK,KAAOA,EAAI,KAChB,KAAK,GAAKA,EAAI,GACd,KAAK,MAAQA,EAAI,MACjB,KAAK,KAAOA,EAAI,KACZA,EAAI,OACJA,EAAI,KAAK,EACb6U,GAAW,KAAK,KAAM,CAAC,CAC3B,CACJ,CACJ,EACA,SAASA,GAAWD,EAAM7R,EAAO,CAC7B,QAASyP,EAAMoC,EAAK7R,CAAK,IAAK,CAC1B,IAAI+R,GAAc/R,GAAS,GAAK,EAChC,GAAI+R,GAAcF,EAAK,OACnB,MACJ,IAAIvW,EAAQuW,EAAKE,CAAU,EAK3B,GAJIA,EAAa,EAAIF,EAAK,QAAUvW,EAAM,QAAQuW,EAAKE,EAAa,CAAC,CAAC,GAAK,IACvEzW,EAAQuW,EAAKE,EAAa,CAAC,EAC3BA,KAEAtC,EAAI,QAAQnU,CAAK,EAAI,EACrB,MACJuW,EAAKE,CAAU,EAAItC,EACnBoC,EAAK7R,CAAK,EAAI1E,EACd0E,EAAQ+R,CACZ,CACJ,CAhBStZ,EAAAqZ,GAAA,cAiBT,IAAMpB,GAAN,KAAiB,CAplHjB,MAolHiB,CAAAjY,EAAA,mBACb,YAAYwX,EAAMzW,EAAMiY,EAAU,CAC9B,KAAK,SAAWA,EAChB,KAAK,OAAS,CAAC,EACf,KAAK,SAAW,CAAC,EACjB,KAAK,WAAa,CAAC,EACnB,KAAK,UAAY,GAEjB,KAAK,MAAQ,KACb,KAAK,UAAY,EACjB,KAAK,UAAY,EACjB,KAAK,GAAK,KACV,KAAK,QAAU,EAGf,KAAK,UAAY,GACjB,KAAK,OAASzB,GAAW,KAAKC,EAAMzW,EAAMiY,CAAQ,CACtD,CACA,KAAK/Y,EAAKyU,EAAO,KAAyB,CACtC,YAAK,OAAO,KAAKzU,EAAKyU,CAAI,EAC1B,KAAK,OAAO,OAAS,KAAK,SAAS,OAAS,KAAK,WAAW,OAAS,EACrE,KAAK,UAAY,GACjB,KAAK,GAAKzU,EACV,KAAK,QAAUyU,EACf,KAAK,UAAY,GACjB,KAAK,KAAK,EACH,IACX,CACA,QAAQzU,EAAKyU,EAAM,CACf,KAAO,KAAK,UAAY,KAAO,KAAK,SAAS,KAAK,SAAS,EAAIzU,GAAO,KAAK,OAAO,KAAK,SAAS,EAAE,QAAUyU,GAAQ,GAChH,KAAK,aAAa,KAAK,SAAS,EACpC,KAAK,OAAO,QAAQzU,EAAKyU,CAAI,CACjC,CACA,aAAanN,EAAO,CAChBgS,GAAO,KAAK,OAAQhS,CAAK,EACzBgS,GAAO,KAAK,SAAUhS,CAAK,EAC3BgS,GAAO,KAAK,WAAYhS,CAAK,EAC7B,KAAK,UAAYiS,GAAa,KAAK,OAAQ,KAAK,QAAQ,CAC5D,CACA,UAAUC,EAAW,CACjB,IAAI5X,EAAI,EAAG,CAAE,MAAAgD,EAAO,GAAAzE,EAAI,KAAA6Y,CAAK,EAAI,KAAK,OAEtC,KAAOpX,EAAI,KAAK,WAAW,SAAWoX,EAAO,KAAK,WAAWpX,CAAC,GAAKzB,EAAK,KAAK,SAASyB,CAAC,GAAK,GACxFA,IACJ0G,GAAO,KAAK,OAAQ1G,EAAGgD,CAAK,EAC5B0D,GAAO,KAAK,SAAU1G,EAAGzB,CAAE,EAC3BmI,GAAO,KAAK,WAAY1G,EAAGoX,CAAI,EAC3BQ,GACAlR,GAAOkR,EAAW5X,EAAG,KAAK,OAAO,IAAI,EACzC,KAAK,UAAY2X,GAAa,KAAK,OAAQ,KAAK,QAAQ,CAC5D,CAGA,MAAO,CACH,IAAIrZ,EAAO,KAAK,GAAIuZ,EAAW,KAAK,MACpC,KAAK,MAAQ,KACb,IAAID,EAAY,KAAK,UAAY,EAAI,CAAC,EAAI,KAC1C,OAAS,CACL,IAAI7Y,EAAI,KAAK,UACb,GAAIA,EAAI,KAAO,KAAK,SAASA,CAAC,EAAI,KAAK,OAAO,MAAQ,KAAK,OAAOA,CAAC,EAAE,QAAU,KAAK,OAAO,WAAa,EAAG,CACvG,GAAI,KAAK,SAASA,CAAC,EAAIT,EAAM,CACzB,KAAK,GAAK,KAAK,SAASS,CAAC,EACzB,KAAK,QAAU,KAAK,OAAOA,CAAC,EAAE,QAC9B,KACJ,CACA,KAAK,aAAaA,CAAC,EACf6Y,GACAF,GAAOE,EAAW7Y,CAAC,CAC3B,SACU,KAAK,OAAO,MAIjB,GAAI,KAAK,OAAO,KAAOT,EAAM,CAC9B,KAAK,GAAK,KAAK,OAAO,KACtB,KAAK,QAAU,KAAK,OAAO,UAC3B,KACJ,KACK,CACD,IAAIwZ,EAAU,KAAK,OAAO,MAC1B,GAAI,CAACA,EAAQ,MACT,KAAK,UAAUF,CAAS,EACxB,KAAK,OAAO,KAAK,UAEZC,GAAY,KAAK,OAAO,IAAM,KAAK,IAAM,KAAK,OAAO,KAAO,KAAK,OAAO,GAE7E,KAAK,OAAO,KAAK,MAEhB,CACD,KAAK,MAAQC,EACb,KAAK,UAAY,KAAK,OAAO,KAC7B,KAAK,UAAY,KAAK,OAAO,KAC7B,KAAK,GAAK,KAAK,OAAO,GACtB,KAAK,QAAUA,EAAQ,QACvB,KAAK,OAAO,KAAK,EACjB,KAAK,QAAQ,KAAK,GAAI,KAAK,OAAO,EAClC,KACJ,CACJ,KA7B6B,CACzB,KAAK,GAAK,KAAK,QAAU,IACzB,KACJ,CA2BJ,CACA,GAAIF,EAAW,CACX,KAAK,UAAY,EACjB,QAAS5X,EAAI4X,EAAU,OAAS,EAAG5X,GAAK,GAAK4X,EAAU5X,CAAC,EAAI1B,EAAM0B,IAC9D,KAAK,WACb,CACJ,CACA,eAAezB,EAAI,CACf,GAAI,CAAC,KAAK,OAAO,OACb,OAAO,KAAK,OAChB,IAAImY,EAAS,CAAC,EACd,QAAS,EAAI,KAAK,OAAO,OAAS,EAAG,GAAK,GAClC,OAAK,WAAW,CAAC,EAAI,KAAK,WADW,KAGrC,KAAK,SAAS,CAAC,EAAInY,GAAM,KAAK,SAAS,CAAC,GAAKA,GAAM,KAAK,OAAO,CAAC,EAAE,SAAW,KAAK,MAAM,UACxFmY,EAAO,KAAK,KAAK,OAAO,CAAC,CAAC,EAElC,OAAOA,EAAO,QAAQ,CAC1B,CACA,QAAQnY,EAAI,CACR,IAAI4B,EAAO,EACX,QAAS,EAAI,KAAK,SAAS,OAAS,EAAG,GAAK,GAAK,KAAK,SAAS,CAAC,EAAI5B,EAAI,IACpE4B,IACJ,OAAOA,CACX,CACJ,EACA,SAAS+I,GAAQnK,EAAGgZ,EAAQ9Y,EAAG+Y,EAAQtY,EAAQqW,EAAY,CACvDhX,EAAE,KAAKgZ,CAAM,EACb9Y,EAAE,KAAK+Y,CAAM,EACb,IAAI/Q,EAAO+Q,EAAStY,EAChBtB,EAAM4Z,EAAQC,EAAOD,EAASD,EAC9BG,EAAS,CAAC,CAACnC,EAAW,YAC1B,QAASoC,EAAc,KAAS,CAC5B,IAAIC,EAAQrZ,EAAE,GAAKkZ,EAAQhZ,EAAE,GAAIoV,EAAO+D,GAAQrZ,EAAE,QAAUE,EAAE,QAC1DH,EAAMuV,EAAO,EAAItV,EAAE,GAAKkZ,EAAOhZ,EAAE,GAAIoZ,EAAU,KAAK,IAAIvZ,EAAKmI,CAAI,EAgBrE,GAfYlI,EAAE,OAASE,EAAE,OAEfF,EAAE,OAASE,EAAE,OAAS0U,GAAO5U,EAAE,MAAOE,EAAE,KAAK,GAC/CqX,GAAWvX,EAAE,eAAeA,EAAE,EAAE,EAAGE,EAAE,eAAeA,EAAE,EAAE,CAAC,GACzD8W,EAAW,aAAa3X,EAAKia,EAAStZ,EAAE,MAAOE,EAAE,KAAK,EAC1DkZ,EAAc,KAGVA,GACApC,EAAW,YAAY3X,CAAG,EAC1Bia,EAAUja,GAAO,CAACkY,GAAWvX,EAAE,OAAQE,EAAE,MAAM,GAC/C8W,EAAW,aAAa3X,EAAKia,EAAStZ,EAAE,OAAQE,EAAE,MAAM,EACxDiZ,GAAUG,EAAUpR,IAASmR,GAAQrZ,EAAE,QAAQD,CAAG,GAAKG,EAAE,QAAQH,CAAG,KACpEqZ,EAAc,KAElBrZ,EAAMmI,EACN,MACJ7I,EAAMU,EACFuV,GAAQ,GACRtV,EAAE,KAAK,EACPsV,GAAQ,GACRpV,EAAE,KAAK,CACf,CACJ,CAhCSd,EAAA+K,GAAA,WAiCT,SAASoN,GAAWvX,EAAGE,EAAG,CACtB,GAAIF,EAAE,QAAUE,EAAE,OACd,MAAO,GACX,QAASe,EAAI,EAAGA,EAAIjB,EAAE,OAAQiB,IAC1B,GAAIjB,EAAEiB,CAAC,GAAKf,EAAEe,CAAC,GAAK,CAAC2T,GAAO5U,EAAEiB,CAAC,EAAGf,EAAEe,CAAC,CAAC,EAClC,MAAO,GACf,MAAO,EACX,CAPS7B,EAAAmY,GAAA,cAQT,SAASoB,GAAOY,EAAO5S,EAAO,CAC1B,QAAS1F,EAAI0F,EAAOmB,EAAIyR,EAAM,OAAS,EAAGtY,EAAI6G,EAAG7G,IAC7CsY,EAAMtY,CAAC,EAAIsY,EAAMtY,EAAI,CAAC,EAC1BsY,EAAM,IAAI,CACd,CAJSna,EAAAuZ,GAAA,UAKT,SAAShR,GAAO4R,EAAO5S,EAAO1C,EAAO,CACjC,QAAS,EAAIsV,EAAM,OAAS,EAAG,GAAK5S,EAAO,IACvC4S,EAAM,EAAI,CAAC,EAAIA,EAAM,CAAC,EAC1BA,EAAM5S,CAAK,EAAI1C,CACnB,CAJS7E,EAAAuI,GAAA,UAKT,SAASiR,GAAa3U,EAAOsV,EAAO,CAChC,IAAInK,EAAQ,GAAIoK,EAAW,IAC3B,QAASvY,EAAI,EAAGA,EAAIsY,EAAM,OAAQtY,KACzBsY,EAAMtY,CAAC,EAAIuY,GAAYvV,EAAMhD,CAAC,EAAE,QAAUgD,EAAMmL,CAAK,EAAE,SAAW,IACnEA,EAAQnO,EACRuY,EAAWD,EAAMtY,CAAC,GAE1B,OAAOmO,CACX,CARShQ,EAAAwZ,GAAA,gBAcT,SAASa,GAAYvY,EAAQwY,EAASla,EAAK0B,EAAO,OAAQ,CACtD,IAAI5B,EAAI,EACR,QAAS2B,EAAI,EAAGA,EAAIzB,GAAMyB,EAAIC,EAAO,QAC7BA,EAAO,WAAWD,CAAC,GAAK,GACxB3B,GAAKoa,EAAWpa,EAAIoa,EACpBzY,MAGA3B,IACA2B,EAAIoD,GAAiBnD,EAAQD,CAAC,GAGtC,OAAO3B,CACX,CAbSF,EAAAqa,GAAA,eAqBT,SAASE,GAAWzY,EAAQ0Y,EAAKF,EAASG,EAAQ,CAC9C,QAAS5Y,EAAI,EAAG3B,EAAI,IAAK,CACrB,GAAIA,GAAKsa,EACL,OAAO3Y,EACX,GAAIA,GAAKC,EAAO,OACZ,MACJ5B,GAAK4B,EAAO,WAAWD,CAAC,GAAK,EAAIyY,EAAWpa,EAAIoa,EAAW,EAC3DzY,EAAIoD,GAAiBnD,EAAQD,CAAC,CAClC,CACA,OAAO4Y,IAAW,GAAO,GAAK3Y,EAAO,MACzC,CAVS9B,EAAAua,GAAA,cCtyHT,IAAMG,GAAQ,OAAO,OAAU,IAAc,WAAW,OAAO,IAAI,QAAC,EAC9DC,GAAM,OAAO,OAAU,IAAc,aAAe,KAAK,MAAM,KAAK,OAAO,EAAI,GAAG,EAAI,OAAO,UAAU,EACvGC,GAAM,OAAO,WAAc,IAAc,WAAa,OAAO,OAAU,IAAc,OAAS,CAAC,EAWxFC,GAAN,KAAkB,CAdzB,MAcyB,CAAAC,EAAA,oBAMvB,YAAYC,EAAMC,EAAS,CACzB,KAAK,MAAQ,CAAC,EACd,GAAI,CAAC,OAAAC,CAAM,EAAID,GAAW,CAAC,EAE3B,SAASE,EAAcC,EAAU,CAC/B,MAAO,KAAK,KAAKA,CAAQ,EAAI,CAACA,CAAQ,EAAIA,EAAS,MAAM,MAAM,CACjE,CAFSL,EAAAI,EAAA,iBAIT,SAASE,EAAOC,EAAWN,EAAMO,EAAQC,EAAa,CACpD,IAAIC,EAAQ,CAAC,EAAGC,EAAO,YAAY,KAAKJ,EAAU,CAAC,CAAC,EAAGK,EAAYD,GAAQA,EAAK,CAAC,GAAK,YACtF,GAAIA,GAAQV,GAAQ,KAAM,OAAOO,EAAO,KAAKD,EAAU,CAAC,EAAI,GAAG,EAC/D,QAASM,KAAQZ,EAAM,CACrB,IAAIa,EAAQb,EAAKY,CAAI,EACrB,GAAI,IAAI,KAAKA,CAAI,EACfP,EAAOO,EAAK,MAAM,MAAM,EAAE,IAAIE,GAAQR,EAAU,IAAIS,GAAOD,EAAK,QAAQ,IAAKC,CAAG,CAAC,CAAC,EAAE,OAAO,CAACC,EAAGC,IAAMD,EAAE,OAAOC,CAAC,CAAC,EACzGJ,EAAON,CAAM,UACXM,GAAS,OAAOA,GAAS,SAAU,CAC5C,GAAI,CAACH,EAAM,MAAM,IAAI,WAAW,4BAA8BE,EAAO,gCAAgC,EACrGP,EAAOF,EAAcS,CAAI,EAAGC,EAAOJ,EAAOE,CAAS,CACrD,MAAWE,GAAS,MAClBJ,EAAM,KAAKG,EAAK,QAAQ,MAAO,EAAE,EAAE,QAAQ,SAAUM,GAAK,IAAMA,EAAE,YAAY,CAAC,EAAI,KAAOL,EAAQ,GAAG,CAEzG,EACIJ,EAAM,QAAUE,IAClBJ,EAAO,MAAML,GAAU,CAACQ,GAAQ,CAACF,EAAcF,EAAU,IAAIJ,CAAM,EAAII,GAAW,KAAK,IAAI,EAC/E,KAAOG,EAAM,KAAK,GAAG,EAAI,GAAG,CAE5C,CAnBSV,EAAAM,EAAA,UAqBT,QAASO,KAAQZ,EAAMK,EAAOF,EAAcS,CAAI,EAAGZ,EAAKY,CAAI,EAAG,KAAK,KAAK,CAC3E,CAIA,UAAW,CAAE,OAAO,KAAK,MAAM,KAAK;AAAA,CAAI,CAAE,CAI1C,OAAO,SAAU,CACf,IAAIO,EAAKtB,GAAIF,EAAK,GAAK,EACvB,OAAAE,GAAIF,EAAK,EAAIwB,EAAK,EACX,SAAIA,EAAG,SAAS,EAAE,CAC3B,CAkBA,OAAO,MAAMC,EAAMC,EAASpB,EAAS,CACnC,IAAIqB,EAAMF,EAAKxB,EAAG,EAAG2B,EAAQtB,GAAWA,EAAQ,MAC3CqB,EACIC,GAAOD,EAAI,SAASC,CAAK,EADxBD,EAAM,IAAIE,GAASJ,EAAMG,CAAK,EAExCD,EAAI,MAAM,MAAM,QAAQD,CAAO,EAAIA,EAAU,CAACA,CAAO,EAAGD,CAAI,CAC9D,CACF,EAEIK,GAAa,IAAI,IAEfD,GAAN,KAAe,CA1Ff,MA0Fe,CAAAzB,EAAA,iBACb,YAAYqB,EAAMG,EAAO,CACvB,IAAIG,EAAMN,EAAK,eAAiBA,EAAMO,EAAMD,EAAI,YAChD,GAAI,CAACN,EAAK,MAAQA,EAAK,oBAAsBO,EAAI,cAAe,CAC9D,IAAIC,EAAUH,GAAW,IAAIC,CAAG,EAChC,GAAIE,EAAS,OAAOR,EAAKxB,EAAG,EAAIgC,EAChC,KAAK,MAAQ,IAAID,EAAI,cACrBF,GAAW,IAAIC,EAAK,IAAI,CAC1B,MACE,KAAK,SAAWA,EAAI,cAAc,OAAO,EACrCH,GAAO,KAAK,SAAS,aAAa,QAASA,CAAK,EAEtD,KAAK,QAAU,CAAC,EAChBH,EAAKxB,EAAG,EAAI,IACd,CAEA,MAAMyB,EAASD,EAAM,CACnB,IAAIS,EAAQ,KAAK,MACbC,EAAM,EAA6BC,EAAI,EAC3C,QAASC,EAAI,EAAGA,EAAIX,EAAQ,OAAQW,IAAK,CACvC,IAAIC,EAAMZ,EAAQW,CAAC,EAAGE,EAAQ,KAAK,QAAQ,QAAQD,CAAG,EAMtD,GALIC,EAAQH,GAAKG,EAAQ,KACvB,KAAK,QAAQ,OAAOA,EAAO,CAAC,EAC5BH,IACAG,EAAQ,IAENA,GAAS,IAEX,GADA,KAAK,QAAQ,OAAOH,IAAK,EAAGE,CAAG,EAC3BJ,EAAO,QAASM,EAAI,EAAGA,EAAIF,EAAI,MAAM,OAAQE,IAC/CN,EAAM,WAAWI,EAAI,MAAME,CAAC,EAAGL,GAAK,MACjC,CACL,KAAOC,EAAIG,GAAOJ,GAAO,KAAK,QAAQC,GAAG,EAAE,MAAM,OACjDD,GAAOG,EAAI,MAAM,OACjBF,GACF,CACF,CAEA,GAAIF,EACET,EAAK,mBAAmB,QAAQ,KAAK,KAAK,EAAI,IAChDA,EAAK,mBAAqB,CAAC,KAAK,MAAO,GAAGA,EAAK,kBAAkB,OAC9D,CACL,IAAIgB,EAAO,GACX,QAASJ,EAAI,EAAGA,EAAI,KAAK,QAAQ,OAAQA,IACvCI,GAAQ,KAAK,QAAQJ,CAAC,EAAE,SAAS,EAAI;AAAA,EACvC,KAAK,SAAS,YAAcI,EAC5B,IAAI7B,EAASa,EAAK,MAAQA,EACtB,KAAK,SAAS,YAAcb,GAC9BA,EAAO,aAAa,KAAK,SAAUA,EAAO,UAAU,CACxD,CACF,CAEA,SAASgB,EAAO,CACV,KAAK,UAAY,KAAK,SAAS,aAAa,OAAO,GAAKA,GAC1D,KAAK,SAAS,aAAa,QAASA,CAAK,CAC7C,CACF,ECjJO,IAAIc,GAAO,CAChB,EAAG,YACH,EAAG,MACH,GAAI,QACJ,GAAI,UACJ,GAAI,QACJ,GAAI,QACJ,GAAI,UACJ,GAAI,MACJ,GAAI,WACJ,GAAI,SACJ,GAAI,IACJ,GAAI,SACJ,GAAI,WACJ,GAAI,MACJ,GAAI,OACJ,GAAI,YACJ,GAAI,UACJ,GAAI,aACJ,GAAI,YACJ,GAAI,cACJ,GAAI,SACJ,GAAI,SACJ,GAAI,IACJ,GAAI,IACJ,GAAI,OACJ,GAAI,OACJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,UACL,IAAK,aACL,IAAK,QACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,MACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,GACP,EAEWC,GAAQ,CACjB,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,GACP,EAEIC,GAAM,OAAO,UAAa,KAAe,MAAM,KAAK,UAAU,QAAQ,EACtEC,GAAK,OAAO,UAAa,KAAe,gDAAgD,KAAK,UAAU,SAAS,EAGpH,IAASC,GAAI,EAAGA,GAAI,GAAIA,KAAKJ,GAAK,GAAKI,EAAC,EAAIJ,GAAK,GAAKI,EAAC,EAAI,OAAOA,EAAC,EAA1D,IAAAA,GAGT,IAASA,GAAI,EAAGA,IAAK,GAAIA,KAAKJ,GAAKI,GAAI,GAAG,EAAI,IAAMA,GAA3C,IAAAA,GAGT,IAASA,GAAI,GAAIA,IAAK,GAAIA,KACxBJ,GAAKI,EAAC,EAAI,OAAO,aAAaA,GAAI,EAAE,EACpCH,GAAMG,EAAC,EAAI,OAAO,aAAaA,EAAC,EAFzB,IAAAA,GAMT,IAASC,MAAQL,GAAWC,GAAM,eAAeI,EAAI,IAAGJ,GAAMI,EAAI,EAAIL,GAAKK,EAAI,GAAtE,IAAAA,GAEF,SAASC,GAAQC,EAAO,CAG7B,IAAIC,EAAYN,IAAOK,EAAM,SAAWA,EAAM,UAAY,CAACA,EAAM,SAAW,CAACA,EAAM,QAC/EJ,IAAMI,EAAM,UAAYA,EAAM,KAAOA,EAAM,IAAI,QAAU,GACzDA,EAAM,KAAO,eACbE,EAAQ,CAACD,GAAaD,EAAM,MAC7BA,EAAM,SAAWN,GAAQD,IAAMO,EAAM,OAAO,GAC7CA,EAAM,KAAO,eAEf,OAAIE,GAAQ,QAAOA,EAAO,UACtBA,GAAQ,QAAOA,EAAO,UAEtBA,GAAQ,SAAQA,EAAO,aACvBA,GAAQ,OAAMA,EAAO,WACrBA,GAAQ,UAASA,EAAO,cACxBA,GAAQ,SAAQA,EAAO,aACpBA,CACT,CAlBgBC,EAAAJ,GAAA,WCpGD,SAARK,GAAyB,CAC9B,IAAIC,EAAM,UAAU,CAAC,EACjB,OAAOA,GAAO,WAAUA,EAAM,SAAS,cAAcA,CAAG,GAC5D,IAAIC,EAAI,EAAGC,EAAO,UAAU,CAAC,EAC7B,GAAIA,GAAQ,OAAOA,GAAQ,UAAYA,EAAK,UAAY,MAAQ,CAAC,MAAM,QAAQA,CAAI,EAAG,CACpF,QAASC,KAAQD,EAAM,GAAI,OAAO,UAAU,eAAe,KAAKA,EAAMC,CAAI,EAAG,CAC3E,IAAIC,EAAQF,EAAKC,CAAI,EACjB,OAAOC,GAAS,SAAUJ,EAAI,aAAaG,EAAMC,CAAK,EACjDA,GAAS,OAAMJ,EAAIG,CAAI,EAAIC,EACtC,CACAH,GACF,CACA,KAAOA,EAAI,UAAU,OAAQA,IAAKI,GAAIL,EAAK,UAAUC,CAAC,CAAC,EACvD,OAAOD,CACT,CAdwBM,EAAAP,EAAA,SAgBxB,SAASM,GAAIL,EAAKO,EAAO,CACvB,GAAI,OAAOA,GAAS,SAClBP,EAAI,YAAY,SAAS,eAAeO,CAAK,CAAC,UACrCA,GAAS,KACb,GAAIA,EAAM,UAAY,KAC3BP,EAAI,YAAYO,CAAK,UACZ,MAAM,QAAQA,CAAK,EAC5B,QAASN,EAAI,EAAGA,EAAIM,EAAM,OAAQN,IAAKI,GAAIL,EAAKO,EAAMN,CAAC,CAAC,MAExD,OAAM,IAAI,WAAW,2BAA6BM,CAAK,CAE3D,CAXSD,EAAAD,GAAA,OCXT,IAAIG,GAAM,OAAO,UAAa,IAAc,UAAY,CAAE,UAAW,GAAI,OAAQ,GAAI,SAAU,EAAG,EAC9FC,GAAM,OAAO,SAAY,IAAc,SAAW,CAAE,gBAAiB,CAAE,MAAO,CAAC,CAAE,CAAE,EACjFC,GAAuB,cAAc,KAAKF,GAAI,SAAS,EACvDG,GAAyB,UAAU,KAAKH,GAAI,SAAS,EACrDI,GAAuB,wCAAwC,KAAKJ,GAAI,SAAS,EACjFK,GAAK,CAAC,EAAEF,IAAaC,IAAWF,IAChCI,GAAQ,CAACD,IAAmB,gBAAgB,KAAKL,GAAI,SAAS,EAC9DO,GAAS,CAACF,IAAmB,gBAAgB,KAAKL,GAAI,SAAS,EAC/DQ,GAAS,wBAAyBP,GAAI,gBAAgB,MACtDQ,GAAS,CAACJ,IAAmB,iBAAiB,KAAKL,GAAI,MAAM,EAC7DU,GAAMD,KAAwB,cAAc,KAAKT,GAAI,SAAS,GAAKA,GAAI,eAAiB,GAC1FW,EAAU,CACV,IAAKD,IAAoB,MAAM,KAAKV,GAAI,QAAQ,EAChD,QAAsB,MAAM,KAAKA,GAAI,QAAQ,EAC7C,MAAoB,YAAY,KAAKA,GAAI,QAAQ,EACjD,GAAAK,GACA,WAAYF,GAAYF,GAAI,cAAgB,EAAIG,GAAU,CAACA,GAAQ,CAAC,EAAIF,GAAU,CAACA,GAAQ,CAAC,EAAI,EAChG,MAAAI,GACA,cAAeA,GAAQ,EAAe,iBAAiB,KAAKN,GAAI,SAAS,GAAK,CAAC,EAAG,CAAC,GAAG,CAAC,EAAI,EAC3F,OAAQ,CAAC,CAACO,GACV,eAAgBA,GAAS,CAACA,GAAO,CAAC,EAAI,EACtC,IAAAG,GACA,QAAsB,YAAY,KAAKV,GAAI,SAAS,EACpD,OAAAQ,GACA,eAAgBA,GAAS,EAAe,uBAAuB,KAAKR,GAAI,SAAS,GAAK,CAAC,EAAG,CAAC,GAAG,CAAC,EAAI,EACnG,OAAAS,GACA,eAAgBA,GAAS,EAAe,2BAA2B,KAAKT,GAAI,SAAS,GAAK,CAAC,EAAG,CAAC,GAAG,CAAC,EAAI,EACvG,QAASC,GAAI,gBAAgB,MAAM,SAAW,KAAO,WAAa,eACtE,EAEA,SAASW,GAAaC,EAAQC,EAAQ,CAClC,QAASC,KAAQF,EACTE,GAAQ,SAAWD,EAAO,MAC1BA,EAAO,OAAS,IAAMD,EAAO,MACxBE,GAAQ,SAAWD,EAAO,MAC/BA,EAAO,OAAS,IAAMD,EAAO,MAE7BC,EAAOC,CAAI,EAAIF,EAAOE,CAAI,EAElC,OAAOD,CACX,CAVSE,EAAAJ,GAAA,gBAWT,IAAMK,GAAuB,OAAO,OAAO,IAAI,EAC/C,SAASC,GAAQC,EAAGC,EAAGC,EAAQ,CAC3B,GAAIF,GAAKC,EACL,MAAO,GACND,IACDA,EAAIF,IACHG,IACDA,EAAIH,IACR,IAAIK,EAAQ,OAAO,KAAKH,CAAC,EAAGI,EAAQ,OAAO,KAAKH,CAAC,EACjD,GAAIE,EAAM,QAAUD,GAAUC,EAAM,QAAQD,CAAM,EAAI,GAAK,EAAI,IAC3DE,EAAM,QAAUF,GAAUE,EAAM,QAAQF,CAAM,EAAI,GAAK,EAAI,GAC3D,MAAO,GACX,QAASG,KAAOF,EACZ,GAAIE,GAAOH,IAAWE,EAAM,QAAQC,CAAG,GAAK,IAAML,EAAEK,CAAG,IAAMJ,EAAEI,CAAG,GAC9D,MAAO,GAEf,MAAO,EACX,CAhBSR,EAAAE,GAAA,WAiBT,SAASO,GAASC,EAAKC,EAAO,CAC1B,QAASC,EAAIF,EAAI,WAAW,OAAS,EAAGE,GAAK,EAAGA,IAAK,CACjD,IAAIb,EAAOW,EAAI,WAAWE,CAAC,EAAE,KACzBD,EAAMZ,CAAI,GAAK,MACfW,EAAI,gBAAgBX,CAAI,CAChC,CACA,QAASA,KAAQY,EAAO,CACpB,IAAIE,EAAQF,EAAMZ,CAAI,EAClBA,GAAQ,QACRW,EAAI,MAAM,QAAUG,EACfH,EAAI,aAAaX,CAAI,GAAKc,GAC/BH,EAAI,aAAaX,EAAMc,CAAK,CACpC,CACJ,CAbSb,EAAAS,GAAA,YAcT,SAASK,GAAYJ,EAAKK,EAAMJ,EAAO,CACnC,IAAIK,EAAU,GACd,GAAID,EACA,QAAShB,KAAQgB,EACPJ,GAASZ,KAAQY,IACnBK,EAAU,GACNjB,GAAQ,QACRW,EAAI,MAAM,QAAU,GAEpBA,EAAI,gBAAgBX,CAAI,GAExC,GAAIY,EACA,QAASZ,KAAQY,EACPI,GAAQA,EAAKhB,CAAI,GAAKY,EAAMZ,CAAI,IAClCiB,EAAU,GACNjB,GAAQ,QACRW,EAAI,MAAM,QAAUC,EAAMZ,CAAI,EAE9BW,EAAI,aAAaX,EAAMY,EAAMZ,CAAI,CAAC,GAElD,OAAOiB,CACX,CArBShB,EAAAc,GAAA,eAsBT,SAASG,GAASP,EAAK,CACnB,IAAIC,EAAQ,OAAO,OAAO,IAAI,EAC9B,QAASC,EAAI,EAAGA,EAAIF,EAAI,WAAW,OAAQE,IAAK,CAC5C,IAAIM,EAAOR,EAAI,WAAWE,CAAC,EAC3BD,EAAMO,EAAK,IAAI,EAAIA,EAAK,KAC5B,CACA,OAAOP,CACX,CAPSX,EAAAiB,GAAA,YAgBT,IAAME,GAAN,KAAiB,CApHjB,MAoHiB,CAAAnB,EAAA,mBAUb,GAAGoB,EAAQ,CAAE,MAAO,EAAO,CAQ3B,UAAUV,EAAKW,EAAMC,EAAM,CAAE,MAAO,EAAO,CAI3C,QAAQC,EAAO,CACX,OAAO,MAAQA,GAAS,KAAK,aAAeA,EAAM,aAAe,KAAK,GAAGA,CAAK,CAClF,CAOA,IAAI,iBAAkB,CAAE,MAAO,EAAI,CAOnC,IAAI,YAAa,CAAE,MAAO,EAAG,CAM7B,YAAYC,EAAO,CAAE,MAAO,EAAM,CAQlC,SAASd,EAAKe,EAAKC,EAAM,CAAE,OAAO,IAAM,CAIxC,IAAI,UAAW,CAAE,MAAO,EAAO,CAI/B,IAAI,UAAW,CAAE,MAAO,EAAO,CAK/B,QAAQhB,EAAK,CAAE,CACnB,EAIIiB,IAA0B,SAAUA,EAAW,CAI/C,OAAAA,EAAUA,EAAU,KAAU,CAAC,EAAI,OAInCA,EAAUA,EAAU,aAAkB,CAAC,EAAI,eAI3CA,EAAUA,EAAU,YAAiB,CAAC,EAAI,cAI1CA,EAAUA,EAAU,YAAiB,CAAC,EAAI,cACvCA,CAAS,GAAGA,KAAcA,GAAY,CAAC,EAAE,EAO1CC,EAAN,cAAyBC,EAAW,CAlNpC,MAkNoC,CAAA7B,EAAA,mBAChC,YAIA8B,EAIAC,EAIAX,EAMAY,EAAM,CACF,MAAM,EACN,KAAK,UAAYF,EACjB,KAAK,QAAUC,EACf,KAAK,OAASX,EACd,KAAK,KAAOY,CAChB,CAIA,IAAI,gBAAiB,CAAE,MAAO,EAAO,CAUrC,OAAO,KAAKA,EAAM,CACd,OAAO,IAAIC,GAAeD,CAAI,CAClC,CAKA,OAAO,OAAOA,EAAM,CAChB,IAAIN,EAAO,KAAK,IAAI,KAAQ,KAAK,IAAI,IAAOM,EAAK,MAAQ,CAAC,CAAC,EAAGE,EAAQ,CAAC,CAACF,EAAK,MAC7E,OAAAN,GAASQ,GAAS,CAACF,EAAK,YACjBN,EAAO,EAAI,IAAkC,KAC7CA,EAAO,EAAI,IAAmC,KAC9C,IAAIS,GAAgBH,EAAMN,EAAMA,EAAMQ,EAAOF,EAAK,QAAU,KAAM,EAAK,CAClF,CAKA,OAAO,QAAQA,EAAM,CACjB,IAAIE,EAAQ,CAAC,CAACF,EAAK,MAAOF,EAAWC,EACrC,GAAIC,EAAK,WACLF,EAAY,KACZC,EAAU,QAET,CACD,GAAI,CAAE,MAAAK,EAAO,IAAAC,CAAI,EAAIC,GAAaN,EAAME,CAAK,EAC7CJ,GAAaM,EAASF,EAAQ,KAAsC,GAAgC,KAAoC,EACxIH,GAAWM,EAAOH,EAAQ,IAAmC,EAA6B,MAAmC,CACjI,CACA,OAAO,IAAIC,GAAgBH,EAAMF,EAAWC,EAASG,EAAOF,EAAK,QAAU,KAAM,EAAI,CACzF,CAKA,OAAO,KAAKA,EAAM,CACd,OAAO,IAAIO,GAAeP,CAAI,CAClC,CAMA,OAAO,IAAIQ,EAAIC,EAAO,GAAO,CACzB,OAAOC,EAAS,GAAGF,EAAIC,CAAI,CAC/B,CAIA,WAAY,CAAE,OAAO,KAAK,OAAS,KAAK,OAAO,gBAAkB,GAAK,EAAO,CACjF,EAIAb,EAAW,KAAOc,EAAS,MAC3B,IAAMT,GAAN,MAAMU,UAAuBf,CAAW,CAhTxC,MAgTwC,CAAA5B,EAAA,uBACpC,YAAYgC,EAAM,CACd,GAAI,CAAE,MAAAI,EAAO,IAAAC,CAAI,EAAIC,GAAaN,CAAI,EACtC,MAAMI,EAAQ,GAA+B,IAAkCC,EAAM,EAA4B,KAAiC,KAAML,CAAI,EAC5J,KAAK,QAAUA,EAAK,SAAW,OAC/B,KAAK,MAAQA,EAAK,OAASA,EAAK,WAAapC,GAAaoC,EAAK,WAAY,CAAE,MAAOA,EAAK,KAAM,CAAC,EAC1FA,EAAK,MAAQ,CAAE,MAAOA,EAAK,KAAM,EAAIA,EAAK,YAAc/B,EAClE,CACA,GAAGsB,EAAO,CACN,OAAO,MAAQA,GAASA,aAAiBoB,GAAkB,KAAK,SAAWpB,EAAM,SAAWrB,GAAQ,KAAK,MAAOqB,EAAM,KAAK,CAC/H,CACA,MAAMD,EAAMsB,EAAKtB,EAAM,CACnB,GAAIA,GAAQsB,EACR,MAAM,IAAI,WAAW,mCAAmC,EAC5D,OAAO,MAAM,MAAMtB,EAAMsB,CAAE,CAC/B,CACJ,EACAX,GAAe,UAAU,MAAQ,GACjC,IAAMM,GAAN,MAAMM,UAAuBjB,CAAW,CAlUxC,MAkUwC,CAAA5B,EAAA,uBACpC,YAAYgC,EAAM,CACd,MAAM,KAA4B,KAA4B,KAAMA,CAAI,CAC5E,CACA,GAAGT,EAAO,CACN,OAAOA,aAAiBsB,GACpB,KAAK,KAAK,OAAStB,EAAM,KAAK,OAC9BrB,GAAQ,KAAK,KAAK,WAAYqB,EAAM,KAAK,UAAU,CAC3D,CACA,MAAMD,EAAMsB,EAAKtB,EAAM,CACnB,GAAIsB,GAAMtB,EACN,MAAM,IAAI,WAAW,4CAA4C,EACrE,OAAO,MAAM,MAAMA,EAAMsB,CAAE,CAC/B,CACJ,EACAL,GAAe,UAAU,QAAUO,GAAQ,YAC3CP,GAAe,UAAU,MAAQ,GACjC,IAAMJ,GAAN,MAAMY,UAAwBnB,CAAW,CAnVzC,MAmVyC,CAAA5B,EAAA,wBACrC,YAAYgC,EAAMF,EAAWC,EAASG,EAAOd,EAAQ4B,EAAW,CAC5D,MAAMlB,EAAWC,EAASX,EAAQY,CAAI,EACtC,KAAK,MAAQE,EACb,KAAK,UAAYc,EACjB,KAAK,QAAWd,EAA2BJ,GAAa,EAAIgB,GAAQ,YAAcA,GAAQ,WAAlEA,GAAQ,QACpC,CAEA,IAAI,MAAO,CACP,OAAO,KAAK,WAAa,KAAK,QAAUnB,GAAU,YAC5C,KAAK,WAAa,EAAIA,GAAU,aAAeA,GAAU,WACnE,CACA,IAAI,gBAAiB,CACjB,OAAO,KAAK,OAAS,CAAC,CAAC,KAAK,SAAW,KAAK,OAAO,iBAAmB,GAAK,KAAK,OAAO,WAAa,EACxG,CACA,GAAGJ,EAAO,CACN,OAAOA,aAAiBwB,GACpBE,GAAU,KAAK,OAAQ1B,EAAM,MAAM,GACnC,KAAK,OAASA,EAAM,OACpB,KAAK,WAAaA,EAAM,WAAa,KAAK,SAAWA,EAAM,OACnE,CACA,MAAMD,EAAMsB,EAAKtB,EAAM,CACnB,GAAI,KAAK,YAAcA,EAAOsB,GAAOtB,GAAQsB,GAAM,KAAK,UAAY,GAAK,KAAK,SAAW,GACrF,MAAM,IAAI,WAAW,0CAA0C,EACnE,GAAI,CAAC,KAAK,WAAaA,GAAMtB,EACzB,MAAM,IAAI,WAAW,qDAAqD,EAC9E,OAAO,MAAM,MAAMA,EAAMsB,CAAE,CAC/B,CACJ,EACAT,GAAgB,UAAU,MAAQ,GAClC,SAASG,GAAaN,EAAME,EAAQ,GAAO,CACvC,GAAI,CAAE,eAAgBE,EAAO,aAAcC,CAAI,EAAIL,EACnD,OAAII,GAAS,OACTA,EAAQJ,EAAK,WACbK,GAAO,OACPA,EAAML,EAAK,WACR,CAAE,MAAOI,GAA6CF,EAAO,IAAKG,GAAuCH,CAAM,CAC1H,CAPSlC,EAAAsC,GAAA,gBAQT,SAASW,GAAU9C,EAAGC,EAAG,CACrB,OAAOD,GAAKC,GAAK,CAAC,EAAED,GAAKC,GAAKD,EAAE,QAAQC,CAAC,EAC7C,CAFSJ,EAAAiD,GAAA,aAGT,SAASC,GAAS5B,EAAMsB,EAAIO,EAAQC,EAAS,EAAG,CAC5C,IAAIC,EAAOF,EAAO,OAAS,EACvBE,GAAQ,GAAKF,EAAOE,CAAI,EAAID,GAAU9B,EACtC6B,EAAOE,CAAI,EAAI,KAAK,IAAIF,EAAOE,CAAI,EAAGT,CAAE,EAExCO,EAAO,KAAK7B,EAAMsB,CAAE,CAC5B,CANS5C,EAAAkD,GAAA,YAaT,IAAMI,GAAN,MAAMC,UAAqB1B,EAAW,CAzYtC,MAyYsC,CAAA7B,EAAA,qBAClC,YAAYwD,EAASC,EAAY,CAC7B,MAAM,EACN,KAAK,QAAUD,EACf,KAAK,WAAaC,CACtB,CACA,GAAGlC,EAAO,CACN,OAAOA,GAAS,MACZA,aAAiBgC,GAAgB,KAAK,SAAWhC,EAAM,SAAWrB,GAAQ,KAAK,WAAYqB,EAAM,UAAU,CACnH,CAKA,OAAO,OAAOS,EAAM,CAChB,OAAO,IAAIuB,EAAavB,EAAK,QAASA,EAAK,YAAc/B,EAAO,CACpE,CAIA,OAAO,IAAIuC,EAAIC,EAAO,GAAO,CACzB,OAAOC,EAAS,GAAGF,EAAIC,CAAI,CAC/B,CACJ,EACAa,GAAa,UAAU,UAAYA,GAAa,UAAU,QAAU,GAEpE,SAASI,GAAaC,EAAM,CACxB,IAAI7D,EAIJ,OAAI6D,EAAK,UAAY,GACjB7D,EAAS6D,EAAK,aAAeA,EAAOA,EAAK,cAGzC7D,EAAS6D,EAEN7D,EAAO,aAAa,CAC/B,CAZSE,EAAA0D,GAAA,gBAaT,SAASE,GAASlD,EAAKmD,EAAM,CACzB,OAAOA,EAAOnD,GAAOmD,GAAQnD,EAAI,SAASmD,EAAK,UAAY,EAAIA,EAAK,WAAaA,CAAI,EAAI,EAC7F,CAFS7D,EAAA4D,GAAA,YAGT,SAASE,GAAapD,EAAKqD,EAAW,CAClC,GAAI,CAACA,EAAU,WACX,MAAO,GACX,GAAI,CAIA,OAAOH,GAASlD,EAAKqD,EAAU,UAAU,CAC7C,MACU,CACN,MAAO,EACX,CACJ,CAZS/D,EAAA8D,GAAA,gBAaT,SAASE,GAAetD,EAAK,CACzB,OAAIA,EAAI,UAAY,EACTuD,GAAUvD,EAAK,EAAGA,EAAI,UAAU,MAAM,EAAE,eAAe,EACzDA,EAAI,UAAY,EACdA,EAAI,eAAe,EAEnB,CAAC,CAChB,CAPSV,EAAAgE,GAAA,kBAWT,SAASE,GAAqBL,EAAMM,EAAKC,EAAYC,EAAW,CAC5D,OAAOD,EAAcE,GAAQT,EAAMM,EAAKC,EAAYC,EAAW,EAAE,GAC7DC,GAAQT,EAAMM,EAAKC,EAAYC,EAAW,CAAC,EAAK,EACxD,CAHSrE,EAAAkE,GAAA,wBAIT,SAASK,GAASV,EAAM,CACpB,QAASW,EAAQ,GAAIA,IAEjB,GADAX,EAAOA,EAAK,gBACR,CAACA,EACD,OAAOW,CAEnB,CANSxE,EAAAuE,GAAA,YAOT,SAASE,GAAeZ,EAAM,CAC1B,OAAOA,EAAK,UAAY,GAAK,sDAAsD,KAAKA,EAAK,QAAQ,CACzG,CAFS7D,EAAAyE,GAAA,kBAGT,SAASH,GAAQT,EAAMM,EAAKC,EAAYC,EAAWK,EAAK,CACpD,OAAS,CACL,GAAIb,GAAQO,GAAcD,GAAOE,EAC7B,MAAO,GACX,GAAIF,IAAQO,EAAM,EAAI,EAAIC,GAAUd,CAAI,GAAI,CACxC,GAAIA,EAAK,UAAY,MACjB,MAAO,GACX,IAAIe,EAASf,EAAK,WAClB,GAAI,CAACe,GAAUA,EAAO,UAAY,EAC9B,MAAO,GACXT,EAAMI,GAASV,CAAI,GAAKa,EAAM,EAAI,EAAI,GACtCb,EAAOe,CACX,SACSf,EAAK,UAAY,EAAG,CAEzB,GADAA,EAAOA,EAAK,WAAWM,GAAOO,EAAM,EAAI,GAAK,EAAE,EAC3Cb,EAAK,UAAY,GAAKA,EAAK,iBAAmB,QAC9C,MAAO,GACXM,EAAMO,EAAM,EAAIC,GAAUd,CAAI,EAAI,CACtC,KAEI,OAAO,EAEf,CACJ,CAvBS7D,EAAAsE,GAAA,WAwBT,SAASK,GAAUd,EAAM,CACrB,OAAOA,EAAK,UAAY,EAAIA,EAAK,UAAU,OAASA,EAAK,WAAW,MACxE,CAFS7D,EAAA2E,GAAA,aAGT,SAASE,GAAYC,EAAMC,EAAM,CAC7B,IAAIC,EAAID,EAAOD,EAAK,KAAOA,EAAK,MAChC,MAAO,CAAE,KAAME,EAAG,MAAOA,EAAG,IAAKF,EAAK,IAAK,OAAQA,EAAK,MAAO,CACnE,CAHS9E,EAAA6E,GAAA,eAIT,SAASI,GAAWC,EAAK,CACrB,IAAIC,EAAKD,EAAI,eACb,OAAIC,EACO,CACH,KAAM,EAAG,MAAOA,EAAG,MACnB,IAAK,EAAG,OAAQA,EAAG,MACvB,EACG,CAAE,KAAM,EAAG,MAAOD,EAAI,WACzB,IAAK,EAAG,OAAQA,EAAI,WAAY,CACxC,CATSlF,EAAAiF,GAAA,cAUT,SAASG,GAASC,EAAKP,EAAM,CACzB,IAAIQ,EAASR,EAAK,MAAQO,EAAI,YAC1BE,EAAST,EAAK,OAASO,EAAI,aAC/B,OAAIC,EAAS,MAASA,EAAS,OAAS,CAAC,SAASA,CAAM,GAAK,KAAK,IAAIR,EAAK,MAAQO,EAAI,WAAW,EAAI,KAClGC,EAAS,IACTC,EAAS,MAASA,EAAS,OAAS,CAAC,SAASA,CAAM,GAAK,KAAK,IAAIT,EAAK,OAASO,EAAI,YAAY,EAAI,KACpGE,EAAS,GACN,CAAE,OAAAD,EAAQ,OAAAC,CAAO,CAC5B,CARSvF,EAAAoF,GAAA,YAST,SAASI,GAAmB9E,EAAKoE,EAAMpD,EAAMsD,EAAGS,EAAGC,EAASC,EAASC,EAAK,CACtE,IAAI3G,EAAMyB,EAAI,cAAewE,EAAMjG,EAAI,aAAe,OACtD,QAAS4G,EAAMnF,EAAKoF,EAAO,GAAOD,GAAO,CAACC,GACtC,GAAID,EAAI,UAAY,EAAG,CACnB,IAAIE,EAAUC,EAAMH,GAAO5G,EAAI,KAC3BqG,EAAS,EAAGC,EAAS,EACzB,GAAIS,EACAD,EAAWd,GAAWC,CAAG,MAExB,CAGD,GAFI,mBAAmB,KAAK,iBAAiBW,CAAG,EAAE,QAAQ,IACtDC,EAAO,IACPD,EAAI,cAAgBA,EAAI,cAAgBA,EAAI,aAAeA,EAAI,YAAa,CAC5EA,EAAMA,EAAI,cAAgBA,EAAI,WAC9B,QACJ,CACA,IAAIf,EAAOe,EAAI,sBAAsB,GACpC,CAAE,OAAAP,EAAQ,OAAAC,CAAO,EAAIH,GAASS,EAAKf,CAAI,GAExCiB,EAAW,CAAE,KAAMjB,EAAK,KAAM,MAAOA,EAAK,KAAOe,EAAI,YAAcP,EAC/D,IAAKR,EAAK,IAAK,OAAQA,EAAK,IAAMe,EAAI,aAAeN,CAAO,CACpE,CACA,IAAIU,EAAQ,EAAGC,EAAQ,EACvB,GAAIT,GAAK,UACDX,EAAK,IAAMiB,EAAS,IAAMJ,GAC1BO,EAAQpB,EAAK,KAAOiB,EAAS,IAAMJ,GAC/BjE,EAAO,GAAKoD,EAAK,OAASiB,EAAS,OAASG,IAC5CA,EAAQpB,EAAK,OAASiB,EAAS,OAASJ,IAEvCb,EAAK,OAASiB,EAAS,OAASJ,IACrCO,EAAQpB,EAAK,OAASiB,EAAS,OAASJ,EACpCjE,EAAO,GAAMoD,EAAK,IAAMoB,EAASH,EAAS,MAC1CG,EAAQpB,EAAK,KAAOiB,EAAS,IAAMJ,SAG1C,CACD,IAAIQ,EAAarB,EAAK,OAASA,EAAK,IAAKsB,EAAiBL,EAAS,OAASA,EAAS,IAIrFG,GAHgBT,GAAK,UAAYU,GAAcC,EAAiBtB,EAAK,IAAMqB,EAAa,EAAIC,EAAiB,EACzGX,GAAK,SAAWA,GAAK,UAAY/D,EAAO,EAAIoD,EAAK,IAAMa,EACnDb,EAAK,OAASsB,EAAiBT,GACnBI,EAAS,GACjC,CAmBA,GAlBIf,GAAK,UACDF,EAAK,KAAOiB,EAAS,KAAOL,GAC5BO,EAAQnB,EAAK,MAAQiB,EAAS,KAAOL,GACjChE,EAAO,GAAKoD,EAAK,MAAQiB,EAAS,MAAQE,IAC1CA,EAAQnB,EAAK,MAAQiB,EAAS,MAAQL,IAErCZ,EAAK,MAAQiB,EAAS,MAAQL,IACnCO,EAAQnB,EAAK,MAAQiB,EAAS,MAAQL,EAClChE,EAAO,GAAKoD,EAAK,KAAOiB,EAAS,KAAOE,IACxCA,EAAQnB,EAAK,MAAQiB,EAAS,KAAOL,KAO7CO,GAHiBjB,GAAK,SAAWF,EAAK,MAAQA,EAAK,MAAQA,EAAK,MAAQ,GAAKiB,EAAS,MAAQA,EAAS,MAAQ,EAC1Gf,GAAK,SAAYY,EAAMd,EAAK,KAAOY,EAChCZ,EAAK,OAASiB,EAAS,MAAQA,EAAS,MAAQL,GACnCK,EAAS,KAE9BE,GAASC,EACT,GAAIF,EACAd,EAAI,SAASe,EAAOC,CAAK,MAExB,CACD,IAAIG,EAAS,EAAGC,EAAS,EACzB,GAAIJ,EAAO,CACP,IAAI9D,EAAQyD,EAAI,UAChBA,EAAI,WAAaK,EAAQX,EACzBe,GAAUT,EAAI,UAAYzD,GAASmD,CACvC,CACA,GAAIU,EAAO,CACP,IAAI7D,EAAQyD,EAAI,WAChBA,EAAI,YAAcI,EAAQX,EAC1Be,GAAUR,EAAI,WAAazD,GAASkD,CACxC,CACAR,EAAO,CAAE,KAAMA,EAAK,KAAOuB,EAAQ,IAAKvB,EAAK,IAAMwB,EAC/C,MAAOxB,EAAK,MAAQuB,EAAQ,OAAQvB,EAAK,OAASwB,CAAO,EACzDD,GAAU,KAAK,IAAIA,EAASJ,CAAK,EAAI,IACrCjB,EAAI,WACJsB,GAAU,KAAK,IAAIA,EAASJ,CAAK,EAAI,IACrCT,EAAI,UACZ,CAEJ,GAAIO,EACA,OACAlB,EAAK,IAAMiB,EAAS,KAAOjB,EAAK,OAASiB,EAAS,QAClDjB,EAAK,KAAOiB,EAAS,MAAQjB,EAAK,MAAQiB,EAAS,SACnDjB,EAAO,CAAE,KAAM,KAAK,IAAIA,EAAK,KAAMiB,EAAS,IAAI,EAAG,MAAO,KAAK,IAAIjB,EAAK,MAAOiB,EAAS,KAAK,EACzF,IAAK,KAAK,IAAIjB,EAAK,IAAKiB,EAAS,GAAG,EAAG,OAAQ,KAAK,IAAIjB,EAAK,OAAQiB,EAAS,MAAM,CAAE,GAC9FF,EAAMA,EAAI,cAAgBA,EAAI,UAClC,SACSA,EAAI,UAAY,GACrBA,EAAMA,EAAI,SAGV,MAGZ,CAnGS7F,EAAAwF,GAAA,sBAoGT,SAASe,GAAkB7F,EAAK8F,EAAO,GAAM,CACzC,IAAIvH,EAAMyB,EAAI,cAAesE,EAAI,KAAMS,EAAI,KAC3C,QAASI,EAAMnF,EAAI,WAAYmF,GACvB,EAAAA,GAAO5G,EAAI,OAAU,CAACuH,GAAQxB,IAAMS,IAGnC,GAAII,EAAI,UAAY,EACjB,CAACJ,GAAKI,EAAI,aAAeA,EAAI,eAC7BJ,EAAII,GACJW,GAAQ,CAACxB,GAAKa,EAAI,YAAcA,EAAI,cACpCb,EAAIa,GACRA,EAAMA,EAAI,cAAgBA,EAAI,mBAEzBA,EAAI,UAAY,GACrBA,EAAMA,EAAI,SAGV,OAGR,MAAO,CAAE,EAAAb,EAAG,EAAAS,CAAE,CAClB,CArBSzF,EAAAuG,GAAA,qBAsBT,IAAME,GAAN,KAAwB,CAroBxB,MAqoBwB,CAAAzG,EAAA,0BACpB,aAAc,CACV,KAAK,WAAa,KAClB,KAAK,aAAe,EACpB,KAAK,UAAY,KACjB,KAAK,YAAc,CACvB,CACA,GAAG0G,EAAQ,CACP,OAAO,KAAK,YAAcA,EAAO,YAAc,KAAK,cAAgBA,EAAO,cACvE,KAAK,WAAaA,EAAO,WAAa,KAAK,aAAeA,EAAO,WACzE,CACA,SAASC,EAAO,CACZ,GAAI,CAAE,WAAAC,EAAY,UAAAC,CAAU,EAAIF,EAEhC,KAAK,IAAIC,EAAY,KAAK,IAAID,EAAM,aAAcC,EAAajC,GAAUiC,CAAU,EAAI,CAAC,EAAGC,EAAW,KAAK,IAAIF,EAAM,YAAaE,EAAYlC,GAAUkC,CAAS,EAAI,CAAC,CAAC,CAC3K,CACA,IAAID,EAAYE,EAAcD,EAAWE,EAAa,CAClD,KAAK,WAAaH,EAClB,KAAK,aAAeE,EACpB,KAAK,UAAYD,EACjB,KAAK,YAAcE,CACvB,CACJ,EACIC,GAAyB,KAEzBrH,EAAQ,QAAUA,EAAQ,gBAAkB,KAC5CqH,GAAyB,IAG7B,SAASC,GAAmBvG,EAAK,CAC7B,GAAIA,EAAI,UACJ,OAAOA,EAAI,UAAU,EACzB,GAAIsG,GACA,OAAOtG,EAAI,MAAMsG,EAAsB,EAC3C,IAAIE,EAAQ,CAAC,EACb,QAASrB,EAAMnF,EAAKmF,IAChBqB,EAAM,KAAKrB,EAAKA,EAAI,UAAWA,EAAI,UAAU,EACzCA,GAAOA,EAAI,eAFMA,EAAMA,EAAI,WAE/B,CASJ,GANAnF,EAAI,MAAMsG,IAA0B,KAAO,CACvC,IAAI,eAAgB,CAChB,OAAAA,GAAyB,CAAE,cAAe,EAAK,EACxC,EACX,CACJ,EAAI,MAAS,EACT,CAACA,GAAwB,CACzBA,GAAyB,GACzB,QAASpG,EAAI,EAAGA,EAAIsG,EAAM,QAAS,CAC/B,IAAI7B,EAAM6B,EAAMtG,GAAG,EAAGoF,EAAMkB,EAAMtG,GAAG,EAAGmE,EAAOmC,EAAMtG,GAAG,EACpDyE,EAAI,WAAaW,IACjBX,EAAI,UAAYW,GAChBX,EAAI,YAAcN,IAClBM,EAAI,WAAaN,EACzB,CACJ,CACJ,CA3BS/E,EAAAiH,GAAA,sBA4BT,IAAIE,GACJ,SAASlD,GAAUJ,EAAMvC,EAAMsB,EAAKtB,EAAM,CACtC,IAAIqF,EAAQQ,KAAiBA,GAAe,SAAS,YAAY,GACjE,OAAAR,EAAM,OAAO9C,EAAMjB,CAAE,EACrB+D,EAAM,SAAS9C,EAAMvC,CAAI,EAClBqF,CACX,CALS3G,EAAAiE,GAAA,aAMT,SAASmD,GAAY/B,EAAKtF,EAAMsH,EAAMC,EAAM,CACxC,IAAIC,EAAU,CAAE,IAAKxH,EAAM,KAAMA,EAAM,QAASsH,EAAM,MAAOA,EAAM,WAAY,EAAK,EAChFC,IACC,CAAE,OAAQC,EAAQ,OAAQ,QAASA,EAAQ,QAAS,SAAUA,EAAQ,SAAU,QAASA,EAAQ,OAAQ,EAAID,GAClH,IAAIE,EAAO,IAAI,cAAc,UAAWD,CAAO,EAC/CC,EAAK,UAAY,GACjBnC,EAAI,cAAcmC,CAAI,EACtB,IAAIC,EAAK,IAAI,cAAc,QAASF,CAAO,EAC3C,OAAAE,EAAG,UAAY,GACfpC,EAAI,cAAcoC,CAAE,EACbD,EAAK,kBAAoBC,EAAG,gBACvC,CAXSzH,EAAAoH,GAAA,eAYT,SAASM,GAAQ7D,EAAM,CACnB,KAAOA,GAAM,CACT,GAAIA,IAASA,EAAK,UAAY,GAAKA,EAAK,UAAY,IAAMA,EAAK,MAC3D,OAAOA,EACXA,EAAOA,EAAK,cAAgBA,EAAK,UACrC,CACA,OAAO,IACX,CAPS7D,EAAA0H,GAAA,WAQT,SAASC,GAAe1I,EAAK8E,EAAW,CACpC,IAAIF,EAAOE,EAAU,UAAW6D,EAAS7D,EAAU,YACnD,GAAI,CAACF,GAAQE,EAAU,YAAcF,GAAQE,EAAU,cAAgB6D,EACnE,MAAO,GAGX,IADAA,EAAS,KAAK,IAAIA,EAAQjD,GAAUd,CAAI,CAAC,IAErC,GAAI+D,EAAQ,CACR,GAAI/D,EAAK,UAAY,EACjB,MAAO,GACX,IAAI9C,EAAO8C,EAAK,WAAW+D,EAAS,CAAC,EACjC7G,EAAK,iBAAmB,QACxB6G,KAEA/D,EAAO9C,EACP6G,EAASjD,GAAUd,CAAI,EAE/B,KACK,IAAIA,GAAQ5E,EACb,MAAO,GAGP2I,EAASrD,GAASV,CAAI,EACtBA,EAAOA,EAAK,WAGxB,CA1BS7D,EAAA2H,GAAA,kBA2BT,SAASE,GAAmBxC,EAAK,CAC7B,OAAIA,aAAe,OACRA,EAAI,YAAc,KAAK,IAAI,EAAGA,EAAI,SAAS,gBAAgB,aAAeA,EAAI,YAAc,CAAC,EACjGA,EAAI,UAAY,KAAK,IAAI,EAAGA,EAAI,aAAeA,EAAI,aAAe,CAAC,CAC9E,CAJSrF,EAAA6H,GAAA,sBAKT,SAASC,GAAeC,EAAWC,EAAa,CAC5C,QAASnE,EAAOkE,EAAWH,EAASI,IAAe,CAC/C,GAAInE,EAAK,UAAY,GAAK+D,EAAS,EAC/B,MAAO,CAAE,KAAM/D,EAAM,OAAQ+D,CAAO,EAEnC,GAAI/D,EAAK,UAAY,GAAK+D,EAAS,EAAG,CACvC,GAAI/D,EAAK,iBAAmB,QACxB,OAAO,KACXA,EAAOA,EAAK,WAAW+D,EAAS,CAAC,EACjCA,EAASjD,GAAUd,CAAI,CAC3B,SACSA,EAAK,YAAc,CAACY,GAAeZ,CAAI,EAC5C+D,EAASrD,GAASV,CAAI,EACtBA,EAAOA,EAAK,eAGZ,QAAO,IAEf,CACJ,CAnBS7D,EAAA8H,GAAA,kBAoBT,SAASG,GAAcF,EAAWC,EAAa,CAC3C,QAASnE,EAAOkE,EAAWH,EAASI,IAAe,CAC/C,GAAInE,EAAK,UAAY,GAAK+D,EAAS/D,EAAK,UAAU,OAC9C,MAAO,CAAE,KAAMA,EAAM,OAAQ+D,CAAO,EAEnC,GAAI/D,EAAK,UAAY,GAAK+D,EAAS/D,EAAK,WAAW,OAAQ,CAC5D,GAAIA,EAAK,iBAAmB,QACxB,OAAO,KACXA,EAAOA,EAAK,WAAW+D,CAAM,EAC7BA,EAAS,CACb,SACS/D,EAAK,YAAc,CAACY,GAAeZ,CAAI,EAC5C+D,EAASrD,GAASV,CAAI,EAAI,EAC1BA,EAAOA,EAAK,eAGZ,QAAO,IAEf,CACJ,CAnBS7D,EAAAiI,GAAA,iBAoBT,IAAMC,GAAN,MAAMC,CAAO,CAjyBb,MAiyBa,CAAAnI,EAAA,eACT,YAAY6D,EAAM+D,EAAQQ,EAAU,GAAM,CACtC,KAAK,KAAOvE,EACZ,KAAK,OAAS+D,EACd,KAAK,QAAUQ,CACnB,CACA,OAAO,OAAO1H,EAAK0H,EAAS,CAAE,OAAO,IAAID,EAAOzH,EAAI,WAAY6D,GAAS7D,CAAG,EAAG0H,CAAO,CAAG,CACzF,OAAO,MAAM1H,EAAK0H,EAAS,CAAE,OAAO,IAAID,EAAOzH,EAAI,WAAY6D,GAAS7D,CAAG,EAAI,EAAG0H,CAAO,CAAG,CAChG,EAKIC,GAA0B,SAAUA,EAAW,CAM/C,OAAAA,EAAUA,EAAU,IAAS,CAAC,EAAI,MAIlCA,EAAUA,EAAU,IAAS,CAAC,EAAI,MAC/BA,CAAS,GAAGA,IAAcA,EAAY,CAAC,EAAE,EAC1CC,GAAMD,EAAU,IAAKE,GAAMF,EAAU,IAE3C,SAASG,GAAIC,EAAK,CACd,IAAIC,EAAS,CAAC,EACd,QAAS9H,EAAI,EAAGA,EAAI6H,EAAI,OAAQ7H,IAC5B8H,EAAO,KAAK,GAAK,CAACD,EAAI7H,CAAC,CAAC,EAC5B,OAAO8H,CACX,CALS1I,EAAAwI,GAAA,OAOT,IAAMG,GAAwBH,GAAI,0PAA0P,EAEtRI,GAA2BJ,GAAI,4PAA4P,EAC3RK,GAAwB,OAAO,OAAO,IAAI,EAAGC,GAAe,CAAC,EAInE,QAASC,IAAK,CAAC,KAAM,KAAM,IAAI,EAAG,CAC9B,IAAIC,EAAiBD,EAAE,WAAW,CAAC,EAAGE,EAAiBF,EAAE,WAAW,CAAC,EACrEF,GAASG,CAAC,EAAIC,EACdJ,GAASI,CAAC,EAAI,CAACD,CACnB,CACA,SAASE,GAASC,EAAI,CAClB,OAAOA,GAAM,IAAOR,GAASQ,CAAE,EAC3B,MAASA,GAAMA,GAAM,KAAQ,EACzB,MAASA,GAAMA,GAAM,KAAQP,GAAYO,EAAK,IAAK,EAC/C,MAASA,GAAMA,GAAM,KAAQ,EACzB,MAAUA,GAAMA,GAAM,KAAS,IAC3B,OAAUA,GAAMA,GAAM,MAAS,EAAe,CACtE,CAPSnJ,EAAAkJ,GAAA,YAQT,IAAME,GAAS,yDAKTC,GAAN,KAAe,CA51Bf,MA41Be,CAAArJ,EAAA,iBAIX,IAAI,KAAM,CAAE,OAAO,KAAK,MAAQ,EAAIuI,GAAMD,EAAK,CAI/C,YAIAhH,EAIAsB,EAQA0G,EAAO,CACH,KAAK,KAAOhI,EACZ,KAAK,GAAKsB,EACV,KAAK,MAAQ0G,CACjB,CAIA,KAAKjH,EAAKqC,EAAK,CAAE,OAAQ,KAAK,KAAOA,GAAQrC,EAAM,KAAK,GAAK,KAAK,IAAM,CAIxE,QAAQkH,EAAS7E,EAAK,CAAE,OAAO6E,IAAY,KAAK,KAAO7E,EAAM,CAI7D,OAAO,KAAK8E,EAAOhF,EAAO8E,EAAOG,EAAO,CACpC,IAAIC,EAAQ,GACZ,QAAS9I,EAAI,EAAGA,EAAI4I,EAAM,OAAQ5I,IAAK,CACnC,IAAI+I,EAAOH,EAAM5I,CAAC,EAClB,GAAI+I,EAAK,MAAQnF,GAASmF,EAAK,IAAMnF,EAAO,CACxC,GAAImF,EAAK,OAASL,EACd,OAAO1I,GAIP8I,EAAQ,IAAMD,GAAS,EAAKA,EAAQ,EAAIE,EAAK,KAAOnF,EAAQmF,EAAK,GAAKnF,EAASgF,EAAME,CAAK,EAAE,MAAQC,EAAK,UACzGD,EAAQ9I,EAChB,CACJ,CACA,GAAI8I,EAAQ,EACR,MAAM,IAAI,WAAW,oBAAoB,EAC7C,OAAOA,CACX,CACJ,EACA,SAASE,GAAWzJ,EAAGC,EAAG,CACtB,GAAID,EAAE,QAAUC,EAAE,OACd,MAAO,GACX,QAASQ,EAAI,EAAGA,EAAIT,EAAE,OAAQS,IAAK,CAC/B,IAAIiJ,EAAK1J,EAAES,CAAC,EAAGkJ,EAAK1J,EAAEQ,CAAC,EACvB,GAAIiJ,EAAG,MAAQC,EAAG,MAAQD,EAAG,IAAMC,EAAG,IAAMD,EAAG,WAAaC,EAAG,WAAa,CAACF,GAAWC,EAAG,MAAOC,EAAG,KAAK,EACtG,MAAO,EACf,CACA,MAAO,EACX,CATS9J,EAAA4J,GAAA,cAWT,IAAMG,EAAQ,CAAC,EAGf,SAASC,GAAiBC,EAAMC,EAAOC,EAAKC,EAAUC,EAAW,CAC7D,QAASC,EAAK,EAAGA,GAAMF,EAAS,OAAQE,IAAM,CAC1C,IAAIhJ,EAAOgJ,EAAKF,EAASE,EAAK,CAAC,EAAE,GAAKJ,EAAOtH,EAAK0H,EAAKF,EAAS,OAASA,EAASE,CAAE,EAAE,KAAOH,EACzFI,EAAWD,EAAK,IAAiBD,EAWrC,QAASzJ,EAAIU,EAAMP,EAAOwJ,EAAUC,EAAaD,EAAU3J,EAAIgC,EAAIhC,IAAK,CACpE,IAAI6J,EAAOvB,GAASe,EAAK,WAAWrJ,CAAC,CAAC,EAClC6J,GAAQ,IACRA,EAAO1J,EACF0J,GAAQ,GAAgBD,GAAc,IAC3CC,EAAO,IACXV,EAAMnJ,CAAC,EAAI6J,GAAQ,EAAe,EAAcA,EAC5CA,EAAO,IACPD,EAAaC,GACjB1J,EAAO0J,CACX,CASA,QAAS7J,EAAIU,EAAMP,EAAOwJ,EAAUC,EAAaD,EAAU3J,EAAIgC,EAAIhC,IAAK,CACpE,IAAI6J,EAAOV,EAAMnJ,CAAC,EAClB,GAAI6J,GAAQ,IACJ7J,EAAIgC,EAAK,GAAK7B,GAAQgJ,EAAMnJ,EAAI,CAAC,GAAMG,EAAO,GAC9C0J,EAAOV,EAAMnJ,CAAC,EAAIG,EAElBgJ,EAAMnJ,CAAC,EAAI,YAEV6J,GAAQ,GAAe,CAC5B,IAAIpI,EAAMzB,EAAI,EACd,KAAOyB,EAAMO,GAAMmH,EAAM1H,CAAG,GAAK,IAC7BA,IACJ,IAAIqI,EAAW9J,GAAKG,GAAQ,GAAkBsB,EAAM8H,GAAOJ,EAAM1H,CAAG,GAAK,EAAiBmI,GAAc,EAAc,EAAc,EAAgB,IACpJ,QAASG,EAAI/J,EAAG+J,EAAItI,EAAKsI,IACrBZ,EAAMY,CAAC,EAAID,EACf9J,EAAIyB,EAAM,CACd,MACSoI,GAAQ,GAAgBD,GAAc,IAC3CT,EAAMnJ,CAAC,EAAI,GAEfG,EAAO0J,EACHA,EAAO,IACPD,EAAaC,EACrB,CACJ,CACJ,CA1DSzK,EAAAgK,GAAA,oBA4DT,SAASY,GAAoBX,EAAMC,EAAOC,EAAKC,EAAUC,EAAW,CAChE,IAAIQ,EAAeR,GAAa,EAAc,EAAc,EAC5D,QAASC,EAAK,EAAGQ,EAAK,EAAGC,EAAU,EAAGT,GAAMF,EAAS,OAAQE,IAAM,CAC/D,IAAIhJ,EAAOgJ,EAAKF,EAASE,EAAK,CAAC,EAAE,GAAKJ,EAAOtH,EAAK0H,EAAKF,EAAS,OAASA,EAASE,CAAE,EAAE,KAAOH,EAK7F,QAASvJ,EAAIU,EAAM6H,EAAI6B,EAAIP,EAAM7J,EAAIgC,EAAIhC,IAGrC,GAAIoK,EAAKnC,GAASM,EAAKc,EAAK,WAAWrJ,CAAC,CAAC,EACrC,GAAIoK,EAAK,GACL,QAASC,EAAKH,EAAK,EAAGG,GAAM,EAAGA,GAAM,EACjC,GAAInC,GAAamC,EAAK,CAAC,GAAK,CAACD,EAAI,CAC7B,IAAIE,EAAQpC,GAAamC,EAAK,CAAC,EAC3BR,EAAQS,EAAQ,EAAiCb,EAC/Ca,EAAQ,EACLA,EAAQ,EAAoCL,EAAeR,EADlB,EAE9CI,IACAV,EAAMnJ,CAAC,EAAImJ,EAAMjB,GAAamC,CAAE,CAAC,EAAIR,GACzCK,EAAKG,EACL,KACJ,MAGH,IAAInC,GAAa,QAAU,IAC5B,MAGAA,GAAagC,GAAI,EAAIlK,EACrBkI,GAAagC,GAAI,EAAI3B,EACrBL,GAAagC,GAAI,EAAIC,WAGnBN,EAAOV,EAAMnJ,CAAC,IAAM,GAAe6J,GAAQ,EAAa,CAC9D,IAAIU,EAAQV,GAAQJ,EACpBU,EAAUI,EAAQ,EAAI,EACtB,QAASF,EAAKH,EAAK,EAAGG,GAAM,EAAGA,GAAM,EAAG,CACpC,IAAIpF,EAAMiD,GAAamC,EAAK,CAAC,EAC7B,GAAIpF,EAAM,EACN,MACJ,GAAIsF,EACArC,GAAamC,EAAK,CAAC,GAAK,MAEvB,CACD,GAAIpF,EAAM,EACN,MACJiD,GAAamC,EAAK,CAAC,GAAK,CAC5B,CACJ,CACJ,CAER,CACJ,CAtDSjL,EAAA4K,GAAA,uBAuDT,SAASQ,GAAgBlB,EAAOC,EAAKC,EAAUC,EAAW,CACtD,QAASC,EAAK,EAAGvJ,EAAOsJ,EAAWC,GAAMF,EAAS,OAAQE,IAAM,CAC5D,IAAIhJ,EAAOgJ,EAAKF,EAASE,EAAK,CAAC,EAAE,GAAKJ,EAAOtH,EAAK0H,EAAKF,EAAS,OAASA,EAASE,CAAE,EAAE,KAAOH,EAQ7F,QAASvJ,EAAIU,EAAMV,EAAIgC,GAAK,CACxB,IAAI6H,EAAOV,EAAMnJ,CAAC,EAClB,GAAI6J,GAAQ,IAAgB,CACxB,IAAIpI,EAAMzB,EAAI,EACd,OACI,GAAIyB,GAAOO,EAAI,CACX,GAAI0H,GAAMF,EAAS,OACf,MACJ/H,EAAM+H,EAASE,GAAI,EAAE,GACrB1H,EAAK0H,EAAKF,EAAS,OAASA,EAASE,CAAE,EAAE,KAAOH,CACpD,SACSJ,EAAM1H,CAAG,GAAK,IACnBA,QAGA,OAGR,IAAIgJ,EAAUtK,GAAQ,EAClBuK,GAAUjJ,EAAM8H,EAAMJ,EAAM1H,CAAG,EAAIgI,IAAc,EACjDK,EAAUW,GAAWC,EAAUD,EAAU,EAAc,EAAehB,EAC1E,QAASM,EAAItI,EAAKkJ,EAAKjB,EAAIkB,EAAQD,EAAKnB,EAASmB,EAAK,CAAC,EAAE,GAAKrB,EAAOS,EAAI/J,GACjE+J,GAAKa,IACLb,EAAIP,EAAS,EAAEmB,CAAE,EAAE,KACnBC,EAAQD,EAAKnB,EAASmB,EAAK,CAAC,EAAE,GAAKrB,GAEvCH,EAAM,EAAEY,CAAC,EAAID,EAEjB9J,EAAIyB,CACR,MAEItB,EAAO0J,EACP7J,GAER,CACJ,CACJ,CA9CSZ,EAAAoL,GAAA,mBAmDT,SAASK,GAAUxB,EAAM3I,EAAMsB,EAAI0G,EAAOoC,EAAWtB,EAAUZ,EAAO,CAClE,IAAImC,EAAUrC,EAAQ,EAAI,EAAc,EACxC,GAAKA,EAAQ,GAAOoC,EAAY,EAC5B,QAASE,EAAMtK,EAAMgJ,EAAK,EAAGsB,EAAMhJ,GAAK,CAKpC,IAAIiJ,EAAU,GAAMC,EAAQ,GAC5B,GAAIxB,GAAMF,EAAS,QAAUwB,EAAMxB,EAASE,CAAE,EAAE,KAAM,CAClD,IAAIyB,EAAOhC,EAAM6B,CAAG,EAChBG,GAAQJ,IACRE,EAAU,GACVC,EAAQC,GAAQ,GAExB,CAIA,IAAIC,EAAU,CAACH,GAAWF,GAAW,EAAc,CAAC,EAAI,KACpDM,EAAaJ,EAAUvC,EAAQA,EAAQ,EACvC4C,EAAQN,EACZO,EAAK,OACD,GAAI7B,EAAKF,EAAS,QAAU8B,GAAS9B,EAASE,CAAE,EAAE,KAAM,CACpD,GAAIwB,EACA,MAAMK,EACV,IAAIC,EAAMhC,EAASE,CAAE,EAErB,GAAI,CAACuB,EACD,QAASQ,EAAOD,EAAI,GAAIb,EAAKjB,EAAK,IAAK,CACnC,GAAI+B,GAAQzJ,EACR,MAAMuJ,EACV,GAAIZ,EAAKnB,EAAS,QAAUA,EAASmB,CAAE,EAAE,MAAQc,EAC7CA,EAAOjC,EAASmB,GAAI,EAAE,OACrB,IAAIxB,EAAMsC,CAAI,GAAKV,EACpB,MAAMQ,EAEN,MACR,CAEJ,GADA7B,IACI0B,EACAA,EAAQ,KAAKI,CAAG,MAEf,CACGA,EAAI,KAAOR,GACXpC,EAAM,KAAK,IAAIH,GAASuC,EAAKQ,EAAI,KAAMH,CAAU,CAAC,EACtD,IAAIK,EAAWF,EAAI,WAAa9D,IAAQ,EAAE2D,EAAa,GACvDM,GAAoBtC,EAAMqC,EAAUhD,EAAQ,EAAIA,EAAOoC,EAAWU,EAAI,MAAOA,EAAI,KAAMA,EAAI,GAAI5C,CAAK,EACpGoC,EAAMQ,EAAI,EACd,CACAF,EAAQE,EAAI,EAChB,KACK,IAAIF,GAAStJ,IAAOiJ,EAAU9B,EAAMmC,CAAK,GAAKP,EAAU5B,EAAMmC,CAAK,GAAKP,GACzE,MAGAO,IAGJF,EACAP,GAAUxB,EAAM2B,EAAKM,EAAO5C,EAAQ,EAAGoC,EAAWM,EAASxC,CAAK,EAC3DoC,EAAMM,GACX1C,EAAM,KAAK,IAAIH,GAASuC,EAAKM,EAAOD,CAAU,CAAC,EACnDL,EAAMM,CACV,KAKA,SAASN,EAAMhJ,EAAI0H,EAAKF,EAAS,OAAQwB,EAAMtK,GAAO,CAClD,IAAIuK,EAAU,GAAMC,EAAQ,GAC5B,GAAI,CAACxB,GAAMsB,EAAMxB,EAASE,EAAK,CAAC,EAAE,GAAI,CAClC,IAAIyB,EAAOhC,EAAM6B,EAAM,CAAC,EACpBG,GAAQJ,IACRE,EAAU,GACVC,EAAQC,GAAQ,GAExB,CACA,IAAIC,EAAU,CAACH,GAAWF,GAAW,EAAc,CAAC,EAAI,KACpDM,EAAaJ,EAAUvC,EAAQA,EAAQ,EACvC4C,EAAQN,EACZO,EAAK,OACD,GAAI7B,GAAM4B,GAAS9B,EAASE,EAAK,CAAC,EAAE,GAAI,CACpC,GAAIwB,EACA,MAAMK,EACV,IAAIC,EAAMhC,EAAS,EAAEE,CAAE,EAEvB,GAAI,CAACuB,EACD,QAASQ,EAAOD,EAAI,KAAMb,EAAKjB,IAAM,CACjC,GAAI+B,GAAQ/K,EACR,MAAM6K,EACV,GAAIZ,GAAMnB,EAASmB,EAAK,CAAC,EAAE,IAAMc,EAC7BA,EAAOjC,EAAS,EAAEmB,CAAE,EAAE,SACrB,IAAIxB,EAAMsC,EAAO,CAAC,GAAKV,EACxB,MAAMQ,EAEN,MACR,CACJ,GAAIH,EACAA,EAAQ,KAAKI,CAAG,MAEf,CACGA,EAAI,GAAKR,GACTpC,EAAM,KAAK,IAAIH,GAAS+C,EAAI,GAAIR,EAAKK,CAAU,CAAC,EACpD,IAAIK,EAAWF,EAAI,WAAa9D,IAAQ,EAAE2D,EAAa,GACvDM,GAAoBtC,EAAMqC,EAAUhD,EAAQ,EAAIA,EAAOoC,EAAWU,EAAI,MAAOA,EAAI,KAAMA,EAAI,GAAI5C,CAAK,EACpGoC,EAAMQ,EAAI,IACd,CACAF,EAAQE,EAAI,IAChB,KACK,IAAIF,GAAS5K,IAASuK,EAAU9B,EAAMmC,EAAQ,CAAC,GAAKP,EAAU5B,EAAMmC,EAAQ,CAAC,GAAKP,GACnF,MAGAO,IAGJF,EACAP,GAAUxB,EAAMiC,EAAON,EAAKtC,EAAQ,EAAGoC,EAAWM,EAASxC,CAAK,EAC3D0C,EAAQN,GACbpC,EAAM,KAAK,IAAIH,GAAS6C,EAAON,EAAKK,CAAU,CAAC,EACnDL,EAAMM,CACV,CAER,CA5HSlM,EAAAyL,GAAA,aA6HT,SAASc,GAAoBtC,EAAMX,EAAOoC,EAAWtB,EAAU9I,EAAMsB,EAAI4G,EAAO,CAC5E,IAAIa,EAAaf,EAAQ,EAAI,EAAc,EAC3CU,GAAiBC,EAAM3I,EAAMsB,EAAIwH,EAAUC,CAAS,EACpDO,GAAoBX,EAAM3I,EAAMsB,EAAIwH,EAAUC,CAAS,EACvDe,GAAgB9J,EAAMsB,EAAIwH,EAAUC,CAAS,EAC7CoB,GAAUxB,EAAM3I,EAAMsB,EAAI0G,EAAOoC,EAAWtB,EAAUZ,CAAK,CAC/D,CANSxJ,EAAAuM,GAAA,uBAOT,SAASC,GAAavC,EAAMwC,EAAWrC,EAAU,CAC7C,GAAI,CAACH,EACD,MAAO,CAAC,IAAIZ,GAAS,EAAG,EAAGoD,GAAalE,GAAM,EAAI,CAAC,CAAC,EACxD,GAAIkE,GAAanE,IAAO,CAAC8B,EAAS,QAAU,CAAChB,GAAO,KAAKa,CAAI,EACzD,OAAOyC,GAAazC,EAAK,MAAM,EACnC,GAAIG,EAAS,OACT,KAAOH,EAAK,OAASF,EAAM,QACvBA,EAAMA,EAAM,MAAM,EAAI,IAC9B,IAAIP,EAAQ,CAAC,EAAGF,EAAQmD,GAAanE,GAAM,EAAI,EAC/C,OAAAiE,GAAoBtC,EAAMX,EAAOA,EAAOc,EAAU,EAAGH,EAAK,OAAQT,CAAK,EAChEA,CACX,CAXSxJ,EAAAwM,GAAA,gBAYT,SAASE,GAAaC,EAAQ,CAC1B,MAAO,CAAC,IAAItD,GAAS,EAAGsD,EAAQ,CAAC,CAAC,CACtC,CAFS3M,EAAA0M,GAAA,gBAGT,IAAIE,GAAY,GAchB,SAASC,GAAa5C,EAAMT,EAAO9E,EAAKtC,EAAOmH,EAAS,CACpD,IAAIuD,EACJ,IAAIC,EAAa3K,EAAM,KAAO6H,EAAK,KAC/B+C,EAAQ3D,GAAS,KAAKG,EAAOuD,GAAaD,EAAK1K,EAAM,aAAe,MAAQ0K,IAAO,OAASA,EAAK,GAAI1K,EAAM,KAAK,EAChHuH,EAAOH,EAAMwD,CAAK,EAAGC,EAAUtD,EAAK,KAAKJ,EAAS7E,CAAG,EAEzD,GAAIqI,GAAcE,EAAS,CACvB,IAAIC,EAAQF,GAASzD,EAAU,EAAI,GACnC,GAAI2D,EAAQ,GAAKA,GAAS1D,EAAM,OAC5B,OAAO,KACXG,EAAOH,EAAMwD,EAAQE,CAAK,EAC1BH,EAAapD,EAAK,KAAK,CAACJ,EAAS7E,CAAG,EACpCuI,EAAUtD,EAAK,KAAKJ,EAAS7E,CAAG,CACpC,CACA,IAAIyI,EAAYC,GAAiBnD,EAAK,KAAM8C,EAAYpD,EAAK,QAAQJ,EAAS7E,CAAG,CAAC,GAC9EyI,EAAYxD,EAAK,MAAQwD,EAAYxD,EAAK,MAC1CwD,EAAYF,GAChBL,GAAY3C,EAAK,KAAK,MAAM,KAAK,IAAI8C,EAAYI,CAAS,EAAG,KAAK,IAAIJ,EAAYI,CAAS,CAAC,EAC5F,IAAIE,EAAWL,IAAUzD,EAAUC,EAAM,OAAS,EAAI,GAAK,KAAOA,EAAMwD,GAASzD,EAAU,EAAI,GAAG,EAClG,OAAI8D,GAAYF,GAAaF,GAAWI,EAAS,OAAS9D,EAAU,EAAI,GAAKI,EAAK,MACvE2D,EAAgB,OAAOD,EAAS,KAAK,CAAC9D,EAAS7E,CAAG,EAAIuF,EAAK,KAAMoD,EAAS,QAAQ9D,EAAS7E,CAAG,EAAI,EAAI,GAAI2I,EAAS,KAAK,EAC5HC,EAAgB,OAAOH,EAAYlD,EAAK,KAAMN,EAAK,QAAQJ,EAAS7E,CAAG,EAAI,GAAK,EAAGiF,EAAK,KAAK,CACxG,CAtBS3J,EAAA6M,GAAA,gBAuBT,SAASU,GAAcC,EAAMlM,EAAMsB,EAAI,CACnC,QAAS,EAAItB,EAAM,EAAIsB,EAAI,IAAK,CAC5B,IAAI6H,EAAOvB,GAASsE,EAAK,WAAW,CAAC,CAAC,EACtC,GAAI/C,GAAQ,EACR,OAAOnC,GACX,GAAImC,GAAQ,GAAeA,GAAQ,EAC/B,OAAOlC,EACf,CACA,OAAOD,EACX,CATStI,EAAAuN,GAAA,iBAWT,IAAME,GAAuCC,EAAM,OAAO,EACpDC,GAAoCD,EAAM,OAAO,EACjDE,GAAmCF,EAAM,OAAO,EAChDG,GAA6BH,EAAM,OAAO,EAC1CI,GAA8BJ,EAAM,OAAO,EAC3CK,GAA4BL,EAAM,OAAO,EACzCM,GAAiCN,EAAM,OAAO,EAC9CO,GAAoCP,EAAM,OAAO,EACjDQ,GAAqCR,EAAM,OAAO,EAClDS,GAAoCT,EAAM,OAAO,CACnD,QAAS1N,EAAAoO,GAAUA,EAAO,KAAKpJ,GAAKA,CAAC,EAA5B,UACb,CAAC,EACKqJ,GAAqCX,EAAM,OAAO,CACpD,QAAS1N,EAAAoO,GAAUA,EAAO,KAAKpJ,GAAKA,CAAC,EAA5B,UACb,CAAC,EACKsJ,GAA6BZ,EAAM,OAAO,EAC1Ca,GAAN,MAAMC,CAAa,CA9xCnB,MA8xCmB,CAAAxO,EAAA,qBACf,YAAY2G,EAAOlB,EAAGT,EAAGW,EAASD,EAOlC+I,EAAa,GAAO,CAChB,KAAK,MAAQ9H,EACb,KAAK,EAAIlB,EACT,KAAK,EAAIT,EACT,KAAK,QAAUW,EACf,KAAK,QAAUD,EACf,KAAK,WAAa+I,CACtB,CACA,IAAIC,EAAS,CACT,OAAOA,EAAQ,MAAQ,KACnB,IAAIF,EAAa,KAAK,MAAM,IAAIE,CAAO,EAAG,KAAK,EAAG,KAAK,EAAG,KAAK,QAAS,KAAK,QAAS,KAAK,UAAU,CAC7G,CACA,KAAKC,EAAO,CACR,OAAO,KAAK,MAAM,IAAMA,EAAM,IAAI,OAAS,KACvC,IAAIH,EAAalB,EAAgB,OAAOqB,EAAM,IAAI,MAAM,EAAG,KAAK,EAAG,KAAK,EAAG,KAAK,QAAS,KAAK,QAAS,KAAK,UAAU,CAC9H,CACJ,EACMC,GAA8BC,EAAY,OAAO,CAAE,IAAK7O,EAAA,CAAC8O,EAAG3F,IAAO2F,EAAE,IAAI3F,CAAE,EAAnB,MAAqB,CAAC,EAC9E4F,GAAwCF,EAAY,OAAO,EAajE,SAASG,GAAaL,EAAOM,EAAWlE,EAAS,CAC7C,IAAImE,EAAUP,EAAM,MAAMd,EAAa,EACnCqB,EAAQ,OACRA,EAAQ,CAAC,EAAED,CAAS,EACf,OAAO,SAAW,OAAO,QAAQ,OAAOA,CAAS,EAAGlE,EAAS,OAAW,OAAWkE,CAAS,IAC5FlE,EACL,QAAQ,MAAMA,EAAU,IAAKkE,CAAS,EAEtC,QAAQ,MAAMA,CAAS,EAC/B,CATSjP,EAAAgP,GAAA,gBAUT,IAAMG,GAAwBzB,EAAM,OAAO,CAAE,QAAS1N,EAAAoO,GAAUA,EAAO,OAASA,EAAO,CAAC,EAAI,GAAtC,UAA2C,CAAC,EAC9FgB,GAAe,EACbC,GAA0B3B,EAAM,OAAO,CACzC,QAAQ4B,EAAS,CACb,OAAOA,EAAQ,OAAO,CAACvG,EAAGnI,IAAM,CAC5B,QAAS+J,EAAI,EAAGA,EAAI/J,EAAG+J,IACnB,GAAI2E,EAAQ3E,CAAC,EAAE,QAAU5B,EAAE,OACvB,MAAO,GACf,MAAO,EACX,CAAC,CACL,CACJ,CAAC,EASKwG,GAAN,MAAMC,CAAW,CAn2CjB,MAm2CiB,CAAAxP,EAAA,mBACb,YAIAyP,EAIAC,EAIAC,EAIAC,EAAmBC,EAAiB,CAChC,KAAK,GAAKJ,EACV,KAAK,OAASC,EACd,KAAK,iBAAmBC,EACxB,KAAK,kBAAoBC,EACzB,KAAK,eAAiBC,EAAgB,IAAI,EAC1C,KAAK,UAAY,KAAK,eAAe,OAAOR,GAAW,GAAG,CAAE,OAAQ,KAAM,IAAK,MAAU,CAAC,CAAC,CAC/F,CAIA,GAAGS,EAAK,CACJ,OAAO,KAAK,eAAe,OAAOT,GAAW,GAAG,CAAE,OAAQ,KAAM,IAAAS,CAAI,CAAC,CAAC,CAC1E,CAKA,OAAO,OAAOJ,EAAQ1N,EAAM,CACxB,GAAM,CAAE,cAAA+N,EAAe,eAAAC,EAAgB,QAAAC,EAAS,YAAaC,CAAK,EAAIlO,GAAQ,CAAC,EAC/E,OAAO,IAAIwN,EAAWJ,KAAgBM,EAAQK,EAAeC,EAAgBG,GAAU,CACnF,IAAIC,EAAM,CAAC,EACX,OAAIF,GACAE,EAAI,KAAKC,GAAY,GAAGhP,GAAQ,CAC5B,IAAIiP,EAAajP,EAAK,OAAO8O,CAAM,EACnC,OAAOG,EAAaJ,EAAKI,CAAU,EAAI1O,EAAW,IACtD,CAAC,CAAC,EACFqO,GACAG,EAAI,KAAKH,EAAQE,CAAM,CAAC,EACrBC,CACX,CAAC,CACL,CAKA,OAAO,UAAUG,EAAKvO,EAAM,CACxB,OAAOwN,EAAW,OAAO,CAACnO,EAAMyO,IAAQ,IAAIS,EAAIlP,EAAMyO,CAAG,EAAG9N,CAAI,CACpE,CACJ,EACMwO,GAAN,KAAqB,CA55CrB,MA45CqB,CAAAxQ,EAAA,uBACjB,YAAYgC,EAAM,CACd,KAAK,KAAOA,EAKZ,KAAK,WAAa,KAGlB,KAAK,MAAQ,IACjB,CACA,IAAI,QAAS,CAAE,OAAO,KAAK,MAAQ,KAAK,KAAK,MAAQ,CACrD,OAAOX,EAAM,CACT,GAAK,KAAK,OAWL,GAAI,KAAK,WAAY,CACtB,IAAIoP,EAAS,KAAK,WAElB,GADA,KAAK,WAAa,KACd,KAAK,MAAM,OACX,GAAI,CACA,KAAK,MAAM,OAAOA,CAAM,CAC5B,OACOC,EAAG,CAEN,GADA1B,GAAayB,EAAO,MAAOC,EAAG,2BAA2B,EACrD,KAAK,MAAM,QACX,GAAI,CACA,KAAK,MAAM,QAAQ,CACvB,MACU,CAAE,CAChB,KAAK,WAAW,CACpB,CAER,UA3BQ,KAAK,KACL,GAAI,CACA,KAAK,MAAQ,KAAK,KAAK,OAAO,OAAOrP,EAAM,KAAK,KAAK,GAAG,CAC5D,OACOqP,EAAG,CACN1B,GAAa3N,EAAK,MAAOqP,EAAG,2BAA2B,EACvD,KAAK,WAAW,CACpB,CAqBR,OAAO,IACX,CACA,QAAQrP,EAAM,CACV,IAAIyL,EACJ,GAAK,GAAAA,EAAK,KAAK,SAAW,MAAQA,IAAO,SAAkBA,EAAG,QAC1D,GAAI,CACA,KAAK,MAAM,QAAQ,CACvB,OACO4D,EAAG,CACN1B,GAAa3N,EAAK,MAAOqP,EAAG,2BAA2B,CAC3D,CAER,CACA,YAAa,CACT,KAAK,KAAO,KAAK,MAAQ,IAC7B,CACJ,EACMC,GAAgCjD,EAAM,OAAO,EAC7CkD,GAAiClD,EAAM,OAAO,EAE9C2C,GAA2B3C,EAAM,OAAO,EACxCmD,GAA6BnD,EAAM,OAAO,EAC1CoD,GAAgCpD,EAAM,OAAO,EAC7CqD,GAA4BrD,EAAM,OAAO,EACzCsD,GAAkCtD,EAAM,OAAO,EACrD,SAASuD,GAAkB5P,EAAM4I,EAAM,CACnC,IAAIG,EAAW/I,EAAK,MAAM,MAAM2P,EAAkB,EAClD,GAAI,CAAC5G,EAAS,OACV,OAAOA,EACX,IAAI8G,EAAO9G,EAAS,IAAIxJ,GAAKA,aAAa,SAAWA,EAAES,CAAI,EAAIT,CAAC,EAC5D8H,EAAS,CAAC,EACd,OAAAhG,EAAS,MAAMwO,EAAMjH,EAAK,KAAMA,EAAK,GAAI,CACrC,OAAQ,CAAE,EACV,KAAKkH,EAASC,EAAOC,EAAQC,EAAM,CAC/B,IAAIhQ,EAAO6P,EAAUlH,EAAK,KAAMrH,EAAKwO,EAAQnH,EAAK,KAC9CX,EAAQZ,EACZ,QAAS9H,EAAIyQ,EAAO,OAAS,EAAGzQ,GAAK,EAAGA,IAAK0Q,IAAQ,CACjD,IAAI7E,EAAY4E,EAAOzQ,CAAC,EAAE,KAAK,YAAa6P,EAG5C,GAFIhE,GAAa,OACbA,EAAYc,GAActD,EAAK,KAAM3I,EAAMsB,CAAE,GAC7C0O,EAAO,GAAKhI,EAAM,SACjBmH,EAASnH,EAAMA,EAAM,OAAS,CAAC,GAAG,IAAMhI,GAAQmP,EAAO,WAAahE,EACrEgE,EAAO,GAAK7N,EACZ0G,EAAQmH,EAAO,UAEd,CACD,IAAIc,EAAM,CAAE,KAAAjQ,EAAM,GAAAsB,EAAI,UAAA6J,EAAW,MAAO,CAAC,CAAE,EAC3CnD,EAAM,KAAKiI,CAAG,EACdjI,EAAQiI,EAAI,KAChB,CACJ,CACJ,CACJ,CAAC,EACM7I,CACX,CA7BS1I,EAAAiR,GAAA,qBA8BT,IAAMO,GAA6B9D,EAAM,OAAO,EAChD,SAAS+D,GAAiBpQ,EAAM,CAC5B,IAAI0D,EAAO,EAAG2M,EAAQ,EAAG1L,EAAM,EAAG2L,EAAS,EAC3C,QAAS9R,KAAUwB,EAAK,MAAM,MAAMmQ,EAAa,EAAG,CAChD,IAAII,EAAI/R,EAAOwB,CAAI,EACfuQ,IACIA,EAAE,MAAQ,OACV7M,EAAO,KAAK,IAAIA,EAAM6M,EAAE,IAAI,GAC5BA,EAAE,OAAS,OACXF,EAAQ,KAAK,IAAIA,EAAOE,EAAE,KAAK,GAC/BA,EAAE,KAAO,OACT5L,EAAM,KAAK,IAAIA,EAAK4L,EAAE,GAAG,GACzBA,EAAE,QAAU,OACZD,EAAS,KAAK,IAAIA,EAAQC,EAAE,MAAM,GAE9C,CACA,MAAO,CAAE,KAAA7M,EAAM,MAAA2M,EAAO,IAAA1L,EAAK,OAAA2L,CAAO,CACtC,CAhBS3R,EAAAyR,GAAA,oBAiBT,IAAMI,GAA2BnE,EAAM,OAAO,EACxCoE,GAAN,MAAMC,CAAa,CAjhDnB,MAihDmB,CAAA/R,EAAA,qBACf,YAAYgS,EAAOC,EAAKC,EAAOC,EAAK,CAChC,KAAK,MAAQH,EACb,KAAK,IAAMC,EACX,KAAK,MAAQC,EACb,KAAK,IAAMC,CACf,CACA,KAAK5Q,EAAO,CACR,OAAO,IAAIwQ,EAAa,KAAK,IAAI,KAAK,MAAOxQ,EAAM,KAAK,EAAG,KAAK,IAAI,KAAK,IAAKA,EAAM,GAAG,EAAG,KAAK,IAAI,KAAK,MAAOA,EAAM,KAAK,EAAG,KAAK,IAAI,KAAK,IAAKA,EAAM,GAAG,CAAC,CAC9J,CACA,SAAS6Q,EAAK,CACV,IAAIxR,EAAIwR,EAAI,OAAQC,EAAK,KACzB,KAAOzR,EAAI,EAAGA,IAAK,CACf,IAAI+F,EAAQyL,EAAIxR,EAAI,CAAC,EACrB,GAAI,EAAA+F,EAAM,MAAQ0L,EAAG,KAErB,IAAI1L,EAAM,IAAM0L,EAAG,MACf,MACJA,EAAKA,EAAG,KAAK1L,CAAK,EAClByL,EAAI,OAAOxR,EAAI,EAAG,CAAC,EACvB,CACA,OAAAwR,EAAI,OAAOxR,EAAG,EAAGyR,CAAE,EACZD,CACX,CAMA,OAAO,iBAAiBE,EAAMnP,EAAQ,CAClC,GAAIA,EAAO,QAAU,EACjB,OAAOmP,EACX,IAAI5J,EAAS,CAAC,EACd,QAAS6J,EAAK,EAAGC,EAAK,EAAGrO,EAAM,IAAK,CAChC,IAAIsO,EAAQF,EAAKD,EAAK,OAASA,EAAKC,CAAE,EAAE,MAAQ,IAC5CG,EAAQF,EAAKrP,EAAO,OAASA,EAAOqP,CAAE,EAAI,IAC1CN,EAAQ,KAAK,IAAIO,EAAOC,CAAK,EACjC,GAAIR,GAAS,IACT,MACJ,IAAIF,EAAQE,EAAQ/N,EAAKgO,EAAMD,EAAOD,EAAMD,EAC5C,OACI,GAAIQ,EAAKrP,EAAO,QAAUA,EAAOqP,CAAE,GAAKL,EAAK,CACzC,IAAI9P,EAAMc,EAAOqP,EAAK,CAAC,EACvBA,GAAM,EACNL,EAAM,KAAK,IAAIA,EAAK9P,CAAG,EACvB,QAASzB,EAAI2R,EAAI3R,EAAI0R,EAAK,QAAUA,EAAK1R,CAAC,EAAE,OAASuR,EAAKvR,IACtDuD,EAAMmO,EAAK1R,CAAC,EAAE,IAAM0R,EAAK1R,CAAC,EAAE,IAChCqR,EAAM,KAAK,IAAIA,EAAK5P,EAAM8B,CAAG,CACjC,SACSoO,EAAKD,EAAK,QAAUA,EAAKC,CAAE,EAAE,OAASJ,EAAK,CAChD,IAAIpG,EAAOuG,EAAKC,GAAI,EACpBJ,EAAM,KAAK,IAAIA,EAAKpG,EAAK,GAAG,EAC5BkG,EAAM,KAAK,IAAIA,EAAKlG,EAAK,GAAG,EAC5B5H,EAAM4H,EAAK,IAAMA,EAAK,GAC1B,KAEI,OAGRrD,EAAO,KAAK,IAAIqJ,EAAaC,EAAOC,EAAKC,EAAOC,CAAG,CAAC,CACxD,CACA,OAAOzJ,CACX,CACJ,EAKMiK,GAAN,MAAMC,CAAW,CArlDjB,MAqlDiB,CAAA5S,EAAA,mBACb,YAIAqB,EAIAsN,EAIAkE,EAAc,CACV,KAAK,KAAOxR,EACZ,KAAK,MAAQsN,EACb,KAAK,aAAekE,EAIpB,KAAK,MAAQ,EACb,KAAK,WAAaxR,EAAK,MACvB,KAAK,QAAUyR,GAAU,MAAM,KAAK,WAAW,IAAI,MAAM,EACzD,QAASC,KAAMF,EACX,KAAK,QAAU,KAAK,QAAQ,QAAQE,EAAG,OAAO,EAClD,IAAIC,EAAgB,CAAC,EACrB,KAAK,QAAQ,kBAAkB,CAAChB,EAAOC,EAAKC,EAAOC,IAAQa,EAAc,KAAK,IAAIlB,GAAaE,EAAOC,EAAKC,EAAOC,CAAG,CAAC,CAAC,EACvH,KAAK,cAAgBa,CACzB,CAIA,OAAO,OAAO3R,EAAMsN,EAAOkE,EAAc,CACrC,OAAO,IAAID,EAAWvR,EAAMsN,EAAOkE,CAAY,CACnD,CAMA,IAAI,iBAAkB,CAClB,OAAQ,KAAK,MAAQ,GAA+B,CACxD,CAOA,IAAI,eAAgB,CAChB,OAAQ,KAAK,MAAQ,GAAoC,CAC7D,CAKA,IAAI,eAAgB,CAChB,OAAQ,KAAK,MAAQ,GAA6B,CACtD,CAKA,IAAI,iBAAkB,CAClB,OAAO,KAAK,aAAe,KAAK,MAAS,IAA6D,CAC1G,CAIA,IAAI,cAAe,CACf,OAAQ,KAAK,MAAQ,GAA4B,CACrD,CAIA,IAAI,YAAa,CACb,MAAO,CAAC,KAAK,QAAQ,KACzB,CAIA,IAAI,cAAe,CACf,OAAO,KAAK,aAAa,KAAKE,GAAMA,EAAG,SAAS,CACpD,CAIA,IAAI,OAAQ,CAAE,OAAO,KAAK,OAAS,GAAK,KAAK,aAAa,QAAU,CAAG,CAC3E,EAEME,GAAa,CAAC,EACdC,GAAN,KAAW,CAhrDX,MAgrDW,CAAAlT,EAAA,aACP,YAAYU,EAAKiM,EAAQzB,EAAQ,EAAG,CAChC,KAAK,IAAMxK,EACX,KAAK,OAASiM,EACd,KAAK,MAAQzB,EACb,KAAK,OAAS,KACdxK,EAAI,OAAS,IACjB,CACA,IAAI,YAAa,CAAE,OAAQ,KAAK,MAAQ,CAA8B,CACtE,IAAI,UAAW,CAAE,OAAOuS,EAAY,CACpC,UAAW,CAAE,MAAO,EAAO,CAC3B,IAAI,UAAW,CAAE,MAAO,EAAO,CAC/B,aAAc,CAAE,MAAO,EAAO,CAC9B,QAAS,CAAE,MAAO,EAAO,CACzB,QAAS,CAAE,MAAO,EAAO,CACzB,SAAU,CAAE,MAAO,EAAO,CAC1B,IAAI,UAAW,CAAE,OAAO,IAAM,CAC9B,KAAKE,EAAO,CAER,GADA,KAAK,OAAS,EACV,KAAK,MAAQ,EAA6B,CAC1C,KAAK,OAAS,GACd,IAAIxS,EAAQ,KAAK,SACbA,GACAF,GAAS,KAAK,IAAKE,CAAK,CAChC,CACJ,CACA,UAAW,CACP,OAAO,KAAK,YAAY,MAAQ,KAAK,SAAS,OAAS,IAAI,KAAK,QAAQ,IAAM,KAAO,KAAK,WAAa,IAAM,GACjH,CACA,SAAU,CAAE,KAAK,OAAS,IAAM,CAChC,OAAOD,EAAK,CACR,KAAK,IAAMA,EACXA,EAAI,OAAS,IACjB,CACA,IAAI,YAAa,CACb,OAAO,KAAK,OAAS,KAAK,OAAO,UAAU,IAAI,EAAI,CACvD,CACA,IAAI,UAAW,CACX,OAAO,KAAK,WAAa,KAAK,MAClC,CACA,UAAU0S,EAAMhR,EAAQ,KAAK,WAAY,CACrC,IAAIX,EAAMW,EACV,QAASiR,KAAS,KAAK,SAAU,CAC7B,GAAIA,GAASD,EACT,OAAO3R,EACXA,GAAO4R,EAAM,OAASA,EAAM,UAChC,CACA,MAAM,IAAI,WAAW,4BAA4B,CACrD,CACA,SAASD,EAAM,CACX,OAAO,KAAK,UAAUA,CAAI,EAAIA,EAAK,MACvC,CACA,OAAO1R,EAAM,CAAE,MAAO,EAAM,CAC5B,SAASD,EAAKC,EAAM,CAAE,OAAO,IAAM,CACnC,UAAUyC,EAAKzC,EAAM,CACjB,IAAI8C,EAAQD,GAAS,KAAK,GAAG,EACzB+O,EAAQ,KAAK,OAASnP,EAAM,EAAIzC,EAAO,EAC3C,OAAO,IAAIwG,GAAO,KAAK,OAAO,IAAK1D,GAAS8O,EAAQ,EAAI,GAAInP,GAAO,GAAKA,GAAO,KAAK,MAAM,CAC9F,CACA,UAAUxD,EAAO,CACb,KAAK,OAAS,GACVA,IACA,KAAK,OAAS,GACd,KAAK,QAAW,KAAK,OAAO,MAAQ,GACpC,KAAK,OAAO,UAAU,EAAK,CACnC,CACA,IAAI,iBAAkB,CAAE,OAAO,IAAM,CACrC,IAAI,MAAO,CACP,QAASmO,EAAI,KAAMA,EAAGA,EAAIA,EAAE,OACxB,GAAIA,aAAayE,GACb,OAAOzE,EACf,OAAO,IACX,CACA,OAAO,IAAIpO,EAAK,CACZ,OAAOA,EAAI,MACf,CACJ,EACM8S,GAAN,cAA4BN,EAAK,CA7vDjC,MA6vDiC,CAAAlT,EAAA,sBAC7B,YAAYU,EAAK,CACb,MAAMA,EAAK,CAAC,EACZ,KAAK,UAAY,CAAC,CACtB,CACA,aAAc,CAAE,MAAO,EAAM,CAC7B,IAAI,UAAW,CAAE,OAAO,KAAK,SAAW,CACxC,IAAI,WAAY,CAAE,OAAO,KAAK,SAAS,OAAS,KAAK,SAAS,KAAK,SAAS,OAAS,CAAC,EAAI,IAAM,CAChG,OAAO2S,EAAO,CACV,KAAK,SAAS,KAAKA,CAAK,EACxBA,EAAM,OAAS,IACnB,CACA,KAAKF,EAAO,CACR,GAAI,KAAK,MAAQ,EACb,OACJ,MAAM,KAAKA,CAAK,EAChB,IAAIvO,EAAS,KAAK,IAAK7D,EAAO,KAAMgL,EAChC0H,EAA0DN,GAAM,MAASvO,EAASuO,EAAQ,KAC1FxG,EAAS,EACb,QAAS0G,KAAS,KAAK,SAAU,CAM7B,GALAA,EAAM,KAAKF,CAAK,EAChBxG,GAAU0G,EAAM,OAASA,EAAM,WAC/BtH,EAAOhL,EAAOA,EAAK,YAAc6D,EAAO,WACpC6O,GAAY1H,GAAQsH,EAAM,MAC1BI,EAAS,QAAU,IACnBJ,EAAM,IAAI,YAAczO,EACxB,KAAOmH,GAAQA,GAAQsH,EAAM,KACzBtH,EAAO2H,GAAK3H,CAAI,OAGpBnH,EAAO,aAAayO,EAAM,IAAKtH,CAAI,EAEvChL,EAAOsS,EAAM,GACjB,CAIA,IAHAtH,EAAOhL,EAAOA,EAAK,YAAc6D,EAAO,WACpC6O,GAAY1H,IACZ0H,EAAS,QAAU,IAChB1H,GACHA,EAAO2H,GAAK3H,CAAI,EACpB,KAAK,OAASY,CAClB,CACJ,EAEA,SAAS+G,GAAKhT,EAAK,CACf,IAAIqL,EAAOrL,EAAI,YACf,OAAAA,EAAI,WAAW,YAAYA,CAAG,EACvBqL,CACX,CAJS/L,EAAA0T,GAAA,QAMT,IAAMH,GAAN,cAAsBC,EAAc,CA9yDpC,MA8yDoC,CAAAxT,EAAA,gBAChC,YAAYqB,EAAMX,EAAK,CACnB,MAAMA,CAAG,EACT,KAAK,KAAOW,CAChB,CACA,KAAK+R,EAAM,CACP,KAAOA,EAAMA,EAAOA,EAAK,OACrB,GAAIA,GAAQ,KACR,MAAO,GACf,MAAO,EACX,CACA,SAAU,CAAE,MAAO,EAAM,CACzB,QAAQ1S,EAAK,CACT,OAAS,CACL,GAAI,CAACA,EACD,OAAO,KACX,IAAI0S,EAAOF,GAAK,IAAIxS,CAAG,EACvB,GAAI0S,GAAQ,KAAK,KAAKA,CAAI,EACtB,OAAOA,EACX1S,EAAMA,EAAI,UACd,CACJ,CACA,WAAWiT,EAAG,CACV,QAASzM,EAAQ,CAAC,EAAGrB,EAAM,KAAMjF,EAAI,EAAGa,EAAM,IAC1C,GAAIb,GAAKiF,EAAI,SAAS,OAAQ,CAC1B,GAAI,CAACqB,EAAM,OACP,OACJrB,EAAMA,EAAI,OACNA,EAAI,YACJpE,IACJb,EAAIsG,EAAM,IAAI,CAClB,KACK,CACD,IAAI6E,EAAOlG,EAAI,SAASjF,GAAG,EAC3B,GAAImL,aAAgB6H,GAChB1M,EAAM,KAAKtG,CAAC,EACZiF,EAAMkG,EACNnL,EAAI,MAEH,CACD,IAAIyB,EAAMZ,EAAMsK,EAAK,OACjBrD,EAASiL,EAAE5H,EAAMtK,CAAG,EACxB,GAAIiH,IAAW,OACX,OAAOA,EACXjH,EAAMY,EAAM0J,EAAK,UACrB,CACJ,CAER,CAKA,aAAatK,EAAKC,EAAM,CACpB,IAAImS,EAAQC,EAAY,GAAIR,EAAOS,EAAW,GAsB9C,GArBA,KAAK,WAAW,CAACX,EAAMjP,IAAQ,CAC3B,IAAI9B,EAAM8B,EAAMiP,EAAK,OACrB,GAAI3R,GAAO0C,GAAO1C,GAAOY,EAAK,CAC1B,GAAI+Q,EAAK,SAAS,GAAK1R,GAAQ,IAAMA,GAAQ,EAAG,CAC5C,GAAI0R,EAAK,MAAQ,GACb,MAAO,GACPA,EAAK,MAAQ,KACbS,EAAS,OACjB,EACK1P,EAAM1C,GAAOA,GAAOY,IAAQX,EAAO,GAAK0R,EAAK,OAASA,EAAK,OAAO,CAAC,MACnE,CAACS,GAAU,CAACT,EAAK,SAAS,GAAKS,EAAO,SAAS,KAChDA,EAAST,EACTU,EAAYrS,EAAM0C,IAEjB9B,EAAMZ,GAAOA,GAAO0C,IAAQzC,EAAO,EAAI0R,EAAK,OAASA,EAAK,OAAO,EAAE,MACnE,CAACE,GAAS,CAACF,EAAK,SAAS,GAAKE,EAAM,SAAS,KAC9CA,EAAQF,EACRW,EAAWtS,EAAM0C,EAEzB,CACJ,CAAC,EACG,CAAC0P,GAAU,CAACP,EACZ,MAAM,IAAI,MAAM,uBAAyB7R,CAAG,EAChD,OAAOoS,GAAUnS,EAAO,GAAK,CAAC4R,EAAQ,CAAE,KAAMO,EAAQ,OAAQC,CAAU,EAAI,CAAE,KAAMR,EAAO,OAAQS,CAAS,CAChH,CACJ,EACMH,GAAN,MAAMI,UAAyBR,EAAc,CA/3D7C,MA+3D6C,CAAAxT,EAAA,yBACzC,YAAYU,EAAKuT,EAAS,CACtB,MAAMvT,CAAG,EACT,KAAK,QAAUuT,CACnB,CACA,SAAU,CAAE,MAAO,EAAM,CACzB,OAAOvS,EAAM,CACT,OAAK,KAAK,SAAS,OAEZA,EAAO,EAAI,KAAK,SAAS,CAAC,EAAE,OAAO,EAAE,EAAI,KAAK,UAAU,OAAO,CAAC,EAD5D,EAEf,CACA,IAAI,UAAW,CAAE,OAAO,KAAK,QAAQ,UAAY,CACjD,OAAO,GAAGuS,EAASvT,EAAK,CACpB,IAAI0S,EAAO,IAAIY,EAAiBtT,GAAO,SAAS,cAAcuT,EAAQ,OAAO,EAAGA,CAAO,EACvF,OAAKvT,IACD0S,EAAK,OAAS,GACXA,CACX,CACJ,EACMc,GAAN,MAAMC,UAAiBX,EAAc,CAl5DrC,MAk5DqC,CAAAxT,EAAA,iBACjC,YAAYU,EAAKC,EAAO,CACpB,MAAMD,CAAG,EACT,KAAK,MAAQC,CACjB,CACA,QAAS,CAAE,MAAO,EAAM,CACxB,OAAO,MAAMA,EAAOD,EAAK0T,EAAW,CAChC,IAAInK,EAAO,IAAIkK,EAASzT,GAAO,SAAS,cAAc,KAAK,EAAGC,CAAK,EACnE,OAAI,CAACD,GAAO,CAAC0T,KACTnK,EAAK,OAAS,GACXA,CACX,CACA,IAAI,UAAW,CAAE,OAAO,KAAK,KAAO,CAEpC,cAAcxI,EAAKC,EAAM2S,EAAW,CAChC,IAAIR,EAAS,KAAMC,EAAY,GAAIR,EAAQ,KAAMS,EAAW,GAC5D,SAASO,EAAKlB,EAAM3R,EAAK,CACrB,QAASb,EAAI,EAAGuD,EAAM,EAAGvD,EAAIwS,EAAK,SAAS,QAAUjP,GAAO1C,EAAKb,IAAK,CAClE,IAAIyS,EAAQD,EAAK,SAASxS,CAAC,EAAGyB,EAAM8B,EAAMkP,EAAM,OAC5ChR,GAAOZ,IACH4R,EAAM,YAAY,EAClBiB,EAAKjB,EAAO5R,EAAM0C,CAAG,GAEf,CAACmP,GAASA,EAAM,WAAa5R,EAAO,GAAK2S,GAAaE,GAAWjB,EAAOD,CAAK,MAClFhR,EAAMZ,GAAQ4R,EAAM,MAAQ,KAC7BC,EAAQD,EACRU,EAAWtS,EAAM0C,IAEZA,EAAM1C,GAAQ4R,EAAM,MAAQ,IAA6B,CAACA,EAAM,YACrEQ,EAASR,EACTS,EAAYrS,EAAM0C,IAG1BA,EAAM9B,CACV,CACJ,CAnBSrC,EAAAsU,EAAA,QAoBTA,EAAK,KAAM7S,CAAG,EACd,IAAI3B,GAAW4B,EAAO,EAAImS,EAASP,IAAUO,GAAUP,EACvD,OAAOxT,EAAS,CAAE,KAAMA,EAAQ,OAAQA,GAAU+T,EAASC,EAAYC,CAAS,EAAI,IACxF,CACA,SAAStS,EAAKC,EAAM,CAChB,IAAI8S,EAAQ,KAAK,cAAc/S,EAAKC,EAAM,EAAI,EAC9C,OAAK8S,EAEEA,EAAM,KAAK,SAAS,KAAK,IAAI,EAAGA,EAAM,MAAM,EAAG9S,CAAI,EAD/C+S,GAAa,IAAI,CAEhC,CACA,MAAMhT,EAAKC,EAAM,CACb,IAAI8S,EAAQ,KAAK,cAAc/S,EAAKC,CAAI,EACxC,GAAI8S,EAAO,CACP,GAAI,CAAE,KAAApB,EAAM,OAAAxL,CAAO,EAAI4M,EACvB,GAAI,KAAK,IAAI,SAASpB,EAAK,GAAG,EAC1B,OAAIA,EAAK,OAAO,EACL,IAAIlL,GAAOkL,EAAK,IAAK,KAAK,IAAIA,EAAK,IAAI,UAAU,OAAQxL,CAAM,CAAC,EACpEwL,EAAK,UAAUxL,EAAQwL,EAAK,MAAQ,GAA2B,EAAIA,EAAK,MAAQ,GAA0B,GAAK1R,CAAI,EAE9H,IAAIkD,EAAS4P,EAAM,KAAK,OAAQE,EAAM,GACtC,QAASvL,KAAMvE,EAAO,SAAU,CAC5B,GAAI8P,EACA,OAAO,IAAIxM,GAAOiB,EAAG,IAAK,CAAC,EAC3BA,GAAMqL,EAAM,OACZE,EAAM,GAEd,CACJ,CACA,OAAO,IAAIxM,GAAO,KAAK,IAAK,CAAC,CACjC,CACJ,EACA,SAASuM,GAAarB,EAAM,CACxB,IAAI/P,EAAO+P,EAAK,IAAI,UACpB,GAAI,CAAC/P,EACD,OAAO+P,EAAK,IAAI,sBAAsB,EAC1C,IAAIuB,EAAQ3Q,GAAeX,CAAI,EAC/B,OAAOsR,EAAMA,EAAM,OAAS,CAAC,GAAK,IACtC,CANS3U,EAAAyU,GAAA,gBAOT,SAASF,GAAWpU,EAAGC,EAAG,CACtB,IAAIwU,EAAOzU,EAAE,SAAS,EAAG,CAAC,EAAG0U,EAAOzU,EAAE,SAAS,EAAG,CAAC,EACnD,OAAOwU,GAAQC,GAAQA,EAAK,IAAMD,EAAK,MAC3C,CAHS5U,EAAAuU,GAAA,cAIT,IAAMO,GAAN,MAAMC,UAAiBvB,EAAc,CAh+DrC,MAg+DqC,CAAAxT,EAAA,iBACjC,YAAYU,EAAKsU,EAAM,CACnB,MAAMtU,CAAG,EACT,KAAK,KAAOsU,CAChB,CACA,IAAI,UAAW,CAAE,OAAO,KAAK,KAAK,KAAO,CACzC,OAAO,GAAGA,EAAMtU,EAAK,CACjB,IAAI0S,EAAO,IAAI2B,EAASrU,GAAO,SAAS,cAAcsU,EAAK,OAAO,EAAGA,CAAI,EACzE,OAAKtU,IACD0S,EAAK,OAAS,GACXA,CACX,CACJ,EACM6B,GAAN,MAAMC,UAAiBhC,EAAK,CA7+D5B,MA6+D4B,CAAAlT,EAAA,iBACxB,YAAYU,EAAK8M,EAAM,CACnB,MAAM9M,EAAK8M,EAAK,MAAM,EACtB,KAAK,KAAOA,CAChB,CACA,KAAK2F,EAAO,CACJ,KAAK,MAAQ,IAEjB,MAAM,KAAKA,CAAK,EACZ,KAAK,IAAI,WAAa,KAAK,OACvBA,GAASA,EAAM,MAAQ,KAAK,MAC5BA,EAAM,QAAU,IACpB,KAAK,IAAI,UAAY,KAAK,MAElC,CACA,QAAS,CAAE,MAAO,EAAM,CACxB,UAAW,CAAE,OAAO,KAAK,UAAU,KAAK,IAAI,CAAG,CAC/C,SAAS1R,EAAKC,EAAM,CAChB,IAAIiL,EAAS,KAAK,IAAI,UAAU,OAC5BlL,EAAMkL,IACNlL,EAAMkL,GACV,IAAIrL,EAAOG,EAAKmB,EAAKnB,EAAK0T,EAAU,EAChC1T,GAAO,GAAKC,EAAO,GAAKD,GAAOkL,GAAUjL,GAAQ,EAC3C/B,EAAQ,QAAUA,EAAQ,QACxB8B,GACAH,IACA6T,EAAU,GAELvS,EAAK+J,IACV/J,IACAuS,EAAU,KAKdzT,EAAO,EACPJ,IACKsB,EAAK+J,GACV/J,IAER,IAAI+R,EAAQ1Q,GAAU,KAAK,IAAK3C,EAAMsB,CAAE,EAAE,eAAe,EACzD,GAAI,CAAC+R,EAAM,OACP,OAAO,KACX,IAAI7P,EAAO6P,GAAOQ,EAAUA,EAAU,EAAIzT,GAAQ,GAAK,EAAIiT,EAAM,OAAS,CAAC,EAC3E,OAAIhV,EAAQ,QAAU,CAACwV,GAAWrQ,EAAK,OAAS,IAC5CA,EAAO,MAAM,UAAU,KAAK,KAAK6P,EAAO1L,GAAKA,EAAE,KAAK,GAAKnE,GACtDqQ,EAAUtQ,GAAYC,EAAMqQ,EAAU,CAAC,EAAIrQ,GAAQ,IAC9D,CACA,OAAO,GAAG0I,EAAM9M,EAAK,CACjB,IAAI0S,EAAO,IAAI8B,EAASxU,GAAO,SAAS,eAAe8M,CAAI,EAAGA,CAAI,EAClE,OAAK9M,IACD0S,EAAK,OAAS,GACXA,CACX,CACJ,EACMgC,GAAN,MAAMC,UAAmBnC,EAAK,CApiE9B,MAoiE8B,CAAAlT,EAAA,mBAC1B,YAAYU,EAAKiM,EAAQvL,EAAQ8J,EAAO,CACpC,MAAMxK,EAAKiM,EAAQzB,CAAK,EACxB,KAAK,OAAS9J,CAClB,CACA,UAAW,CAAE,MAAO,EAAM,CAC1B,IAAI,UAAW,CAAE,OAAO,KAAK,OAAO,QAAU,CAC9C,OAAOM,EAAM,CACT,OAAI,KAAK,MAAQ,GACN,IACH,KAAK,OAASA,EAAO,EAAI,GAA6B,MAA8B,CAChG,CACA,SAASD,EAAKC,EAAM,CAAE,OAAO,KAAK,eAAeD,EAAKC,EAAM,EAAK,CAAG,CACpE,eAAeD,EAAKC,EAAMQ,EAAO,CAC7B,IAAIoT,EAAS,KAAK,OAAO,SAAS,KAAK,IAAK7T,EAAKC,CAAI,EACrD,GAAI4T,EACA,OAAOA,EACX,GAAIpT,EACA,OAAO2C,GAAY,KAAK,IAAI,sBAAsB,EAAG,KAAK,OAASpD,GAAO,EAAIC,GAAQ,CAAC,EAEtF,CACD,IAAIiT,EAAQ,KAAK,IAAI,eAAe,EAAG7P,EAAO,KAC9C,GAAI,CAAC6P,EAAM,OACP,OAAO,KACX,IAAIY,EAAY,KAAK,MAAQ,GAA4B,GAAQ,KAAK,MAAQ,GAA2B,GAAQ9T,EAAM,EACvH,QAASb,EAAI2U,EAAWZ,EAAM,OAAS,EAAI,EACvC7P,EAAO6P,EAAM/T,CAAC,EACV,EAAAa,EAAM,EAAIb,GAAK,EAAIA,GAAK+T,EAAM,OAAS,GAAK7P,EAAK,IAAMA,EAAK,QAFrBlE,GAAM2U,EAAW,GAAK,EAEjE,CAGJ,OAAO1Q,GAAYC,EAAM,CAACyQ,CAAQ,CACtC,CACJ,CACA,IAAI,iBAAkB,CAClB,GAAI,CAAC,KAAK,OACN,OAAOC,EAAK,MAChB,GAAI,CAAE,KAAA7R,CAAK,EAAI,KACf,GAAI,CAACA,EACD,OAAO6R,EAAK,MAChB,IAAIpT,EAAQ,KAAK,WACjB,OAAOuB,EAAK,KAAK,MAAM,IAAI,MAAMvB,EAAOA,EAAQ,KAAK,MAAM,CAC/D,CACA,SAAU,CACN,MAAM,QAAQ,EACd,KAAK,OAAO,QAAQ,KAAK,GAAG,CAChC,CACA,OAAO,GAAGhB,EAAQC,EAAMsL,EAAQzB,EAAOxK,EAAK,CACxC,OAAKA,IACDA,EAAMU,EAAO,MAAMC,CAAI,EAClBD,EAAO,WACRV,EAAI,gBAAkB,UAEvB,IAAI2U,EAAW3U,EAAKiM,EAAQvL,EAAQ8J,CAAK,CACpD,CACJ,EAIMuK,GAAN,cAA+BvC,EAAK,CA9lEpC,MA8lEoC,CAAAlT,EAAA,yBAChC,YAAYkL,EAAO,CACf,IAAIwK,EAAM,SAAS,cAAc,KAAK,EACtCA,EAAI,UAAY,kBAChBA,EAAI,aAAa,cAAe,MAAM,EACtC,MAAMA,EAAK,EAAGxK,CAAK,CACvB,CACA,IAAI,UAAW,CAAE,MAAO,EAAM,CAC9B,IAAI,iBAAkB,CAAE,OAAOsK,EAAK,KAAO,CAC3C,SAAS/T,EAAK,CAAE,OAAO,KAAK,IAAI,sBAAsB,CAAG,CAC7D,EAEMkU,GAAN,KAAkB,CA1mElB,MA0mEkB,CAAA3V,EAAA,oBACd,YAAYgG,EAAK,CACb,KAAK,MAAQ,EACb,KAAK,YAAc,GACnB,KAAK,QAAU,CAAC,EAChB,KAAK,KAAOA,CAChB,CAKA,QAAQ4P,EAAMlU,EAAMmU,EAAQ,CACxB,GAAI,CAAE,KAAAzC,EAAM,MAAA5O,EAAO,YAAAsR,EAAa,QAAAC,CAAQ,EAAI,KAC5C,KAAOH,GAAQlU,EAAO,GAClB,GAAK0R,EAAK,YAAY,EAiBjB,GAAI0C,EAAa,CAClB,GAAI,CAACF,EACD,MACAC,GACAA,EAAO,MAAM,EACjBD,IACAE,EAAc,EAClB,SACStR,GAAS4O,EAAK,SAAS,OAAQ,CACpC,GAAI,CAACwC,GAAQ,CAACG,EAAQ,OAClB,MACAF,GACAA,EAAO,MAAMzC,CAAI,EACrB0C,EAAc,CAAC,CAAC1C,EAAK,WACpB,CAAE,KAAAA,EAAM,MAAA5O,CAAM,EAAIuR,EAAQ,IAAI,EAC/BvR,GACJ,KACK,CACD,IAAIuH,EAAOqH,EAAK,SAAS5O,CAAK,EAAGwR,EAAMjK,EAAK,YACvCrK,EAAO,EAAIqK,EAAK,QAAU6J,EAAO7J,EAAK,OAAS6J,KAC/C,CAACC,GAAUA,EAAO,KAAK9J,EAAM,EAAGA,EAAK,MAAM,IAAM,IAAS,CAACA,EAAK,cACjE+J,EAAc,CAAC,CAACE,EAChBxR,IACAoR,GAAQ7J,EAAK,SAGbgK,EAAQ,KAAK,CAAE,KAAA3C,EAAM,MAAA5O,CAAM,CAAC,EAC5B4O,EAAOrH,EACPvH,EAAQ,EACJqR,GAAU9J,EAAK,YAAY,GAC3B8J,EAAO,MAAM9J,CAAI,EAE7B,SAhDQvH,GAAS4O,EAAK,OACd0C,EAAc,CAAC,CAAC1C,EAAK,WACpB,CAAE,KAAAA,EAAM,MAAA5O,CAAM,EAAIuR,EAAQ,IAAI,EAC/BvR,YAEMoR,EAGL,CACD,IAAIK,EAAO,KAAK,IAAIL,EAAMxC,EAAK,OAAS5O,CAAK,EACzCqR,GACAA,EAAO,KAAKzC,EAAM5O,EAAOA,EAAQyR,CAAI,EACzCL,GAAQK,EACRzR,GAASyR,CACb,KARI,OA4CZ,YAAK,KAAO7C,EACZ,KAAK,MAAQ5O,EACb,KAAK,YAAcsR,EACZ,IACX,CACA,IAAI,MAAO,CAAE,OAAQ,KAAK,QAAQ,OAAS,KAAK,QAAQ,CAAC,EAAE,KAAO,KAAK,IAAO,CAClF,EAGMI,GAAN,KAAkB,CAprElB,MAorEkB,CAAAlW,EAAA,oBACd,YAAYsB,EAAMsB,EAAIqR,EAASkC,EAAM,CACjC,KAAK,KAAO7U,EACZ,KAAK,GAAKsB,EACV,KAAK,QAAUqR,EACf,KAAK,KAAOkC,CAChB,CACJ,EAcMC,GAAN,KAAkB,CAzsElB,MAysEkB,CAAApW,EAAA,oBACd,YAAYqW,EAAO1S,EAAMkN,EAAe,CACpC,KAAK,MAAQwF,EACb,KAAK,KAAO1S,EACZ,KAAK,cAAgBkN,EACrB,KAAK,QAAU,KACf,KAAK,UAAY,KACjB,KAAK,YAAc,KACnB,KAAK,IAAM,EACX,KAAK,SAAW,CAAC,EACjB,KAAK,WAAa,CACtB,CACA,QAAQrD,EAAM8I,EAAOC,EAAWnD,EAAM,CAClC,IAAItG,EACJ,KAAK,YAAY,EACjB,IAAIlI,EAAS,KAAK,YAAY0R,EAAOC,CAAS,EAC1CxV,EAAO6D,EAAO,UAClB,GAAI7D,GAAQA,EAAK,OAAO,GAAK,EAAEA,EAAK,MAAQ,IAAiCA,EAAK,OAASyM,EAAK,OAAS,IAAmB,CACxH,KAAK,MAAM,OAAO,IAAIzM,EAAM,CAAkB,EAC9C,IAAIqS,EAAOxO,EAAO,SAASA,EAAO,SAAS,OAAS,CAAC,EAAI,IAAIqQ,GAASlU,EAAK,IAAKA,EAAK,KAAOyM,CAAI,EAChG4F,EAAK,OAASxO,CAClB,MAEIA,EAAO,OAAOwO,GAAQ6B,GAAS,GAAGzH,GAAOV,EAAK,KAAK,MAAM,KAAKmI,EAAQ,KAAO,MAAQnI,IAAO,OAAS,OAASA,EAAG,GAAG,CAAC,EAEzH,KAAK,KAAOU,EAAK,OACjB,KAAK,YAAc,IACvB,CACA,eAAegJ,EAAazL,EAAS,CACjC,IAAId,EAAO,KAAK,QACZA,EAAK,KAAOc,EAAQ,KAAK,MACzBd,EAAK,OAAO,KAAK,MAAM,OAAO,IAAIc,EAAQ,IAAI,EAAI0L,GAAS1L,EAAQ,KAAK,GAAG,EAAIA,EAAQ,KAAK,GAAG,EAC/F,KAAK,MAAM,OAAO,IAAIA,EAAQ,KAAM,CAAkB,GAE1D,IAAI2L,EAAOzM,EACX,QAASrJ,EAAImK,EAAQ,MAAM,OAAS,EAAGnK,GAAK,EAAGA,IAAK,CAChD,IAAIoU,EAAOjK,EAAQ,MAAMnK,CAAC,EACtByC,EAAOqT,EAAK,UAChB,GAAIrT,aAAgByR,IAAYzR,EAAK,KAAK,GAAG2R,EAAK,IAAI,EAC9C3R,EAAK,KAAO2R,EAAK,KACjB3R,EAAK,OAAOoT,GAASzB,EAAK,GAAG,CAAC,EAClC0B,EAAOrT,MAEN,CACD,GAAI,KAAK,MAAM,OAAO,IAAI2R,CAAI,EAAG,CAC7B,IAAI5B,EAAOF,GAAK,IAAI8B,EAAK,GAAG,EACxB5B,GACAA,EAAK,OAAOqD,GAASzB,EAAK,GAAG,CAAC,CACtC,CACA,IAAI2B,EAAK7B,GAAS,GAAGE,EAAK,KAAMA,EAAK,GAAG,EACxC0B,EAAK,OAAOC,CAAE,EACdD,EAAOC,CACX,CACA,KAAK,MAAM,OAAO,IAAI3B,EAAM,CAAkB,CAClD,CACA,IAAI4B,EAAU1D,GAAK,IAAIsD,EAAY,IAAI,EACnCI,GACA,KAAK,MAAM,OAAO,IAAIA,EAAS,CAAkB,EACrD,IAAIpJ,EAAO,IAAIyH,GAASuB,EAAY,KAAMA,EAAY,KAAK,SAAS,EACpEhJ,EAAK,OAAS,EACdkJ,EAAK,OAAOlJ,CAAI,CACpB,CACA,gBAAgBpM,EAAQkV,EAAOC,EAAW,CAEtC,IAAIM,EAAU,KAAK,aAAgBzV,EAAO,MAAQ,KAC7C,KAAK,YAAY,MAAQ,MAAmCA,EAAO,MAAQ,IAC3EyV,GACD,KAAK,YAAY,EACrB,IAAIjS,EAAS,KAAK,YAAY0R,EAAOC,CAAS,EAC1C,CAACM,GAAW,EAAEzV,EAAO,MAAQ,KAC7BwD,EAAO,OAAO,KAAK,UAAU,CAAC,CAAC,EACnCA,EAAO,OAAOxD,CAAM,EACpB,KAAK,KAAOA,EAAO,OACnB,KAAK,YAAcA,CACvB,CACA,QAAQgS,EAAMkD,EAAOC,EAAW,CAC5B,KAAK,YAAY,EACJ,KAAK,YAAYD,EAAOC,CAAS,EACvC,OAAOnD,CAAI,EAClB,KAAK,KAAOA,EAAK,OACjB,KAAK,YAAc,IACvB,CACA,eAAehS,EAAQ,CACnB,KAAK,YAAY,EAAE,OAAOA,CAAM,EAChC,KAAK,KAAOA,EAAO,OACnB,KAAK,UAAYA,EACjB,KAAK,QAAQ,CACjB,CACA,eAAeuL,EAAQ,CACnB,IAAIvL,EAAS,KAAK,aAAe,KAAK,UACtCA,EAAO,QAAUuL,EACjB,KAAK,KAAOA,CAChB,CACA,aAAahM,EAAOD,EAAK,CACrB,IAAIoM,EACCnM,IACDA,EAAQmW,IACZ,IAAI1D,EAAOc,GAAS,MAAMvT,EAAOD,KAASoM,EAAK,KAAK,MAAM,KAAKoH,EAAQ,KAAO,MAAQpH,IAAO,OAAS,OAASA,EAAG,KAAM,CAAC,CAACpM,CAAG,EAC7H,KAAK,YAAY,EAAE,OAAO,KAAK,UAAY,KAAK,QAAU0S,CAAI,CAClE,CACA,QAAQA,EAAM,CACV,KAAK,YAAY,EAAE,OAAOA,CAAI,EAC9B,KAAK,KAAOA,EAAK,OACjB,KAAK,UAAYA,EACjB,KAAK,QAAQ,CACjB,CACA,UAAW,CACP,KAAK,UAAU,OAAS,EACxB,KAAK,QAAQ,EACb,KAAK,KACT,CACA,yBAAyBzS,EAAO,CACvB,KAAK,gBAAgB,GACtB,KAAK,aAAaA,CAAK,CAC/B,CACA,WAAWA,EAAO,CACT,KAAK,SACN,KAAK,aAAaA,CAAK,CAC/B,CACA,YAAY2V,EAAOC,EAAW,CAC1B,IAAIzJ,EACJ,IAAIlI,EAAS,KAAK,QAClB,QAAShE,EAAI0V,EAAM,OAAS,EAAG1V,GAAK,EAAGA,IAAK,CACxC,IAAIoU,EAAOsB,EAAM1V,CAAC,EAAGyC,EACrB,GAAIkT,EAAY,IAAMlT,EAAOuB,EAAO,YAAcvB,aAAgByR,IAAYzR,EAAK,KAAK,GAAG2R,CAAI,EAC3FpQ,EAASvB,EACTkT,QAEC,CACD,IAAInD,EAAO0B,GAAS,GAAGE,GAAOlI,EAAK,KAAK,MAAM,KAAKgI,GAAUlD,GAAKA,EAAE,KAAK,GAAGoD,CAAI,CAAC,KAAO,MAAQlI,IAAO,OAAS,OAASA,EAAG,GAAG,EAC/HlI,EAAO,OAAOwO,CAAI,EAClBxO,EAASwO,EACTmD,EAAY,CAChB,CACJ,CACA,OAAO3R,CACX,CACA,SAAU,CACN,GAAI,KAAK,QAAS,CACd,KAAK,YAAY,EACjB,IAAIvB,EAAO,KAAK,QAAQ,WACpB,CAACA,GAAQ,CAAC0T,GAAW,KAAK,QAAS,EAAK,GACxC1T,EAAK,IAAI,UAAY,MAAQA,EAAK,SAAS,GAAK,EAAE1D,EAAQ,KAAOoX,GAAW,KAAK,QAAS,EAAI,KAC9F,KAAK,QAAQ,OAAO,KAAK,MAAM,WAAWC,GAAa,EAAG,EAAuB,GAC7E,IAAI5B,GAAW4B,GAAY,MAAM,EAAG,EAAGA,GAAa,EAAuB,CAAC,EACpF,KAAK,QAAU,KAAK,YAAc,IACtC,CACJ,CACA,qBAAsB,CACd,KAAK,WAAa,KAAK,IAAM,MAC7B,KAAK,cAAc,KAAK,KAAK,GAAG,EAChC,KAAK,SAAS,OAAS,GAE3B,QAASpW,EAAI,KAAK,SAAS,OAAS,EAAGA,GAAK,EAAGA,IACvC,KAAK,SAASA,CAAC,EAAE,GAAK,KAAK,KAC3B,KAAK,SAAS,OAAOA,EAAG,CAAC,EACjC,QAASiF,EAAM,KAAK,cAAeA,EAAI,OAASA,EAAI,MAAQ,KAAK,IAAKA,EAAI,KAAK,EAC3E,GAAIA,EAAI,IAAM,KAAK,IAAK,CACpB,IAAIoR,EAAO,IAAIf,GAAYrQ,EAAI,KAAMA,EAAI,GAAIA,EAAI,MAAOA,EAAI,IAAI,EAAG,EAAI,KAAK,SAAS,OACrF,KAAO,EAAI,IAAM,KAAK,SAAS,EAAI,CAAC,EAAE,KAAOoR,EAAK,MAAQ,KAAK,SAAS,EAAI,CAAC,EAAE,GAAKA,EAAK,IAAM,GAC3F,IACJ,KAAK,SAAS,OAAO,EAAG,EAAGA,CAAI,CACnC,CACJ,KAAK,WAAa,KAAK,GAC3B,CACA,aAAc,CACV,IAAInK,EACJ,KAAK,oBAAoB,EACzB,IAAIlI,EAAS,KAAK,KAClB,QAASqS,KAAQ,KAAK,SAAU,CAC5B,IAAI5T,EAAOuB,EAAO,UAClB,GAAIqS,EAAK,KAAO,KAAK,KAAO5T,aAAgBuQ,IAAoBvQ,EAAK,QAAQ,GAAG4T,EAAK,OAAO,EACxFrS,EAASvB,MAER,CACD,IAAI+P,EAAOQ,GAAiB,GAAGqD,EAAK,SAAUnK,EAAK,KAAK,MAAM,KAAK8G,GAAkB9E,GAAKA,EAAE,QAAQ,GAAGmI,EAAK,OAAO,CAAC,KAAO,MAAQnK,IAAO,OAAS,OAASA,EAAG,GAAG,EAClKlI,EAAO,OAAOwO,CAAI,EAClBxO,EAASwO,CACb,CACJ,CACA,OAAOxO,CACX,CACA,iBAAkB,CACd,IAAIvB,EAAO,KAAK,UAChB,OAAOA,GAAQ,MAAQ,CAACA,EAAK,aAAe,CAACA,EAAK,SAAS,IAAMA,EAAK,MAAS,KAAwD,EAC3I,CACA,UAAU3B,EAAM,CACZ,IAAIwJ,EAAQ,GAA2BxJ,EAAO,EAAI,GAA2B,IACzE8S,EAAQ,KAAK,MAAM,KAAKiB,GAAkB,OAAW,CAAmB,EAC5E,OAAIjB,IACAA,EAAM,MAAQtJ,GACXsJ,GAAS,IAAIiB,GAAiBvK,CAAK,CAC9C,CACA,aAAc,CACN,KAAK,aAAe,EAAE,KAAK,YAAY,MAAQ,MAC/C,KAAK,YAAY,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC,EACjD,KAAK,YAAc,KAE3B,CACJ,EAEMgM,GAAN,KAAiB,CAl5EjB,MAk5EiB,CAAAlX,EAAA,mBACb,YAAYf,EAAK,CACb,KAAK,UAAY,EACjB,KAAK,KAAO,GACZ,KAAK,QAAU,EACf,KAAK,OAASA,EAAI,KAAK,CAC3B,CACA,KAAKkY,EAAK,CAEF,KAAK,QAAUA,GAAO,KAAK,KAAK,OAChC,KAAK,SAAWA,GAGhB,KAAK,WAAaA,GAAO,KAAK,KAAK,OAAS,KAAK,SACjD,KAAK,KAAO,GACZ,KAAK,QAAU,EAEvB,CACA,KAAKC,EAAQ,CACT,GAAI,KAAK,SAAW,KAAK,KAAK,OAAQ,CAClC,GAAI,CAAE,MAAAvW,EAAO,UAAAwW,EAAW,KAAAC,CAAK,EAAI,KAAK,OAAO,KAAK,KAAK,SAAS,EAEhE,GADA,KAAK,UAAY,EACbA,EACA,MAAM,IAAI,MAAM,mDAAmD,EACvE,KAAK,KAAOzW,EACZ,IAAIsW,EAAM,KAAK,QAAU,KAAK,IAAIC,EAAQvW,EAAM,MAAM,EACtD,OAAOwW,EAAY,KAAOxW,EAAM,MAAM,EAAGsW,CAAG,CAChD,CACA,IAAI9U,EAAM,KAAK,IAAI,KAAK,KAAK,OAAQ,KAAK,QAAU+U,CAAM,EACtDG,EAAQ,KAAK,KAAK,MAAM,KAAK,QAASlV,CAAG,EAC7C,YAAK,QAAUA,EACRkV,CACX,CACJ,EAEMC,GAAU,CAACpC,GAAYlB,GAAUe,GAAUH,GAAUW,GAAkB7B,GAAkBL,EAAO,EACtG,QAAS3S,EAAI,EAAGA,EAAI4W,GAAQ,OAAQ5W,IAChC4W,GAAQ5W,CAAC,EAAE,OAASA,EAIxB,IAAM6W,GAAN,KAAgB,CA37EhB,MA27EgB,CAAAzX,EAAA,kBACZ,YAAYqB,EAAM,CACd,KAAK,KAAOA,EAGZ,KAAK,QAAUmW,GAAQ,IAAI,IAAM,CAAC,CAAC,EACnC,KAAK,MAAQA,GAAQ,IAAI,IAAM,CAAC,EAChC,KAAK,OAAS,IAAI,GACtB,CAEA,IAAIpE,EAAM,CACN,IAAIxS,EAAIwS,EAAK,YAAY,OAAQsE,EAAS,KAAK,QAAQ9W,CAAC,EACpD8W,EAAO,OAAS,EAChBA,EAAO,KAAKtE,CAAI,EAEhBsE,EAAO,KAAK,MAAM9W,CAAC,GAAK,KAAK,MAAMA,CAAC,EAAI,GAAK,CAAgB,EAAIwS,CACzE,CACA,KAAK7C,EAAKoH,EAAMlN,EAAO,EAAoB,CACvC,IAAI7J,EAAI2P,EAAI,OACRmH,EAAS,KAAK,QAAQ9W,CAAC,EAAGuD,EAAM,KAAK,MAAMvD,CAAC,EAChD,QAAS+J,EAAI+M,EAAO,OAAS,EAAG/M,GAAK,EAAGA,IAAK,CAEzC,IAAInG,GAASmG,EAAIxG,GAAOuT,EAAO,OAAQtE,EAAOsE,EAAOlT,CAAK,EAC1D,IAAK,CAACmT,GAAQA,EAAKvE,CAAI,IAAM,CAAC,KAAK,OAAO,IAAIA,CAAI,EAC9C,OAAAsE,EAAO,OAAOlT,EAAO,CAAC,EAClBA,EAAQL,GACR,KAAK,MAAMvD,CAAC,IAChB,KAAK,OAAO,IAAIwS,EAAM3I,CAAI,EACnB2I,CAEf,CACA,OAAO,IACX,CACA,WAAWhS,EAAQuL,EAAQzB,EAAO,CAC9B,IAAI0M,EAAU,KAAK,QAAQ,CAAC,EAC5B,GAAIA,EAAQ,OACR,QAAShX,EAAI,EAAGiX,EAAO,GAAIjX,IAAK,CAC5B,GAAIA,GAAKgX,EAAQ,OAAQ,CACrB,GAAIC,EACA,OAAO,KACXA,EAAO,EACPjX,EAAI,CACR,CACA,IAAIwS,EAAOwE,EAAQhX,CAAC,EACpB,GAAI,CAAC,KAAK,OAAO,IAAIwS,CAAI,IACpByE,GAAQ,EAAIzE,EAAK,OAAO,QAAQhS,CAAM,EACjCgS,EAAK,OAAO,aAAehS,EAAO,aAAeA,EAAO,UAAUgS,EAAK,IAAK,KAAK,KAAMA,EAAK,MAAM,GAIxG,OAHAwE,EAAQ,OAAOhX,EAAG,CAAC,EACfA,EAAI,KAAK,MAAM,CAAC,GAChB,KAAK,MAAM,CAAC,IACZwS,EAAK,QAAUhS,GAAUgS,EAAK,QAAUzG,IAAWyG,EAAK,MAAS,MAA6DlI,GAC9H,KAAK,OAAO,IAAIkI,EAAM,CAAmB,EAClCA,IAGP,KAAK,OAAO,IAAIA,EAAM,CAAkB,EACjC,IAAIgC,GAAWhC,EAAK,IAAKzG,EAAQvL,EAASgS,EAAK,MAAQ,KAA8DlI,CAAK,EAG7I,CACR,CACA,MAAMkI,EAAM,CACR,YAAK,OAAO,IAAIA,EAAM,CAAmB,EAClCA,CACX,CACA,WAAWA,EAAM3I,EAAO,EAAoB,CACxC,GAAI,MAAK,OAAO,IAAI2I,CAAI,EAExB,YAAK,OAAO,IAAIA,EAAM3I,CAAI,EACnB2I,EAAK,GAChB,CACA,OAAQ,CACJ,QAASxS,EAAI,EAAGA,EAAI,KAAK,QAAQ,OAAQA,IACrC,KAAK,QAAQA,CAAC,EAAE,OAAS,KAAK,MAAMA,CAAC,EAAI,CACjD,CACJ,EAMMkX,GAAN,KAAiB,CA5gFjB,MA4gFiB,CAAA9X,EAAA,mBACb,YAAYqB,EAAM0W,EAAKlH,EAAeR,EAAa2H,EAAyB,CACxE,KAAK,KAAO3W,EACZ,KAAK,YAAcgP,EACnB,KAAK,wBAA0B2H,EAC/B,KAAK,WAAa,GAClB,KAAK,UAAY,EACjB,KAAK,MAAQ,IAAIP,GAAUpW,CAAI,EAC/B,KAAK,KAAO,IAAI6V,GAAW7V,EAAK,MAAM,GAAG,EACzC,KAAK,QAAU,IAAI+U,GAAY,KAAK,MAAO,IAAI7C,GAAQlS,EAAMA,EAAK,UAAU,EAAGqB,EAAS,KAAKmO,CAAa,CAAC,EAC3G,KAAK,MAAM,OAAO,IAAIkH,EAAK,CAAkB,EAC7C,KAAK,IAAM,IAAIpC,GAAYoC,CAAG,EAC9B,KAAK,YAAc,CACf,KAAM/X,EAAA,CAACoT,EAAM9R,EAAMsB,IAAO,CAEtB,GADA,KAAK,MAAM,IAAIwQ,CAAI,EACfA,EAAK,YAAY,EACjB,MAAO,EACf,EAJM,QAKN,MAAOpT,EAAAoT,GAAQ,KAAK,MAAM,IAAIA,CAAI,EAA3B,SACP,MAAOpT,EAAA,IAAM,CAAE,EAAR,SACP,MAAOA,EAAA,IAAM,CAAE,EAAR,QACX,CACJ,CACA,IAAI0O,EAAS8H,EAAa,CACtB,IAAIyB,EAAqBzB,GAAe,KAAK,sBAAsBA,EAAY,IAAI,EACnF,QAAS5B,EAAO,EAAGC,EAAO,EAAGjU,EAAI,IAAK,CAClC,IAAImL,EAAOnL,EAAI8N,EAAQ,OAASA,EAAQ9N,GAAG,EAAI,KAC3CsX,EAAQnM,EAAOA,EAAK,MAAQ,KAAK,IAAI,KAAK,OAC9C,GAAImM,EAAQtD,EAAM,CACd,IAAIuC,EAAMe,EAAQtD,EAClB,KAAK,SAASuC,EAAK,CAACvW,EAAG,CAACmL,CAAI,EAC5B6I,EAAOsD,EACPrD,GAAQsC,CACZ,CACA,GAAI,CAACpL,EACD,MAIAyK,GAAezK,EAAK,OAASyK,EAAY,MAAM,OAASzK,EAAK,KAAOyK,EAAY,MAAM,KACtF,KAAK,QAAQzK,EAAK,MAAOyK,EAAY,MAAM,MAAOA,EAAY,MAAM,MAAQA,EAAY,MAAM,IAAM,EAAI,EAAE,EAC1G,KAAK,KAAK3B,EAAM2B,EAAY,MAAM,KAAK,EACvC,KAAK,MAAM,MAAM,EACjB,KAAK,QAAQ,eAAeA,EAAayB,CAAkB,EAC3D,KAAK,KAAK,KAAKzB,EAAY,MAAM,IAAMA,EAAY,MAAM,KAAK,EAC9D,KAAK,QAAQA,EAAY,MAAM,MAAOzK,EAAK,GAAG,EAC9C,KAAK,KAAKyK,EAAY,MAAM,IAAKzK,EAAK,GAAG,IAGzC,KAAK,QAAQA,EAAK,MAAOA,EAAK,GAAG,EACjC,KAAK,KAAK8I,EAAM9I,EAAK,GAAG,GAE5B8I,EAAO9I,EAAK,IACZ6I,EAAO7I,EAAK,GAChB,CACA,OAAI,KAAK,QAAQ,SACb,KAAK,QAAQ,QAAQ,EAClB,KAAK,QAAQ,IACxB,CACA,SAASY,EAAQwL,EAAUC,EAAQ,CAC/B,IAAIC,EAAcC,GAAS,KAAK,GAAG,EAAGC,EAAY,KAAK,UACvD,KAAK,IAAI,QAAQ5L,EAAQyL,EAAS,EAAI,GAAI,CACtC,KAAMpY,EAAA,CAACoT,EAAM9R,EAAMsB,IAAO,CACtB,GAAIwQ,EAAK,SAAS,EACd,GAAI,KAAK,WACL,KAAK,QAAQ,eAAexQ,EAAKtB,CAAI,MAEpC,CACD,IAAIF,EAASwB,EAAK,GAAKtB,EAAO8R,EAAK,OAC7BgC,GAAW,GAAGhC,EAAK,OAAQ,KAAK,KAAMxQ,EAAKtB,EAAM8R,EAAK,MAAQ,IAA2B,KAAK,MAAM,WAAWA,CAAI,CAAC,EACpH,KAAK,MAAM,MAAMA,CAAI,EACvBhS,EAAO,MAAQ,KACfA,EAAO,OAAS,GAChB,KAAK,QAAQ,eAAeA,CAAM,IAGlC,KAAK,QAAQ,WAAW,IAAI,EAC5B,KAAK,QAAQ,gBAAgBA,EAAQiX,EAAaE,CAAS,EAC3DA,EAAYF,EAAY,OAEhC,SAEKjF,EAAK,OAAO,EACjB,KAAK,QAAQ,WAAW,IAAI,EACxB,CAAC9R,GAAQsB,GAAMwQ,EAAK,QAAU,CAAC,KAAK,MAAM,OAAO,IAAIA,CAAI,EACzD,KAAK,QAAQ,QAAQA,EAAK,KAAMiF,EAAaE,EAAW,KAAK,MAAM,MAAMnF,CAAI,CAAC,GAG9E,KAAK,MAAM,IAAIA,CAAI,EACnB,KAAK,QAAQ,QAAQA,EAAK,KAAK,MAAM9R,EAAMsB,CAAE,EAAGyV,EAAaE,CAAS,GAE1EA,EAAYF,EAAY,eAEnBjF,EAAK,OAAO,EACjBA,EAAK,OAAS,GACd,KAAK,MAAM,OAAO,IAAIA,EAAM,CAAmB,EAC/C,KAAK,QAAQ,QAAQA,CAAI,UAEpBA,aAAgBqC,GACrB,KAAK,MAAM,IAAIrC,CAAI,UAEdA,aAAgB0B,GACrB,KAAK,QAAQ,WAAW,IAAI,EAC5B,KAAK,QAAQ,QAAQ1B,EAAMiF,EAAaE,CAAS,EACjD,KAAK,MAAM,OAAO,IAAInF,EAAM,CAAmB,EAC/CmF,EAAYF,EAAY,WAGxB,OAAO,GAEX,KAAK,WAAa,EACtB,EAjDM,QAkDN,MAAOrY,EAACoT,GAAS,CACTA,EAAK,OAAO,EACZ,KAAK,QAAQ,aAAaA,EAAK,MAAO,KAAK,MAAM,WAAWA,CAAI,CAAC,GAGjE,KAAK,MAAM,IAAIA,CAAI,EACfA,aAAgB0B,IAChBuD,EAAY,QAAQjF,EAAK,IAAI,GAErC,KAAK,WAAa,EACtB,EAVO,SAWP,MAAOpT,EAACoT,GAAS,CACTA,EAAK,OAAO,EACRiF,EAAY,SACZA,EAAY,OAASE,EAAY,GAEhCnF,aAAgB0B,KACrBuD,EAAY,MAAM,EAClBE,EAAY,KAAK,IAAIA,EAAWF,EAAY,MAAM,EAE1D,EATO,SAUP,MAAOrY,EAAA,IAAM,CACT,KAAK,QAAQ,SAAS,EACtB,KAAK,WAAa,EACtB,EAHO,QAIX,CAAC,EACD,KAAK,KAAK,KAAK2M,CAAM,CACzB,CACA,KAAKrL,EAAMsB,EAAI,CACX,IAAI4V,EAAmB,KACnBpY,EAAI,KAAK,QAASqY,EAAY,EAC9BC,EAAUhW,EAAS,MAAM,KAAK,YAAapB,EAAMsB,EAAI,CACrD,MAAO5C,EAAA,CAACsB,EAAMsB,EAAIsN,EAAMmB,EAAQkF,EAAW/R,IAAU,CACjD,GAAI0L,aAAgB/N,GAAiB,CACjC,GAAI,KAAK,wBAAwBqC,CAAK,EAAG,CACrC,GAAI0L,EAAK,MACL,MAAM,IAAI,WAAW,oDAAoD,EAC7E,GAAItN,EAAK,KAAK,KAAK,MAAM,IAAI,OAAOtB,CAAI,EAAE,GACtC,MAAM,IAAI,WAAW,uEAAuE,CACpG,CAEA,GADAmX,EAAYpH,EAAO,OACfkF,EAAYlF,EAAO,OACnBjR,EAAE,eAAewC,EAAKtB,CAAI,MAEzB,CACD,IAAIF,EAAS8O,EAAK,SAAWA,EAAK,MAAQyI,GAAW,MAAQA,GAAW,QACpEzN,EAAQ0N,GAAY1I,CAAI,EACxBkD,EAAO,KAAK,MAAM,WAAWhS,EAAQwB,EAAKtB,EAAM4J,CAAK,GAAKkK,GAAW,GAAGhU,EAAQ,KAAK,KAAMwB,EAAKtB,EAAM4J,CAAK,EAC3GgF,EAAK,OACDA,EAAK,UAAY,GACjB9P,EAAE,yBAAyBoY,CAAgB,EAC/CpY,EAAE,eAAegT,CAAI,IAGrBhT,EAAE,WAAWoY,CAAgB,EAC7BpY,EAAE,gBAAgBgT,EAAM/B,EAAQkF,CAAS,EAEjD,CACAiC,EAAmB,IACvB,MAEIA,EAAmBK,GAAYL,EAAkBtI,CAAI,EAErDtN,EAAKtB,GACL,KAAK,KAAK,KAAKsB,EAAKtB,CAAI,CAChC,EAjCO,SAkCP,KAAMtB,EAAA,CAACsB,EAAMsB,EAAIyO,EAAQkF,IAAc,CACnC,QAAS9U,EAAMH,EAAMG,EAAMmB,GAAK,CAC5B,IAAI2U,EAAQ,KAAK,KAAK,KAAK,KAAK,IAAI,IAAmB3U,EAAKnB,CAAG,CAAC,EAC5D8V,GAAS,MACTnX,EAAE,yBAAyBoY,CAAgB,EAC3CpY,EAAE,SAAS,EACXqB,MAGArB,EAAE,WAAWoY,CAAgB,EAC7BpY,EAAE,QAAQmX,EAAOlG,EAAQ5P,GAAOH,EAAOiV,EAAYlF,EAAO,MAAM,EAChE5P,GAAO8V,EAAM,QAEjBiB,EAAmB,IACvB,CACJ,EAfM,OAgBV,CAAC,EACDpY,EAAE,yBAAyBoY,CAAgB,EAC3C,KAAK,WAAaE,EAAUD,EAC5B,KAAK,UAAYC,CACrB,CACA,QAAQpX,EAAMsB,EAAIlB,EAAO,EAAG,CACpBkB,EAAKtB,GAAQ,GACb,KAAK,IAAI,QAAQsB,EAAKtB,EAAMI,EAAM,KAAK,WAAW,GAGlD,KAAK,IAAI,QAAQ,EAAG,GAAI,KAAK,WAAW,EACxC,KAAK,IAAI,QAAQkB,EAAKtB,EAAO,GAAI,EAAE,EACnC,KAAK,IAAI,QAAQ,EAAGI,EAAM,KAAK,WAAW,EAElD,CACA,sBAAsB8L,EAAM,CACxB,IAAI8I,EAAQ,CAAC,EAAGrM,EAAO,KACvB,QAASrF,EAAS4I,EAAK,YAAa5I,EAASA,EAAO,WAAY,CAC5D,IAAIwO,EAAOF,GAAK,IAAItO,CAAM,EAC1B,GAAIA,GAAU,KAAK,KAAK,WACpB,MACAwO,aAAgB0B,GAChBwB,EAAM,KAAKlD,CAAI,EACkCA,GAAK,OAAO,EAC7DnJ,EAAOmJ,EACFA,aAAgBQ,KAChBhP,EAAO,UAAY,OAAS,CAACqF,GAAQrF,GAAU,KAAK,KAAK,WAC9DqF,EAAO,IAAIiK,GAAStP,EAAQkS,EAAa,EACnC7M,GACNqM,EAAM,KAAKxB,GAAS,GAAG,IAAI7S,GAAe,CAAE,QAAS2C,EAAO,SAAS,YAAY,EAAG,WAAY3D,GAAS2D,CAAM,CAAE,CAAC,EAAGA,CAAM,CAAC,EACpI,CACA,MAAO,CAAE,KAAMqF,EAAM,MAAAqM,CAAM,CAC/B,CACJ,EACA,SAASS,GAAW3D,EAAM0F,EAAa,CACnC,IAAIxE,EAAOtU,EAACoT,GAAS,CACjB,QAASjK,KAAMiK,EAAK,SAChB,IAAK0F,EAAc3P,EAAG,OAAO,EAAIA,EAAG,SAAWmL,EAAKnL,CAAE,EAClD,MAAO,GACf,MAAO,EACX,EALW,QAMX,OAAOmL,EAAKlB,CAAI,CACpB,CARSpT,EAAA+W,GAAA,cAST,SAAS6B,GAAY1I,EAAM,CACvB,IAAIhF,EAAQgF,EAAK,WAAaA,EAAK,UAAY,EAAI,GAA6B,IAAMA,EAAK,QAAU,EAAI,IAA4B,GAC9HA,EAAK,UAAY,EAAI,GAA0B,GACtD,OAAIA,EAAK,QACLhF,GAAS,KACNA,CACX,CANSlL,EAAA4Y,GAAA,eAOT,IAAM9B,GAAgB,CAAE,MAAO,SAAU,EACzC,SAAS+B,GAAYhY,EAAOqP,EAAM,CAC9B,IAAIvP,EAAQuP,EAAK,KAAK,WAAYK,EAAML,EAAK,KAAK,MAClD,MAAI,CAACvP,GAAS,CAAC4P,IAEV1P,IACDA,EAAQ,CAAE,MAAO,SAAU,GAC3BF,GACAf,GAAae,EAAOE,CAAK,EACzB0P,IACA1P,EAAM,OAAS,IAAM0P,IAClB1P,CACX,CAXSb,EAAA6Y,GAAA,eAYT,SAASP,GAASS,EAAK,CACnB,IAAIvE,EAAQ,CAAC,EACb,QAAS5T,EAAImY,EAAI,QAAQ,OAAQnY,EAAI,EAAGA,IAAK,CACzC,IAAIwS,EAAOxS,GAAKmY,EAAI,QAAQ,OAASA,EAAI,KAAOA,EAAI,QAAQnY,CAAC,EAAE,KAC3DwS,aAAgB0B,IAChBN,EAAM,KAAKpB,EAAK,IAAI,CAC5B,CACA,OAAOoB,CACX,CARSxU,EAAAsY,GAAA,YAST,SAAS7B,GAAS5S,EAAM,CACpB,IAAIuP,EAAOF,GAAK,IAAIrP,CAAI,EACxB,OAAIuP,GACAA,EAAK,OAAOvP,EAAK,UAAU,CAAC,EACzBA,CACX,CALS7D,EAAAyW,GAAA,YAMT,IAAMkC,GAAN,cAAyBxX,EAAW,CA5xFpC,MA4xFoC,CAAAnB,EAAA,mBAChC,YAAYgZ,EAAK,CACb,MAAM,EACN,KAAK,IAAMA,CACf,CACA,GAAGzX,EAAO,CAAE,OAAOA,EAAM,KAAO,KAAK,GAAK,CAC1C,OAAQ,CAAE,OAAO,SAAS,cAAc,KAAK,GAAG,CAAG,CACnD,UAAU8D,EAAK,CAAE,OAAOA,EAAI,SAAS,YAAY,GAAK,KAAK,GAAK,CAChE,IAAI,UAAW,CAAE,MAAO,EAAM,CAClC,EACAsT,GAAW,OAAsB,IAAIA,GAAW,MAAM,EACtDA,GAAW,MAAqB,IAAIA,GAAW,KAAK,EACpD,IAAM3B,GAA2B,IAAI,cAAc7V,EAAW,CAC1D,OAAQ,CAAE,OAAO,SAAS,cAAc,IAAI,CAAG,CAC/C,IAAI,UAAW,CAAE,MAAO,EAAM,CAC9B,IAAI,UAAW,CAAE,MAAO,EAAM,CAClC,EAEM8X,GAAN,KAAc,CA9yFd,MA8yFc,CAAAjZ,EAAA,gBACV,YAAYqB,EAAM,CACd,KAAK,KAAOA,EACZ,KAAK,YAAc,CAAC,EACpB,KAAK,cAAgB,CAAC,EACtB,KAAK,qBAAuB,CAAC,EAAK,EAClC,KAAK,WAAa,KAClB,KAAK,eAAiB,KACtB,KAAK,sBAAwBO,EAAW,KACxC,KAAK,2BAA6B,GAQlC,KAAK,SAAW,EAChB,KAAK,aAAe,EACpB,KAAK,WAAa,EAGlB,KAAK,gBAAkB,KACvB,KAAK,cAAgB,KACrB,KAAK,eAAiB,GAGtB,KAAK,WAAa,KAAK,IAAI,EAC3B,KAAK,WAAW,EAChB,KAAK,KAAO,IAAI2R,GAAQlS,EAAMA,EAAK,UAAU,EAC7C,KAAK,YAAY,CAAC,IAAIyQ,GAAa,EAAG,EAAG,EAAGzQ,EAAK,MAAM,IAAI,MAAM,CAAC,EAAG,IAAI,CAC7E,CAEA,OAAOoP,EAAQ,CACX,IAAI3D,EACJ,IAAIkG,EAAgBvC,EAAO,cACvB,KAAK,SAAW,GAAKuC,EAAc,SAC9BA,EAAc,MAAM,CAAC,CAAE,MAAAhB,EAAO,IAAAC,CAAI,IAAMA,EAAM,KAAK,cAAgBD,EAAQ,KAAK,UAAU,GAI3F,KAAK,aAAevB,EAAO,QAAQ,OAAO,KAAK,aAAc,CAAC,EAC9D,KAAK,WAAaA,EAAO,QAAQ,OAAO,KAAK,WAAY,CAAC,GAJ1D,KAAK,SAAW,KAAK,aAAe,KAAK,WAAa,GAO9D,KAAK,4BAA4BA,CAAM,EACvC,IAAIyI,EAAoB,GACpB,KAAK,KAAK,WAAW,WAAa,GAAK,CAAC,KAAK,KAAK,SAAS,cACtD,GAAApM,EAAK,KAAK,cAAgB,MAAQA,IAAO,SAAkBA,EAAG,OAC/DoM,EAAoB,KAAK,WAAW,OAAO,KACtC,CAACC,GAAmB1I,EAAO,QAAS,KAAK,cAAc,GAAK,CAACA,EAAO,eACzEyI,EAAoBzI,EAAO,MAAM,UAAU,KAAK,OAExD,IAAI+F,EAAc0C,EAAoB,GAAKE,GAAqB,KAAK,KAAM3I,EAAO,QAASyI,CAAiB,EAAI,KAEhH,GADA,KAAK,WAAa,KACd,KAAK,eAAgB,CACrB,GAAI,CAAE,KAAA5X,EAAM,GAAAsB,CAAG,EAAI,KAAK,eACxBoQ,EAAgB,IAAIlB,GAAaxQ,EAAMsB,EAAI6N,EAAO,QAAQ,OAAOnP,EAAM,EAAE,EAAGmP,EAAO,QAAQ,OAAO7N,EAAI,CAAC,CAAC,EACnG,SAASoQ,EAAc,MAAM,CAAC,CACvC,CACA,KAAK,eAAiBwD,EAAc,CAAE,KAAMA,EAAY,MAAM,MAAO,GAAIA,EAAY,MAAM,GAAI,EAAI,MAM9F7W,EAAQ,IAAMA,EAAQ,SAAW,CAAC6W,GAAe/F,GAClDA,EAAO,MAAM,IAAI,OAASA,EAAO,WAAW,IAAI,QAChD,KAAK,eAAiB,IAC1B,IAAI4I,EAAW,KAAK,YAAaC,EAAe,KAAK,cACrD,KAAK,WAAW,EAChB,IAAIC,EAAWC,GAAgBH,EAAU,KAAK,YAAa5I,EAAO,OAAO,EACrE8I,EAAS,SACTvG,EAAgBlB,GAAa,iBAAiBkB,EAAeuG,CAAQ,GACzE,IAAIE,EAAYC,GAAoBJ,EAAc,KAAK,cAAe7I,EAAO,OAAO,EAKpF,OAJIgJ,EAAU,SACVzG,EAAgBlB,GAAa,iBAAiBkB,EAAeyG,CAAS,GACtEjD,GAAe,CAACxD,EAAc,KAAK/J,GAAKA,EAAE,OAASuN,EAAY,MAAM,OAASvN,EAAE,KAAOuN,EAAY,MAAM,GAAG,IAC5GxD,EAAgBwD,EAAY,MAAM,SAASxD,EAAc,MAAM,CAAC,GAC/D,KAAK,KAAK,MAAQ,GAA4BA,EAAc,QAAU,EAChE,IAGP,KAAK,YAAYA,EAAewD,CAAW,EACvC/F,EAAO,aAAa,SACpB,KAAK,WAAa,KAAK,IAAI,GACxB,GAEf,CAGA,YAAY/B,EAAS8H,EAAa,CAC9B,KAAK,KAAK,UAAU,mBAAqB,GACzC,GAAI,CAAE,SAAAmD,CAAS,EAAI,KAAK,KACxBA,EAAS,OAAO,IAAM,CAClB,GAAInD,GAAe9H,EAAQ,OAAQ,CAC/B,IAAIkI,EAAU,KAAK,KACfgD,EAAU,IAAI9B,GAAW,KAAK,KAAMlB,EAAS,KAAK,cAAe,KAAK,YAAa,KAAK,oBAAoB,EAC5GJ,GAAetD,GAAK,IAAIsD,EAAY,IAAI,GACxCoD,EAAQ,MAAM,OAAO,IAAI1G,GAAK,IAAIsD,EAAY,IAAI,EAAG,CAAkB,EAC3E,KAAK,KAAOoD,EAAQ,IAAIlL,EAAS8H,CAAW,EAC5CqD,GAAejD,EAASgD,EAAQ,MAAM,MAAM,CAChD,CAKA,KAAK,KAAK,IAAI,MAAM,OAAS,KAAK,KAAK,UAAU,cAAgB,KAAK,KAAK,OAAS,KACpF,KAAK,KAAK,IAAI,MAAM,UAAY,KAAK,SAAW,KAAK,SAAW,KAAO,GAKvE,IAAIzG,EAAQxT,EAAQ,QAAUA,EAAQ,IAAM,CAAE,KAAMga,EAAS,eAAe,UAAW,QAAS,EAAM,EAAI,OAC1G,KAAK,KAAK,KAAKxG,CAAK,EAChBA,IAAUA,EAAM,SAAWwG,EAAS,eAAe,WAAaxG,EAAM,MAAQ,CAAC,KAAK,KAAK,IAAI,SAASA,EAAM,IAAI,KAChH,KAAK,eAAiB,IAC1B,KAAK,KAAK,IAAI,MAAM,OAAS,EACjC,CAAC,EACD,IAAI2G,EAAO,CAAC,EACZ,GAAI,KAAK,KAAK,SAAS,MAAQ,KAAK,KAAK,SAAS,GAAK,KAAK,KAAK,MAAM,IAAI,OACvE,QAASzG,KAAS,KAAK,KAAK,SACpBA,EAAM,SAAS,GAAKA,EAAM,kBAAkB0G,IAC5CD,EAAK,KAAKzG,EAAM,GAAG,EAC/BsG,EAAS,WAAWG,CAAI,CAC5B,CACA,4BAA4BrJ,EAAQ,CAChC,KAAK,sBAAwB,KAAK,sBAAsB,IAAIA,EAAO,OAAO,EAC1E,QAASsC,KAAMtC,EAAO,aAClB,QAASuJ,KAAUjH,EAAG,QACdiH,EAAO,GAAGjL,EAAwB,IAClC,KAAK,sBAAwBiL,EAAO,MAEpD,CAEA,gBAAgBC,EAAW,GAAOC,EAAc,GAAO,EAC/CD,GAAY,CAAC,KAAK,KAAK,SAAS,eAAe,YAC/C,KAAK,KAAK,SAAS,mBAAmB,EAC1C,GAAI,CAAE,IAAAvZ,CAAI,EAAI,KAAK,KACfyZ,EAAY,KAAK,KAAK,KAAK,cAAeC,EAAUD,GAAazZ,EACjE2Z,EAAoB,CAACD,GAAW,EAAE,KAAK,KAAK,MAAM,MAAMjL,EAAQ,GAAKzO,EAAI,SAAW,KACpFoD,GAAapD,EAAK,KAAK,KAAK,SAAS,cAAc,GAAK,EAAEyZ,GAAazZ,EAAI,SAASyZ,CAAS,GACjG,GAAI,EAAEC,GAAWF,GAAeG,GAC5B,OACJ,IAAIC,EAAQ,KAAK,eACjB,KAAK,eAAiB,GACtB,IAAIC,EAAO,KAAK,KAAK,MAAM,UAAU,KAAMC,EAAQ9D,EAUnD,GATI6D,EAAK,MACL7D,EAAO8D,EAAS,KAAK,iBAAiBD,EAAK,OAAQA,EAAK,OAAS,CAAC,GAGlE7D,EAAO,KAAK,iBAAiB6D,EAAK,KAAMA,EAAK,MAAQA,EAAK,KAAO,EAAI,EAAE,EACvEC,EAAS,KAAK,iBAAiBD,EAAK,OAAQA,EAAK,QAAUA,EAAK,KAAO,EAAI,EAAE,GAI7E5a,EAAQ,OAAS4a,EAAK,OAAS,CAAC,KAAK,gBAAkBE,GAAkBD,CAAM,EAAG,CAClF,IAAIE,EAAQ,SAAS,eAAe,EAAE,EACtC,KAAK,KAAK,SAAS,OAAO,IAAMF,EAAO,KAAK,aAAaE,EAAOF,EAAO,KAAK,WAAWA,EAAO,MAAM,GAAK,IAAI,CAAC,EAC9GA,EAAS9D,EAAO,IAAIxO,GAAOwS,EAAO,CAAC,EACnCJ,EAAQ,EACZ,CACA,IAAI5T,EAAS,KAAK,KAAK,SAAS,gBAE5B4T,GAAS,CAAC5T,EAAO,YAAc,CAACxC,GAAqBsW,EAAO,KAAMA,EAAO,OAAQ9T,EAAO,WAAYA,EAAO,YAAY,GACvH,CAACxC,GAAqBwS,EAAK,KAAMA,EAAK,OAAQhQ,EAAO,UAAWA,EAAO,WAAW,IAAM,CAAC,KAAK,2BAA2BA,EAAQ6T,CAAI,KACrI,KAAK,KAAK,SAAS,OAAO,IAAM,CAKxB5a,EAAQ,SAAWA,EAAQ,QAAUe,EAAI,SAASgG,EAAO,SAAS,GAClEiU,GAAajU,EAAO,UAAWhG,CAAG,IAClCA,EAAI,KAAK,EACTA,EAAI,MAAM,CAAE,cAAe,EAAK,CAAC,GAErC,IAAIka,EAASlX,GAAa,KAAK,KAAK,IAAI,EACxC,GAAKkX,EACA,GAAIL,EAAK,MAAO,CAEjB,GAAI5a,EAAQ,MAAO,CACf,IAAIkb,EAASC,GAAiBN,EAAO,KAAMA,EAAO,MAAM,EACxD,GAAIK,GAAUA,GAAW,EAA+C,CACpE,IAAIrN,GAAQqN,GAAU,EAAwB/S,GAAiBG,IAAeuS,EAAO,KAAMA,EAAO,MAAM,EACpGhN,IACAgN,EAAS,IAAItS,GAAOsF,EAAK,KAAMA,EAAK,MAAM,EAClD,CACJ,CACAoN,EAAO,SAASJ,EAAO,KAAMA,EAAO,MAAM,EACtCD,EAAK,WAAa,MAAQK,EAAO,iBAAmB,SACpDA,EAAO,eAAiBL,EAAK,UACrC,SACSK,EAAO,OAAQ,CAIpBA,EAAO,SAASJ,EAAO,KAAMA,EAAO,MAAM,EAI1C,GAAI,CACAI,EAAO,OAAOlE,EAAK,KAAMA,EAAK,MAAM,CACxC,MACU,CAAE,CAChB,KACK,CAED,IAAI/P,EAAQ,SAAS,YAAY,EAC7B4T,EAAK,OAASA,EAAK,OACnB,CAACC,EAAQ9D,CAAI,EAAI,CAACA,EAAM8D,CAAM,GAClC7T,EAAM,OAAO+P,EAAK,KAAMA,EAAK,MAAM,EACnC/P,EAAM,SAAS6T,EAAO,KAAMA,EAAO,MAAM,EACzCI,EAAO,gBAAgB,EACvBA,EAAO,SAASjU,CAAK,CACzB,CACI0T,GAAqB,KAAK,KAAK,KAAK,eAAiB3Z,IACrDA,EAAI,KAAK,EACLyZ,GACAA,EAAU,MAAM,EAE5B,CAAC,EACD,KAAK,KAAK,SAAS,kBAAkBK,EAAQ9D,CAAI,GAErD,KAAK,gBAAkB8D,EAAO,QAAU,KAAO,IAAItS,GAAOxB,EAAO,WAAYA,EAAO,YAAY,EAChG,KAAK,cAAgBgQ,EAAK,QAAU,KAAO,IAAIxO,GAAOxB,EAAO,UAAWA,EAAO,WAAW,CAC9F,CAIA,2BAA2BqU,EAAKC,EAAQ,CACpC,OAAO,KAAK,gBAAkBA,EAAO,OACjC9W,GAAqB6W,EAAI,UAAWA,EAAI,YAAaA,EAAI,WAAYA,EAAI,YAAY,GACrF,KAAK,WAAWA,EAAI,UAAWA,EAAI,WAAW,GAAKC,EAAO,IAClE,CACA,oBAAqB,CACjB,GAAI,KAAK,eACL,OACJ,GAAI,CAAE,KAAA3Z,CAAK,EAAI,KAAM2Z,EAAS3Z,EAAK,MAAM,UAAU,KAC/C0Z,EAAMrX,GAAarC,EAAK,IAAI,EAC5B,CAAE,WAAAuF,EAAY,aAAAE,CAAa,EAAIzF,EAAK,SAAS,eACjD,GAAI,CAAC0Z,GAAO,CAACC,EAAO,OAAS,CAACA,EAAO,OAAS,CAACD,EAAI,OAC/C,OACJ,IAAI9Q,EAAO,KAAK,OAAO+Q,EAAO,KAAMA,EAAO,KAAK,EAChD,GAAI,CAAC/Q,EACD,OACJ,IAAIgR,EAAYhR,EAAK,WACrB,GAAI+Q,EAAO,MAAQC,GAAaD,EAAO,MAAQC,EAAYhR,EAAK,OAC5D,OACJ,IAAI4J,EAAS,KAAK,SAASmH,EAAO,KAAM,EAAE,EAAG1H,EAAQ,KAAK,SAAS0H,EAAO,KAAM,CAAC,EACjF,GAAI,CAACnH,GAAU,CAACP,GAASO,EAAO,OAASP,EAAM,IAC3C,OACJ,IAAI5S,EAAM,KAAK,SAASsa,EAAO,KAAOA,EAAO,MAAOA,EAAO,KAAK,EAChED,EAAI,SAASra,EAAI,KAAMA,EAAI,MAAM,EACjCqa,EAAI,OAAO,OAAQC,EAAO,MAAQ,EAAI,UAAY,WAAY,cAAc,EAG5E3Z,EAAK,SAAS,mBAAmB,EACjC,IAAI6Z,EAAW7Z,EAAK,SAAS,eACzBA,EAAK,QAAQ,WAAW6Z,EAAS,WAAYA,EAAS,YAAY,GAAKF,EAAO,MAC9ED,EAAI,SAASnU,EAAYE,CAAY,CAC7C,CACA,WAAWjD,EAAM+D,EAAQ,CACrB,IAAIwL,EAAO,KAAK,KAAK,QAAQvP,CAAI,EACjC,GAAI,CAACuP,EACD,OAAO,KAAK,KAAK,IAAI,wBAAwBvP,CAAI,EAAI,EAAoB,EAAI,KAAK,KAAK,MAAM,IAAI,OACrG,IAAIzB,EAAQgR,EAAK,WACjB,GAAIA,EAAK,YAAY,EAAG,CACpB,IAAIE,EACJ,GAAIzP,GAAQuP,EAAK,IACbE,EAAQF,EAAK,IAAI,WAAWxL,CAAM,MAEjC,CACD,IAAIuT,EAAOxW,GAAUd,CAAI,GAAK,EAAI,EAAI+D,GAAU,EAAI,GAAK,EACzD,OAAS,CACL,IAAIhD,EAASf,EAAK,WAClB,GAAIe,GAAUwO,EAAK,IACf,MACA+H,GAAQ,GAAKvW,EAAO,YAAcA,EAAO,YACrCf,GAAQe,EAAO,WACfuW,EAAO,GAEPA,EAAO,GAEftX,EAAOe,CACX,CACIuW,EAAO,EACP7H,EAAQzP,EAERyP,EAAQzP,EAAK,WACrB,CACA,GAAIyP,GAASF,EAAK,IAAI,WAClB,OAAOhR,EACX,KAAOkR,GAAS,CAACJ,GAAK,IAAII,CAAK,GAC3BA,EAAQA,EAAM,YAClB,GAAI,CAACA,EACD,OAAOlR,EAAQgR,EAAK,OACxB,QAASxS,EAAI,EAAGa,EAAMW,GAAQxB,IAAK,CAC/B,IAAIyS,EAAQD,EAAK,SAASxS,CAAC,EAC3B,GAAIyS,EAAM,KAAOC,EACb,OAAO7R,EACXA,GAAO4R,EAAM,OAASA,EAAM,UAChC,CACJ,KACK,QAAID,EAAK,OAAO,EACVvP,GAAQuP,EAAK,IAAMhR,EAAQwF,EAASxF,GAASwF,EAASwL,EAAK,OAAS,GAGpEhR,CAEf,CACA,SAASX,EAAKC,EAAM,CAChB,GAAI,CAAE,KAAA0R,EAAM,OAAAxL,CAAO,EAAI,KAAK,KAAK,aAAanG,EAAKC,CAAI,EACvD,OAAI0R,EAAK,SAAS,EACPA,EAAK,UAAU3R,EAAKC,CAAI,EAC5B0R,EAAK,MAAMxL,EAAQlG,CAAI,CAClC,CACA,iBAAiBD,EAAKC,EAAM,CACxB,IAAImS,EAAQC,EAAY,GAAIsH,EAAY,GACpC9H,EAAOS,EAAW,GAAIsH,EAAW,GAwBrC,OAvBA,KAAK,KAAK,WAAW,CAACjI,EAAMjP,IAAQ,CAChC,GAAIiP,EAAK,SAAS,EAAG,CACjB,GAAKA,EAAK,MAAQ,IAA4BjP,GAAO1C,EACjD,MAAO,GACP2R,EAAK,MAAQ,KACbgI,EAAY,GACpB,KACK,CACD,IAAI/Y,EAAM8B,EAAMiP,EAAK,OAWrB,GAVIjP,GAAO1C,IACPoS,EAAST,EACTU,EAAYrS,EAAM0C,EAClBiX,EAAY/Y,EAAMZ,GAElBY,GAAOZ,GAAO,CAAC6R,IACfA,EAAQF,EACRW,EAAWtS,EAAM0C,EACjBkX,EAAWlX,EAAM1C,GAEjB0C,EAAM1C,GAAO6R,EACb,MAAO,EACf,CACJ,CAAC,EACG,CAACO,GAAU,CAACP,EACL,KAAK,SAAS7R,EAAKC,CAAI,GAC9B0Z,GAAa9H,EACbO,EAAS,KACJwH,GAAYxH,IACjBP,EAAQ,MACLO,GAAUnS,EAAO,GAAK,CAAC4R,EAAQO,EAAO,MAAMC,EAAWpS,CAAI,EAAI4R,EAAM,MAAMS,EAAUrS,CAAI,EACpG,CACA,SAASD,EAAKC,EAAM,CAChB,GAAI,CAAE,KAAA0R,EAAM,OAAAxL,CAAO,EAAI,KAAK,KAAK,aAAanG,EAAKC,CAAI,EACvD,OAAI0R,EAAK,SAAS,EACVA,EAAK,kBAAkB2G,GAChB,KACJ3G,EAAK,eAAexL,EAAQlG,EAAM,EAAI,EAE1C0R,EAAK,SAASxL,EAAQlG,CAAI,CACrC,CACA,OAAOD,EAAKC,EAAM,CACd,GAAI,CAAE,KAAA0R,CAAK,EAAI,KAAK,KAAK,aAAa3R,EAAKC,CAAI,EAC/C,OAAO0R,EAAK,OAAO,EAAIA,EAAO,IAClC,CACA,cAAc3R,EAAK,CACf,GAAI,CAAE,KAAA2R,EAAM,OAAAxL,CAAO,EAAI,KAAK,KAAK,aAAanG,EAAK,CAAC,EACpD,GAAI,CAAC2R,EAAK,OAAO,EACb,OAAO,KACX,SAASkB,EAAKlB,EAAMxL,EAAQ,CACxB,GAAIwL,EAAK,YAAY,EACjB,QAASjK,KAAMiK,EAAK,SAAU,CAC1B,GAAIjK,EAAG,QAAUvB,EAAQ,CACrB,IAAI4M,EAAQF,EAAKnL,EAAIvB,CAAM,EAC3B,GAAI4M,EACA,OAAOA,CACf,CAEA,GADA5M,GAAUuB,EAAG,OACTvB,EAAS,EACT,KACR,SAEKwL,EAAK,OAAO,GAAKxL,EAASwL,EAAK,OAAQ,CAC5C,IAAI/Q,EAAM+K,GAAiBgG,EAAK,KAAMxL,CAAM,EAC5C,GAAIvF,GAAOuF,EACP,OAAO,KACX,IAAI+M,EAAQ1Q,GAAUmP,EAAK,IAAKxL,EAAQvF,CAAG,EAAE,eAAe,EAC5D,QAASzB,EAAI,EAAGA,EAAI+T,EAAM,OAAQ/T,IAAK,CACnC,IAAIkE,EAAO6P,EAAM/T,CAAC,EAClB,GAAIA,GAAK+T,EAAM,OAAS,GAAK7P,EAAK,IAAMA,EAAK,QAAUA,EAAK,KAAOA,EAAK,MACpE,OAAOA,CACf,CACJ,CACA,OAAO,IACX,CAzBS,OAAA9E,EAAAsU,EAAA,QA0BFA,EAAKlB,EAAMxL,CAAM,CAC5B,CACA,0BAA0B0T,EAAU,CAChC,IAAI5S,EAAS,CAAC,EAAG,CAAE,KAAApH,EAAM,GAAAsB,CAAG,EAAI0Y,EAC5BC,EAAe,KAAK,KAAK,WAAW,YACpCC,EAAUD,EAAe,KAAK,IAAI,KAAK,KAAK,UAAU,YAAa,KAAK,QAAQ,EAAI,EACpFE,EAAS,GAAI7V,EAAM,KAAK,KAAK,eAAiByC,EAAU,IACxDqT,EAAa,EACbpH,EAAOtU,EAAA,CAACoT,EAAM3R,EAAKka,IAAkB,CACrC,QAAS/a,EAAI,EAAGA,EAAIwS,EAAK,SAAS,QAC1B,EAAA3R,EAAMmB,GAD4BhC,IAAK,CAG3C,IAAIyS,EAAQD,EAAK,SAASxS,CAAC,EAAGyB,EAAMZ,EAAM4R,EAAM,OAC5CuI,EAAYvI,EAAM,IAAI,sBAAsB,EAAG,CAAE,OAAAwI,CAAO,EAAID,EAGhE,GAFID,GAAiB,CAAC/a,IAClB8a,GAAcE,EAAU,IAAMD,EAAc,KAC5CtI,aAAiBO,GACbvR,EAAMf,GACNgT,EAAKjB,EAAO5R,EAAKma,CAAS,UAEzBna,GAAOH,IACRoa,EAAa,GACbhT,EAAO,KAAK,CAACgT,CAAU,EAC3BhT,EAAO,KAAKmT,EAASH,CAAU,EAC/BA,EAAa,EACTF,GAAS,CACT,IAAInY,EAAOgQ,EAAM,IAAI,UACjBsB,EAAQtR,EAAOW,GAAeX,CAAI,EAAI,CAAC,EAC3C,GAAIsR,EAAM,OAAQ,CACd,IAAI7P,EAAO6P,EAAMA,EAAM,OAAS,CAAC,EAC7BmH,EAAQlW,EAAMd,EAAK,MAAQ8W,EAAU,KAAOA,EAAU,MAAQ9W,EAAK,KACnEgX,EAAQL,IACRA,EAASK,EACT,KAAK,SAAWP,EAChB,KAAK,aAAe9Z,EACpB,KAAK,WAAaY,EAE1B,CACJ,CAEAsZ,GAAiB/a,GAAKwS,EAAK,SAAS,OAAS,IAC7CsI,GAAcC,EAAc,OAASC,EAAU,QACnDna,EAAMY,EAAMgR,EAAM,UACtB,CACJ,EApCW,QAqCX,OAAAiB,EAAK,KAAK,KAAM,EAAG,IAAI,EAChB5L,CACX,CACA,gBAAgBjH,EAAK,CACjB,GAAI,CAAE,KAAA2R,CAAK,EAAI,KAAK,KAAK,aAAa3R,EAAK,CAAC,EAC5C,OAAO,iBAAiB2R,EAAK,GAAG,EAAE,WAAa,MAAQ/K,EAAU,IAAMA,EAAU,GACrF,CACA,iBAAkB,CACd,IAAI0T,EAAc,KAAK,KAAK,WAAW3I,GAAQ,CAC3C,GAAIA,EAAK,OAAO,GAAKA,EAAK,SAAS,QAAUA,EAAK,QAAU,GAAI,CAC5D,IAAI4I,EAAa,EAAGC,EACpB,QAAS5I,KAASD,EAAK,SAAU,CAC7B,GAAI,CAACC,EAAM,OAAO,GAAK,SAAS,KAAKA,EAAM,IAAI,EAC3C,OACJ,IAAIsB,EAAQ3Q,GAAeqP,EAAM,GAAG,EACpC,GAAIsB,EAAM,QAAU,EAChB,OACJqH,GAAcrH,EAAM,CAAC,EAAE,MACvBsH,EAAatH,EAAM,CAAC,EAAE,MAC1B,CACA,GAAIqH,EACA,MAAO,CACH,WAAY5I,EAAK,IAAI,sBAAsB,EAAE,OAC7C,UAAW4I,EAAa5I,EAAK,OAC7B,WAAA6I,CACJ,CACR,CACJ,CAAC,EACD,GAAIF,EACA,OAAOA,EAEX,IAAIrB,EAAQ,SAAS,cAAc,KAAK,EAAGwB,EAAYC,EAAWF,EAClE,OAAAvB,EAAM,UAAY,UAClBA,EAAM,MAAM,MAAQ,UACpBA,EAAM,MAAM,SAAW,WACvBA,EAAM,YAAc,8BACpB,KAAK,KAAK,SAAS,OAAO,IAAM,CAC5B,KAAK,KAAK,IAAI,YAAYA,CAAK,EAC/B,IAAI5V,EAAOd,GAAe0W,EAAM,UAAU,EAAE,CAAC,EAC7CwB,EAAaxB,EAAM,sBAAsB,EAAE,OAC3CyB,EAAYrX,GAAQA,EAAK,MAAQA,EAAK,MAAQ,GAAK,EACnDmX,EAAanX,GAAQA,EAAK,OAASA,EAAK,OAASoX,EACjDxB,EAAM,OAAO,CACjB,CAAC,EACM,CAAE,WAAAwB,EAAY,UAAAC,EAAW,WAAAF,CAAW,CAC/C,CACA,qBAAsB,CAClB,IAAI/L,EAAO,CAAC,EAAGkM,EAAK,KAAK,KAAK,UAC9B,QAAS3a,EAAM,EAAGb,EAAI,GAAIA,IAAK,CAC3B,IAAImL,EAAOnL,GAAKwb,EAAG,UAAU,OAAS,KAAOA,EAAG,UAAUxb,CAAC,EACvDyB,EAAM0J,EAAOA,EAAK,KAAO,EAAI,KAAK,KAAK,MAAM,IAAI,OACrD,GAAI1J,EAAMZ,EAAK,CACX,IAAIoa,GAAUO,EAAG,YAAY/Z,CAAG,EAAE,OAAS+Z,EAAG,YAAY3a,CAAG,EAAE,KAAO,KAAK,KAAK,OAChFyO,EAAK,KAAKtO,EAAW,QAAQ,CACzB,OAAQ,IAAImY,GAAe8B,CAAM,EACjC,MAAO,GACP,UAAW,GACX,WAAY,EAChB,CAAC,EAAE,MAAMpa,EAAKY,CAAG,CAAC,CACtB,CACA,GAAI,CAAC0J,EACD,MACJtK,EAAMsK,EAAK,GAAK,CACpB,CACA,OAAOnK,EAAW,IAAIsO,CAAI,CAC9B,CACA,YAAa,CACT,IAAItP,EAAI,EACJyb,EAAU,KAAK,KAAK,MAAM,MAAMhM,EAAW,EAAE,IAAIiM,IACnC,KAAK,qBAAqB1b,GAAG,EAAI,OAAO0b,GAAK,YAC1CA,EAAE,KAAK,IAAI,EAAIA,CACnC,EACGC,EAAe,GAAOC,EAAY,KAAK,KAAK,MAAM,MAAM1L,EAAgB,EAAE,IAAI,CAACwL,EAAG1b,IAAM,CACxF,IAAI6b,EAAU,OAAOH,GAAK,WAC1B,OAAIG,IACAF,EAAe,IACZE,EAAUH,EAAE,KAAK,IAAI,EAAIA,CACpC,CAAC,EAWD,IAVIE,EAAU,SACV,KAAK,qBAAqB5b,GAAG,EAAI2b,EACjCF,EAAQ,KAAK3Z,EAAS,KAAK8Z,CAAS,CAAC,GAEzC,KAAK,YAAc,CACf,KAAK,sBACL,GAAGH,EACH,KAAK,oBAAoB,EACzB,KAAK,KAAK,UAAU,WACxB,EACOzb,EAAI,KAAK,YAAY,QACxB,KAAK,qBAAqBA,GAAG,EAAI,GACrC,KAAK,cAAgB,KAAK,KAAK,MAAM,MAAMiQ,EAAa,EAAE,IAAI6L,GAAK,OAAOA,GAAK,WAAaA,EAAE,KAAK,IAAI,EAAIA,CAAC,CAChH,CACA,eAAe5c,EAAQ,CACnB,IAAIgN,EACJ,GAAIhN,EAAO,WAAY,CACnB,IAAI6c,EAAM,KAAK,KAAK,UAAU,YAAY7c,EAAO,MAAM,IAAI,EAC3D,KAAK,KAAK,UAAU,UAAY6c,EAAI,IAAM7c,EAAO,QACjD,KAAK,KAAK,UAAU,WAAaA,EAAO,QACxC,MACJ,CACA,QAASoP,KAAW,KAAK,KAAK,MAAM,MAAMZ,EAAa,EACnD,GAAI,CACA,GAAIY,EAAQ,KAAK,KAAMpP,EAAO,MAAOA,CAAM,EACvC,MAAO,EACf,OACO4Q,EAAG,CACN1B,GAAa,KAAK,KAAK,MAAO0B,EAAG,gBAAgB,CACrD,CAEJ,GAAI,CAAE,MAAA/J,CAAM,EAAI7G,EACZgF,EAAO,KAAK,SAAS6B,EAAM,MAAOmG,EAAKnG,EAAM,SAAW,MAAQmG,IAAO,OAASA,EAAMnG,EAAM,MAAQ,EAAIA,EAAM,KAAOA,EAAM,OAAS,GAAK,CAAE,EAAGpF,EAClJ,GAAI,CAACuD,EACD,OACA,CAAC6B,EAAM,QAAUpF,EAAQ,KAAK,SAASoF,EAAM,OAAQA,EAAM,OAASA,EAAM,KAAO,GAAK,CAAC,KACvF7B,EAAO,CAAE,KAAM,KAAK,IAAIA,EAAK,KAAMvD,EAAM,IAAI,EAAG,IAAK,KAAK,IAAIuD,EAAK,IAAKvD,EAAM,GAAG,EAC7E,MAAO,KAAK,IAAIuD,EAAK,MAAOvD,EAAM,KAAK,EAAG,OAAQ,KAAK,IAAIuD,EAAK,OAAQvD,EAAM,MAAM,CAAE,GAC9F,IAAIqb,EAAUnL,GAAiB,KAAK,IAAI,EACpCoL,EAAa,CACb,KAAM/X,EAAK,KAAO8X,EAAQ,KAAM,IAAK9X,EAAK,IAAM8X,EAAQ,IACxD,MAAO9X,EAAK,MAAQ8X,EAAQ,MAAO,OAAQ9X,EAAK,OAAS8X,EAAQ,MACrE,EACI,CAAE,YAAAE,EAAa,aAAAC,CAAa,EAAI,KAAK,KAAK,UAQ9C,GAPAvX,GAAmB,KAAK,KAAK,UAAWqX,EAAYlW,EAAM,KAAOA,EAAM,OAAS,GAAK,EAAG7G,EAAO,EAAGA,EAAO,EAAG,KAAK,IAAI,KAAK,IAAIA,EAAO,QAASgd,CAAW,EAAG,CAACA,CAAW,EAAG,KAAK,IAAI,KAAK,IAAIhd,EAAO,QAASid,CAAY,EAAG,CAACA,CAAY,EAAG,KAAK,KAAK,eAAiB1U,EAAU,GAAG,EAOhR,OAAO,gBAAkB,OAAO,YAAc,OAAO,eAAe,OAAS,IAC5EvD,EAAK,IAAM,OAAO,YAAc,OAAO,eAAe,UAAY,OAAO,eAAe,QACrFA,EAAK,OAAS,OAAO,YAAc,OAAO,eAAe,WAAY,CACzE,IAAImF,EAAO,KAAK,KAAK,QAAQ,OAAOtD,EAAM,KAAM,CAAC,EAC7CsD,GACAA,EAAK,IAAI,eAAe,CAAE,MAAO,SAAU,CAAC,CACpD,CACJ,CACA,cAAcxI,EAAK,CACf,IAAI6S,EAAOtU,EAACqT,GAAUA,EAAM,SAAS,GAAKA,EAAM,SAAS,KAAKiB,CAAI,EAAvD,QACX,OAAOA,EAAK,KAAK,KAAK,aAAa7S,EAAK,CAAC,EAAE,IAAI,CACnD,CACA,SAAU,CACNoY,GAAe,KAAK,IAAI,CAC5B,CACJ,EACA,SAASA,GAAezG,EAAM4J,EAAQ,CAClC,IAAI/T,EAAoD+T,GAAO,IAAI5J,CAAI,EACvE,GAAInK,GAAK,EAAqB,CACtBA,GAAK,MACLmK,EAAK,QAAQ,EACjB,QAASjK,KAAMiK,EAAK,SAChByG,GAAe1Q,EAAI6T,CAAM,CACjC,CACJ,CARShd,EAAA6Z,GAAA,kBAST,SAASY,GAAkBhZ,EAAK,CAC5B,OAAOA,EAAI,KAAK,UAAY,GAAKA,EAAI,KAAK,aACrCA,EAAI,QAAU,GAAKA,EAAI,KAAK,WAAWA,EAAI,OAAS,CAAC,EAAE,iBAAmB,WAC1EA,EAAI,QAAUA,EAAI,KAAK,WAAW,QAAUA,EAAI,KAAK,WAAWA,EAAI,MAAM,EAAE,iBAAmB,QACxG,CAJSzB,EAAAya,GAAA,qBAKT,SAASwC,GAAoB5b,EAAM6b,EAAS,CACxC,IAAInC,EAAM1Z,EAAK,SAAS,eACxB,GAAI,CAAC0Z,EAAI,UACL,OAAO,KACX,IAAIoC,EAAarV,GAAeiT,EAAI,UAAWA,EAAI,WAAW,EAC1DqC,EAAYnV,GAAc8S,EAAI,UAAWA,EAAI,WAAW,EACxDsC,EAAWF,GAAcC,EAC7B,GAAIA,GAAaD,GAAcC,EAAU,MAAQD,EAAW,KAAM,CAC9D,IAAIG,EAAYpK,GAAK,IAAIkK,EAAU,IAAI,EACvC,GAAI,CAACE,GAAaA,EAAU,OAAO,GAAKA,EAAU,MAAQF,EAAU,KAAK,UACrEC,EAAWD,UAEN/b,EAAK,QAAQ,2BAA4B,CAC9C,IAAIkc,EAAarK,GAAK,IAAIiK,EAAW,IAAI,EACnC,CAACI,GAAcA,EAAW,OAAO,GAAKA,EAAW,MAAQJ,EAAW,KAAK,YAC3EE,EAAWD,EACnB,CACJ,CAEA,GADA/b,EAAK,QAAQ,2BAA6Bgc,GAAYF,EAClD,CAACE,EACD,OAAO,KACX,IAAI/b,EAAO4b,EAAUG,EAAS,OAC9B,MAAO,CAAE,KAAA/b,EAAM,GAAIA,EAAO+b,EAAS,KAAK,UAAU,OAAQ,KAAMA,EAAS,IAAK,CAClF,CAvBSrd,EAAAid,GAAA,uBAwBT,SAAS7D,GAAqB/X,EAAMqN,EAASwO,EAAS,CAClD,IAAI1I,EAAQyI,GAAoB5b,EAAM6b,CAAO,EAC7C,GAAI,CAAC1I,EACD,OAAO,KACX,GAAI,CAAE,KAAM6I,EAAU,KAAA/b,EAAM,GAAAsB,CAAG,EAAI4R,EAAOhH,EAAO6P,EAAS,UAI1D,GAFI,SAAS,KAAK7P,CAAI,GAElBnM,EAAK,MAAM,IAAI,YAAYmT,EAAM,KAAMA,EAAM,EAAE,GAAKhH,EACpD,OAAO,KACX,IAAIgQ,EAAM9O,EAAQ,aAClB,MAAO,CAAE,MAAO,IAAIoD,GAAa0L,EAAI,OAAOlc,CAAI,EAAGkc,EAAI,OAAO5a,CAAE,EAAGtB,EAAMsB,CAAE,EAAG,KAAMya,CAAS,CACjG,CAZSrd,EAAAoZ,GAAA,wBAaT,SAAS0B,GAAiBjX,EAAM+D,EAAQ,CACpC,OAAI/D,EAAK,UAAY,EACV,GACH+D,GAAU/D,EAAK,WAAW+D,EAAS,CAAC,EAAE,iBAAmB,QAAU,EAAwB,IAC9FA,EAAS/D,EAAK,WAAW,QAAUA,EAAK,WAAW+D,CAAM,EAAE,iBAAmB,QAAU,EAAuB,EACxH,CALS5H,EAAA8a,GAAA,oBAMT,IAAI2C,GAAyB,KAA2B,CA96GxD,MA86GwD,CAAAzd,EAAA,6BACpD,aAAc,CACV,KAAK,QAAU,CAAC,CACpB,CACA,aAAasB,EAAMsB,EAAI,CAAEM,GAAS5B,EAAMsB,EAAI,KAAK,OAAO,CAAG,CAC3D,aAAatB,EAAMsB,EAAI,CAAEM,GAAS5B,EAAMsB,EAAI,KAAK,OAAO,CAAG,CAC3D,YAAYnB,EAAK,CAAEyB,GAASzB,EAAKA,EAAK,KAAK,OAAO,CAAG,CACzD,EACA,SAAS+X,GAAgBrZ,EAAGC,EAAGkS,EAAM,CACjC,IAAIoL,EAAO,IAAID,GACf,OAAA/a,EAAS,QAAQvC,EAAGC,EAAGkS,EAAMoL,CAAI,EAC1BA,EAAK,OAChB,CAJS1d,EAAAwZ,GAAA,mBAKT,IAAMmE,GAAN,KAAwB,CA37GxB,MA27GwB,CAAA3d,EAAA,0BACpB,aAAc,CACV,KAAK,QAAU,CAAC,CACpB,CACA,aAAasB,EAAMsB,EAAI,CAAEM,GAAS5B,EAAMsB,EAAI,KAAK,OAAO,CAAG,CAC3D,cAAe,CAAE,CACjB,YAAYnB,EAAK,CAAEyB,GAASzB,EAAKA,EAAK,KAAK,OAAO,CAAG,CACzD,EACA,SAASiY,GAAoBvZ,EAAGC,EAAGkS,EAAM,CACrC,IAAIoL,EAAO,IAAIC,GACf,OAAAjb,EAAS,QAAQvC,EAAGC,EAAGkS,EAAMoL,CAAI,EAC1BA,EAAK,OAChB,CAJS1d,EAAA0Z,GAAA,uBAKT,SAASiB,GAAa9W,EAAM+Z,EAAQ,CAChC,QAAS/X,EAAMhC,EAAMgC,GAAOA,GAAO+X,EAAQ/X,EAAMA,EAAI,cAAgBA,EAAI,WACrE,GAAIA,EAAI,UAAY,GAAKA,EAAI,iBAAmB,QAC5C,MAAO,GAGf,MAAO,EACX,CAPS7F,EAAA2a,GAAA,gBAQT,SAASxB,GAAmBzK,EAAS8H,EAAa,CAC9C,IAAIqH,EAAU,GACd,OAAIrH,GACA9H,EAAQ,kBAAkB,CAACpN,EAAMsB,IAAO,CAChCtB,EAAOkV,EAAY,IAAM5T,EAAK4T,EAAY,OAC1CqH,EAAU,GAClB,CAAC,EACEA,CACX,CARS7d,EAAAmZ,GAAA,sBAST,IAAMY,GAAN,cAA6B5Y,EAAW,CAz9GxC,MAy9GwC,CAAAnB,EAAA,uBACpC,YAAY6b,EAAQ,CAChB,MAAM,EACN,KAAK,OAASA,CAClB,CACA,OAAQ,CACJ,IAAIxW,EAAM,SAAS,cAAc,KAAK,EACtC,OAAAA,EAAI,UAAY,SAChB,KAAK,UAAUA,CAAG,EACXA,CACX,CACA,GAAG9D,EAAO,CAAE,OAAOA,EAAM,QAAU,KAAK,MAAQ,CAChD,UAAU8D,EAAK,CACX,OAAAA,EAAI,MAAM,OAAS,KAAK,OAAS,KAC1B,EACX,CACA,IAAI,UAAW,CAAE,MAAO,EAAM,CAC9B,IAAI,iBAAkB,CAAE,OAAO,KAAK,MAAQ,CAC5C,aAAc,CAAE,MAAO,EAAO,CAClC,EAEA,SAASyY,GAAQnP,EAAOlN,EAAK0Z,EAAO,EAAG,CACnC,IAAI4C,EAAapP,EAAM,gBAAgBlN,CAAG,EACtCwI,EAAO0E,EAAM,IAAI,OAAOlN,CAAG,EAAGuc,EAAUvc,EAAMwI,EAAK,KACvD,GAAIA,EAAK,QAAU,EACf,OAAOqD,EAAgB,OAAO7L,CAAG,EACjCuc,GAAW,EACX7C,EAAO,EACF6C,GAAW/T,EAAK,SACrBkR,EAAO,IACX,IAAI7Z,EAAO0c,EAASpb,EAAKob,EACrB7C,EAAO,EACP7Z,EAAO8L,GAAiBnD,EAAK,KAAM+T,EAAS,EAAK,EAEjDpb,EAAKwK,GAAiBnD,EAAK,KAAM+T,CAAO,EAC5C,IAAIC,EAAMF,EAAW9T,EAAK,KAAK,MAAM3I,EAAMsB,CAAE,CAAC,EAC9C,KAAOtB,EAAO,GAAG,CACb,IAAIP,EAAOqM,GAAiBnD,EAAK,KAAM3I,EAAM,EAAK,EAClD,GAAIyc,EAAW9T,EAAK,KAAK,MAAMlJ,EAAMO,CAAI,CAAC,GAAK2c,EAC3C,MACJ3c,EAAOP,CACX,CACA,KAAO6B,EAAKqH,EAAK,QAAQ,CACrB,IAAI8B,EAAOqB,GAAiBnD,EAAK,KAAMrH,CAAE,EACzC,GAAImb,EAAW9T,EAAK,KAAK,MAAMrH,EAAImJ,CAAI,CAAC,GAAKkS,EACzC,MACJrb,EAAKmJ,CACT,CACA,OAAOuB,EAAgB,MAAMhM,EAAO2I,EAAK,KAAMrH,EAAKqH,EAAK,IAAI,CACjE,CA5BSjK,EAAA8d,GAAA,WA6BT,SAASI,GAAqB7c,EAAM8c,EAAajc,EAAO8C,EAAGS,EAAG,CAC1D,IAAI2Y,EAAO,KAAK,OAAOpZ,EAAImZ,EAAY,MAAQ9c,EAAK,qBAAqB,EACzE,GAAIA,EAAK,cAAgBa,EAAM,OAASb,EAAK,kBAAoB,IAAK,CAClE,IAAI4a,EAAa5a,EAAK,UAAU,aAAa,WACzC4I,EAAO,KAAK,OAAOxE,EAAIvD,EAAM,KAAOb,EAAK,kBAAoB4a,GAAc,IAAOA,CAAU,EAChGmC,GAAQnU,EAAO5I,EAAK,UAAU,aAAa,UAC/C,CACA,IAAIgd,EAAUhd,EAAK,MAAM,SAASa,EAAM,KAAMA,EAAM,EAAE,EACtD,OAAOA,EAAM,KAAOoc,GAAWD,EAASD,EAAM/c,EAAK,MAAM,OAAO,CACpE,CATSrB,EAAAke,GAAA,wBAUT,SAASK,GAAQld,EAAMI,EAAKC,EAAM,CAC9B,IAAIuI,EAAO5I,EAAK,YAAYI,CAAG,EAC/B,GAAI,MAAM,QAAQwI,EAAK,IAAI,EAAG,CAC1B,IAAIuU,EACJ,QAASxV,KAAKiB,EAAK,KAAM,CACrB,GAAIjB,EAAE,KAAOvH,EACT,MACJ,GAAI,EAAAuH,EAAE,GAAKvH,GAEX,IAAIuH,EAAE,KAAOvH,GAAOuH,EAAE,GAAKvH,EACvB,OAAOuH,GACP,CAACwV,GAASxV,EAAE,MAAQrH,GAAU,OAAS6c,EAAK,MAAQxV,EAAE,OAAStH,EAAO,EAAIsH,EAAE,KAAOvH,EAAMuH,EAAE,GAAKvH,OAChG+c,EAAOxV,GACf,CACA,OAAOwV,GAAQvU,CACnB,CACA,OAAOA,CACX,CAjBSjK,EAAAue,GAAA,WAkBT,SAASE,GAAmBpd,EAAMe,EAAOmH,EAASmV,EAAa,CAC3D,IAAIzU,EAAOsU,GAAQld,EAAMe,EAAM,KAAMA,EAAM,OAAS,EAAE,EAClDuc,EAAS,CAACD,GAAezU,EAAK,MAAQtI,GAAU,MAAQ,EAAEN,EAAK,cAAgB4I,EAAK,kBAAoB,KACtG5I,EAAK,YAAYe,EAAM,MAAQ,GAAKA,EAAM,KAAO6H,EAAK,KAAO7H,EAAM,KAAO,EAAIA,EAAM,IAAI,EAC9F,GAAIuc,EAAQ,CACR,IAAIC,EAAavd,EAAK,IAAI,sBAAsB,EAC5CoL,EAAYpL,EAAK,gBAAgB4I,EAAK,IAAI,EAC1CxI,EAAMJ,EAAK,YAAY,CAAE,EAAGkI,IAAYkD,GAAapE,EAAU,KAAOuW,EAAW,MAAQ,EAAIA,EAAW,KAAO,EAC/G,GAAID,EAAO,IAAMA,EAAO,QAAU,CAAE,CAAC,EACzC,GAAIld,GAAO,KACP,OAAO6L,EAAgB,OAAO7L,EAAK8H,EAAU,GAAK,CAAC,CAC3D,CACA,OAAO+D,EAAgB,OAAO/D,EAAUU,EAAK,GAAKA,EAAK,KAAMV,EAAU,GAAK,CAAC,CACjF,CAbSvJ,EAAAye,GAAA,sBAcT,SAASI,GAAWxd,EAAMe,EAAOmH,EAASuV,EAAI,CAC1C,IAAI7U,EAAO5I,EAAK,MAAM,IAAI,OAAOe,EAAM,IAAI,EAAG2c,EAAQ1d,EAAK,UAAU4I,CAAI,EACrEwC,EAAYpL,EAAK,gBAAgB4I,EAAK,IAAI,EAC9C,QAASpE,EAAMzD,EAAO4c,EAAQ,OAAQ,CAClC,IAAIjT,EAAOc,GAAa5C,EAAM8U,EAAOtS,EAAW5G,EAAK0D,CAAO,EAAG0V,EAAOrS,GACtE,GAAI,CAACb,EAAM,CACP,GAAI9B,EAAK,SAAWV,EAAUlI,EAAK,MAAM,IAAI,MAAQ,GACjD,OAAOwE,EACXoZ,EAAO;AAAA,EACPhV,EAAO5I,EAAK,MAAM,IAAI,KAAK4I,EAAK,QAAUV,EAAU,EAAI,GAAG,EAC3DwV,EAAQ1d,EAAK,UAAU4I,CAAI,EAC3B8B,EAAO1K,EAAK,eAAe4I,EAAM,CAACV,CAAO,CAC7C,CACA,GAAKyV,GAKA,GAAI,CAACA,EAAMC,CAAI,EAChB,OAAOpZ,MANC,CACR,GAAI,CAACiZ,EACD,OAAO/S,EACXiT,EAAQF,EAAGG,CAAI,CACnB,CAIApZ,EAAMkG,CACV,CACJ,CAvBS/L,EAAA6e,GAAA,cAwBT,SAASK,GAAQ7d,EAAMI,EAAKW,EAAO,CAC/B,IAAI2b,EAAa1c,EAAK,MAAM,gBAAgBI,CAAG,EAC3Cwc,EAAMF,EAAW3b,CAAK,EAC1B,OAAQ2J,GAAS,CACb,IAAIoT,EAAUpB,EAAWhS,CAAI,EAC7B,OAAIkS,GAAOmB,EAAa,QACpBnB,EAAMkB,GACHlB,GAAOkB,CAClB,CACJ,CATSnf,EAAAkf,GAAA,WAUT,SAASG,GAAehe,EAAMe,EAAOmH,EAAS+V,EAAU,CACpD,IAAIC,EAAWnd,EAAM,KAAMsC,EAAM6E,EAAU,EAAI,GAC/C,GAAIgW,IAAahW,EAAUlI,EAAK,MAAM,IAAI,OAAS,GAC/C,OAAOiM,EAAgB,OAAOiS,EAAUnd,EAAM,KAAK,EACvD,IAAIod,EAAOpd,EAAM,WAAYqd,EACzB3a,EAAOzD,EAAK,WAAW,sBAAsB,EAC7Cqe,EAAcre,EAAK,YAAYke,EAAUnd,EAAM,SAAWA,EAAM,MAAQmH,EAAUnH,EAAM,MAAQA,EAAM,MAAQ,EAAI,GAAG,EACrHud,EAASte,EAAK,YAClB,GAAIqe,EACIF,GAAQ,OACRA,EAAOE,EAAY,KAAO5a,EAAK,MACnC2a,EAAS/a,EAAM,EAAIgb,EAAY,IAAMA,EAAY,WAEhD,CACD,IAAIzV,EAAO5I,EAAK,UAAU,YAAYke,CAAQ,EAC1CC,GAAQ,OACRA,EAAO,KAAK,IAAI1a,EAAK,MAAQA,EAAK,KAAMzD,EAAK,uBAAyBke,EAAWtV,EAAK,KAAK,GAC/FwV,GAAU/a,EAAM,EAAIuF,EAAK,IAAMA,EAAK,QAAU0V,CAClD,CACA,IAAIC,EAAe9a,EAAK,KAAO0a,EAC3BK,EAAWxe,EAAK,UAAU,aAAa,YAAc,EAAGuU,EAAO0J,GAAsDO,EACzH,QAASvL,EAAO,GAAIA,GAAQuL,EAAU,CAClC,IAAIpa,EAAIga,GAAU7J,EAAOtB,GAAQ5P,EAC7BjD,EAAMqe,GAAYze,EAAM,CAAE,EAAGue,EAAc,EAAAna,CAAE,EAAG,GAAOf,CAAG,EAC9D,GAAI6E,EAAU9D,EAAIX,EAAK,OAASW,EAAIX,EAAK,IACrC,OAAOwI,EAAgB,OAAO7L,EAAI,IAAKA,EAAI,KAAK,EACpD,IAAIse,EAAY1e,EAAK,YAAYI,EAAI,IAAKA,EAAI,KAAK,EAAGue,EAAMD,GAAaA,EAAU,IAAMA,EAAU,QAAU,EAAI,EACjH,GAAI,CAACA,IAAcxW,EAAUyW,EAAMP,EAASO,EAAMP,GAC9C,OAAOnS,EAAgB,OAAO7L,EAAI,IAAKA,EAAI,MAAO,OAAW+d,CAAI,CACzE,CACJ,CA9BSxf,EAAAqf,GAAA,kBA+BT,SAASY,GAAiBC,EAAOze,EAAK0Z,EAAM,CACxC,OAAS,CACL,IAAIgF,EAAQ,EACZ,QAAS/N,KAAO8N,EACZ9N,EAAI,QAAQ3Q,EAAM,EAAGA,EAAM,EAAG,CAACH,EAAMsB,EAAI/B,IAAU,CAC/C,GAAIY,EAAMH,GAAQG,EAAMmB,EAAI,CACxB,IAAIlB,EAAOye,GAAShF,IAAS1Z,EAAMH,EAAOsB,EAAKnB,EAAM,GAAK,GAC1DA,EAAMC,EAAO,EAAIJ,EAAOsB,EACxBud,EAAQze,CACZ,CACJ,CAAC,EAEL,GAAI,CAACye,EACD,OAAO1e,CACf,CACJ,CAfSzB,EAAAigB,GAAA,oBAgBT,SAASG,GAAsBF,EAAOnF,EAAK,CACvC,IAAI5X,EAAS,KACb,QAAS,EAAI,EAAG,EAAI4X,EAAI,OAAO,OAAQ,IAAK,CACxC,IAAIpU,EAAQoU,EAAI,OAAO,CAAC,EAAGsF,EAAU,KACrC,GAAI1Z,EAAM,MAAO,CACb,IAAIlF,EAAMwe,GAAiBC,EAAOvZ,EAAM,KAAM,CAAC,EAC3ClF,GAAOkF,EAAM,OACb0Z,EAAU/S,EAAgB,OAAO7L,EAAK,EAAE,EAChD,KACK,CACD,IAAIH,EAAO2e,GAAiBC,EAAOvZ,EAAM,KAAM,EAAE,EAC7C/D,EAAKqd,GAAiBC,EAAOvZ,EAAM,GAAI,CAAC,GACxCrF,GAAQqF,EAAM,MAAQ/D,GAAM+D,EAAM,MAClC0Z,EAAU/S,EAAgB,MAAM3G,EAAM,MAAQA,EAAM,OAASrF,EAAOsB,EAAI+D,EAAM,MAAQA,EAAM,KAAOrF,EAAOsB,CAAE,EACpH,CACIyd,IACKld,IACDA,EAAS4X,EAAI,OAAO,MAAM,GAC9B5X,EAAO,CAAC,EAAIkd,EAEpB,CACA,OAAOld,EAASmK,EAAgB,OAAOnK,EAAQ4X,EAAI,SAAS,EAAIA,CACpE,CAtBS/a,EAAAogB,GAAA,yBAuBT,SAASE,GAAUjf,EAAMkf,EAAQ9e,EAAK,CAClC,IAAI+e,EAASP,GAAiB5e,EAAK,MAAM,MAAM0P,EAAY,EAAE,IAAI4C,GAAKA,EAAEtS,CAAI,CAAC,EAAGI,EAAI,KAAM8e,EAAO,KAAO9e,EAAI,KAAO,GAAK,CAAC,EACzH,OAAO+e,GAAU/e,EAAI,KAAOA,EAAM6L,EAAgB,OAAOkT,EAAQA,EAAS/e,EAAI,KAAO,EAAI,EAAE,CAC/F,CAHSzB,EAAAsgB,GAAA,aAIT,IAAMG,GAAN,KAAe,CAjqHf,MAiqHe,CAAAzgB,EAAA,iBACX,YAAYyB,EAAKgI,EAAO,CACpB,KAAK,IAAMhI,EACX,KAAK,MAAQgI,CACjB,CACJ,EACA,SAASqW,GAAYze,EAAMsd,EAAQvW,EAASsY,EAAO,CAC/C,IAAIrC,EAAUhd,EAAK,WAAW,sBAAsB,EAAGse,EAAStB,EAAQ,IAAMhd,EAAK,UAAU,WACzF,CAAE,EAAA2D,EAAG,EAAAS,CAAE,EAAIkZ,EAAQgC,EAAUlb,EAAIka,EAAQzd,EAI7C,OAAS,CACL,GAAIye,EAAU,EACV,OAAO,IAAIF,GAAS,EAAG,CAAC,EAC5B,GAAIE,EAAUtf,EAAK,UAAU,UACzB,OAAO,IAAIof,GAASpf,EAAK,MAAM,IAAI,OAAQ,EAAE,EAEjD,GADAa,EAAQb,EAAK,gBAAgBsf,CAAO,EAChCD,GAAS,KACT,MACJ,GAAIxe,EAAM,MAAQP,GAAU,KAAM,CAC9B,GAAI+e,EAAQ,EAAIxe,EAAM,GAAKb,EAAK,SAAS,KAAOa,EAAM,KAAOb,EAAK,SAAS,GACvE,MAEJ,IAAIyD,EAAOzD,EAAK,QAAQ,SAASqf,EAAQ,EAAIxe,EAAM,KAAOA,EAAM,GAAIwe,EAAQ,EAAI,GAAK,CAAC,EACtF,GAAI5b,IAAS4b,EAAQ,EAAI5b,EAAK,KAAO6b,EAAUhB,EAAS7a,EAAK,QAAU6b,EAAUhB,GAC7E,KACR,CACA,IAAIiB,EAAWvf,EAAK,UAAU,aAAa,WAAa,EACxDsf,EAAUD,EAAQ,EAAIxe,EAAM,OAAS0e,EAAW1e,EAAM,IAAM0e,CAChE,CAGA,GAAIvf,EAAK,SAAS,MAAQa,EAAM,IAAMb,EAAK,SAAS,IAAMa,EAAM,KAAM,CAClE,GAAIkG,EACA,OAAO,KACX,GAAIlG,EAAM,MAAQP,GAAU,KAAM,CAC9B,IAAIF,EAAMyc,GAAqB7c,EAAMgd,EAASnc,EAAO8C,EAAGS,CAAC,EACzD,OAAO,IAAIgb,GAAShf,EAAKA,GAAOS,EAAM,KAAO,EAAI,EAAE,CACvD,CACJ,CACA,GAAIA,EAAM,MAAQP,GAAU,KACxB,OAAOgf,GAAWze,EAAM,IAAMA,EAAM,QAAU,EAAI,IAAIue,GAASve,EAAM,KAAM,CAAC,EAAI,IAAIue,GAASve,EAAM,GAAI,EAAE,EAE7G,IAAI+H,EAAO5I,EAAK,QAAQ,OAAOa,EAAM,KAAM,CAAC,EAC5C,OAAI,CAAC+H,GAAQA,EAAK,QAAU/H,EAAM,UAC9B+H,EAAO5I,EAAK,QAAQ,OAAOa,EAAM,KAAM,EAAE,GACtC,IAAI2e,GAAiBxf,EAAM2D,EAAGS,EAAGpE,EAAK,gBAAgBa,EAAM,IAAI,CAAC,EAAE,SAAS+H,EAAM/H,EAAM,IAAI,CACvG,CA1CSlC,EAAA8f,GAAA,eA2CT,IAAMe,GAAN,KAAuB,CAltHvB,MAktHuB,CAAA7gB,EAAA,yBACnB,YAAYqB,EAAM2D,EAAGS,EAAGqb,EAAS,CAC7B,KAAK,KAAOzf,EACZ,KAAK,EAAI2D,EACT,KAAK,EAAIS,EACT,KAAK,QAAUqb,EAEf,KAAK,KAAO,KACZ,KAAK,MAAQ,IACjB,CACA,YAAYrf,EAAK,CACb,OAAI,CAAC,KAAK,MAAQ,KAAK,KAAK,KAAOA,GAAO,KAAK,KAAK,GAAKA,KACrD,KAAK,KAAO,KAAK,KAAK,MAAM,IAAI,OAAOA,CAAG,EAC1C,KAAK,MAAQ,KAAK,KAAK,UAAU,KAAK,IAAI,GAEvC,IACX,CACA,UAAUA,EAAKC,EAAM,CACjB,GAAI,CAAE,KAAAuI,EAAM,MAAA8U,CAAM,EAAI,KAAK,YAAYtd,CAAG,EAE1C,OADYsd,EAAM1V,GAAS,KAAK0V,EAAOtd,EAAMwI,EAAK,KAAM,GAAIvI,CAAI,CAAC,EAAE,OACnD,KAAK,OACzB,CACA,MAAMD,EAAKC,EAAM,CACb,GAAI,CAAE,KAAAuI,EAAM,MAAA8U,CAAM,EAAI,KAAK,YAAYtd,CAAG,EAC1C,OAAOsd,EAAM1V,GAAS,KAAK0V,EAAOtd,EAAMwI,EAAK,KAAM,GAAIvI,CAAI,CAAC,EAAE,GAClE,CAEA,OAAOJ,EAAMsB,EAAI,CACb,GAAI,CAAE,MAAAmc,EAAO,KAAA9U,CAAK,EAAI,KAAK,YAAY3I,CAAI,EAC3C,OAAOyd,EAAM,OAAS,GAAKA,EAAM,SAAWA,EAAM,CAAC,EAAE,OAAS,KAAK,SAAWA,EAAM,CAAC,EAAE,GAAK9U,EAAK,KAAOrH,EAC5G,CASA,KAAKme,EAAWC,EAAU,CACtB,IAAIC,EAAK,EAAGC,EAAKH,EAAU,OAAS,EAAGI,EAAO,IAAI,IAC9CC,EAAO,KAAK,OAAOL,EAAU,CAAC,EAAGA,EAAUG,CAAE,CAAC,EAC9CG,EAAOC,EACPC,EAAW,GAAIC,EAAY,IAAKC,EAapCC,EAAQ,KAAOT,EAAKC,GAAI,CACpB,IAAItL,EAAOsL,EAAKD,EAAIjB,EAAOiB,EAAKC,GAAO,EACvCS,EAAQ,GAAIR,EAAK,IAAInB,CAAG,EAAG,CACvB,IAAI1L,EAAO2M,EAAK,KAAK,MAAM,KAAK,OAAO,EAAIrL,CAAI,EAC/C,QAAShV,EAAI,EAAGA,EAAIgV,EAAMhV,IAAK,CAC3B,GAAI,CAACugB,EAAK,IAAI7M,CAAI,EAAG,CACjB0L,EAAM1L,EACN,MAAMqN,CACV,CACArN,IACIA,GAAQ4M,IACR5M,EAAO2M,EACf,CACA,MAAMS,CACV,CACAP,EAAK,IAAInB,CAAG,EACZ,IAAIrL,EAAQqM,EAAShB,CAAG,EACxB,GAAIrL,EACA,QAAS/T,EAAI,EAAGA,EAAI+T,EAAM,OAAQ/T,IAAK,CACnC,IAAIkE,EAAO6P,EAAM/T,CAAC,EAAGc,EAAO,EAE5B,GAAI,EAAAoD,EAAK,OAAS,GAAK6P,EAAM,OAAS,GAEtC,IAAI7P,EAAK,OAAS,KAAK,GACf,CAACuc,GAASA,EAAM,OAASvc,EAAK,UAC9Buc,EAAQvc,GACZpD,EAAO,UAEFoD,EAAK,IAAM,KAAK,GACjB,CAACwc,GAASA,EAAM,IAAMxc,EAAK,OAC3Bwc,EAAQxc,GACZpD,EAAO,OAEN,CACD,IAAIyC,EAAMW,EAAK,KAAO,KAAK,EAAI,KAAK,EAAIA,EAAK,KAAOA,EAAK,MAAQ,KAAK,EAAI,KAAK,EAAIA,EAAK,MAAQ,EAC5F8c,EAAK,KAAK,IAAIzd,CAAG,EACjByd,EAAKJ,IACLD,EAAWvB,EACXwB,EAAYI,EACZH,EAAc3c,GAEdX,IACAzC,EAAQyC,EAAM,IAAO,KAAK,SAAWkE,EAAU,KAAO,GAAK,EACnE,CAEI3G,GAAQ,KAAO,CAAC0f,GAAQ,KAAK,UAAUL,EAAUf,CAAG,EAAG,CAAC,GACxDkB,EAAKlB,EACAte,GAAQ,IAAM,CAAC0f,GAAQ,KAAK,UAAUL,EAAUf,EAAM,CAAC,EAAG,EAAE,KACjEiB,EAAKjB,EAAM,GACnB,CACR,CAGA,GAAI,CAACyB,EAAa,CACd,IAAI/f,EAAO2f,IAAU,CAACC,GAAU,KAAK,EAAID,EAAM,OAASC,EAAM,IAAM,KAAK,GAAMD,EAAQC,EACvF,YAAK,GAAK5f,EAAK,IAAMA,EAAK,QAAU,EAC7B,KAAK,KAAKqf,EAAWC,CAAQ,CACxC,CAGA,GAAIQ,EAAW,CACX,GAAIH,GAASA,EAAM,OAASI,EAAY,IACpC,YAAK,EAAIJ,EAAM,OAAS,EACjB,KAAK,KAAKN,EAAWC,CAAQ,EAExC,GAAIM,GAASA,EAAM,IAAMG,EAAY,OACjC,YAAK,EAAIH,EAAM,IAAM,EACd,KAAK,KAAKP,EAAWC,CAAQ,CAE5C,CACA,IAAIpb,GAAOwb,EAAO,KAAK,MAAML,EAAUQ,CAAQ,EAAG,CAAC,EAAI,KAAK,UAAYlZ,EAAU,IAClF,MAAO,CACH,EAAGkZ,EAEH,MAAQ,KAAK,GAAKE,EAAY,KAAOA,EAAY,OAAS,GAAM7b,CACpE,CACJ,CACA,SAASwN,EAAMxL,EAAQ,CACnB,IAAImZ,EAAY,CAAC,EACjB,QAASngB,EAAI,EAAGA,EAAIwS,EAAK,OAAQxS,EAAIwM,GAAiBgG,EAAK,KAAMxS,CAAC,EAC9DmgB,EAAU,KAAKnZ,EAAShH,CAAC,EAC7BmgB,EAAU,KAAKnZ,EAASwL,EAAK,MAAM,EACnC,IAAIkB,EAAO,KAAK,KAAKyM,EAAWngB,GAAK,CACjC,IAAIuD,EAAM4c,EAAUngB,CAAC,EAAIgH,EAAQvF,EAAM0e,EAAUngB,EAAI,CAAC,EAAIgH,EAC1D,OAAO3D,GAAUmP,EAAK,IAAKjP,EAAK9B,CAAG,EAAE,eAAe,CACxD,CAAC,EACD,OAAOiS,EAAK,MAAQ,IAAImM,GAASM,EAAUzM,EAAK,EAAI,CAAC,EAAG,EAAE,EAAI,IAAImM,GAASM,EAAUzM,EAAK,CAAC,EAAG,CAAC,CACnG,CACA,SAASlB,EAAMxL,EAAQ,CACnB,GAAI,CAACwL,EAAK,OACN,OAAO,IAAIqN,GAAS7Y,EAAQ,CAAC,EACjC,GAAIwL,EAAK,SAAS,QAAU,EAAG,CAC3B,IAAIC,EAAQD,EAAK,SAAS,CAAC,EAC3B,GAAIC,EAAM,OAAO,EACb,OAAO,KAAK,SAASA,EAAOzL,CAAM,EACjC,GAAIyL,EAAM,YAAY,EACvB,OAAO,KAAK,SAASA,EAAOzL,CAAM,CAC1C,CACA,IAAImZ,EAAY,CAACnZ,CAAM,EACvB,QAAShH,EAAI,EAAGa,EAAMmG,EAAQhH,EAAIwS,EAAK,SAAS,OAAQxS,IACpDmgB,EAAU,KAAKtf,GAAO2R,EAAK,SAASxS,CAAC,EAAE,MAAM,EACjD,IAAI0T,EAAO,KAAK,KAAKyM,EAAWngB,GAAK,CACjC,IAAIyS,EAAQD,EAAK,SAASxS,CAAC,EAC3B,OAAIyS,EAAM,MAAQ,GACP,MACHA,EAAM,IAAI,UAAY,EAAIA,EAAM,IAAMpP,GAAUoP,EAAM,IAAK,EAAGA,EAAM,MAAM,GAAG,eAAe,CACxG,CAAC,EACGA,EAAQD,EAAK,SAASkB,EAAK,CAAC,EAAG7S,EAAMsf,EAAUzM,EAAK,CAAC,EACzD,OAAIjB,EAAM,OAAO,EACN,KAAK,SAASA,EAAO5R,CAAG,EAC/B4R,EAAM,YAAY,EACX,KAAK,SAASA,EAAO5R,CAAG,EAC5B6S,EAAK,MAAQ,IAAImM,GAASM,EAAUzM,EAAK,EAAI,CAAC,EAAG,EAAE,EAAI,IAAImM,GAAShf,EAAK,CAAC,CACrF,CACJ,EAEMogB,GAAuB,SACvBC,GAAN,KAAgB,CA/3HhB,MA+3HgB,CAAA9hB,EAAA,kBACZ,YAAY+hB,EAAQ1gB,EAAM,CACtB,KAAK,OAAS0gB,EACd,KAAK,KAAO1gB,EACZ,KAAK,KAAO,GACZ,KAAK,cAAgBA,EAAK,MAAM,MAAM2gB,EAAY,aAAa,CACnE,CACA,OAAOxU,EAAM,CACT,KAAK,MAAQA,CACjB,CACA,WAAY,CACR,KAAK,MAAQqU,EACjB,CACA,UAAUzf,EAAOC,EAAK,CAClB,GAAI,CAACD,EACD,OAAO,KACX,IAAIwC,EAASxC,EAAM,WACnB,QAASyD,EAAMzD,IAAS,CACpB,KAAK,gBAAgBwC,EAAQiB,CAAG,EAChC,IAAIoc,EAAS,KAAK,KAAK,OACvB,KAAK,SAASpc,CAAG,EACjB,IAAIuN,EAAOF,GAAK,IAAIrN,CAAG,EAAGkG,EAAOlG,EAAI,YACrC,GAAIkG,GAAQ1J,EAAK,CACoC+Q,GAAK,YAAe,CAACrH,GAAQnH,GAAU,KAAK,KAAK,YAC9F,KAAK,UAAU,EACnB,KACJ,CACA,IAAIsd,EAAWhP,GAAK,IAAInH,CAAI,GACvBqH,GAAQ8O,EAAW9O,EAAK,YACxBA,EAAOA,EAAK,WAAa3O,GAAeoB,CAAG,IACvCpB,GAAesH,CAAI,IAAMlG,EAAI,UAAY,MAAqDuN,GAAK,SAAS,IAAO,KAAK,KAAK,OAAS6O,IAC3I,CAACE,GAAapW,EAAM1J,CAAG,GACvB,KAAK,UAAU,EACnBwD,EAAMkG,CACV,CACA,YAAK,gBAAgBnH,EAAQvC,CAAG,EACzB,IACX,CACA,aAAawB,EAAM,CACf,IAAI2J,EAAO3J,EAAK,UAChB,QAASue,KAAS,KAAK,OACfA,EAAM,MAAQve,IACdue,EAAM,IAAM,KAAK,KAAK,OAAS,KAAK,IAAIA,EAAM,OAAQ5U,EAAK,MAAM,GACzE,QAASrJ,EAAM,EAAGke,EAAK,KAAK,cAAgB,KAAO,cAAe,CAC9D,IAAIC,EAAY,GAAIC,EAAY,EAAG3Q,EAUnC,GATI,KAAK,eACL0Q,EAAY9U,EAAK,QAAQ,KAAK,cAAerJ,CAAG,EAChDoe,EAAY,KAAK,cAAc,SAE1B3Q,EAAIyQ,EAAG,KAAK7U,CAAI,KACrB8U,EAAY1Q,EAAE,MACd2Q,EAAY3Q,EAAE,CAAC,EAAE,QAErB,KAAK,OAAOpE,EAAK,MAAMrJ,EAAKme,EAAY,EAAI9U,EAAK,OAAS8U,CAAS,CAAC,EAChEA,EAAY,EACZ,MAEJ,GADA,KAAK,UAAU,EACXC,EAAY,EACZ,QAASH,KAAS,KAAK,OACfA,EAAM,MAAQve,GAAQue,EAAM,IAAM,KAAK,KAAK,SAC5CA,EAAM,KAAOG,EAAY,GACrCpe,EAAMme,EAAYC,CACtB,CACJ,CACA,SAAS1e,EAAM,CACX,IAAIuP,EAAOF,GAAK,IAAIrP,CAAI,EACpB2e,EAAWpP,GAAQA,EAAK,gBAC5B,GAAIoP,GAAY,KAAM,CAClB,KAAK,gBAAgB3e,EAAM2e,EAAS,MAAM,EAC1C,QAAS5hB,EAAI4hB,EAAS,KAAK,EAAG,CAAC5hB,EAAE,KAAK,EAAE,MAChCA,EAAE,UACF,KAAK,UAAU,EAEf,KAAK,OAAOA,EAAE,KAAK,CAE/B,MACSiD,EAAK,UAAY,EACtB,KAAK,aAAaA,CAAI,EAEjBA,EAAK,UAAY,KAClBA,EAAK,aACL,KAAK,UAAU,EAEdA,EAAK,UAAY,GACtB,KAAK,UAAUA,EAAK,WAAY,IAAI,CAE5C,CACA,gBAAgBA,EAAMkI,EAAM,CACxB,QAASqW,KAAS,KAAK,OACfA,EAAM,MAAQve,GAAQA,EAAK,WAAWue,EAAM,MAAM,GAAKrW,IACvDqW,EAAM,IAAM,KAAK,KAAK,OAClC,CACA,gBAAgBve,EAAM8I,EAAQ,CAC1B,QAASyV,KAAS,KAAK,QACfve,EAAK,UAAY,EAAIue,EAAM,MAAQve,EAAOA,EAAK,SAASue,EAAM,IAAI,KAClEA,EAAM,IAAM,KAAK,KAAK,QAAUK,GAAQ5e,EAAMue,EAAM,KAAMA,EAAM,MAAM,EAAIzV,EAAS,GAC/F,CACJ,EACA,SAAS8V,GAAQ7d,EAAQf,EAAM+D,EAAQ,CACnC,OAAS,CACL,GAAI,CAAC/D,GAAQ+D,EAASjD,GAAUd,CAAI,EAChC,MAAO,GACX,GAAIA,GAAQe,EACR,MAAO,GACXgD,EAASrD,GAASV,CAAI,EAAI,EAC1BA,EAAOA,EAAK,UAChB,CACJ,CATS7D,EAAAyiB,GAAA,WAUT,SAASN,GAAate,EAAMxB,EAAK,CAC7B,IAAIuV,EACJ,KACQ,EAAA/T,GAAQxB,GAAO,CAACwB,GADhBA,EAAOA,EAAK,YAAa,CAG7B,IAAIxC,EAAO6R,GAAK,IAAIrP,CAAI,EACxB,GAAI,CAA8CxC,GAAK,SAAS,EAC5D,MAAO,GACPA,IACCuW,IAAYA,EAAU,CAAC,IAAI,KAAKvW,CAAI,CAC7C,CACA,GAAIuW,EACA,QAAS8K,KAAK9K,EAAS,CACnB,IAAI+K,EAAWD,EAAE,gBACjB,GAAwDC,GAAS,OAC7D,MAAO,EACf,CACJ,MAAO,EACX,CAlBS3iB,EAAAmiB,GAAA,gBAmBT,IAAMS,GAAN,KAAe,CA9/Hf,MA8/He,CAAA5iB,EAAA,iBACX,YAAY6D,EAAM+D,EAAQ,CACtB,KAAK,KAAO/D,EACZ,KAAK,OAAS+D,EACd,KAAK,IAAM,EACf,CACJ,EAEMib,GAAN,KAAgB,CAtgIhB,MAsgIgB,CAAA7iB,EAAA,kBACZ,YAAYqB,EAAMe,EAAOC,EAAKygB,EAAU,CACpC,KAAK,SAAWA,EAChB,KAAK,OAAS,KACd,KAAK,KAAO,GACZ,KAAK,WAAa1gB,EAAQ,GAC1B,GAAI,CAAE,cAAe2gB,EAAO,gBAAiBC,CAAQ,EAAI3hB,EAAK,QAAS4hB,EAAS5hB,EAAK,MAAM,UAC3F,GAAIA,EAAK,MAAM,UAAYe,EAAQ,GAE/B,KAAK,OAAS,aAETA,EAAQ,KAAO,KAAK,OAAS8gB,GAAgB7hB,EAAK,QAAQ,KAAMe,EAAOC,EAAK,CAAC,GAAI,CACtF,IAAI8gB,EAAYJ,GAASC,EAAU,CAAC,EAAII,GAAgB/hB,CAAI,EACxDgiB,EAAS,IAAIvB,GAAUqB,EAAW9hB,CAAI,EAC1CgiB,EAAO,UAAU,KAAK,OAAO,SAAU,KAAK,OAAO,MAAM,EACzD,KAAK,KAAOA,EAAO,KACnB,KAAK,OAASC,GAAoBH,EAAW,KAAK,OAAO,IAAI,CACjE,KACK,CACD,IAAIzc,EAASrF,EAAK,SAAS,eACvBqV,EAAOqM,GAASA,EAAM,MAAQrc,EAAO,WAAaqc,EAAM,QAAUrc,EAAO,aACzE,CAAC9C,GAASvC,EAAK,WAAYqF,EAAO,SAAS,EACzCuc,EAAO,KAAK,KACZ5hB,EAAK,QAAQ,WAAWqF,EAAO,UAAWA,EAAO,WAAW,EAC9D8T,EAASwI,GAAWA,EAAQ,MAAQtc,EAAO,YAAcsc,EAAQ,QAAUtc,EAAO,cAClF,CAAC9C,GAASvC,EAAK,WAAYqF,EAAO,UAAU,EAC1Cuc,EAAO,KAAK,OACZ5hB,EAAK,QAAQ,WAAWqF,EAAO,WAAYA,EAAO,YAAY,EAKhEvB,EAAK9D,EAAK,SACd,IAAK1B,EAAQ,KAAOA,EAAQ,SAAWsjB,EAAO,KAAK,OAASvM,GAAQ8D,IAC/DrV,EAAG,KAAO,GAAKA,EAAG,GAAK9D,EAAK,MAAM,IAAI,QAAS,CAChD,IAAIC,EAAO,KAAK,IAAIoV,EAAM8D,CAAM,EAAG5X,EAAK,KAAK,IAAI8T,EAAM8D,CAAM,EACzD+I,EAAUpe,EAAG,KAAO7D,EAAMkiB,EAAQre,EAAG,GAAKvC,GACzC2gB,GAAW,GAAKA,GAAW,GAAKjiB,GAAQ,KAAOkiB,GAAS,GAAKA,GAAS,IAAM5gB,GAAMvB,EAAK,MAAM,IAAI,UAClGqV,EAAO,EACP8D,EAASnZ,EAAK,MAAM,IAAI,OAEhC,CACA,GAAIA,EAAK,WAAW,UAAY,IAAM4hB,EAAO,OAAO,OAAS,EACzD,KAAK,OAASA,EAAO,aAAa3V,EAAgB,MAAMkN,EAAQ9D,CAAI,CAAC,UAEhErV,EAAK,cAAgBmZ,GAAU9D,GAAQ,EAAEuM,EAAO,KAAK,OAASA,EAAO,KAAK,MAAQvM,IACvFrV,EAAK,WAAW,cAAgB,KAAK,IAAI,EAAI,IAAK,CAIlD,IAAIwS,EAASxS,EAAK,YAAYqV,EAAM,EAAE,EAAGjN,EAAQ,EAC7CoK,IACApK,EAAQpI,EAAK,WAAW,YAAcwS,EAAO,OAAS,GAAK,GAC/D,KAAK,OAASvG,EAAgB,OAAO,CAACA,EAAgB,OAAOoJ,EAAMjN,CAAK,CAAC,CAAC,CAC9E,MAEI,KAAK,OAAS6D,EAAgB,OAAOkN,EAAQ9D,CAAI,CAEzD,CACJ,CACJ,EACA,SAASwM,GAAgB9P,EAAM9R,EAAMsB,EAAIgF,EAAQ,CAC7C,GAAIwL,EAAK,YAAY,EAAG,CACpB,IAAIqQ,EAAQ,GAAIC,EAAY,GAAIC,EAAM,GAAIC,EAAQ,GAClD,QAAShjB,EAAI,EAAGa,EAAMmG,EAAQic,EAAUjc,EAAQhH,EAAIwS,EAAK,SAAS,OAAQxS,IAAK,CAC3E,IAAIyS,EAAQD,EAAK,SAASxS,CAAC,EAAGyB,EAAMZ,EAAM4R,EAAM,OAChD,GAAI5R,EAAMH,GAAQe,EAAMO,EACpB,OAAOsgB,GAAgB7P,EAAO/R,EAAMsB,EAAInB,CAAG,EAK/C,GAJIY,GAAOf,GAAQmiB,GAAS,KACxBA,EAAQ7iB,EACR8iB,EAAYjiB,GAEZA,EAAMmB,GAAMyQ,EAAM,IAAI,YAAcD,EAAK,IAAK,CAC9CuQ,EAAM/iB,EACNgjB,EAAQC,EACR,KACJ,CACAA,EAAUxhB,EACVZ,EAAMY,EAAMgR,EAAM,UACtB,CACA,MAAO,CAAE,KAAMqQ,EAAW,GAAIE,EAAQ,EAAIhc,EAASwL,EAAK,OAASwQ,EAC7D,UAAWH,EAAQrQ,EAAK,SAASqQ,EAAQ,CAAC,EAAE,IAAI,YAAc,OAASrQ,EAAK,IAAI,WAChF,OAAQuQ,EAAMvQ,EAAK,SAAS,QAAUuQ,GAAO,EAAIvQ,EAAK,SAASuQ,CAAG,EAAE,IAAM,IAAK,CACvF,KACK,QAAIvQ,EAAK,OAAO,EACV,CAAE,KAAMxL,EAAQ,GAAIA,EAASwL,EAAK,OAAQ,SAAUA,EAAK,IAAK,OAAQA,EAAK,IAAI,WAAY,EAG3F,IAEf,CA7BSpT,EAAAkjB,GAAA,mBA8BT,SAASY,GAAeziB,EAAM0iB,EAAW,CACrC,IAAIC,EACA,CAAE,OAAAC,CAAO,EAAIF,EAAW,CAAE,MAAApV,CAAM,EAAItN,EAAM0Z,EAAMpM,EAAM,UAAU,KAChEuV,EAAU7iB,EAAK,WAAW,YAAc,KAAK,IAAI,EAAI,IAAMA,EAAK,WAAW,YAAc,GAC7F,GAAI0iB,EAAU,OAAQ,CAClB,GAAI,CAAE,KAAAziB,EAAM,GAAAsB,CAAG,EAAImhB,EAAU,OACzBI,EAAepJ,EAAI,KAAMqJ,EAAgB,MAGzCF,IAAY,GAAKvkB,EAAQ,SAAWokB,EAAU,KAAK,OAASnhB,EAAKtB,KACjE6iB,EAAepJ,EAAI,GACnBqJ,EAAgB,OAEpB,IAAIC,EAAM1V,EAAM,IAAI,YAAYrN,EAAMsB,EAAIif,EAAoB,EAAGyC,EAAQhS,EACrE,CAACyI,EAAI,OAASA,EAAI,MAAQzZ,GAAQyZ,EAAI,IAAMnY,IAAOmhB,EAAU,UAAYM,GAAON,EAAU,OAC1FM,EAAI,MAAM,EAAGtJ,EAAI,KAAOzZ,CAAI,GAAKyiB,EAAU,KAAK,MAAM,EAAGhJ,EAAI,KAAOzZ,CAAI,GACxE+iB,EAAI,MAAMtJ,EAAI,GAAKzZ,CAAI,GAAKyiB,EAAU,KAAK,MAAMO,EAASP,EAAU,KAAK,QAAUM,EAAI,QAAUtJ,EAAI,GAAKzZ,GAAM,EAEhH0iB,EAAS,CAAE,KAAMjJ,EAAI,KAAM,GAAIA,EAAI,GAC/B,OAAQvF,EAAK,GAAGuO,EAAU,KAAK,MAAMhJ,EAAI,KAAOzZ,EAAMgjB,CAAM,EAAE,MAAMzC,EAAoB,CAAC,CAAE,GAE1FvP,EAAOiS,GAASF,EAAKN,EAAU,KAAMI,EAAe7iB,EAAM8iB,CAAa,KAGxEzkB,EAAQ,QAAUukB,GAAW,IAC7B5R,EAAK,KAAOA,EAAK,KAAO,GAAKyR,EAAU,KAAK,MAAMzR,EAAK,KAAMA,EAAK,GAAG,GAAKuP,GAAuBA,IACjGvP,EAAK,MACT0R,EAAS,CAAE,KAAM1iB,EAAOgR,EAAK,KAAM,GAAIhR,EAAOgR,EAAK,IAC/C,OAAQkD,EAAK,GAAGuO,EAAU,KAAK,MAAMzR,EAAK,KAAMA,EAAK,GAAG,EAAE,MAAMuP,EAAoB,CAAC,CAAE,EAEnG,MACSoC,IAAW,CAAC5iB,EAAK,UAAYsN,EAAM,MAAMQ,EAAQ,GAAKqV,GAAWP,EAAQlJ,CAAG,KACjFkJ,EAAS,MAEb,GAAI,CAACD,GAAU,CAACC,EACZ,MAAO,GA8BX,IA7BKtkB,EAAQ,KAAOA,EAAQ,UAAYqkB,GAAUA,EAAO,MAAQA,EAAO,IAAMA,EAAO,MAAQjJ,EAAI,KAAO,GACpG,SAAS,KAAKiJ,EAAO,OAAO,SAAS,CAAC,GAAK3iB,EAAK,WAAW,aAAa,aAAa,GAAK,OAGtF4iB,GAAUD,EAAO,OAAO,QAAU,IAClCC,EAAS3W,EAAgB,OAAO2W,EAAO,KAAK,OAAS,EAAGA,EAAO,KAAK,KAAO,CAAC,GAChFD,EAAS,CAAE,KAAMA,EAAO,KAAM,GAAIA,EAAO,GAAI,OAAQxO,EAAK,GAAG,CAACwO,EAAO,OAAO,SAAS,EAAE,QAAQ,IAAK,GAAG,CAAC,CAAC,CAAE,GAEtGrV,EAAM,IAAI,OAAOoM,EAAI,IAAI,EAAE,GAAKA,EAAI,IAAM1Z,EAAK,QAAQ,cAAc0Z,EAAI,EAAE,GAChF1Z,EAAK,WAAW,gBAAkB,KAAK,IAAI,EAAI,GAM/C2iB,EAAS,CACL,KAAMjJ,EAAI,KAAM,GAAIA,EAAI,GACxB,OAAQpM,EAAM,OAAOtN,EAAK,WAAW,aAAa,CACtD,EAEK1B,EAAQ,QAAUqkB,GAAUA,EAAO,MAAQA,EAAO,IAAMA,EAAO,MAAQjJ,EAAI,MAChFiJ,EAAO,OAAO,SAAS,GAAK;AAAA,IAAS3iB,EAAK,eAItC4iB,IACAA,EAAS3W,EAAgB,OAAO2W,EAAO,KAAK,OAAS,EAAGA,EAAO,KAAK,KAAO,CAAC,GAChFD,EAAS,CAAE,KAAMjJ,EAAI,KAAM,GAAIA,EAAI,GAAI,OAAQvF,EAAK,GAAG,CAAC,GAAG,CAAC,CAAE,GAE9DwO,EACA,OAAOS,GAAoBpjB,EAAM2iB,EAAQC,EAAQC,CAAO,EAEvD,GAAID,GAAU,CAACO,GAAWP,EAAQlJ,CAAG,EAAG,CACzC,IAAInM,EAAiB,GAAO8V,EAAY,SACxC,OAAIrjB,EAAK,WAAW,kBAAoB,KAAK,IAAI,EAAI,KAC7CA,EAAK,WAAW,qBAAuB,WACvCuN,EAAiB,IACrB8V,EAAYrjB,EAAK,WAAW,oBACxBqjB,GAAa,mBACbT,EAAS7D,GAAsBzR,EAAM,MAAMoC,EAAY,EAAE,IAAI4C,GAAKA,EAAEtS,CAAI,CAAC,EAAG4iB,CAAM,IAE1F5iB,EAAK,SAAS,CAAE,UAAW4iB,EAAQ,eAAArV,EAAgB,UAAA8V,CAAU,CAAC,EACvD,EACX,KAEI,OAAO,EAEf,CAnFS1kB,EAAA8jB,GAAA,kBAoFT,SAASW,GAAoBpjB,EAAM2iB,EAAQC,EAAQC,EAAU,GAAI,CAC7D,GAAIvkB,EAAQ,KAAO0B,EAAK,WAAW,YAAY2iB,CAAM,EACjD,MAAO,GACX,IAAIjJ,EAAM1Z,EAAK,MAAM,UAAU,KAO/B,GAAI1B,EAAQ,UACNqkB,EAAO,IAAMjJ,EAAI,KAGdiJ,EAAO,MAAQjJ,EAAI,MAAQiJ,EAAO,MAAQjJ,EAAI,KAAO,GAAK1Z,EAAK,MAAM,SAAS2iB,EAAO,KAAMjJ,EAAI,IAAI,GAAK,MACzGiJ,EAAO,OAAO,QAAU,GAAKA,EAAO,OAAO,OAAS,GACpD5c,GAAY/F,EAAK,WAAY,QAAS,EAAE,IACtC2iB,EAAO,MAAQjJ,EAAI,KAAO,GAAKiJ,EAAO,IAAMjJ,EAAI,IAAMiJ,EAAO,OAAO,QAAU,GAC5EE,GAAW,GAAKF,EAAO,OAAO,OAASA,EAAO,GAAKA,EAAO,MAAQA,EAAO,GAAKjJ,EAAI,OAClF3T,GAAY/F,EAAK,WAAY,YAAa,CAAC,GAC9C2iB,EAAO,MAAQjJ,EAAI,MAAQiJ,EAAO,IAAMjJ,EAAI,GAAK,GAAKiJ,EAAO,OAAO,QAAU,GAC3E5c,GAAY/F,EAAK,WAAY,SAAU,EAAE,GACjD,MAAO,GACX,IAAImM,EAAOwW,EAAO,OAAO,SAAS,EAC9B3iB,EAAK,WAAW,WAAa,GAC7BA,EAAK,WAAW,YACpB,IAAIsjB,EACAC,EAAgB5kB,EAAA,IAAM2kB,IAAcA,EAAYE,GAAmBxjB,EAAM2iB,EAAQC,CAAM,GAAvE,iBACpB,OAAK5iB,EAAK,MAAM,MAAM0M,EAAY,EAAE,KAAK+W,GAAKA,EAAEzjB,EAAM2iB,EAAO,KAAMA,EAAO,GAAIxW,EAAMoX,CAAa,CAAC,GAC9FvjB,EAAK,SAASujB,EAAc,CAAC,EAC1B,EACX,CA/BS5kB,EAAAykB,GAAA,uBAgCT,SAASI,GAAmBxjB,EAAM2iB,EAAQC,EAAQ,CAC9C,IAAIlR,EAAIgS,EAAa1jB,EAAK,MAAO0Z,EAAMgK,EAAW,UAAU,KAAMC,EAAW,GAC7E,GAAIhB,EAAO,MAAQA,EAAO,IAAMA,EAAO,KAAOjJ,EAAI,MAAQiJ,EAAO,KAAOjJ,EAAI,GAAI,CAC5E,IAAIrZ,EAAOsiB,EAAO,KAAOjJ,EAAI,KAAO,GAAK,EAAGtZ,EAAMC,EAAO,EAAIqZ,EAAI,KAAOA,EAAI,GACxEoF,EAAQF,GAAiB8E,EAAW,MAAMhU,EAAY,EAAE,IAAI4C,GAAKA,EAAEtS,CAAI,CAAC,EAAGI,EAAKC,CAAI,EACpFsiB,EAAO,MAAQ7D,IACf6E,EAAW7E,EACnB,CACA,GAAI6E,EAAW,GACXjS,EAAK,CACD,QAASiR,EACT,UAAW1W,EAAgB,OAAO0W,EAAO,KAAOA,EAAO,OAAO,OAAQ,EAAE,CAC5E,UAEKA,EAAO,MAAQjJ,EAAI,MAAQiJ,EAAO,IAAMjJ,EAAI,IAAMiJ,EAAO,GAAKA,EAAO,OAASjJ,EAAI,GAAKA,EAAI,MAAQ,IACvG,CAACkJ,GAAUA,EAAO,KAAK,OAASA,EAAO,KAAK,MAAQD,EAAO,KAAOA,EAAO,OAAO,SACjF3iB,EAAK,WAAW,UAAY,EAAG,CAC/B,IAAIwS,EAASkH,EAAI,KAAOiJ,EAAO,KAAOe,EAAW,SAAShK,EAAI,KAAMiJ,EAAO,IAAI,EAAI,GAC/E1Q,EAAQyH,EAAI,GAAKiJ,EAAO,GAAKe,EAAW,SAASf,EAAO,GAAIjJ,EAAI,EAAE,EAAI,GAC1EhI,EAAKgS,EAAW,iBAAiB1jB,EAAK,MAAM,OAAOwS,EAASmQ,EAAO,OAAO,YAAY,EAAG,OAAW3iB,EAAK,MAAM,SAAS,EAAIiS,CAAK,CAAC,CACtI,KACK,CACD,IAAI5E,EAAUqW,EAAW,QAAQf,CAAM,EACnCiB,EAAUhB,GAAUA,EAAO,KAAK,IAAMvV,EAAQ,UAAYuV,EAAO,KAAO,OAE5E,GAAIc,EAAW,UAAU,OAAO,OAAS,IAAM1jB,EAAK,WAAW,WAAa,GAAKA,EAAK,WAAW,2BAC7F2iB,EAAO,IAAMjJ,EAAI,GAAK,IAAMiJ,EAAO,IAAMjJ,EAAI,GAAK,GAAI,CACtD,IAAImK,EAAW7jB,EAAK,MAAM,SAAS2iB,EAAO,KAAMA,EAAO,EAAE,EACrDmB,EAAkB3O,EAAcyN,GAAUhH,GAAoB5b,EAAM4iB,EAAO,KAAK,IAAI,EACxF,GAAIzN,EAAa,CACb,IAAI4O,EAAOpB,EAAO,OAAO,QAAUA,EAAO,GAAKA,EAAO,MACtDmB,EAAmB,CAAE,KAAM3O,EAAY,KAAM,GAAIA,EAAY,GAAK4O,CAAK,CAC3E,MAEID,EAAmB9jB,EAAK,MAAM,IAAI,OAAO0Z,EAAI,IAAI,EAErD,IAAInT,EAASmT,EAAI,GAAKiJ,EAAO,GAC7BjR,EAAKgS,EAAW,cAAcpe,GAAS,CACnC,GAAIA,EAAM,MAAQoU,EAAI,MAAQpU,EAAM,IAAMoU,EAAI,GAC1C,MAAO,CAAE,QAAArM,EAAS,MAAOuW,GAAWte,EAAM,IAAI+H,CAAO,CAAE,EAC3D,IAAI9L,EAAK+D,EAAM,GAAKiB,EAAQtG,EAAOsB,EAAKsiB,EAAS,OACjD,GAAI7jB,EAAK,MAAM,SAASC,EAAMsB,CAAE,GAAKsiB,GAKjCtiB,GAAMuiB,EAAiB,MAAQ7jB,GAAQ6jB,EAAiB,GACxD,MAAO,CAAE,MAAAxe,CAAM,EACnB,IAAI0e,EAAeN,EAAW,QAAQ,CAAE,KAAAzjB,EAAM,GAAAsB,EAAI,OAAQohB,EAAO,MAAO,CAAC,EAAGsB,EAAS3e,EAAM,GAAKoU,EAAI,GACpG,MAAO,CACH,QAASsK,EACT,MAAQJ,EACJ3X,EAAgB,MAAM,KAAK,IAAI,EAAG2X,EAAQ,OAASK,CAAM,EAAG,KAAK,IAAI,EAAGL,EAAQ,KAAOK,CAAM,CAAC,EADhF3e,EAAM,IAAI0e,CAAY,CAE5C,CACJ,CAAC,CACL,MAEItS,EAAK,CACD,QAAArE,EACA,UAAWuW,GAAWF,EAAW,UAAU,aAAaE,CAAO,CACnE,CAER,CACA,IAAIP,EAAY,aAChB,OAAIrjB,EAAK,WACLA,EAAK,WAAW,0BAA4BA,EAAK,WAAW,mBAAqB,KAAK,IAAI,EAAI,MAC9FA,EAAK,WAAW,yBAA2B,GAC3CqjB,GAAa,WACTrjB,EAAK,WAAW,yBAChBqjB,GAAa,SACbrjB,EAAK,WAAW,uBAAyB,KAG1C0jB,EAAW,OAAOhS,EAAI,CAAE,UAAA2R,EAAW,eAAgB,EAAK,CAAC,CACpE,CA1ES1kB,EAAA6kB,GAAA,sBA2ET,SAASN,GAASpkB,EAAGC,EAAG+jB,EAAcC,EAAe,CACjD,IAAImB,EAAS,KAAK,IAAIplB,EAAE,OAAQC,EAAE,MAAM,EACpCkB,EAAO,EACX,KAAOA,EAAOikB,GAAUplB,EAAE,WAAWmB,CAAI,GAAKlB,EAAE,WAAWkB,CAAI,GAC3DA,IACJ,GAAIA,GAAQikB,GAAUplB,EAAE,QAAUC,EAAE,OAChC,OAAO,KACX,IAAI6R,EAAM9R,EAAE,OAAQgS,EAAM/R,EAAE,OAC5B,KAAO6R,EAAM,GAAKE,EAAM,GAAKhS,EAAE,WAAW8R,EAAM,CAAC,GAAK7R,EAAE,WAAW+R,EAAM,CAAC,GACtEF,IACAE,IAEJ,GAAIiS,GAAiB,MAAO,CACxB,IAAIzC,EAAS,KAAK,IAAI,EAAGrgB,EAAO,KAAK,IAAI2Q,EAAKE,CAAG,CAAC,EAClDgS,GAAgBlS,EAAM0P,EAASrgB,CACnC,CACA,GAAI2Q,EAAM3Q,GAAQnB,EAAE,OAASC,EAAE,OAAQ,CACnC,IAAIolB,EAAOrB,GAAgB7iB,GAAQ6iB,GAAgBlS,EAAM3Q,EAAO6iB,EAAe,EAC/E7iB,GAAQkkB,EACRrT,EAAM7Q,GAAQ6Q,EAAMF,GACpBA,EAAM3Q,CACV,SACS6Q,EAAM7Q,EAAM,CACjB,IAAIkkB,EAAOrB,GAAgB7iB,GAAQ6iB,GAAgBhS,EAAM7Q,EAAO6iB,EAAe,EAC/E7iB,GAAQkkB,EACRvT,EAAM3Q,GAAQ2Q,EAAME,GACpBA,EAAM7Q,CACV,CACA,MAAO,CAAE,KAAAA,EAAM,IAAA2Q,EAAK,IAAAE,CAAI,CAC5B,CA7BSnS,EAAAukB,GAAA,YA8BT,SAASnB,GAAgB/hB,EAAM,CAC3B,IAAIqH,EAAS,CAAC,EACd,GAAIrH,EAAK,KAAK,eAAiBA,EAAK,WAChC,OAAOqH,EACX,GAAI,CAAE,WAAA9B,EAAY,aAAAE,EAAc,UAAAD,EAAW,YAAAE,CAAY,EAAI1F,EAAK,SAAS,eACzE,OAAIuF,IACA8B,EAAO,KAAK,IAAIka,GAAShc,EAAYE,CAAY,CAAC,GAC9CD,GAAaD,GAAcG,GAAeD,IAC1C4B,EAAO,KAAK,IAAIka,GAAS/b,EAAWE,CAAW,CAAC,GAEjD2B,CACX,CAXS1I,EAAAojB,GAAA,mBAYT,SAASE,GAAoBvB,EAAQ0D,EAAM,CACvC,GAAI1D,EAAO,QAAU,EACjB,OAAO,KACX,IAAIvH,EAASuH,EAAO,CAAC,EAAE,IAAKrL,EAAOqL,EAAO,QAAU,EAAIA,EAAO,CAAC,EAAE,IAAMvH,EACxE,OAAOA,EAAS,IAAM9D,EAAO,GAAKpJ,EAAgB,OAAOkN,EAASiL,EAAM/O,EAAO+O,CAAI,EAAI,IAC3F,CALSzlB,EAAAsjB,GAAA,uBAMT,SAASkB,GAAWzgB,EAAW4C,EAAO,CAClC,OAAOA,EAAM,MAAQ5C,EAAU,KAAK,MAAQ4C,EAAM,QAAU5C,EAAU,KAAK,MAC/E,CAFS/D,EAAAwkB,GAAA,cAIT,IAAMkB,GAAN,KAAiB,CAp1IjB,MAo1IiB,CAAA1lB,EAAA,mBACb,mBAAmB2lB,EAAQ,CACvB,KAAK,oBAAsBA,EAC3B,KAAK,kBAAoB,KAAK,IAAI,CACtC,CACA,YAAYtkB,EAAM,CACd,KAAK,KAAOA,EACZ,KAAK,YAAc,EACnB,KAAK,YAAc,EACnB,KAAK,cAAgB,EACrB,KAAK,WAAa,EAClB,KAAK,WAAa,EAClB,KAAK,cAAgB,EACrB,KAAK,cAAgB,EACrB,KAAK,eAAiB,EACtB,KAAK,eAAiB,EAItB,KAAK,cAAgB,OAQrB,KAAK,aAAe,GACpB,KAAK,oBAAsB,KAC3B,KAAK,kBAAoB,EACzB,KAAK,gBAAkB,EACvB,KAAK,eAAiB,CAAC,EACvB,KAAK,SAAW,OAAO,OAAO,IAAI,EAKlC,KAAK,UAAY,GAKjB,KAAK,uBAAyB,KAE9B,KAAK,mBAAqB,EAI1B,KAAK,sBAAwB,GAG7B,KAAK,yBAA2B,GAEhC,KAAK,cAAgB,GACrB,KAAK,gBAAkB,EACvB,KAAK,eAAiB,KAGtB,KAAK,eAAiB,KACtB,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,gBAAkBA,EAAK,SAGxB1B,EAAQ,QACR0B,EAAK,WAAW,iBAAiB,QAAS,IAAM,IAAI,EACpD1B,EAAQ,OACRimB,GAAmBvkB,EAAK,WAAW,aAAa,CACxD,CACA,YAAYG,EAAO,CACX,CAACqkB,GAAqB,KAAK,KAAMrkB,CAAK,GAAK,KAAK,wBAAwBA,CAAK,GAE7EA,EAAM,MAAQ,WAAa,KAAK,QAAQA,CAAK,IAE7C,KAAK,KAAK,aAAe,EACzB,QAAQ,QAAQ,EAAE,KAAK,IAAM,KAAK,YAAYA,EAAM,KAAMA,CAAK,CAAC,EAEhE,KAAK,YAAYA,EAAM,KAAMA,CAAK,EAC1C,CACA,YAAYiJ,EAAMjJ,EAAO,CACrB,IAAIskB,EAAW,KAAK,SAASrb,CAAI,EACjC,GAAIqb,EAAU,CACV,QAASnM,KAAYmM,EAAS,UAC1BnM,EAAS,KAAK,KAAMnY,CAAK,EAC7B,QAAS0N,KAAW4W,EAAS,SAAU,CACnC,GAAItkB,EAAM,iBACN,MACJ,GAAI0N,EAAQ,KAAK,KAAM1N,CAAK,EAAG,CAC3BA,EAAM,eAAe,EACrB,KACJ,CACJ,CACJ,CACJ,CACA,eAAe8N,EAAS,CACpB,IAAIwW,EAAWC,GAAgBzW,CAAO,EAAGvO,EAAO,KAAK,SAAUL,EAAM,KAAK,KAAK,WAC/E,QAAS+J,KAAQqb,EACb,GAAIrb,GAAQ,SAAU,CAClB,IAAIub,EAAU,CAACF,EAASrb,CAAI,EAAE,SAAS,OACnCwb,EAASllB,EAAK0J,CAAI,EAClBwb,GAAUD,GAAW,CAACC,EAAO,SAAS,SACtCvlB,EAAI,oBAAoB+J,EAAM,KAAK,WAAW,EAC9Cwb,EAAS,MAERA,GACDvlB,EAAI,iBAAiB+J,EAAM,KAAK,YAAa,CAAE,QAAAub,CAAQ,CAAC,CAChE,CACJ,QAASvb,KAAQ1J,EACT0J,GAAQ,UAAY,CAACqb,EAASrb,CAAI,GAClC/J,EAAI,oBAAoB+J,EAAM,KAAK,WAAW,EACtD,KAAK,SAAWqb,CACpB,CACA,QAAQtkB,EAAO,CAIX,GAFA,KAAK,YAAcA,EAAM,QACzB,KAAK,YAAc,KAAK,IAAI,EACxBA,EAAM,SAAW,GAAK,KAAK,aAAe,KAAO,CAAC,KAAK,cAAgB,KAAK,IAAI,GAAK,KAAK,cAC1F,MAAO,GAQX,GAPI,KAAK,aAAe,GAAKA,EAAM,SAAW,IAAM0kB,GAAc,QAAQ1kB,EAAM,OAAO,EAAI,IACvF,KAAK,aAAe,IAMpB7B,EAAQ,SAAWA,EAAQ,QAAU,CAAC6B,EAAM,YAC3CA,EAAM,SAAW,IAAMA,EAAM,SAAW,GACzC,YAAK,KAAK,SAAS,gBAAgBA,EAAM,IAAKA,EAAM,OAAO,EACpD,GAOX,IAAI2kB,EACJ,OAAIxmB,EAAQ,KAAO,CAAC6B,EAAM,WAAa,CAACA,EAAM,QAAU,CAACA,EAAM,SAAW,CAACA,EAAM,YAC3E2kB,EAAUC,GAAY,KAAK5lB,GAAOA,EAAI,SAAWgB,EAAM,OAAO,IAAM,CAACA,EAAM,SACzE6kB,GAAkB,QAAQ7kB,EAAM,GAAG,EAAI,IAAMA,EAAM,UACvD,KAAK,cAAgB2kB,GAAW3kB,EAChC,WAAW,IAAM,KAAK,YAAY,EAAG,GAAG,EACjC,KAEPA,EAAM,SAAW,KACjB,KAAK,KAAK,SAAS,WAAW,EAC3B,GACX,CACA,YAAYwiB,EAAQ,CAChB,IAAIxjB,EAAM,KAAK,cAIf,MAHI,CAACA,GAGDA,EAAI,KAAO,SAAWwjB,GAAUA,EAAO,KAAOA,EAAO,IAAM,QAAQ,KAAKA,EAAO,OAAO,SAAS,CAAC,EACzF,IACX,KAAK,cAAgB,OACd5c,GAAY,KAAK,KAAK,WAAY5G,EAAI,IAAKA,EAAI,QAASA,aAAe,cAAgBA,EAAM,MAAS,EACjH,CACA,wBAAwBgB,EAAO,CAC3B,MAAI,CAAC,OAAO,KAAKA,EAAM,IAAI,GAAKA,EAAM,UAC3B,GACP,KAAK,UAAY,EACV,GAOP7B,EAAQ,QAAU,CAACA,EAAQ,KAAO,KAAK,uBAAyB,KAAK,IAAI,EAAI,KAAK,mBAAqB,KACvG,KAAK,sBAAwB,GACtB,IAEJ,EACX,CACA,oBAAoB2mB,EAAgB,CAC5B,KAAK,gBACL,KAAK,eAAe,QAAQ,EAChC,KAAK,eAAiBA,CAC1B,CACA,OAAO7V,EAAQ,CACX,KAAK,KAAK,SAAS,OAAOA,CAAM,EAC5B,KAAK,gBACL,KAAK,eAAe,OAAOA,CAAM,EACjC,KAAK,gBAAkBA,EAAO,aAC9B,KAAK,eAAiB,KAAK,eAAe,IAAIA,EAAO,OAAO,GAC5DA,EAAO,aAAa,SACpB,KAAK,YAAc,KAAK,kBAAoB,EACpD,CACA,SAAU,CACF,KAAK,gBACL,KAAK,eAAe,QAAQ,CACpC,CACJ,EACA,SAAS8V,GAAYpW,EAAQjB,EAAS,CAClC,MAAO,CAAC7N,EAAMG,IAAU,CACpB,GAAI,CACA,OAAO0N,EAAQ,KAAKiB,EAAQ3O,EAAOH,CAAI,CAC3C,OACOqP,EAAG,CACN1B,GAAa3N,EAAK,MAAOqP,CAAC,CAC9B,CACJ,CACJ,CATS1Q,EAAAumB,GAAA,eAUT,SAASR,GAAgBzW,EAAS,CAC9B,IAAI5G,EAAS,OAAO,OAAO,IAAI,EAC/B,SAAS8d,EAAO/b,EAAM,CAClB,OAAO/B,EAAO+B,CAAI,IAAM/B,EAAO+B,CAAI,EAAI,CAAE,UAAW,CAAC,EAAG,SAAU,CAAC,CAAE,EACzE,CAFSzK,EAAAwmB,EAAA,UAGT,QAASrW,KAAUb,EAAS,CACxB,IAAItN,EAAOmO,EAAO,KAAM2V,EAAW9jB,GAAQA,EAAK,OAAO,iBAAkBykB,EAAYzkB,GAAQA,EAAK,OAAO,kBACzG,GAAI8jB,EACA,QAASrb,KAAQqb,EAAU,CACvB,IAAInS,EAAImS,EAASrb,CAAI,EACjBkJ,GACA6S,EAAO/b,CAAI,EAAE,SAAS,KAAK8b,GAAYpW,EAAO,MAAOwD,CAAC,CAAC,CAC/D,CACJ,GAAI8S,EACA,QAAShc,KAAQgc,EAAW,CACxB,IAAI9S,EAAI8S,EAAUhc,CAAI,EAClBkJ,GACA6S,EAAO/b,CAAI,EAAE,UAAU,KAAK8b,GAAYpW,EAAO,MAAOwD,CAAC,CAAC,CAChE,CACR,CACA,QAASlJ,KAAQqb,GACbU,EAAO/b,CAAI,EAAE,SAAS,KAAKqb,GAASrb,CAAI,CAAC,EAC7C,QAASA,KAAQgc,GACbD,EAAO/b,CAAI,EAAE,UAAU,KAAKgc,GAAUhc,CAAI,CAAC,EAC/C,OAAO/B,CACX,CAzBS1I,EAAA+lB,GAAA,mBA0BT,IAAMK,GAAc,CAChB,CAAE,IAAK,YAAa,QAAS,EAAG,UAAW,uBAAwB,EACnE,CAAE,IAAK,QAAS,QAAS,GAAI,UAAW,iBAAkB,EAC1D,CAAE,IAAK,QAAS,QAAS,GAAI,UAAW,iBAAkB,EAC1D,CAAE,IAAK,SAAU,QAAS,GAAI,UAAW,sBAAuB,CACpE,EACMC,GAAoB,QAEpBH,GAAgB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAG,EACjDQ,GAAmB,EACzB,SAASC,GAAgB/Q,EAAM,CAC3B,OAAO,KAAK,IAAI,EAAGA,CAAI,EAAI,GAAM,CACrC,CAFS5V,EAAA2mB,GAAA,mBAGT,SAAS/Q,GAAKzV,EAAGC,EAAG,CAChB,OAAO,KAAK,IAAI,KAAK,IAAID,EAAE,QAAUC,EAAE,OAAO,EAAG,KAAK,IAAID,EAAE,QAAUC,EAAE,OAAO,CAAC,CACpF,CAFSJ,EAAA4V,GAAA,QAGT,IAAMgR,GAAN,KAAqB,CAxkJrB,MAwkJqB,CAAA5mB,EAAA,uBACjB,YAAYqB,EAAMwlB,EAAYC,EAAOC,EAAY,CAC7C,KAAK,KAAO1lB,EACZ,KAAK,WAAawlB,EAClB,KAAK,MAAQC,EACb,KAAK,WAAaC,EAClB,KAAK,YAAc,CAAE,EAAG,EAAG,EAAG,CAAE,EAChC,KAAK,UAAY,GACjB,KAAK,UAAYF,EACjB,KAAK,cAAgBtgB,GAAkBlF,EAAK,UAAU,EACtD,KAAK,MAAQA,EAAK,MAAM,MAAM0P,EAAY,EAAE,IAAI4C,GAAKA,EAAEtS,CAAI,CAAC,EAC5D,IAAIpC,EAAMoC,EAAK,WAAW,cAC1BpC,EAAI,iBAAiB,YAAa,KAAK,KAAO,KAAK,KAAK,KAAK,IAAI,CAAC,EAClEA,EAAI,iBAAiB,UAAW,KAAK,GAAK,KAAK,GAAG,KAAK,IAAI,CAAC,EAC5D,KAAK,OAAS4nB,EAAW,SACzB,KAAK,SAAWxlB,EAAK,MAAM,MAAM2gB,EAAY,uBAAuB,GAAKgF,GAAmB3lB,EAAMwlB,CAAU,EAC5G,KAAK,SAAWI,GAAqB5lB,EAAMwlB,CAAU,GAAKK,GAAaL,CAAU,GAAK,EAAI,KAAO,EACrG,CACA,MAAMrlB,EAAO,CAGL,KAAK,WAAa,IAClB,KAAK,OAAOA,CAAK,CACzB,CACA,KAAKA,EAAO,CACR,GAAIA,EAAM,SAAW,EACjB,OAAO,KAAK,QAAQ,EACxB,GAAI,KAAK,UAAY,KAAK,UAAY,MAAQoU,GAAK,KAAK,WAAYpU,CAAK,EAAI,GACzE,OACJ,KAAK,OAAO,KAAK,UAAYA,CAAK,EAClC,IAAI2lB,EAAK,EAAGC,EAAK,EACbriB,EAAO,EAAGiB,EAAM,EAAG0L,EAAQ,KAAK,KAAK,IAAI,WAAYC,EAAS,KAAK,KAAK,IAAI,YAC5E,KAAK,cAAc,IAClB,CAAE,KAAA5M,EAAM,MAAA2M,CAAM,EAAI,KAAK,cAAc,EAAE,sBAAsB,GAC9D,KAAK,cAAc,IAClB,CAAE,IAAA1L,EAAK,OAAA2L,CAAO,EAAI,KAAK,cAAc,EAAE,sBAAsB,GAClE,IAAIiL,EAAUnL,GAAiB,KAAK,IAAI,EACpCjQ,EAAM,QAAUob,EAAQ,MAAQ7X,EAAO2hB,GACvCS,EAAK,CAACR,GAAgB5hB,EAAOvD,EAAM,OAAO,EACrCA,EAAM,QAAUob,EAAQ,OAASlL,EAAQgV,KAC9CS,EAAKR,GAAgBnlB,EAAM,QAAUkQ,CAAK,GAC1ClQ,EAAM,QAAUob,EAAQ,KAAO5W,EAAM0gB,GACrCU,EAAK,CAACT,GAAgB3gB,EAAMxE,EAAM,OAAO,EACpCA,EAAM,QAAUob,EAAQ,QAAUjL,EAAS+U,KAChDU,EAAKT,GAAgBnlB,EAAM,QAAUmQ,CAAM,GAC/C,KAAK,eAAewV,EAAIC,CAAE,CAC9B,CACA,GAAG5lB,EAAO,CACF,KAAK,UAAY,MACjB,KAAK,OAAO,KAAK,SAAS,EACzB,KAAK,UACNA,EAAM,eAAe,EACzB,KAAK,QAAQ,CACjB,CACA,SAAU,CACN,KAAK,eAAe,EAAG,CAAC,EACxB,IAAIvC,EAAM,KAAK,KAAK,WAAW,cAC/BA,EAAI,oBAAoB,YAAa,KAAK,IAAI,EAC9CA,EAAI,oBAAoB,UAAW,KAAK,EAAE,EAC1C,KAAK,KAAK,WAAW,eAAiB,KAAK,KAAK,WAAW,eAAiB,IAChF,CACA,eAAekoB,EAAIC,EAAI,CACnB,KAAK,YAAc,CAAE,EAAGD,EAAI,EAAGC,CAAG,EAC9BD,GAAMC,EACF,KAAK,UAAY,IACjB,KAAK,UAAY,YAAY,IAAM,KAAK,OAAO,EAAG,EAAE,GAEnD,KAAK,UAAY,KACtB,cAAc,KAAK,SAAS,EAC5B,KAAK,UAAY,GAEzB,CACA,QAAS,CACL,GAAI,CAAE,EAAApiB,EAAG,EAAAS,CAAE,EAAI,KAAK,YAChBT,GAAK,KAAK,cAAc,IACxB,KAAK,cAAc,EAAE,YAAcA,EACnCA,EAAI,GAEJS,GAAK,KAAK,cAAc,IACxB,KAAK,cAAc,EAAE,WAAaA,EAClCA,EAAI,IAEJT,GAAKS,IACL,KAAK,KAAK,IAAI,SAAST,EAAGS,CAAC,EAC3B,KAAK,WAAa,IAClB,KAAK,OAAO,KAAK,SAAS,CAClC,CACA,OAAOjE,EAAO,CACV,GAAI,CAAE,KAAAH,CAAK,EAAI,KAAM0C,EAAYqc,GAAsB,KAAK,MAAO,KAAK,MAAM,IAAI5e,EAAO,KAAK,OAAQ,KAAK,QAAQ,CAAC,GAChH,KAAK,YAAc,CAACuC,EAAU,GAAG1C,EAAK,MAAM,UAAW,KAAK,WAAa,EAAK,IAC9E,KAAK,KAAK,SAAS,CACf,UAAA0C,EACA,UAAW,gBACf,CAAC,EACL,KAAK,WAAa,EACtB,CACA,OAAO0M,EAAQ,CACPA,EAAO,aAAa,KAAKsC,GAAMA,EAAG,YAAY,YAAY,CAAC,EAC3D,KAAK,QAAQ,EACR,KAAK,MAAM,OAAOtC,CAAM,GAC7B,WAAW,IAAM,KAAK,OAAO,KAAK,SAAS,EAAG,EAAE,CACxD,CACJ,EACA,SAASuW,GAAmB3lB,EAAMG,EAAO,CACrC,IAAI6lB,EAAQhmB,EAAK,MAAM,MAAMoM,EAAuB,EACpD,OAAO4Z,EAAM,OAASA,EAAM,CAAC,EAAE7lB,CAAK,EAAI7B,EAAQ,IAAM6B,EAAM,QAAUA,EAAM,OAChF,CAHSxB,EAAAgnB,GAAA,sBAIT,SAASM,GAAmBjmB,EAAMG,EAAO,CACrC,IAAI6lB,EAAQhmB,EAAK,MAAM,MAAMsM,EAAoB,EACjD,OAAO0Z,EAAM,OAASA,EAAM,CAAC,EAAE7lB,CAAK,EAAI7B,EAAQ,IAAM,CAAC6B,EAAM,OAAS,CAACA,EAAM,OACjF,CAHSxB,EAAAsnB,GAAA,sBAIT,SAASL,GAAqB5lB,EAAMG,EAAO,CACvC,GAAI,CAAE,KAAA+Y,CAAK,EAAIlZ,EAAK,MAAM,UAC1B,GAAIkZ,EAAK,MACL,MAAO,GAGX,IAAIQ,EAAMrX,GAAarC,EAAK,IAAI,EAChC,GAAI,CAAC0Z,GAAOA,EAAI,YAAc,EAC1B,MAAO,GACX,IAAIpG,EAAQoG,EAAI,WAAW,CAAC,EAAE,eAAe,EAC7C,QAASna,EAAI,EAAGA,EAAI+T,EAAM,OAAQ/T,IAAK,CACnC,IAAIkE,EAAO6P,EAAM/T,CAAC,EAClB,GAAIkE,EAAK,MAAQtD,EAAM,SAAWsD,EAAK,OAAStD,EAAM,SAClDsD,EAAK,KAAOtD,EAAM,SAAWsD,EAAK,QAAUtD,EAAM,QAClD,MAAO,EACf,CACA,MAAO,EACX,CAjBSxB,EAAAinB,GAAA,wBAkBT,SAASpB,GAAqBxkB,EAAMG,EAAO,CACvC,GAAI,CAACA,EAAM,QACP,MAAO,GACX,GAAIA,EAAM,iBACN,MAAO,GACX,QAASqC,EAAOrC,EAAM,OAAQ4R,EAAMvP,GAAQxC,EAAK,WAAYwC,EAAOA,EAAK,WACrE,GAAI,CAACA,GAAQA,EAAK,UAAY,KACxBuP,EAAOF,GAAK,IAAIrP,CAAI,IAAMuP,EAAK,SAAS,GAAK,CAACA,EAAK,UAAYA,EAAK,OAAO,YAAY5R,CAAK,EAC9F,MAAO,GACf,MAAO,EACX,CAVSxB,EAAA6lB,GAAA,wBAWT,IAAMC,GAAwB,OAAO,OAAO,IAAI,EAC1CW,GAAyB,OAAO,OAAO,IAAI,EAI3Cc,GAAsB5nB,EAAQ,IAAMA,EAAQ,WAAa,IAC1DA,EAAQ,KAAOA,EAAQ,eAAiB,IAC7C,SAAS6nB,GAAanmB,EAAM,CACxB,IAAIuD,EAASvD,EAAK,IAAI,WACtB,GAAI,CAACuD,EACD,OACJ,IAAI9E,EAAS8E,EAAO,YAAY,SAAS,cAAc,UAAU,CAAC,EAClE9E,EAAO,MAAM,QAAU,6CACvBA,EAAO,MAAM,EACb,WAAW,IAAM,CACbuB,EAAK,MAAM,EACXvB,EAAO,OAAO,EACd2nB,GAAQpmB,EAAMvB,EAAO,KAAK,CAC9B,EAAG,EAAE,CACT,CAZSE,EAAAwnB,GAAA,gBAaT,SAASE,GAAW/Y,EAAO0Y,EAAO7Z,EAAM,CACpC,QAASma,KAAUhZ,EAAM,MAAM0Y,CAAK,EAChC7Z,EAAOma,EAAOna,EAAMmB,CAAK,EAC7B,OAAOnB,CACX,CAJSxN,EAAA0nB,GAAA,cAKT,SAASD,GAAQpmB,EAAMumB,EAAO,CAC1BA,EAAQF,GAAWrmB,EAAK,MAAO4M,GAAsB2Z,CAAK,EAC1D,GAAI,CAAE,MAAAjZ,CAAM,EAAItN,EAAMqN,EAAS9N,EAAI,EAAG4M,EAAOmB,EAAM,OAAOiZ,CAAK,EAC3DC,EAASra,EAAK,OAASmB,EAAM,UAAU,OAAO,OAElD,GADemZ,IAAoB,MAAQnZ,EAAM,UAAU,OAAO,MAAM1F,GAAKA,EAAE,KAAK,GAAK6e,IAAoBta,EAAK,SAAS,EAC7G,CACV,IAAIua,EAAW,GACfrZ,EAAUC,EAAM,cAAchI,GAAS,CACnC,IAAIsD,EAAO0E,EAAM,IAAI,OAAOhI,EAAM,IAAI,EACtC,GAAIsD,EAAK,MAAQ8d,EACb,MAAO,CAAE,MAAAphB,CAAM,EACnBohB,EAAW9d,EAAK,KAChB,IAAI+d,EAASrZ,EAAM,QAAQkZ,EAASra,EAAK,KAAK5M,GAAG,EAAE,KAAOgnB,GAASjZ,EAAM,SAAS,EAClF,MAAO,CAAE,QAAS,CAAE,KAAM1E,EAAK,KAAM,OAAA+d,CAAO,EACxC,MAAO1a,EAAgB,OAAO3G,EAAM,KAAOqhB,EAAO,MAAM,CAAE,CAClE,CAAC,CACL,MACSH,EACLnZ,EAAUC,EAAM,cAAchI,GAAS,CACnC,IAAIsD,EAAOuD,EAAK,KAAK5M,GAAG,EACxB,MAAO,CAAE,QAAS,CAAE,KAAM+F,EAAM,KAAM,GAAIA,EAAM,GAAI,OAAQsD,EAAK,IAAK,EAClE,MAAOqD,EAAgB,OAAO3G,EAAM,KAAOsD,EAAK,MAAM,CAAE,CAChE,CAAC,EAGDyE,EAAUC,EAAM,iBAAiBnB,CAAI,EAEzCnM,EAAK,SAASqN,EAAS,CACnB,UAAW,cACX,eAAgB,EACpB,CAAC,CACL,CA/BS1O,EAAAynB,GAAA,WAgCThB,GAAU,OAASplB,GAAQ,CACvBA,EAAK,WAAW,cAAgBA,EAAK,UAAU,UAC/CA,EAAK,WAAW,eAAiBA,EAAK,UAAU,UACpD,EACAolB,GAAU,MAAQA,GAAU,WAAaplB,GAAQ,CAC7CA,EAAK,WAAW,eAAiB,KAAK,IAAI,CAC9C,EACAykB,GAAS,QAAU,CAACzkB,EAAMG,KACtBH,EAAK,WAAW,mBAAmB,QAAQ,EACvCG,EAAM,SAAW,IAAMH,EAAK,WAAW,cAAgB,IACvDA,EAAK,WAAW,aAAe,KAAK,IAAI,EAAI,KACzC,IAEXolB,GAAU,WAAa,CAACplB,EAAM,IAAM,CAChC,IAAI4mB,EAAS5mB,EAAK,WAAY6mB,EAAQ,EAAE,cAAc,CAAC,EACvDD,EAAO,cAAgB,KAAK,IAAI,EAC5BC,IACAD,EAAO,WAAaC,EAAM,QAC1BD,EAAO,WAAaC,EAAM,SAE9BD,EAAO,mBAAmB,gBAAgB,CAC9C,EACAxB,GAAU,UAAYplB,GAAQ,CAC1BA,EAAK,WAAW,mBAAmB,gBAAgB,CACvD,EACAykB,GAAS,UAAY,CAACzkB,EAAMG,IAAU,CAElC,GADAH,EAAK,SAAS,MAAM,EAChBA,EAAK,WAAW,cAAgB,KAAK,IAAI,EAAI,IAC7C,MAAO,GACX,IAAIylB,EAAQ,KACZ,QAASqB,KAAa9mB,EAAK,MAAM,MAAMuM,EAAmB,EAEtD,GADAkZ,EAAQqB,EAAU9mB,EAAMG,CAAK,EACzBslB,EACA,MAIR,GAFI,CAACA,GAAStlB,EAAM,QAAU,IAC1BslB,EAAQsB,GAAoB/mB,EAAMG,CAAK,GACvCslB,EAAO,CACP,IAAIuB,EAAY,CAAChnB,EAAK,SACtBA,EAAK,WAAW,oBAAoB,IAAIulB,GAAevlB,EAAMG,EAAOslB,EAAOuB,CAAS,CAAC,EACjFA,GACAhnB,EAAK,SAAS,OAAO,IAAM,CACvB4F,GAAmB5F,EAAK,UAAU,EAClC,IAAIgQ,EAAShQ,EAAK,KAAK,cACnBgQ,GAAU,CAACA,EAAO,SAAShQ,EAAK,UAAU,GAC1CgQ,EAAO,KAAK,CACpB,CAAC,EACL,IAAIiX,EAAWjnB,EAAK,WAAW,eAC/B,GAAIinB,EACA,OAAAA,EAAS,MAAM9mB,CAAK,EACb8mB,EAAS,WAAa,EAErC,MAEIjnB,EAAK,WAAW,mBAAmB,gBAAgB,EAEvD,MAAO,EACX,EACA,SAASknB,GAAclnB,EAAMI,EAAK0Z,EAAM1Q,EAAM,CAC1C,GAAIA,GAAQ,EACR,OAAO6C,EAAgB,OAAO7L,EAAK0Z,CAAI,EAEtC,GAAI1Q,GAAQ,EACb,OAAOqT,GAAQzc,EAAK,MAAOI,EAAK0Z,CAAI,EAEnC,CACD,IAAIqN,EAASnnB,EAAK,QAAQ,OAAOI,EAAK0Z,CAAI,EAAGlR,EAAO5I,EAAK,MAAM,IAAI,OAAOmnB,EAASA,EAAO,SAAW/mB,CAAG,EACpGH,EAAOknB,EAASA,EAAO,WAAave,EAAK,KAAMrH,EAAK4lB,EAASA,EAAO,SAAWve,EAAK,GACxF,OAAIrH,EAAKvB,EAAK,MAAM,IAAI,QAAUuB,GAAMqH,EAAK,IACzCrH,IACG0K,EAAgB,MAAMhM,EAAMsB,CAAE,CACzC,CACJ,CAdS5C,EAAAuoB,GAAA,iBAeT,IAAME,GAAiB9oB,EAAQ,IAAMA,EAAQ,YAAc,GACvD+oB,GAAgB,KAAMC,GAAqB,EAAGC,GAAoB,EACtE,SAAS1B,GAAa1lB,EAAO,CACzB,GAAI,CAACinB,GACD,OAAOjnB,EAAM,OACjB,IAAI6B,EAAOqlB,GAAeG,EAAWD,GACrC,OAAAF,GAAgBlnB,EAChBonB,GAAoB,KAAK,IAAI,EACtBD,GAAqB,CAACtlB,GAASwlB,EAAW,KAAK,IAAI,EAAI,KAAO,KAAK,IAAIxlB,EAAK,QAAU7B,EAAM,OAAO,EAAI,GAC1G,KAAK,IAAI6B,EAAK,QAAU7B,EAAM,OAAO,EAAI,GAAMmnB,GAAqB,GAAK,EAAI,CACrF,CARS3oB,EAAAknB,GAAA,gBAST,SAASkB,GAAoB/mB,EAAMG,EAAO,CACtC,IAAIY,EAAQf,EAAK,mBAAmB,CAAE,EAAGG,EAAM,QAAS,EAAGA,EAAM,OAAQ,EAAG,EAAK,EAAGiJ,EAAOyc,GAAa1lB,CAAK,EACzGsnB,EAAWznB,EAAK,MAAM,UAC1B,MAAO,CACH,OAAOoP,EAAQ,CACPA,EAAO,aACPrO,EAAM,IAAMqO,EAAO,QAAQ,OAAOrO,EAAM,GAAG,EAC3C0mB,EAAWA,EAAS,IAAIrY,EAAO,OAAO,EAE9C,EACA,IAAIjP,EAAOunB,EAAQC,EAAU,CACzB,IAAInjB,EAAMxE,EAAK,mBAAmB,CAAE,EAAGG,EAAM,QAAS,EAAGA,EAAM,OAAQ,EAAG,EAAK,EAAGynB,EAC9EtiB,EAAQ4hB,GAAclnB,EAAMwE,EAAI,IAAKA,EAAI,MAAO4E,CAAI,EACxD,GAAIrI,EAAM,KAAOyD,EAAI,KAAO,CAACkjB,EAAQ,CACjC,IAAIG,EAAaX,GAAclnB,EAAMe,EAAM,IAAKA,EAAM,MAAOqI,CAAI,EAC7DnJ,EAAO,KAAK,IAAI4nB,EAAW,KAAMviB,EAAM,IAAI,EAAG/D,EAAK,KAAK,IAAIsmB,EAAW,GAAIviB,EAAM,EAAE,EACvFA,EAAQrF,EAAOqF,EAAM,KAAO2G,EAAgB,MAAMhM,EAAMsB,EAAI+D,EAAM,KAAK,EAAI2G,EAAgB,MAAM1K,EAAItB,EAAMqF,EAAM,KAAK,CAC1H,CACA,OAAIoiB,EACOD,EAAS,aAAaA,EAAS,KAAK,OAAOniB,EAAM,KAAMA,EAAM,GAAIA,EAAM,KAAK,CAAC,EAC/EqiB,GAAYve,GAAQ,GAAKqe,EAAS,OAAO,OAAS,IAAMG,EAAUE,GAAkBL,EAAUjjB,EAAI,GAAG,GACnGojB,EACFD,EACEF,EAAS,SAASniB,CAAK,EAEvB2G,EAAgB,OAAO,CAAC3G,CAAK,CAAC,CAC7C,CACJ,CACJ,CA5BS3G,EAAAooB,GAAA,uBA6BT,SAASe,GAAkBpO,EAAKtZ,EAAK,CACjC,QAASb,EAAI,EAAGA,EAAIma,EAAI,OAAO,OAAQna,IAAK,CACxC,GAAI,CAAE,KAAAU,EAAM,GAAAsB,CAAG,EAAImY,EAAI,OAAOna,CAAC,EAC/B,GAAIU,GAAQG,GAAOmB,GAAMnB,EACrB,OAAO6L,EAAgB,OAAOyN,EAAI,OAAO,MAAM,EAAGna,CAAC,EAAE,OAAOma,EAAI,OAAO,MAAMna,EAAI,CAAC,CAAC,EAAGma,EAAI,WAAana,EAAI,EAAIma,EAAI,WAAaA,EAAI,UAAYna,EAAI,EAAI,EAAE,CAClK,CACA,OAAO,IACX,CAPSZ,EAAAmpB,GAAA,qBAQTrD,GAAS,UAAY,CAACzkB,EAAMG,IAAU,CAClC,GAAI,CAAE,UAAW,CAAE,KAAMmF,CAAM,CAAE,EAAItF,EAAK,MAC1C,GAAIG,EAAM,OAAO,UAAW,CACxB,IAAI4R,EAAO/R,EAAK,QAAQ,KAAK,QAAQG,EAAM,MAAM,EACjD,GAAI4R,GAAQA,EAAK,SAAS,EAAG,CACzB,IAAI9R,EAAO8R,EAAK,WAAYxQ,EAAKtB,EAAO8R,EAAK,QACzC9R,GAAQqF,EAAM,IAAM/D,GAAM+D,EAAM,QAChCA,EAAQ2G,EAAgB,MAAMhM,EAAMsB,CAAE,EAC9C,CACJ,CACA,GAAI,CAAE,WAAAwmB,CAAW,EAAI/nB,EACrB,OAAI+nB,EAAW,iBACXA,EAAW,eAAe,SAAW,IACzCA,EAAW,eAAiBziB,EACxBnF,EAAM,eACNA,EAAM,aAAa,QAAQ,OAAQkmB,GAAWrmB,EAAK,MAAO6M,GAAuB7M,EAAK,MAAM,SAASsF,EAAM,KAAMA,EAAM,EAAE,CAAC,CAAC,EAC3HnF,EAAM,aAAa,cAAgB,YAEhC,EACX,EACAskB,GAAS,QAAUzkB,IACfA,EAAK,WAAW,eAAiB,KAC1B,IAEX,SAASgoB,GAAShoB,EAAMG,EAAOgM,EAAM8b,EAAQ,CAEzC,GADA9b,EAAOka,GAAWrmB,EAAK,MAAO4M,GAAsBT,CAAI,EACpD,CAACA,EACD,OACJ,IAAI+b,EAAUloB,EAAK,YAAY,CAAE,EAAGG,EAAM,QAAS,EAAGA,EAAM,OAAQ,EAAG,EAAK,EACxE,CAAE,eAAAgoB,CAAe,EAAInoB,EAAK,WAC1BooB,EAAMH,GAAUE,GAAkBlC,GAAmBjmB,EAAMG,CAAK,EAC9D,CAAE,KAAMgoB,EAAe,KAAM,GAAIA,EAAe,EAAG,EAAI,KACzDE,EAAM,CAAE,KAAMH,EAAS,OAAQ/b,CAAK,EACpCkB,EAAUrN,EAAK,MAAM,QAAQooB,EAAM,CAACA,EAAKC,CAAG,EAAIA,CAAG,EACvDroB,EAAK,MAAM,EACXA,EAAK,SAAS,CACV,QAAAqN,EACA,UAAW,CAAE,OAAQA,EAAQ,OAAO6a,EAAS,EAAE,EAAG,KAAM7a,EAAQ,OAAO6a,EAAS,CAAC,CAAE,EACnF,UAAWE,EAAM,YAAc,YACnC,CAAC,EACDpoB,EAAK,WAAW,eAAiB,IACrC,CAjBSrB,EAAAqpB,GAAA,YAkBTvD,GAAS,KAAO,CAACzkB,EAAMG,IAAU,CAC7B,GAAI,CAACA,EAAM,aACP,MAAO,GACX,GAAIH,EAAK,MAAM,SACX,MAAO,GACX,IAAIsoB,EAAQnoB,EAAM,aAAa,MAC/B,GAAImoB,GAASA,EAAM,OAAQ,CACvB,IAAInc,EAAO,MAAMmc,EAAM,MAAM,EAAGC,EAAO,EACnCC,EAAa7pB,EAAA,IAAM,CACf,EAAE4pB,GAAQD,EAAM,QAChBN,GAAShoB,EAAMG,EAAOgM,EAAK,OAAOsc,GAAKA,GAAK,IAAI,EAAE,KAAKzoB,EAAK,MAAM,SAAS,EAAG,EAAK,CAC3F,EAHiB,cAIjB,QAAST,EAAI,EAAGA,EAAI+oB,EAAM,OAAQ/oB,IAAK,CACnC,IAAIyiB,EAAS,IAAI,WACjBA,EAAO,QAAUwG,EACjBxG,EAAO,OAAS,IAAM,CACb,0BAA0B,KAAKA,EAAO,MAAM,IAC7C7V,EAAK5M,CAAC,EAAIyiB,EAAO,QACrBwG,EAAW,CACf,EACAxG,EAAO,WAAWsG,EAAM/oB,CAAC,CAAC,CAC9B,CACA,MAAO,EACX,KACK,CACD,IAAI4M,EAAOhM,EAAM,aAAa,QAAQ,MAAM,EAC5C,GAAIgM,EACA,OAAA6b,GAAShoB,EAAMG,EAAOgM,EAAM,EAAI,EACzB,EAEf,CACA,MAAO,EACX,EACAsY,GAAS,MAAQ,CAACzkB,EAAMG,IAAU,CAC9B,GAAIH,EAAK,MAAM,SACX,MAAO,GACXA,EAAK,SAAS,MAAM,EACpB,IAAI0oB,EAAOxC,GAAqB,KAAO/lB,EAAM,cAC7C,OAAIuoB,GACAtC,GAAQpmB,EAAM0oB,EAAK,QAAQ,YAAY,GAAKA,EAAK,QAAQ,eAAe,CAAC,EAClE,KAGPvC,GAAanmB,CAAI,EACV,GAEf,EACA,SAAS2oB,GAAY3oB,EAAMmM,EAAM,CAG7B,IAAI5I,EAASvD,EAAK,IAAI,WACtB,GAAI,CAACuD,EACD,OACJ,IAAI9E,EAAS8E,EAAO,YAAY,SAAS,cAAc,UAAU,CAAC,EAClE9E,EAAO,MAAM,QAAU,6CACvBA,EAAO,MAAQ0N,EACf1N,EAAO,MAAM,EACbA,EAAO,aAAe0N,EAAK,OAC3B1N,EAAO,eAAiB,EACxB,WAAW,IAAM,CACbA,EAAO,OAAO,EACduB,EAAK,MAAM,CACf,EAAG,EAAE,CACT,CAhBSrB,EAAAgqB,GAAA,eAiBT,SAASC,GAAYtb,EAAO,CACxB,IAAI0P,EAAU,CAAC,EAAGlb,EAAS,CAAC,EAAG+mB,EAAW,GAC1C,QAASvjB,KAASgI,EAAM,UAAU,OACzBhI,EAAM,QACP0X,EAAQ,KAAK1P,EAAM,SAAShI,EAAM,KAAMA,EAAM,EAAE,CAAC,EACjDxD,EAAO,KAAKwD,CAAK,GAEzB,GAAI,CAAC0X,EAAQ,OAAQ,CAEjB,IAAIhS,EAAO,GACX,OAAS,CAAE,KAAA/K,CAAK,IAAKqN,EAAM,UAAU,OAAQ,CACzC,IAAI1E,EAAO0E,EAAM,IAAI,OAAOrN,CAAI,EAC5B2I,EAAK,OAASoC,IACdgS,EAAQ,KAAKpU,EAAK,IAAI,EACtB9G,EAAO,KAAK,CAAE,KAAM8G,EAAK,KAAM,GAAI,KAAK,IAAI0E,EAAM,IAAI,OAAQ1E,EAAK,GAAK,CAAC,CAAE,CAAC,GAEhFoC,EAAOpC,EAAK,MAChB,CACAigB,EAAW,EACf,CACA,MAAO,CAAE,KAAMxC,GAAW/Y,EAAOT,GAAuBmQ,EAAQ,KAAK1P,EAAM,SAAS,CAAC,EAAG,OAAAxL,EAAQ,SAAA+mB,CAAS,CAC7G,CArBSlqB,EAAAiqB,GAAA,eAsBT,IAAInC,GAAmB,KACvBhC,GAAS,KAAOA,GAAS,IAAM,CAACzkB,EAAMG,IAAU,CAM5C,GAAI,CAACsC,GAAazC,EAAK,WAAYA,EAAK,SAAS,cAAc,EAC3D,MAAO,GACX,GAAI,CAAE,KAAAmM,EAAM,OAAArK,EAAQ,SAAA+mB,CAAS,EAAID,GAAY5oB,EAAK,KAAK,EACvD,GAAI,CAACmM,GAAQ,CAAC0c,EACV,MAAO,GACXpC,GAAmBoC,EAAW1c,EAAO,KACjChM,EAAM,MAAQ,OAAS,CAACH,EAAK,MAAM,UACnCA,EAAK,SAAS,CACV,QAAS8B,EACT,eAAgB,GAChB,UAAW,YACf,CAAC,EACL,IAAI4mB,EAAOxC,GAAqB,KAAO/lB,EAAM,cAC7C,OAAIuoB,GACAA,EAAK,UAAU,EACfA,EAAK,QAAQ,aAAcvc,CAAI,EACxB,KAGPwc,GAAY3oB,EAAMmM,CAAI,EACf,GAEf,EACA,IAAM2c,GAA6BC,GAAW,OAAO,EACrD,SAASC,GAAuB1b,EAAO2b,EAAO,CAC1C,IAAIC,EAAU,CAAC,EACf,QAASC,KAAa7b,EAAM,MAAMX,EAAiB,EAAG,CAClD,IAAIgM,EAASwQ,EAAU7b,EAAO2b,CAAK,EAC/BtQ,GACAuQ,EAAQ,KAAKvQ,CAAM,CAC3B,CACA,OAAOuQ,EAAQ,OAAS5b,EAAM,OAAO,CAAE,QAAA4b,EAAS,YAAaJ,GAAc,GAAG,EAAI,CAAE,CAAC,EAAI,IAC7F,CARSnqB,EAAAqqB,GAAA,0BAST,SAASI,GAAqBppB,EAAM,CAChC,WAAW,IAAM,CACb,IAAIipB,EAAQjpB,EAAK,SACjB,GAAIipB,GAASjpB,EAAK,WAAW,gBAAiB,CAC1C,IAAI0R,EAAKsX,GAAuBhpB,EAAK,MAAOipB,CAAK,EAC7CvX,EACA1R,EAAK,SAAS0R,CAAE,EAEhB1R,EAAK,OAAO,CAAC,CAAC,CACtB,CACJ,EAAG,EAAE,CACT,CAXSrB,EAAAyqB,GAAA,wBAYThE,GAAU,MAAQplB,GAAQ,CACtBA,EAAK,WAAW,cAAgB,KAAK,IAAI,EAErC,CAACA,EAAK,UAAU,YAAcA,EAAK,WAAW,eAAiBA,EAAK,WAAW,kBAC/EA,EAAK,UAAU,UAAYA,EAAK,WAAW,cAC3CA,EAAK,UAAU,WAAaA,EAAK,WAAW,gBAEhDopB,GAAqBppB,CAAI,CAC7B,EACAolB,GAAU,KAAOplB,GAAQ,CACrBA,EAAK,SAAS,oBAAoB,EAClCopB,GAAqBppB,CAAI,CAC7B,EACAolB,GAAU,iBAAmBA,GAAU,kBAAoBplB,GAAQ,CAC3DA,EAAK,SAAS,cAEdA,EAAK,WAAW,wBAA0B,OAC1CA,EAAK,WAAW,uBAAyB,IACzCA,EAAK,WAAW,UAAY,IAE5BA,EAAK,WAAW,UAAY,GAEpC,EACAolB,GAAU,eAAiBplB,GAAQ,CAC3BA,EAAK,SAAS,cAElBA,EAAK,WAAW,UAAY,GAC5BA,EAAK,WAAW,mBAAqB,KAAK,IAAI,EAC9CA,EAAK,WAAW,sBAAwB,GACxCA,EAAK,WAAW,yBAA2BA,EAAK,SAAS,eAAe,EAAE,OAAS,EACnFA,EAAK,WAAW,uBAAyB,KACrC1B,EAAQ,QAAUA,EAAQ,QAG1B0B,EAAK,SAAS,UAAU,EAEnBA,EAAK,WAAW,yBAErB,QAAQ,QAAQ,EAAE,KAAK,IAAMA,EAAK,SAAS,MAAM,CAAC,EAKlD,WAAW,IAAM,CACTA,EAAK,WAAW,UAAY,GAAKA,EAAK,QAAQ,gBAC9CA,EAAK,OAAO,CAAC,CAAC,CACtB,EAAG,EAAE,EAEb,EACAolB,GAAU,YAAcplB,GAAQ,CAC5BA,EAAK,WAAW,gBAAkB,KAAK,IAAI,CAC/C,EACAykB,GAAS,YAAc,CAACzkB,EAAMG,IAAU,CACpC,IAAIsL,EAAI4d,EAOR,IANIlpB,EAAM,WAAa,cAAgBA,EAAM,WAAa,2BACtDH,EAAK,WAAW,cAAgBG,EAAM,KACtCH,EAAK,WAAW,gBAAkB,KAAK,IAAI,GAI3CG,EAAM,WAAa,yBAA2BH,EAAK,SAAS,YAAa,CACzE,IAAImM,GAAQV,EAAKtL,EAAM,gBAAkB,MAAQsL,IAAO,OAAS,OAASA,EAAG,QAAQ,YAAY,EAAG3J,EAAS3B,EAAM,gBAAgB,EACnI,GAAIgM,GAAQrK,EAAO,OAAQ,CACvB,IAAI8F,EAAI9F,EAAO,CAAC,EACZ7B,EAAOD,EAAK,SAAS4H,EAAE,eAAgBA,EAAE,WAAW,EAAGrG,EAAKvB,EAAK,SAAS4H,EAAE,aAAcA,EAAE,SAAS,EACzG,OAAAwb,GAAoBpjB,EAAM,CAAE,KAAAC,EAAM,GAAAsB,EAAI,OAAQvB,EAAK,MAAM,OAAOmM,CAAI,CAAE,EAAG,IAAI,EACtE,EACX,CACJ,CAQA,IAAI2Y,EACJ,GAAIxmB,EAAQ,QAAUA,EAAQ,UAAYwmB,EAAUC,GAAY,KAAK5lB,GAAOA,EAAI,WAAagB,EAAM,SAAS,KACxGH,EAAK,SAAS,gBAAgB8kB,EAAQ,IAAKA,EAAQ,OAAO,EACtDA,EAAQ,KAAO,aAAeA,EAAQ,KAAO,UAAU,CACvD,IAAIwE,IAAoBD,EAAK,OAAO,kBAAoB,MAAQA,IAAO,OAAS,OAASA,EAAG,SAAW,EACvG,WAAW,IAAM,CACb,IAAI5d,KAIGA,EAAK,OAAO,kBAAoB,MAAQA,IAAO,OAAS,OAASA,EAAG,SAAW,GAAK6d,EAAkB,IAAMtpB,EAAK,WACpHA,EAAK,WAAW,KAAK,EACrBA,EAAK,MAAM,EAEnB,EAAG,GAAG,CACV,CAEJ,OAAI1B,EAAQ,KAAO6B,EAAM,WAAa,wBAIlCH,EAAK,SAAS,UAAU,EAGxB1B,EAAQ,QAAU6B,EAAM,WAAa,cAAgBH,EAAK,WAAW,WAAa,GAClF,WAAW,IAAMolB,GAAU,eAAeplB,EAAMG,CAAK,EAAG,EAAE,EAEvD,EACX,EACA,IAAMopB,GAAkC,IAAI,IAK5C,SAAShF,GAAmB3mB,EAAK,CACxB2rB,GAAmB,IAAI3rB,CAAG,IAC3B2rB,GAAmB,IAAI3rB,CAAG,EAC1BA,EAAI,iBAAiB,OAAQ,IAAM,CAAE,CAAC,EACtCA,EAAI,iBAAiB,MAAO,IAAM,CAAE,CAAC,EAE7C,CANSe,EAAA4lB,GAAA,sBAQT,IAAMiF,GAAqB,CAAC,WAAY,SAAU,WAAY,cAAc,EAExEC,GAAmB,GACvB,SAASC,IAAwB,CAAED,GAAmB,EAAO,CAApD9qB,EAAA+qB,GAAA,yBACT,IAAMC,GAAN,KAAmB,CAprKnB,MAorKmB,CAAAhrB,EAAA,qBACf,YAAYirB,EAAc,CACtB,KAAK,aAAeA,EACpB,KAAK,IAAMzV,EAAK,MAChB,KAAK,cAAgB,CAAC,EACtB,KAAK,WAAa,GAClB,KAAK,UAAY,EACjB,KAAK,WAAa,GAClB,KAAK,WAAa,EACtB,CACA,aAAalU,EAAMsB,EAAI,CACnB,IAAIsoB,EAAQ,KAAK,IAAI,OAAOtoB,CAAE,EAAE,OAAS,KAAK,IAAI,OAAOtB,CAAI,EAAE,OAAS,EACxE,OAAI,KAAK,eACL4pB,GAAS,KAAK,IAAI,EAAG,KAAK,MAAOtoB,EAAKtB,EAAS4pB,EAAQ,KAAK,WAAa,IAAQ,KAAK,UAAU,CAAC,GAC9F,KAAK,WAAaA,CAC7B,CACA,cAAcve,EAAQ,CAClB,OAAK,KAAK,cAEE,EAAI,KAAK,IAAI,EAAG,KAAK,MAAMA,EAAS,KAAK,YAAc,KAAK,IAAI,EAAG,KAAK,WAAa,CAAC,CAAC,CAAC,GACrF,KAAK,WAFT,KAAK,UAGpB,CACA,OAAO1N,EAAK,CAAE,YAAK,IAAMA,EAAY,IAAM,CAC3C,uBAAuBksB,EAAY,CAC/B,OAAQN,GAAmB,QAAQM,CAAU,EAAI,IAAO,KAAK,YACjE,CACA,sBAAsBC,EAAa,CAC/B,IAAIC,EAAY,GAChB,QAAS,EAAI,EAAG,EAAID,EAAY,OAAQ,IAAK,CACzC,IAAItG,EAAIsG,EAAY,CAAC,EACjBtG,EAAI,EACJ,IAEM,KAAK,cAAc,KAAK,MAAMA,EAAI,EAAE,CAAC,IAC3CuG,EAAY,GACZ,KAAK,cAAc,KAAK,MAAMvG,EAAI,EAAE,CAAC,EAAI,GAEjD,CACA,OAAOuG,CACX,CACA,QAAQF,EAAYjP,EAAYC,EAAWF,EAAYqP,EAAYC,EAAc,CAC7E,IAAIN,EAAeJ,GAAmB,QAAQM,CAAU,EAAI,GACxDnqB,EAAU,KAAK,IAAIkb,EAAa,KAAK,UAAU,EAAI,IAAO,KAAK,cAAgB+O,GAC/E,KAAK,IAAI9O,EAAY,KAAK,SAAS,EAAI,GAM3C,GALA,KAAK,aAAe8O,EACpB,KAAK,WAAa/O,EAClB,KAAK,UAAYC,EACjB,KAAK,WAAaF,EAClB,KAAK,WAAaqP,EACdtqB,EAAS,CACT,KAAK,cAAgB,CAAC,EACtB,QAASJ,EAAI,EAAGA,EAAI2qB,EAAa,OAAQ3qB,IAAK,CAC1C,IAAIkkB,EAAIyG,EAAa3qB,CAAC,EAClBkkB,EAAI,EACJlkB,IAEA,KAAK,cAAc,KAAK,MAAMkkB,EAAI,EAAE,CAAC,EAAI,EACjD,CACJ,CACA,OAAO9jB,CACX,CACJ,EAIMwqB,GAAN,KAAsB,CArvKtB,MAqvKsB,CAAAxrB,EAAA,wBAClB,YAAYsB,EAAMmqB,EAAS,CACvB,KAAK,KAAOnqB,EACZ,KAAK,QAAUmqB,EACf,KAAK,MAAQ,CACjB,CACA,IAAI,MAAO,CAAE,OAAO,KAAK,MAAQ,KAAK,QAAQ,MAAQ,CAC1D,EAKMC,GAAN,MAAMC,CAAU,CAjwKhB,MAiwKgB,CAAA3rB,EAAA,kBAIZ,YAIAsB,EAIAqL,EAKA3G,EAIA6V,EAOA+P,EAAU,CACN,KAAK,KAAOtqB,EACZ,KAAK,OAASqL,EACd,KAAK,IAAM3G,EACX,KAAK,OAAS6V,EACd,KAAK,SAAW+P,CACpB,CAKA,IAAI,MAAO,CACP,OAAO,OAAO,KAAK,UAAY,SAAWjqB,GAAU,KAChD,MAAM,QAAQ,KAAK,QAAQ,EAAI,KAAK,SAAW,KAAK,SAAS,IACrE,CAIA,IAAI,IAAK,CAAE,OAAO,KAAK,KAAO,KAAK,MAAQ,CAI3C,IAAI,QAAS,CAAE,OAAO,KAAK,IAAM,KAAK,MAAQ,CAK9C,IAAI,QAAS,CACT,OAAO,KAAK,oBAAoBQ,GAAkB,KAAK,SAAS,OAAS,IAC7E,CAKA,IAAI,kBAAmB,CACnB,OAAO,OAAO,KAAK,UAAY,SAAW,KAAK,SAAW,CAC9D,CAIA,KAAKZ,EAAO,CACR,IAAI8c,GAAW,MAAM,QAAQ,KAAK,QAAQ,EAAI,KAAK,SAAW,CAAC,IAAI,GAC9D,OAAO,MAAM,QAAQ9c,EAAM,QAAQ,EAAIA,EAAM,SAAW,CAACA,CAAK,CAAC,EACpE,OAAO,IAAIoqB,EAAU,KAAK,KAAM,KAAK,OAASpqB,EAAM,OAAQ,KAAK,IAAK,KAAK,OAASA,EAAM,OAAQ8c,CAAO,CAC7G,CACJ,EACIwN,GAA0B,SAAUA,EAAW,CAC/C,OAAAA,EAAUA,EAAU,MAAW,CAAC,EAAI,QACpCA,EAAUA,EAAU,SAAc,CAAC,EAAI,WACvCA,EAAUA,EAAU,cAAmB,CAAC,EAAI,gBACzCA,CAAS,GAAGA,IAAcA,EAAY,CAAC,EAAE,EAC1CC,GAAU,KACVC,GAAN,MAAMC,CAAU,CAj1KhB,MAi1KgB,CAAAhsB,EAAA,kBACZ,YAAY2M,EACZkP,EACA3Q,EAAQ,EAAuB,CAC3B,KAAK,OAASyB,EACd,KAAK,OAASkP,EACd,KAAK,MAAQ3Q,CACjB,CACA,IAAI,UAAW,CAAE,OAAQ,KAAK,MAAQ,GAAyB,CAAG,CAClE,IAAI,SAASrK,EAAO,CAAE,KAAK,OAASA,EAAQ,EAAwB,GAAM,KAAK,MAAQ,EAAyB,CAChH,UAAUgb,EAAQ,CACV,KAAK,QAAUA,IACX,KAAK,IAAI,KAAK,OAASA,CAAM,EAAIiQ,KACjChB,GAAmB,IACvB,KAAK,OAASjP,EAEtB,CAIA,QAAQoQ,EAAOC,EAAKC,EAAO,CACvB,OAAOH,EAAU,GAAGG,CAAK,CAC7B,CAEA,cAAcD,EAAKxjB,EAAQ,CAAEA,EAAO,KAAK,IAAI,CAAG,CAChD,eAAeujB,EAAOvjB,EAAQ,CAAEA,EAAO,KAAK,IAAI,CAAG,CACnD,aAAa2H,EAAa+b,EAAQC,EAAQ3d,EAAS,CAC/C,IAAI2D,EAAK,KAAMpT,EAAMotB,EAAO,IAC5B,QAASzrB,EAAI8N,EAAQ,OAAS,EAAG9N,GAAK,EAAGA,IAAK,CAC1C,GAAI,CAAE,MAAAoR,EAAO,IAAAC,EAAK,MAAAC,EAAO,IAAAC,CAAI,EAAIzD,EAAQ9N,CAAC,EACtCwB,EAAQiQ,EAAG,OAAOL,EAAO6Z,EAAU,cAAeQ,EAAO,OAAOD,CAAM,EAAG,EAAG,CAAC,EAC7E/pB,EAAMD,EAAM,IAAM6P,EAAM7P,EAAQiQ,EAAG,OAAOJ,EAAK4Z,EAAU,cAAeQ,EAAQ,EAAG,CAAC,EAGxF,IAFAla,GAAO9P,EAAI,GAAK4P,EAChBA,EAAM5P,EAAI,GACHzB,EAAI,GAAKwB,EAAM,MAAQsM,EAAQ9N,EAAI,CAAC,EAAE,KACzCoR,EAAQtD,EAAQ9N,EAAI,CAAC,EAAE,MACvBsR,EAAQxD,EAAQ9N,EAAI,CAAC,EAAE,MACvBA,IACIoR,EAAQ5P,EAAM,OACdA,EAAQiQ,EAAG,OAAOL,EAAO6Z,EAAU,cAAeQ,EAAQ,EAAG,CAAC,GAEtEna,GAAS9P,EAAM,KAAO4P,EACtBA,EAAQ5P,EAAM,KACd,IAAI+pB,EAAQG,GAAY,MAAMD,EAAO,OAAOptB,CAAG,EAAGoR,EAAa6B,EAAOC,CAAG,EACzEE,EAAK3H,GAAQ2H,EAAIA,EAAG,QAAQL,EAAOC,EAAKka,CAAK,CAAC,CAClD,CACA,OAAO9Z,EAAG,aAAaga,EAAQ,CAAC,CACpC,CACA,OAAO,OAAQ,CAAE,OAAO,IAAIE,GAAc,EAAG,EAAG,CAAC,CAAG,CAKpD,OAAO,GAAGJ,EAAO,CACb,GAAIA,EAAM,QAAU,EAChB,OAAOA,EAAM,CAAC,EAClB,IAAIvrB,EAAI,EAAG+J,EAAIwhB,EAAM,OAAQtY,EAAS,EAAGP,EAAQ,EACjD,OACI,GAAI1S,GAAK+J,EACL,GAAIkJ,EAASP,EAAQ,EAAG,CACpB,IAAIkZ,EAAQL,EAAMvrB,EAAI,CAAC,EACnB4rB,EAAM,MACNL,EAAM,OAAO,EAAEvrB,EAAG,EAAG4rB,EAAM,KAAM,KAAMA,EAAM,KAAK,EAElDL,EAAM,OAAO,EAAEvrB,EAAG,EAAG4rB,EAAM,KAAMA,EAAM,KAAK,EAChD7hB,GAAK,EAAI6hB,EAAM,MACf3Y,GAAU2Y,EAAM,IACpB,SACSlZ,EAAQO,EAAS,EAAG,CACzB,IAAI2Y,EAAQL,EAAMxhB,CAAC,EACf6hB,EAAM,MACNL,EAAM,OAAOxhB,EAAG,EAAG6hB,EAAM,KAAM,KAAMA,EAAM,KAAK,EAEhDL,EAAM,OAAOxhB,EAAG,EAAG6hB,EAAM,KAAMA,EAAM,KAAK,EAC9C7hB,GAAK,EAAI6hB,EAAM,MACflZ,GAASkZ,EAAM,IACnB,KAEI,eAGC3Y,EAASP,EAAO,CACrB,IAAIvH,EAAOogB,EAAMvrB,GAAG,EAChBmL,IACA8H,GAAU9H,EAAK,KACvB,KACK,CACD,IAAIA,EAAOogB,EAAM,EAAExhB,CAAC,EAChBoB,IACAuH,GAASvH,EAAK,KACtB,CAEJ,IAAIiK,EAAM,EACV,OAAImW,EAAMvrB,EAAI,CAAC,GAAK,MAChBoV,EAAM,EACNpV,KAEKurB,EAAMvrB,CAAC,GAAK,OACjBoV,EAAM,EACNrL,KAEG,IAAI8hB,GAAgBT,EAAU,GAAGG,EAAM,MAAM,EAAGvrB,CAAC,CAAC,EAAGoV,EAAKgW,EAAU,GAAGG,EAAM,MAAMxhB,CAAC,CAAC,CAAC,CACjG,CACJ,EACA,SAASD,GAAQqN,EAAK2U,EAAK,CACvB,OAAI3U,GAAO2U,EACA3U,GACPA,EAAI,aAAe2U,EAAI,cACvB5B,GAAmB,IAChB4B,EACX,CANS1sB,EAAA0K,GAAA,WAOTqhB,GAAU,UAAU,KAAO,EAC3B,IAAMY,GAAyB/qB,EAAW,QAAQ,CAAC,CAAC,EAC9CgrB,GAAN,cAA6Bb,EAAU,CAl8KvC,MAk8KuC,CAAA/rB,EAAA,uBACnC,YAAY2M,EAAQkP,EAAQ3L,EAAM,CAC9B,MAAMvD,EAAQkP,CAAM,EACpB,KAAK,KAAO3L,EACZ,KAAK,WAAa,CACtB,CACA,UAAUlK,EAAK4B,EAAQ,CACnB,OAAO,IAAI8jB,GAAU9jB,EAAQ,KAAK,OAAQ5B,EAAM,KAAK,WAAY,KAAK,OAAS,KAAK,WAAY,KAAK,MAAQ,CAAC,CAClH,CACA,QAAQ6V,EAAQgR,EAAS7mB,EAAK4B,EAAQ,CAClC,OAAO,KAAK,YAAciU,EAAS7V,EAAM,KAAK,WAAa,IAAI0lB,GAAU9jB,EAAQ,EAAG5B,EAAK,KAAK,WAAY2mB,EAAS,EAC7G,KAAK,UAAU3mB,EAAK4B,CAAM,CACpC,CACA,OAAOklB,EAAQC,EAAOV,EAAQrmB,EAAK4B,EAAQ,CACvC,IAAI2S,EAAO,KAAK,UAAUvU,EAAK4B,CAAM,EACrC,OAAO,KAAK,WAAa,KAAK,QAAQ,EAAGykB,EAAQrmB,EAAK4B,CAAM,EAAE,KAAK2S,CAAI,EAAIA,CAC/E,CACA,YAAYjZ,EAAMsB,EAAIypB,EAAQrmB,EAAK4B,EAAQ+L,EAAG,CACtCrS,GAAQsG,EAAS,KAAK,QAAUhF,GAAMgF,GACtC+L,EAAE,KAAK,OAAO,EAAGkY,EAAU,MAAOQ,EAAQrmB,EAAK4B,CAAM,CAAC,CAC9D,CACA,kBAAkBolB,EAAU,CACxB,IAAIjhB,EAAOihB,EAAS,QAAQA,EAAS,OAAO,EACxCjhB,EAAO,GACP,KAAK,WAAa,CAACA,EACnBA,EAAOihB,EAAS,QAAQA,EAAS,OAAO,GAGxC,KAAK,WAAa,EAEtB,KAAK,UAAUjhB,CAAI,CACvB,CACA,aAAasgB,EAAQzkB,EAAS,EAAGqlB,EAAS,GAAOD,EAAU,CACvD,OAAIA,GAAYA,EAAS,MAAQplB,GAAUolB,EAAS,MAChD,KAAK,kBAAkBA,CAAQ,EACnC,KAAK,SAAW,GACT,IACX,CACA,UAAW,CAAE,MAAO,SAAS,KAAK,MAAM,GAAK,CACjD,EACMT,GAAN,MAAMW,UAAsBN,EAAe,CA1+K3C,MA0+K2C,CAAA5sB,EAAA,sBACvC,YAAY2M,EAAQkP,EAAQwF,EAAO,CAC/B,MAAM1U,EAAQkP,EAAQ,IAAI,EAC1B,KAAK,UAAY,EACjB,KAAK,aAAe,EACpB,KAAK,OAAS,EACd,KAAK,WAAawF,CACtB,CACA,UAAUrb,EAAK4B,EAAQ,CACnB,OAAO,IAAI8jB,GAAU9jB,EAAQ,KAAK,OAAQ5B,EAAM,KAAK,WAAY,KAAK,OAAS,KAAK,WAAY,KAAK,MAAM,CAC/G,CACA,QAAQimB,EAAOC,EAAKC,EAAO,CACvB,IAAItoB,EAAOsoB,EAAM,CAAC,EAClB,OAAIA,EAAM,QAAU,IAAMtoB,aAAgBqpB,GAAiBrpB,aAAgBspB,IAAiBtpB,EAAK,MAAQ,IACrG,KAAK,IAAI,KAAK,OAASA,EAAK,MAAM,EAAI,IAClCA,aAAgBspB,GAChBtpB,EAAO,IAAIqpB,EAAcrpB,EAAK,OAAQ,KAAK,OAAQ,KAAK,UAAU,EAElEA,EAAK,OAAS,KAAK,OAClB,KAAK,WACNA,EAAK,SAAW,IACbA,GAGAkoB,GAAU,GAAGI,CAAK,CAEjC,CACA,aAAaE,EAAQzkB,EAAS,EAAG0S,EAAQ,GAAO0S,EAAU,CACtD,OAAIA,GAAYA,EAAS,MAAQplB,GAAUolB,EAAS,KAChD,KAAK,kBAAkBA,CAAQ,GAE1B1S,GAAS,KAAK,YACnB,KAAK,WAAa,EAClB,KAAK,UAAU,KAAK,IAAI,KAAK,aAAc+R,EAAO,cAAc,KAAK,OAAS,KAAK,SAAS,CAAC,EACzF,KAAK,OAASA,EAAO,UAAU,GAEvC,KAAK,SAAW,GACT,IACX,CACA,UAAW,CACP,MAAO,QAAQ,KAAK,MAAM,GAAG,KAAK,UAAY,CAAC,KAAK,UAAY,EAAE,GAAG,KAAK,aAAe,IAAM,KAAK,aAAe,EAAE,GACzH,CACJ,EACMc,GAAN,MAAMC,UAAqBrB,EAAU,CArhLrC,MAqhLqC,CAAA/rB,EAAA,qBACjC,YAAY2M,EAAQ,CAAE,MAAMA,EAAQ,CAAC,CAAG,CACxC,cAAc0f,EAAQzkB,EAAQ,CAC1B,IAAIylB,EAAYhB,EAAO,IAAI,OAAOzkB,CAAM,EAAE,OAAQmgB,EAAWsE,EAAO,IAAI,OAAOzkB,EAAS,KAAK,MAAM,EAAE,OACjGsjB,EAAQnD,EAAWsF,EAAY,EAC/BC,EAASC,EAAU,EACvB,GAAIlB,EAAO,aAAc,CACrB,IAAImB,EAAe,KAAK,IAAI,KAAK,OAAQnB,EAAO,WAAanB,CAAK,EAClEoC,EAAUE,EAAetC,EACrB,KAAK,OAASA,EAAQ,IACtBqC,GAAW,KAAK,OAASC,IAAiB,KAAK,OAAStC,EAAQ,GACxE,MAEIoC,EAAU,KAAK,OAASpC,EAE5B,MAAO,CAAE,UAAAmC,EAAW,SAAAtF,EAAU,QAAAuF,EAAS,QAAAC,CAAQ,CACnD,CACA,QAAQ1R,EAAQwQ,EAAQrmB,EAAK4B,EAAQ,CACjC,GAAI,CAAE,UAAAylB,EAAW,SAAAtF,EAAU,QAAAuF,EAAS,QAAAC,CAAQ,EAAI,KAAK,cAAclB,EAAQzkB,CAAM,EACjF,GAAIykB,EAAO,aAAc,CACrB,IAAIoB,EAAQ7lB,GAAUiU,EAASwQ,EAAO,WAAa,EAC7C,KAAK,MAAM,KAAK,IAAI,EAAG,KAAK,IAAI,GAAIxQ,EAAS7V,GAAO,KAAK,MAAM,CAAC,EAAI,KAAK,MAAM,GACjFiE,EAAOoiB,EAAO,IAAI,OAAOoB,CAAK,EAAGvR,EAAaoR,EAAUrjB,EAAK,OAASsjB,EACtEG,EAAU,KAAK,IAAI1nB,EAAK6V,EAASK,EAAa,CAAC,EACnD,OAAO,IAAIwP,GAAUzhB,EAAK,KAAMA,EAAK,OAAQyjB,EAASxR,EAAY,CAAC,CACvE,KACK,CACD,IAAIjS,EAAO,KAAK,IAAI,EAAG,KAAK,IAAI8d,EAAWsF,EAAW,KAAK,OAAOxR,EAAS7V,GAAOsnB,CAAO,CAAC,CAAC,EACvF,CAAE,KAAAhsB,EAAM,OAAAqL,CAAO,EAAI0f,EAAO,IAAI,KAAKgB,EAAYpjB,CAAI,EACvD,OAAO,IAAIyhB,GAAUpqB,EAAMqL,EAAQ3G,EAAMsnB,EAAUrjB,EAAMqjB,EAAS,CAAC,CACvE,CACJ,CACA,OAAOzsB,EAAO4J,EAAM4hB,EAAQrmB,EAAK4B,EAAQ,CACrC,GAAI6C,GAAQohB,EAAU,SAClB,OAAO,KAAK,QAAQhrB,EAAOwrB,EAAQrmB,EAAK4B,CAAM,EAClD,GAAI6C,GAAQohB,EAAU,cAAe,CACjC,GAAI,CAAE,KAAAvqB,EAAM,GAAAsB,CAAG,EAAIypB,EAAO,IAAI,OAAOxrB,CAAK,EAC1C,OAAO,IAAI6qB,GAAUpqB,EAAMsB,EAAKtB,EAAM,EAAG,EAAG,CAAC,CACjD,CACA,GAAI,CAAE,UAAA+rB,EAAW,QAAAC,EAAS,QAAAC,CAAQ,EAAI,KAAK,cAAclB,EAAQzkB,CAAM,EACnEqC,EAAOoiB,EAAO,IAAI,OAAOxrB,CAAK,EAAGqb,EAAaoR,EAAUrjB,EAAK,OAASsjB,EACtEI,EAAa1jB,EAAK,OAASojB,EAC3BK,EAAU1nB,EAAMsnB,EAAUK,EAAaJ,GAAWtjB,EAAK,KAAOrC,EAAS+lB,GAC3E,OAAO,IAAIjC,GAAUzhB,EAAK,KAAMA,EAAK,OAAQ,KAAK,IAAIjE,EAAK,KAAK,IAAI0nB,EAAS1nB,EAAM,KAAK,OAASkW,CAAU,CAAC,EAAGA,EAAY,CAAC,CAChI,CACA,YAAY5a,EAAMsB,EAAIypB,EAAQrmB,EAAK4B,EAAQ+L,EAAG,CAC1CrS,EAAO,KAAK,IAAIA,EAAMsG,CAAM,EAC5BhF,EAAK,KAAK,IAAIA,EAAIgF,EAAS,KAAK,MAAM,EACtC,GAAI,CAAE,UAAAylB,EAAW,QAAAC,EAAS,QAAAC,CAAQ,EAAI,KAAK,cAAclB,EAAQzkB,CAAM,EACvE,QAASnG,EAAMH,EAAMosB,EAAU1nB,EAAKvE,GAAOmB,GAAK,CAC5C,IAAIqH,EAAOoiB,EAAO,IAAI,OAAO5qB,CAAG,EAChC,GAAIA,GAAOH,EAAM,CACb,IAAIqsB,EAAa1jB,EAAK,OAASojB,EAC/BK,GAAWJ,EAAUK,EAAaJ,GAAWjsB,EAAOsG,EAAS+lB,EACjE,CACA,IAAIzR,EAAaoR,EAAUC,EAAUtjB,EAAK,OAC1C0J,EAAE,IAAI+X,GAAUzhB,EAAK,KAAMA,EAAK,OAAQyjB,EAASxR,EAAY,CAAC,CAAC,EAC/DwR,GAAWxR,EACXza,EAAMwI,EAAK,GAAK,CACpB,CACJ,CACA,QAAQ3I,EAAMsB,EAAIupB,EAAO,CACrB,IAAI7Y,EAAQ,KAAK,OAAS1Q,EAC1B,GAAI0Q,EAAQ,EAAG,CACX,IAAIjQ,EAAO8oB,EAAMA,EAAM,OAAS,CAAC,EAC7B9oB,aAAgB+pB,EAChBjB,EAAMA,EAAM,OAAS,CAAC,EAAI,IAAIiB,EAAa/pB,EAAK,OAASiQ,CAAK,EAE9D6Y,EAAM,KAAK,KAAM,IAAIiB,EAAa9Z,EAAQ,CAAC,CAAC,CACpD,CACA,GAAIhS,EAAO,EAAG,CACV,IAAIssB,EAAQzB,EAAM,CAAC,EACfyB,aAAiBR,EACjBjB,EAAM,CAAC,EAAI,IAAIiB,EAAa9rB,EAAOssB,EAAM,MAAM,EAE/CzB,EAAM,QAAQ,IAAIiB,EAAa9rB,EAAO,CAAC,EAAG,IAAI,CACtD,CACA,OAAOyqB,GAAU,GAAGI,CAAK,CAC7B,CACA,cAAcvpB,EAAI8F,EAAQ,CACtBA,EAAO,KAAK,IAAI0kB,EAAaxqB,EAAK,CAAC,EAAG,IAAI,CAC9C,CACA,eAAetB,EAAMoH,EAAQ,CACzBA,EAAO,KAAK,KAAM,IAAI0kB,EAAa,KAAK,OAAS9rB,EAAO,CAAC,CAAC,CAC9D,CACA,aAAa+qB,EAAQzkB,EAAS,EAAG0S,EAAQ,GAAO0S,EAAU,CACtD,IAAI3qB,EAAMuF,EAAS,KAAK,OACxB,GAAIolB,GAAYA,EAAS,MAAQplB,EAAS,KAAK,QAAUolB,EAAS,KAAM,CAKpE,IAAIb,EAAQ,CAAC,EAAG1qB,EAAM,KAAK,IAAImG,EAAQolB,EAAS,IAAI,EAAGa,EAAe,GAGtE,IAFIb,EAAS,KAAOplB,GAChBukB,EAAM,KAAK,IAAIiB,EAAaJ,EAAS,KAAOplB,EAAS,CAAC,EAAE,aAAaykB,EAAQzkB,CAAM,CAAC,EACjFnG,GAAOY,GAAO2qB,EAAS,MAAM,CAChC,IAAI7V,EAAMkV,EAAO,IAAI,OAAO5qB,CAAG,EAAE,OAC7B0qB,EAAM,QACNA,EAAM,KAAK,IAAI,EACnB,IAAItQ,EAASmR,EAAS,QAAQA,EAAS,OAAO,EAAG3L,EAAQ,EACrDxF,EAAS,IACTwF,EAAQ,CAACxF,EACTA,EAASmR,EAAS,QAAQA,EAAS,OAAO,GAE1Ca,GAAgB,GAChBA,EAAehS,EACV,KAAK,IAAIA,EAASgS,CAAY,GAAK/B,KACxC+B,EAAe,IACnB,IAAI5jB,EAAO,IAAIsiB,GAAcpV,EAAK0E,EAAQwF,CAAK,EAC/CpX,EAAK,SAAW,GAChBkiB,EAAM,KAAKliB,CAAI,EACfxI,GAAO0V,EAAM,CACjB,CACI1V,GAAOY,GACP8pB,EAAM,KAAK,KAAM,IAAIiB,EAAa/qB,EAAMZ,CAAG,EAAE,aAAa4qB,EAAQ5qB,CAAG,CAAC,EAC1E,IAAIiH,EAASqjB,GAAU,GAAGI,CAAK,EAC/B,OAAI0B,EAAe,GAAK,KAAK,IAAInlB,EAAO,OAAS,KAAK,MAAM,GAAKojB,IAC7D,KAAK,IAAI+B,EAAe,KAAK,cAAcxB,EAAQzkB,CAAM,EAAE,OAAO,GAAKkkB,MACvEhB,GAAmB,IAChBpgB,GAAQ,KAAMhC,CAAM,CAC/B,MACS4R,GAAS,KAAK,YACnB,KAAK,UAAU+R,EAAO,aAAazkB,EAAQA,EAAS,KAAK,MAAM,CAAC,EAChE,KAAK,SAAW,IAEpB,OAAO,IACX,CACA,UAAW,CAAE,MAAO,OAAO,KAAK,MAAM,GAAK,CAC/C,EACM6kB,GAAN,cAA8BV,EAAU,CAtpLxC,MAspLwC,CAAA/rB,EAAA,wBACpC,YAAY+E,EAAMiR,EAAKtE,EAAO,CAC1B,MAAM3M,EAAK,OAASiR,EAAMtE,EAAM,OAAQ3M,EAAK,OAAS2M,EAAM,OAAQsE,GAAOjR,EAAK,UAAY2M,EAAM,SAAW,EAAwB,EAAE,EACvI,KAAK,KAAO3M,EACZ,KAAK,MAAQ2M,EACb,KAAK,KAAO3M,EAAK,KAAO2M,EAAM,IAClC,CACA,IAAI,OAAQ,CAAE,OAAO,KAAK,MAAQ,CAAoB,CACtD,QAAQmK,EAAQwQ,EAAQrmB,EAAK4B,EAAQ,CACjC,IAAIoY,EAAMha,EAAM,KAAK,KAAK,OAC1B,OAAO6V,EAASmE,EAAM,KAAK,KAAK,QAAQnE,EAAQwQ,EAAQrmB,EAAK4B,CAAM,EAC7D,KAAK,MAAM,QAAQiU,EAAQwQ,EAAQrM,EAAKpY,EAAS,KAAK,KAAK,OAAS,KAAK,KAAK,CACxF,CACA,OAAO/G,EAAO4J,EAAM4hB,EAAQrmB,EAAK4B,EAAQ,CACrC,IAAIkmB,EAAW9nB,EAAM,KAAK,KAAK,OAAQ+nB,EAAcnmB,EAAS,KAAK,KAAK,OAAS,KAAK,MAClF7C,EAAO0F,GAAQohB,EAAU,SAAWhrB,EAAQitB,EAAWjtB,EAAQktB,EAC/DtI,EAAO1gB,EAAO,KAAK,KAAK,OAAOlE,EAAO4J,EAAM4hB,EAAQrmB,EAAK4B,CAAM,EAC7D,KAAK,MAAM,OAAO/G,EAAO4J,EAAM4hB,EAAQyB,EAAUC,CAAW,EAClE,GAAI,KAAK,QAAUhpB,EAAO0gB,EAAK,GAAKsI,EAActI,EAAK,KAAOsI,GAC1D,OAAOtI,EACX,IAAIuI,EAAWvjB,GAAQohB,EAAU,cAAgBA,EAAU,cAAgBA,EAAU,MACrF,OAAI9mB,EACO0gB,EAAK,KAAK,KAAK,MAAM,OAAOsI,EAAaC,EAAU3B,EAAQyB,EAAUC,CAAW,CAAC,EAEjF,KAAK,KAAK,OAAOA,EAAaC,EAAU3B,EAAQrmB,EAAK4B,CAAM,EAAE,KAAK6d,CAAI,CACrF,CACA,YAAYnkB,EAAMsB,EAAIypB,EAAQrmB,EAAK4B,EAAQ+L,EAAG,CAC1C,IAAIma,EAAW9nB,EAAM,KAAK,KAAK,OAAQ+nB,EAAcnmB,EAAS,KAAK,KAAK,OAAS,KAAK,MACtF,GAAI,KAAK,MACDtG,EAAOysB,GACP,KAAK,KAAK,YAAYzsB,EAAMsB,EAAIypB,EAAQrmB,EAAK4B,EAAQ+L,CAAC,EACtD/Q,GAAMmrB,GACN,KAAK,MAAM,YAAYzsB,EAAMsB,EAAIypB,EAAQyB,EAAUC,EAAapa,CAAC,MAEpE,CACD,IAAIqM,EAAM,KAAK,OAAO+N,EAAalC,EAAU,MAAOQ,EAAQrmB,EAAK4B,CAAM,EACnEtG,EAAO0e,EAAI,MACX,KAAK,KAAK,YAAY1e,EAAM0e,EAAI,KAAO,EAAGqM,EAAQrmB,EAAK4B,EAAQ+L,CAAC,EAChEqM,EAAI,IAAM1e,GAAQ0e,EAAI,MAAQpd,GAC9B+Q,EAAEqM,CAAG,EACLpd,EAAKod,EAAI,IACT,KAAK,MAAM,YAAYA,EAAI,GAAK,EAAGpd,EAAIypB,EAAQyB,EAAUC,EAAapa,CAAC,CAC/E,CACJ,CACA,QAAQrS,EAAMsB,EAAIupB,EAAO,CACrB,IAAI8B,EAAa,KAAK,KAAK,OAAS,KAAK,MACzC,GAAIrrB,EAAKqrB,EACL,OAAO,KAAK,SAAS,KAAK,KAAK,QAAQ3sB,EAAMsB,EAAIupB,CAAK,EAAG,KAAK,KAAK,EACvE,GAAI7qB,EAAO,KAAK,KAAK,OACjB,OAAO,KAAK,SAAS,KAAK,KAAM,KAAK,MAAM,QAAQA,EAAO2sB,EAAYrrB,EAAKqrB,EAAY9B,CAAK,CAAC,EACjG,IAAIzjB,EAAS,CAAC,EACVpH,EAAO,GACP,KAAK,cAAcA,EAAMoH,CAAM,EACnC,IAAI3D,EAAO2D,EAAO,OAClB,QAAS7E,KAAQsoB,EACbzjB,EAAO,KAAK7E,CAAI,EAGpB,GAFIvC,EAAO,GACP4sB,GAAUxlB,EAAQ3D,EAAO,CAAC,EAC1BnC,EAAK,KAAK,OAAQ,CAClB,IAAI8O,EAAQhJ,EAAO,OACnB,KAAK,eAAe9F,EAAI8F,CAAM,EAC9BwlB,GAAUxlB,EAAQgJ,CAAK,CAC3B,CACA,OAAOqa,GAAU,GAAGrjB,CAAM,CAC9B,CACA,cAAc9F,EAAI8F,EAAQ,CACtB,IAAI3D,EAAO,KAAK,KAAK,OACrB,GAAInC,GAAMmC,EACN,OAAO,KAAK,KAAK,cAAcnC,EAAI8F,CAAM,EAC7CA,EAAO,KAAK,KAAK,IAAI,EACjB,KAAK,QACL3D,IACInC,GAAMmC,GACN2D,EAAO,KAAK,IAAI,GAEpB9F,EAAKmC,GACL,KAAK,MAAM,cAAcnC,EAAKmC,EAAM2D,CAAM,CAClD,CACA,eAAepH,EAAMoH,EAAQ,CACzB,IAAI3D,EAAO,KAAK,KAAK,OAAQ2M,EAAQ3M,EAAO,KAAK,MACjD,GAAIzD,GAAQoQ,EACR,OAAO,KAAK,MAAM,eAAepQ,EAAOoQ,EAAOhJ,CAAM,EACrDpH,EAAOyD,GACP,KAAK,KAAK,eAAezD,EAAMoH,CAAM,EACrC,KAAK,OAASpH,EAAOoQ,GACrBhJ,EAAO,KAAK,IAAI,EACpBA,EAAO,KAAK,KAAK,KAAK,CAC1B,CACA,SAAS3D,EAAM2M,EAAO,CAClB,OAAI3M,EAAK,KAAO,EAAI2M,EAAM,MAAQA,EAAM,KAAO,EAAI3M,EAAK,KAC7CgnB,GAAU,GAAG,KAAK,MAAQ,CAAChnB,EAAM,KAAM2M,CAAK,EAAI,CAAC3M,EAAM2M,CAAK,CAAC,GACxE,KAAK,KAAOhH,GAAQ,KAAK,KAAM3F,CAAI,EACnC,KAAK,MAAQ2F,GAAQ,KAAK,MAAOgH,CAAK,EACtC,KAAK,UAAU3M,EAAK,OAAS2M,EAAM,MAAM,EACzC,KAAK,SAAW3M,EAAK,UAAY2M,EAAM,SACvC,KAAK,KAAO3M,EAAK,KAAO2M,EAAM,KAC9B,KAAK,OAAS3M,EAAK,OAAS,KAAK,MAAQ2M,EAAM,OACxC,KACX,CACA,aAAa2a,EAAQzkB,EAAS,EAAG0S,EAAQ,GAAO0S,EAAU,CACtD,GAAI,CAAE,KAAAjoB,EAAM,MAAA2M,CAAM,EAAI,KAAMuc,EAAarmB,EAAS7C,EAAK,OAAS,KAAK,MAAOopB,EAAY,KASxF,OARInB,GAAYA,EAAS,MAAQplB,EAAS7C,EAAK,QAAUioB,EAAS,KAC9DmB,EAAYppB,EAAOA,EAAK,aAAasnB,EAAQzkB,EAAQ0S,EAAO0S,CAAQ,EAEpEjoB,EAAK,aAAasnB,EAAQzkB,EAAQ0S,CAAK,EACvC0S,GAAYA,EAAS,MAAQiB,EAAavc,EAAM,QAAUsb,EAAS,KACnEmB,EAAYzc,EAAQA,EAAM,aAAa2a,EAAQ4B,EAAY3T,EAAO0S,CAAQ,EAE1Etb,EAAM,aAAa2a,EAAQ4B,EAAY3T,CAAK,EAC5C6T,EACO,KAAK,SAASppB,EAAM2M,CAAK,GACpC,KAAK,OAAS,KAAK,KAAK,OAAS,KAAK,MAAM,OAC5C,KAAK,SAAW,GACT,KACX,CACA,UAAW,CAAE,OAAO,KAAK,MAAQ,KAAK,MAAQ,IAAM,KAAO,KAAK,KAAO,CAC3E,EACA,SAASwc,GAAU/B,EAAOiC,EAAQ,CAC9B,IAAIva,EAAQP,EACR6Y,EAAMiC,CAAM,GAAK,OAChBva,EAASsY,EAAMiC,EAAS,CAAC,aAAcjB,KACvC7Z,EAAQ6Y,EAAMiC,EAAS,CAAC,aAAcjB,IACvChB,EAAM,OAAOiC,EAAS,EAAG,EAAG,IAAIjB,GAAatZ,EAAO,OAAS,EAAIP,EAAM,MAAM,CAAC,CACtF,CANStT,EAAAkuB,GAAA,aAOT,IAAMG,GAAuB,EACvB/B,GAAN,MAAMgC,CAAY,CAnxLlB,MAmxLkB,CAAAtuB,EAAA,oBACd,YAAYyB,EAAK4qB,EAAQ,CACrB,KAAK,IAAM5qB,EACX,KAAK,OAAS4qB,EACd,KAAK,MAAQ,CAAC,EACd,KAAK,UAAY,GACjB,KAAK,QAAU,GACf,KAAK,SAAW,KAChB,KAAK,UAAY5qB,CACrB,CACA,IAAI,WAAY,CACZ,OAAO,KAAK,UAAY,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,GAAK,KAAK,QACtE,CACA,KAAKwqB,EAAOrpB,EAAI,CACZ,GAAI,KAAK,UAAY,GAAI,CACrB,IAAIP,EAAM,KAAK,IAAIO,EAAI,KAAK,OAAO,EAAGS,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EACzEA,aAAgBkpB,GAChBlpB,EAAK,QAAUhB,EAAM,KAAK,KACrBA,EAAM,KAAK,KAAO,CAAC,KAAK,YAC7B,KAAK,MAAM,KAAK,IAAIkqB,GAAclqB,EAAM,KAAK,IAAK,GAAI,CAAC,CAAC,EAC5D,KAAK,UAAYA,EACbO,EAAKP,IACL,KAAK,MAAM,KAAK,IAAI,EACpB,KAAK,YACL,KAAK,UAAY,GAEzB,CACA,KAAK,IAAMO,CACf,CACA,MAAMtB,EAAMsB,EAAIsN,EAAM,CAClB,GAAI5O,EAAOsB,GAAMsN,EAAK,eAAgB,CAClC,IAAI2L,EAAS3L,EAAK,OAASA,EAAK,OAAO,gBAAkB,EACrDqe,EAASre,EAAK,OAASA,EAAK,OAAO,WAAa,EAChD2L,EAAS,IACTA,EAAS,KAAK,OAAO,YACzB,IAAI1E,EAAMvU,EAAKtB,EACX4O,EAAK,MACL,KAAK,SAAS,IAAI0c,GAAezV,EAAK0E,EAAQ3L,CAAI,CAAC,GAE9CiH,GAAOoX,GAAU1S,GAAUwS,KAChC,KAAK,YAAYxS,EAAQ0S,EAAQpX,CAAG,CAE5C,MACSvU,EAAKtB,GACV,KAAK,KAAKA,EAAMsB,CAAE,EAElB,KAAK,QAAU,IAAM,KAAK,QAAU,KAAK,MACzC,KAAK,QAAU,KAAK,OAAO,IAAI,OAAO,KAAK,GAAG,EAAE,GACxD,CACA,WAAY,CACR,GAAI,KAAK,UAAY,GACjB,OACJ,GAAI,CAAE,KAAAtB,EAAM,GAAAsB,CAAG,EAAI,KAAK,OAAO,IAAI,OAAO,KAAK,GAAG,EAClD,KAAK,UAAYtB,EACjB,KAAK,QAAUsB,EACX,KAAK,UAAYtB,KACb,KAAK,UAAYA,EAAO,GAAK,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,GAAK,OAClE,KAAK,MAAM,KAAK,KAAK,aAAa,KAAK,UAAWA,EAAO,CAAC,CAAC,EAC/D,KAAK,MAAM,KAAK,IAAI,GAEpB,KAAK,IAAMA,GACX,KAAK,MAAM,KAAK,IAAIirB,GAAc,KAAK,IAAMjrB,EAAM,GAAI,CAAC,CAAC,EAC7D,KAAK,UAAY,KAAK,GAC1B,CACA,aAAaA,EAAMsB,EAAI,CACnB,IAAI4rB,EAAM,IAAIrB,GAAavqB,EAAKtB,CAAI,EACpC,OAAI,KAAK,OAAO,IAAI,OAAOA,CAAI,EAAE,IAAMsB,IACnC4rB,EAAI,OAAS,GACVA,CACX,CACA,YAAa,CACT,KAAK,UAAU,EACf,IAAInrB,EAAO,KAAK,MAAM,OAAS,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAAI,KACnE,GAAIA,aAAgBkpB,GAChB,OAAOlpB,EACX,IAAI4G,EAAO,IAAIsiB,GAAc,EAAG,GAAI,CAAC,EACrC,YAAK,MAAM,KAAKtiB,CAAI,EACbA,CACX,CACA,SAAS/H,EAAO,CACZ,KAAK,UAAU,EACf,IAAIgO,EAAOhO,EAAM,KACbgO,GAAQA,EAAK,UAAY,GAAK,CAAC,KAAK,WACpC,KAAK,WAAW,EACpB,KAAK,MAAM,KAAKhO,CAAK,EACrB,KAAK,UAAY,KAAK,IAAM,KAAK,IAAMA,EAAM,OACzCgO,GAAQA,EAAK,QAAU,IACvB,KAAK,SAAWhO,EACxB,CACA,YAAY2Z,EAAQ0S,EAAQ5hB,EAAQ,CAChC,IAAI1C,EAAO,KAAK,WAAW,EAC3BA,EAAK,QAAU0C,EACf1C,EAAK,WAAa0C,EAClB1C,EAAK,aAAe,KAAK,IAAIA,EAAK,aAAc4R,CAAM,EACtD5R,EAAK,QAAUskB,EACf,KAAK,UAAY,KAAK,IAAM,KAAK,IAAM5hB,CAC3C,CACA,OAAOrL,EAAM,CACT,IAAI+B,EAAO,KAAK,MAAM,QAAU,EAAI,KAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EACvE,KAAK,UAAY,IAAM,EAAEA,aAAgBkpB,KAAkB,CAAC,KAAK,UACjE,KAAK,MAAM,KAAK,IAAIA,GAAc,EAAG,GAAI,CAAC,CAAC,GACtC,KAAK,UAAY,KAAK,KAAOlpB,GAAQ,OAC1C,KAAK,MAAM,KAAK,KAAK,aAAa,KAAK,UAAW,KAAK,GAAG,CAAC,EAC/D,IAAI5B,EAAMH,EACV,QAASuC,KAAQ,KAAK,MACdA,aAAgB0oB,IAChB1oB,EAAK,aAAa,KAAK,OAAQpC,CAAG,EACtCA,GAAOoC,EAAOA,EAAK,OAAS,EAEhC,OAAO,KAAK,KAChB,CAMA,OAAO,MAAMwoB,EAAQhc,EAAa/O,EAAMsB,EAAI,CACxC,IAAIgX,EAAU,IAAI0U,EAAYhtB,EAAM+qB,CAAM,EAC1C,OAAA3pB,EAAS,MAAM2N,EAAa/O,EAAMsB,EAAIgX,EAAS,CAAC,EACzCA,EAAQ,OAAOtY,CAAI,CAC9B,CACJ,EACA,SAASmtB,GAA0BtuB,EAAGC,EAAGkS,EAAM,CAC3C,IAAIoL,EAAO,IAAIgR,GACf,OAAAhsB,EAAS,QAAQvC,EAAGC,EAAGkS,EAAMoL,EAAM,CAAC,EAC7BA,EAAK,OAChB,CAJS1d,EAAAyuB,GAAA,6BAKT,IAAMC,GAAN,KAA2B,CAl5L3B,MAk5L2B,CAAA1uB,EAAA,6BACvB,aAAc,CACV,KAAK,QAAU,CAAC,CACpB,CACA,cAAe,CAAE,CACjB,aAAasB,EAAMsB,EAAIzC,EAAGC,EAAG,EACrBkB,EAAOsB,GAAMzC,GAAKA,EAAE,gBAAkBC,GAAKA,EAAE,iBAC7C8C,GAAS5B,EAAMsB,EAAI,KAAK,QAAS,CAAC,CAC1C,CACJ,EAEA,SAAS+rB,GAAkBjuB,EAAKkuB,EAAY,CACxC,IAAI9pB,EAAOpE,EAAI,sBAAsB,EACjCzB,EAAMyB,EAAI,cAAewE,EAAMjG,EAAI,aAAe,OAClD8F,EAAO,KAAK,IAAI,EAAGD,EAAK,IAAI,EAAG4M,EAAQ,KAAK,IAAIxM,EAAI,WAAYJ,EAAK,KAAK,EAC1EkB,EAAM,KAAK,IAAI,EAAGlB,EAAK,GAAG,EAAG6M,EAAS,KAAK,IAAIzM,EAAI,YAAaJ,EAAK,MAAM,EAC/E,QAASF,EAASlE,EAAI,WAAYkE,GAAUA,GAAU3F,EAAI,MACtD,GAAI2F,EAAO,UAAY,EAAG,CACtB,IAAIS,EAAMT,EACNkiB,EAAQ,OAAO,iBAAiBzhB,CAAG,EACvC,IAAKA,EAAI,aAAeA,EAAI,cAAgBA,EAAI,YAAcA,EAAI,cAC9DyhB,EAAM,UAAY,UAAW,CAC7B,IAAI+H,EAAaxpB,EAAI,sBAAsB,EAC3CN,EAAO,KAAK,IAAIA,EAAM8pB,EAAW,IAAI,EACrCnd,EAAQ,KAAK,IAAIA,EAAOmd,EAAW,KAAK,EACxC7oB,EAAM,KAAK,IAAIA,EAAK6oB,EAAW,GAAG,EAClCld,EAAS,KAAK,IAAI/M,GAAUlE,EAAI,WAAawE,EAAI,YAAcyM,EAAQkd,EAAW,MAAM,CAC5F,CACAjqB,EAASkiB,EAAM,UAAY,YAAcA,EAAM,UAAY,QAAUzhB,EAAI,aAAeA,EAAI,UAChG,SACST,EAAO,UAAY,GACxBA,EAASA,EAAO,SAGhB,OAGR,MAAO,CAAE,KAAMG,EAAOD,EAAK,KAAM,MAAO,KAAK,IAAIC,EAAM2M,CAAK,EAAI5M,EAAK,KACjE,IAAKkB,GAAOlB,EAAK,IAAM8pB,GAAa,OAAQ,KAAK,IAAI5oB,EAAK2L,CAAM,GAAK7M,EAAK,IAAM8pB,EAAY,CACpG,CA5BS5uB,EAAA2uB,GAAA,qBA6BT,SAASG,GAASzpB,EAAK,CACnB,IAAIP,EAAOO,EAAI,sBAAsB,EAAGH,EAAMG,EAAI,cAAc,aAAe,OAC/E,OAAOP,EAAK,KAAOI,EAAI,YAAcJ,EAAK,MAAQ,GAC9CA,EAAK,IAAMI,EAAI,aAAeJ,EAAK,OAAS,CACpD,CAJS9E,EAAA8uB,GAAA,YAKT,SAASC,GAAeruB,EAAKkuB,EAAY,CACrC,IAAI9pB,EAAOpE,EAAI,sBAAsB,EACrC,MAAO,CAAE,KAAM,EAAG,MAAOoE,EAAK,MAAQA,EAAK,KACvC,IAAK8pB,EAAY,OAAQ9pB,EAAK,QAAUA,EAAK,IAAM8pB,EAAY,CACvE,CAJS5uB,EAAA+uB,GAAA,kBAQT,IAAMC,GAAN,KAAc,CAv8Ld,MAu8Lc,CAAAhvB,EAAA,gBACV,YAAYsB,EAAMsB,EAAIqsB,EAAMC,EAAa,CACrC,KAAK,KAAO5tB,EACZ,KAAK,GAAKsB,EACV,KAAK,KAAOqsB,EACZ,KAAK,YAAcC,CACvB,CACA,OAAO,KAAK/uB,EAAGC,EAAG,CACd,GAAID,EAAE,QAAUC,EAAE,OACd,MAAO,GACX,QAAS,EAAI,EAAG,EAAID,EAAE,OAAQ,IAAK,CAC/B,IAAIgvB,EAAKhvB,EAAE,CAAC,EAAGivB,EAAKhvB,EAAE,CAAC,EACvB,GAAI+uB,EAAG,MAAQC,EAAG,MAAQD,EAAG,IAAMC,EAAG,IAAMD,EAAG,MAAQC,EAAG,KACtD,MAAO,EACf,CACA,MAAO,EACX,CACA,KAAKC,EAAWC,EAAU,CACtB,OAAO1tB,EAAW,QAAQ,CACtB,OAAQ,IAAI2tB,GAAc,KAAK,aAAeD,EAAWD,EAAU,OAASA,EAAU,QAASC,CAAQ,CAC3G,CAAC,EAAE,MAAM,KAAK,KAAM,KAAK,EAAE,CAC/B,CACJ,EACMC,GAAN,cAA4BpuB,EAAW,CA99LvC,MA89LuC,CAAAnB,EAAA,sBACnC,YAAYivB,EAAMO,EAAU,CACxB,MAAM,EACN,KAAK,KAAOP,EACZ,KAAK,SAAWO,CACpB,CACA,GAAGjuB,EAAO,CAAE,OAAOA,EAAM,MAAQ,KAAK,MAAQA,EAAM,UAAY,KAAK,QAAU,CAC/E,OAAQ,CACJ,IAAI8D,EAAM,SAAS,cAAc,KAAK,EACtC,OAAI,KAAK,SACLA,EAAI,MAAM,OAAS,KAAK,KAAO,MAG/BA,EAAI,MAAM,MAAQ,KAAK,KAAO,KAC9BA,EAAI,MAAM,OAAS,MACnBA,EAAI,MAAM,QAAU,gBAEjBA,CACX,CACA,IAAI,iBAAkB,CAAE,OAAO,KAAK,SAAW,KAAK,KAAO,EAAI,CACnE,EACMoqB,GAAN,KAAgB,CAn/LhB,MAm/LgB,CAAAzvB,EAAA,kBACZ,YAAYqB,EAAMsN,EAAO,CACrB,KAAK,KAAOtN,EACZ,KAAK,MAAQsN,EAEb,KAAK,cAAgB,CAAE,KAAM,EAAG,MAAO,OAAO,WAAY,IAAK,EAAG,OAAQ,CAAE,EAC5E,KAAK,OAAS,GACd,KAAK,WAAa,EAClB,KAAK,cAAgB,EACrB,KAAK,gBAAkB,EACvB,KAAK,iBAAmB,EACxB,KAAK,aAAe,EACpB,KAAK,YAAc,EAGnB,KAAK,OAAS,EACd,KAAK,OAAS,EAGd,KAAK,aAAe,EACpB,KAAK,iBAAmB,GAGxB,KAAK,gBAAkB,EAGvB,KAAK,mBAAqB,GAE1B,KAAK,OAAS+gB,GACd,KAAK,aAAe,KAEpB,KAAK,SAAW,GAGhB,KAAK,mBAAqB,GAC1B,KAAK,qBAAuBrnB,EAAU,IACtC,KAAK,cAAgB,CAAC,EAStB,KAAK,uBAAyB,GAC9B,IAAIsnB,EAAgBhhB,EAAM,MAAMiC,EAAiB,EAAE,KAAK8L,GAAK,OAAOA,GAAK,YAAcA,EAAE,OAAS,iBAAiB,EACnH,KAAK,aAAe,IAAIsO,GAAa2E,CAAa,EAClD,KAAK,UAAYC,GAAWjhB,CAAK,EACjC,KAAK,UAAYod,GAAU,MAAM,EAAE,aAAa,KAAK,UAAWvW,EAAK,MAAO,KAAK,aAAa,OAAO7G,EAAM,GAAG,EAAG,CAAC,IAAImD,GAAa,EAAG,EAAG,EAAGnD,EAAM,IAAI,MAAM,CAAC,CAAC,EAC9J,QAAS/N,EAAI,EAAGA,EAAI,IAChB,KAAK,SAAW,KAAK,YAAY,EAAG,IAAI,EACpC,EAAC,KAAK,kBAAkB,GAFTA,IAEnB,CAGJ,KAAK,oBAAoB,EACzB,KAAK,SAAW,KAAK,eAAe,CAAC,CAAC,EACtC,KAAK,YAAcgB,EAAW,IAAI,KAAK,SAAS,IAAI4sB,GAAOA,EAAI,KAAK,KAAM,EAAK,CAAC,CAAC,EACjF,KAAK,aAAentB,EAAK,UACzB,KAAK,qBAAqB,CAC9B,CACA,mBAAoB,CAChB,IAAIwuB,EAAY,CAAC,KAAK,QAAQ,EAAG,CAAE,KAAAtV,CAAK,EAAI,KAAK,MAAM,UACvD,QAAS,EAAI,EAAG,GAAK,EAAG,IAAK,CACzB,IAAI9Y,EAAM,EAAI8Y,EAAK,KAAOA,EAAK,OAC/B,GAAI,CAACsV,EAAU,KAAK,CAAC,CAAE,KAAAvuB,EAAM,GAAAsB,CAAG,IAAMnB,GAAOH,GAAQG,GAAOmB,CAAE,EAAG,CAC7D,GAAI,CAAE,KAAAtB,EAAM,GAAAsB,CAAG,EAAI,KAAK,YAAYnB,CAAG,EACvCouB,EAAU,KAAK,IAAIC,GAASxuB,EAAMsB,CAAE,CAAC,CACzC,CACJ,CACA,YAAK,UAAYitB,EAAU,KAAK,CAAC1vB,EAAGC,IAAMD,EAAE,KAAOC,EAAE,IAAI,EAClD,KAAK,aAAa,CAC7B,CACA,cAAe,CACX,IAAI2vB,EAAS,KAAK,OAClB,YAAK,OAAS,KAAK,UAAU,QAAU,IAAgCL,GACnE,IAAIM,GAAU,KAAK,aAAc,KAAK,UAAW,KAAK,SAAS,EAC5DD,EAAO,GAAG,KAAK,MAAM,EAAI,EAAI,CACxC,CACA,qBAAsB,CAClB,KAAK,cAAgB,CAAC,EACtB,KAAK,UAAU,YAAY,KAAK,SAAS,KAAM,KAAK,SAAS,GAAI,KAAK,aAAa,OAAO,KAAK,MAAM,GAAG,EAAG,EAAG,EAAG7tB,GAAS,CACtH,KAAK,cAAc,KAAK+tB,GAAW/tB,EAAO,KAAK,MAAM,CAAC,CAC1D,CAAC,CACL,CACA,OAAOuO,EAAQyf,EAAe,KAAM,CAChC,KAAK,MAAQzf,EAAO,MACpB,IAAI4I,EAAW,KAAK,UACpB,KAAK,UAAYuW,GAAW,KAAK,KAAK,EACtC,IAAIO,EAAiB1f,EAAO,cACxB2f,EAAgBte,GAAa,iBAAiBqe,EAAgB1B,GAA0BpV,EAAU,KAAK,UAAW5I,EAASA,EAAO,QAAUqC,GAAU,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,CAAC,EACnLud,EAAa,KAAK,UAAU,OAC5BC,EAAe,KAAK,iBAAmB,KAAO,KAAK,eAAe,KAAK,YAAY,EACvFvF,GAAsB,EACtB,KAAK,UAAY,KAAK,UAAU,aAAa,KAAK,UAAWta,EAAO,WAAW,IAAK,KAAK,aAAa,OAAO,KAAK,MAAM,GAAG,EAAG2f,CAAa,GACvI,KAAK,UAAU,QAAUC,GAAcvF,MACvCra,EAAO,OAAS,GAChB6f,GACA,KAAK,gBAAkB7f,EAAO,QAAQ,OAAO6f,EAAa,KAAM,EAAE,EAClE,KAAK,mBAAqBA,EAAa,MAGvC,KAAK,gBAAkB,GACvB,KAAK,mBAAqBD,GAE9B,IAAI/U,EAAW8U,EAAc,OAAS,KAAK,YAAY,KAAK,SAAU3f,EAAO,OAAO,EAAI,KAAK,UACzFyf,IAAiBA,EAAa,MAAM,KAAO5U,EAAS,MAAQ4U,EAAa,MAAM,KAAO5U,EAAS,KAC/F,CAAC,KAAK,sBAAsBA,CAAQ,KACpCA,EAAW,KAAK,YAAY,EAAG4U,CAAY,GAC/C,IAAIK,EAAiBjV,EAAS,MAAQ,KAAK,SAAS,MAAQA,EAAS,IAAM,KAAK,SAAS,GACzF,KAAK,SAAWA,EAChB7K,EAAO,OAAS,KAAK,kBAAkB,GACnC8f,GAAkB,CAAC9f,EAAO,QAAQ,OAAUA,EAAO,MAAQ,IAC3D,KAAK,oBAAoB,GACzB,KAAK,SAAS,QAAU,KAAK,SAAS,GAAK,KAAK,SAAS,KAAQ,MACjE,KAAK,eAAe,KAAK,eAAe,KAAK,YAAY,KAAK,SAAUA,EAAO,OAAO,CAAC,CAAC,EAC5FA,EAAO,OAAS,KAAK,qBAAqBA,EAAO,OAAO,EACpDyf,IACA,KAAK,aAAeA,GACpB,CAAC,KAAK,yBAA2Bzf,EAAO,cAAgBA,EAAO,eAAiBA,EAAO,KAAK,cAC5FA,EAAO,MAAM,UAAU,KAAK,OAASA,EAAO,MAAM,UAAU,KAAK,OACjE,CAACA,EAAO,MAAM,MAAMpC,EAAqB,IACzC,KAAK,uBAAyB,GACtC,CACA,SAAU,CACN,GAAI,CAAE,KAAAhN,CAAK,EAAI,KAAMX,EAAMW,EAAK,WAAYylB,EAAQ,OAAO,iBAAiBpmB,CAAG,EAC3E2rB,EAAS,KAAK,aACdlB,EAAarE,EAAM,WACvB,KAAK,qBAAuBA,EAAM,WAAa,MAAQze,EAAU,IAAMA,EAAU,IACjF,IAAImoB,EAAU,KAAK,aAAa,uBAAuBrF,CAAU,GAAK,KAAK,qBAAuB,UAC9FsF,EAAU/vB,EAAI,sBAAsB,EACpCgwB,EAAiBF,GAAW,KAAK,oBAAsB,KAAK,kBAAoBC,EAAQ,OAC5F,KAAK,iBAAmBA,EAAQ,OAChC,KAAK,mBAAqB,GAC1B,IAAI/nB,EAAS,EAAGyS,EAAO,EACvB,GAAIsV,EAAQ,OAASA,EAAQ,OAAQ,CACjC,GAAI,CAAE,OAAAnrB,EAAQ,OAAAC,CAAO,EAAIH,GAAS1E,EAAK+vB,CAAO,GAC1CnrB,EAAS,MAAQ,KAAK,IAAI,KAAK,OAASA,CAAM,EAAI,MAClDC,EAAS,MAAQ,KAAK,IAAI,KAAK,OAASA,CAAM,EAAI,QAClD,KAAK,OAASD,EACd,KAAK,OAASC,EACdmD,GAAU,GACV8nB,EAAUE,EAAiB,GAEnC,CAEA,IAAI9B,GAAc,SAAS9H,EAAM,UAAU,GAAK,GAAK,KAAK,OACtD6J,GAAiB,SAAS7J,EAAM,aAAa,GAAK,GAAK,KAAK,QAC5D,KAAK,YAAc8H,GAAc,KAAK,eAAiB+B,KACvD,KAAK,WAAa/B,EAClB,KAAK,cAAgB+B,EACrBjoB,GAAU,IAEV,KAAK,aAAerH,EAAK,UAAU,cAC/BgrB,EAAO,eACPqE,EAAiB,IACrB,KAAK,YAAcrvB,EAAK,UAAU,YAClCqH,GAAU,IAEd,IAAIkoB,EAAerqB,GAAkB,KAAK,KAAK,WAAY,EAAK,EAAE,EAC9DqqB,GAAgB,KAAK,eACrB,KAAK,aAAeA,EACpB,KAAK,mBAAqB,GAC1B,KAAK,aAAe,GAExB,IAAIC,EAAe,KAAK,gBAAgB,EACpC,KAAK,cAAgBA,IACrB,KAAK,mBAAqB,GAC1B,KAAK,aAAeA,GAExB,KAAK,iBAAmBhpB,GAAmB,KAAK,cAAgBxG,EAAK,GAAG,EAExE,IAAIyvB,GAAiB,KAAK,SAAW/B,GAAiBJ,IAAmBjuB,EAAK,KAAK,UAAU,EACzFqwB,EAAOD,EAAc,IAAM,KAAK,cAAc,IAAKE,EAAUF,EAAc,OAAS,KAAK,cAAc,OAC3G,KAAK,cAAgBA,EACrB,IAAIG,EAAS,KAAK,cAAc,OAAS,KAAK,cAAc,KAAO,KAAK,cAAc,MAAQ,KAAK,cAAc,KAMjH,GALIA,GAAU,KAAK,SACf,KAAK,OAASA,EACVA,IACAP,EAAiB,KAErB,CAAC,KAAK,QAAU,CAAC,KAAK,cAAgB,CAAC5B,GAASztB,EAAK,GAAG,EACxD,MAAO,GACX,IAAIka,EAAekV,EAAQ,MAM3B,IALI,KAAK,iBAAmBlV,GAAgB,KAAK,cAAgBla,EAAK,UAAU,gBAC5E,KAAK,gBAAkBovB,EAAQ,MAC/B,KAAK,aAAepvB,EAAK,UAAU,aACnCqH,GAAU,IAEVgoB,EAAgB,CAChB,IAAItF,EAAc/pB,EAAK,QAAQ,0BAA0B,KAAK,QAAQ,EAGtE,GAFIgrB,EAAO,sBAAsBjB,CAAW,IACxCoF,EAAU,IACVA,GAAWnE,EAAO,cAAgB,KAAK,IAAI9Q,EAAe,KAAK,eAAe,EAAI8Q,EAAO,UAAW,CACpG,GAAI,CAAE,WAAAnQ,EAAY,UAAAC,EAAW,WAAAF,CAAW,EAAI5a,EAAK,QAAQ,gBAAgB,EACzEmvB,EAAUtU,EAAa,GAAKmQ,EAAO,QAAQlB,EAAYjP,EAAYC,EAAWF,EAAY,KAAK,IAAI,EAAGV,EAAeY,CAAS,EAAGiP,CAAW,EACxIoF,IACAnvB,EAAK,QAAQ,SAAW,EACxBqH,GAAU,GAElB,CACIqoB,EAAO,GAAKC,EAAU,EACtB7V,EAAO,KAAK,IAAI4V,EAAMC,CAAO,EACxBD,EAAO,GAAKC,EAAU,IAC3B7V,EAAO,KAAK,IAAI4V,EAAMC,CAAO,GACjCjG,GAAsB,EACtB,QAAS5lB,KAAM,KAAK,UAAW,CAC3B,IAAIsmB,EAAUtmB,EAAG,MAAQ,KAAK,SAAS,KAAOimB,EAAc/pB,EAAK,QAAQ,0BAA0B8D,CAAE,EACrG,KAAK,WAAaqrB,EAAUzE,GAAU,MAAM,EAAE,aAAa,KAAK,UAAWvW,EAAK,MAAO,KAAK,aAAc,CAAC,IAAI1D,GAAa,EAAG,EAAG,EAAGzQ,EAAK,MAAM,IAAI,MAAM,CAAC,CAAC,EAAI,KAAK,WAAW,aAAagrB,EAAQ,EAAGmE,EAAS,IAAIhF,GAAgBrmB,EAAG,KAAMsmB,CAAO,CAAC,CAC1P,CACIX,KACApiB,GAAU,EAClB,CACA,IAAI6nB,EAAiB,CAAC,KAAK,sBAAsB,KAAK,SAAUpV,CAAI,GAChE,KAAK,eAAiB,KAAK,aAAa,MAAM,KAAO,KAAK,SAAS,MAC/D,KAAK,aAAa,MAAM,KAAO,KAAK,SAAS,IACrD,OAAIoV,IACI7nB,EAAS,IACTA,GAAU,KAAK,aAAa,GAChC,KAAK,SAAW,KAAK,YAAYyS,EAAM,KAAK,YAAY,EACxDzS,GAAU,KAAK,kBAAkB,IAEhCA,EAAS,GAA8B6nB,IACxC,KAAK,oBAAoB,GACzB,KAAK,SAAS,QAAU,KAAK,SAAS,GAAK,KAAK,SAAS,KAAQ,MACjE,KAAK,eAAe,KAAK,eAAeC,EAAU,CAAC,EAAI,KAAK,SAAUnvB,CAAI,CAAC,EAC/EqH,GAAU,KAAK,qBAAqB,EAChC,KAAK,yBACL,KAAK,uBAAyB,GAK9BrH,EAAK,QAAQ,mBAAmB,GAE7BqH,CACX,CACA,IAAI,YAAa,CAAE,OAAO,KAAK,OAAO,QAAQ,KAAK,cAAc,GAAG,CAAG,CACvE,IAAI,eAAgB,CAAE,OAAO,KAAK,OAAO,QAAQ,KAAK,cAAc,MAAM,CAAG,CAC7E,YAAYyS,EAAM+U,EAAc,CAI5B,IAAIgB,EAAY,GAAM,KAAK,IAAI,IAAM,KAAK,IAAI,GAAK/V,EAAO,IAAuB,CAAC,CAAC,EAC/EgW,EAAM,KAAK,UAAW9E,EAAS,KAAK,aACpC,CAAE,WAAA+E,EAAY,cAAAC,CAAc,EAAI,KAChC/V,EAAW,IAAIwU,GAASqB,EAAI,OAAOC,EAAaF,EAAY,IAAsBrF,EAAU,SAAUQ,EAAQ,EAAG,CAAC,EAAE,KAAM8E,EAAI,OAAOE,GAAiB,EAAIH,GAAa,IAAsBrF,EAAU,SAAUQ,EAAQ,EAAG,CAAC,EAAE,EAAE,EAErO,GAAI6D,EAAc,CACd,GAAI,CAAE,KAAAxZ,CAAK,EAAIwZ,EAAa,MAC5B,GAAIxZ,EAAO4E,EAAS,MAAQ5E,EAAO4E,EAAS,GAAI,CAC5C,IAAIgW,EAAa,KAAK,IAAI,KAAK,aAAc,KAAK,cAAc,OAAS,KAAK,cAAc,GAAG,EAC3FpvB,EAAQivB,EAAI,OAAOza,EAAMmV,EAAU,MAAOQ,EAAQ,EAAG,CAAC,EAAGkF,EACzDrB,EAAa,GAAK,SAClBqB,GAAUrvB,EAAM,IAAMA,EAAM,QAAU,EAAIovB,EAAa,EAClDpB,EAAa,GAAK,SAAWA,EAAa,GAAK,WAAaxZ,EAAO4E,EAAS,KACjFiW,EAASrvB,EAAM,IAEfqvB,EAASrvB,EAAM,OAASovB,EAC5BhW,EAAW,IAAIwU,GAASqB,EAAI,OAAOI,EAAS,IAAuB,EAAG1F,EAAU,SAAUQ,EAAQ,EAAG,CAAC,EAAE,KAAM8E,EAAI,OAAOI,EAASD,EAAa,IAAuB,EAAGzF,EAAU,SAAUQ,EAAQ,EAAG,CAAC,EAAE,EAAE,CACjN,CACJ,CACA,OAAO/Q,CACX,CACA,YAAYA,EAAU5M,EAAS,CAC3B,IAAIpN,EAAOoN,EAAQ,OAAO4M,EAAS,KAAM,EAAE,EAAG1Y,EAAK8L,EAAQ,OAAO4M,EAAS,GAAI,CAAC,EAChF,OAAO,IAAIwU,GAAS,KAAK,UAAU,OAAOxuB,EAAMuqB,EAAU,MAAO,KAAK,aAAc,EAAG,CAAC,EAAE,KAAM,KAAK,UAAU,OAAOjpB,EAAIipB,EAAU,MAAO,KAAK,aAAc,EAAG,CAAC,EAAE,EAAE,CAC1K,CAGA,sBAAsB,CAAE,KAAAvqB,EAAM,GAAAsB,CAAG,EAAGuY,EAAO,EAAG,CAC1C,GAAI,CAAC,KAAK,OACN,MAAO,GACX,GAAI,CAAE,IAAAnV,CAAI,EAAI,KAAK,UAAU,OAAO1E,EAAMuqB,EAAU,MAAO,KAAK,aAAc,EAAG,CAAC,EAC9E,CAAE,OAAAla,CAAO,EAAI,KAAK,UAAU,OAAO/O,EAAIipB,EAAU,MAAO,KAAK,aAAc,EAAG,CAAC,EAC/E,CAAE,WAAAuF,EAAY,cAAAC,CAAc,EAAI,KACpC,OAAQ/vB,GAAQ,GAAK0E,GAAOorB,EAAa,KAAK,IAAI,GAA4B,KAAK,IAAI,CAACjW,EAAM,GAA2B,CAAC,KACrHvY,GAAM,KAAK,MAAM,IAAI,QAClB+O,GAAU0f,EAAgB,KAAK,IAAI,GAA4B,KAAK,IAAIlW,EAAM,GAA2B,CAAC,IAC7GnV,EAAMorB,EAAa,EAAI,KAAwBzf,EAAS0f,EAAgB,EAAI,GACrF,CACA,YAAYvX,EAAMpL,EAAS,CACvB,GAAI,CAACoL,EAAK,QAAUpL,EAAQ,MACxB,OAAOoL,EACX,IAAI0X,EAAS,CAAC,EACd,QAAShD,KAAO1U,EACPpL,EAAQ,aAAa8f,EAAI,KAAMA,EAAI,EAAE,GACtCgD,EAAO,KAAK,IAAIxC,GAAQtgB,EAAQ,OAAO8f,EAAI,IAAI,EAAG9f,EAAQ,OAAO8f,EAAI,EAAE,EAAGA,EAAI,KAAMA,EAAI,WAAW,CAAC,EAC5G,OAAOgD,CACX,CAQA,eAAeC,EAASC,EAAY,CAChC,IAAIpC,EAAW,KAAK,aAAa,aAC7BlsB,EAASksB,EAAW,IAA4B,IAAsBqC,EAAavuB,GAAU,EAAGwuB,EAAexuB,GAAU,EAE7H,GAAI,KAAK,sBAAwBiF,EAAU,KAAO,CAACinB,EAC/C,MAAO,CAAC,EACZ,IAAIxV,EAAO,CAAC,EACR+X,EAAS7xB,EAAA,CAACsB,EAAMsB,EAAIqH,EAAM6nB,IAAc,CACxC,GAAIlvB,EAAKtB,EAAOqwB,EACZ,OACJ,IAAI5W,EAAM,KAAK,MAAM,UAAU,KAAMgX,EAAQ,CAAChX,EAAI,IAAI,EACjDA,EAAI,OACLgX,EAAM,KAAKhX,EAAI,EAAE,EACrB,QAAStZ,KAAOswB,EACZ,GAAItwB,EAAMH,GAAQG,EAAMmB,EAAI,CACxBivB,EAAOvwB,EAAMG,EAAM,GAA6BwI,EAAM6nB,CAAS,EAC/DD,EAAOpwB,EAAM,GAA6BmB,EAAIqH,EAAM6nB,CAAS,EAC7D,MACJ,CAEJ,IAAItD,EAAMwD,GAAKP,EAASjD,GAAOA,EAAI,MAAQvkB,EAAK,MAAQukB,EAAI,IAAMvkB,EAAK,IACnE,KAAK,IAAIukB,EAAI,KAAOltB,CAAI,EAAIqwB,GAAc,KAAK,IAAInD,EAAI,GAAK5rB,CAAE,EAAI+uB,GAClE,CAACI,EAAM,KAAKtwB,GAAO+sB,EAAI,KAAO/sB,GAAO+sB,EAAI,GAAK/sB,CAAG,CAAC,EACtD,GAAI,CAAC+sB,EAAK,CAEN,GAAI5rB,EAAKqH,EAAK,IAAMynB,GAAcpC,GAC9BoC,EAAW,cAAc,KAAKzoB,GAAKA,EAAE,MAAQrG,GAAMqG,EAAE,IAAMrG,CAAE,EAAG,CAChE,IAAIqY,EAAYyW,EAAW,mBAAmBpkB,EAAgB,OAAO1K,CAAE,EAAG,GAAO,EAAI,EAAE,KACnFqY,EAAY3Z,IACZsB,EAAKqY,EACb,CACA,IAAIgU,EAAO,KAAK,QAAQhlB,EAAM3I,EAAMsB,EAAIkvB,CAAS,EAC7C5C,EAAcI,GAAYL,EAAO,IAA+BA,EAAO,IAC3ET,EAAM,IAAIQ,GAAQ1tB,EAAMsB,EAAIqsB,EAAMC,CAAW,CACjD,CACApV,EAAK,KAAK0U,CAAG,CACjB,EA7Ba,UA8BTyD,EAAYjyB,EAACiK,GAAS,CACtB,GAAIA,EAAK,OAAS2nB,GAAgB3nB,EAAK,MAAQtI,GAAU,KACrD,OACJ,IAAImwB,EAAYI,GAAcjoB,EAAK,KAAMA,EAAK,GAAI,KAAK,SAAS,EAChE,GAAI6nB,EAAU,MAAQF,EAClB,OACJ,IAAI9xB,EAAS,KAAK,aAAe,KAAK,aAAa,MAAM,KAAO,KAC5DqyB,EAAUC,EACd,GAAI9C,EAAU,CACV,IAAI+C,EAAgBjvB,EAAS,KAAK,aAAa,WAAc,KAAK,aAAa,WAC3E4C,EAAKssB,EACT,GAAIxyB,GAAU,KAAM,CAChB,IAAIyyB,EAAaC,GAAaV,EAAWhyB,CAAM,EAC3C2yB,IAAc,KAAK,cAAgB,KAAK,YAAc,EAAIJ,GAAgBpoB,EAAK,OACnFjE,EAAMusB,EAAaE,EACnBH,EAAMC,EAAaE,CACvB,MAEIzsB,GAAO,KAAK,WAAaiE,EAAK,IAAMooB,GAAgBpoB,EAAK,OACzDqoB,GAAO,KAAK,cAAgBroB,EAAK,IAAMooB,GAAgBpoB,EAAK,OAEhEkoB,EAAWO,GAAaZ,EAAW9rB,CAAG,EACtCosB,EAASM,GAAaZ,EAAWQ,CAAG,CACxC,KACK,CACD,IAAItW,EAAa8V,EAAU,MAAQ,KAAK,aAAa,UACjDa,EAAcvvB,EAAS,KAAK,aAAa,UACzCwvB,EAAc,EAClB,GAAI5W,EAAa,IACb,QAASjE,KAAO0Z,EACR1Z,EAAI,MAAQ9N,EAAK,MAAQ8N,EAAI,KAAO9N,EAAK,IAAM8N,EAAI,MAAQA,EAAI,aAC/DA,EAAI,KAAO,KAAK,aAAa,UAAY6a,EAAc,KAAK,cAAc,OAC1EA,EAAc7a,EAAI,KAAOA,EAAI,aAEzC,IAAI8a,EAAS,KAAK,cAAc,KAAOD,EAAaE,EAAU,KAAK,cAAc,MAAQF,EACrF7tB,EAAM2M,EACV,GAAI5R,GAAU,KAAM,CAChB,IAAIyyB,EAAaC,GAAaV,EAAWhyB,CAAM,EAC3C2yB,IAAcK,EAAUD,GAAU,EAAIF,GAAe3W,EACzDjX,EAAOwtB,EAAaE,EACpB/gB,EAAQ6gB,EAAaE,CACzB,MAEI1tB,GAAQ8tB,EAASF,GAAe3W,EAChCtK,GAASohB,EAAUH,GAAe3W,EAEtCmW,EAAWO,GAAaZ,EAAW/sB,CAAI,EACvCqtB,EAASM,GAAaZ,EAAWpgB,CAAK,CAC1C,CACIygB,EAAWloB,EAAK,MAChB4nB,EAAO5nB,EAAK,KAAMkoB,EAAUloB,EAAM6nB,CAAS,EAC3CM,EAASnoB,EAAK,IACd4nB,EAAOO,EAAQnoB,EAAK,GAAIA,EAAM6nB,CAAS,CAC/C,EArDgB,aAsDhB,QAAS7nB,KAAQ,KAAK,cACd,MAAM,QAAQA,EAAK,IAAI,EACvBA,EAAK,KAAK,QAAQgoB,CAAS,EAE3BA,EAAUhoB,CAAI,EAEtB,OAAO6P,CACX,CACA,QAAQ7P,EAAM3I,EAAMsB,EAAIkvB,EAAW,CAC/B,IAAIiB,EAAWP,GAAaV,EAAWlvB,CAAE,EAAI4vB,GAAaV,EAAWxwB,CAAI,EACzE,OAAI,KAAK,aAAa,aACX2I,EAAK,OAAS8oB,EAGdjB,EAAU,MAAQ,KAAK,aAAa,UAAYiB,CAE/D,CACA,eAAejZ,EAAM,CACZkV,GAAQ,KAAKlV,EAAM,KAAK,QAAQ,IACjC,KAAK,SAAWA,EAChB,KAAK,YAAclY,EAAW,IAAIkY,EAAK,IAAI0U,GAAOA,EAAI,KAAK,KAAM,KAAK,aAAa,YAAY,CAAC,CAAC,EAEzG,CACA,qBAAqB9f,EAAS,CAC1B,IAAIwB,EAAO,KAAK,UACZ,KAAK,SAAS,SACdA,EAAOA,EAAK,OAAO,KAAK,WAAW,GACvC,IAAI/M,EAAS,CAAC,EACdT,EAAS,MAAMwN,EAAM,KAAK,SAAS,KAAM,KAAK,SAAS,GAAI,CACvD,KAAK5O,EAAMsB,EAAI,CAAEO,EAAO,KAAK,CAAE,KAAA7B,EAAM,GAAAsB,CAAG,CAAC,CAAG,EAC5C,OAAQ,CAAE,CACd,EAAG,EAAE,EACL,IAAI5B,EAAU,EACd,GAAImC,EAAO,QAAU,KAAK,cAAc,OACpCnC,EAAU,OAGV,SAASJ,EAAI,EAAGA,EAAIuC,EAAO,QAAU,EAAEnC,EAAU,GAAmCJ,IAAK,CACrF,IAAImX,EAAM,KAAK,cAAcnX,CAAC,EAAG+V,EAAKxT,EAAOvC,CAAC,GAC1CmX,EAAI,MAAQpB,EAAG,MAAQoB,EAAI,IAAMpB,EAAG,MACpC3V,GAAW,EACL0N,GAAWA,EAAQ,OAAOqJ,EAAI,KAAM,EAAE,GAAKpB,EAAG,MAAQjI,EAAQ,OAAOqJ,EAAI,GAAI,CAAC,GAAKpB,EAAG,KACxF3V,GAAW,GAEvB,CAEJ,YAAK,cAAgBmC,EACdnC,CACX,CACA,YAAYS,EAAK,CACb,OAAQA,GAAO,KAAK,SAAS,MAAQA,GAAO,KAAK,SAAS,IACtD,KAAK,cAAc,KAAKrB,GAAKA,EAAE,MAAQqB,GAAOrB,EAAE,IAAMqB,CAAG,GACzDwuB,GAAW,KAAK,UAAU,OAAOxuB,EAAKoqB,EAAU,MAAO,KAAK,aAAc,EAAG,CAAC,EAAG,KAAK,MAAM,CACpG,CACA,kBAAkBhQ,EAAQ,CACtB,OAAQA,GAAU,KAAK,cAAc,CAAC,EAAE,KAAOA,GAAU,KAAK,cAAc,KAAK,cAAc,OAAS,CAAC,EAAE,QACvG,KAAK,cAAc,KAAK7S,GAAKA,EAAE,KAAO6S,GAAU7S,EAAE,QAAU6S,CAAM,GAClEoU,GAAW,KAAK,UAAU,OAAO,KAAK,OAAO,QAAQpU,CAAM,EAAGgQ,EAAU,SAAU,KAAK,aAAc,EAAG,CAAC,EAAG,KAAK,MAAM,CAC/H,CACA,iBAAkB,CAGd,OAFW,KAAK,cAAgB,KAAK,KAAK,UAAY,KAAK,aAAa,WACjE,KAAK,aAAe,KAAK,aAAa,sBAAsB,EAAE,IAAM,GAAK,KAAK,KAAK,WAAW,sBAAsB,EAAE,KAC/G,KAAK,MACvB,CACA,eAAegF,EAAc,CACzB,IAAI3uB,EAAQ,KAAK,kBAAkB2uB,EAAe,CAAC,EACnD,OAAO3uB,EAAM,MAAQ,KAAK,SAAS,MAAQ,KAAK,cAAc,CAAC,EAAE,IAAM2uB,EAAe,IAAM3uB,EAAQ,KAAK,cAAc,CAAC,CAC5H,CACA,gBAAgB2Z,EAAQ,CACpB,OAAOoU,GAAW,KAAK,UAAU,QAAQ,KAAK,OAAO,QAAQpU,CAAM,EAAG,KAAK,aAAc,EAAG,CAAC,EAAG,KAAK,MAAM,CAC/G,CACA,IAAI,WAAY,CACZ,OAAO,KAAK,OAAO,MAAM,KAAK,UAAU,MAAM,CAClD,CACA,IAAI,eAAgB,CAChB,OAAO,KAAK,UAAY,KAAK,WAAa,KAAK,aACnD,CACJ,EACMiU,GAAN,KAAe,CAr8Mf,MAq8Me,CAAA9vB,EAAA,iBACX,YAAYsB,EAAMsB,EAAI,CAClB,KAAK,KAAOtB,EACZ,KAAK,GAAKsB,CACd,CACJ,EACA,SAASsvB,GAAc5wB,EAAMsB,EAAIowB,EAAW,CACxC,IAAI7vB,EAAS,CAAC,EAAG1B,EAAMH,EAAM2xB,EAAQ,EACrC,OAAAvwB,EAAS,MAAMswB,EAAW1xB,EAAMsB,EAAI,CAChC,MAAO,CAAE,EACT,MAAMtB,EAAMsB,EAAI,CACRtB,EAAOG,IACP0B,EAAO,KAAK,CAAE,KAAM1B,EAAK,GAAIH,CAAK,CAAC,EACnC2xB,GAAS3xB,EAAOG,GAEpBA,EAAMmB,CACV,CACJ,EAAG,EAAE,EACDnB,EAAMmB,IACNO,EAAO,KAAK,CAAE,KAAM1B,EAAK,GAAAmB,CAAG,CAAC,EAC7BqwB,GAASrwB,EAAKnB,GAEX,CAAE,MAAAwxB,EAAO,OAAA9vB,CAAO,CAC3B,CAjBSnD,EAAAkyB,GAAA,iBAkBT,SAASQ,GAAa,CAAE,MAAAO,EAAO,OAAA9vB,CAAO,EAAG+vB,EAAO,CAC5C,GAAIA,GAAS,EACT,OAAO/vB,EAAO,CAAC,EAAE,KACrB,GAAI+vB,GAAS,EACT,OAAO/vB,EAAOA,EAAO,OAAS,CAAC,EAAE,GACrC,IAAIyS,EAAO,KAAK,MAAMqd,EAAQC,CAAK,EACnC,QAAStyB,EAAI,GAAIA,IAAK,CAClB,GAAI,CAAE,KAAAU,EAAM,GAAAsB,CAAG,EAAIO,EAAOvC,CAAC,EAAGquB,EAAOrsB,EAAKtB,EAC1C,GAAIsU,GAAQqZ,EACR,OAAO3tB,EAAOsU,EAClBA,GAAQqZ,CACZ,CACJ,CAZSjvB,EAAA0yB,GAAA,gBAaT,SAASF,GAAaV,EAAWrwB,EAAK,CAClC,IAAI0xB,EAAU,EACd,OAAS,CAAE,KAAA7xB,EAAM,GAAAsB,CAAG,IAAKkvB,EAAU,OAAQ,CACvC,GAAIrwB,GAAOmB,EAAI,CACXuwB,GAAW1xB,EAAMH,EACjB,KACJ,CACA6xB,GAAWvwB,EAAKtB,CACpB,CACA,OAAO6xB,EAAUrB,EAAU,KAC/B,CAVS9xB,EAAAwyB,GAAA,gBAWT,SAASR,GAAKoB,EAAOzf,EAAG,CACpB,QAAS+Y,KAAO0G,EACZ,GAAIzf,EAAE+Y,CAAG,EACL,OAAOA,CAEnB,CALS1sB,EAAAgyB,GAAA,QAQT,IAAMtC,GAAW,CACb,MAAM,EAAG,CAAE,OAAO,CAAG,EACrB,QAAQ,EAAG,CAAE,OAAO,CAAG,EACvB,MAAO,EACP,GAAGnuB,EAAO,CAAE,OAAOA,GAAS,IAAM,CACtC,EACA,SAASquB,GAAWjhB,EAAO,CACvB,IAAIuB,EAAOvB,EAAM,MAAM0B,EAAW,EAAE,OAAOiM,GAAK,OAAOA,GAAK,UAAU,EAClE+W,EAAQ1kB,EAAM,MAAMmC,EAAgB,EAAE,OAAOwL,GAAK,OAAOA,GAAK,UAAU,EAC5E,OAAI+W,EAAM,QACNnjB,EAAK,KAAKxN,EAAS,KAAK2wB,CAAK,CAAC,EAC3BnjB,CACX,CANSlQ,EAAA4vB,GAAA,cAUT,IAAMI,GAAN,MAAMsD,CAAU,CA7gNhB,MA6gNgB,CAAAtzB,EAAA,kBACZ,YAAYqsB,EAAQkH,EAAW1D,EAAW,CACtC,IAAI2D,EAAW,EAAG/N,EAAO,EAAGgO,EAAU,EACtC,KAAK,UAAY5D,EAAU,IAAI,CAAC,CAAE,KAAAvuB,EAAM,GAAAsB,CAAG,IAAM,CAC7C,IAAIoD,EAAMutB,EAAU,OAAOjyB,EAAMuqB,EAAU,MAAOQ,EAAQ,EAAG,CAAC,EAAE,IAC5D1a,EAAS4hB,EAAU,OAAO3wB,EAAIipB,EAAU,MAAOQ,EAAQ,EAAG,CAAC,EAAE,OACjE,OAAAmH,GAAY7hB,EAAS3L,EACd,CAAE,KAAA1E,EAAM,GAAAsB,EAAI,IAAAoD,EAAK,OAAA2L,EAAQ,OAAQ,EAAG,UAAW,CAAE,CAC5D,CAAC,EACD,KAAK,OAAS,IAAgC6hB,IAAaD,EAAU,OAASC,GAC9E,QAASE,KAAO,KAAK,UACjBA,EAAI,OAASD,GAAWC,EAAI,IAAMjO,GAAQ,KAAK,MAC/CgO,EAAUC,EAAI,UAAYA,EAAI,QAAUA,EAAI,OAASA,EAAI,KACzDjO,EAAOiO,EAAI,MAEnB,CACA,MAAMC,EAAG,CACL,QAAS/yB,EAAI,EAAG6kB,EAAO,EAAGgO,EAAU,GAAI7yB,IAAK,CACzC,IAAIuE,EAAKvE,EAAI,KAAK,UAAU,OAAS,KAAK,UAAUA,CAAC,EAAI,KACzD,GAAI,CAACuE,GAAMwuB,EAAIxuB,EAAG,IACd,OAAOsuB,GAAWE,EAAIlO,GAAQ,KAAK,MACvC,GAAIkO,GAAKxuB,EAAG,OACR,OAAOA,EAAG,QAAUwuB,EAAIxuB,EAAG,KAC/BsgB,EAAOtgB,EAAG,OACVsuB,EAAUtuB,EAAG,SACjB,CACJ,CACA,QAAQwuB,EAAG,CACP,QAAS/yB,EAAI,EAAG6kB,EAAO,EAAGgO,EAAU,GAAI7yB,IAAK,CACzC,IAAIuE,EAAKvE,EAAI,KAAK,UAAU,OAAS,KAAK,UAAUA,CAAC,EAAI,KACzD,GAAI,CAACuE,GAAMwuB,EAAIxuB,EAAG,OACd,OAAOsgB,GAAQkO,EAAIF,GAAW,KAAK,MACvC,GAAIE,GAAKxuB,EAAG,UACR,OAAOA,EAAG,KAAOwuB,EAAIxuB,EAAG,QAC5BsgB,EAAOtgB,EAAG,OACVsuB,EAAUtuB,EAAG,SACjB,CACJ,CACA,GAAG5D,EAAO,CACN,OAAMA,aAAiB+xB,EAEhB,KAAK,OAAS/xB,EAAM,OAAS,KAAK,UAAU,QAAUA,EAAM,UAAU,QACzE,KAAK,UAAU,MAAM,CAAC4D,EAAI,IAAMA,EAAG,MAAQ5D,EAAM,UAAU,CAAC,EAAE,MAAQ4D,EAAG,IAAM5D,EAAM,UAAU,CAAC,EAAE,EAAE,EAF7F,EAGf,CACJ,EACA,SAAS0uB,GAAW/tB,EAAO6tB,EAAQ,CAC/B,GAAIA,EAAO,OAAS,EAChB,OAAO7tB,EACX,IAAI0xB,EAAO7D,EAAO,MAAM7tB,EAAM,GAAG,EAAG2xB,EAAU9D,EAAO,MAAM7tB,EAAM,MAAM,EACvE,OAAO,IAAIwpB,GAAUxpB,EAAM,KAAMA,EAAM,OAAQ0xB,EAAMC,EAAUD,EAAM,MAAM,QAAQ1xB,EAAM,QAAQ,EAAIA,EAAM,SAAS,IAAI9B,GAAK6vB,GAAW7vB,EAAG2vB,CAAM,CAAC,EAAI7tB,EAAM,QAAQ,CACxK,CALSlC,EAAAiwB,GAAA,cAOT,IAAM6D,GAAqBpmB,EAAM,OAAO,CAAE,QAAS1N,EAAA+zB,GAAQA,EAAK,KAAK,GAAG,EAArB,UAAuB,CAAC,EACrEC,GAAyBtmB,EAAM,OAAO,CAAE,QAAS1N,EAAAoO,GAAUA,EAAO,QAAQ,EAAI,EAAI,GAAjC,UAAoC,CAAC,EACtF6lB,GAA2BC,GAAY,QAAQ,EAAGC,GAA2BD,GAAY,QAAQ,EAAGE,GAA0BF,GAAY,QAAQ,EAClJG,GAAe,CAAE,SAAU,IAAMF,GAAa,QAAS,IAAMC,EAAW,EAC9E,SAASE,GAAW/Z,EAAMvY,EAAMuyB,EAAQ,CACpC,OAAO,IAAIL,GAAYlyB,EAAM,CACzB,OAAO+Y,EAAK,CACR,MAAO,IAAI,KAAKA,CAAG,EAAIA,EAAI,QAAQ,OAAQnJ,GAAK,CAC5C,GAAIA,GAAK,IACL,OAAO2I,EACX,GAAI,CAACga,GAAU,CAACA,EAAO3iB,CAAC,EACpB,MAAM,IAAI,WAAW,yBAAyBA,CAAC,EAAE,EACrD,OAAO2iB,EAAO3iB,CAAC,CACnB,CAAC,EAAI2I,EAAO,IAAMQ,CACtB,CACJ,CAAC,CACL,CAZS/a,EAAAs0B,GAAA,cAaT,IAAME,GAA2BF,GAAW,IAAML,GAAa,CAC3D,IAAK,CACD,SAAU,sBACV,UAAW,aACX,eAAgB,CASZ,QAAS,oBACb,EACA,QAAS,kBACT,cAAe,QACnB,EACA,eAAgB,CACZ,QAAS,kBACT,WAAY,wBACZ,WAAY,YACZ,WAAY,IACZ,OAAQ,OACR,UAAW,OACX,SAAU,WACV,OAAQ,EACR,eAAgB,MACpB,EACA,cAAe,CACX,OAAQ,EACR,SAAU,EACV,WAAY,EACZ,QAAS,QACT,WAAY,MACZ,SAAU,SACV,UAAW,aACX,UAAW,OACX,QAAS,QACT,QAAS,OACT,0BAA2B,CACvB,iBAAkB,2BACtB,CACJ,EACA,mBAAoB,CAChB,oBAAqB,WACrB,WAAY,eACZ,UAAW,aACX,aAAc,WACd,WAAY,CAChB,EACA,qBAAsB,CAAE,WAAY,OAAQ,EAC5C,oBAAqB,CAAE,WAAY,OAAQ,EAC3C,WAAY,CACR,QAAS,QACT,QAAS,aACb,EACA,YAAa,CACT,SAAU,WACV,KAAM,EACN,IAAK,EACL,QAAS,aACT,QAAS,CACL,SAAU,UACd,CACJ,EACA,iCAAkC,CAC9B,WAAY,SAChB,EACA,gCAAiC,CAC7B,WAAY,MAChB,EACA,gFAAiF,CAC7E,WAAY,SAChB,EACA,+EAAgF,CAC5E,WAAY,MAChB,EACA,kBAAmB,CACf,cAAe,MACnB,EACA,gDAAiD,CAC7C,UAAW,iCACf,EAIA,sBAAuB,CAAE,KAAM,CAAC,EAAG,MAAO,CAAE,QAAS,CAAE,EAAG,OAAQ,CAAC,CAAE,EACrE,uBAAwB,CAAE,KAAM,CAAC,EAAG,MAAO,CAAE,QAAS,CAAE,EAAG,OAAQ,CAAC,CAAE,EACtE,6BAA8B,CAC1B,WAAY,oBACZ,WAAY,SACZ,cAAe,MACnB,EACA,aAAc,CACV,QAAS,MACb,EACA,mBAAoB,CAChB,gBAAiB,MACrB,EACA,sBAAuB,CACnB,gBAAiB,eACjB,MAAO,OACX,EACA,qEAAsE,CAClE,QAAS,KACT,gBAAiB,UACjB,aAAc,MACd,MAAO,MACP,OAAQ,MACR,SAAU,WACV,KAAM,SACV,EACA,oCAAqC,CAAE,IAAK,MAAO,EACnD,kCAAmC,CAAE,OAAQ,MAAO,EACpD,iBAAkB,CACd,SAAU,UACd,EACA,2DAA4D,CACxD,QAAS,OACb,EACA,UAAW,CACP,YAAa,SACjB,EACA,gBAAiB,CACb,SAAU,QACV,IAAK,UACT,EACA,eAAgB,CACZ,gBAAiB,CAAE,QAAS,MAAO,CACvC,EACA,wBAAyB,CAAE,gBAAiB,WAAY,EACxD,uBAAwB,CAAE,gBAAiB,WAAY,EACvD,yBAA0B,CAAE,MAAO,KAAM,EACzC,wBAAyB,CAAE,MAAO,MAAO,EACzC,cAAe,CACX,WAAY,EACZ,QAAS,OACT,OAAQ,OACR,UAAW,aACX,OAAQ,GACZ,EACA,qBAAsB,CAAE,iBAAkB,CAAE,EAC5C,oBAAqB,CAAE,eAAgB,CAAE,EACzC,qBAAsB,CAClB,gBAAiB,UACjB,MAAO,UACP,OAAQ,iBACR,sBAAuB,CAAE,iBAAkB,KAAM,EACjD,qBAAsB,CAAE,gBAAiB,KAAM,CACnD,EACA,oBAAqB,CACjB,gBAAiB,UACjB,MAAO,MACX,EACA,aAAc,CACV,QAAS,kBACT,cAAe,SACf,WAAY,EACZ,UAAW,aACX,UAAW,OACX,SAAU,QACd,EACA,oBAAqB,CACjB,UAAW,YACf,EACA,oCAAqC,CACjC,QAAS,cACT,SAAU,OACV,UAAW,QACX,WAAY,QAChB,EACA,8BAA+B,CAC3B,gBAAiB,SACrB,EACA,6BAA8B,CAC1B,gBAAiB,SACrB,EACA,aAAc,CACV,UAAW,aACX,SAAU,SACV,KAAM,EACN,MAAO,EACP,OAAQ,GACZ,EACA,oBAAqB,CACjB,gBAAiB,UACjB,MAAO,OACX,EACA,wBAAyB,CACrB,aAAc,gBAClB,EACA,2BAA4B,CACxB,UAAW,gBACf,EACA,mBAAoB,CAChB,gBAAiB,UACjB,MAAO,OACX,EACA,aAAc,CACV,QAAS,mBACT,SAAU,WACV,UAAW,CAAE,SAAU,KAAM,CACjC,EACA,mBAAoB,CAChB,SAAU,WACV,IAAK,MACL,MAAO,MACP,gBAAiB,UACjB,OAAQ,OACR,KAAM,UACN,SAAU,OACV,QAAS,GACb,EACA,UAAW,CACP,QAAS,eACT,SAAU,SACV,cAAe,QACnB,EACA,mBAAoB,CAChB,cAAe,WACf,OAAQ,MACR,MAAO,EACP,QAAS,QACb,EACA,kBAAmB,CACf,MAAO,OACP,QAAS,eACT,cAAe,MACf,WAAY,MAChB,EACA,qBAAsB,CAClB,gBAAiB,+DACjB,mBAAoB,QACxB,EACA,mBAAoB,CAChB,gBAAiB,sMACjB,eAAgB,YAChB,mBAAoB,YACpB,iBAAkB,WACtB,EACA,oBAAqB,CACjB,gBAAiB,WACrB,EACA,aAAc,CACV,cAAe,SACf,MAAO,UACP,SAAU,MACV,QAAS,WACT,aAAc,KAClB,EACA,oBAAqB,CACjB,gBAAiB,oCACjB,OAAQ,iBACR,WAAY,CACR,gBAAiB,mCACrB,CACJ,EACA,mBAAoB,CAChB,gBAAiB,iCACjB,OAAQ,iBACR,WAAY,CACR,gBAAiB,6BACrB,CACJ,EACA,gBAAiB,CACb,cAAe,SACf,MAAO,UACP,SAAU,MACV,OAAQ,mBACR,QAAS,WACb,EACA,uBAAwB,CACpB,gBAAiB,OACrB,EACA,sBAAuB,CACnB,OAAQ,iBACR,gBAAiB,SACrB,CACJ,EAAGI,EAAY,EAETI,GAAiB,CACnB,UAAW,GACX,cAAe,GACf,QAAS,GACT,WAAY,GACZ,sBAAuB,EAC3B,EAGMC,GAAc/0B,EAAQ,IAAMA,EAAQ,YAAc,GAClDg1B,GAAN,KAAkB,CAr3NlB,MAq3NkB,CAAA30B,EAAA,oBACd,YAAYqB,EAAM,CACd,KAAK,KAAOA,EACZ,KAAK,OAAS,GACd,KAAK,YAAc,KAOnB,KAAK,eAAiB,IAAIoF,GAE1B,KAAK,iBAAmB,GACxB,KAAK,aAAe,GACpB,KAAK,cAAgB,GACrB,KAAK,MAAQ,CAAC,EACd,KAAK,kBAAoB,KACzB,KAAK,mBAAqB,GAC1B,KAAK,WAAa,EAClB,KAAK,cAAgB,CAAC,EACtB,KAAK,aAAe,KACpB,KAAK,aAAe,KACpB,KAAK,aAAe,GACpB,KAAK,gBAAkB,KACvB,KAAK,KAAO,CAAC,EACb,KAAK,WAAa,KAElB,KAAK,YAAc,GACnB,KAAK,IAAMpF,EAAK,WAChB,KAAK,SAAW,IAAI,iBAAiBuzB,GAAa,CAC9C,QAASC,KAAOD,EACZ,KAAK,MAAM,KAAKC,CAAG,GAUlBl1B,EAAQ,IAAMA,EAAQ,YAAc,IAAMA,EAAQ,KAAO0B,EAAK,YAC/DuzB,EAAU,KAAKhjB,GAAKA,EAAE,MAAQ,aAAeA,EAAE,aAAa,QACxDA,EAAE,MAAQ,iBAAmBA,EAAE,SAAS,OAASA,EAAE,OAAO,UAAU,MAAM,EAC9E,KAAK,UAAU,EAEf,KAAK,MAAM,CACnB,CAAC,EACG,OAAO,aAAejS,EAAQ,SAAW0B,EAAK,YAAY,eAAiB,IAE3E,EAAE1B,EAAQ,QAAUA,EAAQ,eAAiB,OAC7C,KAAK,YAAc,IAAIm1B,GAAmBzzB,CAAI,EAC1CA,EAAK,MAAM,MAAM8N,EAAQ,IACzB9N,EAAK,WAAW,YAAc,KAAK,YAAY,cAEnDqzB,KACA,KAAK,WAAclzB,GAAU,CACzB,KAAK,MAAM,KAAK,CAAE,OAAQA,EAAM,OAC5B,KAAM,gBACN,SAAUA,EAAM,SAAU,CAAC,EAC/B,KAAK,UAAU,CACnB,GACJ,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzD,KAAK,SAAW,KAAK,SAAS,KAAK,IAAI,EACvC,KAAK,QAAU,KAAK,QAAQ,KAAK,IAAI,EACrC,KAAK,SAAW,KAAK,SAAS,KAAK,IAAI,EACnC,OAAO,aACP,KAAK,WAAa,OAAO,WAAW,OAAO,GAC3C,OAAO,gBAAkB,aACzB,KAAK,aAAe,IAAI,eAAe,IAAM,CACzC,IAAIsL,IACEA,EAAK,KAAK,KAAK,WAAa,MAAQA,IAAO,OAAS,OAASA,EAAG,YAAc,KAAK,IAAI,EAAI,IAC7F,KAAK,SAAS,CACtB,CAAC,EACD,KAAK,aAAa,QAAQzL,EAAK,SAAS,GAE5C,KAAK,mBAAmB,KAAK,IAAMA,EAAK,GAAG,EAC3C,KAAK,MAAM,EACP,OAAO,sBAAwB,aAC/B,KAAK,aAAe,IAAI,qBAAqB0zB,GAAW,CAChD,KAAK,YAAc,IACnB,KAAK,YAAc,WAAW,KAAK,gBAAgB,KAAK,IAAI,EAAG,GAAI,GACnEA,EAAQ,OAAS,GAAMA,EAAQA,EAAQ,OAAS,CAAC,EAAE,kBAAoB,GAAM,KAAK,eAClF,KAAK,aAAe,CAAC,KAAK,aACtB,KAAK,cAAgB,KAAK,KAAK,QAC/B,KAAK,gBAAgB,SAAS,YAAY,OAAO,CAAC,EAE9D,EAAG,CAAE,UAAW,CAAC,EAAG,IAAI,CAAE,CAAC,EAC3B,KAAK,aAAa,QAAQ,KAAK,GAAG,EAClC,KAAK,gBAAkB,IAAI,qBAAqBA,GAAW,CACnDA,EAAQ,OAAS,GAAKA,EAAQA,EAAQ,OAAS,CAAC,EAAE,kBAAoB,GACtE,KAAK,gBAAgB,SAAS,YAAY,OAAO,CAAC,CAC1D,EAAG,CAAC,CAAC,GAET,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,CAC5B,CACA,gBAAgB,EAAG,CACf,KAAK,KAAK,WAAW,YAAY,SAAU,CAAC,EACxC,KAAK,cACL,KAAK,KAAK,QAAQ,CAC1B,CACA,SAAS,EAAG,CACJ,KAAK,cACL,KAAK,MAAM,EAAK,EAChB,KAAK,aACL,KAAK,KAAK,eAAe,KAAK,YAAY,UAAU,EACxD,KAAK,gBAAgB,CAAC,CAC1B,CACA,UAAW,CACH,KAAK,cAAgB,IACrB,KAAK,cAAgB,WAAW,IAAM,CAClC,KAAK,cAAgB,GACrB,KAAK,KAAK,eAAe,CAC7B,EAAG,EAAE,EACb,CACA,QAAQvzB,EAAO,EACNA,EAAM,MAAQ,UAAY,CAACA,EAAM,OAAS,CAACA,EAAM,UAEtD,KAAK,KAAK,UAAU,SAAW,GAC/B,KAAK,KAAK,QAAQ,EAClB,WAAW,IAAM,CACb,KAAK,KAAK,UAAU,SAAW,GAC/B,KAAK,KAAK,eAAe,CAC7B,EAAG,GAAG,EACV,CACA,WAAWsY,EAAM,CACb,GAAI,KAAK,kBAAoBA,EAAK,QAAU,KAAK,KAAK,QAAU,KAAK,KAAK,KAAK,CAACkb,EAAG,IAAMA,GAAKlb,EAAK,CAAC,CAAC,GAAI,CACrG,KAAK,gBAAgB,WAAW,EAChC,QAAS0U,KAAO1U,EACZ,KAAK,gBAAgB,QAAQ0U,CAAG,EACpC,KAAK,KAAO1U,CAChB,CACJ,CACA,kBAAkBtY,EAAO,CACrB,IAAIyzB,EAAa,KAAK,iBACtB,GAAI,CAAC,KAAK,mBAAmB,GAAK,KAAK,kBACnC,OACJ,GAAI,CAAE,KAAA5zB,CAAK,EAAI,KAAM0Z,EAAM,KAAK,eAChC,GAAI1Z,EAAK,MAAM,MAAM8N,EAAQ,EAAI9N,EAAK,KAAK,eAAiB,KAAK,IAAM,CAACyC,GAAa,KAAK,IAAKiX,CAAG,EAC9F,OACJ,IAAIhQ,EAAUgQ,EAAI,YAAc1Z,EAAK,QAAQ,KAAK,QAAQ0Z,EAAI,UAAU,EACxE,GAAIhQ,GAAWA,EAAQ,SAAS,GAAKA,EAAQ,OAAO,YAAYvJ,CAAK,EAAG,CAC/DyzB,IACD,KAAK,iBAAmB,IAC5B,MACJ,EAMKt1B,EAAQ,IAAMA,EAAQ,YAAc,IAAMA,EAAQ,SAAWA,EAAQ,SAAW,CAAC0B,EAAK,MAAM,UAAU,KAAK,OAE5G0Z,EAAI,WAAa7W,GAAqB6W,EAAI,UAAWA,EAAI,YAAaA,EAAI,WAAYA,EAAI,YAAY,EACtG,KAAK,UAAU,EAEf,KAAK,MAAM,EAAK,CACxB,CACA,oBAAqB,CACjB,GAAI,CAAE,KAAA1Z,CAAK,EAAI,KAGX0C,EAAYL,GAAarC,EAAK,IAAI,EACtC,GAAI,CAAC0C,EACD,MAAO,GACX,IAAI4C,EAAQhH,EAAQ,QAAU0B,EAAK,KAAK,UAAY,IAChDA,EAAK,KAAK,eAAiB,KAAK,KAChC6zB,GAAyB,KAAK,KAAMnxB,CAAS,GAAKA,EACtD,GAAI,CAAC4C,GAAS,KAAK,eAAe,GAAGA,CAAK,EACtC,MAAO,GACX,IAAIwuB,EAAQrxB,GAAa,KAAK,IAAK6C,CAAK,EAIxC,OAAIwuB,GAAS,CAAC,KAAK,kBACf9zB,EAAK,WAAW,cAAgB,KAAK,IAAI,EAAI,KAC7CA,EAAK,WAAW,cAAgB,KAAK,IAAI,EAAI,KAC7CsG,GAAe,KAAK,IAAKhB,CAAK,GAC9B,KAAK,KAAK,WAAW,cAAgB,EACrCtF,EAAK,QAAQ,gBAAgB,EACtB,KAEX,KAAK,eAAe,SAASsF,CAAK,EAC9BwuB,IACA,KAAK,iBAAmB,IACrB,GACX,CACA,kBAAkB3a,EAAQ9D,EAAM,CAC5B,KAAK,eAAe,IAAI8D,EAAO,KAAMA,EAAO,OAAQ9D,EAAK,KAAMA,EAAK,MAAM,EAC1E,KAAK,iBAAmB,EAC5B,CACA,qBAAsB,CAClB,KAAK,eAAe,IAAI,KAAM,EAAG,KAAM,CAAC,CAC5C,CACA,iBAAkB,CACd,KAAK,YAAc,GACnB,IAAI9V,EAAI,EAAGI,EAAU,KACrB,QAASN,EAAM,KAAK,IAAKA,GACrB,GAAIA,EAAI,UAAY,EACZ,CAACM,GAAWJ,EAAI,KAAK,cAAc,QAAU,KAAK,cAAcA,CAAC,GAAKF,EACtEE,IACMI,IACNA,EAAU,KAAK,cAAc,MAAM,EAAGJ,CAAC,GACvCI,GACAA,EAAQ,KAAKN,CAAG,EACpBA,EAAMA,EAAI,cAAgBA,EAAI,mBAEzBA,EAAI,UAAY,GACrBA,EAAMA,EAAI,SAGV,OAKR,GAFIE,EAAI,KAAK,cAAc,QAAU,CAACI,IAClCA,EAAU,KAAK,cAAc,MAAM,EAAGJ,CAAC,GACvCI,EAAS,CACT,QAASN,KAAO,KAAK,cACjBA,EAAI,oBAAoB,SAAU,KAAK,QAAQ,EACnD,QAASA,KAAO,KAAK,cAAgBM,EACjCN,EAAI,iBAAiB,SAAU,KAAK,QAAQ,CACpD,CACJ,CACA,OAAOiT,EAAG,CACN,GAAI,CAAC,KAAK,OACN,OAAOA,EAAE,EACb,GAAI,CACA,YAAK,KAAK,EACHA,EAAE,CACb,QACA,CACI,KAAK,MAAM,EACX,KAAK,MAAM,CACf,CACJ,CACA,OAAQ,CACA,KAAK,SAET,KAAK,SAAS,QAAQ,KAAK,IAAK8gB,EAAc,EAC1CC,IACA,KAAK,IAAI,iBAAiB,2BAA4B,KAAK,UAAU,EACzE,KAAK,OAAS,GAClB,CACA,MAAO,CACE,KAAK,SAEV,KAAK,OAAS,GACd,KAAK,SAAS,WAAW,EACrBA,IACA,KAAK,IAAI,oBAAoB,2BAA4B,KAAK,UAAU,EAChF,CAEA,OAAQ,CACJ,KAAK,eAAe,EACpB,KAAK,MAAM,OAAS,EACpB,KAAK,iBAAmB,EAC5B,CASA,gBAAgBl0B,EAAK40B,EAAS,CAC1B,IAAItoB,EACJ,GAAI,CAAC,KAAK,kBAAmB,CACzB,IAAIuoB,EAAQr1B,EAAA,IAAM,CACd,IAAIQ,EAAM,KAAK,kBACXA,IACA,KAAK,uBAAuB,EAC5B,KAAK,KAAK,WAAW,YAAcA,EAAI,QACvC,KAAK,KAAK,WAAW,YAAc,KAAK,IAAI,EAExC,CADU,KAAK,MAAM,GACTA,EAAI,OAChB4G,GAAY,KAAK,IAAK5G,EAAI,IAAKA,EAAI,OAAO,EAEtD,EAVY,SAWZ,KAAK,mBAAqB,KAAK,KAAK,IAAI,sBAAsB60B,CAAK,CACvE,EAGI,CAAC,KAAK,mBAAqB70B,GAAO,WAClC,KAAK,kBAAoB,CACrB,IAAAA,EAAK,QAAA40B,EAKL,MAAO,KAAK,WAAa,KAAK,IAAI,EAAI,IAAM,CAAC,EAAG,GAAAtoB,EAAK,KAAK,qBAAuB,MAAQA,IAAO,SAAkBA,EAAG,MACzH,EACR,CACA,wBAAyB,CACrB,KAAK,IAAI,qBAAqB,KAAK,kBAAkB,EACrD,KAAK,kBAAoB,KACzB,KAAK,mBAAqB,EAC9B,CACA,WAAY,CACJ,KAAK,aAAe,IACpB,KAAK,aAAe,KAAK,KAAK,IAAI,sBAAsB,IAAM,CAAE,KAAK,aAAe,GAAI,KAAK,MAAM,CAAG,CAAC,EAC/G,CACA,YAAa,CACL,KAAK,cAAgB,IACrB,KAAK,KAAK,IAAI,qBAAqB,KAAK,YAAY,EACpD,KAAK,aAAe,IAExB,KAAK,MAAM,CACf,CACA,gBAAiB,CACb,QAAS+nB,KAAO,KAAK,SAAS,YAAY,EACtC,KAAK,MAAM,KAAKA,CAAG,EACvB,OAAO,KAAK,KAChB,CACA,gBAAiB,CACb,IAAIS,EAAU,KAAK,eAAe,EAC9BA,EAAQ,SACR,KAAK,MAAQ,CAAC,GAClB,IAAIh0B,EAAO,GAAIsB,EAAK,GAAIkgB,EAAW,GACnC,QAAS0D,KAAU8O,EAAS,CACxB,IAAI3uB,EAAQ,KAAK,aAAa6f,CAAM,EAC/B7f,IAEDA,EAAM,WACNmc,EAAW,IACXxhB,GAAQ,GACP,CAAE,KAAAA,EAAM,GAAAsB,CAAG,EAAI+D,GAGhBrF,EAAO,KAAK,IAAIqF,EAAM,KAAMrF,CAAI,EAChCsB,EAAK,KAAK,IAAI+D,EAAM,GAAI/D,CAAE,GAElC,CACA,MAAO,CAAE,KAAAtB,EAAM,GAAAsB,EAAI,SAAAkgB,CAAS,CAChC,CACA,YAAa,CACT,GAAI,CAAE,KAAAxhB,EAAM,GAAAsB,EAAI,SAAAkgB,CAAS,EAAI,KAAK,eAAe,EAC7CmB,EAAS,KAAK,kBAAoBngB,GAAa,KAAK,IAAK,KAAK,cAAc,EAChF,GAAIxC,EAAO,GAAK,CAAC2iB,EACb,OAAO,KACP3iB,EAAO,KACP,KAAK,WAAa,KAAK,IAAI,GAC/B,KAAK,KAAK,WAAW,cAAgB,EACrC,KAAK,iBAAmB,GACxB,IAAI0iB,EAAS,IAAInB,GAAU,KAAK,KAAMvhB,EAAMsB,EAAIkgB,CAAQ,EACxD,YAAK,KAAK,QAAQ,WAAa,CAAE,OAAQkB,EAAO,OAASA,EAAO,OAAO,KAAO,IAAK,EAC5EA,CACX,CAEA,MAAMuR,EAAgB,GAAM,CAIxB,GAAI,KAAK,cAAgB,GAAK,KAAK,kBAC/B,MAAO,GACPA,GACA,KAAK,mBAAmB,EAC5B,IAAIxR,EAAY,KAAK,WAAW,EAChC,GAAI,CAACA,EACD,YAAK,KAAK,eAAe,EAClB,GAEX,IAAIgB,EAAa,KAAK,KAAK,MACvByQ,EAAU1R,GAAe,KAAK,KAAMC,CAAS,EAEjD,OAAI,KAAK,KAAK,OAASgB,IAClBhB,EAAU,YAAcA,EAAU,QAAU,CAACS,GAAW,KAAK,KAAK,MAAM,UAAWT,EAAU,OAAO,IAAI,IACzG,KAAK,KAAK,OAAO,CAAC,CAAC,EAChByR,CACX,CACA,aAAaC,EAAK,CACd,IAAIriB,EAAO,KAAK,KAAK,QAAQ,KAAK,QAAQqiB,EAAI,MAAM,EACpD,GAAI,CAACriB,GAAQA,EAAK,SAAS,EACvB,OAAO,KAEX,GADAA,EAAK,UAAUqiB,EAAI,MAAQ,YAAY,EACnCA,EAAI,MAAQ,YAAa,CACzB,IAAIC,EAAcC,GAAUviB,EAAMqiB,EAAI,iBAAmBA,EAAI,OAAO,gBAAiB,EAAE,EACnFG,EAAaD,GAAUviB,EAAMqiB,EAAI,aAAeA,EAAI,OAAO,YAAa,CAAC,EAC7E,MAAO,CAAE,KAAMC,EAActiB,EAAK,SAASsiB,CAAW,EAAItiB,EAAK,WAC3D,GAAIwiB,EAAaxiB,EAAK,UAAUwiB,CAAU,EAAIxiB,EAAK,SAAU,SAAU,EAAM,CACrF,KACK,QAAIqiB,EAAI,MAAQ,gBACV,CAAE,KAAMriB,EAAK,WAAY,GAAIA,EAAK,SAAU,SAAUqiB,EAAI,OAAO,WAAaA,EAAI,QAAS,EAG3F,IAEf,CACA,UAAUvwB,EAAK,CACPA,GAAO,KAAK,MACZ,KAAK,sBAAsB,KAAK,GAAG,EACnC,KAAK,IAAMA,EACX,KAAK,mBAAmB,KAAK,GAAG,EAExC,CACA,mBAAmBA,EAAK,CACpBA,EAAI,iBAAiB,SAAU,KAAK,QAAQ,EACxC,KAAK,WACD,KAAK,WAAW,iBAChB,KAAK,WAAW,iBAAiB,SAAU,KAAK,OAAO,EAEvD,KAAK,WAAW,YAAY,KAAK,OAAO,EAG5CA,EAAI,iBAAiB,cAAe,KAAK,OAAO,EACpDA,EAAI,iBAAiB,SAAU,KAAK,QAAQ,EAC5CA,EAAI,SAAS,iBAAiB,kBAAmB,KAAK,iBAAiB,CAC3E,CACA,sBAAsBA,EAAK,CACvBA,EAAI,oBAAoB,SAAU,KAAK,QAAQ,EAC/CA,EAAI,oBAAoB,SAAU,KAAK,QAAQ,EAC3C,KAAK,WACD,KAAK,WAAW,oBAChB,KAAK,WAAW,oBAAoB,SAAU,KAAK,OAAO,EAE1D,KAAK,WAAW,eAAe,KAAK,OAAO,EAG/CA,EAAI,oBAAoB,cAAe,KAAK,OAAO,EACvDA,EAAI,SAAS,oBAAoB,kBAAmB,KAAK,iBAAiB,CAC9E,CACA,OAAOuL,EAAQ,CACP,KAAK,cACL,KAAK,YAAY,OAAOA,CAAM,EAC1BA,EAAO,WAAW,MAAMtB,EAAQ,GAAKsB,EAAO,MAAM,MAAMtB,EAAQ,IAChEsB,EAAO,KAAK,WAAW,YAAcA,EAAO,MAAM,MAAMtB,EAAQ,EAAI,KAAK,YAAY,YAAc,MAE/G,CACA,SAAU,CACN,IAAIrC,EAAI4d,EAAImL,EACZ,KAAK,KAAK,GACT/oB,EAAK,KAAK,gBAAkB,MAAQA,IAAO,QAAkBA,EAAG,WAAW,GAC3E4d,EAAK,KAAK,mBAAqB,MAAQA,IAAO,QAAkBA,EAAG,WAAW,GAC9EmL,EAAK,KAAK,gBAAkB,MAAQA,IAAO,QAAkBA,EAAG,WAAW,EAC5E,QAASn1B,KAAO,KAAK,cACjBA,EAAI,oBAAoB,SAAU,KAAK,QAAQ,EACnD,KAAK,sBAAsB,KAAK,GAAG,EACnC,aAAa,KAAK,WAAW,EAC7B,aAAa,KAAK,aAAa,EAC/B,KAAK,IAAI,qBAAqB,KAAK,YAAY,EAC/C,KAAK,IAAI,qBAAqB,KAAK,kBAAkB,EACjD,KAAK,cACL,KAAK,KAAK,WAAW,YAAc,KACnC,KAAK,YAAY,QAAQ,EAEjC,CACJ,EACA,SAASi1B,GAAUviB,EAAM1S,EAAKgE,EAAK,CAC/B,KAAOhE,GAAK,CACR,IAAIo1B,EAAU5iB,GAAK,IAAIxS,CAAG,EAC1B,GAAIo1B,GAAWA,EAAQ,QAAU1iB,EAC7B,OAAO0iB,EACX,IAAIlxB,EAASlE,EAAI,WACjBA,EAAMkE,GAAUwO,EAAK,IAAMxO,EAASF,EAAM,EAAIhE,EAAI,YAAcA,EAAI,eACxE,CACA,OAAO,IACX,CATSV,EAAA21B,GAAA,aAUT,SAASI,GAA6B10B,EAAMsF,EAAO,CAC/C,IAAIC,EAAaD,EAAM,eAAgBG,EAAeH,EAAM,YACxDE,EAAYF,EAAM,aAAcI,EAAcJ,EAAM,UACpDqvB,EAAY30B,EAAK,QAAQ,SAASA,EAAK,MAAM,UAAU,KAAK,OAAQ,CAAC,EAIzE,OAAI6C,GAAqB8xB,EAAU,KAAMA,EAAU,OAAQnvB,EAAWE,CAAW,IAC7E,CAACH,EAAYE,EAAcD,EAAWE,CAAW,EAAI,CAACF,EAAWE,EAAaH,EAAYE,CAAY,GACnG,CAAE,WAAAF,EAAY,aAAAE,EAAc,UAAAD,EAAW,YAAAE,CAAY,CAC9D,CAVS/G,EAAA+1B,GAAA,gCAYT,SAASb,GAAyB7zB,EAAM0C,EAAW,CAC/C,GAAIA,EAAU,kBAAmB,CAC7B,IAAI4C,EAAQ5C,EAAU,kBAAkB1C,EAAK,IAAI,EAAE,CAAC,EACpD,GAAIsF,EACA,OAAOovB,GAA6B10B,EAAMsF,CAAK,CACvD,CACA,IAAI6N,EAAQ,KAMZ,SAASoV,EAAKpoB,EAAO,CACjBA,EAAM,eAAe,EACrBA,EAAM,yBAAyB,EAC/BgT,EAAQhT,EAAM,gBAAgB,EAAE,CAAC,CACrC,CAJS,OAAAxB,EAAA4pB,EAAA,QAKTvoB,EAAK,WAAW,iBAAiB,cAAeuoB,EAAM,EAAI,EAC1DvoB,EAAK,IAAI,cAAc,YAAY,QAAQ,EAC3CA,EAAK,WAAW,oBAAoB,cAAeuoB,EAAM,EAAI,EACtDpV,EAAQuhB,GAA6B10B,EAAMmT,CAAK,EAAI,IAC/D,CArBSxU,EAAAk1B,GAAA,4BAsBT,IAAMJ,GAAN,KAAyB,CAl2OzB,MAk2OyB,CAAA90B,EAAA,2BACrB,YAAYqB,EAAM,CAId,KAAK,KAAO,EACZ,KAAK,GAAK,EAMV,KAAK,qBAAuB,KAC5B,KAAK,SAAW,OAAO,OAAO,IAAI,EAGlC,KAAK,UAAY,KACjB,KAAK,WAAWA,EAAK,KAAK,EAC1B,IAAI0J,EAAU,KAAK,YAAc,IAAI,OAAO,YAAY,CACpD,KAAM1J,EAAK,MAAM,IAAI,YAAY,KAAK,KAAM,KAAK,EAAE,EACnD,eAAgB,KAAK,aAAa,KAAK,IAAI,KAAK,KAAM,KAAK,IAAI,KAAK,GAAIA,EAAK,MAAM,UAAU,KAAK,MAAM,CAAC,CAAC,EAC1G,aAAc,KAAK,aAAaA,EAAK,MAAM,UAAU,KAAK,IAAI,CAClE,CAAC,EACD,KAAK,SAAS,WAAaqP,GAAK,CAC5B,IAAI6J,EAAOlZ,EAAK,MAAM,UAAU,KAAM,CAAE,OAAAmZ,EAAQ,KAAA9D,CAAK,EAAI6D,EACrDjZ,EAAO,KAAK,YAAYoP,EAAE,gBAAgB,EAAG9N,EAAK,KAAK,YAAY8N,EAAE,cAAc,EACnFrP,EAAK,WAAW,WAAa,GAAK,CAAC,KAAK,YACxC,KAAK,UAAY,CAAE,YAAaqP,EAAE,iBAAkB,WAAYpP,EAAM,QAAS,EAAM,GACzF,IAAI20B,EAAUrzB,EAAKtB,EAAOoP,EAAE,KAAK,OAG7BpP,GAAQ,KAAK,MAAQkZ,EAAS,KAAK,KACnClZ,EAAOkZ,EACF5X,GAAM,KAAK,IAAM4X,EAAS,KAAK,KACpC5X,EAAK4X,GACT,IAAIlI,EAAOiS,GAASljB,EAAK,MAAM,SAASC,EAAMsB,CAAE,EAAG8N,EAAE,MAAOulB,EAAU1b,EAAK,KAAOA,EAAK,IAAMjZ,EAAM20B,EAAU,MAAQ,IAAI,EAEzH,GAAI,CAAC3jB,EAAM,CACP,IAAI2R,EAAS3W,EAAgB,OAAO,KAAK,YAAYoD,EAAE,cAAc,EAAG,KAAK,YAAYA,EAAE,YAAY,CAAC,EACnG8T,GAAWP,EAAQ1J,CAAI,GACxBlZ,EAAK,SAAS,CAAE,UAAW4iB,EAAQ,UAAW,QAAS,CAAC,EAC5D,MACJ,CACA,IAAID,EAAS,CAAE,KAAM1R,EAAK,KAAOhR,EAAM,GAAIgR,EAAK,IAAMhR,EAClD,OAAQkU,EAAK,GAAG9E,EAAE,KAAK,MAAM4B,EAAK,KAAMA,EAAK,GAAG,EAAE,MAAM;AAAA,CAAI,CAAC,CAAE,EAKnE,IAJK3S,EAAQ,KAAOA,EAAQ,UAAYqkB,EAAO,MAAQtN,EAAO,GAC1D,SAAS,KAAKhG,EAAE,IAAI,GAAKrP,EAAK,WAAW,aAAa,aAAa,GAAK,QACxE2iB,EAAS,CAAE,KAAA1iB,EAAM,GAAAsB,EAAI,OAAQ4S,EAAK,GAAG,CAAC9E,EAAE,KAAK,QAAQ,IAAK,GAAG,CAAC,CAAC,CAAE,GACrE,KAAK,qBAAuBsT,EACxB,CAAC3iB,EAAK,MAAM,SAAU,CACtB,IAAI60B,EAAS,KAAK,GAAK,KAAK,MAAQlS,EAAO,GAAKA,EAAO,KAAOA,EAAO,OAAO,QAC5ES,GAAoBpjB,EAAM2iB,EAAQ1W,EAAgB,OAAO,KAAK,YAAYoD,EAAE,eAAgBwlB,CAAM,EAAG,KAAK,YAAYxlB,EAAE,aAAcwlB,CAAM,CAAC,CAAC,CAClJ,CAGI,KAAK,uBACL,KAAK,cAAc70B,EAAK,KAAK,EAC7B,KAAK,aAAaA,EAAK,KAAK,GAG5B2iB,EAAO,KAAOA,EAAO,IAAM,CAACA,EAAO,OAAO,QAAU3iB,EAAK,WAAW,WAAa,GACjF,CAAC,gCAAgC,KAAK0J,EAAQ,KAAK,MAAM,KAAK,IAAI,EAAG2F,EAAE,iBAAmB,CAAC,EAAG,KAAK,IAAI3F,EAAQ,KAAK,OAAQ2F,EAAE,iBAAmB,CAAC,CAAC,CAAC,GACpJ,KAAK,SAAS,eAAeA,CAAC,CACtC,EACA,KAAK,SAAS,sBAAwBA,GAAK,CACvC,IAAIiE,EAAQ,CAAC,EAAG5T,EAAO,KACvB,QAASH,EAAI,KAAK,YAAY8P,EAAE,UAAU,EAAGrO,EAAM,KAAK,YAAYqO,EAAE,QAAQ,EAAG9P,EAAIyB,EAAKzB,IAAK,CAC3F,IAAIkE,EAAOzD,EAAK,cAAcT,CAAC,EAC/BG,EAAQ+D,GAAQ,IAAI,QAAQA,EAAK,KAAMA,EAAK,IAAKA,EAAK,MAAQA,EAAK,KAAMA,EAAK,OAASA,EAAK,GAAG,GACxF/D,GAAQ,IAAI,QACnB4T,EAAM,KAAK5T,CAAI,CACnB,CACAgK,EAAQ,sBAAsB2F,EAAE,WAAYiE,CAAK,CACrD,EACA,KAAK,SAAS,iBAAmBjE,GAAK,CAClC,IAAIR,EAAO,CAAC,EACZ,QAASimB,KAAUzlB,EAAE,eAAe,EAAG,CACnC,IAAI0lB,EAAYD,EAAO,eAAgBE,EAAYF,EAAO,mBAC1D,GAAI,CAAC,QAAQ,KAAKC,CAAS,GAAK,CAAC,QAAQ,KAAKC,CAAS,EAAG,CACtD,IAAI/0B,EAAO,KAAK,YAAY60B,EAAO,UAAU,EAAGvzB,EAAK,KAAK,YAAYuzB,EAAO,QAAQ,EACrF,GAAI70B,EAAOsB,EAAI,CAEX,IAAIkkB,EAAQ,8BAA8B,SAAS,KAAKsP,CAAS,EAAIA,EAAY,IAAMA,GAAa,SAAW,UAAYA,GAAa,WAAa,QAAU,EAAE,GAAG,QAAQ,KAAKC,CAAS,EAAI,EAAI,CAAC,KACnMnmB,EAAK,KAAKtO,EAAW,KAAK,CAAE,WAAY,CAAE,MAAAklB,CAAM,CAAE,CAAC,EAAE,MAAMxlB,EAAMsB,CAAE,CAAC,CACxE,CACJ,CACJ,CACAvB,EAAK,SAAS,CAAE,QAAS0N,GAAyB,GAAGnN,EAAW,IAAIsO,CAAI,CAAC,CAAE,CAAC,CAChF,EACA,KAAK,SAAS,iBAAmB,IAAM,CAC/B7O,EAAK,WAAW,UAAY,IAC5BA,EAAK,WAAW,UAAY,EAC5BA,EAAK,WAAW,uBAAyB,GAEjD,EACA,KAAK,SAAS,eAAiB,IAAM,CAGjC,GAFAA,EAAK,WAAW,UAAY,GAC5BA,EAAK,WAAW,uBAAyB,KACrC,KAAK,UAAW,CAChB,GAAI,CAAE,QAAAi1B,CAAQ,EAAI,KAAK,UACvB,KAAK,UAAY,KACbA,GACA,KAAK,MAAMj1B,EAAK,KAAK,CAC7B,CACJ,EACA,QAASG,KAAS,KAAK,SACnBuJ,EAAQ,iBAAiBvJ,EAAO,KAAK,SAASA,CAAK,CAAC,EACxD,KAAK,WAAa,CAAE,KAAMxB,EAAAqB,GAAQ,CAC1B,KAAK,YAAY,oBAAoBA,EAAK,WAAW,sBAAsB,CAAC,EAC5E,IAAI0Z,EAAMrX,GAAarC,EAAK,IAAI,EAC5B0Z,GAAOA,EAAI,YACX,KAAK,YAAY,sBAAsBA,EAAI,WAAW,CAAC,EAAE,sBAAsB,CAAC,CACxF,EALsB,OAKpB,CACV,CACA,WAAWtK,EAAQ,CACf,IAAItM,EAAM,EAAGoyB,EAAQ,GAAOpQ,EAAU,KAAK,qBAC3C,OAAA1V,EAAO,QAAQ,YAAY,CAACuB,EAAOC,EAAKukB,EAAQC,EAAMzO,IAAW,CAC7D,GAAIuO,EACA,OACJ,IAAInR,EAAO4C,EAAO,QAAU/V,EAAMD,GAClC,GAAImU,GAAWlU,GAAOkU,EAAQ,GAC1B,GAAIA,EAAQ,MAAQnU,GAASmU,EAAQ,IAAMlU,GAAOkU,EAAQ,OAAO,GAAG6B,CAAM,EAAG,CACzE7B,EAAU,KAAK,qBAAuB,KACtChiB,GAAOihB,EACP,KAAK,IAAMA,EACX,MACJ,MAEIe,EAAU,KACV,KAAK,cAAc1V,EAAO,KAAK,EAKvC,GAFAuB,GAAS7N,EACT8N,GAAO9N,EACH8N,GAAO,KAAK,KACZ,KAAK,MAAQmT,EACb,KAAK,IAAMA,UAENpT,EAAQ,KAAK,GAAI,CACtB,GAAIA,EAAQ,KAAK,MAAQC,EAAM,KAAK,IAAO,KAAK,GAAK,KAAK,KAAQ+V,EAAO,OAAS,IAA0B,CACxGuO,EAAQ,GACR,MACJ,CACA,KAAK,YAAY,WAAW,KAAK,aAAavkB,CAAK,EAAG,KAAK,aAAaC,CAAG,EAAG+V,EAAO,SAAS,CAAC,EAC/F,KAAK,IAAM5C,CACf,CACAjhB,GAAOihB,CACX,CAAC,EACGe,GAAW,CAACoQ,GACZ,KAAK,cAAc9lB,EAAO,KAAK,EAC5B,CAAC8lB,CACZ,CACA,OAAO9lB,EAAQ,CACX,IAAIimB,EAAW,KAAK,qBAAsB5N,EAAWrY,EAAO,WAAW,UAAU,KAC7E,KAAK,YACJ,KAAK,UAAU,SACX,CAACA,EAAO,QAAQ,aAAaqY,EAAS,KAAMA,EAAS,EAAE,GACpDrY,EAAO,aAAa,KAAKsC,GAAM,CAACA,EAAG,YAAY,YAAY,GAAKA,EAAG,QAAQ,aAAa,KAAK,KAAM,KAAK,EAAE,CAAC,IACnH,KAAK,UAAU,QAAU,GACzB,KAAK,UAAU,WAAatC,EAAO,QAAQ,OAAO,KAAK,UAAU,UAAU,GAEtE,CAAC,KAAK,WAAWA,CAAM,GAAK,CAAC,KAAK,aAAaA,EAAO,KAAK,GAChE,KAAK,qBAAuB,KAC5B,KAAK,MAAMA,EAAO,KAAK,IAElBA,EAAO,YAAcA,EAAO,cAAgBimB,IACjD,KAAK,aAAajmB,EAAO,KAAK,GAE9BA,EAAO,iBAAmBA,EAAO,YAAcA,EAAO,eACtDA,EAAO,KAAK,eAAe,KAAK,UAAU,CAClD,CACA,WAAW9B,EAAO,CACd,GAAI,CAAE,KAAA+H,CAAK,EAAI/H,EAAM,UAAU,KAC/B,KAAK,KAAO,KAAK,IAAI,EAAG+H,EAAO,GAAuB,EACtD,KAAK,GAAK,KAAK,IAAI/H,EAAM,IAAI,OAAQ+H,EAAO,GAAuB,CACvE,CACA,MAAM/H,EAAO,CACT,KAAK,WAAWA,CAAK,EACrB,KAAK,YAAY,WAAW,EAAG,KAAK,YAAY,KAAK,OAAQA,EAAM,IAAI,YAAY,KAAK,KAAM,KAAK,EAAE,CAAC,EACtG,KAAK,aAAaA,CAAK,CAC3B,CACA,cAAcA,EAAO,CACjB,IAAIwX,EAAU,KAAK,qBACnB,KAAK,qBAAuB,KAC5B,KAAK,YAAY,WAAW,KAAK,aAAaA,EAAQ,IAAI,EAAG,KAAK,aAAaA,EAAQ,KAAOA,EAAQ,OAAO,MAAM,EAAGxX,EAAM,IAAI,YAAYwX,EAAQ,KAAMA,EAAQ,EAAE,CAAC,CACzK,CACA,aAAaxX,EAAO,CAChB,GAAI,CAAE,KAAA4L,CAAK,EAAI5L,EAAM,UACjBvM,EAAQ,KAAK,aAAa,KAAK,IAAI,KAAK,KAAM,KAAK,IAAI,KAAK,GAAImY,EAAK,MAAM,CAAC,CAAC,EAC7ElY,EAAM,KAAK,aAAakY,EAAK,IAAI,GACjC,KAAK,YAAY,gBAAkBnY,GAAS,KAAK,YAAY,cAAgBC,IAC7E,KAAK,YAAY,gBAAgBD,EAAOC,CAAG,CACnD,CACA,aAAasM,EAAO,CAChB,GAAI,CAAE,KAAA+H,CAAK,EAAI/H,EAAM,UAAU,KAC/B,MAAO,EAAE,KAAK,KAAO,GAAK+H,EAAO,KAAK,KAAO,KACzC,KAAK,GAAK/H,EAAM,IAAI,QAAU,KAAK,GAAK+H,EAAO,KAC/C,KAAK,GAAK,KAAK,KAAO,IAA0B,EACxD,CACA,YAAYigB,EAAYC,EAAU,KAAK,GAAK,KAAK,KAAM,CACnDD,EAAa,KAAK,IAAIA,EAAYC,CAAO,EACzC,IAAIC,EAAI,KAAK,UACb,OAAOA,GAAKA,EAAE,QAAUA,EAAE,YAAcF,EAAaE,EAAE,aAAeF,EAAa,KAAK,IAC5F,CACA,aAAaG,EAAW,CACpB,IAAID,EAAI,KAAK,UACb,OAAOA,GAAKA,EAAE,QAAUA,EAAE,aAAeC,EAAYD,EAAE,YAAcC,EAAY,KAAK,IAC1F,CACA,SAAU,CACN,QAASt1B,KAAS,KAAK,SACnB,KAAK,YAAY,oBAAoBA,EAAO,KAAK,SAASA,CAAK,CAAC,CACxE,CACJ,EAqBMu1B,EAAN,MAAMC,CAAW,CA3kPjB,MA2kPiB,CAAAh3B,EAAA,mBAIb,IAAI,OAAQ,CAAE,OAAO,KAAK,UAAU,KAAO,CAQ3C,IAAI,UAAW,CAAE,OAAO,KAAK,UAAU,QAAU,CASjD,IAAI,eAAgB,CAAE,OAAO,KAAK,UAAU,aAAe,CAK3D,IAAI,QAAS,CAAE,OAAO,KAAK,UAAU,MAAQ,CAM7C,IAAI,WAAY,CAAE,MAAO,CAAC,CAAC,KAAK,YAAc,KAAK,WAAW,UAAY,CAAG,CAO7E,IAAI,oBAAqB,CAAE,MAAO,CAAC,CAAC,KAAK,YAAc,KAAK,WAAW,WAAa,CAAG,CAIvF,IAAI,MAAO,CAAE,OAAO,KAAK,KAAO,CAIhC,IAAI,KAAM,CAAE,OAAO,KAAK,IAAI,cAAc,aAAe,MAAQ,CAMjE,YAAYi3B,EAAS,CAAC,EAAG,CACrB,IAAInqB,EACJ,KAAK,QAAU,CAAC,EAChB,KAAK,UAAY,IAAI,IACrB,KAAK,YAAc,CAAC,EACpB,KAAK,aAAe,CAAC,EACrB,KAAK,UAAY,CAAC,EAClB,KAAK,UAAY,GAIjB,KAAK,YAAc,EAInB,KAAK,iBAAmB,GAIxB,KAAK,gBAAkB,CAAC,EACxB,KAAK,WAAa,SAAS,cAAc,KAAK,EAC9C,KAAK,UAAY,SAAS,cAAc,KAAK,EAC7C,KAAK,UAAU,SAAW,GAC1B,KAAK,UAAU,UAAY,cAC3B,KAAK,UAAU,YAAY,KAAK,UAAU,EAC1C,KAAK,YAAc,SAAS,cAAc,KAAK,EAC/C,KAAK,YAAY,UAAY,eAC7B,KAAK,YAAY,aAAa,YAAa,QAAQ,EACnD,KAAK,IAAM,SAAS,cAAc,KAAK,EACvC,KAAK,IAAI,YAAY,KAAK,WAAW,EACrC,KAAK,IAAI,YAAY,KAAK,SAAS,EAC/BmqB,EAAO,QACPA,EAAO,OAAO,YAAY,KAAK,GAAG,EACtC,GAAI,CAAE,SAAAC,CAAS,EAAID,EACnB,KAAK,qBAAuBA,EAAO,sBAC9BC,IAAcC,GAAQA,EAAI,QAAQpkB,GAAMmkB,EAASnkB,EAAI,IAAI,CAAC,KACzDokB,GAAQ,KAAK,OAAOA,CAAG,GAC7B,KAAK,SAAW,KAAK,SAAS,KAAK,IAAI,EACvC,KAAK,MAASF,EAAO,MAAQvvB,GAAQuvB,EAAO,MAAM,GAAK,SACvD,KAAK,UAAY,IAAIxH,GAAU,KAAMwH,EAAO,OAASjV,EAAY,OAAOiV,CAAM,CAAC,EAC3EA,EAAO,UAAYA,EAAO,SAAS,GAAGroB,EAAc,IACpD,KAAK,UAAU,aAAeqoB,EAAO,SAAS,MAAM,KAAK,KAAK,UAAU,KAAK,GACjF,KAAK,QAAU,KAAK,MAAM,MAAM5nB,EAAU,EAAE,IAAIrN,GAAQ,IAAIwO,GAAexO,CAAI,CAAC,EAChF,QAASmO,KAAU,KAAK,QACpBA,EAAO,OAAO,IAAI,EACtB,KAAK,SAAW,IAAIwkB,GAAY,IAAI,EACpC,KAAK,WAAa,IAAIjP,GAAW,IAAI,EACrC,KAAK,WAAW,eAAe,KAAK,OAAO,EAC3C,KAAK,QAAU,IAAIzM,GAAQ,IAAI,EAC/B,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAc,EACnB,KAAK,eAAe,EACf,GAAAnM,EAAK,SAAS,SAAW,MAAQA,IAAO,SAAkBA,EAAG,OAC9D,SAAS,MAAM,MAAM,KAAK,IAAM,CAC5B,KAAK,UAAU,mBAAqB,UACpC,KAAK,eAAe,CACxB,CAAC,CACT,CACA,YAAY8a,EAAO,CACf,IAAIuP,EAAMvP,EAAM,QAAU,GAAKA,EAAM,CAAC,YAAawP,GAAcxP,EAC3DA,EAAM,QAAU,GAAK,MAAM,QAAQA,EAAM,CAAC,CAAC,EAAIA,EAAM,CAAC,EAClD,CAAC,KAAK,MAAM,OAAO,GAAGA,CAAK,CAAC,EACtC,KAAK,qBAAqBuP,EAAK,IAAI,CACvC,CASA,OAAOtkB,EAAc,CACjB,GAAI,KAAK,aAAe,EACpB,MAAM,IAAI,MAAM,2EAA2E,EAC/F,IAAIwkB,EAAU,GAAOC,EAAe,GAAO7mB,EACvC9B,EAAQ,KAAK,MACjB,QAASoE,KAAMF,EAAc,CACzB,GAAIE,EAAG,YAAcpE,EACjB,MAAM,IAAI,WAAW,uFAAuF,EAChHA,EAAQoE,EAAG,KACf,CACA,GAAI,KAAK,UAAW,CAChB,KAAK,UAAU,MAAQpE,EACvB,MACJ,CACA,IAAI2b,EAAQ,KAAK,SAAUiN,EAAY,EAAGC,EAAgB,KACtD3kB,EAAa,KAAKE,GAAMA,EAAG,WAAWoX,EAAa,CAAC,GACpD,KAAK,WAAW,gBAAkBG,EAElCiN,EAAY,GAEPjN,GAAS,KAAK,WAAW,kBAC9B,KAAK,WAAW,gBAAkBA,EAGlCkN,EAAgBnN,GAAuB1b,EAAO2b,CAAK,EAC9CkN,IACDD,EAAY,IAIpB,IAAIE,EAAa,KAAK,SAAS,kBAAmB1T,EAAY,KAa9D,GAZI0T,GACA,KAAK,SAAS,uBAAuB,EACrC1T,EAAY,KAAK,SAAS,WAAW,GAGjCA,GAAa,CAAC,KAAK,MAAM,IAAI,GAAGpV,EAAM,GAAG,GAAK,CAAC,KAAK,MAAM,UAAU,GAAGA,EAAM,SAAS,KACtFoV,EAAY,OAGhB,KAAK,SAAS,MAAM,EAGpBpV,EAAM,MAAMqT,EAAY,OAAO,GAAK,KAAK,MAAM,MAAMA,EAAY,OAAO,EACxE,OAAO,KAAK,SAASrT,CAAK,EAC9B8B,EAASkC,GAAW,OAAO,KAAMhE,EAAOkE,CAAY,EACpDpC,EAAO,OAAS8mB,EAChB,IAAIrH,EAAe,KAAK,UAAU,aAClC,GAAI,CACA,KAAK,YAAc,EACnB,QAASnd,KAAMF,EAAc,CAGzB,GAFIqd,IACAA,EAAeA,EAAa,IAAInd,EAAG,OAAO,GAC1CA,EAAG,eAAgB,CACnB,GAAI,CAAE,KAAAwH,CAAK,EAAIxH,EAAG,MAAM,UACpB,CAAE,EAAA/N,EAAG,EAAAS,CAAE,EAAI,KAAK,MAAM,MAAMuxB,EAAW,kBAAkB,EAC7D9G,EAAe,IAAI3hB,GAAagM,EAAK,MAAQA,EAAOjN,EAAgB,OAAOiN,EAAK,KAAMA,EAAK,KAAOA,EAAK,OAAS,GAAK,CAAC,EAAG,UAAW,UAAW9U,EAAGT,CAAC,CACvJ,CACA,QAAS0L,KAAKqC,EAAG,QACTrC,EAAE,GAAG9B,EAAc,IACnBshB,EAAexf,EAAE,MAAM,KAAK,KAAK,KAAK,EAClD,CACA,KAAK,UAAU,OAAOD,EAAQyf,CAAY,EAC1C,KAAK,UAAYwH,GAAY,OAAO,KAAK,UAAWjnB,EAAO,OAAO,EAC7DA,EAAO,QACR,KAAK,cAAcA,CAAM,EACzB,KAAK,WAAW,OAAOA,CAAM,GAEjC4mB,EAAU,KAAK,QAAQ,OAAO5mB,CAAM,EAChC,KAAK,MAAM,MAAMoB,EAAW,GAAK,KAAK,cACtC,KAAK,YAAY,EACrBylB,EAAe,KAAK,YAAY,EAChC,KAAK,kBAAkBzkB,CAAY,EACnC,KAAK,QAAQ,gBAAgBwkB,EAASxkB,EAAa,KAAKE,GAAMA,EAAG,YAAY,gBAAgB,CAAC,CAAC,CACnG,QACA,CACI,KAAK,YAAc,CACvB,CAOA,GANItC,EAAO,WAAW,MAAMqjB,EAAK,GAAKrjB,EAAO,MAAM,MAAMqjB,EAAK,IAC1D,KAAK,UAAU,mBAAqB,KACpCuD,GAAWC,GAAgBpH,GAAgB,KAAK,UAAU,wBAA0B,KAAK,UAAU,qBACnG,KAAK,eAAe,EACpBmH,GACA,KAAK,cAAc,EACnB,CAAC5mB,EAAO,MACR,QAASknB,KAAY,KAAK,MAAM,MAAM7pB,EAAc,EAChD,GAAI,CACA6pB,EAASlnB,CAAM,CACnB,OACOC,EAAG,CACN1B,GAAa,KAAK,MAAO0B,EAAG,iBAAiB,CACjD,EAEJ8mB,GAAiBzT,IACjB,QAAQ,QAAQ,EAAE,KAAK,IAAM,CACrByT,GAAiB,KAAK,OAASA,EAAc,YAC7C,KAAK,SAASA,CAAa,EAC3BzT,GACI,CAACD,GAAe,KAAMC,CAAS,GAAK0T,EAAW,OAC/CrwB,GAAY,KAAK,WAAYqwB,EAAW,IAAKA,EAAW,OAAO,CAE3E,CAAC,CACT,CAQA,SAASG,EAAU,CACf,GAAI,KAAK,aAAe,EACpB,MAAM,IAAI,MAAM,6EAA6E,EACjG,GAAI,KAAK,UAAW,CAChB,KAAK,UAAU,MAAQA,EACvB,MACJ,CACA,KAAK,YAAc,EACnB,IAAIC,EAAW,KAAK,SACpB,GAAI,CACA,QAAS1nB,KAAU,KAAK,QACpBA,EAAO,QAAQ,IAAI,EACvB,KAAK,UAAY,IAAIsf,GAAU,KAAMmI,CAAQ,EAC7C,KAAK,QAAUA,EAAS,MAAMvoB,EAAU,EAAE,IAAIrN,GAAQ,IAAIwO,GAAexO,CAAI,CAAC,EAC9E,KAAK,UAAU,MAAM,EACrB,QAASmO,KAAU,KAAK,QACpBA,EAAO,OAAO,IAAI,EACtB,KAAK,QAAQ,QAAQ,EACrB,KAAK,QAAU,IAAI8I,GAAQ,IAAI,EAC/B,KAAK,WAAW,eAAe,KAAK,OAAO,EAC3C,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,UAAY,CAAC,CACtB,QACA,CACI,KAAK,YAAc,CACvB,CACI4e,GACA,KAAK,MAAM,EACf,KAAK,eAAe,CACxB,CACA,cAAcpnB,EAAQ,CAClB,IAAIqnB,EAAYrnB,EAAO,WAAW,MAAMpB,EAAU,EAAG0oB,EAAQtnB,EAAO,MAAM,MAAMpB,EAAU,EAC1F,GAAIyoB,GAAaC,EAAO,CACpB,IAAIC,EAAa,CAAC,EAClB,QAASh2B,KAAQ+1B,EAAO,CACpB,IAAIvjB,EAAQsjB,EAAU,QAAQ91B,CAAI,EAClC,GAAIwS,EAAQ,EACRwjB,EAAW,KAAK,IAAIxnB,GAAexO,CAAI,CAAC,MAEvC,CACD,IAAImO,EAAS,KAAK,QAAQqE,CAAK,EAC/BrE,EAAO,WAAaM,EACpBunB,EAAW,KAAK7nB,CAAM,CAC1B,CACJ,CACA,QAASA,KAAU,KAAK,QAChBA,EAAO,YAAcM,GACrBN,EAAO,QAAQ,IAAI,EAC3B,KAAK,QAAU6nB,EACf,KAAK,UAAU,MAAM,CACzB,KAEI,SAASjvB,KAAK,KAAK,QACfA,EAAE,WAAa0H,EAEvB,QAAS7P,EAAI,EAAGA,EAAI,KAAK,QAAQ,OAAQA,IACrC,KAAK,QAAQA,CAAC,EAAE,OAAO,IAAI,EAC3Bk3B,GAAaC,GACb,KAAK,WAAW,eAAe,KAAK,OAAO,CACnD,CACA,eAAgB,CACZ,QAAS5nB,KAAU,KAAK,QAAS,CAC7B,IAAIuc,EAAMvc,EAAO,MACjB,GAAIuc,GAAOA,EAAI,cACX,GAAI,CACAA,EAAI,cAAc,IAAI,CAC1B,OACOhc,EAAG,CACN1B,GAAa,KAAK,MAAO0B,EAAG,0BAA0B,CAC1D,CAER,CACJ,CAIA,QAAQ2kB,EAAQ,GAAM,CAClB,GAAI,KAAK,UACL,OAGJ,GAFI,KAAK,iBAAmB,IACxB,KAAK,IAAI,qBAAqB,KAAK,gBAAgB,EACnD,KAAK,SAAS,kBAAmB,CACjC,KAAK,iBAAmB,GACxB,KAAK,eAAe,EACpB,MACJ,CACA,KAAK,iBAAmB,EACpBA,GACA,KAAK,SAAS,WAAW,EAC7B,IAAIhV,EAAU,KACV4X,EAAS,KAAK,UAAU,aAAcpH,EAAe,KAAK,UAAU,gBAAgB,EACpF,CAAE,gBAAAqH,EAAiB,mBAAAC,CAAmB,EAAI,KAAK,UAC/C,KAAK,IAAItH,EAAe,KAAK,UAAU,YAAY,EAAI,IACvDsH,EAAqB,IACzB,KAAK,UAAU,mBAAqB,GACpC,GAAI,CACA,QAASv3B,EAAI,GAAIA,IAAK,CAClB,GAAIu3B,EAAqB,EACrB,GAAItwB,GAAmBowB,GAAU,KAAK,GAAG,EACrCC,EAAkB,GAClBC,EAAqB,KAAK,UAAU,UAAU,WAE7C,CACD,IAAIj2B,EAAQ,KAAK,UAAU,eAAe2uB,CAAY,EACtDqH,EAAkBh2B,EAAM,KACxBi2B,EAAqBj2B,EAAM,GAC/B,CAEJ,KAAK,YAAc,EACnB,IAAIlB,EAAU,KAAK,UAAU,QAAQ,EACrC,GAAI,CAACA,GAAW,CAAC,KAAK,gBAAgB,QAAU,KAAK,UAAU,cAAgB,KAC3E,MACJ,GAAIJ,EAAI,EAAG,CACP,QAAQ,KAAK,KAAK,gBAAgB,OAC5B,2CACA,8BAA8B,EACpC,KACJ,CACA,IAAIw3B,EAAY,CAAC,EAEXp3B,EAAU,IACZ,CAAC,KAAK,gBAAiBo3B,CAAS,EAAI,CAACA,EAAW,KAAK,eAAe,GACxE,IAAIpL,EAAWoL,EAAU,IAAIxmB,GAAK,CAC9B,GAAI,CACA,OAAOA,EAAE,KAAK,IAAI,CACtB,OACOlB,EAAG,CACN,OAAA1B,GAAa,KAAK,MAAO0B,CAAC,EACnB2nB,EACX,CACJ,CAAC,EACG5nB,EAASkC,GAAW,OAAO,KAAM,KAAK,MAAO,CAAC,CAAC,EAAG0kB,EAAU,GAChE5mB,EAAO,OAASzP,EACXqf,EAGDA,EAAQ,OAASrf,EAFjBqf,EAAU5P,EAGd,KAAK,YAAc,EACdA,EAAO,QACR,KAAK,cAAcA,CAAM,EACzB,KAAK,WAAW,OAAOA,CAAM,EAC7B,KAAK,YAAY,EACjB4mB,EAAU,KAAK,QAAQ,OAAO5mB,CAAM,EAChC4mB,GACA,KAAK,cAAc,GAE3B,QAASz2B,EAAI,EAAGA,EAAIw3B,EAAU,OAAQx3B,IAClC,GAAIosB,EAASpsB,CAAC,GAAKy3B,GACf,GAAI,CACA,IAAIzmB,EAAIwmB,EAAUx3B,CAAC,EACfgR,EAAE,OACFA,EAAE,MAAMob,EAASpsB,CAAC,EAAG,IAAI,CACjC,OACO8P,EAAG,CACN1B,GAAa,KAAK,MAAO0B,CAAC,CAC9B,CAIR,GAFI2mB,GACA,KAAK,QAAQ,gBAAgB,EAAI,EACjC,CAAC5mB,EAAO,iBAAmB,KAAK,gBAAgB,QAAU,EAAG,CAC7D,GAAI,KAAK,UAAU,aACf,GAAI,KAAK,UAAU,aAAc,CAC7B,KAAK,QAAQ,eAAe,KAAK,UAAU,YAAY,EACvD,KAAK,UAAU,aAAe,KAC9B0nB,EAAqB,GACrB,QACJ,KACK,CAGD,IAAI7lB,IAFkB4lB,EAAkB,EAAI,KAAK,UAAU,UAAU,OACjE,KAAK,UAAU,YAAYA,CAAe,EAAE,KAClBC,GAAsB,KAAK,OACzD,IAAK7lB,EAAO,GAAKA,EAAO,MACnB2lB,GAAU,KAAK,WAAa,KAAK,UAC9B,KAAK,IAAI,KAAK,WAAW,eAAgB,KAAK,WAAW,aAAa,EAAI,KAAK,IAAI,EAAI,KAAM,CACjGpH,EAAeA,EAAeve,EAC1B2lB,EACAA,EAAO,WAAa3lB,EAEpB,KAAK,IAAI,SAAS,EAAGA,CAAI,EAC7B6lB,EAAqB,GACrB,QACJ,CACJ,CAEJ,KACJ,CACJ,CACJ,QACA,CACI,KAAK,YAAc,EACnB,KAAK,iBAAmB,EAC5B,CACA,GAAI9X,GAAW,CAACA,EAAQ,MACpB,QAASsX,KAAY,KAAK,MAAM,MAAM7pB,EAAc,EAChD6pB,EAAStX,CAAO,CAC5B,CAIA,IAAI,cAAe,CACf,OAAO4T,GAAc,KAChB,KAAK,MAAM,MAAMD,EAAS,EAAII,GAAaD,IAAe,IAC3D,KAAK,MAAM,MAAML,EAAK,CAC9B,CACA,aAAc,CACV,IAAIwE,EAAcC,GAAe,KAAM5nB,GAAkB,CACrD,MAAO,aAAe,KAAK,SAAW,eAAiB,KAAO,KAAK,YACvE,CAAC,EACG6nB,EAAe,CACf,WAAY,QACZ,YAAa,MACb,eAAgB,MAChB,mBAAoB,QACpB,UAAW,KACX,gBAAkB,KAAK,MAAM,MAAMrpB,EAAQ,EAAc,OAAV,QAC/C,MAAO,aACP,MAAO,GAAGxP,EAAQ,OAAO,KAAK,KAAK,MAAM,OAAO,GAChD,KAAM,UACN,iBAAkB,MACtB,EACI,KAAK,MAAM,WACX64B,EAAa,eAAe,EAAI,QACpCD,GAAe,KAAM3nB,GAAmB4nB,CAAY,EACpD,IAAIx3B,EAAU,KAAK,SAAS,OAAO,IAAM,CACrC,IAAIy3B,EAAiB33B,GAAY,KAAK,WAAY,KAAK,aAAc03B,CAAY,EAC7EE,EAAgB53B,GAAY,KAAK,IAAK,KAAK,YAAaw3B,CAAW,EACvE,OAAOG,GAAkBC,CAC7B,CAAC,EACD,YAAK,YAAcJ,EACnB,KAAK,aAAeE,EACbx3B,CACX,CACA,kBAAkBm2B,EAAK,CACnB,IAAIvJ,EAAQ,GACZ,QAAS7a,KAAMokB,EACX,QAASnd,KAAUjH,EAAG,QAClB,GAAIiH,EAAO,GAAGgd,EAAW,QAAQ,EAAG,CAC5BpJ,IACA,KAAK,YAAY,YAAc,IACnCA,EAAQ,GACR,IAAI+K,EAAM,KAAK,YAAY,YAAY,SAAS,cAAc,KAAK,CAAC,EACpEA,EAAI,YAAc3e,EAAO,KAC7B,CACZ,CACA,aAAc,CACV,KAAK,aAAe,KAAK,MAAM,MAAMnI,EAAW,EAChD,IAAI+mB,EAAQ,KAAK,MAAM,MAAM5B,EAAW,QAAQ,EAChD9C,GAAY,MAAM,KAAK,KAAM,KAAK,aAAa,OAAOM,EAAW,EAAE,QAAQ,EAAGoE,EAAQ,CAAE,MAAAA,CAAM,EAAI,MAAS,CAC/G,CACA,cAAe,CACX,GAAI,KAAK,aAAe,EACpB,MAAM,IAAI,MAAM,0DAA0D,EAC1E,KAAK,aAAe,GAA4B,KAAK,iBAAmB,IACxE,KAAK,QAAQ,EAAK,CAC1B,CASA,eAAeC,EAAS,CAGpB,GAFI,KAAK,iBAAmB,IACxB,KAAK,iBAAmB,KAAK,IAAI,sBAAsB,IAAM,KAAK,QAAQ,CAAC,GAC3EA,EAAS,CACT,GAAI,KAAK,gBAAgB,QAAQA,CAAO,EAAI,GACxC,OACJ,GAAIA,EAAQ,KAAO,MACf,QAASj4B,EAAI,EAAGA,EAAI,KAAK,gBAAgB,OAAQA,IAC7C,GAAI,KAAK,gBAAgBA,CAAC,EAAE,MAAQi4B,EAAQ,IAAK,CAC7C,KAAK,gBAAgBj4B,CAAC,EAAIi4B,EAC1B,MACJ,EAER,KAAK,gBAAgB,KAAKA,CAAO,CACrC,CACJ,CAOA,OAAO1oB,EAAQ,CACX,IAAI2oB,EAAQ,KAAK,UAAU,IAAI3oB,CAAM,EACrC,OAAI2oB,IAAU,QAAaA,GAASA,EAAM,QAAU3oB,IAChD,KAAK,UAAU,IAAIA,EAAQ2oB,EAAQ,KAAK,QAAQ,KAAK/vB,GAAKA,EAAE,QAAUoH,CAAM,GAAK,IAAI,EAClF2oB,GAASA,EAAM,OAAO,IAAI,EAAE,KACvC,CAMA,IAAI,aAAc,CACd,OAAO,KAAK,WAAW,sBAAsB,EAAE,IAAM,KAAK,UAAU,UACxE,CAIA,IAAI,iBAAkB,CAClB,MAAO,CAAE,IAAK,KAAK,UAAU,WAAY,OAAQ,KAAK,UAAU,aAAc,CAClF,CAMA,IAAI,QAAS,CAAE,OAAO,KAAK,UAAU,MAAQ,CAI7C,IAAI,QAAS,CAAE,OAAO,KAAK,UAAU,MAAQ,CAM7C,gBAAgBjd,EAAQ,CACpB,YAAK,aAAa,EACX,KAAK,UAAU,gBAAgBA,CAAM,CAChD,CAOA,kBAAkBA,EAAQ,CACtB,YAAK,aAAa,EACX,KAAK,UAAU,kBAAkBA,CAAM,CAClD,CAOA,IAAI,oBAAqB,CACrB,OAAO,KAAK,UAAU,aAC1B,CASA,YAAYpa,EAAK,CACb,OAAO,KAAK,UAAU,YAAYA,CAAG,CACzC,CAIA,IAAI,eAAgB,CAChB,OAAO,KAAK,UAAU,aAC1B,CAiBA,WAAWW,EAAOmH,EAASuV,EAAI,CAC3B,OAAOwB,GAAU,KAAMle,EAAOyc,GAAW,KAAMzc,EAAOmH,EAASuV,CAAE,CAAC,CACtE,CAMA,YAAY1c,EAAOmH,EAAS,CACxB,OAAO+W,GAAU,KAAMle,EAAOyc,GAAW,KAAMzc,EAAOmH,EAASwvB,GAAW7Z,GAAQ,KAAM9c,EAAM,KAAM22B,CAAO,CAAC,CAAC,CACjH,CAOA,eAAe9uB,EAAM5H,EAAK,CACtB,IAAImH,EAAQ,KAAK,UAAUS,CAAI,EAAGvF,EAAM,KAAK,gBAAgBuF,EAAK,IAAI,EAClEN,EAAOH,EAAMnH,EAAMmH,EAAM,OAAS,EAAI,CAAC,EAC3C,OAAO8D,EAAgB,OAAO3D,EAAK,KAAKtH,EAAKqC,CAAG,EAAIuF,EAAK,KAAMN,EAAK,QAAQ,CAACtH,EAAKqC,CAAG,EAAI,EAAI,EAAE,CACnG,CAQA,mBAAmBtC,EAAOmH,EAASmV,EAAc,GAAM,CACnD,OAAOD,GAAmB,KAAMrc,EAAOmH,EAASmV,CAAW,CAC/D,CAcA,eAAetc,EAAOmH,EAAS+V,EAAU,CACrC,OAAOgB,GAAU,KAAMle,EAAOid,GAAe,KAAMjd,EAAOmH,EAAS+V,CAAQ,CAAC,CAChF,CAWA,SAAS7d,EAAKC,EAAO,EAAG,CACpB,OAAO,KAAK,QAAQ,SAASD,EAAKC,CAAI,CAC1C,CAMA,SAASmC,EAAM+D,EAAS,EAAG,CACvB,OAAO,KAAK,QAAQ,WAAW/D,EAAM+D,CAAM,CAC/C,CACA,YAAY+W,EAAQvW,EAAU,GAAM,CAChC,KAAK,aAAa,EAClB,IAAIoM,EAAQsL,GAAY,KAAMnB,EAAQvW,CAAO,EAC7C,OAAOoM,GAASA,EAAM,GAC1B,CACA,mBAAmBmK,EAAQvW,EAAU,GAAM,CACvC,YAAK,aAAa,EACX0X,GAAY,KAAMnB,EAAQvW,CAAO,CAC5C,CAQA,YAAY3G,EAAKC,EAAO,EAAG,CACvB,KAAK,aAAa,EAClB,IAAIoD,EAAO,KAAK,QAAQ,SAASrD,EAAKC,CAAI,EAC1C,GAAI,CAACoD,GAAQA,EAAK,MAAQA,EAAK,MAC3B,OAAOA,EACX,IAAImF,EAAO,KAAK,MAAM,IAAI,OAAOxI,CAAG,EAAG+H,EAAQ,KAAK,UAAUS,CAAI,EAC9DN,EAAOH,EAAMH,GAAS,KAAKG,EAAO/H,EAAMwI,EAAK,KAAM,GAAIvI,CAAI,CAAC,EAChE,OAAOmD,GAAYC,EAAO6E,EAAK,KAAOtB,EAAU,KAAS3G,EAAO,CAAE,CACtE,CAQA,cAAcD,EAAK,CACf,YAAK,aAAa,EACX,KAAK,QAAQ,cAAcA,CAAG,CACzC,CAMA,IAAI,uBAAwB,CAAE,OAAO,KAAK,UAAU,aAAa,SAAW,CAK5E,IAAI,mBAAoB,CAAE,OAAO,KAAK,UAAU,aAAa,UAAY,CAMzE,IAAI,eAAgB,CAAE,OAAO,KAAK,UAAU,oBAAsB,CAUlE,gBAAgBA,EAAK,CAEjB,MAAI,CADU,KAAK,MAAM,MAAM0M,EAAoB,GACnC1M,EAAM,KAAK,SAAS,MAAQA,EAAM,KAAK,SAAS,GACrD,KAAK,eAChB,KAAK,aAAa,EACX,KAAK,QAAQ,gBAAgBA,CAAG,EAC3C,CAOA,IAAI,cAAe,CAAE,OAAO,KAAK,UAAU,aAAa,YAAc,CAStE,UAAUwI,EAAM,CACZ,GAAIA,EAAK,OAAS+uB,GACd,OAAOtsB,GAAazC,EAAK,MAAM,EACnC,IAAIvF,EAAM,KAAK,gBAAgBuF,EAAK,IAAI,EAAGG,EAC3C,QAAS6uB,KAAS,KAAK,UACnB,GAAIA,EAAM,MAAQhvB,EAAK,MAAQgvB,EAAM,KAAOv0B,IACvCu0B,EAAM,OAASrvB,GAAWqvB,EAAM,SAAU7uB,EAAW6G,GAAkB,KAAMhH,CAAI,CAAC,GACnF,OAAOgvB,EAAM,MAEhB7uB,IACDA,EAAW6G,GAAkB,KAAMhH,CAAI,GAC3C,IAAIT,EAAQgD,GAAavC,EAAK,KAAMvF,EAAK0F,CAAQ,EACjD,YAAK,UAAU,KAAK,IAAIstB,GAAYztB,EAAK,KAAMA,EAAK,GAAIvF,EAAK0F,EAAU,GAAMZ,CAAK,CAAC,EAC5EA,CACX,CAIA,IAAI,UAAW,CACX,IAAIsD,EAKJ,OAAQ,KAAK,IAAI,cAAc,SAAS,GAAKnN,EAAQ,UAAYmN,EAAK,KAAK,cAAgB,MAAQA,IAAO,OAAS,OAASA,EAAG,iBAAmB,KAAK,IAAI,EAAI,MAC3J,KAAK,KAAK,eAAiB,KAAK,UACxC,CAIA,OAAQ,CACJ,KAAK,SAAS,OAAO,IAAM,CACvB7F,GAAmB,KAAK,UAAU,EAClC,KAAK,QAAQ,gBAAgB,CACjC,CAAC,CACL,CAKA,QAAQtD,EAAM,CACN,KAAK,OAASA,IACd,KAAK,MAAQA,EACb,KAAK,SAAS,WAAWA,EAAK,UAAY,EAAIA,EAAOA,EAAK,eAAe,aAAe,MAAM,EAC9F,KAAK,YAAY,EAEzB,CAOA,SAAU,CACF,KAAK,KAAK,eAAiB,KAAK,YAChC,KAAK,WAAW,KAAK,EACzB,QAASwM,KAAU,KAAK,QACpBA,EAAO,QAAQ,IAAI,EACvB,KAAK,QAAU,CAAC,EAChB,KAAK,WAAW,QAAQ,EACxB,KAAK,QAAQ,QAAQ,EACrB,KAAK,IAAI,OAAO,EAChB,KAAK,SAAS,QAAQ,EAClB,KAAK,iBAAmB,IACxB,KAAK,IAAI,qBAAqB,KAAK,gBAAgB,EACvD,KAAK,UAAY,EACrB,CAMA,OAAO,eAAe1O,EAAK8F,EAAU,CAAC,EAAG,CACrC,IAAIuF,EAAI4d,EAAImL,EAAIqD,EAChB,OAAOtqB,GAAe,GAAG,IAAIL,GAAa,OAAO9M,GAAO,SAAW6L,EAAgB,OAAO7L,CAAG,EAAIA,GAAMqL,EAAKvF,EAAQ,KAAO,MAAQuF,IAAO,OAASA,EAAK,WAAY4d,EAAKnjB,EAAQ,KAAO,MAAQmjB,IAAO,OAASA,EAAK,WAAYmL,EAAKtuB,EAAQ,WAAa,MAAQsuB,IAAO,OAASA,EAAK,GAAIqD,EAAK3xB,EAAQ,WAAa,MAAQ2xB,IAAO,OAASA,EAAK,CAAC,CAAC,CACzV,CAaA,gBAAiB,CACb,GAAI,CAAE,UAAAC,EAAW,WAAAC,CAAW,EAAI,KAAK,UACjCzc,EAAM,KAAK,UAAU,eAAewc,CAAS,EACjD,OAAOvqB,GAAe,GAAG,IAAIL,GAAajB,EAAgB,OAAOqP,EAAI,IAAI,EAAG,QAAS,QAASA,EAAI,IAAMwc,EAAWC,EAAY,EAAI,CAAC,CACxI,CAYA,gBAAgBx2B,EAAI,CACZA,GAAM,KACN,KAAK,WAAW,aAAe,KAAK,WAAW,aAAe,EAAI,EAAI,GACjE,OAAOA,GAAM,UAClB,KAAK,WAAW,aAAeA,EAAK,EAAI,GACnC,KAAK,WAAW,cAAgB,IACrC,KAAK,WAAW,aAAe,KAAK,IAAI,EAAIA,EACpD,CAaA,OAAO,iBAAiBkjB,EAAU,CAC9B,OAAOvW,GAAW,OAAO,KAAO,CAAC,GAAI,CAAE,cAAeuW,CAAS,CAAC,CACpE,CASA,OAAO,kBAAkBW,EAAW,CAChC,OAAOlX,GAAW,OAAO,KAAO,CAAC,GAAI,CAAE,eAAgBkX,CAAU,CAAC,CACtE,CAmBA,OAAO,MAAMzkB,EAAMuF,EAAS,CACxB,IAAI8xB,EAASnF,GAAY,QAAQ,EAC7BxrB,EAAS,CAACorB,GAAM,GAAGuF,CAAM,EAAGxnB,GAAY,GAAGyiB,GAAW,IAAI+E,CAAM,GAAIr3B,CAAI,CAAC,CAAC,EAC9E,OAAIuF,GAAWA,EAAQ,MACnBmB,EAAO,KAAKsrB,GAAU,GAAG,EAAI,CAAC,EAC3BtrB,CACX,CAQA,OAAO,UAAU1G,EAAM,CACnB,OAAOs3B,GAAK,OAAOznB,GAAY,GAAGyiB,GAAW,IAAML,GAAajyB,EAAMqyB,EAAY,CAAC,CAAC,CACxF,CAKA,OAAO,YAAY3zB,EAAK,CACpB,IAAIoM,EACJ,IAAIuR,EAAU3d,EAAI,cAAc,aAAa,EACzC0S,EAAOiL,GAAWnL,GAAK,IAAImL,CAAO,GAAKnL,GAAK,IAAIxS,CAAG,EACvD,QAASoM,EAAiDsG,GAAK,QAAU,MAAQtG,IAAO,OAAS,OAASA,EAAG,OAAS,IAC1H,CACJ,EAQAiqB,EAAW,YAAcllB,GAYzBklB,EAAW,aAAehpB,GAK1BgpB,EAAW,qBAAuB9oB,GAIlC8oB,EAAW,sBAAwB7oB,GAOnC6oB,EAAW,cAAgBzoB,GAK3ByoB,EAAW,kBAAoB/oB,GAO/B+oB,EAAW,qBAAuB5oB,GAQlC4oB,EAAW,cAAgBlpB,GAK3BkpB,EAAW,eAAiBjpB,GAS5BipB,EAAW,SAAW5nB,GAOtB4nB,EAAW,oBAAsBnpB,GAOjCmpB,EAAW,mBAAqBppB,GAOhCopB,EAAW,wBAA0BtpB,GAiBrCspB,EAAW,YAAc1mB,GAQzB0mB,EAAW,cAAgBlmB,GAU3BkmB,EAAW,iBAAmBjmB,GAY9BimB,EAAW,aAAehmB,GAU1BgmB,EAAW,mBAAqB/lB,GAOhC+lB,EAAW,mBAAkCrpB,EAAM,OAAO,CACtD,QAAS1N,EAAAu5B,GAAU,CACf,IAAIv0B,EAAI,EAAGS,EAAI,EACf,QAAS,KAAK8zB,EACN,OAAO,GAAK,SACZv0B,EAAIS,EAAI,EAEP,CAAE,EAAAT,EAAG,EAAAS,CAAE,EAAI,EAEpB,MAAO,CAAE,EAAAT,EAAG,EAAAS,CAAE,CAClB,EATS,UAUb,CAAC,EASDsxB,EAAW,cAAgBvlB,GAO3BulB,EAAW,UAAY/C,GAMvB+C,EAAW,SAAwBrpB,EAAM,OAAO,CAAE,QAAS1N,EAAAoO,GAAUA,EAAO,OAASA,EAAO,CAAC,EAAI,GAAtC,UAAyC,CAAC,EAKrG2oB,EAAW,kBAAoBnmB,GAK/BmmB,EAAW,iBAAmBpmB,GAK9BomB,EAAW,aAA4BA,EAAW,kBAAkB,GAAG,CAAE,MAAS,iBAAkB,CAAC,EASrGA,EAAW,SAAwBloB,EAAY,OAAO,EAEtD,IAAMmqB,GAAc,KACdX,GAAa,CAAC,EACdX,GAAN,MAAM8B,CAAY,CAxtRlB,MAwtRkB,CAAAx5B,EAAA,oBACd,YAAYsB,EAAMsB,EAAI8B,EAAK0F,EAAUqvB,EAAOjwB,EAAO,CAC/C,KAAK,KAAOlI,EACZ,KAAK,GAAKsB,EACV,KAAK,IAAM8B,EACX,KAAK,SAAW0F,EAChB,KAAK,MAAQqvB,EACb,KAAK,MAAQjwB,CACjB,CACA,OAAO,OAAO6M,EAAO3H,EAAS,CAC1B,GAAIA,EAAQ,OAAS,CAAC2H,EAAM,KAAKwgB,GAAKA,EAAE,KAAK,EACzC,OAAOxgB,EACX,IAAI3N,EAAS,CAAC,EAAGgxB,EAAUrjB,EAAM,OAASA,EAAMA,EAAM,OAAS,CAAC,EAAE,IAAMhO,EAAU,IAClF,QAASzH,EAAI,KAAK,IAAI,EAAGyV,EAAM,OAAS,EAAE,EAAGzV,EAAIyV,EAAM,OAAQzV,IAAK,CAChE,IAAIq4B,EAAQ5iB,EAAMzV,CAAC,EACfq4B,EAAM,KAAOS,GAAW,CAAChrB,EAAQ,aAAauqB,EAAM,KAAMA,EAAM,EAAE,GAClEvwB,EAAO,KAAK,IAAI8wB,EAAY9qB,EAAQ,OAAOuqB,EAAM,KAAM,CAAC,EAAGvqB,EAAQ,OAAOuqB,EAAM,GAAI,EAAE,EAAGA,EAAM,IAAKA,EAAM,SAAU,GAAOA,EAAM,KAAK,CAAC,CAC/I,CACA,OAAOvwB,CACX,CACJ,EACA,SAAS6vB,GAAel3B,EAAMgmB,EAAO5B,EAAM,CACvC,QAASkU,EAAUt4B,EAAK,MAAM,MAAMgmB,CAAK,EAAGzmB,EAAI+4B,EAAQ,OAAS,EAAG/4B,GAAK,EAAGA,IAAK,CAC7E,IAAIf,EAAS85B,EAAQ/4B,CAAC,EAAGC,EAAQ,OAAOhB,GAAU,WAAaA,EAAOwB,CAAI,EAAIxB,EAC1EgB,GACAjB,GAAaiB,EAAO4kB,CAAI,CAChC,CACA,OAAOA,CACX,CAPSzlB,EAAAu4B,GAAA,kBAST,IAAMqB,GAAkBj6B,EAAQ,IAAM,MAAQA,EAAQ,QAAU,MAAQA,EAAQ,MAAQ,QAAU,MAClG,SAASk6B,GAAiB95B,EAAM+5B,EAAU,CACtC,IAAMC,EAAQh6B,EAAK,MAAM,QAAQ,EAC7B2I,EAASqxB,EAAMA,EAAM,OAAS,CAAC,EAC/BrxB,GAAU,UACVA,EAAS,KACb,IAAIsxB,EAAKC,EAAMC,EAAOC,EACtB,QAASv5B,EAAI,EAAGA,EAAIm5B,EAAM,OAAS,EAAG,EAAEn5B,EAAG,CACvC,IAAMw5B,EAAML,EAAMn5B,CAAC,EACnB,GAAI,kBAAkB,KAAKw5B,CAAG,EAC1BD,EAAO,WACF,YAAY,KAAKC,CAAG,EACzBJ,EAAM,WACD,sBAAsB,KAAKI,CAAG,EACnCH,EAAO,WACF,cAAc,KAAKG,CAAG,EAC3BF,EAAQ,WACH,SAAS,KAAKE,CAAG,EAClBN,GAAY,MACZK,EAAO,GAEPF,EAAO,OAGX,OAAM,IAAI,MAAM,+BAAiCG,CAAG,CAC5D,CACA,OAAIJ,IACAtxB,EAAS,OAASA,GAClBuxB,IACAvxB,EAAS,QAAUA,GACnByxB,IACAzxB,EAAS,QAAUA,GACnBwxB,IACAxxB,EAAS,SAAWA,GACjBA,CACX,CAlCS1I,EAAA65B,GAAA,oBAmCT,SAASQ,GAAUt6B,EAAMyB,EAAO04B,EAAO,CACnC,OAAI14B,EAAM,SACNzB,EAAO,OAASA,GAChByB,EAAM,UACNzB,EAAO,QAAUA,GACjByB,EAAM,UACNzB,EAAO,QAAUA,GACjBm6B,IAAU,IAAS14B,EAAM,WACzBzB,EAAO,SAAWA,GACfA,CACX,CAVSC,EAAAq6B,GAAA,aAWT,IAAMC,GAA+BhB,GAAK,QAAqBvC,EAAW,iBAAiB,CACvF,QAAQv1B,EAAOH,EAAM,CACjB,OAAOk5B,GAAYC,GAAUn5B,EAAK,KAAK,EAAGG,EAAOH,EAAM,QAAQ,CACnE,CACJ,CAAC,CAAC,EASIo5B,GAAsB/sB,EAAM,OAAO,CAAE,QAAS4sB,EAAgB,CAAC,EAC/DI,GAAuB,IAAI,QAGjC,SAASF,GAAU7rB,EAAO,CACtB,IAAIgsB,EAAWhsB,EAAM,MAAM8rB,EAAM,EAC7BtJ,EAAMuJ,GAAQ,IAAIC,CAAQ,EAC9B,OAAKxJ,GACDuJ,GAAQ,IAAIC,EAAUxJ,EAAMyJ,GAAYD,EAAS,OAAO,CAACx6B,EAAGC,IAAMD,EAAE,OAAOC,CAAC,EAAG,CAAC,CAAC,CAAC,CAAC,EAChF+wB,CACX,CANSnxB,EAAAw6B,GAAA,aAYT,SAASK,GAAiBx5B,EAAMG,EAAOs5B,EAAO,CAC1C,OAAOP,GAAYC,GAAUn5B,EAAK,KAAK,EAAGG,EAAOH,EAAMy5B,CAAK,CAChE,CAFS96B,EAAA66B,GAAA,oBAGT,IAAIE,GAAe,KACbC,GAAgB,IACtB,SAASJ,GAAYD,EAAUb,EAAWF,GAAiB,CACvD,IAAIqB,EAAQ,OAAO,OAAO,IAAI,EAC1BC,EAAW,OAAO,OAAO,IAAI,EAC7BC,EAAcn7B,EAAA,CAACD,EAAMq7B,IAAO,CAC5B,IAAI3J,EAAUyJ,EAASn7B,CAAI,EAC3B,GAAI0xB,GAAW,KACXyJ,EAASn7B,CAAI,EAAIq7B,UACZ3J,GAAW2J,EAChB,MAAM,IAAI,MAAM,eAAiBr7B,EAAO,iEAAiE,CACjH,EANkB,eAOdwR,EAAMvR,EAAA,CAAC86B,EAAOt6B,EAAK66B,EAASC,EAAgBC,IAAoB,CAChE,IAAIzuB,EAAI4d,EACR,IAAI8Q,EAAWP,EAAMH,CAAK,IAAMG,EAAMH,CAAK,EAAI,OAAO,OAAO,IAAI,GAC7Df,EAAQv5B,EAAI,MAAM,QAAQ,EAAE,IAAIi7B,GAAK5B,GAAiB4B,EAAG3B,CAAQ,CAAC,EACtE,QAASl5B,EAAI,EAAGA,EAAIm5B,EAAM,OAAQn5B,IAAK,CACnC,IAAIy4B,EAASU,EAAM,MAAM,EAAGn5B,CAAC,EAAE,KAAK,GAAG,EACvCu6B,EAAY9B,EAAQ,EAAI,EACnBmC,EAASnC,CAAM,IAChBmC,EAASnC,CAAM,EAAI,CACf,eAAgB,GAChB,gBAAiB,GACjB,IAAK,CAAEh4B,GAAS,CACR,IAAIq6B,EAASX,GAAe,CAAE,KAAA15B,EAAM,OAAAg4B,EAAQ,MAAAyB,CAAM,EAClD,kBAAW,IAAM,CAAMC,IAAgBW,IACnCX,GAAe,KAAM,EAAGC,EAAa,EAClC,EACX,CAAC,CACT,EACR,CACA,IAAIW,EAAO5B,EAAM,KAAK,GAAG,EACzBoB,EAAYQ,EAAM,EAAK,EACvB,IAAIC,EAAUJ,EAASG,CAAI,IAAMH,EAASG,CAAI,EAAI,CAC9C,eAAgB,GAChB,gBAAiB,GACjB,MAAOjR,GAAM5d,EAAK0uB,EAAS,QAAU,MAAQ1uB,IAAO,OAAS,OAASA,EAAG,OAAS,MAAQ4d,IAAO,OAAS,OAASA,EAAG,MAAM,IAAM,CAAC,CACvI,GACI2Q,GACAO,EAAQ,IAAI,KAAKP,CAAO,EACxBC,IACAM,EAAQ,eAAiB,IACzBL,IACAK,EAAQ,gBAAkB,GAClC,EAhCU,OAiCV,QAASx7B,KAAKu6B,EAAU,CACpB,IAAIpG,EAASn0B,EAAE,MAAQA,EAAE,MAAM,MAAM,GAAG,EAAI,CAAC,QAAQ,EACrD,GAAIA,EAAE,IACF,QAAS06B,KAASvG,EAAQ,CACtB,IAAIiH,EAAWP,EAAMH,CAAK,IAAMG,EAAMH,CAAK,EAAI,OAAO,OAAO,IAAI,GAC5DU,EAAS,OACVA,EAAS,KAAO,CAAE,eAAgB,GAAO,gBAAiB,GAAO,IAAK,CAAC,CAAE,GAC7E,GAAI,CAAE,IAAAK,CAAI,EAAIz7B,EACd,QAASI,KAAOg7B,EACZA,EAASh7B,CAAG,EAAE,IAAI,KAAKa,GAAQw6B,EAAIx6B,EAAMy6B,EAAe,CAAC,CACjE,CACJ,IAAI/7B,EAAOK,EAAE05B,CAAQ,GAAK15B,EAAE,IAC5B,GAAKL,EAEL,QAAS+6B,KAASvG,EACdhjB,EAAIupB,EAAO/6B,EAAMK,EAAE,IAAKA,EAAE,eAAgBA,EAAE,eAAe,EACvDA,EAAE,OACFmR,EAAIupB,EAAO,SAAW/6B,EAAMK,EAAE,MAAOA,EAAE,eAAgBA,EAAE,eAAe,CAEpF,CACA,OAAO66B,CACX,CAhESj7B,EAAA46B,GAAA,eAiET,IAAIkB,GAAkB,KACtB,SAASvB,GAAYpJ,EAAK3vB,EAAOH,EAAMy5B,EAAO,CAC1CgB,GAAkBt6B,EAClB,IAAIzB,EAAOg8B,GAAQv6B,CAAK,EACpBw6B,EAAWC,GAAYl8B,EAAM,CAAC,EAAGm8B,EAASC,GAAcH,CAAQ,GAAKj8B,EAAK,QAAUA,GAAQ,IAC5Fs5B,EAAS,GAAI7D,EAAU,GAAO4G,EAAY,GAAOb,EAAkB,GACnER,IAAgBA,GAAa,MAAQ15B,GAAQ05B,GAAa,OAASD,IACnEzB,EAAS0B,GAAa,OAAS,IAC3B7U,GAAc,QAAQ1kB,EAAM,OAAO,EAAI,IACvC46B,EAAY,GACZrB,GAAe,OAGvB,IAAIsB,EAAM,IAAI,IACVC,EAASt8B,EAAC47B,GAAY,CACtB,GAAIA,EAAS,CACT,QAASW,KAAOX,EAAQ,IACpB,GAAI,CAACS,EAAI,IAAIE,CAAG,IACZF,EAAI,IAAIE,CAAG,EACPA,EAAIl7B,CAAI,GACR,OAAIu6B,EAAQ,kBACRL,EAAkB,IACf,GAGfK,EAAQ,iBACJA,EAAQ,kBACRL,EAAkB,IACtBa,EAAY,GAEpB,CACA,MAAO,EACX,EAlBa,UAmBTZ,EAAWrK,EAAI2J,CAAK,EAAG0B,EAAUC,EACrC,OAAIjB,IACIc,EAAOd,EAASnC,EAASgB,GAAUt6B,EAAMyB,EAAO,CAAC06B,CAAM,CAAC,CAAC,EACzD1G,EAAU,GAEL0G,IAAW16B,EAAM,QAAUA,EAAM,SAAWA,EAAM,UAEvD,EAAE7B,EAAQ,SAAW6B,EAAM,SAAWA,EAAM,SAE5C,EAAE7B,EAAQ,KAAO6B,EAAM,QAAU,EAAEA,EAAM,SAAWA,EAAM,YACzDg7B,EAAW/W,GAAKjkB,EAAM,OAAO,IAAMg7B,GAAYz8B,GAC5Cu8B,EAAOd,EAASnC,EAASgB,GAAUmC,EAAUh7B,EAAO,EAAI,CAAC,CAAC,GAGrDA,EAAM,WAAai7B,EAAYvC,GAAM14B,EAAM,OAAO,IAAMzB,GAAQ08B,GAAaD,GAClFF,EAAOd,EAASnC,EAASgB,GAAUoC,EAAWj7B,EAAO,EAAK,CAAC,CAAC,KAC5Dg0B,EAAU,IAGT0G,GAAU16B,EAAM,UACrB86B,EAAOd,EAASnC,EAASgB,GAAUt6B,EAAMyB,EAAO,EAAI,CAAC,CAAC,IACtDg0B,EAAU,IAEV,CAACA,GAAW8G,EAAOd,EAAS,IAAI,IAChChG,EAAU,KAEd4G,IACA5G,EAAU,IACVA,GAAW+F,GACX/5B,EAAM,gBAAgB,EAC1Bs6B,GAAkB,KACXtG,CACX,CAhESx1B,EAAAu6B,GAAA,eAsET,IAAMmC,GAAN,MAAMC,CAAgB,CA/8RtB,MA+8RsB,CAAA38B,EAAA,wBAKlB,YAAY48B,EAIZ73B,EAIAiB,EAIA8V,EAIAD,EAAQ,CACJ,KAAK,UAAY+gB,EACjB,KAAK,KAAO73B,EACZ,KAAK,IAAMiB,EACX,KAAK,MAAQ8V,EACb,KAAK,OAASD,CAClB,CACA,MAAO,CACH,IAAIxW,EAAM,SAAS,cAAc,KAAK,EACtC,OAAAA,EAAI,UAAY,KAAK,UACrB,KAAK,OAAOA,CAAG,EACRA,CACX,CACA,OAAOA,EAAKtE,EAAM,CACd,OAAIA,EAAK,WAAa,KAAK,UAChB,IACX,KAAK,OAAOsE,CAAG,EACR,GACX,CACA,OAAOA,EAAK,CACRA,EAAI,MAAM,KAAO,KAAK,KAAO,KAC7BA,EAAI,MAAM,IAAM,KAAK,IAAM,KACvB,KAAK,OAAS,OACdA,EAAI,MAAM,MAAQ,KAAK,MAAQ,MACnCA,EAAI,MAAM,OAAS,KAAK,OAAS,IACrC,CACA,GAAG0D,EAAG,CACF,OAAO,KAAK,MAAQA,EAAE,MAAQ,KAAK,KAAOA,EAAE,KAAO,KAAK,OAASA,EAAE,OAAS,KAAK,QAAUA,EAAE,QACzF,KAAK,WAAaA,EAAE,SAC5B,CAQA,OAAO,SAAS1H,EAAMu7B,EAAWj2B,EAAO,CACpC,GAAIA,EAAM,MAAO,CACb,IAAIlF,EAAMJ,EAAK,YAAYsF,EAAM,KAAMA,EAAM,OAAS,CAAC,EACvD,GAAI,CAAClF,EACD,MAAO,CAAC,EACZ,IAAIgkB,EAAOoX,GAAQx7B,CAAI,EACvB,MAAO,CAAC,IAAIs7B,EAAgBC,EAAWn7B,EAAI,KAAOgkB,EAAK,KAAMhkB,EAAI,IAAMgkB,EAAK,IAAK,KAAMhkB,EAAI,OAASA,EAAI,GAAG,CAAC,CAChH,KAEI,QAAOq7B,GAAmBz7B,EAAMu7B,EAAWj2B,CAAK,CAExD,CACJ,EACA,SAASk2B,GAAQx7B,EAAM,CACnB,IAAIyD,EAAOzD,EAAK,UAAU,sBAAsB,EAEhD,MAAO,CAAE,MADEA,EAAK,eAAiBgH,EAAU,IAAMvD,EAAK,KAAOA,EAAK,MAAQzD,EAAK,UAAU,YAAcA,EAAK,QACtFA,EAAK,UAAU,WAAaA,EAAK,OAAQ,IAAKyD,EAAK,IAAMzD,EAAK,UAAU,UAAYA,EAAK,MAAO,CAC1H,CAJSrB,EAAA68B,GAAA,WAKT,SAASE,GAAY17B,EAAMI,EAAKC,EAAMkc,EAAQ,CAC1C,IAAIe,EAAStd,EAAK,YAAYI,EAAKC,EAAO,CAAC,EAC3C,GAAI,CAACid,EACD,OAAOf,EACX,IAAIgB,EAAavd,EAAK,IAAI,sBAAsB,EAC5CoE,GAAKkZ,EAAO,IAAMA,EAAO,QAAU,EACnC5Z,EAAO1D,EAAK,YAAY,CAAE,EAAGud,EAAW,KAAO,EAAG,EAAAnZ,CAAE,CAAC,EACrDiM,EAAQrQ,EAAK,YAAY,CAAE,EAAGud,EAAW,MAAQ,EAAG,EAAAnZ,CAAE,CAAC,EAC3D,OAAIV,GAAQ,MAAQ2M,GAAS,KAClBkM,EACJ,CAAE,KAAM,KAAK,IAAIA,EAAO,KAAM,KAAK,IAAI7Y,EAAM2M,CAAK,CAAC,EAAG,GAAI,KAAK,IAAIkM,EAAO,GAAI,KAAK,IAAI7Y,EAAM2M,CAAK,CAAC,CAAE,CAChH,CAXS1R,EAAA+8B,GAAA,eAYT,SAASD,GAAmBz7B,EAAMu7B,EAAWj2B,EAAO,CAChD,GAAIA,EAAM,IAAMtF,EAAK,SAAS,MAAQsF,EAAM,MAAQtF,EAAK,SAAS,GAC9D,MAAO,CAAC,EACZ,IAAIC,EAAO,KAAK,IAAIqF,EAAM,KAAMtF,EAAK,SAAS,IAAI,EAAGuB,EAAK,KAAK,IAAI+D,EAAM,GAAItF,EAAK,SAAS,EAAE,EACzFuE,EAAMvE,EAAK,eAAiBgH,EAAU,IACtCgW,EAAUhd,EAAK,WAAY8c,EAAcE,EAAQ,sBAAsB,EAAGoH,EAAOoX,GAAQx7B,CAAI,EAC7F27B,EAAU3e,EAAQ,cAAc,UAAU,EAAG+X,EAAY4G,GAAW,OAAO,iBAAiBA,CAAO,EACnGC,EAAW9e,EAAY,MACtBiY,EAAY,SAASA,EAAU,WAAW,EAAI,KAAK,IAAI,EAAG,SAASA,EAAU,UAAU,CAAC,EAAI,GAC7F8G,EAAY/e,EAAY,OAASiY,EAAY,SAASA,EAAU,YAAY,EAAI,GAChF+G,EAAa5e,GAAQld,EAAMC,EAAM,CAAC,EAAG87B,EAAW7e,GAAQld,EAAMuB,EAAI,EAAE,EACpEy6B,EAAcF,EAAW,MAAQx7B,GAAU,KAAOw7B,EAAa,KAC/DG,EAAYF,EAAS,MAAQz7B,GAAU,KAAOy7B,EAAW,KAK7D,GAJIC,IAAgBh8B,EAAK,cAAgB87B,EAAW,oBAChDE,EAAcN,GAAY17B,EAAMC,EAAM,EAAG+7B,CAAW,GACpDC,IAAcj8B,EAAK,cAAgB+7B,EAAS,oBAC5CE,EAAYP,GAAY17B,EAAMuB,EAAI,GAAI06B,CAAS,GAC/CD,GAAeC,GAAaD,EAAY,MAAQC,EAAU,MAAQD,EAAY,IAAMC,EAAU,GAC9F,OAAOC,EAAOC,EAAY72B,EAAM,KAAMA,EAAM,GAAI02B,CAAW,CAAC,EAE3D,CACD,IAAIr3B,EAAMq3B,EAAcG,EAAY72B,EAAM,KAAM,KAAM02B,CAAW,EAAII,EAAcN,EAAY,EAAK,EAChGxrB,EAAS2rB,EAAYE,EAAY,KAAM72B,EAAM,GAAI22B,CAAS,EAAIG,EAAcL,EAAU,EAAI,EAC1FM,EAAU,CAAC,EACf,OAAKL,GAAeF,GAAY,IAAMG,GAAaF,GAAU,MAAQC,GAAeC,EAAY,EAAI,IAChGH,EAAW,iBAAmB,GAAKn3B,EAAI,OAAS3E,EAAK,kBAAoB,EAAIsQ,EAAO,IACpF+rB,EAAQ,KAAKC,EAAMV,EAAUj3B,EAAI,OAAQk3B,EAAWvrB,EAAO,GAAG,CAAC,EAC1D3L,EAAI,OAAS2L,EAAO,KAAOtQ,EAAK,iBAAiB2E,EAAI,OAAS2L,EAAO,KAAO,CAAC,EAAE,MAAQhQ,GAAU,OACtGqE,EAAI,OAAS2L,EAAO,KAAO3L,EAAI,OAAS2L,EAAO,KAAO,GACnD4rB,EAAOv3B,CAAG,EAAE,OAAO03B,CAAO,EAAE,OAAOH,EAAO5rB,CAAM,CAAC,CAC5D,CACA,SAASgsB,EAAM54B,EAAMiB,EAAK0L,EAAOC,EAAQ,CACrC,OAAO,IAAI+qB,GAAgBE,EAAW73B,EAAO0gB,EAAK,KAAMzf,EAAMyf,EAAK,IAAK,KAAK,IAAI,EAAG/T,EAAQ3M,CAAI,EAAG4M,EAAS3L,CAAG,CACnH,CAFShG,EAAA29B,EAAA,SAGT,SAASJ,EAAO,CAAE,IAAAv3B,EAAK,OAAA2L,EAAQ,WAAAisB,CAAW,EAAG,CACzC,IAAIL,EAAS,CAAC,EACd,QAAS38B,EAAI,EAAGA,EAAIg9B,EAAW,OAAQh9B,GAAK,EACxC28B,EAAO,KAAKI,EAAMC,EAAWh9B,CAAC,EAAGoF,EAAK43B,EAAWh9B,EAAI,CAAC,EAAG+Q,CAAM,CAAC,EACpE,OAAO4rB,CACX,CALSv9B,EAAAu9B,EAAA,UAOT,SAASC,EAAYl8B,EAAMsB,EAAIqH,EAAM,CACjC,IAAIjE,EAAM,IAAK2L,EAAS,KAAMisB,EAAa,CAAC,EAC5C,SAASC,EAAQv8B,EAAMw8B,EAAUl7B,GAAIm7B,GAAQr5B,GAAK,CAK9C,IAAIs5B,GAAa38B,EAAK,YAAYC,EAAOA,GAAQ2I,EAAK,GAAK,GAAK,CAAE,EAC9Dg0B,GAAW58B,EAAK,YAAYuB,GAAKA,IAAMqH,EAAK,KAAO,EAAI,EAAG,EAC1D,CAAC+zB,IAAc,CAACC,KAEpBj4B,EAAM,KAAK,IAAIg4B,GAAW,IAAKC,GAAS,IAAKj4B,CAAG,EAChD2L,EAAS,KAAK,IAAIqsB,GAAW,OAAQC,GAAS,OAAQtsB,CAAM,EACxDjN,IAAO2D,EAAU,IACjBu1B,EAAW,KAAKh4B,GAAOk4B,EAAWb,EAAWe,GAAW,KAAMp4B,GAAOm4B,GAASb,EAAYe,GAAS,KAAK,EAExGL,EAAW,KAAK,CAACh4B,GAAOm4B,GAASd,EAAWgB,GAAS,KAAM,CAACr4B,GAAOk4B,EAAWZ,EAAYc,GAAW,KAAK,EAClH,CAfSh+B,EAAA69B,EAAA,WAgBT,IAAIz7B,EAAQd,GAA0C2I,EAAK,KAAM5H,EAAMO,GAAoCqH,EAAK,GAEhH,QAAShB,KAAK5H,EAAK,cACf,GAAI4H,EAAE,GAAK7G,GAAS6G,EAAE,KAAO5G,EACzB,QAASZ,EAAM,KAAK,IAAIwH,EAAE,KAAM7G,CAAK,EAAG87B,GAAS,KAAK,IAAIj1B,EAAE,GAAI5G,CAAG,IAAK,CACpE,IAAI87B,GAAU98B,EAAK,MAAM,IAAI,OAAOI,CAAG,EACvC,QAASkI,MAAQtI,EAAK,UAAU88B,EAAO,EAAG,CACtC,IAAIC,GAAWz0B,GAAK,KAAOw0B,GAAQ,KAAME,GAAS10B,GAAK,GAAKw0B,GAAQ,KACpE,GAAIC,IAAYF,GACZ,MACAG,GAAS58B,GACTo8B,EAAQ,KAAK,IAAIO,GAAU38B,CAAG,EAAGH,GAAQ,MAAQ88B,IAAYh8B,EAAO,KAAK,IAAIi8B,GAAQH,EAAM,EAAGt7B,GAAM,MAAQy7B,IAAUh8B,EAAKsH,GAAK,GAAG,CAC3I,CAEA,GADAlI,EAAM08B,GAAQ,GAAK,EACf18B,GAAOy8B,GACP,KACR,CAER,OAAIN,EAAW,QAAU,GACrBC,EAAQz7B,EAAOd,GAAQ,KAAMe,EAAKO,GAAM,KAAMvB,EAAK,aAAa,EAC7D,CAAE,IAAA2E,EAAK,OAAA2L,EAAQ,WAAAisB,CAAW,CACrC,CAvCS59B,EAAAw9B,EAAA,eAwCT,SAASC,EAAcv7B,EAAO8D,EAAK,CAC/B,IAAIP,EAAI0Y,EAAY,KAAOnY,EAAM9D,EAAM,IAAMA,EAAM,QACnD,MAAO,CAAE,IAAKuD,EAAG,OAAQA,EAAG,WAAY,CAAC,CAAE,CAC/C,CAHSzF,EAAAy9B,EAAA,gBAIb,CArFSz9B,EAAA88B,GAAA,sBAsFT,SAASwB,GAAWn+B,EAAGC,EAAG,CACtB,OAAOD,EAAE,aAAeC,EAAE,aAAeD,EAAE,GAAGC,CAAC,CACnD,CAFSJ,EAAAs+B,GAAA,cAGT,IAAMC,GAAN,KAAgB,CAhoShB,MAgoSgB,CAAAv+B,EAAA,kBACZ,YAAYqB,EAAMm9B,EAAO,CACrB,KAAK,KAAOn9B,EACZ,KAAK,MAAQm9B,EACb,KAAK,MAAQ,CAAC,EACd,KAAK,OAAS,EACd,KAAK,OAAS,EACd,KAAK,WAAa,CAAE,KAAM,KAAK,QAAQ,KAAK,IAAI,EAAG,MAAO,KAAK,KAAK,KAAK,IAAI,CAAE,EAC/E,KAAK,IAAMn9B,EAAK,UAAU,YAAY,SAAS,cAAc,KAAK,CAAC,EACnE,KAAK,IAAI,UAAU,IAAI,UAAU,EAC7Bm9B,EAAM,OACN,KAAK,IAAI,UAAU,IAAI,gBAAgB,EACvCA,EAAM,OACN,KAAK,IAAI,UAAU,IAAIA,EAAM,KAAK,EACtC,KAAK,MAAM,EACX,KAAK,IAAI,aAAa,cAAe,MAAM,EAC3C,KAAK,SAASn9B,EAAK,KAAK,EACxBA,EAAK,eAAe,KAAK,UAAU,EAC/Bm9B,EAAM,OACNA,EAAM,MAAM,KAAK,IAAKn9B,CAAI,CAClC,CACA,OAAOoP,EAAQ,CACPA,EAAO,WAAW,MAAMguB,EAAU,GAAKhuB,EAAO,MAAM,MAAMguB,EAAU,GACpE,KAAK,SAAShuB,EAAO,KAAK,GAC1B,KAAK,MAAM,OAAOA,EAAQ,KAAK,GAAG,GAAKA,EAAO,mBAC9C,KAAK,MAAM,EACXA,EAAO,KAAK,eAAe,KAAK,UAAU,EAElD,CACA,cAAcpP,EAAM,CACZ,KAAK,MAAM,wBAA0B,IACrCA,EAAK,eAAe,KAAK,UAAU,CAC3C,CACA,SAASsN,EAAO,CACZ,IAAIlN,EAAM,EAAG+H,EAAQmF,EAAM,MAAM8vB,EAAU,EAC3C,KAAOh9B,EAAM+H,EAAM,QAAUA,EAAM/H,CAAG,GAAK,KAAK,OAC5CA,IACJ,KAAK,IAAI,MAAM,OAAS,QAAQ,KAAK,MAAM,MAAQ,IAAM,IAAMA,CAAG,CACtE,CACA,SAAU,CACN,OAAO,KAAK,MAAM,QAAQ,KAAK,IAAI,CACvC,CACA,OAAQ,CACJ,GAAI,CAAE,OAAA6D,EAAQ,OAAAC,CAAO,EAAI,KAAK,MAC1BD,GAAU,KAAK,QAAUC,GAAU,KAAK,UACxC,KAAK,OAASD,EACd,KAAK,OAASC,EACd,KAAK,IAAI,MAAM,UAAY,SAAS,EAAID,CAAM,KAAK,EAAIC,CAAM,IAErE,CACA,KAAKm5B,EAAS,CACV,GAAIA,EAAQ,QAAU,KAAK,MAAM,QAAUA,EAAQ,KAAK,CAAC31B,EAAG,IAAM,CAACu1B,GAAWv1B,EAAG,KAAK,MAAM,CAAC,CAAC,CAAC,EAAG,CAC9F,IAAIgP,EAAM,KAAK,IAAI,WAAY4mB,EAAO,EACtC,QAASC,KAAUF,EACXE,EAAO,QAAU7mB,GAAO6mB,EAAO,aAAe,KAAK,MAAMD,CAAI,EAAE,aAC/DC,EAAO,OAAO7mB,EAAK,KAAK,MAAM4mB,CAAI,CAAC,GACnC5mB,EAAMA,EAAI,YACV4mB,KAGA,KAAK,IAAI,aAAaC,EAAO,KAAK,EAAG7mB,CAAG,EAGhD,KAAOA,GAAK,CACR,IAAIhM,EAAOgM,EAAI,YACfA,EAAI,OAAO,EACXA,EAAMhM,CACV,CACA,KAAK,MAAQ2yB,EACT/+B,EAAQ,SACR,KAAK,IAAI,MAAM,QAAU,KAAK,IAAI,WAAa,GAAK,OAC5D,CACJ,CACA,SAAU,CACF,KAAK,MAAM,SACX,KAAK,MAAM,QAAQ,KAAK,IAAK,KAAK,IAAI,EAC1C,KAAK,IAAI,OAAO,CACpB,CACJ,EACM8+B,GAA0B/wB,EAAM,OAAO,EAI7C,SAAS8wB,GAAMvH,EAAQ,CACnB,MAAO,CACH1nB,GAAW,OAAOmN,GAAK,IAAI6hB,GAAU7hB,EAAGua,CAAM,CAAC,EAC/CwH,GAAW,GAAGxH,CAAM,CACxB,CACJ,CALSj3B,EAAAw+B,GAAA,SAOT,IAAMK,GAA+BnxB,EAAM,OAAO,CAC9C,QAAQoxB,EAAS,CACb,OAAOC,GAAcD,EAAS,CAC1B,gBAAiB,KACjB,gBAAiB,GACjB,oBAAqB,EACzB,EAAG,CACC,gBAAiB9+B,EAAA,CAACG,EAAGC,IAAM,KAAK,IAAID,EAAGC,CAAC,EAAvB,mBACjB,gBAAiBJ,EAAA,CAACG,EAAGC,IAAMD,GAAKC,EAAf,kBACrB,CAAC,CACL,CACJ,CAAC,EAmBD,SAAS4+B,GAAc/H,EAAS,CAAC,EAAG,CAChC,MAAO,CACH4H,GAAgB,GAAG5H,CAAM,EACzBgI,GACAC,GACAC,GACA9wB,GAAsB,GAAG,EAAI,CACjC,CACJ,CARSrO,EAAAg/B,GAAA,iBAiBT,SAASI,GAAcC,EAAQ,CAC3B,OAAOA,EAAO,WAAW,MAAMC,EAAe,GAAKD,EAAO,MAAM,MAAMC,EAAe,CACzF,CAFSC,EAAAH,GAAA,iBAGT,IAAMI,GAA2BC,GAAM,CACnC,MAAO,GACP,QAAQC,EAAM,CACV,GAAI,CAAE,MAAAC,CAAM,EAAID,EAAME,EAAOD,EAAM,MAAML,EAAe,EACpDO,EAAU,CAAC,EACf,QAAS,KAAKF,EAAM,UAAU,OAAQ,CAClC,IAAIG,EAAO,GAAKH,EAAM,UAAU,KAChC,GAAI,EAAE,OAASC,EAAK,iBAAmB,EAAEE,GAAQC,EAAQ,KAAOH,EAAK,qBAAsB,CACvF,IAAII,EAAYF,EAAO,8BAAgC,gCACnDG,EAAS,EAAE,MAAQ,EAAIC,EAAgB,OAAO,EAAE,KAAM,EAAE,KAAK,EACjE,QAASC,KAASC,GAAgB,SAASV,EAAMM,EAAWC,CAAM,EAC9DJ,EAAQ,KAAKM,CAAK,CAC1B,CACJ,CACA,OAAON,CACX,EACA,OAAOR,EAAQgB,EAAK,CACZhB,EAAO,aAAa,KAAKiB,GAAMA,EAAG,SAAS,IAC3CD,EAAI,MAAM,cAAgBA,EAAI,MAAM,eAAiB,WAAa,YAAc,YACpF,IAAIE,EAAanB,GAAcC,CAAM,EACrC,OAAIkB,GACAC,GAAanB,EAAO,MAAOgB,CAAG,EAC3BhB,EAAO,YAAcA,EAAO,cAAgBkB,CACvD,EACA,MAAMF,EAAKX,EAAM,CACbc,GAAad,EAAK,MAAOW,CAAG,CAChC,EACA,MAAO,gBACX,CAAC,EACD,SAASG,GAAab,EAAOU,EAAK,CAC9BA,EAAI,MAAM,kBAAoBV,EAAM,MAAML,EAAe,EAAE,gBAAkB,IACjF,CAFSC,EAAAiB,GAAA,gBAGT,IAAMC,GAA8BhB,GAAM,CACtC,MAAO,GACP,QAAQC,EAAM,CACV,IAAIgB,EAAU,CAAC,EAAG,CAAE,KAAAC,EAAM,OAAAC,CAAO,EAAIlB,EAAK,MAAM,UAChD,QAAS,KAAKkB,EACV,GAAI,CAAC,EAAE,MACH,QAASC,KAAUT,GAAgB,SAASV,EAAM,yBAA0B,CAAC,EACzEgB,EAAQ,KAAKG,CAAM,EAE/B,GAAId,EAAQ,KAAO,CAACY,EAAK,OAASjB,EAAK,MAAM,MAAMJ,EAAe,EAAE,oBAAqB,CACrF,QAASa,KAASC,GAAgB,SAASV,EAAM,8CAA+CQ,EAAgB,OAAOS,EAAK,KAAM,CAAC,CAAC,EAChID,EAAQ,KAAKP,CAAK,EACtB,QAASA,KAASC,GAAgB,SAASV,EAAM,4CAA6CQ,EAAgB,OAAOS,EAAK,GAAI,CAAC,CAAC,EAC5HD,EAAQ,KAAKP,CAAK,CAC1B,CACA,OAAOO,CACX,EACA,OAAOrB,EAAQgB,EAAK,CAChB,OAAOhB,EAAO,YAAcA,EAAO,cAAgBA,EAAO,iBAAmBD,GAAcC,CAAM,CACrG,EACA,MAAO,mBACX,CAAC,EACKyB,GAAmCC,GAAK,QAAqBC,EAAW,MAAM,CAChF,WAAY,CACR,8BAA+B,CAAE,gBAAiB,wBAAyB,EAC3E,WAAY,wBAChB,EACA,cAAe,CACX,WAAY,yBACZ,WAAY,CACR,WAAY,qBACZ,8BAA+B,CAC3B,gBAAiB,sBACrB,CACJ,CACJ,CACJ,CAAC,CAAC,EAEIC,GAAgCC,EAAY,OAAO,CACrD,IAAIC,EAAKC,EAAS,CAAE,OAAOD,GAAO,KAAO,KAAOC,EAAQ,OAAOD,CAAG,CAAG,CACzE,CAAC,EACKE,GAA6BC,GAAW,OAAO,CACjD,QAAS,CAAE,OAAO,IAAM,EACxB,OAAOH,EAAKb,EAAI,CACZ,OAAIa,GAAO,OACPA,EAAMb,EAAG,QAAQ,OAAOa,CAAG,GACxBb,EAAG,QAAQ,OAAO,CAACa,EAAKI,IAAMA,EAAE,GAAGN,EAAgB,EAAIM,EAAE,MAAQJ,EAAKA,CAAG,CACpF,CACJ,CAAC,EACKK,GAA8BC,GAAW,UAAU,KAAM,CAC3D,YAAY/B,EAAM,CACd,KAAK,KAAOA,EACZ,KAAK,OAAS,KACd,KAAK,WAAa,CAAE,KAAM,KAAK,QAAQ,KAAK,IAAI,EAAG,MAAO,KAAK,WAAW,KAAK,IAAI,CAAE,CACzF,CACA,OAAOL,EAAQ,CACX,IAAIqC,EACJ,IAAIC,EAAYtC,EAAO,MAAM,MAAMgC,EAAa,EAC5CM,GAAa,KACT,KAAK,QAAU,QACdD,EAAK,KAAK,UAAY,MAAQA,IAAO,QAAkBA,EAAG,OAAO,EAClE,KAAK,OAAS,OAIb,KAAK,SACN,KAAK,OAAS,KAAK,KAAK,UAAU,YAAY,SAAS,cAAc,KAAK,CAAC,EAC3E,KAAK,OAAO,UAAY,kBAExBrC,EAAO,WAAW,MAAMgC,EAAa,GAAKM,GAAatC,EAAO,YAAcA,EAAO,kBACnF,KAAK,KAAK,eAAe,KAAK,UAAU,EAEpD,CACA,SAAU,CACN,GAAI,CAAE,KAAAK,CAAK,EAAI,KACXyB,EAAMzB,EAAK,MAAM,MAAM2B,EAAa,EACpCO,EAAOT,GAAO,MAAQzB,EAAK,YAAYyB,CAAG,EAC9C,GAAI,CAACS,EACD,OAAO,KACX,IAAIC,EAAQnC,EAAK,UAAU,sBAAsB,EACjD,MAAO,CACH,KAAMkC,EAAK,KAAOC,EAAM,KAAOnC,EAAK,UAAU,WAAaA,EAAK,OAChE,IAAKkC,EAAK,IAAMC,EAAM,IAAMnC,EAAK,UAAU,UAAYA,EAAK,OAC5D,OAAQkC,EAAK,OAASA,EAAK,GAC/B,CACJ,CACA,WAAWT,EAAK,CACZ,GAAI,KAAK,OAAQ,CACb,GAAI,CAAE,OAAAW,EAAQ,OAAAC,CAAO,EAAI,KAAK,KAC1BZ,GACA,KAAK,OAAO,MAAM,KAAOA,EAAI,KAAOW,EAAS,KAC7C,KAAK,OAAO,MAAM,IAAMX,EAAI,IAAMY,EAAS,KAC3C,KAAK,OAAO,MAAM,OAASZ,EAAI,OAASY,EAAS,MAGjD,KAAK,OAAO,MAAM,KAAO,WAEjC,CACJ,CACA,SAAU,CACF,KAAK,QACL,KAAK,OAAO,OAAO,CAC3B,CACA,WAAWZ,EAAK,CACR,KAAK,KAAK,MAAM,MAAME,EAAa,GAAKF,GACxC,KAAK,KAAK,SAAS,CAAE,QAASF,GAAiB,GAAGE,CAAG,CAAE,CAAC,CAChE,CACJ,EAAG,CACC,eAAgB,CACZ,SAASa,EAAO,CACZ,KAAK,WAAW,KAAK,KAAK,YAAY,CAAE,EAAGA,EAAM,QAAS,EAAGA,EAAM,OAAQ,CAAC,CAAC,CACjF,EACA,UAAUA,EAAO,EACTA,EAAM,QAAU,KAAK,KAAK,YAAc,CAAC,KAAK,KAAK,WAAW,SAASA,EAAM,aAAa,IAC1F,KAAK,WAAW,IAAI,CAC5B,EACA,SAAU,CACN,KAAK,WAAW,IAAI,CACxB,EACA,MAAO,CACH,KAAK,WAAW,IAAI,CACxB,CACJ,CACJ,CAAC,EAKD,SAASC,IAAa,CAClB,MAAO,CAACZ,GAAeG,EAAc,CACzC,CAFSjC,EAAA0C,GAAA,cAIT,SAASC,GAAYC,EAAKC,EAAIC,EAAMC,EAAIC,EAAG,CACvCH,EAAG,UAAY,EACf,QAASnC,EAASkC,EAAI,UAAUE,EAAMC,CAAE,EAAGnB,EAAMkB,EAAMG,EAAG,CAACvC,EAAO,KAAK,EAAE,KAAMkB,GAAOlB,EAAO,MAAM,OAC/F,GAAI,CAACA,EAAO,UACR,KAAOuC,EAAIJ,EAAG,KAAKnC,EAAO,KAAK,GAC3BsC,EAAEpB,EAAMqB,EAAE,MAAOA,CAAC,CAElC,CAPSjD,EAAA2C,GAAA,eAQT,SAASO,GAAY/C,EAAMgD,EAAW,CAClC,IAAIC,EAAUjD,EAAK,cACnB,GAAIiD,EAAQ,QAAU,GAAKA,EAAQ,CAAC,EAAE,MAAQjD,EAAK,SAAS,MACxDiD,EAAQ,CAAC,EAAE,IAAMjD,EAAK,SAAS,GAC/B,OAAOiD,EACX,IAAIC,EAAS,CAAC,EACd,OAAS,CAAE,KAAAP,EAAM,GAAAC,CAAG,IAAKK,EACrBN,EAAO,KAAK,IAAI3C,EAAK,MAAM,IAAI,OAAO2C,CAAI,EAAE,KAAMA,EAAOK,CAAS,EAClEJ,EAAK,KAAK,IAAI5C,EAAK,MAAM,IAAI,OAAO4C,CAAE,EAAE,GAAIA,EAAKI,CAAS,EACtDE,EAAO,QAAUA,EAAOA,EAAO,OAAS,CAAC,EAAE,IAAMP,EACjDO,EAAOA,EAAO,OAAS,CAAC,EAAE,GAAKN,EAE/BM,EAAO,KAAK,CAAE,KAAAP,EAAM,GAAAC,CAAG,CAAC,EAEhC,OAAOM,CACX,CAfSrD,EAAAkD,GAAA,eAsBT,IAAMI,GAAN,KAAqB,CA98SrB,MA88SqB,CAAAtD,EAAA,uBAIjB,YAAYuD,EAAQ,CAChB,GAAM,CAAE,OAAAC,EAAQ,WAAAC,EAAY,SAAAC,EAAU,SAAAC,EAAU,UAAAR,EAAY,GAAK,EAAII,EACrE,GAAI,CAACC,EAAO,OACR,MAAM,IAAI,WAAW,6EAA6E,EAEtG,GADA,KAAK,OAASA,EACVE,EACA,KAAK,SAAW,CAACE,EAAOzD,EAAM2C,EAAMe,IAAQH,EAASG,EAAKf,EAAMA,EAAOc,EAAM,CAAC,EAAE,OAAQA,EAAOzD,CAAI,UAE9F,OAAOsD,GAAc,WAC1B,KAAK,SAAW,CAACG,EAAOzD,EAAM2C,EAAMe,IAAQ,CACxC,IAAIC,EAAOL,EAAWG,EAAOzD,EAAM2C,CAAI,EACnCgB,GACAD,EAAIf,EAAMA,EAAOc,EAAM,CAAC,EAAE,OAAQE,CAAI,CAC9C,UAEKL,EACL,KAAK,SAAW,CAACG,EAAOG,EAAOjB,EAAMe,IAAQA,EAAIf,EAAMA,EAAOc,EAAM,CAAC,EAAE,OAAQH,CAAU,MAGzF,OAAM,IAAI,WAAW,wEAAwE,EAEjG,KAAK,SAAWE,EAChB,KAAK,UAAYR,CACrB,CAMA,WAAWhD,EAAM,CACb,IAAI6D,EAAQ,IAAIC,GAAmBJ,EAAMG,EAAM,IAAI,KAAKA,CAAK,EAC7D,OAAS,CAAE,KAAAlB,EAAM,GAAAC,CAAG,IAAKG,GAAY/C,EAAM,KAAK,SAAS,EACrDwC,GAAYxC,EAAK,MAAM,IAAK,KAAK,OAAQ2C,EAAMC,EAAI,CAACD,EAAMG,IAAM,KAAK,SAASA,EAAG9C,EAAM2C,EAAMe,CAAG,CAAC,EACrG,OAAOG,EAAM,OAAO,CACxB,CAMA,WAAWlE,EAAQgE,EAAM,CACrB,IAAII,EAAa,IAAKC,EAAW,GAQjC,OAPIrE,EAAO,YACPA,EAAO,QAAQ,YAAY,CAACsE,EAAIC,EAAIvB,EAAMC,IAAO,CACzCA,GAAMjD,EAAO,KAAK,SAAS,MAAQgD,GAAQhD,EAAO,KAAK,SAAS,KAChEoE,EAAa,KAAK,IAAIpB,EAAMoB,CAAU,EACtCC,EAAW,KAAK,IAAIpB,EAAIoB,CAAQ,EAExC,CAAC,EACDrE,EAAO,eAAiBqE,EAAWD,EAAa,IACzC,KAAK,WAAWpE,EAAO,IAAI,EAClCqE,EAAW,GACJ,KAAK,YAAYrE,EAAO,KAAMgE,EAAK,IAAIhE,EAAO,OAAO,EAAGoE,EAAYC,CAAQ,EAChFL,CACX,CACA,YAAY3D,EAAM2D,EAAMQ,EAAYC,EAAU,CAC1C,QAASC,KAAKrE,EAAK,cAAe,CAC9B,IAAI2C,EAAO,KAAK,IAAI0B,EAAE,KAAMF,CAAU,EAAGvB,EAAK,KAAK,IAAIyB,EAAE,GAAID,CAAQ,EACrE,GAAIxB,GAAMD,EAAM,CACZ,IAAI2B,EAAWtE,EAAK,MAAM,IAAI,OAAO2C,CAAI,EAAG4B,EAASD,EAAS,GAAK1B,EAAK5C,EAAK,MAAM,IAAI,OAAO4C,CAAE,EAAI0B,EAChGE,EAAQ,KAAK,IAAIH,EAAE,KAAMC,EAAS,IAAI,EAAGG,EAAM,KAAK,IAAIJ,EAAE,GAAIE,EAAO,EAAE,EAC3E,GAAI,KAAK,SAAU,CACf,KAAO5B,EAAO2B,EAAS,KAAM3B,IACzB,GAAI,KAAK,SAAS,KAAK2B,EAAS,KAAK3B,EAAO,EAAI2B,EAAS,IAAI,CAAC,EAAG,CAC7DE,EAAQ7B,EACR,KACJ,CACJ,KAAOC,EAAK2B,EAAO,GAAI3B,IACnB,GAAI,KAAK,SAAS,KAAK2B,EAAO,KAAK3B,EAAK2B,EAAO,IAAI,CAAC,EAAG,CACnDE,EAAM7B,EACN,KACJ,CACR,CACA,IAAI1B,EAAS,CAAC,EAAG4B,EACbY,EAAM7D,EAAA,CAAC8C,EAAMC,EAAIe,IAASzC,EAAO,KAAKyC,EAAK,MAAMhB,EAAMC,CAAE,CAAC,EAApD,OACV,GAAI0B,GAAYC,EAEZ,IADA,KAAK,OAAO,UAAYC,EAAQF,EAAS,MACjCxB,EAAI,KAAK,OAAO,KAAKwB,EAAS,IAAI,IAAMxB,EAAE,MAAQ2B,EAAMH,EAAS,MACrE,KAAK,SAASxB,EAAG9C,EAAM8C,EAAE,MAAQwB,EAAS,KAAMZ,CAAG,OAGvDlB,GAAYxC,EAAK,MAAM,IAAK,KAAK,OAAQwE,EAAOC,EAAK,CAAC9B,EAAMG,IAAM,KAAK,SAASA,EAAG9C,EAAM2C,EAAMe,CAAG,CAAC,EAEvGC,EAAOA,EAAK,OAAO,CAAE,WAAYa,EAAO,SAAUC,EAAK,OAAQ5E,EAAA,CAAC8C,EAAMC,IAAOD,EAAO6B,GAAS5B,EAAK6B,EAAnC,UAAwC,IAAKvD,CAAO,CAAC,CACxH,CACJ,CACA,OAAOyC,CACX,CACJ,EAEMe,GAAuB,IAAI,SAAW,KAAO,KAAO,IACpDC,GAAwB,IAAI,OAAO;AAAA,uGAAwID,EAAoB,EAC/LE,GAAQ,CACV,EAAG,OACH,EAAG,OACH,EAAG,YACH,GAAI,UACJ,GAAI,eACJ,GAAI,kBACJ,GAAI,SACJ,KAAM,mBACN,KAAM,wBACN,KAAM,oBACN,KAAM,qBACN,KAAM,qBACN,KAAM,iBACN,KAAM,yBACN,KAAM,yBACN,KAAM,wBACN,KAAM,wBACN,KAAM,0BACN,KAAM,sBACN,MAAO,4BACP,MAAO,oBACX,EACIC,GAAmB,KACvB,SAASC,IAAkB,CACvB,IAAI9C,EACJ,GAAI6C,IAAoB,MAAQ,OAAO,SAAY,KAAe,SAAS,KAAM,CAC7E,IAAIE,EAAS,SAAS,KAAK,MAC3BF,KAAqB7C,EAAK+C,EAAO,WAAa,MAAQ/C,IAAO,OAASA,EAAK+C,EAAO,aAAe,IACrG,CACA,OAAOF,IAAoB,EAC/B,CAPShF,EAAAiF,GAAA,mBAQT,IAAME,GAAiCC,EAAM,OAAO,CAChD,QAAQC,EAAS,CACb,IAAI9B,EAAS+B,GAAcD,EAAS,CAChC,OAAQ,KACR,aAAcP,GACd,gBAAiB,IACrB,CAAC,EACD,OAAIvB,EAAO,YAAc,CAAC0B,GAAgB,KACtC1B,EAAO,aAAe,IAAI,OAAO,KAAQA,EAAO,aAAa,OAAQsB,EAAoB,GACzFtB,EAAO,kBACPA,EAAO,aAAe,IAAI,OAAOA,EAAO,aAAa,OAAS,IAAMA,EAAO,gBAAgB,OAAQsB,EAAoB,GACpHtB,CACX,CACJ,CAAC,EAKD,SAASgC,GAIThC,EAAS,CAAC,EAAG,CACT,MAAO,CAAC4B,GAAkB,GAAG5B,CAAM,EAAGiC,GAAkB,CAAC,CAC7D,CANSxF,EAAAuF,GAAA,yBAOT,IAAIE,GAAU,KACd,SAASD,IAAoB,CACzB,OAAOC,KAAYA,GAAUvD,GAAW,UAAU,KAAM,CACpD,YAAY/B,EAAM,CACd,KAAK,KAAOA,EACZ,KAAK,YAAcuF,EAAW,KAC9B,KAAK,gBAAkB,OAAO,OAAO,IAAI,EACzC,KAAK,UAAY,KAAK,cAAcvF,EAAK,MAAM,MAAMgF,EAAiB,CAAC,EACvE,KAAK,YAAc,KAAK,UAAU,WAAWhF,CAAI,CACrD,CACA,cAAcE,EAAM,CAChB,OAAO,IAAIiD,GAAe,CACtB,OAAQjD,EAAK,aACb,WAAYL,EAAA,CAACiD,EAAG9C,EAAMyB,IAAQ,CAC1B,GAAI,CAAE,IAAAgB,CAAI,EAAIzC,EAAK,MACfwF,EAAOC,GAAY3C,EAAE,CAAC,EAAG,CAAC,EAC9B,GAAI0C,GAAQ,EAAG,CACX,IAAIE,EAAOjD,EAAI,OAAOhB,CAAG,EACrBkE,EAAO3F,EAAK,MAAM,QAAS4F,EAAMC,GAAYH,EAAK,KAAMC,EAAMlE,EAAMiE,EAAK,IAAI,EACjF,OAAOH,EAAW,QAAQ,CACtB,OAAQ,IAAIO,IAAWH,EAAQC,EAAMD,GAAS,KAAK,KAAK,sBAAwB,KAAK,KAAK,MAAM,CACpG,CAAC,CACL,CACA,OAAO,KAAK,gBAAgBH,CAAI,IAC3B,KAAK,gBAAgBA,CAAI,EAAID,EAAW,QAAQ,CAAE,OAAQ,IAAIQ,GAAkB7F,EAAMsF,CAAI,CAAE,CAAC,EACtG,EAZY,cAaZ,SAAUtF,EAAK,YAAc,OAAY,KAC7C,CAAC,CACL,CACA,OAAOP,EAAQ,CACX,IAAIO,EAAOP,EAAO,MAAM,MAAMqF,EAAiB,EAC3CrF,EAAO,WAAW,MAAMqF,EAAiB,GAAK9E,GAC9C,KAAK,UAAY,KAAK,cAAcA,CAAI,EACxC,KAAK,YAAc,KAAK,UAAU,WAAWP,EAAO,IAAI,GAGxD,KAAK,YAAc,KAAK,UAAU,WAAWA,EAAQ,KAAK,WAAW,CAE7E,CACJ,EAAG,CACC,YAAaE,EAAAmG,GAAKA,EAAE,YAAP,cACjB,CAAC,EACL,CAzCSnG,EAAAwF,GAAA,qBA0CT,IAAMY,GAAqB,SAG3B,SAASC,GAAcV,EAAM,CACzB,OAAIA,GAAQ,GACDS,GACPT,GAAQ,GACD,SACJ,OAAO,aAAa,KAAOA,CAAI,CAC1C,CANS3F,EAAAqG,GAAA,iBAOT,IAAMH,GAAN,cAAgCI,EAAW,CA5pT3C,MA4pT2C,CAAAtG,EAAA,0BACvC,YAAYuG,EAASZ,EAAM,CACvB,MAAM,EACN,KAAK,QAAUY,EACf,KAAK,KAAOZ,CAChB,CACA,GAAGa,EAAO,CAAE,OAAOA,EAAM,MAAQ,KAAK,IAAM,CAC5C,MAAMrG,EAAM,CACR,IAAIsG,EAAKJ,GAAc,KAAK,IAAI,EAC5BK,EAAOvG,EAAK,MAAM,OAAO,mBAAmB,EAAI,KAAO4E,GAAM,KAAK,IAAI,GAAK,KAAO,KAAK,KAAK,SAAS,EAAE,GACvG4B,EAAS,KAAK,QAAQ,QAAU,KAAK,QAAQ,OAAO,KAAK,KAAMD,EAAMD,CAAE,EAC3E,GAAIE,EACA,OAAOA,EACX,IAAIC,EAAO,SAAS,cAAc,MAAM,EACxC,OAAAA,EAAK,YAAcH,EACnBG,EAAK,MAAQF,EACbE,EAAK,aAAa,aAAcF,CAAI,EACpCE,EAAK,UAAY,iBACVA,CACX,CACA,aAAc,CAAE,MAAO,EAAO,CAClC,EACMX,GAAN,cAAwBK,EAAW,CAlrTnC,MAkrTmC,CAAAtG,EAAA,kBAC/B,YAAY6G,EAAO,CACf,MAAM,EACN,KAAK,MAAQA,CACjB,CACA,GAAGL,EAAO,CAAE,OAAOA,EAAM,OAAS,KAAK,KAAO,CAC9C,OAAQ,CACJ,IAAII,EAAO,SAAS,cAAc,MAAM,EACxC,OAAAA,EAAK,YAAc,IACnBA,EAAK,UAAY,SACjBA,EAAK,MAAM,MAAQ,KAAK,MAAQ,KACzBA,CACX,CACA,aAAc,CAAE,MAAO,EAAO,CAClC,EAkCA,SAASE,IAAsB,CAC3B,OAAOC,EACX,CAFSC,EAAAF,GAAA,uBAGT,IAAMG,GAAwBC,EAAW,KAAK,CAAE,MAAO,eAAgB,CAAC,EAClEH,GAAqCI,GAAW,UAAU,KAAM,CAClE,YAAYC,EAAM,CACd,KAAK,YAAc,KAAK,QAAQA,CAAI,CACxC,CACA,OAAOC,EAAQ,EACPA,EAAO,YAAcA,EAAO,gBAC5B,KAAK,YAAc,KAAK,QAAQA,EAAO,IAAI,EACnD,CACA,QAAQD,EAAM,CACV,IAAIE,EAAgB,GAAIC,EAAO,CAAC,EAChC,QAASC,KAAKJ,EAAK,MAAM,UAAU,OAAQ,CACvC,IAAIK,EAAOL,EAAK,YAAYI,EAAE,IAAI,EAC9BC,EAAK,KAAOH,IACZC,EAAK,KAAKN,GAAS,MAAMQ,EAAK,IAAI,CAAC,EACnCH,EAAgBG,EAAK,KAE7B,CACA,OAAOP,EAAW,IAAIK,CAAI,CAC9B,CACJ,EAAG,CACC,YAAaP,EAAAU,GAAKA,EAAE,YAAP,cACjB,CAAC,EAmDD,IAAMC,GAAS,IACf,SAASC,GAAaC,EAAOC,EAAGC,EAAG,CAC/B,IAAIC,EAAY,KAAK,IAAIF,EAAE,KAAMC,EAAE,IAAI,EAAGE,EAAU,KAAK,IAAIH,EAAE,KAAMC,EAAE,IAAI,EACvEG,EAAS,CAAC,EACd,GAAIJ,EAAE,IAAMH,IAAUI,EAAE,IAAMJ,IAAUG,EAAE,IAAM,GAAKC,EAAE,IAAM,EAAG,CAC5D,IAAII,EAAW,KAAK,IAAIL,EAAE,IAAKC,EAAE,GAAG,EAAGK,EAAS,KAAK,IAAIN,EAAE,IAAKC,EAAE,GAAG,EACrE,QAASM,EAAIL,EAAWK,GAAKJ,EAASI,IAAK,CACvC,IAAIC,EAAOT,EAAM,IAAI,KAAKQ,CAAC,EACvBC,EAAK,QAAUF,GACfF,EAAO,KAAKK,EAAgB,MAAMD,EAAK,KAAOH,EAAUG,EAAK,GAAKF,CAAM,CAAC,CACjF,CACJ,KACK,CACD,IAAII,EAAW,KAAK,IAAIV,EAAE,IAAKC,EAAE,GAAG,EAAGU,EAAS,KAAK,IAAIX,EAAE,IAAKC,EAAE,GAAG,EACrE,QAASM,EAAIL,EAAWK,GAAKJ,EAASI,IAAK,CACvC,IAAIC,EAAOT,EAAM,IAAI,KAAKQ,CAAC,EACvBK,EAAQC,GAAWL,EAAK,KAAME,EAAUX,EAAM,QAAS,EAAI,EAC/D,GAAIa,EAAQ,EACRR,EAAO,KAAKK,EAAgB,OAAOD,EAAK,EAAE,CAAC,MAE1C,CACD,IAAIM,EAAMD,GAAWL,EAAK,KAAMG,EAAQZ,EAAM,OAAO,EACrDK,EAAO,KAAKK,EAAgB,MAAMD,EAAK,KAAOI,EAAOJ,EAAK,KAAOM,CAAG,CAAC,CACzE,CACJ,CACJ,CACA,OAAOV,CACX,CA1BSW,EAAAjB,GAAA,gBA2BT,SAASkB,GAAeC,EAAMC,EAAG,CAC7B,IAAIC,EAAMF,EAAK,YAAYA,EAAK,SAAS,IAAI,EAC7C,OAAOE,EAAM,KAAK,MAAM,KAAK,KAAKA,EAAI,KAAOD,GAAKD,EAAK,qBAAqB,CAAC,EAAI,EACrF,CAHSF,EAAAC,GAAA,kBAIT,SAASI,GAAOH,EAAMI,EAAO,CACzB,IAAIC,EAASL,EAAK,YAAY,CAAE,EAAGI,EAAM,QAAS,EAAGA,EAAM,OAAQ,EAAG,EAAK,EACvEb,EAAOS,EAAK,MAAM,IAAI,OAAOK,CAAM,EAAGC,EAAMD,EAASd,EAAK,KAC1DgB,EAAMD,EAAM1B,GAAS,GACnB0B,GAAOf,EAAK,OAASQ,GAAeC,EAAMI,EAAM,OAAO,EACnDI,GAAYjB,EAAK,KAAMS,EAAK,MAAM,QAASK,EAASd,EAAK,IAAI,EACvE,MAAO,CAAE,KAAMA,EAAK,OAAQ,IAAAgB,EAAK,IAAAD,CAAI,CACzC,CAPSR,EAAAK,GAAA,UAQT,SAASM,GAAwBT,EAAMI,EAAO,CAC1C,IAAIT,EAAQQ,GAAOH,EAAMI,CAAK,EAAGM,EAAWV,EAAK,MAAM,UACvD,OAAKL,EAEE,CACH,OAAOgB,EAAQ,CACX,GAAIA,EAAO,WAAY,CACnB,IAAIC,EAAWD,EAAO,QAAQ,OAAOA,EAAO,WAAW,IAAI,KAAKhB,EAAM,IAAI,EAAE,IAAI,EAC5EkB,EAAUF,EAAO,MAAM,IAAI,OAAOC,CAAQ,EAC9CjB,EAAQ,CAAE,KAAMkB,EAAQ,OAAQ,IAAKlB,EAAM,IAAK,IAAK,KAAK,IAAIA,EAAM,IAAKkB,EAAQ,MAAM,CAAE,EACzFH,EAAWA,EAAS,IAAIC,EAAO,OAAO,CAC1C,CACJ,EACA,IAAIP,EAAOU,EAASC,EAAU,CAC1B,IAAIC,EAAMb,GAAOH,EAAMI,CAAK,EAC5B,GAAI,CAACY,EACD,OAAON,EACX,IAAIvB,EAASN,GAAamB,EAAK,MAAOL,EAAOqB,CAAG,EAChD,OAAK7B,EAAO,OAER4B,EACOvB,EAAgB,OAAOL,EAAO,OAAOuB,EAAS,MAAM,CAAC,EAErDlB,EAAgB,OAAOL,CAAM,EAJ7BuB,CAKf,CACJ,EAtBW,IAuBf,CA1BSZ,EAAAW,GAAA,2BAkCT,SAASQ,GAAqBC,EAAS,CACnC,IAAIC,EAA4DD,GAAQ,cAAiBE,GAAKA,EAAE,QAAUA,EAAE,QAAU,GACtH,OAAOC,EAAW,oBAAoB,GAAG,CAACrB,EAAMI,IAAUe,EAAOf,CAAK,EAAIK,GAAwBT,EAAMI,CAAK,EAAI,IAAI,CACzH,CAHSN,EAAAmB,GAAA,wBAIT,IAAMK,GAAO,CACT,IAAK,CAAC,GAAIF,GAAK,CAAC,CAACA,EAAE,MAAM,EACzB,QAAS,CAAC,GAAIA,GAAK,CAAC,CAACA,EAAE,OAAO,EAC9B,MAAO,CAAC,GAAIA,GAAK,CAAC,CAACA,EAAE,QAAQ,EAC7B,KAAM,CAAC,GAAIA,GAAK,CAAC,CAACA,EAAE,OAAO,CAC/B,EACMG,GAAgB,CAAE,MAAO,mBAAoB,EAQnD,SAASC,GAAgBN,EAAU,CAAC,EAAG,CACnC,GAAI,CAACO,EAAMC,CAAM,EAAIJ,GAAKJ,EAAQ,KAAO,KAAK,EAC1CS,EAASC,GAAW,UAAU,KAAM,CACpC,YAAY5B,EAAM,CACd,KAAK,KAAOA,EACZ,KAAK,OAAS,EAClB,CACA,IAAI6B,EAAQ,CACJ,KAAK,QAAUA,IACf,KAAK,OAASA,EACd,KAAK,KAAK,OAAO,CAAC,CAAC,EAE3B,CACJ,EAAG,CACC,eAAgB,CACZ,QAAQT,EAAG,CACP,KAAK,IAAIA,EAAE,SAAWK,GAAQC,EAAON,CAAC,CAAC,CAC3C,EACA,MAAMA,EAAG,EACDA,EAAE,SAAWK,GAAQ,CAACC,EAAON,CAAC,IAC9B,KAAK,IAAI,EAAK,CACtB,EACA,UAAUA,EAAG,CACT,KAAK,IAAIM,EAAON,CAAC,CAAC,CACtB,CACJ,CACJ,CAAC,EACD,MAAO,CACHO,EACAN,EAAW,kBAAkB,GAAGrB,GAAQ,CAAE,IAAI8B,EAAI,MAAS,GAAAA,EAAK9B,EAAK,OAAO2B,CAAM,KAAO,MAAQG,IAAO,SAAkBA,EAAG,OAAUP,GAAgB,IAAM,CAAC,CAClK,CACJ,CA/BSzB,EAAA0B,GAAA,mBAiCT,IAAMO,GAAU,WACVC,GAAN,KAAyB,CA56TzB,MA46TyB,CAAAlC,EAAA,2BACrB,YAAYE,EAAMiC,EAAOC,EAAmBC,EAAmB,CAC3D,KAAK,MAAQF,EACb,KAAK,kBAAoBC,EACzB,KAAK,kBAAoBC,EACzB,KAAK,MAAQnC,EAAK,MAAM,MAAMiC,CAAK,EACnC,KAAK,SAAW,KAAK,MAAM,OAAOG,GAAKA,CAAC,EACxC,IAAIC,EAAO,KACX,KAAK,aAAe,KAAK,SAAS,IAAID,GAAKC,EAAOH,EAAkBE,EAAGC,CAAI,CAAC,CAChF,CACA,OAAO1B,EAAQ2B,EAAO,CAClB,IAAIR,EACJ,IAAIS,EAAQ5B,EAAO,MAAM,MAAM,KAAK,KAAK,EACrC6B,EAAWD,EAAM,OAAOtC,GAAKA,CAAC,EAClC,GAAIsC,IAAU,KAAK,MAAO,CACtB,QAASH,KAAK,KAAK,aACXA,EAAE,QACFA,EAAE,OAAOzB,CAAM,EACvB,MAAO,EACX,CACA,IAAI8B,EAAe,CAAC,EAAGC,EAAWJ,EAAQ,CAAC,EAAI,KAC/C,QAAShD,EAAI,EAAGA,EAAIkD,EAAS,OAAQlD,IAAK,CACtC,IAAIqD,EAAMH,EAASlD,CAAC,EAAGsD,EAAQ,GAC/B,GAAKD,EAEL,SAASrD,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQA,IAAK,CAC3C,IAAIuD,EAAQ,KAAK,SAASvD,CAAC,EACvBuD,GAASA,EAAM,QAAUF,EAAI,SAC7BC,EAAQtD,EAChB,CACA,GAAIsD,EAAQ,EACRH,EAAanD,CAAC,EAAI,KAAK,kBAAkBqD,EAAKrD,EAAImD,EAAanD,EAAI,CAAC,EAAI,IAAI,EACxEoD,IACAA,EAASpD,CAAC,EAAI,CAAC,CAACqD,EAAI,WAEvB,CACD,IAAIG,EAAcL,EAAanD,CAAC,EAAI,KAAK,aAAasD,CAAK,EACvDF,IACAA,EAASpD,CAAC,EAAIgD,EAAMM,CAAK,GACzBE,EAAY,QACZA,EAAY,OAAOnC,CAAM,CACjC,EACJ,CACA,QAASyB,KAAK,KAAK,aACXK,EAAa,QAAQL,CAAC,EAAI,IAC1B,KAAK,kBAAkBA,CAAC,GACvBN,EAAKM,EAAE,WAAa,MAAQN,IAAO,QAAkBA,EAAG,KAAKM,CAAC,GAEvE,OAAIE,IACAI,EAAS,QAAQ,CAACK,EAAKzD,IAAMgD,EAAMhD,CAAC,EAAIyD,CAAG,EAC3CT,EAAM,OAASI,EAAS,QAE5B,KAAK,MAAQH,EACb,KAAK,SAAWC,EAChB,KAAK,aAAeC,EACb,EACX,CACJ,EAOA,SAASO,GAAYC,EAAM,CACvB,IAAIC,EAASD,EAAK,IAAI,cAAc,gBACpC,MAAO,CAAE,IAAK,EAAG,KAAM,EAAG,OAAQC,EAAO,aAAc,MAAOA,EAAO,WAAY,CACrF,CAHSC,EAAAH,GAAA,eAIT,IAAMI,GAA6BC,EAAM,OAAO,CAC5C,QAASF,EAAAG,GAAU,CACf,IAAIC,EAAIC,EAAIC,EACZ,MAAQ,CACJ,SAAUC,EAAQ,IAAM,aAAeH,EAAKD,EAAO,KAAKK,GAAQA,EAAK,QAAQ,KAAO,MAAQJ,IAAO,OAAS,OAASA,EAAG,WAAa,QACrI,SAAUC,EAAKF,EAAO,KAAKK,GAAQA,EAAK,MAAM,KAAO,MAAQH,IAAO,OAAS,OAASA,EAAG,SAAW,KACpG,eAAgBC,EAAKH,EAAO,KAAKK,GAAQA,EAAK,YAAY,KAAO,MAAQF,IAAO,OAAS,OAASA,EAAG,eAAiBT,EAC1H,CACJ,EAPS,UAQb,CAAC,EACKY,GAA2B,IAAI,QAC/BC,GAA6BC,GAAW,UAAU,KAAM,CAC1D,YAAYb,EAAM,CACd,KAAK,KAAOA,EACZ,KAAK,MAAQ,CAAC,EACd,KAAK,OAAS,GACd,KAAK,aAAe,GACpB,KAAK,gBAAkB,EACvB,KAAK,eAAiB,GACtB,IAAIc,EAASd,EAAK,MAAM,MAAMG,EAAa,EAC3C,KAAK,SAAWW,EAAO,SACvB,KAAK,OAASA,EAAO,OACrB,KAAK,QAAUd,EAAK,aACpB,KAAK,gBAAgB,EACrB,KAAK,WAAa,CAAE,KAAM,KAAK,YAAY,KAAK,IAAI,EAAG,MAAO,KAAK,aAAa,KAAK,IAAI,EAAG,IAAK,IAAK,EACtG,KAAK,eAAiB,OAAO,gBAAkB,WAAa,IAAI,eAAe,IAAM,KAAK,YAAY,CAAC,EAAI,KAC3G,KAAK,QAAU,IAAIe,GAAmBf,EAAMgB,GAAa,CAAC,EAAGC,IAAM,KAAK,cAAc,EAAGA,CAAC,EAAG,GAAK,CAC1F,KAAK,gBACL,KAAK,eAAe,UAAU,EAAE,GAAG,EACvC,EAAE,IAAI,OAAO,CACjB,CAAC,EACD,KAAK,MAAQ,KAAK,QAAQ,SAAS,IAAI,GAAK,CAAC,CAAC,EAAE,KAAK,EACrD,KAAK,qBAAuB,OAAO,sBAAwB,WAAa,IAAI,qBAAqBC,GAAW,CACpG,KAAK,IAAI,EAAI,KAAK,gBAAkB,IACpCA,EAAQ,OAAS,GAAKA,EAAQA,EAAQ,OAAS,CAAC,EAAE,kBAAoB,GACtE,KAAK,YAAY,CACzB,EAAG,CAAE,UAAW,CAAC,CAAC,CAAE,CAAC,EAAI,KACzB,KAAK,oBAAoB,EACzBlB,EAAK,IAAI,iBAAiB,SAAU,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,CAAC,EAClF,KAAK,aAAa,CACtB,CACA,iBAAkB,CACV,KAAK,QACL,KAAK,UAAY,SAAS,cAAc,KAAK,EAC7C,KAAK,UAAU,MAAM,SAAW,WAChC,KAAK,UAAU,UAAY,KAAK,KAAK,aACrC,KAAK,OAAO,YAAY,KAAK,SAAS,GAGtC,KAAK,UAAY,KAAK,KAAK,GAEnC,CACA,qBAAsB,CAClB,GAAI,KAAK,qBAAsB,CAC3B,KAAK,qBAAqB,WAAW,EACrC,QAASmB,KAAW,KAAK,QAAQ,aAC7B,KAAK,qBAAqB,QAAQA,EAAQ,GAAG,CACrD,CACJ,CACA,aAAc,CACN,KAAK,eAAiB,IACtB,KAAK,eAAiB,WAAW,IAAM,CACnC,KAAK,eAAiB,GACtB,KAAK,aAAa,CACtB,EAAG,EAAE,EACb,CACA,OAAOC,EAAQ,CACPA,EAAO,aAAa,SACpB,KAAK,gBAAkB,KAAK,IAAI,GACpC,IAAIC,EAAU,KAAK,QAAQ,OAAOD,EAAQ,KAAK,KAAK,EAChDC,GACA,KAAK,oBAAoB,EAC7B,IAAIC,EAAgBD,GAAWD,EAAO,gBAClCG,EAAYH,EAAO,MAAM,MAAMjB,EAAa,EAChD,GAAIoB,EAAU,UAAY,KAAK,UAAY,CAAC,KAAK,aAAc,CAC3D,KAAK,SAAWA,EAAU,SAC1B,QAASC,KAAK,KAAK,QAAQ,aACvBA,EAAE,IAAI,MAAM,SAAW,KAAK,SAChCF,EAAgB,EACpB,CACA,GAAIC,EAAU,QAAU,KAAK,OAAQ,CAC7B,KAAK,QACL,KAAK,UAAU,OAAO,EAC1B,KAAK,OAASA,EAAU,OACxB,KAAK,gBAAgB,EACrB,QAASC,KAAK,KAAK,QAAQ,aACvB,KAAK,UAAU,YAAYA,EAAE,GAAG,EACpCF,EAAgB,EACpB,MACS,KAAK,QAAU,KAAK,KAAK,cAAgB,KAAK,UACnD,KAAK,QAAU,KAAK,UAAU,UAAY,KAAK,KAAK,cAEpDA,GACA,KAAK,aAAa,CAC1B,CACA,cAAcH,EAASM,EAAM,CACzB,IAAIC,EAAcP,EAAQ,OAAO,KAAK,IAAI,EACtCQ,EAASF,EAAOA,EAAK,IAAM,KAE/B,GADAC,EAAY,IAAI,UAAU,IAAI,YAAY,EACtCP,EAAQ,OAAS,CAACO,EAAY,IAAI,cAAc,iCAAiC,EAAG,CACpF,IAAIE,EAAQ,SAAS,cAAc,KAAK,EACxCA,EAAM,UAAY,mBAClBF,EAAY,IAAI,YAAYE,CAAK,CACrC,CACA,OAAAF,EAAY,IAAI,MAAM,SAAW,KAAK,SACtCA,EAAY,IAAI,MAAM,IAAMG,GAC5BH,EAAY,IAAI,MAAM,KAAO,MAC7B,KAAK,UAAU,aAAaA,EAAY,IAAKC,CAAM,EAC/CD,EAAY,OACZA,EAAY,MAAM,KAAK,IAAI,EAC3B,KAAK,gBACL,KAAK,eAAe,QAAQA,EAAY,GAAG,EACxCA,CACX,CACA,SAAU,CACN,IAAIpB,EAAIC,EAAIC,EACZ,KAAK,KAAK,IAAI,oBAAoB,SAAU,KAAK,WAAW,EAC5D,QAASkB,KAAe,KAAK,QAAQ,aACjCA,EAAY,IAAI,OAAO,GACtBpB,EAAKoB,EAAY,WAAa,MAAQpB,IAAO,QAAkBA,EAAG,KAAKoB,CAAW,EAEnF,KAAK,QACL,KAAK,UAAU,OAAO,GACzBnB,EAAK,KAAK,kBAAoB,MAAQA,IAAO,QAAkBA,EAAG,WAAW,GAC7EC,EAAK,KAAK,wBAA0B,MAAQA,IAAO,QAAkBA,EAAG,WAAW,EACpF,aAAa,KAAK,cAAc,CACpC,CACA,aAAc,CACV,IAAIsB,EAAS,EAAGC,EAAS,EAAGC,EAAe,GAC3C,GAAI,KAAK,UAAY,SAAW,KAAK,QAAQ,aAAa,OAAQ,CAC9D,GAAI,CAAE,IAAAC,CAAI,EAAI,KAAK,QAAQ,aAAa,CAAC,EACzC,GAAIxB,EAAQ,OAAQ,CAIhB,IAAIyB,EAAOD,EAAI,sBAAsB,EACrCD,EAAe,KAAK,IAAIE,EAAK,IAAM,GAAK,EAAI,GAAK,KAAK,IAAIA,EAAK,IAAI,EAAI,CAC3E,MAIIF,EAAe,CAAC,CAACC,EAAI,cAAgBA,EAAI,cAAgB,KAAK,UAAU,cAAc,IAE9F,CACA,GAAID,GAAgB,KAAK,UAAY,WACjC,GAAI,KAAK,OAAQ,CACb,IAAIE,EAAO,KAAK,OAAO,sBAAsB,EACzCA,EAAK,OAASA,EAAK,SACnBJ,EAASI,EAAK,MAAQ,KAAK,OAAO,YAClCH,EAASG,EAAK,OAAS,KAAK,OAAO,aAE3C,MAEK,CAAE,OAAAJ,EAAQ,OAAAC,CAAO,EAAI,KAAK,KAAK,WAGxC,IAAII,EAAU,KAAK,KAAK,UAAU,sBAAsB,EAAGC,EAAUC,GAAiB,KAAK,IAAI,EAC/F,MAAO,CACH,QAAS,CACL,KAAMF,EAAQ,KAAOC,EAAQ,KAAM,IAAKD,EAAQ,IAAMC,EAAQ,IAC9D,MAAOD,EAAQ,MAAQC,EAAQ,MAAO,OAAQD,EAAQ,OAASC,EAAQ,MAC3E,EACA,OAAQ,KAAK,OAAS,KAAK,UAAU,sBAAsB,EAAI,KAAK,KAAK,IAAI,sBAAsB,EACnG,IAAK,KAAK,QAAQ,SAAS,IAAI,CAACZ,EAAGc,IAAM,CACrC,IAAIC,EAAK,KAAK,QAAQ,aAAaD,CAAC,EACpC,OAAOC,EAAG,UAAYA,EAAG,UAAUf,EAAE,GAAG,EAAI,KAAK,KAAK,YAAYA,EAAE,GAAG,CAC3E,CAAC,EACD,KAAM,KAAK,QAAQ,aAAa,IAAI,CAAC,CAAE,IAAAS,CAAI,IAAMA,EAAI,sBAAsB,CAAC,EAC5E,MAAO,KAAK,KAAK,MAAM,MAAM9B,EAAa,EAAE,aAAa,KAAK,IAAI,EAClE,OAAA2B,EAAQ,OAAAC,EAAQ,aAAAC,CACpB,CACJ,CACA,aAAaQ,EAAU,CACnB,IAAIlC,EACJ,GAAIkC,EAAS,aAAc,CACvB,KAAK,aAAe,GACpB,KAAK,SAAW,WAChB,QAAShB,KAAK,KAAK,QAAQ,aACvBA,EAAE,IAAI,MAAM,SAAW,UAC/B,CACA,GAAI,CAAE,QAAAW,EAAS,MAAAM,EAAO,OAAAX,EAAQ,OAAAC,CAAO,EAAIS,EACrCE,EAAS,CAAC,EACd,QAASJ,EAAI,EAAGA,EAAI,KAAK,QAAQ,SAAS,OAAQA,IAAK,CACnD,IAAInB,EAAU,KAAK,QAAQ,SAASmB,CAAC,EAAGK,EAAQ,KAAK,QAAQ,aAAaL,CAAC,EAAG,CAAE,IAAAL,CAAI,EAAIU,EACpFC,EAAMJ,EAAS,IAAIF,CAAC,EAAGO,EAAOL,EAAS,KAAKF,CAAC,EAEjD,GAAI,CAACM,GAAOzB,EAAQ,OAAS,KAAUyB,EAAI,QAAU,KAAK,IAAIT,EAAQ,IAAKM,EAAM,GAAG,GAChFG,EAAI,KAAO,KAAK,IAAIT,EAAQ,OAAQM,EAAM,MAAM,GAChDG,EAAI,MAAQ,KAAK,IAAIT,EAAQ,KAAMM,EAAM,IAAI,EAAI,IACjDG,EAAI,KAAO,KAAK,IAAIT,EAAQ,MAAOM,EAAM,KAAK,EAAI,IAAK,CACvDR,EAAI,MAAM,IAAMJ,GAChB,QACJ,CACA,IAAID,EAAQT,EAAQ,MAAQwB,EAAM,IAAI,cAAc,mBAAmB,EAAI,KACvEG,EAAclB,EAAQ,EAAqB,EAC3CmB,EAAQF,EAAK,MAAQA,EAAK,KAAMG,GAAU1C,EAAKK,GAAY,IAAIgC,CAAK,KAAO,MAAQrC,IAAO,OAASA,EAAKuC,EAAK,OAASA,EAAK,IAC3HI,EAASN,EAAM,QAAUO,GAAUC,EAAM,KAAK,KAAK,eAAiBC,EAAU,IAC9EC,EAAOR,EAAK,MAAQJ,EAAM,MAAQA,EAAM,KACrCU,EAAMV,EAAM,KAAOA,EAAM,MAAQI,EAAK,MACvCM,EAAM,KAAK,IAAIV,EAAM,KAAM,KAAK,IAAIG,EAAI,MAAQhB,EAAQ,GAAwB,GAAKqB,EAAO,EAAGR,EAAM,MAAQM,CAAK,CAAC,EAC/G,KAAK,IAAI,KAAK,IAAIN,EAAM,KAAMG,EAAI,KAAOG,GAASnB,EAAQ,GAAwB,GAAKqB,EAAO,CAAC,EAAGR,EAAM,MAAQM,CAAK,EAC3HO,EAAQ,KAAK,MAAMhB,CAAC,EACpB,CAACnB,EAAQ,aAAemC,EACtBV,EAAI,IAAMI,EAASF,EAAcG,EAAO,EAAIR,EAAM,IAClDG,EAAI,OAASI,EAASF,EAAcG,EAAO,EAAIR,EAAM,SACvDa,GAAUb,EAAM,OAASG,EAAI,OAASA,EAAI,IAAMH,EAAM,MACtDa,EAAQ,KAAK,MAAMhB,CAAC,EAAI,CAACgB,GAC7B,IAAIC,GAAaD,EAAQV,EAAI,IAAMH,EAAM,IAAMA,EAAM,OAASG,EAAI,QAAUE,EAC5E,GAAIS,EAAYP,GAAUL,EAAM,SAAW,GAAO,CAC9C,GAAIY,EAAY,KAAK,KAAK,kBAAmB,CACzCtB,EAAI,MAAM,IAAMJ,GAChB,QACJ,CACAlB,GAAY,IAAIgC,EAAOK,CAAM,EAC7Bf,EAAI,MAAM,QAAUe,EAASO,GAAaxB,EAAS,IACvD,MACSE,EAAI,MAAM,SACfA,EAAI,MAAM,OAAS,IAEvB,IAAIuB,EAAMF,EAAQV,EAAI,IAAMI,EAASF,EAAcG,EAAO,EAAIL,EAAI,OAASE,EAAcG,EAAO,EAC5FQ,EAAQJ,EAAON,EACnB,GAAIJ,EAAM,UAAY,GAClB,QAASe,KAAKhB,EACNgB,EAAE,KAAOD,GAASC,EAAE,MAAQL,GAAQK,EAAE,IAAMF,EAAMR,GAAUU,EAAE,OAASF,IACvEA,EAAMF,EAAQI,EAAE,IAAMV,EAAS,EAAIF,EAAcY,EAAE,OAASZ,EAAc,GAStF,GARI,KAAK,UAAY,YACjBb,EAAI,MAAM,KAAOuB,EAAMhB,EAAS,OAAO,KAAOT,EAAS,KACvD4B,GAAa1B,GAAMoB,EAAOb,EAAS,OAAO,MAAQV,CAAM,IAGxDG,EAAI,MAAM,IAAMuB,EAAMzB,EAAS,KAC/B4B,GAAa1B,EAAKoB,EAAOvB,CAAM,GAE/BF,EAAO,CACP,IAAIgC,EAAYhB,EAAI,MAAQO,EAAMF,EAAO,EAAI,CAACA,EAAO,IAAMI,EAAO,GAAwB,GAC1FzB,EAAM,MAAM,KAAOgC,EAAY9B,EAAS,IAC5C,CACIa,EAAM,UAAY,IAClBD,EAAO,KAAK,CAAE,KAAAW,EAAM,IAAAG,EAAK,MAAAC,EAAO,OAAQD,EAAMR,CAAO,CAAC,EAC1Df,EAAI,UAAU,OAAO,mBAAoBqB,CAAK,EAC9CrB,EAAI,UAAU,OAAO,mBAAoB,CAACqB,CAAK,EAC3CX,EAAM,YACNA,EAAM,WAAWH,EAAS,KAAK,CACvC,CACJ,CACA,cAAe,CACX,GAAI,KAAK,QAAQ,SAAS,SAClB,KAAK,KAAK,QACV,KAAK,KAAK,eAAe,KAAK,UAAU,EACxC,KAAK,QAAU,KAAK,KAAK,SACzB,KAAK,OAAS,KAAK,KAAK,OACpB,CAAC,KAAK,SACN,QAASD,KAAM,KAAK,QAAQ,aACxBA,EAAG,IAAI,MAAM,IAAMV,EAGvC,CACJ,EAAG,CACC,eAAgB,CACZ,QAAS,CAAE,KAAK,aAAa,CAAG,CACpC,CACJ,CAAC,EACD,SAAS8B,GAAaE,EAAKC,EAAO,CAC9B,IAAIC,EAAU,SAASF,EAAI,MAAM,KAAM,EAAE,GACrC,MAAME,CAAO,GAAK,KAAK,IAAID,EAAQC,CAAO,EAAI,KAC9CF,EAAI,MAAM,KAAOC,EAAQ,KACjC,CAJS5D,EAAAyD,GAAA,gBAKT,IAAMK,GAAyBC,EAAW,UAAU,CAChD,cAAe,CACX,OAAQ,IACR,UAAW,YACf,EACA,qBAAsB,CAClB,OAAQ,iBACR,gBAAiB,SACrB,EACA,+CAAgD,CAC5C,UAAW,gBACf,EACA,oBAAqB,CACjB,gBAAiB,UACjB,MAAO,OACX,EACA,oBAAqB,CACjB,OAAQ,MACR,MAAO,OACP,SAAU,WACV,OAAQ,GACR,SAAU,SACV,oBAAqB,CACjB,QAAS,KACT,SAAU,WACV,MAAO,EACP,OAAQ,EACR,WAAY,wBACZ,YAAa,uBACjB,EACA,sBAAuB,CACnB,OAAQ,OACR,WAAY,CACR,UAAW,gBACf,EACA,UAAW,CACP,UAAW,oBACX,OAAQ,KACZ,CACJ,EACA,sBAAuB,CACnB,IAAK,OACL,WAAY,CACR,aAAc,gBAClB,EACA,UAAW,CACP,aAAc,oBACd,IAAK,KACT,CACJ,CACJ,EACA,sCAAuC,CACnC,WAAY,CACR,eAAgB,UAChB,kBAAmB,SACvB,EACA,UAAW,CACP,eAAgB,cAChB,kBAAmB,aACvB,CACJ,CACJ,CAAC,EACKf,GAAW,CAAE,EAAG,EAAG,EAAG,CAAE,EAIxBlC,GAA2BZ,EAAM,OAAO,CAC1C,QAAS,CAACQ,GAAeoD,EAAS,CACtC,CAAC,EACKE,GAAgC9D,EAAM,OAAO,CAC/C,QAASF,EAAAiE,GAAUA,EAAO,OAAO,CAACC,EAAG9B,IAAM8B,EAAE,OAAO9B,CAAC,EAAG,CAAC,CAAC,EAAjD,UACb,CAAC,EACK+B,GAAN,MAAMC,CAAiB,CAn0UvB,MAm0UuB,CAAApE,EAAA,yBAEnB,OAAO,OAAOF,EAAM,CAChB,OAAO,IAAIsE,EAAiBtE,CAAI,CACpC,CACA,YAAYA,EAAM,CACd,KAAK,KAAOA,EACZ,KAAK,QAAU,GACf,KAAK,IAAM,SAAS,cAAc,KAAK,EACvC,KAAK,IAAI,UAAU,IAAI,kBAAkB,EACzC,KAAK,QAAU,IAAIe,GAAmBf,EAAMkE,GAAkB,CAAC,EAAGjD,IAAM,KAAK,iBAAiB,EAAGA,CAAC,EAAG,GAAK,EAAE,IAAI,OAAO,CAAC,CAC5H,CACA,iBAAiBE,EAASM,EAAM,CAC5B,IAAI8C,EAAapD,EAAQ,OAAO,KAAK,IAAI,EACzC,OAAAoD,EAAW,IAAI,UAAU,IAAI,oBAAoB,EACjD,KAAK,IAAI,aAAaA,EAAW,IAAK9C,EAAOA,EAAK,IAAI,YAAc,KAAK,IAAI,UAAU,EACnF,KAAK,SAAW8C,EAAW,OAC3BA,EAAW,MAAM,KAAK,IAAI,EACvBA,CACX,CACA,MAAMvE,EAAM,CACR,QAASuE,KAAc,KAAK,QAAQ,aAC5BA,EAAW,OACXA,EAAW,MAAMvE,CAAI,EAE7B,KAAK,QAAU,EACnB,CACA,WAAWyC,EAAO,CACd,QAAS8B,KAAc,KAAK,QAAQ,aAC5BA,EAAW,YACXA,EAAW,WAAW9B,CAAK,CAEvC,CACA,OAAOrB,EAAQ,CACX,KAAK,QAAQ,OAAOA,CAAM,CAC9B,CACA,SAAU,CACN,IAAId,EACJ,QAAS,KAAK,KAAK,QAAQ,cACtBA,EAAK,EAAE,WAAa,MAAQA,IAAO,QAAkBA,EAAG,KAAK,CAAC,CACvE,CACA,SAASkE,EAAM,CACX,IAAIV,EACJ,QAAS9D,KAAQ,KAAK,QAAQ,aAAc,CACxC,IAAIyE,EAAQzE,EAAKwE,CAAI,EACrB,GAAIC,IAAU,QACV,GAAIX,IAAU,OACVA,EAAQW,UACHX,IAAUW,EACf,OAEZ,CACA,OAAOX,CACX,CACA,IAAI,QAAS,CAAE,OAAO,KAAK,SAAS,QAAQ,CAAG,CAC/C,IAAI,WAAY,CAAE,OAAO,KAAK,SAAS,WAAW,CAAG,CACrD,IAAI,SAAU,CAAE,OAAO,KAAK,SAAS,SAAS,CAAG,CACjD,IAAI,QAAS,CAAE,OAAO,KAAK,SAAS,QAAQ,CAAG,CACnD,EACMY,GAAoC1D,GAAY,QAAQ,CAACkD,EAAgB,EAAGS,GAAS,CACvF,IAAIC,EAAWD,EAAM,MAAMT,EAAgB,EAC3C,OAAIU,EAAS,SAAW,EACb,KACJ,CACH,IAAK,KAAK,IAAI,GAAGA,EAAS,IAAI,GAAK,EAAE,GAAG,CAAC,EACzC,IAAK,KAAK,IAAI,GAAGA,EAAS,IAAI,GAAK,CAAE,IAAItE,EAAI,OAAQA,EAAK,EAAE,OAAS,MAAQA,IAAO,OAASA,EAAK,EAAE,GAAK,CAAC,CAAC,EAC3G,OAAQ+D,GAAiB,OACzB,MAAOO,EAAS,CAAC,EAAE,MACnB,MAAOA,EAAS,KAAK,GAAK,EAAE,KAAK,CACrC,CACJ,CAAC,EACKC,GAAN,KAAkB,CA14UlB,MA04UkB,CAAA3E,EAAA,oBACd,YAAYF,EAAM8E,EAAQC,EAAOC,EAAUC,EAAW,CAClD,KAAK,KAAOjF,EACZ,KAAK,OAAS8E,EACd,KAAK,MAAQC,EACb,KAAK,SAAWC,EAChB,KAAK,UAAYC,EACjB,KAAK,aAAe,GACpB,KAAK,eAAiB,GACtB,KAAK,QAAU,KACf,KAAK,SAAW,CAAE,EAAG,EAAG,EAAG,EAAG,OAAQjF,EAAK,IAAK,KAAM,CAAE,EACxD,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3CA,EAAK,IAAI,iBAAiB,aAAc,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,CAAC,EACpFA,EAAK,IAAI,iBAAiB,YAAa,KAAK,UAAY,KAAK,UAAU,KAAK,IAAI,CAAC,CACrF,CACA,QAAS,CACD,KAAK,UACL,KAAK,QAAU,KACf,aAAa,KAAK,cAAc,EAChC,KAAK,eAAiB,WAAW,IAAM,KAAK,WAAW,EAAG,EAAE,EAEpE,CACA,IAAI,QAAS,CACT,OAAO,KAAK,KAAK,MAAM,MAAM,KAAK,KAAK,CAC3C,CACA,YAAa,CAET,GADA,KAAK,aAAe,GAChB,KAAK,OAAO,OACZ,OACJ,IAAIkF,EAAU,KAAK,IAAI,EAAI,KAAK,SAAS,KACrCA,EAAU,KAAK,UACf,KAAK,aAAe,WAAW,KAAK,WAAY,KAAK,UAAYA,CAAO,EAExE,KAAK,WAAW,CACxB,CACA,YAAa,CACT,aAAa,KAAK,cAAc,EAChC,GAAI,CAAE,KAAAlF,EAAM,SAAAmF,CAAS,EAAI,KACrBC,EAAOpF,EAAK,QAAQ,KAAK,QAAQmF,EAAS,MAAM,EACpD,GAAI,CAACC,EACD,OACJ,IAAIxC,EAAKyC,EAAO,EAChB,GAAID,EAAK,SAAS,EACdxC,EAAMwC,EAAK,eAEV,CAED,GADAxC,EAAM5C,EAAK,YAAYmF,CAAQ,EAC3BvC,GAAO,KACP,OACJ,IAAI0C,EAAYtF,EAAK,YAAY4C,CAAG,EACpC,GAAI,CAAC0C,GACDH,EAAS,EAAIG,EAAU,KAAOH,EAAS,EAAIG,EAAU,QACrDH,EAAS,EAAIG,EAAU,KAAOtF,EAAK,uBACnCmF,EAAS,EAAIG,EAAU,MAAQtF,EAAK,sBACpC,OACJ,IAAIuF,EAAOvF,EAAK,UAAUA,EAAK,MAAM,IAAI,OAAO4C,CAAG,CAAC,EAAE,KAAK4C,GAAKA,EAAE,MAAQ5C,GAAO4C,EAAE,IAAM5C,CAAG,EACxF6C,EAAMF,GAAQA,EAAK,KAAOnC,EAAU,IAAM,GAAK,EACnDiC,EAAQF,EAAS,EAAIG,EAAU,KAAO,CAACG,EAAMA,CACjD,CACA,IAAIC,EAAO,KAAK,OAAO1F,EAAM4C,EAAKyC,CAAI,EACtC,GAAgDK,GAAK,KAAM,CACvD,IAAIC,EAAU,KAAK,QAAU,CAAE,IAAA/C,CAAI,EACnC8C,EAAK,KAAKE,GAAU,CACZ,KAAK,SAAWD,IAChB,KAAK,QAAU,KACXC,GAAU,EAAE,MAAM,QAAQA,CAAM,GAAK,CAACA,EAAO,SAC7C5F,EAAK,SAAS,CAAE,QAAS,KAAK,SAAS,GAAG,MAAM,QAAQ4F,CAAM,EAAIA,EAAS,CAACA,CAAM,CAAC,CAAE,CAAC,EAElG,EAAGC,GAAKC,GAAa9F,EAAK,MAAO6F,EAAG,eAAe,CAAC,CACxD,MACSH,GAAQ,EAAE,MAAM,QAAQA,CAAI,GAAK,CAACA,EAAK,SAC5C1F,EAAK,SAAS,CAAE,QAAS,KAAK,SAAS,GAAG,MAAM,QAAQ0F,CAAI,EAAIA,EAAO,CAACA,CAAI,CAAC,CAAE,CAAC,CAExF,CACA,IAAI,SAAU,CACV,IAAIK,EAAS,KAAK,KAAK,OAAOnF,EAAa,EACvCoF,EAAQD,EAASA,EAAO,QAAQ,SAAS,UAAUvE,GAAKA,EAAE,QAAU6C,GAAiB,MAAM,EAAI,GACnG,OAAO2B,EAAQ,GAAKD,EAAO,QAAQ,aAAaC,CAAK,EAAI,IAC7D,CACA,UAAUC,EAAO,CACb,IAAI3F,EAAIC,EACR,KAAK,SAAW,CAAE,EAAG0F,EAAM,QAAS,EAAGA,EAAM,QAAS,OAAQA,EAAM,OAAQ,KAAM,KAAK,IAAI,CAAE,EACzF,KAAK,aAAe,IACpB,KAAK,aAAe,WAAW,KAAK,WAAY,KAAK,SAAS,GAClE,GAAI,CAAE,OAAAC,EAAQ,QAAA/E,CAAQ,EAAI,KAC1B,GAAI+E,EAAO,QAAU/E,GAAW,CAACgF,GAAYhF,EAAQ,IAAK8E,CAAK,GAAK,KAAK,QAAS,CAC9E,GAAI,CAAE,IAAArD,CAAI,EAAIsD,EAAO,CAAC,GAAK,KAAK,QAASE,GAAO7F,GAAMD,EAAK4F,EAAO,CAAC,KAAO,MAAQ5F,IAAO,OAAS,OAASA,EAAG,OAAS,MAAQC,IAAO,OAASA,EAAKqC,GAC/IA,GAAOwD,EAAM,KAAK,KAAK,YAAY,KAAK,QAAQ,GAAKxD,EACpD,CAACyD,GAAY,KAAK,KAAMzD,EAAKwD,EAAKH,EAAM,QAASA,EAAM,OAAO,KAChE,KAAK,KAAK,SAAS,CAAE,QAAS,KAAK,SAAS,GAAG,CAAC,CAAC,CAAE,CAAC,EACpD,KAAK,QAAU,KAEvB,CACJ,CACA,WAAWA,EAAO,CACd,aAAa,KAAK,YAAY,EAC9B,KAAK,aAAe,GACpB,GAAI,CAAE,OAAAC,CAAO,EAAI,KACjB,GAAIA,EAAO,OAAQ,CACf,GAAI,CAAE,QAAA/E,CAAQ,EAAI,KACFA,GAAWA,EAAQ,IAAI,SAAS8E,EAAM,aAAa,EAI/D,KAAK,kBAAkB9E,EAAQ,GAAG,EAFlC,KAAK,KAAK,SAAS,CAAE,QAAS,KAAK,SAAS,GAAG,CAAC,CAAC,CAAE,CAAC,CAG5D,CACJ,CACA,kBAAkBA,EAAS,CACvB,IAAImF,EAAQpG,EAAC+F,GAAU,CACnB9E,EAAQ,oBAAoB,aAAcmF,CAAK,EAC3C,KAAK,OAAO,QAAU,CAAC,KAAK,KAAK,IAAI,SAASL,EAAM,aAAa,GACjE,KAAK,KAAK,SAAS,CAAE,QAAS,KAAK,SAAS,GAAG,CAAC,CAAC,CAAE,CAAC,CAC5D,EAJY,SAKZ9E,EAAQ,iBAAiB,aAAcmF,CAAK,CAChD,CACA,SAAU,CACN,aAAa,KAAK,YAAY,EAC9B,aAAa,KAAK,cAAc,EAChC,KAAK,KAAK,IAAI,oBAAoB,aAAc,KAAK,UAAU,EAC/D,KAAK,KAAK,IAAI,oBAAoB,YAAa,KAAK,SAAS,CACjE,CACJ,EACMC,GAAgB,EACtB,SAASJ,GAAYhF,EAAS8E,EAAO,CACjC,GAAI,CAAE,KAAA5C,EAAM,MAAAI,EAAO,IAAAD,EAAK,OAAAgD,CAAO,EAAIrF,EAAQ,sBAAsB,EAAGS,EACpE,GAAIA,EAAQT,EAAQ,cAAc,mBAAmB,EAAG,CACpD,IAAIsF,EAAY7E,EAAM,sBAAsB,EAC5C4B,EAAM,KAAK,IAAIiD,EAAU,IAAKjD,CAAG,EACjCgD,EAAS,KAAK,IAAIC,EAAU,OAAQD,CAAM,CAC9C,CACA,OAAOP,EAAM,SAAW5C,EAAOkD,IAAiBN,EAAM,SAAWxC,EAAQ8C,IACrEN,EAAM,SAAWzC,EAAM+C,IAAiBN,EAAM,SAAWO,EAASD,EAC1E,CATSrG,EAAAiG,GAAA,eAUT,SAASE,GAAYrG,EAAM0G,EAAMC,EAAIC,EAAGC,EAAGC,EAAQ,CAC/C,IAAI5E,EAAOlC,EAAK,UAAU,sBAAsB,EAC5C+G,EAAY/G,EAAK,YAAcA,EAAK,gBAAgB,IAAMA,EAAK,cACnE,GAAIkC,EAAK,KAAO0E,GAAK1E,EAAK,MAAQ0E,GAAK1E,EAAK,IAAM2E,GAAK,KAAK,IAAI3E,EAAK,OAAQ6E,CAAS,EAAIF,EACtF,MAAO,GACX,IAAIjE,EAAM5C,EAAK,YAAY,CAAE,EAAA4G,EAAG,EAAAC,CAAE,EAAG,EAAK,EAC1C,OAAOjE,GAAO8D,GAAQ9D,GAAO+D,CACjC,CAPSzG,EAAAmG,GAAA,eA0BT,SAASW,GAAalC,EAAQmC,EAAU,CAAC,EAAG,CACxC,IAAIjC,EAAWkC,EAAY,OAAO,EAC9BC,EAAaC,GAAW,OAAO,CAC/B,QAAS,CAAE,MAAO,CAAC,CAAG,EACtB,OAAOtD,EAAOuD,EAAI,CACd,GAAIvD,EAAM,SACFmD,EAAQ,eAAiBI,EAAG,YAAcA,EAAG,WAC7CvD,EAAQ,CAAC,EACJmD,EAAQ,SACbnD,EAAQA,EAAM,OAAOwD,GAAK,CAACL,EAAQ,OAAOI,EAAIC,CAAC,CAAC,GAChDD,EAAG,YAAY,CACf,IAAIE,EAAS,CAAC,EACd,QAASpG,KAAW2C,EAAO,CACvB,IAAI0D,EAASH,EAAG,QAAQ,OAAOlG,EAAQ,IAAK,GAAIsG,GAAQ,QAAQ,EAChE,GAAID,GAAU,KAAM,CAChB,IAAIE,EAAO,OAAO,OAAO,OAAO,OAAO,IAAI,EAAGvG,CAAO,EACrDuG,EAAK,IAAMF,EACPE,EAAK,KAAO,OACZA,EAAK,IAAML,EAAG,QAAQ,OAAOK,EAAK,GAAG,GACzCH,EAAO,KAAKG,CAAI,CACpB,CACJ,CACA5D,EAAQyD,CACZ,CAEJ,QAASI,KAAUN,EAAG,QACdM,EAAO,GAAG3C,CAAQ,IAClBlB,EAAQ6D,EAAO,OACfA,EAAO,GAAGC,EAAuB,IACjC9D,EAAQ,CAAC,GAEjB,OAAOA,CACX,EACA,QAAS5D,EAAA2H,GAAK3D,GAAiB,KAAK2D,CAAC,EAA5B,UACb,CAAC,EACD,MAAO,CACH,OAAQV,EACR,UAAW,CACPA,EACAtG,GAAW,OAAOb,GAAQ,IAAI6E,GAAY7E,EAAM8E,EAAQqC,EAAYnC,EAAUiC,EAAQ,WAAa,GAAoB,CAAC,EACxHvC,EACJ,CACJ,CACJ,CA3CSxE,EAAA8G,GAAA,gBA+CT,SAASc,GAAW9H,EAAMmB,EAAS,CAC/B,IAAI4E,EAAS/F,EAAK,OAAOY,EAAa,EACtC,GAAI,CAACmF,EACD,OAAO,KACX,IAAIgC,EAAQhC,EAAO,QAAQ,SAAS,QAAQ5E,CAAO,EACnD,OAAO4G,EAAQ,EAAI,KAAOhC,EAAO,QAAQ,aAAagC,CAAK,CAC/D,CANS7H,EAAA4H,GAAA,cAaT,IAAME,GAAuCC,EAAY,OAAO,EAiBhE,IAAMC,GAA2BC,EAAM,OAAO,CAC1C,QAAQC,EAAS,CACb,IAAIC,EAAcC,EAClB,QAASC,KAAKH,EACVC,EAAeA,GAAgBE,EAAE,aACjCD,EAAkBA,GAAmBC,EAAE,gBAE3C,MAAO,CAAE,aAAAF,EAAc,gBAAAC,CAAgB,CAC3C,CACJ,CAAC,EAYD,SAASE,GAASC,EAAMC,EAAO,CAC3B,IAAIC,EAASF,EAAK,OAAOG,EAAW,EAChCC,EAAQF,EAASA,EAAO,MAAM,QAAQD,CAAK,EAAI,GACnD,OAAOG,EAAQ,GAAKF,EAAO,OAAOE,CAAK,EAAI,IAC/C,CAJSC,EAAAN,GAAA,YAKT,IAAMI,GAA2BG,GAAW,UAAU,KAAM,CACxD,YAAYN,EAAM,CACd,KAAK,MAAQA,EAAK,MAAM,MAAMO,EAAS,EACvC,KAAK,MAAQ,KAAK,MAAM,OAAOC,GAAKA,CAAC,EACrC,KAAK,OAAS,KAAK,MAAM,IAAIC,GAAQA,EAAKT,CAAI,CAAC,EAC/C,IAAIU,EAAOV,EAAK,MAAM,MAAMW,EAAW,EACvC,KAAK,IAAM,IAAIC,GAAWZ,EAAM,GAAMU,EAAK,YAAY,EACvD,KAAK,OAAS,IAAIE,GAAWZ,EAAM,GAAOU,EAAK,eAAe,EAC9D,KAAK,IAAI,KAAK,KAAK,OAAO,OAAOG,GAAKA,EAAE,GAAG,CAAC,EAC5C,KAAK,OAAO,KAAK,KAAK,OAAO,OAAOA,GAAK,CAACA,EAAE,GAAG,CAAC,EAChD,QAASA,KAAK,KAAK,OACfA,EAAE,IAAI,UAAU,IAAI,UAAU,EAC1BA,EAAE,OACFA,EAAE,MAAM,CAEpB,CACA,OAAOC,EAAQ,CACX,IAAIJ,EAAOI,EAAO,MAAM,MAAMH,EAAW,EACrC,KAAK,IAAI,WAAaD,EAAK,eAC3B,KAAK,IAAI,KAAK,CAAC,CAAC,EAChB,KAAK,IAAM,IAAIE,GAAWE,EAAO,KAAM,GAAMJ,EAAK,YAAY,GAE9D,KAAK,OAAO,WAAaA,EAAK,kBAC9B,KAAK,OAAO,KAAK,CAAC,CAAC,EACnB,KAAK,OAAS,IAAIE,GAAWE,EAAO,KAAM,GAAOJ,EAAK,eAAe,GAEzE,KAAK,IAAI,YAAY,EACrB,KAAK,OAAO,YAAY,EACxB,IAAIK,EAAQD,EAAO,MAAM,MAAMP,EAAS,EACxC,GAAIQ,GAAS,KAAK,MAAO,CACrB,IAAIC,EAAQD,EAAM,OAAOE,GAAKA,CAAC,EAC3BC,EAAS,CAAC,EAAGC,EAAM,CAAC,EAAGC,EAAS,CAAC,EAAGC,EAAQ,CAAC,EACjD,QAASZ,KAAQO,EAAO,CACpB,IAAIM,EAAQ,KAAK,MAAM,QAAQb,CAAI,EAAGR,EAClCqB,EAAQ,GACRrB,EAAQQ,EAAKK,EAAO,IAAI,EACxBO,EAAM,KAAKpB,CAAK,IAGhBA,EAAQ,KAAK,OAAOqB,CAAK,EACrBrB,EAAM,QACNA,EAAM,OAAOa,CAAM,GAE3BI,EAAO,KAAKjB,CAAK,GAChBA,EAAM,IAAMkB,EAAMC,GAAQ,KAAKnB,CAAK,CACzC,CACA,KAAK,MAAQe,EACb,KAAK,OAASE,EACd,KAAK,IAAI,KAAKC,CAAG,EACjB,KAAK,OAAO,KAAKC,CAAM,EACvB,QAASP,KAAKQ,EACVR,EAAE,IAAI,UAAU,IAAI,UAAU,EAC1BA,EAAE,OACFA,EAAE,MAAM,CAEpB,KAEI,SAASA,KAAK,KAAK,OACXA,EAAE,QACFA,EAAE,OAAOC,CAAM,CAE/B,CACA,SAAU,CACN,KAAK,IAAI,KAAK,CAAC,CAAC,EAChB,KAAK,OAAO,KAAK,CAAC,CAAC,CACvB,CACJ,EAAG,CACC,QAAST,EAAAH,GAAUqB,EAAW,cAAc,GAAGvB,GAAQ,CACnD,IAAIwB,EAAQxB,EAAK,OAAOE,CAAM,EAC9B,OAAOsB,GAAS,CAAE,IAAKA,EAAM,IAAI,aAAa,EAAG,OAAQA,EAAM,OAAO,aAAa,CAAE,CACzF,CAAC,EAHQ,UAIb,CAAC,EACKZ,GAAN,KAAiB,CAxtVjB,MAwtViB,CAAAP,EAAA,mBACb,YAAYL,EAAMmB,EAAKM,EAAW,CAC9B,KAAK,KAAOzB,EACZ,KAAK,IAAMmB,EACX,KAAK,UAAYM,EACjB,KAAK,IAAM,OACX,KAAK,QAAU,GACf,KAAK,OAAS,CAAC,EACf,KAAK,YAAY,CACrB,CACA,KAAKP,EAAQ,CACT,QAASL,KAAK,KAAK,OACXA,EAAE,SAAWK,EAAO,QAAQL,CAAC,EAAI,GACjCA,EAAE,QAAQ,EAClB,KAAK,OAASK,EACd,KAAK,QAAQ,CACjB,CACA,SAAU,CACN,GAAI,KAAK,OAAO,QAAU,EAAG,CACrB,KAAK,MACL,KAAK,IAAI,OAAO,EAChB,KAAK,IAAM,QAEf,MACJ,CACA,GAAI,CAAC,KAAK,IAAK,CACX,KAAK,IAAM,SAAS,cAAc,KAAK,EACvC,KAAK,IAAI,UAAY,KAAK,IAAM,0BAA4B,6BAC5D,KAAK,IAAI,MAAM,KAAK,IAAM,MAAQ,QAAQ,EAAI,IAC9C,IAAIQ,EAAS,KAAK,WAAa,KAAK,KAAK,IACzCA,EAAO,aAAa,KAAK,IAAK,KAAK,IAAMA,EAAO,WAAa,IAAI,CACrE,CACA,IAAIC,EAAS,KAAK,IAAI,WACtB,QAAS1B,KAAS,KAAK,OACnB,GAAIA,EAAM,IAAI,YAAc,KAAK,IAAK,CAClC,KAAO0B,GAAU1B,EAAM,KACnB0B,EAASC,GAAGD,CAAM,EACtBA,EAASA,EAAO,WACpB,MAEI,KAAK,IAAI,aAAa1B,EAAM,IAAK0B,CAAM,EAG/C,KAAOA,GACHA,EAASC,GAAGD,CAAM,CAC1B,CACA,cAAe,CACX,MAAO,CAAC,KAAK,KAAO,KAAK,UAAY,EAC/B,KAAK,IAAI,EAAG,KAAK,IACf,KAAK,IAAI,sBAAsB,EAAE,OAAS,KAAK,IAAI,EAAG,KAAK,KAAK,UAAU,sBAAsB,EAAE,GAAG,EACrG,KAAK,IAAI,YAAa,KAAK,KAAK,UAAU,sBAAsB,EAAE,MAAM,EAAI,KAAK,IAAI,sBAAsB,EAAE,GAAG,CAC5H,CACA,aAAc,CACV,GAAI,GAAC,KAAK,WAAa,KAAK,SAAW,KAAK,KAAK,cAEjD,SAASE,KAAO,KAAK,QAAQ,MAAM,GAAG,EAC9BA,GACA,KAAK,UAAU,UAAU,OAAOA,CAAG,EAC3C,QAASA,KAAQ,KAAK,QAAU,KAAK,KAAK,cAAc,MAAM,GAAG,EACzDA,GACA,KAAK,UAAU,UAAU,IAAIA,CAAG,EAC5C,CACJ,EACA,SAASD,GAAGE,EAAM,CACd,IAAIC,EAAOD,EAAK,YAChB,OAAAA,EAAK,OAAO,EACLC,CACX,CAJS1B,EAAAuB,GAAA,MAUT,IAAMrB,GAAyByB,EAAM,OAAO,CACxC,QAAS7B,EACb,CAAC,EAaD,SAAS8B,GAAWjC,EAAMkC,EAAQ,CAC9B,IAAIC,EACAC,EAAU,IAAI,QAAQC,GAAKF,EAAUE,CAAC,EACtCC,EAAYjC,EAACL,GAASuC,GAAavC,EAAMkC,EAAQC,CAAO,EAA5C,aACZnC,EAAK,MAAM,MAAMwC,GAAa,EAAK,EACnCxC,EAAK,SAAS,CAAE,QAASyC,GAAiB,GAAGH,CAAS,CAAE,CAAC,EAGzDtC,EAAK,SAAS,CAAE,QAAS0C,EAAY,aAAa,GAAGF,GAAY,KAAK,IAAM,CAACF,CAAS,CAAC,CAAC,CAAE,CAAC,EAE/F,IAAIK,EAAQC,GAAkB,GAAGN,CAAS,EAC1C,MAAO,CAAE,MAAAK,EAAO,OAAQP,EAAQ,KAAKS,KACjB7C,EAAK,IAAI,iBAAoB8C,GAAM9C,EAAK,IAAI,WAAW8C,EAAG,EAAE,IAClE,IAAM,CACJ9C,EAAK,MAAM,MAAMwC,EAAW,EAAE,QAAQF,CAAS,EAAI,IACnDtC,EAAK,SAAS,CAAE,QAAS2C,CAAM,CAAC,CACxC,CAAC,EACME,EACV,CAAE,CACX,CAnBSxC,EAAA4B,GAAA,cAiCT,IAAMc,GAA2BC,GAAW,OAAO,CAC/C,QAAS,CAAE,MAAO,CAAC,CAAG,EACtB,OAAOC,EAASC,EAAI,CAChB,QAASC,KAAKD,EAAG,QACTC,EAAE,GAAGC,EAAgB,EACrBH,EAAU,CAACE,EAAE,KAAK,EAAE,OAAOF,CAAO,EAC7BE,EAAE,GAAGE,EAAiB,IAC3BJ,EAAUA,EAAQ,OAAOK,GAAKA,GAAKH,EAAE,KAAK,GAElD,OAAOF,CACX,EACA,QAASM,EAAAC,GAAKC,GAAU,SAAS,CAACD,CAAC,EAAGE,GAASA,EAAM,MAAMF,CAAC,CAAC,EAApD,UACb,CAAC,EACKJ,GAAgCO,EAAY,OAAO,EACnDN,GAAiCM,EAAY,OAAO,EAC1D,SAASC,GAAaC,EAAMC,EAAQC,EAAQ,CACxC,IAAIC,EAAUF,EAAO,QAAUA,EAAO,QAAQD,EAAM,IAAMI,EAAK,IAAI,CAAC,EAAI,KACxE,GAAI,CAACD,EAAS,CAEV,GADAA,EAAUE,EAAI,MAAM,EAChBJ,EAAO,MAAO,CACd,IAAIK,EAAQD,EAAI,QAASJ,EAAO,KAAK,EACjC,yCAAyC,KAAKK,EAAM,IAAI,GACxDA,EAAM,UAAU,IAAI,cAAc,EACjCA,EAAM,OACPA,EAAM,KAAO,SACjBH,EAAQ,YAAYE,EAAI,SAAUJ,EAAO,OAAS,IAAM,KAAMK,CAAK,CAAC,CACxE,MAEIH,EAAQ,YAAY,SAAS,eAAeF,EAAO,OAAS,EAAE,CAAC,EAEnEE,EAAQ,YAAY,SAAS,eAAe,GAAG,CAAC,EAChDA,EAAQ,YAAYE,EAAI,SAAU,CAAE,MAAO,YAAa,KAAM,QAAS,EAAGJ,EAAO,aAAe,IAAI,CAAC,CACzG,CACA,IAAIM,EAAQJ,EAAQ,UAAY,OAAS,CAACA,CAAO,EAAIA,EAAQ,iBAAiB,MAAM,EACpF,QAASK,EAAI,EAAGA,EAAID,EAAM,OAAQC,IAAK,CACnC,IAAIC,EAAOF,EAAMC,CAAC,EAClBC,EAAK,iBAAiB,UAAYC,GAAU,CACpCA,EAAM,SAAW,IACjBA,EAAM,eAAe,EACrBN,EAAK,IAAI,GAEJM,EAAM,SAAW,KACtBA,EAAM,eAAe,EACrBN,EAAKK,CAAI,EAEjB,CAAC,EACDA,EAAK,iBAAiB,SAAWC,GAAU,CACvCA,EAAM,eAAe,EACrBN,EAAKK,CAAI,CACb,CAAC,CACL,CACA,IAAIE,EAAQN,EAAI,MAAOF,EAASE,EAAI,SAAU,CAC1C,QAASX,EAAA,IAAMU,EAAK,IAAI,EAAf,WACT,aAAcJ,EAAK,MAAM,OAAO,OAAO,EACvC,MAAO,kBACP,KAAM,QACV,EAAG,CAAC,MAAG,CAAC,CAAC,EACLC,EAAO,QACPU,EAAM,UAAYV,EAAO,OAC7BU,EAAM,UAAU,IAAI,WAAW,EAC/B,SAASP,EAAKK,EAAM,CACZE,EAAM,SAASA,EAAM,cAAc,aAAa,GAChDX,EAAK,MAAM,EACfE,EAAOO,CAAI,CACf,CAJS,OAAAf,EAAAU,EAAA,QAKF,CACH,IAAKO,EACL,IAAKV,EAAO,IACZ,MAAOP,EAAA,IAAM,CACT,GAAIO,EAAO,MAAO,CACd,IAAIW,EACA,OAAOX,EAAO,OAAS,SACvBW,EAAQT,EAAQ,cAAcF,EAAO,KAAK,EAE1CW,EAAQT,EAAQ,cAAc,OAAO,GAAKA,EAAQ,cAAc,QAAQ,EACxES,GAAS,WAAYA,EACrBA,EAAM,OAAO,EACRA,GAAS,UAAWA,GACzBA,EAAM,MAAM,CACpB,CACJ,EAZO,QAaX,CACJ,CAnESlB,EAAAK,GAAA,gBA0ET,IAAMc,GAAN,cAA2BC,EAAW,CA16VtC,MA06VsC,CAAApB,EAAA,qBAIlC,QAAQqB,EAAO,CACX,OAAO,MAAQA,GAAS,KAAK,aAAeA,EAAM,aAAe,KAAK,GAAGA,CAAK,CAClF,CAIA,GAAGA,EAAO,CAAE,MAAO,EAAO,CAK1B,QAAQC,EAAK,CAAE,CACnB,EACAH,GAAa,UAAU,aAAe,GACtCA,GAAa,UAAU,MAAQ,OAC/BA,GAAa,UAAU,QAAUI,GAAQ,YACzCJ,GAAa,UAAU,UAAYA,GAAa,UAAU,QAAU,GACpEA,GAAa,UAAU,MAAQ,GAQ/B,IAAMK,GAA+BC,EAAM,OAAO,EAK5CC,GAAiCD,EAAM,OAAO,EAC9CE,GAAW,CACb,MAAO,GACP,oBAAqB,GACrB,aAAc,GACd,QAAS3B,EAAA,IAAM4B,EAAS,MAAf,WACT,WAAY5B,EAAA,IAAM,KAAN,cACZ,aAAcA,EAAA,IAAM,KAAN,gBACd,iBAAkB,KAClB,cAAe,KACf,aAAc,KACd,iBAAkB,CAAC,EACnB,KAAM,QACV,EACM6B,GAA6BJ,EAAM,OAAO,EAKhD,SAASK,GAAOvB,EAAQ,CACpB,MAAO,CAACwB,GAAQ,EAAGF,GAAc,GAAG,CAAE,GAAGF,GAAU,GAAGpB,CAAO,CAAC,CAAC,CACnE,CAFSP,EAAA8B,GAAA,UAGT,IAAME,GAA4BP,EAAM,OAAO,CAC3C,QAASzB,EAAAiC,GAAUA,EAAO,KAAKC,GAAKA,CAAC,EAA5B,UACb,CAAC,EAWD,SAASH,GAAQxB,EAAQ,CACrB,IAAIC,EAAS,CACT2B,EACJ,EACA,OAAI5B,GAAUA,EAAO,QAAU,IAC3BC,EAAO,KAAKwB,GAAa,GAAG,EAAI,CAAC,EAC9BxB,CACX,CAPSR,EAAA+B,GAAA,WAQT,IAAMI,GAA0BC,GAAW,UAAU,KAAM,CACvD,YAAY9B,EAAM,CACd,KAAK,KAAOA,EACZ,KAAK,SAAW,KAChB,KAAK,aAAeA,EAAK,SACzB,KAAK,IAAM,SAAS,cAAc,KAAK,EACvC,KAAK,IAAI,UAAY,+BACrB,KAAK,IAAI,aAAa,cAAe,MAAM,EAC3C,KAAK,IAAI,MAAM,UAAa,KAAK,KAAK,cAAgB,KAAK,KAAK,OAAU,KAC1E,KAAK,QAAUA,EAAK,MAAM,MAAMuB,EAAa,EAAE,IAAIQ,GAAQ,IAAIC,GAAiBhC,EAAM+B,CAAI,CAAC,EAC3F,KAAK,MAAQ,CAAC/B,EAAK,MAAM,MAAM0B,EAAY,EAC3C,QAASF,KAAU,KAAK,QAChBA,EAAO,OAAO,MAAQ,QACtB,KAAK,YAAY,EAAE,YAAYA,EAAO,GAAG,EAEzC,KAAK,IAAI,YAAYA,EAAO,GAAG,EAEnC,KAAK,QAIL,KAAK,IAAI,MAAM,SAAW,UAE9B,KAAK,YAAY,EAAK,EACtBxB,EAAK,UAAU,aAAa,KAAK,IAAKA,EAAK,UAAU,CACzD,CACA,aAAc,CACV,OAAK,KAAK,WACN,KAAK,SAAW,SAAS,cAAc,KAAK,EAC5C,KAAK,SAAS,UAAY,8BAC1B,KAAK,SAAS,aAAa,cAAe,MAAM,EAChD,KAAK,SAAS,MAAM,UAAa,KAAK,KAAK,cAAgB,KAAK,KAAK,OAAU,KAC/E,KAAK,SAAS,MAAM,SAAW,KAAK,MAAQ,SAAW,GACvD,KAAK,KAAK,UAAU,YAAY,KAAK,QAAQ,GAE1C,KAAK,QAChB,CACA,OAAOiC,EAAQ,CACX,GAAI,KAAK,cAAcA,CAAM,EAAG,CAI5B,IAAIC,EAAM,KAAK,aAAcC,EAAMF,EAAO,KAAK,SAC3CG,EAAY,KAAK,IAAIF,EAAI,GAAIC,EAAI,EAAE,EAAI,KAAK,IAAID,EAAI,KAAMC,EAAI,IAAI,EACtE,KAAK,YAAYC,GAAaD,EAAI,GAAKA,EAAI,MAAQ,EAAG,CAC1D,CACA,GAAIF,EAAO,gBAAiB,CACxB,IAAII,EAAO,KAAK,KAAK,cAAgB,KAAK,KAAK,OAAU,KACzD,KAAK,IAAI,MAAM,UAAYA,EACvB,KAAK,WACL,KAAK,SAAS,MAAM,UAAYA,EACxC,CACI,KAAK,KAAK,MAAM,MAAMX,EAAY,GAAK,CAAC,KAAK,QAC7C,KAAK,MAAQ,CAAC,KAAK,MACnB,KAAK,IAAI,MAAM,SAAW,KAAK,MAAQ,SAAW,GAC9C,KAAK,WACL,KAAK,SAAS,MAAM,SAAW,KAAK,MAAQ,SAAW,KAE/D,KAAK,aAAeO,EAAO,KAAK,QACpC,CACA,YAAYK,EAAQ,CAChB,IAAIC,EAAQ,KAAK,IAAI,YACjBD,IACA,KAAK,IAAI,OAAO,EACZ,KAAK,UACL,KAAK,SAAS,OAAO,GAE7B,IAAIE,EAAclB,EAAS,KAAK,KAAK,KAAK,MAAM,MAAMJ,EAAe,EAAG,KAAK,KAAK,SAAS,IAAI,EAC3FuB,EAAW,CAAC,EACZC,EAAW,KAAK,QAAQ,IAAIlB,GAAU,IAAImB,GAAcnB,EAAQ,KAAK,KAAK,SAAU,CAAC,KAAK,KAAK,gBAAgB,GAAG,CAAC,EACvH,QAASoB,KAAQ,KAAK,KAAK,mBAGvB,GAFIH,EAAS,SACTA,EAAW,CAAC,GACZ,MAAM,QAAQG,EAAK,IAAI,EAAG,CAC1B,IAAIC,EAAQ,GACZ,QAASC,KAAKF,EAAK,KACf,GAAIE,EAAE,MAAQC,GAAU,MAAQF,EAAO,CACnCG,GAAcR,EAAaC,EAAUK,EAAE,IAAI,EAC3C,QAASG,KAAMP,EACXO,EAAG,KAAK,KAAK,KAAMH,EAAGL,CAAQ,EAClCI,EAAQ,EACZ,SACSC,EAAE,OACP,QAASG,KAAMP,EACXO,EAAG,OAAO,KAAK,KAAMH,CAAC,CAGtC,SACSF,EAAK,MAAQG,GAAU,KAAM,CAClCC,GAAcR,EAAaC,EAAUG,EAAK,IAAI,EAC9C,QAASK,KAAMP,EACXO,EAAG,KAAK,KAAK,KAAML,EAAMH,CAAQ,CACzC,SACSG,EAAK,OACV,QAASK,KAAMP,EACXO,EAAG,OAAO,KAAK,KAAML,CAAI,EAGrC,QAASK,KAAMP,EACXO,EAAG,OAAO,EACVX,IACA,KAAK,KAAK,UAAU,aAAa,KAAK,IAAKC,CAAK,EAC5C,KAAK,UACL,KAAK,KAAK,UAAU,YAAY,KAAK,QAAQ,EAEzD,CACA,cAAcN,EAAQ,CAClB,IAAIiB,EAAOjB,EAAO,WAAW,MAAMV,EAAa,EAAG4B,EAAMlB,EAAO,MAAM,MAAMV,EAAa,EACrF6B,EAASnB,EAAO,YAAcA,EAAO,eAAiBA,EAAO,iBAC7D,CAACX,EAAS,GAAGW,EAAO,WAAW,MAAMf,EAAe,EAAGe,EAAO,MAAM,MAAMf,EAAe,EAAGe,EAAO,KAAK,SAAS,KAAMA,EAAO,KAAK,SAAS,EAAE,EAClJ,GAAIiB,GAAQC,EACR,QAAS3B,KAAU,KAAK,QAChBA,EAAO,OAAOS,CAAM,IACpBmB,EAAS,QAEhB,CACDA,EAAS,GACT,IAAI3B,EAAU,CAAC,EACf,QAASM,KAAQoB,EAAK,CAClB,IAAIE,EAAQH,EAAK,QAAQnB,CAAI,EACzBsB,EAAQ,EACR5B,EAAQ,KAAK,IAAIO,GAAiB,KAAK,KAAMD,CAAI,CAAC,GAGlD,KAAK,QAAQsB,CAAK,EAAE,OAAOpB,CAAM,EACjCR,EAAQ,KAAK,KAAK,QAAQ4B,CAAK,CAAC,EAExC,CACA,QAASC,KAAK,KAAK,QACfA,EAAE,IAAI,OAAO,EACT7B,EAAQ,QAAQ6B,CAAC,EAAI,GACrBA,EAAE,QAAQ,EAElB,QAASA,KAAK7B,EACN6B,EAAE,OAAO,MAAQ,QACjB,KAAK,YAAY,EAAE,YAAYA,EAAE,GAAG,EAEpC,KAAK,IAAI,YAAYA,EAAE,GAAG,EAElC,KAAK,QAAU7B,CACnB,CACA,OAAO2B,CACX,CACA,SAAU,CACN,QAASpD,KAAQ,KAAK,QAClBA,EAAK,QAAQ,EACjB,KAAK,IAAI,OAAO,EACZ,KAAK,UACL,KAAK,SAAS,OAAO,CAC7B,CACJ,EAAG,CACC,QAASN,EAAA6D,GAAUC,EAAW,cAAc,GAAGxD,GAAQ,CACnD,IAAIyD,EAAQzD,EAAK,OAAOuD,CAAM,EAC9B,GAAI,CAACE,GAASA,EAAM,QAAQ,QAAU,GAAK,CAACA,EAAM,MAC9C,OAAO,KACX,IAAIC,EAASD,EAAM,IAAI,YAAczD,EAAK,OAAQuC,EAAQkB,EAAM,SAAWA,EAAM,SAAS,YAAczD,EAAK,OAAS,EACtH,OAAOA,EAAK,eAAiB2D,EAAU,IACjC,CAAE,KAAMD,EAAQ,MAAOnB,CAAM,EAC7B,CAAE,MAAOmB,EAAQ,KAAMnB,CAAM,CACvC,CAAC,EARQ,UASb,CAAC,EACD,SAASqB,GAAQC,EAAK,CAAE,OAAQ,MAAM,QAAQA,CAAG,EAAIA,EAAM,CAACA,CAAG,CAAI,CAA1DnE,EAAAkE,GAAA,WACT,SAASZ,GAAcc,EAAQC,EAASC,EAAK,CACzC,KAAOF,EAAO,OAASA,EAAO,MAAQE,GAC9BF,EAAO,MAAQE,GACfD,EAAQ,KAAKD,EAAO,KAAK,EAC7BA,EAAO,KAAK,CAEpB,CANSpE,EAAAsD,GAAA,iBAOT,IAAML,GAAN,KAAoB,CAhqWpB,MAgqWoB,CAAAjD,EAAA,sBAChB,YAAY8B,EAAQyC,EAAUC,EAAQ,CAClC,KAAK,OAAS1C,EACd,KAAK,OAAS0C,EACd,KAAK,EAAI,EACT,KAAK,OAAS5C,EAAS,KAAKE,EAAO,QAASyC,EAAS,IAAI,CAC7D,CACA,WAAWjE,EAAMmE,EAAOC,EAAS,CAC7B,GAAI,CAAE,OAAA5C,CAAO,EAAI,KAAM6C,GAASF,EAAM,IAAM,KAAK,QAAUnE,EAAK,OAAQkE,EAASC,EAAM,OAASnE,EAAK,OACrG,GAAI,KAAK,GAAKwB,EAAO,SAAS,OAAQ,CAClC,IAAI8C,EAAS,IAAIC,GAAcvE,EAAMkE,EAAQG,EAAOD,CAAO,EAC3D5C,EAAO,SAAS,KAAK8C,CAAM,EAC3B9C,EAAO,IAAI,YAAY8C,EAAO,GAAG,CACrC,MAEI9C,EAAO,SAAS,KAAK,CAAC,EAAE,OAAOxB,EAAMkE,EAAQG,EAAOD,CAAO,EAE/D,KAAK,OAASD,EAAM,OACpB,KAAK,GACT,CACA,KAAKnE,EAAM4C,EAAM4B,EAAc,CAC3B,IAAIC,EAAe,CAAC,EACpBzB,GAAc,KAAK,OAAQyB,EAAc7B,EAAK,IAAI,EAC9C4B,EAAa,SACbC,EAAeA,EAAa,OAAOD,CAAY,GACnD,IAAIE,EAAU,KAAK,OAAO,OAAO,WAAW1E,EAAM4C,EAAM6B,CAAY,EAChEC,GACAD,EAAa,QAAQC,CAAO,EAChC,IAAIlD,EAAS,KAAK,OACdiD,EAAa,QAAU,GAAK,CAACjD,EAAO,OAAO,qBAE/C,KAAK,WAAWxB,EAAM4C,EAAM6B,CAAY,CAC5C,CACA,OAAOzE,EAAMmE,EAAO,CAChB,IAAIQ,EAAS,KAAK,OAAO,OAAO,aAAa3E,EAAMmE,EAAM,OAAQA,CAAK,EAAGC,EAAUO,EAAS,CAACA,CAAM,EAAI,KACvG,QAASC,KAAO5E,EAAK,MAAM,MAAMoB,EAAiB,EAAG,CACjD,IAAIuD,EAASC,EAAI5E,EAAMmE,EAAM,OAAQA,CAAK,EACtCQ,IACCP,IAAYA,EAAU,CAAC,IAAI,KAAKO,CAAM,CAC/C,CACIP,GACA,KAAK,WAAWpE,EAAMmE,EAAOC,CAAO,CAC5C,CACA,QAAS,CACL,IAAI5C,EAAS,KAAK,OAClB,KAAOA,EAAO,SAAS,OAAS,KAAK,GAAG,CACpC,IAAIqD,EAAOrD,EAAO,SAAS,IAAI,EAC/BA,EAAO,IAAI,YAAYqD,EAAK,GAAG,EAC/BA,EAAK,QAAQ,CACjB,CACJ,CACJ,EACM7C,GAAN,KAAuB,CAptWvB,MAotWuB,CAAAtC,EAAA,yBACnB,YAAYM,EAAMC,EAAQ,CACtB,KAAK,KAAOD,EACZ,KAAK,OAASC,EACd,KAAK,SAAW,CAAC,EACjB,KAAK,OAAS,KACd,KAAK,IAAM,SAAS,cAAc,KAAK,EACvC,KAAK,IAAI,UAAY,aAAe,KAAK,OAAO,MAAQ,IAAM,KAAK,OAAO,MAAQ,IAClF,QAAS6E,KAAQ7E,EAAO,iBACpB,KAAK,IAAI,iBAAiB6E,EAAOpE,GAAU,CACvC,IAAIqE,EAASrE,EAAM,OAAQsE,EAC3B,GAAID,GAAU,KAAK,KAAO,KAAK,IAAI,SAASA,CAAM,EAAG,CACjD,KAAOA,EAAO,YAAc,KAAK,KAC7BA,EAASA,EAAO,WACpB,IAAIE,EAAOF,EAAO,sBAAsB,EACxCC,GAAKC,EAAK,IAAMA,EAAK,QAAU,CACnC,MAEID,EAAItE,EAAM,QAEd,IAAIkC,EAAO5C,EAAK,kBAAkBgF,EAAIhF,EAAK,WAAW,EAClDC,EAAO,iBAAiB6E,CAAI,EAAE9E,EAAM4C,EAAMlC,CAAK,GAC/CA,EAAM,eAAe,CAC7B,CAAC,EAEL,KAAK,QAAUkD,GAAQ3D,EAAO,QAAQD,CAAI,CAAC,EACvCC,EAAO,gBACP,KAAK,OAAS,IAAIsE,GAAcvE,EAAM,EAAG,EAAG,CAACC,EAAO,cAAcD,CAAI,CAAC,CAAC,EACxE,KAAK,IAAI,YAAY,KAAK,OAAO,GAAG,EACpC,KAAK,OAAO,IAAI,MAAM,SAAW,2CAEzC,CACA,OAAOiC,EAAQ,CACX,IAAIiD,EAAc,KAAK,QAEvB,GADA,KAAK,QAAUtB,GAAQ,KAAK,OAAO,QAAQ3B,EAAO,IAAI,CAAC,EACnD,KAAK,QAAU,KAAK,OAAO,aAAc,CACzC,IAAIkD,EAAU,KAAK,OAAO,aAAa,KAAK,OAAO,QAAQ,CAAC,EAAGlD,CAAM,EACjEkD,GAAW,KAAK,OAAO,QAAQ,CAAC,GAChC,KAAK,OAAO,OAAOlD,EAAO,KAAM,EAAG,EAAG,CAACkD,CAAO,CAAC,CACvD,CACA,IAAIC,EAAKnD,EAAO,KAAK,SACrB,MAAO,CAACX,EAAS,GAAG,KAAK,QAAS4D,EAAaE,EAAG,KAAMA,EAAG,EAAE,IACxD,KAAK,OAAO,iBAAmB,KAAK,OAAO,iBAAiBnD,CAAM,EAAI,GAC/E,CACA,SAAU,CACN,QAASoD,KAAO,KAAK,SACjBA,EAAI,QAAQ,CACpB,CACJ,EACMd,GAAN,KAAoB,CArwWpB,MAqwWoB,CAAA7E,EAAA,sBAChB,YAAYM,EAAMkE,EAAQG,EAAOD,EAAS,CACtC,KAAK,OAAS,GACd,KAAK,MAAQ,EACb,KAAK,QAAU,CAAC,EAChB,KAAK,IAAM,SAAS,cAAc,KAAK,EACvC,KAAK,IAAI,UAAY,mBACrB,KAAK,OAAOpE,EAAMkE,EAAQG,EAAOD,CAAO,CAC5C,CACA,OAAOpE,EAAMkE,EAAQG,EAAOD,EAAS,CAC7B,KAAK,QAAUF,IACf,KAAK,OAASA,EACd,KAAK,IAAI,MAAM,OAASA,EAAS,MAEjC,KAAK,OAASG,IACd,KAAK,IAAI,MAAM,WAAa,KAAK,MAAQA,GAASA,EAAQ,KAAO,IAChEiB,GAAY,KAAK,QAASlB,CAAO,GAClC,KAAK,WAAWpE,EAAMoE,CAAO,CACrC,CACA,WAAWpE,EAAMoE,EAAS,CACtB,IAAIQ,EAAM,mBAAoBW,EAAS,KAAK,IAAI,WAChD,QAASC,EAAO,EAAGC,EAAO,IAAK,CAC3B,IAAIC,EAASD,EAAMd,EAASa,EAAOpB,EAAQ,OAASA,EAAQoB,GAAM,EAAI,KAAMG,EAAU,GACtF,GAAIhB,EAAQ,CACR,IAAIiB,EAAIjB,EAAO,aACXiB,IACAhB,GAAO,IAAMgB,GACjB,QAASpF,EAAIiF,EAAMjF,EAAI,KAAK,QAAQ,OAAQA,IACxC,GAAI,KAAK,QAAQA,CAAC,EAAE,QAAQmE,CAAM,EAAG,CACjCe,EAASlF,EACTmF,EAAU,GACV,KACJ,CACR,MAEID,EAAS,KAAK,QAAQ,OAE1B,KAAOD,EAAOC,GAAQ,CAClB,IAAIG,EAAO,KAAK,QAAQJ,GAAM,EAC9B,GAAII,EAAK,MAAO,CACZA,EAAK,QAAQN,CAAM,EACnB,IAAIhD,EAAQgD,EAAO,YACnBA,EAAO,OAAO,EACdA,EAAShD,CACb,CACJ,CACA,GAAI,CAACoC,EACD,MACAA,EAAO,QACHgB,EACAJ,EAASA,EAAO,YAEhB,KAAK,IAAI,aAAaZ,EAAO,MAAM3E,CAAI,EAAGuF,CAAM,GAEpDI,GACAF,GACR,CACA,KAAK,IAAI,UAAYb,EACrB,KAAK,QAAUR,CACnB,CACA,SAAU,CACN,KAAK,WAAW,KAAM,CAAC,CAAC,CAC5B,CACJ,EACA,SAASkB,GAAYQ,EAAGhD,EAAG,CACvB,GAAIgD,EAAE,QAAUhD,EAAE,OACd,MAAO,GACX,QAAStC,EAAI,EAAGA,EAAIsF,EAAE,OAAQtF,IAC1B,GAAI,CAACsF,EAAEtF,CAAC,EAAE,QAAQsC,EAAEtC,CAAC,CAAC,EAClB,MAAO,GACf,MAAO,EACX,CAPSd,EAAA4F,GAAA,eAWT,IAAMS,GAAiC5E,EAAM,OAAO,EAI9C6E,GAAsC7E,EAAM,OAAO,EACnD8E,GAAgC9E,EAAM,OAAO,CAC/C,QAAQQ,EAAQ,CACZ,OAAOuE,GAAcvE,EAAQ,CAAE,aAAc,OAAQ,iBAAkB,CAAC,CAAE,EAAG,CACzE,iBAAiBmE,EAAGhD,EAAG,CACnB,IAAI5C,EAAS,OAAO,OAAO,CAAC,EAAG4F,CAAC,EAChC,QAASpF,KAASoC,EAAG,CACjB,IAAIqD,EAASjG,EAAOQ,CAAK,EAAG0F,EAAMtD,EAAEpC,CAAK,EACzCR,EAAOQ,CAAK,EAAIyF,EAAS,CAACnG,EAAM4C,EAAMlC,IAAUyF,EAAOnG,EAAM4C,EAAMlC,CAAK,GAAK0F,EAAIpG,EAAM4C,EAAMlC,CAAK,EAAI0F,CAC1G,CACA,OAAOlG,CACX,CACJ,CAAC,CACL,CACJ,CAAC,EACKmG,GAAN,cAA2BxF,EAAa,CAn2WxC,MAm2WwC,CAAAnB,EAAA,qBACpC,YAAY4G,EAAQ,CAChB,MAAM,EACN,KAAK,OAASA,CAClB,CACA,GAAGvF,EAAO,CAAE,OAAO,KAAK,QAAUA,EAAM,MAAQ,CAChD,OAAQ,CAAE,OAAO,SAAS,eAAe,KAAK,MAAM,CAAG,CAC3D,EACA,SAASwF,GAAavG,EAAMsG,EAAQ,CAChC,OAAOtG,EAAK,MAAM,MAAMiG,EAAgB,EAAE,aAAaK,EAAQtG,EAAK,KAAK,CAC7E,CAFSN,EAAA6G,GAAA,gBAGT,IAAMC,GAAgCjF,GAAc,QAAQ,CAAC0E,EAAgB,EAAGpG,IAAU,CACtF,MAAO,iBACP,oBAAqB,GACrB,QAAQG,EAAM,CAAE,OAAOA,EAAK,MAAM,MAAM+F,EAAiB,CAAG,EAC5D,WAAW/F,EAAM4C,EAAM6D,EAAQ,CAC3B,OAAIA,EAAO,KAAKC,GAAKA,EAAE,KAAK,EACjB,KACJ,IAAIL,GAAaE,GAAavG,EAAMA,EAAK,MAAM,IAAI,OAAO4C,EAAK,IAAI,EAAE,MAAM,CAAC,CACvF,EACA,aAAclD,EAAA,CAACM,EAAM2G,EAAQxC,IAAU,CACnC,QAASuC,KAAK1G,EAAK,MAAM,MAAMgG,EAAsB,EAAG,CACpD,IAAI9F,EAASwG,EAAE1G,EAAM2G,EAAQxC,CAAK,EAClC,GAAIjE,EACA,OAAOA,CACf,CACA,OAAO,IACX,EAPc,gBAQd,iBAAkBR,EAAAuC,GAAUA,EAAO,WAAW,MAAMgE,EAAgB,GAAKhE,EAAO,MAAM,MAAMgE,EAAgB,EAA1F,oBAClB,cAAcjG,EAAM,CAChB,OAAO,IAAIqG,GAAaE,GAAavG,EAAM4G,GAAc5G,EAAK,MAAM,IAAI,KAAK,CAAC,CAAC,CACnF,EACA,aAAa6G,EAAQ5E,EAAQ,CACzB,IAAI6E,EAAMP,GAAatE,EAAO,KAAM2E,GAAc3E,EAAO,KAAK,MAAM,IAAI,KAAK,CAAC,EAC9E,OAAO6E,GAAOD,EAAO,OAASA,EAAS,IAAIR,GAAaS,CAAG,CAC/D,EACA,iBAAkBjH,EAAM,MAAMoG,EAAgB,EAAE,iBAChD,KAAM,QACV,EAAE,EAIF,SAASc,GAAY9G,EAAS,CAAC,EAAG,CAC9B,MAAO,CACHgG,GAAiB,GAAGhG,CAAM,EAC1BwB,GAAQ,EACR+E,EACJ,CACJ,CANS9G,EAAAqH,GAAA,eAOT,SAASH,GAAcI,EAAO,CAC1B,IAAInC,EAAO,EACX,KAAOA,EAAOmC,GACVnC,EAAOA,EAAO,GAAK,EACvB,OAAOA,CACX,CALSnF,EAAAkH,GAAA,iBAMT,IAAMK,GAAsC,IAAI,cAAcpG,EAAa,CACvE,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,aAAe,qBACxB,CACJ,EACMqG,GAA2ChG,GAAgB,QAAQ,CAAC,WAAW,EAAGrB,GAAS,CAC7F,IAAIsH,EAAQ,CAAC,EAAGtC,EAAO,GACvB,QAASuC,KAASvH,EAAM,UAAU,OAAQ,CACtC,IAAIwH,EAAUxH,EAAM,IAAI,OAAOuH,EAAM,IAAI,EAAE,KACvCC,EAAUxC,IACVA,EAAOwC,EACPF,EAAM,KAAKF,GAAuB,MAAMI,CAAO,CAAC,EAExD,CACA,OAAO/F,EAAS,GAAG6F,CAAK,CAC5B,CAAC,EAMD,SAASG,IAA4B,CACjC,OAAOJ,EACX,CAFSxH,EAAA4H,GAAA,6BC56WT,IAAIC,GAAa,EACXC,GAAN,KAAY,CALZ,MAKY,CAAAC,EAAA,cACR,YAAYC,EAAMC,EAAI,CAClB,KAAK,KAAOD,EACZ,KAAK,GAAKC,CACd,CACJ,EAMMC,EAAN,KAAe,CAhBf,MAgBe,CAAAH,EAAA,iBAIX,YAAYI,EAAS,CAAC,EAAG,CACrB,KAAK,GAAKN,KACV,KAAK,QAAU,CAAC,CAACM,EAAO,QACxB,KAAK,YAAcA,EAAO,cAAgB,IAAM,CAC5C,MAAM,IAAI,MAAM,sDAAsD,CAC1E,GACA,KAAK,QAAUA,EAAO,SAAW,IACrC,CAUA,IAAIC,EAAO,CACP,GAAI,KAAK,QACL,MAAM,IAAI,WAAW,wCAAwC,EACjE,OAAI,OAAOA,GAAS,aAChBA,EAAQC,GAAS,MAAMD,CAAK,GACxBE,GAAS,CACb,IAAIC,EAASH,EAAME,CAAI,EACvB,OAAOC,IAAW,OAAY,KAAO,CAAC,KAAMA,CAAM,CACtD,CACJ,CACJ,EAOAL,EAAS,SAAW,IAAIA,EAAS,CAAE,YAAaH,EAAAS,GAAOA,EAAI,MAAM,GAAG,EAApB,cAAsB,CAAC,EAMvEN,EAAS,SAAW,IAAIA,EAAS,CAAE,YAAaH,EAAAS,GAAOA,EAAI,MAAM,GAAG,EAApB,cAAsB,CAAC,EAMvEN,EAAS,MAAQ,IAAIA,EAAS,CAAE,YAAaH,EAAAS,GAAOA,EAAI,MAAM,GAAG,EAApB,cAAsB,CAAC,EAYpEN,EAAS,QAAU,IAAIA,EAAS,CAAE,YAAaH,EAAAU,GAAS,CAChD,GAAIA,GAASA,GAAS,OAASA,GAAS,OAASA,GAAS,OACtD,MAAM,IAAI,WAAW,8BAAgCA,CAAK,EAC9D,OAAOA,GAAS,MACpB,EAJ2C,cAIzC,CAAC,EAMPP,EAAS,YAAc,IAAIA,EAAS,CAAE,QAAS,EAAK,CAAC,EAOrDA,EAAS,UAAY,IAAIA,EAAS,CAAE,QAAS,EAAK,CAAC,EAMnDA,EAAS,QAAU,IAAIA,EAAS,CAAE,QAAS,EAAK,CAAC,EAMjD,IAAMQ,GAAN,KAAkB,CA3GlB,MA2GkB,CAAAX,EAAA,oBACd,YAIAY,EAUAC,EAIAC,EAMAC,EAAY,GAAO,CACf,KAAK,KAAOH,EACZ,KAAK,QAAUC,EACf,KAAK,OAASC,EACd,KAAK,UAAYC,CACrB,CAIA,OAAO,IAAIH,EAAM,CACb,OAAOA,GAAQA,EAAK,OAASA,EAAK,MAAMT,EAAS,QAAQ,EAAE,CAC/D,CACJ,EACMa,GAAU,OAAO,OAAO,IAAI,EAI5BV,GAAN,MAAMW,CAAS,CArJf,MAqJe,CAAAjB,EAAA,iBAIX,YAOAkB,EAIAC,EAKAC,EAIAC,EAAQ,EAAG,CACP,KAAK,KAAOH,EACZ,KAAK,MAAQC,EACb,KAAK,GAAKC,EACV,KAAK,MAAQC,CACjB,CAIA,OAAO,OAAOC,EAAM,CAChB,IAAIH,EAAQG,EAAK,OAASA,EAAK,MAAM,OAAS,OAAO,OAAO,IAAI,EAAIN,GAChEK,GAASC,EAAK,IAAM,EAAuB,IAAMA,EAAK,QAAU,EAA2B,IAC1FA,EAAK,MAAQ,EAAyB,IAAMA,EAAK,MAAQ,KAAO,EAA6B,GAC9Ff,EAAO,IAAIU,EAASK,EAAK,MAAQ,GAAIH,EAAOG,EAAK,GAAID,CAAK,EAC9D,GAAIC,EAAK,OACL,QAASC,KAAOD,EAAK,MAGjB,GAFK,MAAM,QAAQC,CAAG,IAClBA,EAAMA,EAAIhB,CAAI,GACdgB,EAAK,CACL,GAAIA,EAAI,CAAC,EAAE,QACP,MAAM,IAAI,WAAW,4CAA4C,EACrEJ,EAAMI,EAAI,CAAC,EAAE,EAAE,EAAIA,EAAI,CAAC,CAC5B,EAER,OAAOhB,CACX,CAKA,KAAKiB,EAAM,CAAE,OAAO,KAAK,MAAMA,EAAK,EAAE,CAAG,CAIzC,IAAI,OAAQ,CAAE,OAAQ,KAAK,MAAQ,GAAwB,CAAG,CAI9D,IAAI,WAAY,CAAE,OAAQ,KAAK,MAAQ,GAA4B,CAAG,CAItE,IAAI,SAAU,CAAE,OAAQ,KAAK,MAAQ,GAA0B,CAAG,CAKlE,IAAI,aAAc,CAAE,OAAQ,KAAK,MAAQ,GAA8B,CAAG,CAK1E,GAAGN,EAAM,CACL,GAAI,OAAOA,GAAQ,SAAU,CACzB,GAAI,KAAK,MAAQA,EACb,MAAO,GACX,IAAIO,EAAQ,KAAK,KAAKtB,EAAS,KAAK,EACpC,OAAOsB,EAAQA,EAAM,QAAQP,CAAI,EAAI,GAAK,EAC9C,CACA,OAAO,KAAK,IAAMA,CACtB,CASA,OAAO,MAAMQ,EAAK,CACd,IAAIC,EAAS,OAAO,OAAO,IAAI,EAC/B,QAASH,KAAQE,EACb,QAASR,KAAQM,EAAK,MAAM,GAAG,EAC3BG,EAAOT,CAAI,EAAIQ,EAAIF,CAAI,EAC/B,OAAQI,GAAS,CACb,QAASC,EAASD,EAAK,KAAKzB,EAAS,KAAK,EAAG2B,EAAI,GAAIA,GAAKD,EAASA,EAAO,OAAS,GAAIC,IAAK,CACxF,IAAIC,EAAQJ,EAAOG,EAAI,EAAIF,EAAK,KAAOC,EAAOC,CAAC,CAAC,EAChD,GAAIC,EACA,OAAOA,CACf,CACJ,CACJ,CACJ,EAIAzB,GAAS,KAAO,IAAIA,GAAS,GAAI,OAAO,OAAO,IAAI,EAAG,EAAG,CAA0B,EAUnF,IAAM0B,GAAN,MAAMC,CAAQ,CA7Qd,MA6Qc,CAAAjC,EAAA,gBAKV,YAIAkC,EAAO,CACH,KAAK,MAAQA,EACb,QAASJ,EAAI,EAAGA,EAAII,EAAM,OAAQJ,IAC9B,GAAII,EAAMJ,CAAC,EAAE,IAAMA,EACf,MAAM,IAAI,WAAW,6EAA6E,CAC9G,CAMA,UAAUX,EAAO,CACb,IAAIgB,EAAW,CAAC,EAChB,QAAS5B,KAAQ,KAAK,MAAO,CACzB,IAAI6B,EAAW,KACf,QAASC,KAAUlB,EAAO,CACtB,IAAImB,EAAMD,EAAO9B,CAAI,EACrB,GAAI+B,EAAK,CACAF,IACDA,EAAW,OAAO,OAAO,CAAC,EAAG7B,EAAK,KAAK,GAC3C,IAAIG,EAAQ4B,EAAI,CAAC,EAAGd,EAAOc,EAAI,CAAC,EAC5Bd,EAAK,SAAWA,EAAK,MAAMY,IAC3B1B,EAAQc,EAAK,QAAQY,EAASZ,EAAK,EAAE,EAAGd,CAAK,GACjD0B,EAASZ,EAAK,EAAE,EAAId,CACxB,CACJ,CACAyB,EAAS,KAAKC,EAAW,IAAI9B,GAASC,EAAK,KAAM6B,EAAU7B,EAAK,GAAIA,EAAK,KAAK,EAAIA,CAAI,CAC1F,CACA,OAAO,IAAI0B,EAAQE,CAAQ,CAC/B,CACJ,EACMI,GAAa,IAAI,QAAWC,GAAkB,IAAI,QAKpDC,GACH,SAAUA,EAAU,CAMjBA,EAASA,EAAS,eAAoB,CAAC,EAAI,iBAM3CA,EAASA,EAAS,iBAAsB,CAAC,EAAI,mBAM7CA,EAASA,EAAS,aAAkB,CAAC,EAAI,eAOzCA,EAASA,EAAS,eAAoB,CAAC,EAAI,iBAO3CA,EAASA,EAAS,eAAoB,EAAE,EAAI,gBAChD,GAAGA,IAAaA,EAAW,CAAC,EAAE,EAiB9B,IAAMC,EAAN,MAAMC,CAAK,CA7WX,MA6WW,CAAA3C,EAAA,aAIP,YAIAO,EAIAqC,EAKAC,EAIAC,EAIA3B,EAAO,CASH,GARA,KAAK,KAAOZ,EACZ,KAAK,SAAWqC,EAChB,KAAK,UAAYC,EACjB,KAAK,OAASC,EAId,KAAK,MAAQ,KACT3B,GAASA,EAAM,OAAQ,CACvB,KAAK,MAAQ,OAAO,OAAO,IAAI,EAC/B,OAAS,CAACK,EAAMd,CAAK,IAAKS,EACtB,KAAK,MAAM,OAAOK,GAAQ,SAAWA,EAAOA,EAAK,EAAE,EAAId,CAC/D,CACJ,CAIA,UAAW,CACP,IAAIqC,EAAUpC,GAAY,IAAI,IAAI,EAClC,GAAIoC,GAAW,CAACA,EAAQ,QACpB,OAAOA,EAAQ,KAAK,SAAS,EACjC,IAAIH,EAAW,GACf,QAASI,KAAM,KAAK,SAAU,CAC1B,IAAIvC,EAAMuC,EAAG,SAAS,EAClBvC,IACImC,IACAA,GAAY,KAChBA,GAAYnC,EAEpB,CACA,OAAQ,KAAK,KAAK,MACb,KAAK,KAAK,KAAK,KAAK,IAAI,GAAK,CAAC,KAAK,KAAK,QAAU,KAAK,UAAU,KAAK,KAAK,IAAI,EAAI,KAAK,KAAK,OACzFmC,EAAS,OAAS,IAAMA,EAAW,IAAM,IAFzBA,CAG7B,CAMA,OAAOK,EAAO,EAAG,CACb,OAAO,IAAIC,GAAW,KAAK,QAASD,CAAI,CAC5C,CAMA,SAASE,EAAKC,EAAO,EAAGH,EAAO,EAAG,CAC9B,IAAII,EAAQd,GAAW,IAAI,IAAI,GAAK,KAAK,QACrCe,EAAS,IAAIJ,GAAWG,CAAK,EACjC,OAAAC,EAAO,OAAOH,EAAKC,CAAI,EACvBb,GAAW,IAAI,KAAMe,EAAO,KAAK,EAC1BA,CACX,CAKA,IAAI,SAAU,CACV,OAAO,IAAIC,GAAS,KAAM,EAAG,EAAG,IAAI,CACxC,CAYA,QAAQJ,EAAKC,EAAO,EAAG,CACnB,IAAIxB,EAAO4B,GAAYjB,GAAW,IAAI,IAAI,GAAK,KAAK,QAASY,EAAKC,EAAM,EAAK,EAC7E,OAAAb,GAAW,IAAI,KAAMX,CAAI,EAClBA,CACX,CAQA,aAAauB,EAAKC,EAAO,EAAG,CACxB,IAAIxB,EAAO4B,GAAYhB,GAAgB,IAAI,IAAI,GAAK,KAAK,QAASW,EAAKC,EAAM,EAAI,EACjF,OAAAZ,GAAgB,IAAI,KAAMZ,CAAI,EACvBA,CACX,CAQA,aAAauB,EAAKC,EAAO,EAAG,CACxB,OAAOK,GAAc,KAAMN,EAAKC,CAAI,CACxC,CAQA,QAAQ9B,EAAM,CACV,GAAI,CAAE,MAAAoC,EAAO,MAAAC,EAAO,KAAA1D,EAAO,EAAG,GAAAC,EAAK,KAAK,MAAO,EAAIoB,EAC/C2B,EAAO3B,EAAK,MAAQ,EAAGsC,GAAQX,EAAOR,EAAS,kBAAoB,EACvE,QAASoB,EAAI,KAAK,OAAOZ,EAAOR,EAAS,gBAAgB,IAAK,CAC1D,IAAIqB,EAAU,GACd,GAAID,EAAE,MAAQ3D,GAAM2D,EAAE,IAAM5D,IAAS,CAAC2D,GAAQC,EAAE,KAAK,aAAeH,EAAMG,CAAC,IAAM,IAAQ,CACrF,GAAIA,EAAE,WAAW,EACb,SACJC,EAAU,EACd,CACA,KACQA,GAAWH,IAAUC,GAAQ,CAACC,EAAE,KAAK,cACrCF,EAAME,CAAC,EACP,CAAAA,EAAE,YAAY,GAHb,CAKL,GAAI,CAACA,EAAE,OAAO,EACV,OACJC,EAAU,EACd,CACJ,CACJ,CAKA,KAAKtC,EAAM,CACP,OAAQA,EAAK,QAAiC,KAAK,MAAQ,KAAK,MAAMA,EAAK,EAAE,EAAI,OAA1D,KAAK,KAAK,KAAKA,CAAI,CAC9C,CAMA,IAAI,YAAa,CACb,IAAIhB,EAAS,CAAC,EACd,GAAI,KAAK,MACL,QAASY,KAAM,KAAK,MAChBZ,EAAO,KAAK,CAAC,CAACY,EAAI,KAAK,MAAMA,CAAE,CAAC,CAAC,EACzC,OAAOZ,CACX,CAMA,QAAQJ,EAAS,CAAC,EAAG,CACjB,OAAO,KAAK,SAAS,QAAU,EAA+B,KAC1D2D,GAAazD,GAAS,KAAM,KAAK,SAAU,KAAK,UAAW,EAAG,KAAK,SAAS,OAAQ,EAAG,KAAK,OAAQ,CAACsC,EAAUC,EAAWC,IAAW,IAAIH,EAAK,KAAK,KAAMC,EAAUC,EAAWC,EAAQ,KAAK,UAAU,EAAG1C,EAAO,WAAa,CAACwC,EAAUC,EAAWC,IAAW,IAAIH,EAAKrC,GAAS,KAAMsC,EAAUC,EAAWC,CAAM,EAAE,CAC1T,CAKA,OAAO,MAAMkB,EAAM,CAAE,OAAOC,GAAUD,CAAI,CAAG,CACjD,EAIAtB,EAAK,MAAQ,IAAIA,EAAKpC,GAAS,KAAM,CAAC,EAAG,CAAC,EAAG,CAAC,EAC9C,IAAM4D,GAAN,MAAMC,CAAiB,CA5iBvB,MA4iBuB,CAAAnE,EAAA,yBACnB,YAAYoE,EAAQC,EAAO,CACvB,KAAK,OAASD,EACd,KAAK,MAAQC,CACjB,CACA,IAAI,IAAK,CAAE,OAAO,KAAK,OAAO,KAAK,MAAQ,CAAC,CAAG,CAC/C,IAAI,OAAQ,CAAE,OAAO,KAAK,OAAO,KAAK,MAAQ,CAAC,CAAG,CAClD,IAAI,KAAM,CAAE,OAAO,KAAK,OAAO,KAAK,MAAQ,CAAC,CAAG,CAChD,IAAI,MAAO,CAAE,OAAO,KAAK,OAAO,KAAK,MAAQ,CAAC,CAAG,CACjD,IAAI,KAAM,CAAE,OAAO,KAAK,KAAO,CAC/B,MAAO,CAAE,KAAK,OAAS,CAAG,CAC1B,MAAO,CAAE,OAAO,IAAIF,EAAiB,KAAK,OAAQ,KAAK,KAAK,CAAG,CACnE,EAOMG,GAAN,MAAMC,CAAW,CA/jBjB,MA+jBiB,CAAAvE,EAAA,mBAIb,YAIAoE,EAIAtB,EAIA0B,EAAK,CACD,KAAK,OAASJ,EACd,KAAK,OAAStB,EACd,KAAK,IAAM0B,CACf,CAIA,IAAI,MAAO,CAAE,OAAOlE,GAAS,IAAM,CAInC,UAAW,CACP,IAAIE,EAAS,CAAC,EACd,QAAS6D,EAAQ,EAAGA,EAAQ,KAAK,OAAO,QACpC7D,EAAO,KAAK,KAAK,YAAY6D,CAAK,CAAC,EACnCA,EAAQ,KAAK,OAAOA,EAAQ,CAAC,EAEjC,OAAO7D,EAAO,KAAK,GAAG,CAC1B,CAIA,YAAY6D,EAAO,CACf,IAAIjD,EAAK,KAAK,OAAOiD,CAAK,EAAGI,EAAW,KAAK,OAAOJ,EAAQ,CAAC,EACzD9D,EAAO,KAAK,IAAI,MAAMa,CAAE,EAAGZ,EAASD,EAAK,KAI7C,GAHI,KAAK,KAAKC,CAAM,GAAK,CAACD,EAAK,UAC3BC,EAAS,KAAK,UAAUA,CAAM,GAClC6D,GAAS,EACLI,GAAYJ,EACZ,OAAO7D,EACX,IAAIoC,EAAW,CAAC,EAChB,KAAOyB,EAAQI,GACX7B,EAAS,KAAK,KAAK,YAAYyB,CAAK,CAAC,EACrCA,EAAQ,KAAK,OAAOA,EAAQ,CAAC,EAEjC,OAAO7D,EAAS,IAAMoC,EAAS,KAAK,GAAG,EAAI,GAC/C,CAIA,UAAU8B,EAAYD,EAAUE,EAAKxB,EAAKC,EAAM,CAC5C,GAAI,CAAE,OAAAgB,CAAO,EAAI,KAAMQ,EAAO,GAC9B,QAAS9C,EAAI4C,EAAY5C,GAAK2C,GACtB,EAAAI,GAAUzB,EAAMD,EAAKiB,EAAOtC,EAAI,CAAC,EAAGsC,EAAOtC,EAAI,CAAC,CAAC,IACjD8C,EAAO9C,EACH6C,EAAM,IAHsB7C,EAAIsC,EAAOtC,EAAI,CAAC,EACpD,CAMJ,OAAO8C,CACX,CAIA,MAAME,EAAQC,EAAM9E,EAAM,CACtB,IAAI+E,EAAI,KAAK,OACTC,EAAO,IAAI,YAAYF,EAAOD,CAAM,EAAGI,EAAM,EACjD,QAASpD,EAAIgD,EAAQK,EAAI,EAAGrD,EAAIiD,GAAO,CACnCE,EAAKE,GAAG,EAAIH,EAAElD,GAAG,EACjBmD,EAAKE,GAAG,EAAIH,EAAElD,GAAG,EAAI7B,EACrB,IAAIC,EAAK+E,EAAKE,GAAG,EAAIH,EAAElD,GAAG,EAAI7B,EAC9BgF,EAAKE,GAAG,EAAIH,EAAElD,GAAG,EAAIgD,EACrBI,EAAM,KAAK,IAAIA,EAAKhF,CAAE,CAC1B,CACA,OAAO,IAAIqE,EAAWU,EAAMC,EAAK,KAAK,GAAG,CAC7C,CACJ,EACA,SAASL,GAAUzB,EAAMD,EAAKlD,EAAMC,EAAI,CACpC,OAAQkD,EAAM,CACV,IAAK,GAAsB,OAAOnD,EAAOkD,EACzC,IAAK,GAA0B,OAAOjD,GAAMiD,GAAOlD,EAAOkD,EAC1D,IAAK,GAAqB,OAAOlD,EAAOkD,GAAOjD,EAAKiD,EACpD,IAAK,GAAwB,OAAOlD,GAAQkD,GAAOjD,EAAKiD,EACxD,IAAK,GAAoB,OAAOjD,EAAKiD,EACrC,IAAK,GAAuB,MAAO,EACvC,CACJ,CATSnD,EAAA6E,GAAA,aAUT,SAASrB,GAAY5B,EAAMuB,EAAKC,EAAMgC,EAAU,CAG5C,QAFIC,EAEGzD,EAAK,MAAQA,EAAK,KACpBwB,EAAO,EAAIxB,EAAK,MAAQuB,EAAMvB,EAAK,KAAOuB,KAC1CC,EAAO,GAAKxB,EAAK,IAAMuB,EAAMvB,EAAK,GAAKuB,IAAM,CAC9C,IAAImC,EAAS,CAACF,GAAYxD,aAAgB2B,IAAY3B,EAAK,MAAQ,EAAI,KAAOA,EAAK,OACnF,GAAI,CAAC0D,EACD,OAAO1D,EACXA,EAAO0D,CACX,CACA,IAAIrC,EAAOmC,EAAW,EAAI3C,EAAS,eAEnC,GAAI2C,EACA,QAASG,EAAO3D,EAAM0D,EAASC,EAAK,OAAQD,EAAQC,EAAOD,EAAQA,EAASC,EAAK,OACzEA,aAAgBhC,IAAYgC,EAAK,MAAQ,KAAOF,EAAKC,EAAO,MAAMnC,EAAKC,EAAMH,CAAI,KAAO,MAAQoC,IAAO,OAAS,OAASA,EAAG,OAASE,EAAK,OAC1I3D,EAAO0D,GAEnB,OAAS,CACL,IAAIE,EAAQ5D,EAAK,MAAMuB,EAAKC,EAAMH,CAAI,EACtC,GAAI,CAACuC,EACD,OAAO5D,EACXA,EAAO4D,CACX,CACJ,CAxBSxF,EAAAwD,GAAA,eAyBT,IAAMiC,GAAN,KAAe,CAtrBf,MAsrBe,CAAAzF,EAAA,iBACX,OAAOiD,EAAO,EAAG,CAAE,OAAO,IAAIC,GAAW,KAAMD,CAAI,CAAG,CACtD,SAAS1C,EAAMmF,EAAS,KAAMC,EAAQ,KAAM,CACxC,IAAI,EAAIC,GAAY,KAAMrF,EAAMmF,EAAQC,CAAK,EAC7C,OAAO,EAAE,OAAS,EAAE,CAAC,EAAI,IAC7B,CACA,YAAYpF,EAAMmF,EAAS,KAAMC,EAAQ,KAAM,CAC3C,OAAOC,GAAY,KAAMrF,EAAMmF,EAAQC,CAAK,CAChD,CACA,QAAQxC,EAAKC,EAAO,EAAG,CACnB,OAAOI,GAAY,KAAML,EAAKC,EAAM,EAAK,CAC7C,CACA,aAAaD,EAAKC,EAAO,EAAG,CACxB,OAAOI,GAAY,KAAML,EAAKC,EAAM,EAAI,CAC5C,CACA,aAAayC,EAAS,CAClB,OAAOC,GAAiB,KAAK,OAAQD,CAAO,CAChD,CACA,2BAA2B1C,EAAK,CAC5B,IAAIoC,EAAO,KAAK,YAAYpC,CAAG,EAAGvB,EAAO,KACzC,KAAO2D,GAAM,CACT,IAAIQ,EAAOR,EAAK,UAChB,GAAI,CAACQ,GAAQA,EAAK,IAAMR,EAAK,GACzB,MACAQ,EAAK,KAAK,SAAWA,EAAK,MAAQA,EAAK,IACvCnE,EAAO2D,EACPA,EAAOQ,EAAK,aAGZR,EAAOQ,CAEf,CACA,OAAOnE,CACX,CACA,IAAI,MAAO,CAAE,OAAO,IAAM,CAC1B,IAAI,MAAO,CAAE,OAAO,KAAK,MAAQ,CACrC,EACM2B,GAAN,MAAMyC,UAAiBP,EAAS,CA3tBhC,MA2tBgC,CAAAzF,EAAA,iBAC5B,YAAYiG,EAAOhG,EAEnBoE,EAAO6B,EAAS,CACZ,MAAM,EACN,KAAK,MAAQD,EACb,KAAK,KAAOhG,EACZ,KAAK,MAAQoE,EACb,KAAK,QAAU6B,CACnB,CACA,IAAI,MAAO,CAAE,OAAO,KAAK,MAAM,IAAM,CACrC,IAAI,MAAO,CAAE,OAAO,KAAK,MAAM,KAAK,IAAM,CAC1C,IAAI,IAAK,CAAE,OAAO,KAAK,KAAO,KAAK,MAAM,MAAQ,CACjD,UAAUpE,EAAG6C,EAAKxB,EAAKC,EAAMH,EAAO,EAAG,CACnC,QAASqC,EAAS,OAAQ,CACtB,OAAS,CAAE,SAAA1C,EAAU,UAAAC,CAAU,EAAIyC,EAAO,MAAOa,EAAIxB,EAAM,EAAI/B,EAAS,OAAS,GAAId,GAAKqE,EAAGrE,GAAK6C,EAAK,CACnG,IAAIyB,EAAOxD,EAASd,CAAC,EAAGuE,EAAQxD,EAAUf,CAAC,EAAIwD,EAAO,KAAMvC,EAC5D,GAAI,IAAGE,EAAOR,EAAS,gBAAmB2D,aAAgB1D,IACrDK,EAAUpC,GAAY,IAAIyF,CAAI,IAAM,CAACrD,EAAQ,SAAWA,EAAQ,WACjEI,GAAOkD,GAASlD,GAAOkD,EAAQD,EAAK,SACpC,CAACvB,GAAUzB,EAAMD,EAAKkD,EAAOA,EAAQD,EAAK,MAAM,IAEpD,GAAIA,aAAgB9B,GAAY,CAC5B,GAAIrB,EAAOR,EAAS,eAChB,SACJ,IAAI4B,EAAQ+B,EAAK,UAAU,EAAGA,EAAK,OAAO,OAAQzB,EAAKxB,EAAMkD,EAAOjD,CAAI,EACxE,GAAIiB,EAAQ,GACR,OAAO,IAAIiC,GAAW,IAAIC,GAAcjB,EAAQc,EAAMtE,EAAGuE,CAAK,EAAG,KAAMhC,CAAK,CACpF,SACUpB,EAAOR,EAAS,kBAAsB,CAAC2D,EAAK,KAAK,aAAeI,GAASJ,CAAI,EAAI,CACvF,IAAIrD,EACJ,GAAI,EAAEE,EAAOR,EAAS,gBAAkBM,EAAUpC,GAAY,IAAIyF,CAAI,IAAM,CAACrD,EAAQ,QACjF,OAAO,IAAIiD,EAASjD,EAAQ,KAAMsD,EAAOvE,EAAGwD,CAAM,EACtD,IAAIE,EAAQ,IAAIQ,EAASI,EAAMC,EAAOvE,EAAGwD,CAAM,EAC/C,OAAQrC,EAAOR,EAAS,kBAAqB,CAAC+C,EAAM,KAAK,YAAcA,EACjEA,EAAM,UAAUb,EAAM,EAAIyB,EAAK,SAAS,OAAS,EAAI,EAAGzB,EAAKxB,EAAKC,EAAMH,CAAI,CACtF,EACJ,CAQA,GAPKA,EAAOR,EAAS,kBAAqB,CAAC6C,EAAO,KAAK,cAEnDA,EAAO,OAAS,EAChBxD,EAAIwD,EAAO,MAAQX,EAEnB7C,EAAI6C,EAAM,EAAI,GAAKW,EAAO,QAAQ,MAAM,SAAS,OACrDA,EAASA,EAAO,QACZ,CAACA,GACD,OAAO,IACf,CACJ,CACA,IAAI,YAAa,CAAE,OAAO,KAAK,UAAU,EAAG,EAAG,EAAG,CAAqB,CAAG,CAC1E,IAAI,WAAY,CAAE,OAAO,KAAK,UAAU,KAAK,MAAM,SAAS,OAAS,EAAG,GAAI,EAAG,CAAqB,CAAG,CACvG,WAAWnC,EAAK,CAAE,OAAO,KAAK,UAAU,EAAG,EAAGA,EAAK,CAAkB,CAAG,CACxE,YAAYA,EAAK,CAAE,OAAO,KAAK,UAAU,KAAK,MAAM,SAAS,OAAS,EAAG,GAAIA,EAAK,EAAoB,CAAG,CACzG,KAAK3B,EAAM,CAAE,OAAO,KAAK,MAAM,KAAKA,CAAI,CAAG,CAC3C,MAAM2B,EAAKC,EAAMH,EAAO,EAAG,CACvB,IAAIF,EACJ,GAAI,EAAEE,EAAOR,EAAS,kBAAoBM,EAAUpC,GAAY,IAAI,KAAK,KAAK,IAAMoC,EAAQ,QAAS,CACjG,IAAI0D,EAAOtD,EAAM,KAAK,KAAMuD,EAAkBzD,EAAOR,EAAS,gBAAmBM,EAAQ,UACzF,OAAS,CAAE,KAAA9C,EAAM,GAAAC,CAAG,IAAK6C,EAAQ,QAC7B,IAAKK,EAAO,GAAKsD,EAAiBzG,GAAQwG,EAAOxG,EAAOwG,KACnDrD,EAAO,GAAKsD,EAAiBxG,GAAMuG,EAAOvG,EAAKuG,GAChD,OAAO,IAAIT,EAASjD,EAAQ,KAAMA,EAAQ,QAAQ,CAAC,EAAE,KAAO,KAAK,KAAM,GAAI,IAAI,CAE3F,CACA,OAAO,KAAK,UAAU,EAAG,EAAGI,EAAKC,EAAMH,CAAI,CAC/C,CACA,uBAAwB,CACpB,IAAI0D,EAAM,KACV,KAAOA,EAAI,KAAK,aAAeA,EAAI,SAC/BA,EAAMA,EAAI,QACd,OAAOA,CACX,CACA,IAAI,QAAS,CACT,OAAO,KAAK,QAAU,KAAK,QAAQ,sBAAsB,EAAI,IACjE,CACA,IAAI,aAAc,CACd,OAAO,KAAK,SAAW,KAAK,OAAS,EAAI,KAAK,QAAQ,UAAU,KAAK,MAAQ,EAAG,EAAG,EAAG,CAAqB,EAAI,IACnH,CACA,IAAI,aAAc,CACd,OAAO,KAAK,SAAW,KAAK,OAAS,EAAI,KAAK,QAAQ,UAAU,KAAK,MAAQ,EAAG,GAAI,EAAG,CAAqB,EAAI,IACpH,CACA,IAAI,MAAO,CAAE,OAAO,KAAK,KAAO,CAChC,QAAS,CAAE,OAAO,KAAK,KAAO,CAI9B,UAAW,CAAE,OAAO,KAAK,MAAM,SAAS,CAAG,CAC/C,EACA,SAASf,GAAYhE,EAAMrB,EAAMmF,EAAQC,EAAO,CAC5C,IAAIiB,EAAMhF,EAAK,OAAO,EAAGpB,EAAS,CAAC,EACnC,GAAI,CAACoG,EAAI,WAAW,EAChB,OAAOpG,EACX,GAAIkF,GAAU,MACV,QAAS3D,EAAQ,GAAO,CAACA,GAErB,GADAA,EAAQ6E,EAAI,KAAK,GAAGlB,CAAM,EACtB,CAACkB,EAAI,YAAY,EACjB,OAAOpG,EAEnB,OAAS,CACL,GAAImF,GAAS,MAAQiB,EAAI,KAAK,GAAGjB,CAAK,EAClC,OAAOnF,EAGX,GAFIoG,EAAI,KAAK,GAAGrG,CAAI,GAChBC,EAAO,KAAKoG,EAAI,IAAI,EACpB,CAACA,EAAI,YAAY,EACjB,OAAOjB,GAAS,KAAOnF,EAAS,CAAC,CACzC,CACJ,CAlBSR,EAAA4F,GAAA,eAmBT,SAASE,GAAiBlE,EAAMiE,EAAS/D,EAAI+D,EAAQ,OAAS,EAAG,CAC7D,QAASgB,EAAIjF,EAAME,GAAK,EAAG+E,EAAIA,EAAE,OAAQ,CACrC,GAAI,CAACA,EACD,MAAO,GACX,GAAI,CAACA,EAAE,KAAK,YAAa,CACrB,GAAIhB,EAAQ/D,CAAC,GAAK+D,EAAQ/D,CAAC,GAAK+E,EAAE,KAC9B,MAAO,GACX/E,GACJ,CACJ,CACA,MAAO,EACX,CAXS9B,EAAA8F,GAAA,oBAYT,IAAMS,GAAN,KAAoB,CAl1BpB,MAk1BoB,CAAAvG,EAAA,sBAChB,YAAYsF,EAAQlB,EAAQC,EAAOgC,EAAO,CACtC,KAAK,OAASf,EACd,KAAK,OAASlB,EACd,KAAK,MAAQC,EACb,KAAK,MAAQgC,CACjB,CACJ,EACMC,GAAN,MAAMQ,UAAmBrB,EAAS,CA11BlC,MA01BkC,CAAAzF,EAAA,mBAC9B,IAAI,MAAO,CAAE,OAAO,KAAK,KAAK,IAAM,CACpC,IAAI,MAAO,CAAE,OAAO,KAAK,QAAQ,MAAQ,KAAK,QAAQ,OAAO,OAAO,KAAK,MAAQ,CAAC,CAAG,CACrF,IAAI,IAAK,CAAE,OAAO,KAAK,QAAQ,MAAQ,KAAK,QAAQ,OAAO,OAAO,KAAK,MAAQ,CAAC,CAAG,CACnF,YAAY6F,EAASK,EAAS7B,EAAO,CACjC,MAAM,EACN,KAAK,QAAUwB,EACf,KAAK,QAAUK,EACf,KAAK,MAAQ7B,EACb,KAAK,KAAOwB,EAAQ,OAAO,IAAI,MAAMA,EAAQ,OAAO,OAAOxB,CAAK,CAAC,CACrE,CACA,MAAMM,EAAKxB,EAAKC,EAAM,CAClB,GAAI,CAAE,OAAAgB,CAAO,EAAI,KAAK,QAClBC,EAAQD,EAAO,UAAU,KAAK,MAAQ,EAAGA,EAAO,OAAO,KAAK,MAAQ,CAAC,EAAGO,EAAKxB,EAAM,KAAK,QAAQ,MAAOC,CAAI,EAC/G,OAAOiB,EAAQ,EAAI,KAAO,IAAIyC,EAAW,KAAK,QAAS,KAAMzC,CAAK,CACtE,CACA,IAAI,YAAa,CAAE,OAAO,KAAK,MAAM,EAAG,EAAG,CAAqB,CAAG,CACnE,IAAI,WAAY,CAAE,OAAO,KAAK,MAAM,GAAI,EAAG,CAAqB,CAAG,CACnE,WAAWlB,EAAK,CAAE,OAAO,KAAK,MAAM,EAAGA,EAAK,CAAkB,CAAG,CACjE,YAAYA,EAAK,CAAE,OAAO,KAAK,MAAM,GAAIA,EAAK,EAAoB,CAAG,CACrE,KAAK3B,EAAM,CAAE,OAAO,KAAK,KAAK,KAAKA,CAAI,CAAG,CAC1C,MAAM2B,EAAKC,EAAMH,EAAO,EAAG,CACvB,GAAIA,EAAOR,EAAS,eAChB,OAAO,KACX,GAAI,CAAE,OAAA2B,CAAO,EAAI,KAAK,QAClBC,EAAQD,EAAO,UAAU,KAAK,MAAQ,EAAGA,EAAO,OAAO,KAAK,MAAQ,CAAC,EAAGhB,EAAO,EAAI,EAAI,GAAID,EAAM,KAAK,QAAQ,MAAOC,CAAI,EAC7H,OAAOiB,EAAQ,EAAI,KAAO,IAAIyC,EAAW,KAAK,QAAS,KAAMzC,CAAK,CACtE,CACA,IAAI,QAAS,CACT,OAAO,KAAK,SAAW,KAAK,QAAQ,OAAO,sBAAsB,CACrE,CACA,gBAAgBM,EAAK,CACjB,OAAO,KAAK,QAAU,KAAO,KAAK,QAAQ,OAAO,UAAU,KAAK,QAAQ,MAAQA,EAAKA,EAAK,EAAG,CAAqB,CACtH,CACA,IAAI,aAAc,CACd,GAAI,CAAE,OAAAP,CAAO,EAAI,KAAK,QAClBuB,EAAQvB,EAAO,OAAO,KAAK,MAAQ,CAAC,EACxC,OAAIuB,GAAS,KAAK,QAAUvB,EAAO,OAAO,KAAK,QAAQ,MAAQ,CAAC,EAAIA,EAAO,OAAO,QACvE,IAAI0C,EAAW,KAAK,QAAS,KAAK,QAASnB,CAAK,EACpD,KAAK,gBAAgB,CAAC,CACjC,CACA,IAAI,aAAc,CACd,GAAI,CAAE,OAAAvB,CAAO,EAAI,KAAK,QAClB2C,EAAc,KAAK,QAAU,KAAK,QAAQ,MAAQ,EAAI,EAC1D,OAAI,KAAK,OAASA,EACP,KAAK,gBAAgB,EAAE,EAC3B,IAAID,EAAW,KAAK,QAAS,KAAK,QAAS1C,EAAO,UAAU2C,EAAa,KAAK,MAAO,GAAI,EAAG,CAAqB,CAAC,CAC7H,CACA,IAAI,MAAO,CAAE,OAAO,IAAM,CAC1B,QAAS,CACL,IAAInE,EAAW,CAAC,EAAGC,EAAY,CAAC,EAC5B,CAAE,OAAAuB,CAAO,EAAI,KAAK,QAClBU,EAAS,KAAK,MAAQ,EAAGC,EAAOX,EAAO,OAAO,KAAK,MAAQ,CAAC,EAChE,GAAIW,EAAOD,EAAQ,CACf,IAAI7E,EAAOmE,EAAO,OAAO,KAAK,MAAQ,CAAC,EACvCxB,EAAS,KAAKwB,EAAO,MAAMU,EAAQC,EAAM9E,CAAI,CAAC,EAC9C4C,EAAU,KAAK,CAAC,CACpB,CACA,OAAO,IAAIH,EAAK,KAAK,KAAME,EAAUC,EAAW,KAAK,GAAK,KAAK,IAAI,CACvE,CAIA,UAAW,CAAE,OAAO,KAAK,QAAQ,OAAO,YAAY,KAAK,KAAK,CAAG,CACrE,EACA,SAASmE,GAAUC,EAAO,CACtB,GAAI,CAACA,EAAM,OACP,OAAO,KACX,IAAIrC,EAAO,EAAGsC,EAASD,EAAM,CAAC,EAC9B,QAASnF,EAAI,EAAGA,EAAImF,EAAM,OAAQnF,IAAK,CACnC,IAAIF,EAAOqF,EAAMnF,CAAC,GACdF,EAAK,KAAOsF,EAAO,MAAQtF,EAAK,GAAKsF,EAAO,MAC5CA,EAAStF,EACTgD,EAAO9C,EAEf,CACA,IAAIsE,EAAOc,aAAkB3D,IAAY2D,EAAO,MAAQ,EAAI,KAAOA,EAAO,OACtEC,EAAWF,EAAM,MAAM,EAC3B,OAAIb,EACAe,EAASvC,CAAI,EAAIwB,EAEjBe,EAAS,OAAOvC,EAAM,CAAC,EACpB,IAAIwC,GAAcD,EAAUD,CAAM,CAC7C,CAlBSlH,EAAAgH,GAAA,aAmBT,IAAMI,GAAN,KAAoB,CA96BpB,MA86BoB,CAAApH,EAAA,sBAChB,YAAYiH,EAAOrF,EAAM,CACrB,KAAK,MAAQqF,EACb,KAAK,KAAOrF,CAChB,CACA,IAAI,MAAO,CAAE,OAAOoF,GAAU,KAAK,KAAK,CAAG,CAC/C,EACA,SAASvD,GAAc7C,EAAMuC,EAAKC,EAAM,CACpC,IAAIoC,EAAQ5E,EAAK,aAAauC,EAAKC,CAAI,EAAGiE,EAAS,KACnD,QAAS9B,EAAOC,aAAiBjC,GAAWiC,EAAQA,EAAM,QAAQ,OAAQD,EAAMA,EAAOA,EAAK,OACxF,GAAIA,EAAK,MAAQ,EAAG,CAChB,IAAID,EAASC,EAAK,QACjB8B,IAAWA,EAAS,CAAC7B,CAAK,IAAI,KAAKF,EAAO,QAAQnC,EAAKC,CAAI,CAAC,EAC7DmC,EAAOD,CACX,KACK,CACD,IAAIgC,EAAQ3G,GAAY,IAAI4E,EAAK,IAAI,EAErC,GAAI+B,GAASA,EAAM,SAAWA,EAAM,QAAQ,CAAC,EAAE,MAAQnE,GAAOmE,EAAM,QAAQA,EAAM,QAAQ,OAAS,CAAC,EAAE,IAAMnE,EAAK,CAC7G,IAAIoE,EAAO,IAAIhE,GAAS+D,EAAM,KAAMA,EAAM,QAAQ,CAAC,EAAE,KAAO/B,EAAK,KAAM,GAAIA,CAAI,GAC9E8B,IAAWA,EAAS,CAAC7B,CAAK,IAAI,KAAKhC,GAAY+D,EAAMpE,EAAKC,EAAM,EAAK,CAAC,CAC3E,CACJ,CAEJ,OAAOiE,EAASL,GAAUK,CAAM,EAAI7B,CACxC,CAlBSxF,EAAAyD,GAAA,iBAuBT,IAAMP,GAAN,KAAiB,CA58BjB,MA48BiB,CAAAlD,EAAA,mBAIb,IAAI,MAAO,CAAE,OAAO,KAAK,KAAK,IAAM,CAIpC,YAAY4B,EAAMqB,EAAO,EAAG,CAYxB,GARA,KAAK,OAAS,KACd,KAAK,MAAQ,CAAC,EAId,KAAK,MAAQ,EACb,KAAK,WAAa,KAClB,KAAK,KAAOA,EAAO,CAACR,EAAS,eACzBb,aAAgB2B,GAChB,KAAK,UAAU3B,CAAI,MAElB,CACD,KAAK,MAAQA,EAAK,QAAQ,OAC1B,KAAK,OAASA,EAAK,QACnB,QAAS4F,EAAI5F,EAAK,QAAS4F,EAAGA,EAAIA,EAAE,QAChC,KAAK,MAAM,QAAQA,EAAE,KAAK,EAC9B,KAAK,WAAa5F,EAClB,KAAK,SAASA,EAAK,KAAK,CAC5B,CACJ,CACA,UAAUA,EAAM,CACZ,OAAKA,GAEL,KAAK,MAAQA,EACb,KAAK,KAAOA,EAAK,KACjB,KAAK,KAAOA,EAAK,KACjB,KAAK,GAAKA,EAAK,GACR,IALI,EAMf,CACA,SAASyC,EAAO9D,EAAM,CAClB,KAAK,MAAQ8D,EACb,GAAI,CAAE,MAAAgC,EAAO,OAAAjC,CAAO,EAAI,KAAK,OAC7B,YAAK,KAAO7D,GAAQ6D,EAAO,IAAI,MAAMA,EAAO,OAAOC,CAAK,CAAC,EACzD,KAAK,KAAOgC,EAAQjC,EAAO,OAAOC,EAAQ,CAAC,EAC3C,KAAK,GAAKgC,EAAQjC,EAAO,OAAOC,EAAQ,CAAC,EAClC,EACX,CAIA,MAAMzC,EAAM,CACR,OAAKA,EAEDA,aAAgB2B,IAChB,KAAK,OAAS,KACP,KAAK,UAAU3B,CAAI,IAE9B,KAAK,OAASA,EAAK,QACZ,KAAK,SAASA,EAAK,MAAOA,EAAK,IAAI,GAN/B,EAOf,CAIA,UAAW,CACP,OAAO,KAAK,OAAS,KAAK,OAAO,OAAO,YAAY,KAAK,KAAK,EAAI,KAAK,MAAM,SAAS,CAC1F,CAIA,WAAW+C,EAAKxB,EAAKC,EAAM,CACvB,GAAI,CAAC,KAAK,OACN,OAAO,KAAK,MAAM,KAAK,MAAM,UAAUuB,EAAM,EAAI,KAAK,MAAM,MAAM,SAAS,OAAS,EAAI,EAAGA,EAAKxB,EAAKC,EAAM,KAAK,IAAI,CAAC,EACzH,GAAI,CAAE,OAAAgB,CAAO,EAAI,KAAK,OAClBC,EAAQD,EAAO,UAAU,KAAK,MAAQ,EAAGA,EAAO,OAAO,KAAK,MAAQ,CAAC,EAAGO,EAAKxB,EAAM,KAAK,OAAO,MAAOC,CAAI,EAC9G,OAAIiB,EAAQ,EACD,IACX,KAAK,MAAM,KAAK,KAAK,KAAK,EACnB,KAAK,SAASA,CAAK,EAC9B,CAKA,YAAa,CAAE,OAAO,KAAK,WAAW,EAAG,EAAG,CAAqB,CAAG,CAIpE,WAAY,CAAE,OAAO,KAAK,WAAW,GAAI,EAAG,CAAqB,CAAG,CAIpE,WAAWlB,EAAK,CAAE,OAAO,KAAK,WAAW,EAAGA,EAAK,CAAkB,CAAG,CAItE,YAAYA,EAAK,CAAE,OAAO,KAAK,WAAW,GAAIA,EAAK,EAAoB,CAAG,CAQ1E,MAAMA,EAAKC,EAAMH,EAAO,KAAK,KAAM,CAC/B,OAAK,KAAK,OAEHA,EAAOR,EAAS,eAAiB,GAAQ,KAAK,WAAW,EAAGU,EAAKC,CAAI,EADjE,KAAK,MAAM,KAAK,MAAM,MAAMD,EAAKC,EAAMH,CAAI,CAAC,CAE3D,CAIA,QAAS,CACL,GAAI,CAAC,KAAK,OACN,OAAO,KAAK,UAAW,KAAK,KAAOR,EAAS,iBAAoB,KAAK,MAAM,QAAU,KAAK,MAAM,MAAM,EAC1G,GAAI,KAAK,MAAM,OACX,OAAO,KAAK,SAAS,KAAK,MAAM,IAAI,CAAC,EACzC,IAAI6C,EAAU,KAAK,KAAO7C,EAAS,iBAAoB,KAAK,OAAO,OAAS,KAAK,OAAO,OAAO,sBAAsB,EACrH,YAAK,OAAS,KACP,KAAK,UAAU6C,CAAM,CAChC,CAIA,QAAQX,EAAK,CACT,GAAI,CAAC,KAAK,OACN,OAAQ,KAAK,MAAM,QACb,KAAK,MAAM,KAAK,MAAM,MAAQ,EAAI,KAC9B,KAAK,MAAM,QAAQ,UAAU,KAAK,MAAM,MAAQA,EAAKA,EAAK,EAAG,EAAuB,KAAK,IAAI,CAAC,EAF3E,GAGjC,GAAI,CAAE,OAAAP,CAAO,EAAI,KAAK,OAAQqD,EAAI,KAAK,MAAM,OAAS,EACtD,GAAI9C,EAAM,EAAG,CACT,IAAIoC,EAAcU,EAAI,EAAI,EAAI,KAAK,MAAMA,CAAC,EAAI,EAC9C,GAAI,KAAK,OAASV,EACd,OAAO,KAAK,SAAS3C,EAAO,UAAU2C,EAAa,KAAK,MAAO,GAAI,EAAG,CAAqB,CAAC,CACpG,KACK,CACD,IAAIpB,EAAQvB,EAAO,OAAO,KAAK,MAAQ,CAAC,EACxC,GAAIuB,GAAS8B,EAAI,EAAIrD,EAAO,OAAO,OAASA,EAAO,OAAO,KAAK,MAAMqD,CAAC,EAAI,CAAC,GACvE,OAAO,KAAK,SAAS9B,CAAK,CAClC,CACA,OAAO8B,EAAI,EAAI,KAAK,MAAM,KAAK,OAAO,OAAO,UAAU,KAAK,OAAO,MAAQ9C,EAAKA,EAAK,EAAG,EAAuB,KAAK,IAAI,CAAC,EAAI,EACjI,CAIA,aAAc,CAAE,OAAO,KAAK,QAAQ,CAAC,CAAG,CAIxC,aAAc,CAAE,OAAO,KAAK,QAAQ,EAAE,CAAG,CACzC,WAAWA,EAAK,CACZ,IAAIN,EAAOiB,EAAQ,CAAE,OAAAlB,CAAO,EAAI,KAChC,GAAIA,EAAQ,CACR,GAAIO,EAAM,GACN,GAAI,KAAK,MAAQP,EAAO,OAAO,OAAO,OAClC,MAAO,OAGX,SAAStC,EAAI,EAAGA,EAAI,KAAK,MAAOA,IAC5B,GAAIsC,EAAO,OAAO,OAAOtC,EAAI,CAAC,EAAI,KAAK,MACnC,MAAO,IAElB,CAAE,MAAAuC,EAAO,OAAAiB,CAAO,EAAIlB,EACzB,MAEK,CAAE,MAAAC,EAAO,QAASiB,CAAO,EAAI,KAAK,OAEvC,KAAOA,EAAQ,CAAE,MAAAjB,EAAO,QAASiB,CAAO,EAAIA,EACxC,GAAIjB,EAAQ,GACR,QAASvC,EAAIuC,EAAQM,EAAKwB,EAAIxB,EAAM,EAAI,GAAKW,EAAO,MAAM,SAAS,OAAQxD,GAAKqE,EAAGrE,GAAK6C,EAAK,CACzF,IAAI+C,EAAQpC,EAAO,MAAM,SAASxD,CAAC,EACnC,GAAK,KAAK,KAAOW,EAAS,kBACtBiF,aAAiBpD,IACjB,CAACoD,EAAM,KAAK,aACZlB,GAASkB,CAAK,EACd,MAAO,EACf,CAER,MAAO,EACX,CACA,KAAK/C,EAAKjB,EAAO,CACb,GAAIA,GAAS,KAAK,WAAWiB,EAAK,EAAG,CAAqB,EACtD,MAAO,GACX,OAAS,CACL,GAAI,KAAK,QAAQA,CAAG,EAChB,MAAO,GACX,GAAI,KAAK,WAAWA,CAAG,GAAK,CAAC,KAAK,OAAO,EACrC,MAAO,EACf,CACJ,CAQA,KAAKjB,EAAQ,GAAM,CAAE,OAAO,KAAK,KAAK,EAAGA,CAAK,CAAG,CAOjD,KAAKA,EAAQ,GAAM,CAAE,OAAO,KAAK,KAAK,GAAIA,CAAK,CAAG,CAMlD,OAAOP,EAAKC,EAAO,EAAG,CAElB,MAAO,KAAK,MAAQ,KAAK,KACpBA,EAAO,EAAI,KAAK,MAAQD,EAAM,KAAK,KAAOA,KAC1CC,EAAO,GAAK,KAAK,IAAMD,EAAM,KAAK,GAAKA,KACnC,KAAK,OAAO,GAAjB,CAGJ,KAAO,KAAK,WAAW,EAAGA,EAAKC,CAAI,GAAG,CACtC,OAAO,IACX,CAKA,IAAI,MAAO,CACP,GAAI,CAAC,KAAK,OACN,OAAO,KAAK,MAChB,IAAIuE,EAAQ,KAAK,WAAYnH,EAAS,KAAMoH,EAAQ,EACpD,GAAID,GAASA,EAAM,SAAW,KAAK,OAC/BpC,EAAM,QAASlB,EAAQ,KAAK,MAAOoD,EAAI,KAAK,MAAM,OAAQA,GAAK,GAAI,CAC/D,QAAS5D,EAAI8D,EAAO9D,EAAGA,EAAIA,EAAE,QACzB,GAAIA,EAAE,OAASQ,EAAO,CAClB,GAAIA,GAAS,KAAK,MACd,OAAOR,EACXrD,EAASqD,EACT+D,EAAQH,EAAI,EACZ,MAAMlC,CACV,CACJlB,EAAQ,KAAK,MAAM,EAAEoD,CAAC,CAC1B,CAEJ,QAAS3F,EAAI8F,EAAO9F,EAAI,KAAK,MAAM,OAAQA,IACvCtB,EAAS,IAAI8F,GAAW,KAAK,OAAQ9F,EAAQ,KAAK,MAAMsB,CAAC,CAAC,EAC9D,OAAO,KAAK,WAAa,IAAIwE,GAAW,KAAK,OAAQ9F,EAAQ,KAAK,KAAK,CAC3E,CAMA,IAAI,MAAO,CACP,OAAO,KAAK,OAAS,KAAO,KAAK,MAAM,KAC3C,CAOA,QAAQkD,EAAOC,EAAO,CAClB,QAASiE,EAAQ,IAAK,CAClB,IAAIC,EAAY,GAChB,GAAI,KAAK,KAAK,aAAenE,EAAM,IAAI,IAAM,GAAO,CAChD,GAAI,KAAK,WAAW,EAAG,CACnBkE,IACA,QACJ,CACK,KAAK,KAAK,cACXC,EAAY,GACpB,CACA,OAAS,CAIL,GAHIA,GAAalE,GACbA,EAAM,IAAI,EACdkE,EAAY,KAAK,KAAK,YAClB,CAACD,EACD,OACJ,GAAI,KAAK,YAAY,EACjB,MACJ,KAAK,OAAO,EACZA,IACAC,EAAY,EAChB,CACJ,CACJ,CAMA,aAAahC,EAAS,CAClB,GAAI,CAAC,KAAK,OACN,OAAOC,GAAiB,KAAK,KAAK,OAAQD,CAAO,EACrD,GAAI,CAAE,OAAAzB,CAAO,EAAI,KAAK,OAAQ,CAAE,MAAAlC,CAAM,EAAIkC,EAAO,IACjD,QAAStC,EAAI+D,EAAQ,OAAS,EAAG4B,EAAI,KAAK,MAAM,OAAS,EAAG3F,GAAK,EAAG2F,IAAK,CACrE,GAAIA,EAAI,EACJ,OAAO3B,GAAiB,KAAK,MAAOD,EAAS/D,CAAC,EAClD,IAAIvB,EAAO2B,EAAMkC,EAAO,OAAO,KAAK,MAAMqD,CAAC,CAAC,CAAC,EAC7C,GAAI,CAAClH,EAAK,YAAa,CACnB,GAAIsF,EAAQ/D,CAAC,GAAK+D,EAAQ/D,CAAC,GAAKvB,EAAK,KACjC,MAAO,GACXuB,GACJ,CACJ,CACA,MAAO,EACX,CACJ,EACA,SAAS0E,GAAS5F,EAAM,CACpB,OAAOA,EAAK,SAAS,KAAKoC,GAAMA,aAAcsB,IAAc,CAACtB,EAAG,KAAK,aAAewD,GAASxD,CAAE,CAAC,CACpG,CAFShD,EAAAwG,GAAA,YAGT,SAASvC,GAAUD,EAAM,CACrB,IAAIqB,EACJ,GAAI,CAAE,OAAAjB,EAAQ,QAAA0D,EAAS,gBAAAC,EAAkB,KAAqB,OAAAC,EAAS,CAAC,EAAG,cAAAC,EAAgBH,EAAQ,MAAM,MAAO,EAAI9D,EAChHV,EAAS,MAAM,QAAQc,CAAM,EAAI,IAAIF,GAAiBE,EAAQA,EAAO,MAAM,EAAIA,EAC/ElC,EAAQ4F,EAAQ,MAChBI,EAAc,EAAGC,EAAY,EACjC,SAASC,EAASrB,EAAasB,EAAQzF,EAAUC,EAAWyF,EAAUV,EAAO,CACzE,GAAI,CAAE,GAAAxG,EAAI,MAAAiF,EAAO,IAAAkC,EAAK,KAAAC,CAAK,EAAIlF,EAC3BmF,EAAmBN,EAAWO,GAAiBR,EACnD,GAAIM,EAAO,EAEP,GADAlF,EAAO,KAAK,EACRkF,GAAQ,GAA8B,CACtC,IAAI5G,GAAOoG,EAAO5G,CAAE,EACpBwB,EAAS,KAAKhB,EAAI,EAClBiB,EAAU,KAAKwD,EAAQU,CAAW,EAClC,MACJ,SACSyB,GAAQ,GAAsC,CACnDN,EAAc9G,EACd,MACJ,SACSoH,GAAQ,GAAkC,CAC/CL,EAAY/G,EACZ,MACJ,KAEI,OAAM,IAAI,WAAW,6BAA6BoH,CAAI,EAAE,EAGhE,IAAIjI,GAAO2B,EAAMd,CAAE,EAAGQ,GAAMwC,GACxBuE,GAAWtC,EAAQU,EACvB,GAAIwB,EAAMlC,GAAS0B,IAAoB3D,GAASwE,EAAetF,EAAO,IAAM+E,EAAQC,CAAQ,GAAI,CAE5F,IAAItE,GAAO,IAAI,YAAYI,GAAO,KAAOA,GAAO,IAAI,EAChDyE,GAASvF,EAAO,IAAMc,GAAO,KAAMC,GAAQL,GAAK,OACpD,KAAOV,EAAO,IAAMuF,IAChBxE,GAAQyE,EAAa1E,GAAO,MAAOJ,GAAMK,EAAK,EAClDzC,GAAO,IAAI0C,GAAWN,GAAMuE,EAAMnE,GAAO,MAAO0D,CAAO,EACvDa,GAAWvE,GAAO,MAAQ2C,CAC9B,KACK,CACD,IAAI8B,GAASvF,EAAO,IAAMkF,EAC1BlF,EAAO,KAAK,EACZ,IAAIyF,GAAgB,CAAC,EAAGC,GAAiB,CAAC,EACtCC,GAAgB7H,GAAM6G,EAAgB7G,EAAK,GAC3C8H,GAAY,EAAGC,GAAUZ,EAC7B,KAAOjF,EAAO,IAAMuF,IACZI,IAAiB,GAAK3F,EAAO,IAAM2F,IAAiB3F,EAAO,MAAQ,GAC/DA,EAAO,KAAO6F,GAAUpB,IACxBqB,EAAeL,GAAeC,GAAgB3C,EAAO6C,GAAW5F,EAAO,IAAK6F,GAASF,GAAeR,EAAkBC,EAAc,EACpIQ,GAAYH,GAAc,OAC1BI,GAAU7F,EAAO,KAErBA,EAAO,KAAK,GAEPsE,EAAQ,KACbyB,EAAahD,EAAOwC,GAAQE,GAAeC,EAAc,EAGzDZ,EAAS/B,EAAOwC,GAAQE,GAAeC,GAAgBC,GAAerB,EAAQ,CAAC,EAOvF,GAJIqB,IAAiB,GAAKC,GAAY,GAAKA,GAAYH,GAAc,QACjEK,EAAeL,GAAeC,GAAgB3C,EAAO6C,GAAW7C,EAAO8C,GAASF,GAAeR,EAAkBC,EAAc,EACnIK,GAAc,QAAQ,EACtBC,GAAe,QAAQ,EACnBC,GAAgB,IAAMC,GAAY,EAAG,CACrC,IAAII,GAAOC,EAAahJ,GAAMmI,EAAc,EAC5C9G,GAAOmC,GAAaxD,GAAMwI,GAAeC,GAAgB,EAAGD,GAAc,OAAQ,EAAGR,EAAMlC,EAAOiD,GAAMA,EAAI,CAChH,MAEI1H,GAAO4H,EAASjJ,GAAMwI,GAAeC,GAAgBT,EAAMlC,EAAOoC,EAAmBF,EAAKG,EAAc,CAEhH,CACA9F,EAAS,KAAKhB,EAAI,EAClBiB,EAAU,KAAK8F,EAAQ,CAC3B,CAtES3I,EAAAoI,EAAA,YAuET,SAASiB,EAAatC,EAAasB,EAAQzF,EAAUC,EAAW,CAC5D,IAAI4G,EAAQ,CAAC,EACTC,EAAY,EAAGC,EAAS,GAC5B,KAAOrG,EAAO,IAAM+E,GAAQ,CACxB,GAAI,CAAE,GAAAjH,EAAI,MAAAiF,EAAO,IAAAkC,EAAK,KAAAC,CAAK,EAAIlF,EAC/B,GAAIkF,EAAO,EACPlF,EAAO,KAAK,MAEX,IAAIqG,EAAS,IAAMtD,EAAQsD,EAC5B,MAGIA,EAAS,IACTA,EAASpB,EAAMR,GACnB0B,EAAM,KAAKrI,EAAIiF,EAAOkC,CAAG,EACzBmB,IACApG,EAAO,KAAK,EAEpB,CACA,GAAIoG,EAAW,CACX,IAAItF,EAAS,IAAI,YAAYsF,EAAY,CAAC,EACtCrD,EAAQoD,EAAMA,EAAM,OAAS,CAAC,EAClC,QAAS3H,EAAI2H,EAAM,OAAS,EAAGtE,EAAI,EAAGrD,GAAK,EAAGA,GAAK,EAC/CsC,EAAOe,GAAG,EAAIsE,EAAM3H,CAAC,EACrBsC,EAAOe,GAAG,EAAIsE,EAAM3H,EAAI,CAAC,EAAIuE,EAC7BjC,EAAOe,GAAG,EAAIsE,EAAM3H,EAAI,CAAC,EAAIuE,EAC7BjC,EAAOe,GAAG,EAAIA,EAElBvC,EAAS,KAAK,IAAI0B,GAAWF,EAAQqF,EAAM,CAAC,EAAIpD,EAAOyB,CAAO,CAAC,EAC/DjF,EAAU,KAAKwD,EAAQU,CAAW,CACtC,CACJ,CA/BS/G,EAAAqJ,EAAA,gBAgCT,SAASE,EAAahJ,EAAM2H,EAAa,CACrC,MAAO,CAACtF,EAAUC,EAAWC,IAAW,CACpC,IAAIqF,EAAY,EAAGyB,EAAQhH,EAAS,OAAS,EAAGmD,EAAM8D,EACtD,GAAID,GAAS,IAAM7D,EAAOnD,EAASgH,CAAK,aAAclH,EAAM,CACxD,GAAI,CAACkH,GAAS7D,EAAK,MAAQxF,GAAQwF,EAAK,QAAUjD,EAC9C,OAAOiD,GACP8D,EAAgB9D,EAAK,KAAK5F,EAAS,SAAS,KAC5CgI,EAAYtF,EAAU+G,CAAK,EAAI7D,EAAK,OAAS8D,EACrD,CACA,OAAOL,EAASjJ,EAAMqC,EAAUC,EAAWC,EAAQqF,EAAWD,CAAW,CAC7E,CACJ,CAXSlI,EAAAuJ,EAAA,gBAYT,SAASH,EAAexG,EAAUC,EAAWiH,EAAMhI,EAAG7B,EAAMC,EAAIK,EAAM4H,EAAWD,EAAa,CAC1F,IAAIa,EAAgB,CAAC,EAAGC,EAAiB,CAAC,EAC1C,KAAOpG,EAAS,OAASd,GACrBiH,EAAc,KAAKnG,EAAS,IAAI,CAAC,EACjCoG,EAAe,KAAKnG,EAAU,IAAI,EAAIiH,EAAO7J,CAAI,EAErD2C,EAAS,KAAK4G,EAAS1B,EAAQ,MAAMvH,CAAI,EAAGwI,EAAeC,EAAgB9I,EAAKD,EAAMkI,EAAYjI,EAAIgI,CAAW,CAAC,EAClHrF,EAAU,KAAK5C,EAAO6J,CAAI,CAC9B,CARS9J,EAAAoJ,EAAA,kBAST,SAASI,EAASjJ,EAAMqC,EAAUC,EAAWC,EAAQqF,EAAWD,EAAa/G,EAAO,CAChF,GAAI+G,EAAa,CACb,IAAI6B,EAAO,CAAC5J,EAAS,YAAa+H,CAAW,EAC7C/G,EAAQA,EAAQ,CAAC4I,CAAI,EAAE,OAAO5I,CAAK,EAAI,CAAC4I,CAAI,CAChD,CACA,GAAI5B,EAAY,GAAI,CAChB,IAAI4B,EAAO,CAAC5J,EAAS,UAAWgI,CAAS,EACzChH,EAAQA,EAAQ,CAAC4I,CAAI,EAAE,OAAO5I,CAAK,EAAI,CAAC4I,CAAI,CAChD,CACA,OAAO,IAAIrH,EAAKnC,EAAMqC,EAAUC,EAAWC,EAAQ3B,CAAK,CAC5D,CAVSnB,EAAAwJ,EAAA,YAWT,SAASZ,EAAeoB,EAAS1B,EAAU,CAOvC,IAAI2B,EAAO3G,EAAO,KAAK,EACnBkF,EAAO,EAAGnC,EAAQ,EAAG6D,EAAO,EAAGC,EAAWF,EAAK,IAAMlC,EACrDvH,EAAS,CAAE,KAAM,EAAG,MAAO,EAAG,KAAM,CAAE,EAC1C+E,EAAM,QAAS8C,EAAS4B,EAAK,IAAMD,EAASC,EAAK,IAAM5B,GAAS,CAC5D,IAAI+B,EAAWH,EAAK,KAEpB,GAAIA,EAAK,IAAM3B,GAAY8B,GAAY,EAAG,CAGtC5J,EAAO,KAAOgI,EACdhI,EAAO,MAAQ6F,EACf7F,EAAO,KAAO0J,EACdA,GAAQ,EACR1B,GAAQ,EACRyB,EAAK,KAAK,EACV,QACJ,CACA,IAAItB,EAAWsB,EAAK,IAAMG,EAC1B,GAAIA,EAAW,GAAKzB,EAAWN,GAAU4B,EAAK,MAAQE,EAClD,MACJ,IAAIE,GAAeJ,EAAK,IAAMhC,EAAgB,EAAI,EAC9CqC,GAAYL,EAAK,MAErB,IADAA,EAAK,KAAK,EACHA,EAAK,IAAMtB,GAAU,CACxB,GAAIsB,EAAK,KAAO,EACZ,GAAIA,EAAK,MAAQ,IAAwCA,EAAK,MAAQ,GAClEI,IAAgB,MAEhB,OAAM9E,OAEL0E,EAAK,IAAMhC,IAChBoC,IAAgB,GAEpBJ,EAAK,KAAK,CACd,CACA5D,EAAQiE,GACR9B,GAAQ4B,EACRF,GAAQG,EACZ,CACA,OAAI/B,EAAW,GAAKE,GAAQwB,KACxBxJ,EAAO,KAAOgI,EACdhI,EAAO,MAAQ6F,EACf7F,EAAO,KAAO0J,GAEX1J,EAAO,KAAO,EAAIA,EAAS,MACtC,CApDSR,EAAA4I,EAAA,kBAqDT,SAASE,EAAayB,EAAanG,EAAQC,EAAO,CAC9C,GAAI,CAAE,GAAAjD,EAAI,MAAAiF,EAAO,IAAAkC,EAAK,KAAAC,CAAK,EAAIlF,EAE/B,GADAA,EAAO,KAAK,EACRkF,GAAQ,GAAKpH,EAAK6G,EAAe,CACjC,IAAIvD,EAAaL,EACjB,GAAImE,EAAO,EAAG,CACV,IAAIK,EAASvF,EAAO,KAAOkF,EAAO,GAClC,KAAOlF,EAAO,IAAMuF,GAChBxE,EAAQyE,EAAayB,EAAanG,EAAQC,CAAK,CACvD,CACAD,EAAO,EAAEC,CAAK,EAAIK,EAClBN,EAAO,EAAEC,CAAK,EAAIkE,EAAMgC,EACxBnG,EAAO,EAAEC,CAAK,EAAIgC,EAAQkE,EAC1BnG,EAAO,EAAEC,CAAK,EAAIjD,CACtB,MACSoH,GAAQ,GACbN,EAAc9G,EAEToH,GAAQ,KACbL,EAAY/G,GAEhB,OAAOiD,CACX,CAtBSrE,EAAA8I,EAAA,gBAuBT,IAAIlG,EAAW,CAAC,EAAGC,EAAY,CAAC,EAChC,KAAOS,EAAO,IAAM,GAChB8E,EAASpE,EAAK,OAAS,EAAGA,EAAK,aAAe,EAAGpB,EAAUC,EAAW,GAAI,CAAC,EAC/E,IAAIC,GAAUuC,EAAKrB,EAAK,UAAY,MAAQqB,IAAO,OAASA,EAAMzC,EAAS,OAASC,EAAU,CAAC,EAAID,EAAS,CAAC,EAAE,OAAS,EACxH,OAAO,IAAIF,EAAKR,EAAM8B,EAAK,KAAK,EAAGpB,EAAS,QAAQ,EAAGC,EAAU,QAAQ,EAAGC,CAAM,CACtF,CA9NS9C,EAAAiE,GAAA,aA+NT,IAAMuG,GAAgB,IAAI,QAC1B,SAASJ,GAASK,EAAa7I,EAAM,CACjC,GAAI,CAAC6I,EAAY,aAAe7I,aAAgB0C,IAAc1C,EAAK,MAAQ6I,EACvE,MAAO,GACX,IAAIjC,EAAOgC,GAAc,IAAI5I,CAAI,EACjC,GAAI4G,GAAQ,KAAM,CACdA,EAAO,EACP,QAASd,KAAS9F,EAAK,SAAU,CAC7B,GAAI8F,EAAM,MAAQ+C,GAAe,EAAE/C,aAAiBhF,GAAO,CACvD8F,EAAO,EACP,KACJ,CACAA,GAAQ4B,GAASK,EAAa/C,CAAK,CACvC,CACA8C,GAAc,IAAI5I,EAAM4G,CAAI,CAChC,CACA,OAAOA,CACX,CAhBSxI,EAAAoK,GAAA,YAiBT,SAASrG,GAET0G,EAEA7H,EAAUC,EAEV5C,EAAMC,EAENmG,EAEAvD,EAEA4H,EAEAC,EAAQ,CACJ,IAAIC,EAAQ,EACZ,QAAS9I,EAAI7B,EAAM6B,EAAI5B,EAAI4B,IACvB8I,GAASR,GAASK,EAAa7H,EAASd,CAAC,CAAC,EAC9C,IAAI+I,EAAW,KAAK,KAAMD,EAAQ,IAAO,CAA4B,EACjE7B,EAAgB,CAAC,EAAGC,EAAiB,CAAC,EAC1C,SAAS8B,EAAOlI,EAAUC,EAAW5C,EAAMC,EAAI6K,EAAQ,CACnD,QAASjJ,EAAI7B,EAAM6B,EAAI5B,GAAK,CACxB,IAAI8K,EAAYlJ,EAAGmJ,EAAapI,EAAUf,CAAC,EAAGoJ,EAAYd,GAASK,EAAa7H,EAASd,CAAC,CAAC,EAE3F,IADAA,IACOA,EAAI5B,EAAI4B,IAAK,CAChB,IAAIqJ,EAAWf,GAASK,EAAa7H,EAASd,CAAC,CAAC,EAChD,GAAIoJ,EAAYC,GAAYN,EACxB,MACJK,GAAaC,CACjB,CACA,GAAIrJ,GAAKkJ,EAAY,EAAG,CACpB,GAAIE,EAAYL,EAAU,CACtB,IAAIO,EAAOxI,EAASoI,CAAS,EAC7BF,EAAOM,EAAK,SAAUA,EAAK,UAAW,EAAGA,EAAK,SAAS,OAAQvI,EAAUmI,CAAS,EAAID,CAAM,EAC5F,QACJ,CACAhC,EAAc,KAAKnG,EAASoI,CAAS,CAAC,CAC1C,KACK,CACD,IAAIlI,EAASD,EAAUf,EAAI,CAAC,EAAIc,EAASd,EAAI,CAAC,EAAE,OAASmJ,EACzDlC,EAAc,KAAKhF,GAAa0G,EAAa7H,EAAUC,EAAWmI,EAAWlJ,EAAGmJ,EAAYnI,EAAQ,KAAM6H,CAAM,CAAC,CACrH,CACA3B,EAAe,KAAKiC,EAAaF,EAAS1E,CAAK,CACnD,CACJ,CAxBS,OAAArG,EAAA8K,EAAA,UAyBTA,EAAOlI,EAAUC,EAAW5C,EAAMC,EAAI,CAAC,GAC/BwK,GAASC,GAAQ5B,EAAeC,EAAgBlG,CAAM,CAClE,CA/CS9C,EAAA+D,GAAA,gBAqDT,IAAMsH,GAAN,KAAkB,CAziDlB,MAyiDkB,CAAArL,EAAA,oBACd,aAAc,CACV,KAAK,IAAM,IAAI,OACnB,CACA,UAAUoE,EAAQC,EAAO3D,EAAO,CAC5B,IAAI8E,EAAQ,KAAK,IAAI,IAAIpB,CAAM,EAC1BoB,GACD,KAAK,IAAI,IAAIpB,EAAQoB,EAAQ,IAAI,GAAG,EACxCA,EAAM,IAAInB,EAAO3D,CAAK,CAC1B,CACA,UAAU0D,EAAQC,EAAO,CACrB,IAAImB,EAAQ,KAAK,IAAI,IAAIpB,CAAM,EAC/B,OAAOoB,GAASA,EAAM,IAAInB,CAAK,CACnC,CAIA,IAAIzC,EAAMlB,EAAO,CACTkB,aAAgB0E,GAChB,KAAK,UAAU1E,EAAK,QAAQ,OAAQA,EAAK,MAAOlB,CAAK,EAChDkB,aAAgB2B,IACrB,KAAK,IAAI,IAAI3B,EAAK,KAAMlB,CAAK,CACrC,CAIA,IAAIkB,EAAM,CACN,OAAOA,aAAgB0E,GAAa,KAAK,UAAU1E,EAAK,QAAQ,OAAQA,EAAK,KAAK,EAC5EA,aAAgB2B,GAAW,KAAK,IAAI,IAAI3B,EAAK,IAAI,EAAI,MAC/D,CAIA,UAAU0B,EAAQ5C,EAAO,CACjB4C,EAAO,OACP,KAAK,UAAUA,EAAO,OAAO,OAAQA,EAAO,MAAO5C,CAAK,EAExD,KAAK,IAAI,IAAI4C,EAAO,KAAM5C,CAAK,CACvC,CAKA,UAAU4C,EAAQ,CACd,OAAOA,EAAO,OAAS,KAAK,UAAUA,EAAO,OAAO,OAAQA,EAAO,KAAK,EAAI,KAAK,IAAI,IAAIA,EAAO,IAAI,CACxG,CACJ,EAWMgI,GAAN,MAAMC,CAAa,CAlmDnB,MAkmDmB,CAAAvL,EAAA,qBAOf,YAMAC,EAIAC,EAIAU,EAOAmK,EAAQS,EAAY,GAAOC,EAAU,GAAO,CACxC,KAAK,KAAOxL,EACZ,KAAK,GAAKC,EACV,KAAK,KAAOU,EACZ,KAAK,OAASmK,EACd,KAAK,MAAQS,EAAY,EAAqB,IAAMC,EAAU,EAAmB,EACrF,CAOA,IAAI,WAAY,CAAE,OAAQ,KAAK,KAAO,GAAsB,CAAG,CAK/D,IAAI,SAAU,CAAE,OAAQ,KAAK,KAAO,GAAoB,CAAG,CAS3D,OAAO,QAAQ7K,EAAM8K,EAAY,CAAC,EAAGC,EAAU,GAAO,CAClD,IAAInL,EAAS,CAAC,IAAI+K,EAAa,EAAG3K,EAAK,OAAQA,EAAM,EAAG,GAAO+K,CAAO,CAAC,EACvE,QAASC,KAAKF,EACNE,EAAE,GAAKhL,EAAK,QACZJ,EAAO,KAAKoL,CAAC,EACrB,OAAOpL,CACX,CAMA,OAAO,aAAakL,EAAWG,EAASC,EAAS,IAAK,CAClD,GAAI,CAACD,EAAQ,OACT,OAAOH,EACX,IAAIlL,EAAS,CAAC,EACVuL,EAAK,EAAGC,EAAQN,EAAU,OAASA,EAAU,CAAC,EAAI,KACtD,QAASO,EAAK,EAAG9I,EAAM,EAAG+I,EAAM,GAAID,IAAM,CACtC,IAAIE,EAAQF,EAAKJ,EAAQ,OAASA,EAAQI,CAAE,EAAI,KAC5CG,EAAUD,EAAQA,EAAM,MAAQ,IACpC,GAAIC,EAAUjJ,GAAO2I,EACjB,KAAOE,GAASA,EAAM,KAAOI,GAAS,CAClC,IAAIC,EAAML,EACV,GAAI7I,GAAOkJ,EAAI,MAAQD,GAAWC,EAAI,IAAMH,EAAK,CAC7C,IAAII,EAAQ,KAAK,IAAID,EAAI,KAAMlJ,CAAG,EAAI+I,EAAKK,EAAM,KAAK,IAAIF,EAAI,GAAID,CAAO,EAAIF,EAC7EG,EAAMC,GAASC,EAAM,KAAO,IAAIhB,EAAae,EAAOC,EAAKF,EAAI,KAAMA,EAAI,OAASH,EAAKD,EAAK,EAAG,CAAC,CAACE,CAAK,CACxG,CAGA,GAFIE,GACA7L,EAAO,KAAK6L,CAAG,EACfL,EAAM,GAAKI,EACX,MACJJ,EAAQD,EAAKL,EAAU,OAASA,EAAUK,GAAI,EAAI,IACtD,CACJ,GAAI,CAACI,EACD,MACJhJ,EAAMgJ,EAAM,IACZD,EAAMC,EAAM,IAAMA,EAAM,GAC5B,CACA,OAAO3L,CACX,CACJ,EAIMgM,GAAN,KAAa,CArsDb,MAqsDa,CAAAxM,EAAA,eAWT,WAAWyM,EAAOf,EAAWgB,EAAQ,CACjC,OAAI,OAAOD,GAAS,WAChBA,EAAQ,IAAIE,GAAYF,CAAK,GACjCC,EAAUA,EAAwCA,EAAO,OAASA,EAAO,IAAI,GAAK,IAAI3M,GAAM,EAAE,KAAM,EAAE,EAAE,CAAC,EAAI,CAAC,IAAIA,GAAM,EAAG,CAAC,CAAC,EAA1G,CAAC,IAAIA,GAAM,EAAG0M,EAAM,MAAM,CAAC,EACvC,KAAK,YAAYA,EAAOf,GAAa,CAAC,EAAGgB,CAAM,CAC1D,CAIA,MAAMD,EAAOf,EAAWgB,EAAQ,CAC5B,IAAIE,EAAQ,KAAK,WAAWH,EAAOf,EAAWgB,CAAM,EACpD,OAAS,CACL,IAAIG,EAAOD,EAAM,QAAQ,EACzB,GAAIC,EACA,OAAOA,CACf,CACJ,CACJ,EACMF,GAAN,KAAkB,CAluDlB,MAkuDkB,CAAA3M,EAAA,oBACd,YAAY8M,EAAQ,CAChB,KAAK,OAASA,CAClB,CACA,IAAI,QAAS,CAAE,OAAO,KAAK,OAAO,MAAQ,CAC1C,MAAM7M,EAAM,CAAE,OAAO,KAAK,OAAO,MAAMA,CAAI,CAAG,CAC9C,IAAI,YAAa,CAAE,MAAO,EAAO,CACjC,KAAKA,EAAMC,EAAI,CAAE,OAAO,KAAK,OAAO,MAAMD,EAAMC,CAAE,CAAG,CACzD,EASA,SAAS6M,GAAWC,EAAM,CACtB,MAAO,CAACJ,EAAOH,EAAOf,EAAWgB,IAAW,IAAIO,GAAWL,EAAOI,EAAMP,EAAOf,EAAWgB,CAAM,CACpG,CAFS1M,EAAA+M,GAAA,cAGT,IAAMG,GAAN,KAAiB,CAtvDjB,MAsvDiB,CAAAlN,EAAA,mBACb,YAAYc,EAAQ8L,EAAO/L,EAASE,EAAWoM,EAAQlN,EAAM,CACzD,KAAK,OAASa,EACd,KAAK,MAAQ8L,EACb,KAAK,QAAU/L,EACf,KAAK,UAAYE,EACjB,KAAK,OAASoM,EACd,KAAK,KAAOlN,CAChB,CACJ,EACA,SAASmN,GAAYV,EAAQ,CACzB,GAAI,CAACA,EAAO,QAAUA,EAAO,KAAKW,GAAKA,EAAE,MAAQA,EAAE,EAAE,EACjD,MAAM,IAAI,WAAW,qCAAuC,KAAK,UAAUX,CAAM,CAAC,CAC1F,CAHS1M,EAAAoN,GAAA,eAIT,IAAME,GAAN,KAAoB,CApwDpB,MAowDoB,CAAAtN,EAAA,sBAChB,YAAYc,EAAQyM,EAAWC,EAAQnJ,EAAOgC,EAAOtF,EAAWoM,EAAQM,EAAM,CAC1E,KAAK,OAAS3M,EACd,KAAK,UAAYyM,EACjB,KAAK,OAASC,EACd,KAAK,MAAQnJ,EACb,KAAK,MAAQgC,EACb,KAAK,UAAYtF,EACjB,KAAK,OAASoM,EACd,KAAK,KAAOM,EACZ,KAAK,MAAQ,EACb,KAAK,OAAS,CAAC,CACnB,CACJ,EACMC,GAAe,IAAIvN,EAAS,CAAE,QAAS,EAAK,CAAC,EAC7C8M,GAAN,KAAiB,CAnxDjB,MAmxDiB,CAAAjN,EAAA,mBACb,YAAY8J,EAAMkD,EAAMP,EAAOf,EAAWgB,EAAQ,CAC9C,KAAK,KAAOM,EACZ,KAAK,MAAQP,EACb,KAAK,UAAYf,EACjB,KAAK,OAASgB,EACd,KAAK,MAAQ,CAAC,EACd,KAAK,UAAY,EACjB,KAAK,SAAW,KAChB,KAAK,UAAY,KACjB,KAAK,UAAY5C,CACrB,CACA,SAAU,CACN,GAAI,KAAK,UAAW,CAChB,IAAI+C,EAAO,KAAK,UAAU,QAAQ,EAClC,GAAI,CAACA,EACD,OAAO,KAIX,GAHA,KAAK,UAAY,KACjB,KAAK,SAAWA,EAChB,KAAK,WAAW,EACZ,KAAK,WAAa,KAClB,QAASrH,KAAS,KAAK,MACnBA,EAAM,MAAM,OAAO,KAAK,SAAS,CAC7C,CACA,GAAI,KAAK,WAAa,KAAK,MAAM,OAAQ,CACrC,IAAIhF,EAAS,KAAK,SAClB,OAAI,KAAK,WAAa,OAClBA,EAAS,IAAIkC,EAAKlC,EAAO,KAAMA,EAAO,SAAUA,EAAO,UAAWA,EAAO,OAAQA,EAAO,WAAW,OAAO,CAAC,CAACkN,GAAc,KAAK,SAAS,CAAC,CAAC,CAAC,GACxIlN,CACX,CACA,IAAIgF,EAAQ,KAAK,MAAM,KAAK,SAAS,EAAGqH,EAAOrH,EAAM,MAAM,QAAQ,EACnE,GAAIqH,EAAM,CACN,KAAK,YAKL,IAAI1L,EAAQ,OAAO,OAAO,OAAO,OAAO,IAAI,EAAGqE,EAAM,OAAO,KAAK,EACjErE,EAAMhB,EAAS,QAAQ,EAAE,EAAI,IAAIQ,GAAYkM,EAAMrH,EAAM,QAASA,EAAM,OAAQA,EAAM,SAAS,EAC/FA,EAAM,OAAO,MAAQrE,CACzB,CACA,OAAO,IACX,CACA,IAAI,WAAY,CACZ,GAAI,KAAK,UACL,MAAO,GACX,IAAIgC,EAAM,KAAK,MAAM,OACrB,QAASrB,EAAI,KAAK,UAAWA,EAAI,KAAK,MAAM,OAAQA,IAC5C,KAAK,MAAMA,CAAC,EAAE,KAAOqB,IACrBA,EAAM,KAAK,IAAIA,EAAK,KAAK,MAAMrB,CAAC,EAAE,MAAM,SAAS,GAEzD,OAAOqB,CACX,CACA,OAAOA,EAAK,CAER,GADA,KAAK,UAAYA,EACb,KAAK,UACL,KAAK,UAAU,OAAOA,CAAG,MAEzB,SAASrB,EAAI,KAAK,UAAWA,EAAI,KAAK,MAAM,OAAQA,IAChD,KAAK,MAAMA,CAAC,EAAE,MAAM,OAAOqB,CAAG,CAC1C,CACA,YAAa,CACT,IAAIwK,EAAiB,IAAIC,GAAe,KAAK,SAAS,EAClD/M,EAAU,KACVgN,EAAU,KACVvK,EAAS,IAAIJ,GAAW,IAAIK,GAAS,KAAK,SAAU,KAAK,OAAO,CAAC,EAAE,KAAM,EAAG,IAAI,EAAGd,EAAS,iBAAmBA,EAAS,YAAY,EACxI8C,EAAM,QAASyH,EAAMc,IAAa,CAC9B,IAAIpK,EAAQ,GAAMqK,EAClB,GAAI,KAAK,WAAa,MAAQzK,EAAO,MAAQ,KAAK,UAC9CI,EAAQ,WAEHiK,EAAe,QAAQrK,CAAM,EAAG,CACrC,GAAIzC,EAAS,CACT,IAAIR,EAAQQ,EAAQ,OAAO,KAAKmN,GAAKA,EAAE,KAAK,MAAQ1K,EAAO,MAAQ0K,EAAE,KAAK,IAAM1K,EAAO,IAAM0K,EAAE,MAAM,OAAO,EAC5G,GAAI3N,EACA,QAASgN,KAAKhN,EAAM,MAAM,QAAS,CAC/B,IAAIJ,EAAOoN,EAAE,KAAOhN,EAAM,IAAKH,EAAKmN,EAAE,GAAKhN,EAAM,IAC7CJ,GAAQqD,EAAO,MAAQpD,GAAMoD,EAAO,IAAM,CAACzC,EAAQ,OAAO,KAAKwM,GAAKA,EAAE,KAAOnN,GAAMmN,EAAE,GAAKpN,CAAI,GAC9FY,EAAQ,OAAO,KAAK,CAAE,KAAAZ,EAAM,GAAAC,CAAG,CAAC,CACxC,CACR,CACAwD,EAAQ,EACZ,SACSmK,IAAYC,EAAYG,GAAWJ,EAAQ,OAAQvK,EAAO,KAAMA,EAAO,EAAE,GAC9EI,EAAQoK,GAAa,UAEhB,CAACxK,EAAO,KAAK,cAAgB0J,EAAO,KAAK,KAAK1J,EAAQ,KAAK,KAAK,KACpEA,EAAO,KAAOA,EAAO,IAAM,CAAC0J,EAAK,SAAU,CACvC1J,EAAO,OACR4K,GAAY5K,CAAM,EAGdzC,GACAA,EAAQ,QACRgN,GACAA,EAAQ,SAEhB,IAAIM,EAAYR,EAAe,WAAWrK,EAAO,KAAM0J,EAAK,MAAM,EAClE,GAAI,OAAOA,EAAK,SAAW,WACvBnM,EAAU,IAAIyM,GAAcN,EAAK,OAAQA,EAAK,QAASmB,EAAW,KAAK,MAAM,OAAQ7K,EAAO,KAAM,CAAC,CAAC0J,EAAK,UAAW1J,EAAO,KAAMzC,CAAO,MAEvI,CACD,IAAI6L,EAAS0B,GAAY,KAAK,OAAQpB,EAAK,UACtC1J,EAAO,KAAOA,EAAO,GAAK,CAAC,IAAIvD,GAAMuD,EAAO,KAAMA,EAAO,EAAE,CAAC,EAAI,CAAC,EAAE,EACpEoJ,EAAO,QACPU,GAAYV,CAAM,GAClBA,EAAO,QAAU,CAACM,EAAK,UACvB,KAAK,MAAM,KAAK,IAAIE,GAAWF,EAAK,OAAQN,EAAO,OAASM,EAAK,OAAO,WAAW,KAAK,MAAOqB,GAAeF,EAAWzB,CAAM,EAAGA,CAAM,EAClIM,EAAK,OAAO,WAAW,EAAE,EAAGA,EAAK,QAAUA,EAAK,QAAQ,IAAIK,GAAK,IAAItN,GAAMsN,EAAE,KAAO/J,EAAO,KAAM+J,EAAE,GAAK/J,EAAO,IAAI,CAAC,EAAI,KAAM,CAAC,CAAC0J,EAAK,UAAW1J,EAAO,KAAMoJ,EAAO,OAASA,EAAO,CAAC,EAAE,KAAOpJ,EAAO,IAAI,CAAC,EAC/M0J,EAAK,QAEDN,EAAO,SACZmB,EAAU,CAAE,OAAAnB,EAAQ,MAAO,EAAG,KAAMmB,CAAQ,GAF5CnK,EAAQ,EAGhB,CACJ,SACS7C,IAAYkN,EAAQlN,EAAQ,UAAUyC,CAAM,KAC7CyK,IAAU,KACVA,EAAQ,IAAIhO,GAAMuD,EAAO,KAAMA,EAAO,EAAE,GACxCyK,EAAM,KAAOA,EAAM,IAAI,CACvB,IAAIhI,EAAOlF,EAAQ,OAAO,OAAS,EAC/BkF,GAAQ,GAAKlF,EAAQ,OAAOkF,CAAI,EAAE,IAAMgI,EAAM,KAC9ClN,EAAQ,OAAOkF,CAAI,EAAI,CAAE,KAAMlF,EAAQ,OAAOkF,CAAI,EAAE,KAAM,GAAIgI,EAAM,EAAG,EAEvElN,EAAQ,OAAO,KAAKkN,CAAK,CACjC,CAEJ,GAAIrK,GAASJ,EAAO,WAAW,EACvBzC,GACAA,EAAQ,QACRgN,GACAA,EAAQ,YAGZ,MACQ,CAAAvK,EAAO,YAAY,GADlB,CAGL,GAAI,CAACA,EAAO,OAAO,EACf,MAAMiC,EACV,GAAI1E,GAAW,CAAC,EAAEA,EAAQ,MAAO,CAC7B,IAAI6L,EAAS0B,GAAY,KAAK,OAAQvN,EAAQ,MAAM,EAChD6L,EAAO,SACPU,GAAYV,CAAM,EAClB,KAAK,MAAM,OAAO7L,EAAQ,MAAO,EAAG,IAAIqM,GAAWrM,EAAQ,OAAQA,EAAQ,OAAO,WAAW,KAAK,MAAOwN,GAAexN,EAAQ,OAAQ6L,CAAM,EAAGA,CAAM,EAAG7L,EAAQ,OAAO,IAAIwM,GAAK,IAAItN,GAAMsN,EAAE,KAAOxM,EAAQ,MAAOwM,EAAE,GAAKxM,EAAQ,KAAK,CAAC,EAAGA,EAAQ,UAAWA,EAAQ,OAAQ6L,EAAO,CAAC,EAAE,IAAI,CAAC,GAElS7L,EAAUA,EAAQ,IACtB,CACIgN,GAAW,CAAC,EAAEA,EAAQ,QACtBA,EAAUA,EAAQ,KAC1B,CAER,CACJ,CACJ,EACA,SAASI,GAAWJ,EAAS5N,EAAMC,EAAI,CACnC,QAAS6N,KAASF,EAAS,CACvB,GAAIE,EAAM,MAAQ7N,EACd,MACJ,GAAI6N,EAAM,GAAK9N,EACX,OAAO8N,EAAM,MAAQ9N,GAAQ8N,EAAM,IAAM7N,EAAK,EAAqB,CAC3E,CACA,MAAO,EACX,CARSF,EAAAiO,GAAA,cAWT,SAASK,GAASC,EAAKzJ,EAAQC,EAAM0E,EAAO5G,EAAWqJ,EAAK,CACxD,GAAIpH,EAASC,EAAM,CACf,IAAI9E,EAAOsO,EAAI,OAAOzJ,EAAS,CAAC,EAChC2E,EAAM,KAAK8E,EAAI,MAAMzJ,EAAQC,EAAM9E,CAAI,CAAC,EACxC4C,EAAU,KAAK5C,EAAOiM,CAAG,CAC7B,CACJ,CANSlM,EAAAsO,GAAA,YAYT,SAASJ,GAAY5K,EAAQ,CACzB,GAAI,CAAE,KAAA1B,CAAK,EAAI0B,EAAQkL,EAAQ,CAAC,EAC5BpK,EAASxC,EAAK,QAAQ,OAE1B,GACI4M,EAAM,KAAKlL,EAAO,KAAK,EACvBA,EAAO,OAAO,QACT,CAACA,EAAO,MAEjB,IAAIwG,EAAOxG,EAAO,KAAMxB,EAAIgI,EAAK,SAAS,QAAQ1F,CAAM,EACpDmK,EAAMzE,EAAK,SAAShI,CAAC,EAAGkD,EAAIuJ,EAAI,OAAQE,EAAW,CAAC3M,CAAC,EAGzD,SAAS4M,EAAM5J,EAAQC,EAAMxE,EAAMoO,EAAa7L,EAAQ8L,EAAU,CAC9D,IAAIC,EAAUL,EAAMI,CAAQ,EACxBhM,EAAW,CAAC,EAAGC,EAAY,CAAC,EAChCyL,GAASC,EAAKzJ,EAAQ+J,EAASjM,EAAUC,EAAW8L,CAAW,EAC/D,IAAI1O,EAAO+E,EAAE6J,EAAU,CAAC,EAAG3O,EAAK8E,EAAE6J,EAAU,CAAC,EAC7CJ,EAAS,KAAK7L,EAAS,MAAM,EAC7B,IAAI8E,EAAQkH,EACNF,EAAMG,EAAU,EAAG7J,EAAE6J,EAAU,CAAC,EAAGN,EAAI,IAAI,MAAMvJ,EAAE6J,CAAO,CAAC,EAAG5O,EAAMC,EAAKD,EAAM2O,EAAW,CAAC,EAC3FhN,EAAK,OAAO,EAClB,OAAAgB,EAAS,KAAK8E,CAAK,EACnB7E,EAAU,KAAK5C,EAAO0O,CAAW,EACjCL,GAASC,EAAKvJ,EAAE6J,EAAU,CAAC,EAAG9J,EAAMnC,EAAUC,EAAW8L,CAAW,EAC7D,IAAIjM,EAAKnC,EAAMqC,EAAUC,EAAWC,CAAM,CACrD,CAbS9C,EAAA0O,EAAA,SAcT5E,EAAK,SAAShI,CAAC,EAAI4M,EAAM,EAAG1J,EAAE,OAAQ1E,GAAS,KAAM,EAAGiO,EAAI,OAAQC,EAAM,OAAS,CAAC,EAEpF,QAASnK,KAASoK,EAAU,CACxB,IAAI7N,EAAO0C,EAAO,KAAK,SAASe,CAAK,EAAGlB,EAAMG,EAAO,KAAK,UAAUe,CAAK,EACzEf,EAAO,MAAM,IAAIC,GAAS3C,EAAMuC,EAAMG,EAAO,KAAMe,EAAOf,EAAO,KAAK,CAAC,CAC3E,CACJ,CAjCStD,EAAAkO,GAAA,eAkCT,IAAMY,GAAN,KAAsB,CAr+DtB,MAq+DsB,CAAA9O,EAAA,wBAClB,YAAYuH,EAAMwD,EAAQ,CACtB,KAAK,OAASA,EACd,KAAK,KAAO,GACZ,KAAK,OAASxD,EAAK,OAAO9E,EAAS,iBAAmBA,EAAS,YAAY,CAC/E,CAEA,OAAOU,EAAK,CACR,GAAI,CAAE,OAAAG,CAAO,EAAI,KAAMuD,EAAI1D,EAAM,KAAK,OACtC,KAAO,CAAC,KAAK,MAAQG,EAAO,KAAOuD,GAC3BvD,EAAO,IAAMH,GAAOG,EAAO,MAAMuD,EAAG,EAAGpE,EAAS,eAAiBA,EAAS,cAAc,GAClFa,EAAO,KAAK,EAAK,IACvB,KAAK,KAAO,GAExB,CACA,QAAQA,EAAQ,CAEZ,GADA,KAAK,OAAOA,EAAO,IAAI,EACnB,CAAC,KAAK,MAAQ,KAAK,OAAO,KAAO,KAAK,QAAUA,EAAO,MAAQ,KAAK,OAAO,KAC3E,QAAS1C,EAAO,KAAK,OAAO,OAAQ,CAChC,GAAIA,GAAQ0C,EAAO,KACf,MAAO,GACX,GAAI1C,EAAK,SAAS,QAAUA,EAAK,UAAU,CAAC,GAAK,GAAKA,EAAK,SAAS,CAAC,YAAa8B,EAC9E9B,EAAOA,EAAK,SAAS,CAAC,MAEtB,MACR,CAEJ,MAAO,EACX,CACJ,EACMgN,GAAN,KAAqB,CAngErB,MAmgEqB,CAAA5N,EAAA,uBACjB,YAAY0L,EAAW,CACnB,IAAIrG,EAIJ,GAHA,KAAK,UAAYqG,EACjB,KAAK,MAAQ,EACb,KAAK,MAAQ,EACTA,EAAU,OAAQ,CAClB,IAAIqD,EAAQ,KAAK,QAAUrD,EAAU,CAAC,EACtC,KAAK,OAASrG,EAAK0J,EAAM,KAAK,KAAKrB,EAAY,KAAO,MAAQrI,IAAO,OAASA,EAAK0J,EAAM,GACzF,KAAK,MAAQ,IAAID,GAAgBC,EAAM,KAAM,CAACA,EAAM,MAAM,CAC9D,MAEI,KAAK,QAAU,KAAK,MAAQ,IAEpC,CACA,QAAQnN,EAAM,CACV,KAAO,KAAK,SAAWA,EAAK,MAAQ,KAAK,OACrC,KAAK,SAAS,EAClB,OAAO,KAAK,SAAW,KAAK,QAAQ,MAAQA,EAAK,MAAQ,KAAK,OAASA,EAAK,IAAM,KAAK,MAAM,QAAQA,CAAI,CAC7G,CACA,UAAW,CACP,IAAIyD,EAEJ,GADA,KAAK,QACD,KAAK,OAAS,KAAK,UAAU,OAC7B,KAAK,QAAU,KAAK,MAAQ,SAE3B,CACD,IAAI2J,EAAO,KAAK,QAAU,KAAK,UAAU,KAAK,KAAK,EACnD,KAAK,OAAS3J,EAAK2J,EAAK,KAAK,KAAKtB,EAAY,KAAO,MAAQrI,IAAO,OAASA,EAAK2J,EAAK,GACvF,KAAK,MAAQ,IAAIF,GAAgBE,EAAK,KAAM,CAACA,EAAK,MAAM,CAC5D,CACJ,CACA,WAAW7L,EAAKrC,EAAQ,CACpB,IAAIuE,EACJ,IAAI7E,EAAS,CAAC,EACd,GAAI,KAAK,MAAO,CACZ,KAAK,MAAM,OAAO,OAAO2C,EAAK,CAAC,EAC/B,QAASA,EAAM,KAAK,MAAM,OAAO,KAAMA,EAAKA,EAAMA,EAAI,OAAQ,CAC1D,IAAImE,GAASjC,EAAKlC,EAAI,QAAU,MAAQkC,IAAO,OAAS,OAASA,EAAG,KAAKlF,EAAS,OAAO,EACzF,GAAImH,GAASA,EAAM,QAAUxG,EACzB,QAASgB,EAAI,KAAK,MAAOA,EAAI,KAAK,UAAU,OAAQA,IAAK,CACrD,IAAIkN,EAAO,KAAK,UAAUlN,CAAC,EAC3B,GAAIkN,EAAK,MAAQ7L,EAAI,GACjB,MACA6L,EAAK,MAAQ,KAAK,QAAQ,MAC1BxO,EAAO,KAAK,CACR,KAAAwO,EACA,IAAK7L,EAAI,KAAO6L,EAAK,OACrB,MAAA1H,CACJ,CAAC,CACT,CAER,CACJ,CACA,OAAO9G,CACX,CACJ,EACA,SAAS4N,GAAYa,EAAOvC,EAAQ,CAChC,IAAIzH,EAAO,KAAMiK,EAAUxC,EAC3B,QAAS5K,EAAI,EAAGqD,EAAI,EAAGrD,EAAImN,EAAM,OAAQnN,IAAK,CAC1C,IAAIqN,EAAUF,EAAMnN,EAAI,CAAC,EAAE,GAAIsN,EAAQH,EAAMnN,CAAC,EAAE,KAChD,KAAOqD,EAAI+J,EAAQ,OAAQ/J,IAAK,CAC5B,IAAIkI,EAAI6B,EAAQ/J,CAAC,EACjB,GAAIkI,EAAE,MAAQ+B,EACV,MACA/B,EAAE,IAAM8B,IAEPlK,IACDiK,EAAUjK,EAAOyH,EAAO,MAAM,GAC9BW,EAAE,KAAO8B,GACTlK,EAAKE,CAAC,EAAI,IAAIpF,GAAMsN,EAAE,KAAM8B,CAAO,EAC/B9B,EAAE,GAAK+B,GACPnK,EAAK,OAAOE,EAAI,EAAG,EAAG,IAAIpF,GAAMqP,EAAO/B,EAAE,EAAE,CAAC,GAE3CA,EAAE,GAAK+B,EACZnK,EAAKE,GAAG,EAAI,IAAIpF,GAAMqP,EAAO/B,EAAE,EAAE,EAGjCpI,EAAK,OAAOE,IAAK,CAAC,EAE1B,CACJ,CACA,OAAO+J,CACX,CA1BSlP,EAAAoO,GAAA,eA2BT,SAASiB,GAAiBC,EAAGtK,EAAG/E,EAAMC,EAAI,CACtC,IAAIqP,EAAK,EAAGC,EAAK,EAAGC,EAAM,GAAOC,EAAM,GAAOvM,EAAM,KAChD3C,EAAS,CAAC,EACd,OAAS,CACL,IAAImP,EAAQJ,GAAMD,EAAE,OAAS,IAAMG,EAAMH,EAAEC,CAAE,EAAE,GAAKD,EAAEC,CAAE,EAAE,KACtDK,EAAQJ,GAAMxK,EAAE,OAAS,IAAM0K,EAAM1K,EAAEwK,CAAE,EAAE,GAAKxK,EAAEwK,CAAE,EAAE,KAC1D,GAAIC,GAAOC,EAAK,CACZ,IAAIrJ,EAAQ,KAAK,IAAIlD,EAAKlD,CAAI,EAAGsI,EAAM,KAAK,IAAIoH,EAAOC,EAAO1P,CAAE,EAC5DmG,EAAQkC,GACR/H,EAAO,KAAK,IAAIT,GAAMsG,EAAOkC,CAAG,CAAC,CACzC,CAEA,GADApF,EAAM,KAAK,IAAIwM,EAAOC,CAAK,EACvBzM,GAAO,IACP,MACAwM,GAASxM,IACJsM,GAGDA,EAAM,GACNF,KAHAE,EAAM,IAMVG,GAASzM,IACJuM,GAGDA,EAAM,GACNF,KAHAE,EAAM,GAMlB,CACA,OAAOlP,CACX,CAhCSR,EAAAqP,GAAA,oBAoCT,SAAShB,GAAeb,EAAQd,EAAQ,CACpC,IAAIlM,EAAS,CAAC,EACd,OAAS,CAAE,IAAA2C,EAAK,MAAAmE,EAAO,KAAA0H,CAAK,IAAKxB,EAAQ,CACrC,IAAI7E,EAAWxF,GAAOmE,EAAM,QAAUA,EAAM,QAAQ,CAAC,EAAE,KAAO,GAAIuB,EAASF,EAAWrB,EAAM,KAAK,OAC7FrH,EAAO,KAAK,IAAI+O,EAAK,KAAMrG,CAAQ,EAAGzI,EAAK,KAAK,IAAI8O,EAAK,GAAInG,CAAM,EACvE,GAAIvB,EAAM,QAAS,CACf,IAAIzG,EAAUyG,EAAM,QAAQ,IAAI+F,GAAK,IAAItN,GAAMsN,EAAE,KAAOlK,EAAKkK,EAAE,GAAKlK,CAAG,CAAC,EACpE0I,EAAUwD,GAAiB3C,EAAQ7L,EAASZ,EAAMC,CAAE,EACxD,QAAS4B,EAAI,EAAGqB,EAAMlD,GAAO6B,IAAK,CAC9B,IAAIiE,EAAOjE,GAAK+J,EAAQ,OAAQtD,EAAMxC,EAAO7F,EAAK2L,EAAQ/J,CAAC,EAAE,KAG7D,GAFIyG,EAAMpF,GACN3C,EAAO,KAAK,IAAI8K,GAAanI,EAAKoF,EAAKjB,EAAM,KAAM,CAACqB,EAAUqG,EAAK,MAAQ7L,GAAO6L,EAAK,UAAWA,EAAK,IAAMzG,GAAOyG,EAAK,OAAO,CAAC,EACjIjJ,EACA,MACJ5C,EAAM0I,EAAQ/J,CAAC,EAAE,EACrB,CACJ,MAEItB,EAAO,KAAK,IAAI8K,GAAarL,EAAMC,EAAIoH,EAAM,KAAM,CAACqB,EAAUqG,EAAK,MAAQrG,GAAYqG,EAAK,UAAWA,EAAK,IAAMnG,GAAUmG,EAAK,OAAO,CAAC,CAEjJ,CACA,OAAOxO,CACX,CAtBSR,EAAAqO,GAAA,kBCznET,IAAIwB,GAAY,EAoBVC,GAAN,MAAMC,CAAI,CAtBV,MAsBU,CAAAC,EAAA,YAIN,YAIAC,EAKAC,EAKAC,EAIAC,EAAU,CACN,KAAK,KAAOH,EACZ,KAAK,IAAMC,EACX,KAAK,KAAOC,EACZ,KAAK,SAAWC,EAIhB,KAAK,GAAKP,IACd,CACA,UAAW,CACP,GAAI,CAAE,KAAAI,CAAK,EAAI,KACf,QAASI,KAAO,KAAK,SACbA,EAAI,OACJJ,EAAO,GAAGI,EAAI,IAAI,IAAIJ,CAAI,KAClC,OAAOA,CACX,CACA,OAAO,OAAOK,EAAcC,EAAQ,CAChC,IAAIN,EAAO,OAAOK,GAAgB,SAAWA,EAAe,IAG5D,GAFIA,aAAwBP,IACxBQ,EAASD,GACuCC,GAAO,KACvD,MAAM,IAAI,MAAM,oCAAoC,EACxD,IAAIC,EAAM,IAAIT,EAAIE,EAAM,CAAC,EAAG,KAAM,CAAC,CAAC,EAEpC,GADAO,EAAI,IAAI,KAAKA,CAAG,EACZD,EACA,QAASE,KAAKF,EAAO,IACjBC,EAAI,IAAI,KAAKC,CAAC,EACtB,OAAOD,CACX,CAaA,OAAO,eAAeP,EAAM,CACxB,IAAII,EAAM,IAAIK,GAAST,CAAI,EAC3B,OAAQO,GACAA,EAAI,SAAS,QAAQH,CAAG,EAAI,GACrBG,EACJE,GAAS,IAAIF,EAAI,MAAQA,EAAKA,EAAI,SAAS,OAAOH,CAAG,EAAE,KAAK,CAACM,EAAGC,IAAMD,EAAE,GAAKC,EAAE,EAAE,CAAC,CAEjG,CACJ,EACIC,GAAiB,EACfH,GAAN,MAAMI,CAAS,CAhGf,MAgGe,CAAAd,EAAA,iBACX,YAAYC,EAAM,CACd,KAAK,KAAOA,EACZ,KAAK,UAAY,CAAC,EAClB,KAAK,GAAKY,IACd,CACA,OAAO,IAAIV,EAAMY,EAAM,CACnB,GAAI,CAACA,EAAK,OACN,OAAOZ,EACX,IAAIa,EAASD,EAAK,CAAC,EAAE,UAAU,KAAKN,GAAKA,EAAE,MAAQN,GAAQc,GAAUF,EAAMN,EAAE,QAAQ,CAAC,EACtF,GAAIO,EACA,OAAOA,EACX,IAAId,EAAM,CAAC,EAAGM,EAAM,IAAIV,GAAIK,EAAK,KAAMD,EAAKC,EAAMY,CAAI,EACtD,QAASG,KAAKH,EACVG,EAAE,UAAU,KAAKV,CAAG,EACxB,IAAIW,EAAUC,GAASL,CAAI,EAC3B,QAASR,KAAUJ,EAAK,IACpB,GAAI,CAACI,EAAO,SAAS,OACjB,QAASc,KAAUF,EACfjB,EAAI,KAAKY,EAAS,IAAIP,EAAQc,CAAM,CAAC,EACjD,OAAOb,CACX,CACJ,EACA,SAASS,GAAUN,EAAGC,EAAG,CACrB,OAAOD,EAAE,QAAUC,EAAE,QAAUD,EAAE,MAAM,CAACW,EAAG,IAAMA,GAAKV,EAAE,CAAC,CAAC,CAC9D,CAFSZ,EAAAiB,GAAA,aAGT,SAASG,GAASG,EAAO,CACrB,IAAIC,EAAO,CAAC,CAAC,CAAC,EACd,QAASC,EAAI,EAAGA,EAAIF,EAAM,OAAQE,IAC9B,QAASC,EAAI,EAAGC,EAAIH,EAAK,OAAQE,EAAIC,EAAGD,IACpCF,EAAK,KAAKA,EAAKE,CAAC,EAAE,OAAOH,EAAME,CAAC,CAAC,CAAC,EAG1C,OAAOD,EAAK,KAAK,CAACb,EAAGC,IAAMA,EAAE,OAASD,EAAE,MAAM,CAClD,CARSX,EAAAoB,GAAA,YA4DT,SAASQ,GAAUC,EAAM,CACrB,IAAIC,EAAS,OAAO,OAAO,IAAI,EAC/B,QAASC,KAAQF,EAAM,CACnB,IAAIG,EAAOH,EAAKE,CAAI,EACf,MAAM,QAAQC,CAAI,IACnBA,EAAO,CAACA,CAAI,GAChB,QAASC,KAAQF,EAAK,MAAM,GAAG,EAC3B,GAAIE,EAAM,CACN,IAAIC,EAAS,CAAC,EAAGC,EAAO,EAAqBC,EAAOH,EACpD,QAASI,EAAM,IAAK,CAChB,GAAID,GAAQ,OAASC,EAAM,GAAKA,EAAM,GAAKJ,EAAK,OAAQ,CACpDE,EAAO,EACP,KACJ,CACA,IAAIjB,EAAI,8BAA8B,KAAKkB,CAAI,EAC/C,GAAI,CAAClB,EACD,MAAM,IAAI,WAAW,iBAAmBe,CAAI,EAGhD,GAFAC,EAAO,KAAKhB,EAAE,CAAC,GAAK,IAAM,GAAKA,EAAE,CAAC,EAAE,CAAC,GAAK,IAAM,KAAK,MAAMA,EAAE,CAAC,CAAC,EAAIA,EAAE,CAAC,CAAC,EACvEmB,GAAOnB,EAAE,CAAC,EAAE,OACRmB,GAAOJ,EAAK,OACZ,MACJ,IAAIK,EAAOL,EAAKI,GAAK,EACrB,GAAIA,GAAOJ,EAAK,QAAUK,GAAQ,IAAK,CACnCH,EAAO,EACP,KACJ,CACA,GAAIG,GAAQ,IACR,MAAM,IAAI,WAAW,iBAAmBL,CAAI,EAChDG,EAAOH,EAAK,MAAMI,CAAG,CACzB,CACA,IAAIE,EAAOL,EAAO,OAAS,EAAGM,EAAQN,EAAOK,CAAI,EACjD,GAAI,CAACC,EACD,MAAM,IAAI,WAAW,iBAAmBP,CAAI,EAChD,IAAIQ,EAAO,IAAIC,GAAKV,EAAMG,EAAMI,EAAO,EAAIL,EAAO,MAAM,EAAGK,CAAI,EAAI,IAAI,EACvET,EAAOU,CAAK,EAAIC,EAAK,KAAKX,EAAOU,CAAK,CAAC,CAC3C,CACR,CACA,OAAOG,GAAa,IAAIb,CAAM,CAClC,CAtCS9B,EAAA4B,GAAA,aAuCT,IAAMe,GAAe,IAAIC,EAAS,CAC9B,QAAQjC,EAAGC,EAAG,CACV,IAAIiC,EAAKC,EAAMC,EACf,KAAOpC,GAAKC,GAAG,CASX,GARI,CAACD,GAAKC,GAAKD,EAAE,OAASC,EAAE,OACxBmC,EAAOnC,EACPA,EAAIA,EAAE,OAGNmC,EAAOpC,EACPA,EAAIA,EAAE,MAENkC,GAAOA,EAAI,MAAQE,EAAK,MAAQ,CAACA,EAAK,SAAW,CAACF,EAAI,QACtD,SACJ,IAAIG,EAAO,IAAIN,GAAKK,EAAK,KAAMA,EAAK,KAAMA,EAAK,OAAO,EAClDF,EACAA,EAAI,KAAOG,EAEXF,EAAOE,EACXH,EAAMG,CACV,CACA,OAAOF,CACX,CACJ,CAAC,EACKJ,GAAN,KAAW,CArPX,MAqPW,CAAA1C,EAAA,aACP,YAAYgC,EAAMG,EAAMc,EAASX,EAAM,CACnC,KAAK,KAAON,EACZ,KAAK,KAAOG,EACZ,KAAK,QAAUc,EACf,KAAK,KAAOX,CAChB,CACA,IAAI,QAAS,CAAE,OAAO,KAAK,MAAQ,CAAqB,CACxD,IAAI,SAAU,CAAE,OAAO,KAAK,MAAQ,CAAsB,CAC1D,KAAKY,EAAO,CACR,MAAI,CAACA,GAASA,EAAM,MAAQ,KAAK,OAC7B,KAAK,KAAOA,EACL,OAEXA,EAAM,KAAO,KAAK,KAAKA,EAAM,IAAI,EAC1BA,EACX,CACA,IAAI,OAAQ,CAAE,OAAO,KAAK,QAAU,KAAK,QAAQ,OAAS,CAAG,CACjE,EACAR,GAAK,MAAQ,IAAIA,GAAK,CAAC,EAAG,EAAqB,IAAI,EAMnD,SAASS,GAAenB,EAAMoB,EAAS,CACnC,IAAIC,EAAM,OAAO,OAAO,IAAI,EAC5B,QAASC,KAAStB,EACd,GAAI,CAAC,MAAM,QAAQsB,EAAM,GAAG,EACxBD,EAAIC,EAAM,IAAI,EAAE,EAAIA,EAAM,UAE1B,SAAS9C,KAAO8C,EAAM,IAClBD,EAAI7C,EAAI,EAAE,EAAI8C,EAAM,MAEhC,GAAI,CAAE,MAAAC,EAAO,IAAAC,EAAM,IAAK,EAAIJ,GAAW,CAAC,EACxC,MAAO,CACH,MAAOpD,EAACgC,GAAS,CACb,IAAIyB,EAAMD,EACV,QAAShD,KAAOwB,EACZ,QAAS0B,KAAOlD,EAAI,IAAK,CACrB,IAAImD,EAAWN,EAAIK,EAAI,EAAE,EACzB,GAAIC,EAAU,CACVF,EAAMA,EAAMA,EAAM,IAAME,EAAWA,EACnC,KACJ,CACJ,CAEJ,OAAOF,CACX,EAZO,SAaP,MAAAF,CACJ,CACJ,CA1BSvD,EAAAmD,GAAA,kBA2BT,SAASS,GAAcC,EAAc7B,EAAM,CACvC,IAAI8B,EAAS,KACb,QAASC,KAAeF,EAAc,CAClC,IAAIG,EAAQD,EAAY,MAAM/B,CAAI,EAC9BgC,IACAF,EAASA,EAASA,EAAS,IAAME,EAAQA,EACjD,CACA,OAAOF,CACX,CARS9D,EAAA4D,GAAA,iBAeT,SAASK,GAAcC,EAAMH,EAM7BI,EAIAC,EAAO,EAIPC,EAAKH,EAAK,OAAQ,CACd,IAAII,EAAU,IAAIC,GAAiBH,EAAM,MAAM,QAAQL,CAAW,EAAIA,EAAc,CAACA,CAAW,EAAGI,CAAQ,EAC3GG,EAAQ,eAAeJ,EAAK,OAAO,EAAGE,EAAMC,EAAI,GAAIC,EAAQ,YAAY,EACxEA,EAAQ,MAAMD,CAAE,CACpB,CAlBSrE,EAAAiE,GAAA,iBAgDT,IAAMO,GAAN,KAAuB,CAxWvB,MAwWuB,CAAAC,EAAA,yBACnB,YAAYC,EAAIC,EAAcC,EAAM,CAChC,KAAK,GAAKF,EACV,KAAK,aAAeC,EACpB,KAAK,KAAOC,EACZ,KAAK,MAAQ,EACjB,CACA,UAAUF,EAAIG,EAAK,CACXA,GAAO,KAAK,QACZ,KAAK,MAAMH,CAAE,EACTA,EAAK,KAAK,KACV,KAAK,GAAKA,GACd,KAAK,MAAQG,EAErB,CACA,MAAMC,EAAI,CACFA,EAAK,KAAK,IAAM,KAAK,OACrB,KAAK,KAAK,KAAK,GAAIA,EAAI,KAAK,KAAK,CACzC,CACA,eAAeC,EAAQC,EAAMF,EAAIG,EAAgBN,EAAc,CAC3D,GAAI,CAAE,KAAAO,EAAM,KAAMC,EAAO,GAAIC,CAAI,EAAIL,EACrC,GAAII,GAASL,GAAMM,GAAOJ,EACtB,OACAE,EAAK,QACLP,EAAe,KAAK,aAAa,OAAOU,GAAK,CAACA,EAAE,OAASA,EAAE,MAAMH,CAAI,CAAC,GAC1E,IAAIL,EAAMI,EACNK,EAAOC,GAAaR,CAAM,GAAKS,GAAK,MACpCC,EAASC,GAAcf,EAAcW,EAAK,IAAI,EASlD,GARIG,IACIZ,IACAA,GAAO,KACXA,GAAOY,EACHH,EAAK,MAAQ,IACbL,IAAmBA,EAAiB,IAAM,IAAMQ,IAExD,KAAK,UAAU,KAAK,IAAIT,EAAMG,CAAK,EAAGN,CAAG,EACrCS,EAAK,OACL,OACJ,IAAIK,EAAUZ,EAAO,MAAQA,EAAO,KAAK,KAAKa,EAAS,OAAO,EAC9D,GAAID,GAAWA,EAAQ,QAAS,CAC5B,IAAIE,EAAQd,EAAO,KAAK,MAAMY,EAAQ,QAAQ,CAAC,EAAE,KAAOR,EAAO,CAAC,EAC5DW,EAAoB,KAAK,aAAa,OAAOT,GAAK,CAACA,EAAE,OAASA,EAAE,MAAMM,EAAQ,KAAK,IAAI,CAAC,EACxFI,EAAWhB,EAAO,WAAW,EACjC,QAASiB,EAAI,EAAGC,EAAMd,GAAQa,IAAK,CAC/B,IAAIE,EAAOF,EAAIL,EAAQ,QAAQ,OAASA,EAAQ,QAAQK,CAAC,EAAI,KACzDG,EAAUD,EAAOA,EAAK,KAAOf,EAAQC,EACrCgB,EAAY,KAAK,IAAIpB,EAAMiB,CAAG,EAAGI,EAAU,KAAK,IAAIvB,EAAIqB,CAAO,EACnE,GAAIC,EAAYC,GAAWN,EACvB,KAAOhB,EAAO,KAAOsB,IACjB,KAAK,eAAetB,EAAQqB,EAAWC,EAASpB,EAAgBN,CAAY,EAC5E,KAAK,UAAU,KAAK,IAAI0B,EAAStB,EAAO,EAAE,EAAGF,CAAG,EAC5C,EAAAE,EAAO,IAAMoB,GAAW,CAACpB,EAAO,YAAY,KAAhD,CAIR,GAAI,CAACmB,GAAQC,EAAUrB,EACnB,MACJmB,EAAMC,EAAK,GAAKf,EACZc,EAAMjB,IACN,KAAK,eAAea,EAAM,OAAO,EAAG,KAAK,IAAIb,EAAMkB,EAAK,KAAOf,CAAK,EAAG,KAAK,IAAIL,EAAImB,CAAG,EAAG,GAAIH,CAAiB,EAC/G,KAAK,UAAU,KAAK,IAAIhB,EAAImB,CAAG,EAAGpB,CAAG,EAE7C,CACIkB,GACAhB,EAAO,OAAO,CACtB,SACSA,EAAO,WAAW,EAAG,CACtBY,IACAV,EAAiB,IACrB,EACI,IAAI,EAAAF,EAAO,IAAMC,GAEjB,IAAID,EAAO,MAAQD,EACf,MACJ,KAAK,eAAeC,EAAQC,EAAMF,EAAIG,EAAgBN,CAAY,EAClE,KAAK,UAAU,KAAK,IAAIG,EAAIC,EAAO,EAAE,EAAGF,CAAG,QACtCE,EAAO,YAAY,GAC5BA,EAAO,OAAO,CAClB,CACJ,CACJ,EAMA,SAASQ,GAAae,EAAM,CACxB,IAAIhB,EAAOgB,EAAK,KAAK,KAAKC,EAAY,EACtC,KAAOjB,GAAQA,EAAK,SAAW,CAACgB,EAAK,aAAahB,EAAK,OAAO,GAC1DA,EAAOA,EAAK,KAChB,OAAOA,GAAQ,IACnB,CALSb,EAAAc,GAAA,gBAMT,IAAMiB,EAAIC,GAAI,OACRC,GAAUF,EAAE,EAAGG,GAAOH,EAAE,EAAGI,GAAWJ,EAAEG,EAAI,EAAGE,GAAeL,EAAEG,EAAI,EAAGG,GAAUN,EAAE,EAAGO,GAASP,EAAEM,EAAO,EAAGE,GAASR,EAAEM,EAAO,EAAGG,GAAUT,EAAE,EAAGU,GAAUV,EAAES,EAAO,EAAGE,GAAUX,EAAE,EAAGY,GAAWZ,EAAE,EAAGa,GAAcb,EAAE,EAAGc,GAAUd,EAAEa,EAAW,EAAGE,GAAOf,EAAE,EAqB1PgB,EAAO,CAIT,QAAAd,GAIA,YAAaF,EAAEE,EAAO,EAItB,aAAcF,EAAEE,EAAO,EAIvB,WAAYF,EAAEE,EAAO,EAIrB,KAAAC,GAIA,aAAcH,EAAEG,EAAI,EAIpB,SAAUC,GAIV,QAASJ,EAAEI,EAAQ,EAInB,aAAcC,GAId,cAAeL,EAAEK,EAAY,EAI7B,UAAWL,EAAEG,EAAI,EAIjB,UAAWH,EAAEG,EAAI,EAIjB,UAAWH,EAAEG,EAAI,EAIjB,UAAWH,EAAEG,EAAI,EAIjB,QAAAG,GAIA,OAAAC,GAIA,UAAWP,EAAEO,EAAM,EAInB,UAAWP,EAAEO,EAAM,EAInB,eAAgBP,EAAEO,EAAM,EAIxB,OAAAC,GAIA,QAASR,EAAEQ,EAAM,EAIjB,MAAOR,EAAEQ,EAAM,EAIf,KAAMR,EAAEM,EAAO,EAIf,OAAQN,EAAEM,EAAO,EAKjB,OAAQN,EAAEM,EAAO,EAIjB,MAAON,EAAEM,EAAO,EAIhB,IAAKN,EAAEM,EAAO,EAId,QAAAK,GAKA,KAAMX,EAAEW,EAAO,EAIf,KAAMX,EAAEW,EAAO,EAIf,KAAMX,EAAEW,EAAO,EAIf,KAAMX,EAAEW,EAAO,EAIf,SAAUX,EAAEW,EAAO,EAInB,gBAAiBX,EAAEW,EAAO,EAI1B,eAAgBX,EAAEW,EAAO,EAIzB,kBAAmBX,EAAEW,EAAO,EAK5B,cAAeX,EAAEW,EAAO,EAIxB,SAAAC,GAIA,cAAeZ,EAAEY,EAAQ,EAIzB,mBAAoBZ,EAAEY,EAAQ,EAI9B,cAAeZ,EAAEY,EAAQ,EAIzB,gBAAiBZ,EAAEY,EAAQ,EAI3B,gBAAiBZ,EAAEY,EAAQ,EAI3B,eAAgBZ,EAAEY,EAAQ,EAI1B,mBAAoBZ,EAAEY,EAAQ,EAI9B,aAAcZ,EAAEY,EAAQ,EAIxB,gBAAiBZ,EAAEY,EAAQ,EAI3B,YAAAC,GAKA,UAAWb,EAAEa,EAAW,EAIxB,QAAAC,GAKA,aAAcd,EAAEc,EAAO,EAKvB,cAAed,EAAEc,EAAO,EAKxB,MAAOd,EAAEc,EAAO,EAKhB,MAAOd,EAAEc,EAAO,EAIhB,QAAAL,GAIA,QAAAC,GAIA,SAAUV,EAAEU,EAAO,EAInB,SAAUV,EAAEU,EAAO,EAInB,SAAUV,EAAEU,EAAO,EAInB,SAAUV,EAAEU,EAAO,EAInB,SAAUV,EAAEU,EAAO,EAInB,SAAUV,EAAEU,EAAO,EAInB,iBAAkBV,EAAES,EAAO,EAI3B,KAAMT,EAAES,EAAO,EAIf,MAAOT,EAAES,EAAO,EAIhB,SAAUT,EAAES,EAAO,EAInB,OAAQT,EAAES,EAAO,EAIjB,KAAMT,EAAES,EAAO,EAKf,UAAWT,EAAES,EAAO,EAKpB,cAAeT,EAAES,EAAO,EAIxB,SAAUT,EAAE,EAIZ,QAASA,EAAE,EAIX,QAASA,EAAE,EAIX,QAASA,EAAE,EAIX,KAAAe,GAKA,aAAcf,EAAEe,EAAI,EAKpB,WAAYf,EAAEe,EAAI,EAKlB,sBAAuBf,EAAEe,EAAI,EAM7B,WAAYd,GAAI,eAAe,YAAY,EAM3C,SAAUA,GAAI,eAAe,UAAU,EAOvC,SAAUA,GAAI,eAAe,UAAU,EAMvC,SAAUA,GAAI,eAAe,UAAU,EAKvC,MAAOA,GAAI,eAAe,OAAO,EASjC,QAASA,GAAI,eAAe,SAAS,CACzC,EACA,QAASE,KAAQa,EAAM,CACnB,IAAIC,EAAMD,EAAKb,CAAI,EACfc,aAAehB,KACfgB,EAAI,KAAOd,EACnB,CAiDA,IAAMe,GAAmBC,GAAe,CACpC,CAAE,IAAKH,EAAK,KAAM,MAAO,UAAW,EACpC,CAAE,IAAKA,EAAK,QAAS,MAAO,aAAc,EAC1C,CAAE,IAAKA,EAAK,SAAU,MAAO,cAAe,EAC5C,CAAE,IAAKA,EAAK,OAAQ,MAAO,YAAa,EACxC,CAAE,IAAKA,EAAK,QAAS,MAAO,aAAc,EAC1C,CAAE,IAAKA,EAAK,KAAM,MAAO,UAAW,EACpC,CAAE,IAAKA,EAAK,KAAM,MAAO,UAAW,EACpC,CAAE,IAAKA,EAAK,IAAK,MAAO,SAAU,EAClC,CAAE,IAAKA,EAAK,UAAW,MAAO,eAAgB,EAC9C,CAAE,IAAKA,EAAK,SAAU,MAAO,cAAe,EAC5C,CAAE,IAAKA,EAAK,QAAS,MAAO,aAAc,EAC1C,CAAE,IAAKA,EAAK,QAAS,MAAO,aAAc,EAC1C,CAAE,IAAKA,EAAK,OAAQ,MAAO,YAAa,EACxC,CAAE,IAAKA,EAAK,OAAQ,MAAO,YAAa,EACxC,CAAE,IAAK,CAACA,EAAK,OAAQA,EAAK,OAAQA,EAAK,QAAQA,EAAK,MAAM,CAAC,EAAG,MAAO,aAAc,EACnF,CAAE,IAAKA,EAAK,aAAc,MAAO,kBAAmB,EACpD,CAAE,IAAKA,EAAK,MAAMA,EAAK,YAAY,EAAG,MAAO,4BAA6B,EAC1E,CAAE,IAAKA,EAAK,WAAWA,EAAK,YAAY,EAAG,MAAO,iCAAkC,EACpF,CAAE,IAAKA,EAAK,QAAQA,EAAK,YAAY,EAAG,MAAO,mBAAoB,EACnE,CAAE,IAAKA,EAAK,WAAWA,EAAK,YAAY,EAAG,MAAO,iCAAkC,EACpF,CAAE,IAAKA,EAAK,SAAU,MAAO,cAAe,EAC5C,CAAE,IAAKA,EAAK,UAAW,MAAO,eAAgB,EAC9C,CAAE,IAAKA,EAAK,UAAW,MAAO,eAAgB,EAC9C,CAAE,IAAKA,EAAK,UAAW,MAAO,eAAgB,EAC9C,CAAE,IAAKA,EAAK,aAAc,MAAO,kBAAmB,EACpD,CAAE,IAAKA,EAAK,SAAU,MAAO,cAAe,EAC5C,CAAE,IAAKA,EAAK,QAAS,MAAO,aAAc,EAC1C,CAAE,IAAKA,EAAK,KAAM,MAAO,UAAW,EACpC,CAAE,IAAKA,EAAK,QAAS,MAAO,aAAc,EAC1C,CAAE,IAAKA,EAAK,YAAa,MAAO,iBAAkB,CACtD,CAAC,ECt5BD,IAAII,GAKEC,GAAgC,IAAIC,EAS1C,SAASC,GAAoBC,EAAU,CACnC,OAAOC,EAAM,OAAO,CAChB,QAASD,EAAWE,GAAUA,EAAO,OAAOF,CAAQ,EAAI,MAC5D,CAAC,CACL,CAJSG,EAAAJ,GAAA,uBAST,IAAMK,GAA+B,IAAIN,EAUnCO,GAAN,KAAe,CAvCf,MAuCe,CAAAF,EAAA,iBAQX,YAKAG,EAAMC,EAAQC,EAAkB,CAAC,EAIjCC,EAAO,GAAI,CACP,KAAK,KAAOH,EACZ,KAAK,KAAOG,EAIPC,EAAY,UAAU,eAAe,MAAM,GAC5C,OAAO,eAAeA,EAAY,UAAW,OAAQ,CAAE,KAAM,CAAE,OAAOC,EAAW,IAAI,CAAG,CAAE,CAAC,EAC/F,KAAK,OAASJ,EACd,KAAK,UAAY,CACbK,GAAS,GAAG,IAAI,EAChBF,EAAY,aAAa,GAAG,CAACG,EAAOC,EAAKC,IAAS,CAC9C,IAAIC,EAAMC,GAAUJ,EAAOC,EAAKC,CAAI,EAAGT,EAAOU,EAAI,KAAK,KAAKnB,EAAgB,EAC5E,GAAI,CAACS,EACD,MAAO,CAAC,EACZ,IAAIY,EAAOL,EAAM,MAAMP,CAAI,EAAGa,EAAMH,EAAI,KAAK,KAAKZ,EAAe,EACjE,GAAIe,EAAK,CACL,IAAIC,EAAYJ,EAAI,QAAQF,EAAME,EAAI,KAAMD,CAAI,EAChD,QAASM,KAAWF,EAChB,GAAIE,EAAQ,KAAKD,EAAWP,CAAK,EAAG,CAChC,IAAIP,EAAOO,EAAM,MAAMQ,EAAQ,KAAK,EACpC,OAAOA,EAAQ,MAAQ,UAAYf,EAAOA,EAAK,OAAOY,CAAI,CAC9D,CACR,CACA,OAAOA,CACX,CAAC,CACL,EAAE,OAAOV,CAAe,CAC5B,CAIA,WAAWK,EAAOC,EAAKC,EAAO,GAAI,CAC9B,OAAOE,GAAUJ,EAAOC,EAAKC,CAAI,EAAE,KAAK,KAAKlB,EAAgB,GAAK,KAAK,IAC3E,CAMA,YAAYgB,EAAO,CACf,IAAIS,EAAOT,EAAM,MAAMD,EAAQ,EAC/B,GAAiDU,GAAK,MAAS,KAAK,KAChE,MAAO,CAAC,CAAE,KAAM,EAAG,GAAIT,EAAM,IAAI,MAAO,CAAC,EAC7C,GAAI,CAACS,GAAQ,CAACA,EAAK,cACf,MAAO,CAAC,EACZ,IAAIC,EAAS,CAAC,EACVC,EAAUrB,EAAA,CAACsB,EAAMC,IAAS,CAC1B,GAAID,EAAK,KAAK5B,EAAgB,GAAK,KAAK,KAAM,CAC1C0B,EAAO,KAAK,CAAE,KAAAG,EAAM,GAAIA,EAAOD,EAAK,MAAO,CAAC,EAC5C,MACJ,CACA,IAAIE,EAAQF,EAAK,KAAK3B,EAAS,OAAO,EACtC,GAAI6B,GACA,GAAIA,EAAM,KAAK,KAAK9B,EAAgB,GAAK,KAAK,KAAM,CAChD,GAAI8B,EAAM,QACN,QAASC,KAAKD,EAAM,QAChBJ,EAAO,KAAK,CAAE,KAAMK,EAAE,KAAOF,EAAM,GAAIE,EAAE,GAAKF,CAAK,CAAC,OAExDH,EAAO,KAAK,CAAE,KAAMG,EAAM,GAAIA,EAAOD,EAAK,MAAO,CAAC,EACtD,MACJ,SACSE,EAAM,QAAS,CACpB,IAAIE,EAAON,EAAO,OAElB,GADAC,EAAQG,EAAM,KAAMA,EAAM,QAAQ,CAAC,EAAE,KAAOD,CAAI,EAC5CH,EAAO,OAASM,EAChB,MACR,EAEJ,QAASC,EAAI,EAAGA,EAAIL,EAAK,SAAS,OAAQK,IAAK,CAC3C,IAAIC,EAAKN,EAAK,SAASK,CAAC,EACpBC,aAAcC,GACdR,EAAQO,EAAIN,EAAK,UAAUK,CAAC,EAAIJ,CAAI,CAC5C,CACJ,EA3Bc,WA4Bd,OAAAF,EAAQb,EAAWE,CAAK,EAAG,CAAC,EACrBU,CACX,CAKA,IAAI,eAAgB,CAAE,MAAO,EAAM,CACvC,EAIAlB,GAAS,SAAwB4B,EAAY,OAAO,EACpD,SAAShB,GAAUJ,EAAOC,EAAKC,EAAM,CACjC,IAAImB,EAAUrB,EAAM,MAAMD,EAAQ,EAAGa,EAAOd,EAAWE,CAAK,EAAE,QAC9D,GAAI,CAACqB,GAAWA,EAAQ,cACpB,QAASC,EAAOV,EAAMU,EAAMA,EAAOA,EAAK,MAAMrB,EAAKC,EAAMqB,EAAS,eAAiBA,EAAS,cAAc,EAClGD,EAAK,KAAK,QACVV,EAAOU,GAEnB,OAAOV,CACX,CARStB,EAAAc,GAAA,aAcT,IAAMoB,GAAN,MAAMC,UAAmBjC,EAAS,CA7JlC,MA6JkC,CAAAF,EAAA,mBAC9B,YAAYG,EAAMC,EAAQE,EAAM,CAC5B,MAAMH,EAAMC,EAAQ,CAAC,EAAGE,CAAI,EAC5B,KAAK,OAASF,CAClB,CAIA,OAAO,OAAOgC,EAAM,CAChB,IAAIjC,EAAOP,GAAoBwC,EAAK,YAAY,EAChD,OAAO,IAAID,EAAWhC,EAAMiC,EAAK,OAAO,UAAU,CAC9C,MAAO,CAAC1C,GAAiB,IAAI2C,GAAQA,EAAK,MAAQlC,EAAO,MAAS,CAAC,CACvE,CAAC,EAAGiC,EAAK,IAAI,CACjB,CAKA,UAAUE,EAAShC,EAAM,CACrB,OAAO,IAAI6B,EAAW,KAAK,KAAM,KAAK,OAAO,UAAUG,CAAO,EAAGhC,GAAQ,KAAK,IAAI,CACtF,CACA,IAAI,eAAgB,CAAE,OAAO,KAAK,OAAO,YAAY,CAAG,CAC5D,EAOA,SAASE,EAAWE,EAAO,CACvB,IAAI6B,EAAQ7B,EAAM,MAAMR,GAAS,MAAO,EAAK,EAC7C,OAAOqC,EAAQA,EAAM,KAAOV,EAAK,KACrC,CAHS7B,EAAAQ,EAAA,cA6DT,IAAMgC,GAAN,KAAe,CAvPf,MAuPe,CAAAC,EAAA,iBAIX,YAAYC,EAAK,CACb,KAAK,IAAMA,EACX,KAAK,UAAY,EACjB,KAAK,OAAS,GACd,KAAK,OAASA,EAAI,KAAK,CAC3B,CACA,IAAI,QAAS,CAAE,OAAO,KAAK,IAAI,MAAQ,CACvC,OAAOC,EAAK,CACR,YAAK,OAAS,KAAK,OAAO,KAAKA,EAAM,KAAK,SAAS,EAAE,MACrD,KAAK,UAAYA,EAAM,KAAK,OAAO,OAC5B,KAAK,UAAY,KAAK,OAAO,MACxC,CACA,MAAMA,EAAK,CACP,YAAK,OAAOA,CAAG,EACR,KAAK,MAChB,CACA,IAAI,YAAa,CAAE,MAAO,EAAM,CAChC,KAAKC,EAAMC,EAAI,CACX,IAAIC,EAAc,KAAK,UAAY,KAAK,OAAO,OAC/C,OAAIF,EAAOE,GAAeD,GAAM,KAAK,UAC1B,KAAK,IAAI,YAAYD,EAAMC,CAAE,EAE7B,KAAK,OAAO,MAAMD,EAAOE,EAAaD,EAAKC,CAAW,CACrE,CACJ,EACIC,GAAiB,KAIfC,GAAN,MAAMC,CAAa,CAxRnB,MAwRmB,CAAAR,EAAA,qBACf,YAAYS,EAIZC,EAIAC,EAAY,CAAC,EAIbC,EAIAC,EASAC,EAIAC,EAMAC,EAAY,CACR,KAAK,OAASP,EACd,KAAK,MAAQC,EACb,KAAK,UAAYC,EACjB,KAAK,KAAOC,EACZ,KAAK,QAAUC,EACf,KAAK,SAAWC,EAChB,KAAK,QAAUC,EACf,KAAK,WAAaC,EAClB,KAAK,MAAQ,KAIb,KAAK,YAAc,CAAC,CACxB,CAIA,OAAO,OAAOP,EAAQC,EAAOI,EAAU,CACnC,OAAO,IAAIN,EAAaC,EAAQC,EAAO,CAAC,EAAGO,EAAK,MAAO,EAAGH,EAAU,CAAC,EAAG,IAAI,CAChF,CACA,YAAa,CACT,OAAO,KAAK,OAAO,WAAW,IAAIf,GAAS,KAAK,MAAM,GAAG,EAAG,KAAK,SAAS,CAC9E,CAIA,KAAKmB,EAAOC,EAAM,CAGd,OAFIA,GAAQ,MAAQA,GAAQ,KAAK,MAAM,IAAI,SACvCA,EAAO,QACP,KAAK,MAAQF,EAAK,OAAS,KAAK,OAAOE,GAA0C,KAAK,MAAM,IAAI,MAAM,GACtG,KAAK,SAAS,EACP,IAEJ,KAAK,YAAY,IAAM,CAC1B,IAAIC,EACJ,GAAI,OAAOF,GAAS,SAAU,CAC1B,IAAIG,EAAU,KAAK,IAAI,EAAIH,EAC3BA,EAAQlB,EAAA,IAAM,KAAK,IAAI,EAAIqB,EAAnB,QACZ,CAMA,IALK,KAAK,QACN,KAAK,MAAQ,KAAK,WAAW,GAC7BF,GAAQ,OAAS,KAAK,MAAM,WAAa,MAAQ,KAAK,MAAM,UAAYA,IACxEA,EAAO,KAAK,MAAM,IAAI,QACtB,KAAK,MAAM,OAAOA,CAAI,IACjB,CACL,IAAIG,EAAO,KAAK,MAAM,QAAQ,EAC9B,GAAIA,EAKA,GAJA,KAAK,UAAY,KAAK,mBAAmBC,GAAa,QAAQD,EAAM,KAAK,UAAW,KAAK,MAAM,WAAa,IAAI,CAAC,EACjH,KAAK,SAAWF,EAAK,KAAK,MAAM,aAAe,MAAQA,IAAO,OAASA,EAAK,KAAK,MAAM,IAAI,OAC3F,KAAK,KAAOE,EACZ,KAAK,MAAQ,KACT,KAAK,SAAWH,GAA0C,KAAK,MAAM,IAAI,QACzE,KAAK,MAAQ,KAAK,WAAW,MAE7B,OAAO,GAEf,GAAID,EAAM,EACN,MAAO,EACf,CACJ,CAAC,CACL,CAIA,UAAW,CACP,IAAIhB,EAAKU,EACL,KAAK,QAAUV,EAAM,KAAK,MAAM,YAAc,KAAK,WAC/C,KAAK,MAAM,WAAa,MAAQ,KAAK,MAAM,UAAYA,IACvD,KAAK,MAAM,OAAOA,CAAG,EACzB,KAAK,YAAY,IAAM,CAAE,KAAO,EAAEU,EAAO,KAAK,MAAM,QAAQ,IAAI,CAAI,CAAC,EACrE,KAAK,QAAUV,EACf,KAAK,KAAOU,EACZ,KAAK,UAAY,KAAK,mBAAmBW,GAAa,QAAQ,KAAK,KAAM,KAAK,UAAW,EAAI,CAAC,EAC9F,KAAK,MAAQ,KAErB,CACA,YAAYC,EAAG,CACX,IAAIC,EAAOnB,GACXA,GAAiB,KACjB,GAAI,CACA,OAAOkB,EAAE,CACb,QACA,CACIlB,GAAiBmB,CACrB,CACJ,CACA,mBAAmBd,EAAW,CAC1B,QAASe,EAAGA,EAAI,KAAK,YAAY,IAAI,GACjCf,EAAYgB,GAAahB,EAAWe,EAAE,KAAMA,EAAE,EAAE,EACpD,OAAOf,CACX,CAIA,QAAQiB,EAASC,EAAU,CACvB,GAAI,CAAE,UAAAlB,EAAW,KAAAC,EAAM,QAAAC,EAAS,SAAAC,EAAU,QAAAC,CAAQ,EAAI,KAEtD,GADA,KAAK,SAAS,EACV,CAACa,EAAQ,MAAO,CAChB,IAAIE,EAAS,CAAC,EAMd,GALAF,EAAQ,kBAAkB,CAACG,EAAOC,EAAKC,EAAOC,IAAQJ,EAAO,KAAK,CAAE,MAAAC,EAAO,IAAAC,EAAK,MAAAC,EAAO,IAAAC,CAAI,CAAC,CAAC,EAC7FvB,EAAYY,GAAa,aAAaZ,EAAWmB,CAAM,EACvDlB,EAAOK,EAAK,MACZJ,EAAU,EACVC,EAAW,CAAE,KAAMc,EAAQ,OAAOd,EAAS,KAAM,EAAE,EAAG,GAAIc,EAAQ,OAAOd,EAAS,GAAI,CAAC,CAAE,EACrF,KAAK,QAAQ,OAAQ,CACrBC,EAAU,CAAC,EACX,QAASW,KAAK,KAAK,QAAS,CACxB,IAAIvB,EAAOyB,EAAQ,OAAOF,EAAE,KAAM,CAAC,EAAGtB,EAAKwB,EAAQ,OAAOF,EAAE,GAAI,EAAE,EAC9DvB,EAAOC,GACPW,EAAQ,KAAK,CAAE,KAAAZ,EAAM,GAAAC,CAAG,CAAC,CACjC,CACJ,CACJ,CACA,OAAO,IAAII,EAAa,KAAK,OAAQqB,EAAUlB,EAAWC,EAAMC,EAASC,EAAUC,EAAS,KAAK,UAAU,CAC/G,CAIA,eAAeD,EAAU,CACrB,GAAI,KAAK,SAAS,MAAQA,EAAS,MAAQ,KAAK,SAAS,IAAMA,EAAS,GACpE,MAAO,GACX,KAAK,SAAWA,EAChB,IAAIqB,EAAW,KAAK,QAAQ,OAC5B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAQ,OAAQ,IAAK,CAC1C,GAAI,CAAE,KAAAhC,EAAM,GAAAC,CAAG,EAAI,KAAK,QAAQ,CAAC,EAC7BD,EAAOW,EAAS,IAAMV,EAAKU,EAAS,OACpC,KAAK,UAAYa,GAAa,KAAK,UAAWxB,EAAMC,CAAE,EACtD,KAAK,QAAQ,OAAO,IAAK,CAAC,EAElC,CACA,OAAI,KAAK,QAAQ,QAAU+B,EAChB,IACX,KAAK,MAAM,EACJ,GACX,CAIA,OAAQ,CACA,KAAK,QACL,KAAK,SAAS,EACd,KAAK,MAAQ,KAErB,CAMA,gBAAgBhC,EAAMC,EAAI,CACtB,KAAK,QAAQ,KAAK,CAAE,KAAAD,EAAM,GAAAC,CAAG,CAAC,CAClC,CAUA,OAAO,kBAAkBc,EAAO,CAC5B,OAAO,IAAI,cAAckB,EAAO,CAC5B,YAAYC,EAAO1B,EAAWmB,EAAQ,CAClC,IAAI3B,EAAO2B,EAAO,CAAC,EAAE,KAAM1B,EAAK0B,EAAOA,EAAO,OAAS,CAAC,EAAE,GAiB1D,MAhBa,CACT,UAAW3B,EACX,SAAU,CACN,IAAImC,EAAKhC,GACT,GAAIgC,EAAI,CACJ,QAASZ,KAAKI,EACVQ,EAAG,YAAY,KAAKZ,CAAC,EACrBR,IACAoB,EAAG,WAAaA,EAAG,WAAa,QAAQ,IAAI,CAACA,EAAG,WAAYpB,CAAK,CAAC,EAAIA,EAC9E,CACA,YAAK,UAAYd,EACV,IAAIa,EAAKsB,GAAS,KAAM,CAAC,EAAG,CAAC,EAAGnC,EAAKD,CAAI,CACpD,EACA,UAAW,KACX,QAAS,CAAE,CACf,CAEJ,CACJ,CACJ,CAIA,OAAOgB,EAAM,CACTA,EAAO,KAAK,IAAIA,EAAM,KAAK,MAAM,IAAI,MAAM,EAC3C,IAAIqB,EAAQ,KAAK,UACjB,OAAO,KAAK,SAAWrB,GAAQqB,EAAM,QAAUA,EAAM,CAAC,EAAE,MAAQ,GAAKA,EAAM,CAAC,EAAE,IAAMrB,CACxF,CAKA,OAAO,KAAM,CAAE,OAAOb,EAAgB,CAC1C,EACA,SAASqB,GAAahB,EAAWR,EAAMC,EAAI,CACvC,OAAOmB,GAAa,aAAaZ,EAAW,CAAC,CAAE,MAAOR,EAAM,IAAKC,EAAI,MAAOD,EAAM,IAAKC,CAAG,CAAC,CAAC,CAChG,CAFSJ,EAAA2B,GAAA,gBAGT,IAAMc,GAAN,MAAMC,CAAc,CAvgBpB,MAugBoB,CAAA1C,EAAA,sBAChB,YAGA2C,EAAS,CACL,KAAK,QAAUA,EACf,KAAK,KAAOA,EAAQ,IACxB,CACA,MAAMC,EAAI,CACN,GAAI,CAACA,EAAG,YAAc,KAAK,MAAQ,KAAK,QAAQ,KAC5C,OAAO,KACX,IAAIC,EAAQ,KAAK,QAAQ,QAAQD,EAAG,QAASA,EAAG,KAAK,EAIjDzB,EAAO,KAAK,QAAQ,SAAWyB,EAAG,WAAW,IAAI,OAAS,OACxD,KAAK,IAAIA,EAAG,QAAQ,OAAO,KAAK,QAAQ,OAAO,EAAGC,EAAM,SAAS,EAAE,EACzE,OAAKA,EAAM,KAAK,GAAqB1B,CAAI,GACrC0B,EAAM,SAAS,EACZ,IAAIH,EAAcG,CAAK,CAClC,CACA,OAAO,KAAKnC,EAAO,CACf,IAAIoC,EAAO,KAAK,IAAI,IAA8BpC,EAAM,IAAI,MAAM,EAC9DqC,EAAaxC,GAAa,OAAOG,EAAM,MAAMsC,EAAQ,EAAE,OAAQtC,EAAO,CAAE,KAAM,EAAG,GAAIoC,CAAK,CAAC,EAC/F,OAAKC,EAAW,KAAK,GAAqBD,CAAI,GAC1CC,EAAW,SAAS,EACjB,IAAIL,EAAcK,CAAU,CACvC,CACJ,EACAE,GAAS,MAAqBC,GAAW,OAAO,CAC5C,OAAQT,GAAc,KACtB,OAAOU,EAAOP,EAAI,CACd,QAASQ,KAAKR,EAAG,QACb,GAAIQ,EAAE,GAAGH,GAAS,QAAQ,EACtB,OAAOG,EAAE,MACjB,OAAIR,EAAG,WAAW,MAAMI,EAAQ,GAAKJ,EAAG,MAAM,MAAMI,EAAQ,EACjDP,GAAc,KAAKG,EAAG,KAAK,EAC/BO,EAAM,MAAMP,CAAE,CACzB,CACJ,CAAC,EACD,IAAIS,GAAcrD,EAACsD,GAAa,CAC5B,IAAIC,EAAU,WAAW,IAAMD,EAAS,EAAG,GAAuB,EAClE,MAAO,IAAM,aAAaC,CAAO,CACrC,EAHkB,eAId,OAAO,oBAAuB,MAC9BF,GAAcrD,EAACsD,GAAa,CACxB,IAAIE,EAAO,GAAID,EAAU,WAAW,IAAM,CACtCC,EAAO,oBAAoBF,EAAU,CAAE,QAAS,GAAkD,CAAC,CACvG,EAAG,GAAuB,EAC1B,MAAO,IAAME,EAAO,EAAI,aAAaD,CAAO,EAAI,mBAAmBC,CAAI,CAC3E,EALc,gBAMlB,IAAMC,GAAiB,OAAO,UAAa,MAAiB,GAAArC,GAAK,UAAU,cAAgB,MAAQA,KAAO,SAAkBA,GAAG,gBACzH,IAAM,UAAU,WAAW,eAAe,EAAI,KAC9CsC,GAA2BC,GAAW,UAAU,KAAkB,CA5jBxE,MA4jBwE,CAAA3D,EAAA,oBACpE,YAAY4D,EAAM,CACd,KAAK,KAAOA,EACZ,KAAK,QAAU,KACf,KAAK,cAAgB,EAErB,KAAK,SAAW,GAEhB,KAAK,YAAc,GACnB,KAAK,KAAO,KAAK,KAAK,KAAK,IAAI,EAC/B,KAAK,aAAa,CACtB,CACA,OAAOC,EAAQ,CACX,IAAIvB,EAAK,KAAK,KAAK,MAAM,MAAMW,GAAS,KAAK,EAAE,SAC3CX,EAAG,eAAeuB,EAAO,KAAK,QAAQ,GAAK,KAAK,KAAK,SAAS,GAAKvB,EAAG,UACtE,KAAK,aAAa,GAClBuB,EAAO,YAAcA,EAAO,gBACxB,KAAK,KAAK,WACV,KAAK,aAAe,IACxB,KAAK,aAAa,GAEtB,KAAK,mBAAmBvB,CAAE,CAC9B,CACA,cAAe,CACX,GAAI,KAAK,QACL,OACJ,GAAI,CAAE,MAAA5B,CAAM,EAAI,KAAK,KAAMoD,EAAQpD,EAAM,MAAMuC,GAAS,KAAK,GACzDa,EAAM,MAAQA,EAAM,QAAQ,MAAQ,CAACA,EAAM,QAAQ,OAAOpD,EAAM,IAAI,MAAM,KAC1E,KAAK,QAAU2C,GAAY,KAAK,IAAI,EAC5C,CACA,KAAKU,EAAU,CACX,KAAK,QAAU,KACf,IAAIC,EAAM,KAAK,IAAI,EAKnB,GAJI,KAAK,SAAWA,IAAQ,KAAK,SAAW,GAAK,KAAK,KAAK,YACvD,KAAK,SAAWA,EAAM,IACtB,KAAK,YAAc,KAEnB,KAAK,aAAe,EACpB,OACJ,GAAI,CAAE,MAAAtD,EAAO,SAAU,CAAE,GAAIoC,CAAK,CAAE,EAAI,KAAK,KAAMgB,EAAQpD,EAAM,MAAMuC,GAAS,KAAK,EACrF,GAAIa,EAAM,MAAQA,EAAM,QAAQ,MAAQA,EAAM,QAAQ,OAAOhB,EAAO,GAA+B,EAC/F,OACJ,IAAIzB,EAAU,KAAK,IAAI,EAAI,KAAK,IAAI,KAAK,YAAa,IAAsB0C,GAAY,CAACN,GAAiB,KAAK,IAAI,GAAwBM,EAAS,cAAc,EAAI,CAAC,EAAI,GAAG,EAC1KE,EAAgBH,EAAM,QAAQ,QAAUhB,GAAQpC,EAAM,IAAI,OAASoC,EAAO,IAC1ExB,EAAOwC,EAAM,QAAQ,KAAK,IACnBL,IAAkBA,GAAe,GAAK,KAAK,IAAI,EAAIpC,EAC3DyB,GAAQmB,EAAgB,EAAI,IAAgC,EAC/D,KAAK,aAAe,KAAK,IAAI,EAAID,GAC7B1C,GAAQ,KAAK,aAAe,KAC5BwC,EAAM,QAAQ,SAAS,EACvB,KAAK,KAAK,SAAS,CAAE,QAASb,GAAS,SAAS,GAAG,IAAIR,GAAcqB,EAAM,OAAO,CAAC,CAAE,CAAC,GAEtF,KAAK,YAAc,GAAK,EAAExC,GAAQ,CAAC2C,IACnC,KAAK,aAAa,EACtB,KAAK,mBAAmBH,EAAM,OAAO,CACzC,CACA,mBAAmBxB,EAAI,CACfA,EAAG,aACH,KAAK,gBACLA,EAAG,WACE,KAAK,IAAM,KAAK,aAAa,CAAC,EAC9B,MAAM4B,GAAOC,GAAa,KAAK,KAAK,MAAOD,CAAG,CAAC,EAC/C,KAAK,IAAM,KAAK,eAAe,EACpC5B,EAAG,WAAa,KAExB,CACA,SAAU,CACF,KAAK,SACL,KAAK,QAAQ,CACrB,CACA,WAAY,CACR,MAAO,CAAC,EAAE,KAAK,SAAW,KAAK,cAAgB,EACnD,CACJ,EAAG,CACC,cAAe,CAAE,OAAQ,CAAE,KAAK,aAAa,CAAG,CAAE,CACtD,CAAC,EAOKU,GAAwBoB,EAAM,OAAO,CACvC,QAAQC,EAAW,CAAE,OAAOA,EAAU,OAASA,EAAU,CAAC,EAAI,IAAM,EACpE,QAASrE,EAAAgD,GAAY,CACjBC,GAAS,MACTS,GACAY,EAAW,kBAAkB,QAAQ,CAACtB,CAAQ,EAAGtC,GAAS,CACtD,IAAI6D,EAAO7D,EAAM,MAAMsC,CAAQ,EAC/B,OAAOuB,GAAQA,EAAK,KAAO,CAAE,gBAAiBA,EAAK,IAAK,EAAI,CAAC,CACjE,CAAC,CACL,EAPS,UAQb,CAAC,EAQKC,GAAN,KAAsB,CAhqBtB,MAgqBsB,CAAAxE,EAAA,wBAIlB,YAIAgD,EAOAyB,EAAU,CAAC,EAAG,CACV,KAAK,SAAWzB,EAChB,KAAK,QAAUyB,EACf,KAAK,UAAY,CAACzB,EAAUyB,CAAO,CACvC,CACJ,EA4GA,IAAMC,GAA6BC,EAAM,OAAO,EAM1CC,GAA0BD,EAAM,OAAO,CACzC,QAASE,EAAAC,GAAU,CACf,GAAI,CAACA,EAAO,OACR,MAAO,KACX,IAAIC,EAAOD,EAAO,CAAC,EACnB,GAAI,CAACC,GAAQ,KAAK,KAAKA,CAAI,GAAK,MAAM,KAAKA,CAAI,EAAE,KAAKC,GAAKA,GAAKD,EAAK,CAAC,CAAC,EACnE,MAAM,IAAI,MAAM,wBAA0B,KAAK,UAAUD,EAAO,CAAC,CAAC,CAAC,EACvE,OAAOC,CACX,EAPS,UAQb,CAAC,EAOD,SAASE,GAAcC,EAAO,CAC1B,IAAIH,EAAOG,EAAM,MAAMN,EAAU,EACjC,OAAOG,EAAK,WAAW,CAAC,GAAK,EAAIG,EAAM,QAAUH,EAAK,OAASA,EAAK,MACxE,CAHSF,EAAAI,GAAA,iBAUT,SAASE,GAAaD,EAAOE,EAAM,CAC/B,IAAIC,EAAS,GAAIC,EAAKJ,EAAM,QAASK,EAAKL,EAAM,MAAMN,EAAU,EAAE,CAAC,EACnE,GAAIW,GAAM,IAAM,CACZ,KAAOH,GAAQE,GACXD,GAAU,IACVD,GAAQE,EAEZC,EAAK,GACT,CACA,QAASC,EAAI,EAAGA,EAAIJ,EAAMI,IACtBH,GAAUE,EACd,OAAOF,CACX,CAZSR,EAAAM,GAAA,gBAsBT,SAASM,GAAeC,EAASC,EAAK,CAC9BD,aAAmBE,IACnBF,EAAU,IAAIG,GAAcH,CAAO,GACvC,QAASI,KAAWJ,EAAQ,MAAM,MAAMhB,EAAa,EAAG,CACpD,IAAIW,EAASS,EAAQJ,EAASC,CAAG,EACjC,GAAIN,IAAW,OACX,OAAOA,CACf,CACA,IAAIU,EAAOC,EAAWN,EAAQ,KAAK,EACnC,OAAOK,EAAK,QAAUJ,EAAMM,GAAkBP,EAASK,EAAMJ,CAAG,EAAI,IACxE,CAVSd,EAAAY,GAAA,kBA0CT,IAAMS,GAAN,KAAoB,CAh4BpB,MAg4BoB,CAAAC,EAAA,sBAIhB,YAIAC,EAIAC,EAAU,CAAC,EAAG,CACV,KAAK,MAAQD,EACb,KAAK,QAAUC,EACf,KAAK,KAAOC,GAAcF,CAAK,CACnC,CASA,OAAOG,EAAKC,EAAO,EAAG,CAClB,IAAIC,EAAO,KAAK,MAAM,IAAI,OAAOF,CAAG,EAChC,CAAE,cAAAG,EAAe,oBAAAC,CAAoB,EAAI,KAAK,QAClD,OAAID,GAAiB,MAAQA,GAAiBD,EAAK,MAAQC,GAAiBD,EAAK,GACzEE,GAAuBD,GAAiBH,EACjC,CAAE,KAAM,GAAI,KAAMA,CAAI,GACxBC,EAAO,EAAIE,EAAgBH,EAAMG,GAAiBH,GAChD,CAAE,KAAME,EAAK,KAAK,MAAMC,EAAgBD,EAAK,IAAI,EAAG,KAAMC,CAAc,EAExE,CAAE,KAAMD,EAAK,KAAK,MAAM,EAAGC,EAAgBD,EAAK,IAAI,EAAG,KAAMA,EAAK,IAAK,EAE/EA,CACX,CAKA,aAAaF,EAAKC,EAAO,EAAG,CACxB,GAAI,KAAK,QAAQ,qBAAuBD,GAAO,KAAK,QAAQ,cACxD,MAAO,GACX,GAAI,CAAE,KAAAK,EAAM,KAAAC,CAAK,EAAI,KAAK,OAAON,EAAKC,CAAI,EAC1C,OAAOI,EAAK,MAAML,EAAMM,EAAM,KAAK,IAAID,EAAK,OAAQL,EAAM,IAAMM,CAAI,CAAC,CACzE,CAIA,OAAON,EAAKC,EAAO,EAAG,CAClB,GAAI,CAAE,KAAAI,EAAM,KAAAC,CAAK,EAAI,KAAK,OAAON,EAAKC,CAAI,EACtCM,EAAS,KAAK,YAAYF,EAAML,EAAMM,CAAI,EAC1CE,EAAW,KAAK,QAAQ,oBAAsB,KAAK,QAAQ,oBAAoBF,CAAI,EAAI,GAC3F,OAAIE,EAAW,KACXD,GAAUC,EAAW,KAAK,YAAYH,EAAMA,EAAK,OAAO,MAAM,CAAC,GAC5DE,CACX,CAKA,YAAYL,EAAMF,EAAME,EAAK,OAAQ,CACjC,OAAOO,GAAYP,EAAM,KAAK,MAAM,QAASF,CAAG,CACpD,CAIA,WAAWA,EAAKC,EAAO,EAAG,CACtB,GAAI,CAAE,KAAAI,EAAM,KAAAC,CAAK,EAAI,KAAK,OAAON,EAAKC,CAAI,EACtCO,EAAW,KAAK,QAAQ,oBAC5B,GAAIA,EAAU,CACV,IAAIE,EAAYF,EAASF,CAAI,EAC7B,GAAII,EAAY,GACZ,OAAOA,CACf,CACA,OAAO,KAAK,YAAYL,EAAMA,EAAK,OAAO,MAAM,CAAC,CACrD,CAMA,IAAI,gBAAiB,CACjB,OAAO,KAAK,QAAQ,eAAiB,IACzC,CACJ,EAQMM,GAA8B,IAAIC,EAExC,SAASC,GAAkBC,EAAIC,EAAKf,EAAK,CACrC,IAAIgB,EAAQD,EAAI,aAAaf,CAAG,EAC5BiB,EAAQF,EAAI,aAAaf,EAAK,EAAE,EAAE,QAAQA,EAAK,CAAC,EAAE,2BAA2BA,CAAG,EACpF,GAAIiB,GAASD,EAAM,KAAM,CACrB,IAAIE,EAAM,CAAC,EACX,QAASC,EAAMF,EAAOE,GAAO,EAAEA,EAAI,KAAOH,EAAM,KAAK,MAAQG,EAAI,GAAKH,EAAM,KAAK,IAC7EG,EAAI,MAAQH,EAAM,KAAK,MAAQG,EAAI,MAAQH,EAAM,KAAK,MAAOG,EAAMA,EAAI,OACvED,EAAI,KAAKC,CAAG,EAChB,QAASC,EAAIF,EAAI,OAAS,EAAGE,GAAK,EAAGA,IACjCJ,EAAQ,CAAE,KAAME,EAAIE,CAAC,EAAG,KAAMJ,CAAM,CAC5C,CACA,OAAOK,GAAUL,EAAOF,EAAId,CAAG,CACnC,CAZSJ,EAAAiB,GAAA,qBAaT,SAASQ,GAAUL,EAAOF,EAAId,EAAK,CAC/B,QAASmB,EAAMH,EAAOG,EAAKA,EAAMA,EAAI,KAAM,CACvC,IAAIG,EAAWC,GAAeJ,EAAI,IAAI,EACtC,GAAIG,EACA,OAAOA,EAASE,GAAkB,OAAOV,EAAId,EAAKmB,CAAG,CAAC,CAC9D,CACA,MAAO,EACX,CAPSvB,EAAAyB,GAAA,aAQT,SAASI,GAAaX,EAAI,CACtB,OAAOA,EAAG,KAAOA,EAAG,QAAQ,eAAiBA,EAAG,QAAQ,mBAC5D,CAFSlB,EAAA6B,GAAA,gBAGT,SAASF,GAAeG,EAAM,CAC1B,IAAIJ,EAAWI,EAAK,KAAK,KAAKf,EAAc,EAC5C,GAAIW,EACA,OAAOA,EACX,IAAIK,EAAQD,EAAK,WAAYE,EAC7B,GAAID,IAAUC,EAAQD,EAAM,KAAK,KAAKf,EAAS,QAAQ,GAAI,CACvD,IAAIiB,EAAOH,EAAK,UAAWI,EAASD,GAAQD,EAAM,QAAQC,EAAK,IAAI,EAAI,GACvE,OAAOf,GAAMiB,GAAkBjB,EAAI,GAAM,EAAG,OAAWgB,GAAU,CAACL,GAAaX,CAAE,EAAIe,EAAK,KAAO,MAAS,CAC9G,CACA,OAAOH,EAAK,QAAU,KAAOM,GAAY,IAC7C,CAVSpC,EAAA2B,GAAA,kBAWT,SAASS,IAAY,CAAE,MAAO,EAAG,CAAxBpC,EAAAoC,GAAA,aAKT,IAAMR,GAAN,MAAMS,UAA0BtC,EAAc,CAzgC9C,MAygC8C,CAAAC,EAAA,0BAC1C,YAAYsC,EAIZlC,EAIAmC,EAAS,CACL,MAAMD,EAAK,MAAOA,EAAK,OAAO,EAC9B,KAAK,KAAOA,EACZ,KAAK,IAAMlC,EACX,KAAK,QAAUmC,CACnB,CAKA,IAAI,MAAO,CAAE,OAAO,KAAK,QAAQ,IAAM,CAIvC,OAAO,OAAOD,EAAMlC,EAAKmC,EAAS,CAC9B,OAAO,IAAIF,EAAkBC,EAAMlC,EAAKmC,CAAO,CACnD,CAKA,IAAI,WAAY,CACZ,OAAO,KAAK,aAAa,KAAK,GAAG,CACrC,CAQA,IAAI,YAAa,CACb,OAAO,KAAK,cAAc,KAAK,IAAI,CACvC,CAKA,cAAcC,EAAM,CAChB,IAAIlC,EAAO,KAAK,MAAM,IAAI,OAAOkC,EAAK,IAAI,EAE1C,OAAS,CACL,IAAIC,EAAUD,EAAK,QAAQlC,EAAK,IAAI,EACpC,KAAOmC,EAAQ,QAAUA,EAAQ,OAAO,MAAQA,EAAQ,MACpDA,EAAUA,EAAQ,OACtB,GAAIC,GAASD,EAASD,CAAI,EACtB,MACJlC,EAAO,KAAK,MAAM,IAAI,OAAOmC,EAAQ,IAAI,CAC7C,CACA,OAAO,KAAK,WAAWnC,EAAK,IAAI,CACpC,CAKA,UAAW,CACP,OAAOmB,GAAU,KAAK,QAAQ,KAAM,KAAK,KAAM,KAAK,GAAG,CAC3D,CACJ,EACA,SAASiB,GAASC,EAAQC,EAAI,CAC1B,QAASrB,EAAMqB,EAAIrB,EAAKA,EAAMA,EAAI,OAC9B,GAAIoB,GAAUpB,EACV,MAAO,GACf,MAAO,EACX,CALSvB,EAAA0C,GAAA,YAST,SAASG,GAAiBN,EAAS,CAC/B,IAAIT,EAAOS,EAAQ,KACfO,EAAYhB,EAAK,WAAWA,EAAK,IAAI,EAAGG,EAAOH,EAAK,UACxD,GAAI,CAACgB,EACD,OAAO,KACX,IAAIC,EAAMR,EAAQ,QAAQ,cACtBS,EAAWT,EAAQ,MAAM,IAAI,OAAOO,EAAU,IAAI,EAClDG,EAAUF,GAAO,MAAQA,GAAOC,EAAS,KAAOA,EAAS,GAAK,KAAK,IAAIA,EAAS,GAAID,CAAG,EAC3F,QAAS3C,EAAM0C,EAAU,KAAM,CAC3B,IAAII,EAAOpB,EAAK,WAAW1B,CAAG,EAC9B,GAAI,CAAC8C,GAAQA,GAAQjB,EACjB,OAAO,KACX,GAAI,CAACiB,EAAK,KAAK,UAAW,CACtB,GAAIA,EAAK,MAAQD,EACb,OAAO,KACX,IAAIE,EAAQ,MAAM,KAAKH,EAAS,KAAK,MAAMF,EAAU,GAAKE,EAAS,IAAI,CAAC,EAAE,CAAC,EAAE,OAC7E,MAAO,CAAE,KAAMF,EAAU,KAAM,GAAIA,EAAU,GAAKK,CAAM,CAC5D,CACA/C,EAAM8C,EAAK,EACf,CACJ,CApBSlD,EAAA6C,GAAA,oBAgCT,SAASO,GAAgB,CAAE,QAAAC,EAAS,MAAAC,EAAQ,GAAM,MAAAC,EAAQ,CAAE,EAAG,CAC3D,OAAQhB,GAAYJ,GAAkBI,EAASe,EAAOC,EAAOF,CAAO,CACxE,CAFSrD,EAAAoD,GAAA,mBAGT,SAASjB,GAAkBI,EAASe,EAAOC,EAAOF,EAASG,EAAU,CACjE,IAAIC,EAAQlB,EAAQ,UAAWY,EAAQM,EAAM,MAAM,MAAM,EAAE,CAAC,EAAE,OAC1DvB,EAASmB,GAAWI,EAAM,MAAMN,EAAOA,EAAQE,EAAQ,MAAM,GAAKA,GAAWG,GAAYjB,EAAQ,IAAMY,EACvGO,EAAUJ,EAAQT,GAAiBN,CAAO,EAAI,KAClD,OAAImB,EACOxB,EAASK,EAAQ,OAAOmB,EAAQ,IAAI,EAAInB,EAAQ,OAAOmB,EAAQ,EAAE,EACrEnB,EAAQ,YAAcL,EAAS,EAAIK,EAAQ,KAAOgB,EAC7D,CAPSvD,EAAAmC,GAAA,qBAYT,IAAMwB,GAAa3D,EAACuC,GAAYA,EAAQ,WAArB,cASnB,SAASqB,GAAgB,CAAE,OAAAC,EAAQ,MAAAN,EAAQ,CAAE,EAAI,CAAC,EAAG,CACjD,OAAQhB,GAAY,CAChB,IAAIuB,EAAcD,GAAUA,EAAO,KAAKtB,EAAQ,SAAS,EACzD,OAAOA,EAAQ,YAAcuB,EAAc,EAAIP,EAAQhB,EAAQ,KACnE,CACJ,CALSvC,EAAA4D,GAAA,mBAMT,IAAMG,GAAmB,IAczB,SAASC,IAAgB,CACrB,OAAOC,EAAY,kBAAkB,GAAGC,GAAM,CAC1C,GAAI,CAACA,EAAG,YAAc,CAACA,EAAG,YAAY,YAAY,GAAK,CAACA,EAAG,YAAY,gBAAgB,EACnF,OAAOA,EACX,IAAIC,EAAQD,EAAG,WAAW,eAAe,gBAAiBA,EAAG,WAAW,UAAU,KAAK,IAAI,EAC3F,GAAI,CAACC,EAAM,OACP,OAAOD,EACX,IAAIE,EAAMF,EAAG,OAAQ,CAAE,KAAAG,CAAK,EAAIH,EAAG,aAAa,KAAM5D,EAAO8D,EAAI,OAAOC,CAAI,EAC5E,GAAIA,EAAO/D,EAAK,KAAOyD,GACnB,OAAOG,EACX,IAAII,EAAYF,EAAI,YAAY9D,EAAK,KAAM+D,CAAI,EAC/C,GAAI,CAACF,EAAM,KAAKI,GAAKA,EAAE,KAAKD,CAAS,CAAC,EAClC,OAAOJ,EACX,GAAI,CAAE,MAAAjE,CAAM,EAAIiE,EAAIjC,EAAO,GAAIuC,EAAU,CAAC,EAC1C,OAAS,CAAE,KAAAH,CAAK,IAAKpE,EAAM,UAAU,OAAQ,CACzC,IAAIK,EAAOL,EAAM,IAAI,OAAOoE,CAAI,EAChC,GAAI/D,EAAK,MAAQ2B,EACb,SACJA,EAAO3B,EAAK,KACZ,IAAImE,EAASC,GAAezE,EAAOK,EAAK,IAAI,EAC5C,GAAImE,GAAU,KACV,SACJ,IAAIlD,EAAM,OAAO,KAAKjB,EAAK,IAAI,EAAE,CAAC,EAC9BqE,EAAOC,GAAa3E,EAAOwE,CAAM,EACjClD,GAAOoD,GACPH,EAAQ,KAAK,CAAE,KAAMlE,EAAK,KAAM,GAAIA,EAAK,KAAOiB,EAAI,OAAQ,OAAQoD,CAAK,CAAC,CAClF,CACA,OAAOH,EAAQ,OAAS,CAACN,EAAI,CAAE,QAAAM,EAAS,WAAY,EAAK,CAAC,EAAIN,CAClE,CAAC,CACL,CA7BSlE,EAAAgE,GAAA,iBAqCT,IAAMa,GAA2BC,EAAM,OAAO,EAOxCC,GAA4B,IAAI/D,EAMtC,SAASgE,GAAWxC,EAAM,CACtB,IAAIT,EAAQS,EAAK,WAAYP,EAAOO,EAAK,UACzC,OAAOT,GAASA,EAAM,GAAKE,EAAK,KAAO,CAAE,KAAMF,EAAM,GAAI,GAAIE,EAAK,KAAK,QAAUO,EAAK,GAAKP,EAAK,IAAK,EAAI,IAC7G,CAHSjC,EAAAgF,GAAA,cAIT,SAASC,GAAchF,EAAOiF,EAAOC,EAAK,CACtC,IAAIrD,EAAOsD,EAAWnF,CAAK,EAC3B,GAAI6B,EAAK,OAASqD,EACd,OAAO,KACX,IAAI/D,EAAQU,EAAK,aAAaqD,EAAK,CAAC,EAChCE,EAAQ,KACZ,QAASC,EAAOlE,EAAOkE,EAAMA,EAAOA,EAAK,KAAM,CAC3C,IAAI/D,EAAM+D,EAAK,KACf,GAAI/D,EAAI,IAAM4D,GAAO5D,EAAI,KAAO4D,EAC5B,SACJ,GAAIE,GAAS9D,EAAI,KAAO2D,EACpB,MACJ,IAAIK,EAAOhE,EAAI,KAAK,KAAKwD,EAAY,EACrC,GAAIQ,IAAShE,EAAI,GAAKO,EAAK,OAAS,IAAMA,EAAK,QAAU7B,EAAM,IAAI,QAAU,CAACuF,GAAajE,CAAG,GAAI,CAC9F,IAAIkE,EAAQF,EAAKhE,EAAKtB,CAAK,EACvBwF,GAASA,EAAM,MAAQN,GAAOM,EAAM,MAAQP,GAASO,EAAM,GAAKN,IAChEE,EAAQI,EAChB,CACJ,CACA,OAAOJ,CACX,CApBSrF,EAAAiF,GAAA,iBAqBT,SAASO,GAAahD,EAAM,CACxB,IAAIkD,EAAKlD,EAAK,UACd,OAAOkD,GAAMA,EAAG,IAAMlD,EAAK,IAAMkD,EAAG,KAAK,OAC7C,CAHS1F,EAAAwF,GAAA,gBAYT,SAASG,GAAS1F,EAAOqE,EAAWrB,EAAS,CACzC,QAAS2C,KAAW3F,EAAM,MAAM4E,EAAW,EAAG,CAC1C,IAAIlE,EAASiF,EAAQ3F,EAAOqE,EAAWrB,CAAO,EAC9C,GAAItC,EACA,OAAOA,CACf,CACA,OAAOsE,GAAchF,EAAOqE,EAAWrB,CAAO,CAClD,CAPSjD,EAAA2F,GAAA,YAQT,SAASE,GAASC,EAAOC,EAAS,CAC9B,IAAIrF,EAAOqF,EAAQ,OAAOD,EAAM,KAAM,CAAC,EAAGE,EAAKD,EAAQ,OAAOD,EAAM,GAAI,EAAE,EAC1E,OAAOpF,GAAQsF,EAAK,OAAY,CAAE,KAAAtF,EAAM,GAAAsF,CAAG,CAC/C,CAHShG,EAAA6F,GAAA,YAWT,IAAMI,GAA0BC,EAAY,OAAO,CAAE,IAAKL,EAAS,CAAC,EAI9DM,GAA4BD,EAAY,OAAO,CAAE,IAAKL,EAAS,CAAC,EACtE,SAASO,GAAcC,EAAM,CACzB,IAAIC,EAAQ,CAAC,EACb,OAAS,CAAE,KAAAjC,CAAK,IAAKgC,EAAK,MAAM,UAAU,OAClCC,EAAM,KAAKC,GAAKA,EAAE,MAAQlC,GAAQkC,EAAE,IAAMlC,CAAI,GAElDiC,EAAM,KAAKD,EAAK,YAAYhC,CAAI,CAAC,EAErC,OAAOiC,CACX,CARStG,EAAAoG,GAAA,iBAgBT,IAAMI,GAAyBC,GAAW,OAAO,CAC7C,QAAS,CACL,OAAOC,EAAW,IACtB,EACA,OAAOC,EAAQzC,EAAI,CACXA,EAAG,YAAY,QAAQ,GACvBA,EAAG,QAAQ,kBAAkB,CAAC0C,EAAOC,IAAQF,EAASG,GAAkBH,EAAQC,EAAOC,CAAG,CAAC,EAC/FF,EAASA,EAAO,IAAIzC,EAAG,OAAO,EAC9B,QAAS6C,KAAK7C,EAAG,QACb,GAAI6C,EAAE,GAAGd,EAAU,GAAK,CAACe,GAAWL,EAAQI,EAAE,MAAM,KAAMA,EAAE,MAAM,EAAE,EAAG,CACnE,GAAI,CAAE,mBAAAE,CAAmB,EAAI/C,EAAG,MAAM,MAAMgD,EAAU,EAClDC,EAAUF,EACVP,EAAW,QAAQ,CAAE,OAAQ,IAAIU,GAAmBH,EAAmB/C,EAAG,MAAO6C,EAAE,KAAK,CAAC,CAAE,CAAC,EAD7DM,GAEnCV,EAASA,EAAO,OAAO,CAAE,IAAK,CAACQ,EAAO,MAAMJ,EAAE,MAAM,KAAMA,EAAE,MAAM,EAAE,CAAC,CAAE,CAAC,CAC5E,MACSA,EAAE,GAAGZ,EAAY,IACtBQ,EAASA,EAAO,OAAO,CAAE,OAAQ3G,EAAA,CAACU,EAAMsF,IAAOe,EAAE,MAAM,MAAQrG,GAAQqG,EAAE,MAAM,IAAMf,EAApD,UAC7B,WAAYe,EAAE,MAAM,KAAM,SAAUA,EAAE,MAAM,EAAG,CAAC,GAI5D,OAAI7C,EAAG,YACHyC,EAASG,GAAkBH,EAAQzC,EAAG,UAAU,KAAK,IAAI,GACtDyC,CACX,EACA,QAAS3G,EAAAsH,GAAKC,EAAW,YAAY,KAAKD,CAAC,EAAlC,WACT,OAAOX,EAAQ1G,EAAO,CAClB,IAAIuH,EAAS,CAAC,EACd,OAAAb,EAAO,QAAQ,EAAG1G,EAAM,IAAI,OAAQ,CAACS,EAAMsF,IAAO,CAAEwB,EAAO,KAAK9G,EAAMsF,CAAE,CAAG,CAAC,EACrEwB,CACX,EACA,SAAS/B,EAAO,CACZ,GAAI,CAAC,MAAM,QAAQA,CAAK,GAAKA,EAAM,OAAS,EACxC,MAAM,IAAI,WAAW,6BAA6B,EACtD,IAAI+B,EAAS,CAAC,EACd,QAAShG,EAAI,EAAGA,EAAIiE,EAAM,QAAS,CAC/B,IAAI/E,EAAO+E,EAAMjE,GAAG,EAAGwE,EAAKP,EAAMjE,GAAG,EACrC,GAAI,OAAOd,GAAQ,UAAY,OAAOsF,GAAM,SACxC,MAAM,IAAI,WAAW,6BAA6B,EACtDwB,EAAO,KAAKH,GAAW,MAAM3G,EAAMsF,CAAE,CAAC,CAC1C,CACA,OAAOU,EAAW,IAAIc,EAAQ,EAAI,CACtC,CACJ,CAAC,EACD,SAASV,GAAkBH,EAAQjG,EAAMsF,EAAKtF,EAAM,CAChD,IAAI+G,EAAU,GACd,OAAAd,EAAO,QAAQjG,EAAMsF,EAAI,CAAC0B,EAAGC,IAAM,CAAMD,EAAI1B,GAAM2B,EAAIjH,IACnD+G,EAAU,GAAM,CAAC,EACbA,EAAmBd,EAAO,OAAO,CACrC,WAAYjG,EACZ,SAAUsF,EACV,OAAQhG,EAAA,CAAC0H,EAAGC,IAAMD,GAAK1B,GAAM2B,GAAKjH,EAA1B,SACZ,CAAC,EAJiBiG,CAKtB,CATS3G,EAAA8G,GAAA,qBAiBT,SAASc,GAASC,EAAOC,EAAMC,EAAI,CAC/B,IAAIC,EACJ,IAAIC,EAAQ,KACZ,OAACD,EAAKH,EAAM,MAAMK,GAAW,EAAK,KAAO,MAAQF,IAAO,QAAkBA,EAAG,QAAQF,EAAMC,EAAI,CAACD,EAAMC,IAAO,EACrG,CAACE,GAASA,EAAM,KAAOH,KACvBG,EAAQ,CAAE,KAAAH,EAAM,GAAAC,CAAG,EAC3B,CAAC,EACME,CACX,CARSE,EAAAP,GAAA,YAST,SAASQ,GAAWC,EAAQP,EAAMC,EAAI,CAClC,IAAIE,EAAQ,GACZ,OAAAI,EAAO,QAAQP,EAAMA,EAAM,CAACQ,EAAGC,IAAM,CAAMD,GAAKR,GAAQS,GAAKR,IACzDE,EAAQ,GAAM,CAAC,EACZA,CACX,CALSE,EAAAC,GAAA,cAMT,SAASI,GAAYX,EAAOY,EAAO,CAC/B,OAAOZ,EAAM,MAAMK,GAAW,EAAK,EAAIO,EAAQA,EAAM,OAAOC,EAAY,aAAa,GAAGC,GAAY,CAAC,CAAC,CAC1G,CAFSR,EAAAK,GAAA,eAMT,IAAMI,GAAWT,EAAAU,GAAQ,CACrB,QAASC,KAAQC,GAAcF,CAAI,EAAG,CAClC,IAAIG,EAAQC,GAASJ,EAAK,MAAOC,EAAK,KAAMA,EAAK,EAAE,EACnD,GAAIE,EACA,OAAAH,EAAK,SAAS,CAAE,QAASL,GAAYK,EAAK,MAAO,CAACK,GAAW,GAAGF,CAAK,EAAGG,GAAaN,EAAMG,CAAK,CAAC,CAAC,CAAE,CAAC,EAC9F,EAEf,CACA,MAAO,EACX,EATiB,YAaXI,GAAajB,EAAAU,GAAQ,CACvB,GAAI,CAACA,EAAK,MAAM,MAAMX,GAAW,EAAK,EAClC,MAAO,GACX,IAAImB,EAAU,CAAC,EACf,QAASP,KAAQC,GAAcF,CAAI,EAAG,CAClC,IAAIR,EAAST,GAASiB,EAAK,MAAOC,EAAK,KAAMA,EAAK,EAAE,EAChDT,GACAgB,EAAQ,KAAKC,GAAa,GAAGjB,CAAM,EAAGc,GAAaN,EAAMR,EAAQ,EAAK,CAAC,CAC/E,CACA,OAAIgB,EAAQ,QACRR,EAAK,SAAS,CAAE,QAAAQ,CAAQ,CAAC,EACtBA,EAAQ,OAAS,CAC5B,EAZmB,cAanB,SAASF,GAAaN,EAAMG,EAAOO,EAAO,GAAM,CAC5C,IAAIC,EAAWX,EAAK,MAAM,IAAI,OAAOG,EAAM,IAAI,EAAE,OAAQS,EAASZ,EAAK,MAAM,IAAI,OAAOG,EAAM,EAAE,EAAE,OAClG,OAAOU,EAAW,SAAS,GAAG,GAAGb,EAAK,MAAM,OAAOU,EAAO,eAAiB,gBAAgB,CAAC,IAAIC,CAAQ,IAAIX,EAAK,MAAM,OAAO,IAAI,CAAC,IAAIY,CAAM,GAAG,CACpJ,CAHStB,EAAAgB,GAAA,gBAaT,IAAMQ,GAAUxB,EAAAU,GAAQ,CACpB,GAAI,CAAE,MAAAhB,CAAM,EAAIgB,EAAMQ,EAAU,CAAC,EACjC,QAASO,EAAM,EAAGA,EAAM/B,EAAM,IAAI,QAAS,CACvC,IAAIiB,EAAOD,EAAK,YAAYe,CAAG,EAAGZ,EAAQC,GAASpB,EAAOiB,EAAK,KAAMA,EAAK,EAAE,EACxEE,GACAK,EAAQ,KAAKH,GAAW,GAAGF,CAAK,CAAC,EACrCY,GAAOZ,EAAQH,EAAK,YAAYG,EAAM,EAAE,EAAIF,GAAM,GAAK,CAC3D,CACA,OAAIO,EAAQ,QACRR,EAAK,SAAS,CAAE,QAASL,GAAYK,EAAK,MAAOQ,CAAO,CAAE,CAAC,EACxD,CAAC,CAACA,EAAQ,MACrB,EAXgB,WAeVQ,GAAY1B,EAAAU,GAAQ,CACtB,IAAIiB,EAAQjB,EAAK,MAAM,MAAMX,GAAW,EAAK,EAC7C,GAAI,CAAC4B,GAAS,CAACA,EAAM,KACjB,MAAO,GACX,IAAIT,EAAU,CAAC,EACf,OAAAS,EAAM,QAAQ,EAAGjB,EAAK,MAAM,IAAI,OAAQ,CAACf,EAAMC,IAAO,CAAEsB,EAAQ,KAAKC,GAAa,GAAG,CAAE,KAAAxB,EAAM,GAAAC,CAAG,CAAC,CAAC,CAAG,CAAC,EACtGc,EAAK,SAAS,CAAE,QAAAQ,CAAQ,CAAC,EAClB,EACX,EARkB,aAoDlB,IAAMU,GAAa,CACf,CAAE,IAAK,eAAgB,IAAK,YAAa,IAAKC,EAAS,EACvD,CAAE,IAAK,eAAgB,IAAK,YAAa,IAAKC,EAAW,EACzD,CAAE,IAAK,aAAc,IAAKC,EAAQ,EAClC,CAAE,IAAK,aAAc,IAAKC,EAAU,CACxC,EACMC,GAAgB,CAClB,eAAgB,KAChB,mBAAoB,KACpB,gBAAiB,QACrB,EACMC,GAA0BC,EAAM,OAAO,CACzC,QAAQC,EAAQ,CAAE,OAAOC,GAAcD,EAAQH,EAAa,CAAG,CACnE,CAAC,EAID,SAASK,GAAYC,EAAQ,CACzB,IAAIC,EAAS,CAACC,GAAWC,EAAW,EACpC,OAAIH,GACAC,EAAO,KAAKN,GAAW,GAAGK,CAAM,CAAC,EAC9BC,CACX,CALSG,EAAAL,GAAA,eAMT,SAASM,GAAYC,EAAMC,EAAU,CACjC,GAAI,CAAE,MAAAC,CAAM,EAAIF,EAAMG,EAAOD,EAAM,MAAMb,EAAU,EAC/Ce,EAAUN,EAACO,GAAU,CACrB,IAAIC,EAAON,EAAK,YAAYA,EAAK,SAASK,EAAM,MAAM,CAAC,EACnDE,EAASC,GAASR,EAAK,MAAOM,EAAK,KAAMA,EAAK,EAAE,EAChDC,GACAP,EAAK,SAAS,CAAE,QAASS,GAAa,GAAGF,CAAM,CAAE,CAAC,EACtDF,EAAM,eAAe,CACzB,EANc,WAOd,GAAIF,EAAK,eACL,OAAOA,EAAK,eAAeH,EAAMI,EAASH,CAAQ,EACtD,IAAIS,EAAU,SAAS,cAAc,MAAM,EAC3C,OAAAA,EAAQ,YAAcP,EAAK,gBAC3BO,EAAQ,aAAa,aAAcR,EAAM,OAAO,aAAa,CAAC,EAC9DQ,EAAQ,MAAQR,EAAM,OAAO,QAAQ,EACrCQ,EAAQ,UAAY,qBACpBA,EAAQ,QAAUN,EACXM,CACX,CAlBSZ,EAAAC,GAAA,eAmBT,IAAMY,GAA0BC,EAAW,QAAQ,CAAE,OAAqB,IAAI,cAAcC,EAAW,CAC/F,MAAMb,EAAM,CAAE,OAAOD,GAAYC,EAAM,IAAI,CAAG,CAClD,CAAE,CAAC,EACDc,GAAN,cAAiCD,EAAW,CA1gD5C,MA0gD4C,CAAAf,EAAA,2BACxC,YAAYiB,EAAO,CACf,MAAM,EACN,KAAK,MAAQA,CACjB,CACA,GAAGC,EAAO,CAAE,OAAO,KAAK,OAASA,EAAM,KAAO,CAC9C,MAAMhB,EAAM,CAAE,OAAOD,GAAYC,EAAM,KAAK,KAAK,CAAG,CACxD,EACMiB,GAAqB,CACvB,SAAU,SACV,WAAY,SACZ,UAAW,KACX,iBAAkB,CAAC,EACnB,eAAgBnB,EAAA,IAAM,GAAN,iBACpB,EACMoB,GAAN,cAAyBC,EAAa,CAzhDtC,MAyhDsC,CAAArB,EAAA,mBAClC,YAAYJ,EAAQ0B,EAAM,CACtB,MAAM,EACN,KAAK,OAAS1B,EACd,KAAK,KAAO0B,CAChB,CACA,GAAGJ,EAAO,CAAE,OAAO,KAAK,QAAUA,EAAM,QAAU,KAAK,MAAQA,EAAM,IAAM,CAC3E,MAAMhB,EAAM,CACR,GAAI,KAAK,OAAO,UACZ,OAAO,KAAK,OAAO,UAAU,KAAK,IAAI,EAC1C,IAAIqB,EAAO,SAAS,cAAc,MAAM,EACxC,OAAAA,EAAK,YAAc,KAAK,KAAO,KAAK,OAAO,SAAW,KAAK,OAAO,WAClEA,EAAK,MAAQrB,EAAK,MAAM,OAAO,KAAK,KAAO,YAAc,aAAa,EAC/DqB,CACX,CACJ,EAMA,SAASC,GAAW5B,EAAS,CAAC,EAAG,CAC7B,IAAI6B,EAAa,CAAE,GAAGN,GAAoB,GAAGvB,CAAO,EAChD8B,EAAU,IAAIN,GAAWK,EAAY,EAAI,EAAGE,EAAY,IAAIP,GAAWK,EAAY,EAAK,EACxFG,EAAUC,GAAW,UAAU,KAAM,CACrC,YAAY3B,EAAM,CACd,KAAK,KAAOA,EAAK,SAAS,KAC1B,KAAK,QAAU,KAAK,aAAaA,CAAI,CACzC,CACA,OAAO4B,EAAQ,EACPA,EAAO,YAAcA,EAAO,iBAC5BA,EAAO,WAAW,MAAMC,EAAQ,GAAKD,EAAO,MAAM,MAAMC,EAAQ,GAChED,EAAO,WAAW,MAAMhC,GAAW,EAAK,GAAKgC,EAAO,MAAM,MAAMhC,GAAW,EAAK,GAChFkC,EAAWF,EAAO,UAAU,GAAKE,EAAWF,EAAO,KAAK,GACxDL,EAAW,eAAeK,CAAM,KAChC,KAAK,QAAU,KAAK,aAAaA,EAAO,IAAI,EACpD,CACA,aAAa5B,EAAM,CACf,IAAI+B,EAAU,IAAIC,GAClB,QAAS1B,KAAQN,EAAK,mBAAoB,CACtC,IAAIiC,EAAOzB,GAASR,EAAK,MAAOM,EAAK,KAAMA,EAAK,EAAE,EAAImB,EAChDS,GAASlC,EAAK,MAAOM,EAAK,KAAMA,EAAK,EAAE,EAAIkB,EAAU,KACvDS,GACAF,EAAQ,IAAIzB,EAAK,KAAMA,EAAK,KAAM2B,CAAI,CAC9C,CACA,OAAOF,EAAQ,OAAO,CAC1B,CACJ,CAAC,EACG,CAAE,iBAAAI,CAAiB,EAAIZ,EAC3B,MAAO,CACHG,EACAU,GAAO,CACH,MAAO,gBACP,QAAQpC,EAAM,CAAE,IAAIqC,EAAI,QAASA,EAAKrC,EAAK,OAAO0B,CAAO,KAAO,MAAQW,IAAO,OAAS,OAASA,EAAG,UAAYC,EAAS,KAAO,EAChI,eAAgB,CACZ,OAAO,IAAIpB,GAAWK,EAAY,EAAK,CAC3C,EACA,iBAAkB,CACd,GAAGY,EACH,MAAOrC,EAAA,CAACE,EAAMM,EAAMD,IAAU,CAC1B,GAAI8B,EAAiB,OAASA,EAAiB,MAAMnC,EAAMM,EAAMD,CAAK,EAClE,MAAO,GACX,IAAIE,EAASC,GAASR,EAAK,MAAOM,EAAK,KAAMA,EAAK,EAAE,EACpD,GAAIC,EACA,OAAAP,EAAK,SAAS,CAAE,QAASS,GAAa,GAAGF,CAAM,CAAE,CAAC,EAC3C,GAEX,IAAIgC,EAAQL,GAASlC,EAAK,MAAOM,EAAK,KAAMA,EAAK,EAAE,EACnD,OAAIiC,GACAvC,EAAK,SAAS,CAAE,QAASwC,GAAW,GAAGD,CAAK,CAAE,CAAC,EACxC,IAEJ,EACX,EAdO,QAeX,CACJ,CAAC,EACD9C,GAAY,CAChB,CACJ,CAzDSK,EAAAwB,GAAA,cA0DT,IAAMzB,GAA2B4C,EAAW,UAAU,CAClD,sBAAuB,CACnB,gBAAiB,OACjB,OAAQ,iBACR,MAAO,OACP,aAAc,OACd,OAAQ,QACR,QAAS,QACT,OAAQ,SACZ,EACA,sBAAuB,CACnB,QAAS,QACT,OAAQ,SACZ,CACJ,CAAC,EAMKC,GAAN,MAAMC,CAAe,CA5nDrB,MA4nDqB,CAAA7C,EAAA,uBACjB,YAIA8C,EAAOC,EAAS,CACZ,KAAK,MAAQD,EACb,IAAIE,EACJ,SAASC,EAAIC,EAAM,CACf,IAAIC,EAAMC,GAAY,QAAQ,EAC9B,OAACJ,IAAYA,EAAU,OAAO,OAAO,IAAI,IAAI,IAAMG,CAAG,EAAID,EACnDC,CACX,CAJSnD,EAAAiD,EAAA,OAKT,IAAMI,EAAM,OAAON,EAAQ,KAAO,SAAWA,EAAQ,IAAMA,EAAQ,IAAME,EAAIF,EAAQ,GAAG,EAAI,OACtFO,EAAWP,EAAQ,MACzB,KAAK,MAAQO,aAAoBC,GAAYC,GAASA,EAAK,KAAKC,EAAgB,GAAKH,EAAS,KACxFA,EAAYE,GAASA,GAAQF,EAAW,OAC9C,KAAK,MAAQI,GAAeZ,EAAM,IAAIa,IAAU,CAC5C,IAAKA,EAAM,IACX,MAAOA,EAAM,OAASV,EAAI,OAAO,OAAO,CAAC,EAAGU,EAAO,CAAE,IAAK,IAAK,CAAC,CAAC,CACrE,EAAE,EAAG,CACD,IAAAN,CACJ,CAAC,EAAE,MACH,KAAK,OAASL,EAAU,IAAII,GAAYJ,CAAO,EAAI,KACnD,KAAK,UAAYD,EAAQ,SAC7B,CAgBA,OAAO,OAAOD,EAAOC,EAAS,CAC1B,OAAO,IAAIF,EAAeC,EAAOC,GAAW,CAAC,CAAC,CAClD,CACJ,EACMa,GAAgCpE,EAAM,OAAO,EAC7CqE,GAAmCrE,EAAM,OAAO,CAClD,QAAQC,EAAQ,CAAE,OAAOA,EAAO,OAAS,CAACA,EAAO,CAAC,CAAC,EAAI,IAAM,CACjE,CAAC,EACD,SAASqE,GAAgB1D,EAAO,CAC5B,IAAI2D,EAAO3D,EAAM,MAAMwD,EAAgB,EACvC,OAAOG,EAAK,OAASA,EAAO3D,EAAM,MAAMyD,EAAmB,CAC/D,CAHS7D,EAAA8D,GAAA,mBAWT,SAASE,GAAmBC,EAAalB,EAAS,CAC9C,IAAImB,EAAM,CAACC,EAAe,EAAGC,EAC7B,OAAIH,aAAuBrB,KACnBqB,EAAY,QACZC,EAAI,KAAKvB,EAAW,YAAY,GAAGsB,EAAY,MAAM,CAAC,EAC1DG,EAAYH,EAAY,WAE0BlB,GAAQ,SAC1DmB,EAAI,KAAKL,GAAoB,GAAGI,CAAW,CAAC,EACvCG,EACLF,EAAI,KAAKN,GAAiB,SAAS,CAACjB,EAAW,SAAS,EAAGvC,GAChDA,EAAM,MAAMuC,EAAW,SAAS,IAAMyB,GAAa,QAAU,CAACH,CAAW,EAAI,CAAC,CACxF,CAAC,EAEFC,EAAI,KAAKN,GAAiB,GAAGK,CAAW,CAAC,EACtCC,CACX,CAhBSlE,EAAAgE,GAAA,sBAqCT,IAAMK,GAAN,KAAsB,CA7tDtB,MA6tDsB,CAAAC,EAAA,wBAClB,YAAYC,EAAM,CACd,KAAK,UAAY,OAAO,OAAO,IAAI,EACnC,KAAK,KAAOC,EAAWD,EAAK,KAAK,EACjC,KAAK,YAAc,KAAK,UAAUA,EAAME,GAAgBF,EAAK,KAAK,CAAC,EACnE,KAAK,YAAcA,EAAK,SAAS,EACrC,CACA,OAAOG,EAAQ,CACX,IAAIC,EAAOH,EAAWE,EAAO,KAAK,EAAGE,EAAeH,GAAgBC,EAAO,KAAK,EAC5EG,EAAcD,GAAgBH,GAAgBC,EAAO,UAAU,EAC/D,CAAE,SAAAI,CAAS,EAAIJ,EAAO,KAAMK,EAAoBL,EAAO,QAAQ,OAAO,KAAK,YAAa,CAAC,EACzFC,EAAK,OAASG,EAAS,IAAM,CAACD,GAAeF,EAAK,MAAQ,KAAK,KAAK,MAAQI,GAAqBD,EAAS,IAC1G,KAAK,YAAc,KAAK,YAAY,IAAIJ,EAAO,OAAO,EACtD,KAAK,YAAcK,IAEdJ,GAAQ,KAAK,MAAQD,EAAO,iBAAmBG,KACpD,KAAK,KAAOF,EACZ,KAAK,YAAc,KAAK,UAAUD,EAAO,KAAME,CAAY,EAC3D,KAAK,YAAcE,EAAS,GAEpC,CACA,UAAUP,EAAMK,EAAc,CAC1B,GAAI,CAACA,GAAgB,CAAC,KAAK,KAAK,OAC5B,OAAOI,EAAW,KACtB,IAAIC,EAAU,IAAIC,GAClB,OAAS,CAAE,KAAAC,EAAM,GAAAC,CAAG,IAAKb,EAAK,cAC1Bc,GAAc,KAAK,KAAMT,EAAc,CAACO,EAAMC,EAAIE,IAAU,CACxDL,EAAQ,IAAIE,EAAMC,EAAI,KAAK,UAAUE,CAAK,IAAM,KAAK,UAAUA,CAAK,EAAIN,EAAW,KAAK,CAAE,MAAOM,CAAM,CAAC,EAAE,CAC9G,EAAGH,EAAMC,CAAE,EAEf,OAAOH,EAAQ,OAAO,CAC1B,CACJ,EACMM,GAA+BC,GAAK,KAAkBC,GAAW,UAAUpB,GAAiB,CAC9F,YAAaC,EAAAoB,GAAKA,EAAE,YAAP,cACjB,CAAC,CAAC,EAIIC,GAAqCC,GAAe,OAAO,CAC7D,CAAE,IAAKC,EAAK,KACR,MAAO,SAAU,EACrB,CAAE,IAAKA,EAAK,KACR,eAAgB,WAAY,EAChC,CAAE,IAAKA,EAAK,QACR,eAAgB,YAChB,WAAY,MAAO,EACvB,CAAE,IAAKA,EAAK,SACR,UAAW,QAAS,EACxB,CAAE,IAAKA,EAAK,OACR,WAAY,MAAO,EACvB,CAAE,IAAKA,EAAK,cACR,eAAgB,cAAe,EACnC,CAAE,IAAKA,EAAK,QACR,MAAO,MAAO,EAClB,CAAE,IAAK,CAACA,EAAK,KAAMA,EAAK,KAAMA,EAAK,IAAKA,EAAK,iBAAkBA,EAAK,SAAS,EACzE,MAAO,MAAO,EAClB,CAAE,IAAK,CAACA,EAAK,QAASA,EAAK,QAAQ,EAC/B,MAAO,MAAO,EAClB,CAAE,IAAK,CAACA,EAAK,OAAQA,EAAK,OAAO,EAC7B,MAAO,MAAO,EAClB,CAAE,IAAK,CAACA,EAAK,OAAQA,EAAK,OAAqBA,EAAK,QAAQA,EAAK,MAAM,CAAC,EACpE,MAAO,MAAO,EAClB,CAAE,IAAkBA,EAAK,WAAWA,EAAK,YAAY,EACjD,MAAO,MAAO,EAClB,CAAE,IAAkBA,EAAK,MAAMA,EAAK,YAAY,EAC5C,MAAO,MAAO,EAClB,CAAE,IAAK,CAACA,EAAK,SAAUA,EAAK,SAAS,EACjC,MAAO,MAAO,EAClB,CAAE,IAAKA,EAAK,UACR,MAAO,MAAO,EAClB,CAAE,IAAK,CAAcA,EAAK,QAAQA,EAAK,YAAY,EAAGA,EAAK,SAAS,EAChE,MAAO,MAAO,EAClB,CAAE,IAAkBA,EAAK,WAAWA,EAAK,YAAY,EACjD,MAAO,MAAO,EAClB,CAAE,IAAKA,EAAK,QACR,MAAO,MAAO,EAClB,CAAE,IAAKA,EAAK,QACR,MAAO,MAAO,CACtB,CAAC,EAEKC,GAAyBC,EAAW,UAAU,CAChD,mCAAoC,CAAE,gBAAiB,WAAY,EACnE,sCAAuC,CAAE,gBAAiB,WAAY,CAC1E,CAAC,EACKC,GAAkB,IAAOC,GAAkB,SAC3CC,GAAqCC,EAAM,OAAO,CACpD,QAAQC,EAAS,CACb,OAAOC,GAAcD,EAAS,CAC1B,YAAa,GACb,SAAUH,GACV,gBAAiBD,GACjB,YAAaM,EACjB,CAAC,CACL,CACJ,CAAC,EACKC,GAA4BvB,EAAW,KAAK,CAAE,MAAO,oBAAqB,CAAC,EAAGwB,GAA+BxB,EAAW,KAAK,CAAE,MAAO,uBAAwB,CAAC,EACrK,SAASsB,GAAmBG,EAAO,CAC/B,IAAIC,EAAc,CAAC,EACfC,EAAOF,EAAM,QAAUF,GAAeC,GAC1C,OAAAE,EAAY,KAAKC,EAAK,MAAMF,EAAM,MAAM,KAAMA,EAAM,MAAM,EAAE,CAAC,EACzDA,EAAM,KACNC,EAAY,KAAKC,EAAK,MAAMF,EAAM,IAAI,KAAMA,EAAM,IAAI,EAAE,CAAC,EACtDC,CACX,CAPSpC,EAAAgC,GAAA,sBAQT,SAASM,GAAYC,EAAO,CACxB,IAAIH,EAAc,CAAC,EACfI,EAASD,EAAM,MAAMX,EAAqB,EAC9C,QAASa,KAASF,EAAM,UAAU,OAAQ,CACtC,GAAI,CAACE,EAAM,MACP,SACJ,IAAIN,EAAQO,GAAcH,EAAOE,EAAM,KAAM,GAAID,CAAM,GAC/CC,EAAM,KAAO,GAAKC,GAAcH,EAAOE,EAAM,KAAO,EAAG,EAAGD,CAAM,GAChEA,EAAO,cACNE,GAAcH,EAAOE,EAAM,KAAM,EAAGD,CAAM,GACtCC,EAAM,KAAOF,EAAM,IAAI,QAAUG,GAAcH,EAAOE,EAAM,KAAO,EAAG,GAAID,CAAM,GACzFL,IACAC,EAAcA,EAAY,OAAOI,EAAO,YAAYL,EAAOI,CAAK,CAAC,EACzE,CACA,OAAO7B,EAAW,IAAI0B,EAAa,EAAI,CAC3C,CAfSpC,EAAAsC,GAAA,eAgBT,IAAMK,GAA8BxB,GAAW,UAAU,KAAM,CAC3D,YAAYlB,EAAM,CACd,KAAK,OAAS,GACd,KAAK,YAAcqC,GAAYrC,EAAK,KAAK,CAC7C,CACA,OAAOG,EAAQ,EACPA,EAAO,YAAcA,EAAO,cAAgB,KAAK,UAC7CA,EAAO,KAAK,WACZ,KAAK,YAAc,KAAK,YAAY,IAAIA,EAAO,OAAO,EACtD,KAAK,OAAS,KAGd,KAAK,YAAckC,GAAYlC,EAAO,KAAK,EAC3C,KAAK,OAAS,IAG1B,CACJ,EAAG,CACC,YAAaJ,EAAAoB,GAAKA,EAAE,YAAP,cACjB,CAAC,EACKwB,GAAwB,CAC1BD,GACAnB,EACJ,EAOA,SAASqB,GAAgBL,EAAS,CAAC,EAAG,CAClC,MAAO,CAACZ,GAAsB,GAAGY,CAAM,EAAGI,EAAqB,CACnE,CAFS5C,EAAA6C,GAAA,mBAWT,IAAMC,GAAqC,IAAIC,EAC/C,SAASC,GAAcC,EAAMC,EAAKC,EAAU,CACxC,IAAIC,EAASH,EAAK,KAAKC,EAAM,EAAIH,EAAS,SAAWA,EAAS,QAAQ,EACtE,GAAIK,EACA,OAAOA,EACX,GAAIH,EAAK,KAAK,QAAU,EAAG,CACvB,IAAII,EAAQF,EAAS,QAAQF,EAAK,IAAI,EACtC,GAAII,EAAQ,IAAMA,EAAQ,IAAMH,EAAM,EAAI,EAAI,GAC1C,MAAO,CAACC,EAASE,EAAQH,CAAG,CAAC,CACrC,CACA,OAAO,IACX,CAVSlD,EAAAgD,GAAA,iBAWT,SAASM,GAAWL,EAAM,CACtB,IAAIM,EAAYN,EAAK,KAAK,KAAKH,EAAqB,EACpD,OAAOS,EAAYA,EAAUN,EAAK,IAAI,EAAIA,CAC9C,CAHSjD,EAAAsD,GAAA,cAUT,SAASZ,GAAcH,EAAOiB,EAAKN,EAAKV,EAAS,CAAC,EAAG,CACjD,IAAIiB,EAAkBjB,EAAO,iBAAmBd,GAAiByB,EAAWX,EAAO,UAAYb,GAC3FtB,EAAOH,EAAWqC,CAAK,EAAGU,EAAO5C,EAAK,aAAamD,EAAKN,CAAG,EAC/D,QAASQ,EAAMT,EAAMS,EAAKA,EAAMA,EAAI,OAAQ,CACxC,IAAIC,EAAUX,GAAcU,EAAI,KAAMR,EAAKC,CAAQ,EACnD,GAAIQ,GAAWD,EAAI,KAAOA,EAAI,GAAI,CAC9B,IAAIE,EAASN,GAAWI,CAAG,EAC3B,GAAIE,IAAWV,EAAM,EAAIM,GAAOI,EAAO,MAAQJ,EAAMI,EAAO,GAAKJ,EAAMI,EAAO,MAAQJ,GAAOI,EAAO,IAChG,OAAOC,GAAoBtB,EAAOiB,EAAKN,EAAKQ,EAAKE,EAAQD,EAASR,CAAQ,CAClF,CACJ,CACA,OAAOW,GAAmBvB,EAAOiB,EAAKN,EAAK7C,EAAM4C,EAAK,KAAMQ,EAAiBN,CAAQ,CACzF,CAZSnD,EAAA0C,GAAA,iBAaT,SAASmB,GAAoBE,EAAQC,EAAMd,EAAKe,EAAOL,EAAQM,EAAUf,EAAU,CAC/E,IAAIgB,EAASF,EAAM,OAAQG,EAAa,CAAE,KAAMR,EAAO,KAAM,GAAIA,EAAO,EAAG,EACvES,EAAQ,EAAGC,EAAyDH,GAAO,OAAO,EACtF,GAAIG,IAAWpB,EAAM,EAAIoB,EAAO,YAAYL,EAAM,IAAI,EAAIK,EAAO,WAAWL,EAAM,EAAE,GAChF,EACI,IAAIf,EAAM,EAAIoB,EAAO,IAAML,EAAM,KAAOK,EAAO,MAAQL,EAAM,IACzD,GAAII,GAAS,GAAKH,EAAS,QAAQI,EAAO,KAAK,IAAI,EAAI,IAAMA,EAAO,KAAOA,EAAO,GAAI,CAClF,IAAIC,EAAYjB,GAAWgB,CAAM,EACjC,MAAO,CAAE,MAAOF,EAAY,IAAKG,EAAY,CAAE,KAAMA,EAAU,KAAM,GAAIA,EAAU,EAAG,EAAI,OAAW,QAAS,EAAK,CACvH,SACSvB,GAAcsB,EAAO,KAAMpB,EAAKC,CAAQ,EAC7CkB,YAEKrB,GAAcsB,EAAO,KAAM,CAACpB,EAAKC,CAAQ,EAAG,CACjD,GAAIkB,GAAS,EAAG,CACZ,IAAIE,EAAYjB,GAAWgB,CAAM,EACjC,MAAO,CACH,MAAOF,EACP,IAAKG,GAAaA,EAAU,KAAOA,EAAU,GAAK,CAAE,KAAMA,EAAU,KAAM,GAAIA,EAAU,EAAG,EAAI,OAC/F,QAAS,EACb,CACJ,CACAF,GACJ,QAECnB,EAAM,EAAIoB,EAAO,YAAY,EAAIA,EAAO,YAAY,GACjE,MAAO,CAAE,MAAOF,EAAY,QAAS,EAAM,CAC/C,CA3BSpE,EAAA6D,GAAA,uBA4BT,SAASC,GAAmBvB,EAAOiB,EAAKN,EAAK7C,EAAMmE,EAAWf,EAAiBN,EAAU,CACrF,GAAID,EAAM,EAAI,CAACM,EAAMA,GAAOjB,EAAM,IAAI,OAClC,OAAO,KACX,IAAIkC,EAAUvB,EAAM,EAAIX,EAAM,SAASiB,EAAM,EAAGA,CAAG,EAAIjB,EAAM,SAASiB,EAAKA,EAAM,CAAC,EAC9EkB,EAAUvB,EAAS,QAAQsB,CAAO,EACtC,GAAIC,EAAU,GAAMA,EAAU,GAAK,GAAOxB,EAAM,EAC5C,OAAO,KACX,IAAIyB,EAAa,CAAE,KAAMzB,EAAM,EAAIM,EAAM,EAAIA,EAAK,GAAIN,EAAM,EAAIM,EAAM,EAAIA,CAAI,EAC1EoB,EAAOrC,EAAM,IAAI,UAAUiB,EAAKN,EAAM,EAAIX,EAAM,IAAI,OAAS,CAAC,EAAG8B,EAAQ,EAC7E,QAASQ,EAAW,EAAG,CAAED,EAAK,KAAK,EAAG,MAAQC,GAAYpB,GAAkB,CACxE,IAAIqB,EAAOF,EAAK,MACZ1B,EAAM,IACN2B,GAAYC,EAAK,QACrB,IAAIC,EAAUvB,EAAMqB,EAAW3B,EAC/B,QAASM,EAAMN,EAAM,EAAI,EAAI4B,EAAK,OAAS,EAAGE,EAAM9B,EAAM,EAAI4B,EAAK,OAAS,GAAItB,GAAOwB,EAAKxB,GAAON,EAAK,CACpG,IAAI+B,EAAQ9B,EAAS,QAAQ2B,EAAKtB,CAAG,CAAC,EACtC,GAAI,EAAAyB,EAAQ,GAAK5E,EAAK,aAAa0E,EAAUvB,EAAK,CAAC,EAAE,MAAQgB,GAE7D,GAAKS,EAAQ,GAAK,GAAO/B,EAAM,EAC3BmB,QAEC,IAAIA,GAAS,EACd,MAAO,CAAE,MAAOM,EAAY,IAAK,CAAE,KAAMI,EAAUvB,EAAK,GAAIuB,EAAUvB,EAAM,CAAE,EAAG,QAAUyB,GAAS,GAAOP,GAAW,CAAG,EAGzHL,IAER,CACInB,EAAM,IACN2B,GAAYC,EAAK,OACzB,CACA,OAAOF,EAAK,KAAO,CAAE,MAAOD,EAAY,QAAS,EAAM,EAAI,IAC/D,CAhCS3E,EAAA8D,GAAA,sBAufT,IAAMoB,GAAwB,OAAO,OAAO,IAAI,EAC1CC,GAAY,CAACC,GAAS,IAAI,EAEhC,IAAMC,GAAS,CAAC,EAEVC,GAAqB,OAAO,OAAO,IAAI,EACvCC,GAA4B,OAAO,OAAO,IAAI,EACpD,OAAS,CAACC,EAAYC,CAAI,GAAK,CAC3B,CAAC,WAAY,cAAc,EAC3B,CAAC,aAAc,sBAAsB,EACrC,CAAC,WAAY,gBAAgB,EAC7B,CAAC,MAAO,yBAAyB,EACjC,CAAC,MAAO,SAAS,EACjB,CAAC,YAAa,eAAe,EAC7B,CAAC,OAAQ,UAAU,EACnB,CAAC,UAAW,uBAAuB,EACnC,CAAC,YAAa,UAAU,EACxB,CAAC,QAAS,SAAS,EACnB,CAAC,SAAU,SAAS,EACpB,CAAC,WAAY,cAAc,CAC/B,EACIF,GAAaC,CAAU,EAAiBE,GAAgBC,GAAUF,CAAI,EAW1E,SAASG,GAAYC,EAAMC,EAAK,CACxBC,GAAO,QAAQF,CAAI,EAAI,KAE3BE,GAAO,KAAKF,CAAI,EAChB,QAAQ,KAAKC,CAAG,EACpB,CALSE,EAAAJ,GAAA,eAMT,SAASK,GAAgBC,EAAOC,EAAQ,CACpC,IAAIC,EAAS,CAAC,EACd,QAASC,KAAQF,EAAO,MAAM,GAAG,EAAG,CAChC,IAAIG,EAAQ,CAAC,EACb,QAAST,KAAQQ,EAAK,MAAM,GAAG,EAAG,CAC9B,IAAIE,EAASL,EAAML,CAAI,GAAKW,EAAKX,CAAI,EAChCU,EAGI,OAAOA,GAAS,WAChBD,EAAM,OAGPA,EAAQA,EAAM,IAAIC,CAAK,EAFvBX,GAAYC,EAAM,YAAYA,CAAI,uBAAuB,EAKzDS,EAAM,OACNV,GAAYC,EAAM,OAAOA,CAAI,mBAAmB,EAEhDS,EAAQ,MAAM,QAAQC,CAAK,EAAIA,EAAQ,CAACA,CAAK,EAZjDX,GAAYC,EAAM,4BAA4BA,CAAI,EAAE,CAc5D,CACA,QAASY,KAAOH,EACZF,EAAO,KAAKK,CAAG,CACvB,CACA,GAAI,CAACL,EAAO,OACR,MAAO,GACX,IAAIC,EAAOF,EAAO,QAAQ,KAAM,GAAG,EAAGO,EAAML,EAAO,IAAMD,EAAO,IAAIO,GAAKA,EAAE,EAAE,EACzEC,EAAQC,GAAMH,CAAG,EACrB,GAAIE,EACA,OAAOA,EAAM,GACjB,IAAIE,EAAOD,GAAMH,CAAG,EAAIK,GAAS,OAAO,CACpC,GAAIC,GAAU,OACd,KAAAX,EACA,MAAO,CAACY,GAAU,CAAE,CAACZ,CAAI,EAAGD,CAAO,CAAC,CAAC,CACzC,CAAC,EACD,OAAAY,GAAU,KAAKF,CAAI,EACZA,EAAK,EAChB,CAtCSd,EAAAC,GAAA,mBA6JT,IAAMiB,GAAQ,CACV,IAAkBC,EAAW,KAAK,CAAE,MAAO,SAAU,UAAW,GAAM,WAAY,CAAE,IAAK,KAAM,EAAG,YAAaC,EAAU,GAAI,CAAC,EAC9H,IAAkBD,EAAW,KAAK,CAAE,MAAO,SAAU,UAAW,GAAM,WAAY,CAAE,IAAK,KAAM,EAAG,YAAaC,EAAU,GAAI,CAAC,EAC9H,KAAmBD,EAAW,KAAK,CAAE,MAAO,SAAU,UAAW,GAAM,WAAY,CAAE,IAAK,MAAO,EAAG,YAAa,IAAK,CAAC,CAC3H,ECnnFA,IAAME,GAAgBC,EAAAC,GAAU,CAC5B,GAAI,CAAE,MAAAC,CAAM,EAAID,EAAQE,EAAOD,EAAM,IAAI,OAAOA,EAAM,UAAU,KAAK,IAAI,EAAGE,EAASC,GAAUJ,EAAO,MAAOE,EAAK,IAAI,EACtH,OAAOC,EAAO,KAAOE,GAAkBL,CAAM,EAAIG,EAAO,MAAQG,GAAyBN,CAAM,EAAI,EACvG,EAHsB,iBAItB,SAASO,GAAQC,EAAGC,EAAQ,CACxB,MAAO,CAAC,CAAE,MAAAR,EAAO,SAAAS,CAAS,IAAM,CAC5B,GAAIT,EAAM,SACN,MAAO,GACX,IAAIU,EAAKH,EAAEC,EAAQR,CAAK,EACxB,OAAKU,GAELD,EAAST,EAAM,OAAOU,CAAE,CAAC,EAClB,IAFI,EAGf,CACJ,CAVSZ,EAAAQ,GAAA,WAiBT,IAAMF,GAAiCE,GAAQK,GAAmB,CAA4B,EAe9F,IAAMC,GAAkCC,GAAQC,GAAoB,CAA4B,EAahG,IAAMC,GAAwCC,GAAQ,CAACC,EAAGC,IAAMC,GAAmBF,EAAGC,EAAGE,GAAmBF,CAAC,CAAC,EAAG,CAA4B,EAC7I,SAASG,GAAUC,EAAOC,EAAK,CAC3B,IAAIC,EAAOF,EAAM,eAAe,gBAAiBC,EAAK,CAAC,EACvD,OAAOC,EAAK,OAASA,EAAK,CAAC,EAAI,CAAC,CACpC,CAHSC,EAAAJ,GAAA,aAIT,IAAMK,GAAe,GAKrB,SAASC,GAAiBL,EAAO,CAAE,KAAAM,EAAM,MAAAC,CAAM,EAAGC,EAAMC,EAAI,CACxD,IAAIC,EAAaV,EAAM,SAASQ,EAAOJ,GAAcI,CAAI,EACrDG,EAAYX,EAAM,SAASS,EAAIA,EAAKL,EAAY,EAChDQ,EAAc,OAAO,KAAKF,CAAU,EAAE,CAAC,EAAE,OAAQG,EAAa,OAAO,KAAKF,CAAS,EAAE,CAAC,EAAE,OACxFG,EAAYJ,EAAW,OAASE,EACpC,GAAIF,EAAW,MAAMI,EAAYR,EAAK,OAAQQ,CAAS,GAAKR,GACxDK,EAAU,MAAME,EAAYA,EAAaN,EAAM,MAAM,GAAKA,EAC1D,MAAO,CAAE,KAAM,CAAE,IAAKC,EAAOI,EAAa,OAAQA,GAAe,CAAE,EAC/D,MAAO,CAAE,IAAKH,EAAKI,EAAY,OAAQA,GAAc,CAAE,CAAE,EAEjE,IAAIE,EAAWC,EACXP,EAAKD,GAAQ,EAAIJ,GACjBW,EAAYC,EAAUhB,EAAM,SAASQ,EAAMC,CAAE,GAG7CM,EAAYf,EAAM,SAASQ,EAAMA,EAAOJ,EAAY,EACpDY,EAAUhB,EAAM,SAASS,EAAKL,GAAcK,CAAE,GAElD,IAAIQ,EAAa,OAAO,KAAKF,CAAS,EAAE,CAAC,EAAE,OAAQG,EAAW,OAAO,KAAKF,CAAO,EAAE,CAAC,EAAE,OAClFG,EAASH,EAAQ,OAASE,EAAWX,EAAM,OAC/C,OAAIQ,EAAU,MAAME,EAAYA,EAAaX,EAAK,MAAM,GAAKA,GACzDU,EAAQ,MAAMG,EAAQA,EAASZ,EAAM,MAAM,GAAKA,EACzC,CAAE,KAAM,CAAE,IAAKC,EAAOS,EAAaX,EAAK,OACvC,OAAQ,KAAK,KAAKS,EAAU,OAAOE,EAAaX,EAAK,MAAM,CAAC,EAAI,EAAI,CAAE,EAC1E,MAAO,CAAE,IAAKG,EAAKS,EAAWX,EAAM,OAChC,OAAQ,KAAK,KAAKS,EAAQ,OAAOG,EAAS,CAAC,CAAC,EAAI,EAAI,CAAE,CAAE,EAE7D,IACX,CA5BShB,EAAAE,GAAA,oBA6BT,SAASP,GAAmBE,EAAO,CAC/B,IAAIoB,EAAS,CAAC,EACd,QAASC,KAAKrB,EAAM,UAAU,OAAQ,CAClC,IAAIsB,EAAWtB,EAAM,IAAI,OAAOqB,EAAE,IAAI,EAClCE,EAASF,EAAE,IAAMC,EAAS,GAAKA,EAAWtB,EAAM,IAAI,OAAOqB,EAAE,EAAE,EAC/DE,EAAO,KAAOD,EAAS,MAAQC,EAAO,MAAQF,EAAE,KAChDE,EAASF,EAAE,IAAMC,EAAS,GAAK,EAAIA,EAAWtB,EAAM,IAAI,OAAOqB,EAAE,GAAK,CAAC,GAC3E,IAAIG,EAAOJ,EAAO,OAAS,EACvBI,GAAQ,GAAKJ,EAAOI,CAAI,EAAE,GAAKF,EAAS,KACxCF,EAAOI,CAAI,EAAE,GAAKD,EAAO,GAEzBH,EAAO,KAAK,CAAE,KAAME,EAAS,KAAO,OAAO,KAAKA,EAAS,IAAI,EAAE,CAAC,EAAE,OAAQ,GAAIC,EAAO,EAAG,CAAC,CACjG,CACA,OAAOH,CACX,CAdSjB,EAAAL,GAAA,sBAiBT,SAASD,GAAmB4B,EAAQzB,EAAOoB,EAASpB,EAAM,UAAU,OAAQ,CACxE,IAAI0B,EAASN,EAAO,IAAIC,GAAKtB,GAAUC,EAAOqB,EAAE,IAAI,EAAE,KAAK,EAC3D,GAAI,CAACK,EAAO,MAAMC,GAAKA,CAAC,EACpB,OAAO,KACX,IAAIC,EAAWR,EAAO,IAAI,CAACC,EAAGQ,IAAMxB,GAAiBL,EAAO0B,EAAOG,CAAC,EAAGR,EAAE,KAAMA,EAAE,EAAE,CAAC,EACpF,GAAII,GAAU,GAAmC,CAACG,EAAS,MAAMD,GAAKA,CAAC,EACnE,MAAO,CAAE,QAAS3B,EAAM,QAAQoB,EAAO,IAAI,CAACU,EAAOD,IACvCD,EAASC,CAAC,EACH,CAAC,EACL,CAAC,CAAE,KAAMC,EAAM,KAAM,OAAQJ,EAAOG,CAAC,EAAE,KAAO,GAAI,EAAG,CAAE,KAAMC,EAAM,GAAI,OAAQ,IAAMJ,EAAOG,CAAC,EAAE,KAAM,CAAC,CAChH,CAAC,CAAE,EAEP,GAAIJ,GAAU,GAAiCG,EAAS,KAAKD,GAAKA,CAAC,EAAG,CACvE,IAAII,EAAU,CAAC,EACf,QAASF,EAAI,EAAGG,EAASH,EAAID,EAAS,OAAQC,IAC1C,GAAIG,EAAUJ,EAASC,CAAC,EAAG,CACvB,IAAII,EAAQP,EAAOG,CAAC,EAAG,CAAE,KAAAvB,EAAM,MAAAC,CAAM,EAAIyB,EACzCD,EAAQ,KAAK,CAAE,KAAMzB,EAAK,IAAM2B,EAAM,KAAK,OAAQ,GAAI3B,EAAK,IAAMA,EAAK,MAAO,EAAG,CAAE,KAAMC,EAAM,IAAMA,EAAM,OAAQ,GAAIA,EAAM,IAAM0B,EAAM,MAAM,MAAO,CAAC,CAC3J,CACJ,MAAO,CAAE,QAAAF,CAAQ,CACrB,CACA,OAAO,IACX,CAtBS5B,EAAAN,GAAA,sBAwBT,SAASqC,GAAkBT,EAAQzB,EAAOoB,EAASpB,EAAM,UAAU,OAAQ,CACvE,IAAImC,EAAQ,CAAC,EACTC,EAAW,GACfhB,EAAQ,OAAS,CAAE,KAAAZ,EAAM,GAAAC,CAAG,IAAKW,EAAQ,CACrC,IAAIiB,EAASF,EAAM,OAAQG,EAAY,IAAKL,EAC5C,QAAShC,EAAMO,EAAMP,GAAOQ,GAAK,CAC7B,IAAI8B,EAAOvC,EAAM,IAAI,OAAOC,CAAG,EAC/B,GAAIgC,GAAS,OACTA,EAAQlC,GAAUC,EAAOuC,EAAK,IAAI,EAAE,KAChC,CAACN,GACD,SAASb,EAEjB,GAAImB,EAAK,KAAOH,IAAa5B,GAAQC,GAAMA,EAAK8B,EAAK,MAAO,CACxDH,EAAWG,EAAK,KAChB,IAAIC,EAAS,OAAO,KAAKD,EAAK,IAAI,EAAE,CAAC,EAAE,OACnCE,EAAQD,GAAUD,EAAK,OACvBP,EAAUO,EAAK,KAAK,MAAMC,EAAQA,EAASP,EAAM,MAAM,GAAKA,EAAQO,EAAS,GAC7EA,EAASD,EAAK,KAAK,QAAUC,EAASF,IACtCA,EAAYE,GAChBL,EAAM,KAAK,CAAE,KAAAI,EAAM,QAAAP,EAAS,MAAAC,EAAO,OAAAO,EAAQ,MAAAC,EAAO,OAAQ,EAAM,CAAC,CACrE,CACAxC,EAAMsC,EAAK,GAAK,CACpB,CACA,GAAID,EAAY,IACZ,QAAST,EAAIQ,EAAQR,EAAIM,EAAM,OAAQN,IAC/BM,EAAMN,CAAC,EAAE,OAASM,EAAMN,CAAC,EAAE,KAAK,KAAK,SACrCM,EAAMN,CAAC,EAAE,OAASS,GAC1BH,EAAM,QAAUE,EAAS,IACzBF,EAAME,CAAM,EAAE,OAAS,GAC/B,CACA,GAAIZ,GAAU,GAAmCU,EAAM,KAAKO,GAAKA,EAAE,QAAU,IAAM,CAACA,EAAE,OAASA,EAAE,OAAO,EAAG,CACvG,IAAIX,EAAU,CAAC,EACf,OAAS,CAAE,KAAAQ,EAAM,MAAAN,EAAO,OAAAO,EAAQ,MAAAC,EAAO,OAAAE,CAAO,IAAKR,GAC3CQ,GAAU,CAACF,IACXV,EAAQ,KAAK,CAAE,KAAMQ,EAAK,KAAOC,EAAQ,OAAQP,EAAQ,GAAI,CAAC,EACtE,IAAIW,EAAY5C,EAAM,QAAQ+B,CAAO,EACrC,MAAO,CAAE,QAASa,EAAW,UAAW5C,EAAM,UAAU,IAAI4C,EAAW,CAAC,CAAE,CAC9E,SACSnB,GAAU,GAAiCU,EAAM,KAAKO,GAAKA,EAAE,SAAW,CAAC,EAAG,CACjF,IAAIX,EAAU,CAAC,EACf,OAAS,CAAE,KAAAQ,EAAM,QAAAP,EAAS,MAAAC,CAAM,IAAKE,EACjC,GAAIH,GAAW,EAAG,CACd,IAAIxB,EAAO+B,EAAK,KAAOP,EAASvB,EAAKD,EAAOyB,EAAM,OAC9CM,EAAK,KAAK9B,EAAK8B,EAAK,IAAI,GAAK,KAC7B9B,IACJsB,EAAQ,KAAK,CAAE,KAAAvB,EAAM,GAAAC,CAAG,CAAC,CAC7B,CACJ,MAAO,CAAE,QAAAsB,CAAQ,CACrB,CACA,OAAO,IACX,CAlDS5B,EAAA+B,GAAA,qBAoDT,IAAMW,GAA2BC,GAAW,OAAO,EAQ7CC,GAA8BD,GAAW,OAAO,EAQhDE,GAA+BC,EAAM,OAAO,EAC5CC,GAA6BD,EAAM,OAAO,CAC5C,QAAQE,EAAS,CACb,OAAOC,GAAcD,EAAS,CAC1B,SAAU,IACV,cAAe,IACf,YAAahD,EAAA,CAACkD,EAAIC,IAAeA,EAApB,cACjB,EAAG,CACC,SAAU,KAAK,IACf,cAAe,KAAK,IACpB,YAAanD,EAAA,CAACoD,EAAGC,IAAM,CAACC,EAAIC,IAAQH,EAAEE,EAAIC,CAAG,GAAKF,EAAEC,EAAIC,CAAG,EAA9C,cACjB,CAAC,CACL,CACJ,CAAC,EACKC,GAA6BC,GAAW,OAAO,CACjD,QAAS,CACL,OAAOC,GAAa,KACxB,EACA,OAAO7D,EAAOyD,EAAI,CACd,IAAIK,EAASL,EAAG,MAAM,MAAMP,EAAa,EACrCa,EAAWN,EAAG,WAAWZ,EAAW,EACxC,GAAIkB,EAAU,CACV,IAAIC,EAAOC,GAAU,gBAAgBR,EAAIM,EAAS,SAAS,EAAGvD,EAAOuD,EAAS,KAC1EG,EAAQ1D,GAAQ,EAA0BR,EAAM,OAASA,EAAM,KACnE,OAAIgE,EACAE,EAAQC,GAAaD,EAAOA,EAAM,OAAQJ,EAAO,SAAUE,CAAI,EAE/DE,EAAQE,GAAaF,EAAOT,EAAG,WAAW,SAAS,EAChD,IAAII,GAAarD,GAAQ,EAA0BuD,EAAS,KAAOG,EAAO1D,GAAQ,EAA0B0D,EAAQH,EAAS,IAAI,CAC5I,CACA,IAAIM,EAAUZ,EAAG,WAAWV,EAAc,EAG1C,IAFIsB,GAAW,QAAUA,GAAW,YAChCrE,EAAQA,EAAM,QAAQ,GACtByD,EAAG,WAAWa,GAAY,YAAY,IAAM,GAC5C,OAAQb,EAAG,QAAQ,MAA4CzD,EAApCA,EAAM,WAAWyD,EAAG,QAAQ,IAAI,EAC/D,IAAIc,EAAQN,GAAU,gBAAgBR,CAAE,EACpCe,EAAOf,EAAG,WAAWa,GAAY,IAAI,EAAGG,EAAYhB,EAAG,WAAWa,GAAY,SAAS,EAC3F,OAAIC,EACAvE,EAAQA,EAAM,WAAWuE,EAAOC,EAAMC,EAAWX,EAAQL,CAAE,EACtDA,EAAG,YACRzD,EAAQA,EAAM,aAAayD,EAAG,WAAW,UAAWe,EAAMC,EAAWX,EAAO,aAAa,IACzFO,GAAW,QAAUA,GAAW,WAChCrE,EAAQA,EAAM,QAAQ,GACnBA,CACX,EACA,OAAO0E,EAAO,CACV,MAAO,CAAE,KAAMA,EAAM,KAAK,IAAI,GAAK,EAAE,OAAO,CAAC,EAAG,OAAQA,EAAM,OAAO,IAAI,GAAK,EAAE,OAAO,CAAC,CAAE,CAC9F,EACA,SAASC,EAAM,CACX,OAAO,IAAId,GAAac,EAAK,KAAK,IAAIV,GAAU,QAAQ,EAAGU,EAAK,OAAO,IAAIV,GAAU,QAAQ,CAAC,CAClG,CACJ,CAAC,EAID,SAASW,GAAQd,EAAS,CAAC,EAAG,CAC1B,MAAO,CACHH,GACAT,GAAc,GAAGY,CAAM,EACvBe,EAAW,iBAAiB,CACxB,YAAY,EAAGC,EAAM,CACjB,IAAIpF,EAAU,EAAE,WAAa,cAAgBqF,GAAO,EAAE,WAAa,cAAgBC,GAAO,KAC1F,OAAKtF,GAEL,EAAE,eAAe,EACVA,EAAQoF,CAAI,GAFR,EAGf,CACJ,CAAC,CACL,CACJ,CAdS3E,EAAAyE,GAAA,WAuBT,SAASK,GAAIC,EAAMC,EAAW,CAC1B,OAAO,SAAU,CAAE,MAAAC,EAAO,SAAAC,CAAS,EAAG,CAClC,GAAI,CAACF,GAAaC,EAAM,SACpB,MAAO,GACX,IAAIE,EAAeF,EAAM,MAAMG,GAAe,EAAK,EACnD,GAAI,CAACD,EACD,MAAO,GACX,IAAIE,EAAKF,EAAa,IAAIJ,EAAME,EAAOD,CAAS,EAChD,OAAKK,GAELH,EAASG,CAAE,EACJ,IAFI,EAGf,CACJ,CAbSC,EAAAR,GAAA,OAkBT,IAAMS,GAAoBT,GAAI,EAAyB,EAAK,EAKtDU,GAAoBV,GAAI,EAA2B,EAAK,EAIxDW,GAA6BX,GAAI,EAAyB,EAAI,EAI9DY,GAA6BZ,GAAI,EAA2B,EAAI,EAoBtE,IAAMa,GAAN,MAAMC,CAAU,CA/UhB,MA+UgB,CAAAC,EAAA,kBACZ,YAMAC,EAEAC,EAGAC,EAEAC,EAGAC,EAAiB,CACb,KAAK,QAAUJ,EACf,KAAK,QAAUC,EACf,KAAK,OAASC,EACd,KAAK,eAAiBC,EACtB,KAAK,gBAAkBC,CAC3B,CACA,YAAYC,EAAO,CACf,OAAO,IAAIP,EAAU,KAAK,QAAS,KAAK,QAAS,KAAK,OAAQ,KAAK,eAAgBO,CAAK,CAC5F,CACA,QAAS,CACL,IAAIC,EAAIC,EAAIC,EACZ,MAAO,CACH,SAAUF,EAAK,KAAK,WAAa,MAAQA,IAAO,OAAS,OAASA,EAAG,OAAO,EAC5E,QAASC,EAAK,KAAK,UAAY,MAAQA,IAAO,OAAS,OAASA,EAAG,OAAO,EAC1E,gBAAiBC,EAAK,KAAK,kBAAoB,MAAQA,IAAO,OAAS,OAASA,EAAG,OAAO,EAC1F,gBAAiB,KAAK,gBAAgB,IAAIC,GAAKA,EAAE,OAAO,CAAC,CAC7D,CACJ,CACA,OAAO,SAASC,EAAM,CAClB,OAAO,IAAIZ,EAAUY,EAAK,SAAWC,GAAU,SAASD,EAAK,OAAO,EAAG,CAAC,EAAGA,EAAK,QAAUE,GAAW,SAASF,EAAK,MAAM,EAAGA,EAAK,gBAAkBG,EAAgB,SAASH,EAAK,cAAc,EAAGA,EAAK,gBAAgB,IAAIG,EAAgB,QAAQ,CAAC,CACxP,CAIA,OAAO,gBAAgBC,EAAIC,EAAW,CAClC,IAAId,EAAUe,GACd,QAASC,KAAUH,EAAG,WAAW,MAAMI,EAAe,EAAG,CACrD,IAAIC,EAASF,EAAOH,CAAE,EAClBK,EAAO,SACPlB,EAAUA,EAAQ,OAAOkB,CAAM,EACvC,CACA,MAAI,CAAClB,EAAQ,QAAUa,EAAG,QAAQ,MACvB,KACJ,IAAIhB,EAAUgB,EAAG,QAAQ,OAAOA,EAAG,WAAW,GAAG,EAAGb,EAAS,OAAWc,GAAaD,EAAG,WAAW,UAAWE,EAAI,CAC7H,CACA,OAAO,UAAUI,EAAY,CACzB,OAAO,IAAItB,EAAU,OAAWkB,GAAM,OAAW,OAAWI,CAAU,CAC1E,CACJ,EACA,SAASC,GAAaC,EAAQC,EAAIC,EAAQC,EAAU,CAChD,IAAIC,EAAQH,EAAK,EAAIC,EAAS,GAAKD,EAAKC,EAAS,EAAI,EACjDG,EAAYL,EAAO,MAAMI,EAAOH,CAAE,EACtC,OAAAI,EAAU,KAAKF,CAAQ,EAChBE,CACX,CALS5B,EAAAsB,GAAA,gBAMT,SAASO,GAAWC,EAAGC,EAAG,CACtB,IAAIC,EAAS,CAAC,EAAGH,EAAa,GAC9B,OAAAC,EAAE,kBAAkB,CAACG,EAAGC,IAAMF,EAAO,KAAKC,EAAGC,CAAC,CAAC,EAC/CH,EAAE,kBAAkB,CAACI,EAAIC,EAAIH,EAAGC,IAAM,CAClC,QAASG,EAAI,EAAGA,EAAIL,EAAO,QAAS,CAChC,IAAIM,EAAON,EAAOK,GAAG,EAAGb,EAAKQ,EAAOK,GAAG,EACnCH,GAAKI,GAAQL,GAAKT,IAClBK,EAAa,GACrB,CACJ,CAAC,EACMA,CACX,CAXS7B,EAAA6B,GAAA,cAYT,SAASU,GAAiBT,EAAGC,EAAG,CAC5B,OAAOD,EAAE,OAAO,QAAUC,EAAE,OAAO,QAC/BD,EAAE,OAAO,OAAO,CAACU,EAAG,IAAMA,EAAE,OAAST,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,SAAW,CAC3E,CAHS/B,EAAAuC,GAAA,oBAIT,SAASE,GAAKX,EAAGC,EAAG,CAChB,OAAQD,EAAE,OAAcC,EAAE,OAAaD,EAAE,OAAOC,CAAC,EAAdD,EAAhBC,CACvB,CAFS/B,EAAAyC,GAAA,QAGT,IAAMxB,GAAO,CAAC,EACRyB,GAAwB,IAC9B,SAASC,GAAapB,EAAQP,EAAW,CACrC,GAAKO,EAAO,OAGP,CACD,IAAIqB,EAAYrB,EAAOA,EAAO,OAAS,CAAC,EACpCsB,EAAOD,EAAU,gBAAgB,MAAM,KAAK,IAAI,EAAGA,EAAU,gBAAgB,OAASF,EAAqB,CAAC,EAChH,OAAIG,EAAK,QAAUA,EAAKA,EAAK,OAAS,CAAC,EAAE,GAAG7B,CAAS,EAC1CO,GACXsB,EAAK,KAAK7B,CAAS,EACZM,GAAaC,EAAQA,EAAO,OAAS,EAAG,IAAKqB,EAAU,YAAYC,CAAI,CAAC,EACnF,KATI,OAAO,CAAC/C,GAAU,UAAU,CAACkB,CAAS,CAAC,CAAC,CAUhD,CAZShB,EAAA2C,GAAA,gBAcT,SAASG,GAAavB,EAAQ,CAC1B,IAAIwB,EAAOxB,EAAOA,EAAO,OAAS,CAAC,EAC/BK,EAAYL,EAAO,MAAM,EAC7B,OAAAK,EAAUL,EAAO,OAAS,CAAC,EAAIwB,EAAK,YAAYA,EAAK,gBAAgB,MAAM,EAAGA,EAAK,gBAAgB,OAAS,CAAC,CAAC,EACvGnB,CACX,CALS5B,EAAA8C,GAAA,gBAST,SAASE,GAAmBzB,EAAQ0B,EAAS,CACzC,GAAI,CAAC1B,EAAO,OACR,OAAOA,EACX,IAAI2B,EAAS3B,EAAO,OAAQF,EAAaJ,GACzC,KAAOiC,GAAQ,CACX,IAAIC,EAAQC,GAAS7B,EAAO2B,EAAS,CAAC,EAAGD,EAAS5B,CAAU,EAC5D,GAAI8B,EAAM,SAAW,CAACA,EAAM,QAAQ,OAASA,EAAM,QAAQ,OAAQ,CAC/D,IAAI/B,EAASG,EAAO,MAAM,EAAG2B,CAAM,EACnC,OAAA9B,EAAO8B,EAAS,CAAC,EAAIC,EACd/B,CACX,MAEI6B,EAAUE,EAAM,OAChBD,IACA7B,EAAa8B,EAAM,eAE3B,CACA,OAAO9B,EAAW,OAAS,CAACvB,GAAU,UAAUuB,CAAU,CAAC,EAAIJ,EACnE,CAlBSjB,EAAAgD,GAAA,sBAmBT,SAASI,GAASD,EAAOF,EAASI,EAAiB,CAC/C,IAAIhC,EAAaoB,GAAKU,EAAM,gBAAgB,OAASA,EAAM,gBAAgB,IAAIzC,GAAKA,EAAE,IAAIuC,CAAO,CAAC,EAAIhC,GAAMoC,CAAe,EAE3H,GAAI,CAACF,EAAM,QACP,OAAOrD,GAAU,UAAUuB,CAAU,EACzC,IAAIiC,EAAgBH,EAAM,QAAQ,IAAIF,CAAO,EAAGM,EAASN,EAAQ,QAAQE,EAAM,QAAS,EAAI,EACxFK,EAAcL,EAAM,OAASA,EAAM,OAAO,YAAYI,CAAM,EAAIA,EACpE,OAAO,IAAIzD,GAAUwD,EAAeG,EAAY,WAAWN,EAAM,QAASF,CAAO,EAAGO,EAAaL,EAAM,eAAe,IAAII,CAAM,EAAGlC,CAAU,CACjJ,CARSrB,EAAAoD,GAAA,YAST,IAAMM,GAAoB,8BACpBC,GAAN,MAAMC,CAAa,CAvdnB,MAudmB,CAAA5D,EAAA,qBACf,YAAY6D,EAAMC,EAAQC,EAAW,EAAGC,EAAgB,OAAW,CAC/D,KAAK,KAAOH,EACZ,KAAK,OAASC,EACd,KAAK,SAAWC,EAChB,KAAK,cAAgBC,CACzB,CACA,SAAU,CACN,OAAO,KAAK,SAAW,IAAIJ,EAAa,KAAK,KAAM,KAAK,MAAM,EAAI,IACtE,CACA,WAAWT,EAAOc,EAAMC,EAAWC,EAAQpD,EAAI,CAC3C,IAAI8C,EAAO,KAAK,KAAMjB,EAAYiB,EAAKA,EAAK,OAAS,CAAC,EACtD,OAAIjB,GAAaA,EAAU,SAAW,CAACA,EAAU,QAAQ,OAASO,EAAM,UACnE,CAACe,GAAaR,GAAkB,KAAKQ,CAAS,KAC7C,CAACtB,EAAU,gBAAgB,QACzBqB,EAAO,KAAK,SAAWE,EAAO,eAC9BA,EAAO,YAAYpD,EAAIc,GAAWe,EAAU,QAASO,EAAM,OAAO,CAAC,GAEnEe,GAAa,sBACjBL,EAAOvC,GAAauC,EAAMA,EAAK,OAAS,EAAGM,EAAO,SAAU,IAAIrE,GAAUqD,EAAM,QAAQ,QAAQP,EAAU,OAAO,EAAGH,GAAKgB,EAAY,WAAWN,EAAM,QAASP,EAAU,OAAO,EAAGA,EAAU,OAAO,EAAGA,EAAU,OAAQA,EAAU,eAAgB3B,EAAI,CAAC,EAGxP4C,EAAOvC,GAAauC,EAAMA,EAAK,OAAQM,EAAO,SAAUhB,CAAK,EAE1D,IAAIS,EAAaC,EAAM5C,GAAMgD,EAAMC,CAAS,CACvD,CACA,aAAalD,EAAWiD,EAAMC,EAAWE,EAAe,CACpD,IAAIrB,EAAO,KAAK,KAAK,OAAS,KAAK,KAAK,KAAK,KAAK,OAAS,CAAC,EAAE,gBAAkB9B,GAChF,OAAI8B,EAAK,OAAS,GACdkB,EAAO,KAAK,SAAWG,GACvBF,GAAa,KAAK,eAAiBA,GAAa,gBAAgB,KAAKA,CAAS,GAC9E3B,GAAiBQ,EAAKA,EAAK,OAAS,CAAC,EAAG/B,CAAS,EAC1C,KACJ,IAAI4C,EAAajB,GAAa,KAAK,KAAM3B,CAAS,EAAG,KAAK,OAAQiD,EAAMC,CAAS,CAC5F,CACA,WAAWjB,EAAS,CAChB,OAAO,IAAIW,EAAaZ,GAAmB,KAAK,KAAMC,CAAO,EAAGD,GAAmB,KAAK,OAAQC,CAAO,EAAG,KAAK,SAAU,KAAK,aAAa,CAC/I,CACA,IAAIoB,EAAMC,EAAOC,EAAe,CAC5B,IAAIhD,EAAS8C,GAAQ,EAA0B,KAAK,KAAO,KAAK,OAChE,GAAI9C,EAAO,QAAU,EACjB,OAAO,KACX,IAAI4B,EAAQ5B,EAAOA,EAAO,OAAS,CAAC,EAAGP,EAAYmC,EAAM,gBAAgB,CAAC,IACrEA,EAAM,eAAiBA,EAAM,eAAe,IAAIA,EAAM,QAAQ,aAAc,CAAC,EAAImB,EAAM,WAC5F,GAAIC,GAAiBpB,EAAM,gBAAgB,OACvC,OAAOmB,EAAM,OAAO,CAChB,UAAWnB,EAAM,gBAAgBA,EAAM,gBAAgB,OAAS,CAAC,EACjE,YAAaqB,GAAY,GAAG,CAAE,KAAAH,EAAM,KAAMvB,GAAavB,CAAM,EAAG,UAAAP,CAAU,CAAC,EAC3E,UAAWqD,GAAQ,EAA0B,cAAgB,cAC7D,eAAgB,EACpB,CAAC,EAEA,GAAKlB,EAAM,QAGX,CACD,IAAIsB,EAAOlD,EAAO,QAAU,EAAIN,GAAOM,EAAO,MAAM,EAAGA,EAAO,OAAS,CAAC,EACxE,OAAI4B,EAAM,SACNsB,EAAOzB,GAAmByB,EAAMtB,EAAM,MAAM,GACzCmB,EAAM,OAAO,CAChB,QAASnB,EAAM,QACf,UAAWA,EAAM,eACjB,QAASA,EAAM,QACf,YAAaqB,GAAY,GAAG,CAAE,KAAAH,EAAM,KAAAI,EAAM,UAAAzD,CAAU,CAAC,EACrD,OAAQ,GACR,UAAWqD,GAAQ,EAA0B,OAAS,OACtD,eAAgB,EACpB,CAAC,CACL,KAfI,QAAO,IAgBf,CACJ,EACAV,GAAa,MAAqB,IAAIA,GAAa1C,GAAMA,EAAI,EAS7D,IAAMyD,GAAgB,CAClB,CAAE,IAAK,QAAS,IAAKC,GAAM,eAAgB,EAAK,EAChD,CAAE,IAAK,QAAS,IAAK,cAAe,IAAKC,GAAM,eAAgB,EAAK,EACpE,CAAE,MAAO,eAAgB,IAAKA,GAAM,eAAgB,EAAK,EACzD,CAAE,IAAK,QAAS,IAAKC,GAAe,eAAgB,EAAK,EACzD,CAAE,IAAK,QAAS,IAAK,cAAe,IAAKC,GAAe,eAAgB,EAAK,CACjF,EAEA,SAASC,GAAUC,EAAKC,EAAI,CACxB,OAAOnE,EAAgB,OAAOkE,EAAI,OAAO,IAAIC,CAAE,EAAGD,EAAI,SAAS,CACnE,CAFShF,EAAA+E,GAAA,aAGT,SAASG,GAAOZ,EAAOtD,EAAW,CAC9B,OAAOsD,EAAM,OAAO,CAAE,UAAAtD,EAAW,eAAgB,GAAM,UAAW,QAAS,CAAC,CAChF,CAFShB,EAAAkF,GAAA,UAGT,SAASC,GAAQ,CAAE,MAAAb,EAAO,SAAAc,CAAS,EAAGC,EAAK,CACvC,IAAIrE,EAAY+D,GAAUT,EAAM,UAAWe,CAAG,EAC9C,OAAIrE,EAAU,GAAGsD,EAAM,UAAW,EAAI,EAC3B,IACXc,EAASF,GAAOZ,EAAOtD,CAAS,CAAC,EAC1B,GACX,CANShB,EAAAmF,GAAA,WAOT,SAASG,GAASC,EAAOC,EAAS,CAC9B,OAAO1E,EAAgB,OAAO0E,EAAUD,EAAM,GAAKA,EAAM,IAAI,CACjE,CAFSvF,EAAAsF,GAAA,YAGT,SAASG,GAAaC,EAAMF,EAAS,CACjC,OAAOL,GAAQO,EAAMH,GAASA,EAAM,MAAQG,EAAK,WAAWH,EAAOC,CAAO,EAAIF,GAASC,EAAOC,CAAO,CAAC,CAC1G,CAFSxF,EAAAyF,GAAA,gBAGT,SAASE,GAAYD,EAAM,CACvB,OAAOA,EAAK,gBAAgBA,EAAK,MAAM,UAAU,KAAK,IAAI,GAAKE,EAAU,GAC7E,CAFS5F,EAAA2F,GAAA,eAOT,IAAME,GAAiB7F,EAAA0F,GAAQD,GAAaC,EAAM,CAACC,GAAYD,CAAI,CAAC,EAA7C,kBAIjBI,GAAkB9F,EAAA0F,GAAQD,GAAaC,EAAMC,GAAYD,CAAI,CAAC,EAA5C,mBA8BxB,SAASK,GAAcC,EAAMC,EAAS,CAClC,OAAOC,GAAQF,EAAMG,GAASA,EAAM,MAAQH,EAAK,YAAYG,EAAOF,CAAO,EAAIG,GAASD,EAAOF,CAAO,CAAC,CAC3G,CAFSI,EAAAN,GAAA,iBAOT,IAAMO,GAAkBD,EAAAL,GAAQD,GAAcC,EAAM,CAACO,GAAYP,CAAI,CAAC,EAA9C,mBAIlBQ,GAAmBH,EAAAL,GAAQD,GAAcC,EAAMO,GAAYP,CAAI,CAAC,EAA7C,oBA6BzB,IAAMS,GAAY,OAAO,KAAQ,KAAe,KAAK,UACpC,IAAK,KAAK,UAAW,OAAW,CAAE,YAAa,MAAO,CAAC,EAAI,KAkE5E,SAASC,GAAgBC,EAAOC,EAAMC,EAAa,CAC/C,GAAID,EAAK,KAAK,KAAKC,CAAW,EAC1B,MAAO,GACX,IAAIC,EAAMF,EAAK,GAAKA,EAAK,KACzB,OAAOE,IAAQA,EAAM,GAAK,YAAY,KAAKH,EAAM,SAASC,EAAK,KAAMA,EAAK,EAAE,CAAC,IAAMA,EAAK,UAC5F,CALSG,EAAAL,GAAA,mBAMT,SAASM,GAAaL,EAAOM,EAAOC,EAAS,CACzC,IAAIC,EAAMC,EAAWT,CAAK,EAAE,aAAaM,EAAM,IAAI,EAC/CJ,EAAcK,EAAUG,EAAS,SAAWA,EAAS,SAGzD,QAASC,EAAKL,EAAM,OAAQ,CACxB,IAAIM,EAAOL,EAAUC,EAAI,WAAWG,CAAE,EAAIH,EAAI,YAAYG,CAAE,EAC5D,GAAI,CAACC,EACD,MACAb,GAAgBC,EAAOY,EAAMV,CAAW,EACxCM,EAAMI,EAEND,EAAKJ,EAAUK,EAAK,GAAKA,EAAK,IACtC,CACA,IAAIC,EAAUL,EAAI,KAAK,KAAKN,CAAW,EAAGY,EAAOC,EACjD,OAAIF,IAAYC,EAAQP,EAAUS,GAAchB,EAAOQ,EAAI,KAAM,CAAC,EAAIQ,GAAchB,EAAOQ,EAAI,GAAI,EAAE,IAAMM,EAAM,QAC7GC,EAASR,EAAUO,EAAM,IAAI,GAAKA,EAAM,IAAI,KAE5CC,EAASR,EAAUC,EAAI,GAAKA,EAAI,KAC7BS,EAAgB,OAAOF,EAAQR,EAAU,GAAK,CAAC,CAC1D,CApBSH,EAAAC,GAAA,gBAwBT,IAAMa,GAAmBd,EAAAe,GAAQC,GAAQD,EAAME,GAAShB,GAAac,EAAK,MAAOE,EAAO,CAACC,GAAYH,CAAI,CAAC,CAAC,EAAlF,oBAInBI,GAAoBnB,EAAAe,GAAQC,GAAQD,EAAME,GAAShB,GAAac,EAAK,MAAOE,EAAOC,GAAYH,CAAI,CAAC,CAAC,EAAjF,qBAC1B,SAASK,GAAaL,EAAMZ,EAAS,CACjC,OAAOa,GAAQD,EAAME,GAAS,CAC1B,GAAI,CAACA,EAAM,MACP,OAAOI,GAASJ,EAAOd,CAAO,EAClC,IAAImB,EAAQP,EAAK,eAAeE,EAAOd,CAAO,EAC9C,OAAOmB,EAAM,MAAQL,EAAM,KAAOK,EAAQP,EAAK,mBAAmBE,EAAOd,CAAO,CACpF,CAAC,CACL,CAPSH,EAAAoB,GAAA,gBAWT,IAAMG,GAAevB,EAAAe,GAAQK,GAAaL,EAAM,EAAK,EAAhC,gBAIfS,GAAiBxB,EAAAe,GAAQK,GAAaL,EAAM,EAAI,EAA/B,kBACvB,SAASU,GAASV,EAAM,CACpB,IAAIW,EAAaX,EAAK,UAAU,aAAeA,EAAK,UAAU,aAAe,EACzEY,EAAY,EAAGC,EAAe,EAAGC,EACrC,GAAIH,EAAY,CACZ,QAASI,KAAUf,EAAK,MAAM,MAAMgB,EAAW,aAAa,EAAG,CAC3D,IAAIC,EAAUF,EAAOf,CAAI,EAC6BiB,GAAQ,MAC1DL,EAAY,KAAK,IAAsDK,GAAQ,IAAKL,CAAS,GAC3CK,GAAQ,SAC1DJ,EAAe,KAAK,IAAsDI,GAAQ,OAAQJ,CAAY,EAC9G,CACAC,EAASd,EAAK,UAAU,aAAeY,EAAYC,CACvD,MAEIC,GAAUd,EAAK,IAAI,cAAc,aAAe,QAAQ,YAE5D,MAAO,CAAE,UAAAY,EAAW,aAAAC,EAAc,WAAAF,EAC9B,OAAQ,KAAK,IAAIX,EAAK,kBAAmBc,EAAS,CAAC,CAAE,CAC7D,CAlBS7B,EAAAyB,GAAA,YAmBT,SAASQ,GAAalB,EAAMZ,EAAS,CACjC,IAAI+B,EAAOT,GAASV,CAAI,EACpB,CAAE,MAAAnB,CAAM,EAAImB,EAAMoB,EAAYC,GAAUxC,EAAM,UAAWqB,GAClDA,EAAM,MAAQF,EAAK,eAAeE,EAAOd,EAAS+B,EAAK,MAAM,EAC9Db,GAASJ,EAAOd,CAAO,CAChC,EACD,GAAIgC,EAAU,GAAGvC,EAAM,SAAS,EAC5B,MAAO,GACX,IAAIyC,EACJ,GAAIH,EAAK,WAAY,CACjB,IAAII,EAAWvB,EAAK,YAAYnB,EAAM,UAAU,KAAK,IAAI,EACrD2C,EAAaxB,EAAK,UAAU,sBAAsB,EAClDyB,EAAYD,EAAW,IAAML,EAAK,UAAWO,EAAeF,EAAW,OAASL,EAAK,aACrFI,GAAYA,EAAS,IAAME,GAAaF,EAAS,OAASG,IAC1DJ,EAASN,EAAW,eAAeI,EAAU,KAAK,KAAM,CAAE,EAAG,QAAS,QAASG,EAAS,IAAME,CAAU,CAAC,EACjH,CACA,OAAAzB,EAAK,SAAS2B,GAAO9C,EAAOuC,CAAS,EAAG,CAAE,QAASE,CAAO,CAAC,EACpD,EACX,CAlBSrC,EAAAiC,GAAA,gBAsBT,IAAMU,GAAe3C,EAAAe,GAAQkB,GAAalB,EAAM,EAAK,EAAhC,gBAIf6B,GAAiB5C,EAAAe,GAAQkB,GAAalB,EAAM,EAAI,EAA/B,kBACvB,SAAS8B,GAAmB9B,EAAMb,EAAOC,EAAS,CAC9C,IAAI2C,EAAO/B,EAAK,YAAYb,EAAM,IAAI,EAAGoB,EAAQP,EAAK,mBAAmBb,EAAOC,CAAO,EAGvF,GAFImB,EAAM,MAAQpB,EAAM,MAAQoB,EAAM,OAASnB,EAAU2C,EAAK,GAAKA,EAAK,QACpExB,EAAQP,EAAK,mBAAmBb,EAAOC,EAAS,EAAK,GACrD,CAACA,GAAWmB,EAAM,MAAQwB,EAAK,MAAQA,EAAK,OAAQ,CACpD,IAAIC,EAAQ,OAAO,KAAKhC,EAAK,MAAM,SAAS+B,EAAK,KAAM,KAAK,IAAIA,EAAK,KAAO,IAAKA,EAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAC3FC,GAAS7C,EAAM,MAAQ4C,EAAK,KAAOC,IACnCzB,EAAQT,EAAgB,OAAOiC,EAAK,KAAOC,CAAK,EACxD,CACA,OAAOzB,CACX,CAVStB,EAAA6C,GAAA,sBAeT,IAAMG,GAA4BhD,EAAAe,GAAQC,GAAQD,EAAME,GAAS4B,GAAmB9B,EAAME,EAAO,EAAI,CAAC,EAApE,6BAO5BgC,GAA6BjD,EAAAe,GAAQC,GAAQD,EAAME,GAAS4B,GAAmB9B,EAAME,EAAO,EAAK,CAAC,EAArE,8BAI7BiC,GAAyBlD,EAAAe,GAAQC,GAAQD,EAAME,GAAS4B,GAAmB9B,EAAME,EAAO,CAACC,GAAYH,CAAI,CAAC,CAAC,EAAlF,0BAIzBoC,GAA0BnD,EAAAe,GAAQC,GAAQD,EAAME,GAAS4B,GAAmB9B,EAAME,EAAOC,GAAYH,CAAI,CAAC,CAAC,EAAjF,2BAI1BqC,GAAkBpD,EAAAe,GAAQC,GAAQD,EAAME,GAASJ,EAAgB,OAAOE,EAAK,YAAYE,EAAM,IAAI,EAAE,KAAM,CAAC,CAAC,EAA3F,mBAIlBoC,GAAgBrD,EAAAe,GAAQC,GAAQD,EAAME,GAASJ,EAAgB,OAAOE,EAAK,YAAYE,EAAM,IAAI,EAAE,GAAI,EAAE,CAAC,EAA1F,iBACtB,SAASqC,GAAkB1D,EAAO2D,EAAUC,EAAQ,CAChD,IAAIC,EAAQ,GAAOtB,EAAYC,GAAUxC,EAAM,UAAWqB,GAAS,CAC/D,IAAIyC,EAAW9C,GAAchB,EAAOqB,EAAM,KAAM,EAAE,GAC3CL,GAAchB,EAAOqB,EAAM,KAAM,CAAC,GACjCA,EAAM,KAAO,GAAKL,GAAchB,EAAOqB,EAAM,KAAO,EAAG,CAAC,GACxDA,EAAM,KAAOrB,EAAM,IAAI,QAAUgB,GAAchB,EAAOqB,EAAM,KAAO,EAAG,EAAE,EAChF,GAAI,CAACyC,GAAY,CAACA,EAAS,IACvB,OAAOzC,EACXwC,EAAQ,GACR,IAAIE,EAAOD,EAAS,MAAM,MAAQzC,EAAM,KAAOyC,EAAS,IAAI,GAAKA,EAAS,IAAI,KAC9E,OAAOF,EAAS3C,EAAgB,MAAMI,EAAM,OAAQ0C,CAAI,EAAI9C,EAAgB,OAAO8C,CAAI,CAC3F,CAAC,EACD,OAAKF,GAELF,EAASb,GAAO9C,EAAOuC,CAAS,CAAC,EAC1B,IAFI,EAGf,CAhBSnC,EAAAsD,GAAA,qBAqBT,IAAMM,GAAwB5D,EAAA,CAAC,CAAE,MAAAJ,EAAO,SAAA2D,CAAS,IAAMD,GAAkB1D,EAAO2D,EAAU,EAAK,EAAjE,yBAM9B,SAASM,GAAUC,EAAQC,EAAK,CAC5B,IAAIC,EAAYC,GAAUH,EAAO,MAAM,UAAWI,GAAS,CACvD,IAAIC,EAAOJ,EAAIG,CAAK,EACpB,OAAOE,EAAgB,MAAMF,EAAM,OAAQC,EAAK,KAAMA,EAAK,WAAYA,EAAK,WAAa,OAAWA,EAAK,KAAK,CAClH,CAAC,EACD,OAAIH,EAAU,GAAGF,EAAO,MAAM,SAAS,EAC5B,IACXA,EAAO,SAASO,GAAOP,EAAO,MAAOE,CAAS,CAAC,EACxC,GACX,CATSM,EAAAT,GAAA,aAUT,SAASU,GAAaC,EAAMC,EAAS,CACjC,OAAOZ,GAAUW,EAAMN,GAASM,EAAK,WAAWN,EAAOO,CAAO,CAAC,CACnE,CAFSH,EAAAC,GAAA,gBAOT,IAAMG,GAAiBJ,EAAAE,GAAQD,GAAaC,EAAM,CAACG,GAAYH,CAAI,CAAC,EAA7C,kBAIjBI,GAAkBN,EAAAE,GAAQD,GAAaC,EAAMG,GAAYH,CAAI,CAAC,EAA5C,mBAmBxB,SAASK,GAAcC,EAAMC,EAAS,CAClC,OAAOC,GAAUF,EAAMG,GAASH,EAAK,YAAYG,EAAOF,CAAO,CAAC,CACpE,CAFSG,EAAAL,GAAA,iBAOT,IAAMM,GAAkBD,EAAAJ,GAAQD,GAAcC,EAAM,CAACM,GAAYN,CAAI,CAAC,EAA9C,mBAIlBO,GAAmBH,EAAAJ,GAAQD,GAAcC,EAAMM,GAAYN,CAAI,CAAC,EAA7C,oBA8BzB,IAAMQ,GAAmBC,EAAAC,GAAQC,GAAUD,EAAME,GAASC,GAAaH,EAAK,MAAOE,EAAO,CAACE,GAAYJ,CAAI,CAAC,CAAC,EAApF,oBAInBK,GAAoBN,EAAAC,GAAQC,GAAUD,EAAME,GAASC,GAAaH,EAAK,MAAOE,EAAOE,GAAYJ,CAAI,CAAC,CAAC,EAAnF,qBAC1B,SAASM,GAAaN,EAAMO,EAAS,CACjC,OAAON,GAAUD,EAAME,GAASF,EAAK,eAAeE,EAAOK,CAAO,CAAC,CACvE,CAFSR,EAAAO,GAAA,gBAMT,IAAME,GAAeT,EAAAC,GAAQM,GAAaN,EAAM,EAAK,EAAhC,gBAIfS,GAAiBV,EAAAC,GAAQM,GAAaN,EAAM,EAAI,EAA/B,kBACvB,SAASU,GAAaV,EAAMO,EAAS,CACjC,OAAON,GAAUD,EAAME,GAASF,EAAK,eAAeE,EAAOK,EAASI,GAASX,CAAI,EAAE,MAAM,CAAC,CAC9F,CAFSD,EAAAW,GAAA,gBAMT,IAAME,GAAeb,EAAAC,GAAQU,GAAaV,EAAM,EAAK,EAAhC,gBAIfa,GAAiBd,EAAAC,GAAQU,GAAaV,EAAM,EAAI,EAA/B,kBAIjBc,GAA4Bf,EAAAC,GAAQC,GAAUD,EAAME,GAASa,GAAmBf,EAAME,EAAO,EAAI,CAAC,EAAtE,6BAI5Bc,GAA6BjB,EAAAC,GAAQC,GAAUD,EAAME,GAASa,GAAmBf,EAAME,EAAO,EAAK,CAAC,EAAvE,8BAI7Be,GAAyBlB,EAAAC,GAAQC,GAAUD,EAAME,GAASa,GAAmBf,EAAME,EAAO,CAACE,GAAYJ,CAAI,CAAC,CAAC,EAApF,0BAIzBkB,GAA0BnB,EAAAC,GAAQC,GAAUD,EAAME,GAASa,GAAmBf,EAAME,EAAOE,GAAYJ,CAAI,CAAC,CAAC,EAAnF,2BAI1BmB,GAAkBpB,EAAAC,GAAQC,GAAUD,EAAME,GAASkB,EAAgB,OAAOpB,EAAK,YAAYE,EAAM,IAAI,EAAE,IAAI,CAAC,EAA1F,mBAIlBmB,GAAgBtB,EAAAC,GAAQC,GAAUD,EAAME,GAASkB,EAAgB,OAAOpB,EAAK,YAAYE,EAAM,IAAI,EAAE,EAAE,CAAC,EAAxF,iBAIhBoB,GAAiBvB,EAAA,CAAC,CAAE,MAAAwB,EAAO,SAAAC,CAAS,KACtCA,EAASC,GAAOF,EAAO,CAAE,OAAQ,CAAE,CAAC,CAAC,EAC9B,IAFY,kBAOjBG,GAAe3B,EAAA,CAAC,CAAE,MAAAwB,EAAO,SAAAC,CAAS,KACpCA,EAASC,GAAOF,EAAO,CAAE,OAAQA,EAAM,IAAI,MAAO,CAAC,CAAC,EAC7C,IAFU,gBAOfI,GAAiB5B,EAAA,CAAC,CAAE,MAAAwB,EAAO,SAAAC,CAAS,KACtCA,EAASC,GAAOF,EAAO,CAAE,OAAQA,EAAM,UAAU,KAAK,OAAQ,KAAM,CAAE,CAAC,CAAC,EACjE,IAFY,kBAOjBK,GAAe7B,EAAA,CAAC,CAAE,MAAAwB,EAAO,SAAAC,CAAS,KACpCA,EAASC,GAAOF,EAAO,CAAE,OAAQA,EAAM,UAAU,KAAK,OAAQ,KAAMA,EAAM,IAAI,MAAO,CAAC,CAAC,EAChF,IAFU,gBAOfM,GAAY9B,EAAA,CAAC,CAAE,MAAAwB,EAAO,SAAAC,CAAS,KACjCA,EAASD,EAAM,OAAO,CAAE,UAAW,CAAE,OAAQ,EAAG,KAAMA,EAAM,IAAI,MAAO,EAAG,UAAW,QAAS,CAAC,CAAC,EACzF,IAFO,aAOZO,GAAa/B,EAAA,CAAC,CAAE,MAAAwB,EAAO,SAAAC,CAAS,IAAM,CACxC,IAAIO,EAASC,GAAmBT,CAAK,EAAE,IAAI,CAAC,CAAE,KAAAU,EAAM,GAAAC,CAAG,IAAMd,EAAgB,MAAMa,EAAM,KAAK,IAAIC,EAAK,EAAGX,EAAM,IAAI,MAAM,CAAC,CAAC,EAC5H,OAAAC,EAASD,EAAM,OAAO,CAAE,UAAWH,EAAgB,OAAOW,CAAM,EAAG,UAAW,QAAS,CAAC,CAAC,EAClF,EACX,EAJmB,cAWbI,GAAqBpC,EAAA,CAAC,CAAE,MAAAwB,EAAO,SAAAC,CAAS,IAAM,CAChD,IAAIY,EAAYC,GAAUd,EAAM,UAAWrB,GAAS,CAChD,IAAIoC,EAAOC,EAAWhB,CAAK,EAAGiB,EAAQF,EAAK,aAAapC,EAAM,KAAM,CAAC,EACrE,GAAIA,EAAM,MAAO,CACb,IAAIuC,EAAcH,EAAK,aAAapC,EAAM,KAAM,EAAE,EAC9CuC,EAAY,KAAK,MAAQD,EAAM,KAAK,MAAQC,EAAY,KAAK,IAAMD,EAAM,KAAK,KAC9EA,EAAQC,EAChB,CACA,QAASC,EAAMF,EAAOE,EAAKA,EAAMA,EAAI,KAAM,CACvC,GAAI,CAAE,KAAAC,CAAK,EAAID,EACf,IAAMC,EAAK,KAAOzC,EAAM,MAAQyC,EAAK,IAAMzC,EAAM,IAC5CyC,EAAK,GAAKzC,EAAM,IAAMyC,EAAK,MAAQzC,EAAM,OAC1CwC,EAAI,KACJ,OAAOtB,EAAgB,MAAMuB,EAAK,GAAIA,EAAK,IAAI,CACvD,CACA,OAAOzC,CACX,CAAC,EACD,OAAIkC,EAAU,GAAGb,EAAM,SAAS,EACrB,IACXC,EAASC,GAAOF,EAAOa,CAAS,CAAC,EAC1B,GACX,EArB2B,sBAsB3B,SAASQ,GAAoB5C,EAAMO,EAAS,CACxC,GAAI,CAAE,MAAAgB,CAAM,EAAIvB,EAAM6C,EAAMtB,EAAM,UAAWQ,EAASR,EAAM,UAAU,OAAO,MAAM,EACnF,QAASrB,KAASqB,EAAM,UAAU,OAAQ,CACtC,IAAIuB,EAAOvB,EAAM,IAAI,OAAOrB,EAAM,IAAI,EACtC,GAAIK,EAAUuC,EAAK,GAAK9C,EAAK,MAAM,IAAI,OAAS8C,EAAK,KAAO,EACxD,QAASJ,EAAMxC,IAAS,CACpB,IAAI6C,EAAO/C,EAAK,eAAe0C,EAAKnC,CAAO,EAC3C,GAAIwC,EAAK,KAAOD,EAAK,MAAQC,EAAK,KAAOD,EAAK,GAAI,CACzCf,EAAO,KAAKiB,GAAKA,EAAE,MAAQD,EAAK,IAAI,GACrChB,EAAO,KAAKgB,CAAI,EACpB,KACJ,KACK,IAAIA,EAAK,MAAQL,EAAI,KACtB,MAGAA,EAAMK,EAEd,CACR,CACA,OAAIhB,EAAO,QAAUc,EAAI,OAAO,OACrB,IACX7C,EAAK,SAASyB,GAAOF,EAAOH,EAAgB,OAAOW,EAAQA,EAAO,OAAS,CAAC,CAAC,CAAC,EACvE,GACX,CAxBShC,EAAA6C,GAAA,uBA6BT,IAAMK,GAAiBlD,EAAAC,GAAQ4C,GAAoB5C,EAAM,EAAK,EAAvC,kBAKjBkD,GAAiBnD,EAAAC,GAAQ4C,GAAoB5C,EAAM,EAAI,EAAtC,kBAMjBmD,GAAoBpD,EAAA,CAAC,CAAE,MAAAwB,EAAO,SAAAC,CAAS,IAAM,CAC/C,IAAIkB,EAAMnB,EAAM,UAAWa,EAAY,KAKvC,OAJIM,EAAI,OAAO,OAAS,EACpBN,EAAYhB,EAAgB,OAAO,CAACsB,EAAI,IAAI,CAAC,EACvCA,EAAI,KAAK,QACfN,EAAYhB,EAAgB,OAAO,CAACA,EAAgB,OAAOsB,EAAI,KAAK,IAAI,CAAC,CAAC,GACzEN,GAELZ,EAASC,GAAOF,EAAOa,CAAS,CAAC,EAC1B,IAFI,EAGf,EAV0B,qBAW1B,SAASgB,GAASC,EAAQC,EAAI,CAC1B,GAAID,EAAO,MAAM,SACb,MAAO,GACX,IAAIE,EAAQ,mBAAoB,CAAE,MAAAhC,CAAM,EAAI8B,EACxCG,EAAUjC,EAAM,cAAcrB,GAAS,CACvC,GAAI,CAAE,KAAA+B,EAAM,GAAAC,CAAG,EAAIhC,EACnB,GAAI+B,GAAQC,EAAI,CACZ,IAAIuB,EAAUH,EAAGpD,CAAK,EAClBuD,EAAUxB,GACVsB,EAAQ,kBACRE,EAAUC,GAAWL,EAAQI,EAAS,EAAK,GAEtCA,EAAUxB,IACfsB,EAAQ,iBACRE,EAAUC,GAAWL,EAAQI,EAAS,EAAI,GAE9CxB,EAAO,KAAK,IAAIA,EAAMwB,CAAO,EAC7BvB,EAAK,KAAK,IAAIA,EAAIuB,CAAO,CAC7B,MAEIxB,EAAOyB,GAAWL,EAAQpB,EAAM,EAAK,EACrCC,EAAKwB,GAAWL,EAAQnB,EAAI,EAAI,EAEpC,OAAOD,GAAQC,EAAK,CAAE,MAAAhC,CAAM,EAAI,CAAE,QAAS,CAAE,KAAA+B,EAAM,GAAAC,CAAG,EAAG,MAAOd,EAAgB,OAAOa,EAAMA,EAAO/B,EAAM,KAAO,GAAK,CAAC,CAAE,CAC7H,CAAC,EACD,OAAIsD,EAAQ,QAAQ,MACT,IACXH,EAAO,SAAS9B,EAAM,OAAOiC,EAAS,CAClC,eAAgB,GAChB,UAAWD,EACX,QAASA,GAAS,mBAAqBI,EAAW,SAAS,GAAGpC,EAAM,OAAO,mBAAmB,CAAC,EAAI,MACvG,CAAC,CAAC,EACK,GACX,CAjCSxB,EAAAqD,GAAA,YAkCT,SAASM,GAAWL,EAAQO,EAAKrD,EAAS,CACtC,GAAI8C,aAAkBM,EAClB,QAAS5B,KAAUsB,EAAO,MAAM,MAAMM,EAAW,YAAY,EAAE,IAAIE,GAAKA,EAAER,CAAM,CAAC,EAC7EtB,EAAO,QAAQ6B,EAAKA,EAAK,CAAC3B,EAAMC,IAAO,CAC/BD,EAAO2B,GAAO1B,EAAK0B,IACnBA,EAAMrD,EAAU2B,EAAKD,EAC7B,CAAC,EACT,OAAO2B,CACX,CARS7D,EAAA2D,GAAA,cAST,IAAMI,GAAe/D,EAAA,CAACsD,EAAQ9C,EAASwD,IAAiBX,GAASC,EAAQnD,GAAS,CAC9E,IAAI0D,EAAM1D,EAAM,KAAM,CAAE,MAAAqB,CAAM,EAAI8B,EAAQP,EAAOvB,EAAM,IAAI,OAAOqC,CAAG,EAAGI,EAAQC,EAChF,GAAIF,GAAgB,CAACxD,GAAWqD,EAAMd,EAAK,MAAQc,EAAMd,EAAK,KAAO,KACjE,CAAC,SAAS,KAAKkB,EAASlB,EAAK,KAAK,MAAM,EAAGc,EAAMd,EAAK,IAAI,CAAC,EAAG,CAC9D,GAAIkB,EAAOA,EAAO,OAAS,CAAC,GAAK,IAC7B,OAAOJ,EAAM,EACjB,IAAIM,EAAMC,GAAYH,EAAQzC,EAAM,OAAO,EAAG6C,EAAOF,EAAMG,GAAc9C,CAAK,GAAK8C,GAAc9C,CAAK,EACtG,QAAS+C,EAAI,EAAGA,EAAIF,GAAQJ,EAAOA,EAAO,OAAS,EAAIM,CAAC,GAAK,IAAKA,IAC9DV,IACJK,EAAYL,CAChB,MAEIK,EAAYM,GAAiBzB,EAAK,KAAMc,EAAMd,EAAK,KAAMvC,EAASA,CAAO,EAAIuC,EAAK,KAC9EmB,GAAaL,GAAOd,EAAK,SAAWvC,EAAUgB,EAAM,IAAI,MAAQ,GAChE0C,GAAa1D,EAAU,EAAI,GACtB,CAACA,GAAW,kBAAkB,KAAKuC,EAAK,KAAK,MAAMmB,EAAYnB,EAAK,KAAMc,EAAMd,EAAK,IAAI,CAAC,IAC/FmB,EAAYM,GAAiBzB,EAAK,KAAMmB,EAAYnB,EAAK,KAAM,GAAO,EAAK,EAAIA,EAAK,MAE5F,OAAOmB,CACX,CAAC,EAnBoB,gBAwBfO,GAAqBzE,EAAAC,GAAQ8D,GAAa9D,EAAM,GAAO,EAAI,EAAtC,sBAU3B,IAAMyE,GAAoBC,EAAAC,GAAQC,GAAaD,EAAM,GAAM,EAAK,EAAtC,qBACpBE,GAAgBH,EAAA,CAACI,EAAQC,IAAYC,GAASF,EAAQG,GAAS,CACjE,IAAIC,EAAMD,EAAM,KAAM,CAAE,MAAAE,CAAM,EAAIL,EAAQM,EAAOD,EAAM,IAAI,OAAOD,CAAG,EACjEG,EAAaF,EAAM,gBAAgBD,CAAG,EAC1C,QAASI,EAAM,OAAQ,CACnB,GAAIJ,IAAQH,EAAUK,EAAK,GAAKA,EAAK,MAAO,CACpCF,GAAOD,EAAM,MAAQG,EAAK,SAAWL,EAAUI,EAAM,IAAI,MAAQ,KACjED,GAAOH,EAAU,EAAI,IACzB,KACJ,CACA,IAAIQ,EAAOC,GAAiBJ,EAAK,KAAMF,EAAME,EAAK,KAAML,CAAO,EAAIK,EAAK,KACpEK,EAAWL,EAAK,KAAK,MAAM,KAAK,IAAIF,EAAKK,CAAI,EAAIH,EAAK,KAAM,KAAK,IAAIF,EAAKK,CAAI,EAAIH,EAAK,IAAI,EAC3FM,EAAUL,EAAWI,CAAQ,EACjC,GAAIH,GAAO,MAAQI,GAAWJ,EAC1B,OACAG,GAAY,KAAOP,GAAOD,EAAM,QAChCK,EAAMI,GACVR,EAAMK,CACV,CACA,OAAOL,CACX,CAAC,EAnBqB,iBAyBhBS,GAAsBjB,EAAAI,GAAUD,GAAcC,EAAQ,EAAK,EAArC,uBAItBc,GAAqBlB,EAAAI,GAAUD,GAAcC,EAAQ,EAAI,EAApC,sBAY3B,IAAMe,GAAkBC,EAAAC,GAAQC,GAASD,EAAME,GAAS,CACpD,IAAIC,EAAUH,EAAK,YAAYE,EAAM,IAAI,EAAE,GAC3C,OAAOA,EAAM,KAAOC,EAAUA,EAAU,KAAK,IAAIH,EAAK,MAAM,IAAI,OAAQE,EAAM,KAAO,CAAC,CAC1F,CAAC,EAHuB,mBAiBxB,IAAME,GAA6BC,EAAAC,GAAQC,GAASD,EAAME,GAAS,CAC/D,IAAIC,EAAYH,EAAK,mBAAmBE,EAAO,EAAK,EAAE,KACtD,OAAOA,EAAM,KAAOC,EAAYA,EAAY,KAAK,IAAI,EAAGD,EAAM,KAAO,CAAC,CAC1E,CAAC,EAHkC,8BAQ7BE,GAA4BL,EAAAC,GAAQC,GAASD,EAAME,GAAS,CAC9D,IAAIC,EAAYH,EAAK,mBAAmBE,EAAO,EAAI,EAAE,KACrD,OAAOA,EAAM,KAAOC,EAAYA,EAAY,KAAK,IAAIH,EAAK,MAAM,IAAI,OAAQE,EAAM,KAAO,CAAC,CAC9F,CAAC,EAHiC,6BAoClC,IAAMG,GAAYC,EAAA,CAAC,CAAE,MAAAC,EAAO,SAAAC,CAAS,IAAM,CACvC,GAAID,EAAM,SACN,MAAO,GACX,IAAIE,EAAUF,EAAM,cAAcG,IACvB,CAAE,QAAS,CAAE,KAAMA,EAAM,KAAM,GAAIA,EAAM,GAAI,OAAQC,EAAK,GAAG,CAAC,GAAI,EAAE,CAAC,CAAE,EAC1E,MAAOC,EAAgB,OAAOF,EAAM,IAAI,CAAE,EACjD,EACD,OAAAF,EAASD,EAAM,OAAOE,EAAS,CAAE,eAAgB,GAAM,UAAW,OAAQ,CAAC,CAAC,EACrE,EACX,EATkB,aAaZI,GAAiBP,EAAA,CAAC,CAAE,MAAAC,EAAO,SAAAC,CAAS,IAAM,CAC5C,GAAID,EAAM,SACN,MAAO,GACX,IAAIE,EAAUF,EAAM,cAAcG,GAAS,CACvC,GAAI,CAACA,EAAM,OAASA,EAAM,MAAQ,GAAKA,EAAM,MAAQH,EAAM,IAAI,OAC3D,MAAO,CAAE,MAAAG,CAAM,EACnB,IAAII,EAAMJ,EAAM,KAAMK,EAAOR,EAAM,IAAI,OAAOO,CAAG,EAC7CE,EAAOF,GAAOC,EAAK,KAAOD,EAAM,EAAIG,GAAiBF,EAAK,KAAMD,EAAMC,EAAK,KAAM,EAAK,EAAIA,EAAK,KAC/FG,EAAKJ,GAAOC,EAAK,GAAKD,EAAM,EAAIG,GAAiBF,EAAK,KAAMD,EAAMC,EAAK,KAAM,EAAI,EAAIA,EAAK,KAC9F,MAAO,CAAE,QAAS,CAAE,KAAAC,EAAM,GAAAE,EAAI,OAAQX,EAAM,IAAI,MAAMO,EAAKI,CAAE,EAAE,OAAOX,EAAM,IAAI,MAAMS,EAAMF,CAAG,CAAC,CAAE,EAC9F,MAAOF,EAAgB,OAAOM,CAAE,CAAE,CAC1C,CAAC,EACD,OAAIT,EAAQ,QAAQ,MACT,IACXD,EAASD,EAAM,OAAOE,EAAS,CAAE,eAAgB,GAAM,UAAW,gBAAiB,CAAC,CAAC,EAC9E,GACX,EAhBuB,kBAiBvB,SAASU,GAAmBZ,EAAO,CAC/B,IAAIa,EAAS,CAAC,EAAGC,EAAO,GACxB,QAASX,KAASH,EAAM,UAAU,OAAQ,CACtC,IAAIe,EAAYf,EAAM,IAAI,OAAOG,EAAM,IAAI,EAAGa,EAAUhB,EAAM,IAAI,OAAOG,EAAM,EAAE,EAGjF,GAFI,CAACA,EAAM,OAASA,EAAM,IAAMa,EAAQ,OACpCA,EAAUhB,EAAM,IAAI,OAAOG,EAAM,GAAK,CAAC,GACvCW,GAAQC,EAAU,OAAQ,CAC1B,IAAIE,EAAOJ,EAAOA,EAAO,OAAS,CAAC,EACnCI,EAAK,GAAKD,EAAQ,GAClBC,EAAK,OAAO,KAAKd,CAAK,CAC1B,MAEIU,EAAO,KAAK,CAAE,KAAME,EAAU,KAAM,GAAIC,EAAQ,GAAI,OAAQ,CAACb,CAAK,CAAE,CAAC,EAEzEW,EAAOE,EAAQ,OAAS,CAC5B,CACA,OAAOH,CACX,CAjBSd,EAAAa,GAAA,sBAkBT,SAASM,GAASlB,EAAOC,EAAUkB,EAAS,CACxC,GAAInB,EAAM,SACN,MAAO,GACX,IAAIE,EAAU,CAAC,EAAGkB,EAAS,CAAC,EAC5B,QAASC,KAAST,GAAmBZ,CAAK,EAAG,CACzC,GAAImB,EAAUE,EAAM,IAAMrB,EAAM,IAAI,OAASqB,EAAM,MAAQ,EACvD,SACJ,IAAIC,EAAWtB,EAAM,IAAI,OAAOmB,EAAUE,EAAM,GAAK,EAAIA,EAAM,KAAO,CAAC,EACnEE,EAAOD,EAAS,OAAS,EAC7B,GAAIH,EAAS,CACTjB,EAAQ,KAAK,CAAE,KAAMmB,EAAM,GAAI,GAAIC,EAAS,EAAG,EAAG,CAAE,KAAMD,EAAM,KAAM,OAAQC,EAAS,KAAOtB,EAAM,SAAU,CAAC,EAC/G,QAASwB,KAAKH,EAAM,OAChBD,EAAO,KAAKf,EAAgB,MAAM,KAAK,IAAIL,EAAM,IAAI,OAAQwB,EAAE,OAASD,CAAI,EAAG,KAAK,IAAIvB,EAAM,IAAI,OAAQwB,EAAE,KAAOD,CAAI,CAAC,CAAC,CACjI,KACK,CACDrB,EAAQ,KAAK,CAAE,KAAMoB,EAAS,KAAM,GAAID,EAAM,IAAK,EAAG,CAAE,KAAMA,EAAM,GAAI,OAAQrB,EAAM,UAAYsB,EAAS,IAAK,CAAC,EACjH,QAASE,KAAKH,EAAM,OAChBD,EAAO,KAAKf,EAAgB,MAAMmB,EAAE,OAASD,EAAMC,EAAE,KAAOD,CAAI,CAAC,CACzE,CACJ,CACA,OAAKrB,EAAQ,QAEbD,EAASD,EAAM,OAAO,CAClB,QAAAE,EACA,eAAgB,GAChB,UAAWG,EAAgB,OAAOe,EAAQpB,EAAM,UAAU,SAAS,EACnE,UAAW,WACf,CAAC,CAAC,EACK,IAPI,EAQf,CA7BSD,EAAAmB,GAAA,YAiCT,IAAMO,GAAa1B,EAAA,CAAC,CAAE,MAAAC,EAAO,SAAAC,CAAS,IAAMiB,GAASlB,EAAOC,EAAU,EAAK,EAAxD,cAIbyB,GAAe3B,EAAA,CAAC,CAAE,MAAAC,EAAO,SAAAC,CAAS,IAAMiB,GAASlB,EAAOC,EAAU,EAAI,EAAvD,gBACrB,SAAS0B,GAAS3B,EAAOC,EAAUkB,EAAS,CACxC,GAAInB,EAAM,SACN,MAAO,GACX,IAAIE,EAAU,CAAC,EACf,QAASmB,KAAST,GAAmBZ,CAAK,EAClCmB,EACAjB,EAAQ,KAAK,CAAE,KAAMmB,EAAM,KAAM,OAAQrB,EAAM,IAAI,MAAMqB,EAAM,KAAMA,EAAM,EAAE,EAAIrB,EAAM,SAAU,CAAC,EAElGE,EAAQ,KAAK,CAAE,KAAMmB,EAAM,GAAI,OAAQrB,EAAM,UAAYA,EAAM,IAAI,MAAMqB,EAAM,KAAMA,EAAM,EAAE,CAAE,CAAC,EAExG,IAAIO,EAAY5B,EAAM,QAAQE,CAAO,EACrC,OAAAD,EAASD,EAAM,OAAO,CAClB,QAAS4B,EACT,UAAW5B,EAAM,UAAU,IAAI4B,EAAWT,EAAU,EAAI,EAAE,EAC1D,eAAgB,GAChB,UAAW,gBACf,CAAC,CAAC,EACK,EACX,CAlBSpB,EAAA4B,GAAA,YAsBT,IAAME,GAAa9B,EAAA,CAAC,CAAE,MAAAC,EAAO,SAAAC,CAAS,IAAM0B,GAAS3B,EAAOC,EAAU,EAAK,EAAxD,cAIb6B,GAAe/B,EAAA,CAAC,CAAE,MAAAC,EAAO,SAAAC,CAAS,IAAM0B,GAAS3B,EAAOC,EAAU,EAAI,EAAvD,gBAIf8B,GAAahC,EAAAiC,GAAQ,CACvB,GAAIA,EAAK,MAAM,SACX,MAAO,GACX,GAAI,CAAE,MAAAhC,CAAM,EAAIgC,EAAM9B,EAAUF,EAAM,QAAQY,GAAmBZ,CAAK,EAAE,IAAI,CAAC,CAAE,KAAAS,EAAM,GAAAE,CAAG,KAChFF,EAAO,EACPA,IACKE,EAAKX,EAAM,IAAI,QACpBW,IACG,CAAE,KAAAF,EAAM,GAAAE,CAAG,EACrB,CAAC,EACEsB,EAAYC,GAAUlC,EAAM,UAAWG,GAAS,CAChD,IAAIgC,EACJ,GAAIH,EAAK,aAAc,CACnB,IAAIX,EAAQW,EAAK,YAAY7B,EAAM,IAAI,EAAGI,EAAMyB,EAAK,YAAY7B,EAAM,KAAMA,EAAM,OAAS,CAAC,EACzFI,IACA4B,EAAQd,EAAM,OAASW,EAAK,YAAezB,EAAI,OAASyB,EAAK,kBAAoB,EACzF,CACA,OAAOA,EAAK,eAAe7B,EAAO,GAAMgC,CAAI,CAChD,CAAC,EAAE,IAAIjC,CAAO,EACd,OAAA8B,EAAK,SAAS,CAAE,QAAA9B,EAAS,UAAA+B,EAAW,eAAgB,GAAM,UAAW,aAAc,CAAC,EAC7E,EACX,EArBmB,cA2CnB,SAASG,GAAkBC,EAAOC,EAAK,CACnC,GAAI,iBAAiB,KAAKD,EAAM,SAASC,EAAM,EAAGA,EAAM,CAAC,CAAC,EACtD,MAAO,CAAE,KAAMA,EAAK,GAAIA,CAAI,EAChC,IAAIC,EAAUC,EAAWH,CAAK,EAAE,aAAaC,CAAG,EAC5CG,EAASF,EAAQ,YAAYD,CAAG,EAAGI,EAAQH,EAAQ,WAAWD,CAAG,EAAGK,EACxE,OAAIF,GAAUC,GAASD,EAAO,IAAMH,GAAOI,EAAM,MAAQJ,IACpDK,EAAWF,EAAO,KAAK,KAAKG,EAAS,QAAQ,IAAMD,EAAS,QAAQD,EAAM,IAAI,EAAI,IACnFL,EAAM,IAAI,OAAOI,EAAO,EAAE,EAAE,MAAQJ,EAAM,IAAI,OAAOK,EAAM,IAAI,EAAE,MACjE,CAAC,KAAK,KAAKL,EAAM,SAASI,EAAO,GAAIC,EAAM,IAAI,CAAC,EACzC,CAAE,KAAMD,EAAO,GAAI,GAAIC,EAAM,IAAK,EACtC,IACX,CAXSG,EAAAT,GAAA,qBAmBT,IAAMU,GAAsCC,GAAiB,EAAK,EAI5DC,GAA+BD,GAAiB,EAAI,EAC1D,SAASA,GAAiBE,EAAO,CAC7B,MAAO,CAAC,CAAE,MAAAZ,EAAO,SAAAa,CAAS,IAAM,CAC5B,GAAIb,EAAM,SACN,MAAO,GACX,IAAIc,EAAUd,EAAM,cAAce,GAAS,CACvC,GAAI,CAAE,KAAAC,EAAM,GAAAC,CAAG,EAAIF,EAAOG,EAAOlB,EAAM,IAAI,OAAOgB,CAAI,EAClDG,EAAU,CAACP,GAASI,GAAQC,GAAMlB,GAAkBC,EAAOgB,CAAI,EAC/DJ,IACAI,EAAOC,GAAMA,GAAMC,EAAK,GAAKA,EAAOlB,EAAM,IAAI,OAAOiB,CAAE,GAAG,IAC9D,IAAIG,EAAK,IAAIC,GAAcrB,EAAO,CAAE,cAAegB,EAAM,oBAAqB,CAAC,CAACG,CAAQ,CAAC,EACrFG,EAASC,GAAeH,EAAIJ,CAAI,EAGpC,IAFIM,GAAU,OACVA,EAASE,GAAY,OAAO,KAAKxB,EAAM,IAAI,OAAOgB,CAAI,EAAE,IAAI,EAAE,CAAC,EAAGhB,EAAM,OAAO,GAC5EiB,EAAKC,EAAK,IAAM,KAAK,KAAKA,EAAK,KAAKD,EAAKC,EAAK,IAAI,CAAC,GACtDD,IACAE,EACC,CAAE,KAAAH,EAAM,GAAAC,CAAG,EAAIE,EACXH,EAAOE,EAAK,MAAQF,EAAOE,EAAK,KAAO,KAAO,CAAC,KAAK,KAAKA,EAAK,KAAK,MAAM,EAAGF,CAAI,CAAC,IACtFA,EAAOE,EAAK,MAChB,IAAIO,EAAS,CAAC,GAAIC,GAAa1B,EAAOsB,CAAM,CAAC,EAC7C,OAAIH,GACAM,EAAO,KAAKC,GAAa1B,EAAOoB,EAAG,WAAWF,EAAK,KAAM,EAAE,CAAC,CAAC,EAC1D,CAAE,QAAS,CAAE,KAAAF,EAAM,GAAAC,EAAI,OAAQU,EAAK,GAAGF,CAAM,CAAE,EAClD,MAAOG,EAAgB,OAAOZ,EAAO,EAAIS,EAAO,CAAC,EAAE,MAAM,CAAE,CACnE,CAAC,EACD,OAAAZ,EAASb,EAAM,OAAOc,EAAS,CAAE,eAAgB,GAAM,UAAW,OAAQ,CAAC,CAAC,EACrE,EACX,CACJ,CA5BSN,EAAAE,GAAA,oBA6BT,SAASmB,GAAqB7B,EAAO8B,EAAG,CACpC,IAAIC,EAAS,GACb,OAAO/B,EAAM,cAAce,GAAS,CAChC,IAAID,EAAU,CAAC,EACf,QAASb,EAAMc,EAAM,KAAMd,GAAOc,EAAM,IAAK,CACzC,IAAIG,EAAOlB,EAAM,IAAI,OAAOC,CAAG,EAC3BiB,EAAK,OAASa,IAAWhB,EAAM,OAASA,EAAM,GAAKG,EAAK,QACxDY,EAAEZ,EAAMJ,EAASC,CAAK,EACtBgB,EAASb,EAAK,QAElBjB,EAAMiB,EAAK,GAAK,CACpB,CACA,IAAIc,EAAYhC,EAAM,QAAQc,CAAO,EACrC,MAAO,CAAE,QAAAA,EACL,MAAOc,EAAgB,MAAMI,EAAU,OAAOjB,EAAM,OAAQ,CAAC,EAAGiB,EAAU,OAAOjB,EAAM,KAAM,CAAC,CAAC,CAAE,CACzG,CAAC,CACL,CAhBSP,EAAAqB,GAAA,wBAsBT,IAAMI,GAAkBzB,EAAA,CAAC,CAAE,MAAAR,EAAO,SAAAa,CAAS,IAAM,CAC7C,GAAIb,EAAM,SACN,MAAO,GACX,IAAIkC,EAAU,OAAO,OAAO,IAAI,EAC5BhC,EAAU,IAAImB,GAAcrB,EAAO,CAAE,oBAAqBQ,EAAA2B,GAAS,CAC/D,IAAIC,EAAQF,EAAQC,CAAK,EACzB,OAAOC,GAAgB,EAC3B,EAH0D,sBAGxD,CAAC,EACHtB,EAAUe,GAAqB7B,EAAO,CAACkB,EAAMJ,EAASC,IAAU,CAChE,IAAIO,EAASC,GAAerB,EAASgB,EAAK,IAAI,EAC9C,GAAII,GAAU,KACV,OACC,KAAK,KAAKJ,EAAK,IAAI,IACpBI,EAAS,GACb,IAAIe,EAAM,OAAO,KAAKnB,EAAK,IAAI,EAAE,CAAC,EAC9BoB,EAAOZ,GAAa1B,EAAOsB,CAAM,GACjCe,GAAOC,GAAQvB,EAAM,KAAOG,EAAK,KAAOmB,EAAI,UAC5CH,EAAQhB,EAAK,IAAI,EAAII,EACrBR,EAAQ,KAAK,CAAE,KAAMI,EAAK,KAAM,GAAIA,EAAK,KAAOmB,EAAI,OAAQ,OAAQC,CAAK,CAAC,EAElF,CAAC,EACD,OAAKxB,EAAQ,QAAQ,OACjBD,EAASb,EAAM,OAAOc,EAAS,CAAE,UAAW,QAAS,CAAC,CAAC,EACpD,EACX,EAxBwB,mBA6BlByB,GAAa/B,EAAA,CAAC,CAAE,MAAAR,EAAO,SAAAa,CAAS,IAC9Bb,EAAM,SACC,IACXa,EAASb,EAAM,OAAO6B,GAAqB7B,EAAO,CAACkB,EAAMJ,IAAY,CACjEA,EAAQ,KAAK,CAAE,KAAMI,EAAK,KAAM,OAAQlB,EAAM,MAAMwC,EAAU,CAAE,CAAC,CACrE,CAAC,EAAG,CAAE,UAAW,cAAe,CAAC,CAAC,EAC3B,IANQ,cAYbC,GAAajC,EAAA,CAAC,CAAE,MAAAR,EAAO,SAAAa,CAAS,IAC9Bb,EAAM,SACC,IACXa,EAASb,EAAM,OAAO6B,GAAqB7B,EAAO,CAACkB,EAAMJ,IAAY,CACjE,IAAI4B,EAAQ,OAAO,KAAKxB,EAAK,IAAI,EAAE,CAAC,EACpC,GAAI,CAACwB,EACD,OACJ,IAAIC,EAAMnB,GAAYkB,EAAO1C,EAAM,OAAO,EAAG4C,EAAO,EAChDnB,EAASC,GAAa1B,EAAO,KAAK,IAAI,EAAG2C,EAAME,GAAc7C,CAAK,CAAC,CAAC,EACxE,KAAO4C,EAAOF,EAAM,QAAUE,EAAOnB,EAAO,QAAUiB,EAAM,WAAWE,CAAI,GAAKnB,EAAO,WAAWmB,CAAI,GAClGA,IACJ9B,EAAQ,KAAK,CAAE,KAAMI,EAAK,KAAO0B,EAAM,GAAI1B,EAAK,KAAOwB,EAAM,OAAQ,OAAQjB,EAAO,MAAMmB,CAAI,CAAE,CAAC,CACrG,CAAC,EAAG,CAAE,UAAW,eAAgB,CAAC,CAAC,EAC5B,IAbQ,cAsBbE,GAAqBtC,EAAAuC,IACvBA,EAAK,gBAAgB,EACd,IAFgB,sBA2C3B,IAAMC,GAAmB,CACrB,CAAE,IAAK,SAAU,IAAKC,GAAgB,MAAOC,GAAgB,eAAgB,EAAK,EAClF,CAAE,IAAK,SAAU,IAAKC,GAAiB,MAAOC,EAAgB,EAC9D,CAAE,IAAK,SAAU,IAAKC,GAAc,MAAOC,EAAa,EACxD,CAAE,IAAK,SAAU,IAAKC,GAAgB,MAAOC,EAAe,EAC5D,CAAE,IAAK,SAAU,IAAKC,GAAiB,MAAOC,EAAgB,EAC9D,CAAE,IAAK,SAAU,IAAKC,GAAe,MAAOC,EAAc,EAC1D,CAAE,IAAK,SAAU,IAAKC,EAAkB,EACxC,CAAE,IAAK,SAAU,IAAKC,EAAmB,EACzC,CAAE,IAAK,SAAU,IAAKC,EAAgB,EACtC,CAAE,IAAK,aAAc,IAAKC,EAAoB,EAC9C,CAAE,IAAK,SAAU,IAAKC,EAAU,EAChC,CAAE,IAAK,SAAU,IAAKC,EAAe,EACrC,CAAE,IAAK,SAAU,IAAKC,EAAe,CACzC,EAkCMC,GAA8B,CAChC,CAAE,IAAK,YAAa,IAAKnB,GAAgB,MAAOC,GAAgB,eAAgB,EAAK,EACrF,CAAE,IAAK,gBAAiB,IAAK,gBAAiB,IAAKmB,GAAiB,MAAOC,GAAiB,eAAgB,EAAK,EACjH,CAAE,IAAK,gBAAiB,IAAKC,GAAwB,MAAOC,GAAwB,eAAgB,EAAK,EACzG,CAAE,IAAK,aAAc,IAAKrB,GAAiB,MAAOC,GAAiB,eAAgB,EAAK,EACxF,CAAE,IAAK,iBAAkB,IAAK,iBAAkB,IAAKqB,GAAkB,MAAOC,GAAkB,eAAgB,EAAK,EACrH,CAAE,IAAK,iBAAkB,IAAKC,GAAyB,MAAOC,GAAyB,eAAgB,EAAK,EAC5G,CAAE,IAAK,UAAW,IAAKvB,GAAc,MAAOC,GAAc,eAAgB,EAAK,EAC/E,CAAE,IAAK,cAAe,IAAKuB,GAAgB,MAAOC,EAAe,EACjE,CAAE,IAAK,eAAgB,IAAKC,GAAc,MAAOC,EAAa,EAC9D,CAAE,IAAK,YAAa,IAAKzB,GAAgB,MAAOC,GAAgB,eAAgB,EAAK,EACrF,CAAE,IAAK,gBAAiB,IAAKyB,GAAc,MAAOC,EAAa,EAC/D,CAAE,IAAK,iBAAkB,IAAKf,GAAgB,MAAOgB,EAAe,EACpE,CAAE,IAAK,SAAU,IAAKJ,GAAc,MAAOC,EAAa,EACxD,CAAE,IAAK,WAAY,IAAKb,GAAgB,MAAOgB,EAAe,EAC9D,CAAE,IAAK,OAAQ,IAAKC,GAA4B,MAAOC,GAA4B,eAAgB,EAAK,EACxG,CAAE,IAAK,WAAY,IAAKR,GAAgB,MAAOC,EAAe,EAC9D,CAAE,IAAK,MAAO,IAAKQ,GAA2B,MAAOC,GAA2B,eAAgB,EAAK,EACrG,CAAE,IAAK,UAAW,IAAKN,GAAc,MAAOC,EAAa,EACzD,CAAE,IAAK,QAAS,IAAKM,GAAwB,MAAOA,EAAuB,EAC3E,CAAE,IAAK,QAAS,IAAKC,EAAU,EAC/B,CAAE,IAAK,YAAa,IAAK3B,GAAoB,MAAOA,GAAoB,eAAgB,EAAK,EAC7F,CAAE,IAAK,SAAU,IAAKD,GAAmB,eAAgB,EAAK,EAC9D,CAAE,IAAK,gBAAiB,IAAK,gBAAiB,IAAKG,GAAqB,eAAgB,EAAK,EAC7F,CAAE,IAAK,aAAc,IAAK,aAAc,IAAK0B,GAAoB,eAAgB,EAAK,EACtF,CAAE,IAAK,gBAAiB,IAAKC,GAA4B,eAAgB,EAAK,EAC9E,CAAE,IAAK,aAAc,IAAKC,GAA2B,eAAgB,EAAK,CAC9E,EAAE,OAAoB5C,GAAiB,IAAI6C,IAAM,CAAE,IAAKA,EAAE,IAAK,IAAKA,EAAE,IAAK,MAAOA,EAAE,KAAM,EAAE,CAAC,EA0BvFC,GAA6B,CAC/B,CAAE,IAAK,gBAAiB,IAAK,iBAAkB,IAAKC,GAAkB,MAAOC,EAAiB,EAC9F,CAAE,IAAK,iBAAkB,IAAK,kBAAmB,IAAKC,GAAmB,MAAOC,EAAkB,EAClG,CAAE,IAAK,cAAe,IAAKC,EAAW,EACtC,CAAE,IAAK,oBAAqB,IAAKC,EAAW,EAC5C,CAAE,IAAK,gBAAiB,IAAKC,EAAa,EAC1C,CAAE,IAAK,sBAAuB,IAAKC,EAAa,EAChD,CAAE,IAAK,kBAAmB,IAAKC,EAAe,EAC9C,CAAE,IAAK,oBAAqB,IAAKC,EAAe,EAChD,CAAE,IAAK,SAAU,IAAKC,EAAkB,EACxC,CAAE,IAAK,YAAa,IAAKC,EAAgB,EACzC,CAAE,IAAK,QAAS,IAAK,SAAU,IAAKC,EAAW,EAC/C,CAAE,IAAK,QAAS,IAAKC,GAAoB,eAAgB,EAAK,EAC9D,CAAE,IAAK,QAAS,IAAKC,EAAW,EAChC,CAAE,IAAK,QAAS,IAAKC,EAAW,EAChC,CAAE,IAAK,aAAc,IAAKC,EAAgB,EAC1C,CAAE,IAAK,cAAe,IAAKC,EAAW,EACtC,CAAE,IAAK,eAAgB,IAAKC,EAAsB,EAClD,CAAE,IAAK,QAAS,IAAKC,EAAc,EACnC,CAAE,IAAK,QAAS,IAAKC,EAAmB,EACxC,CAAE,IAAK,SAAU,IAAK,cAAe,IAAKC,EAAmB,CACjE,EAAE,OAAOhD,EAAc,ECrvDvB,IAAMiD,GAAiB,OAAO,OAAO,UAAU,WAAa,WACtDC,GAAKA,EAAE,UAAU,MAAM,EAAIA,GAAKA,EAKhCC,GAAN,KAAmB,CAVnB,MAUmB,CAAAC,EAAA,qBAcf,YAAYC,EAAMC,EAAOC,EAAO,EAAGC,EAAKH,EAAK,OAAQI,EAAWC,EAAM,CAClE,KAAK,KAAOA,EAMZ,KAAK,MAAQ,CAAE,KAAM,EAAG,GAAI,CAAE,EAI9B,KAAK,KAAO,GACZ,KAAK,QAAU,CAAC,EAChB,KAAK,OAAS,GACd,KAAK,UAAY,EACjB,KAAK,KAAOL,EAAK,UAAUE,EAAMC,CAAE,EACnC,KAAK,YAAcD,EACnB,KAAK,UAAYE,EAAYP,GAAKO,EAAUR,GAAeC,CAAC,CAAC,EAAID,GACjE,KAAK,MAAQ,KAAK,UAAUK,CAAK,CACrC,CACA,MAAO,CACH,GAAI,KAAK,WAAa,KAAK,OAAO,OAAQ,CAGtC,GAFA,KAAK,aAAe,KAAK,OAAO,OAChC,KAAK,KAAK,KAAK,EACX,KAAK,KAAK,KACV,MAAO,GACX,KAAK,UAAY,EACjB,KAAK,OAAS,KAAK,KAAK,KAC5B,CACA,OAAOK,GAAY,KAAK,OAAQ,KAAK,SAAS,CAClD,CAOA,MAAO,CACH,KAAO,KAAK,QAAQ,QAChB,KAAK,QAAQ,IAAI,EACrB,OAAO,KAAK,gBAAgB,CAChC,CAMA,iBAAkB,CACd,OAAS,CACL,IAAIC,EAAO,KAAK,KAAK,EACrB,GAAIA,EAAO,EACP,YAAK,KAAO,GACL,KAEX,IAAIC,EAAMC,GAAcF,CAAI,EAAGG,EAAQ,KAAK,YAAc,KAAK,UAC/D,KAAK,WAAaC,GAAcJ,CAAI,EACpC,IAAIK,EAAO,KAAK,UAAUJ,CAAG,EAC7B,GAAII,EAAK,OACL,QAASC,EAAI,EAAGC,EAAMJ,GAAQG,IAAK,CAC/B,IAAIE,EAAOH,EAAK,WAAWC,CAAC,EACxBG,EAAQ,KAAK,MAAMD,EAAMD,EAAK,KAAK,UAAY,KAAK,WAAW,EACnE,GAAID,GAAKD,EAAK,OAAS,EAAG,CACtB,GAAII,EACA,YAAK,MAAQA,EACN,KAEX,KACJ,CACIF,GAAOJ,GAASG,EAAIL,EAAI,QAAUA,EAAI,WAAWK,CAAC,GAAKE,GACvDD,GACR,CACR,CACJ,CACA,MAAMC,EAAMD,EAAKG,EAAK,CAClB,IAAID,EAAQ,KACZ,QAASH,EAAI,EAAGA,EAAI,KAAK,QAAQ,OAAQA,GAAK,EAAG,CAC7C,IAAIK,EAAQ,KAAK,QAAQL,CAAC,EAAGM,EAAO,GAChC,KAAK,MAAM,WAAWD,CAAK,GAAKH,IAC5BG,GAAS,KAAK,MAAM,OAAS,EAC7BF,EAAQ,CAAE,KAAM,KAAK,QAAQH,EAAI,CAAC,EAAG,GAAII,CAAI,GAG7C,KAAK,QAAQJ,CAAC,IACdM,EAAO,KAGVA,IACD,KAAK,QAAQ,OAAON,EAAG,CAAC,EACxBA,GAAK,EAEb,CACA,OAAI,KAAK,MAAM,WAAW,CAAC,GAAKE,IACxB,KAAK,MAAM,QAAU,EACrBC,EAAQ,CAAE,KAAMF,EAAK,GAAIG,CAAI,EAE7B,KAAK,QAAQ,KAAK,EAAGH,CAAG,GAE5BE,GAAS,KAAK,MAAQ,CAAC,KAAK,KAAKA,EAAM,KAAMA,EAAM,GAAI,KAAK,OAAQ,KAAK,WAAW,IACpFA,EAAQ,MACLA,CACX,CACJ,EACI,OAAO,OAAU,MACjBlB,GAAa,UAAU,OAAO,QAAQ,EAAI,UAAY,CAAE,OAAO,IAAM,GAEzE,IAAMsB,GAAQ,CAAE,KAAM,GAAI,GAAI,GAAI,MAAoB,KAAK,KAAK,EAAE,CAAE,EAC9DC,GAAY,MAAQ,IAAI,SAAW,KAAO,GAAK,KAM/CC,GAAN,KAAmB,CAxInB,MAwImB,CAAAvB,EAAA,qBAMf,YAAYC,EAAMC,EAAOsB,EAASrB,EAAO,EAAGC,EAAKH,EAAK,OAAQ,CAe1D,GAdA,KAAK,KAAOA,EACZ,KAAK,GAAKG,EACV,KAAK,QAAU,GAKf,KAAK,KAAO,GAMZ,KAAK,MAAQiB,GACT,uBAAuB,KAAKnB,CAAK,EACjC,OAAO,IAAIuB,GAAsBxB,EAAMC,EAAOsB,EAASrB,EAAMC,CAAE,EACnE,KAAK,GAAK,IAAI,OAAOF,EAAOoB,IAAgEE,GAAQ,WAAc,IAAM,GAAG,EAC3H,KAAK,KAAyDA,GAAQ,KACtE,KAAK,KAAOvB,EAAK,KAAK,EACtB,IAAIyB,EAAYzB,EAAK,OAAOE,CAAI,EAChC,KAAK,aAAeuB,EAAU,KAC9B,KAAK,SAAWC,GAAU1B,EAAME,CAAI,EACpC,KAAK,QAAQ,KAAK,YAAY,CAClC,CACA,QAAQyB,EAAM,CACV,KAAK,KAAK,KAAKA,CAAI,EACf,KAAK,KAAK,UACV,KAAK,QAAU,IAGf,KAAK,QAAU,KAAK,KAAK,MACrB,KAAK,aAAe,KAAK,QAAQ,OAAS,KAAK,KAC/C,KAAK,QAAU,KAAK,QAAQ,MAAM,EAAG,KAAK,GAAK,KAAK,YAAY,GACpE,KAAK,KAAK,KAAK,EAEvB,CACA,UAAW,CACP,KAAK,aAAe,KAAK,aAAe,KAAK,QAAQ,OAAS,EAC1D,KAAK,aAAe,KAAK,GACzB,KAAK,QAAU,GAEf,KAAK,QAAQ,CAAC,CACtB,CAIA,MAAO,CACH,QAASC,EAAM,KAAK,SAAW,KAAK,eAAgB,CAChD,KAAK,GAAG,UAAYA,EACpB,IAAIZ,EAAQ,KAAK,UAAY,KAAK,IAAM,KAAK,GAAG,KAAK,KAAK,OAAO,EACjE,GAAIA,EAAO,CACP,IAAId,EAAO,KAAK,aAAec,EAAM,MAAOb,EAAKD,EAAOc,EAAM,CAAC,EAAE,OAIjE,GAHA,KAAK,SAAWU,GAAU,KAAK,KAAMvB,GAAMD,GAAQC,EAAK,EAAI,EAAE,EAC1DD,GAAQ,KAAK,aAAe,KAAK,QAAQ,QACzC,KAAK,SAAS,GACbA,EAAOC,GAAMD,EAAO,KAAK,MAAM,MAAQ,CAAC,KAAK,MAAQ,KAAK,KAAKA,EAAMC,EAAIa,CAAK,GAC/E,YAAK,MAAQ,CAAE,KAAAd,EAAM,GAAAC,EAAI,MAAAa,CAAM,EACxB,KAEXY,EAAM,KAAK,SAAW,KAAK,YAC/B,SACS,KAAK,aAAe,KAAK,QAAQ,OAAS,KAAK,GACpD,KAAK,SAAS,EACdA,EAAM,MAGN,aAAK,KAAO,GACL,IAEf,CACJ,CACJ,EACMC,GAAyB,IAAI,QAE7BC,GAAN,MAAMC,CAAa,CAzNnB,MAyNmB,CAAAhC,EAAA,qBACf,YAAYG,EAAMF,EAAM,CACpB,KAAK,KAAOE,EACZ,KAAK,KAAOF,CAChB,CACA,IAAI,IAAK,CAAE,OAAO,KAAK,KAAO,KAAK,KAAK,MAAQ,CAChD,OAAO,IAAIgC,EAAK9B,EAAMC,EAAI,CACtB,IAAI8B,EAASJ,GAAU,IAAIG,CAAG,EAC9B,GAAI,CAACC,GAAUA,EAAO,MAAQ9B,GAAM8B,EAAO,IAAM/B,EAAM,CACnD,IAAIgC,EAAO,IAAIH,EAAa7B,EAAM8B,EAAI,YAAY9B,EAAMC,CAAE,CAAC,EAC3D,OAAA0B,GAAU,IAAIG,EAAKE,CAAI,EAChBA,CACX,CACA,GAAID,EAAO,MAAQ/B,GAAQ+B,EAAO,IAAM9B,EACpC,OAAO8B,EACX,GAAI,CAAE,KAAAjC,EAAM,KAAMmC,CAAW,EAAIF,EACjC,OAAIE,EAAajC,IACbF,EAAOgC,EAAI,YAAY9B,EAAMiC,CAAU,EAAInC,EAC3CmC,EAAajC,GAEb+B,EAAO,GAAK9B,IACZH,GAAQgC,EAAI,YAAYC,EAAO,GAAI9B,CAAE,GACzC0B,GAAU,IAAIG,EAAK,IAAID,EAAaI,EAAYnC,CAAI,CAAC,EAC9C,IAAI+B,EAAa7B,EAAMF,EAAK,MAAME,EAAOiC,EAAYhC,EAAKgC,CAAU,CAAC,CAChF,CACJ,EACMX,GAAN,KAA4B,CAnP5B,MAmP4B,CAAAzB,EAAA,8BACxB,YAAYC,EAAMC,EAAOsB,EAASrB,EAAMC,EAAI,CACxC,KAAK,KAAOH,EACZ,KAAK,GAAKG,EACV,KAAK,KAAO,GACZ,KAAK,MAAQiB,GACb,KAAK,SAAWM,GAAU1B,EAAME,CAAI,EACpC,KAAK,GAAK,IAAI,OAAOD,EAAOoB,IAAgEE,GAAQ,WAAc,IAAM,GAAG,EAC3H,KAAK,KAAyDA,GAAQ,KACtE,KAAK,KAAOO,GAAa,IAAI9B,EAAME,EAAM,KAAK,SAASA,EAAO,GAAqB,CAAC,CACxF,CACA,SAASY,EAAK,CACV,OAAOA,GAAO,KAAK,GAAK,KAAK,GAAK,KAAK,KAAK,OAAOA,CAAG,EAAE,EAC5D,CACA,MAAO,CACH,OAAS,CACL,IAAIc,EAAM,KAAK,GAAG,UAAY,KAAK,SAAW,KAAK,KAAK,KACpDZ,EAAQ,KAAK,GAAG,KAAK,KAAK,KAAK,IAAI,EAMvC,GAJIA,GAAS,CAACA,EAAM,CAAC,GAAKA,EAAM,OAASY,IACrC,KAAK,GAAG,UAAYA,EAAM,EAC1BZ,EAAQ,KAAK,GAAG,KAAK,KAAK,KAAK,IAAI,GAEnCA,EAAO,CACP,IAAId,EAAO,KAAK,KAAK,KAAOc,EAAM,MAAOb,EAAKD,EAAOc,EAAM,CAAC,EAAE,OAG9D,IAAK,KAAK,KAAK,IAAM,KAAK,IAAMA,EAAM,MAAQA,EAAM,CAAC,EAAE,QAAU,KAAK,KAAK,KAAK,OAAS,MACpF,CAAC,KAAK,MAAQ,KAAK,KAAKd,EAAMC,EAAIa,CAAK,GACxC,YAAK,MAAQ,CAAE,KAAAd,EAAM,GAAAC,EAAI,MAAAa,CAAM,EAC/B,KAAK,SAAWU,GAAU,KAAK,KAAMvB,GAAMD,GAAQC,EAAK,EAAI,EAAE,EACvD,IAEf,CACA,GAAI,KAAK,KAAK,IAAM,KAAK,GACrB,YAAK,KAAO,GACL,KAGX,KAAK,KAAO2B,GAAa,IAAI,KAAK,KAAM,KAAK,KAAK,KAAM,KAAK,SAAS,KAAK,KAAK,KAAO,KAAK,KAAK,KAAK,OAAS,CAAC,CAAC,CACrH,CACJ,CACJ,EACI,OAAO,OAAU,MACjBR,GAAa,UAAU,OAAO,QAAQ,EAAIE,GAAsB,UAAU,OAAO,QAAQ,EACrF,UAAY,CAAE,OAAO,IAAM,GAEnC,SAASY,GAAYC,EAAQ,CACzB,GAAI,CACA,WAAI,OAAOA,EAAQhB,EAAS,EACrB,EACX,MACW,CACP,MAAO,EACX,CACJ,CARStB,EAAAqC,GAAA,eAST,SAASV,GAAU1B,EAAMc,EAAK,CAC1B,GAAIA,GAAOd,EAAK,OACZ,OAAOc,EACX,IAAIwB,EAAOtC,EAAK,OAAOc,CAAG,EAAGP,EAC7B,KAAOO,EAAMwB,EAAK,KAAO/B,EAAO+B,EAAK,KAAK,WAAWxB,EAAMwB,EAAK,IAAI,IAAM,OAAU/B,EAAO,OACvFO,IACJ,OAAOA,CACX,CAPSf,EAAA2B,GAAA,aAkBT,IAAMa,GAAWxC,EAAAyC,GAAQ,CACrB,GAAI,CAAE,MAAAC,CAAM,EAAID,EACZF,EAAO,OAAOG,EAAM,IAAI,OAAOD,EAAK,MAAM,UAAU,KAAK,IAAI,EAAE,MAAM,EACrE,CAAE,MAAAE,EAAO,OAAAC,CAAO,EAAIC,GAAWJ,EAAM,CACrC,MAAOC,EAAM,OAAO,YAAY,EAChC,MAAO,CAAE,KAAM,OAAQ,KAAM,OAAQ,MAAOH,CAAK,EACjD,MAAO,GACP,YAAaG,EAAM,OAAO,IAAI,CAClC,CAAC,EACD,OAAAE,EAAO,KAAKE,GAAQ,CAChB,IAAI7B,EAAQ6B,GAAQ,6BAA6B,KAAKA,EAAK,SAAS,KAAQ,KAAK,EACjF,GAAI,CAAC7B,EAAO,CACRwB,EAAK,SAAS,CAAE,QAASE,CAAM,CAAC,EAChC,MACJ,CACA,IAAIjB,EAAYgB,EAAM,IAAI,OAAOA,EAAM,UAAU,KAAK,IAAI,EACtD,CAAC,CAAEK,EAAMC,EAAIC,EAAIC,CAAO,EAAIjC,EAC5BkC,EAAMF,EAAK,CAACA,EAAG,MAAM,CAAC,EAAI,EAC1BV,EAAOS,EAAK,CAACA,EAAKtB,EAAU,OAChC,GAAIsB,GAAME,EAAS,CACf,IAAIE,EAAKb,EAAO,IACZQ,IACAK,EAAKA,GAAML,GAAQ,IAAM,GAAK,GAAMrB,EAAU,OAASgB,EAAM,IAAI,OACrEH,EAAO,KAAK,MAAMG,EAAM,IAAI,MAAQU,CAAE,CAC1C,MACSJ,GAAMD,IACXR,EAAOA,GAAQQ,GAAQ,IAAM,GAAK,GAAKrB,EAAU,QAErD,IAAI2B,EAAUX,EAAM,IAAI,KAAK,KAAK,IAAI,EAAG,KAAK,IAAIA,EAAM,IAAI,MAAOH,CAAI,CAAC,CAAC,EACrEe,EAAYC,EAAgB,OAAOF,EAAQ,KAAO,KAAK,IAAI,EAAG,KAAK,IAAIF,EAAKE,EAAQ,MAAM,CAAC,CAAC,EAChGZ,EAAK,SAAS,CACV,QAAS,CAACE,EAAOa,EAAW,eAAeF,EAAU,KAAM,CAAE,EAAG,QAAS,CAAC,CAAC,EAC3E,UAAAA,CACJ,CAAC,CACL,CAAC,EACM,EACX,EApCiB,YAsCXG,GAA0B,CAC5B,0BAA2B,GAC3B,mBAAoB,EACpB,WAAY,IACZ,WAAY,EAChB,EACMC,GAA+BC,EAAM,OAAO,CAC9C,QAAQnC,EAAS,CACb,OAAOoC,GAAcpC,EAASiC,GAAyB,CACnD,0BAA2BzD,EAAA,CAAC6D,EAAGC,IAAMD,GAAKC,EAAf,6BAC3B,mBAAoB,KAAK,IACzB,WAAY,KAAK,GACrB,CAAC,CACL,CACJ,CAAC,EAOD,SAASC,GAA0BvC,EAAS,CACxC,IAAIwC,EAAM,CAACC,GAAcC,EAAgB,EACzC,OAAI1C,GACAwC,EAAI,KAAKN,GAAgB,GAAGlC,CAAO,CAAC,EACjCwC,CACX,CALShE,EAAA+D,GAAA,6BAMT,IAAMI,GAAyBC,EAAW,KAAK,CAAE,MAAO,mBAAoB,CAAC,EACvEC,GAA6BD,EAAW,KAAK,CAAE,MAAO,0CAA2C,CAAC,EAExG,SAASE,GAAqBC,EAAO7B,EAAOvC,EAAMC,EAAI,CAClD,OAAQD,GAAQ,GAAKoE,EAAM7B,EAAM,SAASvC,EAAO,EAAGA,CAAI,CAAC,GAAKqE,EAAa,QACtEpE,GAAMsC,EAAM,IAAI,QAAU6B,EAAM7B,EAAM,SAAStC,EAAIA,EAAK,CAAC,CAAC,GAAKoE,EAAa,KACrF,CAHSxE,EAAAsE,GAAA,wBAKT,SAASG,GAAWF,EAAO7B,EAAOvC,EAAMC,EAAI,CACxC,OAAOmE,EAAM7B,EAAM,SAASvC,EAAMA,EAAO,CAAC,CAAC,GAAKqE,EAAa,MACtDD,EAAM7B,EAAM,SAAStC,EAAK,EAAGA,CAAE,CAAC,GAAKoE,EAAa,IAC7D,CAHSxE,EAAAyE,GAAA,cAIT,IAAMP,GAAgCQ,GAAW,UAAU,KAAM,CAC7D,YAAYjC,EAAM,CACd,KAAK,YAAc,KAAK,QAAQA,CAAI,CACxC,CACA,OAAOkC,EAAQ,EACPA,EAAO,cAAgBA,EAAO,YAAcA,EAAO,mBACnD,KAAK,YAAc,KAAK,QAAQA,EAAO,IAAI,EACnD,CACA,QAAQlC,EAAM,CACV,IAAImC,EAAOnC,EAAK,MAAM,MAAMiB,EAAe,EACvC,CAAE,MAAAhB,CAAM,EAAID,EAAMoC,EAAMnC,EAAM,UAClC,GAAImC,EAAI,OAAO,OAAS,EACpB,OAAOT,EAAW,KACtB,IAAIU,EAAQD,EAAI,KAAM3E,EAAOqE,EAAQ,KACrC,GAAIO,EAAM,MAAO,CACb,GAAI,CAACF,EAAK,0BACN,OAAOR,EAAW,KACtB,IAAIW,EAAOrC,EAAM,OAAOoC,EAAM,IAAI,EAClC,GAAI,CAACC,EACD,OAAOX,EAAW,KACtBG,EAAQ7B,EAAM,gBAAgBoC,EAAM,IAAI,EACxC5E,EAAQwC,EAAM,SAASqC,EAAK,KAAMA,EAAK,EAAE,CAC7C,KACK,CACD,IAAIC,EAAMF,EAAM,GAAKA,EAAM,KAC3B,GAAIE,EAAMJ,EAAK,oBAAsBI,EAAM,IACvC,OAAOZ,EAAW,KACtB,GAAIQ,EAAK,YAGL,GAFA1E,EAAQwC,EAAM,SAASoC,EAAM,KAAMA,EAAM,EAAE,EAC3CP,EAAQ7B,EAAM,gBAAgBoC,EAAM,IAAI,EACpC,EAAER,GAAqBC,EAAO7B,EAAOoC,EAAM,KAAMA,EAAM,EAAE,GACzDL,GAAWF,EAAO7B,EAAOoC,EAAM,KAAMA,EAAM,EAAE,GAC7C,OAAOV,EAAW,aAGtBlE,EAAQwC,EAAM,SAASoC,EAAM,KAAMA,EAAM,EAAE,EACvC,CAAC5E,EACD,OAAOkE,EAAW,IAE9B,CACA,IAAIa,EAAO,CAAC,EACZ,QAASC,KAAQzC,EAAK,cAAe,CACjC,IAAI0C,EAAS,IAAIpF,GAAa2C,EAAM,IAAKxC,EAAOgF,EAAK,KAAMA,EAAK,EAAE,EAClE,KAAO,CAACC,EAAO,KAAK,EAAE,MAAM,CACxB,GAAI,CAAE,KAAAhF,EAAM,GAAAC,CAAG,EAAI+E,EAAO,MAC1B,IAAI,CAACZ,GAASD,GAAqBC,EAAO7B,EAAOvC,EAAMC,CAAE,KACjD0E,EAAM,OAAS3E,GAAQ2E,EAAM,MAAQ1E,GAAM0E,EAAM,GACjDG,EAAK,KAAKZ,GAAc,MAAMlE,EAAMC,CAAE,CAAC,GAClCD,GAAQ2E,EAAM,IAAM1E,GAAM0E,EAAM,OACrCG,EAAK,KAAKd,GAAU,MAAMhE,EAAMC,CAAE,CAAC,EACnC6E,EAAK,OAASL,EAAK,YACnB,OAAOR,EAAW,IAE9B,CACJ,CACA,OAAOA,EAAW,IAAIa,CAAI,CAC9B,CACJ,EAAG,CACC,YAAajF,EAAAoF,GAAKA,EAAE,YAAP,cACjB,CAAC,EACKnB,GAA4BT,EAAW,UAAU,CACnD,qBAAsB,CAAE,gBAAiB,WAAY,EACrD,qCAAsC,CAAE,gBAAiB,aAAc,CAC3E,CAAC,EAEK6B,GAAarF,EAAA,CAAC,CAAE,MAAA0C,EAAO,SAAA4C,CAAS,IAAM,CACxC,GAAI,CAAE,UAAAhC,CAAU,EAAIZ,EAChB6C,EAAShC,EAAgB,OAAOD,EAAU,OAAO,IAAIwB,GAASpC,EAAM,OAAOoC,EAAM,IAAI,GAAKvB,EAAgB,OAAOuB,EAAM,IAAI,CAAC,EAAGxB,EAAU,SAAS,EACtJ,OAAIiC,EAAO,GAAGjC,CAAS,EACZ,IACXgC,EAAS5C,EAAM,OAAO,CAAE,UAAW6C,CAAO,CAAC,CAAC,EACrC,GACX,EAPmB,cAUnB,SAASC,GAAmB9C,EAAOxC,EAAO,CACtC,GAAI,CAAE,KAAAuF,EAAM,OAAAC,CAAO,EAAIhD,EAAM,UACzBqC,EAAOrC,EAAM,OAAO+C,EAAK,IAAI,EAAGE,EAAWZ,GAAQA,EAAK,MAAQU,EAAK,MAAQV,EAAK,IAAMU,EAAK,GACjG,QAASG,EAAS,GAAOT,EAAS,IAAIpF,GAAa2C,EAAM,IAAKxC,EAAOwF,EAAOA,EAAO,OAAS,CAAC,EAAE,EAAE,IAE7F,GADAP,EAAO,KAAK,EACRA,EAAO,KAAM,CACb,GAAIS,EACA,OAAO,KACXT,EAAS,IAAIpF,GAAa2C,EAAM,IAAKxC,EAAO,EAAG,KAAK,IAAI,EAAGwF,EAAOA,EAAO,OAAS,CAAC,EAAE,KAAO,CAAC,CAAC,EAC9FE,EAAS,EACb,KACK,CACD,GAAIA,GAAUF,EAAO,KAAKG,GAAKA,EAAE,MAAQV,EAAO,MAAM,IAAI,EACtD,SACJ,GAAIQ,EAAU,CACV,IAAIZ,EAAOrC,EAAM,OAAOyC,EAAO,MAAM,IAAI,EACzC,GAAI,CAACJ,GAAQA,EAAK,MAAQI,EAAO,MAAM,MAAQJ,EAAK,IAAMI,EAAO,MAAM,GACnE,QACR,CACA,OAAOA,EAAO,KAClB,CAER,CAtBSnF,EAAAwF,GAAA,sBA2BT,IAAMM,GAAuB9F,EAAA,CAAC,CAAE,MAAA0C,EAAO,SAAA4C,CAAS,IAAM,CAClD,GAAI,CAAE,OAAAI,CAAO,EAAIhD,EAAM,UACvB,GAAIgD,EAAO,KAAKb,GAAOA,EAAI,OAASA,EAAI,EAAE,EACtC,OAAOQ,GAAW,CAAE,MAAA3C,EAAO,SAAA4C,CAAS,CAAC,EACzC,IAAIS,EAAerD,EAAM,SAASgD,EAAO,CAAC,EAAE,KAAMA,EAAO,CAAC,EAAE,EAAE,EAC9D,GAAIhD,EAAM,UAAU,OAAO,KAAKmD,GAAKnD,EAAM,SAASmD,EAAE,KAAMA,EAAE,EAAE,GAAKE,CAAY,EAC7E,MAAO,GACX,IAAIjB,EAAQU,GAAmB9C,EAAOqD,CAAY,EAClD,OAAKjB,GAELQ,EAAS5C,EAAM,OAAO,CAClB,UAAWA,EAAM,UAAU,SAASa,EAAgB,MAAMuB,EAAM,KAAMA,EAAM,EAAE,EAAG,EAAK,EACtF,QAAStB,EAAW,eAAesB,EAAM,EAAE,CAC/C,CAAC,CAAC,EACK,IALI,EAMf,EAf6B,wBAiBvBkB,GAAiCrC,EAAM,OAAO,CAChD,QAAQsC,EAAS,CACb,OAAOrC,GAAcqC,EAAS,CAC1B,IAAK,GACL,cAAe,GACf,QAAS,GACT,OAAQ,GACR,UAAW,GACX,YAAajG,EAAAyC,GAAQ,IAAIyD,GAAYzD,CAAI,EAA5B,eACb,cAAezC,EAAA8E,GAAStB,EAAW,eAAesB,CAAK,EAAxC,gBACnB,CAAC,CACL,CACJ,CAAC,EAaD,IAAMqB,GAAN,KAAkB,CA1hBlB,MA0hBkB,CAAAC,EAAA,oBAId,YAAYC,EAAQ,CAChB,KAAK,OAASA,EAAO,OACrB,KAAK,cAAgB,CAAC,CAACA,EAAO,cAC9B,KAAK,QAAU,CAAC,CAACA,EAAO,QACxB,KAAK,OAAS,CAAC,CAACA,EAAO,OACvB,KAAK,QAAUA,EAAO,SAAW,GACjC,KAAK,MAAQ,CAAC,CAAC,KAAK,SAAW,CAAC,KAAK,QAAUC,GAAY,KAAK,MAAM,GACtE,KAAK,SAAW,KAAK,QAAQ,KAAK,MAAM,EACxC,KAAK,UAAY,CAAC,CAACD,EAAO,UAC1B,KAAK,KAAOA,EAAO,IACvB,CAIA,QAAQE,EAAM,CACV,OAAO,KAAK,QAAUA,EAClBA,EAAK,QAAQ,eAAgB,CAACC,EAAGC,IAAOA,GAAM,IAAM;AAAA,EAAOA,GAAM,IAAM,KAAOA,GAAM,IAAM,IAAO,IAAI,CAC7G,CAIA,GAAGC,EAAO,CACN,OAAO,KAAK,QAAUA,EAAM,QAAU,KAAK,SAAWA,EAAM,SACxD,KAAK,eAAiBA,EAAM,eAAiB,KAAK,QAAUA,EAAM,QAClE,KAAK,WAAaA,EAAM,WAAa,KAAK,MAAQA,EAAM,IAChE,CAIA,QAAS,CACL,OAAO,KAAK,OAAS,IAAIC,GAAY,IAAI,EAAI,IAAIC,GAAY,IAAI,CACrE,CAKA,UAAUC,EAAOC,EAAO,EAAGC,EAAI,CAC3B,IAAIC,EAAKH,EAAM,IAAMA,EAAQI,EAAY,OAAO,CAAE,IAAKJ,CAAM,CAAC,EAC9D,OAAIE,GAAM,OACNA,EAAKC,EAAG,IAAI,QACT,KAAK,OAASE,GAAa,KAAMF,EAAIF,EAAMC,CAAE,EAAII,GAAa,KAAMH,EAAIF,EAAMC,CAAE,CAC3F,CACJ,EACMK,GAAN,KAAgB,CAzkBhB,MAykBgB,CAAAhB,EAAA,kBACZ,YAAYiB,EAAM,CACd,KAAK,KAAOA,CAChB,CACJ,EACA,SAASC,GAAeC,EAAMV,EAAOW,EAAO,CACxC,MAAO,CAACV,EAAMC,EAAIU,EAAQC,IAAc,CACpC,GAAIF,GAAS,CAACA,EAAMV,EAAMC,EAAIU,EAAQC,CAAS,EAC3C,MAAO,GACX,IAAIC,EAAQb,GAAQY,GAAaX,GAAMW,EAAYD,EAAO,OACpDA,EAAO,MAAMX,EAAOY,EAAWX,EAAKW,CAAS,EAC7Cb,EAAM,IAAI,YAAYC,EAAMC,CAAE,EACpC,OAAOQ,EAAKI,EAAOd,EAAOC,EAAMC,CAAE,CACtC,CACJ,CATSX,EAAAkB,GAAA,kBAUT,SAASH,GAAaE,EAAMR,EAAOC,EAAMC,EAAI,CACzC,IAAIQ,EACJ,OAAIF,EAAK,YACLE,EAAOK,GAAef,EAAM,IAAKA,EAAM,gBAAgBA,EAAM,UAAU,KAAK,IAAI,CAAC,GACjFQ,EAAK,OACLE,EAAOD,GAAeD,EAAK,KAAMR,EAAOU,CAAI,GACzC,IAAIM,GAAahB,EAAM,IAAKQ,EAAK,SAAUP,EAAMC,EAAIM,EAAK,cAAgB,OAAYS,GAAKA,EAAE,YAAY,EAAGP,CAAI,CAC3H,CAPSnB,EAAAe,GAAA,gBAQT,SAASS,GAAeG,EAAKC,EAAa,CACtC,MAAO,CAAClB,EAAMC,EAAIkB,EAAKC,MACfA,EAASpB,GAAQoB,EAASD,EAAI,OAASlB,KACvCmB,EAAS,KAAK,IAAI,EAAGpB,EAAO,CAAC,EAC7BmB,EAAMF,EAAI,YAAYG,EAAQ,KAAK,IAAIH,EAAI,OAAQhB,EAAK,CAAC,CAAC,IAEtDiB,EAAYG,GAAWF,EAAKnB,EAAOoB,CAAM,CAAC,GAAKE,EAAa,MAChEJ,EAAYK,GAAUJ,EAAKnB,EAAOoB,CAAM,CAAC,GAAKE,EAAa,QAC1DJ,EAAYK,GAAUJ,EAAKlB,EAAKmB,CAAM,CAAC,GAAKE,EAAa,MACtDJ,EAAYG,GAAWF,EAAKlB,EAAKmB,CAAM,CAAC,GAAKE,EAAa,MAE1E,CAXShC,EAAAwB,GAAA,kBAYT,IAAMhB,GAAN,cAA0BQ,EAAU,CA5mBpC,MA4mBoC,CAAAhB,EAAA,oBAChC,YAAYiB,EAAM,CACd,MAAMA,CAAI,CACd,CACA,UAAUR,EAAOyB,EAASC,EAAO,CAC7B,IAAIC,EAASrB,GAAa,KAAK,KAAMN,EAAO0B,EAAO1B,EAAM,IAAI,MAAM,EAAE,gBAAgB,EACrF,GAAI2B,EAAO,KAAM,CACb,IAAIC,EAAM,KAAK,IAAI5B,EAAM,IAAI,OAAQyB,EAAU,KAAK,KAAK,SAAS,MAAM,EACxEE,EAASrB,GAAa,KAAK,KAAMN,EAAO,EAAG4B,CAAG,EAAE,gBAAgB,CACpE,CACA,OAAOD,EAAO,MAAQA,EAAO,MAAM,MAAQF,GAAWE,EAAO,MAAM,IAAMD,EAAQ,KAAOC,EAAO,KACnG,CAGA,iBAAiB3B,EAAOC,EAAMC,EAAI,CAC9B,QAAS2B,EAAM3B,IAAM,CACjB,IAAI4B,EAAQ,KAAK,IAAI7B,EAAM4B,EAAM,IAAiC,KAAK,KAAK,SAAS,MAAM,EACvFF,EAASrB,GAAa,KAAK,KAAMN,EAAO8B,EAAOD,CAAG,EAAGE,EAAQ,KACjE,KAAO,CAACJ,EAAO,gBAAgB,EAAE,MAC7BI,EAAQJ,EAAO,MACnB,GAAII,EACA,OAAOA,EACX,GAAID,GAAS7B,EACT,OAAO,KACX4B,GAAO,GACX,CACJ,CACA,UAAU7B,EAAOyB,EAASC,EAAO,CAC7B,IAAIM,EAAQ,KAAK,iBAAiBhC,EAAO,EAAGyB,CAAO,EACnD,OAAKO,IACDA,EAAQ,KAAK,iBAAiBhC,EAAO,KAAK,IAAI,EAAG0B,EAAQ,KAAK,KAAK,SAAS,MAAM,EAAG1B,EAAM,IAAI,MAAM,GAClGgC,IAAUA,EAAM,MAAQP,GAAWO,EAAM,IAAMN,GAASM,EAAQ,IAC3E,CACA,eAAeC,EAAS,CAAE,OAAO,KAAK,KAAK,QAAQ,KAAK,KAAK,OAAO,CAAG,CACvE,SAASjC,EAAOkC,EAAO,CACnB,IAAIP,EAASrB,GAAa,KAAK,KAAMN,EAAO,EAAGA,EAAM,IAAI,MAAM,EAAGmC,EAAS,CAAC,EAC5E,KAAO,CAACR,EAAO,KAAK,EAAE,MAAM,CACxB,GAAIQ,EAAO,QAAUD,EACjB,OAAO,KACXC,EAAO,KAAKR,EAAO,KAAK,CAC5B,CACA,OAAOQ,CACX,CACA,UAAUnC,EAAOC,EAAMC,EAAIkC,EAAK,CAC5B,IAAIT,EAASrB,GAAa,KAAK,KAAMN,EAAO,KAAK,IAAI,EAAGC,EAAO,KAAK,KAAK,SAAS,MAAM,EAAG,KAAK,IAAIC,EAAK,KAAK,KAAK,SAAS,OAAQF,EAAM,IAAI,MAAM,CAAC,EACrJ,KAAO,CAAC2B,EAAO,KAAK,EAAE,MAClBS,EAAIT,EAAO,MAAM,KAAMA,EAAO,MAAM,EAAE,CAC9C,CACJ,EACA,SAASU,GAAe3B,EAAMV,EAAOW,EAAO,CACxC,MAAO,CAACV,EAAMC,EAAIY,KACN,CAACH,GAASA,EAAMV,EAAMC,EAAIY,CAAK,IAAMJ,EAAKI,EAAM,CAAC,EAAGd,EAAOC,EAAMC,CAAE,CAEnF,CAJSX,EAAA8C,GAAA,kBAKT,SAAShC,GAAaG,EAAMR,EAAOC,EAAMC,EAAI,CACzC,IAAIQ,EACJ,OAAIF,EAAK,YACLE,EAAO4B,GAAetC,EAAM,gBAAgBA,EAAM,UAAU,KAAK,IAAI,CAAC,GACtEQ,EAAK,OACLE,EAAO2B,GAAe7B,EAAK,KAAMR,EAAOU,CAAI,GACzC,IAAI6B,GAAavC,EAAM,IAAKQ,EAAK,OAAQ,CAAE,WAAY,CAACA,EAAK,cAAe,KAAAE,CAAK,EAAGT,EAAMC,CAAE,CACvG,CAPSX,EAAAc,GAAA,gBAQT,SAASiB,GAAWkB,EAAKC,EAAO,CAC5B,OAAOD,EAAI,MAAME,GAAiBF,EAAKC,EAAO,EAAK,EAAGA,CAAK,CAC/D,CAFSlD,EAAA+B,GAAA,cAGT,SAASE,GAAUgB,EAAKC,EAAO,CAC3B,OAAOD,EAAI,MAAMC,EAAOC,GAAiBF,EAAKC,CAAK,CAAC,CACxD,CAFSlD,EAAAiC,GAAA,aAGT,SAASc,GAAenB,EAAa,CACjC,MAAO,CAACwB,EAAOC,EAAK9B,IAAU,CAACA,EAAM,CAAC,EAAE,SACnCK,EAAYG,GAAWR,EAAM,MAAOA,EAAM,KAAK,CAAC,GAAKS,EAAa,MAC/DJ,EAAYK,GAAUV,EAAM,MAAOA,EAAM,KAAK,CAAC,GAAKS,EAAa,QAChEJ,EAAYK,GAAUV,EAAM,MAAOA,EAAM,MAAQA,EAAM,CAAC,EAAE,MAAM,CAAC,GAAKS,EAAa,MAChFJ,EAAYG,GAAWR,EAAM,MAAOA,EAAM,MAAQA,EAAM,CAAC,EAAE,MAAM,CAAC,GAAKS,EAAa,KACpG,CANShC,EAAA+C,GAAA,kBAOT,IAAMxC,GAAN,cAA0BS,EAAU,CAvrBpC,MAurBoC,CAAAhB,EAAA,oBAChC,UAAUS,EAAOyB,EAASC,EAAO,CAC7B,IAAIC,EAAStB,GAAa,KAAK,KAAML,EAAO0B,EAAO1B,EAAM,IAAI,MAAM,EAAE,KAAK,EAC1E,OAAI2B,EAAO,OACPA,EAAStB,GAAa,KAAK,KAAML,EAAO,EAAGyB,CAAO,EAAE,KAAK,GACtDE,EAAO,KAAO,KAAOA,EAAO,KACvC,CACA,iBAAiB3B,EAAOC,EAAMC,EAAI,CAC9B,QAAS2C,EAAO,GAAIA,IAAQ,CACxB,IAAIf,EAAQ,KAAK,IAAI7B,EAAMC,EAAK2C,EAAO,GAA8B,EACjElB,EAAStB,GAAa,KAAK,KAAML,EAAO8B,EAAO5B,CAAE,EAAG6B,EAAQ,KAChE,KAAO,CAACJ,EAAO,KAAK,EAAE,MAClBI,EAAQJ,EAAO,MACnB,GAAII,IAAUD,GAAS7B,GAAQ8B,EAAM,KAAOD,EAAQ,IAChD,OAAOC,EACX,GAAID,GAAS7B,EACT,OAAO,IACf,CACJ,CACA,UAAUD,EAAOyB,EAASC,EAAO,CAC7B,OAAO,KAAK,iBAAiB1B,EAAO,EAAGyB,CAAO,GAC1C,KAAK,iBAAiBzB,EAAO0B,EAAO1B,EAAM,IAAI,MAAM,CAC5D,CACA,eAAe8C,EAAQ,CACnB,OAAO,KAAK,KAAK,QAAQ,KAAK,KAAK,OAAO,EAAE,QAAQ,gBAAiB,CAACC,EAAG,IAAM,CAC3E,GAAI,GAAK,IACL,OAAOD,EAAO,MAAM,CAAC,EACzB,GAAI,GAAK,IACL,MAAO,IACX,QAASE,EAAI,EAAE,OAAQA,EAAI,EAAGA,IAAK,CAC/B,IAAIC,EAAI,CAAC,EAAE,MAAM,EAAGD,CAAC,EACrB,GAAIC,EAAI,GAAKA,EAAIH,EAAO,MAAM,OAC1B,OAAOA,EAAO,MAAMG,CAAC,EAAI,EAAE,MAAMD,CAAC,CAC1C,CACA,OAAOD,CACX,CAAC,CACL,CACA,SAAS/C,EAAOkC,EAAO,CACnB,IAAIP,EAAStB,GAAa,KAAK,KAAML,EAAO,EAAGA,EAAM,IAAI,MAAM,EAAGmC,EAAS,CAAC,EAC5E,KAAO,CAACR,EAAO,KAAK,EAAE,MAAM,CACxB,GAAIQ,EAAO,QAAUD,EACjB,OAAO,KACXC,EAAO,KAAKR,EAAO,KAAK,CAC5B,CACA,OAAOQ,CACX,CACA,UAAUnC,EAAOC,EAAMC,EAAIkC,EAAK,CAC5B,IAAIT,EAAStB,GAAa,KAAK,KAAML,EAAO,KAAK,IAAI,EAAGC,EAAO,GAAgC,EAAG,KAAK,IAAIC,EAAK,IAAkCF,EAAM,IAAI,MAAM,CAAC,EACnK,KAAO,CAAC2B,EAAO,KAAK,EAAE,MAClBS,EAAIT,EAAO,MAAM,KAAMA,EAAO,MAAM,EAAE,CAC9C,CACJ,EAQMuB,GAA8BC,EAAY,OAAO,EACjDC,GAA2BD,EAAY,OAAO,EAC9CE,GAA2BC,GAAW,OAAO,CAC/C,OAAOtD,EAAO,CACV,OAAO,IAAIuD,GAAYC,GAAaxD,CAAK,EAAE,OAAO,EAAG,IAAI,CAC7D,EACA,OAAOyD,EAAOC,EAAI,CACd,QAASC,KAAUD,EAAG,QACdC,EAAO,GAAGT,EAAc,EACxBO,EAAQ,IAAIF,GAAYI,EAAO,MAAM,OAAO,EAAGF,EAAM,KAAK,EACrDE,EAAO,GAAGP,EAAW,IAC1BK,EAAQ,IAAIF,GAAYE,EAAM,MAAOE,EAAO,MAAQC,GAAoB,IAAI,GAEpF,OAAOH,CACX,EACA,QAASlE,EAAAsE,GAAKC,GAAU,KAAKD,EAAGE,GAAOA,EAAI,KAAK,EAAvC,UACb,CAAC,EAeD,IAAMC,GAAN,KAAkB,CAjxBlB,MAixBkB,CAAAC,EAAA,oBACd,YAAYC,EAAOC,EAAO,CACtB,KAAK,MAAQD,EACb,KAAK,MAAQC,CACjB,CACJ,EACMC,GAAyBC,EAAW,KAAK,CAAE,MAAO,gBAAiB,CAAC,EAAGC,GAAiCD,EAAW,KAAK,CAAE,MAAO,wCAAyC,CAAC,EAC3KE,GAAiCC,GAAW,UAAU,KAAM,CAC9D,YAAYC,EAAM,CACd,KAAK,KAAOA,EACZ,KAAK,YAAc,KAAK,UAAUA,EAAK,MAAM,MAAMC,EAAW,CAAC,CACnE,CACA,OAAOC,EAAQ,CACX,IAAIC,EAAQD,EAAO,MAAM,MAAMD,EAAW,GACtCE,GAASD,EAAO,WAAW,MAAMD,EAAW,GAAKC,EAAO,YAAcA,EAAO,cAAgBA,EAAO,mBACpG,KAAK,YAAc,KAAK,UAAUC,CAAK,EAC/C,CACA,UAAU,CAAE,MAAAV,EAAO,MAAAC,CAAM,EAAG,CACxB,GAAI,CAACA,GAAS,CAACD,EAAM,KAAK,MACtB,OAAOG,EAAW,KACtB,GAAI,CAAE,KAAAI,CAAK,EAAI,KACXI,EAAU,IAAIC,GAClB,QAASC,EAAI,EAAGC,EAASP,EAAK,cAAeQ,EAAID,EAAO,OAAQD,EAAIE,EAAGF,IAAK,CACxE,GAAI,CAAE,KAAAG,EAAM,GAAAC,CAAG,EAAIH,EAAOD,CAAC,EAC3B,KAAOA,EAAIE,EAAI,GAAKE,EAAKH,EAAOD,EAAI,CAAC,EAAE,KAAO,KAC1CI,EAAKH,EAAO,EAAED,CAAC,EAAE,GACrBb,EAAM,UAAUO,EAAK,MAAOS,EAAMC,EAAI,CAACD,EAAMC,IAAO,CAChD,IAAIC,EAAWX,EAAK,MAAM,UAAU,OAAO,KAAKY,GAAKA,EAAE,MAAQH,GAAQG,EAAE,IAAMF,CAAE,EACjFN,EAAQ,IAAIK,EAAMC,EAAIC,EAAWd,GAAoBF,EAAS,CAClE,CAAC,CACL,CACA,OAAOS,EAAQ,OAAO,CAC1B,CACJ,EAAG,CACC,YAAaZ,EAAAqB,GAAKA,EAAE,YAAP,cACjB,CAAC,EACD,SAASC,GAAcC,EAAG,CACtB,OAAOf,GAAQ,CACX,IAAIG,EAAQH,EAAK,MAAM,MAAMC,GAAa,EAAK,EAC/C,OAAOE,GAASA,EAAM,MAAM,KAAK,MAAQY,EAAEf,EAAMG,CAAK,EAAIa,GAAgBhB,CAAI,CAClF,CACJ,CALSR,EAAAsB,GAAA,iBAYT,IAAMG,GAAwBH,GAAc,CAACd,EAAM,CAAE,MAAAP,CAAM,IAAM,CAC7D,GAAI,CAAE,GAAAiB,CAAG,EAAIV,EAAK,MAAM,UAAU,KAC9BkB,EAAOzB,EAAM,UAAUO,EAAK,MAAOU,EAAIA,CAAE,EAC7C,GAAI,CAACQ,EACD,MAAO,GACX,IAAIC,EAAYC,EAAgB,OAAOF,EAAK,KAAMA,EAAK,EAAE,EACrDG,EAASrB,EAAK,MAAM,MAAMsB,EAAiB,EAC/C,OAAAtB,EAAK,SAAS,CACV,UAAAmB,EACA,QAAS,CAACI,GAAcvB,EAAMkB,CAAI,EAAGG,EAAO,cAAcF,EAAU,KAAMnB,CAAI,CAAC,EAC/E,UAAW,eACf,CAAC,EACDwB,GAAkBxB,CAAI,EACf,EACX,CAAC,EAMKyB,GAA4BX,GAAc,CAACd,EAAM,CAAE,MAAAP,CAAM,IAAM,CACjE,GAAI,CAAE,MAAAU,CAAM,EAAIH,EAAM,CAAE,KAAAS,CAAK,EAAIN,EAAM,UAAU,KAC7CuB,EAAOjC,EAAM,UAAUU,EAAOM,EAAMA,CAAI,EAC5C,GAAI,CAACiB,EACD,MAAO,GACX,IAAIP,EAAYC,EAAgB,OAAOM,EAAK,KAAMA,EAAK,EAAE,EACrDL,EAASrB,EAAK,MAAM,MAAMsB,EAAiB,EAC/C,OAAAtB,EAAK,SAAS,CACV,UAAAmB,EACA,QAAS,CAACI,GAAcvB,EAAM0B,CAAI,EAAGL,EAAO,cAAcF,EAAU,KAAMnB,CAAI,CAAC,EAC/E,UAAW,eACf,CAAC,EACDwB,GAAkBxB,CAAI,EACf,EACX,CAAC,EAIK2B,GAA6Bb,GAAc,CAACd,EAAM,CAAE,MAAAP,CAAM,IAAM,CAClE,IAAIc,EAASd,EAAM,SAASO,EAAK,MAAO,GAAI,EAC5C,MAAI,CAACO,GAAU,CAACA,EAAO,OACZ,IACXP,EAAK,SAAS,CACV,UAAWoB,EAAgB,OAAOb,EAAO,IAAIK,GAAKQ,EAAgB,MAAMR,EAAE,KAAMA,EAAE,EAAE,CAAC,CAAC,EACtF,UAAW,uBACf,CAAC,EACM,GACX,CAAC,EAIKgB,GAAyBpC,EAAA,CAAC,CAAE,MAAAW,EAAO,SAAA0B,CAAS,IAAM,CACpD,IAAIC,EAAM3B,EAAM,UAChB,GAAI2B,EAAI,OAAO,OAAS,GAAKA,EAAI,KAAK,MAClC,MAAO,GACX,GAAI,CAAE,KAAArB,EAAM,GAAAC,CAAG,EAAIoB,EAAI,KACnBvB,EAAS,CAAC,EAAGwB,EAAO,EACxB,QAASC,EAAM,IAAIC,GAAa9B,EAAM,IAAKA,EAAM,SAASM,EAAMC,CAAE,CAAC,EAAG,CAACsB,EAAI,KAAK,EAAE,MAAO,CACrF,GAAIzB,EAAO,OAAS,IAChB,MAAO,GACPyB,EAAI,MAAM,MAAQvB,IAClBsB,EAAOxB,EAAO,QAClBA,EAAO,KAAKa,EAAgB,MAAMY,EAAI,MAAM,KAAMA,EAAI,MAAM,EAAE,CAAC,CACnE,CACA,OAAAH,EAAS1B,EAAM,OAAO,CAClB,UAAWiB,EAAgB,OAAOb,EAAQwB,CAAI,EAC9C,UAAW,uBACf,CAAC,CAAC,EACK,EACX,EAlB+B,0BAsBzBG,GAA2BpB,GAAc,CAACd,EAAM,CAAE,MAAAP,CAAM,IAAM,CAChE,GAAI,CAAE,MAAAU,CAAM,EAAIH,EAAM,CAAE,KAAAS,EAAM,GAAAC,CAAG,EAAIP,EAAM,UAAU,KACrD,GAAIA,EAAM,SACN,MAAO,GACX,IAAIgC,EAAQ1C,EAAM,UAAUU,EAAOM,EAAMA,CAAI,EAC7C,GAAI,CAAC0B,EACD,MAAO,GACX,IAAIjB,EAAOiB,EACPC,EAAU,CAAC,EAAGjB,EAAWkB,EACzBC,EAAU,CAAC,EACXpB,EAAK,MAAQT,GAAQS,EAAK,IAAMR,IAChC2B,EAAclC,EAAM,OAAOV,EAAM,eAAeyB,CAAI,CAAC,EACrDkB,EAAQ,KAAK,CAAE,KAAMlB,EAAK,KAAM,GAAIA,EAAK,GAAI,OAAQmB,CAAY,CAAC,EAClEnB,EAAOzB,EAAM,UAAUU,EAAOe,EAAK,KAAMA,EAAK,EAAE,EAChDoB,EAAQ,KAAKC,EAAW,SAAS,GAAGpC,EAAM,OAAO,2BAA4BA,EAAM,IAAI,OAAOM,CAAI,EAAE,MAAM,EAAI,GAAG,CAAC,GAEtH,IAAI+B,EAAYxC,EAAK,MAAM,QAAQoC,CAAO,EAC1C,OAAIlB,IACAC,EAAYC,EAAgB,OAAOF,EAAK,KAAMA,EAAK,EAAE,EAAE,IAAIsB,CAAS,EACpEF,EAAQ,KAAKf,GAAcvB,EAAMkB,CAAI,CAAC,EACtCoB,EAAQ,KAAKnC,EAAM,MAAMmB,EAAiB,EAAE,cAAcH,EAAU,KAAMnB,CAAI,CAAC,GAEnFA,EAAK,SAAS,CACV,QAASwC,EACT,UAAArB,EACA,QAAAmB,EACA,UAAW,eACf,CAAC,EACM,EACX,CAAC,EAKKG,GAA0B3B,GAAc,CAACd,EAAM,CAAE,MAAAP,CAAM,IAAM,CAC/D,GAAIO,EAAK,MAAM,SACX,MAAO,GACX,IAAIoC,EAAU3C,EAAM,SAASO,EAAK,MAAO,GAAG,EAAE,IAAImC,GAAS,CACvD,GAAI,CAAE,KAAA1B,EAAM,GAAAC,CAAG,EAAIyB,EACnB,MAAO,CAAE,KAAA1B,EAAM,GAAAC,EAAI,OAAQjB,EAAM,eAAe0C,CAAK,CAAE,CAC3D,CAAC,EACD,GAAI,CAACC,EAAQ,OACT,MAAO,GACX,IAAIM,EAAe1C,EAAK,MAAM,OAAO,qBAAsBoC,EAAQ,MAAM,EAAI,IAC7E,OAAApC,EAAK,SAAS,CACV,QAAAoC,EACA,QAASG,EAAW,SAAS,GAAGG,CAAY,EAC5C,UAAW,mBACf,CAAC,EACM,EACX,CAAC,EACD,SAASC,GAAkB3C,EAAM,CAC7B,OAAOA,EAAK,MAAM,MAAMsB,EAAiB,EAAE,YAAYtB,CAAI,CAC/D,CAFSR,EAAAmD,GAAA,qBAGT,SAASC,GAAazC,EAAO0C,EAAU,CACnC,IAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EACpB,IAAIpB,EAAM3B,EAAM,UAAU,KACtBgD,EAAUrB,EAAI,OAASA,EAAI,GAAKA,EAAI,KAAO,IAAM,GAAK3B,EAAM,SAAS2B,EAAI,KAAMA,EAAI,EAAE,EACzF,GAAIe,GAAY,CAACM,EACb,OAAON,EACX,IAAIxB,EAASlB,EAAM,MAAMmB,EAAiB,EAC1C,OAAO,IAAI8B,GAAY,CACnB,SAAUN,EAAyDD,GAAS,WAAa,MAAQC,IAAO,OAASA,EAAKzB,EAAO,SAAW8B,EAAUA,EAAQ,QAAQ,MAAO,KAAK,EAC9K,eAAgBJ,EAAyDF,GAAS,iBAAmB,MAAQE,IAAO,OAASA,EAAK1B,EAAO,cACzI,SAAU2B,EAAyDH,GAAS,WAAa,MAAQG,IAAO,OAASA,EAAK3B,EAAO,QAC7H,QAAS4B,EAAyDJ,GAAS,UAAY,MAAQI,IAAO,OAASA,EAAK5B,EAAO,OAC3H,WAAY6B,EAAyDL,GAAS,aAAe,MAAQK,IAAO,OAASA,EAAK7B,EAAO,SACrI,CAAC,CACL,CAdS7B,EAAAoD,GAAA,gBAeT,SAASS,GAAerD,EAAM,CAC1B,IAAIN,EAAQ4D,GAAStD,EAAM2C,EAAiB,EAC5C,OAAOjD,GAASA,EAAM,IAAI,cAAc,cAAc,CAC1D,CAHSF,EAAA6D,GAAA,kBAIT,SAAS7B,GAAkBxB,EAAM,CAC7B,IAAIuD,EAAQF,GAAerD,CAAI,EAC3BuD,GAASA,GAASvD,EAAK,KAAK,eAC5BuD,EAAM,OAAO,CACrB,CAJS/D,EAAAgC,GAAA,qBAQT,IAAMR,GAAkBxB,EAAAQ,GAAQ,CAC5B,IAAIG,EAAQH,EAAK,MAAM,MAAMC,GAAa,EAAK,EAC/C,GAAIE,GAASA,EAAM,MAAO,CACtB,IAAIqD,EAAcH,GAAerD,CAAI,EACrC,GAAIwD,GAAeA,GAAexD,EAAK,KAAK,cAAe,CACvD,IAAIP,EAAQmD,GAAa5C,EAAK,MAAOG,EAAM,MAAM,IAAI,EACjDV,EAAM,OACNO,EAAK,SAAS,CAAE,QAASyD,GAAe,GAAGhE,CAAK,CAAE,CAAC,EACvD+D,EAAY,MAAM,EAClBA,EAAY,OAAO,CACvB,CACJ,MAEIxD,EAAK,SAAS,CAAE,QAAS,CACjB0D,GAAY,GAAG,EAAI,EACnBvD,EAAQsD,GAAe,GAAGb,GAAa5C,EAAK,MAAOG,EAAM,MAAM,IAAI,CAAC,EAAIwD,EAAY,aAAa,GAAGC,EAAgB,CACxH,CAAE,CAAC,EAEX,MAAO,EACX,EAnBwB,mBAuBlBC,GAAmBrE,EAAAQ,GAAQ,CAC7B,IAAIG,EAAQH,EAAK,MAAM,MAAMC,GAAa,EAAK,EAC/C,GAAI,CAACE,GAAS,CAACA,EAAM,MACjB,MAAO,GACX,IAAIT,EAAQ4D,GAAStD,EAAM2C,EAAiB,EAC5C,OAAIjD,GAASA,EAAM,IAAI,SAASM,EAAK,KAAK,aAAa,GACnDA,EAAK,MAAM,EACfA,EAAK,SAAS,CAAE,QAAS0D,GAAY,GAAG,EAAK,CAAE,CAAC,EACzC,EACX,EATyB,oBAmBnBI,GAAe,CACjB,CAAE,IAAK,QAAS,IAAK9C,GAAiB,MAAO,qBAAsB,EACnE,CAAE,IAAK,KAAM,IAAKC,GAAU,MAAOQ,GAAc,MAAO,sBAAuB,eAAgB,EAAK,EACpG,CAAE,IAAK,QAAS,IAAKR,GAAU,MAAOQ,GAAc,MAAO,sBAAuB,eAAgB,EAAK,EACvG,CAAE,IAAK,SAAU,IAAKoC,GAAkB,MAAO,qBAAsB,EACrE,CAAE,IAAK,cAAe,IAAKjC,EAAuB,EAClD,CAAE,IAAK,YAAa,IAAKmC,EAAS,EAClC,CAAE,IAAK,QAAS,IAAKC,GAAsB,eAAgB,EAAK,CACpE,EACMC,GAAN,KAAkB,CA9gClB,MA8gCkB,CAAAzE,EAAA,oBACd,YAAYQ,EAAM,CACd,KAAK,KAAOA,EACZ,IAAIP,EAAQ,KAAK,MAAQO,EAAK,MAAM,MAAMC,EAAW,EAAE,MAAM,KAC7D,KAAK,OAAS,KAAK,OAAO,KAAK,IAAI,EACnC,KAAK,YAAciE,EAAI,QAAS,CAC5B,MAAOzE,EAAM,OACb,YAAa0E,GAAOnE,EAAM,MAAM,EAChC,aAAcmE,GAAOnE,EAAM,MAAM,EACjC,MAAO,eACP,KAAM,SACN,KAAM,GACN,aAAc,OACd,SAAU,KAAK,OACf,QAAS,KAAK,MAClB,CAAC,EACD,KAAK,aAAekE,EAAI,QAAS,CAC7B,MAAOzE,EAAM,QACb,YAAa0E,GAAOnE,EAAM,SAAS,EACnC,aAAcmE,GAAOnE,EAAM,SAAS,EACpC,MAAO,eACP,KAAM,UACN,KAAM,GACN,SAAU,KAAK,OACf,QAAS,KAAK,MAClB,CAAC,EACD,KAAK,UAAYkE,EAAI,QAAS,CAC1B,KAAM,WACN,KAAM,OACN,KAAM,GACN,QAASzE,EAAM,cACf,SAAU,KAAK,MACnB,CAAC,EACD,KAAK,QAAUyE,EAAI,QAAS,CACxB,KAAM,WACN,KAAM,KACN,KAAM,GACN,QAASzE,EAAM,OACf,SAAU,KAAK,MACnB,CAAC,EACD,KAAK,UAAYyE,EAAI,QAAS,CAC1B,KAAM,WACN,KAAM,OACN,KAAM,GACN,QAASzE,EAAM,UACf,SAAU,KAAK,MACnB,CAAC,EACD,SAAS2E,EAAOC,EAAMC,EAASC,EAAS,CACpC,OAAOL,EAAI,SAAU,CAAE,MAAO,YAAa,KAAAG,EAAM,QAAAC,EAAS,KAAM,QAAS,EAAGC,CAAO,CACvF,CAFS/E,EAAA4E,EAAA,UAGT,KAAK,IAAMF,EAAI,MAAO,CAAE,UAAW1E,EAACgF,GAAM,KAAK,QAAQA,CAAC,EAArB,aAAwB,MAAO,WAAY,EAAG,CAC7E,KAAK,YACLJ,EAAO,OAAQ,IAAMnD,GAASjB,CAAI,EAAG,CAACmE,GAAOnE,EAAM,MAAM,CAAC,CAAC,EAC3DoE,EAAO,OAAQ,IAAM3C,GAAazB,CAAI,EAAG,CAACmE,GAAOnE,EAAM,UAAU,CAAC,CAAC,EACnEoE,EAAO,SAAU,IAAMzC,GAAc3B,CAAI,EAAG,CAACmE,GAAOnE,EAAM,KAAK,CAAC,CAAC,EACjEkE,EAAI,QAAS,KAAM,CAAC,KAAK,UAAWC,GAAOnE,EAAM,YAAY,CAAC,CAAC,EAC/DkE,EAAI,QAAS,KAAM,CAAC,KAAK,QAASC,GAAOnE,EAAM,QAAQ,CAAC,CAAC,EACzDkE,EAAI,QAAS,KAAM,CAAC,KAAK,UAAWC,GAAOnE,EAAM,SAAS,CAAC,CAAC,EAC5D,GAAGA,EAAK,MAAM,SAAW,CAAC,EAAI,CAC1BkE,EAAI,IAAI,EACR,KAAK,aACLE,EAAO,UAAW,IAAMlC,GAAYlC,CAAI,EAAG,CAACmE,GAAOnE,EAAM,SAAS,CAAC,CAAC,EACpEoE,EAAO,aAAc,IAAM3B,GAAWzC,CAAI,EAAG,CAACmE,GAAOnE,EAAM,aAAa,CAAC,CAAC,CAC9E,EACAkE,EAAI,SAAU,CACV,KAAM,QACN,QAAS1E,EAAA,IAAMqE,GAAiB7D,CAAI,EAA3B,WACT,aAAcmE,GAAOnE,EAAM,OAAO,EAClC,KAAM,QACV,EAAG,CAAC,MAAG,CAAC,CACZ,CAAC,CACL,CACA,QAAS,CACL,IAAIP,EAAQ,IAAI2D,GAAY,CACxB,OAAQ,KAAK,YAAY,MACzB,cAAe,KAAK,UAAU,QAC9B,OAAQ,KAAK,QAAQ,QACrB,UAAW,KAAK,UAAU,QAC1B,QAAS,KAAK,aAAa,KAC/B,CAAC,EACI3D,EAAM,GAAG,KAAK,KAAK,IACpB,KAAK,MAAQA,EACb,KAAK,KAAK,SAAS,CAAE,QAASgE,GAAe,GAAGhE,CAAK,CAAE,CAAC,EAEhE,CACA,QAAQ,EAAG,CACHgF,GAAiB,KAAK,KAAM,EAAG,cAAc,EAC7C,EAAE,eAAe,EAEZ,EAAE,SAAW,IAAM,EAAE,QAAU,KAAK,aACzC,EAAE,eAAe,GAChB,EAAE,SAAWhD,GAAeR,IAAU,KAAK,IAAI,GAE3C,EAAE,SAAW,IAAM,EAAE,QAAU,KAAK,eACzC,EAAE,eAAe,EACjBiB,GAAY,KAAK,IAAI,EAE7B,CACA,OAAOhC,EAAQ,CACX,QAASwE,KAAMxE,EAAO,aAClB,QAASyE,KAAUD,EAAG,QACdC,EAAO,GAAGlB,EAAc,GAAK,CAACkB,EAAO,MAAM,GAAG,KAAK,KAAK,GACxD,KAAK,SAASA,EAAO,KAAK,CAE1C,CACA,SAASlF,EAAO,CACZ,KAAK,MAAQA,EACb,KAAK,YAAY,MAAQA,EAAM,OAC/B,KAAK,aAAa,MAAQA,EAAM,QAChC,KAAK,UAAU,QAAUA,EAAM,cAC/B,KAAK,QAAQ,QAAUA,EAAM,OAC7B,KAAK,UAAU,QAAUA,EAAM,SACnC,CACA,OAAQ,CACJ,KAAK,YAAY,OAAO,CAC5B,CACA,IAAI,KAAM,CAAE,MAAO,GAAI,CACvB,IAAI,KAAM,CAAE,OAAO,KAAK,KAAK,MAAM,MAAM6B,EAAiB,EAAE,GAAK,CACrE,EACA,SAAS6C,GAAOnE,EAAMmE,EAAQ,CAAE,OAAOnE,EAAK,MAAM,OAAOmE,CAAM,CAAG,CAAzD3E,EAAA2E,GAAA,UACT,IAAMS,GAAiB,GACjBC,GAAQ,cACd,SAAStD,GAAcvB,EAAM,CAAE,KAAAS,EAAM,GAAAC,CAAG,EAAG,CACvC,IAAIoE,EAAO9E,EAAK,MAAM,IAAI,OAAOS,CAAI,EAAGsE,EAAU/E,EAAK,MAAM,IAAI,OAAOU,CAAE,EAAE,GACxEsE,EAAQ,KAAK,IAAIF,EAAK,KAAMrE,EAAOmE,EAAc,EAAGK,EAAM,KAAK,IAAIF,EAASrE,EAAKkE,EAAc,EAC/FM,EAAOlF,EAAK,MAAM,SAASgF,EAAOC,CAAG,EACzC,GAAID,GAASF,EAAK,MACd,QAASxE,EAAI,EAAGA,EAAIsE,GAAgBtE,IAChC,GAAI,CAACuE,GAAM,KAAKK,EAAK5E,EAAI,CAAC,CAAC,GAAKuE,GAAM,KAAKK,EAAK5E,CAAC,CAAC,EAAG,CACjD4E,EAAOA,EAAK,MAAM5E,CAAC,EACnB,KACJ,EAER,GAAI2E,GAAOF,GACP,QAASzE,EAAI4E,EAAK,OAAS,EAAG5E,EAAI4E,EAAK,OAASN,GAAgBtE,IAC5D,GAAI,CAACuE,GAAM,KAAKK,EAAK5E,EAAI,CAAC,CAAC,GAAKuE,GAAM,KAAKK,EAAK5E,CAAC,CAAC,EAAG,CACjD4E,EAAOA,EAAK,MAAM,EAAG5E,CAAC,EACtB,KACJ,EAER,OAAOiC,EAAW,SAAS,GAAG,GAAGvC,EAAK,MAAM,OAAO,eAAe,CAAC,KAAKkF,CAAI,IAAIlF,EAAK,MAAM,OAAO,SAAS,CAAC,IAAI8E,EAAK,MAAM,GAAG,CAClI,CAnBStF,EAAA+B,GAAA,iBAoBT,IAAM4D,GAAyB5C,EAAW,UAAU,CAChD,sBAAuB,CACnB,QAAS,cACT,SAAU,WACV,iBAAkB,CACd,SAAU,WACV,IAAK,IACL,MAAO,MACP,gBAAiB,UACjB,OAAQ,OACR,KAAM,UACN,QAAS,EACT,OAAQ,CACZ,EACA,6BAA8B,CAC1B,OAAQ,kBACZ,EACA,yBAA0B,CACtB,YAAa,MACjB,EACA,UAAW,CACP,SAAU,MACV,WAAY,KAChB,CACJ,EACA,yBAA0B,CAAE,gBAAiB,WAAY,EACzD,wBAAyB,CAAE,gBAAiB,WAAY,EACxD,kCAAmC,CAAE,gBAAiB,WAAY,EAClE,iCAAkC,CAAE,gBAAiB,WAAY,CACrE,CAAC,EACKqB,GAAmB,CACrB3D,GACamF,GAAK,IAAItF,EAAiB,EACvCqF,EACJ,ECvrCA,IAAME,GAAN,KAAwB,CAPxB,MAOwB,CAAAC,EAAA,0BAMpB,YAIAC,EAIAC,EAOAC,EAQAC,EAAM,CACF,KAAK,MAAQH,EACb,KAAK,IAAMC,EACX,KAAK,SAAWC,EAChB,KAAK,KAAOC,EAIZ,KAAK,eAAiB,CAAC,EAIvB,KAAK,iBAAmB,EAC5B,CAKA,YAAYC,EAAO,CACf,IAAIC,EAAQC,EAAW,KAAK,KAAK,EAAE,aAAa,KAAK,IAAK,EAAE,EAC5D,KAAOD,GAASD,EAAM,QAAQC,EAAM,IAAI,EAAI,GACxCA,EAAQA,EAAM,OAClB,OAAOA,EAAQ,CAAE,KAAMA,EAAM,KAAM,GAAI,KAAK,IACxC,KAAM,KAAK,MAAM,SAASA,EAAM,KAAM,KAAK,GAAG,EAC9C,KAAMA,EAAM,IAAK,EAAI,IAC7B,CAKA,YAAYE,EAAM,CACd,IAAIC,EAAO,KAAK,MAAM,IAAI,OAAO,KAAK,GAAG,EACrCC,EAAQ,KAAK,IAAID,EAAK,KAAM,KAAK,IAAM,GAAG,EAC1CE,EAAMF,EAAK,KAAK,MAAMC,EAAQD,EAAK,KAAM,KAAK,IAAMA,EAAK,IAAI,EAC7DG,EAAQD,EAAI,OAAOE,GAAaL,EAAM,EAAK,CAAC,EAChD,OAAOI,EAAQ,EAAI,KAAO,CAAE,KAAMF,EAAQE,EAAO,GAAI,KAAK,IAAK,KAAMD,EAAI,MAAMC,CAAK,CAAE,CAC1F,CAKA,IAAI,SAAU,CAAE,OAAO,KAAK,gBAAkB,IAAM,CAcpD,iBAAiBE,EAAMC,EAAUC,EAAS,CAClCF,GAAQ,SAAW,KAAK,iBACxB,KAAK,eAAe,KAAKC,CAAQ,EAC7BC,GAAWA,EAAQ,cACnB,KAAK,iBAAmB,IAEpC,CACJ,EACA,SAASC,GAAMC,EAAO,CAClB,IAAIC,EAAO,OAAO,KAAKD,CAAK,EAAE,KAAK,EAAE,EACjCE,EAAQ,KAAK,KAAKD,CAAI,EAC1B,OAAIC,IACAD,EAAOA,EAAK,QAAQ,MAAO,EAAE,GAC1B,IAAIC,EAAQ,MAAQ,EAAE,GAAGD,EAAK,QAAQ,WAAY,MAAM,CAAC,GACpE,CANSnB,EAAAiB,GAAA,SAOT,SAASI,GAAYL,EAAS,CAC1B,IAAIM,EAAQ,OAAO,OAAO,IAAI,EAAGC,EAAO,OAAO,OAAO,IAAI,EAC1D,OAAS,CAAE,MAAAC,CAAM,IAAKR,EAAS,CAC3BM,EAAME,EAAM,CAAC,CAAC,EAAI,GAClB,QAASC,EAAI,EAAGA,EAAID,EAAM,OAAQC,IAC9BF,EAAKC,EAAMC,CAAC,CAAC,EAAI,EACzB,CACA,IAAIC,EAAST,GAAMK,CAAK,EAAIL,GAAMM,CAAI,EAAI,KAC1C,MAAO,CAAC,IAAI,OAAO,IAAMG,CAAM,EAAG,IAAI,OAAOA,CAAM,CAAC,CACxD,CATS1B,EAAAqB,GAAA,eAcT,SAASM,GAAiBC,EAAM,CAC5B,IAAIZ,EAAUY,EAAK,IAAIC,GAAK,OAAOA,GAAK,SAAW,CAAE,MAAOA,CAAE,EAAIA,CAAC,EAC/D,CAACC,EAAUC,CAAK,EAAIf,EAAQ,MAAMa,GAAK,QAAQ,KAAKA,EAAE,KAAK,CAAC,EAAI,CAAC,OAAQ,MAAM,EAAIR,GAAYL,CAAO,EAC1G,OAAQgB,GAAY,CAChB,IAAI1B,EAAQ0B,EAAQ,YAAYD,CAAK,EACrC,OAAOzB,GAAS0B,EAAQ,SAAW,CAAE,KAAM1B,EAAQA,EAAM,KAAO0B,EAAQ,IAAK,QAAAhB,EAAS,SAAAc,CAAS,EAAI,IACvG,CACJ,CAPS9B,EAAA2B,GAAA,oBA2BT,SAASM,GAAQC,EAAOC,EAAQ,CAC5B,OAAQC,GAAY,CAChB,QAASC,EAAMC,EAAWF,EAAQ,KAAK,EAAE,aAAaA,EAAQ,IAAK,EAAE,EAAGC,EAAKA,EAAMA,EAAI,OAAQ,CAC3F,GAAIH,EAAM,QAAQG,EAAI,IAAI,EAAI,GAC1B,OAAO,KACX,GAAIA,EAAI,KAAK,MACT,KACR,CACA,OAAOF,EAAOC,CAAO,CACzB,CACJ,CAVSG,EAAAN,GAAA,WAWT,IAAMO,GAAN,KAAa,CA9Jb,MA8Ja,CAAAD,EAAA,eACT,YAAYE,EAAYN,EAAQO,EAAOC,EAAO,CAC1C,KAAK,WAAaF,EAClB,KAAK,OAASN,EACd,KAAK,MAAQO,EACb,KAAK,MAAQC,CACjB,CACJ,EACA,SAASC,GAAIC,EAAO,CAAE,OAAOA,EAAM,UAAU,KAAK,IAAM,CAA/CN,EAAAK,GAAA,OAGT,SAASE,GAAaC,EAAMC,EAAO,CAC/B,IAAIC,EACJ,GAAI,CAAE,OAAAd,CAAO,EAAIY,EACbG,EAAWF,GAASb,EAAO,CAAC,GAAK,IAAKgB,EAAShB,EAAOA,EAAO,OAAS,CAAC,GAAK,IAChF,MAAI,CAACe,GAAY,CAACC,EACPJ,EACJ,IAAI,OAAO,GAAGG,EAAW,IAAM,EAAE,MAAMf,CAAM,IAAIgB,EAAS,IAAM,EAAE,IAAKF,EAAKF,EAAK,SAAW,MAAQE,IAAO,OAASA,EAAMF,EAAK,WAAa,IAAM,EAAG,CAChK,CAPSR,EAAAO,GAAA,gBAYT,IAAMM,GAAgCC,GAAW,OAAO,EAMxD,SAASC,GAAqBT,EAAOU,EAAMC,EAAMC,EAAI,CACjD,GAAI,CAAE,KAAAC,CAAK,EAAIb,EAAM,UAAWc,EAAUH,EAAOE,EAAK,KAAME,EAAQH,EAAKC,EAAK,KAC9E,MAAO,CACH,GAAGb,EAAM,cAAcgB,GAAS,CAC5B,GAAIA,GAASH,GAAQF,GAAQC,GACzBZ,EAAM,SAASgB,EAAM,KAAOF,EAASE,EAAM,KAAOD,CAAK,GAAKf,EAAM,SAASW,EAAMC,CAAE,EACnF,MAAO,CAAE,MAAAI,CAAM,EACnB,IAAIC,EAAQjB,EAAM,OAAOU,CAAI,EAC7B,MAAO,CACH,QAAS,CAAE,KAAMM,EAAM,KAAOF,EAAS,GAAIF,GAAMC,EAAK,KAAOG,EAAM,GAAKA,EAAM,KAAOD,EAAO,OAAQE,CAAM,EAC1G,MAAOC,EAAgB,OAAOF,EAAM,KAAOF,EAAUG,EAAM,MAAM,CACrE,CACJ,CAAC,EACD,eAAgB,GAChB,UAAW,gBACf,CACJ,CAhBSvB,EAAAe,GAAA,wBAiBT,IAAMU,GAA2B,IAAI,QACrC,SAASC,GAAS9B,EAAQ,CACtB,GAAI,CAAC,MAAM,QAAQA,CAAM,EACrB,OAAOA,EACX,IAAI+B,EAAQF,GAAY,IAAI7B,CAAM,EAClC,OAAK+B,GACDF,GAAY,IAAI7B,EAAQ+B,EAAQC,GAAiBhC,CAAM,CAAC,EACrD+B,CACX,CAPS3B,EAAA0B,GAAA,YAQT,IAAMG,GAAqCC,EAAY,OAAO,EACxDC,GAAqCD,EAAY,OAAO,EAKxDE,GAAN,KAAmB,CA3NnB,MA2NmB,CAAAhC,EAAA,qBACf,YAAYiC,EAAS,CACjB,KAAK,QAAUA,EACf,KAAK,MAAQ,CAAC,EACd,KAAK,OAAS,CAAC,EAGf,KAAK,IAAM,CAAC,EACZ,KAAK,QAAU,CAAC,EAChB,KAAK,OAAS,CAAC,EACf,KAAK,MAAQ,EACb,KAAK,QAAU,CAAC,EAChB,QAASC,EAAI,EAAGA,EAAID,EAAQ,QAAS,CACjC,IAAIE,EAAOC,GAAYH,EAASC,CAAC,EAAGG,EAAOC,GAAcH,CAAI,EAC7D,KAAK,MAAM,KAAKA,CAAI,EACpB,IAAII,EAAON,EAAQ,MAAMC,EAAGA,EAAIG,CAAI,EAAGG,EAAQD,EAAK,YAAY,EAChE,KAAK,OAAO,KAAKH,GAAYI,GAASD,EAAOA,EAAK,YAAY,EAAIC,EAAO,CAAC,CAAC,EAC3EN,GAAKG,CACT,CACA,KAAK,OAASJ,EAAQ,QAAU,KAAK,MAAM,MAC/C,CACA,IAAI7B,EAAOqC,EAAS,CAChB,YAAK,MAAQrC,EACb,KAAK,QAAUqC,EACR,IACX,CAQA,MAAMC,EAAM,CACR,GAAI,KAAK,QAAQ,QAAU,EACvB,OAAO,KAAK,IAAI,KAA4B,CAAC,CAAC,EAClD,GAAIA,EAAK,OAAS,KAAK,QAAQ,OAC3B,OAAO,KACX,GAAI,CAAE,MAAAC,EAAO,OAAAC,EAAQ,IAAAC,EAAK,QAAAC,EAAS,OAAAC,CAAO,EAAI,KAG9C,GAAIJ,EAAM,QAAU,EAAG,CACnB,IAAIK,EAAQZ,GAAYM,EAAM,CAAC,EAAGO,EAAYX,GAAcU,CAAK,EAC7D5C,EAAQ6C,GAAaP,EAAK,OAAS,EAAI,KAC3C,GAAIM,GAASL,EAAM,CAAC,EACf,GAAIK,GAASJ,EAAO,CAAC,EACtBxC,GAAS,SAET,QAAO,KACX,OAAO,KAAK,IAAIA,EAAO,CAAC,EAAG6C,CAAS,CAAC,CACzC,CACA,IAAIC,EAASR,EAAK,QAAQ,KAAK,OAAO,EACtC,GAAIQ,GAAU,EACV,OAAO,KAAK,IAAIR,EAAK,QAAU,KAAK,QAAQ,OAAS,EAAI,KAA4B,CAAC,EAAG,KAAK,QAAQ,MAAM,CAAC,EACjH,IAAIS,EAAMR,EAAM,OAAQS,EAAQ,EAChC,GAAIF,EAAS,EAAG,CACZ,QAASG,EAAI,EAAGC,EAAI,KAAK,IAAIZ,EAAK,OAAQ,GAAG,EAAGW,EAAIC,GAAKF,EAAQD,GAAM,CACnE,IAAII,EAAOnB,GAAYM,EAAMW,CAAC,GAC1BE,GAAQZ,EAAMS,CAAK,GAAKG,GAAQX,EAAOQ,CAAK,KAC5CP,EAAIO,GAAO,EAAIC,GACnBA,GAAKf,GAAciB,CAAI,CAC3B,CAEA,GAAIH,EAAQD,EACR,OAAO,IACf,CAGA,IAAIK,EAAY,EAIZC,EAAW,EAAGC,EAAe,GAE7BC,EAAa,EAAGC,EAAgB,GAAIC,EAAc,GAClDC,EAAW,QAAQ,KAAKpB,CAAI,EAAGqB,EAAe,GAElD,QAASV,EAAI,EAAGC,EAAI,KAAK,IAAIZ,EAAK,OAAQ,GAAG,EAAGsB,EAAW,EAAoBX,EAAIC,GAAKG,EAAWN,GAAM,CACrG,IAAII,EAAOnB,GAAYM,EAAMW,CAAC,EAC1BH,EAAS,IACLM,EAAYL,GAAOI,GAAQZ,EAAMa,CAAS,IAC1CV,EAAQU,GAAW,EAAIH,GACvBM,EAAaR,IACTI,GAAQZ,EAAMgB,CAAU,GAAKJ,GAAQX,EAAOe,CAAU,GAClDA,GAAc,IACdC,EAAgBP,GACpBQ,EAAcR,EAAI,EAClBM,KAGAA,EAAa,IAIzB,IAAIM,EAAIC,EAAOX,EAAO,IACfA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAM,EAAmBA,GAAQ,IAAMA,GAAQ,GAAK,EAAmB,GACxHU,EAAKE,GAAcZ,CAAI,IAAMU,EAAG,YAAY,EAAI,EAAmBA,GAAMA,EAAG,YAAY,EAAI,EAAmB,GACnH,CAACZ,GAAKa,GAAQ,GAAoBJ,GAAYE,GAAY,GAAsBE,GAAQ,KACpFvB,EAAMc,CAAQ,GAAKF,GAASX,EAAOa,CAAQ,GAAKF,IAASG,EAAe,IACxEX,EAAOU,GAAU,EAAIJ,EAChBN,EAAO,SACZgB,EAAe,KAEvBC,EAAWE,EACXb,GAAKf,GAAciB,CAAI,CAC3B,CACA,OAAIE,GAAYN,GAAOJ,EAAO,CAAC,GAAK,GAAKgB,EAC9B,KAAK,OAAO,MAA6BL,EAAe,KAA8B,GAAIX,EAAQL,CAAI,EAC7GiB,GAAcR,GAAOS,GAAiB,EAC/B,KAAK,IAAI,KAA8BlB,EAAK,QAAUmB,GAAenB,EAAK,OAAS,EAAI,MAA6B,CAAC,EAAGmB,CAAW,CAAC,EAC3IX,EAAS,GACF,KAAK,IAAI,KAA8BR,EAAK,OAAQ,CAACQ,EAAQA,EAAS,KAAK,QAAQ,MAAM,CAAC,EACjGS,GAAcR,EACP,KAAK,IAAI,KAA4DT,EAAK,OAAQ,CAACkB,EAAeC,CAAW,CAAC,EACrHJ,GAAYN,EACL,KAAK,OAAO,MAA6BO,EAAe,KAA8B,GAAK,MAC7FK,EAAe,EAAI,OAA0BhB,EAAQL,CAAI,EAC3DC,EAAM,QAAU,EAAI,KACrB,KAAK,QAAQE,EAAI,CAAC,EAAI,KAA8B,GAAK,KAA8B,MAAyBA,EAAKH,CAAI,CACnI,CACA,OAAOtC,EAAOgE,EAAW1B,EAAM,CAC3B,IAAI2B,EAAS,CAAC,EAAGhB,EAAI,EACrB,QAASvD,KAAOsE,EAAW,CACvB,IAAIlD,EAAKpB,GAAO,KAAK,OAASwC,GAAcF,GAAYM,EAAM5C,CAAG,CAAC,EAAI,GAClEuD,GAAKgB,EAAOhB,EAAI,CAAC,GAAKvD,EACtBuE,EAAOhB,EAAI,CAAC,EAAInC,GAEhBmD,EAAOhB,GAAG,EAAIvD,EACduE,EAAOhB,GAAG,EAAInC,EAEtB,CACA,OAAO,KAAK,IAAId,EAAQsC,EAAK,OAAQ2B,CAAM,CAC/C,CACJ,EACMC,GAAN,KAAoB,CAjWpB,MAiWoB,CAAAtE,EAAA,sBAChB,YAAYiC,EAAS,CACjB,KAAK,QAAUA,EACf,KAAK,QAAU,CAAC,EAChB,KAAK,MAAQ,EACb,KAAK,OAASA,EAAQ,YAAY,CACtC,CACA,MAAMS,EAAM,CACR,GAAIA,EAAK,OAAS,KAAK,QAAQ,OAC3B,OAAO,KACX,IAAIjC,EAAQiC,EAAK,MAAM,EAAG,KAAK,QAAQ,MAAM,EACzCvC,EAAQM,GAAS,KAAK,QAAU,EAAIA,EAAM,YAAY,GAAK,KAAK,OAAS,KAA8B,KAC3G,OAAIN,GAAS,KACF,MACX,KAAK,QAAU,CAAC,EAAGM,EAAM,MAAM,EAC/B,KAAK,MAAQN,GAASuC,EAAK,QAAU,KAAK,QAAQ,OAAS,EAAI,MACxD,KACX,CACJ,EAEM6B,GAAgCC,EAAM,OAAO,CAC/C,QAAQC,EAAS,CACb,OAAOC,GAAcD,EAAS,CAC1B,iBAAkB,GAClB,qBAAsBzE,EAAA,IAAM,GAAN,wBACtB,sBAAuB,IACvB,aAAc,GACd,SAAU,KACV,YAAa,GACb,mBAAoB,IACpB,cAAe,GACf,aAAcA,EAAA,IAAM,GAAN,gBACd,YAAaA,EAAA,IAAM,GAAN,eACb,YAAa,GACb,MAAO,GACP,aAAc,CAAC,EACf,aAAc2E,GACd,aAAc,GACd,mBAAoB3E,EAAA,CAAC4E,EAAGC,KAAOD,EAAE,UAAYA,EAAE,OAAO,cAAcC,EAAE,UAAYA,EAAE,KAAK,EAArE,sBACpB,iBAAkB,GAClB,eAAgB,GACpB,EAAG,CACC,cAAe7E,EAAA,CAAC4E,EAAGC,IAAMD,GAAKC,EAAf,iBACf,YAAa7E,EAAA,CAAC4E,EAAGC,IAAMD,GAAKC,EAAf,eACb,MAAO7E,EAAA,CAAC4E,EAAGC,IAAMD,GAAKC,EAAf,SACP,aAAc7E,EAAA,CAAC4E,EAAGC,IAAMC,GAAKC,GAAUH,EAAEE,CAAC,EAAGD,EAAEC,CAAC,CAAC,EAAnC,gBACd,YAAa9E,EAAA,CAAC4E,EAAGC,IAAMC,GAAKC,GAAUH,EAAEE,CAAC,EAAGD,EAAEC,CAAC,CAAC,EAAnC,eACb,aAAc9E,EAAA,CAAC4E,EAAGC,IAAMD,EAAE,OAAOC,CAAC,EAApB,gBACd,aAAc7E,EAAA,CAAC4E,EAAGC,IAAMD,GAAKC,EAAf,eAClB,CAAC,CACL,CACJ,CAAC,EACD,SAASE,GAAUH,EAAGC,EAAG,CACrB,OAAOD,EAAIC,EAAID,EAAI,IAAMC,EAAID,EAAIC,CACrC,CAFS7E,EAAA+E,GAAA,aAGT,SAASJ,GAAoBK,EAAMC,EAAMC,EAAQC,EAAMC,EAAOC,EAAS,CACnE,IAAIC,EAAMN,EAAK,eAAiBO,EAAU,IAAKC,EAAOF,EAAKG,EAAS,GAChEC,EAAO,MAAOC,EAAQC,EACtBC,EAAYZ,EAAK,KAAOG,EAAM,KAAMU,EAAaV,EAAM,MAAQH,EAAK,MACpEc,EAAYZ,EAAK,MAAQA,EAAK,KAAMa,EAAab,EAAK,OAASA,EAAK,IAKxE,GAJIK,GAAQK,EAAY,KAAK,IAAIE,EAAWD,CAAU,EAClDN,EAAO,GACF,CAACA,GAAQM,EAAa,KAAK,IAAIC,EAAWF,CAAS,IACxDL,EAAO,IACPO,IAAcP,EAAOK,EAAYC,GACjCH,EAAS,KAAK,IAAIP,EAAM,IAAK,KAAK,IAAIF,EAAO,IAAKE,EAAM,OAASY,CAAU,CAAC,EAAIf,EAAK,IACrFW,EAAW,KAAK,IAAI,IAAsBJ,EAAOK,EAAYC,CAAU,MAEtE,CACDL,EAAS,GACTG,EAAW,KAAK,IAAI,KAAuBN,EAAML,EAAK,MAAQG,EAAM,MAAQH,EAAK,MAAQ,EAAoB,EAC7G,IAAIgB,EAAab,EAAM,OAASH,EAAK,OACjCgB,GAAcD,GAAcC,EAAahB,EAAK,IAC9CU,EAAST,EAAO,OAASD,EAAK,KAG9BS,EAAO,SACPC,EAASV,EAAK,OAASC,EAAO,IAEtC,CACA,IAAIgB,GAAUjB,EAAK,OAASA,EAAK,KAAOI,EAAQ,aAC5Cc,GAAUlB,EAAK,MAAQA,EAAK,MAAQI,EAAQ,YAChD,MAAO,CACH,MAAO,GAAGK,CAAI,KAAKC,EAASO,CAAM,kBAAkBN,EAAWO,CAAM,KACrE,MAAO,sBAAwBV,EAAUH,EAAM,cAAgB,eAAkBE,EAAO,OAAS,QACrG,CACJ,CA/BSxF,EAAA2E,GAAA,uBAiCT,IAAMyB,GAAiCtE,EAAY,OAAO,EAC1D,SAASuE,GAAcC,EAAQ,CAC3B,IAAIC,EAAUD,EAAO,aAAa,MAAM,EACxC,OAAIA,EAAO,OACPC,EAAQ,KAAK,CACT,OAAOrG,EAAY,CACf,IAAIsG,EAAO,SAAS,cAAc,KAAK,EACvC,OAAAA,EAAK,UAAU,IAAI,mBAAmB,EAClCtG,EAAW,MACXsG,EAAK,UAAU,IAAI,GAAGtG,EAAW,KAAK,MAAM,MAAM,EAAE,IAAIuG,GAAO,qBAAuBA,CAAG,CAAC,EAC9FD,EAAK,aAAa,cAAe,MAAM,EAChCA,CACX,EACA,SAAU,EACd,CAAC,EACLD,EAAQ,KAAK,CACT,OAAOrG,EAAYwG,EAAIC,EAAIxG,EAAO,CAC9B,IAAIyG,EAAW,SAAS,cAAc,MAAM,EAC5CA,EAAS,UAAY,qBACrB,IAAIC,EAAQ3G,EAAW,cAAgBA,EAAW,MAAO4G,EAAM,EAC/D,QAASC,EAAI,EAAGA,EAAI5G,EAAM,QAAS,CAC/B,IAAIc,EAAOd,EAAM4G,GAAG,EAAG7F,EAAKf,EAAM4G,GAAG,EACjC9F,EAAO6F,GACPF,EAAS,YAAY,SAAS,eAAeC,EAAM,MAAMC,EAAK7F,CAAI,CAAC,CAAC,EACxE,IAAI+F,EAAOJ,EAAS,YAAY,SAAS,cAAc,MAAM,CAAC,EAC9DI,EAAK,YAAY,SAAS,eAAeH,EAAM,MAAM5F,EAAMC,CAAE,CAAC,CAAC,EAC/D8F,EAAK,UAAY,2BACjBF,EAAM5F,CACV,CACA,OAAI4F,EAAMD,EAAM,QACZD,EAAS,YAAY,SAAS,eAAeC,EAAM,MAAMC,CAAG,CAAC,CAAC,EAC3DF,CACX,EACA,SAAU,EACd,EAAG,CACC,OAAO1G,EAAY,CACf,GAAI,CAACA,EAAW,OACZ,OAAO,KACX,IAAI+G,EAAY,SAAS,cAAc,MAAM,EAC7C,OAAAA,EAAU,UAAY,sBACtBA,EAAU,YAAc/G,EAAW,OAC5B+G,CACX,EACA,SAAU,EACd,CAAC,EACMV,EAAQ,KAAK,CAAC3B,EAAGC,IAAMD,EAAE,SAAWC,EAAE,QAAQ,EAAE,IAAID,GAAKA,EAAE,MAAM,CAC5E,CA7CS5E,EAAAqG,GAAA,iBA8CT,SAASa,GAAoBC,EAAOC,EAAUC,EAAK,CAC/C,GAAIF,GAASE,EACT,MAAO,CAAE,KAAM,EAAG,GAAIF,CAAM,EAGhC,GAFIC,EAAW,IACXA,EAAW,GACXA,GAAaD,GAAS,EAAI,CAC1B,IAAIL,EAAM,KAAK,MAAMM,EAAWC,CAAG,EACnC,MAAO,CAAE,KAAMP,EAAMO,EAAK,IAAKP,EAAM,GAAKO,CAAI,CAClD,CACA,IAAIP,EAAM,KAAK,OAAOK,EAAQC,GAAYC,CAAG,EAC7C,MAAO,CAAE,KAAMF,GAASL,EAAM,GAAKO,EAAK,GAAIF,EAAQL,EAAMO,CAAI,CAClE,CAXSrH,EAAAkH,GAAA,uBAYT,IAAMI,GAAN,KAAwB,CApfxB,MAofwB,CAAAtH,EAAA,0BACpB,YAAYgF,EAAMuC,EAAYC,EAAiB,CAC3C,KAAK,KAAOxC,EACZ,KAAK,WAAauC,EAClB,KAAK,gBAAkBC,EACvB,KAAK,KAAO,KACZ,KAAK,YAAc,KACnB,KAAK,aAAe,CAChB,KAAMxH,EAAA,IAAM,KAAK,YAAY,EAAvB,QACN,MAAOA,EAACF,GAAQ,KAAK,UAAUA,CAAG,EAA3B,SACP,IAAK,IACT,EACA,KAAK,MAAQ,KACb,KAAK,aAAe,GACpB,IAAI2H,EAASzC,EAAK,MAAM,MAAMuC,CAAU,EACpC,CAAE,QAAAG,EAAS,SAAAN,CAAS,EAAIK,EAAO,KAC/BnB,EAAStB,EAAK,MAAM,MAAMT,EAAgB,EAC9C,KAAK,cAAgB8B,GAAcC,CAAM,EACzC,KAAK,YAAcA,EAAO,YAC1B,KAAK,aAAeA,EAAO,aAC3B,KAAK,MAAQY,GAAoBQ,EAAQ,OAAQN,EAAUd,EAAO,kBAAkB,EACpF,KAAK,IAAM,SAAS,cAAc,KAAK,EACvC,KAAK,IAAI,UAAY,0BACrB,KAAK,mBAAmBtB,EAAK,KAAK,EAClC,KAAK,IAAI,iBAAiB,YAAc1B,GAAM,CAC1C,GAAI,CAAE,QAAAoE,CAAQ,EAAI1C,EAAK,MAAM,MAAMuC,CAAU,EAAE,KAC/C,QAASI,EAAMrE,EAAE,OAAQnD,EAAOwH,GAAOA,GAAO,KAAK,IAAKA,EAAMA,EAAI,WAC9D,GAAIA,EAAI,UAAY,OAASxH,EAAQ,UAAU,KAAKwH,EAAI,EAAE,IAAM,CAACxH,EAAM,CAAC,EAAIuH,EAAQ,OAAQ,CACxF,KAAK,gBAAgB1C,EAAM0C,EAAQ,CAACvH,EAAM,CAAC,CAAC,CAAC,EAC7CmD,EAAE,eAAe,EACjB,MACJ,CAEJ,GAAIA,EAAE,QAAU,KAAK,KAAM,CACvB,IAAIsE,EAAO,KAAK,KAAK,UAAU,SAAS,gCAAgC,GACpEtE,EAAE,QAAU,KAAK,KAAK,WAAW,sBAAsB,EAAE,IAAM,KAAK,MAAM,KAAO,EACjF,KAAK,KAAK,UAAU,SAAS,mCAAmC,GAC5DA,EAAE,QAAU,KAAK,KAAK,UAAU,sBAAsB,EAAE,OAAS,KAAK,MAAM,GAAK,KACrFsE,GAAQ,OACR5C,EAAK,SAAS,CAAE,QAASoB,GAAkB,GAAGwB,CAAI,CAAE,CAAC,EACrDtE,EAAE,eAAe,EAEzB,CACJ,CAAC,EACD,KAAK,IAAI,iBAAiB,WAAaA,GAAM,CACzC,IAAIhD,EAAQ0E,EAAK,MAAM,MAAM,KAAK,WAAY,EAAK,EAC/C1E,GAASA,EAAM,SAAW0E,EAAK,MAAM,MAAMT,EAAgB,EAAE,aAC7DjB,EAAE,eAAiB0B,EAAK,YACxBA,EAAK,SAAS,CAAE,QAASjD,GAAsB,GAAG,IAAI,CAAE,CAAC,CACjE,CAAC,EACD,KAAK,YAAY2F,EAASD,EAAO,EAAE,CACvC,CACA,OAAQ,CAAE,KAAK,UAAU,CAAG,CAC5B,YAAYC,EAASG,EAAI,CACjB,KAAK,MACL,KAAK,KAAK,OAAO,EACrB,KAAK,KAAO,KAAK,IAAI,YAAY,KAAK,cAAcH,EAASG,EAAI,KAAK,KAAK,CAAC,EAC5E,KAAK,KAAK,iBAAiB,SAAU,IAAM,CACnC,KAAK,MACL,KAAK,KAAK,eAAe,KAAK,YAAY,CAClD,CAAC,CACL,CACA,OAAOC,EAAQ,CACX,IAAIpH,EACJ,IAAI+G,EAASK,EAAO,MAAM,MAAM,KAAK,UAAU,EAC3CC,EAAYD,EAAO,WAAW,MAAM,KAAK,UAAU,EAEvD,GADA,KAAK,mBAAmBA,EAAO,KAAK,EAChCL,GAAUM,EAAW,CACrB,GAAI,CAAE,QAAAL,EAAS,SAAAN,EAAU,SAAAY,CAAS,EAAIP,EAAO,MACzC,CAACM,EAAU,MAAQA,EAAU,KAAK,SAAWL,KAC7C,KAAK,MAAQR,GAAoBQ,EAAQ,OAAQN,EAAUU,EAAO,MAAM,MAAMvD,EAAgB,EAAE,kBAAkB,EAClH,KAAK,YAAYmD,EAASD,EAAO,EAAE,GAEvC,KAAK,UAAU,EACXO,KAActH,EAAKqH,EAAU,QAAU,MAAQrH,IAAO,OAAS,OAASA,EAAG,WAC3E,KAAK,IAAI,UAAU,OAAO,mCAAoC,CAAC,CAACsH,CAAQ,CAChF,CACJ,CACA,mBAAmB1H,EAAO,CACtB,IAAImG,EAAM,KAAK,aAAanG,CAAK,EACjC,GAAImG,GAAO,KAAK,aAAc,CAC1B,QAAS3B,KAAK,KAAK,aAAa,MAAM,GAAG,EACjCA,GACA,KAAK,IAAI,UAAU,OAAOA,CAAC,EACnC,QAASA,KAAK2B,EAAI,MAAM,GAAG,EACnB3B,GACA,KAAK,IAAI,UAAU,IAAIA,CAAC,EAChC,KAAK,aAAe2B,CACxB,CACJ,CACA,WAAWrB,EAAO,CACd,KAAK,MAAQA,EACT,KAAK,MACL,KAAK,KAAK,eAAe,KAAK,YAAY,CAClD,CACA,WAAY,CACR,IAAIqC,EAAS,KAAK,KAAK,MAAM,MAAM,KAAK,UAAU,EAAGQ,EAAOR,EAAO,MAC/DQ,EAAK,SAAW,IAAMA,EAAK,SAAW,KAAK,MAAM,MAAQA,EAAK,UAAY,KAAK,MAAM,MACrF,KAAK,MAAQf,GAAoBe,EAAK,QAAQ,OAAQA,EAAK,SAAU,KAAK,KAAK,MAAM,MAAM1D,EAAgB,EAAE,kBAAkB,EAC/H,KAAK,YAAY0D,EAAK,QAASR,EAAO,EAAE,GAE5C,IAAIS,EAAS,KAAK,qBAAqBD,EAAK,QAAQ,EACpD,GAAIC,EAAQ,CACR,KAAK,YAAY,EACjB,GAAI,CAAE,WAAAhI,CAAW,EAAI+H,EAAK,QAAQA,EAAK,QAAQ,EAC3C,CAAE,KAAA9C,CAAK,EAAIjF,EACf,GAAI,CAACiF,EACD,OACJ,IAAIgD,EAAa,OAAOhD,GAAS,SAAW,SAAS,eAAeA,CAAI,EAAIA,EAAKjF,CAAU,EAC3F,GAAI,CAACiI,EACD,OACA,SAAUA,EACVA,EAAW,KAAKC,GAAO,CACfA,GAAO,KAAK,KAAK,MAAM,MAAM,KAAK,WAAY,EAAK,GAAKX,GACxD,KAAK,YAAYW,EAAKlI,CAAU,CACxC,CAAC,EAAE,MAAMoD,GAAK+E,GAAa,KAAK,KAAK,MAAO/E,EAAG,iBAAiB,CAAC,GAGjE,KAAK,YAAY6E,EAAYjI,CAAU,EACvCgI,EAAO,aAAa,mBAAoB,KAAK,KAAK,EAAE,EAE5D,CACJ,CACA,YAAY3B,EAASrG,EAAY,CAC7B,KAAK,YAAY,EACjB,IAAIoI,EAAO,KAAK,KAAO,SAAS,cAAc,KAAK,EAGnD,GAFAA,EAAK,UAAY,+BACjBA,EAAK,GAAK,qBAAuB,KAAK,MAAM,KAAK,OAAO,EAAI,KAAM,EAAE,SAAS,EAAE,EAC3E/B,EAAQ,UAAY,KACpB+B,EAAK,YAAY/B,CAAO,EACxB,KAAK,YAAc,SAElB,CACD,GAAI,CAAE,IAAAoB,EAAK,QAAAY,CAAQ,EAAIhC,EACvB+B,EAAK,YAAYX,CAAG,EACpB,KAAK,YAAcY,GAAW,IAClC,CACA,KAAK,IAAI,YAAYD,CAAI,EACzB,KAAK,KAAK,eAAe,KAAK,YAAY,CAC9C,CACA,qBAAqBlB,EAAU,CAC3B,IAAIoB,EAAM,KACV,QAASC,EAAM,KAAK,KAAK,WAAYpF,EAAI,KAAK,MAAM,KAAMoF,EAAKA,EAAMA,EAAI,YAAapF,IAC9EoF,EAAI,UAAY,MAAQ,CAACA,EAAI,GAC7BpF,IAEKA,GAAK+D,EACLqB,EAAI,aAAa,eAAe,IACjCA,EAAI,aAAa,gBAAiB,MAAM,EACxCD,EAAMC,GAINA,EAAI,aAAa,eAAe,IAChCA,EAAI,gBAAgB,eAAe,EACnCA,EAAI,gBAAgB,kBAAkB,GAIlD,OAAID,GACAE,GAAe,KAAK,KAAMF,CAAG,EAC1BA,CACX,CACA,aAAc,CACV,IAAIG,EAAM,KAAK,IAAI,cAAc,iBAAiB,EAClD,GAAI,CAACA,GAAO,CAAC,KAAK,KACd,OAAO,KACX,IAAIC,EAAW,KAAK,IAAI,sBAAsB,EAC1CC,EAAW,KAAK,KAAK,sBAAsB,EAC3CC,EAAUH,EAAI,sBAAsB,EACpCvD,EAAQ,KAAK,MACjB,GAAI,CAACA,EAAO,CACR,IAAI2D,EAAS,KAAK,IAAI,cAAc,gBACpC3D,EAAQ,CAAE,KAAM,EAAG,IAAK,EAAG,MAAO2D,EAAO,YAAa,OAAQA,EAAO,YAAa,CACtF,CACA,OAAID,EAAQ,IAAM,KAAK,IAAI1D,EAAM,OAAQwD,EAAS,MAAM,EAAI,IACxDE,EAAQ,OAAS,KAAK,IAAI1D,EAAM,IAAKwD,EAAS,GAAG,EAAI,GAC9C,KACJ,KAAK,KAAK,MAAM,MAAMrE,EAAgB,EAAE,aAAa,KAAK,KAAMqE,EAAUE,EAASD,EAAUzD,EAAO,KAAK,GAAG,CACvH,CACA,UAAUtF,EAAK,CACP,KAAK,OACDA,GACIA,EAAI,QACJ,KAAK,KAAK,MAAM,QAAUA,EAAI,OAClC,KAAK,KAAK,UAAY,iCAAmCA,EAAI,OAAS,KAGtE,KAAK,KAAK,MAAM,QAAU,cAGtC,CACA,cAAc4H,EAASG,EAAIvG,EAAO,CAC9B,IAAM0H,EAAK,SAAS,cAAc,IAAI,EACtCA,EAAG,GAAKnB,EACRmB,EAAG,aAAa,OAAQ,SAAS,EACjCA,EAAG,aAAa,gBAAiB,MAAM,EACvCA,EAAG,aAAa,aAAc,KAAK,KAAK,MAAM,OAAO,aAAa,CAAC,EACnEA,EAAG,iBAAiB,YAAa1F,GAAK,CAE9BA,EAAE,QAAU0F,GACZ1F,EAAE,eAAe,CACzB,CAAC,EACD,IAAI2F,EAAa,KACjB,QAAS5F,EAAI/B,EAAM,KAAM+B,EAAI/B,EAAM,GAAI+B,IAAK,CACxC,GAAI,CAAE,WAAAnD,EAAY,MAAAC,CAAM,EAAIuH,EAAQrE,CAAC,EAAG,CAAE,QAAA6F,CAAQ,EAAIhJ,EACtD,GAAIgJ,EAAS,CACT,IAAIC,EAAO,OAAOD,GAAW,SAAWA,EAAUA,EAAQ,KAC1D,GAAIC,GAAQF,IAAe5F,EAAI/B,EAAM,MAAQA,EAAM,MAAQ,GAEvD,GADA2H,EAAaE,EACT,OAAOD,GAAW,UAAYA,EAAQ,OACtCF,EAAG,YAAYE,EAAQ,OAAOA,CAAO,CAAC,MAErC,CACD,IAAIE,EAASJ,EAAG,YAAY,SAAS,cAAc,oBAAoB,CAAC,EACxEI,EAAO,YAAcD,CACzB,CAER,CACA,IAAME,EAAKL,EAAG,YAAY,SAAS,cAAc,IAAI,CAAC,EACtDK,EAAG,GAAKxB,EAAK,IAAMxE,EACnBgG,EAAG,aAAa,OAAQ,QAAQ,EAChC,IAAI5C,EAAM,KAAK,YAAYvG,CAAU,EACjCuG,IACA4C,EAAG,UAAY5C,GACnB,QAAS7G,KAAU,KAAK,cAAe,CACnC,IAAI0J,EAAO1J,EAAOM,EAAY,KAAK,KAAK,MAAO,KAAK,KAAMC,CAAK,EAC3DmJ,GACAD,EAAG,YAAYC,CAAI,CAC3B,CACJ,CACA,OAAIhI,EAAM,MACN0H,EAAG,UAAU,IAAI,gCAAgC,EACjD1H,EAAM,GAAKoG,EAAQ,QACnBsB,EAAG,UAAU,IAAI,mCAAmC,EACjDA,CACX,CACA,aAAc,CACN,KAAK,OACD,KAAK,aACL,KAAK,YAAY,EACrB,KAAK,KAAK,OAAO,EACjB,KAAK,KAAO,KAEpB,CACA,SAAU,CACN,KAAK,YAAY,CACrB,CACJ,EACA,SAASO,GAAkBhC,EAAYC,EAAiB,CACpD,OAAQxC,GAAS,IAAIsC,GAAkBtC,EAAMuC,EAAYC,CAAe,CAC5E,CAFSxH,EAAAuJ,GAAA,qBAGT,SAASb,GAAec,EAAWC,EAAS,CACxC,IAAIC,EAASF,EAAU,sBAAsB,EACzCG,EAAOF,EAAQ,sBAAsB,EACrCvD,EAASwD,EAAO,OAASF,EAAU,aACnCG,EAAK,IAAMD,EAAO,IAClBF,EAAU,YAAcE,EAAO,IAAMC,EAAK,KAAOzD,EAC5CyD,EAAK,OAASD,EAAO,SAC1BF,EAAU,YAAcG,EAAK,OAASD,EAAO,QAAUxD,EAC/D,CARSlG,EAAA0I,GAAA,kBAYT,SAAStI,GAAM8E,EAAQ,CACnB,OAAQA,EAAO,OAAS,GAAK,KAAOA,EAAO,MAAQ,GAAK,IAAMA,EAAO,KAAO,EAAI,IAC3EA,EAAO,KAAO,EAAI,EAC3B,CAHSlF,EAAAI,GAAA,SAIT,SAASwJ,GAAYC,EAAQvJ,EAAO,CAChC,IAAIoH,EAAU,CAAC,EACXoC,EAAW,KAAMC,EAAsB,KACvCC,EAAYhK,EAACkF,GAAW,CACxBwC,EAAQ,KAAKxC,CAAM,EACnB,GAAI,CAAE,QAAAgE,CAAQ,EAAIhE,EAAO,WACzB,GAAIgE,EAAS,CACJY,IACDA,EAAW,CAAC,GAChB,IAAIX,EAAO,OAAOD,GAAW,SAAWA,EAAUA,EAAQ,KACrDY,EAAS,KAAKG,GAAKA,EAAE,MAAQd,CAAI,GAClCW,EAAS,KAAK,OAAOZ,GAAW,SAAW,CAAE,KAAAC,CAAK,EAAID,CAAO,CACrE,CACJ,EAVgB,aAWZgB,EAAO5J,EAAM,MAAMiE,EAAgB,EACvC,QAASK,KAAKiF,EACV,GAAIjF,EAAE,UAAU,EAAG,CACf,IAAIuF,EAAWvF,EAAE,OAAO,SACxB,GAAIA,EAAE,OAAO,SAAW,GACpB,QAASM,KAAUN,EAAE,OAAO,QACxBoF,EAAU,IAAI/J,GAAOiF,EAAQN,EAAE,OAAQuF,EAAWA,EAASjF,CAAM,EAAI,CAAC,EAAG,IAAMwC,EAAQ,MAAM,CAAC,MAGjG,CACD,IAAIzF,EAAU3B,EAAM,SAASsE,EAAE,KAAMA,EAAE,EAAE,EAAGzE,EACxCiK,EAAUF,EAAK,aAAe,IAAI5F,GAAcrC,CAAO,EAAI,IAAID,GAAaC,CAAO,EACvF,QAASiD,KAAUN,EAAE,OAAO,QACxB,GAAIzE,EAAQiK,EAAQ,MAAMlF,EAAO,KAAK,EAAG,CACrC,IAAIzC,EAAWyC,EAAO,aAA+BiF,EAAWA,EAASjF,EAAQ/E,EAAM,OAAO,EAAI,CAAC,EAA9DA,EAAM,QACvCC,EAAQD,EAAM,OAAS+E,EAAO,OAAS,GAE3C,GADA8E,EAAU,IAAI/J,GAAOiF,EAAQN,EAAE,OAAQnC,EAASrC,CAAK,CAAC,EAClD,OAAO8E,EAAO,SAAW,UAAYA,EAAO,QAAQ,OAAS,UAAW,CACxE,GAAI,CAAE,KAAAiE,CAAK,EAAIjE,EAAO,QACjB6E,IACDA,EAAsB,OAAO,OAAO,IAAI,GAC5CA,EAAoBZ,CAAI,EAAI,KAAK,IAAI/I,EAAO2J,EAAoBZ,CAAI,GAAK,IAAI,CACjF,CACJ,CACR,CACJ,CACJ,GAAIW,EAAU,CACV,IAAIO,EAAe,OAAO,OAAO,IAAI,EAAGvK,EAAM,EAC1CwK,EAAMtK,EAAA,CAAC4E,EAAGC,KACFD,EAAE,OAAS,WAAaC,EAAE,OAAS,UAAYkF,EAAoBlF,EAAE,IAAI,EAAIkF,EAAoBnF,EAAE,IAAI,EAAI,KAC9G,OAAOA,EAAE,MAAQ,SAAWA,EAAE,KAAO,MAAQ,OAAOC,EAAE,MAAQ,SAAWA,EAAE,KAAO,OAClFD,EAAE,KAAOC,EAAE,KAAO,GAAK,GAHtB,OAKV,QAASoF,KAAKH,EAAS,KAAKQ,CAAG,EAC3BxK,GAAO,IACPuK,EAAaJ,EAAE,IAAI,EAAInK,EAE3B,QAASoF,KAAUwC,EAAS,CACxB,GAAI,CAAE,QAAAwB,CAAQ,EAAIhE,EAAO,WACrBgE,IACAhE,EAAO,OAASmF,EAAa,OAAOnB,GAAW,SAAWA,EAAUA,EAAQ,IAAI,EACxF,CACJ,CACA,IAAI7E,EAAS,CAAC,EAAGkG,EAAO,KACpBC,EAAUN,EAAK,mBACnB,QAASzB,KAAOf,EAAQ,KAAK,CAAC9C,EAAGC,IAAOA,EAAE,MAAQD,EAAE,OAAU4F,EAAQ5F,EAAE,WAAYC,EAAE,UAAU,CAAC,EAAG,CAChG,IAAIxE,EAAMoI,EAAI,WACV,CAAC8B,GAAQA,EAAK,OAASlK,EAAI,OAASkK,EAAK,QAAUlK,EAAI,QACtDkK,EAAK,MAAQ,MAAQlK,EAAI,MAAQ,MAAQkK,EAAK,MAAQlK,EAAI,MAC3DkK,EAAK,OAASlK,EAAI,OAASkK,EAAK,OAASlK,EAAI,MAC7CgE,EAAO,KAAKoE,CAAG,EACVrI,GAAMqI,EAAI,UAAU,EAAIrI,GAAMmK,CAAI,IACvClG,EAAOA,EAAO,OAAS,CAAC,EAAIoE,GAChC8B,EAAO9B,EAAI,UACf,CACA,OAAOpE,CACX,CAtESrE,EAAA4J,GAAA,eAuET,IAAMa,GAAN,MAAMC,CAAiB,CAv0BvB,MAu0BuB,CAAA1K,EAAA,yBACnB,YAAY0H,EAASiD,EAAOtF,EAASuF,EAAWxD,EAAUY,EAAU,CAChE,KAAK,QAAUN,EACf,KAAK,MAAQiD,EACb,KAAK,QAAUtF,EACf,KAAK,UAAYuF,EACjB,KAAK,SAAWxD,EAChB,KAAK,SAAWY,CACpB,CACA,YAAYZ,EAAUS,EAAI,CACtB,OAAOT,GAAY,KAAK,UAAYA,GAAY,KAAK,QAAQ,OAAS,KAChE,IAAIsD,EAAiB,KAAK,QAASG,GAAUhD,EAAIT,CAAQ,EAAG,KAAK,QAAS,KAAK,UAAWA,EAAU,KAAK,QAAQ,CAC3H,CACA,OAAO,MAAMyC,EAAQvJ,EAAOuH,EAAI0C,EAAML,EAAMY,EAAc,CACtD,GAAIP,GAAQ,CAACO,GAAgBjB,EAAO,KAAKI,GAAKA,EAAE,SAAS,EACrD,OAAOM,EAAK,YAAY,EAC5B,IAAI7C,EAAUkC,GAAYC,EAAQvJ,CAAK,EACvC,GAAI,CAACoH,EAAQ,OACT,OAAO6C,GAAQV,EAAO,KAAKjF,GAAKA,EAAE,SAAS,EAAI2F,EAAK,YAAY,EAAI,KACxE,IAAInD,EAAW9G,EAAM,MAAMiE,EAAgB,EAAE,aAAe,EAAI,GAChE,GAAIgG,GAAQA,EAAK,UAAYnD,GAAYmD,EAAK,UAAY,GAAI,CAC1D,IAAIQ,EAAgBR,EAAK,QAAQA,EAAK,QAAQ,EAAE,WAChD,QAASlH,EAAI,EAAGA,EAAIqE,EAAQ,OAAQrE,IAChC,GAAIqE,EAAQrE,CAAC,EAAE,YAAc0H,EAAe,CACxC3D,EAAW/D,EACX,KACJ,CACR,CACA,OAAO,IAAIqH,EAAiBhD,EAASmD,GAAUhD,EAAIT,CAAQ,EAAG,CAC1D,IAAKyC,EAAO,OAAO,CAACjF,EAAGC,IAAMA,EAAE,UAAU,EAAI,KAAK,IAAID,EAAGC,EAAE,IAAI,EAAID,EAAG,GAAG,EACzE,OAAQoG,GACR,MAAOd,EAAK,WAChB,EAAGK,EAAOA,EAAK,UAAY,KAAK,IAAI,EAAGnD,EAAU,EAAK,CAC1D,CACA,IAAI6D,EAAS,CACT,OAAO,IAAIP,EAAiB,KAAK,QAAS,KAAK,MAAO,CAAE,GAAG,KAAK,QAAS,IAAKO,EAAQ,OAAO,KAAK,QAAQ,GAAG,CAAE,EAAG,KAAK,UAAW,KAAK,SAAU,KAAK,QAAQ,CAClK,CACA,aAAc,CACV,OAAO,IAAIP,EAAiB,KAAK,QAAS,KAAK,MAAO,KAAK,QAAS,KAAK,UAAW,KAAK,SAAU,EAAI,CAC3G,CACJ,EACMQ,GAAN,MAAMC,CAAgB,CAh3BtB,MAg3BsB,CAAAnL,EAAA,wBAClB,YAAY6J,EAAQhC,EAAII,EAAM,CAC1B,KAAK,OAAS4B,EACd,KAAK,GAAKhC,EACV,KAAK,KAAOI,CAChB,CACA,OAAO,OAAQ,CACX,OAAO,IAAIkD,EAAgBC,GAAM,SAAW,KAAK,MAAM,KAAK,OAAO,EAAI,GAAG,EAAE,SAAS,EAAE,EAAG,IAAI,CAClG,CACA,OAAOC,EAAI,CACP,GAAI,CAAE,MAAA/K,CAAM,EAAI+K,EAAInB,EAAO5J,EAAM,MAAMiE,EAAgB,EAGnDsF,GAFUK,EAAK,UACf5J,EAAM,eAAe,eAAgBD,GAAIC,CAAK,CAAC,EAAE,IAAIoB,EAAQ,GAC5C,IAAI9B,IACT,KAAK,OAAO,KAAKqK,GAAKA,EAAE,QAAUrK,CAAM,GAChD,IAAI0L,GAAa1L,EAAQ,KAAK,OAAO,KAAKgF,GAAKA,EAAE,OAAS,CAAsB,EAAI,EAAwB,CAAsB,GACzH,OAAOyG,EAAInB,CAAI,CAC/B,EACGL,EAAO,QAAU,KAAK,OAAO,QAAUA,EAAO,MAAM,CAAC,EAAGxG,IAAM,GAAK,KAAK,OAAOA,CAAC,CAAC,IACjFwG,EAAS,KAAK,QAClB,IAAI5B,EAAO,KAAK,KAAMsD,EAASF,EAAG,QAAQ,KAAK/H,GAAKA,EAAE,GAAGkI,EAAe,CAAC,EACrEvD,GAAQoD,EAAG,aACXpD,EAAOA,EAAK,IAAIoD,EAAG,OAAO,GAC1BA,EAAG,WAAaxB,EAAO,KAAK,GAAK,EAAE,UAAU,GAAKwB,EAAG,QAAQ,aAAa,EAAE,KAAM,EAAE,EAAE,CAAC,GACvF,CAACI,GAAY5B,EAAQ,KAAK,MAAM,GAAK0B,EACrCtD,EAAOwC,GAAiB,MAAMZ,EAAQvJ,EAAO,KAAK,GAAI2H,EAAMiC,EAAMqB,CAAM,EACnEtD,GAAQA,EAAK,UAAY,CAAC4B,EAAO,KAAK,GAAK,EAAE,SAAS,IAC3D5B,EAAO,MACP,CAACA,GAAQ4B,EAAO,MAAM,GAAK,CAAC,EAAE,SAAS,GAAKA,EAAO,KAAK,GAAK,EAAE,UAAU,CAAC,IAC1EA,EAASA,EAAO,IAAI,GAAK,EAAE,UAAU,EAAI,IAAIyB,GAAa,EAAE,OAAQ,CAAsB,EAAI,CAAC,GACnG,QAASI,KAAUL,EAAG,QACdK,EAAO,GAAGtF,EAAiB,IAC3B6B,EAAOA,GAAQA,EAAK,YAAYyD,EAAO,MAAO,KAAK,EAAE,GAC7D,OAAO7B,GAAU,KAAK,QAAU5B,GAAQ,KAAK,KAAO,KAAO,IAAIkD,EAAgBtB,EAAQ,KAAK,GAAI5B,CAAI,CACxG,CACA,IAAI,SAAU,CAAE,OAAO,KAAK,KAAO,KAAK,KAAK,QAAU,IAAM,CAC7D,IAAI,OAAQ,CAAE,OAAO,KAAK,KAAO,KAAK,KAAK,MAAQ,KAAK,OAAO,OAAS0D,GAAYC,EAAS,CACjG,EACA,SAASH,GAAY7G,EAAGC,EAAG,CACvB,GAAID,GAAKC,EACL,MAAO,GACX,QAASgH,EAAK,EAAGC,EAAK,IAAK,CACvB,KAAOD,EAAKjH,EAAE,QAAU,CAACA,EAAEiH,CAAE,EAAE,UAAU,GACrCA,IACJ,KAAOC,EAAKjH,EAAE,QAAU,CAACA,EAAEiH,CAAE,EAAE,UAAU,GACrCA,IACJ,IAAIC,EAAOF,GAAMjH,EAAE,OAAQoH,EAAOF,GAAMjH,EAAE,OAC1C,GAAIkH,GAAQC,EACR,OAAOD,GAAQC,EACnB,GAAIpH,EAAEiH,GAAI,EAAE,QAAUhH,EAAEiH,GAAI,EAAE,OAC1B,MAAO,EACf,CACJ,CAdS9L,EAAAyL,GAAA,eAeT,IAAME,GAAY,CACd,oBAAqB,MACzB,EACMC,GAAU,CAAC,EACjB,SAASf,GAAUhD,EAAIT,EAAU,CAC7B,IAAI/C,EAAS,CACT,oBAAqB,OACrB,gBAAiB,UACjB,gBAAiBwD,CACrB,EACA,OAAIT,EAAW,KACX/C,EAAO,uBAAuB,EAAIwD,EAAK,IAAMT,GAC1C/C,CACX,CATSrE,EAAA6K,GAAA,aAUT,IAAMO,GAAO,CAAC,EACd,SAASa,GAAcZ,EAAInB,EAAM,CAC7B,GAAImB,EAAG,YAAY,gBAAgB,EAAG,CAClC,IAAInL,EAAamL,EAAG,WAAWxK,EAAgB,EAC/C,GAAIX,GAAcgK,EAAK,qBAAqBhK,CAAU,EAClD,MAAO,GACf,CACA,IAAIgM,EAASb,EAAG,YAAY,YAAY,EACxC,OAAOa,GAAUhC,EAAK,iBAAmB,EACnCgC,EAAS,EACLb,EAAG,YAAY,iBAAiB,EAAI,EAChCA,EAAG,UAAY,EACXA,EAAG,WAAa,GAAsC,CAC5E,CAZSrL,EAAAiM,GAAA,iBAaT,IAAMX,GAAN,MAAMa,CAAa,CAj8BnB,MAi8BmB,CAAAnM,EAAA,qBACf,YAAYJ,EAAQU,EAAO8L,EAAW,GAAO,CACzC,KAAK,OAASxM,EACd,KAAK,MAAQU,EACb,KAAK,SAAW8L,CACpB,CACA,WAAY,CAAE,MAAO,EAAO,CAC5B,IAAI,WAAY,CAAE,OAAO,KAAK,OAAS,CAAuB,CAC9D,OAAOf,EAAInB,EAAM,CACb,IAAIhG,EAAO+H,GAAcZ,EAAInB,CAAI,EAAGmC,EAAQ,MACvCnI,EAAO,GAA8BA,EAAO,IAAwC,KAAK,QAAQmH,CAAE,KACpGgB,EAAQ,IAAIF,EAAaE,EAAM,OAAQ,CAAsB,GAC5DnI,EAAO,GAAgCmI,EAAM,OAAS,IACvDA,EAAQ,IAAIF,EAAa,KAAK,OAAQ,CAAqB,GAC/DE,EAAQA,EAAM,UAAUhB,EAAInH,CAAI,EAChC,QAASwH,KAAUL,EAAG,QAClB,GAAIK,EAAO,GAAG7J,EAAqB,EAC/BwK,EAAQ,IAAIF,EAAaE,EAAM,OAAQ,EAAuBX,EAAO,KAAK,UACrEA,EAAO,GAAG3J,EAAqB,EACpCsK,EAAQ,IAAIF,EAAaE,EAAM,OAAQ,CAAsB,UACxDX,EAAO,GAAGF,EAAe,EAC9B,QAAS3B,KAAU6B,EAAO,MAClB7B,EAAO,QAAUwC,EAAM,SACvBA,EAAQxC,GAExB,OAAOwC,CACX,CACA,UAAUhB,EAAInH,EAAM,CAAE,OAAO,KAAK,IAAImH,EAAG,OAAO,CAAG,CACnD,IAAIJ,EAAS,CAAE,OAAO,IAAM,CAC5B,QAAQI,EAAI,CACR,OAAOA,EAAG,QAAQ,aAAahL,GAAIgL,EAAG,KAAK,CAAC,CAChD,CACJ,EACMiB,GAAN,MAAMC,UAAqBjB,EAAa,CAl+BxC,MAk+BwC,CAAAtL,EAAA,qBACpC,YAAYJ,EAAQwM,EAAUI,EAAOnI,EAAQpD,EAAMC,EAAI,CACnD,MAAMtB,EAAQ,EAAsBwM,CAAQ,EAC5C,KAAK,MAAQI,EACb,KAAK,OAASnI,EACd,KAAK,KAAOpD,EACZ,KAAK,GAAKC,CACd,CACA,WAAY,CAAE,MAAO,EAAM,CAC3B,UAAUmK,EAAInH,EAAM,CAChB,IAAIxD,EACJ,GAAI,EAAEwD,EAAO,GACT,OAAO,KAAK,IAAImH,EAAG,OAAO,EAC9B,IAAIhH,EAAS,KAAK,OACdA,EAAO,KAAO,CAACgH,EAAG,QAAQ,QAC1BhH,EAASA,EAAO,IAAIA,EAAQgH,EAAG,OAAO,GAC1C,IAAIpK,EAAOoK,EAAG,QAAQ,OAAO,KAAK,IAAI,EAAGnK,EAAKmK,EAAG,QAAQ,OAAO,KAAK,GAAI,CAAC,EACtEvL,EAAMO,GAAIgL,EAAG,KAAK,EACtB,GAAIvL,EAAMoB,GAAM,CAACmD,GACZH,EAAO,IAAoC7D,GAAIgL,EAAG,UAAU,GAAK,KAAK,MAAQvL,EAAM,KAAK,OAC1F,OAAO,IAAIwL,GAAa,KAAK,OAAQpH,EAAO,EAA8B,EAAwB,CAAsB,EAC5H,IAAIsI,EAAQnB,EAAG,QAAQ,OAAO,KAAK,KAAK,EACxC,OAAIoB,GAAWpI,EAAO,SAAUgH,EAAG,MAAOpK,EAAMC,CAAE,EACvC,IAAIqL,EAAa,KAAK,OAAQ,KAAK,SAAUC,EAAOnI,EAAQpD,EAAMC,CAAE,EAC3EmD,EAAO,SACNA,EAASA,EAAO,OAAOA,EAAQpD,EAAMC,EAAI,IAAIwL,GAAkBrB,EAAG,MAAOvL,EAAK,EAAK,CAAC,GAC9E,IAAIyM,EAAa,KAAK,OAAQ,KAAK,SAAUC,EAAOnI,EAAQA,EAAO,MAAO3D,EAAK2D,EAAO,MAAQ,MAAQ3D,IAAO,OAASA,EAAKL,GAAIgL,EAAG,KAAK,CAAC,EAC5I,IAAIC,GAAa,KAAK,OAAQ,EAAuB,KAAK,QAAQ,CAC7E,CACA,IAAIqB,EAAS,CACT,OAAIA,EAAQ,MACD,MACE,KAAK,OAAO,IAAM,KAAK,OAAO,IAAI,KAAK,OAAQA,CAAO,EAAI,KAAK,QAGrE,IAAIJ,EAAa,KAAK,OAAQ,KAAK,SAAUI,EAAQ,OAAO,KAAK,KAAK,EAAG,KAAK,OAAQA,EAAQ,OAAO,KAAK,IAAI,EAAGA,EAAQ,OAAO,KAAK,GAAI,CAAC,CAAC,EADvI,IAAIrB,GAAa,KAAK,OAAQ,CAAsB,CAEnE,CACA,QAAQD,EAAI,CACR,OAAOA,EAAG,QAAQ,aAAa,KAAK,KAAM,KAAK,EAAE,CACrD,CACJ,EACA,SAASoB,GAAWG,EAAUtM,EAAOW,EAAMC,EAAI,CAC3C,GAAI,CAAC0L,EACD,MAAO,GACX,IAAI5L,EAAOV,EAAM,SAASW,EAAMC,CAAE,EAClC,OAAO,OAAO0L,GAAY,WAAaA,EAAS5L,EAAMC,EAAMC,EAAIZ,CAAK,EAAIC,GAAaqM,EAAU,EAAI,EAAE,KAAK5L,CAAI,CACnH,CALShB,EAAAyM,GAAA,cAMT,IAAMjB,GAA+B1J,EAAY,OAAO,CACpD,IAAI+K,EAASF,EAAS,CAAE,OAAOE,EAAQ,IAAI5C,GAAKA,EAAE,IAAI0C,CAAO,CAAC,CAAG,CACrE,CAAC,EACKG,GAA+BC,GAAW,OAAO,CACnD,QAAS,CAAE,OAAO7B,GAAgB,MAAM,CAAG,EAC3C,OAAOmB,EAAOhB,EAAI,CAAE,OAAOgB,EAAM,OAAOhB,CAAE,CAAG,EAC7C,QAASrL,EAAAgN,GAAK,CACVC,GAAY,KAAKD,EAAGE,GAAOA,EAAI,OAAO,EACtCC,EAAW,kBAAkB,KAAKH,EAAG1M,GAASA,EAAM,KAAK,CAC7D,EAHS,UAIb,CAAC,EACD,SAASkH,GAAgBxC,EAAME,EAAQ,CACnC,IAAMkI,EAAQlI,EAAO,WAAW,OAASA,EAAO,WAAW,MACvDb,EAASW,EAAK,MAAM,MAAM8H,EAAe,EAAE,OAAO,KAAKlI,GAAKA,EAAE,QAAUM,EAAO,MAAM,EACzF,OAAMb,aAAkBiI,IAEpB,OAAOc,GAAS,SAChBpI,EAAK,SAAS,CACV,GAAGjE,GAAqBiE,EAAK,MAAOoI,EAAO/I,EAAO,KAAMA,EAAO,EAAE,EACjE,YAAaxD,GAAiB,GAAGqE,EAAO,UAAU,CACtD,CAAC,EAEDkI,EAAMpI,EAAME,EAAO,WAAYb,EAAO,KAAMA,EAAO,EAAE,EAClD,IARI,EASf,CAbSrE,EAAAwH,GAAA,mBAcT,IAAMwD,GAA6BzB,GAAkBuD,GAAiBtF,EAAe,EAMrF,SAAS6F,GAAwBC,EAASC,EAAK,SAAU,CACrD,OAAQvI,GAAS,CACb,IAAIyC,EAASzC,EAAK,MAAM,MAAM8H,GAAiB,EAAK,EACpD,GAAI,CAACrF,GAAU,CAACA,EAAO,MAAQA,EAAO,KAAK,UACvC,KAAK,IAAI,EAAIA,EAAO,KAAK,UAAYzC,EAAK,MAAM,MAAMT,EAAgB,EAAE,iBACxE,MAAO,GACX,IAAIiJ,EAAO,EAAGnI,EACVkI,GAAM,SAAWlI,EAAUoI,GAAWzI,EAAMyC,EAAO,KAAK,OAAO,KAC/D+F,EAAO,KAAK,IAAI,EAAG,KAAK,MAAMnI,EAAQ,IAAI,aACtCA,EAAQ,IAAI,cAAc,IAAI,EAAE,YAAY,EAAI,CAAC,GACzD,GAAI,CAAE,OAAAqI,CAAO,EAAIjG,EAAO,KAAK,QACzBL,EAAWK,EAAO,KAAK,SAAW,GAAKA,EAAO,KAAK,SAAW+F,GAAQF,EAAU,EAAI,IAAMA,EAAU,EAAII,EAAS,EACrH,OAAItG,EAAW,EACXA,EAAWmG,GAAM,OAAS,EAAIG,EAAS,EAClCtG,GAAYsG,IACjBtG,EAAWmG,GAAM,OAASG,EAAS,EAAI,GAC3C1I,EAAK,SAAS,CAAE,QAASoB,GAAkB,GAAGgB,CAAQ,CAAE,CAAC,EAClD,EACX,CACJ,CAnBSpH,EAAAqN,GAAA,2BAuBT,IAAMM,GAAmB3N,EAACgF,GAAS,CAC/B,IAAIyC,EAASzC,EAAK,MAAM,MAAM8H,GAAiB,EAAK,EACpD,OAAI9H,EAAK,MAAM,UAAY,CAACyC,GAAU,CAACA,EAAO,MAAQA,EAAO,KAAK,SAAW,GAAKA,EAAO,KAAK,UAC1F,KAAK,IAAI,EAAIA,EAAO,KAAK,UAAYzC,EAAK,MAAM,MAAMT,EAAgB,EAAE,iBACjE,GACJiD,GAAgBxC,EAAMyC,EAAO,KAAK,QAAQA,EAAO,KAAK,QAAQ,CAAC,CAC1E,EANyB,oBAUnBmG,GAAkB5N,EAACgF,GACRA,EAAK,MAAM,MAAM8H,GAAiB,EAAK,GAGpD9H,EAAK,SAAS,CAAE,QAASnD,GAAsB,GAAG,EAAI,CAAE,CAAC,EAClD,IAFI,GAHS,mBAUlBgM,GAAkB7N,EAACgF,GAAS,CAC9B,IAAIyC,EAASzC,EAAK,MAAM,MAAM8H,GAAiB,EAAK,EACpD,MAAI,CAACrF,GAAU,CAACA,EAAO,OAAO,KAAK7C,GAAKA,EAAE,OAAS,CAAsB,EAC9D,IACXI,EAAK,SAAS,CAAE,QAASjD,GAAsB,GAAG,IAAI,CAAE,CAAC,EAClD,GACX,EANwB,mBAOlB+L,GAAN,KAAmB,CAlmCnB,MAkmCmB,CAAA9N,EAAA,qBACf,YAAY6J,EAAQhK,EAAS,CACzB,KAAK,OAASgK,EACd,KAAK,QAAUhK,EACf,KAAK,KAAO,KAAK,IAAI,EACrB,KAAK,QAAU,CAAC,EAGhB,KAAK,KAAO,MAChB,CACJ,EACMkO,GAAiB,GAAIC,GAAe,IACpCC,GAAgCC,GAAW,UAAU,KAAM,CAC7D,YAAYlJ,EAAM,CACd,KAAK,KAAOA,EACZ,KAAK,eAAiB,GACtB,KAAK,QAAU,CAAC,EAChB,KAAK,eAAiB,GACtB,KAAK,aAAe,GACpB,KAAK,UAAY,EACjB,QAAS6E,KAAU7E,EAAK,MAAM,MAAM8H,EAAe,EAAE,OAC7CjD,EAAO,WACP,KAAK,WAAWA,CAAM,CAClC,CACA,OAAO/B,EAAQ,CACX,IAAIL,EAASK,EAAO,MAAM,MAAMgF,EAAe,EAC3C5C,EAAOpC,EAAO,MAAM,MAAMvD,EAAgB,EAC9C,GAAI,CAACuD,EAAO,cAAgB,CAACA,EAAO,YAAcA,EAAO,WAAW,MAAMgF,EAAe,GAAKrF,EAC1F,OACJ,IAAI0G,EAAYrG,EAAO,aAAa,KAAKuD,GAAM,CAC3C,IAAInH,EAAO+H,GAAcZ,EAAInB,CAAI,EACjC,OAAQhG,EAAO,IAA8BmH,EAAG,WAAaA,EAAG,aAAe,EAAEnH,EAAO,EAC5F,CAAC,EACD,QAASb,EAAI,EAAGA,EAAI,KAAK,QAAQ,OAAQA,IAAK,CAC1C,IAAI+K,EAAQ,KAAK,QAAQ/K,CAAC,EAC1B,GAAI8K,GACAC,EAAM,QAAQ,kBAAoBtG,EAAO,YACzCsG,EAAM,QAAQ,OAAStG,EAAO,aAAa,OAASiG,IAAkB,KAAK,IAAI,EAAIK,EAAM,KAAOJ,GAAc,CAC9G,QAASK,KAAWD,EAAM,QAAQ,eAC9B,GAAI,CACAC,EAAQ,CACZ,OACO/K,EAAG,CACN+E,GAAa,KAAK,KAAK,MAAO/E,CAAC,CACnC,CAEJ8K,EAAM,QAAQ,eAAiB,KAC/B,KAAK,QAAQ,OAAO/K,IAAK,CAAC,CAC9B,MAEI+K,EAAM,QAAQ,KAAK,GAAGtG,EAAO,YAAY,CAEjD,CACI,KAAK,eAAiB,IACtB,aAAa,KAAK,cAAc,EAChCA,EAAO,aAAa,KAAKuD,GAAMA,EAAG,QAAQ,KAAK/H,GAAKA,EAAE,GAAGzB,EAAqB,CAAC,CAAC,IAChF,KAAK,aAAe,IACxB,IAAIyM,EAAQ,KAAK,aAAe,GAAKpE,EAAK,sBAG1C,GAFA,KAAK,eAAiBzC,EAAO,OAAO,KAAK7C,GAAKA,EAAE,WAAa,CAAC,KAAK,QAAQ,KAAK2J,GAAKA,EAAE,OAAO,QAAU3J,EAAE,MAAM,CAAC,EAC3G,WAAW,IAAM,KAAK,YAAY,EAAG0J,CAAK,EAAI,GAChD,KAAK,WAAa,EAClB,QAASjD,KAAMvD,EAAO,aACduD,EAAG,YAAY,YAAY,EAC3B,KAAK,UAAY,EACZ,KAAK,WAAa,GAAoCA,EAAG,YAC9D,KAAK,UAAY,EAEjC,CACA,aAAc,CACV,KAAK,eAAiB,GACtB,KAAK,aAAe,GACpB,GAAI,CAAE,MAAA/K,CAAM,EAAI,KAAK,KAAMmH,EAASnH,EAAM,MAAMwM,EAAe,EAC/D,QAASjD,KAAUpC,EAAO,OAClBoC,EAAO,WAAa,CAAC,KAAK,QAAQ,KAAK2E,GAAKA,EAAE,OAAO,QAAU3E,EAAO,MAAM,GAC5E,KAAK,WAAWA,CAAM,EAE1B,KAAK,QAAQ,QAAUpC,EAAO,MAAQA,EAAO,KAAK,WAClD,KAAK,eAAiB,WAAW,IAAM,KAAK,OAAO,EAAG,KAAK,KAAK,MAAM,MAAMlD,EAAgB,EAAE,cAAc,EACpH,CACA,WAAWsF,EAAQ,CACf,GAAI,CAAE,MAAAvJ,CAAM,EAAI,KAAK,KAAMR,EAAMO,GAAIC,CAAK,EACtCT,EAAU,IAAI6M,GAAkBpM,EAAOR,EAAK+J,EAAO,SAAU,KAAK,IAAI,EACtE4E,EAAU,IAAIX,GAAajE,EAAQhK,CAAO,EAC9C,KAAK,QAAQ,KAAK4O,CAAO,EACzB,QAAQ,QAAQ5E,EAAO,OAAOhK,CAAO,CAAC,EAAE,KAAKwE,GAAU,CAC9CoK,EAAQ,QAAQ,UACjBA,EAAQ,KAAOpK,GAAU,KACzB,KAAK,eAAe,EAE5B,EAAGqK,GAAO,CACN,KAAK,KAAK,SAAS,CAAE,QAAS3M,GAAsB,GAAG,IAAI,CAAE,CAAC,EAC9DsG,GAAa,KAAK,KAAK,MAAOqG,CAAG,CACrC,CAAC,CACL,CACA,gBAAiB,CACT,KAAK,QAAQ,MAAMH,GAAKA,EAAE,OAAS,MAAS,EAC5C,KAAK,OAAO,EACP,KAAK,eAAiB,IAC3B,KAAK,eAAiB,WAAW,IAAM,KAAK,OAAO,EAAG,KAAK,KAAK,MAAM,MAAMhK,EAAgB,EAAE,cAAc,EACpH,CAGA,QAAS,CACL,IAAI7D,EACA,KAAK,eAAiB,IACtB,aAAa,KAAK,cAAc,EACpC,KAAK,eAAiB,GACtB,IAAIiO,EAAU,CAAC,EACXzE,EAAO,KAAK,KAAK,MAAM,MAAM3F,EAAgB,EAAGkD,EAAS,KAAK,KAAK,MAAM,MAAMqF,EAAe,EAClG,QAASzJ,EAAI,EAAGA,EAAI,KAAK,QAAQ,OAAQA,IAAK,CAC1C,IAAI+K,EAAQ,KAAK,QAAQ/K,CAAC,EAC1B,GAAI+K,EAAM,OAAS,OACf,SAEJ,GADA,KAAK,QAAQ,OAAO/K,IAAK,CAAC,EACtB+K,EAAM,KAAM,CACZ,IAAItO,EAAMO,GAAI+N,EAAM,QAAQ,OAASA,EAAM,QAAQ,CAAC,EAAE,WAAa,KAAK,KAAK,KAAK,EAC9E5B,EAAQ,KAAK,IAAI1M,EAAKsO,EAAM,KAAK,MAAQA,EAAM,OAAO,SAAW,EAAI,EAAE,EACvEvE,EAAS,IAAIyC,GAAa8B,EAAM,OAAO,OAAQA,EAAM,OAAO,SAAU5B,EAAO4B,EAAM,KAAMA,EAAM,KAAK,MAAO1N,EAAK0N,EAAM,KAAK,MAAQ,MAAQ1N,IAAO,OAASA,EAAKZ,CAAG,EAGvK,QAASuL,KAAM+C,EAAM,QACjBvE,EAASA,EAAO,OAAOwB,EAAInB,CAAI,EACnC,GAAIL,EAAO,UAAU,EAAG,CACpB8E,EAAQ,KAAK9E,CAAM,EACnB,QACJ,CACJ,CACA,IAAI+E,EAAUnH,EAAO,OAAO,KAAK7C,GAAKA,EAAE,QAAUwJ,EAAM,OAAO,MAAM,EACrE,GAAIQ,GAAWA,EAAQ,UACnB,GAAIR,EAAM,MAAQ,KAAM,CAGpB,IAAIvE,EAAS,IAAIyB,GAAa8C,EAAM,OAAO,OAAQ,CAAsB,EACzE,QAAS/C,KAAM+C,EAAM,QACjBvE,EAASA,EAAO,OAAOwB,EAAInB,CAAI,EAC9BL,EAAO,WACR8E,EAAQ,KAAK9E,CAAM,CAC3B,MAGI,KAAK,WAAW+E,CAAO,CAGnC,EACID,EAAQ,QAAUlH,EAAO,MAAQA,EAAO,KAAK,WAC7C,KAAK,KAAK,SAAS,CAAE,QAAS+D,GAAgB,GAAGmD,CAAO,CAAE,CAAC,CACnE,CACJ,EAAG,CACC,cAAe,CACX,KAAKE,EAAO,CACR,IAAIvO,EAAQ,KAAK,KAAK,MAAM,MAAMwM,GAAiB,EAAK,EACxD,GAAIxM,GAASA,EAAM,SAAW,KAAK,KAAK,MAAM,MAAMiE,EAAgB,EAAE,YAAa,CAC/E,IAAIuK,EAASxO,EAAM,MAAQmN,GAAW,KAAK,KAAMnN,EAAM,KAAK,OAAO,GAC/D,CAACwO,GAAU,CAACA,EAAO,IAAI,SAASD,EAAM,aAAa,IACnD,WAAW,IAAM,KAAK,KAAK,SAAS,CAAE,QAAS9M,GAAsB,GAAG,IAAI,CAAE,CAAC,EAAG,EAAE,CAC5F,CACJ,EACA,kBAAmB,CACf,KAAK,UAAY,CACrB,EACA,gBAAiB,CACT,KAAK,WAAa,GAGlB,WAAW,IAAM,KAAK,KAAK,SAAS,CAAE,QAASF,GAAsB,GAAG,EAAK,CAAE,CAAC,EAAG,EAAE,EAEzF,KAAK,UAAY,CACrB,CACJ,CACJ,CAAC,EACKkN,GAAU,OAAO,WAAa,UAAyB,MAAM,KAAK,UAAU,QAAQ,EACpFC,GAAgCC,GAAK,QAAqB9B,EAAW,iBAAiB,CACxF,QAAQ0B,EAAO7J,EAAM,CACjB,IAAIkK,EAAQlK,EAAK,MAAM,MAAM8H,GAAiB,EAAK,EACnD,GAAI,CAACoC,GAAS,CAACA,EAAM,MAAQA,EAAM,KAAK,UAAYA,EAAM,KAAK,SAAW,GACtEL,EAAM,IAAI,OAAS,GAAKA,EAAM,SAAW,EAAEE,IAAWF,EAAM,SAAWA,EAAM,QAC7E,MAAO,GACX,IAAI3J,EAASgK,EAAM,KAAK,QAAQA,EAAM,KAAK,QAAQ,EAC/C7K,EAAS6K,EAAM,OAAO,KAAKtK,GAAKA,EAAE,QAAUM,EAAO,MAAM,EACzDiK,EAAcjK,EAAO,WAAW,kBAAoBb,EAAO,OAAO,iBACtE,OAAI8K,GAAeA,EAAY,QAAQN,EAAM,GAAG,EAAI,IAChDrH,GAAgBxC,EAAME,CAAM,EACzB,EACX,CACJ,CAAC,CAAC,EAEIkK,GAAyBjC,EAAW,UAAU,CAChD,sCAAuC,CACnC,SAAU,CACN,WAAY,YACZ,WAAY,SACZ,SAAU,cACV,kBAAmB,QACnB,SAAU,mBACV,SAAU,QACV,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,EACR,QAAS,EACT,iCAAkC,CAC9B,QAAS,UACT,WAAY,GAChB,EACA,SAAU,CACN,UAAW,SACX,aAAc,WACd,OAAQ,SACZ,EACA,yBAA0B,CACtB,QAAS,YACT,aAAc,mBACd,YAAa,QACb,QAAS,EACb,CACJ,CACJ,EACA,uDAAwD,CACpD,WAAY,OACZ,MAAO,OACX,EACA,gEAAiE,CAC7D,WAAY,MAChB,EACA,sDAAuD,CACnD,WAAY,OACZ,MAAO,OACX,EACA,+DAAgE,CAC5D,WAAY,MAChB,EACA,mFAAoF,CAChF,QAAS,iBACT,QAAS,GACT,QAAS,QACT,UAAW,QACf,EACA,gCAAiC,CAC7B,SAAU,WACV,QAAS,UACT,MAAO,cACP,SAAU,QACV,UAAW,aACX,WAAY,UAChB,EACA,4CAA6C,CAAE,MAAO,MAAO,EAC7D,6CAA8C,CAAE,KAAM,MAAO,EAC7D,mDAAoD,CAAE,MAAO,MAA4B,EACzF,oDAAqD,CAAE,KAAM,MAA4B,EACzF,0BAA2B,CAAE,gBAAiB,WAAY,EAC1D,yBAA0B,CAAE,gBAAiB,WAAY,EACzD,2BAA4B,CACxB,cAAe,WACf,MAAO,EACP,OAAQ,SACR,QAAS,eACT,OAAQ,iBACR,WAAY,mBAChB,EACA,4BAA6B,CACzB,eAAgB,WACpB,EACA,uBAAwB,CACpB,WAAY,QACZ,UAAW,QACf,EACA,qBAAsB,CAClB,SAAU,MACV,MAAO,OACP,QAAS,eACT,UAAW,SACX,aAAc,OACd,QAAS,MACT,UAAW,aACf,EACA,yDAA0D,CACtD,UAAW,CAAE,QAAS,UAAM,CAChC,EACA,2BAA4B,CACxB,UAAW,CAAE,QAAS,UAAM,CAChC,EACA,+BAAgC,CAC5B,UAAW,CAAE,QAAS,UAAM,CAChC,EACA,8BAA+B,CAC3B,UAAW,CAAE,QAAS,aAAO,CACjC,EACA,8BAA+B,CAC3B,UAAW,CAAE,QAAS,aAAO,CACjC,EACA,0BAA2B,CACvB,UAAW,CAAE,QAAS,aAAO,CACjC,EACA,0BAA2B,CACvB,UAAW,CAAE,QAAS,UAAM,CAChC,EACA,8BAA+B,CAC3B,UAAW,CAAE,QAAS,UAAM,CAChC,EACA,6BAA8B,CAC1B,UAAW,CAAE,QAAS,mBAAa,CACvC,EACA,+BAAgC,CAC5B,UAAW,CAAE,QAAS,UAAM,CAChC,EACA,0BAA2B,CACvB,UAAW,CAAE,QAAS,QAAS,SAAU,MAAO,cAAe,QAAS,CAC5E,CACJ,CAAC,EAEKkC,GAAN,KAAe,CAx5Cf,MAw5Ce,CAAArP,EAAA,iBACX,YAAYkP,EAAOI,EAAMrO,EAAMC,EAAI,CAC/B,KAAK,MAAQgO,EACb,KAAK,KAAOI,EACZ,KAAK,KAAOrO,EACZ,KAAK,GAAKC,CACd,CACJ,EACMqO,GAAN,MAAMC,CAAW,CAh6CjB,MAg6CiB,CAAAxP,EAAA,mBACb,YAAYkP,EAAOjO,EAAMC,EAAI,CACzB,KAAK,MAAQgO,EACb,KAAK,KAAOjO,EACZ,KAAK,GAAKC,CACd,CACA,IAAI+J,EAAS,CACT,IAAIhK,EAAOgK,EAAQ,OAAO,KAAK,KAAM,GAAIwE,GAAQ,QAAQ,EACrDvO,EAAK+J,EAAQ,OAAO,KAAK,GAAI,EAAGwE,GAAQ,QAAQ,EACpD,OAAOxO,GAAQ,MAAQC,GAAM,KAAO,KAAO,IAAIsO,EAAW,KAAK,MAAOvO,EAAMC,CAAE,CAClF,CACJ,EACMwO,GAAN,MAAMC,CAAQ,CA56Cd,MA46Cc,CAAA3P,EAAA,gBACV,YAAYuB,EAAOqO,EAAgB,CAC/B,KAAK,MAAQrO,EACb,KAAK,eAAiBqO,CAC1B,CACA,YAAYtP,EAAOR,EAAK,CACpB,IAAIkB,EAAO,CAAC,EAAG6O,EAAY,CAAC/P,CAAG,EAC3BgQ,EAAUxP,EAAM,IAAI,OAAOR,CAAG,EAAGiQ,EAAa,OAAO,KAAKD,EAAQ,IAAI,EAAE,CAAC,EAC7E,QAASR,KAAQ,KAAK,MAAO,CACzB,GAAItO,EAAK,OAAQ,CACb,IAAIgP,EAASD,EAAYE,EAAO,OAAO,KAAKX,CAAI,EAAE,CAAC,EAAE,OACrD,QAASjM,EAAI,EAAGA,EAAI4M,EAAM5M,IACtB2M,GAAU1P,EAAM,MAAM4P,EAAU,EACpCL,EAAU,KAAK/P,EAAMkQ,EAAO,OAASC,CAAI,EACzCX,EAAOU,EAASV,EAAK,MAAMW,CAAI,CACnC,CACAjP,EAAK,KAAKsO,CAAI,EACdxP,GAAOwP,EAAK,OAAS,CACzB,CACA,IAAIa,EAAS,KAAK,eAAe,IAAIrQ,GAAO,IAAIyP,GAAWzP,EAAI,MAAO+P,EAAU/P,EAAI,IAAI,EAAIA,EAAI,KAAM+P,EAAU/P,EAAI,IAAI,EAAIA,EAAI,EAAE,CAAC,EACnI,MAAO,CAAE,KAAAkB,EAAM,OAAAmP,CAAO,CAC1B,CACA,OAAO,MAAMC,EAAU,CACnB,IAAIC,EAAS,CAAC,EACV9O,EAAQ,CAAC,EAAG6C,EAAY,CAAC,EAAGkM,EAChC,QAAShB,KAAQc,EAAS,MAAM,UAAU,EAAG,CACzC,KAAOE,EAAI,sDAAsD,KAAKhB,CAAI,GAAG,CACzE,IAAIiB,EAAMD,EAAE,CAAC,EAAI,CAACA,EAAE,CAAC,EAAI,KAAME,EAAUF,EAAE,CAAC,GAAKA,EAAE,CAAC,GAAK,GAAIG,EAAQ,GACjEtH,EAAOqH,EAAQ,QAAQ,UAAWF,GAAKA,EAAE,CAAC,CAAC,EAC/C,QAASjN,EAAI,EAAGA,EAAIgN,EAAO,OAAQhN,KAC3BkN,GAAO,KAAOF,EAAOhN,CAAC,EAAE,KAAOkN,EAAMpH,GAAOkH,EAAOhN,CAAC,EAAE,MAAQ8F,KAC9DsH,EAAQpN,GAEhB,GAAIoN,EAAQ,EAAG,CACX,IAAIpN,EAAI,EACR,KAAOA,EAAIgN,EAAO,SAAWE,GAAO,MAASF,EAAOhN,CAAC,EAAE,KAAO,MAAQgN,EAAOhN,CAAC,EAAE,IAAMkN,IAClFlN,IACJgN,EAAO,OAAOhN,EAAG,EAAG,CAAE,IAAAkN,EAAK,KAAApH,CAAK,CAAC,EACjCsH,EAAQpN,EACR,QAASvD,KAAOsE,EACRtE,EAAI,OAAS2Q,GACb3Q,EAAI,OAChB,CACA,QAASA,KAAOsE,EACZ,GAAItE,EAAI,MAAQyB,EAAM,QAAUzB,EAAI,KAAOwQ,EAAE,MAAO,CAChD,IAAII,EAAOJ,EAAE,CAAC,EAAI,GAAKA,EAAE,CAAC,GAAK,IAAI,OAAS,EAC5CxQ,EAAI,MAAQ4Q,EACZ5Q,EAAI,IAAM4Q,CACd,CACJtM,EAAU,KAAK,IAAIiL,GAASoB,EAAOlP,EAAM,OAAQ+O,EAAE,MAAOA,EAAE,MAAQnH,EAAK,MAAM,CAAC,EAChFmG,EAAOA,EAAK,MAAM,EAAGgB,EAAE,KAAK,EAAIE,EAAUlB,EAAK,MAAMgB,EAAE,MAAQA,EAAE,CAAC,EAAE,MAAM,CAC9E,CACAhB,EAAOA,EAAK,QAAQ,YAAa,CAACqB,EAAGC,EAAOC,IAAU,CAClD,QAAS/Q,KAAOsE,EACRtE,EAAI,MAAQyB,EAAM,QAAUzB,EAAI,KAAO+Q,IACvC/Q,EAAI,OACJA,EAAI,MAEZ,OAAO8Q,CACX,CAAC,EACDrP,EAAM,KAAK+N,CAAI,CACnB,CACA,OAAO,IAAIK,EAAQpO,EAAO6C,CAAS,CACvC,CACJ,EACI0M,GAA2BC,EAAW,OAAO,CAAE,OAAqB,IAAI,cAAcC,EAAW,CAC7F,OAAQ,CACJ,IAAIhK,EAAO,SAAS,cAAc,MAAM,EACxC,OAAAA,EAAK,UAAY,0BACVA,CACX,CACA,aAAc,CAAE,MAAO,EAAO,CAClC,CAAE,CAAC,EACHiK,GAA0BF,EAAW,KAAK,CAAE,MAAO,iBAAkB,CAAC,EACpEG,GAAN,MAAMC,CAAc,CAt/CpB,MAs/CoB,CAAAnR,EAAA,sBAChB,YAAYmQ,EAAQtG,EAAQ,CACxB,KAAK,OAASsG,EACd,KAAK,OAAStG,EACd,KAAK,KAAOkH,EAAW,IAAIZ,EAAO,IAAI3B,IAAMA,EAAE,MAAQA,EAAE,GAAKsC,GAAcG,IAAY,MAAMzC,EAAE,KAAMA,EAAE,EAAE,CAAC,EAAG,EAAI,CACrH,CACA,IAAIvD,EAAS,CACT,IAAIkF,EAAS,CAAC,EACd,QAAS3B,KAAK,KAAK,OAAQ,CACvB,IAAI4C,EAAS5C,EAAE,IAAIvD,CAAO,EAC1B,GAAI,CAACmG,EACD,OAAO,KACXjB,EAAO,KAAKiB,CAAM,CACtB,CACA,OAAO,IAAID,EAAchB,EAAQ,KAAK,MAAM,CAChD,CACA,qBAAqBxH,EAAK,CACtB,OAAOA,EAAI,OAAO,MAAMrH,GAAS,KAAK,OAAO,KAAKkN,GAAKA,EAAE,OAAS,KAAK,QAAUA,EAAE,MAAQlN,EAAM,MAAQkN,EAAE,IAAMlN,EAAM,EAAE,CAAC,CAC9H,CACJ,EACM+P,GAAyBvP,EAAY,OAAO,CAC9C,IAAIuK,EAAOpB,EAAS,CAAE,OAAOoB,GAASA,EAAM,IAAIpB,CAAO,CAAG,CAC9D,CAAC,EACKqG,GAA2BxP,EAAY,OAAO,EAC9CyP,GAA4BxE,GAAW,OAAO,CAChD,QAAS,CAAE,OAAO,IAAM,EACxB,OAAOV,EAAOhB,EAAI,CACd,QAASK,KAAUL,EAAG,QAAS,CAC3B,GAAIK,EAAO,GAAG2F,EAAS,EACnB,OAAO3F,EAAO,MAClB,GAAIA,EAAO,GAAG4F,EAAW,GAAKjF,EAC1B,OAAO,IAAI6E,GAAc7E,EAAM,OAAQX,EAAO,KAAK,CAC3D,CACA,OAAIW,GAAShB,EAAG,aACZgB,EAAQA,EAAM,IAAIhB,EAAG,OAAO,GAC5BgB,GAAShB,EAAG,WAAa,CAACgB,EAAM,qBAAqBhB,EAAG,SAAS,IACjEgB,EAAQ,MACLA,CACX,EACA,QAASrM,EAAAgN,GAAKG,EAAW,YAAY,KAAKH,EAAGE,GAAOA,EAAMA,EAAI,KAAO6D,EAAW,IAAI,EAA3E,UACb,CAAC,EACD,SAASS,GAAerB,EAAQjB,EAAO,CACnC,OAAO1N,EAAgB,OAAO2O,EAAO,OAAO3B,GAAKA,EAAE,OAASU,CAAK,EAAE,IAAIV,GAAKhN,EAAgB,MAAMgN,EAAE,KAAMA,EAAE,EAAE,CAAC,CAAC,CACpH,CAFSxO,EAAAwR,GAAA,kBAiCT,SAASC,GAAQrB,EAAU,CACvB,IAAIqB,EAAU/B,GAAQ,MAAMU,CAAQ,EACpC,MAAO,CAACsB,EAAQxR,EAAYe,EAAMC,IAAO,CACrC,GAAI,CAAE,KAAAF,EAAM,OAAAmP,CAAO,EAAIsB,EAAQ,YAAYC,EAAO,MAAOzQ,CAAI,EACzD,CAAE,KAAAE,CAAK,EAAIuQ,EAAO,MAAM,UACxBC,EAAO,CACP,QAAS,CAAE,KAAA1Q,EAAM,GAAIC,GAAMC,EAAK,KAAOA,EAAK,GAAKD,EAAI,OAAQ0Q,EAAK,GAAG5Q,CAAI,CAAE,EAC3E,eAAgB,GAChB,YAAad,EAAa,CAACW,GAAiB,GAAGX,CAAU,EAAG2R,GAAY,UAAU,GAAG,gBAAgB,CAAC,EAAI,MAC9G,EAGA,GAFI1B,EAAO,SACPwB,EAAK,UAAYH,GAAerB,EAAQ,CAAC,GACzCA,EAAO,KAAK3B,GAAKA,EAAE,MAAQ,CAAC,EAAG,CAC/B,IAAI3E,EAAS,IAAIqH,GAAcf,EAAQ,CAAC,EACpC2B,EAAUH,EAAK,QAAU,CAACN,GAAU,GAAGxH,CAAM,CAAC,EAC9C6H,EAAO,MAAM,MAAMH,GAAc,EAAK,IAAM,QAC5CO,EAAQ,KAAKhQ,EAAY,aAAa,GAAG,CAACyP,GAAcQ,GAAkBC,GAAuB5C,EAAS,CAAC,CAAC,CACpH,CACAsC,EAAO,SAASA,EAAO,MAAM,OAAOC,CAAI,CAAC,CAC7C,CACJ,CApBS3R,EAAAyR,GAAA,WAqBT,SAASQ,GAAUC,EAAK,CACpB,MAAO,CAAC,CAAE,MAAA5R,EAAO,SAAA6R,CAAS,IAAM,CAC5B,IAAItI,EAASvJ,EAAM,MAAMiR,GAAc,EAAK,EAC5C,GAAI,CAAC1H,GAAUqI,EAAM,GAAKrI,EAAO,QAAU,EACvC,MAAO,GACX,IAAItG,EAAOsG,EAAO,OAASqI,EAAKE,EAAOF,EAAM,GAAK,CAACrI,EAAO,OAAO,KAAK2E,GAAKA,EAAE,OAASjL,EAAO2O,CAAG,EAChG,OAAAC,EAAS7R,EAAM,OAAO,CAClB,UAAWkR,GAAe3H,EAAO,OAAQtG,CAAI,EAC7C,QAAS8N,GAAU,GAAGe,EAAO,KAAO,IAAIlB,GAAcrH,EAAO,OAAQtG,CAAI,CAAC,EAC1E,eAAgB,EACpB,CAAC,CAAC,EACK,EACX,CACJ,CAbSvD,EAAAiS,GAAA,aAiBT,IAAMI,GAAerS,EAAA,CAAC,CAAE,MAAAM,EAAO,SAAA6R,CAAS,IACvB7R,EAAM,MAAMiR,GAAc,EAAK,GAG5CY,EAAS7R,EAAM,OAAO,CAAE,QAAS+Q,GAAU,GAAG,IAAI,CAAE,CAAC,CAAC,EAC/C,IAFI,GAHM,gBAUfiB,GAAgCL,GAAU,CAAC,EAI3CM,GAAgCN,GAAU,EAAE,EAiBlD,IAAMO,GAAuB,CACzB,CAAE,IAAK,MAAO,IAAKC,GAAkB,MAAOC,EAAiB,EAC7D,CAAE,IAAK,SAAU,IAAKC,EAAa,CACvC,EAQMC,GAA6BC,EAAM,OAAO,CAC5C,QAAQC,EAAM,CAAE,OAAOA,EAAK,OAASA,EAAK,CAAC,EAAIN,EAAsB,CACzE,CAAC,EACKO,GAAgCC,GAAK,QAAqBC,GAAO,QAAQ,CAACL,EAAa,EAAGM,GAASA,EAAM,MAAMN,EAAa,CAAC,CAAC,EAMpI,SAASO,GAAkBC,EAAUC,EAAY,CAC7C,MAAO,CAAE,GAAGA,EAAY,MAAOC,GAAQF,CAAQ,CAAE,CACrD,CAFSG,EAAAJ,GAAA,qBAGT,IAAMK,GAAqCC,EAAW,iBAAiB,CACnE,UAAUC,EAAOC,EAAM,CACnB,IAAIC,EAASD,EAAK,MAAM,MAAME,GAAc,EAAK,EAAGC,EACpD,GAAI,CAACF,IAAWE,EAAMH,EAAK,YAAY,CAAE,EAAGD,EAAM,QAAS,EAAGA,EAAM,OAAQ,CAAC,IAAM,KAC/E,MAAO,GACX,IAAIK,EAAQH,EAAO,OAAO,KAAKI,GAAKA,EAAE,MAAQF,GAAOE,EAAE,IAAMF,CAAG,EAChE,MAAI,CAACC,GAASA,EAAM,OAASH,EAAO,OACzB,IACXD,EAAK,SAAS,CACV,UAAWM,GAAeL,EAAO,OAAQG,EAAM,KAAK,EACpD,QAASG,GAAU,GAAGN,EAAO,OAAO,KAAKI,GAAKA,EAAE,MAAQD,EAAM,KAAK,EAC7D,IAAII,GAAcP,EAAO,OAAQG,EAAM,KAAK,EAAI,IAAI,EAC1D,eAAgB,EACpB,CAAC,EACM,GACX,CACJ,CAAC,EAgFD,IAAMK,GAAW,CACb,SAAU,CAAC,IAAK,IAAK,IAAK,IAAK,GAAG,EAClC,OAAQ,SACR,eAAgB,CAAC,CACrB,EACMC,GAAkCC,EAAY,OAAO,CACvD,IAAIC,EAAOC,EAAS,CAChB,IAAIC,EAASD,EAAQ,OAAOD,EAAO,GAAIG,GAAQ,UAAU,EACzD,OAAOD,GAAiB,MAC5B,CACJ,CAAC,EACKE,GAA6B,IAAI,cAAcC,EAAW,CAChE,EACAD,GAAc,UAAY,EAC1BA,GAAc,QAAU,GACxB,IAAME,GAA4BC,GAAW,OAAO,CAChD,QAAS,CAAE,OAAOC,EAAS,KAAO,EAClC,OAAOR,EAAOS,EAAI,CAEd,GADAT,EAAQA,EAAM,IAAIS,EAAG,OAAO,EACxBA,EAAG,UAAW,CACd,IAAIC,EAAOD,EAAG,MAAM,IAAI,OAAOA,EAAG,UAAU,KAAK,IAAI,EACrDT,EAAQA,EAAM,OAAO,CAAE,OAAQW,EAAAC,GAAQA,GAAQF,EAAK,MAAQE,GAAQF,EAAK,GAA1C,SAA6C,CAAC,CACjF,CACA,QAASG,KAAUJ,EAAG,QACdI,EAAO,GAAGf,EAAkB,IAC5BE,EAAQA,EAAM,OAAO,CAAE,IAAK,CAACI,GAAc,MAAMS,EAAO,MAAOA,EAAO,MAAQ,CAAC,CAAC,CAAE,CAAC,GAC3F,OAAOb,CACX,CACJ,CAAC,EAQD,SAASc,IAAgB,CACrB,MAAO,CAACC,GAAcT,EAAY,CACtC,CAFSK,EAAAG,GAAA,iBAGT,IAAME,GAAiB,mDACvB,SAASC,GAAQC,EAAI,CACjB,QAASC,EAAI,EAAGA,EAAIH,GAAe,OAAQG,GAAK,EAC5C,GAAIH,GAAe,WAAWG,CAAC,GAAKD,EAChC,OAAOF,GAAe,OAAOG,EAAI,CAAC,EAC1C,OAAOC,GAAcF,EAAK,IAAMA,EAAKA,EAAK,CAAC,CAC/C,CALSP,EAAAM,GAAA,WAMT,SAASI,GAAOC,EAAOC,EAAK,CACxB,OAAOD,EAAM,eAAe,gBAAiBC,CAAG,EAAE,CAAC,GAAK1B,EAC5D,CAFSc,EAAAU,GAAA,UAGT,IAAMG,GAAU,OAAO,WAAa,UAAyB,YAAY,KAAK,UAAU,SAAS,EAC3FT,GAA4BU,EAAW,aAAa,GAAG,CAACC,EAAMd,EAAMe,EAAIC,IAAW,CACrF,IAAKJ,GAAUE,EAAK,UAAYA,EAAK,qBAAuBA,EAAK,MAAM,SACnE,MAAO,GACX,IAAIG,EAAMH,EAAK,MAAM,UAAU,KAC/B,GAAIE,EAAO,OAAS,GAAKA,EAAO,QAAU,GAAKE,GAAcC,GAAYH,EAAQ,CAAC,CAAC,GAAK,GACpFhB,GAAQiB,EAAI,MAAQF,GAAME,EAAI,GAC9B,MAAO,GACX,IAAIpB,EAAKuB,GAAcN,EAAK,MAAOE,CAAM,EACzC,OAAKnB,GAELiB,EAAK,SAASjB,CAAE,EACT,IAFI,EAGf,CAAC,EAKKwB,GAAoBtB,EAAA,CAAC,CAAE,MAAAW,EAAO,SAAAY,CAAS,IAAM,CAC/C,GAAIZ,EAAM,SACN,MAAO,GAEX,IAAIa,EADOd,GAAOC,EAAOA,EAAM,UAAU,KAAK,IAAI,EAChC,UAAYzB,GAAS,SACnCuC,EAAO,KAAMC,EAAUf,EAAM,cAAcgB,GAAS,CACpD,GAAIA,EAAM,MAAO,CACb,IAAIC,EAASC,GAASlB,EAAM,IAAKgB,EAAM,IAAI,EAC3C,QAASG,KAASN,EACd,GAAIM,GAASF,GAAUG,GAASpB,EAAM,IAAKgB,EAAM,IAAI,GAAKrB,GAAQc,GAAYU,EAAO,CAAC,CAAC,EACnF,MAAO,CAAE,QAAS,CAAE,KAAMH,EAAM,KAAOG,EAAM,OAAQ,GAAIH,EAAM,KAAOG,EAAM,MAAO,EAC/E,MAAOE,EAAgB,OAAOL,EAAM,KAAOG,EAAM,MAAM,CAAE,CAEzE,CACA,MAAO,CAAE,MAAOL,EAAOE,CAAM,CACjC,CAAC,EACD,OAAKF,GACDF,EAASZ,EAAM,OAAOe,EAAS,CAAE,eAAgB,GAAM,UAAW,iBAAkB,CAAC,CAAC,EACnF,CAACD,CACZ,EAnB0B,qBAwBpBQ,GAAsB,CACxB,CAAE,IAAK,YAAa,IAAKX,EAAkB,CAC/C,EAYA,SAASD,GAAcV,EAAOuB,EAAS,CACnC,IAAIC,EAAOzB,GAAOC,EAAOA,EAAM,UAAU,KAAK,IAAI,EAC9Ca,EAASW,EAAK,UAAYjD,GAAS,SACvC,QAASkD,KAAOZ,EAAQ,CACpB,IAAIa,EAAS/B,GAAQc,GAAYgB,EAAK,CAAC,CAAC,EACxC,GAAIF,GAAWE,EACX,OAAOC,GAAUD,EAAME,GAAW3B,EAAOyB,EAAKZ,EAAO,QAAQY,EAAMA,EAAMA,CAAG,EAAI,GAAID,CAAI,EAClFI,GAAW5B,EAAOyB,EAAKC,EAAQF,EAAK,QAAUjD,GAAS,MAAM,EACvE,GAAIgD,GAAWG,GAAUG,GAAgB7B,EAAOA,EAAM,UAAU,KAAK,IAAI,EACrE,OAAO8B,GAAY9B,EAAOyB,EAAKC,CAAM,CAC7C,CACA,OAAO,IACX,CAZSrC,EAAAqB,GAAA,iBAaT,SAASmB,GAAgB7B,EAAOC,EAAK,CACjC,IAAI8B,EAAQ,GACZ,OAAA/B,EAAM,MAAMhB,EAAY,EAAE,QAAQ,EAAGgB,EAAM,IAAI,OAAQV,GAAQ,CACvDA,GAAQW,IACR8B,EAAQ,GAChB,CAAC,EACMA,CACX,CAPS1C,EAAAwC,GAAA,mBAQT,SAAST,GAASY,EAAK/B,EAAK,CACxB,IAAIgC,EAAOD,EAAI,YAAY/B,EAAKA,EAAM,CAAC,EACvC,OAAOgC,EAAK,MAAM,EAAGzB,GAAcC,GAAYwB,EAAM,CAAC,CAAC,CAAC,CAC5D,CAHS5C,EAAA+B,GAAA,YAIT,SAASF,GAASc,EAAK/B,EAAK,CACxB,IAAIiC,EAAOF,EAAI,YAAY/B,EAAM,EAAGA,CAAG,EACvC,OAAOO,GAAcC,GAAYyB,EAAM,CAAC,CAAC,GAAKA,EAAK,OAASA,EAAOA,EAAK,MAAM,CAAC,CACnF,CAHS7C,EAAA6B,GAAA,YAIT,SAASU,GAAW5B,EAAOmC,EAAMC,EAAOC,EAAa,CACjD,IAAIvB,EAAO,KAAMC,EAAUf,EAAM,cAAcgB,GAAS,CACpD,GAAI,CAACA,EAAM,MACP,MAAO,CAAE,QAAS,CAAC,CAAE,OAAQmB,EAAM,KAAMnB,EAAM,IAAK,EAAG,CAAE,OAAQoB,EAAO,KAAMpB,EAAM,EAAG,CAAC,EACpF,QAASxC,GAAmB,GAAGwC,EAAM,GAAKmB,EAAK,MAAM,EACrD,MAAOd,EAAgB,MAAML,EAAM,OAASmB,EAAK,OAAQnB,EAAM,KAAOmB,EAAK,MAAM,CAAE,EAC3F,IAAIF,EAAOb,GAASpB,EAAM,IAAKgB,EAAM,IAAI,EACzC,MAAI,CAACiB,GAAQ,KAAK,KAAKA,CAAI,GAAKI,EAAY,QAAQJ,CAAI,EAAI,GACjD,CAAE,QAAS,CAAE,OAAQE,EAAOC,EAAO,KAAMpB,EAAM,IAAK,EACvD,QAASxC,GAAmB,GAAGwC,EAAM,KAAOmB,EAAK,MAAM,EACvD,MAAOd,EAAgB,OAAOL,EAAM,KAAOmB,EAAK,MAAM,CAAE,EACzD,CAAE,MAAOrB,EAAOE,CAAM,CACjC,CAAC,EACD,OAAOF,EAAO,KAAOd,EAAM,OAAOe,EAAS,CACvC,eAAgB,GAChB,UAAW,YACf,CAAC,CACL,CAjBS1B,EAAAuC,GAAA,cAkBT,SAASE,GAAY9B,EAAOsC,EAAOF,EAAO,CACtC,IAAItB,EAAO,KAAMC,EAAUf,EAAM,cAAcgB,GACvCA,EAAM,OAASI,GAASpB,EAAM,IAAKgB,EAAM,IAAI,GAAKoB,EAC3C,CAAE,QAAS,CAAE,KAAMpB,EAAM,KAAM,GAAIA,EAAM,KAAOoB,EAAM,OAAQ,OAAQA,CAAM,EAC/E,MAAOf,EAAgB,OAAOL,EAAM,KAAOoB,EAAM,MAAM,CAAE,EAC1DtB,EAAO,CAAE,MAAAE,CAAM,CACzB,EACD,OAAOF,EAAO,KAAOd,EAAM,OAAOe,EAAS,CACvC,eAAgB,GAChB,UAAW,YACf,CAAC,CACL,CAXS1B,EAAAyC,GAAA,eAcT,SAASH,GAAW3B,EAAOmB,EAAOoB,EAAaxC,EAAQ,CACnD,IAAIyC,EAAiBzC,EAAO,gBAAkBxB,GAAS,eACnDuC,EAAO,KAAMC,EAAUf,EAAM,cAAcgB,GAAS,CACpD,GAAI,CAACA,EAAM,MACP,MAAO,CAAE,QAAS,CAAC,CAAE,OAAQG,EAAO,KAAMH,EAAM,IAAK,EAAG,CAAE,OAAQG,EAAO,KAAMH,EAAM,EAAG,CAAC,EACrF,QAASxC,GAAmB,GAAGwC,EAAM,GAAKG,EAAM,MAAM,EACtD,MAAOE,EAAgB,MAAML,EAAM,OAASG,EAAM,OAAQH,EAAM,KAAOG,EAAM,MAAM,CAAE,EAC7F,IAAIlB,EAAMe,EAAM,KAAMiB,EAAOb,GAASpB,EAAM,IAAKC,CAAG,EAAGwC,EACvD,GAAIR,GAAQd,EAAO,CACf,GAAIuB,GAAU1C,EAAOC,CAAG,EACpB,MAAO,CAAE,QAAS,CAAE,OAAQkB,EAAQA,EAAO,KAAMlB,CAAI,EACjD,QAASzB,GAAmB,GAAGyB,EAAMkB,EAAM,MAAM,EACjD,MAAOE,EAAgB,OAAOpB,EAAMkB,EAAM,MAAM,CAAE,EAErD,GAAIU,GAAgB7B,EAAOC,CAAG,EAAG,CAElC,IAAI0C,EADWJ,GAAevC,EAAM,SAASC,EAAKA,EAAMkB,EAAM,OAAS,CAAC,GAAKA,EAAQA,EAAQA,EACpEA,EAAQA,EAAQA,EAAQA,EACjD,MAAO,CAAE,QAAS,CAAE,KAAMlB,EAAK,GAAIA,EAAM0C,EAAQ,OAAQ,OAAQA,CAAQ,EACrE,MAAOtB,EAAgB,OAAOpB,EAAM0C,EAAQ,MAAM,CAAE,CAC5D,CACJ,KACK,IAAIJ,GAAevC,EAAM,SAASC,EAAM,EAAIkB,EAAM,OAAQlB,CAAG,GAAKkB,EAAQA,IAC1EsB,EAAQG,GAAiB5C,EAAOC,EAAM,EAAIkB,EAAM,OAAQqB,CAAc,GAAK,IAC5EE,GAAU1C,EAAOyC,CAAK,EACtB,MAAO,CAAE,QAAS,CAAE,OAAQtB,EAAQA,EAAQA,EAAQA,EAAO,KAAMlB,CAAI,EACjE,QAASzB,GAAmB,GAAGyB,EAAMkB,EAAM,MAAM,EACjD,MAAOE,EAAgB,OAAOpB,EAAMkB,EAAM,MAAM,CAAE,EAErD,GAAInB,EAAM,gBAAgBC,CAAG,EAAEgC,CAAI,GAAKY,EAAa,MAClDD,GAAiB5C,EAAOC,EAAKuC,CAAc,EAAI,IAAM,CAACM,GAAiB9C,EAAOC,EAAKkB,EAAOqB,CAAc,EACxG,MAAO,CAAE,QAAS,CAAE,OAAQrB,EAAQA,EAAO,KAAMlB,CAAI,EACjD,QAASzB,GAAmB,GAAGyB,EAAMkB,EAAM,MAAM,EACjD,MAAOE,EAAgB,OAAOpB,EAAMkB,EAAM,MAAM,CAAE,EAE9D,MAAO,CAAE,MAAOL,EAAOE,CAAM,CACjC,CAAC,EACD,OAAOF,EAAO,KAAOd,EAAM,OAAOe,EAAS,CACvC,eAAgB,GAChB,UAAW,YACf,CAAC,CACL,CAxCS1B,EAAAsC,GAAA,cAyCT,SAASe,GAAU1C,EAAOC,EAAK,CAC3B,IAAI8C,EAAOC,EAAWhD,CAAK,EAAE,aAAaC,EAAM,CAAC,EACjD,OAAO8C,EAAK,QAAUA,EAAK,MAAQ9C,CACvC,CAHSZ,EAAAqD,GAAA,aAIT,SAASI,GAAiB9C,EAAOC,EAAKgD,EAAYC,EAAU,CACxD,IAAIC,EAAOH,EAAWhD,CAAK,EAAE,aAAaC,EAAK,EAAE,EAC7CmD,EAAYF,EAAS,OAAO,CAACG,EAAGC,IAAM,KAAK,IAAID,EAAGC,EAAE,MAAM,EAAG,CAAC,EAClE,QAASzD,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAI4C,EAAQzC,EAAM,SAASmD,EAAK,KAAM,KAAK,IAAIA,EAAK,GAAIA,EAAK,KAAOF,EAAW,OAASG,CAAS,CAAC,EAC9FG,EAAWd,EAAM,QAAQQ,CAAU,EACvC,GAAI,CAACM,GAAYA,EAAW,IAAML,EAAS,QAAQT,EAAM,MAAM,EAAGc,CAAQ,CAAC,EAAI,GAAI,CAC/E,IAAIC,EAAQL,EAAK,WACjB,KAAOK,GAASA,EAAM,MAAQL,EAAK,MAAQK,EAAM,GAAKA,EAAM,KAAOP,EAAW,OAASM,GAAU,CAC7F,GAAIvD,EAAM,SAASwD,EAAM,GAAKP,EAAW,OAAQO,EAAM,EAAE,GAAKP,EAC1D,MAAO,GACXO,EAAQA,EAAM,UAClB,CACA,MAAO,EACX,CACA,IAAIC,EAASN,EAAK,IAAMlD,GAAOkD,EAAK,OACpC,GAAI,CAACM,EACD,MACJN,EAAOM,CACX,CACA,MAAO,EACX,CArBSpE,EAAAyD,GAAA,oBAsBT,SAASF,GAAiB5C,EAAOC,EAAKiD,EAAU,CAC5C,IAAIQ,EAAU1D,EAAM,gBAAgBC,CAAG,EACvC,GAAIyD,EAAQ1D,EAAM,SAASC,EAAM,EAAGA,CAAG,CAAC,GAAK4C,EAAa,KACtD,OAAO5C,EACX,QAAS0D,KAAUT,EAAU,CACzB,IAAIT,EAAQxC,EAAM0D,EAAO,OACzB,GAAI3D,EAAM,SAASyC,EAAOxC,CAAG,GAAK0D,GAAUD,EAAQ1D,EAAM,SAASyC,EAAQ,EAAGA,CAAK,CAAC,GAAKI,EAAa,KAClG,OAAOJ,CACf,CACA,MAAO,EACX,CAVSpD,EAAAuD,GAAA,oBAeT,SAASgB,GAAe7D,EAAS,CAAC,EAAG,CACjC,MAAO,CACH8D,GACAC,GACAC,GAAiB,GAAGhE,CAAM,EAC1BiE,GACAC,GACAC,EACJ,CACJ,CATS7E,EAAAuE,GAAA,kBAqBT,IAAMO,GAAmB,CACrB,CAAE,IAAK,aAAc,IAAKC,EAAgB,EAC1C,CAAE,IAAK,QAAS,IAAKA,EAAgB,EACrC,CAAE,IAAK,QAAS,IAAKA,EAAgB,EACrC,CAAE,IAAK,SAAU,IAAKC,EAAgB,EACtC,CAAE,IAAK,YAAa,IAAkBC,GAAwB,EAAI,CAAE,EACpE,CAAE,IAAK,UAAW,IAAkBA,GAAwB,EAAK,CAAE,EACnE,CAAE,IAAK,WAAY,IAAkBA,GAAwB,GAAM,MAAM,CAAE,EAC3E,CAAE,IAAK,SAAU,IAAkBA,GAAwB,GAAO,MAAM,CAAE,EAC1E,CAAE,IAAK,QAAS,IAAKC,EAAiB,CAC1C,EACMN,GAAmCO,GAAK,QAAqBC,GAAO,SAAS,CAACV,EAAgB,EAAG/D,GAASA,EAAM,MAAM+D,EAAgB,EAAE,cAAgB,CAACI,EAAgB,EAAI,CAAC,CAAC,CAAC,EChhEtL,IAAMO,GAAN,KAAyB,CAJzB,MAIyB,CAAAC,EAAA,2BACrB,YAAYC,EAAMC,EAAIC,EAAY,CAC9B,KAAK,KAAOF,EACZ,KAAK,GAAKC,EACV,KAAK,WAAaC,CACtB,CACJ,EACMC,GAAN,MAAMC,CAAU,CAXhB,MAWgB,CAAAL,EAAA,kBACZ,YAAYM,EAAaC,EAAOC,EAAU,CACtC,KAAK,YAAcF,EACnB,KAAK,MAAQC,EACb,KAAK,SAAWC,CACpB,CACA,OAAO,KAAKF,EAAaC,EAAOE,EAAO,CAEnC,IAAIC,EAAmBD,EAAM,MAAME,EAAU,EAAE,aAC3CD,IACAJ,EAAcI,EAAiBJ,EAAaG,CAAK,GACrD,IAAIG,EAASN,EAAY,MAAM,EAAE,KAAK,CAACO,EAAGC,IAAMD,EAAE,KAAOC,EAAE,MAAQD,EAAE,GAAKC,EAAE,EAAE,EAC1EC,EAAO,IAAIC,GAAmBC,EAAS,CAAC,EAAGC,EAAM,EACjDC,EAAOV,EAAM,IAAI,KAAK,EAAGW,EAAU,EAAGC,EAASZ,EAAM,IAAI,OAC7D,QAASa,EAAI,IAAK,CACd,IAAIC,EAAOD,GAAKV,EAAO,OAAS,KAAOA,EAAOU,CAAC,EAC/C,GAAI,CAACC,GAAQ,CAACN,EAAO,OACjB,MACJ,IAAIhB,EAAMC,EACV,GAAIe,EAAO,OACPhB,EAAOiB,EACPhB,EAAKe,EAAO,OAAO,CAACO,EAAGC,IAAM,KAAK,IAAID,EAAGC,EAAE,EAAE,EAAGF,GAAQA,EAAK,KAAOtB,EAAOsB,EAAK,KAAO,GAAG,MAEzF,CAED,GADAtB,EAAOsB,EAAK,KACRtB,EAAOoB,EACP,MACJnB,EAAKqB,EAAK,GACVN,EAAO,KAAKM,CAAI,EAChBD,GACJ,CACA,KAAOA,EAAIV,EAAO,QAAQ,CACtB,IAAIW,EAAOX,EAAOU,CAAC,EACnB,GAAIC,EAAK,MAAQtB,IAASsB,EAAK,GAAKA,EAAK,MAAQA,EAAK,IAAMtB,GACxDgB,EAAO,KAAKM,CAAI,EAChBD,IACApB,EAAK,KAAK,IAAIqB,EAAK,GAAIrB,CAAE,MAExB,CACDA,EAAK,KAAK,IAAIqB,EAAK,KAAMrB,CAAE,EAC3B,KACJ,CACJ,CACAA,EAAK,KAAK,IAAIA,EAAImB,CAAM,EACxB,IAAIK,EAAS,GACb,GAAIT,EAAO,KAAKQ,GAAKA,EAAE,MAAQxB,IAASwB,EAAE,IAAMvB,GAAMA,GAAMmB,EAAO,IAC/DK,EAASzB,GAAQC,EACb,CAACwB,GAAUxB,EAAKD,EAAO,IAAI,CAC3B,IAAI0B,EAAS1B,GAAQmB,EAAUD,EAAK,MAAM,QACtCQ,EAAS,IACTR,EAAK,KAAKQ,CAAM,EAChBP,EAAUnB,GAEd,QAAS2B,EAAQ3B,IAAQ,CACrB,GAAI2B,GAAS1B,EAAI,CACbwB,EAAS,GACT,KACJ,CACA,GAAI,CAACP,EAAK,WAAaC,EAAUD,EAAK,MAAM,OAASS,EACjD,MACJA,EAAQR,EAAUD,EAAK,MAAM,OAC7BC,GAAWD,EAAK,MAAM,OACtBA,EAAK,KAAK,CACd,CACJ,CAEJ,IAAIU,EAAMC,GAAYb,CAAM,EAC5B,GAAIS,EACAX,EAAK,IAAId,EAAMA,EAAM8B,EAAW,OAAO,CACnC,OAAQ,IAAIC,GAAiBH,CAAG,EAChC,YAAaZ,EAAO,MAAM,CAC9B,CAAC,CAAC,MAED,CACD,IAAIgB,EAAYhB,EAAO,OAAO,CAACiB,EAAGT,IAAMA,EAAE,UAAYS,EAAI,IAAMT,EAAE,UAAYS,EAAG,EAAE,EACnFnB,EAAK,IAAId,EAAMC,EAAI6B,EAAW,KAAK,CAC/B,MAAO,6BAA+BF,EAAMI,EAC5C,YAAahB,EAAO,MAAM,EAC1B,aAAcA,EAAO,KAAKJ,GAAKA,EAAE,GAAKX,CAAE,CAC5C,CAAC,CAAC,CACN,CAEA,GADAgB,EAAMhB,EACFgB,GAAOG,EACP,MACJ,QAASC,EAAI,EAAGA,EAAIL,EAAO,OAAQK,IAC3BL,EAAOK,CAAC,EAAE,IAAMJ,GAChBD,EAAO,OAAOK,IAAK,CAAC,CAChC,CACA,IAAIa,EAAMpB,EAAK,OAAO,EACtB,OAAO,IAAIV,EAAU8B,EAAK5B,EAAO6B,GAAeD,CAAG,CAAC,CACxD,CACJ,EACA,SAASC,GAAe9B,EAAaH,EAAa,KAAMkC,EAAQ,EAAG,CAC/D,IAAIC,EAAQ,KACZ,OAAAhC,EAAY,QAAQ+B,EAAO,IAAK,CAACpC,EAAMC,EAAI,CAAE,KAAAqC,CAAK,IAAM,CACpD,GAAI,EAAApC,GAAcoC,EAAK,YAAY,QAAQpC,CAAU,EAAI,GAEzD,GAAI,CAACmC,EACDA,EAAQ,IAAIvC,GAAmBE,EAAMC,EAAIC,GAAcoC,EAAK,YAAY,CAAC,CAAC,MACzE,IAAIA,EAAK,YAAY,QAAQD,EAAM,UAAU,EAAI,EAClD,MAAO,GAEPA,EAAQ,IAAIvC,GAAmBuC,EAAM,KAAMpC,EAAIoC,EAAM,UAAU,EACvE,CAAC,EACMA,CACX,CAbStC,EAAAoC,GAAA,kBAcT,SAASI,GAAYC,EAAIC,EAAS,CAC9B,IAAIzC,EAAOyC,EAAQ,IAAKxC,EAAKwC,EAAQ,KAAOzC,EACxC0C,EAASF,EAAG,MAAM,MAAM9B,EAAU,EAAE,OAAO8B,EAAIxC,EAAMC,CAAE,EAC3D,GAAIyC,GAAU,KACV,OAAOA,EACX,IAAIC,EAAOH,EAAG,WAAW,IAAI,OAAOC,EAAQ,GAAG,EAC/C,MAAO,CAAC,EAAED,EAAG,QAAQ,KAAKI,GAAKA,EAAE,GAAGC,EAAoB,CAAC,GAAKL,EAAG,QAAQ,aAAaG,EAAK,KAAM,KAAK,IAAIA,EAAK,GAAI1C,CAAE,CAAC,EAC1H,CAPSF,EAAAwC,GAAA,eAQT,SAASO,GAAgBtC,EAAOuC,EAAS,CACrC,OAAOvC,EAAM,MAAMwC,GAAW,EAAK,EAAID,EAAUA,EAAQ,OAAOE,EAAY,aAAa,GAAGC,EAAc,CAAC,CAC/G,CAFSnD,EAAA+C,GAAA,mBAiBT,IAAMK,GAAoCC,EAAY,OAAO,EACvDC,GAA2BD,EAAY,OAAO,EAC9CE,GAAkCF,EAAY,OAAO,EACrDG,GAAyBC,GAAW,OAAO,CAC7C,QAAS,CACL,OAAO,IAAIC,GAAUC,EAAW,KAAM,KAAM,IAAI,CACpD,EACA,OAAOC,EAAOC,EAAI,CACd,GAAIA,EAAG,YAAcD,EAAM,YAAY,KAAM,CACzC,IAAIE,EAASF,EAAM,YAAY,IAAIC,EAAG,OAAO,EAAGE,EAAW,KAAMC,EAAQJ,EAAM,MAC/E,GAAIA,EAAM,SAAU,CAChB,IAAIK,EAASJ,EAAG,QAAQ,OAAOD,EAAM,SAAS,KAAM,CAAC,EACrDG,EAAWG,GAAeJ,EAAQF,EAAM,SAAS,WAAYK,CAAM,GAAKC,GAAeJ,EAAQ,KAAMG,CAAM,CAC/G,CACI,CAACH,EAAO,MAAQE,GAASH,EAAG,MAAM,MAAMM,EAAU,EAAE,YACpDH,EAAQ,MACZJ,EAAQ,IAAIF,GAAUI,EAAQE,EAAOD,CAAQ,CACjD,CACA,QAASK,KAAUP,EAAG,QAClB,GAAIO,EAAO,GAAGhB,EAAoB,EAAG,CACjC,IAAIY,EAASH,EAAG,MAAM,MAAMM,EAAU,EAAE,UAA0BC,EAAO,MAAM,OAASC,GAAU,KAAO,KAArDT,EAAM,MAC1DA,EAAQF,GAAU,KAAKU,EAAO,MAAOJ,EAAOH,EAAG,KAAK,CACxD,MACSO,EAAO,GAAGd,EAAW,EAC1BM,EAAQ,IAAIF,GAAUE,EAAM,YAAaQ,EAAO,MAAQC,GAAU,KAAO,KAAMT,EAAM,QAAQ,EAExFQ,EAAO,GAAGb,EAAkB,IACjCK,EAAQ,IAAIF,GAAUE,EAAM,YAAaA,EAAM,MAAOQ,EAAO,KAAK,GAG1E,OAAOR,CACX,EACA,QAASU,EAAAC,GAAK,CAACC,GAAU,KAAKD,EAAGE,GAAOA,EAAI,KAAK,EAC7CC,EAAW,YAAY,KAAKH,EAAGI,GAAKA,EAAE,WAAW,CAAC,EAD7C,UAEb,CAAC,EAQD,IAAMC,GAA0BC,EAAW,KAAK,CAAE,MAAO,kCAAmC,CAAC,EAC7F,SAASC,GAAYC,EAAMC,EAAKC,EAAM,CAClC,GAAI,CAAE,YAAAC,CAAY,EAAIH,EAAK,MAAM,MAAMI,EAAS,EAC5CC,EAAOC,EAAQ,GAAIC,EAAM,GAC7BJ,EAAY,QAAQF,GAAOC,EAAO,EAAI,EAAI,GAAID,GAAOC,EAAO,EAAI,EAAI,GAAI,CAACM,EAAMC,EAAI,CAAE,KAAAC,CAAK,IAAM,CAC5F,GAAIT,GAAOO,GAAQP,GAAOQ,IACrBD,GAAQC,IAAQR,EAAMO,GAAQN,EAAO,KAAOD,EAAMQ,GAAMP,EAAO,IAChE,OAAAG,EAAQK,EAAK,YACbJ,EAAQE,EACRD,EAAME,EACC,EAEf,CAAC,EACD,IAAIE,EAAmBX,EAAK,MAAM,MAAMY,EAAU,EAAE,cAGpD,OAFIP,GAASM,IACTN,EAAQM,EAAiBN,EAAOL,EAAK,KAAK,GACzCK,EAEE,CACH,IAAKC,EACL,IAAKC,EACL,MAAOP,EAAK,MAAM,IAAI,OAAOM,CAAK,EAAE,GAAKC,EACzC,QAAS,CACL,MAAO,CAAE,IAAKM,GAAmBb,EAAMK,CAAK,CAAE,CAClD,CACJ,EARW,IASf,CAzBSS,EAAAf,GAAA,eA0BT,SAASc,GAAmBb,EAAMG,EAAa,CAC3C,OAAOY,EAAI,KAAM,CAAE,MAAO,iBAAkB,EAAGZ,EAAY,IAAIa,GAAKC,GAAiBjB,EAAMgB,EAAG,EAAK,CAAC,CAAC,CACzG,CAFSF,EAAAD,GAAA,sBAMT,IAAMK,GAAgBJ,EAACd,GAAS,CAC5B,IAAImB,EAAQnB,EAAK,MAAM,MAAMI,GAAW,EAAK,GACzC,CAACe,GAAS,CAACA,EAAM,QACjBnB,EAAK,SAAS,CAAE,QAASoB,GAAgBpB,EAAK,MAAO,CAACqB,GAAY,GAAG,EAAI,CAAC,CAAC,CAAE,CAAC,EAClF,IAAIC,EAAQC,GAASvB,EAAMwB,GAAU,IAAI,EACzC,OAAIF,GACAA,EAAM,IAAI,cAAc,mBAAmB,EAAE,MAAM,EAChD,EACX,EARsB,iBAYhBG,GAAiBX,EAACd,GAAS,CAC7B,IAAImB,EAAQnB,EAAK,MAAM,MAAMI,GAAW,EAAK,EAC7C,MAAI,CAACe,GAAS,CAACA,EAAM,MACV,IACXnB,EAAK,SAAS,CAAE,QAASqB,GAAY,GAAG,EAAK,CAAE,CAAC,EACzC,GACX,EANuB,kBAUjBK,GAAiBZ,EAACd,GAAS,CAC7B,IAAImB,EAAQnB,EAAK,MAAM,MAAMI,GAAW,EAAK,EAC7C,GAAI,CAACe,EACD,MAAO,GACX,IAAIQ,EAAM3B,EAAK,MAAM,UAAU,KAAM4B,EAAOC,GAAeV,EAAM,YAAa,KAAMQ,EAAI,GAAK,CAAC,EAC9F,MAAI,CAACC,IACDA,EAAOC,GAAeV,EAAM,YAAa,KAAM,CAAC,EAC5C,CAACS,GAAQA,EAAK,MAAQD,EAAI,MAAQC,EAAK,IAAMD,EAAI,IAC1C,IAEf3B,EAAK,SAAS,CAAE,UAAW,CAAE,OAAQ4B,EAAK,KAAM,KAAMA,EAAK,EAAG,EAAG,eAAgB,EAAK,CAAC,EAChF,GACX,EAZuB,kBA2CvB,IAAME,GAAa,CACf,CAAE,IAAK,cAAe,IAAKC,GAAe,eAAgB,EAAK,EAC/D,CAAE,IAAK,KAAM,IAAKC,EAAe,CACrC,EA4DA,IAAMC,GAA0BC,EAAM,OAAO,CACzC,QAAQC,EAAO,CACX,MAAO,CACH,QAASA,EAAM,IAAIC,GAAKA,EAAE,MAAM,EAAE,OAAOC,GAAKA,GAAK,IAAI,EACvD,GAAGC,GAAcH,EAAM,IAAIC,GAAKA,EAAE,MAAM,EAAG,CACvC,MAAO,IACP,aAAc,KACd,cAAe,KACf,aAAc,KACd,OAAQG,EAAA,IAAM,KAAN,SACZ,EAAG,CACC,MAAO,KAAK,IACZ,aAAcC,GACd,cAAeA,GACf,aAAcD,EAAA,CAACE,EAAGC,IAAOD,EAASC,EAAQC,GAAKF,EAAEE,CAAC,GAAKD,EAAEC,CAAC,EAApBF,EAATC,EAAf,gBACd,OAAQH,EAAA,CAACE,EAAGC,IAAOD,EAASC,EAAQ,CAACE,EAAGP,EAAGQ,IAAMJ,EAAEG,EAAGP,EAAGQ,CAAC,GAAKH,EAAEE,EAAGP,EAAGQ,CAAC,EAAxCJ,EAATC,EAAf,UACR,UAAWH,EAAA,CAACE,EAAGC,IAAMD,GAAKC,EAAf,YACf,CAAC,CACL,CACJ,CACJ,CAAC,EACD,SAASF,GAAcC,EAAGC,EAAG,CACzB,OAAQD,EAASC,EAAQ,CAACI,EAAGC,IAAML,EAAED,EAAEK,EAAGC,CAAC,EAAGA,CAAC,EAA1BN,EAATC,CAChB,CAFSH,EAAAC,GAAA,iBA4BT,SAASQ,GAAWC,EAAS,CACzB,IAAIC,EAAW,CAAC,EAChB,GAAID,EACAA,EAAS,OAAS,CAAE,KAAAE,CAAK,IAAKF,EAAS,CACnC,QAAS,EAAI,EAAG,EAAIE,EAAK,OAAQ,IAAK,CAClC,IAAIC,EAAKD,EAAK,CAAC,EACf,GAAI,WAAW,KAAKC,CAAE,GAAK,CAACF,EAAS,KAAKG,GAAKA,EAAE,YAAY,GAAKD,EAAG,YAAY,CAAC,EAAG,CACjFF,EAAS,KAAKE,CAAE,EAChB,SAASH,CACb,CACJ,CACAC,EAAS,KAAK,EAAE,CACpB,CACJ,OAAOA,CACX,CAdSI,EAAAN,GAAA,cAeT,SAASO,GAAiBC,EAAMC,EAAYC,EAAS,CACjD,IAAIC,EACJ,IAAIC,EAAOF,EAAUV,GAAWS,EAAW,OAAO,EAAI,CAAC,EACvD,OAAOI,EAAI,KAAM,CAAE,MAAO,+BAAiCJ,EAAW,QAAS,EAAGI,EAAI,OAAQ,CAAE,MAAO,mBAAoB,EAAGJ,EAAW,cAAgBA,EAAW,cAAcD,CAAI,EAAIC,EAAW,OAAO,GAAIE,EAAKF,EAAW,WAAa,MAAQE,IAAO,OAAS,OAASA,EAAG,IAAI,CAACG,EAAQC,IAAM,CAChS,IAAIC,EAAQ,GAAOC,EAAQX,EAACY,GAAM,CAE9B,GADAA,EAAE,eAAe,EACbF,EACA,OACJA,EAAQ,GACR,IAAIG,EAAQC,GAAeZ,EAAK,MAAM,MAAMa,EAAS,EAAE,YAAaZ,CAAU,EAC1EU,GACAL,EAAO,MAAMN,EAAMW,EAAM,KAAMA,EAAM,EAAE,CAC/C,EAR2B,SASvB,CAAE,KAAAhB,CAAK,EAAIW,EAAQQ,EAAWV,EAAKG,CAAC,EAAIZ,EAAK,QAAQS,EAAKG,CAAC,CAAC,EAAI,GAChEQ,EAAUD,EAAW,EAAInB,EAAO,CAACA,EAAK,MAAM,EAAGmB,CAAQ,EACvDT,EAAI,IAAKV,EAAK,MAAMmB,EAAUA,EAAW,CAAC,CAAC,EAC3CnB,EAAK,MAAMmB,EAAW,CAAC,CAAC,EACxBE,EAAYV,EAAO,UAAY,IAAMA,EAAO,UAAY,GAC5D,OAAOD,EAAI,SAAU,CACjB,KAAM,SACN,MAAO,sBAAwBW,EAC/B,QAASP,EACT,YAAaA,EACb,aAAc,YAAYd,CAAI,GAAGmB,EAAW,EAAI,GAAK,iBAAiBV,EAAKG,CAAC,CAAC,IAAI,GACrF,EAAGQ,CAAO,CACd,CAAC,EAAGd,EAAW,QAAUI,EAAI,MAAO,CAAE,MAAO,qBAAsB,EAAGJ,EAAW,MAAM,CAAC,CAC5F,CA1BSH,EAAAC,GAAA,oBA2BT,IAAMkB,GAAN,cAA+BC,EAAW,CApb1C,MAob0C,CAAApB,EAAA,yBACtC,YAAYqB,EAAK,CACb,MAAM,EACN,KAAK,IAAMA,CACf,CACA,GAAGC,EAAO,CAAE,OAAOA,EAAM,KAAO,KAAK,GAAK,CAC1C,OAAQ,CACJ,OAAOf,EAAI,OAAQ,CAAE,MAAO,6BAA+B,KAAK,GAAI,CAAC,CACzE,CACJ,EACMgB,GAAN,KAAgB,CA9bhB,MA8bgB,CAAAvB,EAAA,kBACZ,YAAYE,EAAMC,EAAY,CAC1B,KAAK,WAAaA,EAClB,KAAK,GAAK,QAAU,KAAK,MAAM,KAAK,OAAO,EAAI,UAAU,EAAE,SAAS,EAAE,EACtE,KAAK,IAAMF,GAAiBC,EAAMC,EAAY,EAAI,EAClD,KAAK,IAAI,GAAK,KAAK,GACnB,KAAK,IAAI,aAAa,OAAQ,QAAQ,CAC1C,CACJ,EACMqB,GAAN,MAAMC,CAAU,CAvchB,MAucgB,CAAAzB,EAAA,kBACZ,YAAYE,EAAM,CACd,KAAK,KAAOA,EACZ,KAAK,MAAQ,CAAC,EACd,IAAIwB,EAAY1B,EAAC2B,GAAU,CACvB,GAAI,EAAAA,EAAM,SAAWA,EAAM,QAAUA,EAAM,SAE3C,IAAIA,EAAM,SAAW,GACjBC,GAAe,KAAK,IAAI,EACxB,KAAK,KAAK,MAAM,UAEXD,EAAM,SAAW,IAAMA,EAAM,SAAW,GAC7C,KAAK,eAAe,KAAK,cAAgB,EAAI,KAAK,MAAM,QAAU,KAAK,MAAM,MAAM,UAE9EA,EAAM,SAAW,IAAMA,EAAM,SAAW,GAC7C,KAAK,eAAe,KAAK,cAAgB,GAAK,KAAK,MAAM,MAAM,UAE1DA,EAAM,SAAW,GACtB,KAAK,cAAc,CAAC,UAEfA,EAAM,SAAW,GACtB,KAAK,cAAc,KAAK,MAAM,OAAS,CAAC,UAEnCA,EAAM,SAAW,GACtB,KAAK,KAAK,MAAM,UAEXA,EAAM,SAAW,IAAMA,EAAM,SAAW,IAAM,KAAK,eAAiB,EAAG,CAC5E,GAAI,CAAE,WAAAxB,CAAW,EAAI,KAAK,MAAM,KAAK,aAAa,EAAGG,EAAOZ,GAAWS,EAAW,OAAO,EACzF,QAASM,EAAI,EAAGA,EAAIH,EAAK,OAAQG,IAC7B,GAAIH,EAAKG,CAAC,EAAE,YAAY,EAAE,WAAW,CAAC,GAAKkB,EAAM,QAAS,CACtD,IAAId,EAAQC,GAAe,KAAK,KAAK,MAAM,MAAMC,EAAS,EAAE,YAAaZ,CAAU,EAC/EU,GACAV,EAAW,QAAQM,CAAC,EAAE,MAAMP,EAAMW,EAAM,KAAMA,EAAM,EAAE,CAC9D,CACR,KAEI,QAEJc,EAAM,eAAe,EACzB,EAnCgB,aAoCZE,EAAU7B,EAAC2B,GAAU,CACrB,QAASlB,EAAI,EAAGA,EAAI,KAAK,MAAM,OAAQA,IAC/B,KAAK,MAAMA,CAAC,EAAE,IAAI,SAASkB,EAAM,MAAM,GACvC,KAAK,cAAclB,CAAC,CAEhC,EALc,WAMd,KAAK,KAAOF,EAAI,KAAM,CAClB,SAAU,EACV,KAAM,UACN,aAAc,KAAK,KAAK,MAAM,OAAO,aAAa,EAClD,UAAAmB,EACA,QAAAG,CACJ,CAAC,EACD,KAAK,IAAMtB,EAAI,MAAO,CAAE,MAAO,eAAgB,EAAG,KAAK,KAAMA,EAAI,SAAU,CACvE,KAAM,SACN,KAAM,QACN,aAAc,KAAK,KAAK,MAAM,OAAO,OAAO,EAC5C,QAASP,EAAA,IAAM4B,GAAe,KAAK,IAAI,EAA9B,UACb,EAAG,MAAG,CAAC,EACP,KAAK,OAAO,CAChB,CACA,IAAI,eAAgB,CAChB,IAAIE,EAAW,KAAK,KAAK,MAAM,MAAMf,EAAS,EAAE,SAChD,GAAI,CAACe,EACD,MAAO,GACX,QAASrB,EAAI,EAAGA,EAAI,KAAK,MAAM,OAAQA,IACnC,GAAI,KAAK,MAAMA,CAAC,EAAE,YAAcqB,EAAS,WACrC,OAAOrB,EACf,MAAO,EACX,CACA,QAAS,CACL,GAAI,CAAE,YAAAsB,EAAa,SAAAD,CAAS,EAAI,KAAK,KAAK,MAAM,MAAMf,EAAS,EAC3D,EAAI,EAAGiB,EAAY,GAAOC,EAAkB,KAC5CC,EAAO,IAAI,IAoCf,IAnCAH,EAAY,QAAQ,EAAG,KAAK,KAAK,MAAM,IAAI,OAAQ,CAACI,EAAQC,EAAM,CAAE,KAAAC,CAAK,IAAM,CAC3E,QAASlC,KAAckC,EAAK,YAAa,CACrC,GAAIH,EAAK,IAAI/B,CAAU,EACnB,SACJ+B,EAAK,IAAI/B,CAAU,EACnB,IAAIU,EAAQ,GAAIyB,EAChB,QAASC,EAAI,EAAGA,EAAI,KAAK,MAAM,OAAQA,IACnC,GAAI,KAAK,MAAMA,CAAC,EAAE,YAAcpC,EAAY,CACxCU,EAAQ0B,EACR,KACJ,CACA1B,EAAQ,GACRyB,EAAO,IAAIf,GAAU,KAAK,KAAMpB,CAAU,EAC1C,KAAK,MAAM,OAAO,EAAG,EAAGmC,CAAI,EAC5BN,EAAY,KAGZM,EAAO,KAAK,MAAMzB,CAAK,EACnBA,EAAQ,IACR,KAAK,MAAM,OAAO,EAAGA,EAAQ,CAAC,EAC9BmB,EAAY,KAGhBF,GAAYQ,EAAK,YAAcR,EAAS,WACnCQ,EAAK,IAAI,aAAa,eAAe,IACtCA,EAAK,IAAI,aAAa,gBAAiB,MAAM,EAC7CL,EAAkBK,GAGjBA,EAAK,IAAI,aAAa,eAAe,GAC1CA,EAAK,IAAI,gBAAgB,eAAe,EAE5C,GACJ,CACJ,CAAC,EACM,EAAI,KAAK,MAAM,QAAU,EAAE,KAAK,MAAM,QAAU,GAAK,KAAK,MAAM,CAAC,EAAE,WAAW,KAAO,IACxFN,EAAY,GACZ,KAAK,MAAM,IAAI,EAEf,KAAK,MAAM,QAAU,IACrB,KAAK,MAAM,KAAK,IAAIT,GAAU,KAAK,KAAM,CACrC,KAAM,GAAI,GAAI,GACd,SAAU,OACV,QAAS,KAAK,KAAK,MAAM,OAAO,gBAAgB,CACpD,CAAC,CAAC,EACFS,EAAY,IAEZC,GACA,KAAK,KAAK,aAAa,wBAAyBA,EAAgB,EAAE,EAClE,KAAK,KAAK,eAAe,CACrB,IAAK,KACL,KAAMjC,EAAA,KAAO,CAAE,IAAKiC,EAAgB,IAAI,sBAAsB,EAAG,MAAO,KAAK,KAAK,sBAAsB,CAAE,GAApG,QACN,MAAOjC,EAAA,CAAC,CAAE,IAAAwC,EAAK,MAAAC,CAAM,IAAM,CACvB,IAAIC,EAASD,EAAM,OAAS,KAAK,KAAK,aAClCD,EAAI,IAAMC,EAAM,IAChB,KAAK,KAAK,YAAcA,EAAM,IAAMD,EAAI,KAAOE,EAC1CF,EAAI,OAASC,EAAM,SACxB,KAAK,KAAK,YAAcD,EAAI,OAASC,EAAM,QAAUC,EAC7D,EANO,QAOX,CAAC,GAEI,KAAK,cAAgB,GAC1B,KAAK,KAAK,gBAAgB,uBAAuB,EAEjDV,GACA,KAAK,KAAK,CAClB,CACA,MAAO,CACH,IAAIW,EAAS,KAAK,KAAK,WACvB,SAASC,GAAK,CACV,IAAIC,EAAOF,EACXA,EAASE,EAAK,YACdA,EAAK,OAAO,CAChB,CAJS7C,EAAA4C,EAAA,MAKT,QAASN,KAAQ,KAAK,MAClB,GAAIA,EAAK,IAAI,YAAc,KAAK,KAAM,CAClC,KAAOK,GAAUL,EAAK,KAClBM,EAAG,EACPD,EAASL,EAAK,IAAI,WACtB,MAEI,KAAK,KAAK,aAAaA,EAAK,IAAKK,CAAM,EAG/C,KAAOA,GACHC,EAAG,CACX,CACA,cAAcE,EAAe,CACzB,GAAI,KAAK,cAAgB,EACrB,OACJ,IAAIC,EAAQ,KAAK,KAAK,MAAM,MAAMhC,EAAS,EACvCiC,EAAYlC,GAAeiC,EAAM,YAAa,KAAK,MAAMD,CAAa,EAAE,UAAU,EACjFE,GAEL,KAAK,KAAK,SAAS,CACf,UAAW,CAAE,OAAQA,EAAU,KAAM,KAAMA,EAAU,EAAG,EACxD,eAAgB,GAChB,QAASC,GAAmB,GAAGD,CAAS,CAC5C,CAAC,CACL,CACA,OAAO,KAAK9C,EAAM,CAAE,OAAO,IAAIuB,EAAUvB,CAAI,CAAG,CACpD,EACA,SAASgD,GAAIC,EAASC,EAAQ,sBAAuB,CACjD,MAAO,mEAAmEA,CAAK,IAAI,mBAAmBD,CAAO,CAAC,UAClH,CAFSnD,EAAAkD,GAAA,OAGT,SAASG,GAAUC,EAAO,CACtB,OAAOJ,GAAI,qDAAqDI,CAAK,oCAAqC,sBAAsB,CACpI,CAFStD,EAAAqD,GAAA,aAGT,IAAME,GAAyBC,EAAW,UAAU,CAChD,iBAAkB,CACd,QAAS,kBACT,WAAY,OACZ,QAAS,QACT,WAAY,UAChB,EACA,uBAAwB,CAAE,WAAY,gBAAiB,EACvD,yBAA0B,CAAE,WAAY,kBAAmB,EAC3D,sBAAuB,CAAE,WAAY,gBAAiB,EACtD,sBAAuB,CAAE,WAAY,gBAAiB,EACtD,uBAAwB,CACpB,KAAM,UACN,OAAQ,OACR,QAAS,UACT,gBAAiB,OACjB,MAAO,QACP,aAAc,MACd,WAAY,MACZ,OAAQ,SACZ,EACA,uBAAwB,CACpB,SAAU,MACV,QAAS,EACb,EACA,gBAAiB,CACb,mBAAoB,cACpB,iBAAkB,WAClB,cAAe,OACnB,EACA,sBAAuB,CAAE,gBAA8BH,GAAU,MAAM,CAAE,EACzE,wBAAyB,CAAE,gBAA8BA,GAAU,QAAQ,CAAE,EAC7E,qBAAsB,CAAE,gBAA8BA,GAAU,MAAM,CAAE,EACxE,qBAAsB,CAAE,gBAA8BA,GAAU,MAAM,CAAE,EACxE,uBAAwB,CAAE,gBAAiB,WAAY,EACvD,mBAAoB,CAChB,QAAS,EACT,OAAQ,CACZ,EACA,gBAAiB,CACb,SAAU,WACV,UAAW,CACP,QAAS,KACT,SAAU,WACV,OAAQ,EACR,KAAM,OACN,WAAY,wBACZ,YAAa,wBACb,aAAc,gBAClB,CACJ,EACA,wBAAyB,CACrB,UAAW,CAAE,kBAAmB,QAAS,CAC7C,EACA,qBAAsB,CAClB,UAAW,CAAE,kBAAmB,MAAO,CAC3C,EACA,qBAAsB,CAClB,UAAW,CAAE,kBAAmB,MAAO,CAC3C,EACA,0BAA2B,CACvB,SAAU,WACV,OAAQ,CACJ,UAAW,QACX,UAAW,OACX,oBAAqB,CACjB,gBAAiB,OACjB,MAAO,CAAE,eAAgB,WAAY,CACzC,EACA,0BAA2B,CACvB,oBAAqB,OACrB,gBAAiB,YACjB,eAAgB,QAChB,MAAO,eACX,EACA,MAAO,CAAE,eAAgB,MAAO,EAChC,QAAS,EACT,OAAQ,CACZ,EACA,iBAAkB,CACd,SAAU,WACV,IAAK,IACL,MAAO,MACP,WAAY,UACZ,OAAQ,OACR,KAAM,UACN,QAAS,EACT,OAAQ,CACZ,CACJ,EACA,6BAA8B,CAAE,gBAAiB,WAAY,EAC7D,mCAAoC,CAChC,oBAAqB,CACjB,gBAAiB,SACrB,CACJ,CACJ,CAAC,EACD,SAASI,GAAepC,EAAK,CACzB,OAAOA,GAAO,QAAU,EAAIA,GAAO,UAAY,EAAIA,GAAO,OAAS,EAAI,CAC3E,CAFSrB,EAAAyD,GAAA,kBAGT,SAASC,GAAY3B,EAAa,CAC9B,IAAIV,EAAM,OAAQsC,EAAS,EAC3B,QAASC,KAAK7B,EAAa,CACvB,IAAI8B,EAAIJ,GAAeG,EAAE,QAAQ,EAC7BC,EAAIF,IACJA,EAASE,EACTxC,EAAMuC,EAAE,SAEhB,CACA,OAAOvC,CACX,CAVSrB,EAAA0D,GAAA,eAqJT,IAAMI,GAAiB,CACnBC,GACaC,EAAW,YAAY,QAAQ,CAACD,EAAS,EAAGE,GAAS,CAC9D,GAAI,CAAE,SAAAC,EAAU,MAAAC,CAAM,EAAIF,EAAM,MAAMF,EAAS,EAC/C,MAAO,CAACG,GAAY,CAACC,GAASD,EAAS,MAAQA,EAAS,GAAKE,EAAW,KAAOA,EAAW,IAAI,CAC1FC,GAAW,MAAMH,EAAS,KAAMA,EAAS,EAAE,CAC/C,CAAC,CACL,CAAC,EACYI,GAAaC,GAAa,CAAE,OAAQC,EAAY,CAAC,EAC9DC,EACJ,ECh1BA,IAAMC,GAAiC,CACnCC,GAAY,EACZC,GAA0B,EAC1BC,GAAsB,EACtBC,GAAQ,EACRC,GAAW,EACXC,GAAc,EACdC,GAAW,EACXC,EAAY,wBAAwB,GAAG,EAAI,EAC3CC,GAAc,EACdC,GAAmBC,GAAuB,CAAE,SAAU,EAAK,CAAC,EAC5DC,GAAgB,EAChBC,GAAc,EACdC,GAAe,EACfC,GAAqB,EACrBC,GAAgB,EAChBC,GAAoB,EACpBC,GAA0B,EAC1BC,GAAO,GAAG,CACN,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,EACP,CAAC,CACL,ECnEA,IAAMC,GAAN,MAAMC,CAAM,CARZ,MAQY,CAAAC,EAAA,cAIR,YAIAC,EAKAC,EAIAC,EAQAC,EAIAC,EAMAC,EAOAC,EASAC,EAIAC,EAIAC,EAAY,EAQZC,EAAQ,CACJ,KAAK,EAAIV,EACT,KAAK,MAAQC,EACb,KAAK,MAAQC,EACb,KAAK,UAAYC,EACjB,KAAK,IAAMC,EACX,KAAK,MAAQC,EACb,KAAK,OAASC,EACd,KAAK,WAAaC,EAClB,KAAK,WAAaC,EAClB,KAAK,UAAYC,EACjB,KAAK,OAASC,CAClB,CAIA,UAAW,CACP,MAAO,IAAI,KAAK,MAAM,OAAO,CAACC,EAAGC,IAAMA,EAAI,GAAK,CAAC,EAAE,OAAO,KAAK,KAAK,CAAC,KAAK,KAAK,GAAG,GAAG,KAAK,MAAQ,IAAM,KAAK,MAAQ,EAAE,EAC3H,CAKA,OAAO,MAAMZ,EAAGE,EAAOE,EAAM,EAAG,CAC5B,IAAIS,EAAKb,EAAE,OAAO,QAClB,OAAO,IAAIF,EAAME,EAAG,CAAC,EAAGE,EAAOE,EAAKA,EAAK,EAAG,CAAC,EAAG,EAAGS,EAAK,IAAIC,GAAaD,EAAIA,EAAG,KAAK,EAAI,KAAM,EAAG,IAAI,CAC1G,CAOA,IAAI,SAAU,CAAE,OAAO,KAAK,WAAa,KAAK,WAAW,QAAU,IAAM,CAMzE,UAAUX,EAAOa,EAAO,CACpB,KAAK,MAAM,KAAK,KAAK,MAAOA,EAAO,KAAK,WAAa,KAAK,OAAO,MAAM,EACvE,KAAK,MAAQb,CACjB,CAKA,OAAOc,EAAQ,CACX,IAAIC,EACJ,IAAIC,EAAQF,GAAU,GAAkCG,EAAOH,EAAS,MACpE,CAAE,OAAAI,CAAO,EAAI,KAAK,EAClBC,EAAkB,KAAK,UAAY,KAAK,IAAM,IAA6B,KAAK,aAAa,KAAK,GAAG,EACrGC,EAAQF,EAAO,kBAAkBD,CAAI,EAGzC,GAFIG,IACA,KAAK,OAASA,GACdJ,GAAS,EAAG,CACZ,KAAK,UAAUE,EAAO,QAAQ,KAAK,MAAOD,EAAM,EAAI,EAAG,KAAK,SAAS,EAGjEA,EAAOC,EAAO,eACd,KAAK,UAAUD,EAAM,KAAK,UAAW,KAAK,UAAWE,EAAkB,EAAI,EAAG,EAAI,EACtF,KAAK,cAAcF,EAAM,KAAK,SAAS,EACvC,MACJ,CAMA,IAAII,EAAO,KAAK,MAAM,QAAWL,EAAQ,GAAK,GAAMF,EAAS,OAA+B,EAAI,GAC5FD,EAAQQ,EAAO,KAAK,MAAMA,EAAO,CAAC,EAAI,KAAK,EAAE,OAAO,CAAC,EAAE,KAAMC,EAAO,KAAK,UAAYT,EAIrFS,GAAQ,KAAsC,EAAG,GAAAP,EAAK,KAAK,EAAE,OAAO,QAAQ,MAAME,CAAI,KAAO,MAAQF,IAAO,SAAkBA,EAAG,eAC7HF,GAAS,KAAK,EAAE,uBAChB,KAAK,EAAE,oBACP,KAAK,EAAE,qBAAuBS,GAEzB,KAAK,EAAE,qBAAuBA,IACnC,KAAK,EAAE,kBAAoB,EAC3B,KAAK,EAAE,sBAAwBT,EAC/B,KAAK,EAAE,qBAAuBS,IAGtC,IAAIjB,EAAagB,EAAO,KAAK,MAAMA,EAAO,CAAC,EAAI,EAAGE,EAAQ,KAAK,WAAa,KAAK,OAAO,OAASlB,EAEjG,GAAIY,EAAOC,EAAO,eAAkBJ,EAAS,OAAiC,CAC1E,IAAIZ,EAAMgB,EAAO,UAAU,KAAK,MAAO,CAAyB,EAAI,KAAK,IAAM,KAAK,UACpF,KAAK,UAAUD,EAAMJ,EAAOX,EAAKqB,EAAQ,EAAG,EAAI,CACpD,CACA,GAAIT,EAAS,OACT,KAAK,MAAQ,KAAK,MAAMO,CAAI,MAE3B,CACD,IAAIG,EAAc,KAAK,MAAMH,EAAO,CAAC,EACrC,KAAK,MAAQH,EAAO,QAAQM,EAAaP,EAAM,EAAI,CACvD,CACA,KAAO,KAAK,MAAM,OAASI,GACvB,KAAK,MAAM,IAAI,EACnB,KAAK,cAAcJ,EAAMJ,CAAK,CAClC,CAKA,UAAUY,EAAMZ,EAAOa,EAAKJ,EAAO,EAAGK,EAAW,GAAO,CACpD,GAAIF,GAAQ,IACP,CAAC,KAAK,MAAM,QAAU,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAAI,KAAK,OAAO,OAAS,KAAK,YAAa,CAElG,IAAIG,EAAM,KAAMC,EAAM,KAAK,OAAO,OAKlC,GAJIA,GAAO,GAAKD,EAAI,SAChBC,EAAMD,EAAI,WAAaA,EAAI,OAAO,WAClCA,EAAMA,EAAI,QAEVC,EAAM,GAAKD,EAAI,OAAOC,EAAM,CAAC,GAAK,GAAoBD,EAAI,OAAOC,EAAM,CAAC,EAAI,GAAI,CAChF,GAAIhB,GAASa,EACT,OACJ,GAAIE,EAAI,OAAOC,EAAM,CAAC,GAAKhB,EAAO,CAC9Be,EAAI,OAAOC,EAAM,CAAC,EAAIH,EACtB,MACJ,CACJ,CACJ,CACA,GAAI,CAACC,GAAY,KAAK,KAAOD,EACzB,KAAK,OAAO,KAAKD,EAAMZ,EAAOa,EAAKJ,CAAI,MAEtC,CACD,IAAIQ,EAAQ,KAAK,OAAO,OACxB,GAAIA,EAAQ,IAAM,KAAK,OAAOA,EAAQ,CAAC,GAAK,GAAoB,KAAK,OAAOA,EAAQ,CAAC,EAAI,GAAI,CACzF,IAAIC,EAAW,GACf,QAASC,EAAOF,EAAOE,EAAO,GAAK,KAAK,OAAOA,EAAO,CAAC,EAAIN,EAAKM,GAAQ,EACpE,GAAI,KAAK,OAAOA,EAAO,CAAC,GAAK,EAAG,CAC5BD,EAAW,GACX,KACJ,CAEJ,GAAIA,EACA,KAAOD,EAAQ,GAAK,KAAK,OAAOA,EAAQ,CAAC,EAAIJ,GAEzC,KAAK,OAAOI,CAAK,EAAI,KAAK,OAAOA,EAAQ,CAAC,EAC1C,KAAK,OAAOA,EAAQ,CAAC,EAAI,KAAK,OAAOA,EAAQ,CAAC,EAC9C,KAAK,OAAOA,EAAQ,CAAC,EAAI,KAAK,OAAOA,EAAQ,CAAC,EAC9C,KAAK,OAAOA,EAAQ,CAAC,EAAI,KAAK,OAAOA,EAAQ,CAAC,EAC9CA,GAAS,EACLR,EAAO,IACPA,GAAQ,EAExB,CACA,KAAK,OAAOQ,CAAK,EAAIL,EACrB,KAAK,OAAOK,EAAQ,CAAC,EAAIjB,EACzB,KAAK,OAAOiB,EAAQ,CAAC,EAAIJ,EACzB,KAAK,OAAOI,EAAQ,CAAC,EAAIR,CAC7B,CACJ,CAKA,MAAMR,EAAQG,EAAMJ,EAAOa,EAAK,CAC5B,GAAIZ,EAAS,OACT,KAAK,UAAUA,EAAS,MAA8B,KAAK,GAAG,WAExDA,EAAS,SAAiC,EAAG,CACnD,IAAImB,EAAYnB,EAAQ,CAAE,OAAAI,CAAO,EAAI,KAAK,EAC1C,KAAK,IAAMQ,EACX,IAAIQ,EAAUhB,EAAO,UAAUe,EAAW,CAAyB,EAE/D,CAACC,IAAYR,EAAMb,GAASI,GAAQC,EAAO,WAC3C,KAAK,UAAYQ,GACrB,KAAK,UAAUO,EAAWC,EAAUrB,EAAQ,KAAK,IAAIA,EAAO,KAAK,SAAS,CAAC,EAC3E,KAAK,aAAaI,EAAMJ,CAAK,EACzBI,GAAQC,EAAO,SACf,KAAK,OAAO,KAAKD,EAAMJ,EAAOa,EAAK,CAAC,CAC5C,MAEI,KAAK,IAAMA,EACX,KAAK,aAAaT,EAAMJ,CAAK,EACzBI,GAAQ,KAAK,EAAE,OAAO,SACtB,KAAK,OAAO,KAAKA,EAAMJ,EAAOa,EAAK,CAAC,CAEhD,CAKA,MAAMZ,EAAQqB,EAAMC,EAAWC,EAAS,CAChCvB,EAAS,MACT,KAAK,OAAOA,CAAM,EAElB,KAAK,MAAMA,EAAQqB,EAAMC,EAAWC,CAAO,CACnD,CAKA,QAAQC,EAAOH,EAAM,CACjB,IAAIL,EAAQ,KAAK,EAAE,OAAO,OAAS,GAC/BA,EAAQ,GAAK,KAAK,EAAE,OAAOA,CAAK,GAAKQ,KACrC,KAAK,EAAE,OAAO,KAAKA,CAAK,EACxBR,KAEJ,IAAIjB,EAAQ,KAAK,IACjB,KAAK,UAAY,KAAK,IAAMA,EAAQyB,EAAM,OAC1C,KAAK,UAAUH,EAAMtB,CAAK,EAC1B,KAAK,OAAO,KAAKiB,EAAOjB,EAAO,KAAK,UAAW,EAAgD,EAC3F,KAAK,YACL,KAAK,cAAc,KAAK,WAAW,QAAQ,MAAM,KAAK,WAAW,QAASyB,EAAO,KAAM,KAAK,EAAE,OAAO,MAAM,KAAK,IAAMA,EAAM,MAAM,CAAC,CAAC,CAC5I,CAOA,OAAQ,CACJ,IAAI9B,EAAS,KACT+B,EAAM/B,EAAO,OAAO,OAKxB,KAAO+B,EAAM,GAAK/B,EAAO,OAAO+B,EAAM,CAAC,EAAI/B,EAAO,WAC9C+B,GAAO,EACX,IAAInC,EAASI,EAAO,OAAO,MAAM+B,CAAG,EAAGlB,EAAOb,EAAO,WAAa+B,EAElE,KAAO/B,GAAUa,GAAQb,EAAO,YAC5BA,EAASA,EAAO,OACpB,OAAO,IAAIZ,EAAM,KAAK,EAAG,KAAK,MAAM,MAAM,EAAG,KAAK,MAAO,KAAK,UAAW,KAAK,IAAK,KAAK,MAAOQ,EAAQiB,EAAM,KAAK,WAAY,KAAK,UAAWb,CAAM,CACxJ,CAKA,gBAAgB2B,EAAME,EAAS,CAC3B,IAAIG,EAASL,GAAQ,KAAK,EAAE,OAAO,QAC/BK,GACA,KAAK,UAAUL,EAAM,KAAK,IAAKE,EAAS,CAAC,EAC7C,KAAK,UAAU,EAAkB,KAAK,IAAKA,EAASG,EAAS,EAAI,CAAC,EAClE,KAAK,IAAM,KAAK,UAAYH,EAC5B,KAAK,OAAS,GAClB,CAOA,SAASZ,EAAM,CACX,QAASgB,EAAM,IAAIC,GAAe,IAAI,IAAK,CACvC,IAAI5B,EAAS,KAAK,EAAE,OAAO,UAAU2B,EAAI,MAAO,CAAgC,GAAK,KAAK,EAAE,OAAO,UAAUA,EAAI,MAAOhB,CAAI,EAC5H,GAAIX,GAAU,EACV,MAAO,GACX,IAAKA,EAAS,QAAkC,EAC5C,MAAO,GACX2B,EAAI,OAAO3B,CAAM,CACrB,CACJ,CAMA,gBAAgBqB,EAAM,CAClB,GAAI,KAAK,MAAM,QAAU,IACrB,MAAO,CAAC,EACZ,IAAIQ,EAAa,KAAK,EAAE,OAAO,WAAW,KAAK,KAAK,EACpD,GAAIA,EAAW,OAAS,GAAgC,KAAK,MAAM,QAAU,IAA0C,CACnH,IAAIC,EAAO,CAAC,EACZ,QAASlC,EAAI,EAAGmC,EAAGnC,EAAIiC,EAAW,OAAQjC,GAAK,GACtCmC,EAAIF,EAAWjC,EAAI,CAAC,IAAM,KAAK,OAAS,KAAK,EAAE,OAAO,UAAUmC,EAAGV,CAAI,GACxES,EAAK,KAAKD,EAAWjC,CAAC,EAAGmC,CAAC,EAElC,GAAI,KAAK,MAAM,OAAS,IACpB,QAASnC,EAAI,EAAGkC,EAAK,OAAS,GAAgClC,EAAIiC,EAAW,OAAQjC,GAAK,EAAG,CACzF,IAAImC,EAAIF,EAAWjC,EAAI,CAAC,EACnBkC,EAAK,KAAK,CAACE,EAAGpC,IAAOA,EAAI,GAAMoC,GAAKD,CAAC,GACtCD,EAAK,KAAKD,EAAWjC,CAAC,EAAGmC,CAAC,CAClC,CACJF,EAAaC,CACjB,CACA,IAAIG,EAAS,CAAC,EACd,QAASrC,EAAI,EAAGA,EAAIiC,EAAW,QAAUI,EAAO,OAAS,EAAyBrC,GAAK,EAAG,CACtF,IAAI,EAAIiC,EAAWjC,EAAI,CAAC,EACxB,GAAI,GAAK,KAAK,MACV,SACJ,IAAIX,EAAQ,KAAK,MAAM,EACvBA,EAAM,UAAU,EAAG,KAAK,GAAG,EAC3BA,EAAM,UAAU,EAAkBA,EAAM,IAAKA,EAAM,IAAK,EAAG,EAAI,EAC/DA,EAAM,aAAa4C,EAAWjC,CAAC,EAAG,KAAK,GAAG,EAC1CX,EAAM,UAAY,KAAK,IACvBA,EAAM,OAAS,IACfgD,EAAO,KAAKhD,CAAK,CACrB,CACA,OAAOgD,CACX,CAMA,aAAc,CACV,GAAI,CAAE,OAAA7B,CAAO,EAAI,KAAK,EAClB8B,EAAS9B,EAAO,UAAU,KAAK,MAAO,CAA+B,EACzE,IAAK8B,EAAS,QAAkC,EAC5C,MAAO,GACX,GAAI,CAAC9B,EAAO,YAAY,KAAK,MAAO8B,CAAM,EAAG,CACzC,IAAIhC,EAAQgC,GAAU,GAAkCvB,EAAOuB,EAAS,MACpEC,EAAS,KAAK,MAAM,OAASjC,EAAQ,EACzC,GAAIiC,EAAS,GAAK/B,EAAO,QAAQ,KAAK,MAAM+B,CAAM,EAAGxB,EAAM,EAAK,EAAI,EAAG,CACnE,IAAIyB,EAAS,KAAK,oBAAoB,EACtC,GAAIA,GAAU,KACV,MAAO,GACXF,EAASE,CACb,CACA,KAAK,UAAU,EAAkB,KAAK,IAAK,KAAK,IAAK,EAAG,EAAI,EAC5D,KAAK,OAAS,GAClB,CACA,YAAK,UAAY,KAAK,IACtB,KAAK,OAAOF,CAAM,EACX,EACX,CAMA,qBAAsB,CAClB,GAAI,CAAE,OAAA9B,CAAO,EAAI,KAAK,EAAGiC,EAAO,CAAC,EAC7BC,EAAUvD,EAAA,CAACG,EAAOgB,IAAU,CAC5B,GAAI,CAAAmC,EAAK,SAASnD,CAAK,EAEvB,OAAAmD,EAAK,KAAKnD,CAAK,EACRkB,EAAO,WAAWlB,EAAQc,GAAW,CACxC,GAAI,EAAAA,EAAU,QACT,GAAIA,EAAS,MAA+B,CAC7C,IAAIuC,GAAUvC,GAAU,IAAoCE,EAC5D,GAAIqC,EAAS,EAAG,CACZ,IAAI5B,EAAOX,EAAS,MAA8BmC,EAAS,KAAK,MAAM,OAASI,EAAS,EACxF,GAAIJ,GAAU,GAAK/B,EAAO,QAAQ,KAAK,MAAM+B,CAAM,EAAGxB,EAAM,EAAK,GAAK,EAClE,OAAQ4B,GAAU,GAAoC,MAAgC5B,CAC9F,CACJ,KACK,CACD,IAAI6B,EAAQF,EAAQtC,EAAQE,EAAQ,CAAC,EACrC,GAAIsC,GAAS,KACT,OAAOA,CACf,CACJ,CAAC,CACL,EApBc,WAqBd,OAAOF,EAAQ,KAAK,MAAO,CAAC,CAChC,CAIA,UAAW,CACP,KAAO,CAAC,KAAK,EAAE,OAAO,UAAU,KAAK,MAAO,CAA2B,GACnE,GAAI,CAAC,KAAK,YAAY,EAAG,CACrB,KAAK,UAAU,EAAkB,KAAK,IAAK,KAAK,IAAK,EAAG,EAAI,EAC5D,KACJ,CAEJ,OAAO,IACX,CAMA,IAAI,SAAU,CACV,GAAI,KAAK,MAAM,QAAU,EACrB,MAAO,GACX,GAAI,CAAE,OAAAlC,CAAO,EAAI,KAAK,EACtB,OAAOA,EAAO,KAAKA,EAAO,UAAU,KAAK,MAAO,CAA0B,CAAC,GAAK,OAC5E,CAACA,EAAO,UAAU,KAAK,MAAO,CAAgC,CACtE,CAMA,SAAU,CACN,KAAK,UAAU,EAAkB,KAAK,IAAK,KAAK,IAAK,EAAG,EAAI,EAC5D,KAAK,MAAQ,KAAK,MAAM,CAAC,EACzB,KAAK,MAAM,OAAS,CACxB,CAIA,UAAUqC,EAAO,CACb,GAAI,KAAK,OAASA,EAAM,OAAS,KAAK,MAAM,QAAUA,EAAM,MAAM,OAC9D,MAAO,GACX,QAAS7C,EAAI,EAAGA,EAAI,KAAK,MAAM,OAAQA,GAAK,EACxC,GAAI,KAAK,MAAMA,CAAC,GAAK6C,EAAM,MAAM7C,CAAC,EAC9B,MAAO,GACf,MAAO,EACX,CAIA,IAAI,QAAS,CAAE,OAAO,KAAK,EAAE,MAAQ,CAKrC,eAAe8C,EAAW,CAAE,OAAO,KAAK,EAAE,OAAO,QAAQ,MAAMA,CAAS,CAAG,CAC3E,aAAa/B,EAAMZ,EAAO,CAClB,KAAK,YACL,KAAK,cAAc,KAAK,WAAW,QAAQ,MAAM,KAAK,WAAW,QAASY,EAAM,KAAM,KAAK,EAAE,OAAO,MAAMZ,CAAK,CAAC,CAAC,CACzH,CACA,cAAcY,EAAMZ,EAAO,CACnB,KAAK,YACL,KAAK,cAAc,KAAK,WAAW,QAAQ,OAAO,KAAK,WAAW,QAASY,EAAM,KAAM,KAAK,EAAE,OAAO,MAAMZ,CAAK,CAAC,CAAC,CAC1H,CAIA,aAAc,CACV,IAAI4C,EAAO,KAAK,OAAO,OAAS,GAC5BA,EAAO,GAAK,KAAK,OAAOA,CAAI,GAAK,KACjC,KAAK,OAAO,KAAK,KAAK,WAAW,KAAM,KAAK,IAAK,KAAK,IAAK,EAAE,CACrE,CAIA,eAAgB,CACZ,IAAIA,EAAO,KAAK,OAAO,OAAS,GAC5BA,EAAO,GAAK,KAAK,OAAOA,CAAI,GAAK,KACjC,KAAK,OAAO,KAAK,KAAK,UAAW,KAAK,IAAK,KAAK,IAAK,EAAE,CAC/D,CACA,cAAcC,EAAS,CACnB,GAAIA,GAAW,KAAK,WAAW,QAAS,CACpC,IAAIC,EAAQ,IAAI/C,GAAa,KAAK,WAAW,QAAS8C,CAAO,EACzDC,EAAM,MAAQ,KAAK,WAAW,MAC9B,KAAK,YAAY,EACrB,KAAK,WAAaA,CACtB,CACJ,CAIA,aAAapD,EAAW,CACpB,OAAIA,GAAa,KAAK,UACX,IACX,KAAK,cAAc,EACnB,KAAK,UAAYA,EACV,GACX,CAIA,OAAQ,CACA,KAAK,YAAc,KAAK,WAAW,QAAQ,QAC3C,KAAK,YAAY,EACjB,KAAK,UAAY,GACjB,KAAK,cAAc,CAC3B,CACJ,EACMK,GAAN,KAAmB,CArhBnB,MAqhBmB,CAAAf,EAAA,qBACf,YAAY+D,EAASF,EAAS,CAC1B,KAAK,QAAUE,EACf,KAAK,QAAUF,EACf,KAAK,KAAOE,EAAQ,OAASA,EAAQ,KAAKF,CAAO,EAAI,CACzD,CACJ,EAGMhB,GAAN,KAAqB,CA9hBrB,MA8hBqB,CAAA7C,EAAA,uBACjB,YAAYgB,EAAO,CACf,KAAK,MAAQA,EACb,KAAK,MAAQA,EAAM,MACnB,KAAK,MAAQA,EAAM,MACnB,KAAK,KAAO,KAAK,MAAM,MAC3B,CACA,OAAOC,EAAQ,CACX,IAAIW,EAAOX,EAAS,MAA8BE,EAAQF,GAAU,GAChEE,GAAS,GACL,KAAK,OAAS,KAAK,MAAM,QACzB,KAAK,MAAQ,KAAK,MAAM,MAAM,GAClC,KAAK,MAAM,KAAK,KAAK,MAAO,EAAG,CAAC,EAChC,KAAK,MAAQ,GAGb,KAAK,OAASA,EAAQ,GAAK,EAE/B,IAAI6C,EAAO,KAAK,MAAM,EAAE,OAAO,QAAQ,KAAK,MAAM,KAAK,KAAO,CAAC,EAAGpC,EAAM,EAAI,EAC5E,KAAK,MAAQoC,CACjB,CACJ,EAGMC,GAAN,MAAMC,CAAkB,CAtjBxB,MAsjBwB,CAAAlE,EAAA,0BACpB,YAAYE,EAAOG,EAAK4B,EAAO,CAC3B,KAAK,MAAQ/B,EACb,KAAK,IAAMG,EACX,KAAK,MAAQ4B,EACb,KAAK,OAAS/B,EAAM,OAChB,KAAK,OAAS,GACd,KAAK,UAAU,CACvB,CACA,OAAO,OAAOA,EAAOG,EAAMH,EAAM,WAAaA,EAAM,OAAO,OAAQ,CAC/D,OAAO,IAAIgE,EAAkBhE,EAAOG,EAAKA,EAAMH,EAAM,UAAU,CACnE,CACA,WAAY,CACR,IAAIoC,EAAO,KAAK,MAAM,OAClBA,GAAQ,OACR,KAAK,MAAQ,KAAK,MAAM,WAAaA,EAAK,WAC1C,KAAK,MAAQA,EACb,KAAK,OAASA,EAAK,OAE3B,CACA,IAAI,IAAK,CAAE,OAAO,KAAK,OAAO,KAAK,MAAQ,CAAC,CAAG,CAC/C,IAAI,OAAQ,CAAE,OAAO,KAAK,OAAO,KAAK,MAAQ,CAAC,CAAG,CAClD,IAAI,KAAM,CAAE,OAAO,KAAK,OAAO,KAAK,MAAQ,CAAC,CAAG,CAChD,IAAI,MAAO,CAAE,OAAO,KAAK,OAAO,KAAK,MAAQ,CAAC,CAAG,CACjD,MAAO,CACH,KAAK,OAAS,EACd,KAAK,KAAO,EACR,KAAK,OAAS,GACd,KAAK,UAAU,CACvB,CACA,MAAO,CACH,OAAO,IAAI4B,EAAkB,KAAK,MAAO,KAAK,IAAK,KAAK,KAAK,CACjE,CACJ,EAIA,SAASC,GAAYC,EAAOC,EAAO,YAAa,CAC5C,GAAI,OAAOD,GAAS,SAChB,OAAOA,EACX,IAAIE,EAAQ,KACZ,QAASjE,EAAM,EAAGkE,EAAM,EAAGlE,EAAM+D,EAAM,QAAS,CAC5C,IAAI3B,EAAQ,EACZ,OAAS,CACL,IAAIH,EAAO8B,EAAM,WAAW/D,GAAK,EAAGmE,EAAO,GAC3C,GAAIlC,GAAQ,IAA6B,CACrCG,EAAQ,MACR,KACJ,CACIH,GAAQ,IACRA,IACAA,GAAQ,IACRA,IACJ,IAAImC,EAAQnC,EAAO,GAMnB,GALImC,GAAS,KACTA,GAAS,GACTD,EAAO,IAEX/B,GAASgC,EACLD,EACA,MACJ/B,GAAS,EACb,CACI6B,EACAA,EAAMC,GAAK,EAAI9B,EAEf6B,EAAQ,IAAID,EAAK5B,CAAK,CAC9B,CACA,OAAO6B,CACX,CAhCStE,EAAAmE,GAAA,eAkCT,IAAMO,GAAN,KAAkB,CA7nBlB,MA6nBkB,CAAA1E,EAAA,oBACd,aAAc,CACV,KAAK,MAAQ,GACb,KAAK,MAAQ,GACb,KAAK,IAAM,GACX,KAAK,SAAW,GAChB,KAAK,UAAY,EACjB,KAAK,KAAO,EACZ,KAAK,QAAU,CACnB,CACJ,EACM2E,GAAY,IAAID,GAOhBE,GAAN,KAAkB,CA/oBlB,MA+oBkB,CAAA5E,EAAA,oBAId,YAIAoE,EAIAS,EAAQ,CACJ,KAAK,MAAQT,EACb,KAAK,OAASS,EAId,KAAK,MAAQ,GAIb,KAAK,SAAW,EAIhB,KAAK,OAAS,GACd,KAAK,UAAY,EAKjB,KAAK,KAAO,GAIZ,KAAK,MAAQF,GACb,KAAK,WAAa,EAClB,KAAK,IAAM,KAAK,SAAWE,EAAO,CAAC,EAAE,KACrC,KAAK,MAAQA,EAAO,CAAC,EACrB,KAAK,IAAMA,EAAOA,EAAO,OAAS,CAAC,EAAE,GACrC,KAAK,SAAS,CAClB,CAIA,cAAcC,EAAQC,EAAO,CACzB,IAAIC,EAAQ,KAAK,MAAO/C,EAAQ,KAAK,WACjC5B,EAAM,KAAK,IAAMyE,EACrB,KAAOzE,EAAM2E,EAAM,MAAM,CACrB,GAAI,CAAC/C,EACD,OAAO,KACX,IAAIK,EAAO,KAAK,OAAO,EAAEL,CAAK,EAC9B5B,GAAO2E,EAAM,KAAO1C,EAAK,GACzB0C,EAAQ1C,CACZ,CACA,KAAOyC,EAAQ,EAAI1E,EAAM2E,EAAM,GAAK3E,GAAO2E,EAAM,IAAI,CACjD,GAAI/C,GAAS,KAAK,OAAO,OAAS,EAC9B,OAAO,KACX,IAAIK,EAAO,KAAK,OAAO,EAAEL,CAAK,EAC9B5B,GAAOiC,EAAK,KAAO0C,EAAM,GACzBA,EAAQ1C,CACZ,CACA,OAAOjC,CACX,CAIA,QAAQA,EAAK,CACT,GAAIA,GAAO,KAAK,MAAM,MAAQA,EAAM,KAAK,MAAM,GAC3C,OAAOA,EACX,QAAS2E,KAAS,KAAK,OACnB,GAAIA,EAAM,GAAK3E,EACX,OAAO,KAAK,IAAIA,EAAK2E,EAAM,IAAI,EACvC,OAAO,KAAK,GAChB,CAYA,KAAKF,EAAQ,CACT,IAAIG,EAAM,KAAK,SAAWH,EAAQzE,EAAK6C,EACvC,GAAI+B,GAAO,GAAKA,EAAM,KAAK,MAAM,OAC7B5E,EAAM,KAAK,IAAMyE,EACjB5B,EAAS,KAAK,MAAM,WAAW+B,CAAG,MAEjC,CACD,IAAIC,EAAW,KAAK,cAAcJ,EAAQ,CAAC,EAC3C,GAAII,GAAY,KACZ,MAAO,GAEX,GADA7E,EAAM6E,EACF7E,GAAO,KAAK,WAAaA,EAAM,KAAK,UAAY,KAAK,OAAO,OAC5D6C,EAAS,KAAK,OAAO,WAAW7C,EAAM,KAAK,SAAS,MAEnD,CACD,IAAIQ,EAAI,KAAK,WAAYmE,EAAQ,KAAK,MACtC,KAAOA,EAAM,IAAM3E,GACf2E,EAAQ,KAAK,OAAO,EAAEnE,CAAC,EAC3B,KAAK,OAAS,KAAK,MAAM,MAAM,KAAK,UAAYR,CAAG,EAC/CA,EAAM,KAAK,OAAO,OAAS2E,EAAM,KACjC,KAAK,OAAS,KAAK,OAAO,MAAM,EAAGA,EAAM,GAAK3E,CAAG,GACrD6C,EAAS,KAAK,OAAO,WAAW,CAAC,CACrC,CACJ,CACA,OAAI7C,GAAO,KAAK,MAAM,YAClB,KAAK,MAAM,UAAYA,EAAM,GAC1B6C,CACX,CAMA,YAAYiC,EAAOC,EAAY,EAAG,CAC9B,IAAIvD,EAAMuD,EAAY,KAAK,cAAcA,EAAW,EAAE,EAAI,KAAK,IAC/D,GAAIvD,GAAO,MAAQA,EAAM,KAAK,MAAM,MAChC,MAAM,IAAI,WAAW,yBAAyB,EAClD,KAAK,MAAM,MAAQsD,EACnB,KAAK,MAAM,IAAMtD,CACrB,CAIA,cAAcsD,EAAOE,EAAQ,CACzB,KAAK,MAAM,MAAQF,EACnB,KAAK,MAAM,IAAME,CACrB,CACA,UAAW,CACP,GAAI,KAAK,KAAO,KAAK,WAAa,KAAK,IAAM,KAAK,UAAY,KAAK,OAAO,OAAQ,CAC9E,GAAI,CAAE,MAAAC,EAAO,SAAAC,CAAS,EAAI,KAC1B,KAAK,MAAQ,KAAK,OAClB,KAAK,SAAW,KAAK,UACrB,KAAK,OAASD,EACd,KAAK,UAAYC,EACjB,KAAK,SAAW,KAAK,IAAM,KAAK,QACpC,KACK,CACD,KAAK,OAAS,KAAK,MACnB,KAAK,UAAY,KAAK,SACtB,IAAIC,EAAY,KAAK,MAAM,MAAM,KAAK,GAAG,EACrC3D,EAAM,KAAK,IAAM2D,EAAU,OAC/B,KAAK,MAAQ3D,EAAM,KAAK,MAAM,GAAK2D,EAAU,MAAM,EAAG,KAAK,MAAM,GAAK,KAAK,GAAG,EAAIA,EAClF,KAAK,SAAW,KAAK,IACrB,KAAK,SAAW,CACpB,CACJ,CACA,UAAW,CACP,OAAI,KAAK,UAAY,KAAK,MAAM,SAC5B,KAAK,SAAS,EACV,KAAK,UAAY,KAAK,MAAM,QACrB,KAAK,KAAO,GAEpB,KAAK,KAAO,KAAK,MAAM,WAAW,KAAK,QAAQ,CAC1D,CAKA,QAAQC,EAAI,EAAG,CAEX,IADA,KAAK,UAAYA,EACV,KAAK,IAAMA,GAAK,KAAK,MAAM,IAAI,CAClC,GAAI,KAAK,YAAc,KAAK,OAAO,OAAS,EACxC,OAAO,KAAK,QAAQ,EACxBA,GAAK,KAAK,MAAM,GAAK,KAAK,IAC1B,KAAK,MAAQ,KAAK,OAAO,EAAE,KAAK,UAAU,EAC1C,KAAK,IAAM,KAAK,MAAM,IAC1B,CACA,YAAK,KAAOA,EACR,KAAK,KAAO,KAAK,MAAM,YACvB,KAAK,MAAM,UAAY,KAAK,IAAM,GAC/B,KAAK,SAAS,CACzB,CACA,SAAU,CACN,YAAK,IAAM,KAAK,SAAW,KAAK,IAChC,KAAK,MAAQ,KAAK,OAAO,KAAK,WAAa,KAAK,OAAO,OAAS,CAAC,EACjE,KAAK,MAAQ,GACN,KAAK,KAAO,EACvB,CAIA,MAAMpF,EAAK8E,EAAO,CAUd,GATIA,GACA,KAAK,MAAQA,EACbA,EAAM,MAAQ9E,EACd8E,EAAM,UAAY9E,EAAM,EACxB8E,EAAM,MAAQA,EAAM,SAAW,IAG/B,KAAK,MAAQR,GAEb,KAAK,KAAOtE,EAAK,CAEjB,GADA,KAAK,IAAMA,EACPA,GAAO,KAAK,IACZ,YAAK,QAAQ,EACN,KAEX,KAAOA,EAAM,KAAK,MAAM,MACpB,KAAK,MAAQ,KAAK,OAAO,EAAE,KAAK,UAAU,EAC9C,KAAOA,GAAO,KAAK,MAAM,IACrB,KAAK,MAAQ,KAAK,OAAO,EAAE,KAAK,UAAU,EAC1CA,GAAO,KAAK,UAAYA,EAAM,KAAK,SAAW,KAAK,MAAM,OACzD,KAAK,SAAWA,EAAM,KAAK,UAG3B,KAAK,MAAQ,GACb,KAAK,SAAW,GAEpB,KAAK,SAAS,CAClB,CACA,OAAO,IACX,CAIA,KAAKqF,EAAMC,EAAI,CACX,GAAID,GAAQ,KAAK,UAAYC,GAAM,KAAK,SAAW,KAAK,MAAM,OAC1D,OAAO,KAAK,MAAM,MAAMD,EAAO,KAAK,SAAUC,EAAK,KAAK,QAAQ,EACpE,GAAID,GAAQ,KAAK,WAAaC,GAAM,KAAK,UAAY,KAAK,OAAO,OAC7D,OAAO,KAAK,OAAO,MAAMD,EAAO,KAAK,UAAWC,EAAK,KAAK,SAAS,EACvE,GAAID,GAAQ,KAAK,MAAM,MAAQC,GAAM,KAAK,MAAM,GAC5C,OAAO,KAAK,MAAM,KAAKD,EAAMC,CAAE,EACnC,IAAIzC,EAAS,GACb,QAAS,KAAK,KAAK,OAAQ,CACvB,GAAI,EAAE,MAAQyC,EACV,MACA,EAAE,GAAKD,IACPxC,GAAU,KAAK,MAAM,KAAK,KAAK,IAAI,EAAE,KAAMwC,CAAI,EAAG,KAAK,IAAI,EAAE,GAAIC,CAAE,CAAC,EAC5E,CACA,OAAOzC,CACX,CACJ,EAIM0C,GAAN,KAAiB,CAj4BjB,MAi4BiB,CAAA5F,EAAA,mBACb,YAAY6F,EAAMC,EAAI,CAClB,KAAK,KAAOD,EACZ,KAAK,GAAKC,CACd,CACA,MAAM1B,EAAOlE,EAAO,CAChB,GAAI,CAAE,OAAAmB,CAAO,EAAInB,EAAM,EACvB6F,GAAU,KAAK,KAAM3B,EAAOlE,EAAO,KAAK,GAAImB,EAAO,KAAMA,EAAO,cAAc,CAClF,CACJ,EACAuE,GAAW,UAAU,WAAaA,GAAW,UAAU,SAAWA,GAAW,UAAU,OAAS,GAIhG,IAAMI,GAAN,KAAsB,CA/4BtB,MA+4BsB,CAAAhG,EAAA,wBAClB,YAAY6F,EAAMI,EAAWC,EAAW,CACpC,KAAK,UAAYD,EACjB,KAAK,UAAYC,EACjB,KAAK,KAAO,OAAOL,GAAQ,SAAW1B,GAAY0B,CAAI,EAAIA,CAC9D,CACA,MAAMzB,EAAOlE,EAAO,CAChB,IAAIc,EAAQoD,EAAM,IAAK/B,EAAU,EACjC,OAAS,CACL,IAAI8D,EAAQ/B,EAAM,KAAO,EAAGgC,EAAUhC,EAAM,cAAc,EAAG,CAAC,EAE9D,GADA2B,GAAU,KAAK,KAAM3B,EAAOlE,EAAO,EAAG,KAAK,KAAM,KAAK,SAAS,EAC3DkE,EAAM,MAAM,MAAQ,GACpB,MACJ,GAAI,KAAK,WAAa,KAClB,OAGJ,GAFK+B,GACD9D,IACA+D,GAAW,KACX,MACJhC,EAAM,MAAMgC,EAAShC,EAAM,KAAK,CACpC,CACI/B,IACA+B,EAAM,MAAMpD,EAAOoD,EAAM,KAAK,EAC9BA,EAAM,YAAY,KAAK,UAAW/B,CAAO,EAEjD,CACJ,EACA2D,GAAgB,UAAU,WAAaJ,GAAW,UAAU,SAAWA,GAAW,UAAU,OAAS,GAKrG,IAAMS,GAAN,KAAwB,CA/6BxB,MA+6BwB,CAAArG,EAAA,0BAQpB,YAIAmF,EAAOmB,EAAU,CAAC,EAAG,CACjB,KAAK,MAAQnB,EACb,KAAK,WAAa,CAAC,CAACmB,EAAQ,WAC5B,KAAK,SAAW,CAAC,CAACA,EAAQ,SAC1B,KAAK,OAAS,CAAC,CAACA,EAAQ,MAC5B,CACJ,EAqBA,SAASP,GAAUF,EAAMzB,EAAOlE,EAAOqG,EAAON,EAAWO,EAAY,CACjE,IAAIrG,EAAQ,EAAGsG,EAAY,GAAKF,EAAO,CAAE,QAAAG,CAAQ,EAAIxG,EAAM,EAAE,OAC7DiC,EAAM,MACGsE,EAAYZ,EAAK1F,CAAK,IAAM,GADtB,CAGX,IAAIwG,EAASd,EAAK1F,EAAQ,CAAC,EAI3B,QAASU,EAAIV,EAAQ,EAAGU,EAAI8F,EAAQ9F,GAAK,EACrC,IAAKgF,EAAKhF,EAAI,CAAC,EAAI4F,GAAa,EAAG,CAC/B,IAAI7E,EAAOiE,EAAKhF,CAAC,EACjB,GAAI6F,EAAQ,OAAO9E,CAAI,IAClBwC,EAAM,MAAM,OAAS,IAAMA,EAAM,MAAM,OAASxC,GAC7CgF,GAAUhF,EAAMwC,EAAM,MAAM,MAAO6B,EAAWO,CAAU,GAAI,CAChEpC,EAAM,YAAYxC,CAAI,EACtB,KACJ,CACJ,CACJ,IAAIU,EAAO8B,EAAM,KAAMyC,EAAM,EAAGC,EAAOjB,EAAK1F,EAAQ,CAAC,EAErD,GAAIiE,EAAM,KAAO,GAAK0C,EAAOD,GAAOhB,EAAKc,EAASG,EAAO,EAAI,CAAC,GAAK,MAAqB,CACpF3G,EAAQ0F,EAAKc,EAASG,EAAO,EAAI,CAAC,EAClC,SAAS3E,CACb,CAEA,KAAO0E,EAAMC,GAAO,CAChB,IAAIC,EAAOF,EAAMC,GAAS,EACtB7E,EAAQ0E,EAASI,GAAOA,GAAO,GAC/BrB,EAAOG,EAAK5D,CAAK,EAAG0D,EAAKE,EAAK5D,EAAQ,CAAC,GAAK,MAChD,GAAIK,EAAOoD,EACPoB,EAAOC,UACFzE,GAAQqD,EACbkB,EAAME,EAAM,MACX,CACD5G,EAAQ0F,EAAK5D,EAAQ,CAAC,EACtBmC,EAAM,QAAQ,EACd,SAASjC,CACb,CACJ,CACA,KACJ,CACJ,CA1CSnC,EAAA+F,GAAA,aA2CT,SAASiB,GAAWnB,EAAM7E,EAAOY,EAAM,CACnC,QAAS,EAAIZ,EAAOsB,GAAOA,EAAOuD,EAAK,CAAC,IAAM,MAAqB,IAC/D,GAAIvD,GAAQV,EACR,OAAO,EAAIZ,EACnB,MAAO,EACX,CALShB,EAAAgH,GAAA,cAMT,SAASJ,GAAUzB,EAAO8B,EAAMC,EAAWC,EAAa,CACpD,IAAIC,EAAQJ,GAAWE,EAAWC,EAAaF,CAAI,EACnD,OAAOG,EAAQ,GAAKJ,GAAWE,EAAWC,EAAahC,CAAK,EAAIiC,CACpE,CAHSpH,EAAA4G,GAAA,aAMT,IAAMS,GAAU,OAAO,QAAW,KAAe,QAAQ,KAAO,YAAY,KAAK,QAAQ,IAAI,GAAG,EAC5FC,GAAW,KACf,SAASC,GAAMC,EAAMnH,EAAKoH,EAAM,CAC5B,IAAIC,EAASF,EAAK,OAAOG,EAAS,gBAAgB,EAElD,IADAD,EAAO,OAAOrH,CAAG,IAEb,GAAI,EAAEoH,EAAO,EAAIC,EAAO,YAAYrH,CAAG,EAAIqH,EAAO,WAAWrH,CAAG,GAC5D,OAAS,CACL,IAAKoH,EAAO,EAAIC,EAAO,GAAKrH,EAAMqH,EAAO,KAAOrH,IAAQ,CAACqH,EAAO,KAAK,QACjE,OAAOD,EAAO,EAAI,KAAK,IAAI,EAAG,KAAK,IAAIC,EAAO,GAAK,EAAGrH,EAAM,EAAyB,CAAC,EAChF,KAAK,IAAImH,EAAK,OAAQ,KAAK,IAAIE,EAAO,KAAO,EAAGrH,EAAM,EAAyB,CAAC,EAC1F,GAAIoH,EAAO,EAAIC,EAAO,YAAY,EAAIA,EAAO,YAAY,EACrD,MACJ,GAAI,CAACA,EAAO,OAAO,EACf,OAAOD,EAAO,EAAI,EAAID,EAAK,MACnC,CAEZ,CAfSxH,EAAAuH,GAAA,SAgBT,IAAMK,GAAN,KAAqB,CA/hCrB,MA+hCqB,CAAA5H,EAAA,uBACjB,YAAY6H,EAAWC,EAAS,CAC5B,KAAK,UAAYD,EACjB,KAAK,QAAUC,EACf,KAAK,EAAI,EACT,KAAK,SAAW,KAChB,KAAK,SAAW,GAChB,KAAK,OAAS,GACd,KAAK,MAAQ,CAAC,EACd,KAAK,MAAQ,CAAC,EACd,KAAK,MAAQ,CAAC,EACd,KAAK,aAAa,CACtB,CACA,cAAe,CACX,IAAIC,EAAK,KAAK,SAAW,KAAK,GAAK,KAAK,UAAU,OAAS,KAAO,KAAK,UAAU,KAAK,GAAG,EACzF,GAAIA,EAAI,CAGJ,IAFA,KAAK,SAAWA,EAAG,UAAYR,GAAMQ,EAAG,KAAMA,EAAG,KAAOA,EAAG,OAAQ,CAAC,EAAIA,EAAG,OAASA,EAAG,KACvF,KAAK,OAASA,EAAG,QAAUR,GAAMQ,EAAG,KAAMA,EAAG,GAAKA,EAAG,OAAQ,EAAE,EAAIA,EAAG,OAASA,EAAG,GAC3E,KAAK,MAAM,QACd,KAAK,MAAM,IAAI,EACf,KAAK,MAAM,IAAI,EACf,KAAK,MAAM,IAAI,EAEnB,KAAK,MAAM,KAAKA,EAAG,IAAI,EACvB,KAAK,MAAM,KAAK,CAACA,EAAG,MAAM,EAC1B,KAAK,MAAM,KAAK,CAAC,EACjB,KAAK,UAAY,KAAK,QAC1B,MAEI,KAAK,UAAY,GAEzB,CAEA,OAAO1H,EAAK,CACR,GAAIA,EAAM,KAAK,UACX,OAAO,KACX,KAAO,KAAK,UAAY,KAAK,QAAUA,GACnC,KAAK,aAAa,EACtB,GAAI,CAAC,KAAK,SACN,OAAO,KACX,OAAS,CACL,IAAIuD,EAAO,KAAK,MAAM,OAAS,EAC/B,GAAIA,EAAO,EACP,YAAK,aAAa,EACX,KAEX,IAAI5B,EAAM,KAAK,MAAM4B,CAAI,EAAG3B,EAAQ,KAAK,MAAM2B,CAAI,EACnD,GAAI3B,GAASD,EAAI,SAAS,OAAQ,CAC9B,KAAK,MAAM,IAAI,EACf,KAAK,MAAM,IAAI,EACf,KAAK,MAAM,IAAI,EACf,QACJ,CACA,IAAIM,EAAON,EAAI,SAASC,CAAK,EACzBjB,EAAQ,KAAK,MAAM4C,CAAI,EAAI5B,EAAI,UAAUC,CAAK,EAClD,GAAIjB,EAAQX,EACR,YAAK,UAAYW,EACV,KAEX,GAAIsB,aAAgB0F,EAAM,CACtB,GAAIhH,GAASX,EAAK,CACd,GAAIW,EAAQ,KAAK,SACb,OAAO,KACX,IAAIa,EAAMb,EAAQsB,EAAK,OACvB,GAAIT,GAAO,KAAK,OAAQ,CACpB,IAAInB,EAAY4B,EAAK,KAAK2F,EAAS,SAAS,EAC5C,GAAI,CAACvH,GAAamB,EAAMnB,EAAY,KAAK,SAAS,GAC9C,OAAO4B,CACf,CACJ,CACA,KAAK,MAAMsB,CAAI,IACX5C,EAAQsB,EAAK,QAAU,KAAK,IAAI,KAAK,SAAUjC,CAAG,IAClD,KAAK,MAAM,KAAKiC,CAAI,EACpB,KAAK,MAAM,KAAKtB,CAAK,EACrB,KAAK,MAAM,KAAK,CAAC,EAEzB,MAEI,KAAK,MAAM4C,CAAI,IACf,KAAK,UAAY5C,EAAQsB,EAAK,MAEtC,CACJ,CACJ,EACM4F,GAAN,KAAiB,CAnnCjB,MAmnCiB,CAAAlI,EAAA,mBACb,YAAYqB,EAAQ8G,EAAQ,CACxB,KAAK,OAASA,EACd,KAAK,OAAS,CAAC,EACf,KAAK,UAAY,KACjB,KAAK,QAAU,CAAC,EAChB,KAAK,OAAS9G,EAAO,WAAW,IAAIT,GAAK,IAAI8D,EAAW,CAC5D,CACA,WAAWxE,EAAO,CACd,IAAIkI,EAAc,EACdC,EAAO,KACP,CAAE,OAAAhH,CAAO,EAAInB,EAAM,EAAG,CAAE,WAAAoI,CAAW,EAAIjH,EACvCkH,EAAOlH,EAAO,UAAUnB,EAAM,MAAO,CAAgC,EACrE2D,EAAU3D,EAAM,WAAaA,EAAM,WAAW,KAAO,EACrDQ,EAAY,EAChB,QAASG,EAAI,EAAGA,EAAIyH,EAAW,OAAQzH,IAAK,CACxC,IAAM,GAAKA,EAAK0H,IAAS,EACrB,SACJ,IAAIC,EAAYF,EAAWzH,CAAC,EAAGsE,EAAQ,KAAK,OAAOtE,CAAC,EACpD,GAAI,EAAAwH,GAAQ,CAACG,EAAU,aAEnBA,EAAU,YAAcrD,EAAM,OAASjF,EAAM,KAAOiF,EAAM,MAAQoD,GAAQpD,EAAM,SAAWtB,KAC3F,KAAK,kBAAkBsB,EAAOqD,EAAWtI,CAAK,EAC9CiF,EAAM,KAAOoD,EACbpD,EAAM,QAAUtB,GAEhBsB,EAAM,UAAYA,EAAM,IAAM,KAC9BzE,EAAY,KAAK,IAAIyE,EAAM,UAAWzE,CAAS,GAC/CyE,EAAM,OAAS,GAAkB,CACjC,IAAIsD,EAAaL,EAIjB,GAHIjD,EAAM,SAAW,KACjBiD,EAAc,KAAK,WAAWlI,EAAOiF,EAAM,SAAUA,EAAM,IAAKiD,CAAW,GAC/EA,EAAc,KAAK,WAAWlI,EAAOiF,EAAM,MAAOA,EAAM,IAAKiD,CAAW,EACpE,CAACI,EAAU,SACXH,EAAOlD,EACHiD,EAAcK,GACd,KAEZ,CACJ,CACA,KAAO,KAAK,QAAQ,OAASL,GACzB,KAAK,QAAQ,IAAI,EACrB,OAAI1H,GACAR,EAAM,aAAaQ,CAAS,EAC5B,CAAC2H,GAAQnI,EAAM,KAAO,KAAK,OAAO,MAClCmI,EAAO,IAAI3D,GACX2D,EAAK,MAAQnI,EAAM,EAAE,OAAO,QAC5BmI,EAAK,MAAQA,EAAK,IAAMnI,EAAM,IAC9BkI,EAAc,KAAK,WAAWlI,EAAOmI,EAAK,MAAOA,EAAK,IAAKD,CAAW,GAE1E,KAAK,UAAYC,EACV,KAAK,OAChB,CACA,aAAanI,EAAO,CAChB,GAAI,KAAK,UACL,OAAO,KAAK,UAChB,IAAImI,EAAO,IAAI3D,GAAa,CAAE,IAAArE,EAAK,EAAAJ,CAAE,EAAIC,EACzC,OAAAmI,EAAK,MAAQhI,EACbgI,EAAK,IAAM,KAAK,IAAIhI,EAAM,EAAGJ,EAAE,OAAO,GAAG,EACzCoI,EAAK,MAAQhI,GAAOJ,EAAE,OAAO,IAAMA,EAAE,OAAO,QAAU,EAC/CoI,CACX,CACA,kBAAkBlD,EAAOqD,EAAWtI,EAAO,CACvC,IAAIc,EAAQ,KAAK,OAAO,QAAQd,EAAM,GAAG,EAEzC,GADAsI,EAAU,MAAM,KAAK,OAAO,MAAMxH,EAAOmE,CAAK,EAAGjF,CAAK,EAClDiF,EAAM,MAAQ,GAAI,CAClB,GAAI,CAAE,OAAA9D,CAAO,EAAInB,EAAM,EACvB,QAASW,EAAI,EAAGA,EAAIQ,EAAO,YAAY,OAAQR,IAC3C,GAAIQ,EAAO,YAAYR,CAAC,GAAKsE,EAAM,MAAO,CACtC,IAAIjC,EAAS7B,EAAO,aAAaR,CAAC,EAAE,KAAK,OAAO,KAAKsE,EAAM,MAAOA,EAAM,GAAG,EAAGjF,CAAK,EACnF,GAAIgD,GAAU,GAAKhD,EAAM,EAAE,OAAO,QAAQ,OAAOgD,GAAU,CAAC,EAAG,EACtDA,EAAS,IAAM,EAChBiC,EAAM,MAAQjC,GAAU,EAExBiC,EAAM,SAAWjC,GAAU,EAC/B,KACJ,CACJ,CACR,MAEIiC,EAAM,MAAQ,EACdA,EAAM,IAAM,KAAK,OAAO,QAAQnE,EAAQ,CAAC,CAEjD,CACA,UAAUC,EAAQkE,EAAOtD,EAAKI,EAAO,CAEjC,QAASpB,EAAI,EAAGA,EAAIoB,EAAOpB,GAAK,EAC5B,GAAI,KAAK,QAAQA,CAAC,GAAKI,EACnB,OAAOgB,EACf,YAAK,QAAQA,GAAO,EAAIhB,EACxB,KAAK,QAAQgB,GAAO,EAAIkD,EACxB,KAAK,QAAQlD,GAAO,EAAIJ,EACjBI,CACX,CACA,WAAW/B,EAAOiF,EAAOtD,EAAKI,EAAO,CACjC,GAAI,CAAE,MAAA9B,CAAM,EAAID,EAAO,CAAE,OAAAmB,CAAO,EAAInB,EAAM,EAAG,CAAE,KAAA2F,CAAK,EAAIxE,EACxD,QAASqH,EAAM,EAAGA,EAAM,EAAGA,IACvB,QAAS7H,EAAIQ,EAAO,UAAUlB,EAAOuI,EAAM,EAA0B,CAA0B,GAAI7H,GAAK,EAAG,CACvG,GAAIgF,EAAKhF,CAAC,GAAK,MACX,GAAIgF,EAAKhF,EAAI,CAAC,GAAK,EACfA,EAAI8H,GAAK9C,EAAMhF,EAAI,CAAC,MAEnB,CACGoB,GAAS,GAAK4D,EAAKhF,EAAI,CAAC,GAAK,IAC7BoB,EAAQ,KAAK,UAAU0G,GAAK9C,EAAMhF,EAAI,CAAC,EAAGsE,EAAOtD,EAAKI,CAAK,GAC/D,KACJ,CAEA4D,EAAKhF,CAAC,GAAKsE,IACXlD,EAAQ,KAAK,UAAU0G,GAAK9C,EAAMhF,EAAI,CAAC,EAAGsE,EAAOtD,EAAKI,CAAK,EACnE,CAEJ,OAAOA,CACX,CACJ,EACM2G,GAAN,KAAY,CAtuCZ,MAsuCY,CAAA5I,EAAA,cACR,YAAYqB,EAAQ+C,EAAOyD,EAAWhD,EAAQ,CAC1C,KAAK,OAASxD,EACd,KAAK,MAAQ+C,EACb,KAAK,OAASS,EACd,KAAK,WAAa,EAClB,KAAK,YAAc,KACnB,KAAK,YAAc,EACnB,KAAK,OAAS,CAAC,EACf,KAAK,UAAY,KACjB,KAAK,sBAAwB,GAC7B,KAAK,qBAAuB,EAC5B,KAAK,kBAAoB,EACzB,KAAK,OAAS,IAAID,GAAYR,EAAOS,CAAM,EAC3C,KAAK,OAAS,IAAIqD,GAAW7G,EAAQ,KAAK,MAAM,EAChD,KAAK,QAAUA,EAAO,IAAI,CAAC,EAC3B,GAAI,CAAE,KAAAqE,CAAK,EAAIb,EAAO,CAAC,EACvB,KAAK,OAAS,CAAC/E,GAAM,MAAM,KAAMuB,EAAO,IAAI,CAAC,EAAGqE,CAAI,CAAC,EACrD,KAAK,UAAYmC,EAAU,QAAU,KAAK,OAAO,IAAMnC,EAAOrE,EAAO,aAAe,EAC9E,IAAIuG,GAAeC,EAAWxG,EAAO,OAAO,EAAI,IAC1D,CACA,IAAI,WAAY,CACZ,OAAO,KAAK,WAChB,CAOA,SAAU,CACN,IAAIwH,EAAS,KAAK,OAAQxI,EAAM,KAAK,YAEjCyI,EAAY,KAAK,OAAS,CAAC,EAC3BC,EAASC,EAQb,GAAI,KAAK,kBAAoB,KAAkDH,EAAO,QAAU,EAAG,CAC/F,GAAI,CAAC7F,CAAC,EAAI6F,EACV,KAAO7F,EAAE,YAAY,GAAKA,EAAE,MAAM,QAAUA,EAAE,MAAMA,EAAE,MAAM,OAAS,CAAC,GAAK,KAAK,uBAAuB,CACvG,KAAK,kBAAoB,KAAK,qBAAuB,CACzD,CAIA,QAASnC,EAAI,EAAGA,EAAIgI,EAAO,OAAQhI,IAAK,CACpC,IAAIX,EAAQ2I,EAAOhI,CAAC,EACpB,OAAS,CAEL,GADA,KAAK,OAAO,UAAY,KACpBX,EAAM,IAAMG,EACZyI,EAAU,KAAK5I,CAAK,MAEnB,IAAI,KAAK,aAAaA,EAAO4I,EAAWD,CAAM,EAC/C,SAEC,CACIE,IACDA,EAAU,CAAC,EACXC,EAAgB,CAAC,GAErBD,EAAQ,KAAK7I,CAAK,EAClB,IAAI+I,EAAM,KAAK,OAAO,aAAa/I,CAAK,EACxC8I,EAAc,KAAKC,EAAI,MAAOA,EAAI,GAAG,CACzC,EACA,KACJ,CACJ,CACA,GAAI,CAACH,EAAU,OAAQ,CACnB,IAAII,EAAWH,GAAWI,GAAaJ,CAAO,EAC9C,GAAIG,EACA,OAAI7B,IACA,QAAQ,IAAI,eAAiB,KAAK,QAAQ6B,CAAQ,CAAC,EAChD,KAAK,YAAYA,CAAQ,EAEpC,GAAI,KAAK,OAAO,OACZ,MAAI7B,IAAW0B,GACX,QAAQ,IAAI,qBAAuB,KAAK,OAAO,UAAY,KAAK,OAAO,QAAQ,KAAK,OAAO,UAAU,KAAK,EAAI,OAAO,EACnH,IAAI,YAAY,eAAiB1I,CAAG,EAEzC,KAAK,aACN,KAAK,WAAa,EAC1B,CACA,GAAI,KAAK,YAAc0I,EAAS,CAC5B,IAAIG,EAAW,KAAK,WAAa,MAAQH,EAAQ,CAAC,EAAE,IAAM,KAAK,UAAYA,EAAQ,CAAC,EAC9E,KAAK,YAAYA,EAASC,EAAeF,CAAS,EACxD,GAAII,EACA,OAAI7B,IACA,QAAQ,IAAI,gBAAkB,KAAK,QAAQ6B,CAAQ,CAAC,EACjD,KAAK,YAAYA,EAAS,SAAS,CAAC,CAEnD,CACA,GAAI,KAAK,WAAY,CACjB,IAAIE,EAAe,KAAK,YAAc,EAAI,EAAI,KAAK,WAAa,EAChE,GAAIN,EAAU,OAASM,EAEnB,IADAN,EAAU,KAAK,CAACO,EAAGC,IAAMA,EAAE,MAAQD,EAAE,KAAK,EACnCP,EAAU,OAASM,GACtBN,EAAU,IAAI,EAElBA,EAAU,KAAK9F,GAAKA,EAAE,UAAY3C,CAAG,GACrC,KAAK,YACb,SACSyI,EAAU,OAAS,EAAG,CAI3BS,EAAO,QAAS1I,EAAI,EAAGA,EAAIiI,EAAU,OAAS,EAAGjI,IAAK,CAClD,IAAIX,EAAQ4I,EAAUjI,CAAC,EACvB,QAAS2I,EAAI3I,EAAI,EAAG2I,EAAIV,EAAU,OAAQU,IAAK,CAC3C,IAAI9F,EAAQoF,EAAUU,CAAC,EACvB,GAAItJ,EAAM,UAAUwD,CAAK,GACrBxD,EAAM,OAAO,OAAS,KAAsCwD,EAAM,OAAO,OAAS,IAClF,IAAMxD,EAAM,MAAQwD,EAAM,OAAWxD,EAAM,OAAO,OAASwD,EAAM,OAAO,QAAW,EAC/EoF,EAAU,OAAOU,IAAK,CAAC,MAEtB,CACDV,EAAU,OAAOjI,IAAK,CAAC,EACvB,SAAS0I,CACb,CAER,CACJ,CACIT,EAAU,OAAS,KACnBA,EAAU,KAAK,CAACO,EAAGC,IAAMA,EAAE,MAAQD,EAAE,KAAK,EAC1CP,EAAU,OAAO,GAA4BA,EAAU,OAAS,EAA0B,EAElG,CACA,KAAK,YAAcA,EAAU,CAAC,EAAE,IAChC,QAASjI,EAAI,EAAGA,EAAIiI,EAAU,OAAQjI,IAC9BiI,EAAUjI,CAAC,EAAE,IAAM,KAAK,cACxB,KAAK,YAAciI,EAAUjI,CAAC,EAAE,KACxC,OAAO,IACX,CACA,OAAOR,EAAK,CACR,GAAI,KAAK,WAAa,MAAQ,KAAK,UAAYA,EAC3C,MAAM,IAAI,WAAW,8BAA8B,EACvD,KAAK,UAAYA,CACrB,CAKA,aAAaH,EAAO2I,EAAQY,EAAO,CAC/B,IAAIzI,EAAQd,EAAM,IAAK,CAAE,OAAAmB,CAAO,EAAI,KAChCG,EAAO6F,GAAU,KAAK,QAAQnH,CAAK,EAAI,OAAS,GACpD,GAAI,KAAK,WAAa,MAAQc,EAAQ,KAAK,UACvC,OAAOd,EAAM,YAAY,EAAIA,EAAQ,KACzC,GAAI,KAAK,UAAW,CAChB,IAAIwJ,EAAWxJ,EAAM,YAAcA,EAAM,WAAW,QAAQ,OAAQyJ,EAASD,EAAWxJ,EAAM,WAAW,KAAO,EAChH,QAAS0J,EAAS,KAAK,UAAU,OAAO5I,CAAK,EAAG4I,GAAS,CACrD,IAAIC,EAAQ,KAAK,OAAO,QAAQ,MAAMD,EAAO,KAAK,EAAE,GAAKA,EAAO,KAAOvI,EAAO,QAAQnB,EAAM,MAAO0J,EAAO,KAAK,EAAE,EAAI,GACrH,GAAIC,EAAQ,IAAMD,EAAO,SAAW,CAACF,IAAaE,EAAO,KAAK3B,EAAS,WAAW,GAAK,IAAM0B,GACzF,OAAAzJ,EAAM,QAAQ0J,EAAQC,CAAK,EACvBxC,IACA,QAAQ,IAAI7F,EAAO,KAAK,QAAQtB,CAAK,EAAI,kBAAkBmB,EAAO,QAAQuI,EAAO,KAAK,EAAE,CAAC,GAAG,EACzF,GAEX,GAAI,EAAEA,aAAkB5B,IAAS4B,EAAO,SAAS,QAAU,GAAKA,EAAO,UAAU,CAAC,EAAI,EAClF,MACJ,IAAIE,EAAQF,EAAO,SAAS,CAAC,EAC7B,GAAIE,aAAiB9B,GAAQ4B,EAAO,UAAU,CAAC,GAAK,EAChDA,EAASE,MAET,MACR,CACJ,CACA,IAAIC,EAAgB1I,EAAO,UAAUnB,EAAM,MAAO,CAAgC,EAClF,GAAI6J,EAAgB,EAChB,OAAA7J,EAAM,OAAO6J,CAAa,EACtB1C,IACA,QAAQ,IAAI7F,EAAO,KAAK,QAAQtB,CAAK,EAAI,uBAAuBmB,EAAO,QAAQ0I,EAAgB,KAA4B,CAAC,GAAG,EAC5H,GAEX,GAAI7J,EAAM,MAAM,QAAU,KACtB,KAAOA,EAAM,MAAM,OAAS,KAAwBA,EAAM,YAAY,GAAG,CAE7E,IAAI8J,EAAU,KAAK,OAAO,WAAW9J,CAAK,EAC1C,QAASW,EAAI,EAAGA,EAAImJ,EAAQ,QAAS,CACjC,IAAI/I,EAAS+I,EAAQnJ,GAAG,EAAGe,EAAOoI,EAAQnJ,GAAG,EAAGgB,EAAMmI,EAAQnJ,GAAG,EAC7D+C,EAAO/C,GAAKmJ,EAAQ,QAAU,CAACP,EAC/BQ,EAAarG,EAAO1D,EAAQA,EAAM,MAAM,EACxCmI,EAAO,KAAK,OAAO,UAKvB,GAJA4B,EAAW,MAAMhJ,EAAQW,EAAMyG,EAAOA,EAAK,MAAQ4B,EAAW,IAAKpI,CAAG,EAClEwF,IACA,QAAQ,IAAI7F,EAAO,KAAK,QAAQyI,CAAU,EAAI,UAAUhJ,EAAS,QAAkC,EAAI,QACjG,aAAaI,EAAO,QAAQJ,EAAS,KAA4B,CAAC,EAAE,QAAQI,EAAO,QAAQO,CAAI,CAAC,MAAMZ,CAAK,GAAGiJ,GAAc/J,EAAQ,GAAK,SAAS,GAAG,EAC3J0D,EACA,MAAO,GACFqG,EAAW,IAAMjJ,EACtB6H,EAAO,KAAKoB,CAAU,EAEtBR,EAAM,KAAKQ,CAAU,CAC7B,CACA,MAAO,EACX,CAIA,aAAa/J,EAAO4I,EAAW,CAC3B,IAAIzI,EAAMH,EAAM,IAChB,OAAS,CACL,GAAI,CAAC,KAAK,aAAaA,EAAO,KAAM,IAAI,EACpC,MAAO,GACX,GAAIA,EAAM,IAAMG,EACZ,OAAA6J,GAAehK,EAAO4I,CAAS,EACxB,EAEf,CACJ,CACA,YAAYD,EAAQsB,EAAQrB,EAAW,CACnC,IAAII,EAAW,KAAMkB,EAAY,GACjC,QAASvJ,EAAI,EAAGA,EAAIgI,EAAO,OAAQhI,IAAK,CACpC,IAAIX,EAAQ2I,EAAOhI,CAAC,EAAGsE,EAAQgF,EAAOtJ,GAAK,CAAC,EAAGwJ,EAAWF,GAAQtJ,GAAK,GAAK,CAAC,EACzEW,EAAO6F,GAAU,KAAK,QAAQnH,CAAK,EAAI,OAAS,GACpD,GAAIA,EAAM,UACFkK,IAEJA,EAAY,GACZlK,EAAM,QAAQ,EACVmH,IACA,QAAQ,IAAI7F,EAAO,KAAK,QAAQtB,CAAK,EAAI,cAAc,EAChD,KAAK,aAAaA,EAAO4I,CAAS,IAEzC,SAER,IAAIwB,EAAQpK,EAAM,MAAM,EAAGqK,EAAY/I,EACvC,QAASgI,EAAI,EAAGA,EAAI,IAAiCc,EAAM,YAAY,IAC/DjD,IACA,QAAQ,IAAIkD,EAAY,KAAK,QAAQD,CAAK,EAAI,qBAAqB,EAC5D,MAAK,aAAaA,EAAOxB,CAAS,GAHyBU,IAMlEnC,KACAkD,EAAY,KAAK,QAAQD,CAAK,EAAI,QAE1C,QAASE,KAAUtK,EAAM,gBAAgBiF,CAAK,EACtCkC,IACA,QAAQ,IAAI7F,EAAO,KAAK,QAAQgJ,CAAM,EAAI,uBAAuB,EACrE,KAAK,aAAaA,EAAQ1B,CAAS,EAEnC,KAAK,OAAO,IAAM5I,EAAM,KACpBmK,GAAYnK,EAAM,MAClBmK,IACAlF,EAAQ,GAEZjF,EAAM,gBAAgBiF,EAAOkF,CAAQ,EACjChD,IACA,QAAQ,IAAI7F,EAAO,KAAK,QAAQtB,CAAK,EAAI,wBAAwB,KAAK,OAAO,QAAQiF,CAAK,CAAC,GAAG,EAClG+E,GAAehK,EAAO4I,CAAS,IAE1B,CAACI,GAAYA,EAAS,MAAQoB,EAAM,SACzCpB,EAAWoB,EAEnB,CACA,OAAOpB,CACX,CAEA,YAAYhJ,EAAO,CACf,OAAAA,EAAM,MAAM,EACL8H,EAAK,MAAM,CAAE,OAAQ/D,GAAkB,OAAO/D,CAAK,EACtD,QAAS,KAAK,OAAO,QACrB,MAAO,KAAK,QACZ,gBAAiB,KAAK,OAAO,aAC7B,OAAQ,KAAK,OACb,MAAO,KAAK,OAAO,CAAC,EAAE,KACtB,OAAQA,EAAM,IAAM,KAAK,OAAO,CAAC,EAAE,KACnC,cAAe,KAAK,OAAO,aAAc,CAAC,CAClD,CACA,QAAQA,EAAO,CACX,IAAI4F,GAAMwB,KAAaA,GAAW,IAAI,UAAU,IAAIpH,CAAK,EACzD,OAAK4F,GACDwB,GAAS,IAAIpH,EAAO4F,EAAK,OAAO,cAAc,KAAK,aAAa,CAAC,EAC9DA,EAAK5F,CAChB,CACJ,EACA,SAASgK,GAAehK,EAAO4I,EAAW,CACtC,QAASjI,EAAI,EAAGA,EAAIiI,EAAU,OAAQjI,IAAK,CACvC,IAAI6C,EAAQoF,EAAUjI,CAAC,EACvB,GAAI6C,EAAM,KAAOxD,EAAM,KAAOwD,EAAM,UAAUxD,CAAK,EAAG,CAC9C4I,EAAUjI,CAAC,EAAE,MAAQX,EAAM,QAC3B4I,EAAUjI,CAAC,EAAIX,GACnB,MACJ,CACJ,CACA4I,EAAU,KAAK5I,CAAK,CACxB,CAVSF,EAAAkK,GAAA,kBAWT,IAAMO,GAAN,KAAc,CAxgDd,MAwgDc,CAAAzK,EAAA,gBACV,YAAY0K,EAAQC,EAAOC,EAAU,CACjC,KAAK,OAASF,EACd,KAAK,MAAQC,EACb,KAAK,SAAWC,CACpB,CACA,OAAOhJ,EAAM,CAAE,MAAO,CAAC,KAAK,UAAY,KAAK,SAASA,CAAI,GAAK,CAAG,CACtE,EACMkE,GAAK9F,EAAA6K,GAAKA,EAAL,MAaLC,GAAN,KAAqB,CA7hDrB,MA6hDqB,CAAA9K,EAAA,uBAIjB,YAAY+K,EAAM,CACd,KAAK,MAAQA,EAAK,MAClB,KAAK,MAAQA,EAAK,OAASjF,GAC3B,KAAK,OAASiF,EAAK,QAAUjF,GAC7B,KAAK,MAAQiF,EAAK,OAASjF,GAC3B,KAAK,KAAOiF,EAAK,OAAS,IAAM,GAChC,KAAK,OAASA,EAAK,SAAW,EAClC,CACJ,EAMMC,GAAN,MAAMC,UAAiBC,EAAO,CA/iD9B,MA+iD8B,CAAAlL,EAAA,iBAI1B,YAAY+K,EAAM,CAMd,GALA,MAAM,EAIN,KAAK,SAAW,CAAC,EACbA,EAAK,SAAW,GAChB,MAAM,IAAI,WAAW,mBAAmBA,EAAK,OAAO,sCAA4D,EACpH,IAAII,EAAYJ,EAAK,UAAU,MAAM,GAAG,EACxC,KAAK,cAAgBI,EAAU,OAC/B,QAAStK,EAAI,EAAGA,EAAIkK,EAAK,gBAAiBlK,IACtCsK,EAAU,KAAK,EAAE,EACrB,IAAIC,EAAW,OAAO,KAAKL,EAAK,QAAQ,EAAE,IAAIM,GAAKN,EAAK,SAASM,CAAC,EAAE,CAAC,CAAC,EAClEC,EAAY,CAAC,EACjB,QAASzK,EAAI,EAAGA,EAAIsK,EAAU,OAAQtK,IAClCyK,EAAU,KAAK,CAAC,CAAC,EACrB,SAASC,EAAQC,EAAQC,EAAMhJ,EAAO,CAClC6I,EAAUE,CAAM,EAAE,KAAK,CAACC,EAAMA,EAAK,YAAY,OAAOhJ,CAAK,CAAC,CAAC,CAAC,CAClE,CACA,GAHSzC,EAAAuL,EAAA,WAGLR,EAAK,UACL,QAASW,KAAYX,EAAK,UAAW,CACjC,IAAIU,EAAOC,EAAS,CAAC,EACjB,OAAOD,GAAQ,WACfA,EAAOxD,EAASwD,CAAI,GACxB,QAAS5K,EAAI,EAAGA,EAAI6K,EAAS,QAAS,CAClC,IAAIpJ,EAAOoJ,EAAS7K,GAAG,EACvB,GAAIyB,GAAQ,EACRiJ,EAAQjJ,EAAMmJ,EAAMC,EAAS7K,GAAG,CAAC,MAEhC,CACD,IAAI4B,EAAQiJ,EAAS7K,EAAI,CAACyB,CAAI,EAC9B,QAASkH,EAAI,CAAClH,EAAMkH,EAAI,EAAGA,IACvB+B,EAAQG,EAAS7K,GAAG,EAAG4K,EAAMhJ,CAAK,EACtC5B,GACJ,CACJ,CACJ,CACJ,KAAK,QAAU,IAAI8K,GAAQR,EAAU,IAAI,CAACS,EAAM/K,IAAMgL,GAAS,OAAO,CAClE,KAAMhL,GAAK,KAAK,cAAgB,OAAY+K,EAC5C,GAAI/K,EACJ,MAAOyK,EAAUzK,CAAC,EAClB,IAAKuK,EAAS,QAAQvK,CAAC,EAAI,GAC3B,MAAOA,GAAK,EACZ,QAASkK,EAAK,cAAgBA,EAAK,aAAa,QAAQlK,CAAC,EAAI,EACjE,CAAC,CAAC,CAAC,EACCkK,EAAK,cACL,KAAK,QAAU,KAAK,QAAQ,OAAO,GAAGA,EAAK,WAAW,GAC1D,KAAK,OAAS,GACd,KAAK,aAAe,KACpB,IAAIe,EAAa3H,GAAY4G,EAAK,SAAS,EAC3C,KAAK,QAAUA,EAAK,QACpB,KAAK,iBAAmBA,EAAK,aAAe,CAAC,EAC7C,KAAK,YAAc,IAAI,YAAY,KAAK,iBAAiB,MAAM,EAC/D,QAASlK,EAAI,EAAGA,EAAI,KAAK,iBAAiB,OAAQA,IAC9C,KAAK,YAAYA,CAAC,EAAI,KAAK,iBAAiBA,CAAC,EAAE,KACnD,KAAK,aAAe,KAAK,iBAAiB,IAAIkL,EAAc,EAC5D,KAAK,OAAS5H,GAAY4G,EAAK,OAAQ,WAAW,EAClD,KAAK,KAAO5G,GAAY4G,EAAK,SAAS,EACtC,KAAK,KAAO5G,GAAY4G,EAAK,IAAI,EACjC,KAAK,QAAUA,EAAK,QACpB,KAAK,WAAaA,EAAK,WAAW,IAAItI,GAAS,OAAOA,GAAS,SAAW,IAAImD,GAAWkG,EAAYrJ,CAAK,EAAIA,CAAK,EACnH,KAAK,SAAWsI,EAAK,SACrB,KAAK,SAAWA,EAAK,UAAY,CAAC,EAClC,KAAK,mBAAqBA,EAAK,oBAAsB,KACrD,KAAK,eAAiBA,EAAK,UAC3B,KAAK,UAAYA,EAAK,WAAa,KACnC,KAAK,QAAU,KAAK,QAAQ,MAAM,OAAS,EAC3C,KAAK,QAAU,KAAK,aAAa,EACjC,KAAK,IAAM,KAAK,SAAS,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC,CAAC,CAC1D,CACA,YAAY3G,EAAOyD,EAAWhD,EAAQ,CAClC,IAAImH,EAAQ,IAAIpD,GAAM,KAAMxE,EAAOyD,EAAWhD,CAAM,EACpD,QAASoH,KAAK,KAAK,SACfD,EAAQC,EAAED,EAAO5H,EAAOyD,EAAWhD,CAAM,EAC7C,OAAOmH,CACX,CAIA,QAAQ7L,EAAOyB,EAAMsK,EAAQ,GAAO,CAChC,IAAIC,EAAQ,KAAK,KACjB,GAAIvK,GAAQuK,EAAM,CAAC,EACf,MAAO,GACX,QAAS9L,EAAM8L,EAAMvK,EAAO,CAAC,IAAK,CAC9B,IAAIwK,EAAWD,EAAM9L,GAAK,EAAGuD,EAAOwI,EAAW,EAC3ChJ,EAAS+I,EAAM9L,GAAK,EACxB,GAAIuD,GAAQsI,EACR,OAAO9I,EACX,QAASvB,EAAMxB,GAAO+L,GAAY,GAAI/L,EAAMwB,EAAKxB,IAC7C,GAAI8L,EAAM9L,CAAG,GAAKF,EACd,OAAOiD,EACf,GAAIQ,EACA,MAAO,EACf,CACJ,CAIA,UAAUzD,EAAOkM,EAAU,CACvB,IAAIxG,EAAO,KAAK,KAChB,QAAS6C,EAAM,EAAGA,EAAM,EAAGA,IACvB,QAAS7H,EAAI,KAAK,UAAUV,EAAOuI,EAAM,EAA0B,CAA0B,EAAGpG,GAAOzB,GAAK,EAAG,CAC3G,IAAKyB,EAAOuD,EAAKhF,CAAC,IAAM,MACpB,GAAIgF,EAAKhF,EAAI,CAAC,GAAK,EACfyB,EAAOuD,EAAKhF,EAAI8H,GAAK9C,EAAMhF,EAAI,CAAC,CAAC,MAChC,IAAIgF,EAAKhF,EAAI,CAAC,GAAK,EACpB,OAAO8H,GAAK9C,EAAMhF,EAAI,CAAC,EAEvB,MAER,GAAIyB,GAAQ+J,GAAY/J,GAAQ,EAC5B,OAAOqG,GAAK9C,EAAMhF,EAAI,CAAC,CAC/B,CAEJ,MAAO,EACX,CAIA,UAAUV,EAAOmM,EAAM,CACnB,OAAO,KAAK,OAAQnM,EAAQ,EAA2BmM,CAAI,CAC/D,CAIA,UAAUnM,EAAOoM,EAAM,CACnB,OAAQ,KAAK,UAAUpM,EAAO,CAAwB,EAAIoM,GAAQ,CACtE,CAIA,YAAYpM,EAAOc,EAAQ,CACvB,MAAO,CAAC,CAAC,KAAK,WAAWd,EAAOkJ,GAAKA,GAAKpI,EAAS,GAAO,IAAI,CAClE,CAIA,WAAWd,EAAOc,EAAQ,CACtB,IAAIuL,EAAQ,KAAK,UAAUrM,EAAO,CAAgC,EAC9D+C,EAASsJ,EAAQvL,EAAOuL,CAAK,EAAI,OACrC,QAAS3L,EAAI,KAAK,UAAUV,EAAO,CAA0B,EAAG+C,GAAU,KAAMrC,GAAK,EAAG,CACpF,GAAI,KAAK,KAAKA,CAAC,GAAK,MAChB,GAAI,KAAK,KAAKA,EAAI,CAAC,GAAK,EACpBA,EAAI8H,GAAK,KAAK,KAAM9H,EAAI,CAAC,MAEzB,OAERqC,EAASjC,EAAO0H,GAAK,KAAK,KAAM9H,EAAI,CAAC,CAAC,CAC1C,CACA,OAAOqC,CACX,CAKA,WAAW/C,EAAO,CACd,IAAI+C,EAAS,CAAC,EACd,QAAS,EAAI,KAAK,UAAU/C,EAAO,CAA0B,GAAI,GAAK,EAAG,CACrE,GAAI,KAAK,KAAK,CAAC,GAAK,MAChB,GAAI,KAAK,KAAK,EAAI,CAAC,GAAK,EACpB,EAAIwI,GAAK,KAAK,KAAM,EAAI,CAAC,MAEzB,OAER,IAAK,KAAK,KAAK,EAAI,CAAC,EAAK,IAAyC,EAAG,CACjE,IAAIlG,EAAQ,KAAK,KAAK,EAAI,CAAC,EACtBS,EAAO,KAAK,CAACD,EAAGpC,IAAOA,EAAI,GAAMoC,GAAKR,CAAK,GAC5CS,EAAO,KAAK,KAAK,KAAK,CAAC,EAAGT,CAAK,CACvC,CACJ,CACA,OAAOS,CACX,CAMA,UAAUuJ,EAAQ,CAGd,IAAIC,EAAO,OAAO,OAAO,OAAO,OAAOzB,EAAS,SAAS,EAAG,IAAI,EAGhE,GAFIwB,EAAO,QACPC,EAAK,QAAU,KAAK,QAAQ,OAAO,GAAGD,EAAO,KAAK,GAClDA,EAAO,IAAK,CACZ,IAAIE,EAAO,KAAK,SAASF,EAAO,GAAG,EACnC,GAAI,CAACE,EACD,MAAM,IAAI,WAAW,yBAAyBF,EAAO,GAAG,EAAE,EAC9DC,EAAK,IAAMC,CACf,CACA,OAAIF,EAAO,aACPC,EAAK,WAAa,KAAK,WAAW,IAAIE,GAAK,CACvC,IAAInJ,EAAQgJ,EAAO,WAAW,KAAKpB,GAAKA,EAAE,MAAQuB,CAAC,EACnD,OAAOnJ,EAAQA,EAAM,GAAKmJ,CAC9B,CAAC,GACDH,EAAO,eACPC,EAAK,aAAe,KAAK,aAAa,MAAM,EAC5CA,EAAK,iBAAmB,KAAK,iBAAiB,IAAI,CAAC1J,EAAGnC,IAAM,CACxD,IAAI4C,EAAQgJ,EAAO,aAAa,KAAKpB,GAAKA,EAAE,MAAQrI,EAAE,QAAQ,EAC9D,GAAI,CAACS,EACD,OAAOT,EACX,IAAI+H,EAAO,OAAO,OAAO,OAAO,OAAO,CAAC,EAAG/H,CAAC,EAAG,CAAE,SAAUS,EAAM,EAAG,CAAC,EACrE,OAAAiJ,EAAK,aAAa7L,CAAC,EAAIkL,GAAehB,CAAI,EACnCA,CACX,CAAC,GAED0B,EAAO,iBACPC,EAAK,QAAUD,EAAO,gBACtBA,EAAO,UACPC,EAAK,QAAU,KAAK,aAAaD,EAAO,OAAO,GAC/CA,EAAO,QAAU,OACjBC,EAAK,OAASD,EAAO,QACrBA,EAAO,OACPC,EAAK,SAAWA,EAAK,SAAS,OAAOD,EAAO,IAAI,GAChDA,EAAO,cAAgB,OACvBC,EAAK,aAAeD,EAAO,cACxBC,CACX,CAKA,aAAc,CACV,OAAO,KAAK,SAAS,OAAS,CAClC,CAOA,QAAQ9K,EAAM,CACV,OAAO,KAAK,UAAY,KAAK,UAAUA,CAAI,EAAI,OAAOA,GAAQ,KAAK,SAAW,KAAK,QAAQ,MAAMA,CAAI,EAAE,MAAQA,CAAI,CACvH,CAKA,IAAI,SAAU,CAAE,OAAO,KAAK,QAAU,CAAG,CAIzC,IAAI,SAAU,CAAE,OAAO,KAAK,QAAQ,MAAM,KAAK,IAAI,CAAC,CAAC,CAAG,CAIxD,kBAAkBA,EAAM,CACpB,IAAIiL,EAAO,KAAK,mBAChB,OAAOA,GAAQ,KAAO,EAAIA,EAAKjL,CAAI,GAAK,CAC5C,CAIA,aAAa8E,EAAS,CAClB,IAAIoG,EAAS,OAAO,KAAK,KAAK,QAAQ,EAAGnC,EAAQmC,EAAO,IAAI,IAAM,EAAK,EACvE,GAAIpG,EACA,QAASqG,KAAQrG,EAAQ,MAAM,GAAG,EAAG,CACjC,IAAIZ,EAAKgH,EAAO,QAAQC,CAAI,EACxBjH,GAAM,IACN6E,EAAM7E,CAAE,EAAI,GACpB,CACJ,IAAI8E,EAAW,KACf,QAAS/J,EAAI,EAAGA,EAAIiM,EAAO,OAAQjM,IAC/B,GAAI,CAAC8J,EAAM9J,CAAC,EACR,QAAS2I,EAAI,KAAK,SAASsD,EAAOjM,CAAC,CAAC,EAAGiF,GAAKA,EAAK,KAAK,KAAK0D,GAAG,IAAM,QAC/DoB,IAAaA,EAAW,IAAI,WAAW,KAAK,QAAU,CAAC,IAAI9E,CAAE,EAAI,EAE9E,OAAO,IAAI2E,GAAQ/D,EAASiE,EAAOC,CAAQ,CAC/C,CAKA,OAAO,YAAYG,EAAM,CACrB,OAAO,IAAIE,EAASF,CAAI,CAC5B,CACJ,EACA,SAASpC,GAAK9C,EAAMnD,EAAK,CAAE,OAAOmD,EAAKnD,CAAG,EAAKmD,EAAKnD,EAAM,CAAC,GAAK,EAAK,CAA5D1C,EAAA2I,GAAA,QACT,SAASQ,GAAaN,EAAQ,CAC1B,IAAI9F,EAAO,KACX,QAAS7C,KAAS2I,EAAQ,CACtB,IAAIE,EAAU7I,EAAM,EAAE,WACjBA,EAAM,KAAOA,EAAM,EAAE,OAAO,KAAO6I,GAAW,MAAQ7I,EAAM,IAAM6I,IACnE7I,EAAM,EAAE,OAAO,UAAUA,EAAM,MAAO,CAA2B,IAChE,CAAC6C,GAAQA,EAAK,MAAQ7C,EAAM,SAC7B6C,EAAO7C,EACf,CACA,OAAO6C,CACX,CAVS/C,EAAAmJ,GAAA,gBAWT,SAAS4C,GAAehB,EAAM,CAC1B,GAAIA,EAAK,SAAU,CACf,IAAIxC,EAAOwC,EAAK,OAAS,EAA4B,EACrD,MAAO,CAACtI,EAAOvC,IAAW6K,EAAK,SAAStI,EAAOvC,CAAK,GAAK,EAAKqI,CAClE,CACA,OAAOwC,EAAK,GAChB,CANS/K,EAAA+L,GAAA,kBC/0DT,IAAMiB,GAAe,IACnBC,GAAO,EACPC,GAAa,IACbC,GAAS,IACTC,GAAe,EACfC,GAAkB,IAClBC,GAAoB,EACpBC,GAAc,EAKVC,GAAQ,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACrE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAK,EACpEC,GAAQ,GAAIC,GAAS,GAAIC,GAAa,GAAIC,GAAW,GAAIC,GAAO,GAAIC,GAAS,GAC7EC,GAAO,GAAIC,GAAU,GAAIC,GAAY,GAAIC,GAAY,GAAIC,GAAU,GAAIC,GAAW,GAExF,SAASC,GAAQC,EAAI,CAAE,OAAOA,GAAM,IAAMA,GAAM,IAAMA,GAAM,IAAMA,GAAM,KAAOA,GAAM,GAAI,CAAhFC,EAAAF,GAAA,WAET,SAASG,GAAQF,EAAI,CAAE,OAAOA,GAAM,IAAMA,GAAM,EAAG,CAA1CC,EAAAC,GAAA,WAET,SAASC,GAAMH,EAAI,CAAE,OAAOE,GAAQF,CAAE,GAAKA,GAAM,IAAMA,GAAM,KAAOA,GAAM,IAAMA,GAAM,EAAG,CAAhFC,EAAAE,GAAA,SAET,IAAMC,GAAmBH,EAAA,CAACI,EAAIC,EAASzB,IAAW,CAAC0B,EAAOC,IAAU,CAClE,QAASC,EAAS,GAAOC,EAAS,EAAGC,EAAI,GAAIA,IAAK,CAChD,GAAI,CAAC,KAAAC,CAAI,EAAIL,EACb,GAAIR,GAAQa,CAAI,GAAKA,GAAQrB,IAAQqB,GAAQvB,IAAeoB,GAAUP,GAAQU,CAAI,EAC5E,CAACH,IAAWG,GAAQrB,IAAQoB,EAAI,KAAIF,EAAS,IAC7CC,IAAWC,GAAKC,GAAQrB,IAAMmB,IAClCH,EAAM,QAAQ,UACLK,GAAQhB,IAAaW,EAAM,KAAK,CAAC,GAAKV,GAAS,CAExD,GADAU,EAAM,QAAQ,EACVJ,GAAMI,EAAM,IAAI,EAAG,CACrB,GAAKA,EAAM,QAAQ,QAAYJ,GAAMI,EAAM,IAAI,GAC3CA,EAAM,MAAQ,IAAIA,EAAM,QAAQ,CACtC,MAAWA,EAAM,KAAO,IACtBA,EAAM,QAAQ,EAEhBE,EAAS,EACX,KAAO,CACDA,GAAQF,EAAM,YAChBG,GAAU,GAAKF,EAAM,SAAS1B,EAAY,EAAIwB,EAAUM,GAAQxB,GAASP,EAASwB,CACpF,EACA,KACF,CACF,CACF,EAvByB,oBAyBnBQ,GAAc,IAAIC,GACtBV,GAAiBxB,GAAYE,GAAcD,EAAM,EACjD,CAAC,WAAY,EAAI,CACnB,EACMkC,GAAmB,IAAID,GAC3BV,GAAiBrB,GAAiBC,GAAmBC,EAAW,EAChE,CAAC,WAAY,EAAI,CACnB,EAEM+B,GAAa,IAAIF,GAAkBP,GAAS,CAChD,GAAIrB,GAAM,SAASqB,EAAM,KAAK,EAAE,CAAC,EAAG,CAClC,GAAI,CAAC,KAAAK,CAAI,EAAIL,GACTR,GAAQa,CAAI,GAAKA,GAAQvB,IAAcuB,GAAQnB,IAAQmB,GAAQpB,IAC/DoB,GAAQd,IAAYc,GAAQtB,IAAYsB,GAAQzB,IAASY,GAAQQ,EAAM,KAAK,CAAC,CAAC,GAC9EK,GAAQrB,IAAQqB,GAAQjB,KAC1BY,EAAM,YAAY7B,EAAY,CAClC,CACF,CAAC,EAEKuC,GAAY,IAAIH,GAAkBP,GAAS,CAC/C,GAAI,CAACrB,GAAM,SAASqB,EAAM,KAAK,EAAE,CAAC,EAAG,CACnC,GAAI,CAAC,KAAAK,CAAI,EAAIL,EAEb,GADIK,GAAQlB,KAAWa,EAAM,QAAQ,EAAGA,EAAM,YAAY5B,EAAI,GAC1DoB,GAAQa,CAAI,EAAG,CACjB,GAAKL,EAAM,QAAQ,QAAYR,GAAQQ,EAAM,IAAI,GAAKL,GAAQK,EAAM,IAAI,GACxEA,EAAM,YAAY5B,EAAI,CACxB,CACF,CACF,CAAC,EAEKuC,GAAkBC,GAAU,CAChC,kFAAmFC,EAAK,kBACxF,mCAAoCA,EAAK,QACzC,cAAeA,EAAK,UACpB,aAAcA,EAAK,UACnB,kBAAmBA,EAAK,gBACxB,QAASA,EAAK,QACd,UAAWA,EAAK,UAChB,gBAAiBA,EAAK,SAASA,EAAK,SAAS,EAC7C,OAAQA,EAAK,UACb,2BAA4BA,EAAK,aACjC,cAAeA,EAAK,cACpB,cAAeA,EAAK,OACpB,aAAcA,EAAK,QACnB,aAAcA,EAAK,gBACnB,6BAA8BA,EAAK,KACnC,aAAcA,EAAK,aACnB,OAAQA,EAAK,gBACb,KAAMA,EAAK,KACX,oCAAqCA,EAAK,mBAC1C,oBAAqBA,EAAK,gBAC1B,6BAA8BA,EAAK,cACnC,MAAOA,EAAK,mBACZ,UAAWA,EAAK,SAChB,QAASA,EAAK,aACd,aAAcA,EAAK,MACnB,qCAAsCA,EAAK,OAC3C,IAAKA,EAAK,YACV,aAAcA,EAAK,cACnB,QAASA,EAAK,UACd,MAAOA,EAAK,MACZ,MAAOA,EAAK,cACZ,MAAOA,EAAK,KACd,CAAC,EAGKC,GAAc,CAAC,UAAU,KAAK,KAAK,GAAI,YAAY,GAAI,iBAAiB,GAAI,cAAc,GAAI,mBAAmB,GAAI,IAAI,GAAI,eAAe,GAAI,GAAG,GAAI,IAAI,IAAK,aAAa,IAAK,OAAO,IAAK,OAAO,GAAG,EACxMC,GAAuB,CAAC,UAAU,KAAK,GAAG,IAAK,IAAI,IAAK,IAAI,IAAK,KAAK,IAAK,MAAM,GAAG,EACpFC,GAAmB,CAAC,UAAU,KAAK,SAAS,IAAK,MAAM,GAAG,EAC1DC,GAAiB,CAAC,UAAU,KAAK,UAAU,IAAK,SAAS,IAAK,WAAW,IAAK,aAAa,IAAK,aAAa,IAAK,YAAY,IAAK,SAAS,IAAK,uBAAuB,GAAG,EAC3KC,GAAkB,CAAC,UAAU,KAAK,GAAG,GAAG,EACxCC,GAASC,GAAS,YAAY,CAClC,QAAS,GACT,OAAQ,8zGACR,UAAW,qgGACX,KAAM,y7CACN,UAAW,2xCACX,QAAS,IACT,UAAW,CACT,CAAC,UAAW,GAAG,EAAE,GAAG,EAAE,EACtB,CAAC,WAAY,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EACjC,CAAC,WAAY,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CACnC,EACA,YAAa,CAACT,EAAe,EAC7B,aAAc,CAAC,EAAE,EAAE,GAAG,EACtB,gBAAiB,GACjB,UAAW,ulHACX,WAAY,CAACF,GAAYC,GAAWJ,GAAaE,GAAkB,EAAG,EAAG,EAAG,EAAG,IAAIa,GAAgB,qCAAsC,GAAI,GAAG,CAAC,EACjJ,SAAU,CAAC,WAAa,CAAC,EAAE,CAAC,EAAE,OAAS,CAAC,EAAE,GAAG,CAAC,EAC9C,mBAAoB,CAAC,GAAK,CAAC,EAC3B,YAAa,CAAC,CAAC,KAAM,IAAK,IAAK3B,EAAC4B,GAAUR,GAAYQ,CAAK,GAAK,GAAjC,MAAmC,EAAE,CAAC,KAAM,IAAK,IAAK5B,EAAC4B,GAAUP,GAAqBO,CAAK,GAAK,GAA1C,MAA4C,EAAE,CAAC,KAAM,EAAG,IAAK5B,EAAC4B,GAAUN,GAAiBM,CAAK,GAAK,GAAtC,MAAwC,EAAE,CAAC,KAAM,GAAI,IAAK5B,EAAC4B,GAAUL,GAAeK,CAAK,GAAK,GAApC,MAAsC,EAAE,CAAC,KAAM,IAAK,IAAK5B,EAAC4B,GAAUJ,GAAgBI,CAAK,GAAK,GAArC,MAAuC,CAAC,EAC7S,UAAW,IACb,CAAC,EC5ID,IAAIC,GAAc,KAClB,SAASC,IAAa,CAClB,GAAI,CAACD,IAAe,OAAO,UAAY,UAAY,SAAS,KAAM,CAC9D,GAAI,CAAE,MAAAE,CAAM,EAAI,SAAS,KAAMC,EAAQ,CAAC,EAAGC,EAAO,IAAI,IACtD,QAASC,KAAQH,EACTG,GAAQ,WAAaA,GAAQ,YACzB,OAAOH,EAAMG,CAAI,GAAK,WAClB,QAAQ,KAAKA,CAAI,IACjBA,EAAOA,EAAK,QAAQ,SAAUC,GAAM,IAAMA,EAAG,YAAY,CAAC,GACzDF,EAAK,IAAIC,CAAI,IACdF,EAAM,KAAKE,CAAI,EACfD,EAAK,IAAIC,CAAI,IAI7BL,GAAcG,EAAM,KAAK,EAAE,IAAII,IAAS,CAAE,KAAM,WAAY,MAAOA,EAAM,MAAOA,EAAO,IAAK,EAAE,CAClG,CACA,OAAOP,IAAe,CAAC,CAC3B,CAjBSQ,EAAAP,GAAA,cAkBT,IAAMQ,GAA6B,CAC/B,SAAU,QAAS,WAAY,WAAY,WAAY,SACvD,UAAW,MAAO,UAAW,UAAW,WAAY,QACpD,UAAW,uBAAwB,QAAS,cAC5C,eAAgB,aAAc,gBAAiB,QAC/C,gBAAiB,eAAgB,aAAc,MAAO,OACtD,eAAgB,QAAS,WAAY,gBAAiB,UACtD,KAAM,OAAQ,aAAc,eAAgB,OAAQ,OAAQ,SAC5D,QAAS,MAAO,YAAa,iBAAkB,mBAC/C,cAAe,aAAc,eAAgB,WAAY,eACzD,OAAQ,cAAe,oBAAqB,YAAa,aACzD,WAAY,QAAS,OAAQ,QAAS,YAAa,UAAW,SAC9D,cAAe,QAAS,UAAW,OACvC,EAAE,IAAIF,IAAS,CAAE,KAAM,QAAS,MAAOA,CAAK,EAAE,EACxCG,GAAsB,CACxB,QAAS,WAAY,eAAgB,WAAY,gBAAiB,oBAClE,QAAS,QAAS,MAAO,aAAc,aAAc,YAAa,SAClE,cAAe,eAAgB,YAAa,OAAQ,OAAQ,YAAa,QAAS,eAClF,aAAc,eAAgB,WAAY,aAAc,YAAa,WAAY,QACjF,gBAAiB,QAAS,QAAS,aAAc,OAAQ,SAAU,SAAU,aAC7E,OAAQ,SAAU,QAAS,YAAa,aAAc,UAAW,SAAU,eAC3E,aAAc,kBAAmB,eAAgB,aAAc,OAAQ,aACvE,sBAAuB,UAAW,cAAe,QAAS,OAAQ,SAAU,WAAY,SACxF,cAAe,QAAS,OAAQ,cAAe,aAAc,WAAY,QAAS,aAClF,cAAe,SAAU,iBAAkB,UAAW,YAAa,UAAW,UAC9E,WAAY,cAAe,eAAgB,aAAc,OAAQ,UAAW,WAAY,QACxF,OAAQ,QAAS,YAAa,eAAgB,UAAW,SAAU,SAAU,SAAU,UACvF,uBAAwB,UAAW,iBAAkB,QAAS,mBAAoB,iBAClF,kBAAmB,mBAAoB,aAAc,OAAQ,UAAW,oBACxE,kBAAmB,WAAY,WAAY,eAAgB,SAAU,SAAU,OAAQ,WACvF,OAAQ,UAAW,cAAe,WAAY,UAAW,UAAW,WAAY,QAAS,MACzF,uBAAwB,0BAA2B,wBAAyB,YAAa,YACzF,WAAY,UAAW,kBAAmB,iBAAkB,UAAW,OAAQ,OAAQ,WACvF,QAAS,OAAQ,OAAQ,WAAY,aAAc,YAAa,WAAY,OAC5E,qBAAsB,WAAY,OAAQ,SAAU,OAAQ,aAAc,OAAQ,SAAU,OAC5F,SAAU,YAAa,gBAAiB,aAAc,MAAO,OAAQ,MAAO,OAAQ,SACpF,iBAAkB,kBAAmB,sBAAuB,WAAY,iBAAkB,WAC1F,UAAW,UAAW,SAAU,cAAe,eAAgB,cAAe,cAC9E,eAAgB,QAAS,SAAU,YAAa,SAAU,SAAU,UAAW,WAC/E,YAAa,QAAS,SAAU,OAAQ,QAAS,UAAW,UAAW,eAAgB,SACvF,kBAAmB,QAAS,YAAa,UAAW,WAAY,QAAS,UAAW,OAAQ,QAC5F,oBAAqB,cAAe,kBAAmB,YAAa,MAAO,aAAc,eACzF,QAAS,SAAU,WAAY,SAAU,OAAQ,WAAY,cAAe,SAAU,gBACtF,MAAO,YAAa,OAAQ,WAAY,uBAAwB,WAAY,WAAY,WACxF,YAAa,cAAe,iBAAkB,UAAW,gBAAiB,YAAa,OACvF,SAAU,cAAe,SAAU,YAAa,UAAW,UAAW,YAAa,cACnF,UAAW,UAAW,aAAc,qBAAsB,gBAAiB,SAAU,UACrF,gBAAiB,UAAW,WAAY,UAAW,cAAe,UAAW,OAAQ,SACrF,cAAe,aAAc,cAAe,eAAgB,UAAW,UAAW,WAClF,MAAO,WAAY,WAAY,cAAe,WAAY,cAAe,kBAAmB,QAC5F,YAAa,aAAc,4BAA6B,YAAa,SAAU,WAAY,SAC3F,4BAA6B,4BAA6B,WAAY,WAAY,QAAS,UAC3F,MAAO,OAAQ,QAAS,QAAS,SAAU,WAAY,UAAW,UAAW,UAAW,QACxF,MAAO,aAAc,cAAe,MAAO,SAAU,UAAW,WAAY,aAAc,aAC1F,QAAS,UAAW,SAAU,SAAU,SAAU,SAAU,SAAU,YAAa,kBACnF,YAAa,aAAc,WAAY,iBAAkB,gBAAiB,WAAY,QAAS,OAC/F,SAAU,OAAQ,QAAS,QAAS,mBAAoB,QAAS,oBACjE,kBAAmB,yBAA0B,uBAAwB,OAAQ,QAAS,aACtF,gBAAiB,UAAW,aAAc,QAAS,cAAe,YAAa,aAC/E,cAAe,QAAS,eAAgB,gBAAiB,eAAgB,YAAa,SAAU,QAChG,SAAU,aAAc,UAAW,SAAU,aAAc,MAAO,uBAAwB,YAC1F,QAAS,YAAa,WAAY,UAAW,YAAa,QAAS,gBAAiB,aACpF,eAAgB,qBAAsB,qBAAsB,qBAAsB,YAClF,kBAAmB,OAAQ,cAAe,WAAY,WAAY,YAAa,QAAS,OACxF,mBAAoB,aAAc,kBAAmB,oBAAqB,eAAgB,KAAM,MAChG,YAAa,YAAa,cAAe,aAAc,aAAc,aAAc,cACnF,kBAAmB,iBAAkB,YAAa,qBAAsB,QAAS,KAAM,cACvF,YAAa,MAAO,MAAO,WAAY,gBAAiB,WAAY,UAAW,cAC/E,iBAAkB,gBAAiB,SAAU,WAAY,OAAQ,OAAQ,QAAS,SAAU,cAC5F,aAAc,QAAS,OAAQ,eAAgB,UAAW,UAAW,MAAO,WAAY,UAC5F,EAAE,IAAIH,IAAS,CAAE,KAAM,UAAW,MAAOA,CAAK,EAAE,EAAE,OAAoB,CAClE,YAAa,eAAgB,OAAQ,aAAc,QAAS,QAC5D,SAAU,QAAS,iBAAkB,OAAQ,aAAc,QAC3D,YAAa,YAAa,aAAc,YAAa,QAAS,iBAC9D,WAAY,UAAW,OAAQ,WAAY,WAAY,gBACvD,WAAY,YAAa,YAAa,cAAe,iBACrD,aAAc,aAAc,UAAW,aAAc,eACrD,gBAAiB,gBAAiB,gBAAiB,aACnD,WAAY,cAAe,UAAW,aAAc,YACpD,cAAe,cAAe,UAAW,YAAa,aACtD,OAAQ,YAAa,OAAQ,OAAQ,QAAS,cAAe,WAC7D,UAAW,YAAa,SAAU,QAAS,QAAS,WACpD,gBAAiB,YAAa,eAAgB,YAAa,aAC3D,YAAa,uBAAwB,YAAa,aAAc,YAChE,cAAe,gBAAiB,eAAgB,iBAChD,iBAAkB,cAAe,OAAQ,YAAa,QAAS,UAC/D,SAAU,mBAAoB,aAAc,eAAgB,eAC5D,iBAAkB,kBAAmB,oBAAqB,kBAC1D,kBAAmB,eAAgB,YAAa,YAAa,WAC7D,cAAe,OAAQ,UAAW,QAAS,YAAa,SAAU,YAClE,SAAU,gBAAiB,YAAa,gBAAiB,gBACzD,aAAc,YAAa,OAAQ,OAAQ,OAAQ,aACnD,SAAU,gBAAiB,MAAO,YAAa,YAAa,cAC5D,SAAU,aAAc,WAAY,WAAY,SAAU,SAAU,UACpE,YAAa,YAAa,OAAQ,cAAe,YAAa,MAC9D,OAAQ,UAAW,SAAU,YAAa,SAAU,QAAS,QAC7D,aAAc,SAAU,aAC5B,EAAE,IAAIA,IAAS,CAAE,KAAM,WAAY,MAAOA,CAAK,EAAE,CAAC,EAC5CI,GAAoB,CACtB,IAAK,OAAQ,UAAW,UAAW,QAAS,IAAK,MAAO,MAAO,aAAc,OAC7E,KAAM,SAAU,SAAU,UAAW,OAAQ,OAAQ,MAAO,WAAY,KAAM,MAC9E,UAAW,MAAO,SAAU,MAAO,KAAM,KAAM,KAAM,aAAc,SAAU,SAC7E,OAAQ,SAAU,SAAU,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAAQ,IAAK,SACnF,MAAO,QAAS,MAAO,MAAO,QAAS,SAAU,KAAM,OAAQ,QAAS,MAAO,KAAM,SACrF,IAAK,MAAO,OAAQ,UAAW,SAAU,QAAS,SAAU,OAAQ,SAAU,MAAO,UACrF,MAAO,QAAS,QAAS,KAAM,WAAY,WAAY,QAAS,KAAM,QAAS,KAAM,IAAK,IAC9F,EAAE,IAAIJ,IAAS,CAAE,KAAM,OAAQ,MAAOA,CAAK,EAAE,EACvCK,GAAuB,CACzB,WAAY,iBAAkB,aAAc,iBAAkB,aAAc,uBAC5E,uBAAwB,UAAW,aAAc,SAAU,SAAU,aAAc,QACnF,gBAAiB,YAAa,SAAU,kBAAmB,YAAa,kBAC5E,EAAE,IAAIC,IAAU,CAAE,KAAM,UAAW,MAAAA,CAAM,EAAE,EACrCC,GAAa,0BAA2BC,GAAW,gBACzD,SAASC,GAASC,EAAMC,EAAK,CACzB,IAAIC,EAGJ,IAFIF,EAAK,MAAQ,KAAOA,EAAK,KAAK,WAC9BA,EAAOA,EAAK,QAAUA,GACtBA,EAAK,MAAQ,UACb,MAAO,GACX,IAAIG,GAAUD,EAAKF,EAAK,UAAY,MAAQE,IAAO,OAAS,OAASA,EAAG,WACxE,OAAqDC,GAAO,MAAS,SAC1D,GACJF,EAAI,YAAYE,EAAO,KAAMA,EAAO,EAAE,GAAK,KACtD,CAVSZ,EAAAQ,GAAA,YAWT,IAAMK,GAA+B,IAAIC,GACnCC,GAAe,CAAC,aAAa,EACnC,SAASC,GAAOP,EAAM,CAClB,QAASQ,EAAMR,IAAQ,CACnB,GAAIQ,EAAI,KAAK,MACT,OAAOA,EACX,GAAI,EAAEA,EAAMA,EAAI,QACZ,OAAOR,CACf,CACJ,CAPST,EAAAgB,GAAA,UAQT,SAASE,GAAcR,EAAKD,EAAMU,EAAY,CAC1C,GAAIV,EAAK,GAAKA,EAAK,KAAO,KAAM,CAC5B,IAAIW,EAAQP,GAAgB,IAAIJ,CAAI,EACpC,GAAIW,EACA,OAAOA,EACX,IAAIC,EAAS,CAAC,EAAGzB,EAAO,IAAI,IAAK0B,EAASb,EAAK,OAAOc,EAAS,gBAAgB,EAC/E,GAAID,EAAO,WAAW,EAClB,EACI,SAASE,KAAUN,GAAcR,EAAKY,EAAO,KAAMH,CAAU,EACpDvB,EAAK,IAAI4B,EAAO,KAAK,IACtB5B,EAAK,IAAI4B,EAAO,KAAK,EACrBH,EAAO,KAAKG,CAAM,SAErBF,EAAO,YAAY,GAChC,OAAAT,GAAgB,IAAIJ,EAAMY,CAAM,EACzBA,CACX,KACK,CACD,IAAIA,EAAS,CAAC,EAAGzB,EAAO,IAAI,IAC5B,OAAAa,EAAK,OAAO,EAAE,QAAQA,GAAQ,CAC1B,IAAIE,EACJ,GAAIQ,EAAWV,CAAI,GAAKA,EAAK,aAAaM,EAAY,KAAOJ,EAAKF,EAAK,KAAK,eAAiB,MAAQE,IAAO,OAAS,OAASA,EAAG,OAAS,IAAK,CAC3I,IAAIZ,EAAOW,EAAI,YAAYD,EAAK,KAAMA,EAAK,EAAE,EACxCb,EAAK,IAAIG,CAAI,IACdH,EAAK,IAAIG,CAAI,EACbsB,EAAO,KAAK,CAAE,MAAOtB,EAAM,KAAM,UAAW,CAAC,EAErD,CACJ,CAAC,EACMsB,CACX,CACJ,CA/BSrB,EAAAkB,GAAA,iBAsCT,IAAMO,GAA4BzB,EAACmB,GAAeO,GAAW,CACzD,GAAI,CAAE,MAAAC,EAAO,IAAAC,CAAI,EAAIF,EAASjB,EAAOoB,EAAWF,CAAK,EAAE,aAAaC,EAAK,EAAE,EACvEE,EAASrB,EAAK,KAAK,SAAWA,EAAK,MAAQA,EAAK,GAAK,GAAKkB,EAAM,IAAI,YAAYlB,EAAK,KAAMA,EAAK,EAAE,GAAK,IAC3G,GAAIA,EAAK,MAAQ,iBACZqB,GAAUrB,EAAK,MAAQ,YAAc,mBAAmB,KAAKA,EAAK,QAAQA,EAAK,EAAE,EAAE,IAAI,EACxF,MAAO,CAAE,KAAMA,EAAK,KAAM,QAAShB,GAAW,EAAG,SAAUa,EAAW,EAC1E,GAAIG,EAAK,MAAQ,YACb,MAAO,CAAE,KAAMA,EAAK,KAAM,QAASP,GAAQ,SAAUI,EAAW,EACpE,GAAIG,EAAK,MAAQ,kBACb,MAAO,CAAE,KAAMA,EAAK,KAAM,QAASR,GAAe,SAAUK,EAAW,EAC3E,GAAIa,EAAWV,CAAI,IAAMiB,EAAQ,UAAYI,IAAWtB,GAASC,EAAMkB,EAAM,GAAG,EAC5E,MAAO,CAAE,KAAMR,EAAWV,CAAI,GAAKqB,EAASrB,EAAK,KAAOmB,EACpD,QAASV,GAAcS,EAAM,IAAKX,GAAOP,CAAI,EAAGU,CAAU,EAC1D,SAAUZ,EAAS,EAC3B,GAAIE,EAAK,MAAQ,UAAW,CACxB,OAAS,CAAE,OAAAsB,CAAO,EAAItB,EAAMsB,EAAQA,EAASA,EAAO,OAChD,GAAIA,EAAO,MAAQ,QACf,MAAO,CAAE,KAAMtB,EAAK,KAAM,QAAShB,GAAW,EAAG,SAAUa,EAAW,EAC9E,MAAO,CAAE,KAAMG,EAAK,KAAM,QAASN,GAAM,SAAUG,EAAW,CAClE,CACA,GAAIG,EAAK,MAAQ,YACb,MAAO,CAAE,KAAMA,EAAK,KAAM,QAASL,GAAS,SAAUE,EAAW,EACrE,GAAI,CAACoB,EAAQ,SACT,OAAO,KACX,IAAIM,EAAQvB,EAAK,QAAQmB,CAAG,EAAGK,EAASD,EAAM,YAAYJ,CAAG,EAC7D,OAAIK,GAAUA,EAAO,MAAQ,KAAOD,EAAM,MAAQ,sBACvC,CAAE,KAAMJ,EAAK,QAAS3B,GAAe,SAAUK,EAAW,EACjE2B,GAAUA,EAAO,MAAQ,KAAOD,EAAM,MAAQ,eAAiBA,EAAM,MAAQ,UACtE,CAAE,KAAMJ,EAAK,QAAS1B,GAAQ,SAAUI,EAAW,EAC1D0B,EAAM,MAAQ,SAAWA,EAAM,MAAQ,SAChC,CAAE,KAAMJ,EAAK,QAASnC,GAAW,EAAG,SAAUa,EAAW,EAC7D,IACX,EAhCkC,6BAoC5B4B,GAAmCT,GAA0B,GAAK,EAAE,MAAQ,cAAc,EAO1FU,GAA2BC,GAAW,OAAO,CAC/C,KAAM,MACN,OAAqBC,GAAO,UAAU,CAClC,MAAO,CACUC,GAAe,IAAI,CAC5B,YAA0BC,GAAgB,CAC9C,CAAC,EACYC,GAAa,IAAI,CAC1B,qBAAsBC,EAC1B,CAAC,CACL,CACJ,CAAC,EACD,aAAc,CACV,cAAe,CAAE,MAAO,CAAE,KAAM,KAAM,MAAO,IAAK,CAAE,EACpD,cAAe,UACf,UAAW,GACf,CACJ,CAAC,EAID,SAASC,IAAM,CACX,OAAO,IAAIC,GAAgBR,GAAaA,GAAY,KAAK,GAAG,CAAE,aAAcD,EAAoB,CAAC,CAAC,CACtG,CAFSlC,EAAA0C,GAAA,OC9PT,IAAME,GAAa,GACjBC,GAAsB,EACtBC,GAAY,GACZC,GAAqB,EACrBC,GAAe,GACfC,GAAwB,EACxBC,GAAS,EACTC,GAAoB,EACpBC,GAAW,EACXC,GAAiB,EACjBC,GAAgB,EAChBC,GAAmB,EACnBC,GAAsB,GACtBC,GAAgB,GAChBC,GAAuB,GACvBC,GAA0B,GAC1BC,GAAkB,GAClBC,GAAgB,GAChBC,GAAqB,GACrBC,GAAmB,GACnBC,GAAU,GACVC,GAAU,GACVC,GAAY,GACZC,GAAgB,GAChBC,GAAiB,GACjBC,GAAyB,GACzBC,GAAa,GACbC,GAAY,GACZC,GAAe,GACfC,GAAU,GACVC,GAAW,GACXC,GAAkB,EAClBC,GAAsB,EAIlBC,GAAc,CAClB,KAAM,GAAM,KAAM,GAAM,GAAI,GAAM,IAAK,GAAM,QAAS,GACtD,MAAO,GAAM,MAAO,GAAM,GAAI,GAAM,IAAK,GAAM,MAAO,GACtD,OAAQ,GAAM,KAAM,GAAM,KAAM,GAAM,MAAO,GAAM,OAAQ,GAC3D,MAAO,GAAM,IAAK,GAAM,SAAU,EACpC,EAEMC,GAAmB,CACvB,GAAI,GAAM,GAAI,GAAM,SAAU,GAAM,OAAQ,GAAM,EAAG,GACrD,GAAI,GAAM,GAAI,GAAM,MAAO,GAAM,GAAI,GAAM,MAAO,GAClD,GAAI,GAAM,GAAI,EAChB,EAEMC,GAAc,CAClB,GAAI,CAAC,GAAI,GAAM,GAAI,EAAI,EACvB,GAAI,CAAC,GAAI,GAAM,GAAI,EAAI,EACvB,GAAI,CAAC,GAAI,EAAI,EACb,OAAQ,CAAC,OAAQ,GAAM,SAAU,EAAI,EACrC,SAAU,CAAC,SAAU,EAAI,EACzB,EAAG,CACD,QAAS,GAAM,QAAS,GAAM,MAAO,GAAM,WAAY,GAAM,IAAK,GAClE,IAAK,GAAM,GAAI,GAAM,SAAU,GAAM,OAAQ,GAAM,KAAM,GACzD,GAAI,GAAM,GAAI,GAAM,GAAI,GAAM,GAAI,GAAM,GAAI,GAAM,GAAI,GACtD,OAAQ,GAAM,OAAQ,GAAM,GAAI,GAAM,KAAM,GAAM,IAAK,GAAM,GAAI,GACjE,EAAG,GAAM,IAAK,GAAM,QAAS,GAAM,MAAO,GAAM,GAAI,EACtD,EACA,GAAI,CAAC,GAAI,GAAM,GAAI,EAAI,EACvB,GAAI,CAAC,GAAI,GAAM,GAAI,EAAI,EACvB,MAAO,CAAC,MAAO,GAAM,MAAO,EAAI,EAChC,GAAI,CAAC,GAAI,GAAM,GAAI,EAAI,EACvB,MAAO,CAAC,MAAO,EAAI,EACnB,GAAI,CAAC,GAAI,GAAM,GAAI,EAAI,EACvB,MAAO,CAAC,MAAO,GAAM,MAAO,EAAI,EAChC,GAAI,CAAC,GAAI,EAAI,CACf,EAEA,SAASC,GAASC,EAAI,CACpB,OAAOA,GAAM,IAAMA,GAAM,IAAMA,GAAM,IAAMA,GAAM,IAAMA,GAAM,IAAMA,GAAM,IAAMA,GAAM,IAAMA,GAAM,KAAOA,GAAM,GAChH,CAFSC,EAAAF,GAAA,YAIT,IAAIG,GAAa,KAAMC,GAAc,KAAMC,GAAY,EACvD,SAASC,GAAaC,EAAOC,EAAQ,CACnC,IAAIC,EAAMF,EAAM,IAAMC,EACtB,GAAIH,IAAaI,GAAOL,IAAeG,EAAO,OAAOJ,GACrD,IAAIO,EAAOH,EAAM,KAAKC,CAAM,EAAGG,EAAO,GACtC,KACOX,GAASU,CAAI,GAClBC,GAAQ,OAAO,aAAaD,CAAI,EAChCA,EAAOH,EAAM,KAAK,EAAEC,CAAM,EAG5B,OAAAJ,GAAcG,EAAOF,GAAYI,EAC1BN,GAAaQ,EAAOA,EAAK,YAAY,EAAID,GAAQE,IAAYF,GAAQG,GAAO,OAAY,IACjG,CAZSX,EAAAI,GAAA,gBAcT,IAAMQ,GAAW,GAAIC,GAAc,GAAIC,GAAQ,GAAIJ,GAAW,GAAIC,GAAO,GAAII,GAAO,GAEpF,SAASC,GAAeP,EAAMQ,EAAQ,CACpC,KAAK,KAAOR,EACZ,KAAK,OAASQ,CAChB,CAHSjB,EAAAgB,GAAA,kBAKT,IAAME,GAAgB,CAAChD,GAAUI,GAAqBH,GAAgBC,GAAeC,EAAgB,EAE/F8C,GAAiB,IAAIC,GAAe,CACxC,MAAO,KACP,MAAMC,EAASC,EAAMC,EAAOlB,EAAO,CACjC,OAAOa,GAAc,QAAQI,CAAI,EAAI,GAAK,IAAIN,GAAeZ,GAAaC,EAAO,CAAC,GAAK,GAAIgB,CAAO,EAAIA,CACxG,EACA,OAAOA,EAASC,EAAM,CACpB,OAAOA,GAAQxC,IAAWuC,EAAUA,EAAQ,OAASA,CACvD,EACA,MAAMA,EAASG,EAAMD,EAAOlB,EAAO,CACjC,IAAIoB,EAAOD,EAAK,KAAK,GACrB,OAAOC,GAAQvD,IAAYuD,GAAQlC,GAC/B,IAAIyB,GAAeZ,GAAaC,EAAO,CAAC,GAAK,GAAIgB,CAAO,EAAIA,CAClE,EACA,OAAQ,EACV,CAAC,EAEKK,GAAW,IAAIC,GAAkB,CAACtB,EAAOkB,IAAU,CACvD,GAAIlB,EAAM,MAAQO,GAAU,CAEtBP,EAAM,KAAO,GAAKkB,EAAM,SAASlB,EAAM,YAAY3B,EAAe,EACtE,MACF,CACA2B,EAAM,QAAQ,EACd,IAAIuB,EAAQvB,EAAM,MAAQS,GACtBc,GAAOvB,EAAM,QAAQ,EACzB,IAAII,EAAOL,GAAaC,EAAO,CAAC,EAChC,GAAII,IAAS,OAAW,OACxB,GAAI,CAACA,EAAM,OAAOJ,EAAM,YAAYuB,EAAQhD,GAAqBD,EAAa,EAE9E,IAAIsC,EAASM,EAAM,QAAUA,EAAM,QAAQ,KAAO,KAClD,GAAIK,EAAO,CACT,GAAInB,GAAQQ,EAAQ,OAAOZ,EAAM,YAAY9B,EAAa,EAC1D,GAAI0C,GAAUrB,GAAiBqB,CAAM,EAAG,OAAOZ,EAAM,YAAY3B,GAAiB,EAAE,EACpF,GAAI6C,EAAM,eAAe9B,EAAe,EAAG,OAAOY,EAAM,YAAY7B,EAAoB,EACxF,QAASqD,EAAKN,EAAM,QAASM,EAAIA,EAAKA,EAAG,OAAQ,GAAIA,EAAG,MAAQpB,EAAM,OACtEJ,EAAM,YAAY5B,EAAuB,CAC3C,KAAO,CACL,GAAIgC,GAAQ,SAAU,OAAOJ,EAAM,YAAYlC,EAAc,EAC7D,GAAIsC,GAAQ,QAAS,OAAOJ,EAAM,YAAYjC,EAAa,EAC3D,GAAIqC,GAAQ,WAAY,OAAOJ,EAAM,YAAYhC,EAAgB,EACjE,GAAIsB,GAAY,eAAec,CAAI,EAAG,OAAOJ,EAAM,YAAY/B,EAAmB,EAC9E2C,GAAUpB,GAAYoB,CAAM,GAAKpB,GAAYoB,CAAM,EAAER,CAAI,EAAGJ,EAAM,YAAY3B,GAAiB,EAAE,EAChG2B,EAAM,YAAYnC,EAAQ,CACjC,CACF,EAAG,CAAC,WAAY,EAAI,CAAC,EAEf4D,GAAiB,IAAIH,GAAkBtB,GAAS,CACpD,QAAS0B,EAAS,EAAGC,EAAI,GAAIA,IAAK,CAChC,GAAI3B,EAAM,KAAO,EAAG,CACd2B,GAAG3B,EAAM,YAAYxB,EAAgB,EACzC,KACF,CACA,GAAIwB,EAAM,MAAQU,GAChBgB,YACS1B,EAAM,MAAQQ,IAAekB,GAAU,EAAG,CAC/CC,GAAK,GAAG3B,EAAM,YAAYxB,GAAkB,EAAE,EAClD,KACF,MACEkD,EAAS,EAEX1B,EAAM,QAAQ,CAChB,CACF,CAAC,EAED,SAAS4B,GAAiBZ,EAAS,CACjC,KAAOA,EAASA,EAAUA,EAAQ,OAChC,GAAIA,EAAQ,MAAQ,OAASA,EAAQ,MAAQ,OAAQ,MAAO,GAC9D,MAAO,EACT,CAJSrB,EAAAiC,GAAA,oBAMT,IAAMC,GAAS,IAAIP,GAAkB,CAACtB,EAAOkB,IAAU,CACrD,GAAIlB,EAAM,MAAQS,IAAST,EAAM,KAAK,CAAC,GAAKQ,GAAa,CACvD,IAAIsB,EAAcZ,EAAM,eAAe7B,EAAmB,GAAKuC,GAAiBV,EAAM,OAAO,EAC7FlB,EAAM,YAAY8B,EAAclE,GAAoBD,GAAQ,CAAC,CAC/D,MAAWqC,EAAM,MAAQQ,IACvBR,EAAM,YAAYrC,GAAQ,CAAC,CAE/B,CAAC,EAED,SAASoE,GAAiBC,EAAKC,EAAWC,EAAU,CAClD,IAAIC,EAAY,EAAIH,EAAI,OACxB,OAAO,IAAIV,GAAkBtB,GAAS,CAOpC,QAASoC,EAAQ,EAAGC,EAAa,EAAGV,EAAI,GAAIA,IAAK,CAC/C,GAAI3B,EAAM,KAAO,EAAG,CACd2B,GAAG3B,EAAM,YAAYiC,CAAS,EAClC,KACF,CACA,GAAIG,GAAS,GAAKpC,EAAM,MAAQO,IAC5B6B,GAAS,GAAKpC,EAAM,MAAQS,IAC5B2B,GAAS,GAAKA,EAAQD,GAAanC,EAAM,MAAQgC,EAAI,WAAWI,EAAQ,CAAC,EAC3EA,IACAC,YACSD,GAASD,GAAanC,EAAM,MAAQQ,GAAa,CACtDmB,EAAIU,EACNrC,EAAM,YAAYiC,EAAW,CAACI,CAAU,EAExCrC,EAAM,YAAYkC,EAAU,EAAEG,EAAa,EAAE,EAC/C,KACF,UAAYrC,EAAM,MAAQ,IAAiBA,EAAM,MAAQ,KAAkB2B,EAAG,CAC5E3B,EAAM,YAAYiC,EAAW,CAAC,EAC9B,KACF,MACEG,EAAQC,EAAa,EAEvBrC,EAAM,QAAQ,CAChB,CACF,CAAC,CACH,CAlCSL,EAAAoC,GAAA,oBAoCT,IAAMO,GAAeP,GAAiB,SAAU1E,GAAYC,EAAmB,EAEzEiF,GAAcR,GAAiB,QAASxE,GAAWC,EAAkB,EAErEgF,GAAiBT,GAAiB,WAAYtE,GAAcC,EAAqB,EAEjF+E,GAAmBC,GAAU,CACjC,gDAAiDC,EAAK,QACtD,kDAAmDA,EAAK,aACxD,QAASA,EAAK,QACd,6BAA8B,CAACA,EAAK,QAAUA,EAAK,OAAO,EAC1D,cAAeA,EAAK,cACpB,wCAAyCA,EAAK,eAC9C,GAAIA,EAAK,mBACT,qCAAsCA,EAAK,UAC3C,QAASA,EAAK,aACd,eAAgBA,EAAK,sBACrB,YAAaA,EAAK,YACpB,CAAC,EAGKC,GAASC,GAAS,YAAY,CAClC,QAAS,GACT,OAAQ,wgCACR,UAAW,+mBACX,KAAM,2RACN,UAAW,wgBACX,QAAS,GACT,QAAS/B,GACT,UAAW,CACT,CAAC,WAAY,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,SAAS,EAAE,2BAA2B,GAAG,GAAG,GAAG,GAAG,GAAG,UAAU,EACxG,CAAC,WAAY,EAAE,yBAAyB,EAAE,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,SAAS,EAC7E,CAAC,QAAS,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,SAAS,GAAG,qBAAqB,GAAG,GAAG,GAAG,GAAG,oBAAoB,EAC7G,CAAC,UAAW,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,CACvE,EACA,YAAa,CAAC2B,EAAgB,EAC9B,aAAc,CAAC,CAAC,EAChB,gBAAiB,EACjB,UAAW,ioMACX,WAAY,CAACH,GAAcC,GAAaC,GAAgBX,GAAQR,GAAUI,GAAgB,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC1G,SAAU,CAAC,SAAW,CAAC,EAAE,EAAE,CAAC,EAC5B,SAAU,CAAC,QAAS,EAAG,YAAa,GAAG,EACvC,UAAW,GACb,CAAC,EAED,SAASqB,GAASC,EAAS/C,EAAO,CAChC,IAAIgD,EAAQ,OAAO,OAAO,IAAI,EAC9B,QAASC,KAAOF,EAAQ,YAAYpE,EAAS,EAAG,CAC9C,IAAIyB,EAAO6C,EAAI,SAASrE,EAAa,EAAGsE,EAAQD,EAAI,SAASpE,EAAc,GAAKoE,EAAI,SAASnE,EAAsB,EAC/GsB,IAAM4C,EAAMhD,EAAM,KAAKI,EAAK,KAAMA,EAAK,EAAE,CAAC,EAC3C8C,EAAaA,EAAM,KAAK,IAAMrE,GAAiBmB,EAAM,KAAKkD,EAAM,KAAO,EAAGA,EAAM,GAAK,CAAC,EAAIlD,EAAM,KAAKkD,EAAM,KAAMA,EAAM,EAAE,EAAjH,GACb,CACA,OAAOF,CACT,CARSrD,EAAAmD,GAAA,YAUT,SAASK,GAAYJ,EAAS/C,EAAO,CACnC,IAAIoD,EAAcL,EAAQ,SAASrE,EAAO,EAC1C,OAAO0E,EAAcpD,EAAM,KAAKoD,EAAY,KAAMA,EAAY,EAAE,EAAI,GACtE,CAHSzD,EAAAwD,GAAA,eAKT,SAASE,GAAUlC,EAAMnB,EAAO2C,EAAM,CACpC,IAAIK,EACJ,QAAShB,KAAOW,EACd,GAAI,CAACX,EAAI,OAASA,EAAI,MAAMgB,IAAUA,EAAQF,GAAS3B,EAAK,KAAK,OAAO,WAAYnB,CAAK,EAAE,EACzF,MAAO,CAAC,OAAQgC,EAAI,OAAQ,UAAW,EAAI,EAE/C,OAAO,IACT,CAPSrC,EAAA0D,GAAA,aAoBT,SAASC,GAAiBX,EAAO,CAAC,EAAGY,EAAa,CAAC,EAAG,CACpD,IAAIC,EAAS,CAAC,EAAGC,EAAQ,CAAC,EAAGC,EAAW,CAAC,EAAGC,EAAQ,CAAC,EACrD,QAAS3B,KAAOW,GACFX,EAAI,KAAO,SAAWwB,EAASxB,EAAI,KAAO,QAAUyB,EAAQzB,EAAI,KAAO,WAAa0B,EAAWC,GACrG,KAAK3B,CAAG,EAEhB,IAAIgB,EAAQO,EAAW,OAAS,OAAO,OAAO,IAAI,EAAI,KACtD,QAASK,KAAQL,GAAaP,EAAMY,EAAK,IAAI,IAAMZ,EAAMY,EAAK,IAAI,EAAI,CAAC,IAAI,KAAKA,CAAI,EAEpF,OAAOC,GAAW,CAAC1C,EAAMnB,IAAU,CACjC,IAAI8D,EAAK3C,EAAK,KAAK,GACnB,GAAI2C,GAAM/E,GAAY,OAAOsE,GAAUlC,EAAMnB,EAAOwD,CAAM,EAC1D,GAAIM,GAAM9E,GAAW,OAAOqE,GAAUlC,EAAMnB,EAAOyD,CAAK,EACxD,GAAIK,GAAM7E,GAAc,OAAOoE,GAAUlC,EAAMnB,EAAO0D,CAAQ,EAE9D,GAAII,GAAMrF,IAAWkF,EAAM,OAAQ,CACjC,IAAII,EAAI5C,EAAK,KAAM6C,EAAOD,EAAE,WAAYE,EAAUD,GAAQb,GAAYa,EAAMhE,CAAK,EAAGgD,EACpF,GAAIiB,GAAS,QAASjC,KAAO2B,EAC3B,GAAI3B,EAAI,KAAOiC,IAAY,CAACjC,EAAI,OAASA,EAAI,MAAMgB,IAAUA,EAAQF,GAASkB,EAAMhE,CAAK,EAAE,GAAI,CAC7F,IAAIuB,EAAQwC,EAAE,UACVG,EAAK3C,EAAM,KAAK,IAAMpC,GAAWoC,EAAM,KAAOwC,EAAE,GACpD,GAAIG,EAAKF,EAAK,GACZ,MAAO,CAAC,OAAQhC,EAAI,OAAQ,QAAS,CAAC,CAAC,KAAMgC,EAAK,GAAI,GAAAE,CAAE,CAAC,CAAC,CAC9D,EAEJ,CAEA,GAAIlB,GAASc,GAAMnF,GAAW,CAC5B,IAAIoF,EAAI5C,EAAK,KAAMgD,EACnB,GAAIA,EAAWJ,EAAE,WAAY,CAC3B,IAAIK,EAAUpB,EAAMhD,EAAM,KAAKmE,EAAS,KAAMA,EAAS,EAAE,CAAC,EAC1D,GAAIC,EAAS,QAASR,KAAQQ,EAAS,CACrC,GAAIR,EAAK,SAAWA,EAAK,SAAWT,GAAYY,EAAE,OAAQ/D,CAAK,EAAG,SAClE,IAAIkD,EAAQa,EAAE,UACd,GAAIb,EAAM,KAAK,IAAMrE,GAAgB,CACnC,IAAIwF,EAAOnB,EAAM,KAAO,EACpBoB,EAAOpB,EAAM,UAAWgB,EAAKhB,EAAM,IAAMoB,GAAQA,EAAK,QAAU,EAAI,GACxE,GAAIJ,EAAKG,EAAM,MAAO,CAAC,OAAQT,EAAK,OAAQ,QAAS,CAAC,CAAC,KAAAS,EAAM,GAAAH,CAAE,CAAC,EAAG,UAAW,EAAI,CACpF,SAAWhB,EAAM,KAAK,IAAMpE,GAC1B,MAAO,CAAC,OAAQ8E,EAAK,OAAQ,QAAS,CAAC,CAAC,KAAMV,EAAM,KAAM,GAAIA,EAAM,EAAE,CAAC,CAAC,CAE5E,CACF,CACF,CACA,OAAO,IACT,CAAC,CACH,CA9CSvD,EAAA2D,GAAA,oBCxST,IAAMiB,GAAS,IACbC,GAAa,IACbC,GAAS,EACTC,GAAe,EACfC,GAAc,EACdC,GAAc,EACdC,GAAa,IACbC,GAAS,IACTC,GAAU,IACVC,GAAc,EACdC,GAAe,EACfC,GAAc,EAKVC,GAAQ,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACvF,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAK,EAElDC,GAAS,IAAKC,GAAY,GAAIC,GAAQ,GAAIC,GAAO,GAAIC,GAAO,GAAIC,GAAQ,GAAIC,GAAK,GAAIC,GAAQ,GAC7FC,GAAW,GAAIC,GAAM,GAAIC,GAAW,GAEpCC,GAAe,IAAIC,GAAe,CACtC,MAAO,GACP,MAAMC,EAASC,EAAM,CACnB,OAAOA,GAAQlB,IAAekB,GAAQjB,IAAgBiB,GAAQpB,GAASmB,EAAUC,GAAQnB,EAC3F,EACA,OAAQ,EACV,CAAC,EAEKoB,GAAkB,IAAIC,GAAkB,CAACC,EAAOC,IAAU,CAC9D,GAAI,CAAC,KAAAC,CAAI,EAAIF,GACTE,GAAQnB,IAAUmB,GAAQ,IAAMD,EAAM,UACxCD,EAAM,YAAYxB,EAAU,CAChC,EAAG,CAAC,WAAY,GAAM,SAAU,EAAI,CAAC,EAE/B2B,GAAc,IAAIJ,GAAkB,CAACC,EAAOC,IAAU,CAC1D,GAAI,CAAC,KAAAC,CAAI,EAAIF,EAAOI,EAChBtB,GAAM,QAAQoB,CAAI,EAAI,IACtBA,GAAQjB,MAAWmB,EAAQJ,EAAM,KAAK,CAAC,IAAMf,IAASmB,GAASlB,KAC/DgB,GAAQnB,IAAUmB,GAAQlB,IAAakB,GAAQ,IAAM,CAACD,EAAM,SAC9DD,EAAM,YAAY9B,EAAM,CAC5B,EAAG,CAAC,WAAY,EAAI,CAAC,EAEfmC,GAAkB,IAAIN,GAAkB,CAACC,EAAOC,IAAU,CAC1DD,EAAM,MAAQP,IAAY,CAACQ,EAAM,SAASD,EAAM,YAAY7B,EAAU,CAC5E,EAAG,CAAC,WAAY,EAAI,CAAC,EAEfmC,GAAgB,IAAIP,GAAkB,CAACC,EAAOC,IAAU,CAC5D,GAAI,CAAC,KAAAC,CAAI,EAAIF,EACb,GAAIE,GAAQf,IAAQe,GAAQd,IAE1B,GADAY,EAAM,QAAQ,EACVE,GAAQF,EAAM,KAAM,CACtBA,EAAM,QAAQ,EACd,IAAIO,EAAa,CAACN,EAAM,SAAWA,EAAM,SAAS7B,EAAM,EACxD4B,EAAM,YAAYO,EAAanC,GAASC,EAAY,CACtD,OACS6B,GAAQX,IAAYS,EAAM,KAAK,CAAC,GAAKR,KAC9CQ,EAAM,QAAQ,EAAGA,EAAM,QAAQ,GAC3BA,EAAM,KAAO,IAAMA,EAAM,KAAO,KAClCA,EAAM,YAAY1B,EAAW,EAEnC,EAAG,CAAC,WAAY,EAAI,CAAC,EAErB,SAASkC,GAAeC,EAAIC,EAAO,CACjC,OAAOD,GAAM,IAAMA,GAAM,IAAMA,GAAM,IAAMA,GAAM,KAAOA,GAAM,IAAMA,GAAM,KACxE,CAACC,GAASD,GAAM,IAAMA,GAAM,EAChC,CAHSE,EAAAH,GAAA,kBAKT,IAAMI,GAAM,IAAIb,GAAkB,CAACC,EAAOC,IAAU,CAGlD,GAFID,EAAM,MAAQX,IAAM,CAACY,EAAM,eAAepB,EAAW,IACzDmB,EAAM,QAAQ,EACVA,EAAM,MAAQf,IAAO,OAGzB,IAAI4B,EAAO,EACX,KAAO/B,GAAM,QAAQkB,EAAM,IAAI,EAAI,IAAMA,EAAM,QAAQ,EAAGa,IAC1D,GAAIL,GAAeR,EAAM,KAAM,EAAI,EAAG,CAGpC,IAFAA,EAAM,QAAQ,EACda,IACOL,GAAeR,EAAM,KAAM,EAAK,GAAKA,EAAM,QAAQ,EAAGa,IAC7D,KAAO/B,GAAM,QAAQkB,EAAM,IAAI,EAAI,IAAMA,EAAM,QAAQ,EAAGa,IAC1D,GAAIb,EAAM,MAAQV,GAAO,OACzB,QAAS,EAAI,GAAI,IAAK,CACpB,GAAI,GAAK,EAAG,CACV,GAAI,CAACkB,GAAeR,EAAM,KAAM,EAAI,EAAG,OACvC,KACF,CACA,GAAIA,EAAM,MAAQ,UAAU,WAAW,CAAC,EAAG,MAC3CA,EAAM,QAAQ,EACda,GACF,CACF,CACAb,EAAM,YAAYzB,GAAa,CAACsC,CAAI,CACtC,CAAC,EAEKC,GAAcC,GAAU,CAC5B,uBAAwBC,EAAK,SAC7B,+FAAgGA,EAAK,eACrG,+DAAgEA,EAAK,gBACrE,6CAA8CA,EAAK,kBACnD,qBAAsBA,EAAK,cAC3B,oBAAqBA,EAAK,QAC1B,eAAgBA,EAAK,QAAQA,EAAK,MAAM,EACxC,MAAOA,EAAK,KACZ,eAAgBA,EAAK,KACrB,KAAMA,EAAK,KACX,KAAMA,EAAK,KACX,KAAMA,EAAK,SACX,aAAcA,EAAK,aACnB,oEAAqEA,EAAK,SAASA,EAAK,YAAY,EACpG,mBAAoBA,EAAK,WAAWA,EAAK,YAAY,EACrD,MAAOA,EAAK,UACZ,aAAcA,EAAK,aACnB,oBAAqBA,EAAK,QAAQA,EAAK,YAAY,EACnD,+CAAgDA,EAAK,SAASA,EAAK,YAAY,EAC/E,yCAA0CA,EAAK,SAASA,EAAK,WAAWA,EAAK,YAAY,CAAC,EAC1F,sCAAuCA,EAAK,WAAWA,EAAK,SAAS,EACrE,6BAA8BA,EAAK,UACnC,mBAAoBA,EAAK,WAAWA,EAAK,YAAY,EACrD,0BAA2BA,EAAK,WAAWA,EAAK,QAAQA,EAAK,YAAY,CAAC,EAC1E,SAAUA,EAAK,eACf,uBAAwBA,EAAK,YAC7B,aAAcA,EAAK,aACnB,OAAQA,EAAK,OACb,OAAQA,EAAK,OACb,OAAQA,EAAK,OACb,QAASA,EAAK,mBACd,QAASA,EAAK,cACd,MAAOA,EAAK,gBACZ,UAAWA,EAAK,gBAChB,OAAQA,EAAK,OACb,OAAQA,EAAK,mBACb,MAAOA,EAAK,SAASA,EAAK,WAAW,EACrC,WAAYA,EAAK,YACjB,MAAOA,EAAK,MACZ,MAAOA,EAAK,cACZ,MAAOA,EAAK,MACZ,sCAAuCA,EAAK,QAAQA,EAAK,KAAK,EAC9D,IAAKA,EAAK,cACV,MAAOA,EAAK,UACZ,IAAKA,EAAK,KAEV,SAAUA,EAAK,SACf,eAAgBA,EAAK,WAAWA,EAAK,QAAQ,EAC7C,0DAA2DA,EAAK,kBAChE,4CAA6CA,EAAK,SAClD,gCAAiCA,EAAK,gBAEtC,kBAAmBA,EAAK,eACxB,QAASA,EAAK,QACd,4DAA6DA,EAAK,aAClE,kCAAmCA,EAAK,QACxC,4DAA6DA,EAAK,cAClE,2BAA4BA,EAAK,SAASA,EAAK,OAAO,CACxD,CAAC,EAGKC,GAAkB,CAAC,UAAU,KAAK,OAAO,GAAI,GAAG,GAAI,KAAK,GAAI,QAAQ,GAAI,MAAM,GAAI,SAAS,GAAI,GAAG,GAAI,IAAI,GAAI,MAAM,GAAI,QAAQ,GAAI,KAAK,GAAI,KAAK,GAAI,MAAM,GAAI,KAAK,GAAI,KAAK,GAAI,OAAO,GAAI,MAAM,IAAK,IAAI,IAAK,OAAO,IAAK,MAAM,IAAK,MAAM,IAAK,MAAM,IAAK,OAAO,IAAK,QAAQ,IAAK,UAAU,IAAK,SAAS,IAAK,WAAW,IAAK,UAAU,IAAK,OAAO,IAAK,MAAM,IAAK,OAAO,IAAK,MAAM,IAAK,QAAQ,IAAK,GAAG,IAAK,SAAS,IAAK,WAAW,IAAK,KAAK,IAAK,IAAI,IAAK,IAAI,IAAK,MAAM,IAAK,UAAU,IAAK,KAAK,IAAK,UAAU,IAAK,OAAO,IAAK,QAAQ,IAAK,OAAO,IAAK,MAAM,IAAK,IAAI,IAAK,GAAG,IAAK,MAAM,IAAK,KAAK,IAAK,GAAG,IAAK,GAAG,IAAK,KAAK,IAAK,OAAO,IAAK,KAAK,IAAK,IAAI,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAO,IAAK,MAAM,IAAK,MAAM,IAAK,SAAS,IAAK,SAAS,GAAG,EACvuBC,GAAY,CAAC,UAAU,KAAK,MAAM,IAAK,IAAI,IAAK,IAAI,IAAK,QAAQ,IAAK,OAAO,IAAK,QAAQ,IAAK,UAAU,IAAK,OAAO,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,IAAI,GAAG,EACzLC,GAAgB,CAAC,UAAU,KAAK,IAAI,GAAG,EACvCC,GAASC,GAAS,YAAY,CAClC,QAAS,GACT,OAAQ,spfACR,UAAW,8ptBACX,KAAM,45aACN,UAAW,y9FACX,QAAS,IACT,QAAS3B,GACT,UAAW,CACT,CAAC,UAAW,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EACvC,CAAC,QAAS,IAAI,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,YAAY,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,aAAa,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,GAAG,GAAG,IAAI,IAAI,WAAW,EAC9X,CAAC,WAAY,GAAG,IAAI,GAAG,qBAAqB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,kBAAkB,EACvF,CAAC,WAAY,GAAG,GAAG,IAAI,IAAI,GAAG,mBAAmB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,WAAW,CACvF,EACA,YAAa,CAACoB,EAAW,EACzB,aAAc,CAAC,EAAE,EAAE,EAAE,GAAG,EACxB,gBAAiB,GACjB,UAAW,uhfACX,WAAY,CAACX,GAAaE,GAAiBC,GAAeM,GAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAId,GAAiB,IAAIwB,GAAgB,6PAA8P,IAAK,GAAG,EAAG,IAAIA,GAAgB,kCAAmC,GAAI,GAAG,CAAC,EACxd,SAAU,CAAC,OAAS,CAAC,EAAE,CAAC,EAAE,iBAAmB,CAAC,EAAE,GAAG,EAAE,gBAAkB,CAAC,EAAE,GAAG,CAAC,EAC9E,SAAU,CAAC,IAAK,EAAG,GAAI,KAAK,EAC5B,mBAAoB,CAAC,GAAK,EAAE,GAAK,EAAE,GAAK,EAAE,IAAM,EAAE,IAAM,CAAC,EACzD,YAAa,CAAC,CAAC,KAAM,IAAK,IAAKX,EAACY,GAAUN,GAAgBM,CAAK,GAAK,GAArC,MAAuC,EAAE,CAAC,KAAM,IAAK,IAAKZ,EAACY,GAAUL,GAAUK,CAAK,GAAK,GAA/B,MAAiC,EAAE,CAAC,KAAM,GAAI,IAAKZ,EAACY,GAAUJ,GAAcI,CAAK,GAAK,GAAnC,MAAqC,CAAC,EAClL,UAAW,KACb,CAAC,EClLD,IAAMC,GAAW,CACAC,GAAkB,yCAA2C,CACtE,MAAO,WACP,OAAQ,aACR,KAAM,SACV,CAAC,EACYA,GAAkB,qEAAuE,CAClG,MAAO,MACP,OAAQ,OACR,KAAM,SACV,CAAC,EACYA,GAAkB,gDAAkD,CAC7E,MAAO,MACP,OAAQ,UACR,KAAM,SACV,CAAC,EACYA,GAAkB,4BAA8B,CACzD,MAAO,KACP,OAAQ,OACR,KAAM,SACV,CAAC,EACYA,GAAkB,yBAA2B,CACtD,MAAO,QACP,OAAQ,OACR,KAAM,SACV,CAAC,EACYA,GAAkB;AAAA;AAAA;AAAA;AAAA,GAAgD,CAC3E,MAAO,MACP,OAAQ,gBACR,KAAM,SACV,CAAC,EACYA,GAAkB,sBAAwB,CACnD,MAAO,KACP,OAAQ,QACR,KAAM,SACV,CAAC,EACYA,GAAkB;AAAA;AAAA;AAAA;AAAA,GAAyC,CACpE,MAAO,KACP,OAAQ,eACR,KAAM,SACV,CAAC,EACYA,GAAkB;AAAA;AAAA;AAAA;AAAA,GAAgE,CAC3F,MAAO,QACP,OAAQ,aACR,KAAM,SACV,CAAC,EACYA,GAAkB,0CAA6C,CACxE,MAAO,SACP,OAAQ,QACR,KAAM,SACV,CAAC,EACYA,GAAkB,uCAA0C,CACrE,MAAO,SACP,OAAQ,UACR,KAAM,SACV,CAAC,CACL,EAKMC,GAAkCF,GAAS,OAAO,CACvCC,GAAkB,+BAAiC,CAC5D,MAAO,YACP,OAAQ,aACR,KAAM,SACV,CAAC,EACYA,GAAkB,yBAA0B,CACrD,MAAO,OACP,OAAQ,aACR,KAAM,SACV,CAAC,EACYA,GAAkB,0BAA4B,CACvD,MAAO,OACP,OAAQ,aACR,KAAM,SACV,CAAC,CACL,CAAC,EAEKE,GAAqB,IAAIC,GACzBC,GAA0B,IAAI,IAAI,CACpC,SAAU,QACV,qBAAsB,sBAAuB,gBAAiB,oBAC9D,cACJ,CAAC,EACD,SAASC,GAAMC,EAAM,CACjB,MAAO,CAACC,EAAMC,IAAQ,CAClB,IAAIC,EAAKF,EAAK,KAAK,SAAS,oBAAoB,EAChD,OAAIE,GACAD,EAAIC,EAAIH,CAAI,EACT,EACX,CACJ,CAPSI,EAAAL,GAAA,SAQT,IAAMM,GAAkB,CAAC,qBAAqB,EACxCC,GAAoB,CACtB,oBAAkCP,GAAM,UAAU,EAClD,iBAA+BA,GAAM,OAAO,EAC5C,gBAAiBK,EAAA,IAAM,GAAN,mBACjB,gBAA8BL,GAAM,UAAU,EAC9C,qBAAmCA,GAAM,MAAM,EAC/C,qBAAmCA,GAAM,WAAW,EACpD,mBAAmBE,EAAMC,EAAK,CAAOD,EAAK,aAAaI,EAAe,GAClEH,EAAID,EAAM,UAAU,CAAG,EAC3B,eAAeA,EAAMC,EAAK,CAAEA,EAAID,EAAM,MAAM,CAAG,EAC/C,UAAW,IACf,EACA,SAASM,GAASC,EAAKP,EAAM,CACzB,IAAIQ,EAASb,GAAM,IAAIK,CAAI,EAC3B,GAAIQ,EACA,OAAOA,EACX,IAAIC,EAAc,CAAC,EAAGC,EAAM,GAC5B,SAAST,EAAID,EAAMD,EAAM,CACrB,IAAIY,EAAOJ,EAAI,YAAYP,EAAK,KAAMA,EAAK,EAAE,EAC7CS,EAAY,KAAK,CAAE,MAAOE,EAAM,KAAAZ,CAAK,CAAC,CAC1C,CAHS,OAAAI,EAAAF,EAAA,OAITD,EAAK,OAAOY,EAAS,gBAAgB,EAAE,QAAQZ,GAAQ,CACnD,GAAIU,EACAA,EAAM,WAEDV,EAAK,KAAM,CAChB,IAAIa,EAASR,GAAkBL,EAAK,IAAI,EACxC,GAAIa,GAAUA,EAAOb,EAAMC,CAAG,GAAKJ,GAAW,IAAIG,EAAK,IAAI,EACvD,MAAO,EACf,SACSA,EAAK,GAAKA,EAAK,KAAO,KAAM,CAEjC,QAASc,KAAKR,GAASC,EAAKP,EAAK,IAAI,EACjCS,EAAY,KAAKK,CAAC,EACtB,MAAO,EACX,CACJ,CAAC,EACDnB,GAAM,IAAIK,EAAMS,CAAW,EACpBA,CACX,CA3BSN,EAAAG,GAAA,YA4BT,IAAMS,GAAa,wCACbC,GAAe,CACjB,iBAAkB,SAAU,SAC5B,cAAe,eACf,qBAAsB,iBAAkB,QACxC,qBAAsB,eACtB,4BAA6B,sBAC7B,UAAW,oBAAqB,aAAc,cAAe,oBAC7D,IAAK,IACT,EAKA,SAASC,GAAsBC,EAAS,CACpC,IAAIC,EAAQC,EAAWF,EAAQ,KAAK,EAAE,aAAaA,EAAQ,IAAK,EAAE,EAClE,GAAIF,GAAa,QAAQG,EAAM,IAAI,EAAI,GACnC,OAAO,KACX,IAAIE,EAASF,EAAM,MAAQ,gBACvBA,EAAM,GAAKA,EAAM,KAAO,IAAMJ,GAAW,KAAKG,EAAQ,MAAM,SAASC,EAAM,KAAMA,EAAM,EAAE,CAAC,EAC9F,GAAI,CAACE,GAAU,CAACH,EAAQ,SACpB,OAAO,KACX,IAAII,EAAU,CAAC,EACf,QAASC,EAAMJ,EAAOI,EAAKA,EAAMA,EAAI,OAC7B1B,GAAW,IAAI0B,EAAI,IAAI,IACvBD,EAAUA,EAAQ,OAAOhB,GAASY,EAAQ,MAAM,IAAKK,CAAG,CAAC,GAEjE,MAAO,CACH,QAAAD,EACA,KAAMD,EAASF,EAAM,KAAOD,EAAQ,IACpC,SAAUH,EACd,CACJ,CAlBSZ,EAAAc,GAAA,yBAmIT,IAAMO,GAAkCC,GAAW,OAAO,CACtD,KAAM,aACN,OAAqBC,GAAO,UAAU,CAClC,MAAO,CACUC,GAAe,IAAI,CAC5B,YAA0BC,GAAgB,CAAE,OAAQ,gBAAiB,CAAC,EACtE,aAA2BA,GAAgB,CAAE,OAAQ,2BAA4B,CAAC,EAClF,iBAAkBC,GAClB,WAAYC,EAAAC,GAAW,CACnB,IAAIC,EAAQD,EAAQ,UAAWE,EAAS,SAAS,KAAKD,CAAK,EAAGE,EAAS,uBAAuB,KAAKF,CAAK,EACxG,OAAOD,EAAQ,YAAcE,EAAS,EAAIC,EAAS,EAAI,GAAKH,EAAQ,IACxE,EAHY,cAIZ,MAAoBI,GAAgB,CAAE,QAAS,GAAI,CAAC,EACpD,cAAeL,EAAAM,GAAMA,EAAG,WAAaA,EAAG,KAAzB,iBACf,8BAA+BN,EAAA,IAAM,KAAN,+BAC/B,qBAAmCF,GAAgB,CAAE,OAAQ,OAAQ,CAAC,EACtE,WAAWG,EAAS,CAChB,IAAIE,EAAS,UAAU,KAAKF,EAAQ,SAAS,EAC7C,OAAOA,EAAQ,WAAWA,EAAQ,KAAK,IAAI,GAAKE,EAAS,EAAIF,EAAQ,KACzE,EACA,UAAUA,EAAS,CACf,IAAIE,EAAS,QAAQ,KAAKF,EAAQ,SAAS,EAC3C,OAAOA,EAAQ,WAAWA,EAAQ,KAAK,IAAI,GAAKE,EAAS,EAAIF,EAAQ,KACzE,EACA,+BAA+BA,EAAS,CACpC,OAAOA,EAAQ,OAAOA,EAAQ,KAAK,IAAI,EAAIA,EAAQ,IACvD,CACJ,CAAC,EACYM,GAAa,IAAI,CAC1B,kFAAmFC,GACnF,aAAaC,EAAM,CAAE,MAAO,CAAE,KAAMA,EAAK,KAAO,EAAG,GAAIA,EAAK,GAAK,CAAE,CAAG,EACtE,WAAWA,EAAM,CACb,IAAIC,EAAOD,EAAK,WAChB,GAAI,CAACC,GAAQA,EAAK,MAAQ,oBACtB,OAAO,KACX,IAAIC,EAAQF,EAAK,UACjB,MAAO,CAAE,KAAMC,EAAK,GAAI,GAAIC,EAAM,KAAK,QAAUF,EAAK,GAAKE,EAAM,IAAK,CAC1E,EACA,+BAA+BF,EAAM,CACjC,IAAIG,EACJ,IAAIC,GAAQD,EAAKH,EAAK,cAAgB,MAAQG,IAAO,OAAS,OAASA,EAAG,YAAaD,EAAQF,EAAK,UACpG,MAAI,CAACI,GAAQA,EAAK,KAAK,QACZ,KACJ,CAAE,KAAMA,EAAK,GAAI,GAAIF,EAAM,KAAK,QAAUF,EAAK,GAAKE,EAAM,IAAK,CAC1E,CACJ,CAAC,CACL,CACJ,CAAC,EACD,aAAc,CACV,cAAe,CAAE,SAAU,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,CAAE,EAC1D,cAAe,CAAE,KAAM,KAAM,MAAO,CAAE,KAAM,KAAM,MAAO,IAAK,CAAE,EAChE,cAAe,oCACf,UAAW,GACf,CACJ,CAAC,EACKG,GAAiB,CACnB,KAAMd,EAAAe,GAAQ,OAAO,KAAKA,EAAK,IAAI,EAA7B,QACN,MAAoBC,GAAoB,CAAE,cAAe,CAAE,MAAO,CAAE,KAAM,MAAO,MAAO,KAAM,CAAE,CAAE,CAAC,CACvG,EAIMC,GAAkCvB,GAAmB,UAAU,CAAE,QAAS,IAAK,EAAG,YAAY,EAI9FwB,GAA2BxB,GAAmB,UAAU,CAC1D,QAAS,MACT,MAAO,CAAcyB,GAAgB,IAAI,GAAK,EAAE,MAAQ,CAACL,EAAc,EAAI,MAAS,CAAC,CACzF,CAAC,EAIKM,GAA2B1B,GAAmB,UAAU,CAC1D,QAAS,SACT,MAAO,CAAcyB,GAAgB,IAAI,GAAK,EAAE,MAAQ,CAACL,EAAc,EAAI,MAAS,CAAC,CACzF,EAAG,YAAY,EACXO,GAAerB,EAACa,IAAU,CAAE,MAAOA,EAAM,KAAM,SAAU,GAA1C,gBACbS,GAAwB,0JAA0J,MAAM,GAAG,EAAE,IAAID,EAAY,EAC7ME,GAAkCD,GAAS,OAAoB,CAAC,UAAW,aAAc,UAAW,YAAa,QAAQ,EAAE,IAAID,EAAY,CAAC,EAKlJ,SAASG,GAAWC,EAAS,CAAC,EAAG,CAC7B,IAAIC,EAAOD,EAAO,IAAOA,EAAO,WAAaL,GAAcF,GACrDO,EAAO,WAAaR,GAAqBvB,GAC3CiC,EAAcF,EAAO,WAAaG,GAAmB,OAAOL,EAAkB,EAAIM,GAAS,OAAOP,EAAQ,EAC9G,OAAO,IAAIQ,GAAgBJ,EAAM,CAC7BhC,GAAmB,KAAK,GAAG,CACvB,aAAcqC,GAAQC,GAAcC,GAAiBN,CAAW,CAAC,CACrE,CAAC,EACDjC,GAAmB,KAAK,GAAG,CACvB,aAAcwC,EAClB,CAAC,EACDT,EAAO,IAAMU,GAAgB,CAAC,CAClC,CAAC,CACL,CAbSnC,EAAAwB,GAAA,cAcT,SAASY,GAAYrB,EAAM,CACvB,OAAS,CACL,GAAIA,EAAK,MAAQ,cAAgBA,EAAK,MAAQ,qBAAuBA,EAAK,MAAQ,iBAC9E,OAAOA,EACX,GAAIA,EAAK,MAAQ,aAAe,CAACA,EAAK,OAClC,OAAO,KACXA,EAAOA,EAAK,MAChB,CACJ,CARSf,EAAAoC,GAAA,eAST,SAASC,GAAYC,EAAK7B,EAAM8B,EAAMD,EAAI,OAAQ,CAC9C,QAASE,EAAiD/B,GAAK,WAAY+B,EAAIA,EAAKA,EAAG,YACnF,GAAIA,EAAG,MAAQ,iBAAmBA,EAAG,MAAQ,cAAgBA,EAAG,MAAQ,qBACpEA,EAAG,MAAQ,sBACX,OAAOF,EAAI,YAAYE,EAAG,KAAM,KAAK,IAAIA,EAAG,GAAID,CAAG,CAAC,EAE5D,MAAO,EACX,CAPSvC,EAAAqC,GAAA,eAQT,IAAMI,GAAU,OAAO,WAAa,UAAyB,YAAY,KAAK,UAAU,SAAS,EAK3FN,GAA6BO,EAAW,aAAa,GAAG,CAACC,EAAMC,EAAMC,EAAIC,EAAMC,IAAkB,CACnG,IAAKN,GAAUE,EAAK,UAAYA,EAAK,qBAAuBA,EAAK,MAAM,UACnEC,GAAQC,GAAOC,GAAQ,KAAOA,GAAQ,KACtC,CAACpD,GAAmB,WAAWiD,EAAK,MAAOC,EAAM,EAAE,EACnD,MAAO,GACX,IAAII,EAAOD,EAAc,EAAG,CAAE,MAAAE,CAAM,EAAID,EACpCE,EAAYD,EAAM,cAAcE,GAAS,CACzC,IAAIvC,EACJ,GAAI,CAAE,KAAAwC,CAAK,EAAID,EAAOE,EAASC,EAAWL,CAAK,EAAE,aAAaG,EAAO,EAAG,EAAE,EAAGvC,EAG7E,GAFIwC,EAAO,MAAQ,gBACfA,EAASA,EAAO,QAChB,EAAAJ,EAAM,IAAI,YAAYG,EAAO,EAAGA,CAAI,GAAKN,GAAQO,EAAO,MAAQ,qBAAuBA,EAAO,GAAKD,GAClG,IAAIN,GAAQ,KAAOO,EAAO,MAAQ,iBACnC,MAAO,CAAE,MAAAF,EAAO,QAAS,CAAE,KAAMC,EAAM,OAAQ,KAAM,CAAE,EAEtD,GAAIN,GAAQ,KAAOO,EAAO,MAAQ,mBAAoB,CACvD,IAAIE,EAAQF,EAAO,OAAQL,EAAOO,EAAM,OACxC,GAAIP,GAAQO,EAAM,MAAQH,EAAO,KAC3BvC,EAAOwB,GAAYY,EAAM,IAAKD,EAAK,WAAYI,CAAI,MAAQxC,EAAKoC,EAAK,cAAgB,MAAQpC,IAAO,OAAS,OAASA,EAAG,OAAS,kBAAmB,CACvJ,IAAI4C,EAAS,GAAG3C,CAAI,IACpB,MAAO,CAAE,MAAO4C,EAAgB,OAAOL,EAAOI,EAAO,OAAQ,EAAE,EAAG,QAAS,CAAE,KAAMJ,EAAM,OAAAI,CAAO,CAAE,CACtG,CACJ,SACSV,GAAQ,IAAK,CAClB,IAAIY,EAAUtB,GAAYiB,CAAM,EAChC,GAAIK,GAAWA,EAAQ,MAAQ,cAC3B,CAAC,aAAa,KAAKT,EAAM,IAAI,YAAYG,EAAMA,EAAO,CAAC,CAAC,IACvDvC,EAAOwB,GAAYY,EAAM,IAAKS,EAASN,CAAI,GAC5C,MAAO,CAAE,MAAAD,EAAO,QAAS,CAAE,KAAMC,EAAM,OAAQ,KAAKvC,CAAI,GAAI,CAAE,CACtE,EACA,MAAO,CAAE,MAAAsC,CAAM,CACnB,CAAC,EACD,OAAID,EAAU,QAAQ,MACX,IACXP,EAAK,SAAS,CACVK,EACAC,EAAM,OAAOC,EAAW,CAAE,UAAW,iBAAkB,eAAgB,EAAK,CAAC,CACjF,CAAC,EACM,GACX,CAAC,EC1bD,IAAMS,GAAU,CAAC,SAAU,QAAS,OAAQ,SAAS,EAC/CC,GAAW,CAAC,QAAS,QAAS,SAAU,SAAU,QAAQ,EAC1DC,GAAU,CAAC,MAAO,OAAQ,MAAO,QAAQ,EACzCC,GAAO,CAAC,oCAAqC,sBAAuB,YAAY,EAChFC,GAAO,CAAC,OAAQ,OAAO,EACvBC,EAAI,CAAC,EACLC,GAAO,CACT,EAAG,CACC,MAAO,CACH,KAAM,KAAM,KAAM,KAAM,KAAM,KAC9B,MAAO,KACP,OAAQN,GACR,SAAU,IACd,CACJ,EACA,KAAMK,EACN,QAASA,EACT,KAAM,CACF,MAAO,CACH,IAAK,KAAM,OAAQ,KAAM,KAAM,KAAM,OAAQ,KAAM,KAAM,KACzD,MAAO,KAAM,SAAU,KAAM,KAAM,KACnC,MAAO,CAAC,UAAW,OAAQ,SAAU,MAAM,CAC/C,CACJ,EACA,QAASA,EACT,MAAOA,EACP,MAAO,CACH,MAAO,CACH,IAAK,KAAM,WAAY,KACvB,YAAa,CAAC,YAAa,iBAAiB,EAC5C,QAAS,CAAC,OAAQ,WAAY,MAAM,EACpC,SAAU,CAAC,UAAU,EACrB,KAAM,CAAC,MAAM,EACb,SAAU,CAAC,UAAU,CACzB,CACJ,EACA,EAAGA,EACH,KAAM,CAAE,MAAO,CAAE,KAAM,KAAM,OAAQL,EAAQ,CAAE,EAC/C,IAAKK,EACL,IAAKA,EACL,WAAY,CAAE,MAAO,CAAE,KAAM,IAAK,CAAE,EACpC,KAAMA,EACN,GAAIA,EACJ,OAAQ,CACJ,MAAO,CACH,KAAM,KAAM,WAAY,KAAM,KAAM,KAAM,MAAO,KACjD,UAAW,CAAC,WAAW,EACvB,SAAU,CAAC,WAAW,EACtB,YAAaF,GACb,WAAYD,GACZ,eAAgB,CAAC,YAAY,EAC7B,WAAYF,GACZ,KAAM,CAAC,SAAU,QAAS,QAAQ,CACtC,CACJ,EACA,OAAQ,CAAE,MAAO,CAAE,MAAO,KAAM,OAAQ,IAAK,CAAE,EAC/C,QAASK,EACT,OAAQA,EACR,KAAMA,EACN,KAAMA,EACN,IAAK,CAAE,MAAO,CAAE,KAAM,IAAK,CAAE,EAC7B,SAAU,CAAE,MAAO,CAAE,KAAM,IAAK,CAAE,EAClC,QAAS,CACL,MAAO,CACH,KAAM,CAAC,UAAW,WAAY,OAAO,EACrC,MAAO,KAAM,KAAM,KAAM,WAAY,KAAM,QAAS,KAAM,MAAO,KACjE,SAAU,CAAC,UAAU,EACrB,QAAS,CAAC,SAAS,CACvB,CACJ,EACA,KAAM,CAAE,MAAO,CAAE,MAAO,IAAK,CAAE,EAC/B,SAAU,CAAE,MAAO,CAAE,SAAU,CAAC,UAAU,EAAG,SAAU,CAAC,UAAU,CAAE,CAAE,EACtE,SAAU,CAAE,MAAO,CAAE,KAAM,IAAK,CAAE,EAClC,GAAIA,EACJ,IAAK,CAAE,MAAO,CAAE,KAAM,KAAM,SAAU,IAAK,CAAE,EAC7C,QAAS,CAAE,MAAO,CAAE,KAAM,CAAC,MAAM,CAAE,CAAE,EACrC,IAAKA,EACL,IAAKA,EACL,GAAIA,EACJ,GAAIA,EACJ,GAAIA,EACJ,MAAO,CAAE,MAAO,CAAE,IAAK,KAAM,KAAM,KAAM,MAAO,KAAM,OAAQ,IAAK,CAAE,EACrE,YAAa,CAAE,MAAO,CAAE,IAAK,IAAK,CAAE,EACpC,SAAU,CAAE,MAAO,CAAE,SAAU,CAAC,UAAU,EAAG,KAAM,KAAM,KAAM,IAAK,CAAE,EACtE,WAAYA,EACZ,OAAQA,EACR,OAAQA,EACR,KAAM,CACF,MAAO,CACH,OAAQ,KAAM,KAAM,KACpB,iBAAkBJ,GAClB,aAAc,CAAC,KAAM,KAAK,EAC1B,QAASE,GACT,OAAQD,GACR,WAAY,CAAC,YAAY,EACzB,OAAQF,EACZ,CACJ,EACA,GAAIK,EAAG,GAAIA,EAAG,GAAIA,EAAG,GAAIA,EAAG,GAAIA,EAAG,GAAIA,EACvC,KAAM,CACF,SAAU,CAAC,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAAU,WAAY,SAAS,CACxF,EACA,OAAQA,EACR,OAAQA,EACR,GAAIA,EACJ,KAAM,CACF,MAAO,CAAE,SAAU,IAAK,CAC5B,EACA,EAAGA,EACH,OAAQ,CACJ,MAAO,CACH,IAAK,KAAM,OAAQ,KAAM,KAAM,KAAM,MAAO,KAAM,OAAQ,KAC1D,QAAS,CAAC,uBAAwB,oBAAqB,cAAe,eAAe,EACrF,SAAU,CAAC,UAAU,CACzB,CACJ,EACA,IAAK,CACD,MAAO,CACH,IAAK,KAAM,IAAK,KAAM,MAAO,KAAM,OAAQ,KAAM,MAAO,KAAM,OAAQ,KACtE,YAAa,CAAC,YAAa,iBAAiB,CAChD,CACJ,EACA,MAAO,CACH,MAAO,CACH,IAAK,KAAM,QAAS,KAAM,KAAM,KAAM,WAAY,KAClD,OAAQ,KAAM,KAAM,KAAM,IAAK,KAAM,UAAW,KAAM,IAAK,KAC3D,KAAM,KAAM,QAAS,KAAM,YAAa,KAAM,KAAM,KAAM,IAAK,KAC/D,KAAM,KAAM,MAAO,KAAM,MAAO,KAChC,OAAQ,CAAC,UAAW,UAAW,SAAS,EACxC,aAAc,CAAC,KAAM,KAAK,EAC1B,UAAW,CAAC,WAAW,EACvB,QAAS,CAAC,SAAS,EACnB,SAAU,CAAC,UAAU,EACrB,YAAaF,GACb,WAAYD,GACZ,eAAgB,CAAC,YAAY,EAC7B,WAAYF,GACZ,SAAU,CAAC,UAAU,EACrB,SAAU,CAAC,UAAU,EACrB,SAAU,CAAC,UAAU,EACrB,KAAM,CAAC,SAAU,OAAQ,SAAU,MAAO,MAAO,QAAS,WAAY,WAAY,OAAQ,QACtF,OAAQ,OAAQ,iBAAkB,SAAU,QAAS,QAAS,WAAY,QAC1E,OAAQ,SAAU,QAAS,QAAS,QAAQ,CACpD,CACJ,EACA,IAAK,CAAE,MAAO,CAAE,KAAM,KAAM,SAAU,IAAK,CAAE,EAC7C,IAAKK,EACL,OAAQ,CACJ,MAAO,CACH,UAAW,KAAM,KAAM,KAAM,KAAM,KACnC,UAAW,CAAC,WAAW,EACvB,SAAU,CAAC,UAAU,EACrB,QAAS,CAAC,KAAK,CACnB,CACJ,EACA,MAAO,CAAE,MAAO,CAAE,IAAK,KAAM,KAAM,IAAK,CAAE,EAC1C,OAAQA,EACR,GAAI,CAAE,MAAO,CAAE,MAAO,IAAK,CAAE,EAC7B,KAAM,CACF,MAAO,CACH,KAAM,KAAM,KAAM,KAClB,SAAU,KACV,MAAO,KACP,MAAO,CAAC,MAAO,QAAS,cAAe,mBAAmB,CAC9D,CACJ,EACA,IAAK,CAAE,MAAO,CAAE,KAAM,IAAK,CAAE,EAC7B,KAAMA,EACN,KAAM,CAAE,MAAO,CAAE,MAAO,KAAM,KAAM,CAAC,OAAQ,UAAW,SAAS,CAAE,CAAE,EACrE,KAAM,CACF,MAAO,CACH,QAAS,KACT,QAASJ,GACT,KAAM,CAAC,WAAY,mBAAoB,SAAU,cAAe,YAAa,UAAU,EACvF,aAAc,CAAC,mBAAoB,eAAgB,gBAAiB,SAAS,CACjF,CACJ,EACA,MAAO,CAAE,MAAO,CAAE,MAAO,KAAM,IAAK,KAAM,IAAK,KAAM,KAAM,KAAM,IAAK,KAAM,QAAS,IAAK,CAAE,EAC5F,IAAKI,EACL,SAAUA,EACV,OAAQ,CACJ,MAAO,CACH,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAAQ,KAAM,KAAM,KAAM,MAAO,KAAM,OAAQ,KACnF,cAAe,CAAC,eAAe,CACnC,CACJ,EACA,GAAI,CAAE,MAAO,CAAE,SAAU,CAAC,UAAU,EAAG,MAAO,KAAM,KAAM,CAAC,IAAK,IAAK,IAAK,IAAK,GAAG,CAAE,EAChF,SAAU,CAAC,KAAM,SAAU,WAAY,KAAM,IAAI,CAAE,EACvD,SAAU,CAAE,MAAO,CAAE,SAAU,CAAC,UAAU,EAAG,MAAO,IAAK,CAAE,EAC3D,OAAQ,CAAE,MAAO,CAAE,SAAU,CAAC,UAAU,EAAG,MAAO,KAAM,SAAU,CAAC,UAAU,EAAG,MAAO,IAAK,CAAE,EAC9F,OAAQ,CAAE,MAAO,CAAE,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,CAAE,EACvD,EAAGA,EACH,MAAO,CAAE,MAAO,CAAE,KAAM,KAAM,MAAO,IAAK,CAAE,EAC5C,IAAKA,EACL,SAAU,CAAE,MAAO,CAAE,MAAO,KAAM,IAAK,IAAK,CAAE,EAC9C,EAAG,CAAE,MAAO,CAAE,KAAM,IAAK,CAAE,EAC3B,GAAIA,EACJ,GAAIA,EACJ,KAAMA,EACN,KAAMA,EACN,OAAQ,CACJ,MAAO,CACH,KAAM,CAAC,iBAAiB,EACxB,IAAK,KACL,MAAO,CAAC,OAAO,EACf,MAAO,CAAC,OAAO,EACf,QAASJ,EACb,CACJ,EACA,QAASI,EACT,OAAQ,CACJ,MAAO,CACH,KAAM,KAAM,KAAM,KAAM,KAAM,KAC9B,UAAW,CAAC,WAAW,EACvB,SAAU,CAAC,UAAU,EACrB,SAAU,CAAC,UAAU,CACzB,CACJ,EACA,KAAM,CAAE,MAAO,CAAE,KAAM,IAAK,CAAE,EAC9B,MAAOA,EACP,OAAQ,CAAE,MAAO,CAAE,IAAK,KAAM,KAAM,KAAM,MAAO,IAAK,CAAE,EACxD,KAAMA,EACN,OAAQA,EACR,MAAO,CACH,MAAO,CACH,KAAM,CAAC,UAAU,EACjB,MAAO,KACP,OAAQ,IACZ,CACJ,EACA,IAAKA,EACL,QAASA,EACT,IAAKA,EACL,MAAOA,EACP,MAAOA,EACP,GAAI,CAAE,MAAO,CAAE,QAAS,KAAM,QAAS,KAAM,QAAS,IAAK,CAAE,EAC7D,SAAUA,EACV,SAAU,CACN,MAAO,CACH,QAAS,KAAM,KAAM,KAAM,UAAW,KAAM,KAAM,KAAM,YAAa,KACrE,KAAM,KAAM,KAAM,KAClB,UAAW,CAAC,WAAW,EACvB,SAAU,CAAC,UAAU,EACrB,SAAU,CAAC,UAAU,EACrB,SAAU,CAAC,UAAU,EACrB,KAAM,CAAC,OAAQ,MAAM,CACzB,CACJ,EACA,MAAOA,EACP,GAAI,CAAE,MAAO,CAAE,QAAS,KAAM,QAAS,KAAM,QAAS,KAAM,MAAO,CAAC,MAAO,MAAO,WAAY,UAAU,CAAE,CAAE,EAC5G,MAAOA,EACP,KAAM,CAAE,MAAO,CAAE,SAAU,IAAK,CAAE,EAClC,MAAOA,EACP,GAAIA,EACJ,MAAO,CACH,MAAO,CACH,IAAK,KAAM,MAAO,KAAM,QAAS,KACjC,KAAM,CAAC,YAAa,WAAY,eAAgB,WAAY,UAAU,EACtE,QAAS,IACb,CACJ,EACA,GAAI,CAAE,SAAU,CAAC,KAAM,SAAU,WAAY,KAAM,IAAI,CAAE,EACzD,IAAKA,EACL,MAAO,CACH,MAAO,CACH,IAAK,KAAM,OAAQ,KAAM,MAAO,KAAM,OAAQ,KAC9C,YAAa,CAAC,YAAa,iBAAiB,EAC5C,QAAS,CAAC,OAAQ,WAAY,MAAM,EACpC,SAAU,CAAC,UAAU,EACrB,WAAY,CAAC,OAAO,EACpB,MAAO,CAAC,OAAO,EACf,SAAU,CAAC,UAAU,CACzB,CACJ,EACA,IAAKA,CACT,EACME,GAAc,CAChB,UAAW,KACX,MAAO,KACP,gBAAiBH,GACjB,YAAa,KACb,IAAK,CAAC,MAAO,MAAO,MAAM,EAC1B,UAAW,CAAC,OAAQ,QAAS,MAAM,EACnC,SAAU,CAAC,OAAQ,OAAQ,OAAQ,UAAW,OAAO,EACrD,OAAQ,CAAC,QAAQ,EACjB,GAAI,KACJ,MAAO,CAAC,OAAO,EACf,OAAQ,KACR,SAAU,KACV,QAAS,KACT,UAAW,CAAC,WAAW,EACvB,SAAU,KACV,KAAM,CAAC,KAAM,KAAM,KAAM,QAAS,QAAS,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACrG,WAAYA,GACZ,YAAaA,GACb,eAAgBA,GAChB,MAAO,KACP,SAAU,KACV,MAAO,KACP,UAAW,CAAC,MAAO,IAAI,EACvB,IAAK,CAAC,aAAc,YAAa,SAAU,WAAY,OAAQ,UAAW,OAAQ,WAAY,aAAc,WAAY,OAAQ,SAAU,KAAK,EAC/I,KAAmB,sPAAsP,MAAM,GAAG,EAClR,wBAAyB,KACzB,cAAeA,GACf,oBAAqB,CAAC,SAAU,OAAQ,OAAQ,MAAM,EACtD,YAAaA,GACb,eAAgB,CAAC,OAAQ,QAAS,QAAS,WAAW,EACtD,gBAAiB,KACjB,mBAAoB,KACpB,gBAAiBA,GACjB,kBAAmB,KACnB,gBAAiB,CAAC,OAAQ,QAAS,WAAW,EAC9C,cAAe,KACf,eAAgB,CAAC,OAAQ,QAAS,WAAW,EAC7C,gBAAiBA,GACjB,cAAeA,GACf,eAAgB,CAAC,OAAQ,QAAS,UAAW,UAAU,EACvD,aAAc,KACd,kBAAmB,KACnB,aAAc,KACd,YAAa,CAAC,MAAO,SAAU,WAAW,EAC1C,iBAAkBA,GAClB,uBAAwBA,GACxB,YAAa,KACb,gBAAiB,KACjB,eAAgB,CAAC,OAAQ,QAAS,QAAS,WAAW,EACtD,gBAAiBA,GACjB,gBAAiB,KACjB,gBAAiBA,GACjB,gBAAiB,CAAC,OAAQ,QAAS,WAAW,EAC9C,eAAgB,KAChB,YAAa,CAAC,YAAa,aAAc,OAAQ,OAAO,EACxD,gBAAiB,KACjB,gBAAiB,KACjB,gBAAiB,KACjB,iBAAkB,IACtB,EACMI,GAAgC,0LAEY,MAAM,GAAG,EAAE,IAAI,GAAK,KAAO,CAAC,EAC9E,QAASC,KAAKD,GACVD,GAAYE,CAAC,EAAI,KACrB,IAAMC,GAAN,KAAa,CA7Vb,MA6Va,CAAAC,EAAA,eACT,YAAYC,EAAWC,EAAY,CAC/B,KAAK,KAAO,CAAE,GAAGP,GAAM,GAAGM,CAAU,EACpC,KAAK,YAAc,CAAE,GAAGL,GAAa,GAAGM,CAAW,EACnD,KAAK,QAAU,OAAO,KAAK,KAAK,IAAI,EACpC,KAAK,gBAAkB,OAAO,KAAK,KAAK,WAAW,CACvD,CACJ,EACAH,GAAO,QAAuB,IAAIA,GAClC,SAASI,GAAYC,EAAKC,EAAMC,EAAMF,EAAI,OAAQ,CAC9C,GAAI,CAACC,EACD,MAAO,GACX,IAAIE,EAAMF,EAAK,WACXG,EAAOD,GAAOA,EAAI,SAAS,SAAS,EACxC,OAAOC,EAAOJ,EAAI,YAAYI,EAAK,KAAM,KAAK,IAAIA,EAAK,GAAIF,CAAG,CAAC,EAAI,EACvE,CANSN,EAAAG,GAAA,eAOT,SAASM,GAAkBJ,EAAMK,EAAO,GAAO,CAC3C,KAAOL,EAAMA,EAAOA,EAAK,OACrB,GAAIA,EAAK,MAAQ,UACb,GAAIK,EACAA,EAAO,OAEP,QAAOL,EAEnB,OAAO,IACX,CATSL,EAAAS,GAAA,qBAUT,SAASE,GAAgBP,EAAKC,EAAMO,EAAQ,CACxC,IAAIC,EAAaD,EAAO,KAAKT,GAAYC,EAAKK,GAAkBJ,CAAI,CAAC,CAAC,EACtE,OAAgEQ,GAAW,UAAaD,EAAO,OACnG,CAHSZ,EAAAW,GAAA,mBAIT,SAASG,GAASV,EAAKC,EAAM,CACzB,IAAIU,EAAO,CAAC,EACZ,QAASC,EAASP,GAAkBJ,CAAI,EAAGW,GAAU,CAACA,EAAO,KAAK,MAAOA,EAASP,GAAkBO,EAAO,MAAM,EAAG,CAChH,IAAIC,EAAUd,GAAYC,EAAKY,CAAM,EACrC,GAAIC,GAAWD,EAAO,UAAU,MAAQ,WACpC,MACAC,GAAWF,EAAK,QAAQE,CAAO,EAAI,IAAMZ,EAAK,MAAQ,UAAYA,EAAK,MAAQW,EAAO,WAAW,KACjGD,EAAK,KAAKE,CAAO,CACzB,CACA,OAAOF,CACX,CAVSf,EAAAc,GAAA,YAWT,IAAMI,GAAa,4BACnB,SAASC,GAAYC,EAAOR,EAAQP,EAAMgB,EAAMC,EAAI,CAChD,IAAIC,EAAM,OAAO,KAAKH,EAAM,SAASE,EAAIA,EAAK,CAAC,CAAC,EAAI,GAAK,IACrDN,EAASP,GAAkBJ,EAAMA,EAAK,MAAQ,YAAcA,EAAK,MAAQ,SAAS,EACtF,MAAO,CAAE,KAAAgB,EAAM,GAAAC,EACX,QAASX,GAAgBS,EAAM,IAAKJ,EAAQJ,CAAM,EAAE,IAAIK,IAAY,CAAE,MAAOA,EAAS,KAAM,MAAO,EAAE,EAAE,OAAOH,GAASM,EAAM,IAAKf,CAAI,EAAE,IAAI,CAACE,EAAKiB,KAAO,CAAE,MAAO,IAAMjB,EAAK,MAAO,IAAMA,EAAMgB,EAC5L,KAAM,OAAQ,MAAO,GAAKC,CAAE,EAAE,CAAC,EACnC,SAAU,8BAA+B,CACjD,CAPSxB,EAAAmB,GAAA,eAQT,SAASM,GAAiBL,EAAOf,EAAMgB,EAAMC,EAAI,CAC7C,IAAIC,EAAM,OAAO,KAAKH,EAAM,SAASE,EAAIA,EAAK,CAAC,CAAC,EAAI,GAAK,IACzD,MAAO,CAAE,KAAAD,EAAM,GAAAC,EACX,QAASR,GAASM,EAAM,IAAKf,CAAI,EAAE,IAAI,CAACE,EAAKiB,KAAO,CAAE,MAAOjB,EAAK,MAAOA,EAAMgB,EAAK,KAAM,OAAQ,MAAO,GAAKC,CAAE,EAAE,EAClH,SAAUN,EAAW,CAC7B,CALSlB,EAAAyB,GAAA,oBAMT,SAASC,GAAiBN,EAAOR,EAAQP,EAAMsB,EAAK,CAChD,IAAIC,EAAU,CAAC,EAAGC,EAAQ,EAC1B,QAASZ,KAAWN,GAAgBS,EAAM,IAAKf,EAAMO,CAAM,EACvDgB,EAAQ,KAAK,CAAE,MAAO,IAAMX,EAAS,KAAM,MAAO,CAAC,EACvD,QAASF,KAAQD,GAASM,EAAM,IAAKf,CAAI,EACrCuB,EAAQ,KAAK,CAAE,MAAO,KAAOb,EAAO,IAAK,KAAM,OAAQ,MAAO,GAAKc,GAAQ,CAAC,EAChF,MAAO,CAAE,KAAMF,EAAK,GAAIA,EAAK,QAAAC,EAAS,SAAU,+BAAgC,CACpF,CAPS5B,EAAA0B,GAAA,oBAQT,SAASI,GAAiBV,EAAOR,EAAQP,EAAMgB,EAAMC,EAAI,CACrD,IAAIS,EAAMtB,GAAkBJ,CAAI,EAAG2B,EAAOD,EAAMnB,EAAO,KAAKT,GAAYiB,EAAM,IAAKW,CAAG,CAAC,EAAI,KACvFE,EAAaD,GAAQA,EAAK,MAAQ,OAAO,KAAKA,EAAK,KAAK,EAAI,CAAC,EAC7DE,EAAQF,GAAQA,EAAK,cAAgB,GAAQC,EAC3CA,EAAW,OAASA,EAAW,OAAOrB,EAAO,eAAe,EAAIA,EAAO,gBAC7E,MAAO,CAAE,KAAAS,EAAM,GAAAC,EACX,QAASY,EAAM,IAAIC,IAAa,CAAE,MAAOA,EAAU,KAAM,UAAW,EAAE,EACtE,SAAUjB,EAAW,CAC7B,CARSlB,EAAA8B,GAAA,oBAST,SAASM,GAAkBhB,EAAOR,EAAQP,EAAMgB,EAAMC,EAAI,CACtD,IAAIe,EACJ,IAAIC,GAAYD,EAAKhC,EAAK,UAAY,MAAQgC,IAAO,OAAS,OAASA,EAAG,SAAS,eAAe,EAC9FT,EAAU,CAAC,EAAGW,EAClB,GAAID,EAAU,CACV,IAAIH,EAAWf,EAAM,SAASkB,EAAS,KAAMA,EAAS,EAAE,EACpDE,EAAQ5B,EAAO,YAAYuB,CAAQ,EACvC,GAAI,CAACK,EAAO,CACR,IAAIT,EAAMtB,GAAkBJ,CAAI,EAAG2B,EAAOD,EAAMnB,EAAO,KAAKT,GAAYiB,EAAM,IAAKW,CAAG,CAAC,EAAI,KAC3FS,EAAqDR,GAAK,OAAUA,EAAK,MAAMG,CAAQ,CAC3F,CACA,GAAIK,EAAO,CACP,IAAIC,EAAOrB,EAAM,SAASC,EAAMC,CAAE,EAAE,YAAY,EAAGoB,EAAa,IAAKC,EAAW,IAC5E,QAAQ,KAAKF,CAAI,GACjBF,EAAQE,EAAK,CAAC,GAAK,IAAM,UAAY,UACrCC,EAAa,GACbC,EAAWvB,EAAM,SAASE,EAAIA,EAAK,CAAC,GAAKmB,EAAK,CAAC,EAAI,GAAKA,EAAK,CAAC,EAC9DA,EAAOA,EAAK,MAAM,CAAC,EACnBpB,KAGAkB,EAAQ,gBAEZ,QAASK,KAASJ,EACdZ,EAAQ,KAAK,CAAE,MAAOgB,EAAO,MAAOF,EAAaE,EAAQD,EAAU,KAAM,UAAW,CAAC,CAC7F,CACJ,CACA,MAAO,CAAE,KAAAtB,EAAM,GAAAC,EAAI,QAAAM,EAAS,SAAUW,CAAM,CAChD,CA5BSvC,EAAAoC,GAAA,qBA6BT,SAASS,GAAkBjC,EAAQkC,EAAS,CACxC,GAAI,CAAE,MAAA1B,EAAO,IAAAO,CAAI,EAAImB,EAASzC,EAAO0C,EAAW3B,CAAK,EAAE,aAAaO,EAAK,EAAE,EAAGqB,EAAS3C,EAAK,QAAQsB,CAAG,EACvG,QAASsB,EAAOtB,EAAKuB,EAAQF,GAAU3C,IAAS6C,EAAS7C,EAAK,YAAY4C,CAAI,IAAK,CAC/E,IAAIE,EAAOD,EAAO,UAClB,GAAI,CAACC,GAAQ,CAACA,EAAK,KAAK,SAAWA,EAAK,KAAOA,EAAK,GAChD,MACJH,EAAS3C,EAAO6C,EAChBD,EAAOE,EAAK,IAChB,CACA,OAAI9C,EAAK,MAAQ,UACNA,EAAK,QAAU,YAAY,KAAKA,EAAK,OAAO,IAAI,EAAIoB,GAAiBL,EAAOf,EAAMA,EAAK,KAAMsB,CAAG,EACjGR,GAAYC,EAAOR,EAAQP,EAAMA,EAAK,KAAMsB,CAAG,EAEhDtB,EAAK,MAAQ,YAAcA,EAAK,MAAQ,gBACtCc,GAAYC,EAAOR,EAAQP,EAAMsB,EAAKA,CAAG,EAE3CtB,EAAK,MAAQ,iBAAmBA,EAAK,MAAQ,qBAC3CoB,GAAiBL,EAAOf,EAAMsB,EAAKA,CAAG,EAExCtB,EAAK,MAAQ,WAAaA,EAAK,MAAQ,kBAAoBA,EAAK,MAAQ,gBACtEyB,GAAiBV,EAAOR,EAAQP,EAAMA,EAAK,MAAQ,gBAAkBA,EAAK,KAAOsB,EAAKA,CAAG,EAE3FtB,EAAK,MAAQ,MAAQA,EAAK,MAAQ,kBAAoBA,EAAK,MAAQ,yBACjE+B,GAAkBhB,EAAOR,EAAQP,EAAMA,EAAK,MAAQ,KAAOsB,EAAMtB,EAAK,KAAMsB,CAAG,EAEjFmB,EAAQ,WAAaE,EAAO,MAAQ,WAAaA,EAAO,MAAQ,QAAUA,EAAO,MAAQ,YACvFtB,GAAiBN,EAAOR,EAAQP,EAAMsB,CAAG,EAGzC,IAEf,CA/BS3B,EAAA6C,GAAA,qBA2CT,SAASO,GAAyBC,EAAQ,CACtC,GAAI,CAAE,UAAAC,EAAW,sBAAuBC,CAAW,EAAIF,EACnDG,EAASD,GAAcD,EAAY,IAAIG,GAAOH,EAAWC,CAAU,EAAIE,GAAO,QAClF,OAAQC,GAAYC,GAAkBH,EAAQE,CAAO,CACzD,CAJSE,EAAAR,GAAA,4BAMT,IAAMS,GAA0BC,GAAmB,OAAO,UAAU,CAAE,IAAK,kBAAmB,CAAC,EACzFC,GAAiB,CACnB,CAAE,IAAK,SACH,MAAOH,EAAAI,GAASA,EAAM,MAAQ,mBAAqBA,EAAM,MAAQ,KAA1D,SACP,OAAQC,GAAmB,MAAO,EACtC,CAAE,IAAK,SACH,MAAOL,EAAAI,GAASA,EAAM,MAAQ,cAAgBA,EAAM,MAAQ,WAArD,SACP,OAAQE,GAAY,MAAO,EAC/B,CAAE,IAAK,SACH,MAAON,EAAAI,GAASA,EAAM,MAAQ,sBAAvB,SACP,OAAQG,GAAY,MAAO,EAC/B,CAAE,IAAK,SACH,MAAMH,EAAO,CACT,MAAO,2DAA2D,KAAKA,EAAM,IAAI,CACrF,EACA,OAAQH,EAAW,EACvB,CAAE,IAAK,SACH,MAAMG,EAAO,CACT,MAAO,CAACA,EAAM,MAAQ,kEAAkE,KAAKA,EAAM,IAAI,CAC3G,EACA,OAAQF,GAAmB,MAAO,EACtC,CAAE,IAAK,QACH,MAAME,EAAO,CACT,OAAQ,CAACA,EAAM,MAAQA,EAAM,MAAQ,SAAW,CAACA,EAAM,MAAQ,oCAAoC,KAAKA,EAAM,IAAI,EACtH,EACA,OAAQI,GAAY,MAAO,CACnC,EACMC,GAA4B,CAC9B,CAAE,KAAM,QACJ,OAAqBD,GAAY,OAAO,UAAU,CAAE,IAAK,QAAS,CAAC,CAAE,CAC7E,EAAE,OAAoBE,GAAgB,IAAIC,IAAS,CAAE,KAAAA,EAAM,OAAQT,GAAmB,MAAO,EAAE,CAAC,EAC1FU,GAAyBC,GAAW,OAAO,CAC7C,KAAM,OACN,OAAqBC,GAAO,UAAU,CAClC,MAAO,CACUC,GAAe,IAAI,CAC5B,QAAQjB,EAAS,CACb,IAAIkB,EAAQ,eAAe,KAAKlB,EAAQ,SAAS,EACjD,OAAIA,EAAQ,KAAK,IAAMA,EAAQ,IAAMkB,EAAM,CAAC,EAAE,OACnClB,EAAQ,SAAS,EACrBA,EAAQ,WAAWA,EAAQ,KAAK,IAAI,GAAKkB,EAAM,CAAC,EAAI,EAAIlB,EAAQ,KAC3E,EACA,kCAAkCA,EAAS,CACvC,OAAOA,EAAQ,OAAOA,EAAQ,KAAK,IAAI,EAAIA,EAAQ,IACvD,EACA,SAASA,EAAS,CACd,GAAIA,EAAQ,IAAM,MAAM,KAAKA,EAAQ,SAAS,EAAE,CAAC,EAAE,OAASA,EAAQ,KAAK,GACrE,OAAOA,EAAQ,SAAS,EAC5B,IAAImB,EAAS,KAAMC,EACnB,QAASC,EAAMrB,EAAQ,OAAQ,CAC3B,IAAIsB,EAAOD,EAAI,UACf,GAAI,CAACC,GAAQA,EAAK,MAAQ,WAAaA,EAAK,IAAMD,EAAI,GAClD,MACJF,EAASE,EAAMC,CACnB,CACA,OAAIH,GAAU,GAAGC,EAAQD,EAAO,aAAeC,EAAM,MAAQ,YAAcA,EAAM,MAAQ,mBAC9EpB,EAAQ,WAAWmB,EAAO,IAAI,EAAInB,EAAQ,KAC9C,IACX,CACJ,CAAC,EACYuB,GAAa,IAAI,CAC1B,QAAQC,EAAM,CACV,IAAIC,EAAQD,EAAK,WAAYF,EAAOE,EAAK,UACzC,MAAI,CAACC,GAASA,EAAM,MAAQ,UACjB,KACJ,CAAE,KAAMA,EAAM,GAAI,GAAIH,EAAK,MAAQ,WAAaA,EAAK,KAAOE,EAAK,EAAG,CAC/E,CACJ,CAAC,EACYE,GAAsB,IAAI,CACnC,mBAAoBxB,EAAAsB,GAAQA,EAAK,SAAS,SAAS,EAA/B,mBACxB,CAAC,CACL,CACJ,CAAC,EACD,aAAc,CACV,cAAe,CAAE,MAAO,CAAE,KAAM,OAAQ,MAAO,KAAM,CAAE,EACvD,cAAe,gBACf,UAAW,IACf,CACJ,CAAC,EAOKG,GAA4Bb,GAAU,UAAU,CAClD,KAAmBc,GAAiBvB,GAAgBM,EAAY,CACpE,CAAC,EAMD,SAASkB,GAAKlC,EAAS,CAAC,EAAG,CACvB,IAAImC,EAAU,GAAIC,EACdpC,EAAO,mBAAqB,KAC5BmC,EAAU,WACVnC,EAAO,kBAAoB,KAC3BmC,GAAWA,EAAUA,EAAU,IAAM,IAAM,gBAC3CnC,EAAO,iBAAmBA,EAAO,gBAAgB,QACjDA,EAAO,kBAAoBA,EAAO,iBAAiB,UACnDoC,EAAOH,IAAkBjC,EAAO,iBAAmB,CAAC,GAAG,OAAOU,EAAc,GAAIV,EAAO,kBAAoB,CAAC,GAAG,OAAOgB,EAAY,CAAC,GACvI,IAAIqB,EAAOD,EAAOjB,GAAU,UAAU,CAAE,KAAAiB,EAAM,QAAAD,CAAQ,CAAC,EAAIA,EAAUH,GAAa,UAAU,CAAE,QAAAG,CAAQ,CAAC,EAAIH,GAC3G,OAAO,IAAIM,GAAgBD,EAAM,CAC7BL,GAAa,KAAK,GAAG,CAAE,aAAcjC,GAAyBC,CAAM,CAAE,CAAC,EACvEA,EAAO,gBAAkB,GAAQuC,GAAgB,CAAC,EAClDC,GAAW,EAAE,QACbC,GAAI,EAAE,OACV,CAAC,CACL,CAhBSlC,EAAA2B,GAAA,QAiBT,IAAMQ,GAA2B,IAAI,IAAiB,qGAAqG,MAAM,GAAG,CAAC,EAK/JH,GAA6BI,EAAW,aAAa,GAAG,CAACC,EAAMC,EAAMC,EAAIC,EAAMC,IAAsB,CACvG,GAAIJ,EAAK,WAAaA,EAAK,MAAM,UAAYC,GAAQC,GAAOC,GAAQ,KAAOA,GAAQ,KAC/E,CAACf,GAAa,WAAWY,EAAK,MAAOC,EAAM,EAAE,EAC7C,MAAO,GACX,IAAII,EAAOD,EAAkB,EAAG,CAAE,MAAAE,CAAM,EAAID,EACxCE,EAAYD,EAAM,cAAcE,GAAS,CACzC,IAAIC,EAAIC,EAAIC,EACZ,IAAIC,EAAUN,EAAM,IAAI,YAAYE,EAAM,KAAO,EAAGA,EAAM,EAAE,GAAKL,EAC7D,CAAE,KAAAU,CAAK,EAAIL,EAAO7B,EAAQmC,EAAWR,CAAK,EAAE,aAAaO,EAAM,EAAE,EAAGvC,EACxE,GAAIsC,GAAWT,GAAQ,KAAOxB,EAAM,MAAQ,SAAU,CAClD,IAAIoC,EAAMpC,EAAM,OAChB,KAAM+B,GAAMD,EAAKM,EAAI,UAAY,MAAQN,IAAO,OAAS,OAASA,EAAG,aAAe,MAAQC,IAAO,OAAS,OAASA,EAAG,OAAS,aAC5HpC,EAAO0C,GAAYV,EAAM,IAAKS,EAAI,OAAQF,CAAI,IAC/C,CAACf,GAAY,IAAIxB,CAAI,EAAG,CACxB,IAAI4B,EAAKW,GAAQP,EAAM,IAAI,YAAYO,EAAMA,EAAO,CAAC,IAAM,IAAM,EAAI,GACjEI,EAAS,KAAK3C,CAAI,IACtB,MAAO,CAAE,MAAAkC,EAAO,QAAS,CAAE,KAAMK,EAAM,GAAAX,EAAI,OAAAe,CAAO,CAAE,CACxD,CACJ,SACSL,GAAWT,GAAQ,KAAOxB,EAAM,MAAQ,qBAAsB,CACnE,IAAIoC,EAAMpC,EAAM,OAChB,GAAIA,EAAM,MAAQkC,EAAO,KAAOF,EAAKI,EAAI,aAAe,MAAQJ,IAAO,OAAS,OAASA,EAAG,OAAS,aAChGrC,EAAO0C,GAAYV,EAAM,IAAKS,EAAKF,CAAI,IAAM,CAACf,GAAY,IAAIxB,CAAI,EAAG,CACtE,IAAI4B,EAAKW,GAAQP,EAAM,IAAI,YAAYO,EAAMA,EAAO,CAAC,IAAM,IAAM,EAAI,GACjEI,EAAS,GAAG3C,CAAI,IACpB,MAAO,CACH,MAAO4C,EAAgB,OAAOL,EAAOI,EAAO,OAAQ,EAAE,EACtD,QAAS,CAAE,KAAMJ,EAAM,GAAAX,EAAI,OAAAe,CAAO,CACtC,CACJ,CACJ,CACA,MAAO,CAAE,MAAAT,CAAM,CACnB,CAAC,EACD,OAAID,EAAU,QAAQ,MACX,IACXP,EAAK,SAAS,CACVK,EACAC,EAAM,OAAOC,EAAW,CACpB,UAAW,iBACX,eAAgB,EACpB,CAAC,CACL,CAAC,EACM,GACX,CAAC,EC7nBD,IAAMY,GAAUC,GAAyC,IAAK,EACxDC,GAAgBD,GAAoC,IAAK,EAMzDE,GAAgB,iBAKtB,SAASC,GAAiBC,EAAS,CACjC,IAAMC,EACJ,SAAS,cAAc,uBAAuB,EAEhD,GAAKA,EAEL,GAAID,EAAS,CACX,GAAI,SAAS,eAAeF,EAAa,EAAG,OAC5C,IAAMI,EAAK,SAAS,cAAc,KAAK,EACvCA,EAAG,GAAKJ,GACRI,EAAG,UAAY,YACfA,EAAG,MAAM,SAAW,eACpBA,EAAG,UAAY,gEACfD,EAAU,OAAOC,CAAE,EACnBD,EAAU,OAAS,EACrB,MACE,SAAS,eAAeH,EAAa,GAAG,OAAO,EAC/CG,EAAU,OAAS,EAEvB,CAnBSE,EAAAJ,GAAA,oBAyBF,SAASK,IAAe,CAE7B,IAAMC,EAAkB,SAAS,KAAK,cAAc,uBAAuB,EAC3E,GAAI,CAACA,EAAiB,MAAM,IAAI,MAAM,4BAA4B,EAElE,IAAMC,EAAS,IAAIC,EAAW,CAC5B,OAAQF,EACR,IAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQH,KAAK,EACP,WAAY,CACVG,GACAC,GAAS,EACTC,GAAQ,EACRC,GAAO,EACPC,GAAe,CACjB,CACF,CAAC,EAED,OAAAjB,GAAQ,MAAQW,EACTA,CACT,CA3BgBH,EAAAC,GAAA,gBAoChB,IAAMS,GAAgBV,EAACG,GAIvB,MAAOQ,GAAU,CACfA,EAAM,eAAe,EAErB,IAAMC,EAAiD,SAAS,cAC9D,aACF,EAEMC,EACJ,SAAS,cAAc,oBAAoB,EAGvCC,EACJ,SAAS,cAAc,aAAa,EAGhCR,EAAOH,EAAO,MAAM,IAAI,SAAS,EACjCY,EAAM,MAAUC,GAAO,GAAM,IAAI,YAAY,EAAE,OAAOV,CAAI,CAAC,EAC3DW,EAAOL,GAAQ,OAAS,WACxBM,EAAcL,GAAe,OAAS,GACtCM,EACsCL,GAAQ,OAAS,cAGvDM,EAAQ1B,GAAc,MACxB,CACA,GAAGA,GAAc,MACjB,IAAAqB,EACA,YAAAG,EACA,KAAAZ,EACA,KAAAa,EACA,KAAAF,CACF,EACE,CACA,MAAO,0BACP,GAAQI,GAAI,EACZ,IAAAN,EACA,YAAAG,EACA,KAAAZ,EACA,KAAAa,EACA,KAAAF,CACF,EAEF,OAA4BN,EAAO,UAAU,KAAM,CACjD,IAAK,OACH,MAAMW,GAAUF,CAAK,EACrB,MACF,IAAK,YACH,MAAME,GAAUF,CAAK,EACrB,WAAW,KAAK,WAAWA,EAAM,EAAE,GAAI,OAAO,EAC9C,KACJ,CACF,EAvDsB,iBA4DtB,eAAeG,GAAUC,EAAS,CAChC,IAAMJ,EAAQ,CAAE,GAAGI,CAAQ,EACrBZ,EAAiD,SAAS,cAC9D,aACF,EAEMC,EACJ,SAAS,cAAc,oBAAoB,EAGvCC,EACJ,SAAS,cAAc,aAAa,EAGtC,GAAI,CAACF,EAAQ,OAGb,IAAMa,EAAM,IAAI,IAAI,SAAS,IAAI,EAC3BC,EAAKD,EAAI,aAAa,IAAI,IAAI,EAWpC,GATIC,GAAMN,EAAM,KAAOM,IACrBD,EAAI,aAAa,OAAO,IAAI,EAC5B,QAAQ,aAAa,KAAM,GAAIA,CAAG,GAIpC,SAAS,cAAc,OAAO,GAAG,eAAe,EAG5C,CAACL,EAAM,MAAQA,EAAM,IAAK,CAC5BxB,GAAiB,EAAI,EACrB,IAAMU,EAAO,MAAMqB,GAAQP,EAAM,GAAG,EAC9BL,EAAM,MAAUC,GAAO,GAAM,IAAI,YAAY,EAAE,OAAOV,CAAI,CAAC,EACjEV,GAAiB,EAAK,EAEtBwB,EAAM,KAAOd,EACbc,EAAM,IAAML,CACd,CAEArB,GAAc,MAAQ0B,EACtBR,EAAO,MAAQQ,EAAM,KAEjBN,IACFA,EAAO,MAAQM,EAAM,MAAQ,eAG3BP,IACFA,EAAc,MAAQO,EAAM,aAAe,IAG7C,IAAMjB,EAASX,GAAQ,MACvBW,GAAQ,SAAS,CACf,QAAS,CAAE,KAAM,EAAG,GAAIA,EAAO,MAAM,IAAI,OAAQ,OAAQiB,EAAM,IAAK,CACtE,CAAC,CACH,CAtDepB,EAAAuB,GAAA,aAwDR,SAASK,IAAwB,CACtC,IAAMzB,EAASX,GAAQ,MAClBW,GAEL,SAAS,cAAc,YAAY,GAAG,iBACpC,SACAO,GAAcP,CAAM,CACtB,CACF,CARgBH,EAAA4B,GAAA,yBAchB,IAAIC,GAAc,GAEX,SAASC,IAAwB,CAClCD,KACJA,GAAc,GAEd,SAAS,KAAK,iBACZ,QAIA,MAAOlB,GAAU,CACf,IAAMoB,EAAqCpB,EAAM,OAC3CqB,EAAMD,EAAO,aAAa,KAAK,EACrC,GAAI,CAACC,EAAK,OAEV,IAAMC,EAAMF,EAAO,QAAQ,IAAI,GAAG,aAAa,UAAU,EACzD,GAAI,CAACE,EAAK,OAEV,IAAMhB,EAAOc,EAAO,QAAQ,IAAI,GAAG,aAAa,WAAW,EAC3D,GAAI,CAACd,EAAM,OAEX,IAAME,EAAOY,EAAO,QAAQ,IAAI,GAAG,aAAa,WAAW,GAAK,OAEhE,GAAQC,IACD,OAAQ,CACXpC,GAAiB,EAAI,EACrB,IAAMwB,EAAQ,MAAMc,GAAa,CAAE,KAAAf,EAAM,KAAAF,EAAM,IAAAgB,CAAI,EAAG,CACpD,UAAW,EACb,CAAC,EACDrC,GAAiB,EAAK,EACtB2B,GAAUH,CAAK,EACf,SAAS,cAAc,OAAO,GAAG,eAAe,CAElD,CAEJ,CACF,EACF,CApCgBpB,EAAA8B,GAAA,yBA0ChB,eAAsBK,IAAmB,CACvC,IAAMC,EAAS,IAAI,gBAAgB,SAAS,MAAM,EAC5CC,EAAUD,EAAO,IAAI,IAAI,EACzBE,EAAWF,EAAO,IAAI,KAAK,EAEjCxC,GAAiB,EAAI,EACrB,GAAI,CACF,GAAIyC,EAAS,CACX,IAAME,EAAM,MAAMC,GAAO,EAEnBpB,GADM,MAAaqB,GAAKF,EAAI,MAAM,GACtB,KAAMG,GAAMA,EAAE,KAAOL,CAAO,EAC1CjB,GAAO,MAAMG,GAAUH,CAAK,CAClC,SAAWkB,EAAU,CACnB,IAAMlB,EAAQ,MAAMc,GAAa,CAC/B,IAAKI,EACL,KAAMF,EAAO,IAAI,MAAM,GAAK,GAC5B,KAA0BA,EAAO,IAAI,MAAM,GAAK,OAChD,YAAaA,EAAO,IAAI,aAAa,GAAK,MAC5C,EAAG,CAAE,UAAW,EAAK,CAAC,EACtB,MAAMb,GAAUH,CAAK,CACvB,CACF,QAAE,CACAxB,GAAiB,EAAK,CACxB,CACF,CAxBsBI,EAAAmC,GAAA","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","from","other","event","pos","side","BlockType","Decoration","RangeValue","startSide","endSide","spec","MarkDecoration","block","PointDecoration","start","end","getInclusive","LineDecoration","of","sort","RangeSet","_MarkDecoration","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","halfText","posAtCoords","posCoords","mid","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","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","_d","scrollTop","scrollLeft","prefix","Prec","inputs","_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","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","r","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","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","r","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","s","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","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","r","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","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","r","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","params","idParam","uriParam","out","output","data","f"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-TGHFO6M4.js.map"}
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-UMFFTZJV.js
··· 1 + import{b as r}from"./chunk-K24WPOYB.js";import{c}from"./chunk-K4RUWDWS.js";import{a as i}from"./chunk-QOBPHMGK.js";import{a as d}from"./chunk-BFIVCPQF.js";async function l({description:f,kind:e,name:m,tags:n,uri:o},{fetchHTML:s}){let t=s?await r(o):void 0,u=t?await i(85,new TextEncoder().encode(t)):void 0,a=new Date().toISOString();return{$type:"sh.diffuse.output.facet",createdAt:a,id:c(),cid:u,description:f,html:t,name:m,kind:e==="interactive"||e==="prelude"?e:void 0,tags:n?.length?n:void 0,updatedAt:a,uri:o}}d(l,"facetFromURI");export{l as a}; 2 + 3 + //# sourceMappingURL=./chunk-UMFFTZJV.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-UMFFTZJV.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-UMFFTZJV.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; tags?: string[]; uri: string }} _args\n * @param {{ fetchHTML: boolean }} options\n *\n * @example Creates a facet with correct $type, name, uri, id, and timestamps\n * ```js\n * import { facetFromURI } from \"~/common/facets/utils.js\";\n *\n * const facet = await facetFromURI({ name: \"My Facet\", uri: \"facets/test/index.html\", kind: undefined, description: undefined }, { fetchHTML: false });\n *\n * if (facet.$type !== \"sh.diffuse.output.facet\") throw new Error(\"$type should be sh.diffuse.output.facet\");\n * if (facet.name !== \"My Facet\") throw new Error(\"name should be preserved\");\n * if (facet.uri !== \"facets/test/index.html\") throw new Error(\"uri should be preserved\");\n * if (typeof facet.id !== \"string\" || facet.id.length === 0) throw new Error(\"id should be a non-empty string\");\n * if (!facet.createdAt) throw new Error(\"createdAt should be set\");\n * if (facet.createdAt !== facet.updatedAt) throw new Error(\"createdAt and updatedAt should match\");\n * if (new Date(facet.createdAt).toISOString() !== facet.createdAt) throw new Error(\"createdAt should be a valid ISO string\");\n * ```\n *\n * @example fetchHTML false leaves html and cid undefined; kind is validated\n * ```js\n * import { facetFromURI } from \"~/common/facets/utils.js\";\n *\n * const base = { name: \"Test\", uri: \"test.html\", description: undefined };\n *\n * const noHtml = await facetFromURI({ ...base, kind: undefined }, { fetchHTML: false });\n * if (noHtml.html !== undefined) throw new Error(\"html should be undefined when fetchHTML is false\");\n * if (noHtml.cid !== undefined) throw new Error(\"cid should be undefined when fetchHTML is false\");\n *\n * const prelude = await facetFromURI({ ...base, kind: \"prelude\" }, { fetchHTML: false });\n * if (prelude.kind !== \"prelude\") throw new Error(\"prelude kind should be preserved\");\n *\n * const interactive = await facetFromURI({ ...base, kind: \"interactive\" }, { fetchHTML: false });\n * if (interactive.kind !== \"interactive\") throw new Error(\"interactive kind should be preserved\");\n *\n * const unknown = await facetFromURI({ ...base, kind: \"unknown\" }, { fetchHTML: false });\n * if (unknown.kind !== undefined) throw new Error(\"unrecognised kind should be set to undefined\");\n * ```\n *\n * @example Generates unique ids across calls\n * ```js\n * import { facetFromURI } from \"~/common/facets/utils.js\";\n *\n * const a = await facetFromURI({ name: \"A\", uri: \"a.html\", kind: undefined, description: undefined }, { fetchHTML: false });\n * const b = await facetFromURI({ name: \"B\", uri: \"b.html\", kind: undefined, description: undefined }, { fetchHTML: false });\n * if (a.id === b.id) throw new Error(\"ids should be unique across calls\");\n * ```\n */\nexport async function facetFromURI(\n { description, kind, name, tags, 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 tags: tags?.length ? tags : undefined,\n updatedAt: timestamp,\n uri,\n };\n\n return facet;\n}\n"],"mappings":"2JAyDA,eAAsBA,EACpB,CAAE,YAAAC,EAAa,KAAAC,EAAM,KAAAC,EAAM,KAAAC,EAAM,IAAAC,CAAI,EACrC,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,EAiBzC,MAdc,CACZ,MAAO,0BACP,UAAWA,EACX,GAAQC,EAAI,EACZ,IAAAH,EACA,YAAAR,EACA,KAAAM,EACA,KAAAJ,EACA,KAAMD,IAAS,eAAiBA,IAAS,UAAYA,EAAO,OAC5D,KAAME,GAAM,OAASA,EAAO,OAC5B,UAAWO,EACX,IAAAN,CACF,CAGF,CA1BsBQ,EAAAb,EAAA","names":["facetFromURI","description","kind","name","tags","uri","fetchHTML","html","loadURI","cid","create","timestamp","now","__name"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-UMFFTZJV.js.map"}
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-UYT7NSKP.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-UYT7NSKP.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-UYT7NSKP.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-UYT7NSKP.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-UYT7NSKP.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-UYT7NSKP.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-UZQU6UI3.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-UZQU6UI3.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-UZQU6UI3.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-UZQU6UI3.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-UZQU6UI3.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-UZQU6UI3.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-V5SXC634.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-V5SXC634.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-V5SXC634.js.br
··· 1 + ../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/chunk-BM2NDIFW.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-V5SXC634.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-V5SXC634.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-VJVS6ZD2.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-VJVS6ZD2.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-VJVS6ZD2.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-VJVS6ZD2.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-VJVS6ZD2.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-VJVS6ZD2.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-VYV6NEIN.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-VYV6NEIN.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-VYV6NEIN.js.br
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-VYV6NEIN.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-VYV6NEIN.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-VYV6NEIN.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-W5CILZJO.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-W5CILZJO.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-W5CILZJO.js.br
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-W5CILZJO.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-W5CILZJO.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-W5CILZJO.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-WLXGGMHC.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-WLXGGMHC.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-WLXGGMHC.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-WLXGGMHC.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-WLXGGMHC.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-WLXGGMHC.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-Y27VNH5Y.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-Y27VNH5Y.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-Y27VNH5Y.js.br
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-Y27VNH5Y.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-Y27VNH5Y.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-Y27VNH5Y.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-YHFKI4Y2.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-YHFKI4Y2.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-YHFKI4Y2.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-4I6PUBR2.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-YHFKI4Y2.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-YHFKI4Y2.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-YWNAFWKH.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-YWNAFWKH.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-YWNAFWKH.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-YWNAFWKH.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-YWNAFWKH.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-YWNAFWKH.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-YXAKQEZA.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-YXAKQEZA.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-YXAKQEZA.js.br
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/chunk-ALTFDO6Y.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-YXAKQEZA.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-YXAKQEZA.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-YZPVIF44.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-YZPVIF44.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-YZPVIF44.js.br
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-YZPVIF44.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-YZPVIF44.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-YZPVIF44.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-Z5PWRR3Q.js
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-Z5PWRR3Q.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-Z5PWRR3Q.js.br
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-Z5PWRR3Q.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-Z5PWRR3Q.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/chunk-Z5PWRR3Q.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-ZCBN4C3I.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-ZCBN4C3I.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-ZCBN4C3I.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-ZCBN4C3I.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-ZCBN4C3I.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/chunk-ZCBN4C3I.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-ZFCADOB7.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-ZFCADOB7.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-ZFCADOB7.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-ZFCADOB7.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-ZFCADOB7.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-ZFCADOB7.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-ZVDZOOIW.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-ZVDZOOIW.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-ZVDZOOIW.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-ZVDZOOIW.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/chunk-ZVDZOOIW.js.map
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/chunk-ZVDZOOIW.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/code/index.html
··· 1 + ../../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/code/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/code/index.html.br
··· 1 + ../../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/code/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/cid.js
··· 1 + ../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/common/cid.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/cid.js.br
··· 1 + ../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/common/cid.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/cid.js.map
··· 1 + ../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/common/cid.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/compare.js
··· 1 + ../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/common/compare.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/compare.js.br
··· 1 + ../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/common/compare.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/compare.js.map
··· 1 + ../../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/common/compare.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/element.js
··· 1 + ../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/common/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/element.js.br
··· 1 + ../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/common/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/element.js.map
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/common/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/facets/category.js
··· 1 + ../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/common/facets/category.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/facets/category.js.br
··· 1 + ../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/common/facets/category.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/facets/category.js.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/facets/category.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/facets/constants.js
··· 1 + import{a,b,c}from"../../chunk-PMV3ISAT.js";import"../../chunk-BFIVCPQF.js";export{b as STARTING_SET_DISABLED,c as STARTING_SET_URIS,a as TYPE}; 2 + 3 + //# sourceMappingURL=./constants.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/facets/constants.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/facets/constants.js.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/facets/constants.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/facets/prelude.js
··· 1 + import{a}from"../../chunk-FKLEXSNK.js";import"../../chunk-K24WPOYB.js";import"../../chunk-T734Y7R7.js";import"../../chunk-PPKEFF43.js";import"../../chunk-RQJCYF4B.js";import"../../chunk-PBZITCUN.js";import"../../chunk-2CE4HY7O.js";import"../../chunk-K4RUWDWS.js";import"../../chunk-QOBPHMGK.js";import"../../chunk-2SBW6H34.js";import"../../chunk-YZPVIF44.js";import"../../chunk-RPJXLERJ.js";import"../../chunk-MTCNS3JB.js";import"../../chunk-YHFKI4Y2.js";import"../../chunk-GSG5OS62.js";import"../../chunk-BFIVCPQF.js";export{a as insertPreludes}; 2 + 3 + //# sourceMappingURL=./prelude.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/facets/prelude.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/facets/prelude.js.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/facets/prelude.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/facets/utils.js
··· 1 + import{a}from"../../chunk-UMFFTZJV.js";import"../../chunk-K24WPOYB.js";import"../../chunk-T734Y7R7.js";import"../../chunk-PPKEFF43.js";import"../../chunk-RQJCYF4B.js";import"../../chunk-PBZITCUN.js";import"../../chunk-2CE4HY7O.js";import"../../chunk-K4RUWDWS.js";import"../../chunk-QOBPHMGK.js";import"../../chunk-2SBW6H34.js";import"../../chunk-YZPVIF44.js";import"../../chunk-RPJXLERJ.js";import"../../chunk-MTCNS3JB.js";import"../../chunk-YHFKI4Y2.js";import"../../chunk-GSG5OS62.js";import"../../chunk-BFIVCPQF.js";export{a as facetFromURI}; 2 + 3 + //# sourceMappingURL=./utils.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/facets/utils.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/facets/utils.js.map
··· 1 + ../../../bafybeibpmqpxuvey34kzaxj3yyprwbkgvhbuz3xpxb74jpk7nxgxu2yr74/common/facets/utils.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/foundation.js
··· 1 + import{a,b,c,d}from"../chunk-23J7PJHO.js";import"../chunk-YHFKI4Y2.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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/foundation.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/foundation.js.map
··· 1 + ../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/foundation.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/loader.js
··· 1 + import{a,b,c,d}from"../chunk-K24WPOYB.js";import"../chunk-T734Y7R7.js";import"../chunk-PPKEFF43.js";import"../chunk-RQJCYF4B.js";import"../chunk-PBZITCUN.js";import"../chunk-2CE4HY7O.js";import"../chunk-K4RUWDWS.js";import"../chunk-QOBPHMGK.js";import"../chunk-2SBW6H34.js";import"../chunk-YZPVIF44.js";import"../chunk-RPJXLERJ.js";import"../chunk-MTCNS3JB.js";import"../chunk-YHFKI4Y2.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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/loader.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/loader.js.map
··· 1 + ../../bafybeiairw5zug6xd6xosgopcoyu3ieg4kiiesvqeszsk2xvipvsoxasvy/common/loader.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/output.js
··· 1 + ../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/common/output.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/output.js.br
··· 1 + ../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/common/output.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/output.js.map
··· 1 + ../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/common/output.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/code.js
··· 1 + import{a,b,c,d}from"../../chunk-TGHFO6M4.js";import"../../chunk-QQ3UQ3JQ.js";import"../../chunk-6AH2OFQT.js";import"../../chunk-MWWZQLVP.js";import"../../chunk-23J7PJHO.js";import"../../chunk-FKLEXSNK.js";import"../../chunk-UMFFTZJV.js";import"../../chunk-K24WPOYB.js";import"../../chunk-T734Y7R7.js";import"../../chunk-PPKEFF43.js";import"../../chunk-RQJCYF4B.js";import"../../chunk-PBZITCUN.js";import"../../chunk-2CE4HY7O.js";import"../../chunk-K4RUWDWS.js";import"../../chunk-QOBPHMGK.js";import"../../chunk-2SBW6H34.js";import"../../chunk-YZPVIF44.js";import"../../chunk-RPJXLERJ.js";import"../../chunk-MTCNS3JB.js";import"../../chunk-YHFKI4Y2.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=./code.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/code.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/code.js.map
··· 1 + ../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/common/pages/code.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/crud.js
··· 1 + import{a,b,c}from"../../chunk-QQ3UQ3JQ.js";import"../../chunk-6AH2OFQT.js";import"../../chunk-MWWZQLVP.js";import"../../chunk-23J7PJHO.js";import"../../chunk-FKLEXSNK.js";import"../../chunk-K24WPOYB.js";import"../../chunk-T734Y7R7.js";import"../../chunk-PPKEFF43.js";import"../../chunk-RQJCYF4B.js";import"../../chunk-PBZITCUN.js";import"../../chunk-2CE4HY7O.js";import"../../chunk-K4RUWDWS.js";import"../../chunk-QOBPHMGK.js";import"../../chunk-2SBW6H34.js";import"../../chunk-YZPVIF44.js";import"../../chunk-RPJXLERJ.js";import"../../chunk-MTCNS3JB.js";import"../../chunk-YHFKI4Y2.js";import"../../chunk-GSG5OS62.js";import"../../chunk-BFIVCPQF.js";export{a as deleteFacet,c as saveFacet,b as toggleFacetEnabled}; 2 + 3 + //# sourceMappingURL=./crud.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/crud.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/crud.js.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/pages/crud.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/dashboard.js
··· 1 + import{a}from"../../chunk-RPTB6G7G.js";import"../../chunk-H6DQPAGD.js";import"../../chunk-DGFSH4HV.js";import"../../chunk-JPVVQ3UF.js";import"../../chunk-WLXGGMHC.js";import"../../chunk-QVM63RP5.js";import"../../chunk-UYT7NSKP.js";import"../../chunk-SMPARDQR.js";import"../../chunk-MWEXZQ4O.js";import"../../chunk-QQ3UQ3JQ.js";import"../../chunk-6AH2OFQT.js";import"../../chunk-MWWZQLVP.js";import"../../chunk-23J7PJHO.js";import"../../chunk-FKLEXSNK.js";import"../../chunk-YXAKQEZA.js";import"../../chunk-UMFFTZJV.js";import"../../chunk-K24WPOYB.js";import"../../chunk-T734Y7R7.js";import"../../chunk-PPKEFF43.js";import"../../chunk-RQJCYF4B.js";import"../../chunk-PBZITCUN.js";import"../../chunk-2CE4HY7O.js";import"../../chunk-K4RUWDWS.js";import"../../chunk-QOBPHMGK.js";import"../../chunk-2SBW6H34.js";import"../../chunk-YZPVIF44.js";import"../../chunk-RPJXLERJ.js";import"../../chunk-MTCNS3JB.js";import"../../chunk-YHFKI4Y2.js";import"../../chunk-GSG5OS62.js";import"../../chunk-K2CRUTCH.js";import"../../chunk-BFIVCPQF.js";export{a as renderList}; 2 + 3 + //# sourceMappingURL=./dashboard.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/dashboard.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/dashboard.js.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/pages/dashboard.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/from-uri.js
··· 1 + import{a}from"../../chunk-SMPARDQR.js";import"../../chunk-MWEXZQ4O.js";import"../../chunk-QQ3UQ3JQ.js";import"../../chunk-6AH2OFQT.js";import"../../chunk-MWWZQLVP.js";import"../../chunk-23J7PJHO.js";import"../../chunk-FKLEXSNK.js";import"../../chunk-UMFFTZJV.js";import"../../chunk-K24WPOYB.js";import"../../chunk-T734Y7R7.js";import"../../chunk-PPKEFF43.js";import"../../chunk-RQJCYF4B.js";import"../../chunk-PBZITCUN.js";import"../../chunk-2CE4HY7O.js";import"../../chunk-K4RUWDWS.js";import"../../chunk-QOBPHMGK.js";import"../../chunk-2SBW6H34.js";import"../../chunk-YZPVIF44.js";import"../../chunk-RPJXLERJ.js";import"../../chunk-MTCNS3JB.js";import"../../chunk-YHFKI4Y2.js";import"../../chunk-GSG5OS62.js";import"../../chunk-BFIVCPQF.js";export{a as openAddFromURIModal}; 2 + 3 + //# sourceMappingURL=./from-uri.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/from-uri.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/from-uri.js.map
··· 1 + ../../../bafybeibbvywkxql7k3lipdasrnrtjlmgt6ks3hkv3d6mimsmui6pcpwos4/common/pages/from-uri.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/grid.js
··· 1 + import{a,b,c,d}from"../../chunk-2RVTEEJK.js";import"../../chunk-6AH2OFQT.js";import"../../chunk-MWWZQLVP.js";import"../../chunk-23J7PJHO.js";import"../../chunk-FKLEXSNK.js";import"../../chunk-UMFFTZJV.js";import"../../chunk-K24WPOYB.js";import"../../chunk-T734Y7R7.js";import"../../chunk-PPKEFF43.js";import"../../chunk-RQJCYF4B.js";import"../../chunk-PBZITCUN.js";import"../../chunk-2CE4HY7O.js";import"../../chunk-K4RUWDWS.js";import"../../chunk-QOBPHMGK.js";import"../../chunk-2SBW6H34.js";import"../../chunk-YZPVIF44.js";import"../../chunk-RPJXLERJ.js";import"../../chunk-MTCNS3JB.js";import"../../chunk-YHFKI4Y2.js";import"../../chunk-GSG5OS62.js";import"../../chunk-BFIVCPQF.js";export{b as insertToggleButtons,c as monitorToggleButtonStates,a as setupFilter,d as setupOutputIndicator}; 2 + 3 + //# sourceMappingURL=./grid.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/grid.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/grid.js.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/pages/grid.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/guide.js
··· 1 + import{a}from"../../chunk-C64DBEMP.js";import"../../chunk-FKLEXSNK.js";import"../../chunk-K24WPOYB.js";import"../../chunk-T734Y7R7.js";import"../../chunk-PPKEFF43.js";import"../../chunk-RQJCYF4B.js";import"../../chunk-PBZITCUN.js";import"../../chunk-2CE4HY7O.js";import"../../chunk-K4RUWDWS.js";import"../../chunk-QOBPHMGK.js";import"../../chunk-2SBW6H34.js";import"../../chunk-YZPVIF44.js";import"../../chunk-RPJXLERJ.js";import"../../chunk-MTCNS3JB.js";import"../../chunk-YHFKI4Y2.js";import"../../chunk-GSG5OS62.js";import"../../chunk-BFIVCPQF.js";export{a as setupSampleButton}; 2 + 3 + //# sourceMappingURL=./guide.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/guide.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/guide.js.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/pages/guide.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/nav.js
··· 1 + ../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/common/pages/nav.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/nav.js.br
··· 1 + ../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/common/pages/nav.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/nav.js.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/pages/nav.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/output.js
··· 1 + import{a}from"../../chunk-MWWZQLVP.js";import"../../chunk-23J7PJHO.js";import"../../chunk-FKLEXSNK.js";import"../../chunk-K24WPOYB.js";import"../../chunk-T734Y7R7.js";import"../../chunk-PPKEFF43.js";import"../../chunk-RQJCYF4B.js";import"../../chunk-PBZITCUN.js";import"../../chunk-2CE4HY7O.js";import"../../chunk-K4RUWDWS.js";import"../../chunk-QOBPHMGK.js";import"../../chunk-2SBW6H34.js";import"../../chunk-YZPVIF44.js";import"../../chunk-RPJXLERJ.js";import"../../chunk-MTCNS3JB.js";import"../../chunk-YHFKI4Y2.js";import"../../chunk-GSG5OS62.js";import"../../chunk-BFIVCPQF.js";export{a as output}; 2 + 3 + //# sourceMappingURL=./output.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/output.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/output.js.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/common/pages/output.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/ppr.js
··· 1 + import{a as w,b,c as B,d as L}from"../../chunk-TGHFO6M4.js";import{a as S,b as T,c as N,d as y}from"../../chunk-2RVTEEJK.js";import{a as k,b as E,c as F}from"../../chunk-GO3MGAOG.js";import{a as R}from"../../chunk-RPTB6G7G.js";import"../../chunk-H6DQPAGD.js";import"../../chunk-DGFSH4HV.js";import"../../chunk-JPVVQ3UF.js";import"../../chunk-WLXGGMHC.js";import"../../chunk-QVM63RP5.js";import"../../chunk-UYT7NSKP.js";import{a as v}from"../../chunk-C64DBEMP.js";import"../../chunk-SMPARDQR.js";import"../../chunk-MWEXZQ4O.js";import"../../chunk-QQ3UQ3JQ.js";import"../../chunk-6AH2OFQT.js";import"../../chunk-MWWZQLVP.js";import"../../chunk-23J7PJHO.js";import"../../chunk-FKLEXSNK.js";import"../../chunk-YXAKQEZA.js";import"../../chunk-UMFFTZJV.js";import"../../chunk-K24WPOYB.js";import"../../chunk-T734Y7R7.js";import"../../chunk-PPKEFF43.js";import"../../chunk-RQJCYF4B.js";import"../../chunk-PBZITCUN.js";import"../../chunk-2CE4HY7O.js";import"../../chunk-K4RUWDWS.js";import"../../chunk-QOBPHMGK.js";import"../../chunk-2SBW6H34.js";import"../../chunk-YZPVIF44.js";import"../../chunk-RPJXLERJ.js";import"../../chunk-MTCNS3JB.js";import"../../chunk-YHFKI4Y2.js";import"../../chunk-GSG5OS62.js";import"../../chunk-K2CRUTCH.js";import{a as i}from"../../chunk-BFIVCPQF.js";var A=new URL(document.baseURI).pathname;function G(n){let e=n.replace(/\/$/,""),o=A.replace(/\/$/,"");return o.length>0&&e.startsWith(o)?e.slice(o.length):e}i(G,"relativePathname");async function M(n){let e=G(n.pathname);switch(E(),k(),F(),S(),T(),await N(),await y(),e){case"/code":w(),b(),B(),await L();break;case"/dashboard":await R();break;case"/guide":v();break;default:break}}i(M,"initJsBasedOnPage");M(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||e.pathname===location.pathname)return;let s=G(e.pathname).split("/").filter(Boolean);s.length!==0&&(s.length>2||s[0]!=="l"&&(s.includes("chronicle")||n.intercept({scroll:"manual",async handler(){let U=[...document.querySelectorAll("#diffuse-nav a, #nav-overflow-menu a")],u=i(t=>t.replace(/^\//,""),"stripSlash"),c=U.find(t=>u(new URL(t.href).pathname)===u(e.pathname)),a=c?.querySelector("i"),l=a?.className,r,m=c?setTimeout(()=>{a?a.className="ph-bold ph-spinner animate-spin":(r=document.createElement("i"),r.className="ph-bold ph-spinner animate-spin",(c.querySelector("span")??c).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&&l!==void 0&&(a.className=l),r?.remove(),location.href=e.href;return}finally{clearTimeout(m),a&&l!==void 0&&(a.className=l),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 q=g.createContextualFragment(f.innerHTML??"");d.innerHTML="",d.append(q),M(e),window.scrollTo({top:0,behavior:"instant"})}})))}i(x,"navigateHandler"); 2 + 3 + //# sourceMappingURL=./ppr.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/ppr.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/ppr.js.map
··· 1 + ../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/common/pages/ppr.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/version-upgrade.js
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/pages/version-upgrade.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/version-upgrade.js.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/pages/version-upgrade.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/pages/version-upgrade.js.map
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/pages/version-upgrade.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/playlist.js
··· 1 + ../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/common/playlist.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/playlist.js.br
··· 1 + ../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/common/playlist.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/playlist.js.map
··· 1 + ../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/common/playlist.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/signal.js
··· 1 + ../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/common/signal.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/signal.js.br
··· 1 + ../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/common/signal.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/signal.js.map
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/common/signal.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/temporal.js
··· 1 + ../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/common/temporal.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/temporal.js.br
··· 1 + ../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/common/temporal.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/temporal.js.map
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/temporal.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/track.js
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/track.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/track.js.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/track.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/track.js.map
··· 1 + ../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/common/track.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/utils.js
··· 1 + ../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/common/utils.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/utils.js.br
··· 1 + ../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/common/utils.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/utils.js.map
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/common/utils.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/webawesome/detect-dark.js
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/webawesome/detect-dark.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/webawesome/detect-dark.js.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/webawesome/detect-dark.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/webawesome/detect-dark.js.map
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/webawesome/detect-dark.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/webawesome/phosphor/bold.js
··· 1 + ../../../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/common/webawesome/phosphor/bold.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/webawesome/phosphor/bold.js.br
··· 1 + ../../../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/common/webawesome/phosphor/bold.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/webawesome/phosphor/bold.js.map
··· 1 + ../../../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/common/webawesome/phosphor/bold.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/webawesome/phosphor/duotone.js
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/duotone.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/webawesome/phosphor/duotone.js.br
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/duotone.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/webawesome/phosphor/duotone.js.map
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/duotone.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/webawesome/phosphor/fill.js
··· 1 + ../../../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/common/webawesome/phosphor/fill.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/webawesome/phosphor/fill.js.br
··· 1 + ../../../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/common/webawesome/phosphor/fill.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/webawesome/phosphor/fill.js.map
··· 1 + ../../../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/common/webawesome/phosphor/fill.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/webawesome/phosphor/light.js
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/light.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/webawesome/phosphor/light.js.br
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/light.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/webawesome/phosphor/light.js.map
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/light.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/webawesome/phosphor/regular.js
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/regular.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/webawesome/phosphor/regular.js.br
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/regular.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/webawesome/phosphor/regular.js.map
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/regular.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/webawesome/phosphor/thin.js
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/thin.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/webawesome/phosphor/thin.js.br
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/thin.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/webawesome/phosphor/thin.js.map
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/common/webawesome/phosphor/thin.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/worker.js
··· 1 + ../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/common/worker.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/worker.js.br
··· 1 + ../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/common/worker.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/worker.js.map
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/common/worker.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/worker/rpc-channel.js
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/worker/rpc-channel.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/worker/rpc-channel.js.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/common/worker/rpc-channel.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/common/worker/rpc-channel.js.map
··· 1 + ../../../bafybeidql7hdkrjfygjungtaqteq4sjgcxcjpndgmjqp7yt4rjqzrdfvja/common/worker/rpc-channel.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/audio-metadata/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/artwork/audio-metadata/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/audio-metadata/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/artwork/audio-metadata/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/audio-metadata/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/artwork/audio-metadata/element.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/audio-metadata/worker.js
··· 1 + import{a as d}from"../../../chunk-YWNAFWKH.js";import"../../../chunk-TAKUCXMA.js";import"../../../chunk-Z5PWRR3Q.js";import"../../../chunk-ATHACRS2.js";import"../../../chunk-W5CILZJO.js";import"../../../chunk-VYV6NEIN.js";import"../../../chunk-MSK7QOJU.js";import"../../../chunk-BNUDHFYP.js";import"../../../chunk-AUOLVULE.js";import"../../../chunk-V5SXC634.js";import"../../../chunk-74D5IDBG.js";import{c as o,e as s,i as m}from"../../../chunk-QVM63RP5.js";import"../../../chunk-UYT7NSKP.js";import"../../../chunk-MTCNS3JB.js";import"../../../chunk-GSG5OS62.js";import"../../../chunk-K2CRUTCH.js";import{a as u}from"../../../chunk-BFIVCPQF.js";async function c({data:e,ports:n}){let i=s(()=>(n.input.start(),n.input)),r=await i.resolve({method:"GET",uri:e.uri});if(!r)return null;let t="stream"in r?void 0:await i.resolve({method:"HEAD",uri:e.uri}),a=(await d({includeArtwork:!0,stream:"stream"in r?r.stream:void 0,mimeType:"stream"in r?r.mimeType:void 0,urls:"url"in r?{get:r.url,head:t&&"url"in t?t.url:r.url}:void 0}).catch(l=>(console.error("music-metadata error",l),{}))).artwork??[];return a.length?a[0].data:null}u(c,"get");o(e=>{m(e,{get:c})});export{c as get}; 2 + 3 + //# sourceMappingURL=./worker.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/audio-metadata/worker.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/audio-metadata/worker.js.map
··· 1 + ../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/artwork/audio-metadata/worker.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/input/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/artwork/input/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/input/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/artwork/input/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/input/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/artwork/input/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/input/worker.js
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/components/artwork/input/worker.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/input/worker.js.br
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/components/artwork/input/worker.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/input/worker.js.map
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/components/artwork/input/worker.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/last.fm/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/artwork/last.fm/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/last.fm/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/artwork/last.fm/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/last.fm/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/artwork/last.fm/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/last.fm/worker.js
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/components/artwork/last.fm/worker.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/last.fm/worker.js.br
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/components/artwork/last.fm/worker.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/last.fm/worker.js.map
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/components/artwork/last.fm/worker.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/musicbrainz/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/artwork/musicbrainz/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/musicbrainz/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/artwork/musicbrainz/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/musicbrainz/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/artwork/musicbrainz/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/musicbrainz/worker.js
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/components/artwork/musicbrainz/worker.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/musicbrainz/worker.js.br
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/components/artwork/musicbrainz/worker.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/artwork/musicbrainz/worker.js.map
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/components/artwork/musicbrainz/worker.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/artwork/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/configurator/artwork/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/artwork/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/configurator/artwork/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/artwork/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/configurator/artwork/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/artwork/worker.js
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/components/configurator/artwork/worker.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/artwork/worker.js.br
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/components/configurator/artwork/worker.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/artwork/worker.js.map
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/components/configurator/artwork/worker.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/input/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/configurator/input/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/input/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/configurator/input/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/input/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/configurator/input/element.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/input/worker.js
··· 1 + import{c as w,d as y,h as x,k as O}from"../../../chunk-7VVACK5Z.js";import{d as I,e as B}from"../../../chunk-V5SXC634.js";import"../../../chunk-74D5IDBG.js";import{c as k,e as b,i as U}from"../../../chunk-QVM63RP5.js";import"../../../chunk-UYT7NSKP.js";import{a as g}from"../../../chunk-QOBPHMGK.js";import"../../../chunk-2SBW6H34.js";import"../../../chunk-YZPVIF44.js";import"../../../chunk-RPJXLERJ.js";import"../../../chunk-MTCNS3JB.js";import{a as v}from"../../../chunk-GSG5OS62.js";import"../../../chunk-K2CRUTCH.js";import{a as o,f as j}from"../../../chunk-BFIVCPQF.js";var P=j(v());var u="diffuse/components/configurator/input/cache/";async function E({data:t,ports:r}){let e=t,n=e.split(":",1)[0],s=f(n,r);return s?await s.artwork(e):null}o(E,"artwork");async function T({data:t,ports:r}){let e=t,n=e.includes(":")&&P.parse(e).scheme||e,s=f(n,r);return s?await s.consult(e):{supported:!1,reason:"Unsupported scheme"}}o(T,"consult");async function R({data:t,ports:r}){let e=t.tracks,n=H(e,r),s=Object.entries(n).map(async([p,a])=>{let l=f(p,r);return!l||a.length===0||(t.fileUriOrScheme.includes("://")?t.fileUriOrScheme.startsWith(`${p}://`)===!1:t.fileUriOrScheme!==p)?a:await l.detach({fileUriOrScheme:t.fileUriOrScheme,tracks:a})});return(await Promise.all(s)).flat(1)}o(R,"detach");async function C({data:t,ports:r}){let n=B(t);return(await Promise.all(Object.keys(n).map(async i=>{let c=f(i,r);return c?await c.groupConsult(n[i]??[]):{[i]:{available:!1,reason:"Unsupported scheme",scheme:i,uris:n[i]??[]}}}))).reduce((i,c)=>Object.assign(i,c),{})}o(C,"groupConsult");async function A({data:t,ports:r}){let e=t,n=e.map(a=>a.uri),s=new Map(e.map(a=>[a.uri,a])),i=await C({data:n,ports:r}),c=Object.values(i).map(async({available:a,scheme:l,uris:D})=>{let m=D.map(d=>s.get(d)).filter(d=>d!==void 0);if(!a)return m;let h=f(l,r);return h?await h.list(m):m});return(await Promise.all(c)).flat(1)}o(A,"list");async function S({data:t,ports:r}){let n=t.uri.split(":",1)[0],s=f(n,r);if(s)return await s.resolve(t)}o(S,"resolve");async function F({data:t,ports:r}){let e=t;await Promise.all(e.map(async n=>{if(await w(u+n)!==void 0)return;let s=await S({data:{uri:n},ports:r});if(!s||"stream"in s)return;let i=await fetch(s.url);i.ok&&await y(u+n,await i.blob())}))}o(F,"cache");async function W(){return(await O()).filter(r=>r.startsWith(u)).map(r=>r.slice(u.length))}o(W,"listCached");async function _({data:t}){let r=t;await Promise.all(r.map(e=>x(u+e)))}o(_,"removeFromCache");async function $({data:t}){let r=t,e=await r.arrayBuffer(),n=new Uint8Array(e),i=`ephemeral+cache://${await g(85,n)}`;return await w(u+i)===void 0&&await y(u+i,r),i}o($,"cacheBlob");k(t=>{U(t,{artwork:E,consult:T,detach:R,groupConsult:C,list:A,resolve:S,cache:F,cacheBlob:$,listCached:W,removeFromCache:_})});function f(t,r){let e=r[t];return e?b(()=>(e.start(),e)):null}o(f,"grabInput");function H(t,r){return I(t,Object.fromEntries(Object.keys(r).map(n=>[n,[]])))}o(H,"groupTracks");export{E as artwork,F as cache,$ as cacheBlob,T as consult,R as detach,C as groupConsult,A as list,W as listCached,_ as removeFromCache,S as resolve}; 2 + 3 + //# sourceMappingURL=./worker.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/input/worker.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/input/worker.js.map
··· 1 + ../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/configurator/input/worker.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/metadata/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/configurator/metadata/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/metadata/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/configurator/metadata/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/metadata/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/configurator/metadata/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/metadata/worker.js
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/components/configurator/metadata/worker.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/metadata/worker.js.br
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/components/configurator/metadata/worker.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/metadata/worker.js.map
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/components/configurator/metadata/worker.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/output/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/configurator/output/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/output/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/configurator/output/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/output/element.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/configurator/output/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/scrobbles/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/configurator/scrobbles/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/scrobbles/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/configurator/scrobbles/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/configurator/scrobbles/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/configurator/scrobbles/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/engine/audio/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/engine/audio/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/engine/audio/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/engine/audio/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/engine/audio/element.js.map
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/engine/audio/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/engine/queue/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/engine/queue/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/engine/queue/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/engine/queue/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/engine/queue/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/engine/queue/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/engine/queue/worker.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/engine/queue/worker.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/engine/queue/worker.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/engine/queue/worker.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/engine/queue/worker.js.map
··· 1 + ../../../../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/components/engine/queue/worker.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/engine/repeat-shuffle/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/engine/repeat-shuffle/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/engine/repeat-shuffle/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/engine/repeat-shuffle/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/engine/repeat-shuffle/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/engine/repeat-shuffle/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/engine/scope/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/engine/scope/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/engine/scope/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/engine/scope/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/engine/scope/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/engine/scope/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/common.js
··· 1 + ../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/input/common.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/common.js.br
··· 1 + ../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/input/common.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/common.js.map
··· 1 + ../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/input/common.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/ephemeral-cache/constants.js
··· 1 + ../../../../bafybeieet7tkfiaiqveyit6c275hhlk2awzqx5d5kflyav7ev3ikqoqgb4/components/input/ephemeral-cache/constants.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/ephemeral-cache/constants.js.br
··· 1 + ../../../../bafybeieet7tkfiaiqveyit6c275hhlk2awzqx5d5kflyav7ev3ikqoqgb4/components/input/ephemeral-cache/constants.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/ephemeral-cache/constants.js.map
··· 1 + ../../../../bafybeieet7tkfiaiqveyit6c275hhlk2awzqx5d5kflyav7ev3ikqoqgb4/components/input/ephemeral-cache/constants.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/ephemeral-cache/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/input/ephemeral-cache/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/ephemeral-cache/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/input/ephemeral-cache/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/ephemeral-cache/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/input/ephemeral-cache/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/ephemeral-cache/worker.js
··· 1 + ../../../../bafybeieet7tkfiaiqveyit6c275hhlk2awzqx5d5kflyav7ev3ikqoqgb4/components/input/ephemeral-cache/worker.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/ephemeral-cache/worker.js.br
··· 1 + ../../../../bafybeieet7tkfiaiqveyit6c275hhlk2awzqx5d5kflyav7ev3ikqoqgb4/components/input/ephemeral-cache/worker.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/ephemeral-cache/worker.js.map
··· 1 + ../../../../bafybeifx752kc2bw6iwva6wlszmblridjre556w2llag4tcnmy76k66r6y/components/input/ephemeral-cache/worker.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/https/common.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/input/https/common.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/https/common.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/input/https/common.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/https/common.js.map
··· 1 + ../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/components/input/https/common.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/https/constants.js
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/https/constants.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/https/constants.js.br
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/https/constants.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/https/constants.js.map
··· 1 + ../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/components/input/https/constants.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/https/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/input/https/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/https/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/input/https/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/https/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/input/https/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/https/worker.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/input/https/worker.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/https/worker.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/input/https/worker.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/https/worker.js.map
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/components/input/https/worker.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/icecast/common.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/input/icecast/common.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/icecast/common.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/input/icecast/common.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/icecast/common.js.map
··· 1 + ../../../../bafybeiexuhqumeljxdmmsdfet5oh2h7pam6fy7gbktqfbsai5qfu2ze6hq/components/input/icecast/common.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/icecast/constants.js
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/icecast/constants.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/icecast/constants.js.br
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/icecast/constants.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/icecast/constants.js.map
··· 1 + ../../../../bafybeiexuhqumeljxdmmsdfet5oh2h7pam6fy7gbktqfbsai5qfu2ze6hq/components/input/icecast/constants.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/icecast/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/input/icecast/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/icecast/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/input/icecast/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/icecast/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/input/icecast/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/icecast/worker.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/input/icecast/worker.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/icecast/worker.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/input/icecast/worker.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/icecast/worker.js.map
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/components/input/icecast/worker.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/local/common.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/input/local/common.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/local/common.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/input/local/common.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/local/common.js.map
··· 1 + ../../../../bafybeiftqofdq4smwmja7bhcconzsevvy3hqxq2mhyujfz4r5zdx4cb5ma/components/input/local/common.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/local/constants.js
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/local/constants.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/local/constants.js.br
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/local/constants.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/local/constants.js.map
··· 1 + ../../../../bafybeiftqofdq4smwmja7bhcconzsevvy3hqxq2mhyujfz4r5zdx4cb5ma/components/input/local/constants.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/local/element.js
··· 1 + import{a as o,g as r,i as l,j as m}from"../../../chunk-MZPUBSAE.js";import{a as u}from"../../../chunk-SVXEMCXP.js";import"../../../chunk-7IN7CTC7.js";import"../../../chunk-7VVACK5Z.js";import"../../../chunk-V5SXC634.js";import"../../../chunk-74D5IDBG.js";import{b as h,e as p}from"../../../chunk-JPVVQ3UF.js";import"../../../chunk-WLXGGMHC.js";import"../../../chunk-QVM63RP5.js";import"../../../chunk-UYT7NSKP.js";import"../../../chunk-MWEXZQ4O.js";import{c as n}from"../../../chunk-K4RUWDWS.js";import"../../../chunk-RPJXLERJ.js";import"../../../chunk-MTCNS3JB.js";import"../../../chunk-YHFKI4Y2.js";import"../../../chunk-GSG5OS62.js";import"../../../chunk-K2CRUTCH.js";import{a as d}from"../../../chunk-BFIVCPQF.js";var a=class extends h{static{d(this,"LocalInput")}static NAME="diffuse/input/local";static WORKER_URL="components/input/local/worker.js";SCHEME=u;#t=new Map;constructor(){super(),this.proxy=this.workerProxy(),this.artwork=this.proxy.artwork,this.consult=this.proxy.consult,this.detach=this.proxy.detach,this.groupConsult=this.proxy.groupConsult,this.list=this.proxy.list,this.resolve=this.proxy.resolve}async connectedCallback(){super.connectedCallback();let s=await r();for(let[t,e]of Object.entries(s))this.#t.set(t,e.name)}async addDirectory(){let s=await globalThis.showDirectoryPicker({mode:"read"}),t=n(),e=await r();return e[t]=s,await l(e),this.#t.set(t,s.name),o(t)}async addFiles(){let s=await globalThis.showOpenFilePicker({multiple:!0}),t=await r(),e=[];for(let c of s){let i=n();t[i]=c,this.#t.set(i,c.name),e.push(o(i))}return await l(t),e}sources(s){return Object.values(m(s)).map(t=>({label:this.#t.get(t)??t,uri:o(t)}))}},C=a,f=a,w="di-local";p(w,f);export{f as CLASS,w as NAME,C as default}; 2 + 3 + //# sourceMappingURL=./element.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/local/element.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/local/element.js.map
··· 1 + ../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/input/local/element.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/local/worker.js
··· 1 + import{a as w,b as x,c as D,d as k,e as H,f as P,g as f,h as g,i as j}from"../../../chunk-MZPUBSAE.js";import{a as m}from"../../../chunk-SVXEMCXP.js";import{c as T}from"../../../chunk-7IN7CTC7.js";import"../../../chunk-7VVACK5Z.js";import"../../../chunk-V5SXC634.js";import"../../../chunk-74D5IDBG.js";import{c as b,i as I}from"../../../chunk-QVM63RP5.js";import"../../../chunk-UYT7NSKP.js";import{c as h}from"../../../chunk-K4RUWDWS.js";import"../../../chunk-RPJXLERJ.js";import"../../../chunk-MTCNS3JB.js";import"../../../chunk-GSG5OS62.js";import"../../../chunk-K2CRUTCH.js";import{a as u}from"../../../chunk-BFIVCPQF.js";async function v(t){return null}u(v,"artwork");async function U(t){if(!P())return{supported:!1,reason:"No browser support"};if(!t.includes(":"))return{supported:!0,consult:"undetermined"};let n=g(t);if(!n)return{supported:!1,reason:"Unknown handle"};let r=(await f())[n.tid];return r?{supported:!0,consult:await r.queryPermission({mode:"read"})==="granted"}:{supported:!1,reason:"Unknown handle"}}u(U,"consult");async function E({fileUriOrScheme:t,tracks:n}){if(!t.includes("://"))return t===m?[]:n;let e=g(t);if(!e)return n;let{tid:r}=e,s=k(n);delete s[r];let o=await f();return delete o[r],await j(o),Object.values(s).map(i=>i.tracks).flat(1)}u(E,"detach");async function R(t){let n=H(t),e=await f(),r=Object.entries(n).flatMap(async([o,{uris:i}])=>{let y=e[o];if(!y)return[];let a=await y.queryPermission({mode:"read"})==="granted",p=a?{available:a,scheme:m,uris:i}:{available:!1,reason:"Permission not granted",scheme:m,uris:i};return[{key:T(m,o),grouping:p}]}),s=(await Promise.all(r)).flat(1);return Object.fromEntries(s.map(o=>[o.key,o.grouping]))}u(R,"groupConsult");async function $(t=[]){let n=await f(),e=new Date().toISOString(),r={};t.forEach(a=>{r[a.uri]=a});let s=k(t),i=[...new Set(Object.keys(s))].map(async a=>{let p=n[a];if(!p)return s[a]?.tracks??[];if(await p.queryPermission({mode:"read"})!=="granted"){let d=s[a]?.tracks[0];return[{$type:"sh.diffuse.output.track",id:d?.id??h(),createdAt:d?.createdAt??e,updatedAt:e,kind:"placeholder",uri:w(a)}]}if(p.kind==="file"){let d=w(a),c=r[d];return[{$type:"sh.diffuse.output.track",id:c?.id??h(),createdAt:c?.createdAt??e,updatedAt:c?.updatedAt??e,stats:c?.stats,tags:c?.tags,uri:d}]}let A=await x(p);return A.length?A.map(d=>{let c=w(a,d),l=r[c];return{$type:"sh.diffuse.output.track",id:l?.id??h(),createdAt:l?.createdAt??e,updatedAt:l?.updatedAt??e,stats:l?.stats,tags:l?.tags,uri:c}}):[{$type:"sh.diffuse.output.track",id:h(),createdAt:e,updatedAt:e,kind:"placeholder",uri:w(a)}]});return(await Promise.all(i)).flat(1)}u($,"list");async function q({uri:t}){let n=g(t);if(!n)return;let r=(await f())[n.tid],s=n.path.replace(/^\//,"");if(!r||r.kind==="directory"&&s==="")return;let i=await(await D(r,s)).getFile();return{url:URL.createObjectURL(i),expiresAt:1/0}}u(q,"resolve");b(t=>{I(t,{artwork:v,consult:U,detach:E,groupConsult:R,list:$,resolve:q})});export{v as artwork,U as consult,E as detach,R as groupConsult,$ as list,q as resolve}; 2 + 3 + //# sourceMappingURL=./worker.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/local/worker.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/local/worker.js.map
··· 1 + ../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/input/local/worker.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/opensubsonic/class.js
··· 1 + ../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/components/input/opensubsonic/class.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/opensubsonic/class.js.br
··· 1 + ../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/components/input/opensubsonic/class.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/opensubsonic/class.js.map
··· 1 + ../../../../bafybeidxl54c4ymomv6kytxqps6b5di34hgltpvyomx52g65lplv6dosxy/components/input/opensubsonic/class.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/opensubsonic/common.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/input/opensubsonic/common.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/opensubsonic/common.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/input/opensubsonic/common.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/opensubsonic/common.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/input/opensubsonic/common.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/opensubsonic/constants.js
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/opensubsonic/constants.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/opensubsonic/constants.js.br
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/opensubsonic/constants.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/opensubsonic/constants.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/input/opensubsonic/constants.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/opensubsonic/element.js
··· 1 + import{b as p,i as n}from"../../../chunk-EGZNAJEA.js";import"../../../chunk-BUMY6KL7.js";import"../../../chunk-7IN7CTC7.js";import{a as i}from"../../../chunk-VJVS6ZD2.js";import"../../../chunk-V5SXC634.js";import"../../../chunk-74D5IDBG.js";import{b as r,e}from"../../../chunk-JPVVQ3UF.js";import"../../../chunk-WLXGGMHC.js";import"../../../chunk-QVM63RP5.js";import"../../../chunk-UYT7NSKP.js";import"../../../chunk-MWEXZQ4O.js";import"../../../chunk-YHFKI4Y2.js";import"../../../chunk-GSG5OS62.js";import"../../../chunk-K2CRUTCH.js";import{a as o}from"../../../chunk-BFIVCPQF.js";var t=class extends r{static{o(this,"OpensubsonicInput")}static NAME="diffuse/input/opensubsonic";static WORKER_URL="components/input/opensubsonic/worker.js";SCHEME=i;constructor(){super(),this.proxy=this.workerProxy(),this.artwork=this.proxy.artwork,this.consult=this.proxy.consult,this.detach=this.proxy.detach,this.groupConsult=this.proxy.groupConsult,this.list=this.proxy.list,this.resolve=this.proxy.resolve}sources(u){return Object.values(n(u)).map(s=>({label:s.host,uri:p(s)}))}},f=t,c=t,h="di-opensubsonic";e(h,c);export{c as CLASS,h as NAME,f as default}; 2 + 3 + //# sourceMappingURL=./element.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/opensubsonic/element.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/opensubsonic/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/input/opensubsonic/element.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/opensubsonic/worker.js
··· 1 + import{a as O,b as v,d as I,e as h,f as T,g as D,h as l,j as y}from"../../../chunk-EGZNAJEA.js";import"../../../chunk-BUMY6KL7.js";import{b as R,c as U}from"../../../chunk-7IN7CTC7.js";import{a as m}from"../../../chunk-VJVS6ZD2.js";import{i as k,k as x}from"../../../chunk-V5SXC634.js";import"../../../chunk-74D5IDBG.js";import"../../../chunk-WLXGGMHC.js";import{c as A,i as S}from"../../../chunk-QVM63RP5.js";import"../../../chunk-UYT7NSKP.js";import{c as w}from"../../../chunk-K4RUWDWS.js";import"../../../chunk-RPJXLERJ.js";import"../../../chunk-MTCNS3JB.js";import"../../../chunk-GSG5OS62.js";import"../../../chunk-K2CRUTCH.js";import{a as u}from"../../../chunk-BFIVCPQF.js";async function E(r){let t=l(r);if(!t?.songId)return null;let i=await h(t.server).getCoverArt({id:t.songId}).catch(()=>null);return!i?.ok||!i.headers.get("content-type")?.startsWith("image/")?null:new Uint8Array(await i.arrayBuffer())}u(E,"artwork");async function B(r){if(!r.includes(":"))return{supported:!0,consult:"undetermined"};let t=l(r);return t?{supported:!0,consult:await I(t.server)}:{supported:!0,consult:"undetermined"}}u(B,"consult");async function M(r){return R({...r,inputScheme:m,handleFileUri:u(({fileURI:t,tracks:a})=>{let i=l(t);if(!i)return a;let d=y(i.server),c=T(a);return delete c[d],Object.values(c).map(n=>n.tracks).flat(1)},"handleFileUri")})}u(M,"detach");async function P(r){let t=D(r),a=Object.entries(t).map(async([d,{server:c,uris:n}])=>{let s=await I(c),o=s?{available:s,scheme:m,uris:n}:{available:s,reason:"Server ping failed",scheme:m,uris:n};return{key:U(m,d),grouping:o}}),i=(await Promise.all(a)).map(d=>[d.key,d.grouping]);return Object.fromEntries(i)}u(P,"groupConsult");async function $(r=[]){let t={},a={};r.forEach(n=>{let s=l(n.uri);if(!s||s.path===void 0)return;let o=y(s.server);a[o]=s.server;let f=x(s.path);t[o]??={},t[o][f]=n});async function i(n,s=0){let f=(await n.search3({query:"",artistCount:0,albumCount:0,songCount:1e3,songOffset:s})).searchResult3.song||[];if(f.length===1e3){let p=await i(n,s+1e3);return[...f,...p]}return f}u(i,"search");let d=Object.values(a).map(async n=>{let s=h(n),o=y(n),p=(await i(s,0)).filter(e=>!e.isVideo).map(e=>{let b=e.path?e.path.startsWith("/")?e.path:`/${e.path}`:void 0,g=b?t[o]?.[b]:void 0;if(g)return g;let C=new Date().toISOString();return{$type:"sh.diffuse.output.track",id:w(),createdAt:C,updatedAt:C,kind:O(e.type),uri:v(n,{songId:e.id,path:b}),stats:k({albumGain:void 0,bitrate:e.bitRate?Math.round(e.bitRate*1e3):void 0,bitsPerSample:void 0,codec:void 0,container:void 0,duration:e.duration!=null?Math.round(e.duration*1e3):void 0,lossless:void 0,numberOfChannels:void 0,sampleRate:void 0,trackGain:void 0}),tags:k({album:e.album,albumartist:e.albumArtists?.[0]?.name,albumartists:e.albumArtists?.map(j=>j.name),albumartistsort:e.albumArtists?.[0]?.sortName,albumsort:void 0,arranger:void 0,artist:e.artist??e.displayArtist,artists:void 0,artistsort:void 0,asin:void 0,averageLevel:void 0,barcode:void 0,bpm:e.bpm,catalognumbers:void 0,compilation:void 0,composers:e.displayComposer?[e.displayComposer]:void 0,composersort:void 0,conductors:void 0,date:void 0,disc:{no:e.discNumber||1},djmixers:void 0,engineers:void 0,gapless:void 0,genres:e.genres,isrc:void 0,labels:void 0,lyricists:void 0,media:void 0,mixers:void 0,moods:e.moods,originaldate:void 0,originalyear:void 0,peakLevel:void 0,producers:void 0,publishers:void 0,releasecountry:void 0,releasedate:void 0,releasestatus:void 0,releasetypes:void 0,remixers:void 0,technicians:void 0,title:e.title??"Unknown",titlesort:void 0,track:{no:e.track??1,of:e.size},work:void 0,writers:void 0,year:e.year})}});if(!p.length){let e=new Date().toISOString();p=[{$type:"sh.diffuse.output.track",id:w(),createdAt:e,updatedAt:e,kind:"placeholder",uri:v(n)}]}return p});return(await Promise.all(d)).flat(1)}u($,"list");async function F({uri:r}){let t=l(r);if(!t)return;let a=h(t.server),i=t.songId;return i?{expiresAt:1/0,url:await a.stream({id:i,format:"raw"}).then(c=>c.url)}:void 0}u(F,"resolve");A(r=>{S(r,{artwork:E,consult:B,detach:M,groupConsult:P,list:$,resolve:F})});export{E as artwork,B as consult,M as detach,P as groupConsult,$ as list,F as resolve}; 2 + 3 + //# sourceMappingURL=./worker.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/opensubsonic/worker.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/opensubsonic/worker.js.map
··· 1 + ../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/input/opensubsonic/worker.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/s3/common.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/input/s3/common.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/s3/common.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/input/s3/common.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/s3/common.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/input/s3/common.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/s3/constants.js
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/s3/constants.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/s3/constants.js.br
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/input/s3/constants.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/s3/constants.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/input/s3/constants.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/s3/element.js
··· 1 + import{a as p,c as u}from"../../../chunk-ENJURKXP.js";import"../../../chunk-7IN7CTC7.js";import{c as i}from"../../../chunk-IUBFNQRH.js";import"../../../chunk-7VVACK5Z.js";import"../../../chunk-V5SXC634.js";import"../../../chunk-74D5IDBG.js";import{b as r,e}from"../../../chunk-JPVVQ3UF.js";import"../../../chunk-WLXGGMHC.js";import"../../../chunk-QVM63RP5.js";import"../../../chunk-UYT7NSKP.js";import"../../../chunk-MWEXZQ4O.js";import"../../../chunk-YHFKI4Y2.js";import"../../../chunk-GSG5OS62.js";import"../../../chunk-K2CRUTCH.js";import{a as o}from"../../../chunk-BFIVCPQF.js";var t=class extends r{static{o(this,"S3Input")}static NAME="diffuse/input/s3";static WORKER_URL="components/input/s3/worker.js";SCHEME=i;constructor(){super(),this.proxy=this.workerProxy(),this.artwork=this.proxy.artwork,this.consult=this.proxy.consult,this.detach=this.proxy.detach,this.groupConsult=this.proxy.groupConsult,this.list=this.proxy.list,this.resolve=this.proxy.resolve,this.demo=this.proxy.demo}sources(h){return Object.values(p(h)).map(s=>({label:`${s.bucketName} (${s.host})`,uri:u(s)}))}},d=t,c=t,l="di-s3";e(l,c);export{c as CLASS,l as NAME,d as default}; 2 + 3 + //# sourceMappingURL=./element.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/s3/element.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/s3/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/input/s3/element.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/s3/worker.js
··· 1 + import{b as f,c as m,e as y,f as g,h as U,i as R,k as l}from"../../../chunk-ENJURKXP.js";import{b as x,c as D,d as T}from"../../../chunk-7IN7CTC7.js";import{c as d}from"../../../chunk-IUBFNQRH.js";import"../../../chunk-7VVACK5Z.js";import"../../../chunk-V5SXC634.js";import"../../../chunk-74D5IDBG.js";import"../../../chunk-WLXGGMHC.js";import{c as I,i as A}from"../../../chunk-QVM63RP5.js";import"../../../chunk-UYT7NSKP.js";import{c as k}from"../../../chunk-K4RUWDWS.js";import"../../../chunk-RPJXLERJ.js";import"../../../chunk-MTCNS3JB.js";import"../../../chunk-GSG5OS62.js";import"../../../chunk-K2CRUTCH.js";import{a as u}from"../../../chunk-BFIVCPQF.js";async function F(t){return null}u(F,"artwork");async function O(t){if(!t.includes(":"))return{supported:!0,consult:"undetermined"};let e=l(t);return e?{supported:!0,consult:await y(e.bucket)}:{supported:!0,consult:"undetermined"}}u(O,"consult");async function C(t){return x({...t,inputScheme:d,handleFileUri:u(({fileURI:e,tracks:n})=>{let s=l(e);if(!s)return n;let a=f(s.bucket),r=U(n);return delete r[a],Object.values(r).map(o=>o.tracks).flat(1)},"handleFileUri")})}u(C,"detach");async function E(t){let e=R(t),n=Object.entries(e).map(async([a,{bucket:r,uris:o}])=>{let c=await y(r),b=c?{available:c,scheme:d,uris:o}:{available:c,reason:"Bucket unavailable",scheme:d,uris:o};return{key:D(d,a),grouping:b}}),s=(await Promise.all(n)).map(a=>[a.key,a.grouping]);return Object.fromEntries(s)}u(E,"groupConsult");async function v(t=[]){let e={},n={};t.forEach(r=>{let o=l(r.uri);if(!o)return;let c=f(o.bucket);n[c]=o.bucket,e[c]?e[c][o.path]=r:e[c]={[o.path]:r}});let s=Object.values(n).map(async r=>{let o=g(r),c=f(r),h=(await Array.fromAsync(o.listObjects({prefix:r.path.replace(/^\//,"")}))).filter(i=>T(i.key)).map(i=>{let p=e[c]?.[i.key],S=p?.id||k(),j=p?.stats,B=p?.tags,w=new Date().toISOString();return{$type:"sh.diffuse.output.track",id:S,createdAt:p?.createdAt??w,updatedAt:p?.updatedAt??w,stats:j,tags:B,uri:m(r,i.key)}});if(!h.length){let i=new Date().toISOString();h=[{$type:"sh.diffuse.output.track",id:k(),createdAt:i,updatedAt:i,kind:"placeholder",uri:m(r)}]}return h});return(await Promise.all(s)).flat(1)}u(v,"list");async function P({method:t,uri:e}){let n=l(e);if(!n)return;let s=3600*24*7,a=Math.round(Date.now()/1e3)+s,o=await g(n.bucket).getPresignedUrl(t?.toUpperCase()??"GET",n.path);return{expiresAt:a,url:o}}u(P,"resolve");function Q(){let t={accessKey:atob("QUtJQTZPUTNFVk1BWFZDRFFINkI="),bucketName:"ongaku-ryoho-demo",host:"s3.amazonaws.com",path:"/",region:"us-east-1",secretKey:atob("Z0hPQkdHRzU1aXc0a0RDbjdjWlRJYTVTUDRZWnpERkRzQnFCYWI4Mg==")},e=m(t),n=new Date().toISOString(),s={$type:"sh.diffuse.output.track",id:k(),createdAt:n,updatedAt:n,kind:"placeholder",uri:e};return{bucket:t,track:s}}u(Q,"demo");I(t=>{A(t,{artwork:F,consult:O,detach:C,groupConsult:E,list:v,resolve:P,demo:Q})});export{F as artwork,O as consult,Q as demo,C as detach,E as groupConsult,v as list,P as resolve}; 2 + 3 + //# sourceMappingURL=./worker.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/s3/worker.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/input/s3/worker.js.map
··· 1 + ../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/input/s3/worker.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/metadata/audio-file/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/metadata/audio-file/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/metadata/audio-file/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/metadata/audio-file/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/metadata/audio-file/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/metadata/audio-file/element.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/metadata/audio-file/worker.js
··· 1 + import{a as f}from"../../../chunk-YWNAFWKH.js";import"../../../chunk-TAKUCXMA.js";import"../../../chunk-Z5PWRR3Q.js";import"../../../chunk-ATHACRS2.js";import"../../../chunk-W5CILZJO.js";import"../../../chunk-VYV6NEIN.js";import"../../../chunk-MSK7QOJU.js";import"../../../chunk-BNUDHFYP.js";import"../../../chunk-AUOLVULE.js";import"../../../chunk-V5SXC634.js";import"../../../chunk-74D5IDBG.js";import{c as o,e as d,i as m}from"../../../chunk-QVM63RP5.js";import"../../../chunk-UYT7NSKP.js";import"../../../chunk-MTCNS3JB.js";import"../../../chunk-GSG5OS62.js";import"../../../chunk-K2CRUTCH.js";import{a as s}from"../../../chunk-BFIVCPQF.js";async function p({data:t,ports:n}){let i=d(()=>(n.input.start(),n.input)),e=await i.resolve({method:"GET",uri:t.uri});if(!e)return t;let r="stream"in e?void 0:await i.resolve({method:"HEAD",uri:t.uri}),{stats:a,tags:u}=await f({stream:"stream"in e?e.stream:void 0,mimeType:"stream"in e?e.mimeType:void 0,urls:"url"in e?{get:e.url,head:r&&"url"in r?r.url:e.url}:void 0}).catch(l=>(console.warn("audio-file metadata error",l),{}));return!u&&!a?t:{...t,stats:a,tags:u,updatedAt:new Date().toISOString()}}s(p,"patch");o(t=>{m(t,{patch:p})});export{p as patch}; 2 + 3 + //# sourceMappingURL=./worker.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/metadata/audio-file/worker.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/metadata/audio-file/worker.js.map
··· 1 + ../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/metadata/audio-file/worker.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/metadata/common.js
··· 1 + import{a}from"../../chunk-YWNAFWKH.js";import"../../chunk-TAKUCXMA.js";import"../../chunk-Z5PWRR3Q.js";import"../../chunk-ATHACRS2.js";import"../../chunk-W5CILZJO.js";import"../../chunk-VYV6NEIN.js";import"../../chunk-MSK7QOJU.js";import"../../chunk-BNUDHFYP.js";import"../../chunk-AUOLVULE.js";import"../../chunk-V5SXC634.js";import"../../chunk-74D5IDBG.js";import"../../chunk-MTCNS3JB.js";import"../../chunk-GSG5OS62.js";import"../../chunk-BFIVCPQF.js";export{a as musicMetadataTags}; 2 + 3 + //# sourceMappingURL=./common.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/metadata/common.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/metadata/common.js.map
··· 1 + ../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/components/metadata/common.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/artwork/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/artwork/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/artwork/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/artwork/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/artwork/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/orchestrator/artwork/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/artwork/worker.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/artwork/worker.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/artwork/worker.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/artwork/worker.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/artwork/worker.js.map
··· 1 + ../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/orchestrator/artwork/worker.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/auto-queue/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/auto-queue/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/auto-queue/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/auto-queue/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/auto-queue/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/orchestrator/auto-queue/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/controller/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/controller/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/controller/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/controller/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/controller/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/orchestrator/controller/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/favourites/common.js
··· 1 + ../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/orchestrator/favourites/common.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/favourites/common.js.br
··· 1 + ../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/orchestrator/favourites/common.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/favourites/common.js.map
··· 1 + ../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/components/orchestrator/favourites/common.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/favourites/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/favourites/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/favourites/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/favourites/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/favourites/element.js.map
··· 1 + ../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/orchestrator/favourites/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/favourites/worker.js
··· 1 + ../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/orchestrator/favourites/worker.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/favourites/worker.js.br
··· 1 + ../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/orchestrator/favourites/worker.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/favourites/worker.js.map
··· 1 + ../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/orchestrator/favourites/worker.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/media-session/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/media-session/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/media-session/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/media-session/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/media-session/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/orchestrator/media-session/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/offline/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/offline/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/offline/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/offline/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/offline/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/orchestrator/offline/element.js.map
+34
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/output/element.js
··· 1 + import"../../../chunk-J4KMYVZI.js";import{a as o}from"../../../chunk-HDWT7CXU.js";import"../../../chunk-PU3KOTNM.js";import"../../../chunk-NEVFAOVJ.js";import"../../../chunk-PUCB64SE.js";import"../../../chunk-ZFCADOB7.js";import"../../../chunk-E6MUW73D.js";import"../../../chunk-6NC6NOLO.js";import"../../../chunk-PYJ4JJFC.js";import"../../../chunk-7VVACK5Z.js";import"../../../chunk-74D5IDBG.js";import"../../../chunk-J3RODCWD.js";import"../../../chunk-CQ2X4SJL.js";import"../../../chunk-6TMSPXBP.js";import{a as i,b as n,e as d}from"../../../chunk-JPVVQ3UF.js";import"../../../chunk-WLXGGMHC.js";import"../../../chunk-QVM63RP5.js";import"../../../chunk-UYT7NSKP.js";import"../../../chunk-MWEXZQ4O.js";import"../../../chunk-YHFKI4Y2.js";import"../../../chunk-PMV3ISAT.js";import"../../../chunk-K2CRUTCH.js";import{a as r}from"../../../chunk-BFIVCPQF.js";var u=class extends n{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 settings(){return this.output.settings}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)}get waitForOption(){return this.outputConfigurator.waitForOption.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="${this.namespace?this.namespace+"/":""}json" 5 + group="${o(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="${o(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 + group="${o(e)}" 31 + ></dtor-default> 32 + `}},m=u,s=u,p="do-output";d(p,s);export{s as CLASS,p as NAME,m as default}; 33 + 34 + //# sourceMappingURL=./element.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/output/element.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/output/element.js.map
··· 1 + ../../../../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/components/orchestrator/output/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/path-collections/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/path-collections/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/path-collections/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/path-collections/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/path-collections/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/orchestrator/path-collections/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/process-tracks/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/process-tracks/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/process-tracks/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/process-tracks/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/process-tracks/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/orchestrator/process-tracks/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/process-tracks/worker.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/process-tracks/worker.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/process-tracks/worker.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/process-tracks/worker.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/process-tracks/worker.js.map
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/components/orchestrator/process-tracks/worker.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/queue-audio/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/queue-audio/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/queue-audio/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/queue-audio/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/queue-audio/element.js.map
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/queue-audio/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/scoped-tracks/constants.js
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/components/orchestrator/scoped-tracks/constants.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/scoped-tracks/constants.js.br
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/components/orchestrator/scoped-tracks/constants.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/scoped-tracks/constants.js.map
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/components/orchestrator/scoped-tracks/constants.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/scoped-tracks/element.js
··· 1 + ../../../../bafybeidcqjj5ooqx36uomtsgqcpuu5bjordymamrliah7o2bq7ghzvfxgm/components/orchestrator/scoped-tracks/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/scoped-tracks/element.js.br
··· 1 + ../../../../bafybeidcqjj5ooqx36uomtsgqcpuu5bjordymamrliah7o2bq7ghzvfxgm/components/orchestrator/scoped-tracks/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/scoped-tracks/element.js.map
··· 1 + ../../../../bafybeidcqjj5ooqx36uomtsgqcpuu5bjordymamrliah7o2bq7ghzvfxgm/components/orchestrator/scoped-tracks/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/scoped-tracks/worker.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/scoped-tracks/worker.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/scoped-tracks/worker.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/scoped-tracks/worker.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/scoped-tracks/worker.js.map
··· 1 + ../../../../bafybeifx752kc2bw6iwva6wlszmblridjre556w2llag4tcnmy76k66r6y/components/orchestrator/scoped-tracks/worker.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/scrobble-audio/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/scrobble-audio/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/scrobble-audio/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/scrobble-audio/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/scrobble-audio/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/orchestrator/scrobble-audio/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/sources/constants.js
··· 1 + ../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/orchestrator/sources/constants.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/sources/constants.js.br
··· 1 + ../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/orchestrator/sources/constants.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/sources/constants.js.map
··· 1 + ../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/orchestrator/sources/constants.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/sources/element.js
··· 1 + ../../../../bafybeidcqjj5ooqx36uomtsgqcpuu5bjordymamrliah7o2bq7ghzvfxgm/components/orchestrator/sources/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/sources/element.js.br
··· 1 + ../../../../bafybeidcqjj5ooqx36uomtsgqcpuu5bjordymamrliah7o2bq7ghzvfxgm/components/orchestrator/sources/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/orchestrator/sources/element.js.map
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/orchestrator/sources/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/bytes/s3/constants.js
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/components/output/bytes/s3/constants.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/bytes/s3/constants.js.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/components/output/bytes/s3/constants.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/bytes/s3/constants.js.map
··· 1 + ../../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/components/output/bytes/s3/constants.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/bytes/s3/element.js
··· 1 + ../../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/output/bytes/s3/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/bytes/s3/element.js.br
··· 1 + ../../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/output/bytes/s3/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/bytes/s3/element.js.map
··· 1 + ../../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/output/bytes/s3/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/bytes/s3/worker.js
··· 1 + ../../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/output/bytes/s3/worker.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/bytes/s3/worker.js.br
··· 1 + ../../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/output/bytes/s3/worker.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/bytes/s3/worker.js.map
··· 1 + ../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/components/output/bytes/s3/worker.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/common.js
··· 1 + ../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/output/common.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/common.js.br
··· 1 + ../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/output/common.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/common.js.map
··· 1 + ../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/output/common.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/polymorphic/indexed-db/constants.js
··· 1 + ../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/output/polymorphic/indexed-db/constants.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/polymorphic/indexed-db/constants.js.br
··· 1 + ../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/output/polymorphic/indexed-db/constants.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/polymorphic/indexed-db/constants.js.map
··· 1 + ../../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/output/polymorphic/indexed-db/constants.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/polymorphic/indexed-db/element.js
··· 1 + ../../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/output/polymorphic/indexed-db/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/polymorphic/indexed-db/element.js.br
··· 1 + ../../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/output/polymorphic/indexed-db/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/polymorphic/indexed-db/element.js.map
··· 1 + ../../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/output/polymorphic/indexed-db/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/raw/atproto/element.js
··· 1 + ../../../../../bafybeihzludo5x22nr2zodymph5oifvuj36mvr6pn7zktsgzqxgx6defq4/components/output/raw/atproto/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/raw/atproto/element.js.br
··· 1 + ../../../../../bafybeihzludo5x22nr2zodymph5oifvuj36mvr6pn7zktsgzqxgx6defq4/components/output/raw/atproto/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/raw/atproto/element.js.map
··· 1 + ../../../../../bafybeihzludo5x22nr2zodymph5oifvuj36mvr6pn7zktsgzqxgx6defq4/components/output/raw/atproto/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/raw/atproto/oauth-client-metadata.json
··· 1 + ../../../../../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/components/output/raw/atproto/oauth-client-metadata.json
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/raw/atproto/oauth-client-metadata.json.br
··· 1 + ../../../../../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/components/output/raw/atproto/oauth-client-metadata.json.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/raw/atproto/oauth.js
··· 1 + ../../../../../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/components/output/raw/atproto/oauth.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/raw/atproto/oauth.js.br
··· 1 + ../../../../../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/components/output/raw/atproto/oauth.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/output/raw/atproto/oauth.js.map
··· 1 + ../../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/components/output/raw/atproto/oauth.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/supplement/last.fm/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/supplement/last.fm/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/supplement/last.fm/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/supplement/last.fm/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/supplement/last.fm/element.js.map
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/supplement/last.fm/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/supplement/listenbrainz/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/supplement/listenbrainz/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/supplement/listenbrainz/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/supplement/listenbrainz/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/supplement/listenbrainz/element.js.map
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/supplement/listenbrainz/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/supplement/rocksky/element.js
··· 1 + ../../../../bafybeihzludo5x22nr2zodymph5oifvuj36mvr6pn7zktsgzqxgx6defq4/components/supplement/rocksky/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/supplement/rocksky/element.js.br
··· 1 + ../../../../bafybeihzludo5x22nr2zodymph5oifvuj36mvr6pn7zktsgzqxgx6defq4/components/supplement/rocksky/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/supplement/rocksky/element.js.map
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/supplement/rocksky/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/supplement/rocksky/oauth-client-metadata.json
··· 1 + ../../../../bafybeifk3idtk5ytkhfeerkhjjsxp6r473jckrigzh7ujrx72kmhqqkulu/components/supplement/rocksky/oauth-client-metadata.json
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/supplement/rocksky/oauth-client-metadata.json.br
··· 1 + ../../../../bafybeifk3idtk5ytkhfeerkhjjsxp6r473jckrigzh7ujrx72kmhqqkulu/components/supplement/rocksky/oauth-client-metadata.json.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/supplement/rocksky/oauth.js
··· 1 + ../../../../bafybeifk3idtk5ytkhfeerkhjjsxp6r473jckrigzh7ujrx72kmhqqkulu/components/supplement/rocksky/oauth.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/supplement/rocksky/oauth.js.br
··· 1 + ../../../../bafybeifk3idtk5ytkhfeerkhjjsxp6r473jckrigzh7ujrx72kmhqqkulu/components/supplement/rocksky/oauth.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/supplement/rocksky/oauth.js.map
··· 1 + ../../../../bafybeifk3idtk5ytkhfeerkhjjsxp6r473jckrigzh7ujrx72kmhqqkulu/components/supplement/rocksky/oauth.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/supplement/session.js
··· 1 + ../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/supplement/session.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/supplement/session.js.br
··· 1 + ../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/supplement/session.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/supplement/session.js.map
··· 1 + ../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/supplement/session.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/base.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/transformer/output/base.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/base.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/transformer/output/base.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/base.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/transformer/output/base.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/bytes/automerge/constants.js
··· 1 + ../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/transformer/output/bytes/automerge/constants.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/bytes/automerge/constants.js.br
··· 1 + ../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/transformer/output/bytes/automerge/constants.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/bytes/automerge/constants.js.map
··· 1 + ../../../../../../bafybeieo3vdz7hmuriods6ueueg5yt6xctzjqrmqdasqr4plalwojiwvou/components/transformer/output/bytes/automerge/constants.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/bytes/automerge/element.js
··· 1 + ../../../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/transformer/output/bytes/automerge/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/bytes/automerge/element.js.br
··· 1 + ../../../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/transformer/output/bytes/automerge/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/bytes/automerge/element.js.map
··· 1 + ../../../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/transformer/output/bytes/automerge/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/bytes/automerge/utils.js
··· 1 + ../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/transformer/output/bytes/automerge/utils.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/bytes/automerge/utils.js.br
··· 1 + ../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/transformer/output/bytes/automerge/utils.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/bytes/automerge/utils.js.map
··· 1 + ../../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/transformer/output/bytes/automerge/utils.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/bytes/dasl-sync/constants.js
··· 1 + ../../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/transformer/output/bytes/dasl-sync/constants.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/bytes/dasl-sync/constants.js.br
··· 1 + ../../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/transformer/output/bytes/dasl-sync/constants.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/bytes/dasl-sync/constants.js.map
··· 1 + ../../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/components/transformer/output/bytes/dasl-sync/constants.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/bytes/dasl-sync/element.js
··· 1 + ../../../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/transformer/output/bytes/dasl-sync/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/bytes/dasl-sync/element.js.br
··· 1 + ../../../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/transformer/output/bytes/dasl-sync/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/bytes/dasl-sync/element.js.map
··· 1 + ../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/transformer/output/bytes/dasl-sync/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/bytes/json/element.js
··· 1 + ../../../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/transformer/output/bytes/json/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/bytes/json/element.js.br
··· 1 + ../../../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/transformer/output/bytes/json/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/bytes/json/element.js.map
··· 1 + ../../../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/transformer/output/bytes/json/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/raw/atproto-sync/element.js
··· 1 + ../../../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/transformer/output/raw/atproto-sync/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/raw/atproto-sync/element.js.br
··· 1 + ../../../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/transformer/output/raw/atproto-sync/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/raw/atproto-sync/element.js.map
··· 1 + ../../../../../../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/components/transformer/output/raw/atproto-sync/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/refiner/default/element.js
··· 1 + ../../../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/transformer/output/refiner/default/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/refiner/default/element.js.br
··· 1 + ../../../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/transformer/output/refiner/default/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/refiner/default/element.js.map
··· 1 + ../../../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/transformer/output/refiner/default/element.js.map
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/refiner/initial-contents/element.js
··· 1 + import{a,b,c}from"../../../../../chunk-NEVFAOVJ.js";import"../../../../../chunk-PUCB64SE.js";import"../../../../../chunk-PYJ4JJFC.js";import"../../../../../chunk-7VVACK5Z.js";import"../../../../../chunk-74D5IDBG.js";import"../../../../../chunk-JPVVQ3UF.js";import"../../../../../chunk-WLXGGMHC.js";import"../../../../../chunk-QVM63RP5.js";import"../../../../../chunk-UYT7NSKP.js";import"../../../../../chunk-MWEXZQ4O.js";import"../../../../../chunk-YHFKI4Y2.js";import"../../../../../chunk-PMV3ISAT.js";import"../../../../../chunk-K2CRUTCH.js";import"../../../../../chunk-BFIVCPQF.js";export{b as CLASS,c as NAME,a as default}; 2 + 3 + //# sourceMappingURL=./element.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/refiner/initial-contents/element.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/refiner/initial-contents/element.js.map
··· 1 + ../../../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/components/transformer/output/refiner/initial-contents/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/refiner/passkey-encryption/element.js
··· 1 + ../../../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/transformer/output/refiner/passkey-encryption/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/refiner/passkey-encryption/element.js.br
··· 1 + ../../../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/transformer/output/refiner/passkey-encryption/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/refiner/passkey-encryption/element.js.map
··· 1 + ../../../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/components/transformer/output/refiner/passkey-encryption/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/refiner/passkey-encryption/passkey.js
··· 1 + ../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/transformer/output/refiner/passkey-encryption/passkey.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/refiner/passkey-encryption/passkey.js.br
··· 1 + ../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/components/transformer/output/refiner/passkey-encryption/passkey.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/refiner/passkey-encryption/passkey.js.map
··· 1 + ../../../../../../bafybeifx752kc2bw6iwva6wlszmblridjre556w2llag4tcnmy76k66r6y/components/transformer/output/refiner/passkey-encryption/passkey.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/string/json/element.js
··· 1 + ../../../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/transformer/output/string/json/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/string/json/element.js.br
··· 1 + ../../../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/components/transformer/output/string/json/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/components/transformer/output/string/json/element.js.map
··· 1 + ../../../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/transformer/output/string/json/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/dashboard/index.html
··· 1 + ../../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/dashboard/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/dashboard/index.html.br
··· 1 + ../../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/dashboard/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/definitions/index.ts
··· 1 + ../../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/definitions/index.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/definitions/output/collaboration.json
··· 1 + ../../../bafybeiairw5zug6xd6xosgopcoyu3ieg4kiiesvqeszsk2xvipvsoxasvy/definitions/output/collaboration.json
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/definitions/output/collaboration.json.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/definitions/output/collaboration.json.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/definitions/output/facet.json
··· 1 + ../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/definitions/output/facet.json
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/definitions/output/facet.json.br
··· 1 + ../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/definitions/output/facet.json.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/definitions/output/playlistItem.json
··· 1 + ../../../bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/definitions/output/playlistItem.json
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/definitions/output/playlistItem.json.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/definitions/output/playlistItem.json.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/definitions/output/setting.json
··· 1 + ../../../bafybeifx752kc2bw6iwva6wlszmblridjre556w2llag4tcnmy76k66r6y/definitions/output/setting.json
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/definitions/output/setting.json.br
··· 1 + ../../../bafybeifx752kc2bw6iwva6wlszmblridjre556w2llag4tcnmy76k66r6y/definitions/output/setting.json.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/definitions/output/track.json
··· 1 + ../../../bafybeiexuhqumeljxdmmsdfet5oh2h7pam6fy7gbktqfbsai5qfu2ze6hq/definitions/output/track.json
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/definitions/output/track.json.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/definitions/output/track.json.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/definitions/output/trackBundle.json
··· 1 + ../../../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/definitions/output/trackBundle.json
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/definitions/output/trackBundle.json.br
··· 1 + ../../../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/definitions/output/trackBundle.json.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/demo/index.html
··· 1 + ../../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/demo/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/demo/index.html.br
··· 1 + ../../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/demo/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/dist-F262EKBK.js
··· 1 + ../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/dist-F262EKBK.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/dist-F262EKBK.js.br
··· 1 + ../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/dist-F262EKBK.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/dist-F262EKBK.js.map
··· 1 + ../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/dist-F262EKBK.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/elements/index.html
··· 1 + ../../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/elements/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/elements/index.html.br
··· 1 + ../../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/elements/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/connect/atproto/index.html
··· 1 + ../../../../bafybeifk3idtk5ytkhfeerkhjjsxp6r473jckrigzh7ujrx72kmhqqkulu/facets/connect/atproto/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/connect/atproto/index.html.br
··· 1 + ../../../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/facets/connect/atproto/index.html.br
+2
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/connect/common.css
··· 1 + body{background-color:var(--bg-color);color:var(--text-color)}main{padding:var(--space-2xl) var(--space-xl);@media (min-width:48rem){display:flex;flex-direction:row;gap:var(--space-2xl);justify-content:center;min-height:100dvh}}ol,p,ul{text-wrap:balance}.facet__left{container-type:inline-size;flex:1;margin-bottom:var(--space-lg);max-width:24rem;@media (min-width:48rem){align-self:stretch;display:flex;flex-direction:column;justify-content:center;margin-bottom:0;max-height:calc(100vh - var(--space-2xl)*2)}p:last-child{margin-bottom:0}}.facet__right{flex:1;max-width:24rem;@media (min-width:48rem){display:flex;flex-direction:column;justify-content:center}p:first-child{margin-top:0}}.diffuse-logo-container{display:inline-block;margin-bottom:var(--space-lg);svg{display:block;fill:oklch(from var(--bg-color) calc(l - .5) c h);opacity:.2;width:5em;@media (prefers-color-scheme:dark){fill:var(--text-color);opacity:.25}}}h1{font-size:var(--fs-2xl);font-size:min(14cqi,var(--fs-2xl));font-weight:700;letter-spacing:-.02em;line-height:1.2;margin:0 0 var(--space-sm);overflow:hidden;white-space:nowrap}.facet__left p{color:oklch(from var(--text-color) l c h/.55);font-size:var(--fs-sm);line-height:var(--leading-relaxed);max-width:22rem}.button-row{display:flex;flex-wrap:wrap;gap:var(--space-2xs)}.callout{border-radius:var(--radius-md);font-size:var(--fs-sm);padding:var(--space-2xs) var(--space-xs)}.callout--danger{background:oklch(from var(--accent-twist-4) l c h/.12);border:1px solid oklch(from var(--accent-twist-4) l c h/.3);color:var(--accent-twist-4)}.callout--warning{background:oklch(from var(--accent-twist-1) l c h/.12);border:1px solid oklch(from var(--accent-twist-1) l c h/.3);color:var(--accent-twist-1)}.badge{border:1px solid;border-radius:var(--radius-xs);font-size:var(--fs-3xs);font-weight:500;letter-spacing:var(--tracking-wider);line-height:.75;opacity:.6;padding:var(--space-3xs);text-box:trim-both cap alphabetic;text-transform:uppercase}.badge--brand{color:var(--accent);opacity:1}.badge--warning{color:var(--accent-twist-1);opacity:1}.button,button{align-items:center;background:var(--form-color);border:1px solid var(--border-color);border-radius:9999px;color:var(--text-color);cursor:pointer;display:inline-flex;font-family:inherit;font-size:var(--fs-sm);gap:var(--space-2xs);padding:var(--space-2xs) var(--space-sm);text-decoration:none;transition-duration:.25s;transition-property:opacity;&:disabled{cursor:not-allowed;opacity:.4}&.button--accent,&.button--brand{background:var(--accent);border-color:transparent;color:var(--bg-color)}&.button--icon{opacity:.4;&:focus,&:hover{opacity:1}}&.button--outlined{background:transparent}&.button--danger{border-color:var(--accent-twist-4);color:var(--accent-twist-4)}&.button--plain{background:transparent;border-color:transparent;padding:var(--space-3xs)}&.button--small{font-size:var(--fs-xs);padding:var(--space-3xs) var(--space-2xs)}}label{display:flex;flex-direction:column;gap:var(--space-3xs)}input,label,select{font-size:var(--fs-sm)}input,select{background:var(--form-color);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-color);font-family:inherit;padding:var(--space-2xs) var(--space-xs);width:100%}dialog{background:var(--bg-color);border:1px solid var(--border-color);border-radius:var(--radius-lg);color:var(--text-color);left:50%;max-height:85dvh;max-width:min(var(--container-md),calc(100vw - var(--space-md)));overflow:hidden;padding:0;position:fixed;top:50%;transform:translate(-50%,-50%);width:100%;&[open]{display:flex;flex-direction:column}&::backdrop{background:oklch(0 0 0/.5)}}.dialog-header{align-items:center;border-bottom:1px solid var(--border-color);display:flex;flex-shrink:0;justify-content:space-between;padding:var(--space-xs) var(--space-sm)}.dialog-body{display:flex;flex-direction:column;gap:var(--space-sm);overflow-y:auto;padding:var(--space-sm)}.dialog-footer{border-top:1px solid var(--border-color);display:flex;flex-shrink:0;gap:var(--space-2xs);padding:var(--space-xs) var(--space-sm)}hr{border:none;border-top:1px solid var(--border-color);margin:var(--space-md) 0}.caption{color:oklch(from var(--text-color) l c h/.55);font-size:var(--fs-xs)}[hidden]{display:none!important}.callout,p{margin:var(--space-sm) 0}.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);max-height:80vh;overflow-y:auto;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}&>button{align-items:center;background:none;border:0;border-radius:0;color:inherit;cursor:pointer;display:flex;font-family:inherit;font-size:inherit;font-weight:inherit;gap:var(--space-xs);min-width:var(--space-3xl);padding:var(--space-xs) var(--space-sm);text-align:left;width:100%;&>*{pointer-events:none}}&>button:not(:last-child){border-bottom:1px solid var(--border-color)}i{opacity:.4}}.connect-list{flex-direction:column;list-style:none;margin:0;padding:0}.connect-item,.connect-list{display:flex;gap:var(--space-xs)}.connect-item{align-items:center;margin-left:0}.connect-item__info{display:flex;flex:1;flex-direction:column;gap:var(--space-3xs);min-width:0}.connect-item__name{font-weight:600}.connect-item__detail,.connect-item__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.connect-item__detail{color:oklch(from var(--text-color) l c h/.55);font-size:var(--fs-xs)}.connect-item__tags{display:flex;flex-shrink:0;gap:var(--space-3xs)}.connect-item--disabled .connect-item__info{opacity:.2}.dropzone{align-items:center;border:2px dashed var(--border-color);border-radius:var(--radius-md);color:oklch(from var(--text-color) l c h/.55);cursor:pointer;display:flex;flex-direction:column;font-size:var(--fs-sm);gap:var(--space-2xs);justify-content:center;padding:var(--space-md);transition:background-color .15s,border-color .15s,color .15s;&.dropzone--active{background-color:var(--form-color);border-color:var(--accent);color:var(--text-color)}} 2 + /*# sourceMappingURL=./common.css.map */
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/connect/common.css.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/connect/common.css.map
··· 1 + {"version":3,"sources":["/src/styles/diffuse/facet.css","/src/facets/connect/common.css"],"names":[],"mappings":"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","file":"/facets/connect/common.css.map","sourcesContent":["body{background-color:var(--bg-color);color:var(--text-color)}main{padding:var(--space-2xl) var(--space-xl);@media (min-width:48rem){display:flex;flex-direction:row;gap:var(--space-2xl);justify-content:center;min-height:100dvh}}ol,p,ul{text-wrap:balance}.facet__left{container-type:inline-size;flex:1;margin-bottom:var(--space-lg);max-width:24rem;@media (min-width:48rem){align-self:stretch;display:flex;flex-direction:column;justify-content:center;margin-bottom:0;max-height:calc(100vh - var(--space-2xl)*2)}p:last-child{margin-bottom:0}}.facet__right{flex:1;max-width:24rem;@media (min-width:48rem){display:flex;flex-direction:column;justify-content:center}p:first-child{margin-top:0}}.diffuse-logo-container{display:inline-block;margin-bottom:var(--space-lg);svg{display:block;fill:oklch(from var(--bg-color) calc(l - .5) c h);opacity:.2;width:5em;@media (prefers-color-scheme:dark){fill:var(--text-color);opacity:.25}}}h1{font-size:var(--fs-2xl);font-size:min(14cqi,var(--fs-2xl));font-weight:700;letter-spacing:-.02em;line-height:1.2;margin:0 0 var(--space-sm);overflow:hidden;white-space:nowrap}.facet__left p{color:oklch(from var(--text-color) l c h/.55);font-size:var(--fs-sm);line-height:var(--leading-relaxed);max-width:22rem}.button-row{display:flex;flex-wrap:wrap;gap:var(--space-2xs)}.callout{border-radius:var(--radius-md);font-size:var(--fs-sm);padding:var(--space-2xs) var(--space-xs)}.callout--danger{background:oklch(from var(--accent-twist-4) l c h/.12);border:1px solid oklch(from var(--accent-twist-4) l c h/.3);color:var(--accent-twist-4)}.callout--warning{background:oklch(from var(--accent-twist-1) l c h/.12);border:1px solid oklch(from var(--accent-twist-1) l c h/.3);color:var(--accent-twist-1)}.badge{border:1px solid;border-radius:var(--radius-xs);font-size:var(--fs-3xs);font-weight:500;letter-spacing:var(--tracking-wider);line-height:.75;opacity:.6;padding:var(--space-3xs);text-box:trim-both cap alphabetic;text-transform:uppercase}.badge--brand{color:var(--accent);opacity:1}.badge--warning{color:var(--accent-twist-1);opacity:1}.button,button{align-items:center;background:var(--form-color);border:1px solid var(--border-color);border-radius:9999px;color:var(--text-color);cursor:pointer;display:inline-flex;font-family:inherit;font-size:var(--fs-sm);gap:var(--space-2xs);padding:var(--space-2xs) var(--space-sm);text-decoration:none;transition-duration:.25s;transition-property:opacity;&:disabled{cursor:not-allowed;opacity:.4}&.button--accent,&.button--brand{background:var(--accent);border-color:transparent;color:var(--bg-color)}&.button--icon{opacity:.4;&:focus,&:hover{opacity:1}}&.button--outlined{background:transparent}&.button--danger{border-color:var(--accent-twist-4);color:var(--accent-twist-4)}&.button--plain{background:transparent;border-color:transparent;padding:var(--space-3xs)}&.button--small{font-size:var(--fs-xs);padding:var(--space-3xs) var(--space-2xs)}}label{display:flex;flex-direction:column;gap:var(--space-3xs)}input,label,select{font-size:var(--fs-sm)}input,select{background:var(--form-color);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-color);font-family:inherit;padding:var(--space-2xs) var(--space-xs);width:100%}dialog{background:var(--bg-color);border:1px solid var(--border-color);border-radius:var(--radius-lg);color:var(--text-color);left:50%;max-height:85dvh;max-width:min(var(--container-md),calc(100vw - var(--space-md)));overflow:hidden;padding:0;position:fixed;top:50%;transform:translate(-50%,-50%);width:100%;&[open]{display:flex;flex-direction:column}&::backdrop{background:oklch(0 0 0/.5)}}.dialog-header{align-items:center;border-bottom:1px solid var(--border-color);display:flex;flex-shrink:0;justify-content:space-between;padding:var(--space-xs) var(--space-sm)}.dialog-body{display:flex;flex-direction:column;gap:var(--space-sm);overflow-y:auto;padding:var(--space-sm)}.dialog-footer{border-top:1px solid var(--border-color);display:flex;flex-shrink:0;gap:var(--space-2xs);padding:var(--space-xs) var(--space-sm)}hr{border:none;border-top:1px solid var(--border-color);margin:var(--space-md) 0}.caption{color:oklch(from var(--text-color) l c h/.55);font-size:var(--fs-xs)}[hidden]{display:none!important}.callout,p{margin:var(--space-sm) 0}.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);max-height:80vh;overflow-y:auto;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}&>button{align-items:center;background:none;border:0;border-radius:0;color:inherit;cursor:pointer;display:flex;font-family:inherit;font-size:inherit;font-weight:inherit;gap:var(--space-xs);min-width:var(--space-3xl);padding:var(--space-xs) var(--space-sm);text-align:left;width:100%;&>*{pointer-events:none}}&>button:not(:last-child){border-bottom:1px solid var(--border-color)}i{opacity:.4}}","@import \"../../styles/diffuse/facet.css\";\n\n.connect-list {\n display: flex;\n flex-direction: column;\n gap: var(--space-xs);\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.connect-item {\n align-items: center;\n display: flex;\n gap: var(--space-xs);\n margin-left: 0;\n}\n\n.connect-item__info {\n display: flex;\n flex-direction: column;\n flex: 1;\n gap: var(--space-3xs);\n min-width: 0;\n}\n\n.connect-item__name {\n font-weight: 600;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.connect-item__detail {\n color: oklch(from var(--text-color) l c h / 0.55);\n font-size: var(--fs-xs);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.connect-item__tags {\n display: flex;\n flex-shrink: 0;\n gap: var(--space-3xs);\n}\n\n.connect-item--disabled .connect-item__info {\n opacity: 0.2;\n}\n\n.dropzone {\n align-items: center;\n border: 2px dashed var(--border-color);\n border-radius: var(--radius-md);\n color: oklch(from var(--text-color) l c h / 0.55);\n cursor: pointer;\n display: flex;\n flex-direction: column;\n font-size: var(--fs-sm);\n gap: var(--space-2xs);\n justify-content: center;\n padding: var(--space-md);\n transition:\n background-color 150ms,\n border-color 150ms,\n color 150ms;\n\n &.dropzone--active {\n background-color: var(--form-color);\n border-color: var(--accent);\n color: var(--text-color);\n }\n}\n"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse"}
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/connect/common.js
··· 1 + ../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/facets/connect/common.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/connect/common.js.br
··· 1 + ../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/facets/connect/common.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/connect/common.js.map
··· 1 + ../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/facets/connect/common.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/connect/https/index.html
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/facets/connect/https/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/connect/https/index.html.br
··· 1 + ../../../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/facets/connect/https/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/connect/icecast/index.html
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/facets/connect/icecast/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/connect/icecast/index.html.br
··· 1 + ../../../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/facets/connect/icecast/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/connect/index.html
··· 1 + ../../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/facets/connect/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/connect/index.html.br
··· 1 + ../../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/facets/connect/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/connect/local/index.html
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/facets/connect/local/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/connect/local/index.html.br
··· 1 + ../../../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/facets/connect/local/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/connect/opensubsonic/index.html
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/facets/connect/opensubsonic/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/connect/opensubsonic/index.html.br
··· 1 + ../../../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/facets/connect/opensubsonic/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/connect/s3/index.html
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/facets/connect/s3/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/connect/s3/index.html.br
··· 1 + ../../../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/facets/connect/s3/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/data/artwork-bundle/index.html
··· 1 + ../../../../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/facets/data/artwork-bundle/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/data/artwork-bundle/index.html.br
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/facets/data/artwork-bundle/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/data/cache-tracks/index.html
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/facets/data/cache-tracks/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/data/cache-tracks/index.html.br
··· 1 + ../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/facets/data/cache-tracks/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/data/export-import/index.html
··· 1 + ../../../../bafybeifx752kc2bw6iwva6wlszmblridjre556w2llag4tcnmy76k66r6y/facets/data/export-import/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/data/export-import/index.html.br
··· 1 + ../../../../bafybeifx752kc2bw6iwva6wlszmblridjre556w2llag4tcnmy76k66r6y/facets/data/export-import/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/data/input-bundle/index.html
··· 1 + ../../../../bafybeieet7tkfiaiqveyit6c275hhlk2awzqx5d5kflyav7ev3ikqoqgb4/facets/data/input-bundle/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/data/input-bundle/index.html.br
··· 1 + ../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/facets/data/input-bundle/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/data/metadata-bundle/index.html
··· 1 + ../../../../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/facets/data/metadata-bundle/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/data/metadata-bundle/index.html.br
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/facets/data/metadata-bundle/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/data/output-bundle/index.html
··· 1 + ../../../../bafybeifx752kc2bw6iwva6wlszmblridjre556w2llag4tcnmy76k66r6y/facets/data/output-bundle/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/data/output-bundle/index.html.br
··· 1 + ../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/facets/data/output-bundle/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/data/playlists/index.html
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/facets/data/playlists/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/data/playlists/index.html.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/facets/data/playlists/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/data/process-tracks/index.html
··· 1 + ../../../../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/facets/data/process-tracks/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/data/process-tracks/index.html.br
··· 1 + ../../../../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/facets/data/process-tracks/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/data/process-tracks/prelude/index.html
··· 1 + ../../../../../bafybeibbvywkxql7k3lipdasrnrtjlmgt6ks3hkv3d6mimsmui6pcpwos4/facets/data/process-tracks/prelude/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/data/process-tracks/prelude/index.html.br
··· 1 + ../../../../../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/facets/data/process-tracks/prelude/index.html.br
+305
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/data/sources/index.html
··· 1 + <style> 2 + @import "./styles/base.css"; 3 + @import "./styles/diffuse/facet.css"; 4 + @import "./vendor/@phosphor-icons/web/fill/style.css"; 5 + 6 + @layer base, diffuse; 7 + 8 + .sources-list { 9 + display: flex; 10 + flex-direction: column; 11 + gap: var(--space-xs); 12 + list-style: none; 13 + margin: 0; 14 + padding: 0; 15 + } 16 + 17 + .sources-scheme { 18 + font-size: var(--fs-2xs); 19 + font-weight: 600; 20 + letter-spacing: var(--tracking-wider); 21 + margin-top: var(--space-lg); 22 + opacity: 0.4; 23 + text-transform: uppercase; 24 + 25 + &:first-child { 26 + margin-top: 0; 27 + } 28 + } 29 + 30 + .sources-item { 31 + align-items: center; 32 + display: flex; 33 + gap: var(--space-xs); 34 + } 35 + 36 + .sources-item--disabled .sources-item__info { 37 + opacity: 0.2; 38 + } 39 + 40 + .sources-item__info { 41 + display: flex; 42 + flex-direction: column; 43 + flex: 1; 44 + gap: var(--space-3xs); 45 + min-width: 0; 46 + } 47 + 48 + .sources-item__name { 49 + font-weight: 600; 50 + overflow: hidden; 51 + text-overflow: ellipsis; 52 + white-space: nowrap; 53 + } 54 + 55 + .sources-item__detail { 56 + color: oklch(from var(--text-color) l c h / 0.6); 57 + font-size: var(--fs-xs); 58 + overflow: hidden; 59 + text-overflow: ellipsis; 60 + white-space: nowrap; 61 + } 62 + </style> 63 + 64 + <main> 65 + <div class="facet__left"> 66 + <div> 67 + <a href="./dashboard/" class="diffuse-logo-container"> 68 + <svg viewBox="0 0 902 134" width="160"> 69 + <title>Diffuse</title> 70 + <use 71 + xlink:href="images/diffuse-current.svg#diffuse" 72 + href="images/diffuse-current.svg#diffuse" 73 + ></use> 74 + </svg> 75 + </a> 76 + </div> 77 + <h1>Sources</h1> 78 + <p> 79 + An overview of all your audio inputs. Remember that these need to be processed into tracks 80 + before they become useful. This should happen automatically when you have that feature enabled 81 + (on by default), otherwise click the button below. 82 + </p> 83 + <p class="button-row" style="margin-top: var(--space-md)"> 84 + <a href="../../l/?path=facets/connect/index.html" class="button button--accent"> 85 + <i class="ph-fill ph-plugs"></i> 86 + Add a source 87 + </a> 88 + <button id="process-btn"> 89 + <i id="process-icon" class="ph-fill ph-arrows-clockwise"></i> 90 + <span id="process-label">Process</span> 91 + </button> 92 + </p> 93 + </div> 94 + 95 + <div class="facet__right"> 96 + <ul id="sources-list" class="sources-list" hidden></ul> 97 + <p id="sources-empty" class="caption">No sources configured yet.</p> 98 + </div> 99 + </main> 100 + 101 + <script type="module"> 102 + import { html, render as litRender } from "lit-html"; 103 + 104 + import * as Output from "~/common/output.js"; 105 + import foundation from "~/common/foundation.js"; 106 + import { effect } from "~/common/signal.js"; 107 + 108 + import { SCHEME as SCHEME_EPHEMERAL_CACHE } from "~/components/input/ephemeral-cache/constants.js"; 109 + import { SCHEME as SCHEME_HTTPS } from "~/components/input/https/constants.js"; 110 + import { SCHEME as SCHEME_ICECAST } from "~/components/input/icecast/constants.js"; 111 + import { SCHEME as SCHEME_LOCAL } from "~/components/input/local/constants.js"; 112 + import { SCHEME as SCHEME_OPENSUBSONIC } from "~/components/input/opensubsonic/constants.js"; 113 + import { SCHEME as SCHEME_S3 } from "~/components/input/s3/constants.js"; 114 + 115 + /** @type {Record<string, string>} */ 116 + const SCHEME_NAMES = { 117 + [SCHEME_EPHEMERAL_CACHE]: "Browser storage", 118 + [SCHEME_HTTPS]: "HTTPS", 119 + [SCHEME_ICECAST]: "Icecast", 120 + [SCHEME_LOCAL]: "Local directories & files", 121 + [SCHEME_OPENSUBSONIC]: "OpenSubsonic", 122 + [SCHEME_S3]: "S3", 123 + }; 124 + 125 + foundation.setup({ title: "Sources | Diffuse" }); 126 + 127 + //////////////////////////////////////////// 128 + // SETUP 129 + //////////////////////////////////////////// 130 + 131 + const [inputConfigurator, sourcesOrchestrator, outputOrchestrator, processOrchestrator] = 132 + await Promise.all([ 133 + foundation.configurator.input(), 134 + foundation.orchestrator.sources(), 135 + foundation.orchestrator.output(), 136 + foundation.orchestrator.processTracks({ disableWhenReady: true }), 137 + ]); 138 + 139 + await Promise.all([ 140 + customElements.whenDefined(inputConfigurator.localName), 141 + customElements.whenDefined(sourcesOrchestrator.localName), 142 + customElements.whenDefined(outputOrchestrator.localName), 143 + ]); 144 + 145 + 146 + //////////////////////////////////////////// 147 + // PROCESS BUTTON 148 + //////////////////////////////////////////// 149 + 150 + const processBtn = /** @type {HTMLButtonElement} */ (document.querySelector("#process-btn")); 151 + const processIcon = /** @type {HTMLElement} */ (document.querySelector("#process-icon")); 152 + const processLabel = /** @type {HTMLElement} */ (document.querySelector("#process-label")); 153 + 154 + effect(() => { 155 + const isProcessing = processOrchestrator.isProcessing(); 156 + 157 + processBtn.disabled = isProcessing; 158 + processIcon.className = isProcessing 159 + ? "ph-fill ph-arrows-clockwise animate-spin" 160 + : "ph-fill ph-arrows-clockwise"; 161 + processLabel.textContent = isProcessing ? "Processing" : "Process"; 162 + }); 163 + 164 + processBtn.addEventListener("click", async () => { 165 + const output = await foundation.orchestrator.output(); 166 + await Output.data(output.tracks); 167 + await processOrchestrator.process(); 168 + }); 169 + 170 + //////////////////////////////////////////// 171 + // UI 172 + //////////////////////////////////////////// 173 + 174 + const list = 175 + /** @type {HTMLElement} */ (document.querySelector("#sources-list")); 176 + const empty = 177 + /** @type {HTMLElement} */ (document.querySelector("#sources-empty")); 178 + 179 + /** @param {string} uri */ 180 + const trackPrefix = (uri) => { const q = uri.indexOf("?"); return q === -1 ? uri : uri.slice(0, q); }; 181 + 182 + effect(() => { 183 + const sourcesRecord = sourcesOrchestrator.sources(); 184 + 185 + const tracksCol = outputOrchestrator.tracks.collection(); 186 + const tracks = tracksCol.state === "loaded" ? tracksCol.data : []; 187 + 188 + const entries = Object.entries(sourcesRecord).filter( 189 + ([, sources]) => sources.length > 0, 190 + ); 191 + 192 + list.hidden = entries.length === 0; 193 + empty.hidden = entries.length > 0; 194 + 195 + litRender( 196 + html` 197 + ${entries.map(([scheme, sources]) => { 198 + if (scheme === SCHEME_EPHEMERAL_CACHE) { 199 + const uri = `${SCHEME_EPHEMERAL_CACHE}://`; 200 + const isDisabled = sourcesOrchestrator.isDisabled(uri); 201 + const trackCount = tracks.filter((t) => 202 + t.uri.startsWith(uri) 203 + ).length; 204 + return html` 205 + <li class="sources-scheme">${SCHEME_NAMES[scheme] ?? scheme}</li> 206 + <li class="sources-item ${isDisabled 207 + ? "sources-item--disabled" 208 + : ""}"> 209 + <div class="sources-item__info"> 210 + <span class="sources-item__name">Files stored in the browser</span> 211 + <span class="sources-item__detail">${trackCount} track${trackCount === 212 + 1 213 + ? "" 214 + : "s"}</span> 215 + </div> 216 + <button 217 + class="button--plain" 218 + title="${isDisabled ? "Enable source" : "Disable source"}" 219 + @click="${() => sourcesOrchestrator.toggle(uri)}" 220 + > 221 + <i class="ph-fill ${isDisabled 222 + ? "ph-eye-slash" 223 + : "ph-eye"}"></i> 224 + </button> 225 + <button 226 + class="button--plain button--icon" 227 + title="Remove source" 228 + @click="${() => removeEphemeralSources()}" 229 + > 230 + <i class="ph-fill ph-skull"></i> 231 + </button> 232 + </li> 233 + `; 234 + } 235 + 236 + return html` 237 + <li class="sources-scheme">${SCHEME_NAMES[scheme] ?? scheme}</li> 238 + ${sources.map(({ label, uri }) => { 239 + const isDisabled = sourcesOrchestrator.isDisabled(uri); 240 + const trackCount = tracks.filter((t) => 241 + t.uri.startsWith(trackPrefix(uri)) 242 + ).length; 243 + return html` 244 + <li class="sources-item ${isDisabled 245 + ? "sources-item--disabled" 246 + : ""}"> 247 + <div class="sources-item__info"> 248 + <span class="sources-item__name">${label}</span> 249 + <span class="sources-item__detail">${trackCount} track${trackCount === 250 + 1 251 + ? "" 252 + : "s"}</span> 253 + </div> 254 + <button 255 + class="button--plain button--icon" 256 + title="${isDisabled ? "Enable source" : "Disable source"}" 257 + @click="${() => sourcesOrchestrator.toggle(uri)}" 258 + > 259 + <i class="ph-fill ${isDisabled 260 + ? "ph-eye-slash" 261 + : "ph-eye"}"></i> 262 + </button> 263 + <button 264 + class="button--plain button--icon" 265 + title="Remove source" 266 + @click="${() => removeSource(uri)}" 267 + > 268 + <i class="ph-fill ph-skull"></i> 269 + </button> 270 + </li> 271 + `; 272 + })} 273 + `; 274 + })} 275 + `, 276 + list, 277 + ); 278 + }); 279 + 280 + //////////////////////////////////////////// 281 + // ACTIONS 282 + //////////////////////////////////////////// 283 + 284 + async function removeEphemeralSources() { 285 + return removeSource(SCHEME_EPHEMERAL_CACHE); 286 + } 287 + 288 + /** @param {string} uri */ 289 + async function removeSource(uri) { 290 + const tracks = await Output.data(outputOrchestrator.tracks); 291 + 292 + const detachedTracks = await inputConfigurator.detach({ 293 + fileUriOrScheme: uri, 294 + tracks, 295 + }); 296 + 297 + if (detachedTracks) await outputOrchestrator.tracks.save(detachedTracks); 298 + } 299 + 300 + //////////////////////////////////////////// 301 + // 🚀 302 + //////////////////////////////////////////// 303 + 304 + foundation.ready(); 305 + </script>
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/data/sources/index.html.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/data/v3-import/index.html
··· 1 + ../../../../bafybeifx752kc2bw6iwva6wlszmblridjre556w2llag4tcnmy76k66r6y/facets/data/v3-import/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/data/v3-import/index.html.br
··· 1 + ../../../../bafybeifx752kc2bw6iwva6wlszmblridjre556w2llag4tcnmy76k66r6y/facets/data/v3-import/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/examples/generate-playlist/index.html
··· 1 + ../../../../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/facets/examples/generate-playlist/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/examples/generate-playlist/index.html.br
··· 1 + ../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/facets/examples/generate-playlist/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/examples/now-playing/index.html
··· 1 + ../../../../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/facets/examples/now-playing/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/examples/now-playing/index.html.br
··· 1 + ../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/facets/examples/now-playing/index.html.br
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/index.js
··· 1 + import{a as t}from"../chunk-PUCB64SE.js";import"../chunk-BFIVCPQF.js";export{t as data}; 2 + 3 + //# sourceMappingURL=./index.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/index.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/index.js.map
··· 1 + ../../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/facets/index.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/misc/command/index.html
··· 1 + ../../../../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/facets/misc/command/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/misc/command/index.html.br
··· 1 + ../../../../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/facets/misc/command/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/misc/scrobble/index.html
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/facets/misc/scrobble/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/misc/scrobble/index.html.br
··· 1 + ../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/facets/misc/scrobble/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/misc/scrobble/last.fm/index.html
··· 1 + ../../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/facets/misc/scrobble/last.fm/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/misc/scrobble/last.fm/index.html.br
··· 1 + ../../../../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/facets/misc/scrobble/last.fm/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/misc/scrobble/listenbrainz/index.html
··· 1 + ../../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/facets/misc/scrobble/listenbrainz/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/misc/scrobble/listenbrainz/index.html.br
··· 1 + ../../../../../bafybeifk3idtk5ytkhfeerkhjjsxp6r473jckrigzh7ujrx72kmhqqkulu/facets/misc/scrobble/listenbrainz/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/misc/scrobble/rocksky/index.html
··· 1 + ../../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/facets/misc/scrobble/rocksky/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/misc/scrobble/rocksky/index.html.br
··· 1 + ../../../../../bafybeifk3idtk5ytkhfeerkhjjsxp6r473jckrigzh7ujrx72kmhqqkulu/facets/misc/scrobble/rocksky/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/misc/split-view/index.html
··· 1 + ../../../../bafybeidcqjj5ooqx36uomtsgqcpuu5bjordymamrliah7o2bq7ghzvfxgm/facets/misc/split-view/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/misc/split-view/index.html.br
··· 1 + ../../../../bafybeidcqjj5ooqx36uomtsgqcpuu5bjordymamrliah7o2bq7ghzvfxgm/facets/misc/split-view/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/playback/auto-queue/index.html
··· 1 + ../../../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/facets/playback/auto-queue/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/playback/auto-queue/index.html.br
··· 1 + ../../../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/facets/playback/auto-queue/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/playback/auto-queue/prelude/index.html
··· 1 + ../../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/facets/playback/auto-queue/prelude/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/playback/auto-queue/prelude/index.html.br
··· 1 + ../../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/facets/playback/auto-queue/prelude/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/playback/preload/prelude/index.html
··· 1 + ../../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/facets/playback/preload/prelude/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/facets/playback/preload/prelude/index.html.br
··· 1 + ../../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/facets/playback/preload/prelude/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/favicon-16x16.png
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/favicon-16x16.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/favicon-32x32.png
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/favicon-32x32.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/favicon.ico
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/favicon.ico
+609
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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 + <link rel="manifest" href="site.webmanifest" /> 21 + 22 + <!-- Preloads --> 23 + 24 + <!-- Styles --> 25 + <link rel="stylesheet" href="styles/base.css" /> 26 + <link rel="stylesheet" href="styles/diffuse/page.css" /> 27 + <link rel="stylesheet" href="styles/diffuse/code-editor.css" /> 28 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/bold/style.css" /> 29 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/fill/style.css" /> 30 + </head> 31 + <body> 32 + <header> 33 + <div class="header__nav"> 34 + <div style="flex-shrink: 0;"> 35 + <div class="diffuse-logo-container diffuse-logo-container--condensed"> 36 + <a href="./" style="display: inline-block;"> 37 + <svg viewBox="0 0 902 134" width="160"> 38 + <title>Diffuse</title> 39 + <use 40 + xlink:href="images/diffuse-current.svg#diffuse" 41 + href="images/diffuse-current.svg#diffuse"></use> 42 + </svg> 43 + 44 + </a> 45 + </div> 46 + </div> 47 + 48 + <div class="nav-container"> 49 + <nav id="diffuse-nav"> 50 + <a href="dashboard/" class="button button--transparent button--border"> 51 + <span class="with-icon"> 52 + <i class="ph-fill ph-person"></i> 53 + Your Diffuse 54 + </span> 55 + </a> 56 + 57 + <a href="guide/" class="button button--transparent button--border"> 58 + <span class="with-icon"> 59 + <i class="ph-fill ph-book-open-text"></i> 60 + Guide 61 + </span> 62 + </a> 63 + 64 + <a href="featured/" class="button button--border"> 65 + <span class="with-icon"> 66 + <i class="ph-fill ph-sparkle"></i> 67 + Featured 68 + </span> 69 + </a> 70 + 71 + <a href="catalogue/" class="button button--transparent button--border"> 72 + <span class="with-icon"> 73 + <i class="ph-fill ph-storefront"></i> 74 + Catalogue 75 + </span> 76 + </a> 77 + 78 + <a href="code/" class="button button--transparent button--border"> 79 + <span class="with-icon"> 80 + <i class="ph-fill ph-hammer"></i> 81 + Code 82 + </span> 83 + </a> 84 + </nav> 85 + 86 + <button 87 + id="nav-overflow-btn" 88 + class="button button--transparent button--border" 89 + style="display: none; flex-shrink: 0" 90 + popovertarget="nav-overflow-menu" 91 + > 92 + <span class="with-icon"> 93 + <i class="ph-fill ph-dots-three-outline"></i> 94 + </span> 95 + </button> 96 + 97 + <div id="nav-overflow-menu" class="dropdown" popover></div> 98 + </div> 99 + 100 + </div> 101 + </header> 102 + 103 + <main> 104 + <h1 hidden>Featured</h1> 105 + 106 + <section> 107 + <div class="grid-filter"> 108 + <span class="grid-filter--label">Filter by</span> 109 + 110 + <button class="button--border button--tiny button--transparent" data-filter="all">All</button> 111 + <button class="button--border button--tiny button--bg-twist-4 button--tr-twist-4 button--transparent" data-filter="prelude">Features</button> 112 + <button class="button--border button--tiny button--bg-twist-2 button--tr-twist-2 button--transparent" data-filter="interface">Interfaces</button> 113 + 114 + <button class="button--border button--tiny button--transparent" title="Show the hidden essential features" data-filter="base">Base</button> 115 + 116 + <div style="flex: 1"></div> 117 + 118 + <span class="grid-filter--label">Category</span> 119 + <div class="grid-filter--categories"></div> 120 + </div> 121 + 122 + <ul class="grid" style="margin-top: var(--space-xs);"> 123 + 124 + 125 + 126 + <li 127 + class="grid-item" 128 + style="--grid-item-color: var(--accent-twist-4)" 129 + data-active-color="var(--accent-twist-4)" 130 + data-description="Automatically put tracks into the queue. **Always on.** These tracks will always be located after the ones you've added manually." 131 + data-name="Automatic Queue" 132 + data-category="Playback" 133 + data-kind="prelude" 134 + data-tags="" 135 + data-uri="diffuse://facets/playback/auto-queue/prelude/index.html" 136 + > 137 + <div class="grid-item__contents"> 138 + <div class="grid-item__title"> 139 + <span style="color: var(--accent-twist-4); padding: var(--space-3xs) 0"> 140 + Automatic Queue 141 + </span> 142 + <span style="flex: 1"></span> 143 + </div> 144 + <div class="list-description"> 145 + Automatically put tracks into the queue. <strong>Always on.</strong> These tracks will always be located after the ones you've added manually. 146 + </div> 147 + </div> 148 + <div class="grid-item__menu"> 149 + <button 150 + class="button--transparent" 151 + data-action="toggle" 152 + style="opacity: 0" 153 + title="Add" 154 + > 155 + <i class="ph-bold ph-plus"></i> 156 + </button> 157 + <hr /> 158 + <button 159 + class="button--transparent" 160 + title="More actions" 161 + popovertarget="grid-item-menu-0" 162 + > 163 + <i class="ph-bold ph-dots-three-vertical"></i> 164 + </button> 165 + <div id="grid-item-menu-0" class="dropdown" popover> 166 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fplayback%2Fauto-queue%2Fprelude%2Findex.html&name=Automatic%20Queue&kind=prelude&description=Automatically%20put%20tracks%20into%20the%20queue.%20**Always%20on.**%20These%20tracks%20will%20always%20be%20located%20after%20the%20ones%20you've%20added%20manually."> 167 + <i class="ph-fill ph-code-block"></i> 168 + Open code in editor 169 + </a> 170 + </div> 171 + </div> 172 + </li> 173 + 174 + 175 + 176 + <li 177 + class="grid-item" 178 + style="--grid-item-color: var(--accent-twist-2)" 179 + data-active-color="var(--accent-twist-2)" 180 + data-description="A combination of the classic Diffuse browser and the Apple Music iOS playback screen." 181 + data-name="Blur" 182 + data-category="Themes" 183 + data-kind="interface" 184 + data-tags="" 185 + data-uri="diffuse://themes/blur/facet/index.html" 186 + > 187 + <div class="grid-item__contents"> 188 + <div class="grid-item__title"> 189 + <a href="l/?path=themes%2Fblur%2Ffacet%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 190 + Blur 191 + </a> 192 + <span style="flex: 1"></span> 193 + </div> 194 + <div class="list-description"> 195 + A combination of the classic Diffuse browser and the Apple Music iOS playback screen. 196 + </div> 197 + </div> 198 + <div class="grid-item__menu"> 199 + <button 200 + class="button--transparent" 201 + data-action="toggle" 202 + style="opacity: 0" 203 + title="Bookmark" 204 + > 205 + <i class="ph-bold ph-bookmark"></i> 206 + </button> 207 + <hr /> 208 + <button 209 + class="button--transparent" 210 + title="More actions" 211 + popovertarget="grid-item-menu-1" 212 + > 213 + <i class="ph-bold ph-dots-three-vertical"></i> 214 + </button> 215 + <div id="grid-item-menu-1" class="dropdown" popover> 216 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Fthemes%2Fblur%2Ffacet%2Findex.html&name=Blur&kind=interface&description=A%20combination%20of%20the%20classic%20Diffuse%20browser%20and%20the%20Apple%20Music%20iOS%20playback%20screen."> 217 + <i class="ph-fill ph-code-block"></i> 218 + Open code in editor 219 + </a> 220 + </div> 221 + </div> 222 + </li> 223 + 224 + 225 + 226 + <li 227 + class="grid-item" 228 + style="--grid-item-color: var(--accent-twist-2)" 229 + data-active-color="var(--accent-twist-2)" 230 + data-description="Audio playback controller with an artwork display. Play audio from the queue, add tracks to your favourites, control the queue and volume." 231 + data-name="Blur / Artwork Controller" 232 + data-category="Playback" 233 + data-kind="interface" 234 + data-tags="" 235 + data-uri="diffuse://themes/blur/artwork-controller/facet/index.html" 236 + > 237 + <div class="grid-item__contents"> 238 + <div class="grid-item__title"> 239 + <a href="l/?path=themes%2Fblur%2Fartwork-controller%2Ffacet%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 240 + Blur / Artwork Controller 241 + </a> 242 + <span style="flex: 1"></span> 243 + </div> 244 + <div class="list-description"> 245 + Audio playback controller with an artwork display. Play audio from the queue, add tracks to your favourites, control the queue and volume. 246 + </div> 247 + </div> 248 + <div class="grid-item__menu"> 249 + <button 250 + class="button--transparent" 251 + data-action="toggle" 252 + style="opacity: 0" 253 + title="Bookmark" 254 + > 255 + <i class="ph-bold ph-bookmark"></i> 256 + </button> 257 + <hr /> 258 + <button 259 + class="button--transparent" 260 + title="More actions" 261 + popovertarget="grid-item-menu-2" 262 + > 263 + <i class="ph-bold ph-dots-three-vertical"></i> 264 + </button> 265 + <div id="grid-item-menu-2" class="dropdown" popover> 266 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Fthemes%2Fblur%2Fartwork-controller%2Ffacet%2Findex.html&name=Blur%20%2F%20Artwork%20Controller&kind=interface&description=Audio%20playback%20controller%20with%20an%20artwork%20display.%20Play%20audio%20from%20the%20queue%2C%20add%20tracks%20to%20your%20favourites%2C%20control%20the%20queue%20and%20volume."> 267 + <i class="ph-fill ph-code-block"></i> 268 + Open code in editor 269 + </a> 270 + </div> 271 + </div> 272 + </li> 273 + 274 + 275 + 276 + <li 277 + class="grid-item" 278 + style="--grid-item-color: var(--accent-twist-2)" 279 + data-active-color="var(--accent-twist-2)" 280 + data-description="Collection browser and search with favourite toggling, date grouping, and virtual scrolling." 281 + data-name="Blur / Browser" 282 + data-category="Browsing" 283 + data-kind="interface" 284 + data-tags="" 285 + data-uri="diffuse://themes/blur/browser/facet/index.html" 286 + > 287 + <div class="grid-item__contents"> 288 + <div class="grid-item__title"> 289 + <a href="l/?path=themes%2Fblur%2Fbrowser%2Ffacet%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 290 + Blur / Browser 291 + </a> 292 + <span style="flex: 1"></span> 293 + </div> 294 + <div class="list-description"> 295 + Collection browser and search with favourite toggling, date grouping, and virtual scrolling. 296 + </div> 297 + </div> 298 + <div class="grid-item__menu"> 299 + <button 300 + class="button--transparent" 301 + data-action="toggle" 302 + style="opacity: 0" 303 + title="Bookmark" 304 + > 305 + <i class="ph-bold ph-bookmark"></i> 306 + </button> 307 + <hr /> 308 + <button 309 + class="button--transparent" 310 + title="More actions" 311 + popovertarget="grid-item-menu-3" 312 + > 313 + <i class="ph-bold ph-dots-three-vertical"></i> 314 + </button> 315 + <div id="grid-item-menu-3" class="dropdown" popover> 316 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Fthemes%2Fblur%2Fbrowser%2Ffacet%2Findex.html&name=Blur%20%2F%20Browser&kind=interface&description=Collection%20browser%20and%20search%20with%20favourite%20toggling%2C%20date%20grouping%2C%20and%20virtual%20scrolling."> 317 + <i class="ph-fill ph-code-block"></i> 318 + Open code in editor 319 + </a> 320 + </div> 321 + </div> 322 + </li> 323 + 324 + 325 + 326 + <li 327 + class="grid-item" 328 + style="--grid-item-color: var(--accent-twist-4)" 329 + data-active-color="var(--accent-twist-4)" 330 + data-description="Store tracks locally for offline usage automatically after they've been playing for a little while." 331 + data-name="Cache Tracks" 332 + data-category="Data" 333 + data-kind="prelude" 334 + data-tags="" 335 + data-uri="diffuse://facets/data/cache-tracks/index.html" 336 + > 337 + <div class="grid-item__contents"> 338 + <div class="grid-item__title"> 339 + <span style="color: var(--accent-twist-4); padding: var(--space-3xs) 0"> 340 + Cache Tracks 341 + </span> 342 + <span style="flex: 1"></span> 343 + </div> 344 + <div class="list-description"> 345 + Store tracks locally for offline usage automatically after they've been playing for a little while. 346 + </div> 347 + </div> 348 + <div class="grid-item__menu"> 349 + <button 350 + class="button--transparent" 351 + data-action="toggle" 352 + style="opacity: 0" 353 + title="Add" 354 + > 355 + <i class="ph-bold ph-plus"></i> 356 + </button> 357 + <hr /> 358 + <button 359 + class="button--transparent" 360 + title="More actions" 361 + popovertarget="grid-item-menu-4" 362 + > 363 + <i class="ph-bold ph-dots-three-vertical"></i> 364 + </button> 365 + <div id="grid-item-menu-4" class="dropdown" popover> 366 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fdata%2Fcache-tracks%2Findex.html&name=Cache%20Tracks&kind=prelude&description=Store%20tracks%20locally%20for%20offline%20usage%20automatically%20after%20they've%20been%20playing%20for%20a%20little%20while."> 367 + <i class="ph-fill ph-code-block"></i> 368 + Open code in editor 369 + </a> 370 + </div> 371 + </div> 372 + </li> 373 + 374 + 375 + 376 + <li 377 + class="grid-item" 378 + style="--grid-item-color: var(--accent-twist-2)" 379 + data-active-color="var(--accent-twist-2)" 380 + data-description="A listing of some of the options available to use as an audio source, or as a user-data storage method." 381 + data-name="Connect" 382 + data-category="Data" 383 + data-kind="interface" 384 + data-tags="" 385 + data-uri="diffuse://facets/connect/index.html" 386 + > 387 + <div class="grid-item__contents"> 388 + <div class="grid-item__title"> 389 + <a href="l/?path=facets%2Fconnect%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 390 + Connect 391 + </a> 392 + <span style="flex: 1"></span> 393 + </div> 394 + <div class="list-description"> 395 + A listing of some of the options available to use as an audio source, or as a user-data storage method. 396 + </div> 397 + </div> 398 + <div class="grid-item__menu"> 399 + <button 400 + class="button--transparent" 401 + data-action="toggle" 402 + style="opacity: 0" 403 + title="Bookmark" 404 + > 405 + <i class="ph-bold ph-bookmark"></i> 406 + </button> 407 + <hr /> 408 + <button 409 + class="button--transparent" 410 + title="More actions" 411 + popovertarget="grid-item-menu-5" 412 + > 413 + <i class="ph-bold ph-dots-three-vertical"></i> 414 + </button> 415 + <div id="grid-item-menu-5" class="dropdown" popover> 416 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fconnect%2Findex.html&name=Connect&kind=interface&description=A%20listing%20of%20some%20of%20the%20options%20available%20to%20use%20as%20an%20audio%20source%2C%20or%20as%20a%20user-data%20storage%20method."> 417 + <i class="ph-fill ph-code-block"></i> 418 + Open code in editor 419 + </a> 420 + </div> 421 + </div> 422 + </li> 423 + 424 + 425 + 426 + <li 427 + class="grid-item" 428 + style="--grid-item-color: var(--accent-twist-2)" 429 + data-active-color="var(--accent-twist-2)" 430 + data-description="An overview of all playlists and their contents." 431 + data-name="Playlists" 432 + data-category="Data" 433 + data-kind="interface" 434 + data-tags="" 435 + data-uri="diffuse://facets/data/playlists/index.html" 436 + > 437 + <div class="grid-item__contents"> 438 + <div class="grid-item__title"> 439 + <a href="l/?path=facets%2Fdata%2Fplaylists%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 440 + Playlists 441 + </a> 442 + <span style="flex: 1"></span> 443 + </div> 444 + <div class="list-description"> 445 + An overview of all playlists and their contents. 446 + </div> 447 + </div> 448 + <div class="grid-item__menu"> 449 + <button 450 + class="button--transparent" 451 + data-action="toggle" 452 + style="opacity: 0" 453 + title="Bookmark" 454 + > 455 + <i class="ph-bold ph-bookmark"></i> 456 + </button> 457 + <hr /> 458 + <button 459 + class="button--transparent" 460 + title="More actions" 461 + popovertarget="grid-item-menu-6" 462 + > 463 + <i class="ph-bold ph-dots-three-vertical"></i> 464 + </button> 465 + <div id="grid-item-menu-6" class="dropdown" popover> 466 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fdata%2Fplaylists%2Findex.html&name=Playlists&kind=interface&description=An%20overview%20of%20all%20playlists%20and%20their%20contents."> 467 + <i class="ph-fill ph-code-block"></i> 468 + Open code in editor 469 + </a> 470 + </div> 471 + </div> 472 + </li> 473 + 474 + 475 + 476 + <li 477 + class="grid-item" 478 + style="--grid-item-color: var(--accent-twist-2)" 479 + data-active-color="var(--accent-twist-2)" 480 + data-description="An overview of all audio inputs. Disable a source to hide its tracks without removing them." 481 + data-name="Sources" 482 + data-category="Data" 483 + data-kind="interface" 484 + data-tags="" 485 + data-uri="diffuse://facets/data/sources/index.html" 486 + > 487 + <div class="grid-item__contents"> 488 + <div class="grid-item__title"> 489 + <a href="l/?path=facets%2Fdata%2Fsources%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 490 + Sources 491 + </a> 492 + <span style="flex: 1"></span> 493 + </div> 494 + <div class="list-description"> 495 + An overview of all audio inputs. Disable a source to hide its tracks without removing them. 496 + </div> 497 + </div> 498 + <div class="grid-item__menu"> 499 + <button 500 + class="button--transparent" 501 + data-action="toggle" 502 + style="opacity: 0" 503 + title="Bookmark" 504 + > 505 + <i class="ph-bold ph-bookmark"></i> 506 + </button> 507 + <hr /> 508 + <button 509 + class="button--transparent" 510 + title="More actions" 511 + popovertarget="grid-item-menu-7" 512 + > 513 + <i class="ph-bold ph-dots-three-vertical"></i> 514 + </button> 515 + <div id="grid-item-menu-7" class="dropdown" popover> 516 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Ffacets%2Fdata%2Fsources%2Findex.html&name=Sources&kind=interface&description=An%20overview%20of%20all%20audio%20inputs.%20Disable%20a%20source%20to%20hide%20its%20tracks%20without%20removing%20them."> 517 + <i class="ph-fill ph-code-block"></i> 518 + Open code in editor 519 + </a> 520 + </div> 521 + </div> 522 + </li> 523 + 524 + 525 + 526 + <li 527 + class="grid-item" 528 + style="--grid-item-color: var(--accent-twist-2)" 529 + data-active-color="var(--accent-twist-2)" 530 + 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." 531 + data-name="Winamp" 532 + data-category="Themes" 533 + data-kind="interface" 534 + data-tags="" 535 + data-uri="diffuse://themes/winamp/facet/index.html" 536 + > 537 + <div class="grid-item__contents"> 538 + <div class="grid-item__title"> 539 + <a href="l/?path=themes%2Fwinamp%2Ffacet%2Findex.html" style="color: var(--accent-twist-2); padding: var(--space-3xs) 0"> 540 + Winamp 541 + </a> 542 + <span style="flex: 1"></span> 543 + </div> 544 + <div class="list-description"> 545 + 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. 546 + </div> 547 + </div> 548 + <div class="grid-item__menu"> 549 + <button 550 + class="button--transparent" 551 + data-action="toggle" 552 + style="opacity: 0" 553 + title="Bookmark" 554 + > 555 + <i class="ph-bold ph-bookmark"></i> 556 + </button> 557 + <hr /> 558 + <button 559 + class="button--transparent" 560 + title="More actions" 561 + popovertarget="grid-item-menu-8" 562 + > 563 + <i class="ph-bold ph-dots-three-vertical"></i> 564 + </button> 565 + <div id="grid-item-menu-8" class="dropdown" popover> 566 + <a class="with-icon" href="code/?uri=diffuse%3A%2F%2Fthemes%2Fwinamp%2Ffacet%2Findex.html&name=Winamp&kind=interface&description=Windows%2098%20inspired%20theme%20with%20a%20classic%20Winamp%20skin%20for%20the%20audio%20player.%20The%20Winamp%20playlist%20is%20a%20combination%20of%20the%20queue's%20history%2C%20the%20track%20that's%20currently%20playing%20and%20the%20future%20queue%20items."> 567 + <i class="ph-fill ph-code-block"></i> 568 + Open code in editor 569 + </a> 570 + </div> 571 + </div> 572 + </li> 573 + </ul> 574 + 575 + </section> 576 + 577 + </main> 578 + 579 + 580 + <!-- Import map --> 581 + <script type="importmap"> 582 + { 583 + "imports": { 584 + "~/": "./", 585 + 586 + "@awesome.me/webawesome/dist/": "./vendor/@awesome.me/webawesome/", 587 + "@awesome.me/webawesome/dist-cdn/": "./vendor/@awesome.me/webawesome/", 588 + "@phosphor-icons/web/": "./vendor/@phosphor-icons/web/", 589 + 590 + "@atcute/cbor": "./vendor/@atcute/cbor/index.js", 591 + "@atcute/oauth-browser-client": "./vendor/@atcute/oauth-browser-client/index.js", 592 + "@atcute/tid": "./vendor/@atcute/tid/index.js", 593 + "idb-keyval": "./vendor/idb-keyval/index.js", 594 + "kmenu": "./vendor/kmenu-core/index.js", 595 + "lit-html": "./vendor/lit-html/index.js", 596 + "throttle-debounce": "./vendor/throttle-debounce/index.js" 597 + } 598 + } 599 + </script> 600 + 601 + <!-- Make every touched URL available offline --> 602 + <do-offline></do-offline> 603 + <script src="components/orchestrator/offline/element.js" type="module"></script> 604 + 605 + <!-- Scripts --> 606 + <script src="common/pages/ppr.js" type="module"></script> 607 + <script src="common/pages/version-upgrade.js" type="module"></script> 608 + </body> 609 + </html>
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/featured/index.html.br

This is a binary file and will not be displayed.

+2148
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/file-tree.json
··· 1 + { 2 + "APEv2Parser-B45AF6F2.js": "bafkreidll6x6uz2gwl5hnbdurkbkkgqrmkjcpgdcvqpxh3kro77knztu6q", 3 + "APEv2Parser-B45AF6F2.js.br": "bafkreic4uww36ahkdkudynhkaxqyqamp7gi5pqi4dbbz43r36666p6frxu", 4 + "APEv2Parser-B45AF6F2.js.map": "bafkreihikb5trjs7spd2utqakj63n5e3nvaz5gkju55p6zk4ljgdxmtree", 5 + "AiffParser-6MUZMZMI.js": "bafkreibvo2c3myybvnns5vj736224btsuooe76sljwckopl3kpweuwiliq", 6 + "AiffParser-6MUZMZMI.js.br": "bafkreifgrut3j4462eolbwb3qcaghv5i4rynzncs5dxkvt65zxa7lo54by", 7 + "AiffParser-6MUZMZMI.js.map": "bafkreiesvnau2losrlbv3talvrek5djm67lwuoclyux7c3rj4fhst7l6ze", 8 + "AsfParser-JPPU2U74.js": "bafkreigwv5pn6kw2bk33pdf3cotsbg3extk2vbdqwaxjdubxmqqd5pegpq", 9 + "AsfParser-JPPU2U74.js.br": "bafkreifq6clyatrekrdomtfvv726sasc4xaxkr3lg2fgnvrargoecceoga", 10 + "AsfParser-JPPU2U74.js.map": "bafkreiabrr6b4utkziw4k3oajircxairrle7hjmuldklq74ktppo7w5ix4", 11 + "DsdiffParser-FLM2HTLC.js": "bafkreifwidmjloguqfoohsyrukuqu5n6yvu3yiuq5xybngzmjq2d4upgt4", 12 + "DsdiffParser-FLM2HTLC.js.br": "bafkreiczzomhq6wtbqzo3g6zsnkpulkfg3xxq5rs3qwt6lmio34ygbof7u", 13 + "DsdiffParser-FLM2HTLC.js.map": "bafkreih77mp2zmz2rdnpeno5xpcrjhs3eizyp2iy5jgnum4ktedys4xmva", 14 + "DsfParser-3ZOLFQRK.js": "bafkreihgzfxxo2wjj77whmmhuo2ahvf7r54wyklsxmf24kxqop4mf7oody", 15 + "DsfParser-3ZOLFQRK.js.br": "bafkreigmybjkxrdmoqstktm5srk3du24xql7ay7esm7rwqjecoga3n36cm", 16 + "DsfParser-3ZOLFQRK.js.map": "bafkreih5g2gyxn4bmumrj57k6fdfz4t7vzkfexzwrnhokptoyehh5avtsq", 17 + "FlacParser-PHDBPMR7.js": "bafkreigplidfbiikevm4l6xnjmmn5hl56uttmrc636ryw7kj6hnaiotfoq", 18 + "FlacParser-PHDBPMR7.js.br": "bafkreibm66givnbd3kn7skbtsk7aog56aa4xdbv3wiq35mvvrtoo6hav54", 19 + "FlacParser-PHDBPMR7.js.map": "bafkreihxghpo7ilaihxhce75wmlcjoiztgkiynkpnnrhipjteh4bj47lba", 20 + "MP4Parser-YD7KPZIH.js": "bafkreieyr5t4kp53awufftmai27juchj5wqhzft5gvdlfplugmzkkfyit4", 21 + "MP4Parser-YD7KPZIH.js.br": "bafkreidw7eglyuqpjgsh2zqtxyzbg32xvcrlgopd5s6h3tbgkcqlltzcie", 22 + "MP4Parser-YD7KPZIH.js.map": "bafkreicptlvz63iwgj5qzcvnlnazoipykw3egvvc25qynfrfsuonf2622i", 23 + "MatroskaParser-DIAEHWB3.js": "bafkreihpubxdgvpxmucvekvdsjdgxgh3ykhn5fxdqma7lnupinlb5vv62i", 24 + "MatroskaParser-DIAEHWB3.js.br": "bafkreicwf73jpjhlmrcy3om6msbmofmeivx7zp7gqqtg34h2zqct7pd6cq", 25 + "MatroskaParser-DIAEHWB3.js.map": "bafkreifcpqrm7x45egbrnwaazbpchpczgbw22wete5ariivgwvtvldn2uy", 26 + "MpegParser-GFNSZQV6.js": "bafkreiddpbovdkctldlg4suxgv7vltz5flu2tdhxsqkwsyf3zgqlr67hia", 27 + "MpegParser-GFNSZQV6.js.br": "bafkreiflgt5fj2so34twdeodlxyo6i3sp4xa4lyvwyucr47qehoarucsom", 28 + "MpegParser-GFNSZQV6.js.map": "bafkreicfcsl6yoyih372tpnyshvlstu5pcfootn7frfj7olrt3gzsxarru", 29 + "MusepackParser-CWYQKXJE.js": "bafkreihrilo6gips4cztoq3exam3ixegxjccwrzim6znguysnhfvmk7jiu", 30 + "MusepackParser-CWYQKXJE.js.br": "bafkreighrbb3sitqu3yo3i3x43s6tzxintblltfnxfoxwklp2xjlmdhjga", 31 + "MusepackParser-CWYQKXJE.js.map": "bafkreichzp6p3b7mucu25mqoijciewpkbffrdci4sld4qmd7doeiy6ttmi", 32 + "OggParser-JF4DUIRA.js": "bafkreifqhomtonsyy62bkm7gjfxz27pyyud3qxcpjzwxcelhrf57ckcqcm", 33 + "OggParser-JF4DUIRA.js.br": "bafkreigutpzbs2nukzwcoqd6e5jn4ut3h7la7jc6zz5qgb7nu36odmkgbe", 34 + "OggParser-JF4DUIRA.js.map": "bafkreiegy6mtp3nj6isqnhufl5jgyvvtfl66hkcdn2yzkfj7u4xlahssim", 35 + "WavPackParser-DE3XWLT6.js": "bafkreide3zcxmxxfwnsbe5ihmkeohhelxgfrpsgvvllac4scx5a3n5v5vu", 36 + "WavPackParser-DE3XWLT6.js.br": "bafkreiforql3z5fzss4cn4xv4wptzyedb6leerbzjo444vedzq6gbk3qtm", 37 + "WavPackParser-DE3XWLT6.js.map": "bafkreicgircodgagkd4dcjoi6drsa5t6se32v3ccuxkhhl7zshgbgtm6hy", 38 + "WaveParser-YZXHHK73.js": "bafkreic3snuotti2tsrjltsnai7yq7oamzhpe2zl7jcvehlc3zgmgtlc4q", 39 + "WaveParser-YZXHHK73.js.br": "bafkreifyjv6ptggj6e32kc5m6ik3s2rdvzxb27smgioftjpj4zbjz4lhrm", 40 + "WaveParser-YZXHHK73.js.map": "bafkreigb43cundvopkymwxuhdydpbpeg4cw45llyylmgxvguudcdemavuu", 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 + "butterchurn-OCY4IPUN.js": "bafkreiaxa336vite7mazptrszd2taxjiyj2s23qk547luk3us6rqoqw7ki", 50 + "butterchurn-OCY4IPUN.js.br": "bafkreic37auw6srtl3ovi2v2kzzumcezvxxht5wrw2jqb5au6ntuhx63ha", 51 + "butterchurn-OCY4IPUN.js.map": "bafkreie22opb77sj4r6lj4cjskoc6lsscpfjrzd7qihe5r5azpsdlej4gq", 52 + "catalogue/index.html": "bafkreigl3is2heqo2bnq6fskbh752nggiajarizxbjndz7cetsm4vapsbm", 53 + "catalogue/index.html.br": "bafkreiadus5ozqnwcliall64lse6rs7yi27o5pdjxxeajc2njsyyw2m5mq", 54 + "chunk-23J7PJHO.js": "bafkreieyllangj6dtaaysghjyzfzitsrlpb5a6j4uu3m4edzmzpqvclztu", 55 + "chunk-23J7PJHO.js.br": "bafkreiekfhtl6nhqyn3ejkqjsrwed7l42gbqravnew5gncuonek4tznjei", 56 + "chunk-23J7PJHO.js.map": "bafkreieovhsurpqr2yc3bibb2fdlzktgd72veuc3kzxkqqsdbbvgacsj4q", 57 + "chunk-2CE4HY7O.js": "bafkreiacfzztpir2lm2qt3t47kcwmnspqodahdrvdz2nt6mjjhtgkidmca", 58 + "chunk-2CE4HY7O.js.br": "bafkreiddvsgtz7mznh5ltxpn7nvqqbc7h6mofruylndl7nievphuajgkta", 59 + "chunk-2CE4HY7O.js.map": "bafkreih6c3i3rhqp7ntqkciy5jjkg5aex4j6axv4flpd7lumpkpvvfuxve", 60 + "chunk-2RVTEEJK.js": "bafkreid6b2fj75clb34a74k76k2yx7gwjs36leyi2zv7apahjj7r52agqm", 61 + "chunk-2RVTEEJK.js.br": "bafkreientdymln5ld6u57r7brjrtpay4bpofs6ldcnqu4u7y4vnh4rrz7q", 62 + "chunk-2RVTEEJK.js.map": "bafkreifoqb5ky3edidzrtyo5ab6uvurrpap7epg4utwda24v2nvujqamii", 63 + "chunk-2SBW6H34.js": "bafkreich26mghmuvptnrmxieggce43h3fsuc7okmswpjsotyqnq7s4t3xm", 64 + "chunk-2SBW6H34.js.br": "bafkreidzkwatxeflff3mua7uqsoxnaylrjyfyv6xthhpny3d5wsii2xssi", 65 + "chunk-2SBW6H34.js.map": "bafkreiath23jr3z4mmfwdr67gayfdgrqfkbbmgnuvjk35i2hphqybr3vgy", 66 + "chunk-3J6MXMAM.js": "bafkreie65csaolnwa7ziyhhtof36hkm6ob3i27uwvdmb56sjj75z3cmkxq", 67 + "chunk-3J6MXMAM.js.br": "bafkreihjhflivkc6ic2far4ib22nj277tfhmxkvje6cyoedmmzm3s5y6hi", 68 + "chunk-3J6MXMAM.js.map": "bafkreia5lxhvh542boaf6finxawb4my2wiaeisuqcp52n4wykwjwzs3ddm", 69 + "chunk-3QGTS6VV.js": "bafkreih73znql4dpxh5lua5smq22n4tmzhqrmoxcuxvbvmy3b7q2aywqua", 70 + "chunk-3QGTS6VV.js.br": "bafkreiaof5m77hmelx2ifamxixsppdyxf6txgjfpqk2ej7424rtdn5fit4", 71 + "chunk-3QGTS6VV.js.map": "bafkreigv5zzpi72yiu45zda47gxj3qli354ffrijalb3t242dtzp76mpsm", 72 + "chunk-4M37HRVT.js": "bafkreiedxurttdxr42joqnnhicdqwdprwetmecjfm7gln3srarujm5jp7y", 73 + "chunk-4M37HRVT.js.br": "bafkreibjjveono5mmtwlgk7dndayfxsyo4emwbld6nmz3labwbtmtuotvu", 74 + "chunk-4M37HRVT.js.map": "bafkreiey6tevwv7c4qiv5c555wl6enrvcptw7g6prmglnzkebykbdm4boe", 75 + "chunk-6AH2OFQT.js": "bafkreibpqwmtflupbqxky5vbzfuumnlre5mq2nqhjli7oilbr3vnssl7zi", 76 + "chunk-6AH2OFQT.js.br": "bafkreihugawflb5xe2phquhzquevqbqm4x4twva6u7atlilgqeypow3f7e", 77 + "chunk-6AH2OFQT.js.map": "bafkreicn5ftsrc2fauaybezg5esmytwstnzbsu45tzow3nci72yv5rxyqu", 78 + "chunk-6L4CMSHO.js": "bafkreihsdbd4nzyzj73us4vpxwvxobd4atebewegky3q6uv2waynnufx2u", 79 + "chunk-6L4CMSHO.js.br": "bafkreidxlzynp3mdpacuj2bqvbld33jbaedcdpbpoi4bz6jf7ecjy72twi", 80 + "chunk-6L4CMSHO.js.map": "bafkreicghk46as47habpdjfneu4beukq2vyehloayhthpvgne3fey7llz4", 81 + "chunk-6NC6NOLO.js": "bafkreigagpa3ku22dtbhnatbnprhyyiku32as3ylrxqxhlza66bujhmuza", 82 + "chunk-6NC6NOLO.js.br": "bafkreichf2iqa6fybrtm53tkn42ffv7lzcquz6kqnd4wwtpldl7664qc7m", 83 + "chunk-6NC6NOLO.js.map": "bafkreideuheiri3pavxxhrql575wjqo4j5d2nkxdayqtrxmpnruuxjmdnq", 84 + "chunk-6TMSPXBP.js": "bafkreifu7vrttrln2m5gma3x3dpugp3cs4mn2zzwrohhf4rdip535oepcy", 85 + "chunk-6TMSPXBP.js.br": "bafkreias4tqjz4eht3czcrqzx2s7hxqlcp4akfj6b7j36q5mtmpdev4sn4", 86 + "chunk-6TMSPXBP.js.map": "bafkreihfe7sxi7wddi7k7nhiice75npav63r3l7ovdx6bxvjolqwcu4kky", 87 + "chunk-74D5IDBG.js": "bafkreidlyb3alltk54hfv263eltgi4vwncdocjxbll7icqsuglnbkhzhka", 88 + "chunk-74D5IDBG.js.br": "bafkreianphdj2fvz3a2m767gfrm3cq62wqzflnxhe6yfgpeiczgai7cscm", 89 + "chunk-74D5IDBG.js.map": "bafkreibzjho6hlf2zbrci5tdmytw6zs7urlf2s6dromfw43jxnnrr7rssi", 90 + "chunk-75BXHJJB.js": "bafkreiernb2q266hv7sx7ctutndqpsjsvwnjh73lo565fqiyfe77hlcrxa", 91 + "chunk-75BXHJJB.js.br": "bafkreig4aavkihwzqh32ft5hvuhtlkgfrgzn34t4zpibv2x2vh333bpaw4", 92 + "chunk-75BXHJJB.js.map": "bafkreiakeddl5hpv7bfbryo3fwpvb4xyhsvrtmealciopsdf4k2ht27tru", 93 + "chunk-7IN7CTC7.js": "bafkreia6ifph6ncfqqb7jren5brlwpugndxy5wssgtb3qssa3c56vxeml4", 94 + "chunk-7IN7CTC7.js.br": "bafkreiedot6vmgfxudc43rsfroxbgai7uro5oppifa7jgtdzudb6dbx7x4", 95 + "chunk-7IN7CTC7.js.map": "bafkreifw4lvggg6zg5zqbifwdrdilypfbp35ovx2ubwrcw7sf2wtiddnme", 96 + "chunk-7J3HROIN.js": "bafkreifmnqjkbiyk475evnmwkaez7nha6d4gd7ex7w3fdr7nwjloiylb44", 97 + "chunk-7J3HROIN.js.br": "bafkreibyd72hosgy5pne4z3srd57osxj7e7yjzwvcuj74ayxxw2msgplye", 98 + "chunk-7J3HROIN.js.map": "bafkreigrss556klosuhkisu3vw5cfh455vkcpaxkpjal3zlxjcfdxzysdu", 99 + "chunk-7VVACK5Z.js": "bafkreiax2dfwquwm557t5yshfshidi6krug5lqr74ut3oyehylfvah2c6e", 100 + "chunk-7VVACK5Z.js.br": "bafkreiehcd3vmsr54lpy5up27iv4dqffwjd4a73zoqqj3fcmu25nbgdm4m", 101 + "chunk-7VVACK5Z.js.map": "bafkreieb6a4766jpaxjqkahiemwzgsa52ufgmetaww4mlgl736drxlivqm", 102 + "chunk-ATHACRS2.js": "bafkreihe44el6ffg2g5z3zufjge6vbibilnfiq76lifg532l6c7rvaqav4", 103 + "chunk-ATHACRS2.js.br": "bafkreih4qytff26xttoobsdbuja4wvexvtfchefqq5hrj37r6i6tcgn4xm", 104 + "chunk-ATHACRS2.js.map": "bafkreiep3pshbboik4aeaaz5pkhaxg7u3me6u6mrqljvtmooped4vtlkxa", 105 + "chunk-AUOLVULE.js": "bafkreifqkqnabzz75w7gxdyhsue37pw72wjqyb3mhrx5wdlmlqng5dabmi", 106 + "chunk-AUOLVULE.js.br": "bafkreicvgfqm7qez7rqcbthn5ggytngyrxtetjwexperhbvcanflkfhhpu", 107 + "chunk-AUOLVULE.js.map": "bafkreidjgjwdzfdago5ojm3ajivdwphvn5p4nenevszci54qajrjxf5t2e", 108 + "chunk-BFIVCPQF.js": "bafkreiblm5bcrt4hs2mhsnl2aujuezaglsm5jjuwt5rp5j7joh5l7ea6ue", 109 + "chunk-BFIVCPQF.js.br": "bafkreibsmrt7qkjhrn6anc2f5lbkusq4vj7yznm5swnw3dbdvoeymjzr6q", 110 + "chunk-BFIVCPQF.js.map": "bafkreiedpj362i2iajq3axfxp4igeunjyvp32by3tswqog35g33bhcojq4", 111 + "chunk-BNUDHFYP.js": "bafkreigp3t5bu46y7lzxgd52rl5torx3wylzsiffh74yanre2epzqlbfdu", 112 + "chunk-BNUDHFYP.js.br": "bafkreifwyllxu2lknkcan5hvmifd66nezpu4n3yajnye3soijvpb3ax6xu", 113 + "chunk-BNUDHFYP.js.map": "bafkreigmk4pitn4olohwpkdzqfjldlvisqwgzefglterxlss5bvlwjocze", 114 + "chunk-BR5FNG6K.js": "bafkreif3rfqazlkmplrcjqoozgtj37ynern5jtkj7gald75ysuriwxttpq", 115 + "chunk-BR5FNG6K.js.br": "bafkreicouaid7znmqgjk2aqovvfmdopobl64tsdafvuxme5fuwzsf3unhi", 116 + "chunk-BR5FNG6K.js.map": "bafkreifh6tgemabfqal6ubceduokpghfomgz4et6647mbph2wfcayrs6oe", 117 + "chunk-BUMY6KL7.js": "bafkreifbe2cjytlxvpcmgnrcy7go65iagm4ds7hnfnbxmex5gzz2q2n6bq", 118 + "chunk-BUMY6KL7.js.br": "bafkreifrdm72staoqzzhrff7fjgkagtc6kbxvzyh7jengcyvdbonc75qx4", 119 + "chunk-BUMY6KL7.js.map": "bafkreiaouf6zhvcpjo5ffc3u3jio56xrl6aq5tjcyl3iionzqdnvfodyya", 120 + "chunk-C64DBEMP.js": "bafkreiaaxvhcdmxdq4h6k5ndpxn64b6zgtzqczdcdqbt2ybtfrrocxpxwy", 121 + "chunk-C64DBEMP.js.br": "bafkreig4y3ljryua4e2jvazyzkpvf32p6wknl64xl5nuwax5tlqjwjxb6q", 122 + "chunk-C64DBEMP.js.map": "bafkreiee233iycnwkfui4ashscbvxsalgxtos3p3pnrg6h6yrkb5vfgbgu", 123 + "chunk-CFGHNC4Y.js": "bafkreifjm4krse4m4ikwltpv2hcnhk5qbhvtqorl3mjxczhy6g45mkfmyi", 124 + "chunk-CFGHNC4Y.js.br": "bafkreie2ft4n2xlosb6b3yolsezn7btmbatar4avonlpkgujd6wkv67ora", 125 + "chunk-CFGHNC4Y.js.map": "bafkreidr2yktfnonlawveifqs37spgvdsqq4ykkmx2p7bni5ic2pwoim5a", 126 + "chunk-CQ2X4SJL.js": "bafkreiejzx2ds74rmhezoknms4ny3noio74dvohon6nab2jbffzytrgbq4", 127 + "chunk-CQ2X4SJL.js.br": "bafkreigjhrbephjmzt65gu53sascc5say2gjfkfb7u5o7kg2ip3yroicsi", 128 + "chunk-CQ2X4SJL.js.map": "bafkreibqlhg2ewxoiqqmqvkmrs7lz3rrf7bphsw2kh4hqfth3wqjnx6dzm", 129 + "chunk-DGFSH4HV.js": "bafkreigkyzdmyhco5wm3vuvwqreaa3w6qzwzc5pcpqxv35feqrrhrou5lu", 130 + "chunk-DGFSH4HV.js.br": "bafkreidn2a3ubi6s4go357jle3rjvncojjvww6yauvn7wyazse3x6zb32a", 131 + "chunk-DGFSH4HV.js.map": "bafkreidcyppwoequlsumza76eq6dkkxep7sij4idqjonnyq6dem5rd3gru", 132 + "chunk-E6MUW73D.js": "bafkreiagyu5tbzxb4vzhe3odlxlovjmbgki5wt5t3m3yzou6adazx2iyki", 133 + "chunk-E6MUW73D.js.br": "bafkreibqvn2larlxfgqgmcl3pamtc25uub3s5nume257niewdqwx37q2ha", 134 + "chunk-E6MUW73D.js.map": "bafkreifyykjcgx7xlgnroi62pmg6quivrubwaf7psfnq5fbbjuur7e77ie", 135 + "chunk-ECL7O5N5.js": "bafkreifcidbun42pr4hf5fkjn646nujnpwuya3xf6e2vwyxjuvdzx5bfp4", 136 + "chunk-ECL7O5N5.js.br": "bafkreicfr4yqcbn3nk3venky5yth2pt7phrfdbzmvsatkwwvsbfvybageu", 137 + "chunk-ECL7O5N5.js.map": "bafkreibbphqnmpdwxjjv7zplnxm3fi5olen5b7k7auyct3l5rpug2q63ki", 138 + "chunk-EGZNAJEA.js": "bafkreia6xs7ajsckvapmdavelqlxqzxykzdsn3c7bvgl7dcyv65tr2ibdi", 139 + "chunk-EGZNAJEA.js.br": "bafkreigctoecdroabg6musfatco2g5v3xpsqf3j6gs5howsrghvwge7mge", 140 + "chunk-EGZNAJEA.js.map": "bafkreiayse5efkej6xu4xrmeuyxrtgpuduoxljilcrnh4lzx2f7kzzcbde", 141 + "chunk-ENJURKXP.js": "bafkreicqdgx57pmlbvobqaxjprjogswtckxsa2tyyqmphftlagrhf3bllm", 142 + "chunk-ENJURKXP.js.br": "bafkreihortvcc6iszoyvlhrgoewfhczfgrxex3g7a6blsenzjiudlk7jmq", 143 + "chunk-ENJURKXP.js.map": "bafkreihxb5mpusecdfki2zj43kwkc26wzsc4gw6t3xt5jbjt5govgai5yy", 144 + "chunk-EUSG77BC.js": "bafkreig3f2h6walpbs77u3byefrismvw7sbw746exhd4nedtfyjpqgcuzm", 145 + "chunk-EUSG77BC.js.br": "bafkreifbzmzlqaw4psanscib4lxqsdug7xcyeqwb4vinx2svwdxsbw7bbu", 146 + "chunk-EUSG77BC.js.map": "bafkreifcg5earwxhtidklsuhozct7tofdoi7h4bw5muv76sb5pkivwbazq", 147 + "chunk-FHDZ2ZCI.js": "bafkreibbmdwhwpemxgc2762fzqm4vbntgdh7x7r5af6l5bv3khe5asxkwu", 148 + "chunk-FHDZ2ZCI.js.br": "bafkreifkb3qbhpccp4bjqiefamwswulgtipalzdsngsxpmazs4orqikx5m", 149 + "chunk-FHDZ2ZCI.js.map": "bafkreiefsbl3yjkjt5pgiw7xr3owx3wcvjgntokl34hbl7d6fx3s7oqbou", 150 + "chunk-FKLEXSNK.js": "bafkreichiyexsgatldogypq2bjb3gzg5ql7rrydqsdwnxjspxpjjqbqt4u", 151 + "chunk-FKLEXSNK.js.br": "bafkreihdcmsm357w4mdf4wsleah7le3dd47aepisowmvcnfbwg4tgkazbm", 152 + "chunk-FKLEXSNK.js.map": "bafkreiacp7j3a355dlapvd3pvkddtyp2kp7cgttd77zmbpzv44k3spg4ci", 153 + "chunk-GO3MGAOG.js": "bafkreibtuu7ztvudgblhnmu3yuecnap6eapizxbw3cjtirv7iconjmvpuq", 154 + "chunk-GO3MGAOG.js.br": "bafkreiexipcq2zspfrsq4borx5ul3hfgfwzysogtgty6bqs2hicwpwdmmm", 155 + "chunk-GO3MGAOG.js.map": "bafkreif44uofxnzguhbclmzicnfthrsnk6x3rwin5sql3u25ty3iejbqty", 156 + "chunk-GSG5OS62.js": "bafkreidbjirksvir2wgrznal4bqdv2uqp6fytssbx5ye4mx4ybzb3s5ccy", 157 + "chunk-GSG5OS62.js.br": "bafkreie4htsnzhfjae6lxelxvkxxnbxzyvr356aovdsouwnx5tzpc2a5jy", 158 + "chunk-GSG5OS62.js.map": "bafkreibxrajsbkcxbpfi7gchvkhhwheehigmcoxji2fyhz2rdfhbd7keta", 159 + "chunk-H6DQPAGD.js": "bafkreicsi7zhcnomwtb5aixgoumf6j5dcogn47igb2fjt3ovfoctcwrfju", 160 + "chunk-H6DQPAGD.js.br": "bafkreifg73esxbpsi6w3y5bjbu2hfroxfgwkf5m4dxpfhijkoecgfb3mku", 161 + "chunk-H6DQPAGD.js.map": "bafkreibx7dkeh6pkl3rtm54ctjnjuopetqira2jphhqq3345qyh3lf2u5u", 162 + "chunk-HDWT7CXU.js": "bafkreigkkftng2bocu26sobvg27uwypqqnk5l6vcmh5jybpz3vbpyztlhu", 163 + "chunk-HDWT7CXU.js.br": "bafkreiacf7euynshfus3qwen74n7io5ldglbkkxsas7xpjpos3kaoitjei", 164 + "chunk-HDWT7CXU.js.map": "bafkreih7xwir5h53c5km5wponkm7sgmlmv74kblm6vtzteoojodueg3whu", 165 + "chunk-HNJVICLT.js": "bafkreiateg3qrzfvdjaimwznsi6u2xfqrirevpe6qxpv5golxatoa5tt2q", 166 + "chunk-HNJVICLT.js.br": "bafkreibt7ew5r3tgmoxhga3fzizruen2ix4jq65wh5tcao27ufnzqbksrq", 167 + "chunk-HNJVICLT.js.map": "bafkreig3bayzarw4webc5mqgbspk24op3go2u6dkyfrnqfn3ru27c2g3im", 168 + "chunk-ILLNXOTI.js": "bafkreiht3dseoevlbrjn4vd36nkhi4bisk7svskrdwjsuertpxsquat5pu", 169 + "chunk-ILLNXOTI.js.br": "bafkreibdxttvsoqfosgtlluvkkdryncifg7dkkq6aeo3tb6fheqtxve6wm", 170 + "chunk-ILLNXOTI.js.map": "bafkreiako244smcfd23f2gvqeggucu52any4c6omphhvluh77xluwdwlpy", 171 + "chunk-IUBFNQRH.js": "bafkreid76t73bylv73xaz7zflfdlnrvmtc3zyfqziaodkddjn2ofagvul4", 172 + "chunk-IUBFNQRH.js.br": "bafkreih3fjliawvkserpwvpefztqeyaxk4k7dri3d3tf4tgvja2dfspavy", 173 + "chunk-IUBFNQRH.js.map": "bafkreifvws4z2es4mtgqqvasg2jgygcwgyq2zlbjbhigceyxira6353lze", 174 + "chunk-J3RODCWD.js": "bafkreiglalcdspw2nuyzr2lk7zskqshh5cdkfva624kco6vtnrzst5ep6y", 175 + "chunk-J3RODCWD.js.br": "bafkreiabbm2ospn6se5tdan5nkbihhewhhtyc22nxybhctujecs3gsx52i", 176 + "chunk-J3RODCWD.js.map": "bafkreigf3dgfdhnl2jchfgmvxmrtbbb7dugp4h5ihf6tzwxi6qc47pp2wq", 177 + "chunk-J4KMYVZI.js": "bafkreic6olbpfyou35jbvn45hkaqhgxxsxrr37ss3l4eihlmhwg7vr36q4", 178 + "chunk-J4KMYVZI.js.br": "bafkreicjcyxc7uw7vfkjkafjirjlkxgonaufcdvln2ynrigxly6nxjm3om", 179 + "chunk-J4KMYVZI.js.map": "bafkreihruwtr3ardudaib3wgk4ad3agh2yyy4oovzmzs5tryz4vuraudua", 180 + "chunk-JPVVQ3UF.js": "bafkreieigxw2sofh2w5wmdfq2p45yhfpfhhh4kamwuuir3dq3q2p4w7je4", 181 + "chunk-JPVVQ3UF.js.br": "bafkreiah4dtlrdrmh7wqg6oyp7xku2fbq6tfftg2p7kkvqgpmqusgqem34", 182 + "chunk-JPVVQ3UF.js.map": "bafkreigrs6rbv5fiznsc5xjvw4kn45y3wygnsywukxezxkg3sn2fwyrp4u", 183 + "chunk-K24WPOYB.js": "bafkreiepc6tfkmmpqjkcfs6lria4h474yiblymx72rmcxsa7bcjl7p7hci", 184 + "chunk-K24WPOYB.js.br": "bafkreihcy2h5kgj3ushzchmkjyjwxzix6276nquzjm7h6k2x5spmxtaqom", 185 + "chunk-K24WPOYB.js.map": "bafkreiaxdxqvqx4wxqkhv7orbfztszhkitstpuch56lp2xowacnv7mndt4", 186 + "chunk-K2CRUTCH.js": "bafkreifxsdgwust46k7sate5bi3byz33cwxdbz4yyoh3ztc5gpfilqluh4", 187 + "chunk-K2CRUTCH.js.br": "bafkreibugc32e4phfjwk5fzcsro5dyavuq4v5gd7g7cphu2ihkuqk4zb64", 188 + "chunk-K2CRUTCH.js.map": "bafkreigfplrwli24tllfp7y2vn5hxe7anodz7tjsdqpooxiuowk6a7smp4", 189 + "chunk-K4RUWDWS.js": "bafkreie5gll4res2bqphjaxedfqv6re3bzbbnk6vazezlo2f5igmv5y3ge", 190 + "chunk-K4RUWDWS.js.br": "bafkreiadewkx363vy6uhorgkmjy7o7632g4raat53gvpleyuaou2zrzrp4", 191 + "chunk-K4RUWDWS.js.map": "bafkreihryd6pmgiwbepkgg5mkmtzhkkyv2jlackybvawwu6vn3ohnfjarm", 192 + "chunk-K6H6JNTP.js": "bafkreicdl4ukfelosacacuxuxy3c4ooyu5ifz7borrtgv7lmwcmfjrqxqi", 193 + "chunk-K6H6JNTP.js.br": "bafkreifiew3ajaobwgbnno2b2ch2cowgez3eevdtog3oravoi5fz6lua7y", 194 + "chunk-K6H6JNTP.js.map": "bafkreie4r3r6p6vep4gvprzregl5jidjwls6zwlygm43i4oblw4rcxlywu", 195 + "chunk-KCNZQKXQ.js": "bafkreifatgzvn7rhh5gl26eppqrc6stmwoa6cf2ixrvwdde4too4pjzzz4", 196 + "chunk-KCNZQKXQ.js.br": "bafkreidwtxwzt5oszbpcptenrk3cwtmqszpgqbkf5mjhe6mztrug7wpbwm", 197 + "chunk-KCNZQKXQ.js.map": "bafkreidh5r4brpyw74qicgjhfajbcgesftfufbatvjzoprboivriofa7ya", 198 + "chunk-KHNFRM4M.js": "bafkreian7pb7kyzgvzd3c6uzdswfhyismgxem3vnjbqkgy62sajlbsmlga", 199 + "chunk-KHNFRM4M.js.br": "bafkreicauexaph7kgontq7ukxzri3ytddu2tksgp7tcsjklcs4dboksbea", 200 + "chunk-KHNFRM4M.js.map": "bafkreih7cplhqqenutnqp2d47u6pvxybwdgi2dpnheixyvwu24uur4phsq", 201 + "chunk-MKW7W2JZ.js": "bafkreih5ae7ul73x4rdql6nyo7highbhhdojd77kh6b6xnzu2yydfyglsu", 202 + "chunk-MKW7W2JZ.js.br": "bafkreiclldx6yuv7atgvuumh66ogy6wzqobc3mdpsodkkqhewuynvn2a5i", 203 + "chunk-MKW7W2JZ.js.map": "bafkreiernzvutybqb7kukxy3o4o3wiidowhexqnxazyyumsh72dnit7vx4", 204 + "chunk-MSK7QOJU.js": "bafkreif4hky6pwhddevzej6wbu3hlu447gadubyknh2fex6lfeqdgcohkq", 205 + "chunk-MSK7QOJU.js.br": "bafkreibgafaurthmtknsesbyab6lxo6etmzirlrgh4fsbh7icydm62ah5m", 206 + "chunk-MSK7QOJU.js.map": "bafkreidxupdynklymypo7hrygz2sdjuvl7pqscvd6zfooqde2bhfovmube", 207 + "chunk-MTCNS3JB.js": "bafkreih2m5gth6kq3hhqfw4qzraajycphhkuxulsnrfjc74a6x5dk5nfdy", 208 + "chunk-MTCNS3JB.js.br": "bafkreie7pfghkrk52jl5tl3m5xv62k2ypxlenibirhrg4aozlb4dfk4z5e", 209 + "chunk-MTCNS3JB.js.map": "bafkreigaocpu5xl4qhtfwl7cdtjeiyrbuib6ge2a2yhyuw3glhqyfcubqq", 210 + "chunk-MWEXZQ4O.js": "bafkreie7olba6sundfegjtamo3t6snmtdl65ctqlpb4n3wi7v5jebsn3gq", 211 + "chunk-MWEXZQ4O.js.br": "bafkreidinrn2ygli4ov2kw2gjcb3dh4qcl5kxhy4gds75e6ocghmsdrrri", 212 + "chunk-MWEXZQ4O.js.map": "bafkreibts6v4fwpmfz7rfqcjcf65zus5cs6x3hlt5m5l5tjgzzur3knxee", 213 + "chunk-MWWZQLVP.js": "bafkreidw44tuy2bmo26lo4elyn26a4y66nn6z4cuaaypyo2wjcgrae2bby", 214 + "chunk-MWWZQLVP.js.br": "bafkreig3hctpjilyu6phtcqx62mzcnzeb27yz6qkiswelu5gl2q4bjdicq", 215 + "chunk-MWWZQLVP.js.map": "bafkreihu6jxwusjs6luvvrnccmqlswv4x54m4vy5kbjbl43oxegg2jdqfe", 216 + "chunk-MZPUBSAE.js": "bafkreigovgaydwrs7h5gruzzlf3qjkyc2cmgwtffhzeuznbrpjgufdjrhu", 217 + "chunk-MZPUBSAE.js.br": "bafkreicb7rrvumnekgfqasshqsgcuhfn672sivvagfi5f5r4433shts24a", 218 + "chunk-MZPUBSAE.js.map": "bafkreidz7f2lqxga5atsewaepap2mpnyyj54vl5jgz5g7srmhfwbuzrfha", 219 + "chunk-NEVFAOVJ.js": "bafkreiaerisy7xujhiqqj52upkmh265qns2pcq7hqp7ghem3g2mjvstcm4", 220 + "chunk-NEVFAOVJ.js.br": "bafkreif6g4hxale6so2u5dq7gk5vpvwmdgqgf4w7v3uoz4sh5cnrhex4bu", 221 + "chunk-NEVFAOVJ.js.map": "bafkreicajwekdmb5r5yzz3yo2i37ybzsqljypua3swlisrqyabumkvgvxq", 222 + "chunk-NQMEX7CZ.js": "bafkreifq5lzpd2ebcbnqmvs4np2xrrycj64cmopwhc7kgiqivohsz4j3ta", 223 + "chunk-NQMEX7CZ.js.br": "bafkreigoicsm274wyuyqtvhp6z7n3fzshphng77i3b2ofzhfoj4txzsot4", 224 + "chunk-NQMEX7CZ.js.map": "bafkreienoireyp6phcl3uqm3gnubuhm2fewytdbgj7jksn7g42ynixic5u", 225 + "chunk-OTRNQYY2.js": "bafkreihjxapeeys67j72426ied4wbxr34gwsg5znn5ssri4pwfni5hjyny", 226 + "chunk-OTRNQYY2.js.br": "bafkreidfim67sqkvcd7hbrqgsg7irgomvuaarx6r7vcag7q5vjdeebuqri", 227 + "chunk-OTRNQYY2.js.map": "bafkreiacovnxqsnczevv33qlprdjwu5ad7c3s7rjzbgsd7c5shmsapftb4", 228 + "chunk-OYKE33NH.js": "bafkreifqrebkd7vhc26356v6rxv6db3z6cluaywoscnsmsr3axpth2f6y4", 229 + "chunk-OYKE33NH.js.br": "bafkreib27jr2efehrr7scfkt4qgaof3fqe2ykiebnctsvn5luymlvau3ka", 230 + "chunk-OYKE33NH.js.map": "bafkreigbisjwv6i33t4jvmjjstifuac3dqek5gb3ysztqrmaxt5tlybccq", 231 + "chunk-PBZITCUN.js": "bafkreiatmad4aidc5xfoyyau7ej4iykh6l3focogb7arenh6vkmyb5pyhy", 232 + "chunk-PBZITCUN.js.br": "bafkreidqfa3njhwjer57lxzajwoayspp2l5dgn7pee64cmzi422jxslecq", 233 + "chunk-PBZITCUN.js.map": "bafkreiciltdszqzgmuvrcmblqubq6h5uzatlyhaffzy2muwu7dankhcljy", 234 + "chunk-PMV3ISAT.js": "bafkreidyoj4j63ju2n5kzqqhr527qckkaccfzv5mrhycbovufyizndcxc4", 235 + "chunk-PMV3ISAT.js.br": "bafkreiaeyvawlshsznafioxleply26xynurmalfbedq3h5m5gcdt5nxitq", 236 + "chunk-PMV3ISAT.js.map": "bafkreibcxwafqypasflr5fkotrrlx6mlm3ese66q53wuolaxlk3xhwpeom", 237 + "chunk-PPKEFF43.js": "bafkreifyl5hayxu2nhj2cev7brg33pvmjjkwgttfiflwm5lrgbfnv34ocu", 238 + "chunk-PPKEFF43.js.br": "bafkreigr26frr7byreulzujjcyod7zimvfyspdghw3fabexk2gy4gztmzq", 239 + "chunk-PPKEFF43.js.map": "bafkreig3a3ocajxekaspl5oo6svuixsqgggdni53jwf4lnuns4komn45py", 240 + "chunk-PU3KOTNM.js": "bafkreicrkhovjkagt6skmsadmm5pgrjs7bt3dffvesleqme7pvcnrq4fsa", 241 + "chunk-PU3KOTNM.js.br": "bafkreidn7xivprpyjgeo4wqm6vzy3iqokqohii7t3e7hkqaxhinicr6iia", 242 + "chunk-PU3KOTNM.js.map": "bafkreiaejwzpbozhxartigjrubgzrfzgkomxc5r33nmn7nuujcwcye2jtu", 243 + "chunk-PUCB64SE.js": "bafkreifwuu6bdqadzt3moeymvbpwihzpiwp575vt4jlllaritd4dqjxm6q", 244 + "chunk-PUCB64SE.js.br": "bafkreigrhqxtn6f3vwyuwimbpdqfwmtaprbrddirdmdt6jx3lclvrz5b3a", 245 + "chunk-PUCB64SE.js.map": "bafkreicunaexpvpcq2nl3ufzwsbedbban6burdftcbt2zegsrfkdailngm", 246 + "chunk-PYJ4JJFC.js": "bafkreibdzlctywj2uxxrnwqe22yiqfbw7r5fmj7da4cuvhp4gnx6prwhbq", 247 + "chunk-PYJ4JJFC.js.br": "bafkreifosvjhsiiidqaqgagyjpjphexdz2ibfmy6vtam7jy24bu2arm7e4", 248 + "chunk-PYJ4JJFC.js.map": "bafkreifpypcfbdhticcbws7czlc6xlz2lc5xhwhpm6uvdk7mh6wwuqw5um", 249 + "chunk-QOBPHMGK.js": "bafkreihhi4erewboq2hhcysgx3qcgk7vpmvhw3f2h6bdsitcuocvblph3m", 250 + "chunk-QOBPHMGK.js.br": "bafkreifpzmj76nvx33tmvsiklr2h6gfvh3fvgusp2hyj3emsixlpsl3hwi", 251 + "chunk-QOBPHMGK.js.map": "bafkreiergfu5274ylifrsaccrsedfm3j7z5ynuxvkbxuirg7yccdfwel2y", 252 + "chunk-QQ3UQ3JQ.js": "bafkreidx2iuk5nlxs5r42h7nuagb3mccy36x7yqt3z4utsppfs7lfy2qtq", 253 + "chunk-QQ3UQ3JQ.js.br": "bafkreievduuam6ogje6fudvaxshyn4ftkg5i4xvjyb3ajw5e2yykc6ozfm", 254 + "chunk-QQ3UQ3JQ.js.map": "bafkreienmzs6aq4c2hsetryis74exujxhsaemgkdjppvh7bay3hqch6gf4", 255 + "chunk-QVM63RP5.js": "bafkreihc2x76gioox6f2e2nnnyicerofleetqgeudykaj7lhhd6iitihzy", 256 + "chunk-QVM63RP5.js.br": "bafkreiazz3g4vzlwjubcffcnwz4evgjdllew3ijuh3sfow6u7acwcmvvye", 257 + "chunk-QVM63RP5.js.map": "bafkreiakrkot2wycjtjtjfgfkvlaa3m3irxujk4xft3a7webq2bxkyfw2q", 258 + "chunk-RHZZBZQZ.js": "bafkreid5fgrq6zgkohtmncf4zrewtvd7ytitz6vl422eygeisort2ytvbm", 259 + "chunk-RHZZBZQZ.js.br": "bafkreie4ejl2taurp4hwgt4n7bvnnrqsujfvscr55ddzhypon7gwsh6icy", 260 + "chunk-RHZZBZQZ.js.map": "bafkreiagyrauyvu5chf7hxpxtawlhm4ewp4tj7gtysllxxzjoepz4meyci", 261 + "chunk-RPJXLERJ.js": "bafkreickql7wrhgmqgy4ekpebqfb3j76tlyqkc3kx6s3nzj7ostnm4pqae", 262 + "chunk-RPJXLERJ.js.br": "bafkreibo5vbx5m5svk5zbdyhq5vyqw4qpmpvguqrit5giyv466ilreufxu", 263 + "chunk-RPJXLERJ.js.map": "bafkreicf3rr2zbkir7eulxqptnyz62ndjh64qinyzkt33azsxko5b5h6de", 264 + "chunk-RPTB6G7G.js": "bafkreiah5ds56ofltc4z35bz22ert347bkxddnxaht7frhx2icpyxl7lwm", 265 + "chunk-RPTB6G7G.js.br": "bafkreiffmh5gma64ku2gpy4i3v3jjdozpun2gr2ikeb7rvdael7uj4kc6u", 266 + "chunk-RPTB6G7G.js.map": "bafkreicluod35j3gcuy3kyzr6gvqovgf3kywumherzxbrghi5ga5c2wxty", 267 + "chunk-RQJCYF4B.js": "bafkreibs5apr5hzjmbe63cofwpypfc5nf6swatafapwsumddfvpk3o4gn4", 268 + "chunk-RQJCYF4B.js.br": "bafkreigtqt6iyvx5ayoqlnsf5ulyb3fbhzfg5sqyfrsqmfxhggap4unty4", 269 + "chunk-RQJCYF4B.js.map": "bafkreihhzwn5hszsbfwb6wyqlnrdgxxbc64zh4tp6afe4y6rsbfnxkib6q", 270 + "chunk-RYLJEHBJ.js": "bafkreiaiwhbfjx6ysvmuzflosmbduyzw6afljgsvvju5gs3k7upld2ab5a", 271 + "chunk-RYLJEHBJ.js.br": "bafkreigju3kj43jdttsskby7gzqqziutzgav3x7t2ixwjq6e63x3njs7ja", 272 + "chunk-RYLJEHBJ.js.map": "bafkreiauaev5zdirbdju4evjr2tyeuj4666xocjhd4lredls3on4wj33ki", 273 + "chunk-SMPARDQR.js": "bafkreietewru52y4me4za7uqsp2x4ef4xjaa7fa7r4ol57gypmvkby6cey", 274 + "chunk-SMPARDQR.js.br": "bafkreibskzsdy5dxtysjug7etouut74vtvxwhws4mkle7z3q4nx35nfb64", 275 + "chunk-SMPARDQR.js.map": "bafkreiehmfqtzct6an4gfcwlfvpmn34vbektjmdwea2luvaffwumvxflxe", 276 + "chunk-SVXEMCXP.js": "bafkreibmojfvus3akjypv6qdgiwytz5e2grg5c25unjsh2p7th2xp4hxuu", 277 + "chunk-SVXEMCXP.js.br": "bafkreihjagreclhbw4ouijttvznizhwb4b5tpnd6s7hyt7z4zf3yfybk24", 278 + "chunk-SVXEMCXP.js.map": "bafkreidv3u2c65y7i3vnfzqnnyk4ckog7iayzkvfscfh34km7tgg6fnkt4", 279 + "chunk-T734Y7R7.js": "bafkreih7jlp6xmjp7eagvxapeumycslswt36pisjt2bbsothi3zjcgmbz4", 280 + "chunk-T734Y7R7.js.br": "bafkreiet4kpivd5vpnyvinma67ncn2xosbhbawlfifjcnaxzmqqr7fsypa", 281 + "chunk-T734Y7R7.js.map": "bafkreialmpc6qyktt3geofahlgs35o3ekk56slqg6bkt2kpkberli4trja", 282 + "chunk-TAKUCXMA.js": "bafkreifbyf3mo364mfwtib4ii4a7nrt4qtqjljm3hpdrwlojwwp3ufq3d4", 283 + "chunk-TAKUCXMA.js.br": "bafkreicbxac6u6wactrdkvxjrozxi4bkba2ee2hzese2alyiqccjhffb4q", 284 + "chunk-TAKUCXMA.js.map": "bafkreiadwcze2dhotfeqgn55foiuo4zojniz6xvs56dtpjd3yitwpf4jla", 285 + "chunk-TGHFO6M4.js": "bafkreif6xitzlmndnetixnphziqbfpsviki2tvz3gavxqqxasd6dih4fny", 286 + "chunk-TGHFO6M4.js.br": "bafkreihusgvxz66mp6izctlfujykkfboxocuvihvocy7zu3b2xrxf44gku", 287 + "chunk-TGHFO6M4.js.map": "bafkreifouf7xaqwt3xumadooqjm6g26bicfaxixv3v4r5pu2oi56uqele4", 288 + "chunk-UMFFTZJV.js": "bafkreibn4bksytfsadj7yesed2mjggcqmvntzlwcipzlng6vrdjxviapdm", 289 + "chunk-UMFFTZJV.js.br": "bafkreidhc7ovbkbtqdxuf2quuilnjmgsfgf6xuke2kbhmmlvbvexibd6pi", 290 + "chunk-UMFFTZJV.js.map": "bafkreiaqi7tser6otvxbvsxxgvng2zffx2foq2ejr3q2w3o7rlfb4jkvma", 291 + "chunk-UYT7NSKP.js": "bafkreiaauqkcb7b5e4thydhyxqpx7n5lh6b5unnassmj4f5mertyxsy5kq", 292 + "chunk-UYT7NSKP.js.br": "bafkreiatebqpycfqhotpto2smkb7ywqwlb7oynf7rt5tgudrzoyqff3l5m", 293 + "chunk-UYT7NSKP.js.map": "bafkreifdbv5hqwtprqhzaf3zs3rhqoqo7gtslgy7zk3ibfcmespikrx6mu", 294 + "chunk-UZQU6UI3.js": "bafkreihy3cfd4f6kdeezb3qif433g7xmt67nqx5p6reh4wgiwnugofxzse", 295 + "chunk-UZQU6UI3.js.br": "bafkreigegipahwd6sou7zlu3ryczmvx7kiigdtpowqrditojgnza4yukhq", 296 + "chunk-UZQU6UI3.js.map": "bafkreifxk6ejtyqhdv7cxjsp6dvbavnqbopudbzykis6ni4roulncs4ohq", 297 + "chunk-V5SXC634.js": "bafkreia65et5qbnjbeuzkobhc6hk22xrxkkt54ocxqyhqgmvkacqymgrpi", 298 + "chunk-V5SXC634.js.br": "bafkreigqtegnzdefuisvfanjfn6ro6bemn7zpeakz4tqioawcpzwlwzkwu", 299 + "chunk-V5SXC634.js.map": "bafkreicmf4n2kpw6xxjtc5jpilud5rqq7kct6w67dnqwkuailqkc3wkngy", 300 + "chunk-VJVS6ZD2.js": "bafkreieivtq2djnbh3fnohyalmkl475st7etiahnlykupnixrzbjzmzyzu", 301 + "chunk-VJVS6ZD2.js.br": "bafkreiaqlenqvgxipfo6hnvmbk6f33hl2rf7n3kp63fqqs2xij7my3xcra", 302 + "chunk-VJVS6ZD2.js.map": "bafkreihyrxqec4u6naaks2kjw3v46ljwxmxq7bhr6xxarlc272kcc6yl6e", 303 + "chunk-VYV6NEIN.js": "bafkreifhv7vr7dcil47lfyugvbll2tgzcpeqlfic76xuuzwnglgkhqwaqu", 304 + "chunk-VYV6NEIN.js.br": "bafkreif5pw3ptmja2nbcbkkp4n7u6s2usux6llg3whb7dvlcbeejiwh3h4", 305 + "chunk-VYV6NEIN.js.map": "bafkreifh4vxpiusw6l2i4474ljecrsh2z7y7cvxt2ccppagw3amynrobvu", 306 + "chunk-W5CILZJO.js": "bafkreicyy2gzffuagp4icbllkdi7huwsbvo2rlffg36hx27oh7u4piqpqe", 307 + "chunk-W5CILZJO.js.br": "bafkreieg72hstwcj2ehat2ilis53lxktktxowqs5dbvmvaiglkbdyzbe4a", 308 + "chunk-W5CILZJO.js.map": "bafkreibht6lcog77xgqqqjln4iykxltpca7g3xxwwy6t7yfxhiq3yzzbnq", 309 + "chunk-WLXGGMHC.js": "bafkreibwg5urpnbmlsctgvv5tbpdztfmtl7vbvsyo2hwuum4ffe57lnj3a", 310 + "chunk-WLXGGMHC.js.br": "bafkreiar6dbftdwx5l3xxehi7setm67mzzkthinwn6o2m4tf27wag5h7vq", 311 + "chunk-WLXGGMHC.js.map": "bafkreihoj6vakurae5cdnmkhmb6aovcichj27cmmtwdaqb43we6aaywmju", 312 + "chunk-Y27VNH5Y.js": "bafkreibv7ugp5bzft3abtpnlb5ou6mqags62iku6vqupfy75nbsn3mvbmm", 313 + "chunk-Y27VNH5Y.js.br": "bafkreiblbyrgxukdolplaoqc32owblpozysdd4rc5634wx2mvb72kw6edu", 314 + "chunk-Y27VNH5Y.js.map": "bafkreic3lz3tv3jxunhhu4r4xeksiljiijty7vyoui2jwjn5w3cdieb7fu", 315 + "chunk-YHFKI4Y2.js": "bafkreias4hwkbica62grgmqvihrygwyypctd4napqb7j7vp7ga6buhvcfu", 316 + "chunk-YHFKI4Y2.js.br": "bafkreibnljtqrt5q4qdjkmx7eezjo5od6ha7je42bbwin3rmliwfy2yizi", 317 + "chunk-YHFKI4Y2.js.map": "bafkreihxzehovtourcl6a4wu6txjba6m2d47t47jt5u6i3qawkadldgieq", 318 + "chunk-YWNAFWKH.js": "bafkreidwxmqxky7zgr5yxaomkm67hltmf4qfydzqqx4wc3y4edyxs36tym", 319 + "chunk-YWNAFWKH.js.br": "bafkreig6a3hnfnanxzeyr4ffkctz5gvv3fufwhwcu4g5oxwj2dbd5hogse", 320 + "chunk-YWNAFWKH.js.map": "bafkreibzqa6n4usryexw27yr34yzpey5yadofydvz6evgicyve4mxldgeu", 321 + "chunk-YXAKQEZA.js": "bafkreidoxmrfbzraaall5752gtjeldq6yfdkhyiyl4gbueisdxrkpbputi", 322 + "chunk-YXAKQEZA.js.br": "bafkreidi2tiyk2en3pmampjdhvy2ithwfvs4crj5mtalqfe5sdwntu5oie", 323 + "chunk-YXAKQEZA.js.map": "bafkreie72ftjt2oypk4kwxguhag66qhbifoqub3a5aopn7p7lv62gohuwi", 324 + "chunk-YZPVIF44.js": "bafkreihohhoknkzhjvfarrwjktmfwy3vil44lhgnqme7uczm2chmvpnr7q", 325 + "chunk-YZPVIF44.js.br": "bafkreigvkhprwfd4whbxdkogpaw3fkddiuegvnlynmykbp2kh7wl37kbii", 326 + "chunk-YZPVIF44.js.map": "bafkreigxhpzzyzdyh3zgx5wq7ec4i5higmd6jopiuftjyvbr2zzecxhvrm", 327 + "chunk-Z5PWRR3Q.js": "bafkreicz4v2s5zz2dt6juhr6y3xwfdvu7qfxeao7khaz267wtl3zpkemjm", 328 + "chunk-Z5PWRR3Q.js.br": "bafkreigh26rdfkjkeqej3m5mvt3emv55kwuvcxiwht7scvfukyiefv67ze", 329 + "chunk-Z5PWRR3Q.js.map": "bafkreiex2ux3xetcktjvpluv2z3oty2ooimus5pqcdvsv3nwj4nsbxvzcy", 330 + "chunk-ZCBN4C3I.js": "bafkreigj5l5zh7fsjxs2simmxvulgxsvxc2kkgnaightp4mznu7ja2geiq", 331 + "chunk-ZCBN4C3I.js.br": "bafkreifcljhrd46uchlmjstgklypucprvnpfnbzunfreitos44ymj47xzu", 332 + "chunk-ZCBN4C3I.js.map": "bafkreihsvflvd2xbg7b7xoga32dax2iemb5vupif25uj54ka6txnbidgau", 333 + "chunk-ZFCADOB7.js": "bafkreic42garcr4vv7ndcs2oomaw2ie4rn7entycrrnd5uhhhgb65uhpyy", 334 + "chunk-ZFCADOB7.js.br": "bafkreigmsrctnu6bjr72dt576jmixcxc2cscd72kx6b3672o2w2zqnoa5y", 335 + "chunk-ZFCADOB7.js.map": "bafkreiag3h5disjf3hx6mce72s63wmugbry2tlawmjjmusqybwiyidlr2e", 336 + "chunk-ZVDZOOIW.js": "bafkreics7qi4ws2k5kqu3cxic6nwab4rua2ggmmnyrfdxan2xxqmdxepsi", 337 + "chunk-ZVDZOOIW.js.br": "bafkreibnbmhbfw7qb5tkbziyomfb2enbwjbicawgy5ucqrfs65grn36fjq", 338 + "chunk-ZVDZOOIW.js.map": "bafkreiflo7x5gy5p3zes3jfwsuamm3wsiynjxfwldvjkcwqx3gqgmjxlri", 339 + "code/index.html": "bafkreieck7kh5frqgpje2bdg46b5k6d7artmafjtbgide3uugzx33ak72u", 340 + "code/index.html.br": "bafkreihc6yq7z4r3xm7evjole5sk3nis44ox4i7cyfqat66s47ley4jcze", 341 + "common/cid.js": "bafkreidsmk2bfpx4lbqhicqgjueoikhvreujtcep6mnx3gunrb7nvtecca", 342 + "common/cid.js.br": "bafkreibkkst5tfd44yhi35fmfo56topo5mn4odhxrkdo7kxxuxviy5ebxi", 343 + "common/cid.js.map": "bafkreibfypntjwrypmb4dwuh35hsobg6gey42lyq7l7474csgxkvs7dzkm", 344 + "common/compare.js": "bafkreibkatdhihqejfftdi3icuk4a76x43546yfaaqfw7sosnyeaft25fe", 345 + "common/compare.js.br": "bafkreiah4qod4tustnh5mskwc4qtejtbbz4lmmwq6x7dxye3ahasb3kk5q", 346 + "common/compare.js.map": "bafkreibdioxv7ad5ro6mizexacmouapgmxrpacijxoeghstuw53c4dlppy", 347 + "common/element.js": "bafkreia22k3hfbp6v5dcd2hu7zefboar4ld6tttq5vrxkaevj3s75x6mwy", 348 + "common/element.js.br": "bafkreiha2rqqgvweporq3wpc4tgfi5fiqhpx5du4recoomyfb5i4voltba", 349 + "common/element.js.map": "bafkreih5gvol3utjot77iekxiyz4mswgnhe7lj7vivq62m5bd5ym4ufa5u", 350 + "common/facets/category.js": "bafkreieufkhdx7cbmvufzowbxbbdgfhydr3ddt7qcyr4n4nqdhjf3lnsi4", 351 + "common/facets/category.js.br": "bafkreidhf3wrvjhsmqxov2hxb2atrcua3rji56767bags5pemlnozmyree", 352 + "common/facets/category.js.map": "bafkreifosw3yxia3dwviitwy7xr7nmuddenlgobp3zavhu5ge6r7e5xlzi", 353 + "common/facets/constants.js": "bafkreifdnfpjlxk675pk7zojuc2nxvwbrjzi3rs2iyn7pgdeeapuh4n4vm", 354 + "common/facets/constants.js.br": "bafkreia5beyqgktzpt6afhkxt5fs6x6kyvb255pwncpoovsmytndtsrqja", 355 + "common/facets/constants.js.map": "bafkreiamhej3cq6fwftdyvzzyvn6dmqk2ptji4jtxlzr3adjlkiounkc2m", 356 + "common/facets/prelude.js": "bafkreic7xgee42hhqavgy7rviabvaq2glnn45p7ifesasllpmkouzzwv6y", 357 + "common/facets/prelude.js.br": "bafkreighapt6omy2zbm5av6mkktwkcebywauainjec7iwwhjznthh55ta4", 358 + "common/facets/prelude.js.map": "bafkreielj4j63hshicayon5o66yyv46bvxojqhzljwgtz6bgw4u3kdenne", 359 + "common/facets/utils.js": "bafkreigamgvb4ghyzupx7puf5azx4u2c244dzaady5fskfsrw7tnojxuoy", 360 + "common/facets/utils.js.br": "bafkreifmzpdpyczuixd7jch7aqt33kysqomg4ohik7rir6lvc4glpqnjnu", 361 + "common/facets/utils.js.map": "bafkreids5iterd5ztjlb5xuw3sy6ur7xvvkcbwf672o4qzftstu4w6ottu", 362 + "common/foundation.js": "bafkreidecv6izd36t6ve3brnhgq3esvtlhfpdv5q3xc5nhh25rybwrwpkq", 363 + "common/foundation.js.br": "bafkreien6jd2temb27cywki5gqmlz2pxxgdmadppfv65b4rw7xsqy754ke", 364 + "common/foundation.js.map": "bafkreiebjvkqscslzmpqjvv66u373xptpoa5hkawfocom4fkvzedp4mep4", 365 + "common/loader.js": "bafkreib6osj2vkwrthog3mkjsmhh2geg5qmgmxbm3fetjykmjk7xo4nrtm", 366 + "common/loader.js.br": "bafkreiear36hbzdrxrps5gzta5kv6n6cdnkh7njjou45opbcgxszhvvqri", 367 + "common/loader.js.map": "bafkreibxvcabbj5byb6isv6ddlaql2nstsk4mght6ovwdbvwqhwndgecvq", 368 + "common/output.js": "bafkreifkvd6o25rxbxjp3pw4hct3puhvruh3y3624az3ajoyslenv32jsu", 369 + "common/output.js.br": "bafkreid2xy7hpdskgtfdovgo3ybdwsyyz5trfw45ltsikl6uqqulcqdwma", 370 + "common/output.js.map": "bafkreiarzk7ofi56yhlxmhyoyshi3tslu4shyu4jefufpwcps5nmab5ola", 371 + "common/pages/code.js": "bafkreiaofztxbgn436op3mhh637r5keadbmgvckg7wrdugb7mszdib57da", 372 + "common/pages/code.js.br": "bafkreibbux3tbize55cwnz4j4jcnea3sx2cychavczg7aeek432rnvyavi", 373 + "common/pages/code.js.map": "bafkreibymbgzrdyb36ibmtmshv6nka2osfoby4pyqk6j33v3r3kjszwmby", 374 + "common/pages/crud.js": "bafkreihls7n3jbrpcnpwb7cphtcmwxljespi2sgfxgixu6jzr6rcdxwc2i", 375 + "common/pages/crud.js.br": "bafkreigpa5jnthcm47dhaaclov46e2fjvvj5wcnyik632apgzc5hxjwawu", 376 + "common/pages/crud.js.map": "bafkreiedxoh4yvu3pjgtszwxcrdelpra5an2u2zscbdaya4zzmfjuy5llu", 377 + "common/pages/dashboard.js": "bafkreig36gq4bkyklb6nmq2f4dldt7vfpqyzzkqg7rxjkvvnl57oh7vdd4", 378 + "common/pages/dashboard.js.br": "bafkreich7gjutel24lpn4kdhmbwcg45skhgtemy2flnthtkvuxfose4teu", 379 + "common/pages/dashboard.js.map": "bafkreifdywrou4wjvotz5l7zigprs2ofeq4udvsn63xoxm3i5d2yn2lqai", 380 + "common/pages/from-uri.js": "bafkreibm3za23bqrx3lgmb7ntd2xrdh2533ghan6uk4la54ttvpifpslo4", 381 + "common/pages/from-uri.js.br": "bafkreibmkp6qowzmlilvuez6t2mchpbemudij2sigs7wjfxrexfglmmb6y", 382 + "common/pages/from-uri.js.map": "bafkreicvfguu2jzmgfpv4zlesj54ejy5qvgwikvg2yk6ervcn66scpohyi", 383 + "common/pages/grid.js": "bafkreib3ka45uphayrxoqusj5e5cb25kynndh4s3ymydqmn4vlhhkrjlp4", 384 + "common/pages/grid.js.br": "bafkreibbuu5tpyg5gdz5iot4t2davn5llfz4ppjzylgd2neshd7wmkouha", 385 + "common/pages/grid.js.map": "bafkreihkrcxbuxvnfeuwmngevn5vu4ydikilta2gxaymsf7zetozfv6gyy", 386 + "common/pages/guide.js": "bafkreignkfa2u5yhyouzeyzfdibzd3kvrsek23vnrwoa5x4do6whncvoma", 387 + "common/pages/guide.js.br": "bafkreidar5yseufi72oarvxd7n7y4gimjzy5vsidp6d5nouaq3ygftb7ha", 388 + "common/pages/guide.js.map": "bafkreientbxoehjkrfz7ypfjuyugm2p7uoucg3p6cfmm6jxslvnx6tiayu", 389 + "common/pages/nav.js": "bafkreig7ee44yhgyolnz6tw65ci4q2cuavp7smkjlkbtcekbnzjstw7ldm", 390 + "common/pages/nav.js.br": "bafkreifuoic7sl32siplaeyo6cwqwt5azuohm666rfegqsacpkw53yy2pa", 391 + "common/pages/nav.js.map": "bafkreiedt2i73v36wumwfglgehf2rr3wxv75nwkrirrypy6kwvubzx5sr4", 392 + "common/pages/output.js": "bafkreicv7sy7jwsxd2o2tx4o24gvlpxveguza755hvsyouyvsv2swy6y7q", 393 + "common/pages/output.js.br": "bafkreie42pr6gxdhtowrk4nw24zb4lmpwc22sflowmpdf4vydbeiuhhztm", 394 + "common/pages/output.js.map": "bafkreifp5xbfzgpim2jils77ps6lei7cpnsqz3zcxofoeqp3ryqxqwjbnu", 395 + "common/pages/ppr.js": "bafkreicudxdedemghkwabropi4sez5yh4gsdks4xfvaf7n6zvyw7ohk6pm", 396 + "common/pages/ppr.js.br": "bafkreib2i7wzdhq3npiiql6aehrpyng6ufzeecq7o4n6n5ziauvfth3koa", 397 + "common/pages/ppr.js.map": "bafkreicefpavzi5zjh7mrzn6bhvjwvosmhxreuk5ij2mjymlj2w2rilgce", 398 + "common/pages/version-upgrade.js": "bafkreidxlsjqi26jd42grpeu72ublnh3egk5bfntyl2aohzsep74g55wxu", 399 + "common/pages/version-upgrade.js.br": "bafkreiehlmco2j3dheplva2tg4dottsoymgwr32po7atcwh4irk6eyr2e4", 400 + "common/pages/version-upgrade.js.map": "bafkreic6susmpnzcqhhqvy65ya4gsqga2froj2gvc3ig33vp4vhx3lljxi", 401 + "common/playlist.js": "bafkreickdb57kl2b5ihdpdkl4u2t3mzgshttfjz3yfopopfffukgtxesk4", 402 + "common/playlist.js.br": "bafkreibbl6gqe2dz5d6v5ozwq7zibbmq624coqtu6ynjx7qkoi2t4wcvi4", 403 + "common/playlist.js.map": "bafkreia2jgicwv2ywl6zhioipklgx52fw3r6bn4kb67kq64uhw5one5d2y", 404 + "common/signal.js": "bafkreibimort6ycfslcprzu7fybqpm2htcxnbbwulogfssvwvja2lprjom", 405 + "common/signal.js.br": "bafkreidzyuiwndfgicqkww6piimbxf7cixv4o5rakq7sfswrl5hkxpb3km", 406 + "common/signal.js.map": "bafkreic7bubha5qokthfjgia7pz66k7k2cmopkp55vjbbtjbizsv3xal3i", 407 + "common/temporal.js": "bafkreieeiqqbtt3itqscoha3tpun5hhkxmk7vdx54qxdfj5yj7s6bnsdzy", 408 + "common/temporal.js.br": "bafkreiagsdq2ojtd43et2yivs4lwks3dazd62b46cx7jucjz3ac3dlgsbe", 409 + "common/temporal.js.map": "bafkreigvmohdhtpkyyp65uurrlw66xwflb4teh4lizoqomomfdzw7nv4eu", 410 + "common/track.js": "bafkreibz27zfdwcahhplbwjp2hcc6hbguas72p3qfptlo6jpsx3vitqk2i", 411 + "common/track.js.br": "bafkreiex5kgoi2mjxv2rrdorvoypwczx73mmf6wac6c7jx2gxcyao3gkbm", 412 + "common/track.js.map": "bafkreihzfcpvw6tiqavpm43tfiyf6zyeootmtldpcwxmgyfcwst3zabzbe", 413 + "common/utils.js": "bafkreidigk63bjoui7qkve576eld73sliji7ewuhtn7bnp7pzsquvanwzy", 414 + "common/utils.js.br": "bafkreidslicfwfasumsc5mv4ebbs4jsrsb5mrbdq7zn6jy4cp6gkhyq2ni", 415 + "common/utils.js.map": "bafkreibbv5lcc6dct7o5kuy6mjphjux5mvefwo5n3jfcwvizr5ow7xnh44", 416 + "common/webawesome/detect-dark.js": "bafkreidomlyaqp3hewwvxlqsioxfaiyu2i5csgf5clga7z3lbcljghwsuy", 417 + "common/webawesome/detect-dark.js.br": "bafkreidl647zmmk5iqj6fyebye65322qtde652ehzctkxddkjy2cdrzdxa", 418 + "common/webawesome/detect-dark.js.map": "bafkreid64evqzaubyc7uat7qqz7cosuqiawmdgzz6d5d6dk3ilpkeafiqy", 419 + "common/webawesome/phosphor/bold.js": "bafkreictugbkpjq4k2p3o4zioj7eshrf2eifmnetz7kf7fk2pkisp7j3ue", 420 + "common/webawesome/phosphor/bold.js.br": "bafkreiff7meepypwnrktgcslw4pzu3zswafafuxuhcygsd3ybtwobmsjcy", 421 + "common/webawesome/phosphor/bold.js.map": "bafkreihqunjqi336pcih4bui72qzxahcuu5r6gtytpasbd7gt6qbdisbhm", 422 + "common/webawesome/phosphor/duotone.js": "bafkreifeadb26uzyiya265q44kgqmdv4s6r5pzoxbzvnti72qkt2taw2ga", 423 + "common/webawesome/phosphor/duotone.js.br": "bafkreihv5gldx5cpg44evjfhhj4bm5sj7z2yfpgt6lmwwkbixfwt5jmh7y", 424 + "common/webawesome/phosphor/duotone.js.map": "bafkreiaw7nraf6chxpq3c3q5n4or25y2wov2cuz3kn5kesz5o7w33q2wwu", 425 + "common/webawesome/phosphor/fill.js": "bafkreifnkaf4olrsqtjzfwc24lud4jxj2hyb23b64fuuyrkzqdlkwoq724", 426 + "common/webawesome/phosphor/fill.js.br": "bafkreiejekuff6vfn6pc3h66t4xdv7fqu7xr5lwzjkepqhz2gwuj7rq45i", 427 + "common/webawesome/phosphor/fill.js.map": "bafkreiehdcloguxopa4yuqfvu2p7vnhdmuhzimha7yfcxtfumqffxyvjxi", 428 + "common/webawesome/phosphor/light.js": "bafkreid6sdayt3jh4iga4p4tztgc6xdrzob7o7y6afe6a4vl44xpz7d53q", 429 + "common/webawesome/phosphor/light.js.br": "bafkreicxegdcmdlarsbb4ycvodv6br7bjz2ppaz3wekdd3umt6o5ibg3am", 430 + "common/webawesome/phosphor/light.js.map": "bafkreigx5lvxvhlf65exnvgr6nsjeoodn4dujj4hhhcbdubi5tkpyc3vfe", 431 + "common/webawesome/phosphor/regular.js": "bafkreiddnmdzvihootnemua6gj4j2mc5w6tj2tvci6yoln33kleiocqjt4", 432 + "common/webawesome/phosphor/regular.js.br": "bafkreibwmccoy44yukemmwqxnl5abbrlqngpgda6b42sklabng5s5pytye", 433 + "common/webawesome/phosphor/regular.js.map": "bafkreia2qctc7y4n7vgdg5vn33t6fxeqzhizt4uytmaubmez3bjgbbf7oy", 434 + "common/webawesome/phosphor/thin.js": "bafkreias6x43x2dn2p3vckp4gakjouwmmi2hgi4u4rcknakjh4rcjkjd2q", 435 + "common/webawesome/phosphor/thin.js.br": "bafkreibvcn6amunwm3ru2jfsyydkud7ijrsldch3dvkxwaes6wxa4zju6i", 436 + "common/webawesome/phosphor/thin.js.map": "bafkreievedd3phj2pof5q3d3qvzlussfmseal4etu7qsollvt6xri3d67a", 437 + "common/worker.js": "bafkreidudgxu2txuy3ds7ci64od7wnzb7insyodi6gynbffo6hfuneepra", 438 + "common/worker.js.br": "bafkreibjyvjw2anpcczoy6cwwz3jnbwv7rtstyscshea5twfvsy5rkwf7q", 439 + "common/worker.js.map": "bafkreib5qcrmbmhc2wslsk2pdorxbp3wcoemd5e57rmlmnl4o3r4pp3oyu", 440 + "common/worker/rpc-channel.js": "bafkreig7ir34wcbgnqmiinerljb3tnvwtklxyc3iy4vhwszrtrg77cyah4", 441 + "common/worker/rpc-channel.js.br": "bafkreih277jfl57p4jcxh23qp3auazbjy2fxpkl6qhonstjmseaifbi5zy", 442 + "common/worker/rpc-channel.js.map": "bafkreia262yz6qu7pon27vqt5vi7lsc3xz22lmxa6m5vkripw3wo56lgti", 443 + "components/artwork/audio-metadata/element.js": "bafkreiabzevrnoo33wnyevu4245on7wkguyhwtbnixuk2zidlaynyze4lm", 444 + "components/artwork/audio-metadata/element.js.br": "bafkreig3u2qfnjqgospjqtxg5uzkg7blduuel6etmvwmi7l5cbp5r5anwi", 445 + "components/artwork/audio-metadata/element.js.map": "bafkreick5vgqyj3mo5z7gvltgcajwos6tzgingppetegyrwtfxwaq4n2ma", 446 + "components/artwork/audio-metadata/worker.js": "bafkreif2kbgp2s5jbmzl3qzq6nb4b4q2psu4jy4vh5vwvlwfzlnrp5huoq", 447 + "components/artwork/audio-metadata/worker.js.br": "bafkreifwwp4poendh5jaxrv7vb66kpkdnb5v6bda2nqpfbqg4cg2jpgrem", 448 + "components/artwork/audio-metadata/worker.js.map": "bafkreihi3ojydcihyaeranvtapwdfsqynmwmlknc4xwqksjmtxwb7lynb4", 449 + "components/artwork/input/element.js": "bafkreickakmo5coevdhixxgcknqmag42hngexgf7pquz56eulqjvf2nije", 450 + "components/artwork/input/element.js.br": "bafkreicdp2w7qba22tp2jjg6jycshrs7qfsn54to6stoxjj5qvdqtmh5vu", 451 + "components/artwork/input/element.js.map": "bafkreigjsny4jovp54lyhlfulu72frbfjhfthvh27enbmfmj7a4qtrgqci", 452 + "components/artwork/input/worker.js": "bafkreifrmjf65lntikezlrat3i3zv2mn37lpfwn4nhcjhul5ysef7t34ye", 453 + "components/artwork/input/worker.js.br": "bafkreie4m5zrfm6ghuzw4jvaom37wyay7vacwbxmmfagtbqoastmzatcwy", 454 + "components/artwork/input/worker.js.map": "bafkreidx4wzfqshsawryypbwmacg4p5cb2d5iwq65eijwddvisxivzz3bi", 455 + "components/artwork/last.fm/element.js": "bafkreieyoparr22v4ttj2zmbiygxkip4ufxbdg4hox3xn6ktcvjhd6n66u", 456 + "components/artwork/last.fm/element.js.br": "bafkreihycjjoneei2b7fiora53eukxt72ltcmydbai6g542fmsuo6mcl5i", 457 + "components/artwork/last.fm/element.js.map": "bafkreihbl4w3nwuhltmuyj35q464r4kbaxqftyewsf7fwko6gos2r6djie", 458 + "components/artwork/last.fm/worker.js": "bafkreifbtsb6obmnxk3zvqtgdhwu55jwpwkmnjn5bc7vpkirw6pngif2sq", 459 + "components/artwork/last.fm/worker.js.br": "bafkreigh3cecqtdlgwz5uuxs5apz6j4ay3b3iqeeugec63bhabtkly7vby", 460 + "components/artwork/last.fm/worker.js.map": "bafkreif5vswsljnetsunwib5zl6cbuo3jy3s47z7czglewoldlu4ag6ape", 461 + "components/artwork/musicbrainz/element.js": "bafkreiacccgay4if6zwmpxq43dce5idcynptfjapxcfs2bdch4fje7aieu", 462 + "components/artwork/musicbrainz/element.js.br": "bafkreig2u2w57xkni4qhsdarixlsomsgamo5gtjpxcaa7lgtgwat334k44", 463 + "components/artwork/musicbrainz/element.js.map": "bafkreiegnmy2qlksde7va6jsnqq2meesouyigdadg6vcvfk7snqlk6lyca", 464 + "components/artwork/musicbrainz/worker.js": "bafkreihuzqsqfjqvleuq4l2gqnsvas5ahenp4dad6yk4d5qifndyivbzcm", 465 + "components/artwork/musicbrainz/worker.js.br": "bafkreih5xzho5ffmevwszu33nz3yhlagc272t3ljdvjiiicojp54mhqm5u", 466 + "components/artwork/musicbrainz/worker.js.map": "bafkreidumkuceqlxswvztcru5m6ked4keschygt5zviflcfnagnvvhundi", 467 + "components/configurator/artwork/element.js": "bafkreigdt6gezssflrxflsejwc2xahccugqf76sgfddxtbny7f4mkpeaqq", 468 + "components/configurator/artwork/element.js.br": "bafkreihs5vj6q6ul5e6v56aoq3tzmqyzqoispguk3l7sgykucsyt4iqqhq", 469 + "components/configurator/artwork/element.js.map": "bafkreig35txucgz33d7t65dqeu3z332vxfd7kgvynopsucfyuw4ly2qfjy", 470 + "components/configurator/artwork/worker.js": "bafkreiad7lkwgje6e65chyiku3u37fsznryoenyx6vivhx4pbko4xifeei", 471 + "components/configurator/artwork/worker.js.br": "bafkreihtxlmcoitdi7icwlquunklmtp6ggmvwkqlcsqgyk5xdbqdtw5i7y", 472 + "components/configurator/artwork/worker.js.map": "bafkreiaejptllpx7mwdtbjtds73agn556xduq4xisncdi6f2q5cqfqlv5i", 473 + "components/configurator/input/element.js": "bafkreihthef7n5dw5sersbn6flkpwi2thtygxs44jktxv2fttjoqceno3u", 474 + "components/configurator/input/element.js.br": "bafkreign3h2knwpl23zswj2udatn57x4xr6kr52irkfzfyeido2aslfsnu", 475 + "components/configurator/input/element.js.map": "bafkreif4ihdxm6qhetqphjxpwedn7jvvvudeg22vsmqikeozhr243zhtu4", 476 + "components/configurator/input/worker.js": "bafkreia4qsczz5cmjn2wpix7dvyarpvcmtcti5plsndlb4gmid5v2bkocu", 477 + "components/configurator/input/worker.js.br": "bafkreifg7b2qufwvqa3nisk5avc7p2uoj5pgfcfd7ubdalzcvpxge7at2a", 478 + "components/configurator/input/worker.js.map": "bafkreicqj5v4fyaevtqku5fwh52r7ujpkvt2anyukr7r7mc5nzroymaru4", 479 + "components/configurator/metadata/element.js": "bafkreia46lalvonizeegtnc3qnngehxgafoowdhmcnlxmy62exkanhrxiq", 480 + "components/configurator/metadata/element.js.br": "bafkreibgrcgn4v2deyhufdk3ceu7sg2wz6fystsg6kkrlao56xm3kuwqai", 481 + "components/configurator/metadata/element.js.map": "bafkreierhfrfx3dcfbbnublkyqcwroouvmxzrqrrkcqfy5b7vpgh47m434", 482 + "components/configurator/metadata/worker.js": "bafkreih6nupmqcpgnpjtasb4r7dpuvdpgb3qopivx7ec45vuszyzvprj3y", 483 + "components/configurator/metadata/worker.js.br": "bafkreieihiqhzccjvrouxgrq6c3g65jkrxikpsta46pkbv6wji3mdfm2je", 484 + "components/configurator/metadata/worker.js.map": "bafkreihunikcghk54yuv5rkqmqbuo4khhlyyifyrekl6xnsqrmqympdbd4", 485 + "components/configurator/output/element.js": "bafkreigmcqukevy4x4oko67lckg3x46kmdc5nfoqhtihp6wdnh3cozbhym", 486 + "components/configurator/output/element.js.br": "bafkreidere3riuwbt6rgoqtdsbfnfmhgeog2u62zzfqp2xneimo676j7xi", 487 + "components/configurator/output/element.js.map": "bafkreibtsho7fxzrxnqmdwdmbrcejgzwi7zkprlnxoawjzoosvq5zudwmq", 488 + "components/configurator/scrobbles/element.js": "bafkreieirsosl7xrojv4lc5bxvakozy6epikslpn2u4ofkj5juy6edpywa", 489 + "components/configurator/scrobbles/element.js.br": "bafkreiela7xunoa4kezgwr2phatwgvakxnjztrjdakwsdirxgnvkybr7h4", 490 + "components/configurator/scrobbles/element.js.map": "bafkreie37nisxa3yae5o22rmo4jtfdywhkoagwkutv4ebcdxtrzzgwjnam", 491 + "components/engine/audio/element.js": "bafkreidtnpixqfuzhb3itll3xmzboqt7k2f3fuzjlphrcaj5jqoojh2soa", 492 + "components/engine/audio/element.js.br": "bafkreiev7c2yccyq7yxii2bvs467fcpuf3rrbd4obvkefn7rj6mymuvniu", 493 + "components/engine/audio/element.js.map": "bafkreibpqiz3y7ckudkmkf3gdnkl2qqky3ug5ql3e656z2r4g3fnpk3z3u", 494 + "components/engine/queue/element.js": "bafkreidhpuhphfzid55rhe3zdcq7juououd5ocwwgwoa3wkecetcgvnkwq", 495 + "components/engine/queue/element.js.br": "bafkreifuuhurrjehju26gygmqsxzbcc6glmuntqfsrkx4j4zxit3f6v4ge", 496 + "components/engine/queue/element.js.map": "bafkreib7rjllwdb27hf2fdhpyah4leu4w4b3r5apx6k3hghdnlr2zo623a", 497 + "components/engine/queue/worker.js": "bafkreihrlzxsluuo7g33t2lwouwqzj57aqjtbzck6v7roabryxbtdhu4ce", 498 + "components/engine/queue/worker.js.br": "bafkreiaey3nw3n23tc2lvqzkpjz2pyyjo3v3morn4duzfajpvkcp3iwbbu", 499 + "components/engine/queue/worker.js.map": "bafkreihn5l2bx7qpjmddnxvx2e7pbsxrkpojen2uavf5pyvbbre2zasf4q", 500 + "components/engine/repeat-shuffle/element.js": "bafkreidwu2noq5b6zgi745dbzbu6gwaztkotfpri3quo4j2qlnvhzov2m4", 501 + "components/engine/repeat-shuffle/element.js.br": "bafkreiclnhpvndd7w4w3gr2ieos2tfikes22yolmsivh6vt63qy4zx7lxm", 502 + "components/engine/repeat-shuffle/element.js.map": "bafkreianfcoh7suqauxuvbsl3cefpt5qfwzizngvygfl7fxfajs2hciygm", 503 + "components/engine/scope/element.js": "bafkreiap4wm2mkncsdngomgasjufyowxzhp2z73pjggy6k6q62upz2shom", 504 + "components/engine/scope/element.js.br": "bafkreid3jk5fp2nekrh2sdj3zpciqy2p6i6ppgrtge7kcjmio4fejphseq", 505 + "components/engine/scope/element.js.map": "bafkreige3xrjyeq6yngiphf4r6w6cqfjwifgmo73pt6frc2jkjvgdeanvu", 506 + "components/input/common.js": "bafkreidti4u26wjz6xahgj3bnra5buxd2vrbdzyb4q5veqjj6rpcu35zb4", 507 + "components/input/common.js.br": "bafkreigexcmmuawmhuemjzls7b4corgpfiu2ja4phwoupode4lstry5h2q", 508 + "components/input/common.js.map": "bafkreihg7kl2brm7il4a4ex27pwoimasagoegbunobxxcvoe6bjnmvvc6u", 509 + "components/input/ephemeral-cache/constants.js": "bafkreieaa737xwfyy7kbxikkha435zn654fxeshyzpyhmbk6icnmrgdoq4", 510 + "components/input/ephemeral-cache/constants.js.br": "bafkreibikxsez6kgsye2xdfnefm7yfe756aahnmkrsqdwwsl4vaidr7yvq", 511 + "components/input/ephemeral-cache/constants.js.map": "bafkreiefoybiuwdxvlqlq6p4luhe4d3qcml5awor3tktgqpwq6q46rym5a", 512 + "components/input/ephemeral-cache/element.js": "bafkreidhn6lxvx7b7ryg5dihvw7zrp7s4hcjlkdvgtvxm3louutez4xdmq", 513 + "components/input/ephemeral-cache/element.js.br": "bafkreigw4voh2a2i4xzqho6xclypfqykxktnwvbdr4woaf7c7ibrlnqbia", 514 + "components/input/ephemeral-cache/element.js.map": "bafkreic5rh4kc7cyxgsgz27nncl3c5jlawljjghil47ojz6tiszsij7guq", 515 + "components/input/ephemeral-cache/worker.js": "bafkreigaazzmmpq4ldnjnj4czfjfkfkqb5fcwfh5f44vgrllmkur4cio3q", 516 + "components/input/ephemeral-cache/worker.js.br": "bafkreiangec6eiqaon3nmimsw6lmtcjfxnmehmaq4v4ajadkwc34wezdje", 517 + "components/input/ephemeral-cache/worker.js.map": "bafkreihcydf3p3xux353dp2b6grormodmtrjs2ddgbdpr44dpqobqld7tu", 518 + "components/input/https/common.js": "bafkreiajfmf6mbjudnhvufhzarejx5le5wjpmdmc3dcihbno4qsgnlsoay", 519 + "components/input/https/common.js.br": "bafkreidmecaurfbwmergnz5uge47ohf2yinrufnanob3ytcdndnjv3377a", 520 + "components/input/https/common.js.map": "bafkreietp46imv5sou2bpyoabyhbgfjq6gafkvrw3y73hqryyygftykfyu", 521 + "components/input/https/constants.js": "bafkreifeyu2qyg5e5rltckpjmk6uzgtfdgc747uy6rnfballvhmi7pow3i", 522 + "components/input/https/constants.js.br": "bafkreib7xukbpu5wflla4ifc77k727zyvakdy7w2gypefxsp5iiocp3cdm", 523 + "components/input/https/constants.js.map": "bafkreihjd3p5xyh4tczkqjn5bbuxhphyfcbxnktgouqimqhbjrw4xib52y", 524 + "components/input/https/element.js": "bafkreiaqsfkt5m2yb42yox5klrkbjceeoljj6t2ybsmjvccjreruboc47u", 525 + "components/input/https/element.js.br": "bafkreiavryhwuyp2x5zljo7a4kueiafa3wksuvx3tg7eaosrv5dnto2rl4", 526 + "components/input/https/element.js.map": "bafkreihkxmqqhzhwwuntpv6zafrlnvvd6kkon5clitfp6dshm7i77lloti", 527 + "components/input/https/worker.js": "bafkreibj3u6f27qb6ecmrwp3d37y6b3owlooggj2mxhnxoqy45d2wzit34", 528 + "components/input/https/worker.js.br": "bafkreibmcgdizpo3ucnfhxzfeattln2llxgs6gg3h2gp3rh3qwci6zbobe", 529 + "components/input/https/worker.js.map": "bafkreiclg6ju7x7vexfsorv3gsdqg4e63y5qppcgajzvbbeteeukia5loa", 530 + "components/input/icecast/common.js": "bafkreifgcahb6enkeqlt37vzdva2f3el5rtj2irmkp72uf7fyfggkn3hpq", 531 + "components/input/icecast/common.js.br": "bafkreifn5xbx5dmymz7opmyzk4yyrlieypyyub2bz3eg7ojttfanbeiusy", 532 + "components/input/icecast/common.js.map": "bafkreib6avkdpbp3q2k422dsxw5cyjgwky2ftqqfoqs3fxkrpydsnm7ak4", 533 + "components/input/icecast/constants.js": "bafkreihfestwgmebnxepzhgvif3h5cfinwxtcx7pbnpssiidxmiqosyf74", 534 + "components/input/icecast/constants.js.br": "bafkreicv7b33cpepor23em27l7br3zeocuov52hsho3xprfs6ansn5o3jm", 535 + "components/input/icecast/constants.js.map": "bafkreibmk5pnwzzkwtjryhfaq7cxvnflpad2sksgdrgrr5e2na2aluioja", 536 + "components/input/icecast/element.js": "bafkreibeccepf4pltotmzw27balcoeuxicy6up2cchik26obvz66fwonye", 537 + "components/input/icecast/element.js.br": "bafkreif2nbvyfrmx4jqoyks3rm7zeucmfwidac56uh6n4htoabwoqn7opq", 538 + "components/input/icecast/element.js.map": "bafkreibt27bm7onmc6xdqb2v7rwjtdxjg5nubm6hhdi2zvrt6gbieefrem", 539 + "components/input/icecast/worker.js": "bafkreifgscvtmrvdv3vw3ngumrvvhrl2tua454er7ozkr2ftwfcju3kmru", 540 + "components/input/icecast/worker.js.br": "bafkreihzq6ezcelamqqlppd3hslii7j4ty3ve2z7ml5m4jdmukve4fxqqq", 541 + "components/input/icecast/worker.js.map": "bafkreicsfhz6qvedd3h5ljtv452cnepczh4pwynuu5n34zdf4v3abntxwy", 542 + "components/input/local/common.js": "bafkreiafccjrklqbyg7mjxyqrxalitcd53d6hhlvkgw3of3ginulrvwgtu", 543 + "components/input/local/common.js.br": "bafkreif3biwcqt665c3ajcnc4ktjxff4oi6buvolcrzq4zwfsocohfouaa", 544 + "components/input/local/common.js.map": "bafkreifxdxfrfvayl3v4frvxby3cn5a544kp5vwhkgcd55nq4qr36bqjjq", 545 + "components/input/local/constants.js": "bafkreih6g4s6uolsquhq55jrhjoh6z3f72izb7xtkhhnxsqqtpgjlp4hju", 546 + "components/input/local/constants.js.br": "bafkreifg3l6jigzsqzqy6uc67ptafw2reu74eojnlp7y3iawdxeoxxg36u", 547 + "components/input/local/constants.js.map": "bafkreifwlm23oafc2sgpi52yv6tc4ihgy5o27rd56kpcwcyci5vetxycc4", 548 + "components/input/local/element.js": "bafkreigt3omh3jyiv6ojdpvu5eqsqo4dp5w7d64yp7hhzdh7duziaeey3a", 549 + "components/input/local/element.js.br": "bafkreicr2hzd2vvtl6s4kol4tao45522efev66jco4kyukkluctwsx35pi", 550 + "components/input/local/element.js.map": "bafkreichnnqa3surzzeojpyi3t6tg3d7cp3mqhmv4nfzccgvtg2qbxvdm4", 551 + "components/input/local/worker.js": "bafkreiaar25d2j7aiust5ctm5cegfgwobatodvnafp6hyiocj4rywkrdwy", 552 + "components/input/local/worker.js.br": "bafkreihmtvfpgb4gtg6jbg6gt4d5sjj23lour3ix44xa4dbq4yobw34o3m", 553 + "components/input/local/worker.js.map": "bafkreidsscon337zhcfog7c4dlj56rw7u7ggbimwt7cqayrfm2v2tg7gzm", 554 + "components/input/opensubsonic/class.js": "bafkreibi7t6qzvo3xvk2dfrtcpnpjtxegc3gmznrhm5r7ohmhoupdbluq4", 555 + "components/input/opensubsonic/class.js.br": "bafkreihhsjmag6klrd6tfx72mwabousoimcpwn5wznozkzcydz7zc5amza", 556 + "components/input/opensubsonic/class.js.map": "bafkreiaz6vvpskpxuaq6ean4gtqj5qkkqazop6qqwabswrml52oj6fllme", 557 + "components/input/opensubsonic/common.js": "bafkreiax5ojp74ia6y4en73xcdrq3zhjwa3pjremcbnilbkqedop3l5cya", 558 + "components/input/opensubsonic/common.js.br": "bafkreihhtoo3vrfgg5cmqru2d5gt4sqos3l24zmwgc77kruwhyyyzm22qq", 559 + "components/input/opensubsonic/common.js.map": "bafkreid6jboi7m7mkkzhgr6rrlijni3xywaezszejlhayc7yfjtvqxqcia", 560 + "components/input/opensubsonic/constants.js": "bafkreie6pas556tm35i2dfgxp7vs3nlwkmksluqjoe5fc64qpml7znrlnu", 561 + "components/input/opensubsonic/constants.js.br": "bafkreibd2yjlvx7y2tz43i6uw4vy2dwwhqr3ntremkgu76uoyjmm64raze", 562 + "components/input/opensubsonic/constants.js.map": "bafkreih2nvoreon2xobqjfddnbzvnpk4lpms36tdbrualhn2r2diwsncxq", 563 + "components/input/opensubsonic/element.js": "bafkreicnf4kaqoxm3iik4ig46nk3mxwtziv2avskevc4cbzu5m23anvwje", 564 + "components/input/opensubsonic/element.js.br": "bafkreiaw7tcgmsjxnf4qzsntlvli25ebc6txazmdfsuet73yeskgp5n2ty", 565 + "components/input/opensubsonic/element.js.map": "bafkreifwej3e7v32ekaydrzy4wcza263go2jaadxjtymnhsolu3wwzbygi", 566 + "components/input/opensubsonic/worker.js": "bafkreic5q7fjmfgehicy3jywk6va7lpp5hgm6pqy2zgm5e4icsyepo2aje", 567 + "components/input/opensubsonic/worker.js.br": "bafkreifwhklwwa2vmcyvymuc5hokugl5blg4u2jjqnb35imaf4hwx4z744", 568 + "components/input/opensubsonic/worker.js.map": "bafkreid3nxygcnknonn5iuab7ff4gwbcbwcwmsowqzvugzlmoixobwfl7y", 569 + "components/input/s3/common.js": "bafkreibqbofhyq2eax6zydhcofbdcy33ktqlmrrs7glnct2evg53to2goa", 570 + "components/input/s3/common.js.br": "bafkreifwosrmazdfypmnzqxmgucs4of324zm2srmgxulyvc6id7vvvbmha", 571 + "components/input/s3/common.js.map": "bafkreielyial67oo3wtbiu55mpszprrxfwyb7poy5mzjkqtmlxrlvnmhsq", 572 + "components/input/s3/constants.js": "bafkreigwune6nknv37zq3aqqlm2ukapddopc3jqhfxxf6veef4mopsrgsq", 573 + "components/input/s3/constants.js.br": "bafkreidzvsj6kwqqfwdh223tyja4uwjnlrfumqvcdrhvrfrpn6edxoeclu", 574 + "components/input/s3/constants.js.map": "bafkreifpy6fmie2cdiiuxht6b4x44l2oaxtltkwmarwoyljyp75epo4dxq", 575 + "components/input/s3/element.js": "bafkreifinsk6lp2u5crw6t6dv2roonam3vlt7lcjlr5dkojprmaxfcovmi", 576 + "components/input/s3/element.js.br": "bafkreidfkmfaa6miumebbwymermk4wkj654ayk35kijzmew6ffgh2t4jba", 577 + "components/input/s3/element.js.map": "bafkreiaer2avc4kvpotinul4e3ge6s5xlzy3qeft4rmcrcl6lgzabpzdxa", 578 + "components/input/s3/worker.js": "bafkreiehtskyzhoa4oniiigi33hqq3mair4eveba3p7hnuyyphy532ysaq", 579 + "components/input/s3/worker.js.br": "bafkreig57d6vsjj77ccddwpkm2uqgse3bpb75zonyh5grksyib2lnq7eha", 580 + "components/input/s3/worker.js.map": "bafkreiev5gpctgloe7h7wda45yfdwsyu3qnisbzcez6cl6pd6l4uiatzwi", 581 + "components/metadata/audio-file/element.js": "bafkreibqi524tmnwz6iwhbuc26dqppzwtr5op6rrdm47hxjiaxfyg6yqii", 582 + "components/metadata/audio-file/element.js.br": "bafkreier22lp2uoahv7runwrfunplcwtsbaf6zqjgnanmdo6fkrkaeqj6u", 583 + "components/metadata/audio-file/element.js.map": "bafkreifw3lcyk5somdfwenr2hirgxdqxi2llzop5eki7stgznbygf6rose", 584 + "components/metadata/audio-file/worker.js": "bafkreidm7fnncuklhxg2j7njogamkjejwe56h6ppyj5daegja3ri3ooziq", 585 + "components/metadata/audio-file/worker.js.br": "bafkreia7fuwouk67m46kgjpt4feulslfkosqam4uiauaqduqnbusymy4iq", 586 + "components/metadata/audio-file/worker.js.map": "bafkreiakzmi3kwimsddcxs66seiqi5mist4fmuiflzkmvc4uvrsqh3kwye", 587 + "components/metadata/common.js": "bafkreiejnt6qbfkspstwub6uymbchqagblzcqhmabb2ijbmjv72zci2joy", 588 + "components/metadata/common.js.br": "bafkreiec2an7lskm6unoqprgpz7d7gwqjgztfephawjt477ioxv3fwymii", 589 + "components/metadata/common.js.map": "bafkreid2ccgpm3k6idtycfbyc7uk42aqott2w53gs5x43bhuwfpodh3t2e", 590 + "components/orchestrator/artwork/element.js": "bafkreifm3azth7h33ii2zpvy4h63kilakrug2odlobjjuexmtn4equqbvy", 591 + "components/orchestrator/artwork/element.js.br": "bafkreicppmxgr2io4hq4dtb4xtd4rqhu7wvtfgkfrkvpcyuow5autbanfi", 592 + "components/orchestrator/artwork/element.js.map": "bafkreidar4jy23v6yuscmtxziojlpjjximmhyr3k6a5dcltvhfvfepdjce", 593 + "components/orchestrator/artwork/worker.js": "bafkreidp7lui2tu55mchs2oawkjkrtgxvs6leeljtgkzjduappvnumegzu", 594 + "components/orchestrator/artwork/worker.js.br": "bafkreib4nlqqzppoll5kzneqnhg72bwdyltfr53dj27vk6oivfekthslzq", 595 + "components/orchestrator/artwork/worker.js.map": "bafkreib4pwjcyrzt4zkzw5qt4fneaywx6jqzz3is4odrpnwdjtacrp6v24", 596 + "components/orchestrator/auto-queue/element.js": "bafkreic3nw74yemkwf2qfnublfhidrwjgjzrdiqskbew4gpf5uehuipp74", 597 + "components/orchestrator/auto-queue/element.js.br": "bafkreigm6vjl43svfm246bwejybe5yjrd23e7g5lzxyy5h4n5yw3lq5tam", 598 + "components/orchestrator/auto-queue/element.js.map": "bafkreidrdaiom3lhwj75vv6dakkloyx4fwonqdljzsvtwcmidi2jepwdlu", 599 + "components/orchestrator/controller/element.js": "bafkreigqo3qnyz67pifhyc2myy23cqlu67tmdnitkcdjsgon2jfcl3uzt4", 600 + "components/orchestrator/controller/element.js.br": "bafkreibce7k34wjwezmqc6fuwp3y4iuo4arulxqjqk75usmiifmxvqep7a", 601 + "components/orchestrator/controller/element.js.map": "bafkreiciqyfox43qnhayctrqhvedcj2zu3qywrpk3ikk36piwefb42ntuy", 602 + "components/orchestrator/favourites/common.js": "bafkreihbsatqqf3j5iob34eapyok6kjoidskohovgj42b6v2d4mymfw7om", 603 + "components/orchestrator/favourites/common.js.br": "bafkreibqv7qacwhaoqpaqwynyqvff3q37fvrxffznuw23wnseyg5eeemim", 604 + "components/orchestrator/favourites/common.js.map": "bafkreihqm5xtijojrq6oz4qx5evwytq5r7r2ug3mhewcfixgltqadmayem", 605 + "components/orchestrator/favourites/element.js": "bafkreihizjsmouhgyl5fhoeae5dsu5h25oedanvvnaamf5kzi2jzujedkm", 606 + "components/orchestrator/favourites/element.js.br": "bafkreiaa5ub3v4hb2mb3dde32ucdyckgmetyo2xh6wa3dlgxqtvsh7ifa4", 607 + "components/orchestrator/favourites/element.js.map": "bafkreift7bpnaowmijdyx6noqsyvak6eujenmakm2so2sjh5ehi3xsegqq", 608 + "components/orchestrator/favourites/worker.js": "bafkreihbuyyk7ypw5zlz2gdyrkzj54csa7yksi22zjckemsittxxcn27wi", 609 + "components/orchestrator/favourites/worker.js.br": "bafkreihnxzfafsgbwiramqa42m2adopsh4swwmx6kollg2hztt2l5ayqbe", 610 + "components/orchestrator/favourites/worker.js.map": "bafkreiefure5fksfm7kqb76kpfowo2ogqdmvtkjx74wpuszv64uqet564y", 611 + "components/orchestrator/media-session/element.js": "bafkreiftcggna23trvaoyw2pbympbo6ecadwslxohvrykq5tbsd42z3br4", 612 + "components/orchestrator/media-session/element.js.br": "bafkreicebel3cbpedpe36sfwvuhrrds3s4ywt5ptwypip6lnegfxn3tqve", 613 + "components/orchestrator/media-session/element.js.map": "bafkreiec74mwrk33tvppccyvmixpvpgzxpnzl3crheojswx6s62ld4qsfi", 614 + "components/orchestrator/offline/element.js": "bafkreiblicm3yxjvs4fw3jo7foqilerqjkxia274ojxtjxx6myscjilvxu", 615 + "components/orchestrator/offline/element.js.br": "bafkreiba477itntoo6er3qndfeki3wltvvmvw74f7extwrqadnjp7yp4ze", 616 + "components/orchestrator/offline/element.js.map": "bafkreig46abwwrpf5dd5v4bwsdqnrzl67lb4c2webck2voro44lu3pmwpq", 617 + "components/orchestrator/output/element.js": "bafkreigqxtknfhqup7wvyrzj2t4l4epjlij6wkwsdajygbcgjvdto4xdxm", 618 + "components/orchestrator/output/element.js.br": "bafkreibotnapyszt5xw3iwe3na4tvwl6feaewgfk3drxvfqatbehm2uply", 619 + "components/orchestrator/output/element.js.map": "bafkreif3ftbl675i2my5kwnsxon2rfedia75mwgzloe5iwjnn2bbkxveha", 620 + "components/orchestrator/path-collections/element.js": "bafkreiddt2pnvd242bk44k25xiwyiupu75reg4skxcgkski74eji2i3uem", 621 + "components/orchestrator/path-collections/element.js.br": "bafkreifwy3re5vn256ka6lcuf4c72zjb3ftqxse2socnryct773taerbim", 622 + "components/orchestrator/path-collections/element.js.map": "bafkreie44vfivyz5pbvareq3hxegrg5ss7twwqcn6hjt6yyzakg3oh4thq", 623 + "components/orchestrator/process-tracks/element.js": "bafkreidzmbnhn57q6g5zi45i5hgjuklgkdsheew3mt2jzegpoikrsomwly", 624 + "components/orchestrator/process-tracks/element.js.br": "bafkreifdwywnlhdxvbkzya2t2wg6ariidux3afqom5akedgjkqje2i7ymm", 625 + "components/orchestrator/process-tracks/element.js.map": "bafkreiez3mg7ljgek5sfgtmqrp22z7sxsrhu3q5phj2t7zwpxtoyjk5oq4", 626 + "components/orchestrator/process-tracks/worker.js": "bafkreibm3v5nc5axrintzgu5ff2ysv4no7jw2lodwtdsifjnvu3otsvyua", 627 + "components/orchestrator/process-tracks/worker.js.br": "bafkreifmt6j4abdvnukpjdj37ds7aj5myewyse2l6nkceoqdjsgehundha", 628 + "components/orchestrator/process-tracks/worker.js.map": "bafkreic6nu5ajw2xswyz6wybtuazminzhfwjrdhfmx25o3vv37c7kmldte", 629 + "components/orchestrator/queue-audio/element.js": "bafkreifh5ormtacm5agfrrye2xh5uymhi6qmpf2nw2box2zwsjuzsv7oau", 630 + "components/orchestrator/queue-audio/element.js.br": "bafkreideo7rfwdtkmlgvkvqpwsh3gmjaj5x27lmf5t7jzrd7hgoimyejau", 631 + "components/orchestrator/queue-audio/element.js.map": "bafkreifgwmfccemurnibibwnmfmkjlc5ykeur4ebx72moo2ven7rqlm6ai", 632 + "components/orchestrator/scoped-tracks/constants.js": "bafkreihxlqy2w2mdecpogrbrh6mibtvp63koeamhk26o7hdcrs6uzmu37m", 633 + "components/orchestrator/scoped-tracks/constants.js.br": "bafkreidrjgkjiswldz4ndtsq6o3o3nmlratrhqc2fsp3unkpfqxkfjik6e", 634 + "components/orchestrator/scoped-tracks/constants.js.map": "bafkreih24fppmhp2t3xrvnzopu2kevjintm3ws5a56u6rzsfjgwhy45ska", 635 + "components/orchestrator/scoped-tracks/element.js": "bafkreiaszrjbbl3b3b6gidxtff42v5cverdb2ukg4jgxia6hi6w64c3cny", 636 + "components/orchestrator/scoped-tracks/element.js.br": "bafkreiga7q5v6zfkhabi4smrgd3vpuljfylo5cppothlanfkvttg6nw7ry", 637 + "components/orchestrator/scoped-tracks/element.js.map": "bafkreibcnoppunyv53oypu5tpa6zau2enpbgjvyqp3ubt5mwk2ues6cl3e", 638 + "components/orchestrator/scoped-tracks/worker.js": "bafkreihqcuufpmussyegf4icnf7j7prviokpkwofygtmqaw64cvzb6j3va", 639 + "components/orchestrator/scoped-tracks/worker.js.br": "bafkreihwire3h5dyzq24o6ou65phv7btbvuxhwihqesclo57sg6wzdn7kq", 640 + "components/orchestrator/scoped-tracks/worker.js.map": "bafkreia7pmnuwaoz4vjtystlrstgzwlrrwafwoodz5shbhmjur3jmcsjuy", 641 + "components/orchestrator/scrobble-audio/element.js": "bafkreieipmkjdpuketbwkftft3jnya4f2x5u2tuuidswpaci7pknvtnufi", 642 + "components/orchestrator/scrobble-audio/element.js.br": "bafkreibg277sic6waajjfqyz4bvquqsbbfpoigu6af7gpw64pdb7o4q6nm", 643 + "components/orchestrator/scrobble-audio/element.js.map": "bafkreidfcokk6nc6ub3kefcvyyhueyuoaeimxaixolldgcpgomzvw7ycq4", 644 + "components/orchestrator/sources/constants.js": "bafkreihdpt2bismeobjy4mgfvlqa4w3oeb4xjhw7yytqi6lzwqh3753zui", 645 + "components/orchestrator/sources/constants.js.br": "bafkreihmrq7byfr5gcseqmc45ol3kmqyrvh5qbatu3jp3ha3ryxbbpq3kq", 646 + "components/orchestrator/sources/constants.js.map": "bafkreid5xlgxnja3cfukehr7isgwdb3g6uddmfmbwakdsu3yygrzuv5qpy", 647 + "components/orchestrator/sources/element.js": "bafkreieeokiw4m5cfouwjk2jgihglxuvgfj4cjhe5jyciob6la2q3ebvv4", 648 + "components/orchestrator/sources/element.js.br": "bafkreifsfetdxlxvkbuc2iekdjtp3k4m75c5e2gzn5hahkgkbqkiefzcmy", 649 + "components/orchestrator/sources/element.js.map": "bafkreieh5oxi2wlesdf2mns5op4lyztmkna3nkouh2dmde73keijjupg34", 650 + "components/output/bytes/s3/constants.js": "bafkreieu2lwpxrocyqqsbkbnzh75tmtipxm2kdyxucte5n6glsa43dabam", 651 + "components/output/bytes/s3/constants.js.br": "bafkreia2kmqmqe52sy5kbsswbtewfxmzazjqwj7lyx74c3eprom7njd3hi", 652 + "components/output/bytes/s3/constants.js.map": "bafkreigsia7gnntajsx3i22abp3a5eqm63tu4emlzibqwnn2jnrjkeoqv4", 653 + "components/output/bytes/s3/element.js": "bafkreianfgln44oypb7xqsnkikzlc4yoldlx4vphrnq6q42vehbkipkd5e", 654 + "components/output/bytes/s3/element.js.br": "bafkreifgjvtn2y4o3tjt553pslrgg7rrrwabwusykqoiyi6h24zfhxueom", 655 + "components/output/bytes/s3/element.js.map": "bafkreicyd3lwt5ecqxfixqkldazw45bnscc3z4snh7bbcykfsr7mveqtvy", 656 + "components/output/bytes/s3/worker.js": "bafkreid4zncssnaccat5ahw2racqztyoqpwyorsiwk2dff3y5tpa2dl3wa", 657 + "components/output/bytes/s3/worker.js.br": "bafkreievkbwt6gwqltxa6hqrzs6h2sxom2gcoufp4fgx3bz2s6sg6bzcgq", 658 + "components/output/bytes/s3/worker.js.map": "bafkreib7sdgrmdjfy4ircmcpbelt7cwgrmkv6vmh54urx3ihi6zf5aotai", 659 + "components/output/common.js": "bafkreifej24vfckwkh66h6qn7yx3bp6ttldq4enm4nqoqfagoxpgxy2rfm", 660 + "components/output/common.js.br": "bafkreienxvnzphztqmha3evm2mkbr5xufydmqknxqytgtev3wbadrtkmxi", 661 + "components/output/common.js.map": "bafkreiaaolo3kyzc4adwqoegklzglbd6xnshmcnmq3sqwoxnlksxmnlmki", 662 + "components/output/polymorphic/indexed-db/constants.js": "bafkreibwq45ydsirpbp747maflknq3dx5mtoe76q5tttbuiboxc2izfmdy", 663 + "components/output/polymorphic/indexed-db/constants.js.br": "bafkreiaem5occ6wetpxrft6idlkbcyaiw5nyp2mh2de4izz4hhrje4y5wy", 664 + "components/output/polymorphic/indexed-db/constants.js.map": "bafkreig6g45tfsxwgch7phosjxvuoh55bfgtrjmg4epxtekpopc5i7orp4", 665 + "components/output/polymorphic/indexed-db/element.js": "bafkreihy3s4azxesu36kxixnub4x36xo7skq6twxw6gaviqyv232kvfyda", 666 + "components/output/polymorphic/indexed-db/element.js.br": "bafkreifs4lzev67vokpqyy2ayv7w4lkdkrd37tjizelmybg4a3necmqtrm", 667 + "components/output/polymorphic/indexed-db/element.js.map": "bafkreicu2alw3nb4dmzsy2262va6bw5z4g6pukkn5fwfwlcgt3b2dflpca", 668 + "components/output/raw/atproto/element.js": "bafkreibct3zoydomtjql2jvewu5aqcjtusewmv4vvzb2p5w6ldmcdqxqdu", 669 + "components/output/raw/atproto/element.js.br": "bafkreieqf4ltjxt33gx7wnskcg4sucpleqsxwx6aodlpexo2hncqun37rq", 670 + "components/output/raw/atproto/element.js.map": "bafkreic4jkjozdtq747bkrq2zhzhedrcf2slrwgmabr4as5yphmlgfo3ka", 671 + "components/output/raw/atproto/oauth-client-metadata.json": "bafkreibwdfcbgi4iwgl45cb6cke72vvs6qhfxezru4qyaenidwzprqv3va", 672 + "components/output/raw/atproto/oauth-client-metadata.json.br": "bafkreiad623n64urk3j2zn6dnjjwgh7juus3b35mplrzvxsvcgajuo3daq", 673 + "components/output/raw/atproto/oauth.js": "bafkreidkr6zy6anidewt5r3fpaodfdkkl3isdhvgajldfsaw6iom2y3mmq", 674 + "components/output/raw/atproto/oauth.js.br": "bafkreie2itsilwlca5jyjw4xdrzb23df7w6775uwvc2yfuqevt3u3oj444", 675 + "components/output/raw/atproto/oauth.js.map": "bafkreidibid7fyo2qs22yps4eaut6kukxo35earvyk4pxkulqrohc4ok54", 676 + "components/supplement/last.fm/element.js": "bafkreideyy2nox2xelmk5gb4g2qfbmodj5dxnmts4qrlytdem6ibovwule", 677 + "components/supplement/last.fm/element.js.br": "bafkreiaxe3ppdimluxtmgor6nilqwmgmujayk7jkrkihkpuuxrcqee6dye", 678 + "components/supplement/last.fm/element.js.map": "bafkreig75e5uffhvafdiz2vag5kkgpbvlslv6e4mkvg3gezn5yi5uig3su", 679 + "components/supplement/listenbrainz/element.js": "bafkreihze3kldyq6adywrmlg6i4peuhuwc54dq6dma7pdooxylprbws73i", 680 + "components/supplement/listenbrainz/element.js.br": "bafkreiapv3m7q7w4p5pigqhmidpqkqmbtpgypfu7a6beo2yfsikclfkhii", 681 + "components/supplement/listenbrainz/element.js.map": "bafkreictgtgltlbrtqeg5g77s6gvcligyrhsh3ctcal4d2sqrh3oq7346i", 682 + "components/supplement/rocksky/element.js": "bafkreibobebzx3gu2vtqazp23u6ktsefvhui6nh34ztopisfbemv5xws5m", 683 + "components/supplement/rocksky/element.js.br": "bafkreigdgmhnnryvuuqbkybsuigsmkozxk64vojy7s7bbp7rpqa2ir2uie", 684 + "components/supplement/rocksky/element.js.map": "bafkreifvdm5vyn5x34omeca7ajphz3dd3rczmvitsswlqmr376rj6kktj4", 685 + "components/supplement/rocksky/oauth-client-metadata.json": "bafkreih5qgfy2x2dkuigxxdxx4f3w2edca5oeqtllq5bsexd4jwwyi56d4", 686 + "components/supplement/rocksky/oauth-client-metadata.json.br": "bafkreieiu5uc7e2vemqgezn6nt2yvrywgk5ydy3rw55gfsxux3ukgwvtky", 687 + "components/supplement/rocksky/oauth.js": "bafkreibsorkrje7nkbuhtm4cc5k4tyghiiugvugzc2twulmapkwp24mysy", 688 + "components/supplement/rocksky/oauth.js.br": "bafkreidzy2sahb7qeogg2u2jzci6hcn46ijruvignegunkqmplkp6f3mka", 689 + "components/supplement/rocksky/oauth.js.map": "bafkreiaoqdit6d3vdxl3y4pdenf2ypdkxjlimggiryicaylj7oyna5hmkm", 690 + "components/supplement/session.js": "bafkreid6cerasde6ilarqdl3nn2csuvxenukjiknykokmvcix3ydkjwyw4", 691 + "components/supplement/session.js.br": "bafkreiaetm2msifoqcbgkzgefxqlmoz2qhrpz7uf2xkrq2tb4dmij64ciy", 692 + "components/supplement/session.js.map": "bafkreihbe3woz52im6u4kj2thjsrdu5cwhdn6trmxu7zedshew4q4klme4", 693 + "components/transformer/output/base.js": "bafkreifmae5fgmryr3fj45mexin2gytamd5jcnzuy2rts3gntz32bxhlba", 694 + "components/transformer/output/base.js.br": "bafkreiej42wegfvinug2mgdhbsx3sxfzqcju5emdmo4vqpvuswmj6da6na", 695 + "components/transformer/output/base.js.map": "bafkreievqmfe74rkyzemlzjzm3nbmefmbyrzubmvpjrhwalyepqb72lcyy", 696 + "components/transformer/output/bytes/automerge/constants.js": "bafkreihqw7bxqrhrcumsdzghcwbyxn46hkl7nlr7cip57bixgq7ky6io5q", 697 + "components/transformer/output/bytes/automerge/constants.js.br": "bafkreiejznrj7ovgfz5gmyshkdsbqwwu5i7oxowux6kxdlmid3t3ahbnji", 698 + "components/transformer/output/bytes/automerge/constants.js.map": "bafkreiegiqzdnf3hxvbn23ypr37w33d65dh6idg4qrhs6zutckilsri6oq", 699 + "components/transformer/output/bytes/automerge/element.js": "bafkreie4yknlihvjvr2k7sdokhfh7vysy3vdieuwvocdwxy7vvqljlcozq", 700 + "components/transformer/output/bytes/automerge/element.js.br": "bafkreifkc3kzpiju7cnmyujpsj7fxcguiktxyordrfhs2e5jv6fixwce2e", 701 + "components/transformer/output/bytes/automerge/element.js.map": "bafkreifl2gl2pjlw6q3i5uhalnzyi6shfxwbk3zehdrxaozwncl77tl6qq", 702 + "components/transformer/output/bytes/automerge/utils.js": "bafkreidz5czo5g4rxbzcjuin4d34bvdvbaou5xf75e3b3w7qh6rbxqrxya", 703 + "components/transformer/output/bytes/automerge/utils.js.br": "bafkreic25j4h7mgtzqzornntp4jzdgfm5ykiyfpiyv55wuetn4xz74kfui", 704 + "components/transformer/output/bytes/automerge/utils.js.map": "bafkreidqmvytmw3jong6chkry4rnfsrq57sx623zcpw65cxpszworm6npm", 705 + "components/transformer/output/bytes/dasl-sync/constants.js": "bafkreialbheq6vtjld4fireh5xhupsofcsslekinvvwlgq2wv6qht4u7nm", 706 + "components/transformer/output/bytes/dasl-sync/constants.js.br": "bafkreigrrpmasmldjxvzelankg6fjp4uckyrxzlixulo3xa53crtj4shhq", 707 + "components/transformer/output/bytes/dasl-sync/constants.js.map": "bafkreidzjxngu2kbeiozl6u2a5kuessqkwicfz27pffinx5c4jabkd5usy", 708 + "components/transformer/output/bytes/dasl-sync/element.js": "bafkreiftqbxz3dvsmyypvzmees5kgte5lkd374vtvutlcwrqawvrnrs7ae", 709 + "components/transformer/output/bytes/dasl-sync/element.js.br": "bafkreihvufmf4xvbfe7exwd2s4wrp2n5mrmser2bjxjmqdfikitusxarqi", 710 + "components/transformer/output/bytes/dasl-sync/element.js.map": "bafkreiehogz4tmty3a25kbypz3whuzs45avfxvkvnrtnyjtv62gwhn2c3y", 711 + "components/transformer/output/bytes/json/element.js": "bafkreihnxdwtfw4vnt7w523xxov4agkg63ei6hucmgul5sd6kdi2rl54gm", 712 + "components/transformer/output/bytes/json/element.js.br": "bafkreidukeqvie4jmcfltxxwyozrn53i73v2alscqya26tgnr5364lwdcq", 713 + "components/transformer/output/bytes/json/element.js.map": "bafkreigdjk23ntgbrzc4h2vu4kp6mentzyyfqqpcxf2yu56p24nfrangly", 714 + "components/transformer/output/raw/atproto-sync/element.js": "bafkreihm44v57rlh4wzudxdfpvvcpgvsan3gckzulkkfimapdg3pdpoxza", 715 + "components/transformer/output/raw/atproto-sync/element.js.br": "bafkreihh3kfg6slsuynz22fm4akcrti5dbgowz3smoaxyytbyvhpf4dv6y", 716 + "components/transformer/output/raw/atproto-sync/element.js.map": "bafkreidca2vgrgwkzolkcftc4odo4piwz7uxttdjviykoonvtz4f2zvbma", 717 + "components/transformer/output/refiner/default/element.js": "bafkreiceg5b3sh547p7xwwltvnclxxlrhdydogcyutvipxhxrtei6dhsfe", 718 + "components/transformer/output/refiner/default/element.js.br": "bafkreiejhnnwp2pznlv7j267hxsm4b6oy3uxkzxom6izetcv2j4ibymkfa", 719 + "components/transformer/output/refiner/default/element.js.map": "bafkreighh2t5actrn43c72uyraj5sk2y5wwwf7ne43xsui7ipqzah5frcq", 720 + "components/transformer/output/refiner/initial-contents/element.js": "bafkreiglw7zobxc75z5nk2eksws7rnasiurys7hzh2cignvo2xpci45c7a", 721 + "components/transformer/output/refiner/initial-contents/element.js.br": "bafkreig6jilc4eoe72jfdfmcv7pd4mpec3gvdir4gpwqjejgm62ywqaiyq", 722 + "components/transformer/output/refiner/initial-contents/element.js.map": "bafkreifjvuax5rt4bwa6kgqpkv7fumsqy6xlsqeyif3ll35npiz5kfpcgu", 723 + "components/transformer/output/refiner/passkey-encryption/element.js": "bafkreicyn2f3rncetnzhowvdzi4rhmtslfx7pkmn3yp3mrfk6lduue23lq", 724 + "components/transformer/output/refiner/passkey-encryption/element.js.br": "bafkreibgntfoxidkkabsry7img4lci5a2dhwwemdjm444dp6mfherddfxa", 725 + "components/transformer/output/refiner/passkey-encryption/element.js.map": "bafkreigy2e5mlkxcxkiq7ct3nhw2j2227wmr5hbpjtxvduoiirwbqgdz4y", 726 + "components/transformer/output/refiner/passkey-encryption/passkey.js": "bafkreial4jmwx4ugfvcamu6vvix4uof32lus5mhxlxaq2rcue2zcfun6m4", 727 + "components/transformer/output/refiner/passkey-encryption/passkey.js.br": "bafkreiarrnk26ldjbam43h4cnj352hq362f4x5lqi3kyrrdkfhipyzqssu", 728 + "components/transformer/output/refiner/passkey-encryption/passkey.js.map": "bafkreibhsq32e7koo2t4vor7dwkqo2nnlmmwrwdlw4jm5znp3cfppxhjb4", 729 + "components/transformer/output/string/json/element.js": "bafkreiedcackdyqqowxumhyw3iur4xrye4dxy6xllv6vq42hngjuh3ipry", 730 + "components/transformer/output/string/json/element.js.br": "bafkreieudjetvkykegpo4dgzdb6orv5vn44xcl64biy537dt6qbbjth2ei", 731 + "components/transformer/output/string/json/element.js.map": "bafkreiglm2gjazyj3pnn4fry245ol2uboosco6lc4xsomlwlfcgevl6nau", 732 + "dashboard/index.html": "bafkreiepzs6jim5z4a7bzczqcmswae5mlsctoiynq5zchn5bei4slgham4", 733 + "dashboard/index.html.br": "bafkreibgye75ssb63fra4bjfdc4y6k65fou6xdrthjwbrdf2butp2wn4ra", 734 + "definitions/index.ts": "bafkreigsnurwnnhq2pjwcjghmkc5gojk3gew2z5ntmt6wnznfyjbjlohqu", 735 + "definitions/output/collaboration.json": "bafkreid7vyrj2vy7tkze2pom3qowy33ocbnoex2glk4oazu3juhoeagyae", 736 + "definitions/output/collaboration.json.br": "bafkreiaarrld3ppmwthkfeh32744ua2gvm2fgszynde57s3edvipdehize", 737 + "definitions/output/facet.json": "bafkreig65cpqmhjfb6le37czxo3q7uqa7nqcrcobuw2co5kskb3zk5ik7a", 738 + "definitions/output/facet.json.br": "bafkreicn2baahdbrthcuqxplp6j6kyi5lzx2fbxn773wnoocol5cjrsv3y", 739 + "definitions/output/playlistItem.json": "bafkreiapvfdw7dj5lnshjzu4l2e56mdsqrugqndlixssgxv5n3v273mg7y", 740 + "definitions/output/playlistItem.json.br": "bafkreiepdeno5uzrtvk2wkhtgjrb64oiuoahbfgsqjscd54c3i2tcmughi", 741 + "definitions/output/setting.json": "bafkreidpmftx4h3mqggsxtw5u4l3zjpvnt4u5lfjgyb3oujg5dfngmdw3m", 742 + "definitions/output/setting.json.br": "bafkreiexzh7tzueyvltb6wt2mvi6mr7pbe7ep7fx73rnfpbyblcjouz5ka", 743 + "definitions/output/track.json": "bafkreigih3t4au2xio7vvk3gxgq5fw7ai2luhkjzwjbtz5tigthybxzfhy", 744 + "definitions/output/track.json.br": "bafkreia2w3635dpihg3n3aaoog4tlu7x3im2pwek44nzdebuvo2moihnza", 745 + "definitions/output/trackBundle.json": "bafkreif5lnc7tzt6roorcsjdrmwzvzfgz6umbxgdkmpxuvha5zkdjuz3ou", 746 + "definitions/output/trackBundle.json.br": "bafkreibvkkzrh4cs46wsv5er2ykeqotj433gt4xukqkbmp7br45ulltkbm", 747 + "demo/index.html": "bafkreibe2q7h5qkumiol6ff6vvdnt4rh7w6zgob2roadbq2xdjwom3cdpy", 748 + "demo/index.html.br": "bafkreifoi6zi4cpyevskmfbomsg3g5ptf2yqvlvf6cotqttnf5w7zgksrm", 749 + "dist-F262EKBK.js": "bafkreihflxzssvxang2dyeu6bqaq3zoguxe2fqkaxzrg3iqqval7kg7z74", 750 + "dist-F262EKBK.js.br": "bafkreiclnimumh6tbd6q7a4les7wif7cx32pvjevoslgxqbp2a2s655lwq", 751 + "dist-F262EKBK.js.map": "bafkreia35kmx36vnud6a3k7s6s5eisfcuobwmnryewuk4o7vkzwagpvr2m", 752 + "elements/index.html": "bafkreibqfosralidggg53u4ehxxghzufmbt53425pptfq4wz6gyogyuzuq", 753 + "elements/index.html.br": "bafkreibb4wtf4r6mdemltojsvr4duo7cfjntxzcery7e7is3olofqqelrq", 754 + "facets/connect/atproto/index.html": "bafkreihhjgxuclbpyejkqxu7xuo6yk75jqhgimoiiy2ooelapbfd34fhum", 755 + "facets/connect/atproto/index.html.br": "bafkreians4lgtzqzdolf6rqlwjw7jmoml7i74dgew6q3opt3lcacd62lxi", 756 + "facets/connect/common.css": "bafkreihlpvdpccu2oiefottlptmba3ffcfnteherregkc764lcifot7uqa", 757 + "facets/connect/common.css.br": "bafkreigpj3z2cn7vbsb3quspe7okwnzbshbaldqlzcgkktbxpp7w23q3cq", 758 + "facets/connect/common.css.map": "bafkreihnlvodq6r6pyjjxvgwt2vyg7zbyxsnjxkhbavq5n5aitwhxdmquu", 759 + "facets/connect/common.js": "bafkreibqvmtdhr6rt7d3bmcj4rsd2fazhwgpakffvsvy67gcoiojs774p4", 760 + "facets/connect/common.js.br": "bafkreiatjd7gthppm3lpsm277vobkgjf4j2sv6is6n57jvqamrc2ff67pe", 761 + "facets/connect/common.js.map": "bafkreigrcdiumqnxspv5r7suusarri7eemx5wjbbtgtjwarrmaktjbncs4", 762 + "facets/connect/https/index.html": "bafkreigakokvvocanqsfindpas6srhtct2y7hbbrykmi6rob6wodhd2wf4", 763 + "facets/connect/https/index.html.br": "bafkreiebjoqeecd2pf3mrirfl5l45uaeygfgabazjpdocemq73tsedl5wi", 764 + "facets/connect/icecast/index.html": "bafkreicaf7qlvghazpr3bocz47mbpewayuespl2u635pgy3gmtnihh3ixe", 765 + "facets/connect/icecast/index.html.br": "bafkreiancjh5jca3mv6eqkx7ukwydwvuocajsqs55llnf6jukp6g4nw4ve", 766 + "facets/connect/index.html": "bafkreieqqzmatqgwgeefqywtpjtljg5uvjqto5ja4l2htlvzd7pfdvzx6e", 767 + "facets/connect/index.html.br": "bafkreifiiwh6wmaptntawhg7z5w2trfxueqqy2gf33t2z3qfkhizvjiw74", 768 + "facets/connect/local/index.html": "bafkreidcfmmupkpzg4sxnzkdy6mxe3b7hdhfvcngcmf23kjnyui34cujce", 769 + "facets/connect/local/index.html.br": "bafkreibvyxy4xfukngxddrzkqc3gpalxungkrygel66vmwggvysdftclpa", 770 + "facets/connect/opensubsonic/index.html": "bafkreidiqywrj6crgjetzxgclpp4rads7sandy4cfji4d2tdwhm7ukrwte", 771 + "facets/connect/opensubsonic/index.html.br": "bafkreihgik5ebb6bu5w57lipsofkkeqfs73v2xhplubm4rvzpthy7ueade", 772 + "facets/connect/s3/index.html": "bafkreidncs3w4v5o6kim2w5dwwwbgsdk6kwbbtsiihk2v7nqfyki5d2jc4", 773 + "facets/connect/s3/index.html.br": "bafkreigiu5y47hpduiudk35ey2g7qb4ivegykmbhheedwybvw4lbtbyrz4", 774 + "facets/data/artwork-bundle/index.html": "bafkreidmf7a63ipinc7fnvic6ieoornurudviyjps7yupkj3exekhopliq", 775 + "facets/data/artwork-bundle/index.html.br": "bafkreigzaptf5efk7stb73uqy5blnxyq7qwamrugdqud2qikhpvjvf34i4", 776 + "facets/data/cache-tracks/index.html": "bafkreie66wdtusgzayn3n5bnrmilpzvjxvjncaksl67u4ceh7sg2cc3bii", 777 + "facets/data/cache-tracks/index.html.br": "bafkreidxiotexfoeqs6r4yn374pfvmiispyxep4jogb65vhtxsuiwb5cvq", 778 + "facets/data/export-import/index.html": "bafkreiaujwwya5triyzgtckyqdacc2bftsv65cti566xlnnbnndmooehmi", 779 + "facets/data/export-import/index.html.br": "bafkreidbbtlrns3k4sgpsgck3zknioifxdibpvn2uk7dhdxbk3f6hcagvm", 780 + "facets/data/input-bundle/index.html": "bafkreie426lfejq5w3n6xyq3wzsryw3mm7dnopt5vdxwg5jteqtmljrlde", 781 + "facets/data/input-bundle/index.html.br": "bafkreian5kvj5z6ayegawa4tzb2yzt4syjgjns7h3ncncfkjmuqw5yl4bi", 782 + "facets/data/metadata-bundle/index.html": "bafkreida6xghmlhitj3wtla4jrls22pxljiae5pwxowlvyrhnsce4lzr7u", 783 + "facets/data/metadata-bundle/index.html.br": "bafkreifsz7gq2k6wrnd2bd2rzk357q6srpjrstku2in2ly3sl6v5fq3ioa", 784 + "facets/data/output-bundle/index.html": "bafkreihomhuaaue4atjmymqymkurwqwphc73t74whgaa3ek5dx457qdd2i", 785 + "facets/data/output-bundle/index.html.br": "bafkreigbfbzaylng4fi7io4t2jtcsmrxuyexhne4juma7o2vvcefoo2zi4", 786 + "facets/data/playlists/index.html": "bafkreigdmp5sc6b5rn5ogmrzcoqzg63qhqkkibh2was4osurpz5t4spcg4", 787 + "facets/data/playlists/index.html.br": "bafkreiconz4ppbkoyfggh37s3hsfnbonllcn3ndyn34ilghjl3ohuyaai4", 788 + "facets/data/process-tracks/index.html": "bafkreihb2g4r2vy253h4ywhorpfrrs3i5nyiihiz2fmcrvr5y7x35o7e3i", 789 + "facets/data/process-tracks/index.html.br": "bafkreidz6j7rsbibec4ekgpmyeijalz4q4beohy5a5y652zprfpv3dzr2y", 790 + "facets/data/process-tracks/prelude/index.html": "bafkreicpjbucjeze4y6ouzavk6qo3gsj63fccs4cmgvumq54qpmuup5rxa", 791 + "facets/data/process-tracks/prelude/index.html.br": "bafkreih2qlwwkv6opl3nlq5de6ntzqcbs77ra7g7yormdaajf25jd5huk4", 792 + "facets/data/sources/index.html": "bafkreielvhnh7bwzk3laojw6knadkfh5g46qq6dmcfipr4dcolwl3f53dy", 793 + "facets/data/sources/index.html.br": "bafkreicbjckgy7pd2i5cqusaatclbpdo6ntgv27cypipbb7gwgygjxxxcq", 794 + "facets/data/v3-import/index.html": "bafkreie5777d2jrhpnss5xiyvjkzagcvoilafx3fby7i4zszqcgp3c2jba", 795 + "facets/data/v3-import/index.html.br": "bafkreielko6gkth2v6d5j6ktiekkkdrkudnlfq2fpieyv2jg5nyizg3ozy", 796 + "facets/examples/generate-playlist/index.html": "bafkreiaktvpinmb65t5qy5xx4fbfywl7cxogxjv2erexlbvvvzxhqomb2a", 797 + "facets/examples/generate-playlist/index.html.br": "bafkreidxvujduywkl56nungxwefesb33iqvs67nistzkx3nyjw5ycb5umu", 798 + "facets/examples/now-playing/index.html": "bafkreihan2g3522n54oh3ja4b6weca56uvxk4jkwqg63kudlhgijst3u64", 799 + "facets/examples/now-playing/index.html.br": "bafkreidcigzmoxahxeczx4s42wcaqwqogq7drezaes2ackp44b3whmetfa", 800 + "facets/index.js": "bafkreiakm6livgbsbuxpl6oklucvluhkbza7ofgervrogvkelr2cbwhdbe", 801 + "facets/index.js.br": "bafkreidqv42dr3s7unrq5wj6jkzwuf7wz5b3u6vswtxm3phmgpsriixvfy", 802 + "facets/index.js.map": "bafkreigtkxfenssk2gwjcoqxonk23s5ku5x3inb6gw6fwceg5onoxhggxm", 803 + "facets/misc/command/index.html": "bafkreigc5uhc5gpccxz2iikamuitmzcfrgrlzu7a2jsfjrgdgbjz4q2hx4", 804 + "facets/misc/command/index.html.br": "bafkreigzk5eaarkp2kycmiyi4tkd72bwmibpviw7ec7pdn6op5oyji6ooe", 805 + "facets/misc/scrobble/index.html": "bafkreiadyn4tavzfi75m2pynvp53weaxwrda36e5jvhqjvdm77xb7chgzm", 806 + "facets/misc/scrobble/index.html.br": "bafkreibo2ddosgpbppw62laxuujzmwgyx6gauhpyh5swab3s5fzii2xsea", 807 + "facets/misc/scrobble/last.fm/index.html": "bafkreiarxsxs3bty5xnlnfw2lgxsq5dpqa5wzd7dmxleb76xmggtmm4nce", 808 + "facets/misc/scrobble/last.fm/index.html.br": "bafkreiblegxafkkyul3kkvd6jqldmu63mg4mudy33a34zpv5wgt7c25co4", 809 + "facets/misc/scrobble/listenbrainz/index.html": "bafkreictn5y62hd5ypnsgerdy7ymm24kfvzxry7zskvyzw3yd4c7s5ndj4", 810 + "facets/misc/scrobble/listenbrainz/index.html.br": "bafkreihwytk3hu3ktgtjugweoo26axkhnvggvf67nglilgzm25rhqgteuq", 811 + "facets/misc/scrobble/rocksky/index.html": "bafkreihbamsk6kfvi5jazwz7izrhtpzzvwseer5heaartaj6laq6nesz4m", 812 + "facets/misc/scrobble/rocksky/index.html.br": "bafkreiactp5wwmcavgfkeyyjy3iwxowgbvhkj44dm6lygtfmqbgqnwmnsi", 813 + "facets/misc/split-view/index.html": "bafkreianczfhmsuuj52ghem4tgtvpon2pxg3g77nwniwqm7qsutcftgtim", 814 + "facets/misc/split-view/index.html.br": "bafkreientbparvydzeoe7rbm3wawyofipcjja6humimgmmkf2xhyr6gd6y", 815 + "facets/playback/auto-queue/index.html": "bafkreievpchxahzyfhcb33jhdsnbdm7zpw6nhfe2hcsbka6sc44b2cf7re", 816 + "facets/playback/auto-queue/index.html.br": "bafkreihqrrnjcrnipnnsjnb4rrrdnrcuayiwfpgq6i24mzfwheal5ziubm", 817 + "facets/playback/auto-queue/prelude/index.html": "bafkreiha6viqer72sl74tab755vxt4clv5pgtmi46jdlentjnc2phr45gy", 818 + "facets/playback/auto-queue/prelude/index.html.br": "bafkreif7tuphzspimri4rqxeynswimogsuoxfbux7kk5lcn47drceb6wt4", 819 + "facets/playback/preload/prelude/index.html": "bafkreih6xdg7uirgakvdrit77gqhxtq2bziq4a655unpevmrhxptzwl6ei", 820 + "facets/playback/preload/prelude/index.html.br": "bafkreiclakigtabl7kro3cxpshpdhgq5nyszon3neuggf5qpkd33ocw5vi", 821 + "favicon-16x16.png": "bafkreic36pkur3pew3l3x3yru3ej56fwsiovuqcs7olbudpncb3e65zqpe", 822 + "favicon-32x32.png": "bafkreiakmz2yxpqtltflmxneuv7ennfp54p4in45wwlz7wnhehzsoctj6m", 823 + "favicon.ico": "bafkreigxs6ytelm2gvy35mdctwpns7krudxp5bdynplfvcffhfpnblqhwa", 824 + "featured/index.html": "bafkreihupioxfkaovcmkjatjwxqwmvmp4kmirnn27s5izxwpxsyijhdri4", 825 + "featured/index.html.br": "bafkreiamc3rs4wpn7jxecbzq3l42zpyocrvrgtvc6ir7h7ays4lrx67jym", 826 + "file-tree.json": "bafkreigkhuldxkyfkoaye4rgcqcwr45667vkygd45plwq6hawy7j4rbdky", 827 + "file-tree.json.br": "bafkreigkzfhkx3hnezjj4vfuduvq3leqcm623x5al7ku7pakx6ss2sqkva", 828 + "fonts/98.css/ms_sans_serif.woff2": "bafkreiarwwtivs3lsz6r7ks2h5megibi5he4vwrxzb3y3homoqk5zjz2gi", 829 + "fonts/98.css/ms_sans_serif_bold.woff2": "bafkreic7h66fpeftcx6blc3usb4op7i5otq7tndd623sm3azbdfyfjcqvy", 830 + "fonts/CommitMonoVariable.woff2": "bafkreihtilfgypzfs7tmb7gyjm7t5vsnhts33nwqv4m5degwiwsvrmopfe", 831 + "fonts/Figtree-Italic-VariableFont_wght.woff2": "bafkreiceskcyvqywearff5alxp2gnewcnjlj2ydlwzf7mlfew4tb3abqx4", 832 + "fonts/Figtree-VariableFont_wght.woff2": "bafkreibjnov67a2tpwi224vaiywhznp4zagwtrifizdtwzgrosnmpzqlze", 833 + "fonts/InterVariable-Italic.woff2": "bafkreihfmt3ffelnw3atsvyp564vestxytki6mgjfeun5hnrtnvvy6rgfi", 834 + "fonts/InterVariable.woff2": "bafkreidjhn35j4zo5g4l7smvlcnv7lk6tgw7fazhhbtb6vac7glyikni4m", 835 + "fonts/PublicSans-Italic[wght].woff2": "bafkreihz5s7zffjqvkujqraivzmtttubrpxyotuo5h23ep4bdwv7jelb2m", 836 + "fonts/PublicSans[wght].woff2": "bafkreic3khgts5yy5auvm4q7upniiy3hys756lwvalwr7ub5a6soos44wm", 837 + "fonts/SourceSans3VF-Italic.otf.woff2": "bafkreibmvrrh45bn5rnw7jz2bljehkl6dcodmlvbdlufyivs4uvsctiaum", 838 + "fonts/SourceSans3VF-Upright.otf.woff2": "bafkreihz4tvmb2hy77noshhw57zzmk4w5akbps5fy4ulyhej57uvcdtwkm", 839 + "guide/index.html": "bafkreigqko2nzkdchy5jjntuq7bepfgr2f2dfctbbgzpizku2eovjutgqu", 840 + "guide/index.html.br": "bafkreigfvbuu567tixkvsxbxyvr7bxhjlnfwxrdvmzwfhgipform7aepeq", 841 + "images/background/1.jpg": "bafkreigbexdkbyibmizyrjfebapjbm6cjv4rg7cyh6fp6jbopxrxjp5ti4", 842 + "images/background/10.jpg": "bafkreigytwt4zxu7fs2gx54vg53bquylaui5qpwm7rfhem4sxxj3d4wcua", 843 + "images/background/11.jpg": "bafkreibcyuqtbblimw2wkjqzom5odr2ysfpy6bunfppavxk56up3lkjfsm", 844 + "images/background/12.jpg": "bafkreicmxaekbqptple4f7louqdas3zeuofquiudst67yo5262s63ss6lu", 845 + "images/background/13.jpg": "bafkreic5dx2fydehtpjpufoaasypkamipdjnods2w5zzyxsiconcp5hch4", 846 + "images/background/14.jpg": "bafkreiditfiu2bw63kfojntmurc6vgpf77essukvth3icrlgbziq7ynnja", 847 + "images/background/15.jpg": "bafkreicscj7dsqjri3oeqogvuefyadv5pah72oem4y36ukyrwyc2unky2e", 848 + "images/background/16.jpg": "bafkreifuq372zol2j7mhvexwbi4qpulcggk3yx7gjsigsmjyz7tt2in65y", 849 + "images/background/17.jpg": "bafkreidkk2fvaaolnf2ybbks2kbwhgdsphlxbggufowmsx7vus26jg2biy", 850 + "images/background/18.jpg": "bafkreiawovrca3xmghrrvtefpjfcp6sgogrgtepdsl2fyrufgqrqc5mjbe", 851 + "images/background/19.jpg": "bafkreigdjdbjmgersa3jci5hhyly6mhow6a7hct5kn2eu5v56inherjusa", 852 + "images/background/2.jpg": "bafkreiea6g2kuvkrqkqyjt6wb3q6wsoswmuyseiqgmzaki4f5jxnfdxd4q", 853 + "images/background/20.jpg": "bafkreidti4tfrnhptm6ojzcnyb3corn6q2e7rgpje2z6m2egqj542w2eua", 854 + "images/background/21.jpg": "bafkreihcycf4tkq5efttfov7aaggj7r4nyhkpwdbnvrtmhznetevkv7qui", 855 + "images/background/22.jpg": "bafkreidpcfk6zjahcor6jmzhcasmfzikufavlfgrod7cplphj2pg7fmaam", 856 + "images/background/23.jpg": "bafkreiamthr5s75jylnsmea262rl3bb6rxad2iwuj5fpn6rm5cudvcua34", 857 + "images/background/24.jpg": "bafkreicndnihtr2n2g6sj2wowk6ijjcvsy2fzeto5ahxbv5snbsq7tyuqq", 858 + "images/background/25.jpg": "bafkreih7wf7prdxiamu4txtivkfvmnpculstwhgbs6mrhgu4tg6c76twyu", 859 + "images/background/26.jpg": "bafkreictijyyzl7h5xhsmg7kt3b57i7m5ylu2roqpn557cphwqbhzgdmki", 860 + "images/background/27.jpg": "bafkreida52csfluwjk4ibm257fnnju52pi7zbzy2dwnxlr3k7x4c2eqmmi", 861 + "images/background/28.jpg": "bafkreifvgkaidgxle3sagllghq67sxpelhznbd25q5mdtwk6o62hdbx7we", 862 + "images/background/29.jpg": "bafkreicwrbe4jqqisbkxjfgjo26vcogge7sxzr7zu543x4viaecxgixkfq", 863 + "images/background/3.jpg": "bafkreidwm5k57svmmxnepnxcnuhhpivb2pql46w6gvdu5p3dtldq4j5ppy", 864 + "images/background/30.jpg": "bafkreibnhdlgsojsbjibzirz6cfa4nbtlirb6hkvstb7ndv3735zld6xbu", 865 + "images/background/4.jpg": "bafkreidourqg5gmc336a3dvztmh6txozruztcs7pk6jdfbzhrkjvfwdeja", 866 + "images/background/5.jpg": "bafkreiftdyum3lqw2u7e2nam5zkv7qtjmb6rozhju7ongfyqx3hpf563ru", 867 + "images/background/6.jpg": "bafkreigemum5eebiwnqp3kvzze4262hdt24scqupqajachqyjvju4sxkoq", 868 + "images/background/7.jpg": "bafkreigc7lsmf2xq4zaro4bxzz5xlw24wwyxln4drusn2wvjnoqczmzrxu", 869 + "images/background/8.jpg": "bafkreigljtqt5zp265nbvldk3f5ups3r64xyvuxsdfjzsnu2vf6nofkmyy", 870 + "images/background/9.jpg": "bafkreici5ro3rqxzo73gryg677jnrmrkmrzv6pd4rzmwqesjhtluwctrbq", 871 + "images/background/thumbnails/1.jpg": "bafkreigdek46edb7xlyi7ygenjxth6zddgao2gnkyh75ap7bx4qjiq2jjy", 872 + "images/background/thumbnails/10.jpg": "bafkreihope36djibilsx356i3fpvm3a76e5cl64rfl4encm6xm6ignwja4", 873 + "images/background/thumbnails/11.jpg": "bafkreicf3xupqfxaf3zezaiylzpeuhoi6rsopvy7xtmhkbprobpkq2iqvq", 874 + "images/background/thumbnails/12.jpg": "bafkreiboupp6jh6x3bew7g3ywt7frafpbnngmftzszmbqehs6skypznqwy", 875 + "images/background/thumbnails/13.jpg": "bafkreibadvb56gxy65q5lgmcnuqurv2nxcednsrxmghw75o5dsmwv4s3su", 876 + "images/background/thumbnails/14.jpg": "bafkreiajiqyjqsepiz3ks3pr5whw5ra5n4pu7fg77vl63jgei2ycp6roqa", 877 + "images/background/thumbnails/15.jpg": "bafkreicdkdaujofwcbdwcfi2qoosgkmuofq5ycfk7soyxjbkg4wsnfclae", 878 + "images/background/thumbnails/16.jpg": "bafkreiapdhe5ewqmreaj4j7leg72so4zd4eisx3omunjmeaz55dchbopui", 879 + "images/background/thumbnails/17.jpg": "bafkreic3vio4eusr7kajct3bvma3x74ywnaydhcpv5ufliz25lken4yowy", 880 + "images/background/thumbnails/18.jpg": "bafkreifunn24xktlv6dme3b2s5v2decbe57vk4tijz4l2cyphjnc76oas4", 881 + "images/background/thumbnails/19.jpg": "bafkreigvudr2dkthbpssy32qgv7o2jzhz5yroyflouuvdcchwmjeuo6dza", 882 + "images/background/thumbnails/2.jpg": "bafkreiggbf7sxg67maxom3mi7y6zrhzklapplopeowidqb3vmb5rkfx43e", 883 + "images/background/thumbnails/20.jpg": "bafkreidq4mauls3frhsq5ynninsloew2qafsd45n4sitpbhzcxpc2vjyha", 884 + "images/background/thumbnails/21.jpg": "bafkreibhx732pprbos3bmwl33gnkd5kugzftcu4mg5agz67ddbugfks7sq", 885 + "images/background/thumbnails/22.jpg": "bafkreifowjjcogrffeksalbjmhhyiksretlom5hr2bva45llc35s3kcphy", 886 + "images/background/thumbnails/23.jpg": "bafkreic54xvhelqcdznybnrr56gtqxnkihjk2hy2tk4m5udvphvpxk4xym", 887 + "images/background/thumbnails/24.jpg": "bafkreib5pfulmt4aaz4hoxyiouvcjy2fyw472sa7uh6axxuxqf6hvujg2a", 888 + "images/background/thumbnails/25.jpg": "bafkreidqlojj3xnzinma56bpieij6l5jszctc4if3kzr5x2uth6lwt3adu", 889 + "images/background/thumbnails/26.jpg": "bafkreigzogtcfq3gdvmxjldokn46o3mzxyu6gcmcui4lkpoor6reojmouq", 890 + "images/background/thumbnails/27.jpg": "bafkreiczkse4b2h7lve6popmbbcngqri3gxbatl57wbrjkqcwpiokunq5u", 891 + "images/background/thumbnails/28.jpg": "bafkreiegujyqc3ifgb5t2hpzfpnlr7uznkvnmqsz7ta6c3pdlxez6vok2e", 892 + "images/background/thumbnails/29.jpg": "bafkreihqpmnw5xjtxswd66usvy5a2v3dwnm7texstbiij6ujlaur6gncou", 893 + "images/background/thumbnails/3.jpg": "bafkreiee7ckghrwqcvyf6gmgrpm5mprl5jjtmgkfe722eexv5uenov4b2y", 894 + "images/background/thumbnails/30.jpg": "bafkreif6wlxvrmseugl4pj5dykwntlnoonk34s3oz7sjgvaecaxmw2sam4", 895 + "images/background/thumbnails/4.jpg": "bafkreiffyn7kzaxok6judapgg47rwrk5prliu4k2o4c7656gbl75olfr3e", 896 + "images/background/thumbnails/5.jpg": "bafkreie4znco6nv6pup3qiu7gtnz7jm73kz6xn74fy3qkpyfvro5jbfx6e", 897 + "images/background/thumbnails/6.jpg": "bafkreid7ozeylc6iyuw3ebmvkk5ik5neqy2dtpyfuigopf2mzkz6ccyaa4", 898 + "images/background/thumbnails/7.jpg": "bafkreiaxw2imdior4urusp2itg7xly54awns5aioy5wxallmufgdonm7qu", 899 + "images/background/thumbnails/8.jpg": "bafkreidj4wfw2wtg3uk4jpd2oumbxcpjmyy2aptaa6gmiowc3egmdzg2ii", 900 + "images/background/thumbnails/9.jpg": "bafkreie7e4ewtgfj5frmermzyuzlbtpsvcfcgo5hb37ng27lusph3eoqbq", 901 + "images/diffuse-current.svg": "bafkreihnvgi6rwkulrkocema7qdgdpmhcif5r53tskk6fvhhrnln7rfpza", 902 + "images/diffuse-current.svg.br": "bafkreidw5n6zkhyvr7ajkkokz4ffinbbmnbxaol3oyb2neabqvvpya3tny", 903 + "images/diffuse-dark.svg": "bafkreifrokmmfggf3ucwzzxis4sxwharfrl4kbfghxiruse46w4fjnqbgq", 904 + "images/diffuse-dark.svg.br": "bafkreicv43aqxrclavsuw55x5ymv7227r5e3uruu3psrssulssfqqqjxwm", 905 + "images/diffuse-grey.svg": "bafkreicyhxrl7ngliszvx4ygbum4htxt2mnj4pedzilbalh54c2wgkh2xq", 906 + "images/diffuse-grey.svg.br": "bafkreihvc6uoxdjbpundqkdonxrxxx3ypnctthp5bvmx537gdk3jfyefgm", 907 + "images/diffuse-light.svg": "bafkreiawone475qvmqtrcdohnpfiyffwz7y4jnjkqr2ohixqdmynn5obqy", 908 + "images/diffuse-light.svg.br": "bafkreih3fk3brg6kg6arydzpl5pzncufzzrw6nxxbr54t5op3fzesdddxu", 909 + "images/diffuse__icon-dark.svg": "bafkreih32owwo4dayoixi7elkcc7j54kju4mfcqwvvurj5x4b2a5jgktki", 910 + "images/diffuse__icon-dark.svg.br": "bafkreicyfedwh2sfgl7ye54kdgswx5iblpyap4rmowvuawtxz3x7wnjrua", 911 + "images/diffuse__icon-grey.svg": "bafkreifgtyvyc2fmhcuj2gdz55idkk4lrdhwqf63b2tc33m74nasmwfwpu", 912 + "images/diffuse__icon-grey.svg.br": "bafkreibpd6hu2qgknvhbms3poelcyujx7nyi2dthqmgv3fnwsfrfmnxej4", 913 + "images/diffuse__icon-light.svg": "bafkreihgvb5kfdsaxm4cpz2ymgpypihzus4o62hjuxiq6yapeuq6ocv3dq", 914 + "images/diffuse__icon-light.svg.br": "bafkreibdo37xxs3jwtgvuo4fe6hv4xxonpi252c242e6k2elq75tgn7qlq", 915 + "images/icon-square-ws.png": "bafkreiclrysq7wy4zgechj6vwaqz764wco7ri5hf72slgsn53o36jvcmpq", 916 + "images/icon-square.png": "bafkreidrusfeslzubxpmwrzd3i3cfunueh2rlcujfxirwwvpqawyifhimu", 917 + "images/icon.png": "bafkreidskd72nglcusjxpr35n33ksevfxoyl2dreczsx2zcf5ur57grkvq", 918 + "images/icons/windows_98/catalog-1.png": "bafkreid3fkfm4a36dlu2v7ur2wctlggaypgsukokc3ru2scpdhghlcdyl4", 919 + "images/icons/windows_98/cd_audio_cd_a-0.png": "bafkreidubwod24naaya5pgz6dxqzzoy62g6mw5dphrhvym2twdjwqxvft4", 920 + "images/icons/windows_98/cd_audio_cd_a-2.png": "bafkreicknyfgx5indku3qmqwl2ce6llayjbdm3fmhusvxe56vqmmo3hopy", 921 + "images/icons/windows_98/cd_audio_cd_a-3.png": "bafkreifj4q4dfekylecf4ghkyovgrvgtioonx47tkav2vfw5jq5ivzvxca", 922 + "images/icons/windows_98/cd_audio_cd_a-4.png": "bafkreiahnz3rqriinu7ufebbsqnujkf3nghdk7wjqhczipckbyk7ramoeu", 923 + "images/icons/windows_98/cd_drive-0.png": "bafkreihnqltcerdazobtlaalybuh7avcwz2b3gjfl3u7zu36eaokdw64q4", 924 + "images/icons/windows_98/cd_drive_purple-3.png": "bafkreigi526mk6smnpfslqr77cqdky6xh52vjbgulcwavquga43soucmjq", 925 + "images/icons/windows_98/channels-2.png": "bafkreieybr7cfm4s35gh5wscifmd2f4dwtjasnw3tjxtuktyrclcr6bkji", 926 + "images/icons/windows_98/check-0.png": "bafkreid4wzye4ziyfjznmmwrfaf54lhcdociys5rhowshtgmia5sdpdmb4", 927 + "images/icons/windows_98/computer_sound-0.png": "bafkreida2hxgogpcl7hyzzayt2fkmn2d73izegzlzgx4ty3rbjsahbqj5y", 928 + "images/icons/windows_98/computer_user_pencil-0.png": "bafkreicrhtcvihg6csltynbzsr5fnqxkcaf5pi2b6xalecvcldyi2poabq", 929 + "images/icons/windows_98/connected_world-0.png": "bafkreiddb24jheibjbifrb33j6i4tdrim2sc7ofqcp73tznfdwytlilmiy", 930 + "images/icons/windows_98/directory_admin_tools-3.png": "bafkreic4r5wrhgi3hambxezf2r2wzv7nqhav5a5qmfn7et4b73foumzvdi", 931 + "images/icons/windows_98/directory_admin_tools-5.png": "bafkreiee2baq5i6v3hvgrsf4em5zt4ugias2h2c3lbt64possekdtiygsq", 932 + "images/icons/windows_98/directory_channels-2.png": "bafkreih7o7pv7sglszodcpoo55j3773cnvxdexnails5mwcjewddmk5uku", 933 + "images/icons/windows_98/directory_channels-3.png": "bafkreiakc44h5qfvvh3sz6gzcbawivmbcv7a3acgks4vlq4cbrsyg6ylwy", 934 + "images/icons/windows_98/directory_closed-3.png": "bafkreifxy33qmbruyw3wfhkueuo7ss55p4agxjzmk4igdoq5wzewy5fg6a", 935 + "images/icons/windows_98/directory_closed-4.png": "bafkreigw3btdo4ue7ff6q63wa6ka5vt4hbbs7hjnxjuin23mvpfae6f3ge", 936 + "images/icons/windows_98/directory_control_panel-2.png": "bafkreieoui3pvcfmeje5lbf5uo7ycfw5hifxh7zkikcqoqikv6rom3lzwy", 937 + "images/icons/windows_98/directory_control_panel-3.png": "bafkreihsvhsbhvspfxaepqrqllhhxc5jh7rje5qclbnihnolhgktn6u6zq", 938 + "images/icons/windows_98/directory_explorer-4.png": "bafkreibrxt4x5ujfhb3elezujcxmwttsxwsmid6awnjdmllpokxkkwlazq", 939 + "images/icons/windows_98/directory_explorer-5.png": "bafkreia2mkndozcoevqqaxxfrkfjfrrhtg4c3yyjn5lazcshnt67urnhzm", 940 + "images/icons/windows_98/directory_favorites-2.png": "bafkreid4owbgspqriaytvp2vvmaw6isuzkcc2mt2zwic7by7pralh7u5hu", 941 + "images/icons/windows_98/directory_favorites-4.png": "bafkreih3c5dfxz3aiv4vcogl5um4fkmeoyf6wkwnic4u7udkiwebcqmztq", 942 + "images/icons/windows_98/directory_net_web-3.png": "bafkreie2i3c4sannoq7klu3vwritju2n52fkz4yiep3daiur2iipbajw34", 943 + "images/icons/windows_98/directory_net_web-4.png": "bafkreibizxv3ekvs34vjglh7mgle4ol43xgwzal6ifeaougp43shfifa34", 944 + "images/icons/windows_98/directory_network_conn-3.png": "bafkreifn7auzgotpwprmjnvhasjhx37ifssvtciu573isxty3uj2ici5li", 945 + "images/icons/windows_98/directory_network_conn-5.png": "bafkreifakp6raermeltpca6zxisq7xcmt4zahmooek5uxitnpkmamcwtoq", 946 + "images/icons/windows_98/directory_open_file_mydocs_2k-3.png": "bafkreigygdwq5s5pihuof74cwggqxc5q2l43plvddjbpfftity5w6h3vpy", 947 + "images/icons/windows_98/directory_open_file_mydocs_2k-4.png": "bafkreig5kxoilzvdj2ur6wjfnli4iusqslniigkqzwdqf2saqu3sikttki", 948 + "images/icons/windows_98/gears-0.png": "bafkreia2ukuz4bu7xyyeg4fj76utbxcrh3xxj367emusdiokk75nn5nlg4", 949 + "images/icons/windows_98/globe_map-0.png": "bafkreifz32itb55wdqbdmqwibhsk3ddqzatld2y3htdhr7xrmaw5cb74we", 950 + "images/icons/windows_98/help_book_big-0.png": "bafkreiblsqk55e5vh4c5ixuxvn2pjfalagga6m2pyddbweaewuxtrrwpt4", 951 + "images/icons/windows_98/installer-3.png": "bafkreibg5wrytl34pu35766j3s2g5zwxygywzvu5liyh6sp6i5xkhxh6om", 952 + "images/icons/windows_98/installer_generic_old-0.png": "bafkreicqjl54n37ju65tjlqepcakfdfowctk7p7sbhte6fugmjur7gcebe", 953 + "images/icons/windows_98/keys-5.png": "bafkreihd7mue64zccyrkago6gyrs4uzob2psiuchcxnd3l77zq6lx3773y", 954 + "images/icons/windows_98/loudspeaker_wave-0.png": "bafkreigdee7jq3puw5hndm2mu4iee5qogciynqyzzmnqrmw23mc2eboc4y", 955 + "images/icons/windows_98/magnifying_glass-0.png": "bafkreies3swhu46d6iq5evrmrmzyzu6gumyvchhsxfvcaqw73e4yurbelm", 956 + "images/icons/windows_98/magnifying_glass_4-1.png": "bafkreifp5b44fduospp7g42dy3ab2octj5zpceewkc3awchwto3ntoduxe", 957 + "images/icons/windows_98/media_player-0.png": "bafkreiftaqkoxhry524sjzecose2cwkbuxnvypobusojuadajzszsznnli", 958 + "images/icons/windows_98/media_player_stream_no.png": "bafkreif5fiqrtbap5v3m6v6dfu42iccs24nknitfamz52nqbtxucglzc5i", 959 + "images/icons/windows_98/ms_dos-1.png": "bafkreiafx73ozquls6lsjnboqwks2u4b3chfqbqnl3sx5eize4mwu4hpfi", 960 + "images/icons/windows_98/msg_error-0.png": "bafkreigadoy5cepewxz5tpkrxs2iopne3qf477s323normrutwq7f6acpa", 961 + "images/icons/windows_98/msg_information-0.png": "bafkreihh2777ns64mlof3d7rv6qs33goerqeuykxf4b4mxohbngr5od2pa", 962 + "images/icons/windows_98/msg_question-0.png": "bafkreiar3fxkx35t374mwzbncrrozh364dt3manmiwlcbsudewygtawejy", 963 + "images/icons/windows_98/msg_warning-0.png": "bafkreidxucryqy6pvddeied7xuwuf26tgts6oc42mpzxtuklrt37q6sor4", 964 + "images/icons/windows_98/multimedia-4.png": "bafkreiee2tiezulfbn6jrqxinrbfkqeyqy3cllt3kqsnmwynqfq2gyp7oa", 965 + "images/icons/windows_98/network_drive_world-0.png": "bafkreidiwpqdjoj4vjbldyequve76ybjtwesiijaudkhqpa7c2qeblkdnm", 966 + "images/icons/windows_98/no-1.png": "bafkreibslz52jhw7gm57fgnmfu45uhnn25is7kkxvh7quxin4uz4prhe6i", 967 + "images/icons/windows_98/restrict-1.png": "bafkreiglqb27txhhhmiarxyyxubijddiuij4jptd3f3b4pqc4pbmbczo5y", 968 + "images/icons/windows_98/search_computer-0.png": "bafkreib5ttndengayfgzcfmhuhewsbidtkgh2bgqkaf4ippfsfj46ygemu", 969 + "images/icons/windows_98/search_server-1.png": "bafkreie7qnxp5vihtddjevftv5rvds7amufzvkclh4vvjnznwuomdcl3oa", 970 + "images/icons/windows_98/search_web-0.png": "bafkreiaa2q4zdzn5ydkhs2v24gioodt32muvi7ckfyup763pkznteei45y", 971 + "images/icons/windows_98/settings_gear-0.png": "bafkreicdmuawxjazmzvzzpcguzjn7s7wsxsyp5jsrsvyioqhc424vmzqd4", 972 + "images/icons/windows_98/settings_gear-2.png": "bafkreicf6w6z35fz5jparg4ns4d7q3gseudhunxkawn6eqfsvjd4b23n5u", 973 + "images/icons/windows_98/tip.png": "bafkreidrarmhyv2w346vj6j4ubfse6trkkbnhercw7b5g6pogbv37xwnzi", 974 + "images/icons/windows_98/utopia_smiley.png": "bafkreiea2n2s67wtluzoguoozo7pqel6ja6p4fq5wwcn57trlpm23zikhy", 975 + "images/icons/windows_98/winamp2-32x32.png": "bafkreidp6uvjz6tq34wtl7sps2pjkoxcpzf4apn5s67tw7ll2jvynw4kqe", 976 + "images/icons/windows_98/windows-0.png": "bafkreiehwg6dfqnaly73keequtspo3spdqhelo5nikium7s7z7mffmcyta", 977 + "images/icons/windows_98/world-2.png": "bafkreifsektphxnsdc6yfcirdfu5zypzbnjvbcjcq4hrhe22sgvayke2xu", 978 + "images/icons/windows_98/world-4.png": "bafkreihukqde5mcde4kmpy27t5xje2ucw3qihuifjrl4cnybyqjmfgtciu", 979 + "images/icons/windows_98/world_network_directories-3.png": "bafkreib6fjfxkj6qdgncfejalmckrpwnafbur6zgldjs6ghxd3plff33cq", 980 + "index.html": "bafkreifvkmtqm5p5em6ffppy7xkyodg6hik7q4gpxj7bufq6hw46ki3xk4", 981 + "index.html.br": "bafkreibg3al4nxlqdzbuhwejj2re47evtqbnyc25hfaoufnmeduafht5au", 982 + "l/index.html": "bafkreidaxn45etqopcrt25gdchcjllgw4wxn7m5ebvnjsnfejgyow4sr4u", 983 + "l/index.html.br": "bafkreihtr7o42wr3yihzoo5ad2y4uejix6zec6kfdrhyb75hhcgu4pen44", 984 + "l/index.js": "bafkreidriksznzdtcyixiusyrgiymxxioyt7tihaw6ddlkxstrlp4c2wwy", 985 + "l/index.js.br": "bafkreiesxbvollcimemyemxkodf3jntqpg36wduoo6a4yfv43y3zalb3r4", 986 + "l/index.js.map": "bafkreihlpdk2g5nuu7a4ygus4jpdi7nvvofie6fo3ss2ioc7vzomsertxi", 987 + "mstile-150x150.png": "bafkreib4h3p2bdlafrkbuwkhowvh7gzwzpbzhcgiz5zswzgmp64z4b73xq", 988 + "node_crypto-5R4NC7NK.js": "bafkreigfzknjuz6fqpkazuxor7hpuvwvehdaisfmhmaalttqk43iscr2nu", 989 + "node_crypto-5R4NC7NK.js.br": "bafkreihc6kacbqz7pp6huzj7pc7tdt4ghafwnn6yg5btkg7mlwvmoznwhi", 990 + "node_crypto-5R4NC7NK.js.map": "bafkreiebwvu27zsisyfbktzxe3zjqbalqafblj5627ehxkxrrvuttk7qpu", 991 + "oauth/callback/index.html": "bafkreidw75wmnic55iohhs2t3yzzm6ssphswrxw5ibpr3amfzr66gsh2n4", 992 + "oauth/callback/index.html.br": "bafkreibmadrcmjlhu4oaltjj5hbkbc4qcht4gelr6pzsoosem4them6vty", 993 + "oauth/callback/index.js": "bafkreielkvthippfofjjrswj3iyt54fx3ok7yjfsb3guxfzaecioke57zi", 994 + "oauth/callback/index.js.br": "bafkreid7mdyxvqyp35b54tv4pdeh6vupknpbjpt7m2qpqu4ilwoyp3f67q", 995 + "oauth/callback/index.js.map": "bafkreibbfu7u7skwed2hdnbhakdy52vjtpyxrao3ns6qgnpqjrnjoc6gdu", 996 + "safari-pinned-tab.svg": "bafkreihgsd3rmifhstrsd7arkx5fvstlfxrzyjwoxmawprwwsaxqnusp4y", 997 + "safari-pinned-tab.svg.br": "bafkreidonnvzoo5qjx4pada5sfkutnicpxryrin4fbmkspwwp4wsanynte", 998 + "service-worker-offline.js": "bafkreihja7gwsrtv3doq4xut6dxuhfgwgq4vqsqma3nblfelqhld7anhiq", 999 + "service-worker-offline.js.br": "bafkreib7sxvewv4rly2t4qplgylfca7zizdtuwcfvisl5rxrqd4zxzbxh4", 1000 + "service-worker-offline.js.map": "bafkreie7nec6ovaci55r3tlp3yjfffjlmtqutbm6pmq7sllgznix4pvtsu", 1001 + "site.webmanifest": "bafkreihvrm2dhfaxtgie6wngzmje3aq7evpgdbwazjcumci4dyvbohbjkm", 1002 + "styles/animations.css": "bafkreifpamtawpkrswogwbz7ug2oe2v3how45ppsgygo6wqb2vfqubmcui", 1003 + "styles/animations.css.br": "bafkreihapxqhnxt65ynfyrnckvlvueetflcpa6wklwiq3yrx6eijnhu5ga", 1004 + "styles/animations.css.map": "bafkreiebaub4x4gwvcpxsislt5npkd62l6fwgcwevxsho54eri4i2ybny4", 1005 + "styles/base.css": "bafkreigdzv2ywpg5s44mqipx7b7xqsu5hccmh23rd55b7g4si4ebjuel4m", 1006 + "styles/base.css.br": "bafkreify5p6lzwnb2ickdtewodvsi4thntygircm2hdvjutexghylr77yy", 1007 + "styles/base.css.map": "bafkreia526waowg4houiz2izodgww66iehkgdai5tbbsnsodsh5nqwbot4", 1008 + "styles/diffuse/code-editor.css": "bafkreigowrnxvpx3gcffhzi7x2tvojpd35unp45yzzxqj53j4as4ag5tv4", 1009 + "styles/diffuse/code-editor.css.br": "bafkreiewxwq3lbt2uggb3q4idaxhgcr2uzyb362t774u6s4btttxew5c7m", 1010 + "styles/diffuse/code-editor.css.map": "bafkreibn3wwwkarr37uyzkiqopspirfjsdlbdfgzkle5cr4g3gghq6pffy", 1011 + "styles/diffuse/colors.css": "bafkreicmb3lbdmq7fj3uwm5vvw6e7swbiipt4xwy74zvjpsozz6ij3rlp4", 1012 + "styles/diffuse/colors.css.br": "bafkreiflyjzzrxzsm325kpqwpod6ucqkxwfoq6w4dcyqu3jedb43xn5ciy", 1013 + "styles/diffuse/colors.css.map": "bafkreieb3zqrcfix4qjb6yennshpuowj4gnjflagklwknorgb5umslaeda", 1014 + "styles/diffuse/facet.css": "bafkreibogdr336qhgy3d3o7fvmjmxcmeaafjad5mz4rlldb23rdn7r3x6u", 1015 + "styles/diffuse/facet.css.br": "bafkreihfn7krifeygzwmltwd5wlsmt5nv27o4qbxqqvsh7yrqllzy7itku", 1016 + "styles/diffuse/facet.css.map": "bafkreigtabpsribuj5qwr7ckvwoyxtqbrc2pgc2x7qnajg24lzrcxk4gzy", 1017 + "styles/diffuse/font-faces.css": "bafkreie23d4rpa5hce2kezkp3zdps56zuy5dbvql37amkh3uvyxdaut6q4", 1018 + "styles/diffuse/font-faces.css.br": "bafkreielieupqj264qt5lb4y27xpjvoofcu6gigpmgmasfc7cd4rrmxzha", 1019 + "styles/diffuse/font-faces.css.map": "bafkreib4pkcngl35bkvblmdv435qwnmaxdu2szpcv3uyv7a3ibvn27fofi", 1020 + "styles/diffuse/fonts.css": "bafkreigmiuxryzepzsfwhylxetxpumgxf2dxxlfigrwvtufnphdivf26ta", 1021 + "styles/diffuse/fonts.css.br": "bafkreih43e4jb5y72yago6qqcjvw2ogquiorouvvajugzmdpgonp6wpsz4", 1022 + "styles/diffuse/fonts.css.map": "bafkreibbza6jcsldq7ukcjd3mcovxrawdc7oowe36d4oh7u2jlclfkkslq", 1023 + "styles/diffuse/page.css": "bafkreiahck6szslxbuobvdoerq7izsy43my4x4fwil7c3bvd6jf6r3mpxm", 1024 + "styles/diffuse/page.css.br": "bafkreihaxjvaln4ihhmpozton55m4hntjpuxzvj6j7a5i7i34qg3feza3u", 1025 + "styles/diffuse/page.css.map": "bafkreig7ryh5wvg5ycuv66nkgk5hm2fvmw6smwisiksghlxoa7noonsxwa", 1026 + "styles/loader.css": "bafkreigc22oivai6hl2qo5wgxytn4v4qobexcaroyn5g6hvfacelh7j34e", 1027 + "styles/loader.css.br": "bafkreigj3jjvfi76sctsjmm4ymjq5hlwq33yhdueeckhlq4kb3uupzxapu", 1028 + "styles/loader.css.map": "bafkreihzqfy62ska5qxm2dwfltgxmod3c66wai7fpctuj5u37hindsaobu", 1029 + "styles/reset.css": "bafkreihhsqwey7zjse7pibz24hujcp3grzw7mdp2rq4h45utzytwnfsnny", 1030 + "styles/reset.css.br": "bafkreifkmr67s3jtadqpxnzl3r7r2br2p6b6y4l26kv552e4wssj3k4wdu", 1031 + "styles/reset.css.map": "bafkreibmdx5vefu7vlhps7r22udrd2wjn2uchhxnil4ub54q6xvptix7ai", 1032 + "styles/variables.css": "bafkreihmvyucxbyozjmwu2olnyuhpiej2xlqlck6c4oa6xqhu7arklo62y", 1033 + "styles/variables.css.br": "bafkreifqnnuc62j7dmaqtvpifytsofxbgs5ibnqov4enjh35h4ag3dje5u", 1034 + "styles/variables.css.map": "bafkreihcgo2hh5ndvifthborbv5p7akexxrd3yzhueoodtbkurwrzsifxm", 1035 + "styles/wireframe/ui.css": "bafkreia4exmnvw4xyrxsincunj332tyyjuumbzggqkfqabryht47sp4s2m", 1036 + "styles/wireframe/ui.css.br": "bafkreibbh7faujdes5q7hnnaeblfnvp77lfyp224dglcj2m7jrqtrhvfmm", 1037 + "styles/wireframe/ui.css.map": "bafkreiboywnpgkp7437qcwb36rvahwteuvhagh5bu33tlevq43tg77fjvm", 1038 + "temporal-polyfill-WCWY3GMU.js": "bafkreidxeufa3osfq4hccmsbrrjrurthisxsa2gsxr36kf3kmy63bwkabm", 1039 + "temporal-polyfill-WCWY3GMU.js.br": "bafkreiel35lyq7puocq6lqbyhcynwrlfe5xvc3lktxinb66hv6dafimknu", 1040 + "temporal-polyfill-WCWY3GMU.js.map": "bafkreiatjlyxh3hnt7y7fwvv3d7ddk6o245na5uy73jzdbfrduqlc3c5lu", 1041 + "testing/index.html": "bafkreibgqb5b7g3mbmjigqpfklihxdyabcy32xr3f5ku5zx7vhs7xqcw6e", 1042 + "testing/index.html.br": "bafkreihpoycvyu7cb2ifm7myrrxseh6gffjmcuzsj3so4bptctsgqodfze", 1043 + "testing/sample/audio.mp3": "bafkreigrht6eywujpt6mu3fenydfqdobfpwl7vjc3fri4cym3v4pzviwei", 1044 + "testing/sample/tracks.js": "bafkreigv3vmt7bntz2epv6l34zp3dt2bs4pteiliklne3fyklqgffemrjy", 1045 + "testing/sample/tracks.js.br": "bafkreibouk5xwhehxyyiu7a6lz6ejx73b7omaqza2h3w63xspzyztp4ggi", 1046 + "testing/sample/tracks.js.map": "bafkreigm56fjjghjsznw6wqpd27kv57rvbrcypoyqwbkgbhqlc2rtquefy", 1047 + "themes/blur/artwork-controller/element.css": "bafkreieqk3qaukspvowbjozywa26zpeokwpfpqaatndop23z6iiuk4ckwe", 1048 + "themes/blur/artwork-controller/element.css.br": "bafkreih3iwxj6wxwo67zmi4e6bgkdmhhyiv7kixtyxcqtyhfhnj6gzubbu", 1049 + "themes/blur/artwork-controller/element.css.map": "bafkreiefimj4h3x4xwocboc2t5muirtfxlruazzcceb5xcgom3rfxvpoxa", 1050 + "themes/blur/artwork-controller/element.js": "bafkreidmq4usxzed735basi2ddr2krkwdlq3up6cglxuqpbdm4iurxjsku", 1051 + "themes/blur/artwork-controller/element.js.br": "bafkreie6ziz6eaikhdndvuor6wx2aihivvtxvtcn4m6qwsdszj6wen3eqa", 1052 + "themes/blur/artwork-controller/element.js.map": "bafkreigfwm3saxrxxtcltrepbl44xcktsxqueinp3kuqcdtpgksiwlrmcu", 1053 + "themes/blur/artwork-controller/facet/index.html": "bafkreih2lqwmag7yyuvmvssnmquso6wewxxg42dx5ekhtqvu5kodzi4hbm", 1054 + "themes/blur/artwork-controller/facet/index.html.br": "bafkreiblzipdnxnpqkuebclysjxarpgv6wep4z6tg3zodqyyi7rxwtp57m", 1055 + "themes/blur/browser/element.css": "bafkreieylp2jm2ooffpy5wwx3rjpnij3ywr37g5mxxh6jaub2mjqlukhaq", 1056 + "themes/blur/browser/element.css.br": "bafkreidsoy4g2f6wrbyarrpoqwkjbfv3axgxhtgxxr5jopkzothsd4nf6e", 1057 + "themes/blur/browser/element.css.map": "bafkreidbxywcjg35oajmuuu7pqabu3zw444wykl5h4lb57x45oyvqotmze", 1058 + "themes/blur/browser/element.js": "bafkreicemqttxyukqvk7kstlrli6qfu6d2dahuekkwsuk7e4p3linjow4e", 1059 + "themes/blur/browser/element.js.br": "bafkreibeiesd654crjqdqqts3kkimmakkytpeebzm33pu64kncgbaw3cgq", 1060 + "themes/blur/browser/element.js.map": "bafkreig5f2vbl4aeondvcgbpofhadovsk3nu4jevoc3lbowbqtjs5grjnm", 1061 + "themes/blur/browser/facet/index.html": "bafkreidwilpsyswn4onyz62p6ljtiizadkpljnza44527mnbikcugaqis4", 1062 + "themes/blur/browser/facet/index.html.br": "bafkreid75jqw2t3n6vwbvvtc7bd3nnwj4s3inex222ve2pfdt5p3wfcwda", 1063 + "themes/blur/facet/index.css": "bafkreidg4rzeq2vlpuijh2srfxuorex5cnsgznhqwm6mg5hcjqhgzcziz4", 1064 + "themes/blur/facet/index.css.br": "bafkreie2sk3ea5kmn6sjyvfymvvhgyfiaynjuv2hn6wwr2cymmieuvca4q", 1065 + "themes/blur/facet/index.css.map": "bafkreig744lniqk7wt23muhway7kfrjzu2cwbcoyq5bz5nkyc2dr5x77ma", 1066 + "themes/blur/facet/index.html": "bafkreias2dclsk5nnfnukbux47pnxmw3clpk3pyb3bc77mpvfjqhvkcloa", 1067 + "themes/blur/facet/index.html.br": "bafkreidzawaqrye5gcwpguwidc7lhxbopt4zry6kgyawxq2mluaa7gtj7q", 1068 + "themes/blur/font-faces.css": "bafkreia2wjwhua3ss2h4h34pdrx6ud6l4skwl4ag52y4mxd4qvyyhhik7a", 1069 + "themes/blur/font-faces.css.br": "bafkreibyun2gw4xofreqec5staakcndlrmzhzt6ga2zjotofopbmmb4xle", 1070 + "themes/blur/font-faces.css.map": "bafkreic7gtgw33rn5p7exommjky5fdfaqy33lzwgofxxarqoxov7vz7exm", 1071 + "themes/blur/variables.css": "bafkreidnhinumjx3dhgixbky3liy4gpgwindl2gtzalupxwhgvmjlddqty", 1072 + "themes/blur/variables.css.br": "bafkreibbps3dopgqtaaq35w3mgunxwrp5djpitodhujobglbhcoflp6bw4", 1073 + "themes/blur/variables.css.map": "bafkreieonkygaukkay54hp42zpzxkykqdi2tlvvk3ixer6dynzvio45erm", 1074 + "themes/winamp/98-extra.css": "bafkreifagimlkymvtrxpiqtlcqg7dpugffl4zefa5lq442q4pceqk3behy", 1075 + "themes/winamp/98-extra.css.br": "bafkreia4of7bishroznjxpkfd5wcfweqd4htmzazq6qt45qxchztcx7egy", 1076 + "themes/winamp/98-extra.css.map": "bafkreiahhwmnnkvvuxzt2tl6l2edzvs2zbfyxe3j2gwnm43p7hszx34dby", 1077 + "themes/winamp/98-vars.css": "bafkreigxtfqvfiz3upkrnttyva4mnwrwdaxpnrso4jzsrlpvxxahqhhs64", 1078 + "themes/winamp/98-vars.css.br": "bafkreihxqlnto45cj7ldk7ymep67rc5suvmce4q2v5j5ose6ir5gxp4m7a", 1079 + "themes/winamp/98-vars.css.map": "bafkreiac2j63gep2a3y2paahfizsrvhbjzlhf3tmp2j6chd6lgmyhklq5u", 1080 + "themes/winamp/browser/element.js": "bafkreigtmn4zbwwcqncgk6ykgsg5ipiyvzhonfnfqc2u237tkib3gu2f6y", 1081 + "themes/winamp/browser/element.js.br": "bafkreidojgto53ohpv5iazsanie26sgzzrih6g6lnb2k5nmexjcvry2bwa", 1082 + "themes/winamp/browser/element.js.map": "bafkreibb7j4yc6s4n57t2phddfrtih32qtsvq6vzsng4dargevmwfzkbsu", 1083 + "themes/winamp/browser/facet/index.html": "bafkreidbs6iiaq6hrvp2uennzav4xuy4ofq7panionqy5wuhk5ldmnmia4", 1084 + "themes/winamp/browser/facet/index.html.br": "bafkreibpb7o36ta3gpmmqgrrjywxx2tivkvot45ncasdz3kntkzhgqbgtu", 1085 + "themes/winamp/common/ui.js": "bafkreiejqs2ofqjphbd3i4mqzfpgdfnyhosdsmg4hc32d3z4ogtzq4dnr4", 1086 + "themes/winamp/common/ui.js.br": "bafkreidembmjmkroabjkoafzn4475acmh2pz3byfo4vkdgqv63df7mghke", 1087 + "themes/winamp/common/ui.js.map": "bafkreihxduej5p4vfc5gaqizoxsktpuikkxgf5nd5qdk4fkcutxxqd5emm", 1088 + "themes/winamp/facet.css": "bafkreigad7o6ig4mr5zjkjshqphplmkovjucj72jhxcidehceooo3oay7m", 1089 + "themes/winamp/facet.css.br": "bafkreia3l3lf3onydhpxw3toabsjr2bbwgga77rkkcdc4rvvtgbc76h5qe", 1090 + "themes/winamp/facet.css.map": "bafkreiefsvgpzag2z6blakppzo3o6gtn3juj3oprzyhnysvn3drmlmltnm", 1091 + "themes/winamp/facet/index.html": "bafkreihq36tx7jjxmvghmzm6pdsvj2u7hx3bwhaiofgoggafllgpcesmqq", 1092 + "themes/winamp/facet/index.html.br": "bafkreiczn6xczmaxcd2lju53rfvuohdlw22f5nztsfcryf4jiuflaozwle", 1093 + "themes/winamp/fonts.css": "bafkreiaa242ki57fk7vdmow2uecr2plul3ktqbm52elepij4ghgt53cxgi", 1094 + "themes/winamp/fonts.css.br": "bafkreihd7eimxp4krywkcaopnbnj2mdlry6hqecz4bv7naxkxex6cung5q", 1095 + "themes/winamp/fonts.css.map": "bafkreibaqsgniwkyr6zshx5m3gml6dklyboekz2bhfayqyrpp7ajnnep4a", 1096 + "themes/winamp/index.css": "bafkreiafegrpvvjntqle5bo63alodmg4xcy3nueb74qyp3a35wf2hw3w5i", 1097 + "themes/winamp/index.css.br": "bafkreicy7lf5l6ghgmlyy6mmau4wzfvxfswzjryt6f4zwiakb44csvy6em", 1098 + "themes/winamp/index.css.map": "bafkreido24pvulehr6fx3vm3yn6lufkhbazscl4ntoblgbzc5o324gi23q", 1099 + "themes/winamp/vendor/README/index.html": "bafkreig2dpcsg3ezbjggeu4xk5jfvqzdu2utfxijh4gsehx4tcftwiub3u", 1100 + "themes/winamp/vendor/README/index.html.br": "bafkreiahntfvq3qo2bhdgbeeczcxdktuscwwk3cm27vzbqfjkekp6l5uju", 1101 + "themes/winamp/vendor/base-skin.css": "bafkreicsdrxn4ru6rn4fzb47es6ttx4t33fi53rxsrc7cdpdkdkmw4b4ne", 1102 + "themes/winamp/vendor/base-skin.css.br": "bafkreierfxuezhv63posspmj5xdvuuc56hnh3kbfuoo7d46lcee2lb6duu", 1103 + "themes/winamp/vendor/base-skin.css.map": "bafkreic6fa5jhmos3ow6i7fs4lkp7jesbg52s454apxcyfmkrgkkofpyde", 1104 + "themes/winamp/vendor/context-menu.css": "bafkreibu4v3kabr3z7pkmepr6swuewygbw5iczhrgbuzuueb4wwnqqeqsq", 1105 + "themes/winamp/vendor/context-menu.css.br": "bafkreicjuzivda4z5tqzofg4jxnkerxw3msuganifok54bpamyrglyur44", 1106 + "themes/winamp/vendor/context-menu.css.map": "bafkreid5bkf7rwdyzngu4wfkyskgemqlv2pdfz6q3md3mnv7deam7zpwmi", 1107 + "themes/winamp/vendor/equalizer-window.css": "bafkreibin5roluz7cxksnzfbofh77hkzwu4ciwaseoqbugqslcxgrvc6tu", 1108 + "themes/winamp/vendor/equalizer-window.css.br": "bafkreifbawbockhcepyyzzrerh5vn4z7korsv7zmqmmi52rij2peproesq", 1109 + "themes/winamp/vendor/equalizer-window.css.map": "bafkreihslq5z5ygjkvwgvs3ktg3lggkukahhb725u5mlyi3wun6js3y4me", 1110 + "themes/winamp/vendor/gen-window.css": "bafkreiegxxaw2pu5ovnnudrgcprqvlocyqecriymfilpxzuyhscfvtudxa", 1111 + "themes/winamp/vendor/gen-window.css.br": "bafkreieezdj6i6kplar3ryp2uenbeg77yvobqewrphte7543ia7pxn2pgq", 1112 + "themes/winamp/vendor/gen-window.css.map": "bafkreifgzn2rdjcsua2zga5ofb6jnqjisa3ohpvx6dp25zl7gxo3rzrb44", 1113 + "themes/winamp/vendor/main-window.css": "bafkreigjsbcqm2egvrzywzsz6eebkqufusfah6m2pqpn2qcgl3neumlnoi", 1114 + "themes/winamp/vendor/main-window.css.br": "bafkreicyn6k4r2dzq6aibi4fchh66wqakykvmy5ctcpcxxq7dvx3hjm5x4", 1115 + "themes/winamp/vendor/main-window.css.map": "bafkreibckezfvmqqas22nkckqzp5yw4krohzlaapwgtdyicvqpfv4pdyey", 1116 + "themes/winamp/vendor/milkdrop-window.css": "bafkreignfdugd4plodefgrpcwnfs3ouf775eolyxpi66yem3lrozi65auu", 1117 + "themes/winamp/vendor/milkdrop-window.css.br": "bafkreiczmlpzhg4o6oftruizq6hnpbebycn54mlwjpsbsggaiwmipavady", 1118 + "themes/winamp/vendor/milkdrop-window.css.map": "bafkreibuxu7s2rjirb4v3ispiqc6vvpjn7urdsfb3ra4fxxepzgxexct3q", 1119 + "themes/winamp/vendor/mini-time.css": "bafkreih3ts5oc7jfjd5jpa5bfi2eskllcoq2sia53h63nzs5l7apoivlpa", 1120 + "themes/winamp/vendor/mini-time.css.br": "bafkreictwf7ijd3bckvzzcjh2pr33baubm5gge4l3lrhlowjn4t5q4isey", 1121 + "themes/winamp/vendor/mini-time.css.map": "bafkreifjerntlq543s7z7q2dz225lyolk7uduzrzmzs3jjcqi6xt5s3wui", 1122 + "themes/winamp/vendor/playlist-window.css": "bafkreicjkgmdrvk2s2sr3sn22nru3tdoz66cfco52dz3stuitjx3sxbsty", 1123 + "themes/winamp/vendor/playlist-window.css.br": "bafkreihv76vx6eqa3u5yijxfc4vtl44ssic2u7ve2bbe447doohjenakxm", 1124 + "themes/winamp/vendor/playlist-window.css.map": "bafkreiarioyno3kilethsllvz4wwlbhgrcofzyc5sv6pfqnwxpb3lsmvvy", 1125 + "themes/winamp/vendor/webamp.css": "bafkreid34t4zwupefluskmz4wd7faxyqupbonw4kdpbbtdrk5if3zhzeue", 1126 + "themes/winamp/vendor/webamp.css.br": "bafkreidszx5ie3qltk65fenndh3asfcceyimcqgugf6okyjqwie3voutua", 1127 + "themes/winamp/vendor/webamp.css.map": "bafkreibjvi5unez7bypwrj3wgfketdrr6klu6wvl2et2elvkfhe4eygbkm", 1128 + "themes/winamp/winamp/element.js": "bafkreicoav7rx66grirsatqd7k7epfqxsop45hpzkmrig3vmx4gnxmbuyu", 1129 + "themes/winamp/winamp/element.js.br": "bafkreicanol7rjluq72pskhwi6zccl3ybuyuejgjlk3r24yrvjcnyx4vuq", 1130 + "themes/winamp/winamp/element.js.map": "bafkreibdoovqjaxflbk3nfsdjnaiq4auhvlbqucp6o5p67tig4btx6aq2y", 1131 + "themes/winamp/window-manager/element.js": "bafkreiaaijnnmsc326pbueabdqtkbtgqltyp6w5vguios3gk5sqhjhau5u", 1132 + "themes/winamp/window-manager/element.js.br": "bafkreic2h5psaotu7a6ys3wilpxtltc45lsfucryarc5kvwo6rm2ljxcvq", 1133 + "themes/winamp/window-manager/element.js.map": "bafkreihzuwdst2oshjaii4ubddqnwuoyjq2r3btru4t3wrxutnngi2ranm", 1134 + "themes/winamp/window/element.js": "bafkreibpziybtb56xzqz662zjpdvfc26mnld5o4ze4qk3jsnxmrnrdqlry", 1135 + "themes/winamp/window/element.js.br": "bafkreihrioldzqspaeqltws2ml4ipgcdmwojcx3qnwacip3mfsheyuuufy", 1136 + "themes/winamp/window/element.js.map": "bafkreibuubad7luc7t2n7ir5dtljpwsmwyigtlxdixqw4wqhycst4p5f4i", 1137 + "vendor/98.css": "bafkreiev2do27rzekietiigmijxkywpqgf6exltmyw54xuq2mlerezm66m", 1138 + "vendor/98.css.br": "bafkreid4lziu5wjt54pilzupvikaietccrxkdtegoeor6wwdpdkpa5amx4", 1139 + "vendor/98.css.map": "bafkreifgh4ss7sdouckjmbhb3ob77wje3bdh6bq2zp5biseuwhms33ms54", 1140 + "vendor/@atcute/cbor/index.js": "bafkreibyaswduwarhxexmnfndmxh5mobm2ugshw3bk25453q4dvmotr4se", 1141 + "vendor/@atcute/cbor/index.js.br": "bafkreibbjje4m2bpwhw6ckmcvprnbaywh4knakrzgcw7on7dovggpih5jm", 1142 + "vendor/@atcute/cbor/index.js.map": "bafkreibbskfiol3pe7qbl3l2wlw24i3g5p2eu4mgmjdhhyzlpspqqxlppq", 1143 + "vendor/@atcute/oauth-browser-client/index.js": "bafkreida73exod3tagt47v67hmt6ar7upnjhbnoeq6dcp2f6i4evi3gsbi", 1144 + "vendor/@atcute/oauth-browser-client/index.js.br": "bafkreiamspkl4q6nixkb3w54ofcgqbpzt7rvdzd7pkm2ctf6rwcdn6etga", 1145 + "vendor/@atcute/oauth-browser-client/index.js.map": "bafkreid3pp6zdy2427oaq6lczc2agkktz7tokjczzccfno6uh7x5fe3fsy", 1146 + "vendor/@atcute/tid/index.js": "bafkreiespyi4eijwydgnb4cnltqonhvqezxcjlpsllwcx4d45e3euod72a", 1147 + "vendor/@atcute/tid/index.js.br": "bafkreibrq2xijoiaylqdnrqs7j7mv7dlaz2em643ouyr3drbrid26izoia", 1148 + "vendor/@atcute/tid/index.js.map": "bafkreihvmewhpqalc2hgknw347af5pk5cipypsjz7r6h3yhrdglebvz3bi", 1149 + "vendor/@awesome.me/webawesome/chunks/chunk.22GDIZST.js": "bafkreiee5rrphrn6vyfqhcxg6vha5jntynhpnop5mo72clf2mhko3csqju", 1150 + "vendor/@awesome.me/webawesome/chunks/chunk.26QE47KB.js": "bafkreihpnwmga6sgaqipozbbxehcbodblaieaa6vxmlsks3zlp7rx3mfma", 1151 + "vendor/@awesome.me/webawesome/chunks/chunk.2BXLTQVW.js": "bafkreihejbriwwvfaxpbrapxxx4l53mpdcqxx6c5cnrnmgsimt5yzu22ha", 1152 + "vendor/@awesome.me/webawesome/chunks/chunk.2ESIQE6U.js": "bafkreidcgsbbnxxkay2zefcqfce6rbpfxchi4x3kv25zbfvtm2oezvsudy", 1153 + "vendor/@awesome.me/webawesome/chunks/chunk.2LXKNNNE.js": "bafkreid4zs5uylwdoegnpfu5cke6hugg3w52umoy3idbbixuwgv6jeqaue", 1154 + "vendor/@awesome.me/webawesome/chunks/chunk.2MOO23UE.js": "bafkreifwt3yjnpmpkzbjkmqc2ut2oeklsqy54osw7mjbodll47k63qxbci", 1155 + "vendor/@awesome.me/webawesome/chunks/chunk.2S44VCJ4.js": "bafkreifqdk7xb7gb2nqpz2bgs7iepk5ks4o4ubngjn47xfyv7nzy7zwuvq", 1156 + "vendor/@awesome.me/webawesome/chunks/chunk.2UDUPMFW.js": "bafkreigzgvj7tkkxqvn4qdttiij3zmq3tgtewjfxbbc3k75t2sr4poicny", 1157 + "vendor/@awesome.me/webawesome/chunks/chunk.2V3SZRCM.js": "bafkreibot4i5xqt342qfw42dlaueahlixt6yfqh2xcmyvzqvrtryjnnkv4", 1158 + "vendor/@awesome.me/webawesome/chunks/chunk.346V4PTX.js": "bafkreifb5vu6qrt5p3bgqlnzezwtdkghf7dsildosjqnyuo7oobadtvjwy", 1159 + "vendor/@awesome.me/webawesome/chunks/chunk.3MSWQ3RG.js": "bafkreienbxbbdstc44nax6epnrbrebyw7bojt2a25djhv4myypfr6itegu", 1160 + "vendor/@awesome.me/webawesome/chunks/chunk.3NKIHICW.js": "bafkreiflbe67bbcg5omizde7l6k53w4vpkjdjseor4erycawpujz76xufi", 1161 + "vendor/@awesome.me/webawesome/chunks/chunk.3V4ARLUJ.js": "bafkreif6dhhiw2afesl2tev6qa3yurkn2qjfivixfxvfqhmwmmprovtexy", 1162 + "vendor/@awesome.me/webawesome/chunks/chunk.3XPJKXEA.js": "bafkreihlxxfl5w5fghuxdsowozxv7y5m5byewkqzjhxwbm5yxeoyxvvujq", 1163 + "vendor/@awesome.me/webawesome/chunks/chunk.4CQG5VMD.js": "bafkreiatbmi2ln56nfwwwdrsc35wtaavzgteruu2qlmxc6bdbkumbzenim", 1164 + "vendor/@awesome.me/webawesome/chunks/chunk.4FARGCB5.js": "bafkreiai2m6lecesmxbdi2zetesk4k3fxriyzpho76owuxvjpxaglce72y", 1165 + "vendor/@awesome.me/webawesome/chunks/chunk.4VXUYGRW.js": "bafkreia72623y76mbesrxhe7nhrsqhfpvqy2ol6sxsmy7nhyietlhoguyi", 1166 + "vendor/@awesome.me/webawesome/chunks/chunk.4ZAKP7NY.js": "bafkreih2btvhtyzbplqk6utbzcwmtqjzmdf6i6ejzi52kkq66ltowrde2a", 1167 + "vendor/@awesome.me/webawesome/chunks/chunk.52WA2DJO.js": "bafkreihhwhwrnjeer7p32ooo3i3khxtmj7ezrxxkgxygz5l7apqxxgvvli", 1168 + "vendor/@awesome.me/webawesome/chunks/chunk.564LJHAJ.js": "bafkreihbftthaa4muhklr23migfkuuj7zyvvfntrgz35oi7qllyszu7voq", 1169 + "vendor/@awesome.me/webawesome/chunks/chunk.5AVTITY5.js": "bafkreicigw5mqopmusrvug7qd6twaimgzq3tvushecugerf3cipmbosbpe", 1170 + "vendor/@awesome.me/webawesome/chunks/chunk.5COO2B7M.js": "bafkreidaqihsfebbro5rsidnf5wekcnzko7fuhez2zrhoa7wav74pus5gi", 1171 + "vendor/@awesome.me/webawesome/chunks/chunk.5DQYMPDO.js": "bafkreidn65ghuru7y22ml7p4h6fvtrw7gc5qvx3bh3dkmv7tvcyptxvq5a", 1172 + "vendor/@awesome.me/webawesome/chunks/chunk.5DXTNOIX.js": "bafkreiblz5ydnmh34psjmpyt6ehhc366l3jqyxsfpldkx4h5qdbauefvmy", 1173 + "vendor/@awesome.me/webawesome/chunks/chunk.5OV4QM6R.js": "bafkreicojix7j2sm2aomdmqrxlyhlr2qpl73op4gpzx3arhcj56hkphgw4", 1174 + "vendor/@awesome.me/webawesome/chunks/chunk.5YVRGMJI.js": "bafkreicvirdeols3n77tz5mrrqk53utqb7hvkovbt7k22m7s5gtq3kbw3y", 1175 + "vendor/@awesome.me/webawesome/chunks/chunk.6HCLC3WA.js": "bafkreidvsoaiqgdibw5ybhjgtefrbldulaj6zqetevpx3um3dhmq5edncu", 1176 + "vendor/@awesome.me/webawesome/chunks/chunk.6NKNSNEC.js": "bafkreidmkvhwicuirmfqvomqoor4a6gt35nhkxqcroufhb4jhjtvnmhby4", 1177 + "vendor/@awesome.me/webawesome/chunks/chunk.6NYGANGC.js": "bafkreieqfmbyvxx2c3o2ryhstuuo5zexrurq2kgekxtlocgxemspzzfhxy", 1178 + "vendor/@awesome.me/webawesome/chunks/chunk.6SNQOYNK.js": "bafkreibt4lo7vr5lqddrfq5xl5aoizg3pxoj2timbqhkeuisujrmhccxmm", 1179 + "vendor/@awesome.me/webawesome/chunks/chunk.6WFYAIVE.js": "bafkreid7vbl7rpuweeqhvrxyfue7ydy6xzqsne4jsoksrfupk6ocgqhmm4", 1180 + "vendor/@awesome.me/webawesome/chunks/chunk.6WLEY4CF.js": "bafkreie6itvt6xraugy2w5phjyfgxsxyyk5zb6timvu2yijwm564wtsey4", 1181 + "vendor/@awesome.me/webawesome/chunks/chunk.6YASYNE2.js": "bafkreiay272hbtaoa3p3jp7huukysb45jcwdtgpvz7k5op2bxkmkiczexa", 1182 + "vendor/@awesome.me/webawesome/chunks/chunk.6YXQA63Z.js": "bafkreifxcqipaj5hdb6yqy5nloxuekupkpee6lynupnokkeqhqthzqx44u", 1183 + "vendor/@awesome.me/webawesome/chunks/chunk.77DF3KV2.js": "bafkreideesdyr3n2qafxw6xtxjq7js3stkpalmrkbcglphr4qsdmtcguua", 1184 + "vendor/@awesome.me/webawesome/chunks/chunk.7GZL6M3M.js": "bafkreidjwsni4g34q4ujqhhnq74q7lulelfdezh7e2ibgvit7ov6axx6xm", 1185 + "vendor/@awesome.me/webawesome/chunks/chunk.7JM6M2OU.js": "bafkreibktlvptvemjgsr666iur5hvsy3wtxqndd7efoebpgdofsnfaacb4", 1186 + "vendor/@awesome.me/webawesome/chunks/chunk.7NK5JOYQ.js": "bafkreiehkgiq5fonwvoovzivx7v4ia5lmldla4h3wlqq2rspyr56pjkmby", 1187 + "vendor/@awesome.me/webawesome/chunks/chunk.7OBLIRXR.js": "bafkreihgabqpbn4cwnixwaav5xrdzmnevd672am35haza7x3do5qxs4lwu", 1188 + "vendor/@awesome.me/webawesome/chunks/chunk.7OUGTAL4.js": "bafkreie3tnyddiidxud2tbbnwwtvq5nmcmlccjybjwpzfuahdl2jxv2b5e", 1189 + "vendor/@awesome.me/webawesome/chunks/chunk.7Q54TKRI.js": "bafkreigosw6t54uwbso752qin4kx77c6wsnqskgmgyrm3gmhvu7mlp73lm", 1190 + "vendor/@awesome.me/webawesome/chunks/chunk.7WMEQYGQ.js": "bafkreihm245mdx5ftts6juxa7mojd23xr6dhwbdr4q7wwoqmddugfa6n7e", 1191 + "vendor/@awesome.me/webawesome/chunks/chunk.7WWFNUSI.js": "bafkreihdpydlb2hwydnuu6nu7itvxj4gvxuq6rzhxfh77uk3lhctv4ej2u", 1192 + "vendor/@awesome.me/webawesome/chunks/chunk.A3R6L7UQ.js": "bafkreidxumjp2dpmjgojl2ad4gx47ppwh34jtma3e3fqguqf3shnulj2zq", 1193 + "vendor/@awesome.me/webawesome/chunks/chunk.A4KPVHRW.js": "bafkreihzyoaegqi6bxop5nlyzzg5mwlkp3zz3el67fogfrchjgq43dhsf4", 1194 + "vendor/@awesome.me/webawesome/chunks/chunk.A6NNIHUA.js": "bafkreibbju7augrdqeruh6tyfmxy3dr6c3e5tkgvxpozrfpmmttrxckuom", 1195 + "vendor/@awesome.me/webawesome/chunks/chunk.ABWB3QPK.js": "bafkreiamu7cmimkzuer4mxrjg7cpg5k5v4eneu4yl7dqnh75aodlqkf4wa", 1196 + "vendor/@awesome.me/webawesome/chunks/chunk.AG44H7MD.js": "bafkreidn5ktlhmpprg6r2ovqdjg2oyazz7sb5xm4pugnzrv3hq45icgxum", 1197 + "vendor/@awesome.me/webawesome/chunks/chunk.AH3FNK5L.js": "bafkreih2zystl3laq6ucnbanyr55ifi34biv4tren3gk4h67corjb3cmv4", 1198 + "vendor/@awesome.me/webawesome/chunks/chunk.AIZDAWXZ.js": "bafkreie6gwyumtia3lb6tmoyjswiuxqk4uqfpjprzwf5azoxg6inutiwpa", 1199 + "vendor/@awesome.me/webawesome/chunks/chunk.AJDO4JA4.js": "bafkreicbdw5f7zpvrb5o7kyz4anakkk52sg7yni7ualksxvgufecz2lu4q", 1200 + "vendor/@awesome.me/webawesome/chunks/chunk.AOFGESO3.js": "bafkreihgs3dznd7njczttdxaphqd2rzu6ip6kznozrb3h3hxiobqk26ryu", 1201 + "vendor/@awesome.me/webawesome/chunks/chunk.ARYES5AV.js": "bafkreiho5mzdiaxw2kkpi4snr72dllvyb6lubgu6guczrdon76vfnlfne4", 1202 + "vendor/@awesome.me/webawesome/chunks/chunk.AWDGFOXI.js": "bafkreide2n7sfpfeyi6zvuh6jb2o7jyzgarji32rxaqh36izfyqwo64i34", 1203 + "vendor/@awesome.me/webawesome/chunks/chunk.AWT63VDF.js": "bafkreif3doqpdmryy5he2qy4gird4myhtohjug43eb3zvsc2on4frfxsai", 1204 + "vendor/@awesome.me/webawesome/chunks/chunk.B6ISAEK2.js": "bafkreigtwthsbmd76ul7rxc5l7inu5dezmenyatgd4t7zifdoravcysnmi", 1205 + "vendor/@awesome.me/webawesome/chunks/chunk.BE5VT7MB.js": "bafkreiedbfalzzpnjlbmjbz236ekbcyogdan3xm3hfvj7pw2a5tlc7lgtu", 1206 + "vendor/@awesome.me/webawesome/chunks/chunk.BEORUVOT.js": "bafkreiegua5ncrn5tmecshfnxfuuk7yusb7g6nmaoftso5crrbmhjime3a", 1207 + "vendor/@awesome.me/webawesome/chunks/chunk.BEUJM2FR.js": "bafkreievlyt32ueygethq4hsyqo4ncrldlayfhqqggzcso6ujubkxwtiqm", 1208 + "vendor/@awesome.me/webawesome/chunks/chunk.BKE5EYM3.js": "bafkreiet7qzmxhtxs5mlwjdaqvbnhjpfstgpx44zub2vfrb6bxg7vaugue", 1209 + "vendor/@awesome.me/webawesome/chunks/chunk.BMO76VKZ.js": "bafkreihhwldiqqrlw63gi7cnfgcwkjg6vei5hbqwgjkvq4jm7gry6m6y24", 1210 + "vendor/@awesome.me/webawesome/chunks/chunk.BPZLEXWB.js": "bafkreidtza3j7xmhqp3l65vg4xsvyws5qvdaxwl54fm7nwhadd4c2zk2ze", 1211 + "vendor/@awesome.me/webawesome/chunks/chunk.BQNDCXAL.js": "bafkreifikah57msayjjsbz465ehkwxebkiw6rwskp745xulrmvpok4v7g4", 1212 + "vendor/@awesome.me/webawesome/chunks/chunk.BZCNQIXV.js": "bafkreica4czesowkufvhv6ph7kix5ty4ovmn4h7xhqyrnfghh6fddl7wm4", 1213 + "vendor/@awesome.me/webawesome/chunks/chunk.C2MSEIJL.js": "bafkreihbxssgunpht4xrbxcxnol2wtgrf2dxmepch6s6hudqoumvfaa4ly", 1214 + "vendor/@awesome.me/webawesome/chunks/chunk.CBDCP5PR.js": "bafkreid5vi6yj3hy5lq5pasckcnbajw6nkfyhoaib4lcyqbnizboaajw5y", 1215 + "vendor/@awesome.me/webawesome/chunks/chunk.CCGRUHHE.js": "bafkreiatbcenlo5mgqeolpexelasmlfgnj4nujk6gwfdlt42lbgqhqubga", 1216 + "vendor/@awesome.me/webawesome/chunks/chunk.CKOYBX7K.js": "bafkreihcztgtkvgd7w2eeht64tm7tirsn4vselj42i4avqo5eo5oebra5a", 1217 + "vendor/@awesome.me/webawesome/chunks/chunk.CKQ4S4SW.js": "bafkreieg4vjjdiplswajwk3bi2em2fyd3ksgjoss6kfyhhudaixsxxyguq", 1218 + "vendor/@awesome.me/webawesome/chunks/chunk.CNH6RYYS.js": "bafkreicknmz2vt5zemj72it6td42hfqd5vz5jbgnecbrpaofby4pfdehv4", 1219 + "vendor/@awesome.me/webawesome/chunks/chunk.CNYRG3XY.js": "bafkreiboj36ysi6essh5xdtr4puwhu4burv2mvpb5pd7iqcrshpydasbbi", 1220 + "vendor/@awesome.me/webawesome/chunks/chunk.CQJ4P7SI.js": "bafkreihczdap4r3bbz5y4meprrbn3yldnq4dqbo6y4yikwqarqy26g62ve", 1221 + "vendor/@awesome.me/webawesome/chunks/chunk.CQPBX5YQ.js": "bafkreieqwocjp7puqyn6g3atviqgjnlseimef5jcmm6yp7g6c2n6vftyte", 1222 + "vendor/@awesome.me/webawesome/chunks/chunk.CWME5IHW.js": "bafkreigcalunzigami3t64ua33qcn646pseswnxompgvg42hmyd5yr72jm", 1223 + "vendor/@awesome.me/webawesome/chunks/chunk.CWVOQ2RG.js": "bafkreibxmsmqlqjqrmhb7nq4ans33ldnwewtw6af43lqyzjmhg6yinxl6i", 1224 + "vendor/@awesome.me/webawesome/chunks/chunk.CWWDUWOQ.js": "bafkreifs25xmx5lp54bv4fpbzqoqhs2ymowmyp57iwrxibqrytrmggogqe", 1225 + "vendor/@awesome.me/webawesome/chunks/chunk.D2ESGZCU.js": "bafkreicipe5ell3vcjg6n5aldjdq65an3vlcjqlnc4fkzgufbgfpwggjtm", 1226 + "vendor/@awesome.me/webawesome/chunks/chunk.D5YFE5NT.js": "bafkreif27qowm22o2zc6fk6kiduv6gektnor7dtssuvdkf662w4qffihkq", 1227 + "vendor/@awesome.me/webawesome/chunks/chunk.D6QBDCI6.js": "bafkreihlw4fxylscdkdfius5rtxaubbpeaikdcokefhecxcsiumqlxdxcq", 1228 + "vendor/@awesome.me/webawesome/chunks/chunk.D77H7RWC.js": "bafkreib6hrfn3wphqgusjsvzmtnoonprfttane7zriib5li63h5czpv6yq", 1229 + "vendor/@awesome.me/webawesome/chunks/chunk.DAVLWZBC.js": "bafkreibgvzbgtg7gr5gxahlymn4o5zcxiep4xhlhdgki3rlb2m3hmvxg2u", 1230 + "vendor/@awesome.me/webawesome/chunks/chunk.DNBJR3U4.js": "bafkreicwjnoj4pdmmvcfblgfsnpzdxgldpozvau2b6lmcdtg2x2mkouuty", 1231 + "vendor/@awesome.me/webawesome/chunks/chunk.DOFHHKB4.js": "bafkreia3tz7euo3gdimngw2qdw3yiwpoayjynuuzgjwu33bnj63sklg4mm", 1232 + "vendor/@awesome.me/webawesome/chunks/chunk.DP5YIFD7.js": "bafkreiandkdarsswlz6f7rchfa4i46zkjmhug4vp7atjmu4ur6qol3asky", 1233 + "vendor/@awesome.me/webawesome/chunks/chunk.EEWGGADM.js": "bafkreidcqblthpbhvyhoad6ikgzq56i5aja4ycqml2erj2sa4tlqmim5ym", 1234 + "vendor/@awesome.me/webawesome/chunks/chunk.EF25YJJE.js": "bafkreicltdngcyrrq4bseb67ip4ccbroubimwy7m6t2gqisoitmghtspdm", 1235 + "vendor/@awesome.me/webawesome/chunks/chunk.ENKIVG4B.js": "bafkreigsvmlwpf2agkg4eo5fktn4ymlyf4cucvqdrqpvx4ukcyrh3wpn7u", 1236 + "vendor/@awesome.me/webawesome/chunks/chunk.EQZFZGSD.js": "bafkreiel4w6nddizqvlm46mmdrf2ddxtoytmuxwzelm3djylgpoec6q2ey", 1237 + "vendor/@awesome.me/webawesome/chunks/chunk.F25QOBDY.js": "bafkreidgy2zginps3tr2jjjeailxv4kqzfia3nh6w2art2u2qp3je4bh7u", 1238 + "vendor/@awesome.me/webawesome/chunks/chunk.FDYDBGOC.js": "bafkreicwq6s2n24sgrjdgjf7dtpgdvzfz3dtwx6ipocr4q7tt7whwkleii", 1239 + "vendor/@awesome.me/webawesome/chunks/chunk.FKBI25LL.js": "bafkreict6c3mw5wothjxdf3g2wvjohmvopf2zvor52ey4qr23dn3gz42se", 1240 + "vendor/@awesome.me/webawesome/chunks/chunk.FKKESQC6.js": "bafkreief37ekfe4yy6zmlcrjehgos7w4h72csmwc5a5cqt2tbcosnv6zmy", 1241 + "vendor/@awesome.me/webawesome/chunks/chunk.FYKN76UA.js": "bafkreibh2i4uchspsdqtei5wnmv5kbo4arhlef2kzes2ampep6x5isosai", 1242 + "vendor/@awesome.me/webawesome/chunks/chunk.G3ZVQTTB.js": "bafkreib4reihk2hsopwdbstsis3taakwubvj4o5lpmxuavsj2nxjgoqgve", 1243 + "vendor/@awesome.me/webawesome/chunks/chunk.G4H2TF4U.js": "bafkreifqeuyadbpa5jubh2lxe6bwpu54wop67lfincaglq5dc6rboib5li", 1244 + "vendor/@awesome.me/webawesome/chunks/chunk.GEBLECV4.js": "bafkreif4o4bi7a7h546ha4yjzfw4xi3qnfxxiohk2lci3y536iz74ymx3q", 1245 + "vendor/@awesome.me/webawesome/chunks/chunk.GNPK466U.js": "bafkreicxq3woq26tn2um2ztdr435s3ue4fayp5ezsz4m3pqkjj6hqkyloy", 1246 + "vendor/@awesome.me/webawesome/chunks/chunk.GRV2ULZ4.js": "bafkreidj33dysxmjopxck6dnapgbs6ce4r3qwcwoou6gq74eviwgkwoamu", 1247 + "vendor/@awesome.me/webawesome/chunks/chunk.H23DVATU.js": "bafkreibwkvpzaulgw5v6d5wjhzvjccwe6rdpozg25e2fqgwe77kczc23je", 1248 + "vendor/@awesome.me/webawesome/chunks/chunk.H2465YGT.js": "bafkreibr3go5hw5ba3kk6pln42ckpgdo66sq4jekkihaepni47rbfsz26a", 1249 + "vendor/@awesome.me/webawesome/chunks/chunk.H7TA73OO.js": "bafkreicinyxdbqc5zrl2kbetzygqzwsmoshdeguvpdfux6z4ellcd4sa6i", 1250 + "vendor/@awesome.me/webawesome/chunks/chunk.HCXBOJYW.js": "bafkreicyulbudlbsj5w7ixcg4y6prl3kwufpkc3bteowi65zags4w3zrfq", 1251 + "vendor/@awesome.me/webawesome/chunks/chunk.HGBRCPUS.js": "bafkreidkufrtyb6rnquv5g3kyt26ypvfthbczr7yjb5zxk2po7lwdimzde", 1252 + "vendor/@awesome.me/webawesome/chunks/chunk.HGRYWFY2.js": "bafkreihyooije3g4rrg7krrj4q6xfmxeheveozjnuiaainwecraeon6x5i", 1253 + "vendor/@awesome.me/webawesome/chunks/chunk.HKQX7MLZ.js": "bafkreihqwogszg3epy3g5agu4toxlpyn3yisfm3pvyudqsakmm6yxclacm", 1254 + "vendor/@awesome.me/webawesome/chunks/chunk.HPOJN4W7.js": "bafkreignr3ka4bufdrvfjzpnrwteopfidebwrnzf44ipkvbp6hi3y7ol7y", 1255 + "vendor/@awesome.me/webawesome/chunks/chunk.HPULLNVR.js": "bafkreiaqbyneffx3xxquoy4k3egmitpdfyemwddrinw3u63wmtgjdd5zaq", 1256 + "vendor/@awesome.me/webawesome/chunks/chunk.HPWRPZJN.js": "bafkreids4iy3hbsuewjaftdko3cnhe5u5ey3fxg3i3v35qtmsswz2punhi", 1257 + "vendor/@awesome.me/webawesome/chunks/chunk.HPYPW3AE.js": "bafkreia56udcf6bcyw7jlnpz4nrsgd6sbguuzksutrj23k4mlisnmtvroa", 1258 + "vendor/@awesome.me/webawesome/chunks/chunk.HPYWYASS.js": "bafkreihfabt5tyvgelsh7hhhrzvbxtrftosna4fvdqoxdgs2uvb4r7i75m", 1259 + "vendor/@awesome.me/webawesome/chunks/chunk.HSCRELRG.js": "bafkreicl6r3rmcf5j6a7dgwvmyxmlsdzouv7j62ypmqbxf6cd5bvidqivu", 1260 + "vendor/@awesome.me/webawesome/chunks/chunk.I3XGXHPO.js": "bafkreie3fkovalpuet2kbphs2onh6aph6yajphdvutyuoznk65kpinficm", 1261 + "vendor/@awesome.me/webawesome/chunks/chunk.I4KXAHPX.js": "bafkreietbo2jrotb34inxhzxmjfegmdupybmnmcj6zfh2gf2crunrpjym4", 1262 + "vendor/@awesome.me/webawesome/chunks/chunk.ICPDUSEI.js": "bafkreidjkjfxkkxnav2xhbhvh42haxdcgwfms5km3dp44fzrie7zszk5ri", 1263 + "vendor/@awesome.me/webawesome/chunks/chunk.IDV4GXTH.js": "bafkreidrqavo3ej4c5oiewx7f3yv2rs2b67nz7njca77evpapedrxo6hxy", 1264 + "vendor/@awesome.me/webawesome/chunks/chunk.IIHGIRPB.js": "bafkreibajittm3umrkiqcklo6bfqods4oxte63m3iy4ur2if74l73dqc3i", 1265 + "vendor/@awesome.me/webawesome/chunks/chunk.IN5A745N.js": "bafkreievj3rqx6tisnkrepmuxmwqh3mb3xbum7sdwtaphtldcs46deteba", 1266 + "vendor/@awesome.me/webawesome/chunks/chunk.IQWN4TII.js": "bafkreih7q42peq2cvihx7nfh3m5t5cv77t5w4romklqwxtfy2243vbyikq", 1267 + "vendor/@awesome.me/webawesome/chunks/chunk.IYHS4N4A.js": "bafkreifdwy4vh5ecuajddf2h26yal4j3ce2mdxqeamcur5dwjky3wkcutu", 1268 + "vendor/@awesome.me/webawesome/chunks/chunk.IYXV6LE3.js": "bafkreibstm4ksaezzzf6azgdgduugztb6yjeygtpczf3bie765dqf6ktxu", 1269 + "vendor/@awesome.me/webawesome/chunks/chunk.J3VX45Y5.js": "bafkreigfgaa6bcb2w5fwxai66rv5aw4fgx3dkwtrnk4mnslfkdfxic3tpm", 1270 + "vendor/@awesome.me/webawesome/chunks/chunk.JHZRD2LV.js": "bafkreibvyj6erdeps3muev3mra27ntmpcz4fpmferzpssbcfuctfhigwbm", 1271 + "vendor/@awesome.me/webawesome/chunks/chunk.JJGU446Z.js": "bafkreicp6lulzyeekxeioovbfxmx2p75jho7p7mju4ssmujr7huoquruxa", 1272 + "vendor/@awesome.me/webawesome/chunks/chunk.JKX4XUKG.js": "bafkreif44nc5rg2qpqlasww6x3fece6zevpueepjzhqwsvac4cd55xyszi", 1273 + "vendor/@awesome.me/webawesome/chunks/chunk.JQO5DBIV.js": "bafkreifzdvowmg3lbta75msfgji4lhs2uinxuyjl7llbn3dbxes3dn4zmi", 1274 + "vendor/@awesome.me/webawesome/chunks/chunk.JRPGUCID.js": "bafkreibf246wvc3ryvs2gwzidfv6qrzu5fzwp7wakwymgjn4xstborw4te", 1275 + "vendor/@awesome.me/webawesome/chunks/chunk.JTOY5KP3.js": "bafkreidko4smdghi42zhny5vkyg5iiwnhvafxzjnwstwgrpm6wzd7eyvmu", 1276 + "vendor/@awesome.me/webawesome/chunks/chunk.K4C5PQDP.js": "bafkreicv5amyjw7wfermay7c2z6w7f7usfdzd7ehwhhpssxl3q2ucjrdci", 1277 + "vendor/@awesome.me/webawesome/chunks/chunk.K5XZXLA4.js": "bafkreihqrh3u4zumjpzr7wmozgbclb2qjdgki7z42ryzyuqt7sd5utwmai", 1278 + "vendor/@awesome.me/webawesome/chunks/chunk.KBS6YHTA.js": "bafkreif27qowm22o2zc6fk6kiduv6gektnor7dtssuvdkf662w4qffihkq", 1279 + "vendor/@awesome.me/webawesome/chunks/chunk.KESSODMC.js": "bafkreibqfzafqjxhjptxfpzx3spriarh2p3lbhx4obhu6ljtzaezrp5c4e", 1280 + "vendor/@awesome.me/webawesome/chunks/chunk.KGWQUM43.js": "bafkreigsbuuihkex7yrv5qpxixvfxnz6c4bzvyajqwzv566uf6vkkgmjf4", 1281 + "vendor/@awesome.me/webawesome/chunks/chunk.KIHB3VMB.js": "bafkreidekp44jyy2irdz7j256bgdlfkd4c4cq4g7zqcwh6d76myhtzahba", 1282 + "vendor/@awesome.me/webawesome/chunks/chunk.KPN3YZ6U.js": "bafkreihrm54vbuh742znjjuck2b4yyl5cpyf4zbifbphtuogi3saeakupu", 1283 + "vendor/@awesome.me/webawesome/chunks/chunk.KPY3CJ6V.js": "bafkreiamamntliha6ppq7wmczunclinp2wjmtiinqjauijlxq4o5juz33m", 1284 + "vendor/@awesome.me/webawesome/chunks/chunk.KTSZTCBE.js": "bafkreiftltl4a7qs7ugwkjpgnpxuqoknkuu3efbuwbdfs4igwtyryrdb5m", 1285 + "vendor/@awesome.me/webawesome/chunks/chunk.KWDPKKFO.js": "bafkreihzxfwibtudowbtgtp32df6j24f7ukr3xzilegya65yjft4csrjyi", 1286 + "vendor/@awesome.me/webawesome/chunks/chunk.KZZR6Z6I.js": "bafkreigvvcktpwgy2vwmbm2gkz5ki5b6vlj6tiixzeozxos5ffgefb2dr4", 1287 + "vendor/@awesome.me/webawesome/chunks/chunk.L573APKH.js": "bafkreifu723fd72jbvjgxfsgf6hlcz2k76qeg6lpyeamxeimswsosqcvwm", 1288 + "vendor/@awesome.me/webawesome/chunks/chunk.L6CIKOFQ.js": "bafkreia6ijugtxxi45s7zaanvvaygwsomczlrivwor2axfjvcohzkwmoni", 1289 + "vendor/@awesome.me/webawesome/chunks/chunk.LBGKEIS7.js": "bafkreibwobunkeevgak7yir6man2drpanmxyse4skqt2trvmazxh44bvhi", 1290 + "vendor/@awesome.me/webawesome/chunks/chunk.LCFSCRUJ.js": "bafkreidlo7257a4juuraotl6czzijvsidzholz27y2opo56upjpnxpcbk4", 1291 + "vendor/@awesome.me/webawesome/chunks/chunk.LH72HXK6.js": "bafkreid7xzfhbbw436ojsadxpiqfd4hjtcnacpu5cby5fxbkl26qnv6c6e", 1292 + "vendor/@awesome.me/webawesome/chunks/chunk.LJ5QDUCY.js": "bafkreig3kpq42ypsoiihruzakqjewqdotvhr4n6yaj4q5q5owszata2v24", 1293 + "vendor/@awesome.me/webawesome/chunks/chunk.LN7M2NWC.js": "bafkreicysvsudlfeqeiwtwujskefrxrqdssvammgmaj26igbz6r4h7c5ka", 1294 + "vendor/@awesome.me/webawesome/chunks/chunk.LRYJ2M5H.js": "bafkreifbp4ilnnnlrrvhxvfvr7bitfy4fp7s2mnge4yltyyg4t2bozjzl4", 1295 + "vendor/@awesome.me/webawesome/chunks/chunk.LY4FQ3ZV.js": "bafkreicbsbn7z5f3gakmoms6netlr42wco3b2scjmjpno5wsc5kpaqda6q", 1296 + "vendor/@awesome.me/webawesome/chunks/chunk.MAFCUMJD.js": "bafkreiemsyxfkno4nowdpujlpgyvcdvgu4pqby36pb5fmjvp5bmv6stp3q", 1297 + "vendor/@awesome.me/webawesome/chunks/chunk.MAHGF7JK.js": "bafkreib2r5qwwtemuj6np6vsqrjxk5dibnao3ev765b7eargatftzzxu5e", 1298 + "vendor/@awesome.me/webawesome/chunks/chunk.MEULE5ET.js": "bafkreibaoositn3rp2ixn6znl2wx4mosvkuapg26dr5figb2sfw3c6pyxa", 1299 + "vendor/@awesome.me/webawesome/chunks/chunk.MEYJNQF4.js": "bafkreigce3scls5i2mgxvoidqeebnwn22sftvch5fryqcc3jb5nd7ygyem", 1300 + "vendor/@awesome.me/webawesome/chunks/chunk.MN256RSG.js": "bafkreihixtldyf2eh6ttn7a76iizv5st6udxc7n4qusxlcmrxqhirbby7e", 1301 + "vendor/@awesome.me/webawesome/chunks/chunk.MNUDSWCQ.js": "bafkreih3nxlimyr7rah33pqllfmugqzvxrcy3juzxafgwztta42vb2icb4", 1302 + "vendor/@awesome.me/webawesome/chunks/chunk.MQLU5KE6.js": "bafkreifpujm33wip6yn4edsarzojqlws7mebdyuab2fdu6iupwdja752li", 1303 + "vendor/@awesome.me/webawesome/chunks/chunk.MQODJ75V.js": "bafkreigxf2udlu7ob6zp6kiavqsvs5c7lbhjwkgj2pihutxy5xka7qzwti", 1304 + "vendor/@awesome.me/webawesome/chunks/chunk.MU3RMA4Y.js": "bafkreicx6n74qm2h3ec4l4ngj2emyyirlqvk4y6hb6d535ucs7v6cismhq", 1305 + "vendor/@awesome.me/webawesome/chunks/chunk.MXHGJIUP.js": "bafkreic72yx77ilk2wcg6tzy5tvvmhqm5xzwn4cak7mnedwmfewbflnp2q", 1306 + "vendor/@awesome.me/webawesome/chunks/chunk.N2TXQSKF.js": "bafkreif27qowm22o2zc6fk6kiduv6gektnor7dtssuvdkf662w4qffihkq", 1307 + "vendor/@awesome.me/webawesome/chunks/chunk.N56ABYYO.js": "bafkreidlfbgmhldtm3hbevgy7gxucapvx5wxu7gjwekulkx44a4hdadjki", 1308 + "vendor/@awesome.me/webawesome/chunks/chunk.NEG6ZBF5.js": "bafkreidtwpk7yynqhdiwalfip3r3rldrcx62bvg6oakfvpr3hbj4mp6u6i", 1309 + "vendor/@awesome.me/webawesome/chunks/chunk.NOITEVBZ.js": "bafkreigyqo7ujvhndrootbj5nz5cumvthdihvlnsn34hoeea4zxvcwhuym", 1310 + "vendor/@awesome.me/webawesome/chunks/chunk.NY2PQ35L.js": "bafkreib2bg3ukfziz72y4ixsu5sl5th7e6dktyxsf5tdakrhug4ojbo2aq", 1311 + "vendor/@awesome.me/webawesome/chunks/chunk.O2ZI7H76.js": "bafkreibrxvyjnqqehnxchlauebnfzqqeivuktg6zxhsjl4s27udngehih4", 1312 + "vendor/@awesome.me/webawesome/chunks/chunk.O6IZ4I7T.js": "bafkreih3a63fjdmibky4bveuyfuzjqmxiwsoso22wsou7uttrgkmaqztga", 1313 + "vendor/@awesome.me/webawesome/chunks/chunk.O6YZRY24.js": "bafkreib4npddpucqtgyi4ez3ul7ppaon7zkedtqz3a5lb3axjeueklhddu", 1314 + "vendor/@awesome.me/webawesome/chunks/chunk.OR2Z2YVD.js": "bafkreifubtqivmtuat7wacajdzcrmjy2pxczbzsn37lx3irivj5ldjofbm", 1315 + "vendor/@awesome.me/webawesome/chunks/chunk.OWZDFOUS.js": "bafkreiamwvjlkk5oom7jhxmn5xsdbuwz6mggxfzky5fs4giy2yqfw4chfe", 1316 + "vendor/@awesome.me/webawesome/chunks/chunk.P7AOIZJ4.js": "bafkreidjazye4hk56antt5ixl4o4ou4bkjdmb4g6ynyx3blrjkk32tbxvi", 1317 + "vendor/@awesome.me/webawesome/chunks/chunk.PM5JFREE.js": "bafkreigf7b35vd3ilzuismpnragb27ctzejumez6qqudu4kpgou3aonqpm", 1318 + "vendor/@awesome.me/webawesome/chunks/chunk.PTIYPIAV.js": "bafkreiaf7lwgyujlyeceirum3yhtju6hn23aydt6e53xxezkqlihnjvi4q", 1319 + "vendor/@awesome.me/webawesome/chunks/chunk.PVHZKPEP.js": "bafkreiauikg457ohrouviowtzuh2g7w6ye76skxldusoizg2dc3vnb5osi", 1320 + "vendor/@awesome.me/webawesome/chunks/chunk.PWJU7FNZ.js": "bafkreidvmnvc75dxjeo5c2e65coghpannrhf5d5mzpru5m4dmc2xs547tm", 1321 + "vendor/@awesome.me/webawesome/chunks/chunk.PX3HMKF7.js": "bafkreifu6lnrts3iyzoxufvf7br4y52fwuaymmzbfhvk6u4zjmhqdfq44i", 1322 + "vendor/@awesome.me/webawesome/chunks/chunk.PYOML3LA.js": "bafkreidwwwggekys5oz7rm7vfzotl4mcx22yyxizedqtvwvvssmvuaoxwa", 1323 + "vendor/@awesome.me/webawesome/chunks/chunk.PZAN6FPN.js": "bafkreicqqqrep7p23efyambepafk3oqwj7vu7fckkws7jbivgsj6m43zve", 1324 + "vendor/@awesome.me/webawesome/chunks/chunk.Q4MSABZB.js": "bafkreicxssqcdmy3dulheub2k24tcp3wpnbyayaf6spwch55bgzlehiwry", 1325 + "vendor/@awesome.me/webawesome/chunks/chunk.Q6XMGFWJ.js": "bafkreig2qrl522osivpqel5j73c6hrnajzrgvgtvul5vyxoehbnnokwlqy", 1326 + "vendor/@awesome.me/webawesome/chunks/chunk.QABO5RGQ.js": "bafkreibrisfsfxloq3fetfwjkpjornoeushycic4oycnt3w47tflevrski", 1327 + "vendor/@awesome.me/webawesome/chunks/chunk.QE6ZFROZ.js": "bafkreifk4qymvijsxsusp454pkm4fm2tgjgg3gg7pzk2o4usxnp7d6atji", 1328 + "vendor/@awesome.me/webawesome/chunks/chunk.QEVO6VRC.js": "bafkreihaqbvxv2mvwlmsul72fp7jk34itwsgxuzkwpfh6x3pej3s26znji", 1329 + "vendor/@awesome.me/webawesome/chunks/chunk.QRWQT2VJ.js": "bafkreiclr7tj6uy5m2ldbmx34q2hvbticagrp2ptyiilmaladtyk43tgdy", 1330 + "vendor/@awesome.me/webawesome/chunks/chunk.QVGFPIBF.js": "bafkreicvzs6yqrdt6uzuqx2dodexae4fntw24diipkld3d7mt2aaotzil4", 1331 + "vendor/@awesome.me/webawesome/chunks/chunk.R3IVSP5N.js": "bafkreibmhgytmq6ynphi6b3csjj4sly24hzav7tjbznurwmk3uc6gsnk4u", 1332 + "vendor/@awesome.me/webawesome/chunks/chunk.R4DI7TYR.js": "bafkreiaoefvh2uaztu54qdgp3bxo5kiyboykvjodxevlfuneqznbjis5om", 1333 + "vendor/@awesome.me/webawesome/chunks/chunk.R7QX4M6R.js": "bafkreidqzomkoohewzetqrjlhmtjsn7fwh5sgbry2aku7rknssivtqypfy", 1334 + "vendor/@awesome.me/webawesome/chunks/chunk.RF7KCC7B.js": "bafkreicm25vw5crjrjndsffgcadozp5kvrlgl34j3u67u2xj2kguhjunhq", 1335 + "vendor/@awesome.me/webawesome/chunks/chunk.RMZ7BVDM.js": "bafkreidgxmd5shb7awi6qsqi4kyqraygbbfhciouo7ntemi62pfv3heqrm", 1336 + "vendor/@awesome.me/webawesome/chunks/chunk.RSUSAXIB.js": "bafkreih56qf5sw54okcx7ezpatunshqs3hax6z7bfxe6ykntdrgotw22bi", 1337 + "vendor/@awesome.me/webawesome/chunks/chunk.RTFTF4YY.js": "bafkreiahigvmfugijla72qfdouksao7yugtzo22522rq3m5vfuobxphl5y", 1338 + "vendor/@awesome.me/webawesome/chunks/chunk.S6RZOJNM.js": "bafkreie3v77na4ejkjnzmouc2qujc2aqoypff25w3hmpg5glsqvvwc2wky", 1339 + "vendor/@awesome.me/webawesome/chunks/chunk.S7Z4ACD7.js": "bafkreicjcxrmturhqo7seas4i3f3pkuo4ff7xsdkr2eh2ywxxsnwjpqsye", 1340 + "vendor/@awesome.me/webawesome/chunks/chunk.SBPG6HJS.js": "bafkreihrycruhkch7ueg7tga6dr6di6nfrth734ulxb2ywyldwce2ovfya", 1341 + "vendor/@awesome.me/webawesome/chunks/chunk.SDDRXMOC.js": "bafkreiaxhcrgik7zlmmksu7bd7swjunmrkhredwyfjuwsyxe5dm35foxkq", 1342 + "vendor/@awesome.me/webawesome/chunks/chunk.SJ66RGM3.js": "bafkreifriagspyonaerub3i2l5mzu7g3kl2xhklqgabcadfrtxn25l4rrm", 1343 + "vendor/@awesome.me/webawesome/chunks/chunk.SKLR37OM.js": "bafkreiduffv4t45mo2mjt7h6pcrmcyscdzgob2mllqrt5knghpcuvsm3lq", 1344 + "vendor/@awesome.me/webawesome/chunks/chunk.SUZGY3IK.js": "bafkreiefajqc7vu2etfkp4qpzk7fprmqpmfc7mu2siuxtay3dzuzgzeq2a", 1345 + "vendor/@awesome.me/webawesome/chunks/chunk.SY6FPYGW.js": "bafkreid3bonxd2zlly2rvomwfaaxctthh4qfgkarhmqvzeux3f3oharlgu", 1346 + "vendor/@awesome.me/webawesome/chunks/chunk.T3OVPJUT.js": "bafkreicsatd4nrz37vnegemm7rwgwulksakczesd6m3euy7kjfknp3rsti", 1347 + "vendor/@awesome.me/webawesome/chunks/chunk.TKLADXWA.js": "bafkreihustbdiho5hlxfalnabmpojd7qwx2lwd3m6psyp27dawn2dpkapy", 1348 + "vendor/@awesome.me/webawesome/chunks/chunk.TZ4DHKTK.js": "bafkreibrwcvpkcaon2nzg2udy5my6r7yxete5lr6btqenlboujm5et5wyu", 1349 + "vendor/@awesome.me/webawesome/chunks/chunk.U36KZLSQ.js": "bafkreihtphvy4zz2bsvpw2k2yomzipeqkelpiz7q4asnoe7m5pydslkuey", 1350 + "vendor/@awesome.me/webawesome/chunks/chunk.UAI2IRMW.js": "bafkreifjjgobluqsz6e25ispcjlwa6n43qkownqvxamedrzzbhrxx2awfi", 1351 + "vendor/@awesome.me/webawesome/chunks/chunk.UCSQZ74E.js": "bafkreict2k5ysy4wpgtbp36xybr47ht7devtjojm7bwluj6gsbi6ggqsfi", 1352 + "vendor/@awesome.me/webawesome/chunks/chunk.UF4WDITO.js": "bafkreic4uvzazflcncsw6anbeboezflhf6e4pvct377f6mcvf3ana4g6uu", 1353 + "vendor/@awesome.me/webawesome/chunks/chunk.UGUGWXGF.js": "bafkreifj2gee5ijwt6zcee46ylkzf342m2yjqirfgajvlsr3omyt4253lu", 1354 + "vendor/@awesome.me/webawesome/chunks/chunk.UQMJINZU.js": "bafkreigbtnqb3bqdw56eugrhiqovvlkefotksbwz4mu54eh376gimutjay", 1355 + "vendor/@awesome.me/webawesome/chunks/chunk.UQT7EQ5A.js": "bafkreigntictydktnfjm3nqw4qudr5y2zux4ayffjhthmigckeroedaxbq", 1356 + "vendor/@awesome.me/webawesome/chunks/chunk.UV6ZR4VK.js": "bafkreiefyvp5dayv4xdty24l23hbwhy5p76fyjriebgvk7772wuoulpvdu", 1357 + "vendor/@awesome.me/webawesome/chunks/chunk.UVLZVEH2.js": "bafkreidw7q5l5lfx6ip3qmxl5bsingvvpbjds3cxh6phgz4vwns3erisnm", 1358 + "vendor/@awesome.me/webawesome/chunks/chunk.UYB2BRKW.js": "bafkreicozi7gtgpmzdmg7pkbukyejrqajlelmmtvame7plcwdmnxw3dbbi", 1359 + "vendor/@awesome.me/webawesome/chunks/chunk.VAPVXDMF.js": "bafkreian6vjczzpd7whn5xdujwj7yagx6pi4bl5isfapakkohab5lpdari", 1360 + "vendor/@awesome.me/webawesome/chunks/chunk.VC3BPUZJ.js": "bafkreiarhwwu2e6ta6mk5arkcbao7ljth5afi26lpx4mmuvfor55z2z5gq", 1361 + "vendor/@awesome.me/webawesome/chunks/chunk.VLBSOQPL.js": "bafkreifk6lcadwkwvjmteokv3gotprxm4ckmwzirnpdjxjatluztzldx54", 1362 + "vendor/@awesome.me/webawesome/chunks/chunk.VNSN2ILM.js": "bafkreig4rkwyiipg7p5la43ijkrcycjzyw4wzwicavz7tbqpxq3udlfx6y", 1363 + "vendor/@awesome.me/webawesome/chunks/chunk.VQZ46MYI.js": "bafkreigtawo5kjwju3a3cmdho5uk5f2loa4ul7p2nodip4rsw5rj5szkd4", 1364 + "vendor/@awesome.me/webawesome/chunks/chunk.VVYVBQI6.js": "bafkreidush4e36n2eoplf5jkkakctk2dmt2rsxtozeksv575bjbhvu6hse", 1365 + "vendor/@awesome.me/webawesome/chunks/chunk.VYJK6KHT.js": "bafkreibz4e7nwqthjeh7pxqk6uxipa3hur2wesu2jtkuwa4ex3xzpgn3ei", 1366 + "vendor/@awesome.me/webawesome/chunks/chunk.WAPTDIMR.js": "bafkreicy5xosavihpw3osuoibqlquqmjqeietuvrliqyqtfrkkm5bpixpq", 1367 + "vendor/@awesome.me/webawesome/chunks/chunk.WCW2R3HB.js": "bafkreiho3pyhskvydfvd6y6xbkfcugkf43fk74huwsdnw6nttcbxtdpfmu", 1368 + "vendor/@awesome.me/webawesome/chunks/chunk.WDIIGUNP.js": "bafkreicng4a3kyfrcejp6bifei4zxmo4vvczwniuumtcpakpz73cpo67vm", 1369 + "vendor/@awesome.me/webawesome/chunks/chunk.WF4CN2K5.js": "bafkreifzhgnnczhyhclm3nlcd56pj7y5y47bhzm6gklvsnne3d2f3apclm", 1370 + "vendor/@awesome.me/webawesome/chunks/chunk.WGFDW2LC.js": "bafkreif4dr6mbrijmiksqnam5ihj5tc6giq7ptjsrfjruwbqz5qa3lt7w4", 1371 + "vendor/@awesome.me/webawesome/chunks/chunk.WKPBV2Q3.js": "bafkreibzmof3os5dsegb55rc6gkyd4baao3tsyxqhjo6a6x45ppc7nofsq", 1372 + "vendor/@awesome.me/webawesome/chunks/chunk.WKX3BKNK.js": "bafkreifvdqsmrrty3xohgdupy5sh5zwkmin3465ert53pk544l4iff3fyq", 1373 + "vendor/@awesome.me/webawesome/chunks/chunk.WL44YHTM.js": "bafkreifsja7qcd53a3yppqkrykcqzhg2si4t5toznmejxcoszjmoqe7bj4", 1374 + "vendor/@awesome.me/webawesome/chunks/chunk.WXXUBUUK.js": "bafkreiax5i6s37lxud3qoxwkdnqobu2vlxzwncwvhgc3hk4m7iaj3xuvqa", 1375 + "vendor/@awesome.me/webawesome/chunks/chunk.WYNTFJHW.js": "bafkreiatqatsm7hq2pmdvbyznnf5cuc7uz64wf24d6ovugqcas2vl5rhme", 1376 + "vendor/@awesome.me/webawesome/chunks/chunk.X55YNZ3B.js": "bafkreiatjdscit42qkgm6g6kvxxzs34hvqqfixpswdbun6eqiii26pcwoy", 1377 + "vendor/@awesome.me/webawesome/chunks/chunk.XB4F2PV6.js": "bafkreicmxdfcy53zt4gkzo6x4brdelvcus4m4utubpnxwpkd25d6qn6qxy", 1378 + "vendor/@awesome.me/webawesome/chunks/chunk.XJOHOSCS.js": "bafkreigy3vwiey3tndctflexjibs2klmkjrbjw3dfdseimaoiknkmzmbje", 1379 + "vendor/@awesome.me/webawesome/chunks/chunk.XMNYABWY.js": "bafkreiaxypv55bblnh6cfx3s7t4hopib5fdkcipy5jnkawm6hrujjbqavi", 1380 + "vendor/@awesome.me/webawesome/chunks/chunk.XUYARZ4P.js": "bafkreiedbt62y7aj7deyxg7l3wftxs3vnftvjgfxyw5dlvdoff6blmrkcu", 1381 + "vendor/@awesome.me/webawesome/chunks/chunk.XW6BKGGI.js": "bafkreia2smahbgx4mky7q7ledpoqscfyscmskeaqgueh5fveweh5mlb4me", 1382 + "vendor/@awesome.me/webawesome/chunks/chunk.XW6K5DFW.js": "bafkreib7imrjv7fpa7rxan6y5kwrevl7sjfvcj2cuxqekmlcres55rfdgu", 1383 + "vendor/@awesome.me/webawesome/chunks/chunk.XZPLJ4VW.js": "bafkreifwcnidtuy7h26oxzofonrfbpbrbwncwmyxtdmyrdspxycki4f4ci", 1384 + "vendor/@awesome.me/webawesome/chunks/chunk.Y2DUNANZ.js": "bafkreif34uou6yitgbq6n3ivfy6fm7sp6rr2f4jawzebf66x24fs6kon6q", 1385 + "vendor/@awesome.me/webawesome/chunks/chunk.Y2L6BJPS.js": "bafkreigwjjii7m5bu626grh5md2we3eerpn3aolgedgnqybj2e4yn465n4", 1386 + "vendor/@awesome.me/webawesome/chunks/chunk.Y4J6QIYJ.js": "bafkreidwseo3hju64oi5vteuvusjozmcgtj2j7revswmkp3ufxtlajn4aq", 1387 + "vendor/@awesome.me/webawesome/chunks/chunk.Y4KJ3CGW.js": "bafkreienppj4rjrmlsflouvtmy6liutkzkz4zqkxvwnufwki4quhr36pqi", 1388 + "vendor/@awesome.me/webawesome/chunks/chunk.YBFCQDTA.js": "bafkreibudi7lwu7crirhopvv6gcxqknmya3imu2pgecsyjtmi2si75ka44", 1389 + "vendor/@awesome.me/webawesome/chunks/chunk.YDQCS2HK.js": "bafkreibzzfu7fpgv7g7dzr4fgowkkqevq53cokf7lhfztgqrembefyqbd4", 1390 + "vendor/@awesome.me/webawesome/chunks/chunk.YKBP25RU.js": "bafkreiak26kk2qj7s46n5zs6peuckb2agvlrmyptocrnmxof5t5f4pm73m", 1391 + "vendor/@awesome.me/webawesome/chunks/chunk.YRQJ7CY4.js": "bafkreihdyyyjnxyh3z3yovvq5lofzbbt2x6obkj54u5lvmlf3fmithdw5y", 1392 + "vendor/@awesome.me/webawesome/chunks/chunk.YRW2OFXY.js": "bafkreihqhj5mdtdzovrzlaf7ggpv7c5lntlfcsjpwxlgyxakedcprgf32a", 1393 + "vendor/@awesome.me/webawesome/chunks/chunk.YTFJFTCS.js": "bafkreie2xnp34bvismctai2rczvml5mnxiqxmnvxo657ctm6xkjemlbpwe", 1394 + "vendor/@awesome.me/webawesome/chunks/chunk.YVNDTHHL.js": "bafkreibcp3asi3wzetk3xdhmmzpovtjt5dlbyqltlc5lqgdo2l7otk2kgy", 1395 + "vendor/@awesome.me/webawesome/chunks/chunk.YY6Y7UJD.js": "bafkreidnhnq3z4i7ljehdlcaae65salkjv3yqepkrtnbprbyvzr7u6dyla", 1396 + "vendor/@awesome.me/webawesome/chunks/chunk.Z73FKN6X.js": "bafkreiavsmserakjb2xin5kyfcmk46wqqszbqdnfcpftxkjkpflyzmzbfy", 1397 + "vendor/@awesome.me/webawesome/chunks/chunk.ZDQGX6GG.js": "bafkreigz26bkt235vatwhih6o7hbu4v7cwsdkw5ud7nrpcdgdqgomoibym", 1398 + "vendor/@awesome.me/webawesome/chunks/chunk.ZJAKOEXX.js": "bafkreid5zygopjpnalbjej57lpf2hfh5lhb6qm2ygtmcht7pcicxu4jhbm", 1399 + "vendor/@awesome.me/webawesome/chunks/chunk.ZJRB7VPY.js": "bafkreiem74wywryec4ynbexeqzh7d3mtntlw2p2aaaqqavujh67fwn32kq", 1400 + "vendor/@awesome.me/webawesome/chunks/chunk.ZSEFTQAO.js": "bafkreiftnxg6kouohn4bsxpa4hhosvggnsig4mjxae7zg4w5zrhx6kctbq", 1401 + "vendor/@awesome.me/webawesome/chunks/chunk.ZT4OZS6F.js": "bafkreic2ik3j4plp7sabcxqxnlmltdmzhcvrjjl7qwfnd77watvnrltunq", 1402 + "vendor/@awesome.me/webawesome/chunks/chunk.ZWQCGLB5.js": "bafkreievlaom6spuvnyznoyfklrrrapu76bzpf4m5eatac23lbvi7ifgeq", 1403 + "vendor/@awesome.me/webawesome/chunks/qr-creator.es6.min.6HXLA5WI.js": "bafkreiftravo47e7wyaneuqvxptskd5suwu2xxymlllciof2gy6zcjyqk4", 1404 + "vendor/@awesome.me/webawesome/components/animated-image/animated-image.d.ts": "bafkreieariaky7ojuxauamspal4jdxfxhnpy7zzwydzkal7b7ev6z2om7u", 1405 + "vendor/@awesome.me/webawesome/components/animated-image/animated-image.js": "bafkreibwyrdukgrfqpfm6qe4ggcpesy24ra4nzmzicxliyzzc3nkbchnri", 1406 + "vendor/@awesome.me/webawesome/components/animated-image/animated-image.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1407 + "vendor/@awesome.me/webawesome/components/animated-image/animated-image.styles.js": "bafkreifiani2sy3yssc47ux4ajrc25khkprqpl37bg3jmpbi4nswrcyxnu", 1408 + "vendor/@awesome.me/webawesome/components/animation/animation.d.ts": "bafkreicshs3mz3zggiq52kespnmcxco2jbkyyx7hb2fdqc4aux3mxrk4v4", 1409 + "vendor/@awesome.me/webawesome/components/animation/animation.js": "bafkreifb2qq5pc444f4kppx7nf5ssazvtrfmm6kqo6426ybmefla7ysuqq", 1410 + "vendor/@awesome.me/webawesome/components/animation/animation.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1411 + "vendor/@awesome.me/webawesome/components/animation/animation.styles.js": "bafkreibkvhtqxsr4rcemylqrvnsp6baqhskk4dyi7bxioo4wkrqdbgh5ja", 1412 + "vendor/@awesome.me/webawesome/components/animation/animations.d.ts": "bafkreigmx7u3irifnctv6vkp5rv4kd5bmbnkbseykjl3rxbdptmyf4vtzi", 1413 + "vendor/@awesome.me/webawesome/components/animation/animations.js": "bafkreiauh3rch3im6lqfg2ywnzizyowufwgkbopd5chylv6v6ayqf7lzru", 1414 + "vendor/@awesome.me/webawesome/components/avatar/avatar.d.ts": "bafkreidxws72i7mk5vzijsidqpujquiyqaow4y6gymg7yujdse7i3uh4si", 1415 + "vendor/@awesome.me/webawesome/components/avatar/avatar.js": "bafkreidkxttpphjlfm6j2loqrligggpnw2lked6yv7djrhgqklphtuft6q", 1416 + "vendor/@awesome.me/webawesome/components/avatar/avatar.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1417 + "vendor/@awesome.me/webawesome/components/avatar/avatar.styles.js": "bafkreibgnd7hixrgpev7dvpzdgaiwrewrzzohjcmyc65mfd6hxqxt2izqi", 1418 + "vendor/@awesome.me/webawesome/components/badge/badge.d.ts": "bafkreigfgopwutduh3zo2dn4ob7ruzmrncswwwuizwwx4nj3rdr3loz7he", 1419 + "vendor/@awesome.me/webawesome/components/badge/badge.js": "bafkreignihsjyycg3bypnmlugokzs6dugq23x42gqcbiajwmp6q2ieatse", 1420 + "vendor/@awesome.me/webawesome/components/badge/badge.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1421 + "vendor/@awesome.me/webawesome/components/badge/badge.styles.js": "bafkreigqkf2ldzd5ktzsua22sbnoikujufgqlazfuhotvmaexc5hjhaf5y", 1422 + "vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.d.ts": "bafkreiajprhat7mc36655hpr4jmfm53nicax24bssuz4fuith6uxfuy2jq", 1423 + "vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.js": "bafkreicyborfnj5fulqbuixoh5fnflzmpzcu5lxo32g6gpqhb47gkunvg4", 1424 + "vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1425 + "vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.styles.js": "bafkreihmo3mid53uoxxrnb5namvu3zpgvvzfs3adwmhkmvnw4pxruftaym", 1426 + "vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.d.ts": "bafkreihujg3uk22hlfwf5lk6qf6iovxwydx5xkmq6zb23jptlklqbwpq4u", 1427 + "vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.js": "bafkreifjxszy4e5k7h6orrplg6dllkfdqezizzrn5svstchctcvysimx3e", 1428 + "vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1429 + "vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.styles.js": "bafkreig4gfjg3mowrlt56faai5qbq74kusz4jxhc742e32jshidbnk5eju", 1430 + "vendor/@awesome.me/webawesome/components/button-group/button-group.d.ts": "bafkreifdlvo3lnfzoedez6fgetr74xzeca5a43mc7apxf4lz5ihbo43574", 1431 + "vendor/@awesome.me/webawesome/components/button-group/button-group.js": "bafkreiajbvdz5h5pzndmvurrlbupcsmbec3ig7xobibbggz6ci4dgtvp2y", 1432 + "vendor/@awesome.me/webawesome/components/button-group/button-group.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1433 + "vendor/@awesome.me/webawesome/components/button-group/button-group.styles.js": "bafkreic3hbxhzns7zedtaxcdt75tvqzli234izk5wa5x23qw5uuyweg2la", 1434 + "vendor/@awesome.me/webawesome/components/button/button.d.ts": "bafkreig3fn56lbrvo7esxlhoiu6x3wwld56bbokynhhyl7tfh7dz2rg5y4", 1435 + "vendor/@awesome.me/webawesome/components/button/button.js": "bafkreigp3ja63ebgldcihmqz5ywy6xvukffdhuflekmawll2ic6telbida", 1436 + "vendor/@awesome.me/webawesome/components/button/button.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1437 + "vendor/@awesome.me/webawesome/components/button/button.styles.js": "bafkreierbmr5yzi5c7pkqwb3mfkluecoxs553wfgwcagt5fmdabfzbfu5u", 1438 + "vendor/@awesome.me/webawesome/components/callout/callout.d.ts": "bafkreifmcinw6b35ochodfzrmhq2wxbhpwoynx7rsbimkckgxisy4sviza", 1439 + "vendor/@awesome.me/webawesome/components/callout/callout.js": "bafkreibbjtkzj5oblsch7mryi3axcwvdt4pjvysnrt543xburfvurngh3e", 1440 + "vendor/@awesome.me/webawesome/components/callout/callout.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1441 + "vendor/@awesome.me/webawesome/components/callout/callout.styles.js": "bafkreigc4oehubds6cuktm6si6d46ctyr24oomdu6mq5cokfw6kqmxh4xu", 1442 + "vendor/@awesome.me/webawesome/components/card/card.d.ts": "bafkreighuk57eunadl3m6u6kfcovfijxvq4hdg4mfdsq5z3vznu4x3miie", 1443 + "vendor/@awesome.me/webawesome/components/card/card.js": "bafkreihw5vqbzylofilsamvuyteco4hi2s7mjhbgspgh3xvkaovmpvtw44", 1444 + "vendor/@awesome.me/webawesome/components/card/card.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1445 + "vendor/@awesome.me/webawesome/components/card/card.styles.js": "bafkreig2jcmu4t2bcpsgerhfrxwuhuvw2cvilh4xau7j4wchccyrf6s2mm", 1446 + "vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.d.ts": "bafkreih3ys7e6xx7hso4nbl7jvyp5ucwnyn7mrxj5zh7opdbe3ll2isnya", 1447 + "vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.js": "bafkreidwfe7q2c22t2wouopl2luor7seblx5vj6wsy6pmzcbzswzamtrha", 1448 + "vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1449 + "vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.styles.js": "bafkreibaak5wtxaevwcfecw5knqaxafj67uxyk75mqwysvr6tsre7d6s4a", 1450 + "vendor/@awesome.me/webawesome/components/carousel/autoplay-controller.d.ts": "bafkreig57oajn2qqu4nuycctdvmyghqmkrcppwpfa54e23map7hlve6f7m", 1451 + "vendor/@awesome.me/webawesome/components/carousel/autoplay-controller.js": "bafkreidosc2ye65zuuzu57dnnnezauw3wxpd4vxoezxcla5wu6fraxzefq", 1452 + "vendor/@awesome.me/webawesome/components/carousel/carousel.d.ts": "bafkreid42zh4uyet4zfpuj43libmracrmanhpkwegou2n2jdrn25bsoyxu", 1453 + "vendor/@awesome.me/webawesome/components/carousel/carousel.js": "bafkreihhltp4eifrnibjluklpuibx4agz3yy6i7tmcd5jm3pgmbodz3rjm", 1454 + "vendor/@awesome.me/webawesome/components/carousel/carousel.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1455 + "vendor/@awesome.me/webawesome/components/carousel/carousel.styles.js": "bafkreidsh5y3gzapda4nlu4py3jhto3ytmgbv64phxx65ukinfkilxd5sa", 1456 + "vendor/@awesome.me/webawesome/components/carousel/scroll-controller.d.ts": "bafkreib5nfygx7qzmnmiv7eh7nibit2wp6qlm3lypx4neoqlicflh5ifmy", 1457 + "vendor/@awesome.me/webawesome/components/carousel/scroll-controller.js": "bafkreibxwgseq2vbeyekfbaheg3sykgn6pa4u2y3icfnvqihyr3z7dolca", 1458 + "vendor/@awesome.me/webawesome/components/checkbox/checkbox.d.ts": "bafkreibooi5idygncuinjdcks2jgvjsaxym6lufblijigl3dniy2ucipm4", 1459 + "vendor/@awesome.me/webawesome/components/checkbox/checkbox.js": "bafkreihdxh3z2vctgra4zcubnkdzhm2rmvkjjus6r74xlgwn4wv2trmqam", 1460 + "vendor/@awesome.me/webawesome/components/checkbox/checkbox.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1461 + "vendor/@awesome.me/webawesome/components/checkbox/checkbox.styles.js": "bafkreic35mt4udjkryd66ocomnstzzfmierbcqvvnrp63kgelvwrjvc6wu", 1462 + "vendor/@awesome.me/webawesome/components/color-picker/color-picker.d.ts": "bafkreie6guyuuqg5q4wpu53dlrzkqfjqypmvpys7742h6ukbfxt6kuzeoq", 1463 + "vendor/@awesome.me/webawesome/components/color-picker/color-picker.js": "bafkreigwmwdr4oj5lpj5lg7hsb5525qbx2d5nezxrct63ho3zbbh5zjzxq", 1464 + "vendor/@awesome.me/webawesome/components/color-picker/color-picker.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1465 + "vendor/@awesome.me/webawesome/components/color-picker/color-picker.styles.js": "bafkreieeluc63sd3dwlevqm2n5xfhamzndqtac7tjo4toqdjdufqjixbpm", 1466 + "vendor/@awesome.me/webawesome/components/comparison/comparison.d.ts": "bafkreiamjx646fmatqpbnz2ckzincyhxpmljosydhp2bjab7ilmot3i2km", 1467 + "vendor/@awesome.me/webawesome/components/comparison/comparison.js": "bafkreiclpf67tidh6lpkgzqx47lucnbgyc7uygjpohvzmjkdo6c7dpxwsq", 1468 + "vendor/@awesome.me/webawesome/components/comparison/comparison.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1469 + "vendor/@awesome.me/webawesome/components/comparison/comparison.styles.js": "bafkreihdcdby4ip7rpsebie3jtnjgmsuwvqbfnzirzri5egkpaqsssdtjy", 1470 + "vendor/@awesome.me/webawesome/components/copy-button/copy-button.d.ts": "bafkreihgsjzywvaqurpec2srbtyu7vqgc72cggptmruxgrok7m3jsylmea", 1471 + "vendor/@awesome.me/webawesome/components/copy-button/copy-button.js": "bafkreihmg6mc6a575dvixupbxpofhhwq2ihu7basmlacfq2tlfpzrczhvm", 1472 + "vendor/@awesome.me/webawesome/components/copy-button/copy-button.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1473 + "vendor/@awesome.me/webawesome/components/copy-button/copy-button.styles.js": "bafkreia6ytzzqlxl7oq23cuhcltqwx645uvwlnx3zd32tnc2a3zhukdtq4", 1474 + "vendor/@awesome.me/webawesome/components/details/details.d.ts": "bafkreiaphenodn4trovo5imae2m4u3lfcb3s2rw3btf3inrzbu5z4mgo7q", 1475 + "vendor/@awesome.me/webawesome/components/details/details.js": "bafkreiaxpgq5ezta4oo64xmimqscx5czp3dorxhkkzldyn7qdbiyuuyb2q", 1476 + "vendor/@awesome.me/webawesome/components/details/details.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1477 + "vendor/@awesome.me/webawesome/components/details/details.styles.js": "bafkreicizc6e5zubcuwqskbcnfnrafbk3eueyheralzfn7omfsnlab3hbm", 1478 + "vendor/@awesome.me/webawesome/components/dialog/dialog.d.ts": "bafkreibkzzxloo54v6qq73tlobbgmbcwo5q3kyehpcosa7bbqux352fugy", 1479 + "vendor/@awesome.me/webawesome/components/dialog/dialog.js": "bafkreietv5k4ojft7lpwcpfbx2p6q4n2wchddsnrrk4nfb7f33ysz7rz6e", 1480 + "vendor/@awesome.me/webawesome/components/dialog/dialog.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1481 + "vendor/@awesome.me/webawesome/components/dialog/dialog.styles.js": "bafkreiebnpvlsilekdlk5zxc6ulmwn52prmekmafbujynihjy4aiw2xoki", 1482 + "vendor/@awesome.me/webawesome/components/divider/divider.d.ts": "bafkreiasjxfqrs37vidzmvgjpxscxo574mof7zd2nyu72ring45cjehdzq", 1483 + "vendor/@awesome.me/webawesome/components/divider/divider.js": "bafkreif66xr4sf6edtqhbpyf34ltr3zsyo3msv7fftcjvhpk2raobyxkwu", 1484 + "vendor/@awesome.me/webawesome/components/divider/divider.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1485 + "vendor/@awesome.me/webawesome/components/divider/divider.styles.js": "bafkreien5s7joejubzyguefvpd5lu7fhoxbtfwxnyfy74n3ryno67uc6pa", 1486 + "vendor/@awesome.me/webawesome/components/drawer/drawer.d.ts": "bafkreiesaqoic5ebifv5ztskgzqhnrh6vsofldnh7zietzceb2pyucfche", 1487 + "vendor/@awesome.me/webawesome/components/drawer/drawer.js": "bafkreifll4knw33fpacy34t76u6ayujlrzvslykgngabq42gspfxdva5s4", 1488 + "vendor/@awesome.me/webawesome/components/drawer/drawer.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1489 + "vendor/@awesome.me/webawesome/components/drawer/drawer.styles.js": "bafkreibeqxgrpjhbzmtoua7ehslzmpbsivbqdxkaet224kkcg6gxmtrdjm", 1490 + "vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.d.ts": "bafkreig2r66tnl52czieanjoo5fxjjkfxdhuzywist7lhrhs3luyjhzecy", 1491 + "vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.js": "bafkreifvdkpjljowv4jy7cnccx4w53skr4evw44yxjzua5httbdmtejmge", 1492 + "vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1493 + "vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.styles.js": "bafkreicetwzb7rt2amk72ybsa3qnyqe5mcritm4nczkximur2be6qgmp2y", 1494 + "vendor/@awesome.me/webawesome/components/dropdown/dropdown.d.ts": "bafkreiae5vevvliao3r7hs57fjjmoqs4cgaq2kb5nr7eumg6tnthovsatq", 1495 + "vendor/@awesome.me/webawesome/components/dropdown/dropdown.js": "bafkreiamepjn3qs5ouqnexbtgvgjakt2exbdiyyhmucel62wxwbccwwthi", 1496 + "vendor/@awesome.me/webawesome/components/dropdown/dropdown.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1497 + "vendor/@awesome.me/webawesome/components/dropdown/dropdown.styles.js": "bafkreiajzipnvarqejtycwhwxwu7s73xpabz7uzd7qdkms7ygoonfq7jui", 1498 + "vendor/@awesome.me/webawesome/components/format-bytes/format-bytes.d.ts": "bafkreibh4dxzrejmmvlvvzb3thj4qv6xfo5n23lgqz23jmfvdymjmtw6xa", 1499 + "vendor/@awesome.me/webawesome/components/format-bytes/format-bytes.js": "bafkreibvyfge4ogeyzj3vwab3rjmyg2rjls2tdmurvkyxsz4noaojfpdly", 1500 + "vendor/@awesome.me/webawesome/components/format-date/format-date.d.ts": "bafkreig42gqmwesk4giydjabutalhz5ni5k2llomxehjm4ehnqxjpnvxty", 1501 + "vendor/@awesome.me/webawesome/components/format-date/format-date.js": "bafkreidudgvnoapxa6gr5ltnex3t5g3f5lpqdsifjddl6gzywprivu3rti", 1502 + "vendor/@awesome.me/webawesome/components/format-number/format-number.d.ts": "bafkreib35ux23ucux4ems5vboiq4hfmlz5d2oy52jedrbt33kiqfda6lxi", 1503 + "vendor/@awesome.me/webawesome/components/format-number/format-number.js": "bafkreici3ypp332hpunr26daemh7mvuw7y2cfatsvf2ujwhcnalyptm35m", 1504 + "vendor/@awesome.me/webawesome/components/icon/icon.d.ts": "bafkreidokesjdw2qfdiutotzehpwfg7fuskz7b2suu2ces72wrd34lqklm", 1505 + "vendor/@awesome.me/webawesome/components/icon/icon.js": "bafkreif3e3ivlhtc5txztzv5qivv3w4fgwb5gos5pujq4dx55b6m3gdl6i", 1506 + "vendor/@awesome.me/webawesome/components/icon/icon.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1507 + "vendor/@awesome.me/webawesome/components/icon/icon.styles.js": "bafkreiggnrecvrr5ff53rtrd62qiykf2lqnxvyghfhvrrdskhqhymxia4a", 1508 + "vendor/@awesome.me/webawesome/components/icon/library.d.ts": "bafkreib5kprn63zzzirlsmbm3mtpclb54bhaycmk7opjhv55cwiopaqbeu", 1509 + "vendor/@awesome.me/webawesome/components/icon/library.default.d.ts": "bafkreib6ldgqkunxh76mkawycxprmah6qalja4veu2pu5gej4aot5ke4by", 1510 + "vendor/@awesome.me/webawesome/components/icon/library.default.js": "bafkreibuu2untenks3i2bwee35v4mlfuechwgcgn7vig4o5hji324dahpi", 1511 + "vendor/@awesome.me/webawesome/components/icon/library.js": "bafkreihl7fcxsneb7clqxrvnp2g27iwugytxqllpsx23mku237g6khlydy", 1512 + "vendor/@awesome.me/webawesome/components/icon/library.system.d.ts": "bafkreihkzkotqfw4lgymzdo72ccyy2vmjeql45bsus4zv3ipsjrd4sc3yq", 1513 + "vendor/@awesome.me/webawesome/components/icon/library.system.js": "bafkreibada6aftk4gttvb2v4m3kanb4srlkcvq76qztzox53wnapx7gogm", 1514 + "vendor/@awesome.me/webawesome/components/include/include.d.ts": "bafkreifo6dupf252cxl4bvbploang7ung3ym5xj62jqtsi2vpllvcim5vu", 1515 + "vendor/@awesome.me/webawesome/components/include/include.js": "bafkreicmdfgyjbzyuyvmv2og5ub7ipel4m7ycmauayhrbk3ctdo5qppjyq", 1516 + "vendor/@awesome.me/webawesome/components/include/include.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1517 + "vendor/@awesome.me/webawesome/components/include/include.styles.js": "bafkreiemod6fvk2qsfskbmc6oqcxtxpmlfkb6y4verzk5arwgivjibq5cu", 1518 + "vendor/@awesome.me/webawesome/components/include/request.d.ts": "bafkreiges7phh3umdia4yspecgt56a3442yim2z7pq7qznze3o4fehmvw4", 1519 + "vendor/@awesome.me/webawesome/components/include/request.js": "bafkreibua6nnjuxadqibwsxd57aqg7iz4bcaal25kgp73cn53dxhhma6xu", 1520 + "vendor/@awesome.me/webawesome/components/input/input.d.ts": "bafkreiemetw6twxdmq4jyljbxnr3zxzqwygjbmdnz44uixcoreyuimqyzm", 1521 + "vendor/@awesome.me/webawesome/components/input/input.js": "bafkreigoaflxh6psygfrdmza7ho4nh332khbbmlrxs5tifecvbgzearuqm", 1522 + "vendor/@awesome.me/webawesome/components/input/input.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1523 + "vendor/@awesome.me/webawesome/components/input/input.styles.js": "bafkreicx467zwu6onoalllgvuk4idjpcprevdeao6s3pezszbqbqovnb5u", 1524 + "vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.d.ts": "bafkreibm3zwovcsaa3yrw52k455uw6lfijsnlej3ovuhd4c6w4mtch4gru", 1525 + "vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.js": "bafkreiekiyeoq7cijrfwikoq3edzvepdw5rca4hqhsrciqtynr7ueojaei", 1526 + "vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1527 + "vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.styles.js": "bafkreicqh6ubj2ebgjjo7435ax23uxbzsymtcdqn6kr4kzwrtk2hi2uqde", 1528 + "vendor/@awesome.me/webawesome/components/markdown/markdown.d.ts": "bafkreiftlk5t3nig3lxn2iswupaokzk4s3jn4ddgf66ndzn5y7kbopnof4", 1529 + "vendor/@awesome.me/webawesome/components/markdown/markdown.js": "bafkreifqzehkesc4exv5i3v3kfyxf53btns72n44qwctpxkjptg6asatea", 1530 + "vendor/@awesome.me/webawesome/components/markdown/markdown.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1531 + "vendor/@awesome.me/webawesome/components/markdown/markdown.styles.js": "bafkreihaqpr72wyrf6m5vb6zushu6tkr5kkbkjqvrnzduva2or6cgwpxwa", 1532 + "vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.d.ts": "bafkreibpkn4pi5rdm67jlna5wwpgsamp6rbmvxbu2ugi43afihhaes5ziq", 1533 + "vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.js": "bafkreiap7utqmjn5oko3aisidvmbaunihzd63ydyuivv2264dbbolksqha", 1534 + "vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1535 + "vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.styles.js": "bafkreifa74nkcda2sghfhl26dzwmshcavc36752lfllrxri7sip6tn3iei", 1536 + "vendor/@awesome.me/webawesome/components/number-input/number-input.d.ts": "bafkreia5sku3aqb6sl6d73asbaxtw7bor5b3pq7qbzubdta65cf3d3aiv4", 1537 + "vendor/@awesome.me/webawesome/components/number-input/number-input.js": "bafkreicrdtz7ttyqxtuzfbnx55cfuzz6qqxgc2jz43i2f3wtthhuzzlqpu", 1538 + "vendor/@awesome.me/webawesome/components/number-input/number-input.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1539 + "vendor/@awesome.me/webawesome/components/number-input/number-input.styles.js": "bafkreihdm7admaqkczo6aj4uytwecxdv4544upx64tc5a77ieiegampthy", 1540 + "vendor/@awesome.me/webawesome/components/option/option.d.ts": "bafkreifaf7ibcra5ibvg3eoy5l3l2pdngej4qbpvqyjkkhivlyffzmilgu", 1541 + "vendor/@awesome.me/webawesome/components/option/option.js": "bafkreiezflmc2mp7kuqc7lyy3q7l7edejjwjwpsvz2hqcnkt322zfrfszq", 1542 + "vendor/@awesome.me/webawesome/components/option/option.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1543 + "vendor/@awesome.me/webawesome/components/option/option.styles.js": "bafkreifetjhdxkt3v4vpamleo7hhjtpxuuvwtwpqrytkzzjtydveblcso4", 1544 + "vendor/@awesome.me/webawesome/components/page/page.d.ts": "bafkreiaq6vly3weurdgvhyduggwjngtdh4nqanrm4ppwwrjifnuxwbpvfa", 1545 + "vendor/@awesome.me/webawesome/components/page/page.js": "bafkreifdhtni43fli2yyf2ydfzgxpbzxu5pod4hwyc4wmmqumo7lxb374e", 1546 + "vendor/@awesome.me/webawesome/components/page/page.mobile.styles.d.ts": "bafkreicjtajnd4ipyev5hkg5xvx7nylw4ztf7m5aspankdjwpq4krr3y3m", 1547 + "vendor/@awesome.me/webawesome/components/page/page.mobile.styles.js": "bafkreid4lyy3caahmb34cgjq2cstwrwnk3mzhljrvjsgfzwlbbkmngcohy", 1548 + "vendor/@awesome.me/webawesome/components/page/page.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1549 + "vendor/@awesome.me/webawesome/components/page/page.styles.js": "bafkreihljixycs5h63dzh2rtpjyslksrtztpwdc3uydudsaeochvkocnp4", 1550 + "vendor/@awesome.me/webawesome/components/popover/popover.d.ts": "bafkreibkqgvnj546xw7cvj766ropn7afwi7gj3zjj7vhhhgis6t2rf345e", 1551 + "vendor/@awesome.me/webawesome/components/popover/popover.js": "bafkreihixvlv62qirr7cluyldebqqk6yjxvztarflomgefyhr6lgpo2nvy", 1552 + "vendor/@awesome.me/webawesome/components/popover/popover.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1553 + "vendor/@awesome.me/webawesome/components/popover/popover.styles.js": "bafkreiasaigjshywmlckpczdtpm32ebevgt4tqyotmtridqavd7w3uzxo4", 1554 + "vendor/@awesome.me/webawesome/components/popup/popup.d.ts": "bafkreiaapsnhe64bkln5j7n3r666ihwuu6qe7dnsl77k7rr66o4tdlfv34", 1555 + "vendor/@awesome.me/webawesome/components/popup/popup.js": "bafkreiaazval5bkfe2hmmvow55i7tfzyjjuom4hrviiio7clw4hf7xkn2e", 1556 + "vendor/@awesome.me/webawesome/components/popup/popup.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1557 + "vendor/@awesome.me/webawesome/components/popup/popup.styles.js": "bafkreib7bt5d4vaasvsz3vqqwmdzvyvinmoxicdr7tiu4t2sjaeimublxi", 1558 + "vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.d.ts": "bafkreiashpjqz53k33afxyr7mz2cax6ior36hwxz57mjvoewghc3nwr2ue", 1559 + "vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.js": "bafkreidq6xqdw7kbhdjttiujkfuxe7tfahphqjr45odrwqosbypyfytnva", 1560 + "vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1561 + "vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.styles.js": "bafkreihotmxqq4kux2ncu6urawbnmfvlft3naceejpf7wed6knlejcoyd4", 1562 + "vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.d.ts": "bafkreihee5exwfsl5yyk2mxi4jblipx5kkbvwaihwae5f3ejz2vzsipjim", 1563 + "vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.js": "bafkreib2qyk4ed24okwxousjljfyhoj2ky4yx4n6g3ugl3mijttdcfnbsi", 1564 + "vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1565 + "vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.styles.js": "bafkreigg6v7k4yzgldt3h4kcyflkhceuq3mrtmsef52cbr6zh452puc3ia", 1566 + "vendor/@awesome.me/webawesome/components/qr-code/qr-code.d.ts": "bafkreie4zh2u5btsfjfwdq73u3fkg6olppc2dvx4rbnzjqv2ahoyfpzd3a", 1567 + "vendor/@awesome.me/webawesome/components/qr-code/qr-code.js": "bafkreictqhzxuo2jn76ipwirq3rljysy64hsclmtqpnxenbvwb7uhnpeae", 1568 + "vendor/@awesome.me/webawesome/components/qr-code/qr-code.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1569 + "vendor/@awesome.me/webawesome/components/qr-code/qr-code.styles.js": "bafkreieuq3lebgrbciv5gu6y7lvz7dav4sdyaxqzmedsnycrmqvrp6s2xy", 1570 + "vendor/@awesome.me/webawesome/components/radio-group/radio-group.d.ts": "bafkreihhd5gw44ih6hc5w2xafqvqxxpo4sn2pl43lwhsskvd3tr2fh2kpi", 1571 + "vendor/@awesome.me/webawesome/components/radio-group/radio-group.js": "bafkreidctwxabbapy2w25dnrqyrvcd7psipxjvtc46m4chk4aeleol6aou", 1572 + "vendor/@awesome.me/webawesome/components/radio-group/radio-group.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1573 + "vendor/@awesome.me/webawesome/components/radio-group/radio-group.styles.js": "bafkreiccfoktd7yuaq7rpq2ekoade6d24r2osth3qjw4u3txnrk7dgjbuu", 1574 + "vendor/@awesome.me/webawesome/components/radio/radio.d.ts": "bafkreifjprxx2pacayknllmorsfdx26fjrg36m7fdwu4r5wfpe7gobymti", 1575 + "vendor/@awesome.me/webawesome/components/radio/radio.js": "bafkreic32y6uyiewmup4w7c3fugn2wlx44nq4bpiu2p5t4oo67sfsexwzm", 1576 + "vendor/@awesome.me/webawesome/components/radio/radio.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1577 + "vendor/@awesome.me/webawesome/components/radio/radio.styles.js": "bafkreiew7xdou655cb2l7fxxa6wr2rnjydk4ogobw6hj4p4wg54fcgdhli", 1578 + "vendor/@awesome.me/webawesome/components/rating/rating.d.ts": "bafkreifmgni4n3qmhvgxzvrjzda7bphfwdytugmlabrtweajd7ovsxts4i", 1579 + "vendor/@awesome.me/webawesome/components/rating/rating.js": "bafkreicdmm24coyjcso2rztwwirldmaque27skk5bwrsrd64b4662htvsy", 1580 + "vendor/@awesome.me/webawesome/components/rating/rating.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1581 + "vendor/@awesome.me/webawesome/components/rating/rating.styles.js": "bafkreidgxs5p7z545owbib2gkthhb2lyftpwfdjnmbxzyzf2wcqqobggba", 1582 + "vendor/@awesome.me/webawesome/components/relative-time/relative-time.d.ts": "bafkreihjkqryokzt2x35r5gnkdzxyrdap7oeq6l7nwi6oto2afgfnjsrjq", 1583 + "vendor/@awesome.me/webawesome/components/relative-time/relative-time.js": "bafkreif3mw6uty23lxphktqv6e7pt55tn2bv3glxtxfylfclxw3tfioqbq", 1584 + "vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.d.ts": "bafkreibhfg7ucu6lcezv67sw3wqmg2ctun5szp3lp2yonwcqo3y3gqntga", 1585 + "vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.js": "bafkreih6ufr6tnh2hgvp6cpd3cilj7xnhmujbnnqlead2z3i3ok6s4ptd4", 1586 + "vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1587 + "vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.styles.js": "bafkreieo3lag6kqknl4i6gxpmwxnaynpitu2hp5p65b3wjwleicvfeezxa", 1588 + "vendor/@awesome.me/webawesome/components/scroller/scroller.d.ts": "bafkreih5ahbusfmphjwmtpyla4r3ec46xbwukctkv53mgfcwexzc3hppq4", 1589 + "vendor/@awesome.me/webawesome/components/scroller/scroller.js": "bafkreigtih3tskbupvqgw7t6jmwehghli2trik5prnxgwqxmttxqqhequa", 1590 + "vendor/@awesome.me/webawesome/components/scroller/scroller.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1591 + "vendor/@awesome.me/webawesome/components/scroller/scroller.styles.js": "bafkreibzqvzhakp2swjgqim5bznxftolqfpwntyx3qsauhasyxdvokk7h4", 1592 + "vendor/@awesome.me/webawesome/components/select/select.d.ts": "bafkreiczrze7oazi5cz2dfqi3nd5gxwtkj3rywosteby2h2bevmltg4goy", 1593 + "vendor/@awesome.me/webawesome/components/select/select.js": "bafkreicm6rfwjc2wzfj5vdy6vigaukv4ojhicou6aiyjcjqhc2msd5lvv4", 1594 + "vendor/@awesome.me/webawesome/components/select/select.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1595 + "vendor/@awesome.me/webawesome/components/select/select.styles.js": "bafkreihpusvkwmmqset6h6cdpluvgdmbnawhsjaxqrin6k4ihahkcjupvi", 1596 + "vendor/@awesome.me/webawesome/components/skeleton/skeleton.d.ts": "bafkreicwjsena3cls4okhml5aun2i4ue34ohwf4qn2otmblxgpymepktg4", 1597 + "vendor/@awesome.me/webawesome/components/skeleton/skeleton.js": "bafkreida25dglvy7vrqbudliok34o4lltt6bg22s5xxt5f3klystoubkrm", 1598 + "vendor/@awesome.me/webawesome/components/skeleton/skeleton.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1599 + "vendor/@awesome.me/webawesome/components/skeleton/skeleton.styles.js": "bafkreibvjqgtufolw4bokufmib4wyjctffbnxzqofxfdqwdfv2naqc2jzu", 1600 + "vendor/@awesome.me/webawesome/components/slider/slider.d.ts": "bafkreicowdduptpchqyic7rfpwfrvycqeif3srt5iaxwur4vdg63fkdxse", 1601 + "vendor/@awesome.me/webawesome/components/slider/slider.js": "bafkreiffzoi47hbbmcud743ajfethapxxm64vvubaxj7motkqouunniy3a", 1602 + "vendor/@awesome.me/webawesome/components/slider/slider.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1603 + "vendor/@awesome.me/webawesome/components/slider/slider.styles.js": "bafkreidievbc4raqfqoul44dwpi3gdhc33pv7p2yexl3hjjylkrvijio24", 1604 + "vendor/@awesome.me/webawesome/components/spinner/spinner.d.ts": "bafkreid5uhjxnu5ohr7iz6ttp3tbswmcgccgfoark2ralyqenesu675z4m", 1605 + "vendor/@awesome.me/webawesome/components/spinner/spinner.js": "bafkreieoxn2jqamclhmua3bhzbnpnu2rgvqkyvk7aqn3rhmrc73kca6mq4", 1606 + "vendor/@awesome.me/webawesome/components/spinner/spinner.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1607 + "vendor/@awesome.me/webawesome/components/spinner/spinner.styles.js": "bafkreieyfdbd7d7ikegktcs2kt72nrl7fke6lzrrxwkw3xy6bedpsvx4si", 1608 + "vendor/@awesome.me/webawesome/components/split-panel/split-panel.d.ts": "bafkreib5r5qbq5hzkb5lfyyiezhw3wbzhot4sv5wncxoab57ojrczirui4", 1609 + "vendor/@awesome.me/webawesome/components/split-panel/split-panel.js": "bafkreig3ecbzoeyy3nkgnxxudtpoghiryl5xyq2csgtjulpa46wyuqtr4e", 1610 + "vendor/@awesome.me/webawesome/components/split-panel/split-panel.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1611 + "vendor/@awesome.me/webawesome/components/split-panel/split-panel.styles.js": "bafkreianfbqipo663wbfpwcqg4bggyi7t6isd4knoapjmj43liimqrbbsq", 1612 + "vendor/@awesome.me/webawesome/components/switch/switch.d.ts": "bafkreideshulwqfz7nfbgkbrg77kqsw2fhde3kq3pgdhuz5hosep3fijae", 1613 + "vendor/@awesome.me/webawesome/components/switch/switch.js": "bafkreibc7ukrnhcw6r5xnate4ejbl7ue4n322qhirpaadr74ccxuiag3ra", 1614 + "vendor/@awesome.me/webawesome/components/switch/switch.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1615 + "vendor/@awesome.me/webawesome/components/switch/switch.styles.js": "bafkreidplfszx7md5hnypwyu5lipmshwpvodejiwjdofvsc6dfvbklam5a", 1616 + "vendor/@awesome.me/webawesome/components/tab-group/tab-group.d.ts": "bafkreie366gfwnraddiek6fpk5e26rktstibes3pk6xuvywwwd6a36ebme", 1617 + "vendor/@awesome.me/webawesome/components/tab-group/tab-group.js": "bafkreibrmrl7zxpqujh6okwtlftofgotewmumg6e3smzvj4d2hkzwxqa6y", 1618 + "vendor/@awesome.me/webawesome/components/tab-group/tab-group.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1619 + "vendor/@awesome.me/webawesome/components/tab-group/tab-group.styles.js": "bafkreih3ccphhwvfzwagsunwwldqiu2kwnfunpi4shcvoqefzcxiuj67lu", 1620 + "vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.d.ts": "bafkreic2x5qfonuahp3dfyywoszk3bq2hf5dq3kwvqlr756phssmxwyqta", 1621 + "vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.js": "bafkreic6qo6iil742mlpnziamzzi76si7ejohdhkc3wozh2cjsporufvby", 1622 + "vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1623 + "vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.styles.js": "bafkreigf7hwemicz3rsycersyfccvaiidu7a3apofuv4sabnzrnfsff2au", 1624 + "vendor/@awesome.me/webawesome/components/tab/tab.d.ts": "bafkreihm7bx53jzh7qxlhnh3fmwobzeostizliskszx2r3rvbxvkeaootu", 1625 + "vendor/@awesome.me/webawesome/components/tab/tab.js": "bafkreibrvelicz5qciabewbj2xsay5654trwtj7cohzf6rc4odcderycne", 1626 + "vendor/@awesome.me/webawesome/components/tab/tab.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1627 + "vendor/@awesome.me/webawesome/components/tab/tab.styles.js": "bafkreieps3jjkxqiwhkpf35nuhcas3ov5ho37zhmxz3pedalznh5ph2r44", 1628 + "vendor/@awesome.me/webawesome/components/tag/tag.d.ts": "bafkreic4pttj7mqdwgqrow6v53pq2oxkqz35ihhamcdk763eicauqw23nm", 1629 + "vendor/@awesome.me/webawesome/components/tag/tag.js": "bafkreigoccppw5bcb5fiyy5xhdpnmkn3dcf26xj4q6peer7t2f5d6wrxsa", 1630 + "vendor/@awesome.me/webawesome/components/tag/tag.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1631 + "vendor/@awesome.me/webawesome/components/tag/tag.styles.js": "bafkreigu22djqvemzx4bvesqkoqhnkfhr5mnx5sifulgbrpjbqvrmbuiou", 1632 + "vendor/@awesome.me/webawesome/components/textarea/textarea.d.ts": "bafkreihtnehugim6srzqxfshnzdmf573oyqyr7f5rocadyejcwqpz6rfme", 1633 + "vendor/@awesome.me/webawesome/components/textarea/textarea.js": "bafkreicokvj5q3tdw73xqh6z7kpbway4gxcsbmpwuxjdimhbecdqwtvfwy", 1634 + "vendor/@awesome.me/webawesome/components/textarea/textarea.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1635 + "vendor/@awesome.me/webawesome/components/textarea/textarea.styles.js": "bafkreieybcrjpeolerh4j2iztpx52ioc3w5zp3h2ofduwv3xyyemh4dnba", 1636 + "vendor/@awesome.me/webawesome/components/tooltip/tooltip.d.ts": "bafkreieazo7i2jddmb4jfrj5pbem6ffw6lzlrlmmckw6nniv66ogg47t64", 1637 + "vendor/@awesome.me/webawesome/components/tooltip/tooltip.js": "bafkreiezvujsypp5ft62vdtpsreu2qnw7cyvyh2x3hd4ecrnawzkcjb5ju", 1638 + "vendor/@awesome.me/webawesome/components/tooltip/tooltip.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1639 + "vendor/@awesome.me/webawesome/components/tooltip/tooltip.styles.js": "bafkreibzp73jrqqmmvdjxltuehdj5ehznsxx7xvl2tqlnzxyd3z5243zk4", 1640 + "vendor/@awesome.me/webawesome/components/tree-item/tree-item.d.ts": "bafkreicgsildbveb4yttc7f3lndo2pjuqbecj5wrkdnajyu77gejy6rupa", 1641 + "vendor/@awesome.me/webawesome/components/tree-item/tree-item.js": "bafkreidstihosrqdd74yh33zs4wumudjm44nq2un3ff2gylfbe7q5qrj44", 1642 + "vendor/@awesome.me/webawesome/components/tree-item/tree-item.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1643 + "vendor/@awesome.me/webawesome/components/tree-item/tree-item.styles.js": "bafkreifryspzwkru4wxqj5j7yg2o6tbqers4obvbdihta6kybkwcvnvwsy", 1644 + "vendor/@awesome.me/webawesome/components/tree/tree.d.ts": "bafkreicu42y43ecsepr3huqfzo7lufjoboowarnqtsdwvgnhrwkxst3p44", 1645 + "vendor/@awesome.me/webawesome/components/tree/tree.js": "bafkreiauj6z4fy3j3pckc4c7w7m6ie7m4owcv5weqlxtity6mewnl4s5ai", 1646 + "vendor/@awesome.me/webawesome/components/tree/tree.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1647 + "vendor/@awesome.me/webawesome/components/tree/tree.styles.js": "bafkreievtmevm6him2yqyzdb7blipucrtyafodyvpadtdp6oe2657p3wtu", 1648 + "vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.d.ts": "bafkreigimjtmzwzerofycuneu3jc2dp3dlpdqc4ftvpeksbsyhqzp47caa", 1649 + "vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.js": "bafkreiectjzfpg4d6bnsmb34sh7ciipthysk4sdyapnklyahuc7msodnxm", 1650 + "vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1651 + "vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.styles.js": "bafkreihhrrkp44c5kcfqcinvzswefwhf67xoc3ks2mxohsyxh72a556lvi", 1652 + "vendor/@awesome.me/webawesome/custom-elements-jsx.d.ts": "bafkreig4xxf4jrwt4qliusafx7pjxjpfylxwahmplb3fvupdglziqbl6ke", 1653 + "vendor/@awesome.me/webawesome/custom-elements.json": "bafkreibj27mvvc6wvfnpdy5g2z25qv2z55c2oubvqguxwkc47y6mzwthga", 1654 + "vendor/@awesome.me/webawesome/events/after-collapse.d.ts": "bafkreic75vk6syvq354wauficf7ukq2extev5otheqzluhw6phovl7lbyq", 1655 + "vendor/@awesome.me/webawesome/events/after-collapse.js": "bafkreidsgnpuo6dqqzvit4p45kcn3nstkhmw45cpkt2fwsmm5xj7l7h6we", 1656 + "vendor/@awesome.me/webawesome/events/after-expand.d.ts": "bafkreiafzl7zgxyhhq6vpidd3k2hrjywfg6kavrm5wzs4hs2z2xohnxzqm", 1657 + "vendor/@awesome.me/webawesome/events/after-expand.js": "bafkreichpxkkpbavjyawli2naiwgpm6xx3yltuhq47q5wmn74dhf6224va", 1658 + "vendor/@awesome.me/webawesome/events/after-hide.d.ts": "bafkreid5bdxocbmr7roycc5t222qafqvdlq25r3mpp5ogddts35of6zby4", 1659 + "vendor/@awesome.me/webawesome/events/after-hide.js": "bafkreifhngq5pnmiyyryai7fz2gtfrtooj6xvd5qeezsqr4mgsdlivcaza", 1660 + "vendor/@awesome.me/webawesome/events/after-show.d.ts": "bafkreia2bsvqtkdi345tugktzdiewe53ljgnr4tcxsul3ecwpzzft5hppm", 1661 + "vendor/@awesome.me/webawesome/events/after-show.js": "bafkreifnhaoso3ja2vnufwhbjdqq6uodtqwc36z3bwjdcmz46cemqqjrey", 1662 + "vendor/@awesome.me/webawesome/events/cancel.d.ts": "bafkreigjuexrmdldwvfld64uzosgd5frqepuq75gtkxlb6nckkttcan4fm", 1663 + "vendor/@awesome.me/webawesome/events/cancel.js": "bafkreiadcccjiuibw6blndxxi5izpjibgnu7t2so4quopaskpdfqug6riu", 1664 + "vendor/@awesome.me/webawesome/events/clear.d.ts": "bafkreidxrulne6v3n3xeuq5wdzilrrpjnr3fu7onizdkd5revcfqxtfrya", 1665 + "vendor/@awesome.me/webawesome/events/clear.js": "bafkreicc264axhk7e4gbrvmt46vv4tl4ztroc6og4mj3aa2fp3ixk7iegq", 1666 + "vendor/@awesome.me/webawesome/events/collapse.d.ts": "bafkreiekq4yxkaigvrxohtyrq3wdelq3jqpklyzqtxd3spwb7s7cxkov74", 1667 + "vendor/@awesome.me/webawesome/events/collapse.js": "bafkreiekxe7m55aivv5xlw3gxiqdqdvggcel7kaw2vfhfq7ditvfsu5v3i", 1668 + "vendor/@awesome.me/webawesome/events/copy.d.ts": "bafkreifwdpe6pbdtulfgj4o7kiu4h4g36hsrsxpcquke7mgnxwwxfhc4c4", 1669 + "vendor/@awesome.me/webawesome/events/copy.js": "bafkreiduh6pkalrbeqvuh65jocmw4zvbg2vevwg6yq6iw6zj2uydl7u3a4", 1670 + "vendor/@awesome.me/webawesome/events/create.d.ts": "bafkreif77vp6e5mu5cqlx5dlv4o7elxhscqmacgxrvmfeexijqtkonrgj4", 1671 + "vendor/@awesome.me/webawesome/events/create.js": "bafkreihtjinakaexocchb5l5jfq55x6kwpb5bcye7f3k7bwvzju53zitwy", 1672 + "vendor/@awesome.me/webawesome/events/error.d.ts": "bafkreibgs6cv6hkfgbpua6jbx7ui3acvgsirpijxeswpfivbt2jp3ajlum", 1673 + "vendor/@awesome.me/webawesome/events/error.js": "bafkreieebiqv3haz6euno47sufvqryka2upm5epleqgipior2vgugtvi74", 1674 + "vendor/@awesome.me/webawesome/events/events.d.ts": "bafkreicqon7ztnyeefe3hnjcf4olzczyhveyxnc565a5wts67vtoeaktxy", 1675 + "vendor/@awesome.me/webawesome/events/events.js": "bafkreiazobpzcfvixklbctiuirczcbij5mgorggtfsc63huowzuufnmyyu", 1676 + "vendor/@awesome.me/webawesome/events/expand.d.ts": "bafkreift4lwudkpq5oi7tjskaa2zr5j2caxhpj2nloi2fgfv6dkipxkokm", 1677 + "vendor/@awesome.me/webawesome/events/expand.js": "bafkreibyeg7ciug7cu76ulywxb6zmiatqo7tpl4gnhgutpofa5khnwh4ry", 1678 + "vendor/@awesome.me/webawesome/events/finish.d.ts": "bafkreihfutnnryb6fco76b4mo5qtblrahkkdkh42qfnmtmvssdk435rzva", 1679 + "vendor/@awesome.me/webawesome/events/finish.js": "bafkreiey7tsperns6sz3rcvlbbelabkkvezlo2egx74x2kzvmmrnaa3kra", 1680 + "vendor/@awesome.me/webawesome/events/hide.d.ts": "bafkreihq5gkt2j5nq4pvwirv7j4x5a6aen3ao4lg5eiy2yfnv4looqsuum", 1681 + "vendor/@awesome.me/webawesome/events/hide.js": "bafkreihcd6fu7oxvd5qzuukolcaq7muehztnt6fy553zi6gp5j7fbj2ieq", 1682 + "vendor/@awesome.me/webawesome/events/hover.d.ts": "bafkreihc43je5rnt5wp5rpjszzen4gl4ldnlhf3cnwtp3tlqbnma5c4dfe", 1683 + "vendor/@awesome.me/webawesome/events/hover.js": "bafkreidcqj2hgeoqrlo55u3rui2qoinqcflw7ylg5haqyobun4ytoxegym", 1684 + "vendor/@awesome.me/webawesome/events/include-error.d.ts": "bafkreidcpoueccgkz7fc67mkyhhogwb6mjuybf4zdcsu5edniry7cp25ya", 1685 + "vendor/@awesome.me/webawesome/events/include-error.js": "bafkreict3fhaphup67gxvsxyswc63rabsbb4rkidlkogbfdlgmmtymope4", 1686 + "vendor/@awesome.me/webawesome/events/intersect.d.ts": "bafkreicxmdbi43vzxeohcps7iz7p7cfcbpizlfcrd5xieqvzfzymkjlewy", 1687 + "vendor/@awesome.me/webawesome/events/intersect.js": "bafkreicld5cg73xv4jwcjxjhg6iwglss2v7fpc7wisfcdkrccfz7r56hyi", 1688 + "vendor/@awesome.me/webawesome/events/invalid.d.ts": "bafkreietc3gbs3wduamx4qlxobiw66f6m2cgijs4dvgoi3jqixvvpioeyu", 1689 + "vendor/@awesome.me/webawesome/events/invalid.js": "bafkreiakyigt5zue4q4aoth5xf6pftahhtkvznmaerqkvwnhkfcmsw6gjm", 1690 + "vendor/@awesome.me/webawesome/events/lazy-change.d.ts": "bafkreibyiqj7picbwepuco37yuy2v2x4d5otjjtgdmlpjenmy3ahcr4jki", 1691 + "vendor/@awesome.me/webawesome/events/lazy-change.js": "bafkreib42ukuy4xrnsmyrstupgyk3dzxxlzfgiuwhsvahz52qy3ue6im7m", 1692 + "vendor/@awesome.me/webawesome/events/lazy-load.d.ts": "bafkreiezh2236ornfkj2axj6mchf3ukicma5iutkyzlltqbduoehlbu66e", 1693 + "vendor/@awesome.me/webawesome/events/lazy-load.js": "bafkreid7g3mhz22gwuz23oppmay7uuxrupfcucrzqwlmok7thcy2tmsley", 1694 + "vendor/@awesome.me/webawesome/events/load.d.ts": "bafkreidnsmlcblcg2h2uheaoyuyaluzt752h3452ykz2ozggd5w3myduiy", 1695 + "vendor/@awesome.me/webawesome/events/load.js": "bafkreiaghomsnujnyenphy5tzjmcqq7bzgkgduovthukxsvplk5olfvljq", 1696 + "vendor/@awesome.me/webawesome/events/mutation.d.ts": "bafkreifp5edx3oveimrnzr264ltxnamgt4gntyulla3pmnqofvmgb2o7oq", 1697 + "vendor/@awesome.me/webawesome/events/mutation.js": "bafkreihl3qosgfwa3fx35ol4b6mxcan6ecvfje5jqqoka2jfrek6l3nd6i", 1698 + "vendor/@awesome.me/webawesome/events/remove.d.ts": "bafkreicl4q6qftywov24odacid7cbanl5jzvmezkrphublisxgte24e4im", 1699 + "vendor/@awesome.me/webawesome/events/remove.js": "bafkreicl6zig55rjouf75k26qpyhxhruf4xppuos3taoj7gpbarocwc7lm", 1700 + "vendor/@awesome.me/webawesome/events/reposition.d.ts": "bafkreign7sfzo6rahboejeibvq7yjitavj2ma3xqqipqhbq7umuoopz5c4", 1701 + "vendor/@awesome.me/webawesome/events/reposition.js": "bafkreiepdfpgjinxsidbqh2xxhx7e6yvyy6krrvnleokqfbbfj6crulizu", 1702 + "vendor/@awesome.me/webawesome/events/resize.d.ts": "bafkreihw3exwbz56dcxu4ny7jvjutwwg4tupnut7fmb2i253kkt6vqx354", 1703 + "vendor/@awesome.me/webawesome/events/resize.js": "bafkreignjtqqrhnbmp3ytvud6vegbz2gnogwhnjck6jg52xgdnntdpd2ci", 1704 + "vendor/@awesome.me/webawesome/events/select.d.ts": "bafkreifrfk7ilfl7tihcaxlxdqurtfoyezeeaa24yeo53zphdgqz6gvdie", 1705 + "vendor/@awesome.me/webawesome/events/select.js": "bafkreia4g26rsgwi3lsnewrxmnhbisfbaekf3v5bayapujv37pz5p3t3na", 1706 + "vendor/@awesome.me/webawesome/events/selection-change.d.ts": "bafkreici4kl3o7k2psl5f5zz5qutdp3ak27sb6k46eh5udb3mlfth3htja", 1707 + "vendor/@awesome.me/webawesome/events/selection-change.js": "bafkreideuoi4vqoveadixfy2xbsduomwfysvpfnxkv2sgyjd62gg5by3ya", 1708 + "vendor/@awesome.me/webawesome/events/show.d.ts": "bafkreidzuhe66ihi65luyb5ci5llgc3bangcflm4kpx4ye22q3p73745zi", 1709 + "vendor/@awesome.me/webawesome/events/show.js": "bafkreihol55dxz7yuiqvyvaoo7geuwjddzcdetlues5gtta2eyzeqskdry", 1710 + "vendor/@awesome.me/webawesome/events/slide-change.d.ts": "bafkreiafpso6eov7eu3glztxb6gyxnog3wddz6vlekz4cgeuastiby5ibm", 1711 + "vendor/@awesome.me/webawesome/events/slide-change.js": "bafkreicp2o3ak3qnquc5aakypx2r47t7ajl2u4ubkdchk7tx2b4654ewcq", 1712 + "vendor/@awesome.me/webawesome/events/start.d.ts": "bafkreifbah62z6oxqix2astaxybpuhuftk5y7bzdrzl2wmxc3n4xbfxhwu", 1713 + "vendor/@awesome.me/webawesome/events/start.js": "bafkreieova255j3lkojphma6k7sr4w25brsdimkmyey5savd7u43lyl2b4", 1714 + "vendor/@awesome.me/webawesome/events/tab-hide.d.ts": "bafkreicv3ojjaxpbhs665r7py6fvh4m5op5ssfbjzb7mfjbjv4szxxu2au", 1715 + "vendor/@awesome.me/webawesome/events/tab-hide.js": "bafkreigve4d3lnp2epdfe5kuntba5adbw2sgz5v75ymyarx6nxviaxnjf4", 1716 + "vendor/@awesome.me/webawesome/events/tab-show.d.ts": "bafkreihb4q2f4hdpo4e2axiegnvaork2xuolbeekdju746h2wu6m63wlq4", 1717 + "vendor/@awesome.me/webawesome/events/tab-show.js": "bafkreihuc4tejziemcexzpfeaehhandwic4tpkdetnfvi4fsu6w7t45m6e", 1718 + "vendor/@awesome.me/webawesome/events/video-change.d.ts": "bafkreigbjux2leuhywuak3hmlo7xia2k7enverrvt73nl7356ordoh52eq", 1719 + "vendor/@awesome.me/webawesome/events/video-change.js": "bafkreifwndpim5bslp3ja3rztji2lnoznr7bwhhjng4kov2iy5yzmwds6u", 1720 + "vendor/@awesome.me/webawesome/internal/active-elements.d.ts": "bafkreiakabrwvggo7u7iqq5yybggs5jcgwlc7v55ehc64e2wniqwhe5di4", 1721 + "vendor/@awesome.me/webawesome/internal/animate.d.ts": "bafkreif6s7xzyhmms2shrcw4y2h4ntfeowm2opukjfwctxpavcks23on44", 1722 + "vendor/@awesome.me/webawesome/internal/color-scheme-controller.d.ts": "bafkreicdfy2lz7c4pc6y57hsiirobyt6sg2cajdk6vnwcxcuf6fvepundy", 1723 + "vendor/@awesome.me/webawesome/internal/computed-style.d.ts": "bafkreieqnjv5w2bwx5ojgjbkxk3xtyszuiji3y63pf4cxlfrdxlvs5m7oe", 1724 + "vendor/@awesome.me/webawesome/internal/debounce.d.ts": "bafkreidd7zfsfamexjb25p4nupvbr4i2ujzqtgm245d6bamp37dscoxyo4", 1725 + "vendor/@awesome.me/webawesome/internal/default-value.d.ts": "bafkreih2mztvb55pdr3vrp2snq4qxgvsf7qzow6iquw4s7n6kdzgqzcefi", 1726 + "vendor/@awesome.me/webawesome/internal/dismissible-stack.d.ts": "bafkreiczvlnxqe3iwkrd2gc6gu2oatjgvrooo2pv6xnvvixzhitmywh2gi", 1727 + "vendor/@awesome.me/webawesome/internal/drag.d.ts": "bafkreictmlfqozahap7a5pwn2tlgzy577v7mrgu4erpd7xz25z5emagtke", 1728 + "vendor/@awesome.me/webawesome/internal/event.d.ts": "bafkreibpvlfhlb4yh5kmoz6uda4pxobjtht4eqep7fjlbilwpnzah6w5ta", 1729 + "vendor/@awesome.me/webawesome/internal/get-text.d.ts": "bafkreidsqks56qgzdcbxqeuyvddisrsf7jjlfyeocnpg4zqgsnziwhu5c4", 1730 + "vendor/@awesome.me/webawesome/internal/math.d.ts": "bafkreihaxdhyvnnwv2zwzrmjdx25m4cg3vwyjuxs7ovtnobbdtkh5cwwua", 1731 + "vendor/@awesome.me/webawesome/internal/offset.d.ts": "bafkreicxfivdvuen5jm6dk4tmf4pygfr5zbpixicmzjxjfhi2i7lb5ze2e", 1732 + "vendor/@awesome.me/webawesome/internal/parse.d.ts": "bafkreicbnsvfyn26xas5uqo4i3rzfrjaabuauwrxqlv5qhgkueu24gpczq", 1733 + "vendor/@awesome.me/webawesome/internal/scroll.d.ts": "bafkreich2ch5s3q5whfvhm3wirn7xnrhywroz45gkne5ap7pyrddlplmf4", 1734 + "vendor/@awesome.me/webawesome/internal/scrollend-polyfill.d.ts": "bafkreieomcn3ohbaxbmmo7yot6ilweyz3ochpmj7t6lf6gq6dbjex5iiqe", 1735 + "vendor/@awesome.me/webawesome/internal/slot.d.ts": "bafkreidapgxicdasvupwgy3k2ge55iiwia3ujqzcxziftd5a6tnb54teue", 1736 + "vendor/@awesome.me/webawesome/internal/submit-on-enter.d.ts": "bafkreifhsb7qlcvtalpyaewewdqvrmefkacqjiyoxhsarlnktf3l5njlea", 1737 + "vendor/@awesome.me/webawesome/internal/test/data-testid-helpers.d.ts": "bafkreifaotjntugl4itg5oanfin4vjqvobifsc66kxncja6ia7xbu2vak4", 1738 + "vendor/@awesome.me/webawesome/internal/test/element-visible-overflow.d.ts": "bafkreicb7oebtkiniypqbdfqpglfp7mwyek4qsoyaw5csovsqvwamx7yiy", 1739 + "vendor/@awesome.me/webawesome/internal/test/fixture.d.ts": "bafkreig3ixfddibauynsuftvrdb2qcclcjavxv3mzl3wv5wzgtjfmrxf4a", 1740 + "vendor/@awesome.me/webawesome/internal/test/form-control-base-tests.d.ts": "bafkreictofsj26kpkn5e4zdgwoqqml4msachpiwznhr37tjgxatnubczp4", 1741 + "vendor/@awesome.me/webawesome/internal/test/pointer-utilities.d.ts": "bafkreiczfp22kr5qbw5ul5imcmcug4hektiehry4fiev4fcswbn3alutay", 1742 + "vendor/@awesome.me/webawesome/internal/test/wait-for-scrolling.d.ts": "bafkreibbeyo5sx64pov7tusvzremr3smmv7fx6lxb3ia7lqllvqryui4hi", 1743 + "vendor/@awesome.me/webawesome/internal/validators/custom-error-validator.d.ts": "bafkreiha2nm4j3u462exqjuxwkklkemqmw3z7ethei6ietimy6sdwe5afm", 1744 + "vendor/@awesome.me/webawesome/internal/validators/mirror-validator.d.ts": "bafkreigp62byc2da2vgf2eochcikrqzuioqigyqdvsmd326wrfdf2t2spy", 1745 + "vendor/@awesome.me/webawesome/internal/validators/required-validator.d.ts": "bafkreidihpayslxrdzlnmdenhsw7ia3b7qyrun7nyhzpnaklk4vt3u3hay", 1746 + "vendor/@awesome.me/webawesome/internal/validators/slider-validator.d.ts": "bafkreihy7cxsnvlez6wjwwakybza56w5rda7vqtydn6qzc77jvvrt6ihiu", 1747 + "vendor/@awesome.me/webawesome/internal/watch.d.ts": "bafkreihtqc4ppu5bsh5xrk3hefmlc7owvb5v24wej6qq73wjjzhnpmenk4", 1748 + "vendor/@awesome.me/webawesome/internal/webawesome-element.d.ts": "bafkreifipsgo7fn4dai2wg55wwrggoqdgvvuwjbivu5wi3axtug3qiiwye", 1749 + "vendor/@awesome.me/webawesome/internal/webawesome-form-associated-element.d.ts": "bafkreiaar36qzccm5a7py5xfqwixufkk4dmhal2wv2ahl44azkrncpdham", 1750 + "vendor/@awesome.me/webawesome/llms.txt": "bafkreicme3uxrusyxmpiii3rfxz47vamm4pgrawfznj42x2zhbiztw7m6a", 1751 + "vendor/@awesome.me/webawesome/react/animated-image/index.d.ts": "bafkreibr7hm2iyanxqzlkbicjqt7wq4zgpgtmtxnrf2rbiuwmcphevqzf4", 1752 + "vendor/@awesome.me/webawesome/react/animated-image/index.js": "bafkreie36qtk4xgfowfqgfefcnums5as27nhwwihbbbwrv3j6y7q4fgywi", 1753 + "vendor/@awesome.me/webawesome/react/animation/index.d.ts": "bafkreick6ujrvxmr33yq6a5eprctl3naqb3t3mkiab4szamaqvcr5vjqia", 1754 + "vendor/@awesome.me/webawesome/react/animation/index.js": "bafkreifs7qhpwvcaxbt6gwjbygfks32zfkmk63p27rnjspin6qudhe2x5q", 1755 + "vendor/@awesome.me/webawesome/react/avatar/index.d.ts": "bafkreiaszsycktg7mkvrcnpum337mgs62lrcuzdm2ku22uav6j7wwkw2pu", 1756 + "vendor/@awesome.me/webawesome/react/avatar/index.js": "bafkreiap35622yffbpqvytfb75atyrkjh6oh3xk5gq6yyapqmzu263ec2m", 1757 + "vendor/@awesome.me/webawesome/react/badge/index.d.ts": "bafkreifvtr3azsveqdjsprb4ki6ual6lbjku2ppdlznfxbsox6xqit3iai", 1758 + "vendor/@awesome.me/webawesome/react/badge/index.js": "bafkreicg57lams3yao7f5zdpkzywpbqnb7sohhcihaykkto4bzcvdssl64", 1759 + "vendor/@awesome.me/webawesome/react/breadcrumb-item/index.d.ts": "bafkreiafelshjwrcjcow4ktfp5dcbsi746bjxnsww4i6v26iksyawuhbq4", 1760 + "vendor/@awesome.me/webawesome/react/breadcrumb-item/index.js": "bafkreiaui4suwgjoshi77xx3yvph6jhg7brfxpwqtvxs5jormqqgdxlnhe", 1761 + "vendor/@awesome.me/webawesome/react/breadcrumb/index.d.ts": "bafkreihv24t4mwisgw32ifx7bcg3vrgdfgfkfz46ijco5d56g2khxi4r2a", 1762 + "vendor/@awesome.me/webawesome/react/breadcrumb/index.js": "bafkreidjlq34ifptuawsbk7gfm6p7p3ntvekozhxgybdntukvpvaa4udum", 1763 + "vendor/@awesome.me/webawesome/react/button-group/index.d.ts": "bafkreib44ikcyj45cuifxry7e3wye3hq3acv5uz4anhsith7tx5qpmavay", 1764 + "vendor/@awesome.me/webawesome/react/button-group/index.js": "bafkreibd35rq7p7leolvdf57r6jgntm3pneycwrj7j5lievbccisesiyji", 1765 + "vendor/@awesome.me/webawesome/react/button/index.d.ts": "bafkreid3mqb4pgpamepnhtdddavjmhcxoqk4k5c23e6xl7iegcsgo2tbva", 1766 + "vendor/@awesome.me/webawesome/react/button/index.js": "bafkreifvgw5na7viqeynl3ujscw6ibde5btsc6u2fwemsoa6w6vnd33gtq", 1767 + "vendor/@awesome.me/webawesome/react/callout/index.d.ts": "bafkreibhxgjpdy3dotitmgn62pyehnuixzyiwzqhx236pyoiwoignflrmq", 1768 + "vendor/@awesome.me/webawesome/react/callout/index.js": "bafkreigpb26n52keipkfbqvaoc4wxfrtx6yrr3kliqmbqz5jw2ctlrua3y", 1769 + "vendor/@awesome.me/webawesome/react/card/index.d.ts": "bafkreicwfmumqxlrvtc6bvnlybsw3hifutuuisk2eh2cx4jmr52oxjezrm", 1770 + "vendor/@awesome.me/webawesome/react/card/index.js": "bafkreiftlkpbor5dsx5g527nuycjbcs5g7wowc5emjyplacndowua5whfy", 1771 + "vendor/@awesome.me/webawesome/react/carousel-item/index.d.ts": "bafkreidlvsfsghtxmhz7xjqovk445bsd46u6q7ydipm2xttadtmeesfvwa", 1772 + "vendor/@awesome.me/webawesome/react/carousel-item/index.js": "bafkreiffjzxt5tk5wgn3rreidgqykrfobs5b6pbuvh57lbzvqpsa26yvme", 1773 + "vendor/@awesome.me/webawesome/react/carousel/index.d.ts": "bafkreibivvwmucjlmprhp5yoch4q325pq6wdmnuxiw6h4zslsog6dlhhji", 1774 + "vendor/@awesome.me/webawesome/react/carousel/index.js": "bafkreifw6fu72rafbob3ld2bxuqqhptwbwgdnb6t6jyqeo6jtkgnicpw3u", 1775 + "vendor/@awesome.me/webawesome/react/checkbox/index.d.ts": "bafkreiboj6tib4vrgt6qwlhtlpcefjevtfidaefexuaunj3vbee43jmqjq", 1776 + "vendor/@awesome.me/webawesome/react/checkbox/index.js": "bafkreidwr3ags6vjr5khvl7wjpf6tntcftvkqcelfhhzeqoqnbzayi4zny", 1777 + "vendor/@awesome.me/webawesome/react/color-picker/index.d.ts": "bafkreihnjnptoabbbxlo35orpdza6dedhsv47zghh676okb7srwuhis3vy", 1778 + "vendor/@awesome.me/webawesome/react/color-picker/index.js": "bafkreihtb2ba3ddgeequjqlroqoxnqu5oxt2e3q7eejrf52uoe5pigpq7m", 1779 + "vendor/@awesome.me/webawesome/react/comparison/index.d.ts": "bafkreigytkkokuzozhej7tsy5ccmjcmsmvnae3bwehqkf6wjpyajoo6cim", 1780 + "vendor/@awesome.me/webawesome/react/comparison/index.js": "bafkreiaugprmdf6w2ybgvbgo3wixzggwr5wnt4pjdubve76jjazuqb4vj4", 1781 + "vendor/@awesome.me/webawesome/react/copy-button/index.d.ts": "bafkreig4danvptcrsa5g3gwumjyj6gicepyda2ugueyhtrv4nfqz52vimy", 1782 + "vendor/@awesome.me/webawesome/react/copy-button/index.js": "bafkreidprzhqqhvg3lxqfaalbxvt2ohui4bfariordn462ft6epedjjgfi", 1783 + "vendor/@awesome.me/webawesome/react/details/index.d.ts": "bafkreieuj35bxr5xom4jtay3i43ms7eyvodi4ankz66uwao6jtcrydvhv4", 1784 + "vendor/@awesome.me/webawesome/react/details/index.js": "bafkreig7h5bhvdereh6j4nwec3ctosrx2k44aoaxnhsjpr25juikxsfyva", 1785 + "vendor/@awesome.me/webawesome/react/dialog/index.d.ts": "bafkreiexms3nyd4p2wjsdfaeg6lwns4aqbiphniagxl5paaf27rltmfl2u", 1786 + "vendor/@awesome.me/webawesome/react/dialog/index.js": "bafkreig5nqwz2lkrzrmmwarb77xxflqdqyj3z64suu6j6ugzkcoffloizi", 1787 + "vendor/@awesome.me/webawesome/react/divider/index.d.ts": "bafkreic7jks26uod56owgkr5iw3cd4voeif6s6xdabvqhfmk4xhejxrn6a", 1788 + "vendor/@awesome.me/webawesome/react/divider/index.js": "bafkreiamfspvcvvmrp4dorzpwyan7ulhr5low6dauwga7dagl66cy5nrf4", 1789 + "vendor/@awesome.me/webawesome/react/drawer/index.d.ts": "bafkreidsw7jbwrrqa6ibivveat46uzaad6ura6gqs7vc2khha2lyyiwh2u", 1790 + "vendor/@awesome.me/webawesome/react/drawer/index.js": "bafkreiagdvojbsijtajynfiqye4s447zyxtzo6fhwgz6ykyn2dnpvpypgy", 1791 + "vendor/@awesome.me/webawesome/react/dropdown-item/index.d.ts": "bafkreid4ru4k56bvtze6uzwhcbcag6frsz36t7qboabweslxwa4xtt4ibe", 1792 + "vendor/@awesome.me/webawesome/react/dropdown-item/index.js": "bafkreiebmjt7gvwsotgwsuu5hyif3irgqdigb5bkr4rklpltjcfnxzbhle", 1793 + "vendor/@awesome.me/webawesome/react/dropdown/index.d.ts": "bafkreigagvgcekpuodpks4tefgusoxsgj3cer7sian6k5dwrdilzy33lfy", 1794 + "vendor/@awesome.me/webawesome/react/dropdown/index.js": "bafkreiaxdiuzth55uaqcmtf6ibteh2obrnvndo3ty7nlysctpryyzpxcqm", 1795 + "vendor/@awesome.me/webawesome/react/format-bytes/index.d.ts": "bafkreiczjzejzo3rdxlgux32vwcsn37yuogeh6t4z7cgscmmvxfwhqnd7u", 1796 + "vendor/@awesome.me/webawesome/react/format-bytes/index.js": "bafkreiaecq2eijcsf7dia3gvsyzoefp4gy3v7wnf7xbinehhtw5jmhnl7m", 1797 + "vendor/@awesome.me/webawesome/react/format-date/index.d.ts": "bafkreifj6sqr5pf2e7p73ai7gxhdsgxxy6eq3s6veixleebafvhzyku4r4", 1798 + "vendor/@awesome.me/webawesome/react/format-date/index.js": "bafkreich2ru5at5adyeag4ei3xhedemx7qn5q3mc2ho2lvluuek2kpz5ay", 1799 + "vendor/@awesome.me/webawesome/react/format-number/index.d.ts": "bafkreidsn7pphtdftjejgk75lazvixwpfwr7r7l4gnlh6bkhejgppkkgsm", 1800 + "vendor/@awesome.me/webawesome/react/format-number/index.js": "bafkreigawyq7sjn2ty6stbluu6e6zfjl4ycabtawq3aw6sqoyi6w5op7dm", 1801 + "vendor/@awesome.me/webawesome/react/icon/index.d.ts": "bafkreif2wu364pd2zvc3lb5go7lfecmt6ledcshqttbwmgbcjpo4h26xza", 1802 + "vendor/@awesome.me/webawesome/react/icon/index.js": "bafkreicpnfkd6qexicif4xwl4l2evykufi4srzdmnklgzzbg5pxcijqi5a", 1803 + "vendor/@awesome.me/webawesome/react/include/index.d.ts": "bafkreib4euwmu7k7gpq3nan3nxze4tjvumu5puilekn7urcpydqraj3b7a", 1804 + "vendor/@awesome.me/webawesome/react/include/index.js": "bafkreigips2l4cz4zsnyfjrgxrglapbi66dks3aaby37vxnfpr2mwshd7i", 1805 + "vendor/@awesome.me/webawesome/react/index.d.ts": "bafkreia5vp3xt6tndw5xl6zuu5pwn57objdazokunbnvr4f3aiiv2yp2ji", 1806 + "vendor/@awesome.me/webawesome/react/index.js": "bafkreibsstkw4z74gfwdjblwgc4wgwsgpritcgi5ho54e7pko2acjpv7xm", 1807 + "vendor/@awesome.me/webawesome/react/input/index.d.ts": "bafkreido7emyyfc7u5akoa2fnhkam3cy3uaizhqrodrbad5x7e42fwf2ji", 1808 + "vendor/@awesome.me/webawesome/react/input/index.js": "bafkreieltbicw54uyuzzown7cq2cx7wgkpcsu44oz7zferkggnpw2fvanq", 1809 + "vendor/@awesome.me/webawesome/react/intersection-observer/index.d.ts": "bafkreih7cog5mgjqltayqr4wzz7fr4dltr42mokl6qbhwvqqfaqzfstsgu", 1810 + "vendor/@awesome.me/webawesome/react/intersection-observer/index.js": "bafkreibc7wccsxlmhmwjhnfo5tlvk47sahfnof7ipwyltgzqtcy3pzz6uu", 1811 + "vendor/@awesome.me/webawesome/react/markdown/index.d.ts": "bafkreifok3udyrxrvawriahx6qaiqijuetfkwrqymsdwucor4yofzlrbwa", 1812 + "vendor/@awesome.me/webawesome/react/markdown/index.js": "bafkreigeogjx7l7qhj3b57bt56az3esgp6u4shdebt2qdxfhg45wwfpzqa", 1813 + "vendor/@awesome.me/webawesome/react/mutation-observer/index.d.ts": "bafkreicivvog3gcmydbalunbrobqbrkr2zszbyplyqdczav6opbpm6f2bu", 1814 + "vendor/@awesome.me/webawesome/react/mutation-observer/index.js": "bafkreihvun7q4rwm56pnshl6gx6lpgd53lohteimtzvjlximup4dnd3mhe", 1815 + "vendor/@awesome.me/webawesome/react/number-input/index.d.ts": "bafkreiflqofnrtaooclyzofa7k2krsu43qm3xhnneenredphvlpqjuwqnm", 1816 + "vendor/@awesome.me/webawesome/react/number-input/index.js": "bafkreifpgn5ulzrz6v7357rl5bauadxqpa2d33wgwzafwktiusywf55kke", 1817 + "vendor/@awesome.me/webawesome/react/option/index.d.ts": "bafkreiakduxeublvubl6f42llnd4unotywiorycwcu2up3y6o3zsi2i3cu", 1818 + "vendor/@awesome.me/webawesome/react/option/index.js": "bafkreie22sxki4pv6hwo2nnpk4rrksssbe7baqkl7rxwgxwbvy3uoeekri", 1819 + "vendor/@awesome.me/webawesome/react/page/index.d.ts": "bafkreiap6adrm6cs7jono7maabdnurct6bmiwmxqzggclf6xkjnoxgwpcy", 1820 + "vendor/@awesome.me/webawesome/react/page/index.js": "bafkreibwik2dsnpyulkzzwqkajtxjwp7uctd2svdp5exm6erzgrrcuyqfi", 1821 + "vendor/@awesome.me/webawesome/react/popover/index.d.ts": "bafkreia23ifabaqxfuu2ov6ialcd7llxli3dgonjaodsoxhkkvf6h4r7q4", 1822 + "vendor/@awesome.me/webawesome/react/popover/index.js": "bafkreigk7rcnlimbxr3g64kevfe733xfr33t3yntfnnjacqywkvohbsvle", 1823 + "vendor/@awesome.me/webawesome/react/popup/index.d.ts": "bafkreic2dvapzgt2zqdaiexxdenehz2nn2vuaeovt42mjlzg6arv2xeucq", 1824 + "vendor/@awesome.me/webawesome/react/popup/index.js": "bafkreiayuzaziq2qvbl3lk5w76oyvrcyga32mx6tj4dy7o2iy26d2cquwm", 1825 + "vendor/@awesome.me/webawesome/react/progress-bar/index.d.ts": "bafkreiegykshsdgig3mjy5cftxch4qib6cb5zpixqsqns5pqnvfuqajxla", 1826 + "vendor/@awesome.me/webawesome/react/progress-bar/index.js": "bafkreihpv3cjspj4zb5rtf4c6uhiqk2amwwyl73dib2fdbhunnxbjtwpba", 1827 + "vendor/@awesome.me/webawesome/react/progress-ring/index.d.ts": "bafkreies52noc2snaobynrg54nxnxkaiaxb5mtpdv4uywo7yr4mhcccgku", 1828 + "vendor/@awesome.me/webawesome/react/progress-ring/index.js": "bafkreiazwprmzafyxl7xgig3ghgav3u6jwysm63csfqrjtikmzekovyxr4", 1829 + "vendor/@awesome.me/webawesome/react/qr-code/index.d.ts": "bafkreieqzkr2iuqvuy7rvqj6x7zktcil665uuy4rrw4mblcbist47t3p5u", 1830 + "vendor/@awesome.me/webawesome/react/qr-code/index.js": "bafkreiaosegu76k6deuzdc7jknfycnn42dsdc5lil7fimtcli2ib2v5iym", 1831 + "vendor/@awesome.me/webawesome/react/radio-group/index.d.ts": "bafkreiflrm3yedzy3wemreacufrbxc4xkjj2ecysiyhhqz7rnyjac7xela", 1832 + "vendor/@awesome.me/webawesome/react/radio-group/index.js": "bafkreifsblrx27gji4iwonbsw2h3cxkggino6z4zcnpjqrlwpdaswpjp4m", 1833 + "vendor/@awesome.me/webawesome/react/radio/index.d.ts": "bafkreickx77c5vweobglydue3cj74eqpeh3uhz7iakx5bqls6cah75jomm", 1834 + "vendor/@awesome.me/webawesome/react/radio/index.js": "bafkreidoawqn3ouzgvcmbkdcqtw347i2p3ky6wt6w2kynzpgwntgiu3fgu", 1835 + "vendor/@awesome.me/webawesome/react/rating/index.d.ts": "bafkreiellpjxeh3utt6xim7z2a3zzr2p7bobtidb5bj7yo5flwkg4nfrge", 1836 + "vendor/@awesome.me/webawesome/react/rating/index.js": "bafkreig7pg35mk4z5qs7im7wwbzqvrzcgodksftf6l4z6b5mxedadqqt7q", 1837 + "vendor/@awesome.me/webawesome/react/relative-time/index.d.ts": "bafkreifaobt7bfuuyhpi7eraxhsibjwrh72dkyhvlifrrfxhaevtccg67a", 1838 + "vendor/@awesome.me/webawesome/react/relative-time/index.js": "bafkreihgbkw36wuqda2ebytc56g5bcrj367grtlmepzky727ouxigyzptm", 1839 + "vendor/@awesome.me/webawesome/react/resize-observer/index.d.ts": "bafkreidonuqmz7nzbhofb5o4rswghzf24bh32kwiv2t5xaxokvsoqc65zm", 1840 + "vendor/@awesome.me/webawesome/react/resize-observer/index.js": "bafkreiea2dj5x7colonspgvwbffdbstxixudvmurqhu2qbpwdlv4pluebe", 1841 + "vendor/@awesome.me/webawesome/react/scroller/index.d.ts": "bafkreigezuijgwfjfc27nuzap5tc5gyomtkmbn7d4sjcyfoukhiyrgvla4", 1842 + "vendor/@awesome.me/webawesome/react/scroller/index.js": "bafkreib36wa2xajagagwz63tmaw2wcmmeqhdkfct5s2jh5oxieorl2hcdm", 1843 + "vendor/@awesome.me/webawesome/react/select/index.d.ts": "bafkreieglj6hfrkpnmfx7foi3d4rtdm6sswopvkvhtqc3u5duxvucqk7na", 1844 + "vendor/@awesome.me/webawesome/react/select/index.js": "bafkreib6unfjns53wmytowrkvmvfvrcqvt5vicw7xh45mov65ctbb64xfi", 1845 + "vendor/@awesome.me/webawesome/react/skeleton/index.d.ts": "bafkreiawbdsykpzaxhblzpvsf5mg4ho775nmaheimjusgb2l2ey5i54ewe", 1846 + "vendor/@awesome.me/webawesome/react/skeleton/index.js": "bafkreiak4muiaej27u3aicaazmtsxiiog6i55yy5lhbfco4r6u5nbkk7sq", 1847 + "vendor/@awesome.me/webawesome/react/slider/index.d.ts": "bafkreib4nxpysftmsb5edomaynrwugbuiynryck2du2rvd2oqhbs3sneu4", 1848 + "vendor/@awesome.me/webawesome/react/slider/index.js": "bafkreia65zabh2uruqqawckxiom32ekybcbv5frtsizqz727jlcb3w34l4", 1849 + "vendor/@awesome.me/webawesome/react/spinner/index.d.ts": "bafkreidos6f7b2fkyioukq4f3glsnrqb5eyrwx53xja6oe5oojpo3pfji4", 1850 + "vendor/@awesome.me/webawesome/react/spinner/index.js": "bafkreidoes2r7wsuywgkqddbxvrqnojbc7u6evlveaqohtyqwcnvsamei4", 1851 + "vendor/@awesome.me/webawesome/react/split-panel/index.d.ts": "bafkreif2nwbtfbgvx3cstznwh2j2a4nweswp2l7jpjc5vymy7i4czwkn24", 1852 + "vendor/@awesome.me/webawesome/react/split-panel/index.js": "bafkreid6dy2n462g5plt5ibet6qg6c73edwa7jkegjhx3pl5qg5n6lauvq", 1853 + "vendor/@awesome.me/webawesome/react/switch/index.d.ts": "bafkreifuwez6dous7jnqiwtga3mtbhzjnrutpjxkelankvgn532idywima", 1854 + "vendor/@awesome.me/webawesome/react/switch/index.js": "bafkreid6riaoqjjuszxv5z4sebbeaohkhpl7zivctwjsez35jfvscb2nd4", 1855 + "vendor/@awesome.me/webawesome/react/tab-group/index.d.ts": "bafkreihh6mev2achtalqgvv7zbp6z4dcfofi5wmpxfsbhg6n5kvcxcpcoi", 1856 + "vendor/@awesome.me/webawesome/react/tab-group/index.js": "bafkreihhx6mw55p7beayji673vgcswaddbf3otpgxjcemt5uaeqgjtog3y", 1857 + "vendor/@awesome.me/webawesome/react/tab-panel/index.d.ts": "bafkreihsu4pepv2ro2poch6vhi2kiyth6rhrkhzm7f3a73e7qkd7akkkgq", 1858 + "vendor/@awesome.me/webawesome/react/tab-panel/index.js": "bafkreih6q3lpdatm2p4lz4udi2r7pq4istlakiatoqbvsvwjnc3fflnuxy", 1859 + "vendor/@awesome.me/webawesome/react/tab/index.d.ts": "bafkreiar3h3y3igbq4uzrbxrahwhnxqrejwfytpdttnye3e5acyi235ole", 1860 + "vendor/@awesome.me/webawesome/react/tab/index.js": "bafkreignhd5nycjlhhfoq5vg2udfs7uaijkpicn4ppokok224nglcsjuiq", 1861 + "vendor/@awesome.me/webawesome/react/tag/index.d.ts": "bafkreidfvtsxf7l5acuqdnjvso7ds3tmdicbr2tqep7ihjmcd44p3wx5lm", 1862 + "vendor/@awesome.me/webawesome/react/tag/index.js": "bafkreick3kxg5qlvk7g2mhhy2jtiroxntiq3yrsvgyuil3kt7isgh5vrt4", 1863 + "vendor/@awesome.me/webawesome/react/textarea/index.d.ts": "bafkreibitlqptethg36dqbsluestggh4gd7a66w7k4lyzl2lpyk5oj22vm", 1864 + "vendor/@awesome.me/webawesome/react/textarea/index.js": "bafkreieqhjchly6ajqqy5e4uf3nqenawdpnmjpvg3bjceqy4vumhklpjs4", 1865 + "vendor/@awesome.me/webawesome/react/tooltip/index.d.ts": "bafkreib4ietxsh42smfj6ndwbpeggs7pqqubxndivdj6saybjgowefzqna", 1866 + "vendor/@awesome.me/webawesome/react/tooltip/index.js": "bafkreibnhntpgwnanxjq4uaraa457pldr4eaqvkk5str7vvdfyankudof4", 1867 + "vendor/@awesome.me/webawesome/react/tree-item/index.d.ts": "bafkreigwfuzxyix5uergx4ldfznssl7yqg5jcrgpdorqnninfrfmbt2kty", 1868 + "vendor/@awesome.me/webawesome/react/tree-item/index.js": "bafkreiaopojvjaths6y5pikvewcejjmamokup7cqeq6tqxkf5mdsag5mam", 1869 + "vendor/@awesome.me/webawesome/react/tree/index.d.ts": "bafkreiexyxdhh5triohlrnydjmhl2ylbxtnlaurzrkb2gwiup6qjzqousm", 1870 + "vendor/@awesome.me/webawesome/react/tree/index.js": "bafkreifjg4xxfgzyiftr2kzb4ntrzfxf3a3jqcw2ifrgmmrerzp6wttici", 1871 + "vendor/@awesome.me/webawesome/react/zoomable-frame/index.d.ts": "bafkreib3nlfaajuzal5am73xudmgzuvvsfvj35rv6xtbxmmen3pxroafra", 1872 + "vendor/@awesome.me/webawesome/react/zoomable-frame/index.js": "bafkreibilcbaxkoqgejsqbxdtndhut3mngxjxaypqwg2fwyhswvetwhzai", 1873 + "vendor/@awesome.me/webawesome/skills/webawesome/SKILL.md": "bafkreigfjlzixzzcgygodvnzftwo7rkbjyalxdhq2whfufdgie4hrv6xlm", 1874 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/animated-image.md": "bafkreiaaimmpfvrue3ujrycldyc5l6u56k76yrfvjzjtnr4ivqek6atkzi", 1875 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/animation.md": "bafkreiexffq6jsngmomz5grk4l7h4nzrkxxv6d67oc5rt7rd65m5gcyisy", 1876 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/avatar.md": "bafkreieqv5pnxbhv3xkuz6v7x4hvnhs7wpsc2gk3ei35t7ipdpehgzjwzm", 1877 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/badge.md": "bafkreicc4imxiu2ii5inyoj3a3s3bijjdxypo3uu7jf76otgmtaxf7idta", 1878 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/breadcrumb-item.md": "bafkreihte4ofwvrbpfkbjxkfaykplwliryyb5zbt4xufbqeldtxccyvaaa", 1879 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/breadcrumb.md": "bafkreiapqzkxahokgav3kc3f6cfqgdziswmfg7pdeww5h25mvt4kymgoee", 1880 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/button-group.md": "bafkreifnx4jr2bwrxsgggp42gocfrqjmmpmtikecdpbbkvfzltjdf2vyvu", 1881 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/button.md": "bafkreihuw5y3wo7dam6jsgwoqenz5y7rtkiwl5b5p3xghrvcjjs5ta6jne", 1882 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/callout.md": "bafkreids5cdy54ikavuxpgmh4uigizh6sv2ga6zrlfmsbywkovzlsdb2ca", 1883 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/card.md": "bafkreifc7zen6s5srl2u6tcsyxb4vioptwzjdifhxrtchblzxg3mtc57ri", 1884 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/carousel-item.md": "bafkreiayika3slfnobfhni7z4vxojgqkboom6gnsqkiukkitfvfcqtipja", 1885 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/carousel.md": "bafkreibaobctqpclsk5jndtg5a2n27zrpqvcmxnnpd2muqsmlvpd7wn6qm", 1886 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/checkbox.md": "bafkreie3i3gtwsmxqp7h6k6eofldlnzgefsi2kpxvxttrz5o3s4ugnftxq", 1887 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/color-picker.md": "bafkreidobtjjgqhocvoa3seitcflpajtmawtkddjwztrg2befrevqly4ga", 1888 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/comparison.md": "bafkreia4csbovzz645fqbafhasucjetjkxl6gsvge47rnfs5jt4rdv3kai", 1889 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/copy-button.md": "bafkreidvbhntrpkhiontkpyz4nhdmqhkzfxc3e26djebycqlq4rn64z5bm", 1890 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/details.md": "bafkreifelpl2r7kbhl5yhadauioouwbjzkh7ugtieo7sjpspdszymdnj6e", 1891 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/dialog.md": "bafkreiddc66a7tyzdfttdcrpvusnzby5zcmjhoex7as5ilsktt2lc2mn6y", 1892 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/divider.md": "bafkreiersxbolxza4y2wcidru4hfj3ikegc55oiylqyd355yy6loxw323a", 1893 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/drawer.md": "bafkreibxi5yhbhvhqfrluq6fd2ra4tgce7723a6hsm4pwkmikevd5er7mm", 1894 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/dropdown-item.md": "bafkreibwrwz2nikcsqkorrrznifydcur42ktiup4pjixpt6x3xnv2bs56q", 1895 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/dropdown.md": "bafkreidiptaberz5xkgkp6nhko2aus2lvsn36mharwhyst5sz6urp2fjeu", 1896 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/format-bytes.md": "bafkreie53gboplmqmvj5cw6wott257bman7g5id6ufwqb53srcpejtzwme", 1897 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/format-date.md": "bafkreialo77fida74jkq6oxdta4xupguxeird2ip3sysbaskhbqtxtg4e4", 1898 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/format-number.md": "bafkreidiutccfy5ujfmaois7crjcenxhh2d7kyi4eofwonfj4nkfgpbuf4", 1899 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/icon.md": "bafkreif3xacuo6vc55swuf6e44rp37wooku7v2tsaavqgf7thwm7sqinkq", 1900 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/include.md": "bafkreiecmygxaugbcufujz4a3zur6yezxguwjf73zhr43k3jk5y4ksip7m", 1901 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/input.md": "bafkreig66izaahabhdzfkbxzrpt4tjlac4rgptvgplorp43pb3hcvtmkxm", 1902 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/intersection-observer.md": "bafkreibkoglea4hkffqa4q4ebz3tdq5guwa6nnw5ww657rqjy76e2ncilu", 1903 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/markdown.md": "bafkreidjaqklzszcdsidkdx463wi7ixgwxit2ry6cvu7jf5xloecda2cgi", 1904 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/mutation-observer.md": "bafkreigio4oncjd6kkiyhseufsorn3t6pt3gb4uiqpp6e57bcrq7jqi6hi", 1905 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/number-input.md": "bafkreifgqhonuahzozyor2lehtrw6h2sym3eoqmanbuf7hisemcgztm2ce", 1906 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/option.md": "bafkreiar54vn2qjhcdzjth4hztlvcdsumxbitm4s2gwwopszztb5zonxri", 1907 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/page.md": "bafkreig2tvgkyiiqwvuoszkxmz7padahv3e7xrudsqsmvkncfcr7rpxqba", 1908 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/popover.md": "bafkreidgtyyi2mr6hqexi5xahipjjvlafgrvc2wxdw5tiudwtrccgzrhxe", 1909 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/popup.md": "bafkreifdmfce7razki5kesflvh43ezx6aoh6ycht7x6qys57wivjlhlj2a", 1910 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/progress-bar.md": "bafkreihqkm6erv2vno3awjqytppt4ri3blzraoly3qbrg7n6quosx54asy", 1911 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/progress-ring.md": "bafkreih7r3d6bl64gu5vbyub5sqjdqployib4ixbbybw4gvcmb6s5v22lm", 1912 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/qr-code.md": "bafkreigobltsmfgoibv7isoypmgzegoga5d3js7fff23geqd2rutkvd5l4", 1913 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/radio-group.md": "bafkreifdpa3tdfss46jviru27leenryaqryp6i2bkemkhauxp4osxwn4jm", 1914 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/radio.md": "bafkreieroxhdklaqvw5wosbakvhdwg3ito5daf5lusdytaipyv6vvjpkzq", 1915 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/rating.md": "bafkreiecixmpzmujp7wswkqzljwvl3jmsgppd2pot33muzpfxl2f2ce6fe", 1916 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/relative-time.md": "bafkreibhahv3mu66eca2otoytmzl5cbnvrsrvwh6cts7hsie3op7tndrlu", 1917 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/resize-observer.md": "bafkreideenpny2c4ugsljutb37fr6qk2l3rff3b7lngy3lrqhp4kc474n4", 1918 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/scroller.md": "bafkreih3zkbekp7zfzfyyptztzcr6ntj4upq2wwnvegyjai2bcw2xq2tpa", 1919 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/select.md": "bafkreie77zg7kdd5yw2f46ll3wir366fmoyxoveb44sdr6bkesbj3hhe7m", 1920 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/skeleton.md": "bafkreig2ftvp3koefej4pg6rceovuds3dxzvabxdwj3hzgcj3rjvmzyxse", 1921 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/slider.md": "bafkreid75l2bzrsjgf2bfdqr7smryzqyzthrdmwzudqjtmugorh65nrjeu", 1922 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/spinner.md": "bafkreigyhkqhvds2mydx7pomzc3d3xdnnbrvg6a5rz3tjkhxk2ib2kyzju", 1923 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/split-panel.md": "bafkreifp3gg6ij767ybxgfkkcrpxe6uoxeeafuytp6nugonki5w5bno6au", 1924 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/switch.md": "bafkreif2v5gwalxadcqhtksrc4ncburbrhty66zvktupqjmy5dp2vdq5ra", 1925 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/tab-group.md": "bafkreicngn2a7shu5qgrkpi5ojo62aku6m26fqrluczjsuozqpp4dxg7ji", 1926 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/tab-panel.md": "bafkreiesisqdbanxrhxlmdw6njj3tibjd252hjfgzgpc22ga2qxfcslyte", 1927 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/tab.md": "bafkreidynw2jofzzeh4iaoijl6fynduxfnovgsxooce2x5br7cwzhqgce4", 1928 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/tag.md": "bafkreidj67nvjtumvdhchv4euhu4eprc6ijepbnblrqv5yanbsulitcgp4", 1929 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/textarea.md": "bafkreigalvvuzymrokuuvodihmpm75uweqnqfjfkegwzy73ltsaikyheje", 1930 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/tooltip.md": "bafkreianag22igpqzcdbgrtsoiakg2oa6tngqqruzeialqtam4n4azsbfy", 1931 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/tree-item.md": "bafkreie3fth4i65wi2zipx4hxt3pqptxwvubnd5e33phw5mkn32g5dynyy", 1932 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/tree.md": "bafkreia2h4lkdyzq4mjgpzixu223ykwsfki2rmah2r3iwuzscxwc3wqv64", 1933 + "vendor/@awesome.me/webawesome/skills/webawesome/references/components/zoomable-frame.md": "bafkreih6nx5j6wwvsp4e3osccer6veg7xypm36vefrthu7kupe4e3ozyqy", 1934 + "vendor/@awesome.me/webawesome/skills/webawesome/references/customizing.md": "bafkreif4be4s7xs4wueyzvj7oq2xpubpsa2htqarqpganbozgj23equkf4", 1935 + "vendor/@awesome.me/webawesome/skills/webawesome/references/form-controls.md": "bafkreigbukwajkuaiiylli2cap3kquz4pcwocwisglzgdubknxxljn6hk4", 1936 + "vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/angular.md": "bafkreiatawe777kbxa27tuxkpmhtzimlb6dd4w4mhzmhup4nvxqhusgjvu", 1937 + "vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/react.md": "bafkreidre7tjkxognbwuxhj7vt457fc5rsi5dsrnegcab7oab2rk6keszq", 1938 + "vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/svelte.md": "bafkreifwjopa5utkjmhsj4avxch6q6jbyhrjsfg3pyfhmovb6wbujdotly", 1939 + "vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/vue.md": "bafkreieo4lqx4hlr5aopcqpuwzxvorxnrosondaawm6z6yje3swmvqdldu", 1940 + "vendor/@awesome.me/webawesome/skills/webawesome/references/installation.md": "bafkreibfqqbqn6ixqz7lnizw7ltcmj6ua62o77e4z2gyjezojc2cbdofoi", 1941 + "vendor/@awesome.me/webawesome/skills/webawesome/references/localization.md": "bafkreieyk5kzylpzb3zikhvu2rrb2fkprhqnicivhlfireeqebj3bvdena", 1942 + "vendor/@awesome.me/webawesome/skills/webawesome/references/support.md": "bafkreigexzlbanyxhfgxpzm5g3pxyfoorcbhkw2uafdhycz5a62fya3yhe", 1943 + "vendor/@awesome.me/webawesome/skills/webawesome/references/themes.md": "bafkreid554opk5yfvkh2kxlsq4546z4nrrgr3lfxpoa7sez77jrvf4qnme", 1944 + "vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/borders.md": "bafkreidzfl7ssjgskr55thdx6xm6wqrl2qa7xjyu2waaa2rbxeiwudqcl4", 1945 + "vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/color.md": "bafkreiahboavzmpg34ag35w5ql7bezdefoumarasi5st4xiyftgwhkysdq", 1946 + "vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/component-groups.md": "bafkreicz7gwk2zh6r54alzbvflp22s7nxqhyfn6wqize7mjsd5nfvs3hpa", 1947 + "vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/focus.md": "bafkreibt56fsl5wchd24k5wnyiqinlxxlinhyyfssafvpbykejtco47zba", 1948 + "vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/shadows.md": "bafkreiflslxxcd2hppm3zlk4axj7ujkdnoladch7er4hjwt3uot3yo3uvu", 1949 + "vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/space.md": "bafkreibobkiprsftri4jx5r6kqa6eqiobj5fzlqcgrqatywzltfqfnma44", 1950 + "vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/transitions.md": "bafkreibi3ilxlwqwwh5vh4qtk7gklkjtj53m2skkcyb5vqnqovxp2sybdi", 1951 + "vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/typography.md": "bafkreialxtalog3ueuqkq3n4und3e2zci5ktlrihy6dnzewpeogtdh3irm", 1952 + "vendor/@awesome.me/webawesome/skills/webawesome/references/usage.md": "bafkreih5t67aiobybnani7jikynkduibuls3yk4ups5smwt2afjhcfqe7m", 1953 + "vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/color.md": "bafkreibyquyarldey6oigw5h2tedloodr7idu3otqsndx5yseyvj4xlq2u", 1954 + "vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/fouce.md": "bafkreifdahr2qwd64bevie63slxlympud7p74ermp2ryjltyun2k2ucepm", 1955 + "vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/layout.md": "bafkreid2radr5tmpriqjiytx2kzk5udmjdys4aa3alq74h3jkpjyxgcqvq", 1956 + "vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/native.md": "bafkreifjul6gsqd3tt3c4qiwmqdzdl4s4w3opdxmf2jeguzmn6a4johoge", 1957 + "vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/rounding.md": "bafkreig3eeg2a5yfw2lzatuyedle5nza2iprqfffqaqzudlq7kjxzyqp6m", 1958 + "vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/text.md": "bafkreicehn7gxt63cphngayw24wexdyi3vwaslgyxjzpjor2awnpffynay", 1959 + "vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/visually-hidden.md": "bafkreifc7sntk2s3z34i34n7wunx3sd6q4lkjl32urxkk2zlgcjo6p3lsu", 1960 + "vendor/@awesome.me/webawesome/styles/color/palettes/base.css": "bafkreie2onky2mzp24dxdtzk4wu4arv62m754ww4fr372rxrn3cqia5qce", 1961 + "vendor/@awesome.me/webawesome/styles/color/palettes/bright.css": "bafkreierxkqshujsvubxkymx27v67iw5wumqcwoceqofog6aag7wqepfpq", 1962 + "vendor/@awesome.me/webawesome/styles/color/palettes/default.css": "bafkreid72wbf2sds2ief5thim53nhvjyhrqgrawvmz7w6mif6bfrltgwty", 1963 + "vendor/@awesome.me/webawesome/styles/color/palettes/shoelace.css": "bafkreigaxrgruw53dwva3hv3ypigscswwm6hipmd7afpj2vmj6aaszrsgi", 1964 + "vendor/@awesome.me/webawesome/styles/color/variants.css": "bafkreifhmtkjir4botkvhbnckf3wwi6lkxx3ngmcnz7ukky6kwawspjdza", 1965 + "vendor/@awesome.me/webawesome/styles/color/variants/brand.css": "bafkreifcqkmdca37vxly22ndsmd2hibelijoe23zdfeb4cgpfyh64grnsi", 1966 + "vendor/@awesome.me/webawesome/styles/color/variants/danger.css": "bafkreiamwo7uggg6jam37uop4oa63ddqrr5drq2dixolfo2kglczn5bto4", 1967 + "vendor/@awesome.me/webawesome/styles/color/variants/neutral.css": "bafkreighhw3oblelaf7qah7teoeptsel6qcmgclkjeo3ecevdxxfx7bavi", 1968 + "vendor/@awesome.me/webawesome/styles/color/variants/success.css": "bafkreiacrv7c6uoiqfkeg65cdqa4mra34pnnhjpslz7vqa5nztqgvehava", 1969 + "vendor/@awesome.me/webawesome/styles/color/variants/warning.css": "bafkreifrbpk4ihb4u6b5ioewqwwasrrwpzt2dqcljlrptfmvsuclc6pmje", 1970 + "vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1971 + "vendor/@awesome.me/webawesome/styles/component/form-control.styles.ts": "bafkreibdydtb4qskcktqipksdnu4nhz5rlh7eh2eevvh6pk2uqntd3ba6a", 1972 + "vendor/@awesome.me/webawesome/styles/component/host.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1973 + "vendor/@awesome.me/webawesome/styles/component/host.styles.ts": "bafkreibsyfxihiaqkbtyfpouo7ptw44jqny4ifuzkky6liwk55ukskqapa", 1974 + "vendor/@awesome.me/webawesome/styles/component/size.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1975 + "vendor/@awesome.me/webawesome/styles/component/size.styles.ts": "bafkreieh7jcgbmwaquopal2knxhxhljj2725dx4subns74v5uombn2q6m4", 1976 + "vendor/@awesome.me/webawesome/styles/component/variants.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1977 + "vendor/@awesome.me/webawesome/styles/component/variants.styles.ts": "bafkreihuwssoyugi2l3glpl7yzvm53xqg7xpmcqz6dzo7nvmbjgzn7idbm", 1978 + "vendor/@awesome.me/webawesome/styles/component/visually-hidden.styles.d.ts": "bafkreigloxiqliqltb3g6q6ixidwjbcgqmt5le2hf7fjrrbs3tcrskpya4", 1979 + "vendor/@awesome.me/webawesome/styles/component/visually-hidden.styles.ts": "bafkreibp7qtsfyltv3xiikhpgrpqrulnmwbgzeqlgaez7acf7ho3iywzbe", 1980 + "vendor/@awesome.me/webawesome/styles/layers.css": "bafkreibfgszzxtipjbgmw54a56uuekox3hm3nvqdxrwy3n5hfjkwxcwowa", 1981 + "vendor/@awesome.me/webawesome/styles/native.css": "bafkreiczt7expqa5lv4bjsjutdikbpnxqtzjogtwiaux7ekjazyhwr2wce", 1982 + "vendor/@awesome.me/webawesome/styles/themes/awesome.css": "bafkreifqpdtklism4jinow2xxhll6yxepceoqacluytilm2vpxqwqoatfq", 1983 + "vendor/@awesome.me/webawesome/styles/themes/default.css": "bafkreiee7yqopp6mbwbi2mu2lcyltvclhijk63w6b7yhv43rkmyhgqlitm", 1984 + "vendor/@awesome.me/webawesome/styles/themes/shoelace.css": "bafkreiblmt3kwgpe2kwtgwbqj5npvhk2opjndejrjtovelqht7hdg4sbt4", 1985 + "vendor/@awesome.me/webawesome/styles/utilities.css": "bafkreic46fcaxay4u6kxddz5bsuspdmz2hdvydy4b6kxhb4rntpgr2fnbe", 1986 + "vendor/@awesome.me/webawesome/styles/utilities/align-items.css": "bafkreihor6nzxodkzzrfffgzl6cmbt5s7ldae7wlcwb774kimawrjrnkwa", 1987 + "vendor/@awesome.me/webawesome/styles/utilities/border-radius.css": "bafkreidy7ioezfpm43afu4ncemktikvfsifycjgdwwc3jt4hyt3yjlvkjy", 1988 + "vendor/@awesome.me/webawesome/styles/utilities/flex-wrap.css": "bafkreihsnm3hwk2r2onoaecjayulougf2x4rc2fs7gzkewdur3cx6sep6a", 1989 + "vendor/@awesome.me/webawesome/styles/utilities/fouce.css": "bafkreidtqbbxw4px7ixu6nturrpmo7sirnvekwd54ksvgw6qrmjplx72pa", 1990 + "vendor/@awesome.me/webawesome/styles/utilities/gap.css": "bafkreidarr6azd3wrn3v3io34xq5gmxqtlccstmjxtpp2c5deelfbkpjsu", 1991 + "vendor/@awesome.me/webawesome/styles/utilities/justify-content.css": "bafkreiambkmxlmsf364hswarjivby6fwlk27pfmv4eo2cdj2l5tumxnph4", 1992 + "vendor/@awesome.me/webawesome/styles/utilities/layout.css": "bafkreicowrqy2dqcugmw4zazpmlnpglp6sth4pp6rj3yrwdttxy7yzkw74", 1993 + "vendor/@awesome.me/webawesome/styles/utilities/placeholder.css": "bafkreibqt6o6xl4lwnvldhmqht5pncuh3fp26esovheeg7je2egcbtur3m", 1994 + "vendor/@awesome.me/webawesome/styles/utilities/scroll-lock.css": "bafkreibzmgheh36qgcofe6x3ztmnbabb36uo3qsjxst2weo24zg433vleq", 1995 + "vendor/@awesome.me/webawesome/styles/utilities/size.css": "bafkreidbl4oq7s5ygjxqnfyxkowielmmsuxgyelt6bbq2sn5sum6frzkhi", 1996 + "vendor/@awesome.me/webawesome/styles/utilities/text.css": "bafkreieg2smrk3bos4e4w43djt2fy24hgc2twkkcepjga4lcuflij7pdoq", 1997 + "vendor/@awesome.me/webawesome/styles/utilities/variants.css": "bafkreigm4je6s6awgzwy6675zhon2lrf7qfopjrub4llbnj64wfzgmda3i", 1998 + "vendor/@awesome.me/webawesome/styles/utilities/visually-hidden.css": "bafkreihjmxbcvpgeui3sle3raqzjlgijw4ij3kkdis4nzgskduscwoyjpi", 1999 + "vendor/@awesome.me/webawesome/styles/webawesome.css": "bafkreicdbmout7nc5myl5tc2ufyt5e5srm7iddnullqd5c3l2rn4xqt664", 2000 + "vendor/@awesome.me/webawesome/translations/ar.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2001 + "vendor/@awesome.me/webawesome/translations/ar.js": "bafkreifqqmqzjtv3qq6doyx7nygmgln5jgv4yz4ywnmhkxjcbpcl3nlf7a", 2002 + "vendor/@awesome.me/webawesome/translations/cs.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2003 + "vendor/@awesome.me/webawesome/translations/cs.js": "bafkreidllc7d4q7sjhvc6d4g4k7endogzbg4judjofaeglolpfdjsfensy", 2004 + "vendor/@awesome.me/webawesome/translations/da.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2005 + "vendor/@awesome.me/webawesome/translations/da.js": "bafkreieydenykupoxmy44djktpalpumf2nwsgrmeukmdethzvjjmrin6eu", 2006 + "vendor/@awesome.me/webawesome/translations/de-ch.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2007 + "vendor/@awesome.me/webawesome/translations/de-ch.js": "bafkreici47t6htrfstcngfqy37ltauykbwlpooqy5o7hipb3gdh5457tu4", 2008 + "vendor/@awesome.me/webawesome/translations/de.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2009 + "vendor/@awesome.me/webawesome/translations/de.js": "bafkreiavhdp3mh6wo3s54jtt3q6ztwmyvjow6ba6u2zgk3sc6tbllgw45u", 2010 + "vendor/@awesome.me/webawesome/translations/en-gb.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2011 + "vendor/@awesome.me/webawesome/translations/en-gb.js": "bafkreignmytcrxl2tq7hvcodk62mtnf5g7vtbbvhl5id5qo2yp4tjns7ni", 2012 + "vendor/@awesome.me/webawesome/translations/en.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2013 + "vendor/@awesome.me/webawesome/translations/en.js": "bafkreig6xpaxth355yxizf52valx4ymu5wcbpra4xow2iki7a34dhyvf4q", 2014 + "vendor/@awesome.me/webawesome/translations/es.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2015 + "vendor/@awesome.me/webawesome/translations/es.js": "bafkreifoe6u7bgwbnuroaepij7ifjxcemcxy2v7akdt44uobbljxkm44dq", 2016 + "vendor/@awesome.me/webawesome/translations/fa.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2017 + "vendor/@awesome.me/webawesome/translations/fa.js": "bafkreickv2axzuiu5nwkujyzxjpw65j22lcbfojl7v35veibgromhdpdna", 2018 + "vendor/@awesome.me/webawesome/translations/fi.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2019 + "vendor/@awesome.me/webawesome/translations/fi.js": "bafkreidtprtflhsgsibenf7ublonesybjmizjzo6dcrh55hgvqenbgfhyi", 2020 + "vendor/@awesome.me/webawesome/translations/fr.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2021 + "vendor/@awesome.me/webawesome/translations/fr.js": "bafkreifazu66ndbg6htwv5o3t3d6tng22ytqmlcvudtql2w4rktwephphq", 2022 + "vendor/@awesome.me/webawesome/translations/he.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2023 + "vendor/@awesome.me/webawesome/translations/he.js": "bafkreiarlx3tmiaee5d72abbeakdv2hudn5wkuq4pr3xkzvmsdq6mp44pa", 2024 + "vendor/@awesome.me/webawesome/translations/hi.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2025 + "vendor/@awesome.me/webawesome/translations/hi.js": "bafkreifao655o3kgznefiddfdo475l44rwib4pxe5m2y26qipildrogqrm", 2026 + "vendor/@awesome.me/webawesome/translations/hr.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2027 + "vendor/@awesome.me/webawesome/translations/hr.js": "bafkreifb6x26otsmcuvivajwn2kjo2m6yqk3obpo62spl5rvc6si4tdjna", 2028 + "vendor/@awesome.me/webawesome/translations/hu.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2029 + "vendor/@awesome.me/webawesome/translations/hu.js": "bafkreidaaxcuttrsydqarilt2byc7wgshdoy3alw34sdrxtgqgak3yiloq", 2030 + "vendor/@awesome.me/webawesome/translations/id.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2031 + "vendor/@awesome.me/webawesome/translations/id.js": "bafkreidcejk66ltf4grr3rgn34jqssuibrbfpboajttttld3rmdem7ljfu", 2032 + "vendor/@awesome.me/webawesome/translations/it.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2033 + "vendor/@awesome.me/webawesome/translations/it.js": "bafkreig25ijb3ddasdjlof2glgdmkhbaryjryoj3fw5s54mmps2mt3y3em", 2034 + "vendor/@awesome.me/webawesome/translations/ja.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2035 + "vendor/@awesome.me/webawesome/translations/ja.js": "bafkreidh6yfvnz5p7uhnapla4hyq2fvgtyqgq6uteq33qcmbrcrwyrobh4", 2036 + "vendor/@awesome.me/webawesome/translations/kk.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2037 + "vendor/@awesome.me/webawesome/translations/kk.js": "bafkreid3m7gfbrutzce3lzkomo7yy27gmvl2meftdd3eph6z7gjoahm7sy", 2038 + "vendor/@awesome.me/webawesome/translations/nb.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2039 + "vendor/@awesome.me/webawesome/translations/nb.js": "bafkreia2r3vl7c7yilrt7ghzygeylxkbkvmppgvxbipu34dc6wqkqdfzdi", 2040 + "vendor/@awesome.me/webawesome/translations/nl.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2041 + "vendor/@awesome.me/webawesome/translations/nl.js": "bafkreihmxtjumklqjvditmp4h3yxkdomfpkee74gofhjlamnepr3xipef4", 2042 + "vendor/@awesome.me/webawesome/translations/nn.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2043 + "vendor/@awesome.me/webawesome/translations/nn.js": "bafkreibcfqbaonqyjhyebkx3gaqmjths4vi4rlhsn2xge6kucbf6poioei", 2044 + "vendor/@awesome.me/webawesome/translations/pl.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2045 + "vendor/@awesome.me/webawesome/translations/pl.js": "bafkreifv7thcub5q3l5jffwnxz2oawvycj6jkr5xsmxelj65r4vuukpyfq", 2046 + "vendor/@awesome.me/webawesome/translations/pt.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2047 + "vendor/@awesome.me/webawesome/translations/pt.js": "bafkreibcbo6tj7dvwmvzuoohmj2yrmalrc3yoou6iia737jhzryccumuuu", 2048 + "vendor/@awesome.me/webawesome/translations/ru.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2049 + "vendor/@awesome.me/webawesome/translations/ru.js": "bafkreiho6j2bzp3myrtxp2xm4qpqssogsbvmxihslhdpz6ab4onfv7a5bm", 2050 + "vendor/@awesome.me/webawesome/translations/sl.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2051 + "vendor/@awesome.me/webawesome/translations/sl.js": "bafkreidbv2hpvu564l2gaerfiqwjgzzz56tfn3hb3akj37r4h5nms2dvoy", 2052 + "vendor/@awesome.me/webawesome/translations/sv.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2053 + "vendor/@awesome.me/webawesome/translations/sv.js": "bafkreihaonb2hvmkrpi7vwy7ctgfqqt5nb2qjwhj7mupvgceenwny5kq5q", 2054 + "vendor/@awesome.me/webawesome/translations/tr.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2055 + "vendor/@awesome.me/webawesome/translations/tr.js": "bafkreie4swxsiecjo2zb5sry655m2ccuyhjuh5u5rynv7eum7lb63c6ovm", 2056 + "vendor/@awesome.me/webawesome/translations/uk.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2057 + "vendor/@awesome.me/webawesome/translations/uk.js": "bafkreifeyozjhfne6hbh5kdsjpsprqr5tangt4xbpzhjosyqboc5uesd2q", 2058 + "vendor/@awesome.me/webawesome/translations/zh-cn.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2059 + "vendor/@awesome.me/webawesome/translations/zh-cn.js": "bafkreicdx6xm4yscyea5lok36cjfm767nesjjhhshb3pwmqfje5u6jrwgi", 2060 + "vendor/@awesome.me/webawesome/translations/zh-tw.d.ts": "bafkreibdydqdynaugx4mg2utq7n2z56nt3u57crc5fz5syohn2cy256hau", 2061 + "vendor/@awesome.me/webawesome/translations/zh-tw.js": "bafkreib53cvzg7q5eb66xw6dl2q7ltwrxjnoqh7dq7xucjlxinbelhzwju", 2062 + "vendor/@awesome.me/webawesome/types/svelte/index.d.ts": "bafkreid4txzbgbsyl37opndikuzd33du26jxttqp3m3z33sbh4bb3y756u", 2063 + "vendor/@awesome.me/webawesome/types/vue/index.d.ts": "bafkreig3jrucmynkwazcodaaft3zttp7lndmwpu5lved66esmqn4kzkxiy", 2064 + "vendor/@awesome.me/webawesome/utilities/animation.d.ts": "bafkreidwfk3xf7s3wcq7jcewgofc6pjl66vkmkfdzdljjdpmk6ja75l7xm", 2065 + "vendor/@awesome.me/webawesome/utilities/animation.js": "bafkreignq7ngm54qsb3tfqjodsvgx3yz7b3zowxplq6cjqqqwf5bsnqrqa", 2066 + "vendor/@awesome.me/webawesome/utilities/autoloader.d.ts": "bafkreifwopj3cmmegy2np4tok2ueb44rdeoplwu5hobwdifpzjy3lv4gs4", 2067 + "vendor/@awesome.me/webawesome/utilities/autoloader.js": "bafkreih6icweaxtkxoxvxqk7t4tx53nl64ipcmk43goj2hwha72s3wna5q", 2068 + "vendor/@awesome.me/webawesome/utilities/base-path.d.ts": "bafkreienihweulx6ilvijdfmvrpuvypfyzihqyryygtb5t6bjeyrg52r74", 2069 + "vendor/@awesome.me/webawesome/utilities/base-path.js": "bafkreiczdxdgxy65nziymq2crrkep53uqcukdynoot2pdd7oydmccj5nly", 2070 + "vendor/@awesome.me/webawesome/utilities/defined.d.ts": "bafkreicrnlejxiddfto5xvlupxhj3ptr6qnown35c5lzmdooe56hzyokxe", 2071 + "vendor/@awesome.me/webawesome/utilities/defined.js": "bafkreidoxsjnw5qpfhctlyp3x4jvjiawz3i2xdva4drjswjuiygeowhsb4", 2072 + "vendor/@awesome.me/webawesome/utilities/form.d.ts": "bafkreicz5i53tg2rrukzci22ykucpbvbvcahew33ht3r47hhdc3f6447ve", 2073 + "vendor/@awesome.me/webawesome/utilities/form.js": "bafkreibv6ro7nnuzjpduzsckvravzetfuvid2xk4nzshlnmgiddjkr3b5i", 2074 + "vendor/@awesome.me/webawesome/utilities/localize.d.ts": "bafkreigfi43qvquce33qnv3ohq5bqwccpbpsvm2llw32ar5e4uioshnmgq", 2075 + "vendor/@awesome.me/webawesome/utilities/localize.js": "bafkreidh5efrnrdkmvoexopmgjdxqka6g5xkpklktz3ffrt323g5mv5tsa", 2076 + "vendor/@awesome.me/webawesome/vscode.html-custom-data.json": "bafkreiev7tdo6ka4sa7lty4wrlrpaofeadeln2z37vu5dzvqbxpiamsdi4", 2077 + "vendor/@awesome.me/webawesome/web-types.json": "bafkreig7dlqledbosy5m22dpzo6d75pctgnsl3vgay37lbz22l7pk74ciy", 2078 + "vendor/@awesome.me/webawesome/webawesome.d.ts": "bafkreigxlxcztrhvsdwbtovo2ova7pma3mdzgx246ywpqse6hgiicu5oke", 2079 + "vendor/@awesome.me/webawesome/webawesome.js": "bafkreifnddfqvropxf7lpsqiplhizsx5g7kbv6ejoi474mecl5fpcwuerq", 2080 + "vendor/@awesome.me/webawesome/webawesome.loader.d.ts": "bafkreie5iunv7njz66rij2yglwm2tw5vq3t3amsvhloak2z4qcjzgcp7au", 2081 + "vendor/@awesome.me/webawesome/webawesome.loader.js": "bafkreihxtjt4e4ocj3vqk44wgifthzc5bzfieyyak5zylcuysip4iwyqo4", 2082 + "vendor/@awesome.me/webawesome/webawesome.ssr-loader.d.ts": "bafkreielbfcxkwwoc4fk3lj7mrx55zcmhxpvzuthnxhu5kwdbjrds2imwi", 2083 + "vendor/@awesome.me/webawesome/webawesome.ssr-loader.js": "bafkreigqtud7zp75hiiubjciyfibzuc2zhrp3guzznjyllyyf2k5jicjsu", 2084 + "vendor/@phosphor-icons/web/bold/Phosphor-Bold.svg": "bafkreihci5zzwjugodkwck5kseqa6d3wc2m65nuhknggqu3oug3z3fi364", 2085 + "vendor/@phosphor-icons/web/bold/Phosphor-Bold.svg.br": "bafkreih3wwj6wnrmll442h57xeohdrj6wzvlzwbhpxxhdmbdhxoghemlpq", 2086 + "vendor/@phosphor-icons/web/bold/Phosphor-Bold.ttf": "bafkreiaqucq4wt4bk2scb6pyjtzuytuyohsy5uw55ipwvadzvudsiot7wi", 2087 + "vendor/@phosphor-icons/web/bold/Phosphor-Bold.woff": "bafkreig6jxgj2ggpgm3dygoszesmtwovdyqqs6f5hzxmkcfoy4lhbm63ay", 2088 + "vendor/@phosphor-icons/web/bold/Phosphor-Bold.woff2": "bafkreibbko2sz2u6a36azscjmbel4sc3hana7c7rgcw6uwuxk36i6ealq4", 2089 + "vendor/@phosphor-icons/web/bold/selection.json": "bafkreibcj3z7tpa4d4y6s6jqyhxr6kmtwfas3dfdkyjxj4v7ybqctqdwii", 2090 + "vendor/@phosphor-icons/web/bold/selection.json.br": "bafkreihxta7vu27ze3qrpd2kxcr4jiuhtnyeg5kutnncdrpbp3fc645jla", 2091 + "vendor/@phosphor-icons/web/bold/style.css": "bafkreidhr6z4ydsn7bked2ib4letuhaaj4gvzxhrypqrxm2cmbutth65gy", 2092 + "vendor/@phosphor-icons/web/bold/style.css.br": "bafkreidihvtitqitduvf3e5tcbjiu6st2o7j7k47qivd6ghr74rl5uzl6i", 2093 + "vendor/@phosphor-icons/web/bold/style.css.map": "bafkreihq4cuc267db7xnrax7wmva3hrrzrqjpyu2cubq3odr67shhyl7fq", 2094 + "vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.svg": "bafkreielzftesde6xqjjmxcaf7nuvaqclkasal7vcy3p6uupyy2j7g3wdi", 2095 + "vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.svg.br": "bafkreidhzktuw56zhjwpnj34qbg7qhomxwoqkgmn2w5hiplme3jlt2y5s4", 2096 + "vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.ttf": "bafkreiea43ynn6um5fvjsm7urkvl3xczfroswuwk7dybbj7fjil4oqeex4", 2097 + "vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.woff": "bafkreih4vgop6pz6zawoy7s6zglt4iu55ohp5r2desc3tizzx6uxw3l3ou", 2098 + "vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.woff2": "bafkreiet2fr42sy7a5zw2nf756aiansgvmbsf35ji6uy4oltufcq4pjazq", 2099 + "vendor/@phosphor-icons/web/duotone/selection.json": "bafkreihzrrqlsaeo3clkrpi3wctde6unihzzx5irlbfacdi2raglugtkxe", 2100 + "vendor/@phosphor-icons/web/duotone/selection.json.br": "bafkreifp5t6y6wg2j3lmz7t4lm4h6ibowhcoje56rupkzruock6fen5jaa", 2101 + "vendor/@phosphor-icons/web/duotone/style.css": "bafkreib7wphukfrv75gdniwlmy2mwbrzpiwdf4z4bytorrrw2mfiufrlkq", 2102 + "vendor/@phosphor-icons/web/duotone/style.css.br": "bafkreiaycl6rtjencqixe2lbo3n2xedbqwwkt577j3xe5tf7emquvceam4", 2103 + "vendor/@phosphor-icons/web/duotone/style.css.map": "bafkreibvos4hgzpg3uegcayxhpqbdf53haqzcvbxklut2oxcnpassyce4y", 2104 + "vendor/@phosphor-icons/web/fill/Phosphor-Fill.svg": "bafkreig7gzbkt3q5heypkox2dqz726xzebipglhoptefkllrubzets56me", 2105 + "vendor/@phosphor-icons/web/fill/Phosphor-Fill.svg.br": "bafkreie222d6znlvpa2jd5cxragqypzhjaktqzbgsyrchdosl3n4hf5veu", 2106 + "vendor/@phosphor-icons/web/fill/Phosphor-Fill.ttf": "bafkreiffh5osmmgkwxr3ou3ozoowtvyvdgrbsauyyivr7dlxbxjxxquubi", 2107 + "vendor/@phosphor-icons/web/fill/Phosphor-Fill.woff": "bafkreic55juosgmbejug5qtyr6a6gronkdbo5gma63eqpv2c7eok2sa5ja", 2108 + "vendor/@phosphor-icons/web/fill/Phosphor-Fill.woff2": "bafkreidgbplaixaobwlvnto3rorozy5k3bk567kkc4hpep33dqf7keoega", 2109 + "vendor/@phosphor-icons/web/fill/selection.json": "bafkreicmefa643uo3g2tizvsnzedzjgyl7hsaratqauqsxkw7eiodoo2wi", 2110 + "vendor/@phosphor-icons/web/fill/selection.json.br": "bafkreidnn7ty5cjkeqzxfgcksewmnleic5yxeonnwkoreg4dlcuzzznuxe", 2111 + "vendor/@phosphor-icons/web/fill/style.css": "bafkreihbqsjavqblau6khhufexdqnnq3komqgoumw26xuqpn5g6os6aqvq", 2112 + "vendor/@phosphor-icons/web/fill/style.css.br": "bafkreichhpresqjoxjpbrixyn2je22d5nh5mk2lr7ia2ps7lfajcdwqheq", 2113 + "vendor/@phosphor-icons/web/fill/style.css.map": "bafkreifw7ffciurwtt2plh3h4c72wtajb5o4onxjjhgwin5ftbetwgtqqq", 2114 + "vendor/@phosphor-icons/web/light/Phosphor-Light.svg": "bafkreigr5sqrmuzdr2m4rszi7z42uuf3b5m6kmqvnh5soutwobzueumi3i", 2115 + "vendor/@phosphor-icons/web/light/Phosphor-Light.svg.br": "bafkreig5ut6sz2ny4br7d22ywpgfgo3vz4suqclwlc4lbw5xlay6tzvo3y", 2116 + "vendor/@phosphor-icons/web/light/Phosphor-Light.ttf": "bafkreifbb332ayy5ubdcn7fc5k4sduklhelut7o7undfosjwr4q3fd6unq", 2117 + "vendor/@phosphor-icons/web/light/Phosphor-Light.woff": "bafkreidngtltuajqlizgbmpil2e4mw6ac4bhjrmhjoezlia3pheghj5bye", 2118 + "vendor/@phosphor-icons/web/light/Phosphor-Light.woff2": "bafkreie4ixubnccsb2lh4lozhvyc53kz2jndvf6yzsbjgky5c4thuj4yq4", 2119 + "vendor/@phosphor-icons/web/light/selection.json": "bafkreifwg2mjcpjckrduqvivbe2gt4qdr3rezmc4yfzg7lqstvdiltxpha", 2120 + "vendor/@phosphor-icons/web/light/selection.json.br": "bafkreie7ap3v7qbtfkleael6kvfjmo7s2tkt2vfs75bgnvr7jfie2i423y", 2121 + "vendor/@phosphor-icons/web/light/style.css": "bafkreibhpvm45srhdstylqnrlcneu3isfq36wxxudeet4jhux35xkqglru", 2122 + "vendor/@phosphor-icons/web/light/style.css.br": "bafkreiez3nthzebnge7qvkrw653o6fthual7s6ao3g54illfhgtlqeqj7u", 2123 + "vendor/@phosphor-icons/web/light/style.css.map": "bafkreih6wz5dwkf4scffhbmpsskftiinxm2gwcz6mpolsx6qmd5g37q7oi", 2124 + "vendor/@phosphor-icons/web/regular/Phosphor.svg": "bafkreihiottrfu7rw53uwtf2pwx5uhxm3mpqoxgv4lwbccoaku2cd3fo2m", 2125 + "vendor/@phosphor-icons/web/regular/Phosphor.svg.br": "bafkreicm5tgg44momm5ogisus6kjtp7xruaobwqr2csocdws3ksslikd4u", 2126 + "vendor/@phosphor-icons/web/regular/Phosphor.ttf": "bafkreiagxepaek365cm2mpx45wdzhevhj4f2zpnfjzcgp2pwmmra2fz2ca", 2127 + "vendor/@phosphor-icons/web/regular/Phosphor.woff": "bafkreibznrpk47zn7ngr6vbs5xmhccpnul4suri3eft6iorgcznye5ypou", 2128 + "vendor/@phosphor-icons/web/regular/Phosphor.woff2": "bafkreigc5jc6ubp7lr67de3hodaqi4s7fjupip6tipzv6pnchiyle7pdfi", 2129 + "vendor/@phosphor-icons/web/regular/selection.json": "bafkreiggdk3iig4lv4z6b3ytgjwotnw3n2cficwuezfz7eqfbueqvtizhy", 2130 + "vendor/@phosphor-icons/web/regular/selection.json.br": "bafkreigfgvirutip6aimn7akzlmls7erko5hqsk4f76vqr5c4tye64ranu", 2131 + "vendor/@phosphor-icons/web/regular/style.css": "bafkreifrzr5ahkcwhasa5f2d2t2n4t4isk6efcou7olxd4aneu5dbyboly", 2132 + "vendor/@phosphor-icons/web/regular/style.css.br": "bafkreigvpaba7ftep2nrkiyjhktxbxeignx2mxb6scxahnlsdwb2q75fra", 2133 + "vendor/@phosphor-icons/web/regular/style.css.map": "bafkreie4tbgkqtss7msrkxf3wrevvgop6us65agbncz4bi2z3f7hcwaame", 2134 + "vendor/idb-keyval/index.js": "bafkreia4ra4nxptlpwbhdcbykmlffqtwexs3xf4lhmm4sd4hewvjmlfwjq", 2135 + "vendor/idb-keyval/index.js.br": "bafkreicemklckedfezfkhr7ziosse7lekiwibgm2uypvoxfs77mz6que3a", 2136 + "vendor/idb-keyval/index.js.map": "bafkreie7e5gbjkloe6s6c5jidwkccoqffyfv3pl7cotwf5tqkc2o6hebfi", 2137 + "vendor/kmenu-core/index.js": "bafkreiclioszrnlpvzmxkgyufnzowwynmn5rt4ceqvqqxidjni4nkwnmzm", 2138 + "vendor/kmenu-core/index.js.br": "bafkreie6dbdy4w73eisdkacpfpkxqchd3iwxk3yagoifxfizmqthzvhvmy", 2139 + "vendor/kmenu-core/index.js.map": "bafkreiel7cd5hh3qfury7t4unqgcfpnhk36odaghnkhedm767szuywqjtq", 2140 + "vendor/lit-html/index.js": "bafkreibortghxtvcg2xpd66hwlxtnllmu3ihca4l2tc5rvltcklamzmhay", 2141 + "vendor/lit-html/index.js.br": "bafkreibngqpu6oplyoff7uskwk5nehsw62y2at7jwgwwc4c3zokg4eskba", 2142 + "vendor/lit-html/index.js.map": "bafkreiauphodjl2v3pfgnimyauic5nx2j5zty43g2jndeshokz625olu6y", 2143 + "vendor/ms_sans_serif.woff2": "bafkreiarwwtivs3lsz6r7ks2h5megibi5he4vwrxzb3y3homoqk5zjz2gi", 2144 + "vendor/ms_sans_serif_bold.woff2": "bafkreic7h66fpeftcx6blc3usb4op7i5otq7tndd623sm3azbdfyfjcqvy", 2145 + "vendor/throttle-debounce/index.js": "bafkreiggjb4ce4y5kb5ihgd65r46w42odayigch5sniw37kxypn5qrtgma", 2146 + "vendor/throttle-debounce/index.js.br": "bafkreib33xto3vhsobmzcwbdnhfysmb2p7owhk2xjyaj5tdoquq52wuqya", 2147 + "vendor/throttle-debounce/index.js.map": "bafkreib6jlcm43iemz2jvxubmd2mkqh5mbtbb35f3isjqc57esowz2riem" 2148 + }
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/file-tree.json.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/file-tree.json.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/fonts/98.css/ms_sans_serif.woff2
··· 1 + ../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/ms_sans_serif.woff2
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/fonts/98.css/ms_sans_serif_bold.woff2
··· 1 + ../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/ms_sans_serif_bold.woff2
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/fonts/CommitMonoVariable.woff2
··· 1 + ../../bafybeiezh4rgv7gk73o5dalfyilv5nfopezyvshtj5j7hrn23r4n27k7da/fonts/CommitMonoVariable.woff2
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/fonts/Figtree-Italic-VariableFont_wght.woff2
··· 1 + ../../bafybeidcqjj5ooqx36uomtsgqcpuu5bjordymamrliah7o2bq7ghzvfxgm/fonts/Figtree-Italic-VariableFont_wght.woff2
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/fonts/Figtree-VariableFont_wght.woff2
··· 1 + ../../bafybeidcqjj5ooqx36uomtsgqcpuu5bjordymamrliah7o2bq7ghzvfxgm/fonts/Figtree-VariableFont_wght.woff2
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/fonts/InterVariable-Italic.woff2
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/fonts/InterVariable-Italic.woff2
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/fonts/InterVariable.woff2
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/fonts/InterVariable.woff2
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/fonts/PublicSans-Italic[wght].woff2
··· 1 + ../../bafybeidcqjj5ooqx36uomtsgqcpuu5bjordymamrliah7o2bq7ghzvfxgm/fonts/PublicSans-Italic[wght].woff2
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/fonts/PublicSans[wght].woff2
··· 1 + ../../bafybeidcqjj5ooqx36uomtsgqcpuu5bjordymamrliah7o2bq7ghzvfxgm/fonts/PublicSans[wght].woff2
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/fonts/SourceSans3VF-Italic.otf.woff2

This is a binary file and will not be displayed.

artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/fonts/SourceSans3VF-Upright.otf.woff2

This is a binary file and will not be displayed.

+365
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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 + <link rel="manifest" href="site.webmanifest" /> 21 + 22 + <!-- Preloads --> 23 + 24 + <!-- Styles --> 25 + <link rel="stylesheet" href="styles/base.css" /> 26 + <link rel="stylesheet" href="styles/diffuse/page.css" /> 27 + <link rel="stylesheet" href="styles/diffuse/code-editor.css" /> 28 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/bold/style.css" /> 29 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/fill/style.css" /> 30 + </head> 31 + <body> 32 + <header> 33 + <div class="header__nav"> 34 + <div style="flex-shrink: 0;"> 35 + <div class="diffuse-logo-container diffuse-logo-container--condensed"> 36 + <a href="./" style="display: inline-block;"> 37 + <svg viewBox="0 0 902 134" width="160"> 38 + <title>Diffuse</title> 39 + <use 40 + xlink:href="images/diffuse-current.svg#diffuse" 41 + href="images/diffuse-current.svg#diffuse"></use> 42 + </svg> 43 + 44 + </a> 45 + </div> 46 + </div> 47 + 48 + <div class="nav-container"> 49 + <nav id="diffuse-nav"> 50 + <a href="dashboard/" class="button button--transparent button--border"> 51 + <span class="with-icon"> 52 + <i class="ph-fill ph-person"></i> 53 + Your Diffuse 54 + </span> 55 + </a> 56 + 57 + <a href="guide/" class="button button--border"> 58 + <span class="with-icon"> 59 + <i class="ph-fill ph-book-open-text"></i> 60 + Guide 61 + </span> 62 + </a> 63 + 64 + <a href="featured/" class="button button--transparent button--border"> 65 + <span class="with-icon"> 66 + <i class="ph-fill ph-sparkle"></i> 67 + Featured 68 + </span> 69 + </a> 70 + 71 + <a href="catalogue/" class="button button--transparent button--border"> 72 + <span class="with-icon"> 73 + <i class="ph-fill ph-storefront"></i> 74 + Catalogue 75 + </span> 76 + </a> 77 + 78 + <a href="code/" class="button button--transparent button--border"> 79 + <span class="with-icon"> 80 + <i class="ph-fill ph-hammer"></i> 81 + Code 82 + </span> 83 + </a> 84 + </nav> 85 + 86 + <button 87 + id="nav-overflow-btn" 88 + class="button button--transparent button--border" 89 + style="display: none; flex-shrink: 0" 90 + popovertarget="nav-overflow-menu" 91 + > 92 + <span class="with-icon"> 93 + <i class="ph-fill ph-dots-three-outline"></i> 94 + </span> 95 + </button> 96 + 97 + <div id="nav-overflow-menu" class="dropdown" popover></div> 98 + </div> 99 + 100 + </div> 101 + </header> 102 + 103 + <main> 104 + <style> 105 + h2 { 106 + font-size: var(--fs-lg); 107 + opacity: 0.6; 108 + } 109 + 110 + .getting-started { 111 + font-size: var(--fs-md); 112 + font-weight: 500; 113 + 114 + ul { 115 + display: flex; 116 + flex-direction: column; 117 + gap: var(--space-md); 118 + margin: var(--space-xl) 0; 119 + max-width: 100%; 120 + padding-left: 0; 121 + 122 + @media (min-width: 42rem) { 123 + margin: var(--space-md) 0; 124 + } 125 + } 126 + 127 + li { 128 + display: inline-block; 129 + } 130 + 131 + li a { 132 + text-decoration: none; 133 + } 134 + 135 + i[style] { 136 + @media (width < 35rem) { 137 + display: none; 138 + } 139 + } 140 + 141 + .with-icon { 142 + gap: var(--space-sm); 143 + } 144 + } 145 + </style> 146 + 147 + <h1 hidden>Guide</h1> 148 + 149 + <section class="getting-started"> 150 + <div class="columns"> 151 + <ul class="flex" style="color: oklch(from var(--text-color) l c h / 0.4);"> 152 + <li> 153 + <span class="with-icon"> 154 + <i class="ph-fill ph-play-circle" style="opacity: 0.25"></i> 155 + <i class="ph-fill ph-eye-slash"></i> 156 + <span>There's no main audio interface</span> 157 + </span> 158 + </li> 159 + 160 + <li> 161 + <span class="with-icon"> 162 + <i class="ph-fill ph-asterisk" style="opacity: 0.25"></i> 163 + <i class="ph-fill ph-lightning-slash"></i> 164 + <span>There's no fixed feature set</span> 165 + </span> 166 + </li> 167 + 168 + <li> 169 + <span class="with-icon"> 170 + <i class="ph-fill ph-info" style="opacity: 0.25"></i> 171 + <i class="ph-fill ph-app-window"></i> 172 + <span><a style="color: var(--accent-twist-2)" href="catalogue/?category=Themes">Themes</a> are like traditional "apps"</span> 173 + </span> 174 + </li> 175 + 176 + <li> 177 + <span class="with-icon"> 178 + <i class="ph-fill ph-plus-circle" style="opacity: 0.25"></i> 179 + <i class="ph-fill ph-tabs"></i> 180 + <span> 181 + Unlike interfaces in <a style="text-decoration: underline; text-decoration-color: var(--accent-twist-2)" href="l/?path=themes%2Fblur%2Fartwork-controller%2Ffacet%2Findex.html">separate</a> <a style="text-decoration: underline; text-decoration-color: var(--accent-twist-2)" href="l/?path=themes%2Fwinamp%2Fbrowser%2Ffacet%2Findex.html">tabs</a> 182 + </span> 183 + </span> 184 + </li> 185 + 186 + <li> 187 + <span class="with-icon"> 188 + <i class="ph-fill ph-person-simple-circle" style="opacity: 0.25"></i> 189 + <i class="ph-fill ph-share"></i> 190 + <span>Shareable interfaces &amp; features</span> 191 + </span> 192 + </li> 193 + </ul> 194 + 195 + <ul class="flex" style="color: var(--accent-twist-2);"> 196 + <li> 197 + <a class="with-icon" href="l/?path=facets%2Fconnect%2Findex.html"> 198 + <i class="ph-fill ph-number-circle-one" style="opacity: 0.25"></i> 199 + <i class="ph-fill ph-file-audio"></i> 200 + <span>Add some audio</span> 201 + </a> 202 + </li> 203 + 204 + <li> 205 + <a class="with-icon" href="l/?path=facets%2Fdata%2Fsources%2Findex.html"> 206 + <i class="ph-fill ph-number-circle-two" style="opacity: 0.25"></i> 207 + <i class="ph-fill ph-gear-fine"></i> 208 + <span>Wait until processed</span> 209 + </a> 210 + </li> 211 + 212 + <li> 213 + <a class="with-icon" href="featured/"> 214 + <i class="ph-fill ph-number-circle-three" style="opacity: 0.25"></i> 215 + <i class="ph-fill ph-swatches"></i> 216 + <span>Try out interfaces</span> 217 + </a> 218 + </li> 219 + 220 + <li> 221 + <a class="with-icon" href="featured/"> 222 + <i class="ph-fill ph-number-circle-four" style="opacity: 0.25"></i> 223 + <i class="ph-fill ph-sparkle"></i> 224 + <span>Enable additional features</span> 225 + </a> 226 + </li> 227 + 228 + <li> 229 + <a class="with-icon" href="l/?path=facets%2Fconnect%2Findex.html"> 230 + <i class="ph-fill ph-number-circle-five" style="opacity: 0.25"></i> 231 + <i class="ph-fill ph-person"></i> 232 + <span>Sync your user-data</span> 233 + </a> 234 + </li> 235 + </ul> 236 + </div> 237 + </section> 238 + 239 + <section id="concept"> 240 + <h2>Concept</h2> 241 + 242 + <div class="columns"> 243 + <div class="flex"> 244 + <p> 245 + 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. 246 + </p> 247 + 248 + <p> 249 + <strong>It provides every user the ability to choose which features and interfaces they want to layer on top of their data.</strong> 250 + </p> 251 + 252 + <p> 253 + 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. 254 + </p> 255 + 256 + <p> 257 + 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>. 258 + </p> 259 + </div> 260 + <div class="flex"> 261 + <p> 262 + <em>A few things to keep in mind:</em> 263 + </p> 264 + <ul style="display: flex; flex-direction: column; gap: var(--space-xs);"> 265 + <li>You can open as many interfaces as you'd like.</li> 266 + <li>Interfaces are connected to each other.</li> 267 + <li>Interfaces don't have to be pinned in order to be used, unlike features which do have to be added in order to be activated.</li> 268 + </ul> 269 + </div> 270 + </div> 271 + </section> 272 + 273 + <section id="tutorial"> 274 + <h2>Tutorial</h2> 275 + 276 + <div class="columns"> 277 + <div class="flex"> 278 + <p> 279 + <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. Wait until processing is completed. 280 + </p> 281 + 282 + <p> 283 + <button id="add-sample-content" class="button--bg-twist-2"> 284 + <span>Add sample content</span> 285 + </button> 286 + </p> 287 + 288 + <p> 289 + 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 we'll start with a simple example. 290 + </p> 291 + 292 + <p> 293 + 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. 294 + </p> 295 + 296 + <p> 297 + <a class="button button--bg-twist-2" href="l/?path=themes%2Fblur%2Fartwork-controller%2Ffacet%2Findex.html" target="_blank"> 298 + Play audio 299 + </a> 300 + </p> 301 + 302 + <p> 303 + You can disable the "Automatic Queue" feature on <a href="./dashboard/">your dashboard</a> by clicking the toggle button, or removing it all together. Don't worry, you can always add it back using the <a href="./catalogue/?category=Playback">playback category page</a>. Next, reload the interface that plays your audio; now there won't be anything in the queue. Note that you have to close all the interfaces that interact with the queue, otherwise the state will be remembered. 304 + </p> 305 + </div> 306 + 307 + <div class="flex"> 308 + <p> 309 + Interfaces can also be added (pinned) to your dashboard, 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>. 310 + </p> 311 + 312 + <p> 313 + When you're ready to add your own audio, a useful place to start is the "Connect" interface which summarises which inputs you can add. For more, check out the "Input &amp; Output" category. 314 + </p> 315 + 316 + <p> 317 + <a class="button button--bg-twist-2" href="l/?path=facets%2Fconnect%2Findex.html" target="_blank"> 318 + Add audio input 319 + </a> 320 + </p> 321 + 322 + <p> 323 + The connect interface also shows some options that can be used for syncing your user-data, that's your playlists, configured audio inputs, etc. By default everything is saved in your browser. 324 + </p> 325 + 326 + <p> 327 + Lastly, don't forget that you can create, edit and share both features + interfaces. LLMs (AI) can also be used to create or edit them. To edit something, you first add it to your dashboard and then click the edit button, which will load it in the editor on the build page. The build page has some examples and documentation of how that system works. 328 + </p> 329 + </div> 330 + </div> 331 + </section> 332 + 333 + </main> 334 + 335 + 336 + <!-- Import map --> 337 + <script type="importmap"> 338 + { 339 + "imports": { 340 + "~/": "./", 341 + 342 + "@awesome.me/webawesome/dist/": "./vendor/@awesome.me/webawesome/", 343 + "@awesome.me/webawesome/dist-cdn/": "./vendor/@awesome.me/webawesome/", 344 + "@phosphor-icons/web/": "./vendor/@phosphor-icons/web/", 345 + 346 + "@atcute/cbor": "./vendor/@atcute/cbor/index.js", 347 + "@atcute/oauth-browser-client": "./vendor/@atcute/oauth-browser-client/index.js", 348 + "@atcute/tid": "./vendor/@atcute/tid/index.js", 349 + "idb-keyval": "./vendor/idb-keyval/index.js", 350 + "kmenu": "./vendor/kmenu-core/index.js", 351 + "lit-html": "./vendor/lit-html/index.js", 352 + "throttle-debounce": "./vendor/throttle-debounce/index.js" 353 + } 354 + } 355 + </script> 356 + 357 + <!-- Make every touched URL available offline --> 358 + <do-offline></do-offline> 359 + <script src="components/orchestrator/offline/element.js" type="module"></script> 360 + 361 + <!-- Scripts --> 362 + <script src="common/pages/ppr.js" type="module"></script> 363 + <script src="common/pages/version-upgrade.js" type="module"></script> 364 + </body> 365 + </html>
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/guide/index.html.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/1.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/1.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/10.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/10.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/11.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/11.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/12.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/12.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/13.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/13.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/14.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/14.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/15.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/15.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/16.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/16.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/17.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/17.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/18.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/18.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/19.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/19.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/2.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/2.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/20.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/20.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/21.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/21.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/22.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/22.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/23.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/23.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/24.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/24.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/25.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/25.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/26.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/26.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/27.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/27.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/28.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/28.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/29.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/29.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/3.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/3.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/30.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/30.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/4.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/4.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/5.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/5.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/6.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/6.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/7.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/7.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/8.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/8.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/9.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/9.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/1.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/1.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/10.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/10.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/11.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/11.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/12.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/12.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/13.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/13.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/14.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/14.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/15.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/15.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/16.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/16.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/17.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/17.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/18.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/18.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/19.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/19.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/2.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/2.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/20.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/20.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/21.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/21.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/22.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/22.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/23.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/23.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/24.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/24.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/25.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/25.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/26.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/26.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/27.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/27.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/28.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/28.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/29.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/29.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/3.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/3.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/30.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/30.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/4.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/4.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/5.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/5.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/6.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/6.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/7.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/7.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/8.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/8.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/background/thumbnails/9.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/9.jpg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/diffuse-current.svg
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/diffuse-current.svg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/diffuse-current.svg.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/images/diffuse-current.svg.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/diffuse-dark.svg
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/diffuse-dark.svg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/diffuse-dark.svg.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/images/diffuse-dark.svg.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/diffuse-grey.svg
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/diffuse-grey.svg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/diffuse-grey.svg.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/images/diffuse-grey.svg.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/diffuse-light.svg
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/diffuse-light.svg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/diffuse-light.svg.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/images/diffuse-light.svg.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/diffuse__icon-dark.svg
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/diffuse__icon-dark.svg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/diffuse__icon-dark.svg.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/images/diffuse__icon-dark.svg.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/diffuse__icon-grey.svg
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/diffuse__icon-grey.svg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/diffuse__icon-grey.svg.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/images/diffuse__icon-grey.svg.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/diffuse__icon-light.svg
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/diffuse__icon-light.svg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/diffuse__icon-light.svg.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/images/diffuse__icon-light.svg.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icon-square-ws.png
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/icon-square-ws.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icon-square.png
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/icon-square.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icon.png
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/icon.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/catalog-1.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/catalog-1.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/cd_audio_cd_a-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/cd_audio_cd_a-0.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/cd_audio_cd_a-2.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/cd_audio_cd_a-2.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/cd_audio_cd_a-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/cd_audio_cd_a-3.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/cd_audio_cd_a-4.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/cd_audio_cd_a-4.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/cd_drive-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/cd_drive-0.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/cd_drive_purple-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/cd_drive_purple-3.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/channels-2.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/channels-2.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/check-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/check-0.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/computer_sound-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/computer_sound-0.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/computer_user_pencil-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/computer_user_pencil-0.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/connected_world-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/connected_world-0.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/directory_admin_tools-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_admin_tools-3.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/directory_admin_tools-5.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_admin_tools-5.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/directory_channels-2.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_channels-2.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/directory_channels-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_channels-3.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/directory_closed-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_closed-3.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/directory_closed-4.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_closed-4.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/directory_control_panel-2.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_control_panel-2.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/directory_control_panel-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_control_panel-3.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/directory_explorer-4.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_explorer-4.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/directory_explorer-5.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_explorer-5.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/directory_favorites-2.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_favorites-2.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/directory_favorites-4.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_favorites-4.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/directory_net_web-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_net_web-3.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/directory_net_web-4.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_net_web-4.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/directory_network_conn-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_network_conn-3.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/directory_network_conn-5.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_network_conn-5.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/gears-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/gears-0.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/globe_map-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/globe_map-0.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/help_book_big-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/help_book_big-0.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/installer-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/installer-3.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/installer_generic_old-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/installer_generic_old-0.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/keys-5.png
··· 1 + ../../../../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/images/icons/windows_98/keys-5.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/loudspeaker_wave-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/loudspeaker_wave-0.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/magnifying_glass-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/magnifying_glass-0.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/magnifying_glass_4-1.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/magnifying_glass_4-1.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/media_player-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/media_player-0.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/media_player_stream_no.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/media_player_stream_no.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/ms_dos-1.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/ms_dos-1.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/msg_error-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/msg_error-0.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/msg_information-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/msg_information-0.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/msg_question-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/msg_question-0.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/msg_warning-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/msg_warning-0.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/multimedia-4.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/multimedia-4.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/network_drive_world-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/network_drive_world-0.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/no-1.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/no-1.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/restrict-1.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/restrict-1.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/search_computer-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/search_computer-0.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/search_server-1.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/search_server-1.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/search_web-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/search_web-0.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/settings_gear-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/settings_gear-0.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/settings_gear-2.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/settings_gear-2.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/tip.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/tip.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/utopia_smiley.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/utopia_smiley.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/winamp2-32x32.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/winamp2-32x32.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/windows-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/windows-0.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/world-2.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/world-2.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/world-4.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/world-4.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/images/icons/windows_98/world_network_directories-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/world_network_directories-3.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/index.html
··· 1 + ../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/index.html.br
··· 1 + ../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/l/index.html
··· 1 + ../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/l/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/l/index.html.br
··· 1 + ../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/l/index.html.br
+3
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/l/index.js
··· 1 + import{a as d}from"../chunk-6AH2OFQT.js";import{c as i}from"../chunk-23J7PJHO.js";import{a as s}from"../chunk-FKLEXSNK.js";import{a as n,d as c}from"../chunk-K24WPOYB.js";import"../chunk-T734Y7R7.js";import"../chunk-PPKEFF43.js";import"../chunk-RQJCYF4B.js";import"../chunk-PBZITCUN.js";import"../chunk-2CE4HY7O.js";import"../chunk-K4RUWDWS.js";import{b as a}from"../chunk-QOBPHMGK.js";import"../chunk-2SBW6H34.js";import"../chunk-YZPVIF44.js";import"../chunk-RPJXLERJ.js";import"../chunk-MTCNS3JB.js";import"../chunk-YHFKI4Y2.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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/l/index.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/l/index.js.map
··· 1 + ../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/l/index.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/mstile-150x150.png
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/mstile-150x150.png
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/node_crypto-5R4NC7NK.js
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/node_crypto-5R4NC7NK.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/node_crypto-5R4NC7NK.js.br
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/node_crypto-5R4NC7NK.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/node_crypto-5R4NC7NK.js.map
··· 1 + ../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/node_crypto-5R4NC7NK.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/oauth/callback/index.html
··· 1 + ../../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/oauth/callback/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/oauth/callback/index.html.br
··· 1 + ../../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/oauth/callback/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/oauth/callback/index.js
··· 1 + ../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/oauth/callback/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/oauth/callback/index.js.br
··· 1 + ../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/oauth/callback/index.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/oauth/callback/index.js.map
··· 1 + ../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/oauth/callback/index.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/safari-pinned-tab.svg
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/safari-pinned-tab.svg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/safari-pinned-tab.svg.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/safari-pinned-tab.svg.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/service-worker-offline.js
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/service-worker-offline.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/service-worker-offline.js.br
··· 1 + ../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/service-worker-offline.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/service-worker-offline.js.map
··· 1 + ../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/service-worker-offline.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/site.webmanifest
··· 1 + ../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/site.webmanifest
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/animations.css
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/animations.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/animations.css.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/animations.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/animations.css.map
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/animations.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/base.css
··· 1 + ../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/styles/base.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/base.css.br
··· 1 + ../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/styles/base.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/base.css.map
··· 1 + ../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/styles/base.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/diffuse/code-editor.css
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/styles/diffuse/code-editor.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/diffuse/code-editor.css.br
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/styles/diffuse/code-editor.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/diffuse/code-editor.css.map
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/styles/diffuse/code-editor.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/diffuse/colors.css
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/styles/diffuse/colors.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/diffuse/colors.css.br
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/styles/diffuse/colors.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/diffuse/colors.css.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/styles/diffuse/colors.css.map
+2
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/diffuse/facet.css
··· 1 + body{background-color:var(--bg-color);color:var(--text-color)}main{padding:var(--space-2xl) var(--space-xl);@media (min-width:48rem){display:flex;flex-direction:row;gap:var(--space-2xl);justify-content:center;min-height:100dvh}}ol,p,ul{text-wrap:balance}.facet__left{container-type:inline-size;flex:1;margin-bottom:var(--space-lg);max-width:24rem;@media (min-width:48rem){align-self:stretch;display:flex;flex-direction:column;justify-content:center;margin-bottom:0;max-height:calc(100vh - var(--space-2xl)*2)}p:last-child{margin-bottom:0}}.facet__right{flex:1;max-width:24rem;@media (min-width:48rem){display:flex;flex-direction:column;justify-content:center}p:first-child{margin-top:0}}.diffuse-logo-container{display:inline-block;margin-bottom:var(--space-lg);svg{display:block;fill:oklch(from var(--bg-color) calc(l - .5) c h);opacity:.2;width:5em;@media (prefers-color-scheme:dark){fill:var(--text-color);opacity:.25}}}h1{font-size:var(--fs-2xl);font-size:min(14cqi,var(--fs-2xl));font-weight:700;letter-spacing:-.02em;line-height:1.2;margin:0 0 var(--space-sm);overflow:hidden;white-space:nowrap}.facet__left p{color:oklch(from var(--text-color) l c h/.55);font-size:var(--fs-sm);line-height:var(--leading-relaxed);max-width:22rem}.button-row{display:flex;flex-wrap:wrap;gap:var(--space-2xs)}.callout{border-radius:var(--radius-md);font-size:var(--fs-sm);padding:var(--space-2xs) var(--space-xs)}.callout--danger{background:oklch(from var(--accent-twist-4) l c h/.12);border:1px solid oklch(from var(--accent-twist-4) l c h/.3);color:var(--accent-twist-4)}.callout--warning{background:oklch(from var(--accent-twist-1) l c h/.12);border:1px solid oklch(from var(--accent-twist-1) l c h/.3);color:var(--accent-twist-1)}.badge{border:1px solid;border-radius:var(--radius-xs);font-size:var(--fs-3xs);font-weight:500;letter-spacing:var(--tracking-wider);line-height:.75;opacity:.6;padding:var(--space-3xs);text-box:trim-both cap alphabetic;text-transform:uppercase}.badge--brand{color:var(--accent);opacity:1}.badge--warning{color:var(--accent-twist-1);opacity:1}.button,button{align-items:center;background:var(--form-color);border:1px solid var(--border-color);border-radius:9999px;color:var(--text-color);cursor:pointer;display:inline-flex;font-family:inherit;font-size:var(--fs-sm);gap:var(--space-2xs);padding:var(--space-2xs) var(--space-sm);text-decoration:none;transition-duration:.25s;transition-property:opacity;&:disabled{cursor:not-allowed;opacity:.4}&.button--accent,&.button--brand{background:var(--accent);border-color:transparent;color:var(--bg-color)}&.button--icon{opacity:.4;&:focus,&:hover{opacity:1}}&.button--outlined{background:transparent}&.button--danger{border-color:var(--accent-twist-4);color:var(--accent-twist-4)}&.button--plain{background:transparent;border-color:transparent;padding:var(--space-3xs)}&.button--small{font-size:var(--fs-xs);padding:var(--space-3xs) var(--space-2xs)}}label{display:flex;flex-direction:column;gap:var(--space-3xs)}input,label,select{font-size:var(--fs-sm)}input,select{background:var(--form-color);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-color);font-family:inherit;padding:var(--space-2xs) var(--space-xs);width:100%}dialog{background:var(--bg-color);border:1px solid var(--border-color);border-radius:var(--radius-lg);color:var(--text-color);left:50%;max-height:85dvh;max-width:min(var(--container-md),calc(100vw - var(--space-md)));overflow:hidden;padding:0;position:fixed;top:50%;transform:translate(-50%,-50%);width:100%;&[open]{display:flex;flex-direction:column}&::backdrop{background:oklch(0 0 0/.5)}}.dialog-header{align-items:center;border-bottom:1px solid var(--border-color);display:flex;flex-shrink:0;justify-content:space-between;padding:var(--space-xs) var(--space-sm)}.dialog-body{display:flex;flex-direction:column;gap:var(--space-sm);overflow-y:auto;padding:var(--space-sm)}.dialog-footer{border-top:1px solid var(--border-color);display:flex;flex-shrink:0;gap:var(--space-2xs);padding:var(--space-xs) var(--space-sm)}hr{border:none;border-top:1px solid var(--border-color);margin:var(--space-md) 0}.caption{color:oklch(from var(--text-color) l c h/.55);font-size:var(--fs-xs)}[hidden]{display:none!important}.callout,p{margin:var(--space-sm) 0}.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);max-height:80vh;overflow-y:auto;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}&>button{align-items:center;background:none;border:0;border-radius:0;color:inherit;cursor:pointer;display:flex;font-family:inherit;font-size:inherit;font-weight:inherit;gap:var(--space-xs);min-width:var(--space-3xl);padding:var(--space-xs) var(--space-sm);text-align:left;width:100%;&>*{pointer-events:none}}&>button:not(:last-child){border-bottom:1px solid var(--border-color)}i{opacity:.4}} 2 + /*# sourceMappingURL=./facet.css.map */
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/diffuse/facet.css.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/diffuse/facet.css.map
··· 1 + {"version":3,"sources":["/src/styles/diffuse/facet.css"],"names":[],"mappings":"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","file":"/styles/diffuse/facet.css.map","sourcesContent":["body {\n background-color: var(--bg-color);\n color: var(--text-color);\n}\n\nmain {\n padding: var(--space-2xl) var(--space-xl);\n\n @media (min-width: 48rem) {\n display: flex;\n flex-direction: row;\n gap: var(--space-2xl);\n justify-content: center;\n min-height: 100dvh;\n }\n}\n\nul,\nol,\np {\n text-wrap: balance;\n}\n\n.facet__left {\n container-type: inline-size;\n flex: 1;\n margin-bottom: var(--space-lg);\n max-width: 24rem;\n\n @media (min-width: 48rem) {\n align-self: stretch;\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin-bottom: 0;\n max-height: calc(100vh - 2 * var(--space-2xl));\n }\n\n p:last-child {\n margin-bottom: 0;\n }\n}\n\n.facet__right {\n flex: 1;\n max-width: 24rem;\n\n @media (min-width: 48rem) {\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n\n p:first-child {\n margin-top: 0;\n }\n}\n\n.diffuse-logo-container {\n display: inline-block;\n margin-bottom: var(--space-lg);\n\n svg {\n display: block;\n fill: oklch(from var(--bg-color) calc(l - 0.5) c h);\n opacity: 0.2;\n width: 5em;\n\n @media (prefers-color-scheme: dark) {\n fill: var(--text-color);\n opacity: 0.25;\n }\n }\n}\n\nh1 {\n font-size: var(--fs-2xl);\n font-size: min(14cqi, var(--fs-2xl));\n font-weight: 700;\n letter-spacing: -0.02em;\n line-height: 1.2;\n margin: 0 0 var(--space-sm);\n overflow: hidden;\n white-space: nowrap;\n}\n\n.facet__left p {\n color: oklch(from var(--text-color) l c h / 0.55);\n font-size: var(--fs-sm);\n line-height: var(--leading-relaxed);\n max-width: 22rem;\n}\n\n.button-row {\n display: flex;\n flex-wrap: wrap;\n gap: var(--space-2xs);\n}\n\n.callout {\n border-radius: var(--radius-md);\n font-size: var(--fs-sm);\n padding: var(--space-2xs) var(--space-xs);\n}\n\n.callout--danger {\n background: oklch(from var(--accent-twist-4) l c h / 0.12);\n border: 1px solid oklch(from var(--accent-twist-4) l c h / 0.3);\n color: var(--accent-twist-4);\n}\n\n.callout--warning {\n background: oklch(from var(--accent-twist-1) l c h / 0.12);\n border: 1px solid oklch(from var(--accent-twist-1) l c h / 0.3);\n color: var(--accent-twist-1);\n}\n\n.badge {\n border: 1px solid currentColor;\n border-radius: var(--radius-xs);\n font-size: var(--fs-3xs);\n font-weight: 500;\n letter-spacing: var(--tracking-wider);\n line-height: 0.75;\n opacity: 0.6;\n padding: var(--space-3xs);\n text-box: trim-both cap alphabetic;\n text-transform: uppercase;\n}\n\n.badge--brand {\n color: var(--accent);\n opacity: 1;\n}\n\n.badge--warning {\n color: var(--accent-twist-1);\n opacity: 1;\n}\n\nbutton,\n.button {\n align-items: center;\n background: var(--form-color);\n border: 1px solid var(--border-color);\n border-radius: 9999px;\n color: var(--text-color);\n cursor: pointer;\n display: inline-flex;\n font-family: inherit;\n font-size: var(--fs-sm);\n gap: var(--space-2xs);\n padding: var(--space-2xs) var(--space-sm);\n text-decoration: none;\n transition-duration: 250ms;\n transition-property: opacity;\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n }\n\n &.button--accent,\n &.button--brand {\n background: var(--accent);\n border-color: transparent;\n color: var(--bg-color);\n }\n\n &.button--icon {\n opacity: 0.4;\n\n &:hover,\n &:focus {\n opacity: 1;\n }\n }\n\n &.button--outlined {\n background: transparent;\n }\n\n &.button--danger {\n border-color: var(--accent-twist-4);\n color: var(--accent-twist-4);\n }\n\n &.button--plain {\n background: transparent;\n border-color: transparent;\n padding: var(--space-3xs);\n }\n\n &.button--small {\n font-size: var(--fs-xs);\n padding: var(--space-3xs) var(--space-2xs);\n }\n}\n\nlabel {\n display: flex;\n flex-direction: column;\n font-size: var(--fs-sm);\n gap: var(--space-3xs);\n}\n\ninput,\nselect {\n background: var(--form-color);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-md);\n color: var(--text-color);\n font-family: inherit;\n font-size: var(--fs-sm);\n padding: var(--space-2xs) var(--space-xs);\n width: 100%;\n}\n\ndialog {\n background: var(--bg-color);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n color: var(--text-color);\n left: 50%;\n max-height: 85dvh;\n max-width: min(var(--container-md), calc(100vw - var(--space-md)));\n overflow: hidden;\n padding: 0;\n position: fixed;\n top: 50%;\n transform: translate(-50%, -50%);\n width: 100%;\n\n &[open] {\n display: flex;\n flex-direction: column;\n }\n\n &::backdrop {\n background: oklch(0 0 0 / 0.5);\n }\n}\n\n.dialog-header {\n align-items: center;\n border-bottom: 1px solid var(--border-color);\n display: flex;\n flex-shrink: 0;\n justify-content: space-between;\n padding: var(--space-xs) var(--space-sm);\n}\n\n.dialog-body {\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n overflow-y: auto;\n padding: var(--space-sm);\n}\n\n.dialog-footer {\n border-top: 1px solid var(--border-color);\n display: flex;\n flex-shrink: 0;\n gap: var(--space-2xs);\n padding: var(--space-xs) var(--space-sm);\n}\n\nhr {\n border: none;\n border-top: 1px solid var(--border-color);\n margin: var(--space-md) 0;\n}\n\n.caption {\n color: oklch(from var(--text-color) l c h / 0.55);\n font-size: var(--fs-xs);\n}\n\n[hidden] {\n display: none !important;\n}\n\np,\n.callout {\n margin: var(--space-sm) 0;\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 max-height: 80vh;\n overflow-y: auto;\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 & > button {\n align-items: center;\n background: none;\n border: 0;\n border-radius: 0;\n color: inherit;\n cursor: pointer;\n display: flex;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n gap: var(--space-xs);\n min-width: var(--space-3xl);\n padding: var(--space-xs) var(--space-sm);\n text-align: left;\n width: 100%;\n\n & > * {\n pointer-events: none;\n }\n }\n\n & > button:not(:last-child) {\n border-bottom: 1px solid var(--border-color);\n }\n\n i {\n opacity: 0.4;\n }\n}\n"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse"}
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/diffuse/font-faces.css
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/font-faces.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/diffuse/font-faces.css.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/font-faces.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/diffuse/font-faces.css.map
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/styles/diffuse/font-faces.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/diffuse/fonts.css
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/diffuse/fonts.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/diffuse/fonts.css.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/diffuse/fonts.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/diffuse/fonts.css.map
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/diffuse/fonts.css.map
+2
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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);text-wrap:balance}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:56rem){display:flex;gap:var(--space-3xl)}.header__nav{align-items:center;border-bottom:1px solid var(--border-color);display:flex;flex:1;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);ol,p,ul{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,&>button{cursor:pointer;display:flex;min-width:var(--space-3xl);padding:var(--space-xs) var(--space-sm);text-decoration:none;&>*{pointer-events:none}}&>button{background:none;border:0;border-radius:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;text-align:left;width:100%}&>a:not(:last-child),&>button: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;opacity:1;transition:opacity .25s;&[hidden]{display:none}&[data-disabled]{opacity:.4;&:focus-within,&:hover{opacity:.7}}}.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;font-size:var(--fs-sm);justify-content:space-evenly;position:relative;&.grid-item__menu--active{--grid-item-gradient-opacity:0.375;@media (prefers-color-scheme:dark){--grid-item-gradient-opacity:0.3}.button,button{color:var(--grid-item-color);opacity:.5;&:focus,&:hover{opacity:1}}}&.grid-item__menu--active: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}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;white-space:nowrap;@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}.grid-filter--categories{align-items:center;display:flex;gap:var(--space-2xs)}}.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:.75;padding:var(--space-xs) calc((var(--space-sm) + var(--space-xs))/2);text-box:trim-both cap alphabetic;transition-duration:.25s;transition-property:background-color,border-color,opacity;white-space:nowrap;& *{pointer-events:none}&[disabled]{--button-bg-opacity:0.4;cursor:not-allowed}&:focus:not([disabled]),&:hover:not([disabled]){--button-bg-opacity:1}&:has(.with-icon){padding-top:calc(var(--space-xs)*1.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);padding:var(--space-2xs)}&.button--subtle{--button-bg-opacity:0.35}&.button--tag{font-size:var(--fs-2xs);font-weight:600;padding:var(--space-3xs);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);padding:calc(var(--space-2xs)*.7) calc(var(--space-2xs)*.8)}&.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}}}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)}.button .with-icon--bigger-gap,.with-icon--bigger-gap,button .with-icon--bigger-gap{gap:var(--space-2xs)}.with-repositioned-icon{position:relative;@media (width < 42rem){&:has(.button__supplementary-text){display:inline-block;height:1cap;width:1em;i{height:auto;height:.8cap;left:0;position:absolute;top:50%;transform:translateY(-50%)}}}i{display:inline-block;height:0;position:relative;width:1em}i:before{bottom:0;bottom:.35cap;left:0;position:absolute;transform:translateY(50%)}}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;display:flex;flex:1;gap:var(--space-xs);min-width:0}nav{align-items:center;display:flex;flex:1;flex-wrap:nowrap;font-size:var(--fs-sm);gap:var(--space-xs);justify-content:flex-end;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,.grid-item__menu--active: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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/diffuse/page.css.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/diffuse/page.css.map
··· 1 + {"version":3,"sources":["/src/styles/diffuse/page.css"],"names":[],"mappings":"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ClC,wBAA0B,CAC1B,yDAA4D,CAC5D,kBAAmB,CAEnB,IACE,mBACF,CAEA,YACE,uBAAwB,CACxB,kBACF,CAEA,gDAEE,qBACF,CAEA,kBACE,qCACF,CAEA,oBACE,yEACF,CAEA,qBACE,iFACF,CAEA,qBACE,iFACF,CAEA,qBACE,iFACF,CAEA,qBACE,iFACF,CAEA,qBACE,iFACF,CAEA,iBACE,4BACF,CAEA,gBACE,sBAAuB,CACvB,wBACF,CAEA,iBACE,wBACF,CAEA,cACE,uBAAwB,CACxB,eAAgB,CAChB,wBAAyB,CACzB,qBAAsB,CAEtB,iBACE,kBACF,CAEA,kBACE,sEACF,CACF,CAEA,eACE,sBAAuB,CACvB,2DACF,CAEA,sBACE,4BAA6B,CAC7B,uBAAwB,CACxB,gCAAiC,CAEjC,iBACE,oEACF,CAEA,oBACE,mBACF,CAEA,qBACE,2BACF,CAEA,qBACE,2BACF,CAEA,qBACE,2BACF,CAEA,qBACE,2BACF,CAEA,qBACE,2BACF,CACF,CAEA,4BACE,YAAa,CAEb,yBACE,mBACF,CACF,CACF,CAEA,MACE,sBAAuB,CAEvB,EACE,yBACF,CACF,CAEA,OACE,eACF,CAEA,YAEE,qBAEF,CAEA,wBALE,mBAAoB,CAEpB,oBAMF,CAEA,SACE,kBAAmB,CACnB,oCAAqC,CACrC,SACF,CAEA,MACE,sBAAuB,CACvB,eAAgB,CAChB,UACF,CAEA,WACE,kBAAmB,CACnB,mBAAoB,CACpB,oBACF,CAEA,oFAGE,oBACF,CAEA,wBACE,iBAAkB,CAElB,uBACE,mCACE,oBAAqB,CACrB,WAAY,CACZ,SAAU,CAEV,EACE,WAAY,CACZ,YAAc,CACd,MAAO,CACP,iBAAkB,CAClB,OAAQ,CACR,0BACF,CACF,CACF,CAEA,EACE,oBAAqB,CACrB,QAAS,CACT,iBAAkB,CAClB,SACF,CAEA,SACE,QAAS,CACT,aAAe,CACf,MAAO,CACP,iBAAkB,CAClB,yBACF,CACF,CAMA,MAEE,4BACF,CAEA,cACE,uCAA2C,CAC3C,aACF,CAEA,SACE,uCAAyC,CACzC,WACF,CAMA,kBACE,uCAA2C,CAC3C,sBAAuB,CACvB,6BAA8B,CAC9B,2BAA4B,CAE5B,EACE,yBACF,CACF,CAEA,mBACE,eAAgB,CAChB,eAAgB,CAChB,SAAU,CAEV,KACE,YAAa,CACb,oBAAqB,CACrB,kBACF,CAEA,WACE,uLAAwL,CACxL,aAAc,CACd,MAAO,CACP,UAAY,CACZ,eAAgB,CAChB,gBAAiB,CACjB,sBACF,CAEA,IACE,oBACF,CACF,CAMA,wBACE,kBAAmB,CACnB,YAAa,CACb,sBAAuB,CACvB,6BAA8B,CAC9B,wCAAyC,CAEzC,IACE,iDAAmD,CACnD,UAAY,CACZ,0BAA2B,CAC3B,YAAa,CAEb,mCACE,sBAAuB,CACvB,WACF,CACF,CAEA,oCACE,6BACF,CACF,CAMA,eACE,kBAAmB,CACnB,YAAa,CACb,MAAO,CACP,mBAAoB,CACpB,WACF,CAEA,IACE,kBAAmB,CACnB,YAAa,CACb,MAAO,CACP,gBAAiB,CACjB,sBAAuB,CACvB,mBAAoB,CACpB,wBAAyB,CACzB,eAAgB,CAEhB,QACE,aAAc,CACd,eAAgB,CAChB,kBACF,CACF,CAKA,QACE,kBAAmB,CACnB,YAAa,CACb,sBAAuB,CACvB,oBAAqB,CAErB,EACE,oBAAqB,CACrB,WAAa,CACb,wBAAyB,CACzB,oBAAqB,CACrB,wBAA0B,CAC1B,2BAA4B,CAE5B,gBAEE,SACF,CACF,CAEA,SACE,SAAU,CACV,mBACF,CAEA,YACE,iBAAkB,CAClB,OACF,CACF,CAEA,0BACE,kBAAmB,CACnB,YAAa,CACb,sBAAuB,CACvB,mBAAoB,CACpB,yBAA0B,CAE1B,yBACE,WACF,CACF,CAMA,+EAKE,yyIAEyF,CAFzF,iyIAGF","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 text-wrap: balance;\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: 56rem) {\n display: flex;\n gap: var(--space-3xl);\n }\n\n .header__nav {\n align-items: center;\n border-bottom: 1px solid var(--border-color);\n display: flex;\n flex: 1;\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 p,\n ul,\n ol {\n max-width: 100%;\n }\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 & > button {\n cursor: pointer;\n display: flex;\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 & > button {\n background: none;\n border: 0;\n border-radius: 0;\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n text-align: left;\n width: 100%;\n }\n\n & > a:not(:last-child),\n & > button: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 opacity: 1;\n transition: opacity 250ms;\n\n &[hidden] {\n display: none;\n }\n\n &[data-disabled] {\n opacity: 0.4;\n\n &:hover,\n &:focus-within {\n opacity: 0.7;\n }\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 font-size: var(--fs-sm);\n justify-content: space-evenly;\n position: relative;\n\n &.grid-item__menu--active {\n --grid-item-gradient-opacity: 0.375;\n\n @media (prefers-color-scheme: dark) {\n --grid-item-gradient-opacity: 0.3;\n }\n\n button,\n .button {\n color: var(--grid-item-color);\n opacity: 0.5;\n\n &:focus,\n &:hover {\n opacity: 1;\n }\n }\n }\n\n &.grid-item__menu--active::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 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 white-space: nowrap;\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 .grid-filter--categories {\n align-items: center;\n display: flex;\n gap: var(--space-2xs);\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: 0.75;\n padding: var(--space-xs) calc((var(--space-sm) + var(--space-xs)) / 2);\n text-box: trim-both cap alphabetic;\n transition-duration: 250ms;\n transition-property: background-color, border-color, opacity;\n white-space: nowrap;\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 &:has(.with-icon) {\n padding-top: calc(var(--space-xs) * 1.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 padding: var(--space-2xs);\n }\n\n &.button--subtle {\n --button-bg-opacity: 0.35;\n }\n\n &.button--tag {\n font-size: var(--fs-2xs);\n font-weight: 600;\n padding: var(--space-3xs);\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 padding: calc(var(--space-2xs) * 0.7) calc(var(--space-2xs) * 0.8);\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\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.with-icon--bigger-gap,\nbutton .with-icon--bigger-gap,\n.button .with-icon--bigger-gap {\n gap: var(--space-2xs);\n}\n\n.with-repositioned-icon {\n position: relative;\n\n @media (width < 42rem) {\n &:has(.button__supplementary-text) {\n display: inline-block;\n height: 1cap;\n width: 1em;\n\n i {\n height: auto;\n height: 0.8cap;\n left: 0;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n }\n }\n }\n\n i {\n display: inline-block;\n height: 0;\n position: relative;\n width: 1em;\n }\n\n i::before {\n bottom: 0;\n bottom: 0.35cap;\n left: 0;\n position: absolute;\n transform: translateY(50%);\n }\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 display: flex;\n flex: 1;\n gap: var(--space-xs);\n min-width: 0;\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 justify-content: flex-end;\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,\n.grid-item__menu--active::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"}
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/loader.css
··· 1 + ../../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/styles/loader.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/loader.css.br
··· 1 + ../../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/styles/loader.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/loader.css.map
··· 1 + ../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/styles/loader.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/reset.css
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/reset.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/reset.css.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/reset.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/reset.css.map
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/reset.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/variables.css
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/variables.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/variables.css.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/variables.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/variables.css.map
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/styles/variables.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/wireframe/ui.css
··· 1 + ../../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/styles/wireframe/ui.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/wireframe/ui.css.br
··· 1 + ../../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/styles/wireframe/ui.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/styles/wireframe/ui.css.map
··· 1 + ../../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/styles/wireframe/ui.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/temporal-polyfill-WCWY3GMU.js
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/temporal-polyfill-WCWY3GMU.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/temporal-polyfill-WCWY3GMU.js.br
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/temporal-polyfill-WCWY3GMU.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/temporal-polyfill-WCWY3GMU.js.map
··· 1 + ../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/temporal-polyfill-WCWY3GMU.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/testing/index.html
··· 1 + ../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/testing/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/testing/index.html.br
··· 1 + ../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/testing/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/testing/sample/audio.mp3
··· 1 + ../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/testing/sample/audio.mp3
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/testing/sample/tracks.js
··· 1 + ../../../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/testing/sample/tracks.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/testing/sample/tracks.js.br
··· 1 + ../../../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/testing/sample/tracks.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/testing/sample/tracks.js.map
··· 1 + ../../../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/testing/sample/tracks.js.map
+2
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/artwork-controller/element.css
··· 1 + :host{--spacing:var(--space-sm);--transition-durition:750ms;font-size:var(--fs-sm)}@media (min-width:63rem){:host{--spacing:var(--space-md)}}main{background:var(--color-3);color:#fff;display:flex;flex-direction:column;height:100%;opacity:1!important;overflow:hidden;transition:background-color var(--transition-durition),color var(--transition-durition),opacity var(--transition-durition)}.artwork,main{position:relative}.artwork{app-region:drag;flex:1;-webkit-user-select:none;-moz-user-select:none;user-select:none}.artwork img{height:100%;left:0;-o-object-fit:cover;object-fit:cover;opacity:0;position:absolute;top:0;transition-duration:var(--transition-durition);transition-property:opacity;width:100%;z-index:0}.artwork label{background:oklch(14% 0 0);border-radius:var(--radius-sm);box-shadow:var(--box-shadow-lg);font-size:64%;font-weight:600;left:var(--space-xs);letter-spacing:var(--tracking-wide);line-height:.75;padding:calc(var(--space-2xs)*.8) calc(var(--space-2xs)*.65);padding-bottom:calc(var(--space-2xs)*.8 - 1px);position:absolute;text-box:trim-both cap alphabetic;text-transform:uppercase;top:var(--space-xs);transition:background-color var(--transition-durition),color var(--transition-durition);z-index:10}progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;display:block;height:4px;width:100%}progress,progress::-webkit-progress-bar{background-color:color-mix(in oklch,currentColor 40%,transparent);border-radius:4px;overflow:hidden}progress[value]::-webkit-progress-value{background-color:color-mix(in oklch,currentColor 90%,transparent);border-radius:4px}progress[value]::-moz-progress-bar{background-color:color-mix(in oklch,currentColor 50%,transparent);border-radius:4px}.controller{flex-shrink:0;padding:0 var(--spacing) var(--spacing);position:relative}.controller__background{inset:0;opacity:.5;position:absolute;transition:background-color var(--transition-durition);z-index:1}.controller__inner{position:relative;transition-duration:var(--transition-durition);transition-property:color;z-index:10}.controller__inner.controller__inner--light-mode{color:rgba(0,0,0,.6)}.button-row{display:inline-flex;gap:1px;button{background:color-mix(in oklch,currentColor 7.5%,transparent);border:0;color:color-mix(in oklch,currentColor 50%,transparent);cursor:pointer;font-size:113%;padding:calc(var(--space-2xs) + 1px) var(--space-sm) var(--space-2xs);&[data-enabled=t]{background-color:color-mix(in oklch,currentColor 25%,transparent);color:currentColor}}button:first-child{border-bottom-left-radius:var(--radius-xl);border-top-left-radius:var(--radius-xl)}button:last-child{border-bottom-right-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}}cite{display:block;font-style:normal;text-shadow:var(--text-shadow-sm);&>span,&>strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.controller__inner--light-mode cite{text-shadow:none}.progress{cursor:pointer;margin:var(--space-xs) 0;padding-top:var(--space-2xs)}.timestamps{display:flex;font-size:60%;font-weight:500;justify-content:space-between;margin-top:var(--space-3xs);opacity:.4;text-shadow:var(--text-shadow-xs)}.controller__inner--light-mode .timestamps{text-shadow:none}.controller menu{align-items:center;display:flex;font-size:230%;gap:var(--space-lg);justify-content:center;margin:var(--spacing) 0;padding:0;text-align:center}.controller .menu__loader{line-height:0;transform-origin:center}.controller li{cursor:pointer;line-height:0;list-style:none;transition-duration:var(--transition-durition);transition-property:opacity}.controller .menu__loader,.controller .ph-pause,.controller .ph-play{font-size:130%}.volume{align-items:center;display:flex;font-size:75%;gap:var(--space-2xs);justify-content:space-between}.volume .progress-bar{cursor:pointer;flex:1;padding:var(--space-2xs) 0}.volume i{cursor:pointer}footer{align-items:center;display:flex;gap:var(--space-2xs);justify-content:center;margin-top:var(--space-sm)}.gradient-blur{bottom:0;height:150%;left:0;pointer-events:none;position:absolute;right:0;z-index:2}.gradient-blur>div{inset:0;position:absolute}.gradient-blur>div:first-of-type{backdrop-filter:blur(1px);-webkit-mask:linear-gradient(180deg,transparent 0,#000 4.166666665%,#000 8.333333332%,transparent 12.499999999%);mask:linear-gradient(180deg,transparent 0,#000 4.166666665%,#000 8.333333332%,transparent 12.499999999%);z-index:1}.gradient-blur>div:nth-of-type(2){backdrop-filter:blur(2px);-webkit-mask:linear-gradient(180deg,transparent 4.166666665%,#000 8.333333332%,#000 12.499999999%,transparent 16.666666666%);mask:linear-gradient(180deg,transparent 4.166666665%,#000 8.333333332%,#000 12.499999999%,transparent 16.666666666%);z-index:2}.gradient-blur>div:nth-of-type(3){backdrop-filter:blur(4px);-webkit-mask:linear-gradient(180deg,transparent 8.333333332%,#000 12.499999999%,#000 16.666666666%,transparent 20.833333333%);mask:linear-gradient(180deg,transparent 8.333333332%,#000 12.499999999%,#000 16.666666666%,transparent 20.833333333%);z-index:3}.gradient-blur>div:nth-of-type(4){backdrop-filter:blur(8px);-webkit-mask:linear-gradient(180deg,transparent 12.499999999%,#000 16.666666666%,#000 20.833333333%,transparent 25%);mask:linear-gradient(180deg,transparent 12.499999999%,#000 16.666666666%,#000 20.833333333%,transparent 25%);z-index:4}.gradient-blur>div:nth-of-type(5){backdrop-filter:blur(16px);-webkit-mask:linear-gradient(180deg,transparent 16.666666666%,#000 20.833333333%,#000 25%,transparent);mask:linear-gradient(180deg,transparent 16.666666666%,#000 20.833333333%,#000 25%,transparent);z-index:5}.gradient-blur>div:nth-of-type(6){backdrop-filter:blur(32px);-webkit-mask:linear-gradient(180deg,transparent 20.833333333%,#000 25%,#000);mask:linear-gradient(180deg,transparent 20.833333333%,#000 25%,#000);z-index:6}.gradient-blur>div:nth-of-type(7){backdrop-filter:blur(64px);-webkit-mask:linear-gradient(180deg,transparent 25%,#000);mask:linear-gradient(180deg,transparent 25%,#000);z-index:7} 2 + /*# sourceMappingURL=./element.css.map */
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/artwork-controller/element.css.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/artwork-controller/element.css.map
··· 1 + {"version":3,"sources":["/src/themes/blur/artwork-controller/element.css"],"names":[],"mappings":"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","file":"/themes/blur/artwork-controller/element.css.map","sourcesContent":[":host {\n --spacing: var(--space-sm);\n --transition-durition: 750ms;\n font-size: var(--fs-sm);\n}\n\n@media (min-width: 63rem) {\n :host {\n --spacing: var(--space-md);\n }\n}\n\nmain {\n background: var(--color-3);\n color: white;\n display: flex;\n flex-direction: column;\n height: 100%;\n opacity: 1 !important;\n overflow: hidden;\n position: relative;\n transition:\n background-color var(--transition-durition),\n color var(--transition-durition),\n opacity var(--transition-durition);\n}\n\n/* Artwork */\n\n.artwork {\n app-region: drag;\n flex: 1;\n position: relative;\n user-select: none;\n}\n\n.artwork img {\n height: 100%;\n left: 0;\n object-fit: cover;\n opacity: 0;\n position: absolute;\n top: 0;\n transition-duration: var(--transition-durition);\n transition-property: opacity;\n width: 100%;\n z-index: 0;\n}\n\n.artwork label {\n background: oklch(14% 0 0);\n border-radius: var(--radius-sm);\n box-shadow: var(--box-shadow-lg);\n font-size: 64%;\n font-weight: 600;\n left: var(--space-xs);\n letter-spacing: var(--tracking-wide);\n line-height: 0.75;\n padding: calc(var(--space-2xs) * 0.8) calc(var(--space-2xs) * 0.65);\n padding-bottom: calc(var(--space-2xs) * 0.8 - 1px);\n position: absolute;\n text-box: trim-both cap alphabetic;\n text-transform: uppercase;\n top: var(--space-xs);\n transition:\n background-color var(--transition-durition),\n color var(--transition-durition);\n z-index: 10;\n}\n\n/* Progress bars */\n\nprogress {\n appearance: none;\n border: 0;\n display: block;\n height: 4px;\n width: 100%;\n}\n\nprogress,\nprogress::-webkit-progress-bar {\n background-color: color-mix(in oklch, currentColor 40%, transparent);\n overflow: hidden;\n border-radius: 4px;\n}\n\nprogress[value]::-webkit-progress-value {\n border-radius: 4px;\n background-color: color-mix(in oklch, currentColor 90%, transparent);\n}\n\nprogress[value]::-moz-progress-bar {\n border-radius: 4px;\n background-color: color-mix(in oklch, currentColor 50%, transparent);\n}\n\n/* Controller */\n\n.controller {\n flex-shrink: 0;\n padding: 0 var(--spacing) var(--spacing);\n position: relative;\n}\n\n.controller__background {\n inset: 0;\n opacity: 0.5;\n position: absolute;\n transition: background-color var(--transition-durition);\n z-index: 1;\n}\n\n.controller__inner {\n position: relative;\n transition-duration: var(--transition-durition);\n transition-property: color;\n z-index: 10;\n}\n\n.controller__inner.controller__inner--light-mode {\n color: rgba(0, 0, 0, 0.6);\n}\n\n/* Button row */\n\n.button-row {\n display: inline-flex;\n gap: 1px;\n\n button {\n background: color-mix(in oklch, currentColor 7.5%, transparent);\n border: 0;\n color: color-mix(in oklch, currentColor 50%, transparent);\n cursor: pointer;\n font-size: 113%;\n padding: calc(var(--space-2xs) + 1px) var(--space-sm) var(--space-2xs);\n\n &[data-enabled=\"t\"] {\n background-color: color-mix(in oklch, currentColor 25%, transparent);\n color: currentColor;\n }\n }\n\n button:first-child {\n border-bottom-left-radius: var(--radius-xl);\n border-top-left-radius: var(--radius-xl);\n }\n\n button:last-child {\n border-bottom-right-radius: var(--radius-xl);\n border-top-right-radius: var(--radius-xl);\n }\n}\n\n/* Now playing */\n\ncite {\n display: block;\n font-style: normal;\n text-shadow: var(--text-shadow-sm);\n\n & > span,\n & > strong {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n}\n\n.controller__inner--light-mode cite {\n text-shadow: none;\n}\n\n/* Progress */\n\n.progress {\n cursor: pointer;\n margin: var(--space-xs) 0;\n padding-top: var(--space-2xs);\n}\n\n.timestamps {\n display: flex;\n font-size: 60%;\n font-weight: 500;\n justify-content: space-between;\n margin-top: var(--space-3xs);\n opacity: 0.4;\n text-shadow: var(--text-shadow-xs);\n}\n\n.controller__inner--light-mode .timestamps {\n text-shadow: none;\n}\n\n/* Controls */\n\n.controller menu {\n align-items: center;\n display: flex;\n font-size: 230%;\n gap: var(--space-lg);\n justify-content: center;\n margin: var(--spacing) 0;\n padding: 0;\n text-align: center;\n}\n\n.controller .menu__loader {\n line-height: 0;\n transform-origin: center;\n}\n\n.controller li {\n cursor: pointer;\n line-height: 0;\n list-style: none;\n transition-duration: var(--transition-durition);\n transition-property: opacity;\n}\n\n.controller .ph-pause,\n.controller .ph-play,\n.controller .menu__loader {\n font-size: 130%;\n}\n\n/* Volume */\n\n.volume {\n align-items: center;\n display: flex;\n font-size: 75%;\n gap: var(--space-2xs);\n justify-content: space-between;\n}\n\n.volume .progress-bar {\n cursor: pointer;\n flex: 1;\n padding: var(--space-2xs) 0;\n}\n\n.volume i {\n cursor: pointer;\n}\n\n/* Footer */\n\nfooter {\n align-items: center;\n display: flex;\n gap: var(--space-2xs);\n justify-content: center;\n margin-top: var(--space-sm);\n}\n\n/* Gradient blur */\n\n.gradient-blur {\n bottom: 0;\n height: 150%;\n left: 0;\n pointer-events: none;\n position: absolute;\n right: 0;\n z-index: 2;\n}\n\n.gradient-blur > div {\n position: absolute;\n inset: 0;\n}\n\n.gradient-blur > div:nth-of-type(1) {\n backdrop-filter: blur(1px);\n mask: linear-gradient(\n to bottom,\n rgba(0, 0, 0, 0) 0%,\n rgba(0, 0, 0, 1) 4.166666665%,\n rgba(0, 0, 0, 1) 8.333333332%,\n rgba(0, 0, 0, 0) 12.499999999%\n );\n z-index: 1;\n}\n\n.gradient-blur > div:nth-of-type(2) {\n backdrop-filter: blur(2px);\n mask: linear-gradient(\n to bottom,\n rgba(0, 0, 0, 0) 4.166666665%,\n rgba(0, 0, 0, 1) 8.333333332%,\n rgba(0, 0, 0, 1) 12.499999999%,\n rgba(0, 0, 0, 0) 16.666666666%\n );\n z-index: 2;\n}\n\n.gradient-blur > div:nth-of-type(3) {\n backdrop-filter: blur(4px);\n mask: linear-gradient(\n to bottom,\n rgba(0, 0, 0, 0) 8.333333332%,\n rgba(0, 0, 0, 1) 12.499999999%,\n rgba(0, 0, 0, 1) 16.666666666%,\n rgba(0, 0, 0, 0) 20.833333333%\n );\n z-index: 3;\n}\n\n.gradient-blur > div:nth-of-type(4) {\n backdrop-filter: blur(8px);\n mask: linear-gradient(\n to bottom,\n rgba(0, 0, 0, 0) 12.499999999%,\n rgba(0, 0, 0, 1) 16.666666666%,\n rgba(0, 0, 0, 1) 20.833333333%,\n rgba(0, 0, 0, 0) 25%\n );\n z-index: 4;\n}\n\n.gradient-blur > div:nth-of-type(5) {\n backdrop-filter: blur(16px);\n mask: linear-gradient(\n to bottom,\n rgba(0, 0, 0, 0) 16.666666666%,\n rgba(0, 0, 0, 1) 20.833333333%,\n rgba(0, 0, 0, 1) 25%,\n rgba(0, 0, 0, 0) 100%\n );\n z-index: 5;\n}\n\n.gradient-blur > div:nth-of-type(6) {\n backdrop-filter: blur(32px);\n mask: linear-gradient(\n to bottom,\n rgba(0, 0, 0, 0) 20.833333333%,\n rgba(0, 0, 0, 1) 25%,\n rgba(0, 0, 0, 1) 100%\n );\n z-index: 6;\n}\n\n.gradient-blur > div:nth-of-type(7) {\n backdrop-filter: blur(64px);\n mask: linear-gradient(to bottom, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 1) 100%);\n z-index: 7;\n}\n"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse"}
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/artwork-controller/element.js
··· 1 + ../../../../bafybeidcqjj5ooqx36uomtsgqcpuu5bjordymamrliah7o2bq7ghzvfxgm/themes/blur/artwork-controller/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/artwork-controller/element.js.br
··· 1 + ../../../../bafybeidcqjj5ooqx36uomtsgqcpuu5bjordymamrliah7o2bq7ghzvfxgm/themes/blur/artwork-controller/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/artwork-controller/element.js.map
··· 1 + ../../../../bafybeidcqjj5ooqx36uomtsgqcpuu5bjordymamrliah7o2bq7ghzvfxgm/themes/blur/artwork-controller/element.js.map
+49
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/artwork-controller/facet/index.html
··· 1 + <style> 2 + @import "./vendor/@phosphor-icons/web/bold/style.css"; 3 + @import "./vendor/@phosphor-icons/web/fill/style.css"; 4 + @import "./styles/base.css"; 5 + @import "./themes/blur/font-faces.css"; 6 + 7 + db-artwork-controller { 8 + font-family: "Source Sans 3", ui-sans-serif, system-ui, sans-serif; 9 + font-feature-settings: normal; 10 + font-optical-sizing: auto; 11 + } 12 + </style> 13 + 14 + <script type="module"> 15 + import foundation from "~/common/foundation.js"; 16 + import ArtworkController from "~/themes/blur/artwork-controller/element.js"; 17 + 18 + // Set doc title 19 + foundation.setup({ title: "Artwork controller | Blur | Diffuse" }); 20 + 21 + // Setup the prerequisite elements 22 + await foundation.orchestrator.queueAudio(); 23 + await foundation.orchestrator.mediaSession(); 24 + 25 + const [art, ctl, fav, inp, rs] = await Promise.all([ 26 + foundation.orchestrator.artwork(), 27 + foundation.orchestrator.controller(), 28 + foundation.orchestrator.favourites(), 29 + foundation.configurator.input(), 30 + foundation.engine.repeatShuffle(), 31 + ]); 32 + 33 + // Controller 34 + const dac = new ArtworkController(); 35 + dac.setAttribute("artwork-selector", art.selector); 36 + dac.setAttribute("controller-orchestrator-selector", ctl.selector); 37 + dac.setAttribute("input-selector", inp.selector); 38 + dac.setAttribute("favourites-orchestrator-selector", fav.selector); 39 + dac.setAttribute("repeat-shuffle-engine-selector", rs.selector); 40 + 41 + // Add to DOM 42 + (document.querySelector("#container") ?? document.body).append(dac); 43 + 44 + //////////////////////////////////////////// 45 + // 🚀 46 + //////////////////////////////////////////// 47 + 48 + foundation.ready(); 49 + </script>
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/artwork-controller/facet/index.html.br

This is a binary file and will not be displayed.

+2
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/browser/element.css
··· 1 + :host{background:var(--bg-color);color:var(--text-color);display:flex;flex-direction:column;font-size:calc(var(--fs-sm)*.85);height:100%;overflow:hidden}.dropdown{font-size:100%}.toolbar{border-bottom:1px solid color-mix(in oklch,currentColor 6%,transparent);gap:var(--space-sm);padding:var(--space-3xs) var(--space-xs)}.search-field,.toolbar{align-items:center;display:flex}.search-field{color:color-mix(in oklch,currentColor 45%,transparent);flex:1;flex-direction:row;gap:var(--space-2xs)}.search-field i{flex-shrink:0}.search-field input{background:transparent;border:none;color:var(--text-color);flex:1;min-width:0;outline:none;padding:var(--space-2xs) var(--space-3xs)}.search-field input[type=search]::-webkit-search-cancel-button{display:none}.search-field input::-moz-placeholder{color:color-mix(in oklch,currentColor 40%,transparent)}.search-field input::placeholder{color:color-mix(in oklch,currentColor 40%,transparent)}.playlist-btn,.toolbar-actions{align-items:center;display:flex}.playlist-btn{background:transparent;border:1px solid color-mix(in oklch,currentColor 6%,transparent);border-radius:var(--radius-md);color:inherit;cursor:pointer;font-family:inherit;font-size:100%;gap:var(--space-2xs);margin-left:var(--space-2xs);max-width:12rem;overflow:hidden;padding:var(--space-3xs) var(--space-2xs) calc(var(--space-3xs) - 1px);text-box:trim-both cap alphabetic;text-overflow:ellipsis;white-space:nowrap}.playlist-btn i{flex-shrink:0}.toolbar-icon-btn{align-items:center;background:transparent;border:none;border-radius:var(--radius-md);color:color-mix(in oklch,currentColor 50%,transparent);cursor:pointer;display:flex;padding:var(--space-3xs)}.toolbar-icon-btn:hover{color:currentColor}.table-header{border-bottom:1px solid color-mix(in oklch,currentColor 12%,transparent);color:color-mix(in oklch,currentColor 40%,transparent);display:flex;font-size:75%;font-weight:500;letter-spacing:var(--tracking-wider);line-height:1;padding:0 var(--space-xs);text-box:trim-both cap alphabetic;text-transform:uppercase;-webkit-user-select:none;-moz-user-select:none;user-select:none}.table-header>div{align-items:center;border-left:1px solid color-mix(in oklch,currentColor 12%,transparent);cursor:pointer;display:flex;gap:var(--space-3xs);margin-right:var(--space-2xs);padding:calc(var(--space-3xs) + 1px) 0 var(--space-3xs) var(--space-2xs);position:relative;&>i{position:absolute;right:0}}.table-header>div:hover{color:currentColor}.table-header .col--sorted{color:color-mix(in oklch,currentColor 80%,transparent)}.table-header .col-fav{border-left:none;cursor:default;margin-right:0}.col-fav{flex-shrink:0;width:var(--space-md)}.col-title{flex:2;min-width:0}.col-album,.col-artist{flex:1.5;min-width:0}.scroll-panel{flex:1;min-height:0;overflow-y:auto}.virtual-scroll{position:relative}.group-header{align-items:center;color:color-mix(in oklch,currentColor 45%,transparent);display:flex;font-size:110%;font-weight:600;gap:var(--space-2xs);height:52px;left:0;padding:0 var(--space-xs);position:absolute;right:0;&>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.track-row{align-items:center;cursor:pointer;display:flex;height:40px;left:0;padding:0 var(--space-xs);position:absolute;right:0;transition:background-color 80ms}.track-row--alt{background-color:color-mix(in oklch,currentColor 1.5%,transparent)}.track-row:hover{background-color:color-mix(in oklch,currentColor 6%,transparent)}.track-row>div{overflow:hidden}.track-row .col-fav{align-items:center;display:flex;flex-shrink:0}.track-row .col-album,.track-row .col-artist,.track-row .col-title{padding-left:var(--space-2xs)}.track-row span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.track-row--playing .track-title{font-weight:600}.fav-btn{background:none;border:none;color:color-mix(in oklch,currentColor 20%,transparent);cursor:pointer;font-size:90%;line-height:0;padding:var(--space-2xs);padding-left:calc(var(--space-xs) - var(--space-2xs))}.fav-btn:hover{color:color-mix(in oklch,currentColor 60%,transparent)}.fav-btn--active{color:oklch(.55 .2 25)}.fav-btn--active:hover{color:oklch(.45 .2 25)}@media (prefers-color-scheme:dark){.fav-btn--active{color:oklch(.62 .22 25)}.fav-btn--active:hover{color:oklch(.52 .22 25)}}.loading{color:color-mix(in oklch,currentColor 40%,transparent);padding:var(--space-lg) var(--space-md)} 2 + /*# sourceMappingURL=./element.css.map */
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/browser/element.css.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/browser/element.css.map
··· 1 + {"version":3,"sources":["/src/themes/blur/browser/element.css"],"names":[],"mappings":"AAAA,MACE,0BAA2B,CAC3B,uBAAwB,CACxB,YAAa,CACb,qBAAsB,CACtB,gCAAoC,CACpC,WAAY,CACZ,eACF,CAMA,UACE,cACF,CAMA,SAEE,uEAA0E,CAE1E,mBAAoB,CACpB,wCACF,CAEA,uBAPE,kBAAmB,CAEnB,YAYF,CAPA,cAEE,sDAAyD,CAEzD,MAAO,CACP,kBAAmB,CACnB,oBACF,CAEA,gBACE,aACF,CAEA,oBACE,sBAAuB,CACvB,WAAY,CACZ,uBAAwB,CACxB,MAAO,CACP,WAAY,CACZ,YAAa,CACb,yCACF,CAEA,+DACE,YACF,CAEA,sCACE,sDACF,CAFA,iCACE,sDACF,CAOA,+BAJE,kBAAmB,CACnB,YAqBF,CAlBA,cAEE,sBAAuB,CACvB,gEAAmE,CACnE,8BAA+B,CAC/B,aAAc,CACd,cAAe,CAEf,mBAAoB,CACpB,cAAe,CACf,oBAAqB,CACrB,4BAA6B,CAC7B,eAAgB,CAChB,eAAgB,CAChB,sEAAuE,CACvE,iCAAkC,CAClC,sBAAuB,CACvB,kBACF,CAEA,gBACE,aACF,CAEA,kBACE,kBAAmB,CACnB,sBAAuB,CACvB,WAAY,CACZ,8BAA+B,CAC/B,sDAAyD,CACzD,cAAe,CACf,YAAa,CACb,wBACF,CAEA,wBACE,kBACF,CAMA,cACE,wEAA2E,CAC3E,sDAAyD,CACzD,YAAa,CACb,aAAc,CACd,eAAgB,CAChB,oCAAqC,CACrC,aAAc,CACd,yBAA0B,CAC1B,iCAAkC,CAClC,wBAAyB,CACzB,wBAAiB,CAAjB,qBAAiB,CAAjB,gBACF,CAEA,kBACE,kBAAmB,CACnB,sEAAyE,CACzE,cAAe,CACf,YAAa,CACb,oBAAqB,CACrB,6BAA8B,CAC9B,wEAAyE,CACzE,iBAAkB,CAElB,IACE,iBAAkB,CAClB,OACF,CACF,CAEA,wBACE,kBACF,CAEA,2BACE,sDACF,CAEA,uBACE,gBAAiB,CACjB,cAAe,CACf,cACF,CAMA,SACE,aAAc,CACd,qBACF,CAEA,WACE,MAAO,CACP,WACF,CAOA,uBAJE,QAAS,CACT,WAMF,CAMA,cACE,MAAO,CAEP,YAAa,CADb,eAEF,CAEA,gBACE,iBACF,CAMA,cACE,kBAAmB,CACnB,sDAAyD,CACzD,YAAa,CACb,cAAe,CACf,eAAgB,CAChB,oBAAqB,CACrB,WAAY,CACZ,MAAO,CACP,yBAA0B,CAC1B,iBAAkB,CAClB,OAAQ,CAER,OACE,eAAgB,CAChB,sBAAuB,CACvB,kBACF,CACF,CAMA,WACE,kBAAmB,CACnB,cAAe,CACf,YAAa,CACb,WAAY,CACZ,MAAO,CAGP,yBAA0B,CAF1B,iBAAkB,CAClB,OAAQ,CAER,gCACF,CAEA,gBACE,kEACF,CAEA,iBACE,gEACF,CAEA,eACE,eACF,CAEA,oBACE,kBAAmB,CACnB,YAAa,CACb,aACF,CAEA,mEAGE,6BACF,CAEA,gBACE,aAAc,CACd,eAAgB,CAChB,sBAAuB,CACvB,kBACF,CAEA,iCACE,eACF,CAMA,SACE,eAAgB,CAChB,WAAY,CACZ,sDAAyD,CACzD,cAAe,CACf,aAAc,CACd,aAAc,CACd,wBAAyB,CACzB,qDACF,CAEA,eACE,sDACF,CAEA,iBACE,sBACF,CAEA,uBACE,sBACF,CAEA,mCACE,iBACE,uBACF,CAEA,uBACE,uBACF,CACF,CAMA,SACE,sDAAyD,CACzD,uCACF","file":"/themes/blur/browser/element.css.map","sourcesContent":[":host {\n background: var(--bg-color);\n color: var(--text-color);\n display: flex;\n flex-direction: column;\n font-size: calc(var(--fs-sm) * 0.85);\n height: 100%;\n overflow: hidden;\n}\n\n/***********************************\n * Dropdown\n ***********************************/\n\n.dropdown {\n font-size: 100%;\n}\n\n/***********************************\n * Toolbar\n ***********************************/\n\n.toolbar {\n align-items: center;\n border-bottom: 1px solid color-mix(in oklch, currentColor 6%, transparent);\n display: flex;\n gap: var(--space-sm);\n padding: var(--space-3xs) var(--space-xs);\n}\n\n.search-field {\n align-items: center;\n color: color-mix(in oklch, currentColor 45%, transparent);\n display: flex;\n flex: 1;\n flex-direction: row;\n gap: var(--space-2xs);\n}\n\n.search-field i {\n flex-shrink: 0;\n}\n\n.search-field input {\n background: transparent;\n border: none;\n color: var(--text-color);\n flex: 1;\n min-width: 0;\n outline: none;\n padding: var(--space-2xs) var(--space-3xs);\n}\n\n.search-field input[type=\"search\"]::-webkit-search-cancel-button {\n display: none;\n}\n\n.search-field input::placeholder {\n color: color-mix(in oklch, currentColor 40%, transparent);\n}\n\n.toolbar-actions {\n align-items: center;\n display: flex;\n}\n\n.playlist-btn {\n align-items: center;\n background: transparent;\n border: 1px solid color-mix(in oklch, currentColor 6%, transparent);\n border-radius: var(--radius-md);\n color: inherit;\n cursor: pointer;\n display: flex;\n font-family: inherit;\n font-size: 100%;\n gap: var(--space-2xs);\n margin-left: var(--space-2xs);\n max-width: 12rem;\n overflow: hidden;\n padding: var(--space-3xs) var(--space-2xs) calc(var(--space-3xs) - 1px);\n text-box: trim-both cap alphabetic;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.playlist-btn i {\n flex-shrink: 0;\n}\n\n.toolbar-icon-btn {\n align-items: center;\n background: transparent;\n border: none;\n border-radius: var(--radius-md);\n color: color-mix(in oklch, currentColor 50%, transparent);\n cursor: pointer;\n display: flex;\n padding: var(--space-3xs);\n}\n\n.toolbar-icon-btn:hover {\n color: currentColor;\n}\n\n/***********************************\n * Table header\n ***********************************/\n\n.table-header {\n border-bottom: 1px solid color-mix(in oklch, currentColor 12%, transparent);\n color: color-mix(in oklch, currentColor 40%, transparent);\n display: flex;\n font-size: 75%;\n font-weight: 500;\n letter-spacing: var(--tracking-wider);\n line-height: 1;\n padding: 0 var(--space-xs);\n text-box: trim-both cap alphabetic;\n text-transform: uppercase;\n user-select: none;\n}\n\n.table-header > div {\n align-items: center;\n border-left: 1px solid color-mix(in oklch, currentColor 12%, transparent);\n cursor: pointer;\n display: flex;\n gap: var(--space-3xs);\n margin-right: var(--space-2xs);\n padding: calc(var(--space-3xs) + 1px) 0 var(--space-3xs) var(--space-2xs);\n position: relative;\n\n & > i {\n position: absolute;\n right: 0;\n }\n}\n\n.table-header > div:hover {\n color: currentColor;\n}\n\n.table-header .col--sorted {\n color: color-mix(in oklch, currentColor 80%, transparent);\n}\n\n.table-header .col-fav {\n border-left: none;\n cursor: default;\n margin-right: 0;\n}\n\n/***********************************\n * Column widths\n ***********************************/\n\n.col-fav {\n flex-shrink: 0;\n width: var(--space-md);\n}\n\n.col-title {\n flex: 2;\n min-width: 0;\n}\n\n.col-artist {\n flex: 1.5;\n min-width: 0;\n}\n\n.col-album {\n flex: 1.5;\n min-width: 0;\n}\n\n/***********************************\n * Scroll panel\n ***********************************/\n\n.scroll-panel {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n}\n\n.virtual-scroll {\n position: relative;\n}\n\n/***********************************\n * Group header\n ***********************************/\n\n.group-header {\n align-items: center;\n color: color-mix(in oklch, currentColor 45%, transparent);\n display: flex;\n font-size: 110%;\n font-weight: 600;\n gap: var(--space-2xs);\n height: 52px;\n left: 0;\n padding: 0 var(--space-xs);\n position: absolute;\n right: 0;\n\n & > span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n}\n\n/***********************************\n * Track row\n ***********************************/\n\n.track-row {\n align-items: center;\n cursor: pointer;\n display: flex;\n height: 40px;\n left: 0;\n position: absolute;\n right: 0;\n padding: 0 var(--space-xs);\n transition: background-color 80ms;\n}\n\n.track-row--alt {\n background-color: color-mix(in oklch, currentColor 1.5%, transparent);\n}\n\n.track-row:hover {\n background-color: color-mix(in oklch, currentColor 6%, transparent);\n}\n\n.track-row > div {\n overflow: hidden;\n}\n\n.track-row .col-fav {\n align-items: center;\n display: flex;\n flex-shrink: 0;\n}\n\n.track-row .col-title,\n.track-row .col-artist,\n.track-row .col-album {\n padding-left: var(--space-2xs);\n}\n\n.track-row span {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.track-row--playing .track-title {\n font-weight: 600;\n}\n\n/***********************************\n * Favourite button\n ***********************************/\n\n.fav-btn {\n background: none;\n border: none;\n color: color-mix(in oklch, currentColor 20%, transparent);\n cursor: pointer;\n font-size: 90%;\n line-height: 0;\n padding: var(--space-2xs);\n padding-left: calc(var(--space-xs) - var(--space-2xs));\n}\n\n.fav-btn:hover {\n color: color-mix(in oklch, currentColor 60%, transparent);\n}\n\n.fav-btn--active {\n color: oklch(0.55 0.2 25);\n}\n\n.fav-btn--active:hover {\n color: oklch(0.45 0.2 25);\n}\n\n@media (prefers-color-scheme: dark) {\n .fav-btn--active {\n color: oklch(0.62 0.22 25);\n }\n\n .fav-btn--active:hover {\n color: oklch(0.52 0.22 25);\n }\n}\n\n/***********************************\n * Loading\n ***********************************/\n\n.loading {\n color: color-mix(in oklch, currentColor 40%, transparent);\n padding: var(--space-lg) var(--space-md);\n}\n"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse"}
+129
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/browser/element.js
··· 1 + import{b as W}from"../../../chunk-UZQU6UI3.js";import"../../../chunk-CFGHNC4Y.js";import{b as D,e as L,f as $,i as N}from"../../../chunk-JPVVQ3UF.js";import"../../../chunk-WLXGGMHC.js";import"../../../chunk-QVM63RP5.js";import"../../../chunk-UYT7NSKP.js";import"../../../chunk-MWEXZQ4O.js";import{j as T,o as O,p as F}from"../../../chunk-YHFKI4Y2.js";import"../../../chunk-K2CRUTCH.js";import{a}from"../../../chunk-BFIVCPQF.js";function w(r,l,t){let e=t.initialDeps??[],s,i=!0;function o(){var n,c,f;let d;t.key&&((n=t.debug)!=null&&n.call(t))&&(d=Date.now());let p=r();if(!(p.length!==e.length||p.some((y,g)=>e[g]!==y)))return s;e=p;let S;if(t.key&&((c=t.debug)!=null&&c.call(t))&&(S=Date.now()),s=l(...p),t.key&&((f=t.debug)!=null&&f.call(t))){let y=Math.round((Date.now()-d)*100)/100,g=Math.round((Date.now()-S)*100)/100,E=g/16,x=a((h,m)=>{for(h=String(h);h.length<m;)h=" "+h;return h},"pad");console.info(`%c\u23F1 ${x(g,5)} /${x(y,5)} ms`,` 2 + font-size: .6rem; 3 + font-weight: bold; 4 + color: hsl(${Math.max(0,Math.min(120-120*E,120))}deg 100% 31%);`,t?.key)}return t?.onChange&&!(i&&t.skipInitialOnChange)&&t.onChange(s),i=!1,s}return a(o,"memoizedFunction"),o.updateDeps=n=>{e=n},o}a(w,"memo");function R(r,l){if(r===void 0)throw new Error(`Unexpected undefined${l?`: ${l}`:""}`);return r}a(R,"notUndefined");var B=a((r,l)=>Math.abs(r-l)<1.01,"approxEqual"),P=a((r,l,t)=>{let e;return function(...s){r.clearTimeout(e),e=r.setTimeout(()=>l.apply(this,s),t)}},"debounce");var q=a(r=>{let{offsetWidth:l,offsetHeight:t}=r;return{width:l,height:t}},"getRect"),Y=a(r=>r,"defaultKeyExtractor"),X=a(r=>{let l=Math.max(r.startIndex-r.overscan,0),t=Math.min(r.endIndex+r.overscan,r.count-1),e=[];for(let s=l;s<=t;s++)e.push(s);return e},"defaultRangeExtractor"),j=a((r,l)=>{let t=r.scrollElement;if(!t)return;let e=r.targetWindow;if(!e)return;let s=a(o=>{let{width:n,height:c}=o;l({width:Math.round(n),height:Math.round(c)})},"handler");if(s(q(t)),!e.ResizeObserver)return()=>{};let i=new e.ResizeObserver(o=>{let n=a(()=>{let c=o[0];if(c?.borderBoxSize){let f=c.borderBoxSize[0];if(f){s({width:f.inlineSize,height:f.blockSize});return}}s(q(t))},"run");r.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(n):n()});return i.observe(t,{box:"border-box"}),()=>{i.unobserve(t)}},"observeElementRect"),V={passive:!0};var H=typeof window>"u"?!0:"onscrollend"in window,G=a((r,l)=>{let t=r.scrollElement;if(!t)return;let e=r.targetWindow;if(!e)return;let s=0,i=r.options.useScrollendEvent&&H?()=>{}:P(e,()=>{l(s,!1)},r.options.isScrollingResetDelay),o=a(d=>()=>{let{horizontal:p,isRtl:u}=r.options;s=p?t.scrollLeft*(u&&-1||1):t.scrollTop,i(),l(s,d)},"createHandler"),n=o(!0),c=o(!1);t.addEventListener("scroll",n,V);let f=r.options.useScrollendEvent&&H;return f&&t.addEventListener("scrollend",c,V),()=>{t.removeEventListener("scroll",n),f&&t.removeEventListener("scrollend",c)}},"observeElementOffset");var Q=a((r,l,t)=>{if(l?.borderBoxSize){let e=l.borderBoxSize[0];if(e)return Math.round(e[t.options.horizontal?"inlineSize":"blockSize"])}return r[t.options.horizontal?"offsetWidth":"offsetHeight"]},"measureElement");var U=a((r,{adjustments:l=0,behavior:t},e)=>{var s,i;let o=r+l;(i=(s=e.scrollElement)==null?void 0:s.scrollTo)==null||i.call(s,{[e.options.horizontal?"left":"top"]:o,behavior:t})},"elementScroll"),M=class{static{a(this,"Virtualizer")}constructor(l){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this.itemSizeCache=new Map,this.laneAssignments=new Map,this.pendingMeasuredCacheIndexes=[],this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.now=()=>{var t,e,s;return((s=(e=(t=this.targetWindow)==null?void 0:t.performance)==null?void 0:e.now)==null?void 0:s.call(e))??Date.now()},this.observer=(()=>{let t=null,e=a(()=>t||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:t=new this.targetWindow.ResizeObserver(s=>{s.forEach(i=>{let o=a(()=>{let n=i.target,c=this.indexFromElement(n);if(!n.isConnected){this.observer.unobserve(n);return}this.shouldMeasureDuringScroll(c)&&this.resizeItem(c,this.options.measureElement(n,i,this))},"run");this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(o):o()})})),"get");return{disconnect:a(()=>{var s;(s=e())==null||s.disconnect(),t=null},"disconnect"),observe:a(s=>{var i;return(i=e())==null?void 0:i.observe(s,{box:"border-box"})},"observe"),unobserve:a(s=>{var i;return(i=e())==null?void 0:i.unobserve(s)},"unobserve")}})(),this.range=null,this.setOptions=t=>{Object.entries(t).forEach(([e,s])=>{typeof s>"u"&&delete t[e]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:Y,rangeExtractor:X,onChange:a(()=>{},"onChange"),measureElement:Q,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,...t}},this.notify=t=>{var e,s;(s=(e=this.options).onChange)==null||s.call(e,this,t)},this.maybeNotify=w(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),t=>{this.notify(t)},{key:!1,debug:a(()=>this.options.debug,"debug"),initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(t=>t()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var t;let e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}this.scrollElement=e,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((t=this.scrollElement)==null?void 0:t.window)??null,this.elementsCache.forEach(s=>{this.observer.observe(s)}),this.unsubs.push(this.options.observeElementRect(this,s=>{this.scrollRect=s,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(s,i)=>{this.scrollAdjustments=0,this.scrollDirection=i?this.getScrollOffset()<s?"forward":"backward":null,this.scrollOffset=s,this.isScrolling=i,this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(t,e)=>{let s=new Map,i=new Map;for(let o=e-1;o>=0;o--){let n=t[o];if(s.has(n.lane))continue;let c=i.get(n.lane);if(c==null||n.end>c.end?i.set(n.lane,n):n.end<c.end&&s.set(n.lane,!0),s.size===this.options.lanes)break}return i.size===this.options.lanes?Array.from(i.values()).sort((o,n)=>o.end===n.end?o.index-n.index:o.end-n.end)[0]:void 0},this.getMeasurementOptions=w(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes],(t,e,s,i,o,n)=>(this.prevLanes!==void 0&&this.prevLanes!==n&&(this.lanesChangedFlag=!0),this.prevLanes=n,this.pendingMeasuredCacheIndexes=[],{count:t,paddingStart:e,scrollMargin:s,getItemKey:i,enabled:o,lanes:n}),{key:!1}),this.getMeasurements=w(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:t,paddingStart:e,scrollMargin:s,getItemKey:i,enabled:o,lanes:n},c)=>{if(!o)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>t)for(let u of this.laneAssignments.keys())u>=t&&this.laneAssignments.delete(u);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMeasuredCacheIndexes=[]),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(u=>{this.itemSizeCache.set(u.key,u.size)}));let f=this.lanesSettling?0:this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[],this.lanesSettling&&this.measurementsCache.length===t&&(this.lanesSettling=!1);let d=this.measurementsCache.slice(0,f),p=new Array(n).fill(void 0);for(let u=0;u<f;u++){let S=d[u];S&&(p[S.lane]=u)}for(let u=f;u<t;u++){let S=i(u),y=this.laneAssignments.get(u),g,E;if(y!==void 0&&this.options.lanes>1){g=y;let v=p[g],b=v!==void 0?d[v]:void 0;E=b?b.end+this.options.gap:e+s}else{let v=this.options.lanes===1?d[u-1]:this.getFurthestMeasurement(d,u);E=v?v.end+this.options.gap:e+s,g=v?v.lane:u%this.options.lanes,this.options.lanes>1&&this.laneAssignments.set(u,g)}let x=c.get(S),h=typeof x=="number"?x:this.options.estimateSize(u),m=E+h;d[u]={index:u,start:E,size:h,end:m,key:S,lane:g},p[g]=u}return this.measurementsCache=d,d},{key:!1,debug:a(()=>this.options.debug,"debug")}),this.calculateRange=w(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(t,e,s,i)=>this.range=t.length>0&&e>0?Z({measurements:t,outerSize:e,scrollOffset:s,lanes:i}):null,{key:!1,debug:a(()=>this.options.debug,"debug")}),this.getVirtualIndexes=w(()=>{let t=null,e=null,s=this.calculateRange();return s&&(t=s.startIndex,e=s.endIndex),this.maybeNotify.updateDeps([this.isScrolling,t,e]),[this.options.rangeExtractor,this.options.overscan,this.options.count,t,e]},(t,e,s,i,o)=>i===null||o===null?[]:t({startIndex:i,endIndex:o,overscan:e,count:s}),{key:!1,debug:a(()=>this.options.debug,"debug")}),this.indexFromElement=t=>{let e=this.options.indexAttribute,s=t.getAttribute(e);return s?parseInt(s,10):(console.warn(`Missing attribute name '${e}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=t=>{var e;if(!this.scrollState||this.scrollState.behavior!=="smooth")return!0;let s=this.scrollState.index??((e=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))==null?void 0:e.index);if(s!==void 0&&this.range){let i=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),o=Math.max(0,s-i),n=Math.min(this.options.count-1,s+i);return t>=o&&t<=n}return!0},this.measureElement=t=>{if(!t){this.elementsCache.forEach((o,n)=>{o.isConnected||(this.observer.unobserve(o),this.elementsCache.delete(n))});return}let e=this.indexFromElement(t),s=this.options.getItemKey(e),i=this.elementsCache.get(s);i!==t&&(i&&this.observer.unobserve(i),this.observer.observe(t),this.elementsCache.set(s,t)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(e)&&this.resizeItem(e,this.options.measureElement(t,void 0,this))},this.resizeItem=(t,e)=>{var s;let i=this.measurementsCache[t];if(!i)return;let o=this.itemSizeCache.get(i.key)??i.size,n=e-o;n!==0&&(((s=this.scrollState)==null?void 0:s.behavior)!=="smooth"&&(this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(i,n,this):i.start<this.getScrollOffset()+this.scrollAdjustments)&&this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=n,behavior:void 0}),this.pendingMeasuredCacheIndexes.push(i.index),this.itemSizeCache=new Map(this.itemSizeCache.set(i.key,e)),this.notify(!1))},this.getVirtualItems=w(()=>[this.getVirtualIndexes(),this.getMeasurements()],(t,e)=>{let s=[];for(let i=0,o=t.length;i<o;i++){let n=t[i],c=e[n];s.push(c)}return s},{key:!1,debug:a(()=>this.options.debug,"debug")}),this.getVirtualItemForOffset=t=>{let e=this.getMeasurements();if(e.length!==0)return R(e[K(0,e.length-1,s=>R(e[s]).start,t)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if("scrollHeight"in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{let t=this.scrollElement.document.documentElement;return this.options.horizontal?t.scrollWidth-this.scrollElement.innerWidth:t.scrollHeight-this.scrollElement.innerHeight}},this.getOffsetForAlignment=(t,e,s=0)=>{if(!this.scrollElement)return 0;let i=this.getSize(),o=this.getScrollOffset();e==="auto"&&(e=t>=o+i?"end":"start"),e==="center"?t+=(s-i)/2:e==="end"&&(t-=i);let n=this.getMaxScrollOffset();return Math.max(Math.min(n,t),0)},this.getOffsetForIndex=(t,e="auto")=>{t=Math.max(0,Math.min(t,this.options.count-1));let s=this.getSize(),i=this.getScrollOffset(),o=this.measurementsCache[t];if(!o)return;if(e==="auto")if(o.end>=i+s-this.options.scrollPaddingEnd)e="end";else if(o.start<=i+this.options.scrollPaddingStart)e="start";else return[i,e];if(e==="end"&&t===this.options.count-1)return[this.getMaxScrollOffset(),e];let n=e==="end"?o.end+this.options.scrollPaddingEnd:o.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(n,e,o.size),e]},this.scrollToOffset=(t,{align:e="start",behavior:s="auto"}={})=>{let i=this.getOffsetForAlignment(t,e),o=this.now();this.scrollState={index:null,align:e,behavior:s,startedAt:o,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:s}),this.scheduleScrollReconcile()},this.scrollToIndex=(t,{align:e="auto",behavior:s="auto"}={})=>{t=Math.max(0,Math.min(t,this.options.count-1));let i=this.getOffsetForIndex(t,e);if(!i)return;let[o,n]=i,c=this.now();this.scrollState={index:t,align:n,behavior:s,startedAt:c,lastTargetOffset:o,stableFrames:0},this._scrollToOffset(o,{adjustments:void 0,behavior:s}),this.scheduleScrollReconcile()},this.scrollBy=(t,{behavior:e="auto"}={})=>{let s=this.getScrollOffset()+t,i=this.now();this.scrollState={index:null,align:"start",behavior:e,startedAt:i,lastTargetOffset:s,stableFrames:0},this._scrollToOffset(s,{adjustments:void 0,behavior:e}),this.scheduleScrollReconcile()},this.getTotalSize=()=>{var t;let e=this.getMeasurements(),s;if(e.length===0)s=this.options.paddingStart;else if(this.options.lanes===1)s=((t=e[e.length-1])==null?void 0:t.end)??0;else{let i=Array(this.options.lanes).fill(null),o=e.length-1;for(;o>=0&&i.some(n=>n===null);){let n=e[o];i[n.lane]===null&&(i[n.lane]=n.end),o--}s=Math.max(...i.filter(n=>n!==null))}return Math.max(s-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(t,{adjustments:e,behavior:s})=>{this.options.scrollToFn(t,{behavior:s,adjustments:e},this)},this.measure=()=>{this.itemSizeCache=new Map,this.laneAssignments=new Map,this.notify(!1)},this.setOptions(l)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId==null&&(this.rafId=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}))}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}let e=this.scrollState.index!=null?this.getOffsetForIndex(this.scrollState.index,this.scrollState.align):void 0,s=e?e[0]:this.scrollState.lastTargetOffset,i=1,o=s!==this.scrollState.lastTargetOffset;if(!o&&B(s,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=i){this.scrollState=null;return}}else this.scrollState.stableFrames=0,o&&(this.scrollState.lastTargetOffset=s,this.scrollState.behavior="auto",this._scrollToOffset(s,{adjustments:void 0,behavior:"auto"}));this.scheduleScrollReconcile()}},K=a((r,l,t,e)=>{for(;r<=l;){let s=(r+l)/2|0,i=t(s);if(i<e)r=s+1;else if(i>e)l=s-1;else return s}return r>0?r-1:0},"findNearestBinarySearch");function Z({measurements:r,outerSize:l,scrollOffset:t,lanes:e}){let s=r.length-1,i=a(c=>r[c].start,"getOffset");if(r.length<=e)return{startIndex:0,endIndex:s};let o=K(0,s,i,t),n=o;if(e===1)for(;n<s&&r[n].end<t+l;)n++;else if(e>1){let c=Array(e).fill(0);for(;n<s&&c.some(d=>d<t+l);){let d=r[n];c[d.lane]=d.end,n++}let f=Array(e).fill(t+l);for(;o>=0&&f.some(d=>d>=t);){let d=r[o];f[d.lane]=d.start,o--}o=Math.max(0,o-o%e),n=Math.min(s,n+(e-1-n%e))}return{startIndex:o,endIndex:n}}a(Z,"calculateRange");var tt=40,et=52,st=10,_={title:["tags.title"],artist:["tags.artist","tags.album","tags.disc.no","tags.track.no"],album:["tags.album","tags.disc.no","tags.track.no"]},it=["createdAt"],nt=[{value:"firstLetter",label:"Group by first letter",icon:"ph-text-aa",sortBy:null,sortDirection:void 0},{value:"directory",label:"Group by path",icon:"ph-folder",sortBy:["uri"],sortDirection:void 0},{value:"createdAt",label:"Group by processing date",icon:"ph-clock",sortBy:["createdAt"],sortDirection:"desc"},{value:"tags.year",label:"Group by track year",icon:"ph-calendar",sortBy:["tags.year"],sortDirection:"desc"}],I=class extends D{static{a(this,"Browser")}constructor(){super(),this.attachShadow({mode:"open"})}$output=O(void 0);$provider=O(void 0);$queue=O(void 0);$scope=O(void 0);$favourites=O(void 0);$groupedPlaylists=T(()=>{let l=this.$output.value?.playlistItems.collection();if(!l||l.state!=="loaded"||!l.data.length)return[];let t=l.data,s=[...W(t).values()].sort((n,c)=>n.name.localeCompare(c.name)),i=s.filter(n=>!n.unordered),o=s.filter(n=>n.unordered);return[{label:"Ordered",playlists:i},{label:"Unordered",playlists:o}].filter(n=>n.playlists.length>0)});#e=[];#i=void 0;#n=void 0;#t;#s;connectedCallback(){super.connectedCallback();let l=$(this,"output-selector"),t=$(this,"tracks-selector"),e=$(this,"queue-engine-selector"),s=$(this,"scope-engine-selector"),i=$(this,"favourites-orchestrator-selector");N({output:l,provider:t,queue:e,scope:s,favourites:i}).then(()=>{this.$output.value=l,this.$provider.value=t,this.$queue.value=e,this.$scope.value=s,this.$favourites.value=i}),this.effect(()=>{let o=this.$provider.value?.tracks();F(()=>{let n=this.root().querySelector(".scroll-panel");n&&n.scrollTo(0,0)})}),requestAnimationFrame(()=>{let o=this.root().querySelector(".scroll-panel");o&&(this.#t=new M({count:0,getScrollElement:a(()=>o,"getScrollElement"),estimateSize:a(n=>this.#e[n]?.type==="group"?et:tt,"estimateSize"),overscan:st,observeElementRect:j,observeElementOffset:G,scrollToFn:U,onChange:a(()=>{requestAnimationFrame(()=>this.forceRender())},"onChange")}),this.#s=this.#t._didMount(),this.#t._willUpdate(),this.forceRender())})}disconnectedCallback(){super.disconnectedCallback(),this.#s?.(),this.#s=void 0,this.#t=void 0}playTrack(l){this.$queue.value?.add({inFront:!0,trackIds:[l.id]}),this.$queue.value?.shift()}setSearchTerm=a(()=>{let t=this.root().querySelector("#search-input")?.value?.trim();this.$scope.value?.setSearchTerm(t)},"setSearchTerm");clearSearch=a(()=>{let l=this.root().querySelector("#search-input");l&&(l.value=""),this.$scope.value?.setSearchTerm(void 0)},"clearSearch");setGroupBy=a(l=>{this.$scope.value?.setGroupBy(l)},"setGroupBy");setSelectedPlaylist=a(l=>{this.$scope.value?.setPlaylist(l)},"setSelectedPlaylist");sortByColumn=a(l=>{let t=this.$scope.value;if(!t)return;JSON.stringify(_[l])===JSON.stringify(t.sortBy())?t.sortDirection()==="desc"?t.revertToDefaultSort():t.setSortDirection("desc"):(t.setSortBy(_[l]??[]),t.setSortDirection(void 0))},"sortByColumn");toggleFavourite=a(l=>{this.$favourites.value?.toggle(l)},"toggleFavourite");render({html:l}){let t=this.$output.value?.tracks?.collection().state!=="loaded",e=this.$provider.value?.tracks()??[],s=this.$scope.value?.playlist(),i=this.$scope.value?.groupBy(),o=this.$scope.value?.searchTerm()??"",n=this.$scope.value?.sortBy()??it,c=this.$scope.value?.sortDirection(),f=Object.entries(_).find(([,h])=>JSON.stringify(h)===JSON.stringify(n))?.[0],d=a(h=>f===h?c==="desc"?"descending":"ascending":"none","ariaSort"),p=this.$provider.value?.groups?.();(p!==this.#n||e!==this.#i)&&(this.#e=p?ot(p):[],this.#n=p,this.#i=e);let u=p?this.#e.length:e.length;this.#t&&(this.#t.setOptions({...this.#t.options,count:u}),this.#t._willUpdate());let S=this.#t?.getVirtualItems()??[],y=this.#t?.getTotalSize()??0,g=this.$favourites.value?.playlistItems()??[],E=new Set(g.map(h=>{let m=h.criteria.find(b=>b.field==="tags.artist"),v=h.criteria.find(b=>b.field==="tags.title");return`${String(m?.value??"").toLowerCase()}|${String(v?.value??"").toLowerCase()}`})),x=a((h,m,v)=>{let b=`${String(h.tags?.artist??"").toLowerCase()}|${String(h.tags?.title??"").toLowerCase()}`,C=E.has(b);return l` 5 + <div 6 + class="track-row ${v%2===1?"track-row--alt":""}" 7 + style="transform: translateY(${m}px);" 8 + @dblclick="${()=>this.playTrack(h)}" 9 + > 10 + <div class="col-fav"> 11 + <button 12 + class="fav-btn ${C?"fav-btn--active":""}" 13 + @click="${k=>{k.stopPropagation(),this.toggleFavourite(h)}}" 14 + title="${C?"Remove from favourites":"Add to favourites"}" 15 + > 16 + <i class="ph-${C?"fill ph-heart":"bold ph-heart"}"></i> 17 + </button> 18 + </div> 19 + <div class="col-title"> 20 + <span class="track-title">${h.tags?.title}</span> 21 + </div> 22 + <div class="col-artist"> 23 + <span>${h.tags?.artist}</span> 24 + </div> 25 + <div class="col-album"> 26 + <span>${h.tags?.album}</span> 27 + </div> 28 + </div> 29 + `},"renderTrackRow");return l` 30 + <link rel="stylesheet" href="styles/base.css" /> 31 + <link rel="stylesheet" href="styles/diffuse/facet.css" /> 32 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/bold/style.css" /> 33 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/fill/style.css" /> 34 + <link rel="stylesheet" href="themes/blur/variables.css" /> 35 + <link rel="stylesheet" href="themes/blur/browser/element.css" /> 36 + 37 + <div class="toolbar"> 38 + <label class="search-field"> 39 + <i class="ph-bold ph-magnifying-glass"></i> 40 + <input 41 + id="search-input" 42 + type="search" 43 + placeholder="Search" 44 + @change="${this.setSearchTerm}" 45 + .value="${o}" 46 + /> 47 + </label> 48 + 49 + <div class="toolbar-actions"> 50 + ${o?l` 51 + <button class="toolbar-icon-btn" @click="${this.clearSearch}" title="Clear search"> 52 + <i class="ph-bold ph-x"></i> 53 + </button> 54 + `:""} 55 + <button class="toolbar-icon-btn" popovertarget="groupby-menu" title="Group by"> 56 + <i class="ph-fill ph-stack"></i> 57 + </button> 58 + <div id="groupby-menu" class="dropdown" popover> 59 + ${nt.map(({value:h,label:m,icon:v,sortBy:b,sortDirection:C})=>{let k=n[0]??"tags.title",J=h==="firstLetter"?`firstLetter:${k}`:h,z=h==="firstLetter"?i?.startsWith("firstLetter:"):i===h;return l` 60 + <button 61 + class="${z?"dropdown-item--active":""}" 62 + @click="${()=>{let A=this.$scope.value;z?this.setGroupBy(void 0):(this.setGroupBy(J),b&&A&&(A.setSortBy(b),A.setSortDirection(C))),this.root().querySelector("#groupby-menu")?.hidePopover()}}" 63 + > 64 + ${z?l`<i class="ph-bold ph-x"></i>`:""} 65 + ${m} 66 + </button> 67 + `})} 68 + </div> 69 + <button class="playlist-btn" popovertarget="playlist-menu"> 70 + <i class="ph-fill ph-playlist"></i> 71 + <span>${s??"All tracks"}</span> 72 + </button> 73 + <div id="playlist-menu" class="dropdown" popover> 74 + <button @click="${()=>{this.setSelectedPlaylist(void 0),this.root().querySelector("#playlist-menu")?.hidePopover()}}"> 75 + All tracks 76 + </button> 77 + ${this.$groupedPlaylists().map(h=>h.playlists.map(m=>l` 78 + <button @click="${()=>{this.setSelectedPlaylist(m.name),this.root().querySelector("#playlist-menu")?.hidePopover()}}"> 79 + ${m.name} 80 + </button> 81 + `))} 82 + </div> 83 + </div> 84 + </div> 85 + 86 + <div class="table-header"> 87 + <div class="col-fav"></div> 88 + <div 89 + class="col-title ${f==="title"?"col--sorted":""}" 90 + @click="${()=>this.sortByColumn("title")}" 91 + aria-sort="${d("title")}" 92 + > 93 + Title 94 + ${f==="title"?l`<i class="ph-bold ${c==="desc"?"ph-caret-down":"ph-caret-up"}"></i>`:""} 95 + </div> 96 + <div 97 + class="col-artist ${f==="artist"?"col--sorted":""}" 98 + @click="${()=>this.sortByColumn("artist")}" 99 + aria-sort="${d("artist")}" 100 + > 101 + Artist 102 + ${f==="artist"?l`<i class="ph-bold ${c==="desc"?"ph-caret-down":"ph-caret-up"}"></i>`:""} 103 + </div> 104 + <div 105 + class="col-album ${f==="album"?"col--sorted":""}" 106 + @click="${()=>this.sortByColumn("album")}" 107 + aria-sort="${d("album")}" 108 + > 109 + Album 110 + ${f==="album"?l`<i class="ph-bold ${c==="desc"?"ph-caret-down":"ph-caret-up"}"></i>`:""} 111 + </div> 112 + </div> 113 + 114 + <div class="scroll-panel"> 115 + <div class="virtual-scroll" style="height: ${y}px;"> 116 + ${t?l`<div class="loading">Loading ...</div>`:S.map(h=>{let m=p?this.#e[h.index]:{type:"track",track:e[h.index]};return m?.type==="group"?l` 117 + <div 118 + class="group-header" 119 + style="transform: translateY(${h.start}px);" 120 + > 121 + <i class="ph-fill ph-vinyl-record"></i> 122 + <span>${m.label}</span> 123 + </div> 124 + `:m?.type==="track"?x(m.track,h.start,h.index):""})} 125 + </div> 126 + </div> 127 + `}},vt=I;function ot(r){let l=[];for(let t of r){l.push({type:"group",label:t.label});for(let e of t.tracks)l.push({type:"track",track:e})}return l}a(ot,"buildFlatList");var lt=I,rt="db-browser";L(rt,lt);export{lt as CLASS,rt as NAME,vt as default}; 128 + 129 + //# sourceMappingURL=./element.js.map
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/browser/element.js.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/browser/element.js.map
··· 1 + {"version":3,"sources":["/node_modules/.deno/@tanstack+virtual-core@3.13.23/node_modules/@tanstack/virtual-core/src/utils.ts","/node_modules/.deno/@tanstack+virtual-core@3.13.23/node_modules/@tanstack/virtual-core/src/index.ts","/element.js"],"sourcesContent":["export type NoInfer<A extends any> = [A][A extends any ? 0 : never]\n\nexport type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>\n\nexport function memo<TDeps extends ReadonlyArray<any>, TResult>(\n getDeps: () => [...TDeps],\n fn: (...args: NoInfer<[...TDeps]>) => TResult,\n opts: {\n key: false | string\n debug?: () => boolean\n onChange?: (result: TResult) => void\n initialDeps?: TDeps\n skipInitialOnChange?: boolean\n },\n) {\n let deps = opts.initialDeps ?? []\n let result: TResult | undefined\n let isInitial = true\n\n function memoizedFunction(): TResult {\n let depTime: number\n if (opts.key && opts.debug?.()) depTime = Date.now()\n\n const newDeps = getDeps()\n\n const depsChanged =\n newDeps.length !== deps.length ||\n newDeps.some((dep: any, index: number) => deps[index] !== dep)\n\n if (!depsChanged) {\n return result!\n }\n\n deps = newDeps\n\n let resultTime: number\n if (opts.key && opts.debug?.()) resultTime = Date.now()\n\n result = fn(...newDeps)\n\n if (opts.key && opts.debug?.()) {\n const depEndTime = Math.round((Date.now() - depTime!) * 100) / 100\n const resultEndTime = Math.round((Date.now() - resultTime!) * 100) / 100\n const resultFpsPercentage = resultEndTime / 16\n\n const pad = (str: number | string, num: number) => {\n str = String(str)\n while (str.length < num) {\n str = ' ' + str\n }\n return str\n }\n\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120),\n )}deg 100% 31%);`,\n opts?.key,\n )\n }\n\n if (opts?.onChange && !(isInitial && opts.skipInitialOnChange)) {\n opts.onChange(result)\n }\n\n isInitial = false\n\n return result\n }\n\n // Attach updateDeps to the function itself\n memoizedFunction.updateDeps = (newDeps: [...TDeps]) => {\n deps = newDeps\n }\n\n return memoizedFunction\n}\n\nexport function notUndefined<T>(value: T | undefined, msg?: string): T {\n if (value === undefined) {\n throw new Error(`Unexpected undefined${msg ? `: ${msg}` : ''}`)\n } else {\n return value\n }\n}\n\nexport const approxEqual = (a: number, b: number) => Math.abs(a - b) < 1.01\n\nexport const debounce = (\n targetWindow: Window & typeof globalThis,\n fn: Function,\n ms: number,\n) => {\n let timeoutId: number\n return function (this: any, ...args: Array<any>) {\n targetWindow.clearTimeout(timeoutId)\n timeoutId = targetWindow.setTimeout(() => fn.apply(this, args), ms)\n }\n}\n","import { approxEqual, debounce, memo, notUndefined } from './utils'\n\nexport * from './utils'\n\n//\n\ntype ScrollDirection = 'forward' | 'backward'\n\ntype ScrollAlignment = 'start' | 'center' | 'end' | 'auto'\n\ntype ScrollBehavior = 'auto' | 'smooth' | 'instant'\n\nexport interface ScrollToOptions {\n align?: ScrollAlignment\n behavior?: ScrollBehavior\n}\n\ntype ScrollToOffsetOptions = ScrollToOptions\n\ntype ScrollToIndexOptions = ScrollToOptions\n\nexport interface Range {\n startIndex: number\n endIndex: number\n overscan: number\n count: number\n}\n\ntype Key = number | string | bigint\n\nexport interface VirtualItem {\n key: Key\n index: number\n start: number\n end: number\n size: number\n lane: number\n}\n\nexport interface Rect {\n width: number\n height: number\n}\n\n//\n\nconst getRect = (element: HTMLElement): Rect => {\n const { offsetWidth, offsetHeight } = element\n return { width: offsetWidth, height: offsetHeight }\n}\n\nexport const defaultKeyExtractor = (index: number) => index\n\nexport const defaultRangeExtractor = (range: Range) => {\n const start = Math.max(range.startIndex - range.overscan, 0)\n const end = Math.min(range.endIndex + range.overscan, range.count - 1)\n\n const arr = []\n\n for (let i = start; i <= end; i++) {\n arr.push(i)\n }\n\n return arr\n}\n\nexport const observeElementRect = <T extends Element>(\n instance: Virtualizer<T, any>,\n cb: (rect: Rect) => void,\n) => {\n const element = instance.scrollElement\n if (!element) {\n return\n }\n const targetWindow = instance.targetWindow\n if (!targetWindow) {\n return\n }\n\n const handler = (rect: Rect) => {\n const { width, height } = rect\n cb({ width: Math.round(width), height: Math.round(height) })\n }\n\n handler(getRect(element as unknown as HTMLElement))\n\n if (!targetWindow.ResizeObserver) {\n return () => {}\n }\n\n const observer = new targetWindow.ResizeObserver((entries) => {\n const run = () => {\n const entry = entries[0]\n if (entry?.borderBoxSize) {\n const box = entry.borderBoxSize[0]\n if (box) {\n handler({ width: box.inlineSize, height: box.blockSize })\n return\n }\n }\n handler(getRect(element as unknown as HTMLElement))\n }\n\n instance.options.useAnimationFrameWithResizeObserver\n ? requestAnimationFrame(run)\n : run()\n })\n\n observer.observe(element, { box: 'border-box' })\n\n return () => {\n observer.unobserve(element)\n }\n}\n\nconst addEventListenerOptions = {\n passive: true,\n}\n\nexport const observeWindowRect = (\n instance: Virtualizer<Window, any>,\n cb: (rect: Rect) => void,\n) => {\n const element = instance.scrollElement\n if (!element) {\n return\n }\n\n const handler = () => {\n cb({ width: element.innerWidth, height: element.innerHeight })\n }\n handler()\n\n element.addEventListener('resize', handler, addEventListenerOptions)\n\n return () => {\n element.removeEventListener('resize', handler)\n }\n}\n\nconst supportsScrollend =\n typeof window == 'undefined' ? true : 'onscrollend' in window\n\ntype ObserveOffsetCallBack = (offset: number, isScrolling: boolean) => void\n\nexport const observeElementOffset = <T extends Element>(\n instance: Virtualizer<T, any>,\n cb: ObserveOffsetCallBack,\n) => {\n const element = instance.scrollElement\n if (!element) {\n return\n }\n const targetWindow = instance.targetWindow\n if (!targetWindow) {\n return\n }\n\n let offset = 0\n const fallback =\n instance.options.useScrollendEvent && supportsScrollend\n ? () => undefined\n : debounce(\n targetWindow,\n () => {\n cb(offset, false)\n },\n instance.options.isScrollingResetDelay,\n )\n\n const createHandler = (isScrolling: boolean) => () => {\n const { horizontal, isRtl } = instance.options\n offset = horizontal\n ? element['scrollLeft'] * ((isRtl && -1) || 1)\n : element['scrollTop']\n fallback()\n cb(offset, isScrolling)\n }\n const handler = createHandler(true)\n const endHandler = createHandler(false)\n\n element.addEventListener('scroll', handler, addEventListenerOptions)\n const registerScrollendEvent =\n instance.options.useScrollendEvent && supportsScrollend\n if (registerScrollendEvent) {\n element.addEventListener('scrollend', endHandler, addEventListenerOptions)\n }\n return () => {\n element.removeEventListener('scroll', handler)\n if (registerScrollendEvent) {\n element.removeEventListener('scrollend', endHandler)\n }\n }\n}\n\nexport const observeWindowOffset = (\n instance: Virtualizer<Window, any>,\n cb: ObserveOffsetCallBack,\n) => {\n const element = instance.scrollElement\n if (!element) {\n return\n }\n const targetWindow = instance.targetWindow\n if (!targetWindow) {\n return\n }\n\n let offset = 0\n const fallback =\n instance.options.useScrollendEvent && supportsScrollend\n ? () => undefined\n : debounce(\n targetWindow,\n () => {\n cb(offset, false)\n },\n instance.options.isScrollingResetDelay,\n )\n\n const createHandler = (isScrolling: boolean) => () => {\n offset = element[instance.options.horizontal ? 'scrollX' : 'scrollY']\n fallback()\n cb(offset, isScrolling)\n }\n const handler = createHandler(true)\n const endHandler = createHandler(false)\n\n element.addEventListener('scroll', handler, addEventListenerOptions)\n const registerScrollendEvent =\n instance.options.useScrollendEvent && supportsScrollend\n if (registerScrollendEvent) {\n element.addEventListener('scrollend', endHandler, addEventListenerOptions)\n }\n return () => {\n element.removeEventListener('scroll', handler)\n if (registerScrollendEvent) {\n element.removeEventListener('scrollend', endHandler)\n }\n }\n}\n\nexport const measureElement = <TItemElement extends Element>(\n element: TItemElement,\n entry: ResizeObserverEntry | undefined,\n instance: Virtualizer<any, TItemElement>,\n) => {\n if (entry?.borderBoxSize) {\n const box = entry.borderBoxSize[0]\n if (box) {\n const size = Math.round(\n box[instance.options.horizontal ? 'inlineSize' : 'blockSize'],\n )\n return size\n }\n }\n\n return (element as unknown as HTMLElement)[\n instance.options.horizontal ? 'offsetWidth' : 'offsetHeight'\n ]\n}\n\nexport const windowScroll = <T extends Window>(\n offset: number,\n {\n adjustments = 0,\n behavior,\n }: { adjustments?: number; behavior?: ScrollBehavior },\n instance: Virtualizer<T, any>,\n) => {\n const toOffset = offset + adjustments\n\n instance.scrollElement?.scrollTo?.({\n [instance.options.horizontal ? 'left' : 'top']: toOffset,\n behavior,\n })\n}\n\nexport const elementScroll = <T extends Element>(\n offset: number,\n {\n adjustments = 0,\n behavior,\n }: { adjustments?: number; behavior?: ScrollBehavior },\n instance: Virtualizer<T, any>,\n) => {\n const toOffset = offset + adjustments\n\n instance.scrollElement?.scrollTo?.({\n [instance.options.horizontal ? 'left' : 'top']: toOffset,\n behavior,\n })\n}\n\nexport interface VirtualizerOptions<\n TScrollElement extends Element | Window,\n TItemElement extends Element,\n> {\n // Required from the user\n count: number\n getScrollElement: () => TScrollElement | null\n estimateSize: (index: number) => number\n\n // Required from the framework adapter (but can be overridden)\n scrollToFn: (\n offset: number,\n options: { adjustments?: number; behavior?: ScrollBehavior },\n instance: Virtualizer<TScrollElement, TItemElement>,\n ) => void\n observeElementRect: (\n instance: Virtualizer<TScrollElement, TItemElement>,\n cb: (rect: Rect) => void,\n ) => void | (() => void)\n observeElementOffset: (\n instance: Virtualizer<TScrollElement, TItemElement>,\n cb: ObserveOffsetCallBack,\n ) => void | (() => void)\n // Optional\n debug?: boolean\n initialRect?: Rect\n onChange?: (\n instance: Virtualizer<TScrollElement, TItemElement>,\n sync: boolean,\n ) => void\n measureElement?: (\n element: TItemElement,\n entry: ResizeObserverEntry | undefined,\n instance: Virtualizer<TScrollElement, TItemElement>,\n ) => number\n overscan?: number\n horizontal?: boolean\n paddingStart?: number\n paddingEnd?: number\n scrollPaddingStart?: number\n scrollPaddingEnd?: number\n initialOffset?: number | (() => number)\n getItemKey?: (index: number) => Key\n rangeExtractor?: (range: Range) => Array<number>\n scrollMargin?: number\n gap?: number\n indexAttribute?: string\n initialMeasurementsCache?: Array<VirtualItem>\n lanes?: number\n isScrollingResetDelay?: number\n useScrollendEvent?: boolean\n enabled?: boolean\n isRtl?: boolean\n useAnimationFrameWithResizeObserver?: boolean\n}\n\ntype ScrollState = {\n // what we want\n index: number | null\n align: ScrollAlignment\n behavior: ScrollBehavior\n\n // lifecycle\n startedAt: number\n\n // target tracking\n lastTargetOffset: number\n\n // settling\n stableFrames: number\n}\n\nexport class Virtualizer<\n TScrollElement extends Element | Window,\n TItemElement extends Element,\n> {\n private unsubs: Array<void | (() => void)> = []\n options!: Required<VirtualizerOptions<TScrollElement, TItemElement>>\n scrollElement: TScrollElement | null = null\n targetWindow: (Window & typeof globalThis) | null = null\n isScrolling = false\n private scrollState: ScrollState | null = null\n measurementsCache: Array<VirtualItem> = []\n private itemSizeCache = new Map<Key, number>()\n private laneAssignments = new Map<number, number>() // index → lane cache\n private pendingMeasuredCacheIndexes: Array<number> = []\n private prevLanes: number | undefined = undefined\n private lanesChangedFlag = false\n private lanesSettling = false\n scrollRect: Rect | null = null\n scrollOffset: number | null = null\n scrollDirection: ScrollDirection | null = null\n private scrollAdjustments = 0\n shouldAdjustScrollPositionOnItemSizeChange:\n | undefined\n | ((\n item: VirtualItem,\n delta: number,\n instance: Virtualizer<TScrollElement, TItemElement>,\n ) => boolean)\n elementsCache = new Map<Key, TItemElement>()\n private now = () => this.targetWindow?.performance?.now?.() ?? Date.now()\n private observer = (() => {\n let _ro: ResizeObserver | null = null\n\n const get = () => {\n if (_ro) {\n return _ro\n }\n\n if (!this.targetWindow || !this.targetWindow.ResizeObserver) {\n return null\n }\n\n return (_ro = new this.targetWindow.ResizeObserver((entries) => {\n entries.forEach((entry) => {\n const run = () => {\n const node = entry.target as TItemElement\n const index = this.indexFromElement(node)\n\n if (!node.isConnected) {\n this.observer.unobserve(node)\n return\n }\n\n if (this.shouldMeasureDuringScroll(index)) {\n this.resizeItem(\n index,\n this.options.measureElement(node, entry, this),\n )\n }\n }\n this.options.useAnimationFrameWithResizeObserver\n ? requestAnimationFrame(run)\n : run()\n })\n }))\n }\n\n return {\n disconnect: () => {\n get()?.disconnect()\n _ro = null\n },\n observe: (target: Element) =>\n get()?.observe(target, { box: 'border-box' }),\n unobserve: (target: Element) => get()?.unobserve(target),\n }\n })()\n range: { startIndex: number; endIndex: number } | null = null\n\n constructor(opts: VirtualizerOptions<TScrollElement, TItemElement>) {\n this.setOptions(opts)\n }\n\n setOptions = (opts: VirtualizerOptions<TScrollElement, TItemElement>) => {\n Object.entries(opts).forEach(([key, value]) => {\n if (typeof value === 'undefined') delete (opts as any)[key]\n })\n\n this.options = {\n debug: false,\n initialOffset: 0,\n overscan: 1,\n paddingStart: 0,\n paddingEnd: 0,\n scrollPaddingStart: 0,\n scrollPaddingEnd: 0,\n horizontal: false,\n getItemKey: defaultKeyExtractor,\n rangeExtractor: defaultRangeExtractor,\n onChange: () => {},\n measureElement,\n initialRect: { width: 0, height: 0 },\n scrollMargin: 0,\n gap: 0,\n indexAttribute: 'data-index',\n initialMeasurementsCache: [],\n lanes: 1,\n isScrollingResetDelay: 150,\n enabled: true,\n isRtl: false,\n useScrollendEvent: false,\n useAnimationFrameWithResizeObserver: false,\n ...opts,\n }\n }\n\n private notify = (sync: boolean) => {\n this.options.onChange?.(this, sync)\n }\n\n private maybeNotify = memo(\n () => {\n this.calculateRange()\n\n return [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null,\n ]\n },\n (isScrolling) => {\n this.notify(isScrolling)\n },\n {\n key: process.env.NODE_ENV !== 'production' && 'maybeNotify',\n debug: () => this.options.debug,\n initialDeps: [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null,\n ] as [boolean, number | null, number | null],\n },\n )\n\n private cleanup = () => {\n this.unsubs.filter(Boolean).forEach((d) => d!())\n this.unsubs = []\n this.observer.disconnect()\n if (this.rafId != null && this.targetWindow) {\n this.targetWindow.cancelAnimationFrame(this.rafId)\n this.rafId = null\n }\n this.scrollState = null\n this.scrollElement = null\n this.targetWindow = null\n }\n\n _didMount = () => {\n return () => {\n this.cleanup()\n }\n }\n\n _willUpdate = () => {\n const scrollElement = this.options.enabled\n ? this.options.getScrollElement()\n : null\n\n if (this.scrollElement !== scrollElement) {\n this.cleanup()\n\n if (!scrollElement) {\n this.maybeNotify()\n return\n }\n\n this.scrollElement = scrollElement\n\n if (this.scrollElement && 'ownerDocument' in this.scrollElement) {\n this.targetWindow = this.scrollElement.ownerDocument.defaultView\n } else {\n this.targetWindow = this.scrollElement?.window ?? null\n }\n\n this.elementsCache.forEach((cached) => {\n this.observer.observe(cached)\n })\n\n this.unsubs.push(\n this.options.observeElementRect(this, (rect) => {\n this.scrollRect = rect\n this.maybeNotify()\n }),\n )\n\n this.unsubs.push(\n this.options.observeElementOffset(this, (offset, isScrolling) => {\n this.scrollAdjustments = 0\n this.scrollDirection = isScrolling\n ? this.getScrollOffset() < offset\n ? 'forward'\n : 'backward'\n : null\n this.scrollOffset = offset\n this.isScrolling = isScrolling\n\n if (this.scrollState) {\n this.scheduleScrollReconcile()\n }\n this.maybeNotify()\n }),\n )\n\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: undefined,\n behavior: undefined,\n })\n }\n }\n\n private rafId: number | null = null\n private scheduleScrollReconcile() {\n if (!this.targetWindow) {\n this.scrollState = null\n return\n }\n if (this.rafId != null) return\n this.rafId = this.targetWindow.requestAnimationFrame(() => {\n this.rafId = null\n this.reconcileScroll()\n })\n }\n private reconcileScroll() {\n if (!this.scrollState) return\n\n const el = this.scrollElement\n if (!el) return\n\n // Safety valve: bail out if reconciliation has been running too long\n const MAX_RECONCILE_MS = 5000\n if (this.now() - this.scrollState.startedAt > MAX_RECONCILE_MS) {\n this.scrollState = null\n return\n }\n\n const offsetInfo =\n this.scrollState.index != null\n ? this.getOffsetForIndex(this.scrollState.index, this.scrollState.align)\n : undefined\n const targetOffset = offsetInfo\n ? offsetInfo[0]\n : this.scrollState.lastTargetOffset\n\n // Require one stable frame where target matches scroll offset.\n // approxEqual() already tolerates minor fluctuations, so one frame is sufficient\n // to confirm scroll has reached its target without premature cleanup.\n const STABLE_FRAMES = 1\n\n const targetChanged = targetOffset !== this.scrollState.lastTargetOffset\n\n if (!targetChanged && approxEqual(targetOffset, this.getScrollOffset())) {\n this.scrollState.stableFrames++\n if (this.scrollState.stableFrames >= STABLE_FRAMES) {\n this.scrollState = null\n return\n }\n } else {\n this.scrollState.stableFrames = 0\n\n if (targetChanged) {\n this.scrollState.lastTargetOffset = targetOffset\n // Switch to 'auto' behavior once measurements cause target to change\n // We want to jump directly to the correct position, not smoothly animate to it\n this.scrollState.behavior = 'auto'\n\n this._scrollToOffset(targetOffset, {\n adjustments: undefined,\n behavior: 'auto',\n })\n }\n }\n\n // Always reschedule while scrollState is active to guarantee\n // the safety valve timeout runs even if no scroll events fire\n // (e.g. no-op scrollToFn, detached element)\n this.scheduleScrollReconcile()\n }\n\n private getSize = () => {\n if (!this.options.enabled) {\n this.scrollRect = null\n return 0\n }\n\n this.scrollRect = this.scrollRect ?? this.options.initialRect\n\n return this.scrollRect[this.options.horizontal ? 'width' : 'height']\n }\n\n private getScrollOffset = () => {\n if (!this.options.enabled) {\n this.scrollOffset = null\n return 0\n }\n\n this.scrollOffset =\n this.scrollOffset ??\n (typeof this.options.initialOffset === 'function'\n ? this.options.initialOffset()\n : this.options.initialOffset)\n\n return this.scrollOffset\n }\n\n private getFurthestMeasurement = (\n measurements: Array<VirtualItem>,\n index: number,\n ) => {\n const furthestMeasurementsFound = new Map<number, true>()\n const furthestMeasurements = new Map<number, VirtualItem>()\n for (let m = index - 1; m >= 0; m--) {\n const measurement = measurements[m]!\n\n if (furthestMeasurementsFound.has(measurement.lane)) {\n continue\n }\n\n const previousFurthestMeasurement = furthestMeasurements.get(\n measurement.lane,\n )\n if (\n previousFurthestMeasurement == null ||\n measurement.end > previousFurthestMeasurement.end\n ) {\n furthestMeasurements.set(measurement.lane, measurement)\n } else if (measurement.end < previousFurthestMeasurement.end) {\n furthestMeasurementsFound.set(measurement.lane, true)\n }\n\n if (furthestMeasurementsFound.size === this.options.lanes) {\n break\n }\n }\n\n return furthestMeasurements.size === this.options.lanes\n ? Array.from(furthestMeasurements.values()).sort((a, b) => {\n if (a.end === b.end) {\n return a.index - b.index\n }\n\n return a.end - b.end\n })[0]\n : undefined\n }\n\n private getMeasurementOptions = memo(\n () => [\n this.options.count,\n this.options.paddingStart,\n this.options.scrollMargin,\n this.options.getItemKey,\n this.options.enabled,\n this.options.lanes,\n ],\n (count, paddingStart, scrollMargin, getItemKey, enabled, lanes) => {\n const lanesChanged =\n this.prevLanes !== undefined && this.prevLanes !== lanes\n\n if (lanesChanged) {\n // Set flag for getMeasurements to handle\n this.lanesChangedFlag = true\n }\n\n this.prevLanes = lanes\n this.pendingMeasuredCacheIndexes = []\n\n return {\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n enabled,\n lanes,\n }\n },\n {\n key: false,\n },\n )\n\n private getMeasurements = memo(\n () => [this.getMeasurementOptions(), this.itemSizeCache],\n (\n { count, paddingStart, scrollMargin, getItemKey, enabled, lanes },\n itemSizeCache,\n ) => {\n if (!enabled) {\n this.measurementsCache = []\n this.itemSizeCache.clear()\n this.laneAssignments.clear()\n return []\n }\n\n // Clean up stale lane cache entries when count decreases\n if (this.laneAssignments.size > count) {\n for (const index of this.laneAssignments.keys()) {\n if (index >= count) {\n this.laneAssignments.delete(index)\n }\n }\n }\n\n // ✅ Force complete recalculation when lanes change\n if (this.lanesChangedFlag) {\n this.lanesChangedFlag = false // Reset immediately\n this.lanesSettling = true // Start settling period\n this.measurementsCache = []\n this.itemSizeCache.clear()\n this.laneAssignments.clear() // Clear lane cache for new lane count\n // Clear pending indexes to force min = 0\n this.pendingMeasuredCacheIndexes = []\n }\n\n // Don't restore from initialMeasurementsCache during lane changes\n // as it contains stale lane assignments from the previous lane count\n if (this.measurementsCache.length === 0 && !this.lanesSettling) {\n this.measurementsCache = this.options.initialMeasurementsCache\n this.measurementsCache.forEach((item) => {\n this.itemSizeCache.set(item.key, item.size)\n })\n }\n\n // ✅ During lanes settling, ignore pendingMeasuredCacheIndexes to prevent repositioning\n const min = this.lanesSettling\n ? 0\n : this.pendingMeasuredCacheIndexes.length > 0\n ? Math.min(...this.pendingMeasuredCacheIndexes)\n : 0\n this.pendingMeasuredCacheIndexes = []\n\n // ✅ End settling period when cache is fully built\n if (this.lanesSettling && this.measurementsCache.length === count) {\n this.lanesSettling = false\n }\n\n const measurements = this.measurementsCache.slice(0, min)\n\n // ✅ Performance: Track last item index per lane for O(1) lookup\n const laneLastIndex: Array<number | undefined> = new Array(lanes).fill(\n undefined,\n )\n\n // Initialize from existing measurements (before min)\n for (let m = 0; m < min; m++) {\n const item = measurements[m]\n if (item) {\n laneLastIndex[item.lane] = m\n }\n }\n\n for (let i = min; i < count; i++) {\n const key = getItemKey(i)\n\n // Check for cached lane assignment\n const cachedLane = this.laneAssignments.get(i)\n let lane: number\n let start: number\n\n if (cachedLane !== undefined && this.options.lanes > 1) {\n // Use cached lane - O(1) lookup for previous item in same lane\n lane = cachedLane\n const prevIndex = laneLastIndex[lane]\n const prevInLane =\n prevIndex !== undefined ? measurements[prevIndex] : undefined\n start = prevInLane\n ? prevInLane.end + this.options.gap\n : paddingStart + scrollMargin\n } else {\n // No cache - use original logic (find shortest lane)\n const furthestMeasurement =\n this.options.lanes === 1\n ? measurements[i - 1]\n : this.getFurthestMeasurement(measurements, i)\n\n start = furthestMeasurement\n ? furthestMeasurement.end + this.options.gap\n : paddingStart + scrollMargin\n\n lane = furthestMeasurement\n ? furthestMeasurement.lane\n : i % this.options.lanes\n\n // Cache the lane assignment\n if (this.options.lanes > 1) {\n this.laneAssignments.set(i, lane)\n }\n }\n\n const measuredSize = itemSizeCache.get(key)\n const size =\n typeof measuredSize === 'number'\n ? measuredSize\n : this.options.estimateSize(i)\n\n const end = start + size\n\n measurements[i] = {\n index: i,\n start,\n size,\n end,\n key,\n lane,\n }\n\n // ✅ Performance: Update lane's last item index\n laneLastIndex[lane] = i\n }\n\n this.measurementsCache = measurements\n\n return measurements\n },\n {\n key: process.env.NODE_ENV !== 'production' && 'getMeasurements',\n debug: () => this.options.debug,\n },\n )\n\n calculateRange = memo(\n () => [\n this.getMeasurements(),\n this.getSize(),\n this.getScrollOffset(),\n this.options.lanes,\n ],\n (measurements, outerSize, scrollOffset, lanes) => {\n return (this.range =\n measurements.length > 0 && outerSize > 0\n ? calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n lanes,\n })\n : null)\n },\n {\n key: process.env.NODE_ENV !== 'production' && 'calculateRange',\n debug: () => this.options.debug,\n },\n )\n\n getVirtualIndexes = memo(\n () => {\n let startIndex: number | null = null\n let endIndex: number | null = null\n const range = this.calculateRange()\n if (range) {\n startIndex = range.startIndex\n endIndex = range.endIndex\n }\n this.maybeNotify.updateDeps([this.isScrolling, startIndex, endIndex])\n return [\n this.options.rangeExtractor,\n this.options.overscan,\n this.options.count,\n startIndex,\n endIndex,\n ]\n },\n (rangeExtractor, overscan, count, startIndex, endIndex) => {\n return startIndex === null || endIndex === null\n ? []\n : rangeExtractor({\n startIndex,\n endIndex,\n overscan,\n count,\n })\n },\n {\n key: process.env.NODE_ENV !== 'production' && 'getVirtualIndexes',\n debug: () => this.options.debug,\n },\n )\n\n indexFromElement = (node: TItemElement) => {\n const attributeName = this.options.indexAttribute\n const indexStr = node.getAttribute(attributeName)\n\n if (!indexStr) {\n console.warn(\n `Missing attribute name '${attributeName}={index}' on measured element.`,\n )\n return -1\n }\n\n return parseInt(indexStr, 10)\n }\n\n /**\n * Determines if an item at the given index should be measured during smooth scroll.\n * During smooth scroll, only items within a buffer range around the target are measured\n * to prevent items far from the target from pushing it away.\n */\n private shouldMeasureDuringScroll = (index: number): boolean => {\n // No scroll state or not smooth scroll - always allow measurements\n if (!this.scrollState || this.scrollState.behavior !== 'smooth') {\n return true\n }\n\n const scrollIndex =\n this.scrollState.index ??\n this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)?.index\n\n if (scrollIndex !== undefined && this.range) {\n // Allow measurements within a buffer range around the scroll target\n const bufferSize = Math.max(\n this.options.overscan,\n Math.ceil((this.range.endIndex - this.range.startIndex) / 2),\n )\n const minIndex = Math.max(0, scrollIndex - bufferSize)\n const maxIndex = Math.min(\n this.options.count - 1,\n scrollIndex + bufferSize,\n )\n return index >= minIndex && index <= maxIndex\n }\n\n return true\n }\n\n measureElement = (node: TItemElement | null) => {\n if (!node) {\n this.elementsCache.forEach((cached, key) => {\n if (!cached.isConnected) {\n this.observer.unobserve(cached)\n this.elementsCache.delete(key)\n }\n })\n return\n }\n\n const index = this.indexFromElement(node)\n const key = this.options.getItemKey(index)\n const prevNode = this.elementsCache.get(key)\n\n if (prevNode !== node) {\n if (prevNode) {\n this.observer.unobserve(prevNode)\n }\n this.observer.observe(node)\n this.elementsCache.set(key, node)\n }\n\n // Sync-measure when idle (initial render) or during programmatic scrolling\n // (scrollToIndex/scrollToOffset) where reconcileScroll needs sizes in the same frame.\n // During normal user scrolling, skip sync measurement — the RO callback handles it async.\n if (\n (!this.isScrolling || this.scrollState) &&\n this.shouldMeasureDuringScroll(index)\n ) {\n this.resizeItem(index, this.options.measureElement(node, undefined, this))\n }\n }\n\n resizeItem = (index: number, size: number) => {\n const item = this.measurementsCache[index]\n if (!item) return\n\n const itemSize = this.itemSizeCache.get(item.key) ?? item.size\n const delta = size - itemSize\n\n if (delta !== 0) {\n if (\n this.scrollState?.behavior !== 'smooth' &&\n (this.shouldAdjustScrollPositionOnItemSizeChange !== undefined\n ? this.shouldAdjustScrollPositionOnItemSizeChange(item, delta, this)\n : item.start < this.getScrollOffset() + this.scrollAdjustments)\n ) {\n if (process.env.NODE_ENV !== 'production' && this.options.debug) {\n console.info('correction', delta)\n }\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: (this.scrollAdjustments += delta),\n behavior: undefined,\n })\n }\n\n this.pendingMeasuredCacheIndexes.push(item.index)\n this.itemSizeCache = new Map(this.itemSizeCache.set(item.key, size))\n\n this.notify(false)\n }\n }\n\n getVirtualItems = memo(\n () => [this.getVirtualIndexes(), this.getMeasurements()],\n (indexes, measurements) => {\n const virtualItems: Array<VirtualItem> = []\n\n for (let k = 0, len = indexes.length; k < len; k++) {\n const i = indexes[k]!\n const measurement = measurements[i]!\n\n virtualItems.push(measurement)\n }\n\n return virtualItems\n },\n {\n key: process.env.NODE_ENV !== 'production' && 'getVirtualItems',\n debug: () => this.options.debug,\n },\n )\n\n getVirtualItemForOffset = (offset: number) => {\n const measurements = this.getMeasurements()\n if (measurements.length === 0) {\n return undefined\n }\n return notUndefined(\n measurements[\n findNearestBinarySearch(\n 0,\n measurements.length - 1,\n (index: number) => notUndefined(measurements[index]).start,\n offset,\n )\n ],\n )\n }\n\n private getMaxScrollOffset = () => {\n if (!this.scrollElement) return 0\n\n if ('scrollHeight' in this.scrollElement) {\n // Element\n return this.options.horizontal\n ? this.scrollElement.scrollWidth - this.scrollElement.clientWidth\n : this.scrollElement.scrollHeight - this.scrollElement.clientHeight\n } else {\n // Window\n const doc = this.scrollElement.document.documentElement\n return this.options.horizontal\n ? doc.scrollWidth - this.scrollElement.innerWidth\n : doc.scrollHeight - this.scrollElement.innerHeight\n }\n }\n\n getOffsetForAlignment = (\n toOffset: number,\n align: ScrollAlignment,\n itemSize = 0,\n ) => {\n if (!this.scrollElement) return 0\n\n const size = this.getSize()\n const scrollOffset = this.getScrollOffset()\n\n if (align === 'auto') {\n align = toOffset >= scrollOffset + size ? 'end' : 'start'\n }\n\n if (align === 'center') {\n // When aligning to a particular item (e.g. with scrollToIndex),\n // adjust offset by the size of the item to center on the item\n toOffset += (itemSize - size) / 2\n } else if (align === 'end') {\n toOffset -= size\n }\n\n const maxOffset = this.getMaxScrollOffset()\n\n return Math.max(Math.min(maxOffset, toOffset), 0)\n }\n\n getOffsetForIndex = (index: number, align: ScrollAlignment = 'auto') => {\n index = Math.max(0, Math.min(index, this.options.count - 1))\n\n const size = this.getSize()\n const scrollOffset = this.getScrollOffset()\n\n const item = this.measurementsCache[index]\n if (!item) return\n\n if (align === 'auto') {\n if (item.end >= scrollOffset + size - this.options.scrollPaddingEnd) {\n align = 'end'\n } else if (item.start <= scrollOffset + this.options.scrollPaddingStart) {\n align = 'start'\n } else {\n return [scrollOffset, align] as const\n }\n }\n\n // For the last item with 'end' alignment, use browser's actual max scroll\n // to account for borders/padding that aren't in our measurements\n if (align === 'end' && index === this.options.count - 1) {\n return [this.getMaxScrollOffset(), align] as const\n }\n\n const toOffset =\n align === 'end'\n ? item.end + this.options.scrollPaddingEnd\n : item.start - this.options.scrollPaddingStart\n\n return [\n this.getOffsetForAlignment(toOffset, align, item.size),\n align,\n ] as const\n }\n\n scrollToOffset = (\n toOffset: number,\n { align = 'start', behavior = 'auto' }: ScrollToOffsetOptions = {},\n ) => {\n const offset = this.getOffsetForAlignment(toOffset, align)\n\n const now = this.now()\n this.scrollState = {\n index: null,\n align,\n behavior,\n startedAt: now,\n lastTargetOffset: offset,\n stableFrames: 0,\n }\n\n this._scrollToOffset(offset, { adjustments: undefined, behavior })\n\n this.scheduleScrollReconcile()\n }\n\n scrollToIndex = (\n index: number,\n {\n align: initialAlign = 'auto',\n behavior = 'auto',\n }: ScrollToIndexOptions = {},\n ) => {\n index = Math.max(0, Math.min(index, this.options.count - 1))\n\n const offsetInfo = this.getOffsetForIndex(index, initialAlign)\n if (!offsetInfo) {\n return\n }\n const [offset, align] = offsetInfo\n\n const now = this.now()\n this.scrollState = {\n index,\n align,\n behavior,\n startedAt: now,\n lastTargetOffset: offset,\n stableFrames: 0,\n }\n\n this._scrollToOffset(offset, { adjustments: undefined, behavior })\n\n this.scheduleScrollReconcile()\n }\n\n scrollBy = (\n delta: number,\n { behavior = 'auto' }: ScrollToOffsetOptions = {},\n ) => {\n const offset = this.getScrollOffset() + delta\n const now = this.now()\n\n this.scrollState = {\n index: null,\n align: 'start',\n behavior,\n startedAt: now,\n lastTargetOffset: offset,\n stableFrames: 0,\n }\n\n this._scrollToOffset(offset, { adjustments: undefined, behavior })\n\n this.scheduleScrollReconcile()\n }\n\n getTotalSize = () => {\n const measurements = this.getMeasurements()\n\n let end: number\n // If there are no measurements, set the end to paddingStart\n // If there is only one lane, use the last measurement's end\n // Otherwise find the maximum end value among all measurements\n if (measurements.length === 0) {\n end = this.options.paddingStart\n } else if (this.options.lanes === 1) {\n end = measurements[measurements.length - 1]?.end ?? 0\n } else {\n const endByLane = Array<number | null>(this.options.lanes).fill(null)\n let endIndex = measurements.length - 1\n while (endIndex >= 0 && endByLane.some((val) => val === null)) {\n const item = measurements[endIndex]!\n if (endByLane[item.lane] === null) {\n endByLane[item.lane] = item.end\n }\n\n endIndex--\n }\n\n end = Math.max(...endByLane.filter((val): val is number => val !== null))\n }\n\n return Math.max(\n end - this.options.scrollMargin + this.options.paddingEnd,\n 0,\n )\n }\n\n private _scrollToOffset = (\n offset: number,\n {\n adjustments,\n behavior,\n }: {\n adjustments: number | undefined\n behavior: ScrollBehavior | undefined\n },\n ) => {\n this.options.scrollToFn(offset, { behavior, adjustments }, this)\n }\n\n measure = () => {\n this.itemSizeCache = new Map()\n this.laneAssignments = new Map() // Clear lane cache for full re-layout\n this.notify(false)\n }\n}\n\nconst findNearestBinarySearch = (\n low: number,\n high: number,\n getCurrentValue: (i: number) => number,\n value: number,\n) => {\n while (low <= high) {\n const middle = ((low + high) / 2) | 0\n const currentValue = getCurrentValue(middle)\n\n if (currentValue < value) {\n low = middle + 1\n } else if (currentValue > value) {\n high = middle - 1\n } else {\n return middle\n }\n }\n\n if (low > 0) {\n return low - 1\n } else {\n return 0\n }\n}\n\nfunction calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n lanes,\n}: {\n measurements: Array<VirtualItem>\n outerSize: number\n scrollOffset: number\n lanes: number\n}) {\n const lastIndex = measurements.length - 1\n const getOffset = (index: number) => measurements[index]!.start\n\n // handle case when item count is less than or equal to lanes\n if (measurements.length <= lanes) {\n return {\n startIndex: 0,\n endIndex: lastIndex,\n }\n }\n\n let startIndex = findNearestBinarySearch(\n 0,\n lastIndex,\n getOffset,\n scrollOffset,\n )\n let endIndex = startIndex\n\n if (lanes === 1) {\n while (\n endIndex < lastIndex &&\n measurements[endIndex]!.end < scrollOffset + outerSize\n ) {\n endIndex++\n }\n } else if (lanes > 1) {\n // Expand forward until we include the visible items from all lanes\n // which are closer to the end of the virtualizer window\n const endPerLane = Array(lanes).fill(0)\n while (\n endIndex < lastIndex &&\n endPerLane.some((pos) => pos < scrollOffset + outerSize)\n ) {\n const item = measurements[endIndex]!\n endPerLane[item.lane] = item.end\n endIndex++\n }\n\n // Expand backward until we include all lanes' visible items\n // closer to the top\n const startPerLane = Array(lanes).fill(scrollOffset + outerSize)\n while (startIndex >= 0 && startPerLane.some((pos) => pos >= scrollOffset)) {\n const item = measurements[startIndex]!\n startPerLane[item.lane] = item.start\n startIndex--\n }\n\n // Align startIndex to the beginning of its lane\n startIndex = Math.max(0, startIndex - (startIndex % lanes))\n // Align endIndex to the end of its lane\n endIndex = Math.min(lastIndex, endIndex + (lanes - 1 - (endIndex % lanes)))\n }\n\n return { startIndex, endIndex }\n}\n","import {\n defineElement,\n DiffuseElement,\n query,\n whenElementsDefined,\n} from \"~/common/element.js\";\nimport { computed, signal, untracked } from \"~/common/signal.js\";\nimport * as Playlist from \"~/common/playlist.js\";\nimport {\n elementScroll,\n observeElementOffset,\n observeElementRect,\n Virtualizer,\n} from \"@tanstack/virtual-core\";\n\n/**\n * @import {RenderArg} from \"~/common/element.d.ts\"\n * @import {SignalReader} from \"~/common/signal.d.ts\";\n * @import {Track} from \"~/definitions/types.d.ts\"\n * @import {OutputElement} from \"~/components/output/types.d.ts\"\n */\n\nconst TRACK_ROW_HEIGHT = 40;\nconst GROUP_HEADER_HEIGHT = 52;\nconst OVERSCAN = 10;\n\n/** @type {Record<string, string[]>} */\nconst COLUMN_SORT = {\n title: [\"tags.title\"],\n artist: [\"tags.artist\", \"tags.album\", \"tags.disc.no\", \"tags.track.no\"],\n album: [\"tags.album\", \"tags.disc.no\", \"tags.track.no\"],\n};\n\nconst DEFAULT_SORT = [\"createdAt\"];\n\nconst GROUP_BY_OPTIONS = [\n { value: \"firstLetter\", label: \"Group by first letter\", icon: \"ph-text-aa\", sortBy: null, sortDirection: /** @type {\"asc\" | \"desc\" | undefined} */ (undefined) },\n { value: \"directory\", label: \"Group by path\", icon: \"ph-folder\", sortBy: [\"uri\"], sortDirection: /** @type {\"asc\" | \"desc\" | undefined} */ (undefined) },\n { value: \"createdAt\", label: \"Group by processing date\", icon: \"ph-clock\", sortBy: [\"createdAt\"], sortDirection: /** @type {\"asc\" | \"desc\" | undefined} */ (\"desc\") },\n { value: \"tags.year\", label: \"Group by track year\", icon: \"ph-calendar\", sortBy: [\"tags.year\"], sortDirection: /** @type {\"asc\" | \"desc\" | undefined} */ (\"desc\") },\n];\n\n/**\n * @typedef {{ type: \"group\"; label: string }} GroupItem\n * @typedef {{ type: \"track\"; track: Track }} TrackItem\n * @typedef {GroupItem | TrackItem} VirtualItem\n */\n\nclass Browser extends DiffuseElement {\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" });\n }\n\n // SIGNALS\n\n $output = signal(\n /** @type {OutputElement | undefined} */ (undefined),\n );\n\n $provider = signal(\n /** @type {DiffuseElement & { tracks: SignalReader<Track[]> } | undefined} */ (undefined),\n );\n\n $queue = signal(\n /** @type {import(\"~/components/engine/queue/element.js\").CLASS | undefined} */ (undefined),\n );\n\n $scope = signal(\n /** @type {import(\"~/components/engine/scope/element.js\").CLASS | undefined} */ (undefined),\n );\n\n $favourites = signal(\n /** @type {import(\"~/components/orchestrator/favourites/element.js\").CLASS | undefined} */ (undefined),\n );\n\n $groupedPlaylists = computed(() => {\n const col = this.$output.value?.playlistItems.collection();\n if (!col || col.state !== \"loaded\" || !col.data.length) return [];\n const items = col.data;\n\n /** @type {Map<string, { name: string, unordered: boolean }>} */\n const playlistMap = Playlist.gather(items);\n\n const all = [...playlistMap.values()].sort((a, b) =>\n a.name.localeCompare(b.name)\n );\n\n const ordered = all.filter((p) => !p.unordered);\n const unordered = all.filter((p) => p.unordered);\n\n return [\n { label: \"Ordered\", playlists: ordered },\n { label: \"Unordered\", playlists: unordered },\n ].filter((g) => g.playlists.length > 0);\n });\n\n // STATE\n\n /** @type {VirtualItem[]} */\n #flatItems = [];\n\n /** @type {Track[] | undefined} */\n #lastTracks = undefined;\n\n /** @type {{ label: string; tracks: Track[] }[] | undefined} */\n #lastGroups = undefined;\n\n /** @type {Virtualizer<Element, Element> | undefined} */\n #virtualizer;\n\n /** @type {(() => void) | undefined} */\n #virtualizerCleanup;\n\n // LIFECYCLE\n\n /**\n * @override\n */\n connectedCallback() {\n super.connectedCallback();\n\n /** @type {OutputElement} */\n const output = query(this, \"output-selector\");\n\n /** @type {DiffuseElement & { tracks: SignalReader<Track[]> }} */\n const provider = query(this, \"tracks-selector\");\n\n /** @type {import(\"~/components/engine/queue/element.js\").CLASS} */\n const queue = query(this, \"queue-engine-selector\");\n\n /** @type {import(\"~/components/engine/scope/element.js\").CLASS} */\n const scope = query(this, \"scope-engine-selector\");\n\n /** @type {import(\"~/components/orchestrator/favourites/element.js\").CLASS} */\n const favourites = query(this, \"favourites-orchestrator-selector\");\n\n whenElementsDefined({ output, provider, queue, scope, favourites }).then(() => {\n this.$output.value = output;\n this.$provider.value = provider;\n this.$queue.value = queue;\n this.$scope.value = scope;\n this.$favourites.value = favourites;\n });\n\n // Reset scroll when track list changes\n this.effect(() => {\n const _results = this.$provider.value?.tracks();\n\n untracked(() => {\n const panel = this.root().querySelector(\".scroll-panel\");\n if (panel) panel.scrollTo(0, 0);\n });\n });\n\n // Set up the virtualizer after the first render, when .scroll-panel exists in the DOM.\n // This mirrors the winamp browser's #setupScrollTracking pattern.\n requestAnimationFrame(() => {\n const panel = this.root().querySelector(\".scroll-panel\");\n if (!panel) return;\n\n this.#virtualizer = new Virtualizer({\n count: 0,\n getScrollElement: () => panel,\n estimateSize: (i) =>\n this.#flatItems[i]?.type === \"group\"\n ? GROUP_HEADER_HEIGHT\n : TRACK_ROW_HEIGHT,\n overscan: OVERSCAN,\n observeElementRect,\n observeElementOffset,\n scrollToFn: elementScroll,\n onChange: () => {\n requestAnimationFrame(() => this.forceRender());\n },\n });\n\n this.#virtualizerCleanup = this.#virtualizer._didMount();\n this.#virtualizer._willUpdate();\n\n // Render now that the virtualizer is wired up\n this.forceRender();\n });\n }\n\n /**\n * @override\n */\n disconnectedCallback() {\n super.disconnectedCallback();\n this.#virtualizerCleanup?.();\n this.#virtualizerCleanup = undefined;\n this.#virtualizer = undefined;\n }\n\n // EVENTS\n\n /**\n * @param {Track} track\n */\n playTrack(track) {\n this.$queue.value?.add({ inFront: true, trackIds: [track.id] });\n this.$queue.value?.shift();\n }\n\n setSearchTerm = () => {\n /** @type {HTMLInputElement | null} */\n const input = this.root().querySelector(\"#search-input\");\n const term = input?.value?.trim();\n this.$scope.value?.setSearchTerm(term);\n };\n\n clearSearch = () => {\n /** @type {HTMLInputElement | null} */\n const input = this.root().querySelector(\"#search-input\");\n if (input) input.value = \"\";\n this.$scope.value?.setSearchTerm(undefined);\n };\n\n /**\n * @param {string | undefined} value\n */\n setGroupBy = (value) => {\n this.$scope.value?.setGroupBy(value);\n };\n\n /**\n * @param {string | undefined} value\n */\n setSelectedPlaylist = (value) => {\n this.$scope.value?.setPlaylist(value);\n };\n\n /**\n * @param {string} column\n */\n sortByColumn = (column) => {\n const scope = this.$scope.value;\n if (!scope) return;\n\n const isActive = JSON.stringify(COLUMN_SORT[column]) ===\n JSON.stringify(scope.sortBy());\n\n if (isActive) {\n if (scope.sortDirection() === \"desc\") {\n scope.revertToDefaultSort();\n } else {\n scope.setSortDirection(\"desc\");\n }\n } else {\n scope.setSortBy(COLUMN_SORT[column] ?? []);\n scope.setSortDirection(undefined);\n }\n };\n\n /**\n * @param {Track} track\n */\n toggleFavourite = (track) => {\n this.$favourites.value?.toggle(track);\n };\n\n // RENDER\n\n /**\n * @param {RenderArg} _\n */\n render({ html }) {\n const isLoading =\n this.$output.value?.tracks?.collection().state !== \"loaded\";\n\n const tracks = this.$provider.value?.tracks() ?? [];\n const playlist = this.$scope.value?.playlist();\n const groupBy = this.$scope.value?.groupBy();\n const searchTerm = this.$scope.value?.searchTerm() ?? \"\";\n const sortBy = this.$scope.value?.sortBy() ?? DEFAULT_SORT;\n const sortDirection = this.$scope.value?.sortDirection();\n\n const sortedColumn = Object.entries(COLUMN_SORT).find(\n ([, v]) => JSON.stringify(v) === JSON.stringify(sortBy),\n )?.[0];\n\n const ariaSort = /** @param {string} col */ (col) =>\n sortedColumn === col\n ? (sortDirection === \"desc\" ? \"descending\" : \"ascending\")\n : \"none\";\n\n const groups = /** @type {any} */ (this.$provider.value)?.groups?.();\n\n // Rebuild flat items only when data reference changes\n if (groups !== this.#lastGroups || tracks !== this.#lastTracks) {\n this.#flatItems = groups ? buildFlatList(groups) : [];\n this.#lastGroups = groups;\n this.#lastTracks = tracks;\n }\n\n const count = groups ? this.#flatItems.length : tracks.length;\n\n // Update virtualizer count whenever data changes.\n // The virtualizer is set up in connectedCallback after first render;\n // until then virtualItems is empty and totalSize is 0.\n if (this.#virtualizer) {\n this.#virtualizer.setOptions({\n ...this.#virtualizer.options,\n count,\n });\n this.#virtualizer._willUpdate();\n }\n\n const virtualItems = this.#virtualizer?.getVirtualItems() ?? [];\n const totalSize = this.#virtualizer?.getTotalSize() ?? 0;\n\n // Build O(1) favourite lookup — one subscription regardless of visible row count\n const favItems = this.$favourites.value?.playlistItems() ?? [];\n const favSet = new Set(\n favItems.map((item) => {\n const a = item.criteria.find((c) => c.field === \"tags.artist\");\n const t = item.criteria.find((c) => c.field === \"tags.title\");\n return `${String(a?.value ?? \"\").toLowerCase()}|${String(t?.value ?? \"\").toLowerCase()}`;\n }),\n );\n\n /**\n * @param {Track} track\n * @param {number} top\n * @param {number} index\n */\n const renderTrackRow = (track, top, index) => {\n const key = `${String(track.tags?.artist ?? \"\").toLowerCase()}|${String(track.tags?.title ?? \"\").toLowerCase()}`;\n const isFav = favSet.has(key);\n return html`\n <div\n class=\"track-row ${index % 2 === 1 ? `track-row--alt` : ``}\"\n style=\"transform: translateY(${top}px);\"\n @dblclick=\"${() => this.playTrack(track)}\"\n >\n <div class=\"col-fav\">\n <button\n class=\"fav-btn ${isFav ? `fav-btn--active` : ``}\"\n @click=\"${(/** @type {Event} */ e) => { e.stopPropagation(); this.toggleFavourite(track); }}\"\n title=\"${isFav ? `Remove from favourites` : `Add to favourites`}\"\n >\n <i class=\"ph-${isFav ? `fill ph-heart` : `bold ph-heart`}\"></i>\n </button>\n </div>\n <div class=\"col-title\">\n <span class=\"track-title\">${track.tags?.title}</span>\n </div>\n <div class=\"col-artist\">\n <span>${track.tags?.artist}</span>\n </div>\n <div class=\"col-album\">\n <span>${track.tags?.album}</span>\n </div>\n </div>\n `;\n };\n\n return html`\n <link rel=\"stylesheet\" href=\"styles/base.css\" />\n <link rel=\"stylesheet\" href=\"styles/diffuse/facet.css\" />\n <link rel=\"stylesheet\" href=\"vendor/@phosphor-icons/web/bold/style.css\" />\n <link rel=\"stylesheet\" href=\"vendor/@phosphor-icons/web/fill/style.css\" />\n <link rel=\"stylesheet\" href=\"themes/blur/variables.css\" />\n <link rel=\"stylesheet\" href=\"themes/blur/browser/element.css\" />\n\n <div class=\"toolbar\">\n <label class=\"search-field\">\n <i class=\"ph-bold ph-magnifying-glass\"></i>\n <input\n id=\"search-input\"\n type=\"search\"\n placeholder=\"Search\"\n @change=\"${this.setSearchTerm}\"\n .value=\"${searchTerm}\"\n />\n </label>\n\n <div class=\"toolbar-actions\">\n ${searchTerm ? html`\n <button class=\"toolbar-icon-btn\" @click=\"${this.clearSearch}\" title=\"Clear search\">\n <i class=\"ph-bold ph-x\"></i>\n </button>\n ` : ``}\n <button class=\"toolbar-icon-btn\" popovertarget=\"groupby-menu\" title=\"Group by\">\n <i class=\"ph-fill ph-stack\"></i>\n </button>\n <div id=\"groupby-menu\" class=\"dropdown\" popover>\n ${GROUP_BY_OPTIONS.map(({ value, label, icon, sortBy: optSortBy, sortDirection: optSortDirection }) => {\n // \"firstLetter\" is dynamic — its stored value includes the sort field\n const primarySortField = sortBy[0] ?? \"tags.title\";\n const resolvedValue = value === \"firstLetter\"\n ? `firstLetter:${primarySortField}`\n : value;\n const isActive = value === \"firstLetter\"\n ? groupBy?.startsWith(\"firstLetter:\")\n : groupBy === value;\n return html`\n <button\n class=\"${isActive ? `dropdown-item--active` : ``}\"\n @click=\"${() => {\n const scope = this.$scope.value;\n if (isActive) {\n this.setGroupBy(undefined);\n } else {\n this.setGroupBy(resolvedValue);\n if (optSortBy && scope) {\n scope.setSortBy(optSortBy);\n scope.setSortDirection(optSortDirection);\n }\n }\n /** @type {HTMLElement | null} */ (this.root().querySelector(`#groupby-menu`))?.hidePopover();\n }}\"\n >\n ${isActive ? html`<i class=\"ph-bold ph-x\"></i>` : ``}\n ${label}\n </button>\n `;\n })}\n </div>\n <button class=\"playlist-btn\" popovertarget=\"playlist-menu\">\n <i class=\"ph-fill ph-playlist\"></i>\n <span>${playlist ?? `All tracks`}</span>\n </button>\n <div id=\"playlist-menu\" class=\"dropdown\" popover>\n <button @click=\"${() => { this.setSelectedPlaylist(undefined); /** @type {HTMLElement | null} */ (this.root().querySelector(`#playlist-menu`))?.hidePopover(); }}\">\n All tracks\n </button>\n ${this.$groupedPlaylists().map((group) =>\n group.playlists.map((p) =>\n html`\n <button @click=\"${() => { this.setSelectedPlaylist(p.name); /** @type {HTMLElement | null} */ (this.root().querySelector(`#playlist-menu`))?.hidePopover(); }}\">\n ${p.name}\n </button>\n `\n )\n )}\n </div>\n </div>\n </div>\n\n <div class=\"table-header\">\n <div class=\"col-fav\"></div>\n <div\n class=\"col-title ${sortedColumn === `title` ? `col--sorted` : ``}\"\n @click=\"${() => this.sortByColumn(`title`)}\"\n aria-sort=\"${ariaSort(`title`)}\"\n >\n Title\n ${sortedColumn === `title`\n ? html`<i class=\"ph-bold ${sortDirection === `desc` ? `ph-caret-down` : `ph-caret-up`}\"></i>`\n : ``}\n </div>\n <div\n class=\"col-artist ${sortedColumn === `artist` ? `col--sorted` : ``}\"\n @click=\"${() => this.sortByColumn(`artist`)}\"\n aria-sort=\"${ariaSort(`artist`)}\"\n >\n Artist\n ${sortedColumn === `artist`\n ? html`<i class=\"ph-bold ${sortDirection === `desc` ? `ph-caret-down` : `ph-caret-up`}\"></i>`\n : ``}\n </div>\n <div\n class=\"col-album ${sortedColumn === `album` ? `col--sorted` : ``}\"\n @click=\"${() => this.sortByColumn(`album`)}\"\n aria-sort=\"${ariaSort(`album`)}\"\n >\n Album\n ${sortedColumn === `album`\n ? html`<i class=\"ph-bold ${sortDirection === `desc` ? `ph-caret-down` : `ph-caret-up`}\"></i>`\n : ``}\n </div>\n </div>\n\n <div class=\"scroll-panel\">\n <div class=\"virtual-scroll\" style=\"height: ${totalSize}px;\">\n ${isLoading\n ? html`<div class=\"loading\">Loading ...</div>`\n : virtualItems.map((vItem) => {\n const item = groups\n ? this.#flatItems[vItem.index]\n : { type: /** @type {\"track\"} */ (\"track\"), track: tracks[vItem.index] };\n\n return item?.type === \"group\"\n ? html`\n <div\n class=\"group-header\"\n style=\"transform: translateY(${vItem.start}px);\"\n >\n <i class=\"ph-fill ph-vinyl-record\"></i>\n <span>${item.label}</span>\n </div>\n `\n : item?.type === \"track\"\n ? renderTrackRow(item.track, vItem.start, vItem.index)\n : ``;\n })\n }\n </div>\n </div>\n `;\n }\n}\n\nexport default Browser;\n\n////////////////////////////////////////////\n// HELPERS\n////////////////////////////////////////////\n\n/**\n * @param {{ label: string; tracks: Track[] }[]} groups\n * @returns {VirtualItem[]}\n */\nfunction buildFlatList(groups) {\n /** @type {VirtualItem[]} */\n const items = [];\n for (const group of groups) {\n items.push({ type: \"group\", label: group.label });\n for (const track of group.tracks) {\n items.push({ type: \"track\", track });\n }\n }\n return items;\n}\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = Browser;\nexport const NAME = \"db-browser\";\n\ndefineElement(NAME, CLASS);\n"],"mappings":"4aAIO,SAASA,EACdC,EACAC,EACAC,EAOA,CACA,IAAIC,EAAOD,EAAK,aAAe,CAAA,EAC3BE,EACAC,EAAY,GAEhB,SAASC,GAA4B,CAfhC,IAAAC,EAAAC,EAAAC,EAgBH,IAAIC,EACAR,EAAK,OAAOK,EAAAL,EAAK,QAAL,MAAAK,EAAA,KAAAL,CAAA,KAAgBQ,EAAU,KAAK,IAAA,GAE/C,IAAMC,EAAUX,EAAA,EAMhB,GAAI,EAHFW,EAAQ,SAAWR,EAAK,QACxBQ,EAAQ,KAAK,CAACC,EAAUC,IAAkBV,EAAKU,CAAK,IAAMD,CAAG,GAG7D,OAAOR,EAGTD,EAAOQ,EAEP,IAAIG,EAKJ,GAJIZ,EAAK,OAAOM,EAAAN,EAAK,QAAL,MAAAM,EAAA,KAAAN,CAAA,KAAgBY,EAAa,KAAK,IAAA,GAElDV,EAASH,EAAG,GAAGU,CAAO,EAElBT,EAAK,OAAOO,EAAAP,EAAK,QAAL,MAAAO,EAAA,KAAAP,CAAA,GAAgB,CAC9B,IAAMa,EAAa,KAAK,OAAO,KAAK,IAAA,EAAQL,GAAY,GAAG,EAAI,IACzDM,EAAgB,KAAK,OAAO,KAAK,IAAA,EAAQF,GAAe,GAAG,EAAI,IAC/DG,EAAsBD,EAAgB,GAEtCE,EAAMC,EAAA,CAACC,EAAsBC,IAAgB,CAEjD,IADAD,EAAM,OAAOA,CAAG,EACTA,EAAI,OAASC,GAClBD,EAAM,IAAMA,EAEd,OAAOA,CACT,EANY,OAQZ,QAAQ,KACN,YAAOF,EAAIF,EAAe,CAAC,CAAC,KAAKE,EAAIH,EAAY,CAAC,CAAC,MACnD;;;yBAGiB,KAAK,IAChB,EACA,KAAK,IAAI,IAAM,IAAME,EAAqB,GAAG,CAAA,CAC9C,iBACLf,GAAM,GAAA,CAEV,CAEA,OAAIA,GAAM,UAAY,EAAEG,GAAaH,EAAK,sBACxCA,EAAK,SAASE,CAAM,EAGtBC,EAAY,GAELD,CACT,CAtDS,OAAAe,EAAAb,EAAA,oBAyDTA,EAAiB,WAAcK,GAAwB,CACrDR,EAAOQ,CACT,EAEOL,CACT,CA7EgBa,EAAApB,EAAA,QA+ET,SAASuB,EAAgBC,EAAsBC,EAAiB,CACrE,GAAID,IAAU,OACZ,MAAM,IAAI,MAAM,uBAAuBC,EAAM,KAAKA,CAAG,GAAK,EAAE,EAAE,EAE9D,OAAOD,CAEX,CANgBJ,EAAAG,EAAA,gBAQT,IAAMG,EAAcN,EAAA,CAACO,EAAWC,IAAc,KAAK,IAAID,EAAIC,CAAC,EAAI,KAA5C,eAEdC,EAAWT,EAAA,CACtBU,EACA5B,EACA6B,IACG,CACH,IAAIC,EACJ,OAAO,YAAwBC,EAAkB,CAC/CH,EAAa,aAAaE,CAAS,EACnCA,EAAYF,EAAa,WAAW,IAAM5B,EAAG,MAAM,KAAM+B,CAAI,EAAGF,CAAE,CACpE,CACF,EAVwB,YC/CxB,IAAMG,EAAUC,EAACC,GAA+B,CAC9C,GAAM,CAAE,YAAAC,EAAa,aAAAC,CAAA,EAAiBF,EACtC,MAAO,CAAE,MAAOC,EAAa,OAAQC,CAAA,CACvC,EAHgB,WAKHC,EAAsBJ,EAACK,GAAkBA,EAAnB,uBAEtBC,EAAwBN,EAACO,GAAiB,CACrD,IAAMC,EAAQ,KAAK,IAAID,EAAM,WAAaA,EAAM,SAAU,CAAC,EACrDE,EAAM,KAAK,IAAIF,EAAM,SAAWA,EAAM,SAAUA,EAAM,MAAQ,CAAC,EAE/DG,EAAM,CAAA,EAEZ,QAASC,EAAIH,EAAOG,GAAKF,EAAKE,IAC5BD,EAAI,KAAKC,CAAC,EAGZ,OAAOD,CACT,EAXqC,yBAaxBE,EAAqBZ,EAAA,CAChCa,EACAC,IACG,CACH,IAAMb,EAAUY,EAAS,cACzB,GAAI,CAACZ,EACH,OAEF,IAAMc,EAAeF,EAAS,aAC9B,GAAI,CAACE,EACH,OAGF,IAAMC,EAAUhB,EAACiB,GAAe,CAC9B,GAAM,CAAE,MAAAC,EAAO,OAAAC,CAAA,EAAWF,EAC1BH,EAAG,CAAE,MAAO,KAAK,MAAMI,CAAK,EAAG,OAAQ,KAAK,MAAMC,CAAM,CAAA,CAAG,CAC7D,EAHgB,WAOhB,GAFAH,EAAQjB,EAAQE,CAAiC,CAAC,EAE9C,CAACc,EAAa,eAChB,MAAO,IAAM,CAAC,EAGhB,IAAMK,EAAW,IAAIL,EAAa,eAAgBM,GAAY,CAC5D,IAAMC,EAAMtB,EAAA,IAAM,CAChB,IAAMuB,EAAQF,EAAQ,CAAC,EACvB,GAAIE,GAAO,cAAe,CACxB,IAAMC,EAAMD,EAAM,cAAc,CAAC,EACjC,GAAIC,EAAK,CACPR,EAAQ,CAAE,MAAOQ,EAAI,WAAY,OAAQA,EAAI,SAAA,CAAW,EACxD,MACF,CACF,CACAR,EAAQjB,EAAQE,CAAiC,CAAC,CACpD,EAVY,OAYZY,EAAS,QAAQ,oCACb,sBAAsBS,CAAG,EACzBA,EAAA,CACN,CAAC,EAED,OAAAF,EAAS,QAAQnB,EAAS,CAAE,IAAK,YAAA,CAAc,EAExC,IAAM,CACXmB,EAAS,UAAUnB,CAAO,CAC5B,CACF,EA/CkC,sBAiD5BwB,EAA0B,CAC9B,QAAS,EACX,EAuBA,IAAMC,EACJ,OAAO,OAAU,IAAc,GAAO,gBAAiB,OAI5CC,EAAuBC,EAAA,CAClCC,EACAC,IACG,CACH,IAAMC,EAAUF,EAAS,cACzB,GAAI,CAACE,EACH,OAEF,IAAMC,EAAeH,EAAS,aAC9B,GAAI,CAACG,EACH,OAGF,IAAIC,EAAS,EACPC,EACJL,EAAS,QAAQ,mBAAqBH,EAClC,IAAA,GACAS,EACEH,EACA,IAAM,CACJF,EAAGG,EAAQ,EAAK,CAClB,EACAJ,EAAS,QAAQ,qBAAA,EAGnBO,EAAgBR,EAACS,GAAyB,IAAM,CACpD,GAAM,CAAE,WAAAC,EAAY,MAAAC,CAAA,EAAUV,EAAS,QACvCI,EAASK,EACLP,EAAQ,YAAkBQ,GAAS,IAAO,GAC1CR,EAAQ,UACZG,EAAA,EACAJ,EAAGG,EAAQI,CAAW,CACxB,EAPsB,iBAQhBG,EAAUJ,EAAc,EAAI,EAC5BK,EAAaL,EAAc,EAAK,EAEtCL,EAAQ,iBAAiB,SAAUS,EAASE,CAAuB,EACnE,IAAMC,EACJd,EAAS,QAAQ,mBAAqBH,EACxC,OAAIiB,GACFZ,EAAQ,iBAAiB,YAAaU,EAAYC,CAAuB,EAEpE,IAAM,CACXX,EAAQ,oBAAoB,SAAUS,CAAO,EACzCG,GACFZ,EAAQ,oBAAoB,YAAaU,CAAU,CAEvD,CACF,EAhDoC,wBAiG7B,IAAMG,EAAiBC,EAAA,CAC5BC,EACAC,EACAC,IACG,CACH,GAAID,GAAO,cAAe,CACxB,IAAME,EAAMF,EAAM,cAAc,CAAC,EACjC,GAAIE,EAIF,OAHa,KAAK,MAChBA,EAAID,EAAS,QAAQ,WAAa,aAAe,WAAW,CAAA,CAIlE,CAEA,OAAQF,EACNE,EAAS,QAAQ,WAAa,cAAgB,cAChD,CACF,EAlB8B,kBAoCvB,IAAME,EAAgBC,EAAA,CAC3BC,EACA,CACE,YAAAC,EAAc,EACd,SAAAC,CACF,EACAC,IACG,SACH,IAAMC,EAAWJ,EAASC,GAE1BI,GAAAC,EAAAH,EAAS,gBAAT,KAAA,OAAAG,EAAwB,WAAxB,MAAAD,EAAA,KAAAC,EAAmC,CACjC,CAACH,EAAS,QAAQ,WAAa,OAAS,KAAK,EAAGC,EAChD,SAAAF,CAAA,CAAA,CAEJ,EAd6B,iBAwFhBK,EAAN,KAGL,OAAA,CAAAR,EAAA,oBA4EA,YAAYS,EAAwD,CA3EpE,KAAQ,OAAqC,CAAA,EAE7C,KAAA,cAAuC,KACvC,KAAA,aAAoD,KACpD,KAAA,YAAc,GACd,KAAQ,YAAkC,KAC1C,KAAA,kBAAwC,CAAA,EACxC,KAAQ,cAAA,IAAoB,IAC5B,KAAQ,gBAAA,IAAsB,IAC9B,KAAQ,4BAA6C,CAAA,EACrD,KAAQ,UAAgC,OACxC,KAAQ,iBAAmB,GAC3B,KAAQ,cAAgB,GACxB,KAAA,WAA0B,KAC1B,KAAA,aAA8B,KAC9B,KAAA,gBAA0C,KAC1C,KAAQ,kBAAoB,EAQ5B,KAAA,cAAA,IAAoB,IACpB,KAAQ,IAAM,IAAA,WAAM,QAAAC,GAAAJ,GAAAC,EAAA,KAAK,eAAL,KAAA,OAAAA,EAAmB,cAAnB,KAAA,OAAAD,EAAgC,MAAhC,KAAA,OAAAI,EAAA,KAAAJ,CAAA,IAA2C,KAAK,IAAA,CAAA,EACpE,KAAQ,UAAY,IAAM,CACxB,IAAIK,EAA6B,KAE3BC,EAAMZ,EAAA,IACNW,IAIA,CAAC,KAAK,cAAgB,CAAC,KAAK,aAAa,eACpC,KAGDA,EAAM,IAAI,KAAK,aAAa,eAAgBE,GAAY,CAC9DA,EAAQ,QAASC,GAAU,CACzB,IAAMC,EAAMf,EAAA,IAAM,CAChB,IAAMgB,EAAOF,EAAM,OACbG,EAAQ,KAAK,iBAAiBD,CAAI,EAExC,GAAI,CAACA,EAAK,YAAa,CACrB,KAAK,SAAS,UAAUA,CAAI,EAC5B,MACF,CAEI,KAAK,0BAA0BC,CAAK,GACtC,KAAK,WACHA,EACA,KAAK,QAAQ,eAAeD,EAAMF,EAAO,IAAI,CAAA,CAGnD,EAfY,OAgBZ,KAAK,QAAQ,oCACT,sBAAsBC,CAAG,EACzBA,EAAA,CACN,CAAC,CACH,CAAC,GA/BS,OAkCZ,MAAO,CACL,WAAYf,EAAA,IAAM,QAChBO,EAAAK,EAAA,IAAA,MAAAL,EAAO,WAAA,EACPI,EAAM,IACR,EAHY,cAIZ,QAASX,EAACkB,GAAA,OACR,OAAAX,EAAAK,EAAA,IAAA,KAAA,OAAAL,EAAO,QAAQW,EAAQ,CAAE,IAAK,YAAA,CAAA,GADvB,WAET,UAAWlB,EAACkB,GAAA,OAAoB,OAAAX,EAAAK,EAAA,IAAA,KAAA,OAAAL,EAAO,UAAUW,CAAA,CAAA,EAAtC,YAA4C,CAE3D,GAAA,EACA,KAAA,MAAyD,KAMzD,KAAA,WAAcT,GAA2D,CACvE,OAAO,QAAQA,CAAI,EAAE,QAAQ,CAAC,CAACU,EAAKC,CAAK,IAAM,CACzC,OAAOA,EAAU,KAAa,OAAQX,EAAaU,CAAG,CAC5D,CAAC,EAED,KAAK,QAAU,CACb,MAAO,GACP,cAAe,EACf,SAAU,EACV,aAAc,EACd,WAAY,EACZ,mBAAoB,EACpB,iBAAkB,EAClB,WAAY,GACZ,WAAYE,EACZ,eAAgBC,EAChB,SAAUtB,EAAA,IAAM,CAAC,EAAP,YACV,eAAAuB,EACA,YAAa,CAAE,MAAO,EAAG,OAAQ,CAAA,EACjC,aAAc,EACd,IAAK,EACL,eAAgB,aAChB,yBAA0B,CAAA,EAC1B,MAAO,EACP,sBAAuB,IACvB,QAAS,GACT,MAAO,GACP,kBAAmB,GACnB,oCAAqC,GACrC,GAAGd,CAAA,CAEP,EAEA,KAAQ,OAAUe,GAAkB,UAClClB,GAAAC,EAAA,KAAK,SAAQ,WAAb,MAAAD,EAAA,KAAAC,EAAwB,KAAMiB,CAAA,CAChC,EAEA,KAAQ,YAAcC,EACpB,KACE,KAAK,eAAA,EAEE,CACL,KAAK,YACL,KAAK,MAAQ,KAAK,MAAM,WAAa,KACrC,KAAK,MAAQ,KAAK,MAAM,SAAW,IAAA,GAGtCC,GAAgB,CACf,KAAK,OAAOA,CAAW,CACzB,EACA,CACE,IAAK,GACL,MAAO1B,EAAA,IAAM,KAAK,QAAQ,MAAnB,SACP,YAAa,CACX,KAAK,YACL,KAAK,MAAQ,KAAK,MAAM,WAAa,KACrC,KAAK,MAAQ,KAAK,MAAM,SAAW,IAAA,CACrC,CACF,EAGF,KAAQ,QAAU,IAAM,CACtB,KAAK,OAAO,OAAO,OAAO,EAAE,QAAS2B,GAAMA,EAAA,CAAI,EAC/C,KAAK,OAAS,CAAA,EACd,KAAK,SAAS,WAAA,EACV,KAAK,OAAS,MAAQ,KAAK,eAC7B,KAAK,aAAa,qBAAqB,KAAK,KAAK,EACjD,KAAK,MAAQ,MAEf,KAAK,YAAc,KACnB,KAAK,cAAgB,KACrB,KAAK,aAAe,IACtB,EAEA,KAAA,UAAY,IACH,IAAM,CACX,KAAK,QAAA,CACP,EAGF,KAAA,YAAc,IAAM,OAClB,IAAMC,EAAgB,KAAK,QAAQ,QAC/B,KAAK,QAAQ,iBAAA,EACb,KAEJ,GAAI,KAAK,gBAAkBA,EAAe,CAGxC,GAFA,KAAK,QAAA,EAED,CAACA,EAAe,CAClB,KAAK,YAAA,EACL,MACF,CAEA,KAAK,cAAgBA,EAEjB,KAAK,eAAiB,kBAAmB,KAAK,cAChD,KAAK,aAAe,KAAK,cAAc,cAAc,YAErD,KAAK,eAAerB,EAAA,KAAK,gBAAL,KAAA,OAAAA,EAAoB,SAAU,KAGpD,KAAK,cAAc,QAASsB,GAAW,CACrC,KAAK,SAAS,QAAQA,CAAM,CAC9B,CAAC,EAED,KAAK,OAAO,KACV,KAAK,QAAQ,mBAAmB,KAAOC,GAAS,CAC9C,KAAK,WAAaA,EAClB,KAAK,YAAA,CACP,CAAC,CAAA,EAGH,KAAK,OAAO,KACV,KAAK,QAAQ,qBAAqB,KAAM,CAAC7B,EAAQyB,IAAgB,CAC/D,KAAK,kBAAoB,EACzB,KAAK,gBAAkBA,EACnB,KAAK,gBAAA,EAAoBzB,EACvB,UACA,WACF,KACJ,KAAK,aAAeA,EACpB,KAAK,YAAcyB,EAEf,KAAK,aACP,KAAK,wBAAA,EAEP,KAAK,YAAA,CACP,CAAC,CAAA,EAGH,KAAK,gBAAgB,KAAK,gBAAA,EAAmB,CAC3C,YAAa,OACb,SAAU,MAAA,CACX,CACH,CACF,EAEA,KAAQ,MAAuB,KAoE/B,KAAQ,QAAU,IACX,KAAK,QAAQ,SAKlB,KAAK,WAAa,KAAK,YAAc,KAAK,QAAQ,YAE3C,KAAK,WAAW,KAAK,QAAQ,WAAa,QAAU,QAAQ,IANjE,KAAK,WAAa,KACX,GAQX,KAAQ,gBAAkB,IACnB,KAAK,QAAQ,SAKlB,KAAK,aACH,KAAK,eACJ,OAAO,KAAK,QAAQ,eAAkB,WACnC,KAAK,QAAQ,cAAA,EACb,KAAK,QAAQ,eAEZ,KAAK,eAVV,KAAK,aAAe,KACb,GAYX,KAAQ,uBAAyB,CAC/BK,EACAd,IACG,CACH,IAAMe,EAAA,IAAgC,IAChCC,EAAA,IAA2B,IACjC,QAASC,EAAIjB,EAAQ,EAAGiB,GAAK,EAAGA,IAAK,CACnC,IAAMC,EAAcJ,EAAaG,CAAC,EAElC,GAAIF,EAA0B,IAAIG,EAAY,IAAI,EAChD,SAGF,IAAMC,EAA8BH,EAAqB,IACvDE,EAAY,IAAA,EAWd,GAREC,GAA+B,MAC/BD,EAAY,IAAMC,EAA4B,IAE9CH,EAAqB,IAAIE,EAAY,KAAMA,CAAW,EAC7CA,EAAY,IAAMC,EAA4B,KACvDJ,EAA0B,IAAIG,EAAY,KAAM,EAAI,EAGlDH,EAA0B,OAAS,KAAK,QAAQ,MAClD,KAEJ,CAEA,OAAOC,EAAqB,OAAS,KAAK,QAAQ,MAC9C,MAAM,KAAKA,EAAqB,OAAA,CAAQ,EAAE,KAAK,CAACI,EAAGC,IAC7CD,EAAE,MAAQC,EAAE,IACPD,EAAE,MAAQC,EAAE,MAGdD,EAAE,IAAMC,EAAE,GAClB,EAAE,CAAC,EACJ,MACN,EAEA,KAAQ,sBAAwBb,EAC9B,IAAM,CACJ,KAAK,QAAQ,MACb,KAAK,QAAQ,aACb,KAAK,QAAQ,aACb,KAAK,QAAQ,WACb,KAAK,QAAQ,QACb,KAAK,QAAQ,KAAA,EAEf,CAACc,EAAOC,EAAcC,EAAcC,EAAYC,EAASC,KAErD,KAAK,YAAc,QAAa,KAAK,YAAcA,IAInD,KAAK,iBAAmB,IAG1B,KAAK,UAAYA,EACjB,KAAK,4BAA8B,CAAA,EAE5B,CACL,MAAAL,EACA,aAAAC,EACA,aAAAC,EACA,WAAAC,EACA,QAAAC,EACA,MAAAC,CAAA,GAGJ,CACE,IAAK,EAAA,CACP,EAGF,KAAQ,gBAAkBnB,EACxB,IAAM,CAAC,KAAK,sBAAA,EAAyB,KAAK,aAAa,EACvD,CACE,CAAE,MAAAc,EAAO,aAAAC,EAAc,aAAAC,EAAc,WAAAC,EAAY,QAAAC,EAAS,MAAAC,CAAA,EAC1DC,IACG,CACH,GAAI,CAACF,EACH,YAAK,kBAAoB,CAAA,EACzB,KAAK,cAAc,MAAA,EACnB,KAAK,gBAAgB,MAAA,EACd,CAAA,EAIT,GAAI,KAAK,gBAAgB,KAAOJ,EAC9B,QAAWtB,KAAS,KAAK,gBAAgB,KAAA,EACnCA,GAASsB,GACX,KAAK,gBAAgB,OAAOtB,CAAK,EAMnC,KAAK,mBACP,KAAK,iBAAmB,GACxB,KAAK,cAAgB,GACrB,KAAK,kBAAoB,CAAA,EACzB,KAAK,cAAc,MAAA,EACnB,KAAK,gBAAgB,MAAA,EAErB,KAAK,4BAA8B,CAAA,GAKjC,KAAK,kBAAkB,SAAW,GAAK,CAAC,KAAK,gBAC/C,KAAK,kBAAoB,KAAK,QAAQ,yBACtC,KAAK,kBAAkB,QAAS6B,GAAS,CACvC,KAAK,cAAc,IAAIA,EAAK,IAAKA,EAAK,IAAI,CAC5C,CAAC,GAIH,IAAMC,EAAM,KAAK,cACb,EACA,KAAK,4BAA4B,OAAS,EACxC,KAAK,IAAI,GAAG,KAAK,2BAA2B,EAC5C,EACN,KAAK,4BAA8B,CAAA,EAG/B,KAAK,eAAiB,KAAK,kBAAkB,SAAWR,IAC1D,KAAK,cAAgB,IAGvB,IAAMR,EAAe,KAAK,kBAAkB,MAAM,EAAGgB,CAAG,EAGlDC,EAA2C,IAAI,MAAMJ,CAAK,EAAE,KAChE,MAAA,EAIF,QAASV,EAAI,EAAGA,EAAIa,EAAKb,IAAK,CAC5B,IAAMY,EAAOf,EAAaG,CAAC,EACvBY,IACFE,EAAcF,EAAK,IAAI,EAAIZ,EAE/B,CAEA,QAASe,EAAIF,EAAKE,EAAIV,EAAOU,IAAK,CAChC,IAAM9B,EAAMuB,EAAWO,CAAC,EAGlBC,EAAa,KAAK,gBAAgB,IAAID,CAAC,EACzCE,EACAC,EAEJ,GAAIF,IAAe,QAAa,KAAK,QAAQ,MAAQ,EAAG,CAEtDC,EAAOD,EACP,IAAMG,EAAYL,EAAcG,CAAI,EAC9BG,EACJD,IAAc,OAAYtB,EAAasB,CAAS,EAAI,OACtDD,EAAQE,EACJA,EAAW,IAAM,KAAK,QAAQ,IAC9Bd,EAAeC,CACrB,KAAO,CAEL,IAAMc,EACJ,KAAK,QAAQ,QAAU,EACnBxB,EAAakB,EAAI,CAAC,EAClB,KAAK,uBAAuBlB,EAAckB,CAAC,EAEjDG,EAAQG,EACJA,EAAoB,IAAM,KAAK,QAAQ,IACvCf,EAAeC,EAEnBU,EAAOI,EACHA,EAAoB,KACpBN,EAAI,KAAK,QAAQ,MAGjB,KAAK,QAAQ,MAAQ,GACvB,KAAK,gBAAgB,IAAIA,EAAGE,CAAI,CAEpC,CAEA,IAAMK,EAAeX,EAAc,IAAI1B,CAAG,EACpCsC,EACJ,OAAOD,GAAiB,SACpBA,EACA,KAAK,QAAQ,aAAaP,CAAC,EAE3BS,EAAMN,EAAQK,EAEpB1B,EAAakB,CAAC,EAAI,CAChB,MAAOA,EACP,MAAAG,EACA,KAAAK,EACA,IAAAC,EACA,IAAAvC,EACA,KAAAgC,CAAA,EAIFH,EAAcG,CAAI,EAAIF,CACxB,CAEA,YAAK,kBAAoBlB,EAElBA,CACT,EACA,CACE,IAAK,GACL,MAAO/B,EAAA,IAAM,KAAK,QAAQ,MAAnB,QAAmB,CAC5B,EAGF,KAAA,eAAiByB,EACf,IAAM,CACJ,KAAK,gBAAA,EACL,KAAK,QAAA,EACL,KAAK,gBAAA,EACL,KAAK,QAAQ,KAAA,EAEf,CAACM,EAAc4B,EAAWC,EAAchB,IAC9B,KAAK,MACXb,EAAa,OAAS,GAAK4B,EAAY,EACnCE,EAAe,CACb,aAAA9B,EACA,UAAA4B,EACA,aAAAC,EACA,MAAAhB,CAAA,CACD,EACD,KAER,CACE,IAAK,GACL,MAAO5C,EAAA,IAAM,KAAK,QAAQ,MAAnB,QAAmB,CAC5B,EAGF,KAAA,kBAAoByB,EAClB,IAAM,CACJ,IAAIqC,EAA4B,KAC5BC,EAA0B,KACxBC,EAAQ,KAAK,eAAA,EACnB,OAAIA,IACFF,EAAaE,EAAM,WACnBD,EAAWC,EAAM,UAEnB,KAAK,YAAY,WAAW,CAAC,KAAK,YAAaF,EAAYC,CAAQ,CAAC,EAC7D,CACL,KAAK,QAAQ,eACb,KAAK,QAAQ,SACb,KAAK,QAAQ,MACbD,EACAC,CAAA,CAEJ,EACA,CAACE,EAAgBC,EAAU3B,EAAOuB,EAAYC,IACrCD,IAAe,MAAQC,IAAa,KACvC,CAAA,EACAE,EAAe,CACb,WAAAH,EACA,SAAAC,EACA,SAAAG,EACA,MAAA3B,CAAA,CACD,EAEP,CACE,IAAK,GACL,MAAOvC,EAAA,IAAM,KAAK,QAAQ,MAAnB,QAAmB,CAC5B,EAGF,KAAA,iBAAoBgB,GAAuB,CACzC,IAAMmD,EAAgB,KAAK,QAAQ,eAC7BC,EAAWpD,EAAK,aAAamD,CAAa,EAEhD,OAAKC,EAOE,SAASA,EAAU,EAAE,GAN1B,QAAQ,KACN,2BAA2BD,CAAa,gCAAA,EAEnC,GAIX,EAOA,KAAQ,0BAA6BlD,GAA2B,OAE9D,GAAI,CAAC,KAAK,aAAe,KAAK,YAAY,WAAa,SACrD,MAAO,GAGT,IAAMoD,EACJ,KAAK,YAAY,SACjB9D,EAAA,KAAK,wBAAwB,KAAK,YAAY,gBAAgB,IAA9D,KAAA,OAAAA,EAAiE,OAEnE,GAAI8D,IAAgB,QAAa,KAAK,MAAO,CAE3C,IAAMC,EAAa,KAAK,IACtB,KAAK,QAAQ,SACb,KAAK,MAAM,KAAK,MAAM,SAAW,KAAK,MAAM,YAAc,CAAC,CAAA,EAEvDC,EAAW,KAAK,IAAI,EAAGF,EAAcC,CAAU,EAC/CE,EAAW,KAAK,IACpB,KAAK,QAAQ,MAAQ,EACrBH,EAAcC,CAAA,EAEhB,OAAOrD,GAASsD,GAAYtD,GAASuD,CACvC,CAEA,MAAO,EACT,EAEA,KAAA,eAAkBxD,GAA8B,CAC9C,GAAI,CAACA,EAAM,CACT,KAAK,cAAc,QAAQ,CAACa,EAAQV,IAAQ,CACrCU,EAAO,cACV,KAAK,SAAS,UAAUA,CAAM,EAC9B,KAAK,cAAc,OAAOV,CAAG,EAEjC,CAAC,EACD,MACF,CAEA,IAAMF,EAAQ,KAAK,iBAAiBD,CAAI,EAClCG,EAAM,KAAK,QAAQ,WAAWF,CAAK,EACnCwD,EAAW,KAAK,cAAc,IAAItD,CAAG,EAEvCsD,IAAazD,IACXyD,GACF,KAAK,SAAS,UAAUA,CAAQ,EAElC,KAAK,SAAS,QAAQzD,CAAI,EAC1B,KAAK,cAAc,IAAIG,EAAKH,CAAI,IAO/B,CAAC,KAAK,aAAe,KAAK,cAC3B,KAAK,0BAA0BC,CAAK,GAEpC,KAAK,WAAWA,EAAO,KAAK,QAAQ,eAAeD,EAAM,OAAW,IAAI,CAAC,CAE7E,EAEA,KAAA,WAAa,CAACC,EAAewC,IAAiB,OAC5C,IAAMX,EAAO,KAAK,kBAAkB7B,CAAK,EACzC,GAAI,CAAC6B,EAAM,OAEX,IAAM4B,EAAW,KAAK,cAAc,IAAI5B,EAAK,GAAG,GAAKA,EAAK,KACpD6B,EAAQlB,EAAOiB,EAEjBC,IAAU,MAEVpE,EAAA,KAAK,cAAL,KAAA,OAAAA,EAAkB,YAAa,WAC9B,KAAK,6CAA+C,OACjD,KAAK,2CAA2CuC,EAAM6B,EAAO,IAAI,EACjE7B,EAAK,MAAQ,KAAK,gBAAA,EAAoB,KAAK,oBAK/C,KAAK,gBAAgB,KAAK,gBAAA,EAAmB,CAC3C,YAAc,KAAK,mBAAqB6B,EACxC,SAAU,MAAA,CACX,EAGH,KAAK,4BAA4B,KAAK7B,EAAK,KAAK,EAChD,KAAK,cAAgB,IAAI,IAAI,KAAK,cAAc,IAAIA,EAAK,IAAKW,CAAI,CAAC,EAEnE,KAAK,OAAO,EAAK,EAErB,EAEA,KAAA,gBAAkBhC,EAChB,IAAM,CAAC,KAAK,kBAAA,EAAqB,KAAK,gBAAA,CAAiB,EACvD,CAACmD,EAAS7C,IAAiB,CACzB,IAAM8C,EAAmC,CAAA,EAEzC,QAASC,EAAI,EAAGC,EAAMH,EAAQ,OAAQE,EAAIC,EAAKD,IAAK,CAClD,IAAM7B,EAAI2B,EAAQE,CAAC,EACb3C,EAAcJ,EAAakB,CAAC,EAElC4B,EAAa,KAAK1C,CAAW,CAC/B,CAEA,OAAO0C,CACT,EACA,CACE,IAAK,GACL,MAAO7E,EAAA,IAAM,KAAK,QAAQ,MAAnB,QAAmB,CAC5B,EAGF,KAAA,wBAA2BC,GAAmB,CAC5C,IAAM8B,EAAe,KAAK,gBAAA,EAC1B,GAAIA,EAAa,SAAW,EAG5B,OAAOiD,EACLjD,EACEkD,EACE,EACAlD,EAAa,OAAS,EACrBd,GAAkB+D,EAAajD,EAAad,CAAK,CAAC,EAAE,MACrDhB,CAAA,CAEJ,CAAA,CAEJ,EAEA,KAAQ,mBAAqB,IAAM,CACjC,GAAI,CAAC,KAAK,cAAe,MAAO,GAEhC,GAAI,iBAAkB,KAAK,cAEzB,OAAO,KAAK,QAAQ,WAChB,KAAK,cAAc,YAAc,KAAK,cAAc,YACpD,KAAK,cAAc,aAAe,KAAK,cAAc,aACpD,CAEL,IAAMiF,EAAM,KAAK,cAAc,SAAS,gBACxC,OAAO,KAAK,QAAQ,WAChBA,EAAI,YAAc,KAAK,cAAc,WACrCA,EAAI,aAAe,KAAK,cAAc,WAC5C,CACF,EAEA,KAAA,sBAAwB,CACtB7E,EACA8E,EACAT,EAAW,IACR,CACH,GAAI,CAAC,KAAK,cAAe,MAAO,GAEhC,IAAMjB,EAAO,KAAK,QAAA,EACZG,EAAe,KAAK,gBAAA,EAEtBuB,IAAU,SACZA,EAAQ9E,GAAYuD,EAAeH,EAAO,MAAQ,SAGhD0B,IAAU,SAGZ9E,IAAaqE,EAAWjB,GAAQ,EACvB0B,IAAU,QACnB9E,GAAYoD,GAGd,IAAM2B,EAAY,KAAK,mBAAA,EAEvB,OAAO,KAAK,IAAI,KAAK,IAAIA,EAAW/E,CAAQ,EAAG,CAAC,CAClD,EAEA,KAAA,kBAAoB,CAACY,EAAekE,EAAyB,SAAW,CACtElE,EAAQ,KAAK,IAAI,EAAG,KAAK,IAAIA,EAAO,KAAK,QAAQ,MAAQ,CAAC,CAAC,EAE3D,IAAMwC,EAAO,KAAK,QAAA,EACZG,EAAe,KAAK,gBAAA,EAEpBd,EAAO,KAAK,kBAAkB7B,CAAK,EACzC,GAAI,CAAC6B,EAAM,OAEX,GAAIqC,IAAU,OACZ,GAAIrC,EAAK,KAAOc,EAAeH,EAAO,KAAK,QAAQ,iBACjD0B,EAAQ,cACCrC,EAAK,OAASc,EAAe,KAAK,QAAQ,mBACnDuB,EAAQ,YAER,OAAO,CAACvB,EAAcuB,CAAK,EAM/B,GAAIA,IAAU,OAASlE,IAAU,KAAK,QAAQ,MAAQ,EACpD,MAAO,CAAC,KAAK,mBAAA,EAAsBkE,CAAK,EAG1C,IAAM9E,EACJ8E,IAAU,MACNrC,EAAK,IAAM,KAAK,QAAQ,iBACxBA,EAAK,MAAQ,KAAK,QAAQ,mBAEhC,MAAO,CACL,KAAK,sBAAsBzC,EAAU8E,EAAOrC,EAAK,IAAI,EACrDqC,CAAA,CAEJ,EAEA,KAAA,eAAiB,CACf9E,EACA,CAAE,MAAA8E,EAAQ,QAAS,SAAAhF,EAAW,MAAA,EAAkC,CAAA,IAC7D,CACH,IAAMF,EAAS,KAAK,sBAAsBI,EAAU8E,CAAK,EAEnDE,EAAM,KAAK,IAAA,EACjB,KAAK,YAAc,CACjB,MAAO,KACP,MAAAF,EACA,SAAAhF,EACA,UAAWkF,EACX,iBAAkBpF,EAClB,aAAc,CAAA,EAGhB,KAAK,gBAAgBA,EAAQ,CAAE,YAAa,OAAW,SAAAE,CAAA,CAAU,EAEjE,KAAK,wBAAA,CACP,EAEA,KAAA,cAAgB,CACdc,EACA,CACE,MAAOqE,EAAe,OACtB,SAAAnF,EAAW,MAAA,EACa,CAAA,IACvB,CACHc,EAAQ,KAAK,IAAI,EAAG,KAAK,IAAIA,EAAO,KAAK,QAAQ,MAAQ,CAAC,CAAC,EAE3D,IAAMsE,EAAa,KAAK,kBAAkBtE,EAAOqE,CAAY,EAC7D,GAAI,CAACC,EACH,OAEF,GAAM,CAACtF,EAAQkF,CAAK,EAAII,EAElBF,EAAM,KAAK,IAAA,EACjB,KAAK,YAAc,CACjB,MAAApE,EACA,MAAAkE,EACA,SAAAhF,EACA,UAAWkF,EACX,iBAAkBpF,EAClB,aAAc,CAAA,EAGhB,KAAK,gBAAgBA,EAAQ,CAAE,YAAa,OAAW,SAAAE,CAAA,CAAU,EAEjE,KAAK,wBAAA,CACP,EAEA,KAAA,SAAW,CACTwE,EACA,CAAE,SAAAxE,EAAW,MAAA,EAAkC,CAAA,IAC5C,CACH,IAAMF,EAAS,KAAK,gBAAA,EAAoB0E,EAClCU,EAAM,KAAK,IAAA,EAEjB,KAAK,YAAc,CACjB,MAAO,KACP,MAAO,QACP,SAAAlF,EACA,UAAWkF,EACX,iBAAkBpF,EAClB,aAAc,CAAA,EAGhB,KAAK,gBAAgBA,EAAQ,CAAE,YAAa,OAAW,SAAAE,CAAA,CAAU,EAEjE,KAAK,wBAAA,CACP,EAEA,KAAA,aAAe,IAAM,OACnB,IAAM4B,EAAe,KAAK,gBAAA,EAEtB2B,EAIJ,GAAI3B,EAAa,SAAW,EAC1B2B,EAAM,KAAK,QAAQ,qBACV,KAAK,QAAQ,QAAU,EAChCA,IAAMnD,EAAAwB,EAAaA,EAAa,OAAS,CAAC,IAApC,KAAA,OAAAxB,EAAuC,MAAO,MAC/C,CACL,IAAMiF,EAAY,MAAqB,KAAK,QAAQ,KAAK,EAAE,KAAK,IAAI,EAChEzB,EAAWhC,EAAa,OAAS,EACrC,KAAOgC,GAAY,GAAKyB,EAAU,KAAMC,GAAQA,IAAQ,IAAI,GAAG,CAC7D,IAAM3C,EAAOf,EAAagC,CAAQ,EAC9ByB,EAAU1C,EAAK,IAAI,IAAM,OAC3B0C,EAAU1C,EAAK,IAAI,EAAIA,EAAK,KAG9BiB,GACF,CAEAL,EAAM,KAAK,IAAI,GAAG8B,EAAU,OAAQC,GAAuBA,IAAQ,IAAI,CAAC,CAC1E,CAEA,OAAO,KAAK,IACV/B,EAAM,KAAK,QAAQ,aAAe,KAAK,QAAQ,WAC/C,CAAA,CAEJ,EAEA,KAAQ,gBAAkB,CACxBzD,EACA,CACE,YAAAC,EACA,SAAAC,CAAA,IAKC,CACH,KAAK,QAAQ,WAAWF,EAAQ,CAAE,SAAAE,EAAU,YAAAD,CAAA,EAAe,IAAI,CACjE,EAEA,KAAA,QAAU,IAAM,CACd,KAAK,cAAA,IAAoB,IACzB,KAAK,gBAAA,IAAsB,IAC3B,KAAK,OAAO,EAAK,CACnB,EAv1BE,KAAK,WAAWO,CAAI,CACtB,CA4IQ,yBAA0B,CAChC,GAAI,CAAC,KAAK,aAAc,CACtB,KAAK,YAAc,KACnB,MACF,CACI,KAAK,OAAS,OAClB,KAAK,MAAQ,KAAK,aAAa,sBAAsB,IAAM,CACzD,KAAK,MAAQ,KACb,KAAK,gBAAA,CACP,CAAC,EACH,CACQ,iBAAkB,CAIxB,GAHI,CAAC,KAAK,aAGN,CADO,KAAK,cACP,OAIT,GAAI,KAAK,IAAA,EAAQ,KAAK,YAAY,UADT,IACuC,CAC9D,KAAK,YAAc,KACnB,MACF,CAEA,IAAM8E,EACJ,KAAK,YAAY,OAAS,KACtB,KAAK,kBAAkB,KAAK,YAAY,MAAO,KAAK,YAAY,KAAK,EACrE,OACAG,EAAeH,EACjBA,EAAW,CAAC,EACZ,KAAK,YAAY,iBAKfI,EAAgB,EAEhBC,EAAgBF,IAAiB,KAAK,YAAY,iBAExD,GAAI,CAACE,GAAiBC,EAAYH,EAAc,KAAK,gBAAA,CAAiB,GAEpE,GADA,KAAK,YAAY,eACb,KAAK,YAAY,cAAgBC,EAAe,CAClD,KAAK,YAAc,KACnB,MACF,OAEA,KAAK,YAAY,aAAe,EAE5BC,IACF,KAAK,YAAY,iBAAmBF,EAGpC,KAAK,YAAY,SAAW,OAE5B,KAAK,gBAAgBA,EAAc,CACjC,YAAa,OACb,SAAU,MAAA,CACX,GAOL,KAAK,wBAAA,CACP,CA0oBF,EAEMT,EAA0BjF,EAAA,CAC9B8F,EACAC,EACAC,EACA5E,IACG,CACH,KAAO0E,GAAOC,GAAM,CAClB,IAAME,GAAWH,EAAMC,GAAQ,EAAK,EAC9BG,EAAeF,EAAgBC,CAAM,EAE3C,GAAIC,EAAe9E,EACjB0E,EAAMG,EAAS,UACNC,EAAe9E,EACxB2E,EAAOE,EAAS,MAEhB,QAAOA,CAEX,CAEA,OAAIH,EAAM,EACDA,EAAM,EAEN,CAEX,EAxBgC,2BA0BhC,SAASjC,EAAe,CACtB,aAAA9B,EACA,UAAA4B,EACA,aAAAC,EACA,MAAAhB,CACF,EAKG,CACD,IAAMuD,EAAYpE,EAAa,OAAS,EAClCqE,EAAYpG,EAACiB,GAAkBc,EAAad,CAAK,EAAG,MAAxC,aAGlB,GAAIc,EAAa,QAAUa,EACzB,MAAO,CACL,WAAY,EACZ,SAAUuD,CAAA,EAId,IAAIrC,EAAamB,EACf,EACAkB,EACAC,EACAxC,CAAA,EAEEG,EAAWD,EAEf,GAAIlB,IAAU,EACZ,KACEmB,EAAWoC,GACXpE,EAAagC,CAAQ,EAAG,IAAMH,EAAeD,GAE7CI,YAEOnB,EAAQ,EAAG,CAGpB,IAAMyD,EAAa,MAAMzD,CAAK,EAAE,KAAK,CAAC,EACtC,KACEmB,EAAWoC,GACXE,EAAW,KAAMC,GAAQA,EAAM1C,EAAeD,CAAS,GACvD,CACA,IAAMb,EAAOf,EAAagC,CAAQ,EAClCsC,EAAWvD,EAAK,IAAI,EAAIA,EAAK,IAC7BiB,GACF,CAIA,IAAMwC,EAAe,MAAM3D,CAAK,EAAE,KAAKgB,EAAeD,CAAS,EAC/D,KAAOG,GAAc,GAAKyC,EAAa,KAAMD,GAAQA,GAAO1C,CAAY,GAAG,CACzE,IAAMd,EAAOf,EAAa+B,CAAU,EACpCyC,EAAazD,EAAK,IAAI,EAAIA,EAAK,MAC/BgB,GACF,CAGAA,EAAa,KAAK,IAAI,EAAGA,EAAcA,EAAalB,CAAM,EAE1DmB,EAAW,KAAK,IAAIoC,EAAWpC,GAAYnB,EAAQ,EAAKmB,EAAWnB,EAAO,CAC5E,CAEA,MAAO,CAAE,WAAAkB,EAAY,SAAAC,CAAA,CACvB,CAlES/D,EAAA6D,EAAA,kBC5xCT,IAAM2C,GAAmB,GACnBC,GAAsB,GACtBC,GAAW,GAGXC,EAAc,CAClB,MAAO,CAAC,YAAY,EACpB,OAAQ,CAAC,cAAe,aAAc,eAAgB,eAAe,EACrE,MAAO,CAAC,aAAc,eAAgB,eAAe,CACvD,EAEMC,GAAe,CAAC,WAAW,EAE3BC,GAAmB,CACvB,CAAE,MAAO,cAAe,MAAO,wBAAyB,KAAM,aAAc,OAAQ,KAAM,cAA0D,MAAW,EAC/J,CAAE,MAAO,YAAa,MAAO,gBAAiB,KAAM,YAAa,OAAQ,CAAC,KAAK,EAAG,cAA0D,MAAW,EACvJ,CAAE,MAAO,YAAa,MAAO,2BAA4B,KAAM,WAAY,OAAQ,CAAC,WAAW,EAAG,cAA0D,MAAQ,EACpK,CAAE,MAAO,YAAa,MAAO,sBAAuB,KAAM,cAAe,OAAQ,CAAC,WAAW,EAAG,cAA0D,MAAQ,CACpK,EAQMC,EAAN,cAAsBC,CAAe,CAhDrC,MAgDqC,CAAAC,EAAA,gBACnC,aAAc,CACZ,MAAM,EACN,KAAK,aAAa,CAAE,KAAM,MAAO,CAAC,CACpC,CAIA,QAAUC,EACkC,MAC5C,EAEA,UAAYA,EACqE,MACjF,EAEA,OAASA,EAC0E,MACnF,EAEA,OAASA,EAC0E,MACnF,EAEA,YAAcA,EACgF,MAC9F,EAEA,kBAAoBC,EAAS,IAAM,CACjC,IAAMC,EAAM,KAAK,QAAQ,OAAO,cAAc,WAAW,EACzD,GAAI,CAACA,GAAOA,EAAI,QAAU,UAAY,CAACA,EAAI,KAAK,OAAQ,MAAO,CAAC,EAChE,IAAMC,EAAQD,EAAI,KAKZE,EAAM,CAAC,GAFgBC,EAAOF,CAAK,EAEb,OAAO,CAAC,EAAE,KAAK,CAACG,EAAGC,IAC7CD,EAAE,KAAK,cAAcC,EAAE,IAAI,CAC7B,EAEMC,EAAUJ,EAAI,OAAQK,GAAM,CAACA,EAAE,SAAS,EACxCC,EAAYN,EAAI,OAAQK,GAAMA,EAAE,SAAS,EAE/C,MAAO,CACL,CAAE,MAAO,UAAW,UAAWD,CAAQ,EACvC,CAAE,MAAO,YAAa,UAAWE,CAAU,CAC7C,EAAE,OAAQC,GAAMA,EAAE,UAAU,OAAS,CAAC,CACxC,CAAC,EAKDC,GAAa,CAAC,EAGdC,GAAc,OAGdC,GAAc,OAGdC,GAGAC,GAOA,mBAAoB,CAClB,MAAM,kBAAkB,EAGxB,IAAMC,EAASC,EAAM,KAAM,iBAAiB,EAGtCC,EAAWD,EAAM,KAAM,iBAAiB,EAGxCE,EAAQF,EAAM,KAAM,uBAAuB,EAG3CG,EAAQH,EAAM,KAAM,uBAAuB,EAG3CI,EAAaJ,EAAM,KAAM,kCAAkC,EAEjEK,EAAoB,CAAE,OAAAN,EAAQ,SAAAE,EAAU,MAAAC,EAAO,MAAAC,EAAO,WAAAC,CAAW,CAAC,EAAE,KAAK,IAAM,CAC7E,KAAK,QAAQ,MAAQL,EACrB,KAAK,UAAU,MAAQE,EACvB,KAAK,OAAO,MAAQC,EACpB,KAAK,OAAO,MAAQC,EACpB,KAAK,YAAY,MAAQC,CAC3B,CAAC,EAGD,KAAK,OAAO,IAAM,CAChB,IAAME,EAAW,KAAK,UAAU,OAAO,OAAO,EAE9CC,EAAU,IAAM,CACd,IAAMC,EAAQ,KAAK,KAAK,EAAE,cAAc,eAAe,EACnDA,GAAOA,EAAM,SAAS,EAAG,CAAC,CAChC,CAAC,CACH,CAAC,EAID,sBAAsB,IAAM,CAC1B,IAAMA,EAAQ,KAAK,KAAK,EAAE,cAAc,eAAe,EAClDA,IAEL,KAAKX,GAAe,IAAIY,EAAY,CAClC,MAAO,EACP,iBAAkB5B,EAAA,IAAM2B,EAAN,oBAClB,aAAc3B,EAAC6B,GACb,KAAKhB,GAAWgB,CAAC,GAAG,OAAS,QACzBpC,GACAD,GAHQ,gBAId,SAAUE,GACV,mBAAAoC,EACA,qBAAAC,EACA,WAAYC,EACZ,SAAUhC,EAAA,IAAM,CACd,sBAAsB,IAAM,KAAK,YAAY,CAAC,CAChD,EAFU,WAGZ,CAAC,EAED,KAAKiB,GAAsB,KAAKD,GAAa,UAAU,EACvD,KAAKA,GAAa,YAAY,EAG9B,KAAK,YAAY,EACnB,CAAC,CACH,CAKA,sBAAuB,CACrB,MAAM,qBAAqB,EAC3B,KAAKC,KAAsB,EAC3B,KAAKA,GAAsB,OAC3B,KAAKD,GAAe,MACtB,CAOA,UAAUiB,EAAO,CACf,KAAK,OAAO,OAAO,IAAI,CAAE,QAAS,GAAM,SAAU,CAACA,EAAM,EAAE,CAAE,CAAC,EAC9D,KAAK,OAAO,OAAO,MAAM,CAC3B,CAEA,cAAgBjC,EAAA,IAAM,CAGpB,IAAMkC,EADQ,KAAK,KAAK,EAAE,cAAc,eAAe,GACnC,OAAO,KAAK,EAChC,KAAK,OAAO,OAAO,cAAcA,CAAI,CACvC,EALgB,iBAOhB,YAAclC,EAAA,IAAM,CAElB,IAAMmC,EAAQ,KAAK,KAAK,EAAE,cAAc,eAAe,EACnDA,IAAOA,EAAM,MAAQ,IACzB,KAAK,OAAO,OAAO,cAAc,MAAS,CAC5C,EALc,eAUd,WAAanC,EAACoC,GAAU,CACtB,KAAK,OAAO,OAAO,WAAWA,CAAK,CACrC,EAFa,cAOb,oBAAsBpC,EAACoC,GAAU,CAC/B,KAAK,OAAO,OAAO,YAAYA,CAAK,CACtC,EAFsB,uBAOtB,aAAepC,EAACqC,GAAW,CACzB,IAAMf,EAAQ,KAAK,OAAO,MAC1B,GAAI,CAACA,EAAO,OAEK,KAAK,UAAU3B,EAAY0C,CAAM,CAAC,IACjD,KAAK,UAAUf,EAAM,OAAO,CAAC,EAGzBA,EAAM,cAAc,IAAM,OAC5BA,EAAM,oBAAoB,EAE1BA,EAAM,iBAAiB,MAAM,GAG/BA,EAAM,UAAU3B,EAAY0C,CAAM,GAAK,CAAC,CAAC,EACzCf,EAAM,iBAAiB,MAAS,EAEpC,EAjBe,gBAsBf,gBAAkBtB,EAACiC,GAAU,CAC3B,KAAK,YAAY,OAAO,OAAOA,CAAK,CACtC,EAFkB,mBASlB,OAAO,CAAE,KAAAK,CAAK,EAAG,CACf,IAAMC,EACJ,KAAK,QAAQ,OAAO,QAAQ,WAAW,EAAE,QAAU,SAE/CC,EAAS,KAAK,UAAU,OAAO,OAAO,GAAK,CAAC,EAC5CC,EAAW,KAAK,OAAO,OAAO,SAAS,EACvCC,EAAU,KAAK,OAAO,OAAO,QAAQ,EACrCC,EAAa,KAAK,OAAO,OAAO,WAAW,GAAK,GAChDC,EAAS,KAAK,OAAO,OAAO,OAAO,GAAKhD,GACxCiD,EAAgB,KAAK,OAAO,OAAO,cAAc,EAEjDC,EAAe,OAAO,QAAQnD,CAAW,EAAE,KAC/C,CAAC,CAAC,CAAEoD,CAAC,IAAM,KAAK,UAAUA,CAAC,IAAM,KAAK,UAAUH,CAAM,CACxD,IAAI,CAAC,EAECI,EAAsChD,EAACG,GAC3C2C,IAAiB3C,EACZ0C,IAAkB,OAAS,aAAe,YAC3C,OAHsC,YAKtCI,EAA6B,KAAK,UAAU,OAAQ,SAAS,GAG/DA,IAAW,KAAKlC,IAAeyB,IAAW,KAAK1B,MACjD,KAAKD,GAAaoC,EAASC,GAAcD,CAAM,EAAI,CAAC,EACpD,KAAKlC,GAAckC,EACnB,KAAKnC,GAAc0B,GAGrB,IAAMW,EAAQF,EAAS,KAAKpC,GAAW,OAAS2B,EAAO,OAKnD,KAAKxB,KACP,KAAKA,GAAa,WAAW,CAC3B,GAAG,KAAKA,GAAa,QACrB,MAAAmC,CACF,CAAC,EACD,KAAKnC,GAAa,YAAY,GAGhC,IAAMoC,EAAe,KAAKpC,IAAc,gBAAgB,GAAK,CAAC,EACxDqC,EAAY,KAAKrC,IAAc,aAAa,GAAK,EAGjDsC,EAAW,KAAK,YAAY,OAAO,cAAc,GAAK,CAAC,EACvDC,EAAS,IAAI,IACjBD,EAAS,IAAKE,GAAS,CACrB,IAAMjD,EAAIiD,EAAK,SAAS,KAAMC,GAAMA,EAAE,QAAU,aAAa,EACvDC,EAAIF,EAAK,SAAS,KAAMC,GAAMA,EAAE,QAAU,YAAY,EAC5D,MAAO,GAAG,OAAOlD,GAAG,OAAS,EAAE,EAAE,YAAY,CAAC,IAAI,OAAOmD,GAAG,OAAS,EAAE,EAAE,YAAY,CAAC,EACxF,CAAC,CACH,EAOMC,EAAiB3D,EAAA,CAACiC,EAAO2B,EAAKC,IAAU,CAC5C,IAAMC,EAAM,GAAG,OAAO7B,EAAM,MAAM,QAAU,EAAE,EAAE,YAAY,CAAC,IAAI,OAAOA,EAAM,MAAM,OAAS,EAAE,EAAE,YAAY,CAAC,GACxG8B,EAAQR,EAAO,IAAIO,CAAG,EAC5B,OAAOxB;AAAA;AAAA,6BAEgBuB,EAAQ,IAAM,EAAI,iBAAmB,EAAE;AAAA,yCAC3BD,CAAG;AAAA,uBACrB,IAAM,KAAK,UAAU3B,CAAK,CAAC;AAAA;AAAA;AAAA;AAAA,+BAInB8B,EAAQ,kBAAoB,EAAE;AAAA,wBACfC,GAAM,CAAEA,EAAE,gBAAgB,EAAG,KAAK,gBAAgB/B,CAAK,CAAG,CAAC;AAAA,uBAClF8B,EAAQ,yBAA2B,mBAAmB;AAAA;AAAA,6BAEhDA,EAAQ,gBAAkB,eAAe;AAAA;AAAA;AAAA;AAAA,wCAI9B9B,EAAM,MAAM,KAAK;AAAA;AAAA;AAAA,oBAGrCA,EAAM,MAAM,MAAM;AAAA;AAAA;AAAA,oBAGlBA,EAAM,MAAM,KAAK;AAAA;AAAA;AAAA,OAIjC,EA7BuB,kBA+BvB,OAAOK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAeY,KAAK,aAAa;AAAA,sBACnBK,CAAU;AAAA;AAAA;AAAA;AAAA;AAAA,YAKpBA,EAAaL;AAAA,uDAC8B,KAAK,WAAW;AAAA;AAAA;AAAA,YAGzD,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,cAKFzC,GAAiB,IAAI,CAAC,CAAE,MAAAuC,EAAO,MAAA6B,EAAO,KAAAC,EAAM,OAAQC,EAAW,cAAeC,CAAiB,IAAM,CAErG,IAAMC,EAAmBzB,EAAO,CAAC,GAAK,aAChC0B,EAAgBlC,IAAU,cAC5B,eAAeiC,CAAgB,GAC/BjC,EACEmC,EAAWnC,IAAU,cACvBM,GAAS,WAAW,cAAc,EAClCA,IAAYN,EAChB,OAAOE;AAAA;AAAA,2BAEMiC,EAAW,wBAA0B,EAAE;AAAA,4BACtC,IAAM,CACd,IAAMjD,EAAQ,KAAK,OAAO,MACtBiD,EACF,KAAK,WAAW,MAAS,GAEzB,KAAK,WAAWD,CAAa,EACzBH,GAAa7C,IACfA,EAAM,UAAU6C,CAAS,EACzB7C,EAAM,iBAAiB8C,CAAgB,IAGR,KAAK,KAAK,EAAE,cAAc,eAAe,GAAI,YAAY,CAC9F,CAAC;AAAA;AAAA,oBAECG,EAAWjC,gCAAqC,EAAE;AAAA,oBAClD2B,CAAK;AAAA;AAAA,eAGb,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA,oBAIMxB,GAAY,YAAY;AAAA;AAAA;AAAA,8BAGd,IAAM,CAAE,KAAK,oBAAoB,MAAS,EAAsC,KAAK,KAAK,EAAE,cAAc,gBAAgB,GAAI,YAAY,CAAG,CAAC;AAAA;AAAA;AAAA,cAG9J,KAAK,kBAAkB,EAAE,IAAK+B,GAC9BA,EAAM,UAAU,IAAK9D,GACnB4B;AAAA,oCACoB,IAAM,CAAE,KAAK,oBAAoB5B,EAAE,IAAI,EAAsC,KAAK,KAAK,EAAE,cAAc,gBAAgB,GAAI,YAAY,CAAG,CAAC;AAAA,sBACzJA,EAAE,IAAI;AAAA;AAAA,iBAGd,CACF,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAQgBoC,IAAiB,QAAU,cAAgB,EAAE;AAAA,oBACtD,IAAM,KAAK,aAAa,OAAO,CAAC;AAAA,uBAC7BE,EAAS,OAAO,CAAC;AAAA;AAAA;AAAA,YAG5BF,IAAiB,QACfR,sBAAyBO,IAAkB,OAAS,gBAAkB,aAAa,SACnF,EAAE;AAAA;AAAA;AAAA,8BAGcC,IAAiB,SAAW,cAAgB,EAAE;AAAA,oBACxD,IAAM,KAAK,aAAa,QAAQ,CAAC;AAAA,uBAC9BE,EAAS,QAAQ,CAAC;AAAA;AAAA;AAAA,YAG7BF,IAAiB,SACfR,sBAAyBO,IAAkB,OAAS,gBAAkB,aAAa,SACnF,EAAE;AAAA;AAAA;AAAA,6BAGaC,IAAiB,QAAU,cAAgB,EAAE;AAAA,oBACtD,IAAM,KAAK,aAAa,OAAO,CAAC;AAAA,uBAC7BE,EAAS,OAAO,CAAC;AAAA;AAAA;AAAA,YAG5BF,IAAiB,QACfR,sBAAyBO,IAAkB,OAAS,gBAAkB,aAAa,SACnF,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,qDAKqCQ,CAAS;AAAA,YAClDd,EACED,0CACAc,EAAa,IAAKqB,GAAU,CAC1B,IAAMjB,EAAOP,EACT,KAAKpC,GAAW4D,EAAM,KAAK,EAC3B,CAAE,KAA8B,QAAU,MAAOjC,EAAOiC,EAAM,KAAK,CAAE,EAEzE,OAAOjB,GAAM,OAAS,QAClBlB;AAAA;AAAA;AAAA,qDAGiCmC,EAAM,KAAK;AAAA;AAAA;AAAA,8BAGlCjB,EAAK,KAAK;AAAA;AAAA,oBAGpBA,GAAM,OAAS,QACfG,EAAeH,EAAK,MAAOiB,EAAM,MAAOA,EAAM,KAAK,EACnD,EACN,CAAC,CACL;AAAA;AAAA;AAAA,KAIR,CACF,EAEOC,GAAQ5E,EAUf,SAASoD,GAAcD,EAAQ,CAE7B,IAAM7C,EAAQ,CAAC,EACf,QAAWoE,KAASvB,EAAQ,CAC1B7C,EAAM,KAAK,CAAE,KAAM,QAAS,MAAOoE,EAAM,KAAM,CAAC,EAChD,QAAWvC,KAASuC,EAAM,OACxBpE,EAAM,KAAK,CAAE,KAAM,QAAS,MAAA6B,CAAM,CAAC,CAEvC,CACA,OAAO7B,CACT,CAVSJ,EAAAkD,GAAA,iBAgBF,IAAMyB,GAAQ7E,EACR8E,GAAO,aAEpBC,EAAcD,GAAMD,EAAK","names":["memo","getDeps","fn","opts","deps","result","isInitial","memoizedFunction","_a","_b","_c","depTime","newDeps","dep","index","resultTime","depEndTime","resultEndTime","resultFpsPercentage","pad","__name","str","num","notUndefined","value","msg","approxEqual","a","b","debounce","targetWindow","ms","timeoutId","args","getRect","__name","element","offsetWidth","offsetHeight","defaultKeyExtractor","index","defaultRangeExtractor","range","start","end","arr","i","observeElementRect","instance","cb","targetWindow","handler","rect","width","height","observer","entries","run","entry","box","addEventListenerOptions","supportsScrollend","observeElementOffset","__name","instance","cb","element","targetWindow","offset","fallback","debounce","createHandler","isScrolling","horizontal","isRtl","handler","endHandler","addEventListenerOptions","registerScrollendEvent","measureElement","__name","element","entry","instance","box","elementScroll","__name","offset","adjustments","behavior","instance","toOffset","_b","_a","Virtualizer","opts","_c","_ro","get","entries","entry","run","node","index","target","key","value","defaultKeyExtractor","defaultRangeExtractor","measureElement","sync","memo","isScrolling","d","scrollElement","cached","rect","measurements","furthestMeasurementsFound","furthestMeasurements","m","measurement","previousFurthestMeasurement","a","b","count","paddingStart","scrollMargin","getItemKey","enabled","lanes","itemSizeCache","item","min","laneLastIndex","i","cachedLane","lane","start","prevIndex","prevInLane","furthestMeasurement","measuredSize","size","end","outerSize","scrollOffset","calculateRange","startIndex","endIndex","range","rangeExtractor","overscan","attributeName","indexStr","scrollIndex","bufferSize","minIndex","maxIndex","prevNode","itemSize","delta","indexes","virtualItems","k","len","notUndefined","findNearestBinarySearch","doc","align","maxOffset","now","initialAlign","offsetInfo","endByLane","val","targetOffset","STABLE_FRAMES","targetChanged","approxEqual","low","high","getCurrentValue","middle","currentValue","lastIndex","getOffset","endPerLane","pos","startPerLane","TRACK_ROW_HEIGHT","GROUP_HEADER_HEIGHT","OVERSCAN","COLUMN_SORT","DEFAULT_SORT","GROUP_BY_OPTIONS","Browser","DiffuseElement","__name","signal","computed","col","items","all","gather","a","b","ordered","p","unordered","g","#flatItems","#lastTracks","#lastGroups","#virtualizer","#virtualizerCleanup","output","query","provider","queue","scope","favourites","whenElementsDefined","_results","untracked","panel","Virtualizer","i","observeElementRect","observeElementOffset","elementScroll","track","term","input","value","column","html","isLoading","tracks","playlist","groupBy","searchTerm","sortBy","sortDirection","sortedColumn","v","ariaSort","groups","buildFlatList","count","virtualItems","totalSize","favItems","favSet","item","c","t","renderTrackRow","top","index","key","isFav","e","label","icon","optSortBy","optSortDirection","primarySortField","resolvedValue","isActive","group","vItem","element_default","CLASS","NAME","defineElement"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/themes/blur/browser/element.js.map"}
+50
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/browser/facet/index.html
··· 1 + <style> 2 + @import "./vendor/@phosphor-icons/web/bold/style.css"; 3 + @import "./vendor/@phosphor-icons/web/fill/style.css"; 4 + @import "./styles/base.css"; 5 + @import "./styles/diffuse/facet.css"; 6 + @import "./themes/blur/variables.css"; 7 + @import "./themes/blur/font-faces.css"; 8 + 9 + db-browser { 10 + font-family: "Source Sans 3", ui-sans-serif, system-ui, sans-serif; 11 + font-feature-settings: normal; 12 + font-optical-sizing: auto; 13 + height: 100vh; 14 + } 15 + </style> 16 + 17 + <script type="module"> 18 + import foundation from "~/common/foundation.js"; 19 + import BrowserElement from "~/themes/blur/browser/element.js"; 20 + 21 + // Set doc title 22 + foundation.setup({ title: "Browser | Blur | Diffuse" }); 23 + 24 + const [out, que, scp, trc, fav] = await Promise.all([ 25 + foundation.orchestrator.output(), 26 + foundation.engine.queue(), 27 + foundation.engine.scope(), 28 + foundation.orchestrator.scopedTracks(), 29 + foundation.orchestrator.favourites(), 30 + ]); 31 + 32 + // Default to grouping by date added 33 + // TODO: Remove 34 + if (!scp.groupBy()) scp.setGroupBy("createdAt"); 35 + 36 + const el = new BrowserElement(); 37 + el.setAttribute("output-selector", out.selector); 38 + el.setAttribute("queue-engine-selector", que.selector); 39 + el.setAttribute("scope-engine-selector", scp.selector); 40 + el.setAttribute("tracks-selector", trc.selector); 41 + el.setAttribute("favourites-orchestrator-selector", fav.selector); 42 + 43 + (document.querySelector("#container") ?? document.body).append(el); 44 + 45 + //////////////////////////////////////////// 46 + // 🚀 47 + //////////////////////////////////////////// 48 + 49 + foundation.ready(); 50 + </script>
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/browser/facet/index.html.br

This is a binary file and will not be displayed.

+2
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/facet/index.css
··· 1 + :root{--facet-bg-color:var(--color-2)}@media (prefers-color-scheme:dark){:root{--facet-bg-color:var(--color-3)}}body{background-color:oklch(from var(--facet-bg-color) calc(l - .025) c h);color:var(--text-color);display:flex;flex-direction:column;height:100dvh;overflow:hidden;transition-duration:.75s;transition-property:background-color}main{display:flex;flex-direction:column;gap:var(--space-xs);height:100dvh;margin:0 auto;max-width:var(--container-9xl);overflow:hidden;padding:var(--space-xs);@media (min-width:35rem){display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:1fr}@media (min-width:63rem){gap:var(--space-sm);padding:var(--space-md)}@media (min-width:84rem){gap:var(--space-lg);padding:var(--space-xl)}}db-artwork-controller,db-browser{border-radius:var(--radius-md);box-shadow:var(--box-shadow-md);justify-self:end;overflow:hidden;width:100%}db-artwork-controller{grid-column:3;grid-row:1;min-height:50vh}db-browser{grid-column:1/span 2;grid-row:1/span 2}#shortcuts{display:flex;font-size:var(--fs-sm);gap:var(--space-2xs);a,button{align-items:center;background-color:transparent;border:2px dotted oklch(from var(--text-color) l c h/.1);border-radius:var(--radius-md);color:oklch(from var(--text-color) l c h/.6);cursor:pointer;display:flex;flex:1;gap:var(--space-3xs);justify-content:center;line-height:.75;overflow:hidden;padding:var(--space-xs) var(--space-3xs);text-box:trim-both cap alphabetic;text-decoration:none;text-overflow:ellipsis;transition-duration:.25s;transition-property:border-color,color;white-space:nowrap;&:focus,&:hover{border-color:oklch(from var(--text-color) l c h/.3);color:oklch(from var(--text-color) l c h/1)}}@media (min-width:63rem){gap:var(--space-xs);a,button{padding:var(--space-sm) var(--space-3xs)}}} 2 + /*# sourceMappingURL=./index.css.map */
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/facet/index.css.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/facet/index.css.map
··· 1 + {"version":3,"sources":["/src/themes/blur/facet/index.css"],"names":[],"mappings":"AAAA,MACE,+BACF,CAEA,mCACE,MACE,+BACF,CACF,CAEA,KACE,qEAAuE,CACvE,uBAAwB,CACxB,YAAa,CACb,qBAAsB,CAEtB,aAAc,CADd,eAAgB,CAEhB,wBAA0B,CAC1B,oCACF,CAMA,KACE,YAAa,CACb,qBAAsB,CACtB,mBAAoB,CACpB,aAAc,CACd,aAAc,CACd,8BAA+B,CAC/B,eAAgB,CAChB,uBAAwB,CAExB,yBACE,YAAa,CACb,mCAAqC,CACrC,sBACF,CAEA,yBACE,mBAAoB,CACpB,uBACF,CAEA,yBACE,mBAAoB,CACpB,uBACF,CACF,CAMA,iCAEE,8BAA+B,CAC/B,+BAAgC,CAChC,gBAAiB,CACjB,eAAgB,CAChB,UACF,CAEA,sBACE,aAAc,CACd,UAAW,CACX,eACF,CAEA,WACE,oBAAuB,CACvB,iBACF,CAEA,WACE,YAAa,CACb,sBAAuB,CACvB,oBAAqB,CAErB,SAEE,kBAAmB,CACnB,4BAA6B,CAC7B,wDAA4D,CAC5D,8BAA+B,CAC/B,4CAAgD,CAChD,cAAe,CACf,YAAa,CACb,MAAO,CACP,oBAAqB,CAErB,sBAAuB,CADvB,eAAiB,CAEjB,eAAgB,CAChB,wCAAyC,CACzC,iCAAkC,CAClC,oBAAqB,CACrB,sBAAuB,CACvB,wBAA0B,CAC1B,sCAAwC,CACxC,kBAAmB,CAEnB,gBAEE,mDAAuD,CACvD,2CACF,CACF,CAEA,yBACE,mBAAoB,CAEpB,SAEE,wCACF,CACF,CACF","file":"/themes/blur/facet/index.css.map","sourcesContent":[":root {\n --facet-bg-color: var(--color-2);\n}\n\n@media (prefers-color-scheme: dark) {\n :root {\n --facet-bg-color: var(--color-3);\n }\n}\n\nbody {\n background-color: oklch(from var(--facet-bg-color) calc(l - 0.025) c h);\n color: var(--text-color);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: 100dvh;\n transition-duration: 750ms;\n transition-property: background-color;\n}\n\n/***********************************\n * Main\n ***********************************/\n\nmain {\n display: flex;\n flex-direction: column;\n gap: var(--space-xs);\n height: 100dvh;\n margin: 0 auto;\n max-width: var(--container-9xl);\n overflow: hidden;\n padding: var(--space-xs);\n\n @media (min-width: 35rem) {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n grid-template-rows: 1fr;\n }\n\n @media (min-width: 63rem) {\n gap: var(--space-sm);\n padding: var(--space-md);\n }\n\n @media (min-width: 84rem) {\n gap: var(--space-lg);\n padding: var(--space-xl);\n }\n}\n\n/***********************************\n * Elements\n ***********************************/\n\ndb-artwork-controller,\ndb-browser {\n border-radius: var(--radius-md);\n box-shadow: var(--box-shadow-md);\n justify-self: end;\n overflow: hidden;\n width: 100%;\n}\n\ndb-artwork-controller {\n grid-column: 3;\n grid-row: 1;\n min-height: 50vh;\n}\n\ndb-browser {\n grid-column: 1 / span 2;\n grid-row: 1 / span 2;\n}\n\n#shortcuts {\n display: flex;\n font-size: var(--fs-sm);\n gap: var(--space-2xs);\n\n button,\n a {\n align-items: center;\n background-color: transparent;\n border: 2px dotted oklch(from var(--text-color) l c h / 0.1);\n border-radius: var(--radius-md);\n color: oklch(from var(--text-color) l c h / 0.6);\n cursor: pointer;\n display: flex;\n flex: 1;\n gap: var(--space-3xs);\n line-height: 0.75;\n justify-content: center;\n overflow: hidden;\n padding: var(--space-xs) var(--space-3xs);\n text-box: trim-both cap alphabetic;\n text-decoration: none;\n text-overflow: ellipsis;\n transition-duration: 250ms;\n transition-property: border-color, color;\n white-space: nowrap;\n\n &:focus,\n &:hover {\n border-color: oklch(from var(--text-color) l c h / 0.3);\n color: oklch(from var(--text-color) l c h / 1);\n }\n }\n\n @media (min-width: 63rem) {\n gap: var(--space-xs);\n\n button,\n a {\n padding: var(--space-sm) var(--space-3xs);\n }\n }\n}\n"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse"}
+112
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/facet/index.html
··· 1 + <link rel="stylesheet" href="styles/base.css" /> 2 + <link rel="stylesheet" href="themes/blur/font-faces.css" /> 3 + <link rel="stylesheet" href="themes/blur/variables.css" /> 4 + <link rel="stylesheet" href="themes/blur/facet/index.css" /> 5 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/bold/style.css" /> 6 + <link rel="stylesheet" href="vendor/@phosphor-icons/web/fill/style.css" /> 7 + 8 + <style> 9 + html { 10 + font-size: 16px; 11 + } 12 + 13 + main, 14 + db-artwork-controller, 15 + db-browser { 16 + font-family: "Source Sans 3", ui-sans-serif, system-ui, sans-serif; 17 + font-feature-settings: normal; 18 + font-optical-sizing: auto; 19 + } 20 + 21 + @media (orientation: landscape) and (width < 63rem) { 22 + db-artwork-controller { 23 + font-size: calc((var(--fs-sm) + var(--fs-xs)) / 2); 24 + } 25 + } 26 + </style> 27 + 28 + <main> 29 + <db-browser 30 + output-selector="#output" 31 + tracks-selector="do-scoped-tracks" 32 + queue-engine-selector="de-queue" 33 + scope-engine-selector="de-scope" 34 + favourites-orchestrator-selector="do-favourites" 35 + ></db-browser> 36 + 37 + <db-artwork-controller 38 + artwork-selector="do-artwork" 39 + controller-orchestrator-selector="do-controller" 40 + input-selector="#input" 41 + favourites-orchestrator-selector="do-favourites" 42 + repeat-shuffle-engine-selector="de-repeat-shuffle" 43 + ></db-artwork-controller> 44 + 45 + <div id="shortcuts"> 46 + <button id="btn-new-deck" title="Open a new deck"> 47 + <i class="ph-bold ph-circles-three-plus"></i> 48 + </button> 49 + <a 50 + href="l/?path=facets%2Fdata%2Fsources%2Findex.html" 51 + target="_blank" 52 + title="Sources (Audio Input)" 53 + > 54 + <i class="ph-bold ph-eject"></i> 55 + </a> 56 + </div> 57 + </main> 58 + 59 + <script type="module"> 60 + import foundation from "~/common/foundation.js"; 61 + 62 + // Set doc title 63 + foundation.setup({ title: "Blur | Diffuse" }); 64 + 65 + //////////////////////////////////////////// 66 + // 🚀 67 + //////////////////////////////////////////// 68 + 69 + await foundation.engine.queue(); 70 + await foundation.engine.repeatShuffle(); 71 + await foundation.engine.scope(); 72 + await foundation.orchestrator.scopedTracks(); 73 + 74 + await foundation.orchestrator.sources(); 75 + await foundation.orchestrator.processTracks({ disableWhenReady: true }); 76 + await foundation.orchestrator.queueAudio(); 77 + await foundation.orchestrator.controller(); 78 + await foundation.orchestrator.artwork(); 79 + await foundation.orchestrator.favourites(); 80 + 81 + await import("~/themes/blur/artwork-controller/element.js"); 82 + await import("~/themes/blur/browser/element.js"); 83 + 84 + const group = foundation.GROUP === "facets" ? "Deck A" : foundation.GROUP; 85 + document.querySelector("db-artwork-controller")?.setAttribute("group", group); 86 + document.querySelector("db-browser")?.setAttribute("group", group); 87 + 88 + //////////////////////////////////////////// 89 + // SHORTCUTS 90 + //////////////////////////////////////////// 91 + 92 + document.querySelector("#btn-new-deck")?.addEventListener("click", async () => { 93 + const state = await navigator.locks.query(); 94 + const held = (state.held ?? []).flatMap((l) => l.name ? [l.name] : []); 95 + 96 + let nextGroup; 97 + 98 + if (!held.some((n) => n.includes("/Deck B"))) { 99 + nextGroup = "Deck B"; 100 + } else if (!held.some((n) => n.includes("/Deck C"))) { 101 + nextGroup = "Deck C"; 102 + } else { 103 + return; 104 + } 105 + 106 + const url = new URL(document.location.href); 107 + url.searchParams.set("group", nextGroup); 108 + window.open(url.toString(), "_blank"); 109 + }); 110 + 111 + foundation.ready(); 112 + </script>
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/facet/index.html.br

This is a binary file and will not be displayed.

+2
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/font-faces.css
··· 1 + @font-face{font-display:swap;font-family:Source Sans\ 3;font-style:normal;font-weight:100 900;src:url(../../fonts/SourceSans3VF-Upright.otf.woff2) format("woff2")}@font-face{font-display:swap;font-family:Source Sans\ 3;font-style:italic;font-weight:100 900;src:url(../../fonts/SourceSans3VF-Italic.otf.woff2) format("woff2")} 2 + /*# sourceMappingURL=./font-faces.css.map */
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/font-faces.css.br

This is a binary file and will not be displayed.

+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/font-faces.css.map
··· 1 + {"version":3,"sources":["/src/themes/blur/font-faces.css"],"names":[],"mappings":"AAAA,WACE,iBAAkB,CAClB,0BAA4B,CAC5B,iBAAkB,CAClB,mBAAoB,CACpB,oEACF,CAEA,WACE,iBAAkB,CAClB,0BAA4B,CAC5B,iBAAkB,CAClB,mBAAoB,CACpB,mEACF","file":"/themes/blur/font-faces.css.map","sourcesContent":["@font-face {\n font-display: swap;\n font-family: \"Source Sans 3\";\n font-style: normal;\n font-weight: 100 900;\n src: url(\"../../fonts/SourceSans3VF-Upright.otf.woff2\") format(\"woff2\");\n}\n\n@font-face {\n font-display: swap;\n font-family: \"Source Sans 3\";\n font-style: italic;\n font-weight: 100 900;\n src: url(\"../../fonts/SourceSans3VF-Italic.otf.woff2\") format(\"woff2\");\n}\n"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse"}
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/variables.css
··· 1 + ../../../bafybeidcqjj5ooqx36uomtsgqcpuu5bjordymamrliah7o2bq7ghzvfxgm/themes/blur/variables.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/variables.css.br
··· 1 + ../../../bafybeidcqjj5ooqx36uomtsgqcpuu5bjordymamrliah7o2bq7ghzvfxgm/themes/blur/variables.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/blur/variables.css.map
··· 1 + ../../../bafybeidcqjj5ooqx36uomtsgqcpuu5bjordymamrliah7o2bq7ghzvfxgm/themes/blur/variables.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/98-extra.css
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/webamp/98-extra.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/98-extra.css.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/webamp/98-extra.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/98-extra.css.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/themes/winamp/98-extra.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/98-vars.css
··· 1 + ../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/themes/winamp/98-vars.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/98-vars.css.br
··· 1 + ../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/themes/winamp/98-vars.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/98-vars.css.map
··· 1 + ../../../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/themes/winamp/98-vars.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/browser/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/themes/winamp/browser/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/browser/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/themes/winamp/browser/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/browser/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/themes/winamp/browser/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/browser/facet/index.html
··· 1 + ../../../../../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/themes/winamp/browser/facet/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/browser/facet/index.html.br
··· 1 + ../../../../../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/themes/winamp/browser/facet/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/common/ui.js
··· 1 + ../../../../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/themes/winamp/common/ui.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/common/ui.js.br
··· 1 + ../../../../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/themes/winamp/common/ui.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/common/ui.js.map
··· 1 + ../../../../bafybeiem2migb3wwbtsj6sboc25e6rcr5ets3yc6mjqbg3tscwegno6z4m/themes/winamp/common/ui.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/facet.css
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/webamp/facet.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/facet.css.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/webamp/facet.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/facet.css.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/themes/winamp/facet.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/facet/index.html
··· 1 + ../../../../bafybeidcqjj5ooqx36uomtsgqcpuu5bjordymamrliah7o2bq7ghzvfxgm/themes/winamp/facet/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/facet/index.html.br
··· 1 + ../../../../bafybeidcqjj5ooqx36uomtsgqcpuu5bjordymamrliah7o2bq7ghzvfxgm/themes/winamp/facet/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/fonts.css
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/webamp/fonts.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/fonts.css.br
··· 1 + ../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/themes/webamp/fonts.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/fonts.css.map
··· 1 + ../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/themes/winamp/fonts.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/index.css
··· 1 + ../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/index.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/index.css.br
··· 1 + ../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/index.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/index.css.map
··· 1 + ../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/index.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/README/index.html
··· 1 + ../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/README/index.html
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/README/index.html.br
··· 1 + ../../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/README/index.html.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/base-skin.css
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/base-skin.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/base-skin.css.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/base-skin.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/base-skin.css.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/base-skin.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/context-menu.css
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/context-menu.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/context-menu.css.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/context-menu.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/context-menu.css.map
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/themes/winamp/vendor/context-menu.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/equalizer-window.css
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/equalizer-window.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/equalizer-window.css.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/equalizer-window.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/equalizer-window.css.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/equalizer-window.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/gen-window.css
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/gen-window.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/gen-window.css.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/gen-window.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/gen-window.css.map
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/themes/winamp/vendor/gen-window.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/main-window.css
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/main-window.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/main-window.css.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/main-window.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/main-window.css.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/main-window.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/milkdrop-window.css
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/milkdrop-window.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/milkdrop-window.css.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/milkdrop-window.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/milkdrop-window.css.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/milkdrop-window.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/mini-time.css
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/mini-time.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/mini-time.css.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/mini-time.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/mini-time.css.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/mini-time.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/playlist-window.css
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/playlist-window.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/playlist-window.css.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/playlist-window.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/playlist-window.css.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/playlist-window.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/webamp.css
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/webamp.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/webamp.css.br
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/themes/winamp/vendor/webamp.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/vendor/webamp.css.map
··· 1 + ../../../../bafybeifleabgwmpu2cyttu7ushxstm6zb7br5urpittmqgms4qheq235xy/themes/winamp/vendor/webamp.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/winamp/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/themes/winamp/winamp/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/winamp/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/themes/winamp/winamp/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/winamp/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/themes/winamp/winamp/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/window-manager/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/themes/winamp/window-manager/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/window-manager/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/themes/winamp/window-manager/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/window-manager/element.js.map
··· 1 + ../../../../bafybeia4n4jboyxluzi4g6phbfw6k4exmrjiz67bci4q2wmvojiukk6iee/themes/winamp/window-manager/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/window/element.js
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/themes/winamp/window/element.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/window/element.js.br
··· 1 + ../../../../bafybeicsacboa46ooyiverl2egk32lglkvltpuihbb56iuzsjwbud7lise/themes/winamp/window/element.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/themes/winamp/window/element.js.map
··· 1 + ../../../../bafybeieddsrdrlygd4bjpytuw2p72kptdlsv6gyex26aeur73cewo26ysy/themes/winamp/window/element.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/98.css
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/vendor/98.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/98.css.br
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/vendor/98.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/98.css.map
··· 1 + ../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/vendor/98.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@atcute/cbor/index.js
··· 1 + ../../../../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/vendor/@atcute/cbor/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@atcute/cbor/index.js.br
··· 1 + ../../../../bafybeiar2fcoy4v7vtnpmg2h3p565ilosquimxy2ptz7o65lr3ertmukcu/vendor/@atcute/cbor/index.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@atcute/cbor/index.js.map
··· 1 + ../../../../bafybeidvcsaix4dla67wln5uplbniedvilnusvnkpgyr27veafshqu5sti/vendor/@atcute/cbor/index.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@atcute/oauth-browser-client/index.js
··· 1 + ../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@atcute/oauth-browser-client/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@atcute/oauth-browser-client/index.js.br
··· 1 + ../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@atcute/oauth-browser-client/index.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@atcute/oauth-browser-client/index.js.map
··· 1 + ../../../../bafybeie3igncfbmkvbozuba67zamwvpfjnwmvltbld5r7tggko4cgyk2jm/vendor/@atcute/oauth-browser-client/index.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@atcute/tid/index.js
··· 1 + ../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@atcute/tid/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@atcute/tid/index.js.br
··· 1 + ../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@atcute/tid/index.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@atcute/tid/index.js.map
··· 1 + ../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/vendor/@atcute/tid/index.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.22GDIZST.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.22GDIZST.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.26QE47KB.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.26QE47KB.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.2BXLTQVW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.2BXLTQVW.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.2ESIQE6U.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.2ESIQE6U.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.2LXKNNNE.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.2LXKNNNE.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.2MOO23UE.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.2MOO23UE.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.2S44VCJ4.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.2S44VCJ4.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.2UDUPMFW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.2UDUPMFW.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.2V3SZRCM.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.2V3SZRCM.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.346V4PTX.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.346V4PTX.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.3MSWQ3RG.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.3MSWQ3RG.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.3NKIHICW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.3NKIHICW.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.3V4ARLUJ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.3V4ARLUJ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.3XPJKXEA.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.3XPJKXEA.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.4CQG5VMD.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.4CQG5VMD.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.4FARGCB5.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.4FARGCB5.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.4VXUYGRW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.4VXUYGRW.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.4ZAKP7NY.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.4ZAKP7NY.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.52WA2DJO.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.52WA2DJO.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.564LJHAJ.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.564LJHAJ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.5AVTITY5.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.5AVTITY5.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.5COO2B7M.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.5COO2B7M.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.5DQYMPDO.js
··· 1 + ../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/chunks/chunk.5DQYMPDO.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.5DXTNOIX.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.5DXTNOIX.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.5OV4QM6R.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.5OV4QM6R.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.5YVRGMJI.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.5YVRGMJI.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.6HCLC3WA.js
··· 1 + ../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/chunks/chunk.6HCLC3WA.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.6NKNSNEC.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.6NKNSNEC.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.6NYGANGC.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.6NYGANGC.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.6SNQOYNK.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.6SNQOYNK.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.6WFYAIVE.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.6WFYAIVE.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.6WLEY4CF.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.6WLEY4CF.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.6YASYNE2.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.6YASYNE2.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.6YXQA63Z.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.6YXQA63Z.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.77DF3KV2.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.77DF3KV2.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.7GZL6M3M.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.7GZL6M3M.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.7JM6M2OU.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.7JM6M2OU.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.7NK5JOYQ.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.7NK5JOYQ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.7OBLIRXR.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.7OBLIRXR.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.7OUGTAL4.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.7OUGTAL4.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.7Q54TKRI.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.7Q54TKRI.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.7WMEQYGQ.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.7WMEQYGQ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.7WWFNUSI.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.7WWFNUSI.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.A3R6L7UQ.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.A3R6L7UQ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.A4KPVHRW.js
··· 1 + ../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/chunks/chunk.A4KPVHRW.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.A6NNIHUA.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.A6NNIHUA.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.ABWB3QPK.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.ABWB3QPK.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.AG44H7MD.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.AG44H7MD.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.AH3FNK5L.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.AH3FNK5L.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.AIZDAWXZ.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.AIZDAWXZ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.AJDO4JA4.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.AJDO4JA4.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.AOFGESO3.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.AOFGESO3.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.ARYES5AV.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.ARYES5AV.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.AWDGFOXI.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.AWDGFOXI.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.AWT63VDF.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.AWT63VDF.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.B6ISAEK2.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.B6ISAEK2.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.BE5VT7MB.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.BE5VT7MB.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.BEORUVOT.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.BEORUVOT.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.BEUJM2FR.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.BEUJM2FR.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.BKE5EYM3.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.BKE5EYM3.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.BMO76VKZ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.BMO76VKZ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.BPZLEXWB.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.BPZLEXWB.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.BQNDCXAL.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.BQNDCXAL.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.BZCNQIXV.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.BZCNQIXV.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.C2MSEIJL.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.C2MSEIJL.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.CBDCP5PR.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.CBDCP5PR.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.CCGRUHHE.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.CCGRUHHE.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.CKOYBX7K.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.CKOYBX7K.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.CKQ4S4SW.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.CKQ4S4SW.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.CNH6RYYS.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.CNH6RYYS.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.CNYRG3XY.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.CNYRG3XY.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.CQJ4P7SI.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.CQJ4P7SI.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.CQPBX5YQ.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.CQPBX5YQ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.CWME5IHW.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.CWME5IHW.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.CWVOQ2RG.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.CWVOQ2RG.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.CWWDUWOQ.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.CWWDUWOQ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.D2ESGZCU.js
··· 1 + ../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/chunks/chunk.D2ESGZCU.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.D5YFE5NT.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KBS6YHTA.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.D6QBDCI6.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.D6QBDCI6.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.D77H7RWC.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.D77H7RWC.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.DAVLWZBC.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.DAVLWZBC.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.DNBJR3U4.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.DNBJR3U4.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.DOFHHKB4.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.DOFHHKB4.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.DP5YIFD7.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.DP5YIFD7.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.EEWGGADM.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.EEWGGADM.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.EF25YJJE.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.EF25YJJE.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.ENKIVG4B.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.ENKIVG4B.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.EQZFZGSD.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.EQZFZGSD.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.F25QOBDY.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.F25QOBDY.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.FDYDBGOC.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.FDYDBGOC.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.FKBI25LL.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.FKBI25LL.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.FKKESQC6.js
··· 1 + ../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/chunks/chunk.FKKESQC6.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.FYKN76UA.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.FYKN76UA.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.G3ZVQTTB.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.G3ZVQTTB.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.G4H2TF4U.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.G4H2TF4U.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.GEBLECV4.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.GEBLECV4.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.GNPK466U.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.GNPK466U.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.GRV2ULZ4.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.GRV2ULZ4.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.H23DVATU.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.H23DVATU.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.H2465YGT.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.H2465YGT.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.H7TA73OO.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.H7TA73OO.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.HCXBOJYW.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.HCXBOJYW.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.HGBRCPUS.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.HGBRCPUS.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.HGRYWFY2.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.HGRYWFY2.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.HKQX7MLZ.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.HKQX7MLZ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.HPOJN4W7.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.HPOJN4W7.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.HPULLNVR.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.HPULLNVR.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.HPWRPZJN.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.HPWRPZJN.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.HPYPW3AE.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.HPYPW3AE.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.HPYWYASS.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.HPYWYASS.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.HSCRELRG.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.HSCRELRG.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.I3XGXHPO.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.I3XGXHPO.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.I4KXAHPX.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.I4KXAHPX.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.ICPDUSEI.js
··· 1 + ../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/chunks/chunk.ICPDUSEI.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.IDV4GXTH.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.IDV4GXTH.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.IIHGIRPB.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.IIHGIRPB.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.IN5A745N.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.IN5A745N.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.IQWN4TII.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.IQWN4TII.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.IYHS4N4A.js
··· 1 + ../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/chunks/chunk.IYHS4N4A.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.IYXV6LE3.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.IYXV6LE3.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.J3VX45Y5.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.J3VX45Y5.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.JHZRD2LV.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.JHZRD2LV.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.JJGU446Z.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.JJGU446Z.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.JKX4XUKG.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.JKX4XUKG.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.JQO5DBIV.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.JQO5DBIV.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.JRPGUCID.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.JRPGUCID.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.JTOY5KP3.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.JTOY5KP3.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.K4C5PQDP.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.K4C5PQDP.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.K5XZXLA4.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.K5XZXLA4.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.KBS6YHTA.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KBS6YHTA.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.KESSODMC.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KESSODMC.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.KGWQUM43.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.KGWQUM43.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.KIHB3VMB.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.KIHB3VMB.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.KPN3YZ6U.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KPN3YZ6U.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.KPY3CJ6V.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KPY3CJ6V.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.KTSZTCBE.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.KTSZTCBE.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.KWDPKKFO.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KWDPKKFO.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.KZZR6Z6I.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KZZR6Z6I.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.L573APKH.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.L573APKH.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.L6CIKOFQ.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.L6CIKOFQ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.LBGKEIS7.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.LBGKEIS7.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.LCFSCRUJ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.LCFSCRUJ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.LH72HXK6.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.LH72HXK6.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.LJ5QDUCY.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.LJ5QDUCY.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.LN7M2NWC.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.LN7M2NWC.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.LRYJ2M5H.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.LRYJ2M5H.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.LY4FQ3ZV.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.LY4FQ3ZV.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.MAFCUMJD.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.MAFCUMJD.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.MAHGF7JK.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MAHGF7JK.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.MEULE5ET.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.MEULE5ET.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.MEYJNQF4.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MEYJNQF4.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.MN256RSG.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MN256RSG.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.MNUDSWCQ.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.MNUDSWCQ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.MQLU5KE6.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MQLU5KE6.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.MQODJ75V.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MQODJ75V.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.MU3RMA4Y.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.MU3RMA4Y.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.MXHGJIUP.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MXHGJIUP.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.N2TXQSKF.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KBS6YHTA.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.N56ABYYO.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.N56ABYYO.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.NEG6ZBF5.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.NEG6ZBF5.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.NOITEVBZ.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.NOITEVBZ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.NY2PQ35L.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.NY2PQ35L.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.O2ZI7H76.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.O2ZI7H76.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.O6IZ4I7T.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.O6IZ4I7T.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.O6YZRY24.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.O6YZRY24.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.OR2Z2YVD.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.OR2Z2YVD.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.OWZDFOUS.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.OWZDFOUS.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.P7AOIZJ4.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.P7AOIZJ4.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.PM5JFREE.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.PM5JFREE.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.PTIYPIAV.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.PTIYPIAV.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.PVHZKPEP.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.PVHZKPEP.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.PWJU7FNZ.js
··· 1 + ../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/chunks/chunk.PWJU7FNZ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.PX3HMKF7.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.PX3HMKF7.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.PYOML3LA.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.PYOML3LA.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.PZAN6FPN.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.PZAN6FPN.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.Q4MSABZB.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.Q4MSABZB.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.Q6XMGFWJ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.Q6XMGFWJ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.QABO5RGQ.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.QABO5RGQ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.QE6ZFROZ.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.QE6ZFROZ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.QEVO6VRC.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.QEVO6VRC.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.QRWQT2VJ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.QRWQT2VJ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.QVGFPIBF.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.QVGFPIBF.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.R3IVSP5N.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.R3IVSP5N.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.R4DI7TYR.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.R4DI7TYR.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.R7QX4M6R.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.R7QX4M6R.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.RF7KCC7B.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.RF7KCC7B.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.RMZ7BVDM.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.RMZ7BVDM.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.RSUSAXIB.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.RSUSAXIB.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.RTFTF4YY.js
··· 1 + ../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/chunks/chunk.RTFTF4YY.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.S6RZOJNM.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.S6RZOJNM.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.S7Z4ACD7.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.S7Z4ACD7.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.SBPG6HJS.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.SBPG6HJS.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.SDDRXMOC.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.SDDRXMOC.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.SJ66RGM3.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.SJ66RGM3.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.SKLR37OM.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.SKLR37OM.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.SUZGY3IK.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.SUZGY3IK.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.SY6FPYGW.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.SY6FPYGW.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.T3OVPJUT.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.T3OVPJUT.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.TKLADXWA.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.TKLADXWA.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.TZ4DHKTK.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.TZ4DHKTK.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.U36KZLSQ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.U36KZLSQ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.UAI2IRMW.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.UAI2IRMW.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.UCSQZ74E.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.UCSQZ74E.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.UF4WDITO.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.UF4WDITO.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.UGUGWXGF.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.UGUGWXGF.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.UQMJINZU.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.UQMJINZU.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.UQT7EQ5A.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.UQT7EQ5A.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.UV6ZR4VK.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.UV6ZR4VK.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.UVLZVEH2.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.UVLZVEH2.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.UYB2BRKW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.UYB2BRKW.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.VAPVXDMF.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.VAPVXDMF.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.VC3BPUZJ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.VC3BPUZJ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.VLBSOQPL.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.VLBSOQPL.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.VNSN2ILM.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.VNSN2ILM.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.VQZ46MYI.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.VQZ46MYI.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.VVYVBQI6.js
··· 1 + ../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/chunks/chunk.VVYVBQI6.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.VYJK6KHT.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.VYJK6KHT.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.WAPTDIMR.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.WAPTDIMR.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.WCW2R3HB.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.WCW2R3HB.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.WDIIGUNP.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.WDIIGUNP.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.WF4CN2K5.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.WF4CN2K5.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.WGFDW2LC.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.WGFDW2LC.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.WKPBV2Q3.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.WKPBV2Q3.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.WKX3BKNK.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.WKX3BKNK.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.WL44YHTM.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.WL44YHTM.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.WXXUBUUK.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.WXXUBUUK.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.WYNTFJHW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.WYNTFJHW.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.X55YNZ3B.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.X55YNZ3B.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.XB4F2PV6.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.XB4F2PV6.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.XJOHOSCS.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.XJOHOSCS.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.XMNYABWY.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.XMNYABWY.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.XUYARZ4P.js
··· 1 + ../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/chunks/chunk.XUYARZ4P.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.XW6BKGGI.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.XW6BKGGI.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.XW6K5DFW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.XW6K5DFW.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.XZPLJ4VW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.XZPLJ4VW.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.Y2DUNANZ.js
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/chunks/chunk.Y2DUNANZ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.Y2L6BJPS.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.Y2L6BJPS.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.Y4J6QIYJ.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.Y4J6QIYJ.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.Y4KJ3CGW.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.Y4KJ3CGW.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.YBFCQDTA.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.YBFCQDTA.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.YDQCS2HK.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.YDQCS2HK.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.YKBP25RU.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.YKBP25RU.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.YRQJ7CY4.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.YRQJ7CY4.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.YRW2OFXY.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.YRW2OFXY.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.YTFJFTCS.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.YTFJFTCS.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.YVNDTHHL.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.YVNDTHHL.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.YY6Y7UJD.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.YY6Y7UJD.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.Z73FKN6X.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.Z73FKN6X.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.ZDQGX6GG.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.ZDQGX6GG.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.ZJAKOEXX.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.ZJAKOEXX.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.ZJRB7VPY.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/chunk.ZJRB7VPY.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.ZSEFTQAO.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.ZSEFTQAO.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.ZT4OZS6F.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.ZT4OZS6F.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/chunk.ZWQCGLB5.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.ZWQCGLB5.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/chunks/qr-creator.es6.min.6HXLA5WI.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/chunks/qr-creator.es6.min.6HXLA5WI.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/animated-image/animated-image.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/animated-image/animated-image.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/animated-image/animated-image.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/animated-image/animated-image.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/animation/animation.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/animation/animation.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/animation/animation.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/animation/animation.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/animation/animation.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/animation/animation.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/animation/animations.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/animation/animations.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/animation/animations.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/animation/animations.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/avatar/avatar.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/avatar/avatar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/avatar/avatar.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/avatar/avatar.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/avatar/avatar.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/avatar/avatar.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/badge/badge.d.ts
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/badge/badge.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/badge/badge.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/badge/badge.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/badge/badge.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/badge/badge.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/button-group/button-group.d.ts
··· 1 + ../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/components/button-group/button-group.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/button-group/button-group.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/button-group/button-group.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/button-group/button-group.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/button-group/button-group.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/button/button.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/button/button.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/button/button.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/button/button.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/button/button.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/button/button.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/callout/callout.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/callout/callout.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/callout/callout.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/callout/callout.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/callout/callout.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/callout/callout.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/card/card.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/card/card.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/card/card.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/card/card.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/card/card.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/card/card.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/carousel/autoplay-controller.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/carousel/autoplay-controller.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/carousel/autoplay-controller.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/carousel/autoplay-controller.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/carousel/carousel.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/carousel/carousel.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/carousel/carousel.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/carousel/carousel.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/carousel/carousel.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/carousel/carousel.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/carousel/scroll-controller.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/carousel/scroll-controller.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/carousel/scroll-controller.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/carousel/scroll-controller.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/checkbox/checkbox.d.ts
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/checkbox/checkbox.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/checkbox/checkbox.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/checkbox/checkbox.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/checkbox/checkbox.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/checkbox/checkbox.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/color-picker/color-picker.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/color-picker/color-picker.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/color-picker/color-picker.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/color-picker/color-picker.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/color-picker/color-picker.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/color-picker/color-picker.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/comparison/comparison.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/comparison/comparison.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/comparison/comparison.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/comparison/comparison.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/comparison/comparison.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/comparison/comparison.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/copy-button/copy-button.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/copy-button/copy-button.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/copy-button/copy-button.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/copy-button/copy-button.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/copy-button/copy-button.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/copy-button/copy-button.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/details/details.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/details/details.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/details/details.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/details/details.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/details/details.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/details/details.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/dialog/dialog.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/dialog/dialog.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/dialog/dialog.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/dialog/dialog.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/dialog/dialog.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/dialog/dialog.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/divider/divider.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/divider/divider.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/divider/divider.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/divider/divider.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/divider/divider.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/divider/divider.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/drawer/drawer.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/drawer/drawer.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/drawer/drawer.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/drawer/drawer.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/drawer/drawer.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/drawer/drawer.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/dropdown/dropdown.d.ts
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/dropdown/dropdown.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/dropdown/dropdown.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/dropdown/dropdown.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/dropdown/dropdown.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/dropdown/dropdown.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/format-bytes/format-bytes.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/format-bytes/format-bytes.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/format-date/format-date.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/format-date/format-date.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/format-number/format-number.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/format-number/format-number.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/icon/icon.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/icon/icon.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/icon/icon.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/icon/icon.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/icon/icon.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/icon/icon.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/icon/library.d.ts
··· 1 + ../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/components/icon/library.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/icon/library.default.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/icon/library.default.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/icon/library.default.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/icon/library.default.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/icon/library.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/icon/library.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/icon/library.system.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/icon/library.system.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/icon/library.system.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/icon/library.system.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/include/include.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/include/include.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/include/include.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/include/include.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/include/include.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/include/include.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/include/request.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/include/request.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/include/request.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/include/request.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/input/input.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/input/input.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/input/input.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/input/input.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/input/input.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/input/input.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/markdown/markdown.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/markdown/markdown.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/markdown/markdown.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/markdown/markdown.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/markdown/markdown.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/markdown/markdown.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/markdown/markdown.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/number-input/number-input.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/number-input/number-input.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/number-input/number-input.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/number-input/number-input.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/number-input/number-input.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/number-input/number-input.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/option/option.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/option/option.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/option/option.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/option/option.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/option/option.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/option/option.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/page/page.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/page/page.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/page/page.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/page/page.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/page/page.mobile.styles.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/page/page.mobile.styles.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/page/page.mobile.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/page/page.mobile.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/page/page.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/page/page.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/page/page.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/popover/popover.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/popover/popover.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/popover/popover.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/popover/popover.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/popover/popover.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/popover/popover.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/popup/popup.d.ts
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/components/popup/popup.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/popup/popup.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/popup/popup.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/popup/popup.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/popup/popup.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/qr-code/qr-code.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/qr-code/qr-code.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/qr-code/qr-code.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/qr-code/qr-code.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/radio-group/radio-group.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/radio-group/radio-group.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/radio-group/radio-group.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/radio-group/radio-group.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/radio-group/radio-group.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/radio-group/radio-group.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/radio/radio.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/radio/radio.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/radio/radio.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/radio/radio.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/radio/radio.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/radio/radio.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/rating/rating.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/rating/rating.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/rating/rating.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/rating/rating.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/rating/rating.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/rating/rating.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/relative-time/relative-time.d.ts
··· 1 + ../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/components/relative-time/relative-time.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/relative-time/relative-time.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/relative-time/relative-time.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/scroller/scroller.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/scroller/scroller.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/scroller/scroller.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/scroller/scroller.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/scroller/scroller.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/scroller/scroller.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/select/select.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/select/select.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/select/select.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/select/select.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/select/select.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/select/select.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/skeleton/skeleton.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/skeleton/skeleton.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/skeleton/skeleton.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/skeleton/skeleton.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/skeleton/skeleton.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/skeleton/skeleton.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/slider/slider.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/slider/slider.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/slider/slider.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/slider/slider.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/slider/slider.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/slider/slider.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/spinner/spinner.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/spinner/spinner.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/spinner/spinner.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/spinner/spinner.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/spinner/spinner.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/spinner/spinner.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/split-panel/split-panel.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/split-panel/split-panel.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/split-panel/split-panel.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/split-panel/split-panel.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/switch/switch.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/switch/switch.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/switch/switch.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/switch/switch.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/switch/switch.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/switch/switch.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/tab-group/tab-group.d.ts
··· 1 + ../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/components/tab-group/tab-group.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/tab-group/tab-group.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/tab-group/tab-group.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/tab-group/tab-group.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/tab-group/tab-group.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/tab/tab.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tab/tab.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/tab/tab.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/tab/tab.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/tab/tab.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/tab/tab.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/tag/tag.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tag/tag.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/tag/tag.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/tag/tag.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/tag/tag.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/tag/tag.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/textarea/textarea.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/textarea/textarea.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/textarea/textarea.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/textarea/textarea.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/textarea/textarea.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/textarea/textarea.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/tooltip/tooltip.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tooltip/tooltip.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/tooltip/tooltip.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/tooltip/tooltip.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/tooltip/tooltip.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/tooltip/tooltip.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/tree-item/tree-item.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/tree-item/tree-item.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/tree-item/tree-item.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/tree-item/tree-item.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/tree-item/tree-item.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/tree-item/tree-item.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/tree/tree.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tree/tree.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/tree/tree.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/tree/tree.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/tree/tree.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/tree/tree.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.styles.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.styles.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/custom-elements-jsx.d.ts
··· 1 + ../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/custom-elements-jsx.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/custom-elements.json
··· 1 + ../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/custom-elements.json
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/after-collapse.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/after-collapse.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/after-collapse.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/after-collapse.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/after-expand.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/after-expand.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/after-expand.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/after-expand.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/after-hide.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/after-hide.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/after-hide.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/after-hide.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/after-show.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/after-show.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/after-show.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/after-show.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/cancel.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/cancel.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/cancel.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/cancel.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/clear.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/clear.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/clear.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/clear.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/collapse.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/collapse.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/collapse.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/collapse.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/copy.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/copy.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/copy.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/copy.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/create.d.ts
··· 1 + ../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/events/create.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/create.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/create.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/error.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/error.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/error.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/error.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/events.d.ts
··· 1 + ../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/events/events.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/events.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/events.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/expand.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/expand.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/expand.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/expand.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/finish.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/finish.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/finish.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/finish.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/hide.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/hide.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/hide.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/hide.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/hover.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/hover.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/hover.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/hover.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/include-error.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/include-error.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/include-error.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/include-error.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/intersect.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/intersect.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/intersect.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/intersect.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/invalid.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/invalid.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/invalid.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/invalid.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/lazy-change.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/lazy-change.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/lazy-change.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/lazy-change.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/lazy-load.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/lazy-load.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/lazy-load.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/lazy-load.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/load.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/load.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/load.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/load.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/mutation.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/mutation.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/mutation.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/mutation.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/remove.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/remove.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/remove.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/remove.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/reposition.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/reposition.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/reposition.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/reposition.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/resize.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/resize.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/resize.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/resize.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/select.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/select.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/select.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/select.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/selection-change.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/selection-change.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/selection-change.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/selection-change.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/show.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/show.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/show.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/show.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/slide-change.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/slide-change.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/slide-change.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/slide-change.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/start.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/start.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/start.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/start.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/tab-hide.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/tab-hide.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/tab-hide.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/tab-hide.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/tab-show.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/tab-show.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/tab-show.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/tab-show.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/video-change.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/video-change.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/events/video-change.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/events/video-change.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/active-elements.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/active-elements.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/animate.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/animate.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/color-scheme-controller.d.ts
··· 1 + ../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/internal/color-scheme-controller.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/computed-style.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/computed-style.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/debounce.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/debounce.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/default-value.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/default-value.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/dismissible-stack.d.ts
··· 1 + ../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/internal/dismissible-stack.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/drag.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/drag.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/event.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/event.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/get-text.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/get-text.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/math.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/math.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/offset.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/offset.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/parse.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/parse.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/scroll.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/scroll.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/scrollend-polyfill.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/scrollend-polyfill.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/slot.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/slot.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/submit-on-enter.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/submit-on-enter.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/test/fixture.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/test/fixture.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/test/pointer-utilities.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/test/pointer-utilities.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/validators/mirror-validator.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/validators/mirror-validator.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/validators/required-validator.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/validators/required-validator.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/validators/slider-validator.d.ts
··· 1 + ../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/internal/validators/slider-validator.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/watch.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/watch.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/internal/webawesome-element.d.ts
··· 1 + ../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/internal/webawesome-element.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/llms.txt
··· 1 + ../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/llms.txt
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/animated-image/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/animated-image/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/animated-image/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/animated-image/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/animation/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/animation/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/animation/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/animation/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/avatar/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/avatar/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/avatar/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/avatar/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/badge/index.d.ts
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/badge/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/badge/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/badge/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/breadcrumb-item/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/breadcrumb-item/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/breadcrumb-item/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/breadcrumb-item/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/breadcrumb/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/breadcrumb/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/breadcrumb/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/breadcrumb/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/button-group/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/button-group/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/button-group/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/button-group/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/button/index.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/button/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/button/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/button/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/callout/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/callout/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/callout/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/callout/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/card/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/card/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/card/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/card/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/carousel-item/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/carousel-item/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/carousel-item/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/carousel-item/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/carousel/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/carousel/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/carousel/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/carousel/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/checkbox/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/checkbox/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/checkbox/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/checkbox/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/color-picker/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/color-picker/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/color-picker/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/color-picker/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/comparison/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/comparison/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/comparison/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/comparison/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/copy-button/index.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/copy-button/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/copy-button/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/copy-button/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/details/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/details/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/details/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/details/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/dialog/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/dialog/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/dialog/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/dialog/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/divider/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/divider/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/divider/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/divider/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/drawer/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/drawer/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/drawer/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/drawer/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/dropdown-item/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/dropdown-item/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/dropdown-item/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/dropdown-item/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/dropdown/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/dropdown/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/dropdown/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/dropdown/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/format-bytes/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/format-bytes/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/format-bytes/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/format-bytes/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/format-date/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/format-date/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/format-date/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/format-date/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/format-number/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/format-number/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/format-number/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/format-number/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/icon/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/icon/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/icon/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/icon/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/include/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/include/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/include/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/include/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/index.d.ts
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/index.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/input/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/input/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/input/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/input/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/intersection-observer/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/intersection-observer/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/intersection-observer/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/intersection-observer/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/markdown/index.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/markdown/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/markdown/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/markdown/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/mutation-observer/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/mutation-observer/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/mutation-observer/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/mutation-observer/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/number-input/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/number-input/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/number-input/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/number-input/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/option/index.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/option/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/option/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/option/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/page/index.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/page/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/page/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/page/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/popover/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/popover/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/popover/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/popover/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/popup/index.d.ts
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/react/popup/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/popup/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/popup/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/progress-bar/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/progress-bar/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/progress-bar/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/progress-bar/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/progress-ring/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/progress-ring/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/progress-ring/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/progress-ring/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/qr-code/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/qr-code/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/qr-code/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/qr-code/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/radio-group/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/radio-group/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/radio-group/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/radio-group/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/radio/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/radio/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/radio/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/radio/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/rating/index.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/rating/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/rating/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/rating/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/relative-time/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/relative-time/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/relative-time/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/relative-time/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/resize-observer/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/resize-observer/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/resize-observer/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/resize-observer/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/scroller/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/scroller/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/scroller/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/scroller/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/select/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/select/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/select/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/select/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/skeleton/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/skeleton/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/skeleton/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/skeleton/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/slider/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/slider/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/slider/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/slider/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/spinner/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/spinner/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/spinner/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/spinner/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/split-panel/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/split-panel/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/split-panel/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/split-panel/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/switch/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/switch/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/switch/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/switch/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/tab-group/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tab-group/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/tab-group/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/tab-group/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/tab-panel/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tab-panel/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/tab-panel/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/tab-panel/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/tab/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tab/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/tab/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/tab/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/tag/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tag/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/tag/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/tag/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/textarea/index.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/textarea/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/textarea/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/textarea/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/tooltip/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tooltip/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/tooltip/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/tooltip/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/tree-item/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tree-item/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/tree-item/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/tree-item/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/tree/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tree/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/tree/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/tree/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/zoomable-frame/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/zoomable-frame/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/react/zoomable-frame/index.js
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/react/zoomable-frame/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/SKILL.md
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/skills/webawesome/SKILL.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/animation.md
··· 1 + ../../../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/skills/webawesome/references/components/animation.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/avatar.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/avatar.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/badge.md
··· 1 + ../../../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/skills/webawesome/references/components/badge.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/breadcrumb.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/breadcrumb.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/button-group.md
··· 1 + ../../../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/skills/webawesome/references/components/button-group.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/button.md
··· 1 + ../../../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/button.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/callout.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/callout.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/card.md
··· 1 + ../../../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/card.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/carousel.md
··· 1 + ../../../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/skills/webawesome/references/components/carousel.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/checkbox.md
··· 1 + ../../../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/checkbox.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/color-picker.md
··· 1 + ../../../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/color-picker.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/comparison.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/comparison.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/copy-button.md
··· 1 + ../../../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/copy-button.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/details.md
··· 1 + ../../../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/details.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/dialog.md
··· 1 + ../../../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/dialog.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/divider.md
··· 1 + ../../../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/skills/webawesome/references/components/divider.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/drawer.md
··· 1 + ../../../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/drawer.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/dropdown.md
··· 1 + ../../../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/skills/webawesome/references/components/dropdown.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/icon.md
··· 1 + ../../../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/icon.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/include.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/include.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/input.md
··· 1 + ../../../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/input.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/markdown.md
··· 1 + ../../../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/markdown.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/mutation-observer.md
··· 1 + ../../../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/skills/webawesome/references/components/mutation-observer.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/number-input.md
··· 1 + ../../../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/number-input.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/option.md
··· 1 + ../../../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/option.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/page.md
··· 1 + ../../../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/page.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/popover.md
··· 1 + ../../../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/skills/webawesome/references/components/popover.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/popup.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/popup.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/progress-ring.md
··· 1 + ../../../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/skills/webawesome/references/components/progress-ring.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/radio-group.md
··· 1 + ../../../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/radio-group.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/radio.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/radio.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/rating.md
··· 1 + ../../../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/rating.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/scroller.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/scroller.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/select.md
··· 1 + ../../../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/select.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/skeleton.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/skeleton.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/slider.md
··· 1 + ../../../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/slider.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/spinner.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/spinner.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/switch.md
··· 1 + ../../../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/switch.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tab-group.md
··· 1 + ../../../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tab-group.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tab.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tab.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tag.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tag.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/textarea.md
··· 1 + ../../../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/textarea.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tooltip.md
··· 1 + ../../../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tooltip.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tree.md
··· 1 + ../../../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tree.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/components/zoomable-frame.md
··· 1 + ../../../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/skills/webawesome/references/components/zoomable-frame.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/customizing.md
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/customizing.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/form-controls.md
··· 1 + ../../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/skills/webawesome/references/form-controls.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/angular.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/angular.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/react.md
··· 1 + ../../../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/react.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/svelte.md
··· 1 + ../../../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/svelte.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/vue.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/vue.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/installation.md
··· 1 + ../../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/installation.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/localization.md
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/localization.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/support.md
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/support.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/themes.md
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/themes.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/borders.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/borders.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/color.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/color.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/focus.md
··· 1 + ../../../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/focus.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/shadows.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/shadows.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/space.md
··· 1 + ../../../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/space.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/transitions.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/transitions.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/typography.md
··· 1 + ../../../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/typography.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/usage.md
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/usage.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/color.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/color.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/fouce.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/fouce.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/layout.md
··· 1 + ../../../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/layout.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/native.md
··· 1 + ../../../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/native.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/rounding.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/rounding.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/text.md
··· 1 + ../../../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/text.md
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/color/palettes/base.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/palettes/base.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/color/palettes/bright.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/palettes/bright.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/color/palettes/default.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/palettes/default.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/color/palettes/shoelace.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/palettes/shoelace.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/color/variants.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/variants.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/color/variants/brand.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/variants/brand.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/color/variants/danger.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/variants/danger.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/color/variants/neutral.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/variants/neutral.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/color/variants/success.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/variants/success.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/color/variants/warning.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/variants/warning.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/component/form-control.styles.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/component/host.styles.ts
··· 1 + ../../../../../../bafybeihbz345odjvukylbbblmpnr65uxopv7udyhs6zalxe4m4msob73jm/vendor/@awesome.me/webawesome/styles/component/host.styles.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/component/size.styles.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/size.styles.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/component/variants.styles.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/variants.styles.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/component/visually-hidden.styles.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/visually-hidden.styles.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/layers.css
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/layers.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/native.css
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/styles/native.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/themes/awesome.css
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/styles/themes/awesome.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/themes/default.css
··· 1 + ../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/styles/themes/default.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/themes/shoelace.css
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/styles/themes/shoelace.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/utilities.css
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/utilities/align-items.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/align-items.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/utilities/border-radius.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/border-radius.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/utilities/flex-wrap.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/flex-wrap.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/utilities/fouce.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/fouce.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/utilities/gap.css
··· 1 + ../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/styles/utilities/gap.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/utilities/justify-content.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/justify-content.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/utilities/layout.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/layout.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/utilities/placeholder.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/placeholder.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/utilities/scroll-lock.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/scroll-lock.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/utilities/size.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/size.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/utilities/text.css
··· 1 + ../../../../../../bafybeifjnpd7wynhlmfsc23ejeop2dqbjdzesg6mw4b4wvp5kf6x4upzie/vendor/@awesome.me/webawesome/styles/utilities/text.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/utilities/variants.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/variants.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/utilities/visually-hidden.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/visually-hidden.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/styles/webawesome.css
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/webawesome.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/ar.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/ar.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/ar.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/cs.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/cs.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/cs.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/da.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/da.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/da.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/de-ch.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/de-ch.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/de-ch.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/de.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/de.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/de.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/en-gb.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/en-gb.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/en-gb.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/en.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/en.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/en.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/es.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/es.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/es.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/fa.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/fa.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/fa.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/fi.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/fi.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/fi.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/fr.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/fr.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/fr.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/he.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/he.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/he.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/hi.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/hi.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/hi.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/hr.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/hr.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/hr.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/hu.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/hu.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/hu.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/id.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/id.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/id.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/it.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/it.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/it.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/ja.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/ja.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/ja.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/kk.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/kk.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/kk.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/nb.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/nb.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/nb.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/nl.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/nl.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/nl.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/nn.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/nn.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/nn.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/pl.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/pl.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/pl.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/pt.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/pt.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/pt.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/ru.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/ru.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/ru.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/sl.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/sl.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/sl.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/sv.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/sv.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/sv.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/tr.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/tr.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/tr.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/uk.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/uk.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/uk.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/zh-cn.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/zh-cn.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/zh-cn.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/zh-tw.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/translations/zh-tw.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/translations/zh-tw.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/types/svelte/index.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/types/svelte/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/types/vue/index.d.ts
··· 1 + ../../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/types/vue/index.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/utilities/animation.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/animation.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/utilities/animation.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/utilities/animation.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/utilities/autoloader.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/autoloader.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/utilities/autoloader.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/utilities/autoloader.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/utilities/base-path.d.ts
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/utilities/base-path.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/utilities/base-path.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/utilities/base-path.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/utilities/defined.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/defined.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/utilities/defined.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/utilities/defined.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/utilities/form.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/form.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/utilities/form.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/utilities/form.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/utilities/localize.d.ts
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/utilities/localize.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/utilities/localize.js
··· 1 + ../../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/utilities/localize.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/vscode.html-custom-data.json
··· 1 + ../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/vscode.html-custom-data.json
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/web-types.json
··· 1 + ../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/web-types.json
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/webawesome.d.ts
··· 1 + ../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/webawesome.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/webawesome.js
··· 1 + ../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/webawesome.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/webawesome.loader.d.ts
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/webawesome.loader.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/webawesome.loader.js
··· 1 + ../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/webawesome.loader.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/webawesome.ssr-loader.d.ts
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/webawesome.ssr-loader.d.ts
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@awesome.me/webawesome/webawesome.ssr-loader.js
··· 1 + ../../../../bafybeicfqztr3cihwjcs4c2mmeljlhvhjgafi5lekeaiyjykhjbgpfsvvq/vendor/@awesome.me/webawesome/webawesome.ssr-loader.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/bold/Phosphor-Bold.svg
··· 1 + ../../../../../bafybeidxl54c4ymomv6kytxqps6b5di34hgltpvyomx52g65lplv6dosxy/styles/vendor/phosphor/bold/Phosphor-Bold.svg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/bold/Phosphor-Bold.svg.br
··· 1 + ../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/vendor/@phosphor-icons/bold/Phosphor-Bold.svg.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/bold/Phosphor-Bold.ttf
··· 1 + ../../../../../bafybeidxl54c4ymomv6kytxqps6b5di34hgltpvyomx52g65lplv6dosxy/styles/vendor/phosphor/bold/Phosphor-Bold.ttf
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/bold/Phosphor-Bold.woff
··· 1 + ../../../../../bafybeidxl54c4ymomv6kytxqps6b5di34hgltpvyomx52g65lplv6dosxy/styles/vendor/phosphor/bold/Phosphor-Bold.woff
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/bold/Phosphor-Bold.woff2
··· 1 + ../../../../../bafybeidxl54c4ymomv6kytxqps6b5di34hgltpvyomx52g65lplv6dosxy/styles/vendor/phosphor/bold/Phosphor-Bold.woff2
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/bold/selection.json
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/bold/selection.json
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/bold/selection.json.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/bold/selection.json.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/bold/style.css
··· 1 + ../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/vendor/@phosphor-icons/bold/style.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/bold/style.css.br
··· 1 + ../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/vendor/@phosphor-icons/bold/style.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/bold/style.css.map
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/bold/style.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.svg
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.svg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.svg.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.svg.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.ttf
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.ttf
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.woff
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.woff
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.woff2
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/duotone/Phosphor-Duotone.woff2
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/duotone/selection.json
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/duotone/selection.json
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/duotone/selection.json.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/duotone/selection.json.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/duotone/style.css
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/duotone/style.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/duotone/style.css.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/duotone/style.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/duotone/style.css.map
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/duotone/style.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/fill/Phosphor-Fill.svg
··· 1 + ../../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/phosphor/fill/Phosphor-Fill.svg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/fill/Phosphor-Fill.svg.br
··· 1 + ../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/vendor/@phosphor-icons/fill/Phosphor-Fill.svg.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/fill/Phosphor-Fill.ttf
··· 1 + ../../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/phosphor/fill/Phosphor-Fill.ttf
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/fill/Phosphor-Fill.woff
··· 1 + ../../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/phosphor/fill/Phosphor-Fill.woff
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/fill/Phosphor-Fill.woff2
··· 1 + ../../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/phosphor/fill/Phosphor-Fill.woff2
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/fill/selection.json
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/fill/selection.json
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/fill/selection.json.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/fill/selection.json.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/fill/style.css
··· 1 + ../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/vendor/@phosphor-icons/fill/style.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/fill/style.css.br
··· 1 + ../../../../../bafybeigq73gcxsmpgbm55aumhxawjel5g567sosfqxdcpwb6mrsbgk5s5a/vendor/@phosphor-icons/fill/style.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/fill/style.css.map
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/fill/style.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/light/Phosphor-Light.svg
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/light/Phosphor-Light.svg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/light/Phosphor-Light.svg.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/light/Phosphor-Light.svg.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/light/Phosphor-Light.ttf
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/light/Phosphor-Light.ttf
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/light/Phosphor-Light.woff
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/light/Phosphor-Light.woff
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/light/Phosphor-Light.woff2
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/light/Phosphor-Light.woff2
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/light/selection.json
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/light/selection.json
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/light/selection.json.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/light/selection.json.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/light/style.css
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/light/style.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/light/style.css.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/light/style.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/light/style.css.map
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/light/style.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/regular/Phosphor.svg
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/regular/Phosphor.svg
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/regular/Phosphor.svg.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/regular/Phosphor.svg.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/regular/Phosphor.ttf
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/regular/Phosphor.ttf
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/regular/Phosphor.woff
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/regular/Phosphor.woff
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/regular/Phosphor.woff2
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/regular/Phosphor.woff2
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/regular/selection.json
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/regular/selection.json
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/regular/selection.json.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/regular/selection.json.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/regular/style.css
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/regular/style.css
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/regular/style.css.br
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/regular/style.css.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/@phosphor-icons/web/regular/style.css.map
··· 1 + ../../../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/@phosphor-icons/web/regular/style.css.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/idb-keyval/index.js
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/idb-keyval/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/idb-keyval/index.js.br
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/idb-keyval/index.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/idb-keyval/index.js.map
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/idb-keyval/index.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/kmenu-core/index.js
··· 1 + ../../../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/vendor/kmenu-core/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/kmenu-core/index.js.br
··· 1 + ../../../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/vendor/kmenu-core/index.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/kmenu-core/index.js.map
··· 1 + ../../../bafybeif2mgntbvifh54kjilb4552kzk4gbw35ruixzeb3bqztt7qfqzb5y/vendor/kmenu-core/index.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/lit-html/index.js
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/lit-html/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/lit-html/index.js.br
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/lit-html/index.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/lit-html/index.js.map
··· 1 + ../../../bafybeibdq3hdzlgmgbv2ukilpsogssspjtsirhw446c7fzwp3erp3bokxu/vendor/lit-html/index.js.map
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/ms_sans_serif.woff2
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/ms_sans_serif.woff2
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/ms_sans_serif_bold.woff2
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/ms_sans_serif_bold.woff2
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/throttle-debounce/index.js
··· 1 + ../../../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/vendor/throttle-debounce/index.js
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/vendor/throttle-debounce/index.js.br
··· 1 + ../../../bafybeic5df6v4wtolbkayew4pvtmslfqyillcqeq2gphldlklracynis4i/vendor/throttle-debounce/index.js.br
+1
artifacts/bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu/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": "bafybeidcqjj5ooqx36uomtsgqcpuu5bjordymamrliah7o2bq7ghzvfxgm", 9 - "createdAt": "2026-04-13T11:28:25.127Z", 8 + "cid": "bafybeihwreg7s7wjt6ql72zm6vmhzqevnvj3wciz7isunc2crmubphbegu", 9 + "createdAt": "2026-04-14T11:11:50.734Z", 10 10 "version": "4.0.0-alpha" 11 11 } 12 12 }