PageSourceSearch

https://robanders.ca/includes/www.robanders.ca.js

js robanders.ca collected 2026-10-02 22:16:28 UTC 23,423 bytes, 649 lines download raw bytes

1var _____WB$wombat$assign$function_____ = function (name) {
2    return (self._wb_wombat && self._wb_wombat.local_init && self._wb_wombat.local_init(name)) || self[name];
3};
4if (!self.__WB_pmw) {
5    self.__WB_pmw = function (obj) {
6        this.__WB_source = obj;
7        return this;
8    }
9}
10{
11    let window = _____WB$wombat$assign$function_____("window");
12    let self = _____WB$wombat$assign$function_____("self");
13    let document = _____WB$wombat$assign$function_____("document");
14    let location = _____WB$wombat$assign$function_____("location");
15    let top = _____WB$wombat$assign$function_____("top");
16    let parent = _____WB$wombat$assign$function_____("parent");
17    let frames = _____WB$wombat$assign$function_____("frames");
18    let opener = _____WB$wombat$assign$function_____("opener");
19
20    function validateAll(which) {
21
22
23        var pass = true;
24        if (document.images) {
25
26            for (i = 0; i < which.length; i++) {
27
28                var tempobj = which.elements[i];
29                if (tempobj.name.substring(0, 1) == "*") {
30
31                    if (((tempobj.type == "text" || tempobj.type == "textarea") &&
32                        tempobj.value == '') || (tempobj.type.toString().charAt(0) == "s" &&
33                        tempobj.selectedIndex == 0)) {
34                        pass = false;
35                        break;
36                    }
37                }
38            }
39        }
40
41        if (!pass) {
42            shortFieldName = tempobj.name.substring(1, 30).toUpperCase();
43            alert("Please make sure the " + shortFieldName + " field was properly completed.");
44            return false;
45        } else
46            return true;
47    }
48
49    /*  FRENCH VERSION */
50
51    function validateAllFrench(which) {
52
53        var pass = true;
54        if (document.images) {
55
56            for (i = 0; i < which.length; i++) {
57
58                var tempobj = which.elements[i];
59                if (tempobj.name.substring(0, 1) == "*") {
60
61                    if (((tempobj.type == "text" || tempobj.type == "textarea") &&
62                        tempobj.value == '') || (tempobj.type.toString().charAt(0) == "s" &&
63                        tempobj.selectedIndex == 0)) {
64                        pass = false;
65                        break;
66                    }
67                }
68            }
69        }
70
71        if (!pass) {
72            shortFieldName = tempobj.name.substring(1, 30).toUpperCase();
73            alert("Veuillez vous assurer que le champ " + shortFieldName + " a");
74        }
75    }
76
77
78    /* FLASH VIDEO JAVASCRIPT */
79
80    var videoLoaded = 0;
81
82    function loadGutterVideoScreen(movieName) {
83
84        crossobj = document.getElementById("cpcGutterVideoScreen");
85
86        crossobj.innerHTML = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="https://web.archive.org/web/20130115203522/http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="181" height="180" id="flvplayer" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="/media/flvPlayerHome.swf?file=' + movieName + '" /> <param name="menu" value="false" /> <param name="quality" value="high" /> <PARAM NAME=wmode VALUE=transparent> <embed src="/media/flvPlayerHome.swf?file=' + movieName + '" menu="false" quality="high" wmode=transparent width="181" height="180" name="flvplayer" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="https://web.archive.org/web/20130115203522/http://www.macromedia.com/go/getflashplayer" /></object>';
87
88        return false;
89
90    }
91
92
93    function loadFlashVideoScreen(movieName) {
94
95        crossobj = document.getElementById("cpcVideoScreen");
96
97        crossobj.innerHTML = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="https://web.archive.org/web/20130115203522/http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="100%" height="100%" id="flvplayer" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="/media/templateElements/moduleinterface/1884/flvplayer.swf?file=' + movieName + '" /> <param name="menu" value="false" /> <param name="quality" value="high" /> <PARAM NAME=wmode VALUE=transparent> <embed src="/media/flvplayer.swf?file=' + movieName + '" menu="false" quality="high" wmode=transparent width="181" height="180" name="flvplayer" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="https://web.archive.org/web/2013011
975203522/http://www.macromedia.com/go/getflashplayer" /></object>';
98
99        return false;
100
101    }
102
103
104    function loadFeatureVideoScreen(movieName) {
105
106        crossobj = document.getElementById("mpVideoScreen");
107
108        crossobj.innerHTML = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="https://web.archive.org/web/20130115203522/http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="350" height="304" id="flvplayer" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="/media/templateElements/moduleinterface/1884/flvplayer.swf?file=' + movieName + '" /> <param name="menu" value="false" /> <param name="quality" value="high" /> <PARAM NAME=wmode VALUE=transparent> <embed src="/media/flvplayer.swf?file=' + movieName + '" menu="false" quality="high" wmode=transparent width="350" height="304" name="flvplayer" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="https://web.archive.org/web/20130115203522/http://www.macromedia.com/go/getflashplayer" /></object>';
109
110        return false;
111
112    }
113
114
115    /*  Description changer  */
116
117    function loadFlashVideoDetails(info, objectName) {
118
119        if (ie || ns6) {
120            crossobj = document.getElementById(objectName);
121            if (crossobj == null)
122                crossobj = document.getElementById(objectName);
123        }
124
125        crossobj.innerHTML = info;
126
127        return false;
128
129    }
130
131    /* Video Screen Quicktime - JS */
132
133    function loadVideoScreen(movieName) {
134
135        if (ie || ns6) {
136            crossobj = document.getElementById("videoScreen");
137            if (crossobj == null)
138                crossobj = document.getElementById("videoScreen");
139        }
140
141
142//alert(movieName);
143
144        crossobj.innerHTML = '<embed src=' + movieName + ' width="181" height="180" type="video/quicktime" caching="yes" pluginspage="https://web.archive.org/web/20130115203522/http://www.apple.com/quicktime"></embed>';
145
146        return false;
147
148    }
149
150
151    $(window).load(function () {
152        //Check for Image
153        $("img").each(function () {
154            var subImg = $(this).attr("src");
155            if (subImg == "") {
156                $(this).remove();
157            }
158        });
159        //default show hide
160        $(".items").each(function () {
161            if ($(this).find(".item").length == 0) {
162                $(this).remove();
163            }
164        });
165        //Check for Twitter
166        $("#twitter_update_list").each(function () {
167            var text = $(this).html();
168            if (text == "") {
169                $("#twitter_update_list").remove();
170                $("#twitterBannerLogo").remove();
171            }
172        });
173        //enable fancybox in body
174        $(".mp2012 .photoGalInstance a").fancybox({
175            'transitionIn': 'elastic',
176            'transitionOut': 'elastic',
177            'speedIn': 600,
178            'speedOut': 200,
179            'overlayShow': true,
180            'overlayColor': '#1D3D5E',
181            'titlePosition': 'over'
182        });
183
184
185        var slicePoint = 70;
186        var widow = 4;
187        $('.sliderText a').each(function () {
188            var allText = $(this).html();
189            var startText = allText.slice(0, slicePoint).replace(/w+$/, '');
190            var endText = allText.slice(startText.length);
191
192            $(this).html([startText, '...'].join(''));
193
194
195        });
196
197    });
198
199
200    /*
201     * Date Format 1.2.3
202     * (c) 2007-2009 Steven Levithan <stevenlevithan.com>
203     * MIT license
204     *
205     * Includes enhancements by Scott Trenda <scott.trenda.net>
206     * and Kris Kowal <cixar.com/~kris.kowal/>
207     *
208     * Accepts a date, a mask, or a date and a mask.
209     * Returns a formatted version of the given date.
210     * The date defaults to the current date/time.
211     * The mask defaults to dateFormat.masks.default.
212     */
213
214    var dateFormat = function () {
215        var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])1?|[LloSZ]|"[^"]*"|'[^']*'/g,
216            timezone = /b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]d{4})?)b/g,
217            timezoneClip = /[^-+dA-Z]/g,
218            pad = function (val, len) {
219                val = String(val);
220                len = len || 2;
221                while (val.length < len) val = "0" + val;
222                return val;
223            };
224
225        // Regexes and supporting functions are cached through closure
226        return function (date, mask, utc) {
227            var dF = dateFormat;
228
229            // You can't provide utc if you skip other args (use the "UTC:" mask prefix)
230            if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/d/.test(date)) {
231                mask = date;
232                date = undefined;
233            }
234
235            // Passing date through Date applies Date.parse, if necessary
236            date = date ? new Date(date) : new Date;
237            if (isNaN(date)) throw SyntaxError("invalid date");
238
239            mask = String(dF.masks[mask] || mask || dF.masks["default"]);
240
241            // Allow setting the utc argument via the mask
242            if (mask.slice(0, 4) == "UTC:") {
243                mask = mask.slice(4);
244                utc = true;
245            }
246
247            var _ = utc ? "getUTC" : "get",
248                d = date[_ + "Date"](),
249                D = date[_ + "Day"](),
250                m = date[_ + "Month"](),
251                f = date[_ + "Month"](),
252                y = date[_ + "FullYear"](),
253                H = date[_ + "Hours"](),
254                M = date[_ + "Minutes"](),
255                s = date[_ + "Seconds"](),
256                L = date[_ + "Milliseconds"](),
257                o = utc ? 0 : date.getTimezoneOffset(),
258                flags = {
259                    d: d,
260                    dd: pad(d),
261                    ddd: dF.i18n.dayNames[D],
262                    dddd: dF.i18n.dayNames[D + 7],
263                    m: m + 1,
264                    mm: pad(m + 1),
265                    mmm: dF.i18n.monthNames[m],
266                    mmmm: dF.i18n.monthNames[m + 12],
267                    yy: String(y).slice(2),
268                    yyyy: y,
269                    h: H % 12 || 12,
270                    hh: pad(H % 12 || 12),
271                    H: H,
272                    HH: pad(H),
273                    M: pad(M),
274                    MM: pad(M),
275                    s: s,
276                    ss: pad(s),
277                    l: pad(L, 3),
278                    L: pad(L > 99 ? Math.round(L / 10) : L),
279                    t: H < 12 ? "am" : "pm",
280                    tt: H < 12 ? "am" : "pm",
281                    T: H < 12 ? "A" : "P",
282                    TT: H < 12 ? "AM" : "PM",
283                    Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
284                    o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
285                    S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
286                };
287
288            return mask.replace(token, function ($0) {
289                return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
290            });
291        };
292    }();
293
294// Some common format strings
295    dateFormat.masks = {
296        "default": "ddd mmm dd yyyy HH:MM:ss",
297        shortDate: "m/d/yy",
298        mediumDate: "mmm d, yyyy",
299        longDate: "mmmm d, yyyy",
300        fullDate: "dddd, mmmm d, yyyy",
301        shortTime: "h:MM TT",
302        mediumTime: "h:MM:ss TT",
303        longTime: "h:MM:ss TT Z",
304        isoDate: "yyyy-mm-dd",
305        isoTime: "HH:MM:ss",
306        isoDateTime: "yyyy-mm-dd'T'HH:MM:ss",
307        isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
308    };
309
310// Internationalization strings
311    dateFormat.i18n = {
312        dayNames: [
313            "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
314            "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
315        ],
316        monthNames: [
317            "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
318            "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
319        ]
320    };
321
322// For convenience...
323    Date.prototype.format = function (mask, utc) {
324        return dateFormat(this, mask, utc);
325    };
326
327    /*
328     * Date Format 1.2.3
329     * (c) 2007-2009 Steven Levithan <stevenlevithan.com>
330     * MIT license
331     *
332     * Includes enhancements by Scott Trenda <scott.trenda.net>
333     * and Kris Kowal <cixar.com/~kris.kowal/>
334     *
335     * Accepts a date, a mask, or a date and a mask.
336     * Returns a formatted version of the given date.
337     * The date defaults to the current date/time.
338     * The mask defaults to dateFormatFR.masks.default.
339     */
340
341    var dateFormatFR = function () {
342        var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])1?|[LloSZ]|"[^"]*"|'[^']*'/g,
343            timezone = /b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]d{4})?)b/g,
344            timezoneClip = /[^-+dA-Z]/g,
345            pad = function (val, len) {
346                val = String(val);
347                len = len || 2;
348                while (val.length < len) val = "0" + val;
349                return val;
350            };
351
352        // Regexes and supporting functions are cached through closure
353        return function (date, mask, utc) {
354            var dF = dateFormatFR;
355
356            // You can't provide utc if you skip other args (use the "UTC:" mask prefix)
357            if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/d/.test(date)) {
358                mask = date;
359                date = undefined;
360            }
361
362            // Passing date through Date applies Date.parse, if necessary
363            date = date ? new Date(date) : new Date;
364            if (isNaN(date)) throw SyntaxError("invalid date");
365
366            mask = String(dF.masks[mask] || mask || dF.masks["default"]);
367
368            // Allow setting the utc argument via the mask
369            if (mask.slice(0, 4) == "UTC:") {
370                mask = mask.slice(4);
371                utc = true;
372            }
373
374            var _ = utc ? "getUTC" : "get",
375                d = date[_ + "Date"](),
376                D = date[_ + "Day"](),
377                m = date[_ + "Month"](),
378                f = date[_ + "Month"](),
379                y = date[_ + "FullYear"](),
380                H = date[_ + "Hours"](),
381                M = date[_ + "Minutes"](),
382                s = date[_ + "Seconds"](),
383                L = date[_ + "Milliseconds"](),
384                o = utc ? 0 : date.getTimezoneOffset(),
385                flags = {
386                    d: d,
387                    dd: pad(d),
388                    ddd: dF.i18n.dayNames[D],
389                    dddd: dF.i18n.dayNames[D + 7],
390                    m: m + 1,
391                    mm: pad(m + 1),
392                    mmm: dF.i18n.monthNames[m],
393                    mmmm: dF.i18n.monthNames[m + 12],
394                    yy: String(y).slice(2),
395                    yyyy: y,
396                    h: H % 12 || 12,
397                    hh: pad(H % 12 || 12),
398                    H: H,
399                    HH: pad(H),
400                    M: pad(M),
401                    MM: pad(M),
402                    s: s,
403                    ss: pad(s),
404                    l: pad(L, 3),
405                    L: pad(L > 99 ? Math.round(L / 10) : L),
406                    t: H < 12 ? "am" : "pm",
407                    tt: H < 12 ? "am" : "pm",
408                    T: H < 12 ? "A" : "P",
409                    TT: H < 12 ? "AM" : "PM",
410                    Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
411                    o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
412                    S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
413                };
414
415            return mask.replace(token, function ($0) {
416                return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
417            });
418        };
419    }();
420
421// Some common format strings
422    dateFormatFR.masks = {
423        "default": "ddd mmm dd yyyy HH:MM:ss",
424        shortDate: "m/d/yy",
425        mediumDate: "mmm d, yyyy",
426        longDate: "mmmm d, yyyy",
427        fullDate: "dddd, mmmm d, yyyy",
428        shortTime: "h:MM TT",
429        mediumTime: "h:MM:ss TT",
430        longTime: "h:MM:ss TT Z",
431        isoDate: "yyyy-mm-dd",
432        isoTime: "HH:MM:ss",
433        isoDateTime: "yyyy-mm-dd'T'HH:MM:ss",
434        isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
435    };
436
437// Internationalization strings
438    dateFormatFR.i18n = {
439        dayNames: [
440            "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
441            "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
442        ],
443        monthNames: [
444            "Jan", "Fev", "Mar", "Apv", "Mai", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
445            "janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"
446        ]
447    };
448
449// For convenience...
450    Date.prototype.format = function (mask, utc) {
451        return dateFormatFR(this, mask, utc);
452    };
453
454
455    $(document).ready(function () {
456        $(".items").each(function () {
457            if ($(this).find(".item").length == 0) {
458                $(this).remove();
459            }
460        });
461    });
462
463
464    //do browser stuff
465    dom = (document.getElementById) ? true : false;
466    ns5 = ((navigator.userAgent.indexOf("Gecko") > -1) && dom) ? true : false;
467    ie5 = ((navigator.userAgent.indexOf("MSIE") > -1) && dom) ? true : false;
468    ns4 = (document.layers && !dom) ? true : false;
469    ie4 = (document.all && !dom) ? true : false;
470    nodyn = (!ns5 && !ns4 && !ie4 && !ie5) ? true : false;
471    var zIndexXPR = 1;
472
473    function showDiv(iidee) {
474        zIndexXPR++;
475
476        var theLyr = (ns4) ? document.layers[iidee] : (ie4) ? document.all[iidee].style : (ie5 || ns5) ? document.getElementById(iidee).style : null;
477        theLyr.display = '';
478        theLyr.zIndex = zIndexXPR;
479    }
480
481    function hideDiv(iidee) {
482        var theLyr = (ns4) ? document.layers[iidee] : (ie4) ? document.all[iidee].style : (ie5 || ns5) ? document.getElementById(iidee).style : null;
483        theLyr.display = 'none';
484    }
485
486    jQuery(document).ready(function () {
487
488        // Main Nav Hover function
489        jQuery('.mp2011-main-nav-ul > li').hoverIntent({
490            timeout: 300,
491            over: function () {
492                jQuery(this).find('.mp2011-main-nav-level2-container').slideDown(250);
493            },
494            out: function () {
495                jQuery(this).find('.mp2011-main-nav-level2-container').fadeOut(250);
496            }
497        });
498
499    });
500
501    /* GALLERY SCRIPT*/
502
503    var ie = document.all;
504    var ns6 = document.getElementById && !document.all;
505
506
507    function ietruebody() {
508        return (document.compatMode && document.compatMode != "BackCompat" && !window.opera) ? document.documentElement : document.body;
509    }
510
511    function enlarge(which) {
512
513        if (ie || ns6) {
514            crossobj = document.getElementById("showimage");
515        }
516
517        crossobj.innerHTML = '<img src="' + which + '" align=center>';
518        crossobj.style.visibility = "visible";
519        return false;
520
521    }
522
523
524    function showImageInfo(description) {
525        document.getElementById("info").innerHTML = '<p class=galleryInfoDesc>' + description + '</p>';
526        return false;
527    }
528
529    var totalRows = 0;
530    var currentRow = 0;
531
532    function switchRow(direction) {
533
534        rowName = 'imageRow' + currentRow;
535
536//hide the current row that is visible.
537        openhide(rowName);
538
539
540        if (direction == 'next') {
541            currentRow++;
542
543//check to see if the new number is greater than total rows
544            if (currentRow > totalRows) {
545                currentRow = 1;
546            }
547
548        } else if (direction == 'back') {
549            currentRow--;
550
551//check to see if the new number is less than 1
552            if (currentRow == 0) {
553                currentRow = totalRows;
554            }
555
556        }
557
558        rowName = 'imageRow' + currentRow;
559//hide the current row that is visible.
560        openhide(rowName);
561    }
562
563    var openPopup = window.open;
564
565    function show_msg(msg) {
566        alert(msg);
567    }
568
569    function validateForm() {
570        missing_required = 0;
571
572        for (i = 0; i < arguments.length; i++) {
573            if (arguments[i] == '') {
574                missing_required = 1;
575            }
576        }
577
578        if (missing_required) {
579            alert("A required form field is missing.");
580            return false;
581        } else {
582            return true;
583        }
584    }
585
586    function expCustomLink(myURL) {
587        location.href = myURL;
588    }
589
590    function setUrl(path) {
591        document.location.href = path;
592    }
593
594    function expArticleLink(sectionId, articleId) {
595        location.href = '/index.php?section_id=' + sectionId + '&section_copy_id=' + articleId;
596    }
597
598    function expPopupWindow(url, widthVal, heightVal, resizableVal, scrollbarsVal, toolbarVal, locationVal, directoriesVal, statusVal, menubarVal, copyHistoryVal) {
599
600        var attributes = "width=" + widthVal +
601            ",height=" + heightVal +
602            ",resizable=" + resizableVal +
603            ",scrollbars=" + scrollbarsVal +
604            ",toolbar=" + toolbarVal +
605            ",location=" + locationVal +
606            ",directories=" + directoriesVal +
607            ",status=" + statusVal +
608            ",menubar=" + menubarVal +
609            ",copyhistory=" + copyHistoryVal;
610
611        window.open(url, 'WindowName', attributes);
612    }
613
614    function xprLog(msg) {
615        if (window.console) console.log(msg);
616    }
617
618    if (document.addEventListener) {
619        document.addEventListener("DOMContentLoaded", function () {
620            if (typeof onXprPageLoad == 'function') onXprPageLoad();
621        }, false);
622    } else if (document.attachEvent) {
623        document.attachEvent('DOMContentLoaded', function () {
624            if (typeof onXprPageLoad == 'function') onXprPageLoad();
625        });
626    }
627
628
629}
630/*
631     FILE ARCHIVED ON 20:35:22 Jan 15, 2013 AND RETRIEVED FROM THE
632     INTERNET ARCHIVE ON 10:41:50 Apr 10, 2025.
633     JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE.
634
635     ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C.
636     SECTION 108(a)(3)).
637*/
638/*
639playback timings (ms):
640  captures_list: 0.669
641  exclusion.robots: 0.025
642  exclusion.robots.policy: 0.012
643  esindex: 0.012
644  cdx.remote: 35.191
645  LoadShardBlock: 151.59 (3)
646  PetaboxLoader3.datanode: 181.032 (4)
647  load_resource: 219.836
648  PetaboxLoader3.resolve: 142.299
649*/

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.