PageSourceSearch

https://www.orrick.com/Scripts/others.js

js orrick.com collected 2026-10-01 08:40:31 UTC 34,513 bytes, 704 lines download raw bytes

1/**
2 * Lightweight Touch Events - Modern replacement for jQuery Mobile v1.4.5 touch events.
3 * Provides: throttledresize, orientationchange, vmouse events,
4 *           tap, taphold, swipe, swipeleft, swiperight, scrollstart, scrollstop
5 */
6(function ($, window, document) {
7    'use strict';
8
9    // --- Support detection ---
10    var support = {
11        touch: 'ontouchend' in document,
12        orientation: 'orientation' in window && 'onorientationchange' in window
13    };
14    $.extend($.support, { orientation: support.orientation });
15    $.mobile = $.mobile || {};
16    $.mobile.support = $.mobile.support || {};
17    $.extend($.support, { touch: support.touch });
18    $.extend($.mobile.support, { touch: support.touch });
19
20    var touchStartEvent = support.touch ? 'touchstart' : 'mousedown';
21    var touchStopEvent = support.touch ? 'touchend' : 'mouseup';
22    var touchMoveEvent = support.touch ? 'touchmove' : 'mousemove';
23
24    // --- throttledresize ---
25    (function () {
26        var throttleDelay = 250;
27        var lastCall = 0;
28        var timer;
29
30        $.event.special.throttledresize = {
31            setup: function () {
32                var self = this;
33                $(this).on('resize._throttledresize', function () {
34                    var now = Date.now();
35                    var elapsed = now - lastCall;
36                    if (elapsed >= throttleDelay) {
37                        lastCall = now;
38                        $(self).trigger('throttledresize');
39                    } else {
40                        clearTimeout(timer);
41                        timer = setTimeout(function () {
42                            lastCall = Date.now();
43                            $(self).trigger('throttledresize');
44                        }, throttleDelay - elapsed);
45                    }
46                });
47            },
48            teardown: function () {
49                $(this).off('resize._throttledresize');
50            }
51        };
52    })();
53
54    // --- orientationchange ---
55    (function () {
56        var lastOrientation;
57
58        function getOrientation() {
59            if (support.orientation) {
60                var map = { 0: true, 180: true };
61                return map[window.orientation] ? 'portrait' : 'landscape';
62            }
63            var docEl = document.documentElement;
64            return (docEl && docEl.clientWidth / docEl.clientHeight < 1.1) ? 'portrait' : 'landscape';
65        }
66
67        lastOrientation = getOrientation();
68
69        function checkOrientation() {
70            var current = getOrientation();
71            if (current !== lastOrientation) {
72                lastOrientation = current;
73                $(window).trigger('orientationchange');
74            }
75        }
76
77        $.event.special.orientationchange = {
78            setup: function () {
79                if (support.orientation && !$.event.special.orientationchange.disabled) {
80                    return false;
81                }
82                lastOrientation = getOrientation();
83                $(window).on('throttledresize._orientationchange', checkOrientation);
84            },
85            teardown: function () {
86                if (support.orientation && !$.event.special.orientationchange.disabled) {
87                    return false;
88                }
89                $(window).off('throttledresize._orientationchange');
90            },
91            add: function (handleObj) {
92                var origHandler = handleObj.handler;
93                handleObj.handler = function (event) {
94                    event.orientation = getOrientation();
95                    return origHandler.apply(this, arguments);
96                };
97            }
98        };
99
100        $.event.special.orientationchange.orientation = getOrientation;
101
102        $.fn.orientationchange = function (fn) {
103            return fn ? this.on('orientationchange', fn) : this.trigger('orientationchange');
104        };
105    })();
106
107    // --- Virtual Mouse Events (vmouse) ---
108    (function () {
109        var vmouseEvents = 'vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel'.split(' ');
110
111        $.vmouse = {
112            moveDistanceThreshold: 10,
113            clickDistanceThreshold: 10,
114            resetTimerDuration: 1500
115        };
116
117        var nativeMap = {
118            vmouseover: support.touch ? 'touchstart' : 'mouseover',
119            vmousedown: support.touch ? 'touchstart' : 'mousedown',
120            vmousemove: support.touch ? 'touchmove' : 'mousemove',
121            vmouseup: support.touch ? 'touchend' : 'mouseup',
122            vclick: 'click',
123            vmouseout: support.touch ? 'touchend' : 'mouseout',
124            vmousecancel: support.touch ? 'touchcancel' : 'mouseout'
125        };
126
127        $.each(vmouseEvents, function (i, vmEvent) {
128            $.event.special[vmEvent] = {
129                setup: function () {
130                    var nativeEvent = nativeMap[vmEvent];
131                    if (nativeEvent) {
132                        $(this).on(nativeEvent + '._vmouse_' + vmEvent, function (e) {
133                            var newEvent = $.Event(vmEvent);
134                            newEvent.originalEvent = e.originalEvent || e;
135                            if (e.originalEvent && e.originalEvent.touches && e.originalEvent.touches.length) {
136                                var touch = e.originalEvent.touches[0];
137                                newEvent.pageX = touch.pageX;
138                                newEvent.pageY = touch.pageY;
139                                newEvent.clientX = touch.clientX;
140                                newEvent.clientY = touch.clientY;
141                                newEvent.screenX = touch.screenX;
142                                newEvent.screenY = touch.screenY;
143                            } else {
144                                newEvent.pageX = e.pageX;
145                                newEvent.pageY = e.pageY;
146                                newEvent.clientX = e.clientX;
147                                newEvent.clientY = e.clientY;
148                                newEvent.screenX = e.screenX;
149                                newEvent.screenY = e.screenY;
150                            }
151                            newEvent.which = e.which || 1;
152                            newEvent.target = e.target;
153                            $(this).trigger(newEvent);
154                        });
155                    }
156                },
157                teardown: function () {
158                    var nativeEvent = nativeMap[vmEvent];
159                    if (nativeEvent) {
160                        $(this).off(nativeEvent + '._vmouse_' + vmEvent);
161                    }
162                }
163            };
164        });
165    })();
166
167    // --- scrollstart / scrollstop ---
168    $.event.special.scrollstart = {
169        enabled: true,
170        setup: function () {
171            var elem = this;
172            var scrolling = false;
173            var scrollTimer;
174
175            $(elem).on('touchmove._scrollevents scroll._scrollevents', function (e) {
176                if (!$.event.special.scrollstart.enabled) return;
177                if (!scrolling) {
178                    scrolling = true;
179                    $.event.dispatch.call(elem, $.Event('scrollstart', { originalEvent: e.originalEvent || e }));
180                }
181                clearTimeout(scrollTimer);
182                scrollTimer = setTimeout(function () {
183                    scrolling = false;
184                    $.event.dispatch.call(elem, $.Event('scrollstop', { originalEvent: e.originalEvent || e }));
185                }, 50);
186            });
187        },
188        teardown: function () {
189            $(this).off('._scrollevents');
190        }
191    };
192
193    $.event.special.scrollstop = {
194        setup: function () { $(this).on('scrollstart', $.noop); },
195        teardown: function () { $(this).off('scrollstart'); }
196    };
197
198    // --- tap / taphold ---
199    $.event.special.tap = {
200        tapholdThreshold: 750,
201        emitTapOnTaphold: true,
202        setup: function () {
203            var elem = this;
204            var $elem = $(elem);
205            var tapHandled = false;
206
207            $elem.on('vmousedown._tap', function (startEvent) {
208                tapHandled = false;
209                if (startEvent.which && startEvent.which !== 1) return false;
210
211                var target = startEvent.target;
212                var holdTimer;
213
214                function clearTapTimer() {
215                    clearTimeout(holdTimer);
216                }
217
218                function clearTapHandlers() {
219                    clearTapTimer();
220                    $elem.off('vclick._tap vmouseup._tap');
221                    $(document).off('vmousecancel._tap');
222                }
223
224                function clickHandler(e) {
225                    clearTapHandlers();
226                    if (!tapHandled && target === e.target) {
227                        $.event.dispatch.call(elem, $.Event('tap', { target: e.target, originalEvent: e }));
228                    } else if (tapHandled) {
229                        e.preventDefault();
230                    }
231                }
232
233                $elem.on('vmouseup._tap', clearTapTimer).on('vclick._tap', clickHandler);
234                $(document).on('vmousecancel._tap', clearTapHandlers);
235
236                holdTimer = setTimeout(function () {
237                    if (!$.event.special.tap.emitTapOnTaphold) {
238                        tapHandled = true;
239                    }
240                    $.event.dispatch.call(elem, $.Event('taphold', { target: target }));
241                }, $.event.special.tap.tapholdThreshold);
242            });
243        },
244        teardown: function () {
245            $(this).off('._tap');
246            $(document).off('._tap');
247        }
248    };
249
250    $.event.special.taphold = {
251        setup: function () { $(this).on('tap', $.noop); },
252        teardown: function () { $(this).off('tap'); }
253    };
254
255    // --- swipe ---
256    $.event.special.swipe = {
257        scrollSupressionThreshold: 30,
258        durationThreshold: 1e3,
259        horizontalDistanceThreshold: 30,
260        verticalDistanceThreshold: 30,
261
262        getLocation: function (e) {
263            var winPageX = window.pageXOffset,
264                winPageY = window.pageYOffset,
265                x = e.clientX,
266                y = e.clientY;
267
268            if (e.pageY === 0 && Math.floor(y) > Math.floor(e.pageY) ||
269                e.pageX === 0 && Math.floor(x) > Math.floor(e.pageX)) {
270                x -= winPageX;
271                y -= winPageY;
272            } else if (y < (e.pageY - winPageY) || x < (e.pageX - winPageX)) {
273                x = e.pageX - winPageX;
274                y = e.pageY - winPageY;
275            }
276            return { x: x, y: y };
277        },
278
279        start: function (e) {
280            var touch = e.originalEvent.touches ? e.originalEvent.touches[0] : e,
281                loc = $.event.special.swipe.getLocation(touch);
282            return { time: Date.now(), coords: [loc.x, loc.y], origin: $(e.target) };
283        },
284
285        stop: function (e) {
286            var touch = e.originalEvent.touches ? e.originalEvent.touches[0] : e,
287                loc = $.event.special.swipe.getLocation(touch);
288            return { time: Date.now(), coords: [loc.x, loc.y] };
289        },
290
291        handleSwipe: function (start, stop, elem, target) {
292            var swipe = $.event.special.swipe;
293            if (stop.time - start.time < swipe.durationThreshold &&
294                Math.abs(start.coords[0] - stop.coords[0]) > swipe.horizontalDistanceThreshold &&
295                Math.abs(start.coords[1] - stop.coords[1]) < swipe.verticalDistanceThreshold) {
296
297                var direction = start.coords[0] > stop.coords[0] ? 'swipeleft' : 'swiperight';
298
299                $.event.dispatch.call(elem,
300                    $.Event('swipe', { target: target, swipestart: start, swipestop: stop }));
301                $.event.dispatch.call(elem,
302                    $.Event(direction, { target: target, swipestart: start, swipestop: stop }));
303                return true;
304            }
305            return false;
306        },
307
308        eventInProgress: false,
309
310        setup: function () {
311            var elem = this;
312            var $elem = $(elem);
313            var swipeData = {};
314
315            var mobileEvents = $.data(this, 'mobile-events');
316            if (!mobileEvents) {
317                mobileEvents = { length: 0 };
318                $.data(this, 'mobile-events', mobileEvents);
319            }
320            mobileEvents.length++;
321            mobileEvents.swipe = swipeData;
322
323            swipeData.start = function (e) {
324                if ($.event.special.swipe.eventInProgress) return;
325                $.event.special.swipe.eventInProgress = true;
326
327                var startTouch = e.originalEvent.touches ? e.originalEvent.touches[0] : e;
328                var startLoc = $.event.special.swipe.getLocation(startTouch);
329                var startData = { time: Date.now(), coords: [startLoc.x, startLoc.y], origin: $(e.target) };
330                var target = e.target;
331                var handled = false;
332
333                swipeData.move = function (e) {
334                    if (!startData || e.isDefaultPrevented()) return;
335                    var stopData = $.event.special.swipe.stop(e);
336                    if (!handled) {
337                        handled = $.event.special.swipe.handleSwipe(startData, stopData, elem, target);
338                        if (handled) {
339                            $.event.special.swipe.eventInProgress = false;
340                        }
341                    }
342                    if (Math.abs(startData.coords[0] - stopData.coords[0]) >
343                        $.event.special.swipe.scrollSupressionThreshold) {
344                        e.preventDefault();
345                    }
346                };
347
348                swipeData.stop = function () {
349                    handled = true;
350                    $.event.special.swipe.eventInProgress = false;
351                    $(document).off(touchMoveEvent + '._swipe', swipeData.move);
352                    swipeData.move = null;
353                };
354
355                $(document).on(touchMoveEvent + '._swipe', swipeData.move)
356                    .one(touchStopEvent + '._swipe', swipeData.stop
356);
357            };
358
359            $elem.on(touchStartEvent + '._swipe', swipeData.start);
360        },
361
362        teardown: function () {
363            var mobileEvents = $.data(this, 'mobile-events');
364            var swipeData;
365            if (mobileEvents) {
366                swipeData = mobileEvents.swipe;
367                delete mobileEvents.swipe;
368                mobileEvents.length--;
369                if (mobileEvents.length === 0) {
370                    $.removeData(this, 'mobile-events');
371                }
372            }
373            if (swipeData) {
374                if (swipeData.start) $(this).off(touchStartEvent + '._swipe', swipeData.start);
375                if (swipeData.move) $(document).off(touchMoveEvent + '._swipe', swipeData.move);
376                if (swipeData.stop) $(document).off(touchStopEvent + '._swipe', swipeData.stop);
377            }
378        }
379    };
380
381    $.each({ scrollstop: 'scrollstart', taphold: 'tap', swipeleft: 'swipe.left', swiperight: 'swipe.right' },
382        function (event, sourceEvent) {
383            $.event.special[event] = $.event.special[event] || {
384                setup: function () { $(this).on(sourceEvent, $.noop); },
385                teardown: function () { $(this).off(sourceEvent); }
386            };
387        }
388    );
389
390    // --- Convenience methods ---
391    $.each('touchstart touchmove touchend tap taphold swipe swipeleft swiperight scrollstart scrollstop'.split(' '),
392        function (i, name) {
393            if (!$.fn[name]) {
394                $.fn[name] = function (fn) {
395                    return fn ? this.on(name, fn) : this.trigger(name);
396                };
397            }
398        }
399    );
400
401})(jQuery, window, document);
402/*!
403 * jQuery Actual Plugin
404 * Get the actual width/height of invisible DOM elements with jQuery.
405 * Copyright 2012, Ben Lin (http://dreamerslab.com/)
406 * Licensed under the MIT License (LICENSE.txt).
407 *
408 * Version: 1.0.16
409 *
410 * Requires: jQuery >= 1.2.3
411 */
412(function (a) {
413    a.fn.addBack = a.fn.addBack || a.fn.andSelf;
414    a.fn.extend({
415        actual: function (b, l) {
416            if (!this[b]) { throw '$.actual => The jQuery method "' + b + '" you called does not exist'; } var f = { absolute: false, clone: false, includeMargin: false };
417            var i = a.extend(f, l); var e = this.eq(0); var h, j; if (i.clone === true) {
418                h = function () {
419                    var m = "position: absolute !important; top: -1000 !important; "; e = e.clone().attr("style", m).appendTo("body");
420                }; j = function () { e.remove(); };
421            } else {
422                var g = []; var d = ""; var c; h = function () {
423                    c = e.parents().addBack().filter(":hidden"); d += "visibility: hidden !important; display: block !important; ";
424                    if (i.absolute === true) { d += "position: absolute !important; "; } c.each(function () {
425                        var m = a(this); var n = m.attr("style"); g.push(n); m.attr("style", n ? n + ";" + d : d);
426                    });
427                }; j = function () { c.each(function (m) { var o = a(this); var n = g[m]; if (n === undefined) { o.removeAttr("style"); } else { o.attr("style", n); } }); };
428            } h(); var k = /(outer)/.test(b) ? e[b](i.includeMargin) : e[b]();
429            j(); return k;
430        }
431    });
432})(jQuery);
433
434/*
435    outline utility for confirming you're targetting the correct element
436    usage:
437        $('#element').outline();
438    result:
439        $('#element') has a pink outline
440    options:
441        use a different colour: $('#element').outline('#f00');
442*/
443(function ($) {
444    $.fn.outline = function (colour) {
445        if (colour == 0) {
446            colour = 'rgba(' + (55 + Math.floor(Math.random() * 145)) + ',' + (55 + Math.floor(Math.random() * 145)) + ',' + (55 + Math.floor(Math.random() * 145)) + ',0.75)';
447        }
448        this.css(
449            {
450                outline: '5px solid ' + (colour ? colour : 'rgba(255,20,147,0.5)')
451            }
452        );
453        return this;
454    }
455})(jQuery);
456/*
457    * Test whether argument elements are parents of the first matched element
458    * @return boolean
459    * @param objs
460    *   a jQuery selector, selection, element, or array of elements
461*/
462$.fn.hasParent = function (parentClass) {
463    var found = false;
464    $(this[0]).parents().andSelf().each(
465        function () {
466            if ($.inArray(this, $(parentClass)) != -1) {
467                found = true;
468                return false;
469            }
470        }
471    );
472    return found;
473}
474    /*! http://mths.be/placeholder v2.0.8 by @mathias */
475    ; (function (window, document, $) {
476
477        // Opera Mini v7 doesn't support placeholder although its DOM seems to indicate so
478        var isOperaMini = Object.prototype.toString.call(window.operamini) == '[object OperaMini]';
479        var isInputSupported = 'placeholder' in document.createElement('input') && !isOperaMini;
480        var isTextareaSupported = 'placeholder' in document.createElement('textarea') && !isOperaMini;
481        var prototype = $.fn;
482        var valHooks = $.valHooks;
483        var propHooks = $.propHooks;
484        var hooks;
485        var placeholder;
486
487        if (isInputSupported && isTextareaSupported) {
488
489            placeholder = prototype.placeholder = function () {
490                return this;
491            };
492
493            placeholder.input = placeholder.textarea = true;
494
495        } else {
496
497            placeholder = prototype.placeholder = function () {
498                var $this = this;
499                $this
500                    .filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')
501                    .not('.placeholder')
502                    .bind({
503                        'focus.placeholder': clearPlaceholder,
504                        'blur.placeholder': setPlaceholder
505                    })
506                    .data('placeholder-enabled', true)
507                    .trigger('blur.placeholder');
508                return $this;
509            };
510
511            placeholder.input = isInputSupported;
512            placeholder.textarea = isTextareaSupported;
513
514            hooks = {
515                'get': function (element) {
516                    var $element = $(element);
517
518                    var $passwordInput = $element.data('placeholder-password');
519                    if ($passwordInput) {
520                        return $passwordInput[0].value;
521                    }
522
523                    return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;
524                },
525                'set': function (element, value) {
526                    var $element = $(element);
527
528                    var $passwordInput = $element.data('placeholder-password');
529                    if ($passwordInput) {
530                        return $passwordInput[0].value = value;
531                    }
532
533                    if (!$element.data('placeholder-enabled')) {
534                        return element.value = value;
535                    }
536                    if (value == '') {
537                        element.value = value;
538                        // Issue #56: Setting the placeholder causes problems if the element continues to have focus.
539                        if (element != safeActiveElement()) {
540                            // We can't use `triggerHandler` here because of dummy text/password inputs :(
541                            setPlaceholder.call(element);
542                        }
543                    } else if ($element.hasClass('placeholder')) {
544                        clearPlaceholder.call(element, true, value) || (element.value = value);
545                    } else {
546                        element.value = value;
547                    }
548                    // `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363
549                    return $element;
550                }
551            };
552
553            if (!isInputSupported) {
554                valHooks.input = hooks;
555                propHooks.value = hooks;
556            }
557            if (!isTextareaSupported) {
558                valHooks.textarea = hooks;
559                propHooks.value = hooks;
560            }
561
562            $(function () {
563                // Look for forms
564                $(document).delegate('form', 'submit.placeholder', function () {
565                    // Clear the placeholder values so they don't get submitted
566                    var $inputs = $('.placeholder', this).each(clearPlaceholder);
567                    setTimeout(function () {
568                        $inputs.each(setPlaceholder);
569                    }, 10);
570                });
571            });
572
573            // Clear placeholder values upon page reload
574            $(window).bind('beforeunload.placeholder', function () {
575                $('.placeholder').each(function () {
576                    this.value = '';
577                });
578            });
579
580        }
581
582        function args(elem) {
583            // Return an object of element attributes
584            var newAttrs = {};
585            var rinlinejQuery = /^jQuery\d+$/;
586            $.each(elem.attributes, function (i, attr) {
587                if (attr.specified && !rinlinejQuery.test(attr.name)) {
588                    newAttrs[attr.name] = attr.value;
589                }
590            });
591            return newAttrs;
592        }
593
594        function clearPlaceholder(event, value) {
595            var input = this;
596            var $input = $(input);
597            if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) {
598                if ($input.data('placeholder-password')) {
599                    $input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id'));
600                    // If `clearPlaceholder` was called from `$.valHooks.input.set`
601                    if (event === true) {
602                        return $input[0].value = value;
603                    }
604                    $input.focus();
605                } else {
606                    input.value = '';
607                    $input.removeClass('placeholder');
608                    input == safeActiveElement() && input.select();
609                }
610            }
611        }
612
613        function setPlaceholder() {
614            var $replacement;
615            var input = this;
616            var $input = $(input);
617            var id = this.id;
618            if (input.value == '') {
619                if (input.type == 'password') {
620                    if (!$input.data('placeholder-textinput')) {
621                        try {
622                            $replacement = $input.clone().attr({ 'type': 'text' });
623                        } catch (e) {
624                            $replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' }));
625                        }
626                        $replacement
627                            .removeAttr('name')
628                            .data({
629                                'placeholder-password': $input,
630                                'placeholder-id': id
631                            })
632                            .bind('focus.placeholder', clearPlaceholder);
633                        $input
634                            .data({
635                                'placeholder-textinput': $replacement,
636                                'placeholder-id': id
637                            })
638                            .before($replacement);
639                    }
640                    $input = $input.removeAttr('id').hide().prev().attr('id', id).show();
641                    // Note: `$input[0] != input` now!
642                }
643                $input.addClass('placeholder');
644                $input[0].value = $input.attr('placeholder');
645            } else {
646                $input.removeClass('placeholder');
647            }
648        }
649
650        function safeActiveElement() {
651            // Avoid IE9 `document.activeElement` of death
652            // https://github.com/mathiasbynens/jquery-placeholder/pull/99
653            try {
654                return document.activeElement;
655            } catch (exception) { }
656        }
657
658    }(this, document, jQuery));
659// ----------------------------------------------------------------------------
660// infobox_packed.js - https://code.google.com/p/google-maps-utility-library-v3/
661// ----------------------------------------------------------------------------
662if (typeof google !== 'undefined' && typeof google.maps !== 'undefined') {
663eval(function (p, a, c, k, e, r) { e = function (c) { return (c < a ? '' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36)) }; if (!''.replace(/^/, String)) { while (c--) r[e(c)] = k[c] || e(c); k = [function (e) { return r[e] }]; e = function () { return '\\w+' }; c = 1 }; while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]); return p }('7 p(a){a=a||{};5.8.1N.2h(2,32);2.L=a.1u||"";2.1D=a.1q||H;2.P=a.1H||0;2.E=a.1B||1f 5.8.1U(0,0);2.B=a.W||1f 5.8.2t(0,0);2.S=a.11||q;2.1n=a.1l||"28";2.1k=a.D||{};2.1G=a.1E||"34";
6632.M=a.19||"2W://2Q.5.2L/2I/2G/2F/1v.2z";3(a.19===""){2.M=""}2.1i=a.1r||1f 5.8.1U(1,1);2.Y=a.1s||H;2.1a=a.1p||H;2.1K=a.2k||"2g";2.17=a.1m||H;2.4=q;2.w=q;2.X=q;2.16=q;2.15=q;2.13=q;2.12=q;2.O=q}p.r=1f 5.8.1N();p.r.22=7(){6 a;6 d=2;6 c=7(e){e.1Z=U;3(e.18){e.18()}};6 b=7(e){e.2S=H;3(e.1Y){e.1Y()}3(!d.17){c(e)}};3(!2.4){2.4=1g.2K("2J");2.1d();3(t 2.L.1w==="u"){2.4.J=2.F()+2.L}v{2.4.J=2.F();2.4.1b(2.L)}2.2y()[2.1K].1b(2.4);2.1F();3(2.4.9.A){2.O=U}v{3(2.P!==0&&2.4.Z>2.P){2.4.9.A=2.P;2.4.9.2u="2s";2.O=U}v{a=2.24();2.4.9.A=(2.4.Z-a.14-a.T)+"R";2.O=H}}2.1t(2.1D);3(!2.17){2.X=5.8.s.I(2.4,"2n",c);2.16=5.8.s.I(2.4,"1L",c);2.15=5.8.s.I(2.4,"2m",c);2.1o=5.8.s.I(2.4,"2l",7(e){2.9.1J="2j"})}2.12=5.8.s.I(2.4,"2i",b);5.8.s.Q(2,"2f")}};p.r.F=7(){6 a="";3(2.M!==""){a="<2e";a+=" 2d=\'"+2.M+"\'";a+=" 2c=T";a+=" 9=\'";a+=" W: 2b;";a+=" 1J: 2a;";a+=" 29: "+2.1G+";";a+="\'>"}N a};p.r.1F=7(){6 a;3(2.M!==""){a=2.4.27;2.w=5.8.s.I(a,\'1L\',2.1I())}v{2.w=q}};p.r.1I=7(){6 a=2;N 7(e){e.1Z=U;3(e.18){e.18()}a.1v();5.8.s.Q(a,"26")}};p.r.1t=7(d){6 m;6 n;6 e=0,G=0;3(!d){m=2.25();3(m 39 5.8.38){3(!m.23().37(2.B)){m.36(2.B)}n=m.23();6 a=m.35();6 h=a.Z;6 f=a.21;6 k=2.E.A;6 l=2.E.1j;6 g=2.4.Z;6 b=2.4.21;6 i=2.1i.A;6 j=2.1i.1j;6 o=2.20().31(2.B);3(o.x<(-k+i)){e=o.x+k-i}v 3((o.x+g+k+i)>h){e=o.x+g+k+i-h}3(2.1a){3(o.y<(-l+j+b)){G=o.y+l-j-b}v 3((o.y+l+j)>f){G=o.y+l+j-f}}v{3(o.y<(-l+j)){G=o.y+l-j}v 3((o.y+b+l+j)>f){G=o.y+b+l+j-f}}3(!(e===0&&G===0)){6 c=m.30();m.2Z(e,G)}}}};p.r.1d=7(){6 i,D;3(2.4){2.4.2Y=2.1n;2.4.9.2X="";D=2.1k;2V(i 2U D){3(D.2R(i)){2.4.9[i]=D[i]}}3(t 2.4.9.1h!=="u"&&2.4.9.1h!==""){2.4.9.2P="2O(1h="+(2.4.9.1h*2N)+")"}2.4.9.W="2M";2.4.9.V=\'1y\';3(2.S!==q){2.4.9.11=2.S}}};p.r.24=7(){6 c;6 a={1e:0,1c:0,14:0,T:0};6 b=2.4;3(1g.1x&&1g.1x.1V){c=b.2H.1x.1V(b,"");3(c){a.1e=C(c.1T,10)||0;a.1c=C(c.1S,10)||0;a.14=C(c.1R,10)||0;a.T=C(c.1W,10)||0}}v 3(1g.2E.K){3(b.K){a.1e=C(b.K.1T,10)||0;a.1c=C(b.K.1S,10)||0;a.14=C(b.K.1R,10)||0;a.T=C(b.K.1W,10)||0}}N a};p.r.2D=7(){3(2.4){2.4.2C.2B(2.4);2.4=q}};p.r.1A=7(){2.22();6 a=2.20().2A(2.B);2.4.9.14=(a.x+2.E.A)+"R";3(2.1a){2.4.9.1c=-(a.y+2.E.1j)+"R"}v{2.4.9.1e=(a.y+2.E.1j)+"R"}3(2.Y){2.4.9.V=\'1y\'}v{2.4.9.V="1X"}};p.r.2T=7(a){3(t a.1l!=="u"){2.1n=a.1l;2.1d()}3(t a.D!=="u"){2.1k=a.D;2.1d()}3(t a.1u!=="u"){2.1Q(a.1u)}3(t a.1q!=="u"){2.1D=a.1q}3(t a.1H!=="u"){2.P=a.1H}3(t a.1B!=="u"){2.E=a.1B}3(t a.1p!=="u"){2.1a=a.1p}3(t a.W!=="u"){2.1z(a.W)}3(t a.11!=="u"){2.1P(a.11)}3(t a.1E!=="u"){2.1G=a.1E}3(t a.19!=="u"){2.M=a.19}3(t a.1r!=="u"){2.1i=a.1r}3(t a.1s!=="u"){2.Y=a.1s}3(t a.1m!=="u"){2.17=a.1m}3(2.4){2.1A()}};p.r.1Q=7(a){2.L=a;3(2.4){3(2.w){5.8.s.z(2.w);2.w=q}3(!2.O){2.4.9.A=""}3(t a.1w==="u"){2.4.J=2.F()+a}v{2.4.J=2.F();2.4.1b(a)}3(!2.O){2.4.9.A=2.4.Z+"R";3(t a.1w==="u"){2.4.J=2.F()+a}v{2.4.J=2.F();2.4.1b(a)}}2.1F()}5.8.s.Q(2,"2x")};p.r.1z=7(a){2.B=a;3(2.4){2.1A()}5.8.s.Q(2,"1O")};p.r.1P=7(a){2.S=a;3(2.4){2.4.9.11=a}5.8.s.Q(2,"2w")};p.r.2v=7(){N 2.L};p.r.1C=7(){N 2.B};p.r.33=7(){N 2.S};p.r.2r=7(){2.Y=H;3(2.4){2.4.9.V="1X"}};p.r.2q=7(){2.Y=U;3(2.4){2.4.9.V="1y"}};p.r.2p=7(c,b){6 a=2;3(b){2.B=b.1C();2.13=5.8.s.2o(b,"1O",7(){a.1z(2.1C())})}2.1M(c);3(2.4){2.1t()}};p.r.1v=7(){3(2.w){5.8.s.z(2.w);2.w=q}3(2.X){5.8.s.z(2.X);5.8.s.z(2.16);5.8.s.z(2.15);5.8.s.z(2.1o);2.X=q;2.16=q;2.15=q;2.1o=q}3(2.13){5.8.s.z(2.13);2.13=q}3(2.12){5.8.s.z(2.12);2.12=q}2.1M(q)};', 62, 196, '||this|if|div_|google|var|function|maps|style||||||||||||||||InfoBox|null|prototype|event|typeof|undefined|else|closeListener_|||removeListener|width|position_|parseInt|boxStyle|pixelOffset_|getCloseBoxImg_|yOffset|false|addDomListener|innerHTML|currentStyle|content_|closeBoxURL_|return|fixedWidthSet_|maxWidth_|trigger|px|zIndex_|right|true|visibility|position|eventListener1_|isHidden_|offsetWidth||zIndex|contextListener_|moveListener_|left|eventListener3_|eventListener2_|enableEventPropagation_|stopPropagation|closeBoxURL|alignBottom_|appendChild|bottom|setBoxStyle_|top|new|document|opacity|infoBoxClearance_|height|boxStyle_|boxClass|enableEventPropagation|boxClass_|eventListener4_|alignBottom|disableAutoPan|infoBoxClearance|isHidden|panBox_|content|close|nodeType|defaultView|hidden|setPosition|draw|pixelOffset|getPosition|disableAutoPan_|
663closeBoxMargin|addClickHandler_|closeBoxMargin_|maxWidth|getCloseClickHandler_|cursor|pane_|click|setMap|OverlayView|position_changed|setZIndex|setContent|borderLeftWidth|borderBottomWidth|borderTopWidth|Size|getComputedStyle|borderRightWidth|visible|preventDefault|cancelBubble|getProjection|offsetHeight|createInfoBoxDiv_|getBounds|getBoxWidths_|getMap|closeclick|firstChild|infoBox|margin|pointer|relative|align|src|img|domready|floatPane|apply|contextmenu|default|pane|mouseover|dblclick|mousedown|addListener|open|hide|show|auto|LatLng|overflow|getContent|zindex_changed|content_changed|getPanes|gif|fromLatLngToDivPixel|removeChild|parentNode|onRemove|documentElement|mapfiles|en_us|ownerDocument|intl|div|createElement|com|absolute|100|alpha|filter|www|hasOwnProperty|returnValue|setOptions|in|for|http|cssText|className|panBy|getCenter|fromLatLngToContainerPixel|arguments|getZIndex|2px|getDiv|setCenter|contains|Map|instanceof'.split('|'), 0, {}))
664}
665// ----------------------------------------------------------------------------
666// Object.keys polyfill for browsers that don't support it
667// ----------------------------------------------------------------------------
668// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
669if (!Object.keys) {
670    Object.keys = (function () {
671        'use strict';
672        var hasOwnProperty = Object.prototype.hasOwnProperty,
673            hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString'),
674            dontEnums = [
675                'toString',
676                'toLocaleString',
677                'valueOf',
678                'hasOwnProperty',
679                'isPrototypeOf',
680                'propertyIsEnumerable',
681                'constructor'
682            ],
683            dontEnumsLength = dontEnums.length;
684        return function (obj) {
685            if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {
686                throw new TypeError('Object.keys called on non-object');
687            }
688            var result = [], prop, i;
689            for (prop in obj) {
690                if (hasOwnProperty.call(obj, prop)) {
691                    result.push(prop);
692                }
693            }
694            if (hasDontEnumBug) {
695                for (i = 0; i < dontEnumsLength; i++) {
696                    if (hasOwnProperty.call(obj, dontEnums[i])) {
697                        result.push(dontEnums[i]);
698                    }
699                }
700            }
701            return result;
702        };
703    }());
704}

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.