1"use strict";(self.webpackChunkcaniuse_com=self.webpackChunkcaniuse_com||[]).push([[690],{5145:(e,t,a)=>{a.r(t),a.d(t,{default:()=>T});var i=a(717),o=a(9194),s=a(6921),r=(a(6435),a(775),a(3780),a(6446),a(2435),a(2535)),n=a(6094),l=a(8411),c=a(7813),d=function(e,t,a,i){var o,s=arguments.length,r=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,a):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(e,t,a,i);else for(var n=e.length-1;n>=0;n--)(o=e[n])&&(r=(s<3?o(r):s>3?o(t,a,r):o(t,a))||r);return s>3&&r&&Object.defineProperty(t,a,r),r};class u extends i.WF{constructor(){super(),this.options=[],(0,c.mJ)((()=>l.M.primaryBrowserset),(e=>{this.primarySetName=e,this.makeOptions()})),this.primarySetName=l.M.primaryBrowserset,this.makeOptions()}makeOptions(){this.options=n.i9.map((({name:e})=>({label:e,value:e,selected:this.primarySetName===e})))}handleSelectionChange(e){l.M.setPrimaryBrowserset(e.target.value)}handleAddNewSet(){r.j.setEditedBrowserset("")}handleDeleteClick(e){e.target.disabled||window.confirm(`Delete set "${this.primarySetName}" ?`)&&(0,n.Cr)(this.primarySetName)}handleEditClick(e){e.target.disabled||r.j.setEditedBrowserset(this.primarySetName)}handleOrderChange(e){if(e.target.checked){let t=e.target.value;l.M.setBrowserOrder(t)}}handleShowNewerVersionsToggle(e){l.M.toggleShowNewerVersions(e.target.checked)}render(){let e=this.primarySetName===n.lJ,{showNewerVersions:t,browserOrder:a}=l.M;return i.qy` 2 <ciu-fieldset>
3 <div class="browserset-controls"> 4 <ciu-select 5 class="set-list" 6 .options="${this.options}" 7 @change="${this.handleSelectionChange}"></ciu-select> 8 <ciu-button 9 size="small" 10 @click=${this.handleDeleteClick} 11 ?disabled=${e}> 12 Delete 13 </ciu-button> 14 <ciu-button 15 size="small" 16 @click=${this.handleEditClick} 17 ?disabled=${e}> 18 Edit 19 </ciu-button> 20 </div> 21 22 <ciu-button @click="${this.handleAddNewSet}"> 23 Add new set 24 </ciu-button> 25 26 <ciu-labeled-checkbox 27 ?checked=${t} 28 @change=${this.handleShowNewerVersionsToggle} 29 label="Always show current & upcoming"></ciu-labeled-checkbox> 30 31 <p>Browser order:</p> 32 33 <ciu-labeled-radio 34 @change=${this.handleOrderChange} 35 ?checked=${"default"===a} 36 name="browser-order" 37 value="default" 38 label="Default order"></ciu-labeled-radio> 39 <ciu-labeled-radio 40 @change=${this.handleOrderChange} 41 ?checked=${"usage"===a} 42 name="browser-order" 43 value="usage" 44 label="By usage"></ciu-labeled-radio> 45 46 </ciu-fieldset> 47 `}}u.styles=i.AH` 48 :host { 49 width: 100%; 50 } 51 52 ciu-labeled-checkbox { 53 display: block; 54 margin-top: 1em; 55 } 56 57 ciu-labeled-radio { 58 display: inline-block; 59 margin-right: 1em; 60 } 61 62 ciu-select { 63 width: 14em; 64 } 65
66 .browserset-controls { 67 display: flex; 68 justify-content: space-between; 69 align-items: center; 70 width: 70%; 71 margin-bottom: 0.5em; 72 } 73 74 .browserset-controls ciu-button { 75 margin-left: 10px; 76 } 77 `,d([(0,o.MZ)({type:Array})],u.prototype,"options",void 0),d([(0,o.MZ)({type:String})],u.prototype,"primarySetName",void 0),customElements.define("ciu-browserset-options",u);var h=a(7679),g=a(8765),p=a(4798),m=a(8475),b=function(e,t,a,i){return new(a||(a=Promise))((function(o,s){function r(e){try{l(i.next(e))}catch(e){s(e)}}function n(e){try{l(i.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof a?t:new a((function(e){e(t)}))).then(r,n)}l((i=i.apply(e,t||[])).next())}))};let f,y={};class v extends i.WF{constructor(){super(),this.getRegionOptions()}getRegionData(){return b(this,void 0,void 0,(function*(){let e=yield fetch("/resources/sc-regions.json");f=yield e.json();let t=[];for(const e in f){const a=f[e];y[a]=e,t.push({label:"",value:a})}return g.vi.regionNameById=f,g.vi.regionIdByName=y,t}))}getRegionOptions(){return b(this,void 0,void 0,(function*(){let e=yield this.getRegionData();this.datalist=i.qy` 78 <datalist id="usage-regions"> 79 ${e.map((e=>i.qy` 80 <option value="${e.value}"></option> 81 `))} 82 </datalist> 83 `}))}handleRegionImportClick(e){let t=this.shadowRoot.querySelector("#region-input");var a=y[t.value];return a?h.Ay.getUsageById("region."+a)?(window.alert("Selected region already imported"),void t.focus()):((0,h.Gh)(a).catch((e=>{window.alert("Sorry, no data currently available for this region")})).finally((()=>{t.value="",t.disabled=!1})),void(t.disabled=!0)):(window.alert("Invalid region"),void t.focus())}handleStatsImportClick(){m.Ay.navigate("import")}render(){return i.qy` 84 <div> 85 <label for="region-input"> 86 Add from country/region: 87 </label> 88 <div class="wrap option-set"> 89 <input 90 id="region-input" 91 name="usage-region" 92 list="usage-regions"> 93 <ciu-button 94 @click="${this.handleRegionImportClick}"> 95 Import 96 </ciu-button> 97 </div> 98 99 <div class="option-set"> 100 <label for="stats-import"> 101 Add from analytics: 102 </label> 103 104 <ciu-button id="stats-import" 105 @click="${this.handleStatsImportClick}"> 106 Open importer... 107 </ciu-button> 108 </div> 109 </div> 110 ${this.datalist} 111 `}}v.styles=[p.R,i.AH` 112 :host { 113 width: 100%; 114 } 115 116 label { 117 display: block; 118 margin-bottom: 0.5em; 119 } 120 121 input { 122 box-sizing: border-box; 123 display: inline-block; 124 vertical-align: top; 125 height: 1.8em; 126 border: none; 127 margin: 0 5px 0 0; 128 width: 15em; 129 padding-left: 0.5em; 130 font: inherit; 131 } 132 133 .analytics-wrap { 134 display: block; 135 } 136 137 .wrap { 138 display: flex; 139 align-items: top; 140 } 141 142 .option-set { 143 margin-bottom: 2em; 144 } 145 `],function(e,t,a,i){var o,s=arguments.length,r=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,a):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(e,t,a,i);else for(var n=e.length-1;n>=0;n--)(o=e[n])&&(r=(s<3?o(r):s>3?o(t,a,r):o(t,a))||r);s>3&&r&&Object.defineProperty(t,a,r)}([(0,o.MZ)({type:Object})],v.prototype,"datalist",void 0),customElements.define("ciu-usage-source",v);var w=a(9429),k=a(1836),x=function(e,t,a,i){var o,s=arguments.length,r=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,a):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(e,t,a,i);else for(var n=e.length-1;n>=0;n--)(o=e[n])&&(r=(s<3?o(r):s>3?o(t,a,r):o(t,a))||r);return s>3&&r&&Object.defineProperty(t,a,r),r};class C extends i.WF{constructor(){super(),this.usageList=[],this.usageList=(0,h.wW)(),w.A.subscribe("usageUpdated",(e=>{this.usageList=e}))}updated(e){if(this.dataToRename&&e.has("dataToRename")){let e=this.querySelector(".rename-field");e.select(),e.focus()}}deleteUsage(e){let t=e.name;window.confirm(`Delete usage "${t}" ?`)&&h.Ay.remove(e.uid)}createRenderRoot(){return this}getType(e){switch(e.type){case k.eU.REGION:return"Region";case k.eU.CUSTOM:switch(e.source){case k.JA.GOOGLE_ANALYTICS:return"Google Analytics (UA)";case k.JA.GOOGLE_ANALYTICS_GA4:return"Google Analytics (GA4)";case k.JA.SIMPLE_ANALYTICS:return"Simple Analytics"}}return"Unknown"}handlePrimaryChange(e){let t=e.target.value;l.M.setPrimaryUsage(t)}enableRename(e){e.renameAllowed()&&(this.dataToRename=e)}cancelRename(e){this.querySelector(".rename-field").value=e,this.dataToRename=null}saveRename(e,t){if(!(t=t.trim()).length)return void this.cancelRename(e.name);let a=h.Ay.getUsageByName(t);if(a&&a.uid!==e.uid)return alert(`The name "${t}" is already taken`),void this.cancelRename(e.name);h.Ay.rename(e.uid,t),this.dataToRename=null}handleCellClick(e){e.currentTarget.querySelector('[name="primary-usage"]').select()}handleRenameKeyUp(e,t){"Enter"===e.code&&e.target.blur(),"Escape"===e.code&&(e.preventDefault(),e.stopImmediatePropagation(),this.cancelRename(t.name))}renderUsageRows(){let e=l.M.primaryUsage;return this.usageList.map((t=>{let a=this.getType(t);return i.qy` 146 <tr> 147 <td @click=${this.handleCellClick}> 148 <ciu-labeled-radio 149 @change=${this.handlePrimaryChange} 150 ?checked=${t.uid===e} 151 name="primary-usage" 152 value=${t.uid} 153 label=""></ciu-labeled-radio> 154 </td> 155 <td @dblclick=${()=>this.enableRename(t)}> 156 ${this.dataToRename===t?i.qy` 157 <input 158 type="text" 159 name=${t.uid} 160 class="rename-field" 161 value=${t.name}
162 @keyup=${e=>this.handleRenameKeyUp(e,t)} 163 @blur=${({target:e})=>this.saveRename(t,e.value)}> 164 `:t.name} 165 </td> 166 <td>${a}</td> 167 <td> 168 ${t.renameAllowed()?i.qy` 169 <ciu-button 170 size="small" 171 @click=${()=>this.enableRename(t)}>Rename</ciu-button> 172 `:""} 173 ${t.isGlobal()?"":i.qy` 174 <ciu-button 175 size="small" 176 @click=${()=>this.deleteUsage(t)}>Delete</ciu-button> 177 `} 178 </td> 179 </tr> 180 `}))}render(){if(!(this.usageList.length<=1))return i.qy` 181 <p>"Primary" usage is what is used for usage relative view, etc.</p> 182 <table class="usage-options"> 183 <thead> 184 <tr> 185 <th>Primary</th> 186 <th>Name</th> 187 <th>Type</th> 188 <th></th> 189 </tr> 190 </thead> 191 ${this.renderUsageRows()} 192 </table> 193 `}}x([(0,o.MZ)({type:Array})],C.prototype,"usageList",void 0),x([(0,o.MZ)({type:Object})],C.prototype,"dataToRename",void 0),customElements.define("ciu-usage-table",C);const $=i.AH` 194.x { 195 background-image: url("/img/prefix.svg"); 196 background-position: top 1px right 1px; 197 background-repeat: no-repeat; 198 background-size: 12px; 199} 200 201.d { 202 background-image: url("/img/flag-green.svg"); 203 background-position: top 1px right 1px; 204 background-repeat: no-repeat; 205 background-size: 10px; 206} 207 208.x.d { 209 background-image: url("/img/prefix.svg"), url("/img/flag-green.svg"); 210 background-position: top 1px right 1px, top 1px right 12px; 211} 212.show-full-prefix .x.d { 213 background-image: url("/img/flag-green.svg"); 214 background-position: top 1px right 1px; 215} 216.show-full-prefix .x.d .cell-prefix { 217 right: 12px; 218} 219 220.y { 221 background-color: var(--supported); 222 color: var(--supported-fg); 223} 224 225.a { 226 background-color: var(--partial); 227 background: var(--partial-pattern); 228 color: var(--partial-fg); 229} 230 231.n { 232 background-color: var(--no-support); 233 background: var(--no-support-pattern); 234 color: var(--no-support-fg); 235} 236 237.u { 238 background-color: var(--unknown); 239 color: var(--unknown-fg); 240} 241 242:host { 243 display: grid; 244 grid-template-columns: 210px auto; 245 grid-template-rows: calc(100vh - 80px); 246 font: inherit; 247} 248@media (max-width: calc(690 / 16)em) { 249 :host { 250 display: block; 251 } 252} 253 254h2 { 255 margin-top: 0; 256 font-weight: 100; 257 font-size: 1.7em; 258} 259 260h3 { 261 margin-top: 0; 262 font-weight: 100; 263 font-size: 1.5em; 264 padding-bottom: 0.3em; 265 margin-bottom: 0.3em; 266 border-bottom: 2px solid rgba(255, 255, 255, 0.2); 267} 268 269h4 { 270 margin: 1.5em 0 0.5em; 271 font-weight: normal; 272} 273 274ol, li { 275 list-style: none; 276 margin: 0; 277 padding: 0; 278} 279 280p { 281 line-height: 1.5; 282 color: var(--dim-fg); 283 font-size: 0.9em; 284} 285 286ciu-usage-table { 287 display: block; 288 margin-bottom: 1em; 289} 290ciu-usage-table .usage-options { 291 width: 100%; 292} 293ciu-usage-table .usage-options thead { 294 text-align: left; 295} 296ciu-usage-table .usage-options th, ciu-usage-table .usage-options td { 297 padding: 2px; 298 height: 2em; 299} 300ciu-usage-table .usage-options input { 301 font-size: inherit; 302} 303ciu-usage-table .usage-options ciu-button { 304 display: inline-block; 305 margin: 5px 0; 306} 307ciu-usage-table .usage-options ciu-labeled-radio { 308 display: inline-block; 309 position: relative; 310 top: -5px; 311} 312ciu-usage-table .usage-options th:first-child, 313ciu-usage-table .usage-options td:first-child { 314 width: 4em; 315} 316ciu-usage-table .usage-options td:first-child { 317 text-align: center; 318} 319ciu-usage-table .usage-options tr:hover td { 320 background-color: var(--primary-bg-shade-2); 321} 322 323.settings-nav a { 324 display: block; 325 text-decoration: none; 326 padding: 0.5em 0; 327 color: var(--dim-fg); 328} 329 330.settings-nav a:hover { 331 color: var(--primary-fg); 332} 333 334.settings-nav a.is-selected { 335 color: var(--primary-fg); 336 margin-left: -0.65em; 337} 338.settings-nav a.is-selected:before { 339 content: "\\2022"; 340} 341 342.settings-nav ol { 343 display: block; 344} 345@media (max-width: calc(690 / 16)em) { 346 .settings-nav ol { 347 display: none; 348 } 349} 350 351.settings-content { 352 padding-right: 1em; 353 overflow-y: auto; 354 scroll-snap-type: y proximity; 355} 356 357.settings-content section { 358 min-height: 100%; 359 margin-bottom: 1em; 360 scroll-snap-align: start; 361} 362@media (max-width: calc(690 / 16)em) { 363 .settings-content section { 364 margin-bottom: 5em; 365 } 366} 367 368.subsection { 369 margin-bottom: 2em; 370} 371 372.subsection label { 373 margin-bottom: 0.5em; 374} 375 376.subsection p { 377 margin-top: 0; 378} 379 380label { 381 display: grid; 382 grid-template-columns: auto auto; 383 justify-content: start; 384 gap: 10px; 385 flex-wrap: wrap; 386 align-items: baseline; 387 white-space: nowrap; 388} 389 390label b { 391 color: var(--primary-fg); 392} 393 394ciu-view-mode-bar, 395ciu-show-mode-bar, 396ciu-select { 397 margin-top: 5px; 398} 399 400.default-graph-colors { 401 line-height: 1.5; 402} 403.default-graph-colors .y { 404 background: #2A8436; 405} 406.default-graph-colors .n { 407 background: #c44230; 408} 409.default-graph-colors .a { 410 background: #807301; 411} 412.default-graph-colors .u { 413 background: #757575; 414} 415 416.cbf-graph-colors { 417 line-height: 1.5; 418} 419.cbf-graph-colors .y { 420 background: #a6edb2; 421} 422.cbf-graph-colors .n { 423 background: #842e98; 424} 425.cbf-graph-colors .a { 426 background: #8090F9; 427} 428.cbf-graph-colors .u { 429 background: #838383; 430} 431 432.cbf-graph-colors, 433.default-graph-colors { 434 display: inline-flex; 435 align-items: center; 436 margin-right: 5px; 437} 438 439.color { 440 display: inline-block; 441 width: 25px; 442 height: 1em; 443 margin-right: 5px; 444} 445 446/*# sourceMappingURL=ciu-settings.css.map */ 447 448`;var S=a(3132),R=function(e,t,a,i){var o,s=arguments.length,r=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,a):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(e,t,a,i);else for(var n=e.length-1;n>=0;n--)(o=e[n])&&(r=(s<3?o(r):s>3?o(t,a,r):o(t,a))||r);return s>3&&r&&Object.defineProperty(t,a,r),r};class A extends i.WF{constructor(){super(),this.autoScrolling=!1,this.scrollTimer=null,this.options=[],this.selectedId="",this.themeOptions=[],this.makeThemeOptions()}firstUpdated(){return e=this,t=void 0,i=function*(){if(location.hash){let e=location.hash.substr(1);yield(0,S.N7)(this),this.scrollToSection(e,"auto")}else this.selectedId="usage";this.makeScrollListener()},new((a=void 0)||(a=Promise))((function(o,s){function r(e){try{l(i.next(e))}catch(e){s(e)}}function n(e){try{l(i.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof a?t:new a((function(e){e(t)}))).then(r,n)}l((i=i.apply(e,t||[])).next())}));var e,t,a,i}updated(e){e.has("selectedId")&&this.selectedId&&history.replaceState({},"","/ciu/settings#"+this.selectedId)}makeScrollListener(){let e=this.shadowRoot.querySelector(".settings-content"),t=Array.from(this.shadowRoot.querySelectorAll("section")),a=e.getBoundingClientRect().top;e.addEventListener("scroll",(()=>{if(!this.autoScrolling)for(let e of t){let t=e.getBoundingClientRect().top-a;if(t>-5&&t<50){this.selectedId=e.id;break}}}))}scrollToSection(e,t){this.selectedId=e,this.autoScrolling=!0,clearTimeout(this.scrollTimer),matchMedia("(prefers-reduced-motion: reduce)").matches&&(t="auto"),this.shadowRoot.getElementById(e).scrollIntoView({behavior:t,block:"start"}),this.scrollTimer=setTimeout((()=>this.autoScrolling=!1),1e3)}makeThemeOptions(){let{theme:e}=l.M;this.themeOptions=Object.entries(s.m0).map((([t,a])=>({label:a,value:t,selected:t===e})))}handleShowFullPrefixesChange(e){l.M.setShowFullPrefix(e.target.checked)}handleThemeChange(e){l.M.setTheme(e.target.value)}handleViewModeChange(e){l.M.setDefaultViewMode(e.target.value)}handleShowModeChange(e){let t=e.target.value;l.M.setDefaultShowMode(t),w.A.publish("defaultShowModeChanged",t)}handleUsageCalculationChange(e){let t=e.target.value;l.M.setDefaultUsageCalculation(t)}handleNavClick(e){e.preventDefault();let t=e.target.href.split("#")[1];this.scrollToSection(t,"smooth")}renderNav(){return[["usage","Usage data"],["browsers","Browsers shown"],["display","Default display settings"],["theme","Theme"]].map((([e,t])=>i.qy` 449 <li> 450 <a href="${m.Ay.getCurPath()}#${e}" @click=${this.handleNavClick} class="${e===this.selectedId?"is-selected":""}"> 451 ${t} 452 </a> 453 </li> 454 `))}handleGraphColorToggle(e){if(e.target.checked){let t="cbf"===e.target.value;l.M.setAccessibleColors(t)}}renderColors(){return i.qy` 455 <div> 456 <span class="color y"></span> 457 <span class="color a"></span> 458 <span class="color n"></span> 459 <span class="color u"></span> 460 </div> 461 `}renderThemeSection(){const{accessibleColors:e}=l.M;return i.qy` 462 <section id="theme"> 463 <h3>Theme</h3> 464 <p>Customize default website color scheme and select preferred support table colors.</p> 465 <label> 466 Interface: 467 <ciu-select 468 .options=${this.themeOptions} 469 @change=${this.handleThemeChange}></ciu-select> 470 </label> 471 472 <h4>Support table colors:</h4> 473 <ciu-labeled-radio 474 class="default-graph-colors" 475 @change=${this.handleGraphColorToggle} 476 ?checked=${!e} 477 name="a11y-color" 478 value="default"> 479 480 <span class="color-option"> 481 Default 482 ${this.renderColors()} 483 </span> 484 </ciu-labeled-radio> 485 486 <ciu-labeled-radio 487 class="cbf-graph-colors" 488 @change=${this.handleGraphColorToggle} 489 ?checked=${e} 490 name="a11y-color" 491 value="cbf"> 492 493 <span class="color-option"> 494 Color-blind friendly 495 ${this.renderColors()} 496 </span> 497 </ciu-labeled-radio> 498 </section> 499 `}onUsageCalculationChange(){}render(){const{usageCalculation:e}=l.M;return i.qy` 500 <nav class="settings-nav"> 501 <h2>Settings</h2> 502 <ol> 503 ${this.renderNav()} 504 </ol> 505 </nav> 506 <div class="settings-content"> 507 <section id="usage"> 508 <h3>Usage data</h3> 509 <p>Import usage data from geographical region or from your own site's anal
509ytics 510 to see what browser support looks like for your audience.</p> 511 <ciu-usage-table></ciu-usage-table> 512 <ciu-usage-source></ciu-usage-source> 513 </section> 514 515 <section id="browsers"> 516 <h3>Browsers shown</h3> 517 <p>Configure which browsers and which versions are shown in each support table 518 when on "Filtered" mode.</p> 519 520 <ciu-browserset-options></ciu-browserset-options> 521 522 </section> 523 524 <section id="display"> 525 <h3>Default display settings</h3> 526 <p>Support tables will start out with these settings when they appear.</p> 527 528 <div class="subsection"> 529 <label for="usage-calculation"> 530 Usage calculation: 531 </label> 532 <ciu-labeled-radio 533 @change=${this.handleUsageCalculationChange} 534 name="usage-calculation" 535 ?checked=${e===s.DH.ALL} 536 value=${s.DH.ALL}> 537 538 All users 539 </ciu-labeled-radio> 540 <p>Any usage % of browsers <em>not</em> tracked by caniuse is considered unsupported.</p> 541 542 <ciu-labeled-radio 543 @change=${this.handleUsageCalculationChange} 544 name="usage-calculation" 545 ?checked=${e===s.DH.TRACKED} 546 value=${s.DH.TRACKED}> 547 548 All tracked users 549 </ciu-labeled-radio> 550 <p>Excludes the usage percentage of browsers not tracked on caniuse.</p> 551 </div> 552 553 <label class="subsection"> 554 View mode: 555 <ciu-view-mode-bar 556 @change=${this.handleViewModeChange} 557 ></ciu-view-mode-bar> 558 </label> 559 <label class="subsection"> 560 Show: 561 <ciu-show-mode-bar 562 @change=${this.handleShowModeChange}> 563 </ciu-show-mode-bar> 564 </label> 565 </section> 566 567 ${this.renderThemeSection()} 568 569 </div> 570 `}}A.styles=[p.R,$];const T=A;R([(0,o.MZ)({type:Array})],A.prototype,"options",void 0),R([(0,o.MZ)({type:String})],A.prototype,"selectedId",void 0),R([(0,o.MZ)({type:Array})],A.prototype,"themeOptions",void 0),customElements.define("ciu-settings",A)}}]); 571//# sourceMappingURL=ciu-settings.js.map?46b1b676385a04657b20
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.