PageSourceSearch

https://coetreearchive.github.io/

html coetreearchive.github.io collected 2026-10-03 08:48:55 UTC 32,041 bytes, 685 lines download raw bytes

1<!DOCTYPE html>
2<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
3
4<meta charset="utf-8">
5<meta name="generator" content="quarto-1.6.42">
6
7<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
8
9
10<title> Coe College Tree Archive – Coe College Tree Archive</title>
11<style>
12code{white-space: pre-wrap;}
13span.smallcaps{font-variant: small-caps;}
14div.columns{display: flex; gap: min(4vw, 1.5em);}
15div.column{flex: auto; overflow-x: auto;}
16div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
17ul.task-list{list-style: none;}
18ul.task-list li input[type="checkbox"] {
19  width: 0.8em;
20  margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */ 
21  vertical-align: middle;
22}
23</style>
24
25
26<script src="site_libs/quarto-nav/quarto-nav.js"></script>
vendor: 1 bytes, line 26
26
27<script src="site_libs/quarto-nav/headroom.min.js"></script>
vendor: 1 bytes, line 27
27
28<script src="site_libs/clipboard/clipboard.min.js"></script>
vendor: 1 bytes, line 28
28
29<script src="site_libs/quarto-search/autocomplete.umd.js"></script>
vendor: 1 bytes, line 29
29
30<script src="site_libs/quarto-search/fuse.min.js"></script>
vendor: 1 bytes, line 30
30
31<script src="site_libs/quarto-search/quarto-search.js"></script>
31
32<meta name="quarto:offset" content="./">
33<link href="./images/logo.png" rel="icon" type="image/png">
34<script src="site_libs/quarto-html/quarto.js"></script>
vendor: 1 bytes, line 34
34
35<script src="site_libs/quarto-html/popper.min.js"></script>
vendor: 1 bytes, line 35
35
36<script src="site_libs/quarto-html/tippy.umd.min.js"></script>
vendor: 1 bytes, line 36
36
37<script src="site_libs/quarto-html/anchor.min.js"></script>
37
38<link href="site_libs/quarto-html/tippy.css" rel="stylesheet">
39<link href="site_libs/quarto-html/quarto-syntax-highlighting-2f5df379a58b258e96c21c0638c20c03.css" rel="stylesheet" id="quarto-text-highlighting-styles">
40<script src="site_libs/bootstrap/bootstrap.min.js"></script>
40
41<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
42<link href="site_libs/bootstrap/bootstrap-32318f9e09848cd3ad3b77093cd877d7.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
43<script id="quarto-search-options" type="application/json">{
44  "location": "navbar",
45  "copy-button": false,
46  "collapse-after": 3,
47  "panel-placement": "end",
48  "type": "overlay",
49  "limit": 50,
50  "keyboard-shortcut": [
51    "f",
52    "/",
53    "s"
54  ],
55  "show-item-context": false,
56  "language": {
57    "search-no-results-text": "No results",
58    "search-matching-documents-text": "matching documents",
59    "search-copy-link-title": "Copy link to search",
60    "search-hide-matches-text": "Hide additional matches",
61    "search-more-match-text": "more match in this document",
62    "search-more-matches-text": "more matches in this document",
63    "search-clear-button-title": "Clear",
64    "search-text-placeholder": "",
65    "search-detached-cancel-button-title": "Cancel",
66    "search-submit-button-title": "Submit",
67    "search-label": "Search"
68  }
69}</script>
vendor: 67 bytes, lines 69-70
69
70<script async="" src="https://www.googletagmanager.com/gtag/js?id=
70G-3XLB5C4Z3N
vendor: 13 bytes, lines 70-71
70"></script>
71
72<script type="text/javascript">
73
74window.dataLayer = window.dataLayer || [];
75function gtag(){dataLayer.push(arguments);}
76gtag('js', new Date());
77 
78  gtag('consent', 'default', {
79    'ad_storage': 'denied',
80    'analytics_storage': 'denied'
81  });
82gtag('config', 'G-3XLB5C4Z3N', { 'anonymize_ip': true});
83</script>
83
84
85
86<link rel="stylesheet" href="styles.css">
87<meta property="og:title" content=" Coe College Tree Archive – Coe College Tree Archive">
88<meta property="og:description" content="">
89<meta property="og:image" content="images/logo.png">
90<meta property="og:site_name" content="Coe College Tree Archive">
91</head>
92
93<body class="nav-fixed">
94
95<div id="quarto-search-results"></div>
96  <header id="quarto-header" class="headroom fixed-top">
97    <nav class="navbar navbar-expand-lg " data-bs-theme="dark">
98      <div class="navbar-container container-fluid">
99      <div class="navbar-brand-container mx-auto">
100    <a href="./index.html" class="navbar-brand navbar-brand-logo">
101    <img src="./images/logo.png" alt="" class="navbar-logo">
102    </a>
103    <a class="navbar-brand" href="./index.html">
104    <span class="navbar-title">Coe College Tree Archive</span>
105    </a>
106  </div>
107            <div id="quarto-search" class="" title="Search"></div>
108          <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Toggle navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
109  <span class="navbar-toggler-icon"></span>
110</button>
111          <div class="collapse navbar-collapse" id="navbarCollapse">
112            <ul class="navbar-nav navbar-nav-scroll me-auto">
113  <li class="nav-item">
114    <a class="nav-link active" href="./index.html" aria-current="page"> 
115<span class="menu-text">About</span></a>
116  </li>  
117  <li class="nav-item">
118    <a class="nav-link" href="./tree-map.html"> 
119<span class="menu-text">Tree Map</span></a>
120  </li>  
121  <li class="nav-item">
122    <a class="nav-link" href="./tree-profiles.html"> 
123<span class="menu-text">Tree Profiles</span></a>
124  </li>  
125  <li class="nav-item">
126    <a class="nav-link" href="./data.html"> 
127<span class="menu-text">Data</span></a>
128  </li>  
129  <li class="nav-item">
130    <a class="nav-link" href="./identification.html"> 
131<span class="menu-text">Identification</span></a>
132  </li>  
133  <li class="nav-item">
134    <a class="nav-link" href="./contribute.html"> 
135<span class="menu-text">Contribute</span></a>
136  </li>  
137  <li class="nav-item">
138    <a class="nav-link" href="./connect.html"> 
139<span class="menu-text">Connect</span></a>
140  </li>  
141</ul>
142          </div> <!-- /navcollapse -->
143            <div class="quarto-navbar-tools">
144</div>
145      </div> <!-- /container-fluid -->
146    </nav>
147</header>
148<!-- content -->
149<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
150<!-- sidebar -->
151<!-- margin-sidebar -->
152    <div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
153        <nav id="TOC" role="doc-toc" class="toc-active">
154    <h2 id="toc-title">On this page</h2>
155   
156  <ul>
157  <li><a href="#about" id="toc-about" class="nav-link active" data-scroll-target="#about"><strong>About</strong></a></li>
158  <li><a href="#how-to-use-the-archive" id="toc-how-to-use-the-archive" class="nav-link" data-scroll-target="#how-to-use-the-archive"><strong>How to Use the Archive</strong></a></li>
159  <li><a href="#guiding-principles" id="toc-guiding-principles" class="nav-link" data-scroll-target="#guiding-principles"><strong>Guiding Principles</strong></a>
160  <ul class="collapse">
161  <li><a href="#trees-are-a-part-of-our-college-identity" id="toc-trees-are-a-part-of-our-college-identity" class="nav-link" data-scroll-target="#trees-are-a-part-of-our-college-identity"><strong>Trees are a Part of Our College Identity</strong></a></li>
162  <li><a href="#our-environment-is-mutable" id="toc-our-environment-is-mutable" class="nav-link" data-scroll-target="#our-environment-is-mutable"><strong>Our Environment is Mutable</strong></a></li>
163  <li><a href="#planting-trees-will-not-save-the-worldbut-it-can-benefit-someone" id="toc-planting-trees-will-not-save-the-worldbut-it-can-benefit-someone" class="nav-link" data-scroll-target="#planting-trees-will-not-save-the-worldbut-it-can-benefit-someone"><strong>Planting Trees Will Not Save the World—But It Can Benefit Someone</strong></a></li>
164  </ul></li>
165  <li><a href="#project-background" id="toc-project-background" class="nav-link" data-scroll-target="#project-background"><strong>
165Project Background</strong></a></li>
166  </ul>
167</nav>
168    </div>
169<!-- main -->
170<main class="content page-columns page-full" id="quarto-document-content">
171
172<header id="title-block-header" class="quarto-title-block default">
173<div class="quarto-title">
174<h1 class="title"><img src="images/logo.png" width="50" height="50"> <strong>Coe College Tree Archive</strong></h1>
175</div>
176
177
178
179<div class="quarto-title-meta">
180
181    
182  
183    
184  </div>
185  
186
187
188</header>
189
190
191<section id="about" class="level2">
192<h2 class="anchored" data-anchor-id="about"><strong>About</strong></h2>
193<p>The Coe College Tree Archive is an online record of trees on the west side of Coe College’s campus. By creating an online archive, the project attempts to collect valuable environmental data, promote engagement with Coe’s urban forest, and ultimately shape how the Coe community views its trees. The online archive features interactive maps, profiles of Coe’s trees, environmental benefit estimates, tips for tree identification at Coe, and opportunities to contribute to the archive.</p>
194<p><br></p>
195</section>
196<section id="how-to-use-the-archive" class="level2">
197<h2 class="anchored" data-anchor-id="how-to-use-the-archive"><strong>How to Use the Archive</strong></h2>
198<p><span style="color: #89b04c;"><strong>Explore</strong></span> Whether you’re interested in learning more about identifying local trees or are curious about just one tree, the Coe College Tree Archive offers several opportunities to engage with the trees around campus.</p>
199<ul>
200<li>Navigate the trees of Coe College using the <a href="https://coetreearchive.github.io/tree-map.html">campus tree map</a></li>
201<li>Search for trees by their ID number or species on the <a href="https://coetreearchive.github.io/tree-profiles.html">tree profiles</a> page</li>
202<li>Try identifying trees yourself with the help of the project’s <a href="https://coetreearchive.github.io/identification.html">guide to tree identification</a></li>
203</ul>
204<p><span style="color: #89b04c;"><strong>Study</strong></span> Collecting and storing records on Coe’s urban forest are an integral part of the project’s mission, and for those interested, the archive makes these records readily available.</p>
205<ul>
206<li><a href="https://coetreearchive.github.io/data.html#download-the-tree-data">Download the tree data</a> in convenient formats for analyzing and mapping</li>
207<li>View the data and code used to build the archive on <a href="https://github.com/CoeTreeArchive/CoeTreeArchive.github.io">the project’s GitHub repository</a></li>
208<li>Read the <a href="https://coetreearchive.github.io/data.html#read-the-full-report">full tree reports</a> generated by i-Tree Eco</li>
209</ul>
210<p><span style="color: #89b04c;"><strong>Contribute</strong></span> The archive works better when everyone in the Coe community can participate in its development. Consider learning more about the ways that you can add to the archive yourself or get connected with local tree-centered causes.</p>
211<ul>
212<li>Send in observations, photos, stories, or whatever you’re willing to <a href="https://coetreearchive.github.io/contribute.html">add to the archive</a></li>
213<li>Learn more about opportunities to <a href="https://coetreearchive.github.io/connect.html">get connected</a> in local environmental efforts</li>
214</ul>
215<p><br></p>
216</section>
217<section id="guiding-principles" class="level2 page-columns page-full">
218<h2 class="anchored" data-anchor-id="guiding-principles"><strong>Guiding Principles</strong></h2>
219<section id="trees-are-a-part-of-our-college-identity" class="level3">
220<h3 class="anchored" data-anchor-id="trees-are-a-part-of-our-college-identity"><strong>Trees are a Part of Our College Identity</strong></h3>
221<p>Trees—particularly Oak trees—have long been an important part of the identity of Coe College. The College’s yearbook, which ran from 1903 through 2007, was called <em>The Acorn</em>. Likewise, the College’s sesquicentennial logo features an acorn and Oak leaves. The 2020 derecho reminded us of both the importance of our tree life on Coe’s campus and the fragility of our tree life in the face of elevated climate risks. Recognizing that trees are both vital to our community identity and under threat, the Coe College Tree Archive seeks to preserve records and stories of our trees. In doing so, the archive solidifies trees and our natural environment as an integral part of the College’s identify by recognizing the history of our trees as worthy of archiving alongside other aspects of our history.</p>
222<div class="quarto-figure quarto-figure-center">
223<figure class="figure">
224<p><img src="images/home/old_logo.png" class="img-fluid figure-img"></p>
225<figcaption>Retired Coe logo circa 2001.</figcaption>
226</figure>
227</div>
228<p><br></p>
229</section>
230<section id="our-environment-is-mutable" class="level3 page-columns page-full">
231<h3 class="anchored" data-anchor-id="our-environment-is-mutable"><strong>Our Environment is Mutable</strong></h3>
232<p>Humanity has demonstrated a remarkable ability to transform the planet. While we often see the ways people have used this power of transformation to cause environmental degradation, it is also important to highlight the ways that we all can use this power to give back to our environment. The Coe community has tremendous agency over the urban forest on campus. We should take comfort in the opportunities we have to give back to our communities through nature.</p>
233<p><br></p>
234<div class="page-columns page-full">
235<div class="quarto-figure quarto-figure-center page-columns page-full">
236<figure class="figure page-columns page-full">
237<p class="page-columns page-full"><img src="images/home/academic_quad.png" class="img-fluid figure-img column-page"></p>
238<figcaption>This panoramic view of the academic quad circa the 1930s looks barren relative to the academic quad today. The trees seen today are no accident of nature. Rather, the trees we see on our campus are the result of very intentional effort from members of our community—a reminder of the power we have as individuals and members of our close communities to affect our environment for the better.</figcaption>
239</figure>
240</div>
241</div>
242<p><br></p>
243</section>
244<section id="planting-trees-will-not-save-the-worldbut-it-can-benefit-someone" class="level3">
245<h3 class="anchored" data-anchor-id="planting-trees-will-not-save-the-worldbut-it-can-benefit-someone"><strong>Planting Trees Will Not Save the World—But It Can Benefit Someone</strong></h3>
246<p>Although we should not underestimate the power each of us has to change the world, we must also acknowledge that climate change, environmental injustice, and the degradation of the natural world are not issues any of us can resolve individually. We cannot plant enough trees to save the world.</p>
247<p>Still, trees provide tangible benefits to our local community. The project encourages all of us to find ways we can make piecemeal efforts to improve the quality of the environments we inhabit. Whether it’s by volunteering with environmental groups, sharing our financial resources, speaking up for environmental causes, or of course, planting trees, the efforts we make today to improve our local environment can benefit our community in meaningful ways for generations. The Coe College Tree Archive seeks to illustrate this point b
247y celebrating not only our trees but the staff, students, faculty, and alumni who have invested in the future of our campus by planting trees.</p>
248<p><br></p>
249</section>
250</section>
251<section id="project-background" class="level2 page-columns page-full">
252<h2 class="anchored" data-anchor-id="project-background"><strong>Project Background</strong></h2>
253<p>The Coe College Tree Archive originated in Dr.&nbsp;Allison Carr’s Environmental Rhetoric class. Dr.&nbsp;Carr challenged students in her class to find creative ways they could connect with nature and environmentalism in everyday life. Although the original project focused on observing trees for purely the intrinsic benefit, the opportunity to preserve the record of the College’s trees in an accessible format became more apparent as it progressed and motivated the Coe College Tree Archive. Similar efforts by others, like <a href="https://eeb.yale.edu/people/faculty-lecturer/marta-wells">Dr.&nbsp;Marta Wells</a> of <a href="https://naturewalk.yale.edu/about">Yale Nature Walk</a>, helped to push the effort into its current form. This project has benefited from the invaluable feedback of other students in Dr.&nbsp;Carr’s Fall 2022 Environmental Rhetoric class.</p>
254<p>The Coe College Tree Archive was created by <a href="https://perryevan.github.io/">Evan Perry</a> (Economics &amp; Math, ’23), a student in Dr.&nbsp;Carr’s Fall 2022 Environmental Rhetoric class. Evan is currently a PhD student studying Environmental Economics at the Yale School of the Environment. <strong>If you are interested in helping to maintain or expand the archive, please contact Evan by emailing <a href="mailto:[email protected]">[email protected]</a></strong> <strong>or <a href="mailto:[email protected]">[email protected]</a></strong>.</p>
255
256
257
258<div class="no-row-height column-margin column-container"><div class="">
259<p><img src="images/home/evan_perry.png" align="left" width="100" hspace="20" vspace="20"></p>
260</div></div></section>
261
262</main> <!-- /main -->
263<script id="quarto-html-after-body" type="application/javascript">
264window.document.addEventListener("DOMContentLoaded", function (event) {
265  const toggleBodyColorMode = (bsSheetEl) => {
266    const mode = bsSheetEl.getAttribute("data-mode");
267    const bodyEl = window.document.querySelector("body");
268    if (mode === "dark") {
269      bodyEl.classList.add("quarto-dark");
270      bodyEl.classList.remove("quarto-light");
271    } else {
272      bodyEl.classList.add("quarto-light");
273      bodyEl.classList.remove("quarto-dark");
274    }
275  }
276  const toggleBodyColorPrimary = () => {
277    const bsSheetEl = window.document.querySelector("link#quarto-bootstrap");
278    if (bsSheetEl) {
279      toggleBodyColorMode(bsSheetEl);
280    }
281  }
282  toggleBodyColorPrimary();  
283  const icon = "";
284  const anchorJS = new window.AnchorJS();
285  anchorJS.options = {
286    placement: 'right',
287    icon: icon
288  };
289  anchorJS.add('.anchored');
290  const isCodeAnnotation = (el) => {
291    for (const clz of el.classList) {
292      if (clz.startsWith('code-annotation-')) {                     
293        return true;
294      }
295    }
296    return false;
297  }
298  const onCopySuccess = function(e) {
299    // button target
300    const button = e.trigger;
301    // don't keep focus
302    button.blur();
303    // flash "checked"
304    button.classList.add('code-copy-button-checked');
305    var currentTitle = button.getAttribute("title");
306    button.setAttribute("title", "Copied!");
307    let tooltip;
308    if (window.bootstrap) {
309      button.setAttribute("data-bs-toggle", "tooltip");
310      button.setAttribute("data-bs-placement", "left");
311      button.setAttribute("data-bs-title", "Copied!");
312      tooltip = new bootstrap.Tooltip(button, 
313        { trigger: "manual", 
314          customClass: "code-copy-button-tooltip",
315          offset: [0, -8]});
316      tooltip.show();    
317    }
318    setTimeout(function() {
319      if (tooltip) {
320        tooltip.hide();
321        button.removeAttribute("data-bs-title");
322        button.removeAttribute("data-bs-toggle");
323        button.removeAttribute("data-bs-placement");
324      }
325      button.setAttribute("title", currentTitle);
326      button.classList.remove('code-copy-button-checked');
327    }, 1000);
328    // clear code selection
329    e.clearSelection();
330  }
331  const getTextToCopy = function(trigger) {
332      const codeEl = trigger.previousElementSibling.cloneNode(true);
333      for (const childEl of codeEl.children) {
334        if (isCodeAnnotation(childEl)) {
335          childEl.remove();
336        }
337      }
338      return codeEl.innerText;
339  }
340  const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
341    text: getTextToCopy
342  });
343  clipboard.on('success', onCopySuccess);
344  if (window.document.getElementById('quarto-embedded-source-code-modal')) {
345    const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
346      text: getTextToCopy,
347      container: window.document.getElementById('quarto-embedded-source-code-modal')
348    });
349    clipboardModal.on('success', onCopySuccess);
350  }
351    var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
352    var mailtoRegex = new RegExp(/^mailto:/);
353      var filterRegex = new RegExp('/' + window.location.host + '/');
354    var isInternal = (href) => {
355        return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
356    }
357    // Inspect non-navigation links and adorn them if external
358 	var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
359    for (var i=0; i<links.length; i++) {
360      const link = links[i];
361      if (!isInternal(link.href)) {
362        // undo the damage that might have been done by quarto-nav.js in the case of
363        // links that we want to consider external
364        if (link.dataset.originalHref !== undefined) {
365          link.href = link.dataset.originalHref;
366        }
367      }
368    }
369  function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
370    const config = {
371      allowHTML: true,
372      maxWidth: 500,
373      delay: 100,
374      arrow: false,
375      appendTo: function(el) {
376          return el.parentElement;
377      },
378      interactive: true,
379      interactiveBorder: 10,
380      theme: 'quarto',
381      placement: 'bottom-start',
382    };
383    if (contentFn) {
384      config.content = contentFn;
385    }
386    if (onTriggerFn) {
387      config.onTrigger = onTriggerFn;
388    }
389    if (onUntriggerFn) {
390      config.onUntrigger = onUntriggerFn;
391    }
392    window.tippy(el, config); 
393  }
394  const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
395  for (var i=0; i<noterefs.length; i++) {
396    const ref = noterefs[i];
397    tippyHover(ref, function() {
398      // use id or data attribute instead here
399      let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
400      try { href = new URL(href).hash; } catch {}
401      const id = href.replace(/^#\/?/, "");
402      const note = window.document.getElementById(id);
403      if (note) {
404        return note.innerHTML;
405      } else {
406        return "";
407      }
408    });
409  }
410  const xrefs = window.document.querySelectorAll('a.quarto-xref');
411  const processXRef = (id, note) => {
412    // Strip column container classes
413    const stripColumnClz = (el) => {
414      el.classList.remove("page-full", "page-columns");
415      if (el.children) {
416        for (const child of el.children) {
417          stripColumnClz(child);
418        }
419      }
420    }
421    stripColumnClz(note)
422    if (id === null || id.startsWith('sec-')) {
423      // Special case sections, only their first couple elements
424      const container = document.createElement("div");
425      if (note.children && note.children.length > 2) {
426        container.appendChild(note.children[0].cloneNode(true));
427        for (let i = 1; i < note.children.length; i++) {
428          const child = note.children[i];
429          if (child.tagName === "P" && child.innerText === "") {
430            continue;
431          } else {
432            container.appendChild(child.cloneNode(true));
433            break;
434          }
435        }
436        if (window.Quarto?.typesetMath) {
437          window.Quarto.typesetMath(container);
438        }
439        return container.innerHTML
440      } else {
441        if (window.Quarto?.typesetMath) {
442          window.Quarto.typesetMath(note);
443        }
444        return note.innerHTML;
445      }
446    } else {
447      // Remove any anchor links if they are present
448      const anchorLink = note.querySelector('a.anchorjs-link');
449      if (anchorLink) {
450        anchorLink.remove();
451      }
452      if (window.Quarto?.typesetMath) {
453        window.Quarto.typesetMath(note);
454      }
455      if (note.classList.contains("callout")) {
456        return note.outerHTML;
457      } else {
458        return note.innerHTML;
459      }
460    }
461  }
462  for (var i=0; i<xrefs.length; i++) {
463    const xref = xrefs[i];
464    tippyHover(xref, undefined, function(instance) {
465      instance.disable();
466      let url = xref.getAttribute('href');
467      let hash = undefined; 
468      if (url.startsWith('#')) {
469        hash = url;
470      } else {
471        try { hash = new URL(url).hash; } catch {}
472      }
473      if (hash) {
474        const id = hash.replace(/^#\/?/, "");
475        const note = window.document.getElementById(id);
476        if (note !== null) {
477          try {
478            const html = processXRef(id, note.cloneNode(true));
479            instance.setContent(html);
480          } finally {
481            instance.enable();
482            instance.show();
483          }
484        } else {
485          // See if we can fetch this
486          fetch(url.split('#')[0])
487          .then(res => res.text())
488          .then(html => {
489            const parser = new DOMParser();
490            const htmlDoc = parser.parseFromString(html, "text/html");
491            const note = htmlDoc.getElementById(id);
492            if (note !== null) {
493              const html = processXRef(id, note);
494              instance.setContent(html);
495            } 
496          }).finally(() => {
497            instance.enable();
498            instance.show();
499          });
500        }
501      } else {
502        // See if we can fetch a full url (with no hash to target)
503        // This is a special case and we should probably do some content thinning / targeting
504        fetch(url)
505        .then(res => res.text())
506        .then(html => {
507          const parser = new DOMParser();
508          const htmlDoc = parser.parseFromString(html, "text/html");
509          const note = htmlDoc.querySelector('main.content');
510          if (note !== null) {
511            // This should only happen for chapter cross references
512            // (since there is no id in the URL)
513            // remove the first header
514            if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
515              note.children[0].remove();
516            }
517            const html = processXRef(null, note);
518            instance.setContent(html);
519          } 
520        }).finally(() => {
521          instance.enable();
522          instance.show();
523        });
524      }
525    }, function(instance) {
526    });
527  }
528      let selectedAnnoteEl;
529      const selectorForAnnotation = ( cell, annotation) => {
530        let cellAttr = 'data-code-cell="' + cell + '"';
531        let lineAttr = 'data-code-annotation="' +  annotation + '"';
532        const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
533        return selector;
534      }
535      const selectCodeLines = (annoteEl) => {
536        const doc = window.document;
537        const targetCell = annoteEl.getAttribute("data-target-cell");
538        const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
539        const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
540        const lines = annoteSpan.getAttribute("data-code-lines").split(",");
541        const lineIds = lines.map((line) => {
542          return targetCell + "-" + line;
543        })
544        let top = null;
545        let height = null;
546        let parent = null;
547        if (lineIds.length > 0) {
548            //compute the position of the single el (top and bottom and make a div)
549            const el = window.document.getElementById(lineIds[0]);
550            top = el.offsetTop;
551            height = el.offsetHeight;
552            parent = el.parentElement.parentElement;
553          if (lineIds.length > 1) {
554            const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
555            const bottom = lastEl.offsetTop + lastEl.offsetHeight;
556            height = bottom - top;
557          }
558          if (top !== null && height !== null && parent !== null) {
559            // cook up a div (if necessary) and position it 
560            let div = window.document.getElementById("code-annotation-line-highlight");
561            if (div === null) {
562              div = window.document.createElement("div");
563              div.setAttribute("id", "code-annotation-line-highlight");
564              div.style.position = 'absolute';
565              parent.appendChild(div);
566            }
567            div.style.top = top - 2 + "px";
568            div.style.height = height + 4 + "px";
569            div.style.left = 0;
570            let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
571            if (gutterDiv === null) {
572              gutterDiv = window.document.createElement("div");
573              gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
574              gutterDiv.style.position = 'absolute';
575              const codeCell = window.document.getElementById(targetCell);
576              const gutter = codeCell.querySelector('.code-annotation-gutter');
577              gutter.appendChild(gutterDiv);
578            }
579            gutterDiv.style.top = top - 2 + "px";
580            gutterDiv.style.height = height + 4 + "px";
581          }
582          selectedAnnoteEl = annoteEl;
583        }
584      };
585      const unselectCodeLines = () => {
586        const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
587        elementsIds.forEach((elId) => {
588          const div = window.document.getElementById(elId);
589          if (div) {
590            div.remove();
591          }
592        });
593        selectedAnnoteEl = undefined;
594      };
595        // Handle positioning of the toggle
596    window.addEventListener(
597      "resize",
598      throttle(() => {
599        elRect = undefined;
600        if (selectedAnnoteEl) {
601          selectCodeLines(selectedAnnoteEl);
602        }
603      }, 10)
604    );
605    function throttle(fn, ms) {
606    let throttle = false;
607    let timer;
608      return (...args) => {
609        if(!throttle) { // first call gets through
610            fn.apply(this, args);
611            throttle = true;
612        } else { // all the others get throttled
613            if(timer) clearTimeout(timer); // cancel #2
614            timer = setTimeout(() => {
615              fn.apply(this, args);
616              timer = throttle = false;
617            }, ms);
618        }
619      };
620    }
621      // Attach click handler to the DT
622      const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
623      for (const annoteDlNode of annoteDls) {
624        annoteDlNode.addEventListener('click', (event) => {
625          const clickedEl = event.target;
626          if (clickedEl !== selectedAnnoteEl) {
627            unselectCodeLines();
628            const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
629            if (activeEl) {
630              activeEl.classList.remove('code-annotation-active');
631            }
632            selectCodeLines(clickedEl);
633            clickedEl.classList.add('code-annotation-active');
634          } else {
635            // Unselect the line
636            unselectCodeLines();
637            clickedEl.classList.remove('code-annotation-active');
638          }
639        });
640      }
641  const findCites = (el) => {
642    const parentEl = el.parentElement;
643    if (parentEl) {
644      const cites = parentEl.dataset.cites;
645      if (cites) {
646        return {
647          el,
648          cites: cites.split(' ')
649        };
650      } else {
651        return findCites(el.parentElement)
652      }
653    } else {
654      return undefined;
655    }
656  };
657  var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
658  for (var i=0; i<bibliorefs.length; i++) {
659    const ref = bibliorefs[i];
660    const citeInfo = findCites(ref);
661    if (citeInfo) {
662      tippyHover(citeInfo.el, function() {
663        var popup = window.document.createElement('div');
664        citeInfo.cites.forEach(function(cite) {
665          var citeDiv = window.document.createElement('div');
666          citeDiv.classList.add('hanging-indent');
667          citeDiv.classList.add('csl-entry');
668          var biblioDiv = window.document.getElementById('ref-' + cite);
669          if (biblioDiv) {
670            citeDiv.innerHTML = biblioDiv.innerHTML;
671          }
672          popup.appendChild(citeDiv);
673        });
674        return popup.innerHTML;
675      });
676    }
677  }
678});
679</script>
679
680</div> <!-- /content -->
681
682
683
684
685</body></html>

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.