[pypy-commit] pypy default: Removed accidentally committed coverage report files.

anton_gulenko noreply at buildbot.pypy.org
Wed Apr 22 12:21:00 CEST 2015


Author: Anton Gulenko <anton.gulenko at googlemail.com>
Branch: 
Changeset: r76881:063c4e7456b4
Date: 2015-03-12 15:02 +0100
http://bitbucket.org/pypy/pypy/changeset/063c4e7456b4/

Log:	Removed accidentally committed coverage report files.

diff too long, truncating to 2000 out of 5357 lines

diff --git a/rpython/rlib/rstrategies/.coverage b/rpython/rlib/rstrategies/.coverage
deleted file mode 100644
Binary file rpython/rlib/rstrategies/.coverage has changed
diff --git a/rpython/rlib/rstrategies/htmlcov1/coverage_html.js b/rpython/rlib/rstrategies/htmlcov1/coverage_html.js
deleted file mode 100644
--- a/rpython/rlib/rstrategies/htmlcov1/coverage_html.js
+++ /dev/null
@@ -1,376 +0,0 @@
-// Coverage.py HTML report browser code.
-/*jslint browser: true, sloppy: true, vars: true, plusplus: true, maxerr: 50, indent: 4 */
-/*global coverage: true, document, window, $ */
-
-coverage = {};
-
-// Find all the elements with shortkey_* class, and use them to assign a shotrtcut key.
-coverage.assign_shortkeys = function () {
-    $("*[class*='shortkey_']").each(function (i, e) {
-        $.each($(e).attr("class").split(" "), function (i, c) {
-            if (/^shortkey_/.test(c)) {
-                $(document).bind('keydown', c.substr(9), function () {
-                    $(e).click();
-                });
-            }
-        });
-    });
-};
-
-// Create the events for the help panel.
-coverage.wire_up_help_panel = function () {
-    $("#keyboard_icon").click(function () {
-        // Show the help panel, and position it so the keyboard icon in the
-        // panel is in the same place as the keyboard icon in the header.
-        $(".help_panel").show();
-        var koff = $("#keyboard_icon").offset();
-        var poff = $("#panel_icon").position();
-        $(".help_panel").offset({
-            top: koff.top-poff.top,
-            left: koff.left-poff.left
-        });
-    });
-    $("#panel_icon").click(function () {
-        $(".help_panel").hide();
-    });
-};
-
-// Loaded on index.html
-coverage.index_ready = function ($) {
-    // Look for a cookie containing previous sort settings:
-    var sort_list = [];
-    var cookie_name = "COVERAGE_INDEX_SORT";
-    var i;
-
-    // This almost makes it worth installing the jQuery cookie plugin:
-    if (document.cookie.indexOf(cookie_name) > -1) {
-        var cookies = document.cookie.split(";");
-        for (i = 0; i < cookies.length; i++) {
-            var parts = cookies[i].split("=");
-
-            if ($.trim(parts[0]) === cookie_name && parts[1]) {
-                sort_list = eval("[[" + parts[1] + "]]");
-                break;
-            }
-        }
-    }
-
-    // Create a new widget which exists only to save and restore
-    // the sort order:
-    $.tablesorter.addWidget({
-        id: "persistentSort",
-
-        // Format is called by the widget before displaying:
-        format: function (table) {
-            if (table.config.sortList.length === 0 && sort_list.length > 0) {
-                // This table hasn't been sorted before - we'll use
-                // our stored settings:
-                $(table).trigger('sorton', [sort_list]);
-            }
-            else {
-                // This is not the first load - something has
-                // already defined sorting so we'll just update
-                // our stored value to match:
-                sort_list = table.config.sortList;
-            }
-        }
-    });
-
-    // Configure our tablesorter to handle the variable number of
-    // columns produced depending on report options:
-    var headers = [];
-    var col_count = $("table.index > thead > tr > th").length;
-
-    headers[0] = { sorter: 'text' };
-    for (i = 1; i < col_count-1; i++) {
-        headers[i] = { sorter: 'digit' };
-    }
-    headers[col_count-1] = { sorter: 'percent' };
-
-    // Enable the table sorter:
-    $("table.index").tablesorter({
-        widgets: ['persistentSort'],
-        headers: headers
-    });
-
-    coverage.assign_shortkeys();
-    coverage.wire_up_help_panel();
-
-    // Watch for page unload events so we can save the final sort settings:
-    $(window).unload(function () {
-        document.cookie = cookie_name + "=" + sort_list.toString() + "; path=/";
-    });
-};
-
-// -- pyfile stuff --
-
-coverage.pyfile_ready = function ($) {
-    // If we're directed to a particular line number, highlight the line.
-    var frag = location.hash;
-    if (frag.length > 2 && frag[1] === 'n') {
-        $(frag).addClass('highlight');
-        coverage.set_sel(parseInt(frag.substr(2), 10));
-    }
-    else {
-        coverage.set_sel(0);
-    }
-
-    $(document)
-        .bind('keydown', 'j', coverage.to_next_chunk_nicely)
-        .bind('keydown', 'k', coverage.to_prev_chunk_nicely)
-        .bind('keydown', '0', coverage.to_top)
-        .bind('keydown', '1', coverage.to_first_chunk)
-        ;
-
-    $(".button_toggle_run").click(function (evt) {coverage.toggle_lines(evt.target, "run");});
-    $(".button_toggle_exc").click(function (evt) {coverage.toggle_lines(evt.target, "exc");});
-    $(".button_toggle_mis").click(function (evt) {coverage.toggle_lines(evt.target, "mis");});
-    $(".button_toggle_par").click(function (evt) {coverage.toggle_lines(evt.target, "par");});
-
-    coverage.assign_shortkeys();
-    coverage.wire_up_help_panel();
-};
-
-coverage.toggle_lines = function (btn, cls) {
-    btn = $(btn);
-    var hide = "hide_"+cls;
-    if (btn.hasClass(hide)) {
-        $("#source ."+cls).removeClass(hide);
-        btn.removeClass(hide);
-    }
-    else {
-        $("#source ."+cls).addClass(hide);
-        btn.addClass(hide);
-    }
-};
-
-// Return the nth line div.
-coverage.line_elt = function (n) {
-    return $("#t" + n);
-};
-
-// Return the nth line number div.
-coverage.num_elt = function (n) {
-    return $("#n" + n);
-};
-
-// Return the container of all the code.
-coverage.code_container = function () {
-    return $(".linenos");
-};
-
-// Set the selection.  b and e are line numbers.
-coverage.set_sel = function (b, e) {
-    // The first line selected.
-    coverage.sel_begin = b;
-    // The next line not selected.
-    coverage.sel_end = (e === undefined) ? b+1 : e;
-};
-
-coverage.to_top = function () {
-    coverage.set_sel(0, 1);
-    coverage.scroll_window(0);
-};
-
-coverage.to_first_chunk = function () {
-    coverage.set_sel(0, 1);
-    coverage.to_next_chunk();
-};
-
-coverage.is_transparent = function (color) {
-    // Different browsers return different colors for "none".
-    return color === "transparent" || color === "rgba(0, 0, 0, 0)";
-};
-
-coverage.to_next_chunk = function () {
-    var c = coverage;
-
-    // Find the start of the next colored chunk.
-    var probe = c.sel_end;
-    while (true) {
-        var probe_line = c.line_elt(probe);
-        if (probe_line.length === 0) {
-            return;
-        }
-        var color = probe_line.css("background-color");
-        if (!c.is_transparent(color)) {
-            break;
-        }
-        probe++;
-    }
-
-    // There's a next chunk, `probe` points to it.
-    var begin = probe;
-
-    // Find the end of this chunk.
-    var next_color = color;
-    while (next_color === color) {
-        probe++;
-        probe_line = c.line_elt(probe);
-        next_color = probe_line.css("background-color");
-    }
-    c.set_sel(begin, probe);
-    c.show_selection();
-};
-
-coverage.to_prev_chunk = function () {
-    var c = coverage;
-
-    // Find the end of the prev colored chunk.
-    var probe = c.sel_begin-1;
-    var probe_line = c.line_elt(probe);
-    if (probe_line.length === 0) {
-        return;
-    }
-    var color = probe_line.css("background-color");
-    while (probe > 0 && c.is_transparent(color)) {
-        probe--;
-        probe_line = c.line_elt(probe);
-        if (probe_line.length === 0) {
-            return;
-        }
-        color = probe_line.css("background-color");
-    }
-
-    // There's a prev chunk, `probe` points to its last line.
-    var end = probe+1;
-
-    // Find the beginning of this chunk.
-    var prev_color = color;
-    while (prev_color === color) {
-        probe--;
-        probe_line = c.line_elt(probe);
-        prev_color = probe_line.css("background-color");
-    }
-    c.set_sel(probe+1, end);
-    c.show_selection();
-};
-
-// Return the line number of the line nearest pixel position pos
-coverage.line_at_pos = function (pos) {
-    var l1 = coverage.line_elt(1),
-        l2 = coverage.line_elt(2),
-        result;
-    if (l1.length && l2.length) {
-        var l1_top = l1.offset().top,
-            line_height = l2.offset().top - l1_top,
-            nlines = (pos - l1_top) / line_height;
-        if (nlines < 1) {
-            result = 1;
-        }
-        else {
-            result = Math.ceil(nlines);
-        }
-    }
-    else {
-        result = 1;
-    }
-    return result;
-};
-
-// Returns 0, 1, or 2: how many of the two ends of the selection are on
-// the screen right now?
-coverage.selection_ends_on_screen = function () {
-    if (coverage.sel_begin === 0) {
-        return 0;
-    }
-
-    var top = coverage.line_elt(coverage.sel_begin);
-    var next = coverage.line_elt(coverage.sel_end-1);
-
-    return (
-        (top.isOnScreen() ? 1 : 0) +
-        (next.isOnScreen() ? 1 : 0)
-    );
-};
-
-coverage.to_next_chunk_nicely = function () {
-    coverage.finish_scrolling();
-    if (coverage.selection_ends_on_screen() === 0) {
-        // The selection is entirely off the screen: select the top line on
-        // the screen.
-        var win = $(window);
-        coverage.select_line_or_chunk(coverage.line_at_pos(win.scrollTop()));
-    }
-    coverage.to_next_chunk();
-};
-
-coverage.to_prev_chunk_nicely = function () {
-    coverage.finish_scrolling();
-    if (coverage.selection_ends_on_screen() === 0) {
-        var win = $(window);
-        coverage.select_line_or_chunk(coverage.line_at_pos(win.scrollTop() + win.height()));
-    }
-    coverage.to_prev_chunk();
-};
-
-// Select line number lineno, or if it is in a colored chunk, select the
-// entire chunk
-coverage.select_line_or_chunk = function (lineno) {
-    var c = coverage;
-    var probe_line = c.line_elt(lineno);
-    if (probe_line.length === 0) {
-        return;
-    }
-    var the_color = probe_line.css("background-color");
-    if (!c.is_transparent(the_color)) {
-        // The line is in a highlighted chunk.
-        // Search backward for the first line.
-        var probe = lineno;
-        var color = the_color;
-        while (probe > 0 && color === the_color) {
-            probe--;
-            probe_line = c.line_elt(probe);
-            if (probe_line.length === 0) {
-                break;
-            }
-            color = probe_line.css("background-color");
-        }
-        var begin = probe + 1;
-
-        // Search forward for the last line.
-        probe = lineno;
-        color = the_color;
-        while (color === the_color) {
-            probe++;
-            probe_line = c.line_elt(probe);
-            color = probe_line.css("background-color");
-        }
-
-        coverage.set_sel(begin, probe);
-    }
-    else {
-        coverage.set_sel(lineno);
-    }
-};
-
-coverage.show_selection = function () {
-    var c = coverage;
-
-    // Highlight the lines in the chunk
-    c.code_container().find(".highlight").removeClass("highlight");
-    for (var probe = c.sel_begin; probe > 0 && probe < c.sel_end; probe++) {
-        c.num_elt(probe).addClass("highlight");
-    }
-
-    c.scroll_to_selection();
-};
-
-coverage.scroll_to_selection = function () {
-    // Scroll the page if the chunk isn't fully visible.
-    if (coverage.selection_ends_on_screen() < 2) {
-        // Need to move the page. The html,body trick makes it scroll in all
-        // browsers, got it from http://stackoverflow.com/questions/3042651
-        var top = coverage.line_elt(coverage.sel_begin);
-        var top_pos = parseInt(top.offset().top, 10);
-        coverage.scroll_window(top_pos - 30);
-    }
-};
-
-coverage.scroll_window = function (to_pos) {
-    $("html,body").animate({scrollTop: to_pos}, 200);
-};
-
-coverage.finish_scrolling = function () {
-    $("html,body").stop(true, true);
-};
diff --git a/rpython/rlib/rstrategies/htmlcov1/index.html b/rpython/rlib/rstrategies/htmlcov1/index.html
deleted file mode 100644
--- a/rpython/rlib/rstrategies/htmlcov1/index.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
-    <title>Coverage report</title>
-    <link rel='stylesheet' href='style.css' type='text/css'>
-    
-    <script type='text/javascript' src='jquery.min.js'></script>
-    <script type='text/javascript' src='jquery.tablesorter.min.js'></script>
-    <script type='text/javascript' src='jquery.hotkeys.js'></script>
-    <script type='text/javascript' src='coverage_html.js'></script>
-    <script type='text/javascript' charset='utf-8'>
-        jQuery(document).ready(coverage.index_ready);
-    </script>
-</head>
-<body id='indexfile'>
-
-<div id='header'>
-    <div class='content'>
-        <h1>Coverage report:
-            <span class='pc_cov'>95%</span>
-        </h1>
-        <img id='keyboard_icon' src='keybd_closed.png'>
-    </div>
-</div>
-
-<div class='help_panel'>
-    <img id='panel_icon' src='keybd_open.png'>
-    <p class='legend'>Hot-keys on this page</p>
-    <div>
-    <p class='keyhelp'>
-        <span class='key'>n</span>
-        <span class='key'>s</span>
-        <span class='key'>m</span>
-        <span class='key'>x</span>
-        
-        <span class='key'>c</span>   change column sorting
-    </p>
-    </div>
-</div>
-
-<div id='index'>
-    <table class='index'>
-        <thead>
-            
-            <tr class='tablehead' title='Click to sort'>
-                <th class='name left headerSortDown shortkey_n'>Module</th>
-                <th class='shortkey_s'>statements</th>
-                <th class='shortkey_m'>missing</th>
-                <th class='shortkey_x'>excluded</th>
-                
-                <th class='right shortkey_c'>coverage</th>
-            </tr>
-        </thead>
-        
-        <tfoot>
-            <tr class='total'>
-                <td class='name left'>Total</td>
-                <td>395</td>
-                <td>18</td>
-                <td>0</td>
-                
-                <td class='right'>95%</td>
-            </tr>
-        </tfoot>
-        <tbody>
-            
-            <tr class='file'>
-                <td class='name left'><a href='logger.html'>logger</a></td>
-                <td>46</td>
-                <td>2</td>
-                <td>0</td>
-                
-                <td class='right'>96%</td>
-            </tr>
-            
-            <tr class='file'>
-                <td class='name left'><a href='rstrategies.html'>rstrategies</a></td>
-                <td>349</td>
-                <td>16</td>
-                <td>0</td>
-                
-                <td class='right'>95%</td>
-            </tr>
-            
-        </tbody>
-    </table>
-</div>
-
-<div id='footer'>
-    <div class='content'>
-        <p>
-            <a class='nav' href='http://nedbatchelder.com/code/coverage'>coverage.py v3.7.1</a>
-        </p>
-    </div>
-</div>
-
-</body>
-</html>
diff --git a/rpython/rlib/rstrategies/htmlcov1/jquery.hotkeys.js b/rpython/rlib/rstrategies/htmlcov1/jquery.hotkeys.js
deleted file mode 100644
--- a/rpython/rlib/rstrategies/htmlcov1/jquery.hotkeys.js
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * jQuery Hotkeys Plugin
- * Copyright 2010, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- *
- * Based upon the plugin by Tzury Bar Yochay:
- * http://github.com/tzuryby/hotkeys
- *
- * Original idea by:
- * Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/
-*/
-
-(function(jQuery){
-
-	jQuery.hotkeys = {
-		version: "0.8",
-
-		specialKeys: {
-			8: "backspace", 9: "tab", 13: "return", 16: "shift", 17: "ctrl", 18: "alt", 19: "pause",
-			20: "capslock", 27: "esc", 32: "space", 33: "pageup", 34: "pagedown", 35: "end", 36: "home",
-			37: "left", 38: "up", 39: "right", 40: "down", 45: "insert", 46: "del",
-			96: "0", 97: "1", 98: "2", 99: "3", 100: "4", 101: "5", 102: "6", 103: "7",
-			104: "8", 105: "9", 106: "*", 107: "+", 109: "-", 110: ".", 111 : "/",
-			112: "f1", 113: "f2", 114: "f3", 115: "f4", 116: "f5", 117: "f6", 118: "f7", 119: "f8",
-			120: "f9", 121: "f10", 122: "f11", 123: "f12", 144: "numlock", 145: "scroll", 191: "/", 224: "meta"
-		},
-
-		shiftNums: {
-			"`": "~", "1": "!", "2": "@", "3": "#", "4": "$", "5": "%", "6": "^", "7": "&",
-			"8": "*", "9": "(", "0": ")", "-": "_", "=": "+", ";": ": ", "'": "\"", ",": "<",
-			".": ">",  "/": "?",  "\\": "|"
-		}
-	};
-
-	function keyHandler( handleObj ) {
-		// Only care when a possible input has been specified
-		if ( typeof handleObj.data !== "string" ) {
-			return;
-		}
-
-		var origHandler = handleObj.handler,
-			keys = handleObj.data.toLowerCase().split(" ");
-
-		handleObj.handler = function( event ) {
-			// Don't fire in text-accepting inputs that we didn't directly bind to
-			if ( this !== event.target && (/textarea|select/i.test( event.target.nodeName ) ||
-				 event.target.type === "text") ) {
-				return;
-			}
-
-			// Keypress represents characters, not special keys
-			var special = event.type !== "keypress" && jQuery.hotkeys.specialKeys[ event.which ],
-				character = String.fromCharCode( event.which ).toLowerCase(),
-				key, modif = "", possible = {};
-
-			// check combinations (alt|ctrl|shift+anything)
-			if ( event.altKey && special !== "alt" ) {
-				modif += "alt+";
-			}
-
-			if ( event.ctrlKey && special !== "ctrl" ) {
-				modif += "ctrl+";
-			}
-
-			// TODO: Need to make sure this works consistently across platforms
-			if ( event.metaKey && !event.ctrlKey && special !== "meta" ) {
-				modif += "meta+";
-			}
-
-			if ( event.shiftKey && special !== "shift" ) {
-				modif += "shift+";
-			}
-
-			if ( special ) {
-				possible[ modif + special ] = true;
-
-			} else {
-				possible[ modif + character ] = true;
-				possible[ modif + jQuery.hotkeys.shiftNums[ character ] ] = true;
-
-				// "$" can be triggered as "Shift+4" or "Shift+$" or just "$"
-				if ( modif === "shift+" ) {
-					possible[ jQuery.hotkeys.shiftNums[ character ] ] = true;
-				}
-			}
-
-			for ( var i = 0, l = keys.length; i < l; i++ ) {
-				if ( possible[ keys[i] ] ) {
-					return origHandler.apply( this, arguments );
-				}
-			}
-		};
-	}
-
-	jQuery.each([ "keydown", "keyup", "keypress" ], function() {
-		jQuery.event.special[ this ] = { add: keyHandler };
-	});
-
-})( jQuery );
diff --git a/rpython/rlib/rstrategies/htmlcov1/jquery.isonscreen.js b/rpython/rlib/rstrategies/htmlcov1/jquery.isonscreen.js
deleted file mode 100644
--- a/rpython/rlib/rstrategies/htmlcov1/jquery.isonscreen.js
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Copyright (c) 2010
- * @author Laurence Wheway
- * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
- * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
- *
- * @version 1.2.0
- */
-(function($) {
-	jQuery.extend({
-		isOnScreen: function(box, container) {
-			//ensure numbers come in as intgers (not strings) and remove 'px' is it's there
-			for(var i in box){box[i] = parseFloat(box[i])};
-			for(var i in container){container[i] = parseFloat(container[i])};
-
-			if(!container){
-				container = {
-					left: $(window).scrollLeft(),
-					top: $(window).scrollTop(),
-					width: $(window).width(),
-					height: $(window).height()
-				}
-			}
-
-			if(	box.left+box.width-container.left > 0 &&
-				box.left < container.width+container.left &&
-				box.top+box.height-container.top > 0 &&
-				box.top < container.height+container.top
-			) return true;
-			return false;
-		}
-	})
-
-
-	jQuery.fn.isOnScreen = function (container) {
-		for(var i in container){container[i] = parseFloat(container[i])};
-
-		if(!container){
-			container = {
-				left: $(window).scrollLeft(),
-				top: $(window).scrollTop(),
-				width: $(window).width(),
-				height: $(window).height()
-			}
-		}
-
-		if(	$(this).offset().left+$(this).width()-container.left > 0 &&
-			$(this).offset().left < container.width+container.left &&
-			$(this).offset().top+$(this).height()-container.top > 0 &&
-			$(this).offset().top < container.height+container.top
-		) return true;
-		return false;
-	}
-})(jQuery);
diff --git a/rpython/rlib/rstrategies/htmlcov1/jquery.min.js b/rpython/rlib/rstrategies/htmlcov1/jquery.min.js
deleted file mode 100644
--- a/rpython/rlib/rstrategies/htmlcov1/jquery.min.js
+++ /dev/null
@@ -1,166 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.4.3
- * http://jquery.com/
- *
- * Copyright 2010, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2010, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Thu Oct 14 23:10:06 2010 -0400
- */
-(function(E,A){function U(){return false}function ba(){return true}function ja(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function Ga(a){var b,d,e=[],f=[],h,k,l,n,s,v,B,D;k=c.data(this,this.nodeType?"events":"__events__");if(typeof k==="function")k=k.events;if(!(a.liveFired===this||!k||!k.live||a.button&&a.type==="click")){if(a.namespace)D=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var H=k.live.slice(0);for(n=0;n<H.length;n++){k=H[n];k.origType.replace(X,
-"")===a.type?f.push(k.selector):H.splice(n--,1)}f=c(a.target).closest(f,a.currentTarget);s=0;for(v=f.length;s<v;s++){B=f[s];for(n=0;n<H.length;n++){k=H[n];if(B.selector===k.selector&&(!D||D.test(k.namespace))){l=B.elem;h=null;if(k.preType==="mouseenter"||k.preType==="mouseleave"){a.type=k.preType;h=c(a.relatedTarget).closest(k.selector)[0]}if(!h||h!==l)e.push({elem:l,handleObj:k,level:B.level})}}}s=0;for(v=e.length;s<v;s++){f=e[s];if(d&&f.level>d)break;a.currentTarget=f.elem;a.data=f.handleObj.data;
-a.handleObj=f.handleObj;D=f.handleObj.origHandler.apply(f.elem,arguments);if(D===false||a.isPropagationStopped()){d=f.level;if(D===false)b=false}}return b}}function Y(a,b){return(a&&a!=="*"?a+".":"")+b.replace(Ha,"`").replace(Ia,"&")}function ka(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(Ja.test(b))return c.filter(b,
-e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function la(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this,e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var k in e[h])c.event.add(this,h,e[h][k],e[h][k].data)}}})}function Ka(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}
-function ma(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?La:Ma,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a,"margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function ca(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||Na.test(a)?e(a,h):ca(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?
-e(a,""):c.each(b,function(f,h){ca(a+"["+f+"]",h,d,e)});else e(a,b)}function S(a,b){var d={};c.each(na.concat.apply([],na.slice(0,b)),function(){d[this]=a});return d}function oa(a){if(!da[a]){var b=c("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";da[a]=d}return da[a]}function ea(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var u=E.document,c=function(){function a(){if(!b.isReady){try{u.documentElement.doScroll("left")}catch(i){setTimeout(a,
-1);return}b.ready()}}var b=function(i,r){return new b.fn.init(i,r)},d=E.jQuery,e=E.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,k=/\S/,l=/^\s+/,n=/\s+$/,s=/\W/,v=/\d/,B=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,D=/^[\],:{}\s]*$/,H=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,G=/(?:^|:|,)(?:\s*\[)+/g,M=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,j=/(msie) ([\w.]+)/,o=/(mozilla)(?:.*? rv:([\w.]+))?/,m=navigator.userAgent,p=false,
-q=[],t,x=Object.prototype.toString,C=Object.prototype.hasOwnProperty,P=Array.prototype.push,N=Array.prototype.slice,R=String.prototype.trim,Q=Array.prototype.indexOf,L={};b.fn=b.prototype={init:function(i,r){var y,z,F;if(!i)return this;if(i.nodeType){this.context=this[0]=i;this.length=1;return this}if(i==="body"&&!r&&u.body){this.context=u;this[0]=u.body;this.selector="body";this.length=1;return this}if(typeof i==="string")if((y=h.exec(i))&&(y[1]||!r))if(y[1]){F=r?r.ownerDocument||r:u;if(z=B.exec(i))if(b.isPlainObject(r)){i=
-[u.createElement(z[1])];b.fn.attr.call(i,r,true)}else i=[F.createElement(z[1])];else{z=b.buildFragment([y[1]],[F]);i=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return b.merge(this,i)}else{if((z=u.getElementById(y[2]))&&z.parentNode){if(z.id!==y[2])return f.find(i);this.length=1;this[0]=z}this.context=u;this.selector=i;return this}else if(!r&&!s.test(i)){this.selector=i;this.context=u;i=u.getElementsByTagName(i);return b.merge(this,i)}else return!r||r.jquery?(r||f).find(i):b(r).find(i);
-else if(b.isFunction(i))return f.ready(i);if(i.selector!==A){this.selector=i.selector;this.context=i.context}return b.makeArray(i,this)},selector:"",jquery:"1.4.3",length:0,size:function(){return this.length},toArray:function(){return N.call(this,0)},get:function(i){return i==null?this.toArray():i<0?this.slice(i)[0]:this[i]},pushStack:function(i,r,y){var z=b();b.isArray(i)?P.apply(z,i):b.merge(z,i);z.prevObject=this;z.context=this.context;if(r==="find")z.selector=this.selector+(this.selector?" ":
-"")+y;else if(r)z.selector=this.selector+"."+r+"("+y+")";return z},each:function(i,r){return b.each(this,i,r)},ready:function(i){b.bindReady();if(b.isReady)i.call(u,b);else q&&q.push(i);return this},eq:function(i){return i===-1?this.slice(i):this.slice(i,+i+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(N.apply(this,arguments),"slice",N.call(arguments).join(","))},map:function(i){return this.pushStack(b.map(this,function(r,y){return i.call(r,
-y,r)}))},end:function(){return this.prevObject||b(null)},push:P,sort:[].sort,splice:[].splice};b.fn.init.prototype=b.fn;b.extend=b.fn.extend=function(){var i=arguments[0]||{},r=1,y=arguments.length,z=false,F,I,K,J,fa;if(typeof i==="boolean"){z=i;i=arguments[1]||{};r=2}if(typeof i!=="object"&&!b.isFunction(i))i={};if(y===r){i=this;--r}for(;r<y;r++)if((F=arguments[r])!=null)for(I in F){K=i[I];J=F[I];if(i!==J)if(z&&J&&(b.isPlainObject(J)||(fa=b.isArray(J)))){if(fa){fa=false;clone=K&&b.isArray(K)?K:[]}else clone=
-K&&b.isPlainObject(K)?K:{};i[I]=b.extend(z,clone,J)}else if(J!==A)i[I]=J}return i};b.extend({noConflict:function(i){E.$=e;if(i)E.jQuery=d;return b},isReady:false,readyWait:1,ready:function(i){i===true&&b.readyWait--;if(!b.readyWait||i!==true&&!b.isReady){if(!u.body)return setTimeout(b.ready,1);b.isReady=true;if(!(i!==true&&--b.readyWait>0)){if(q){for(var r=0;i=q[r++];)i.call(u,b);q=null}b.fn.triggerHandler&&b(u).triggerHandler("ready")}}},bindReady:function(){if(!p){p=true;if(u.readyState==="complete")return setTimeout(b.ready,
-1);if(u.addEventListener){u.addEventListener("DOMContentLoaded",t,false);E.addEventListener("load",b.ready,false)}else if(u.attachEvent){u.attachEvent("onreadystatechange",t);E.attachEvent("onload",b.ready);var i=false;try{i=E.frameElement==null}catch(r){}u.documentElement.doScroll&&i&&a()}}},isFunction:function(i){return b.type(i)==="function"},isArray:Array.isArray||function(i){return b.type(i)==="array"},isWindow:function(i){return i&&typeof i==="object"&&"setInterval"in i},isNaN:function(i){return i==
-null||!v.test(i)||isNaN(i)},type:function(i){return i==null?String(i):L[x.call(i)]||"object"},isPlainObject:function(i){if(!i||b.type(i)!=="object"||i.nodeType||b.isWindow(i))return false;if(i.constructor&&!C.call(i,"constructor")&&!C.call(i.constructor.prototype,"isPrototypeOf"))return false;for(var r in i);return r===A||C.call(i,r)},isEmptyObject:function(i){for(var r in i)return false;return true},error:function(i){throw i;},parseJSON:function(i){if(typeof i!=="string"||!i)return null;i=b.trim(i);
-if(D.test(i.replace(H,"@").replace(w,"]").replace(G,"")))return E.JSON&&E.JSON.parse?E.JSON.parse(i):(new Function("return "+i))();else b.error("Invalid JSON: "+i)},noop:function(){},globalEval:function(i){if(i&&k.test(i)){var r=u.getElementsByTagName("head")[0]||u.documentElement,y=u.createElement("script");y.type="text/javascript";if(b.support.scriptEval)y.appendChild(u.createTextNode(i));else y.text=i;r.insertBefore(y,r.firstChild);r.removeChild(y)}},nodeName:function(i,r){return i.nodeName&&i.nodeName.toUpperCase()===
-r.toUpperCase()},each:function(i,r,y){var z,F=0,I=i.length,K=I===A||b.isFunction(i);if(y)if(K)for(z in i){if(r.apply(i[z],y)===false)break}else for(;F<I;){if(r.apply(i[F++],y)===false)break}else if(K)for(z in i){if(r.call(i[z],z,i[z])===false)break}else for(y=i[0];F<I&&r.call(y,F,y)!==false;y=i[++F]);return i},trim:R?function(i){return i==null?"":R.call(i)}:function(i){return i==null?"":i.toString().replace(l,"").replace(n,"")},makeArray:function(i,r){var y=r||[];if(i!=null){var z=b.type(i);i.length==
-null||z==="string"||z==="function"||z==="regexp"||b.isWindow(i)?P.call(y,i):b.merge(y,i)}return y},inArray:function(i,r){if(r.indexOf)return r.indexOf(i);for(var y=0,z=r.length;y<z;y++)if(r[y]===i)return y;return-1},merge:function(i,r){var y=i.length,z=0;if(typeof r.length==="number")for(var F=r.length;z<F;z++)i[y++]=r[z];else for(;r[z]!==A;)i[y++]=r[z++];i.length=y;return i},grep:function(i,r,y){var z=[],F;y=!!y;for(var I=0,K=i.length;I<K;I++){F=!!r(i[I],I);y!==F&&z.push(i[I])}return z},map:function(i,
-r,y){for(var z=[],F,I=0,K=i.length;I<K;I++){F=r(i[I],I,y);if(F!=null)z[z.length]=F}return z.concat.apply([],z)},guid:1,proxy:function(i,r,y){if(arguments.length===2)if(typeof r==="string"){y=i;i=y[r];r=A}else if(r&&!b.isFunction(r)){y=r;r=A}if(!r&&i)r=function(){return i.apply(y||this,arguments)};if(i)r.guid=i.guid=i.guid||r.guid||b.guid++;return r},access:function(i,r,y,z,F,I){var K=i.length;if(typeof r==="object"){for(var J in r)b.access(i,J,r[J],z,F,y);return i}if(y!==A){z=!I&&z&&b.isFunction(y);
-for(J=0;J<K;J++)F(i[J],r,z?y.call(i[J],J,F(i[J],r)):y,I);return i}return K?F(i[0],r):A},now:function(){return(new Date).getTime()},uaMatch:function(i){i=i.toLowerCase();i=M.exec(i)||g.exec(i)||j.exec(i)||i.indexOf("compatible")<0&&o.exec(i)||[];return{browser:i[1]||"",version:i[2]||"0"}},browser:{}});b.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(i,r){L["[object "+r+"]"]=r.toLowerCase()});m=b.uaMatch(m);if(m.browser){b.browser[m.browser]=true;b.browser.version=
-m.version}if(b.browser.webkit)b.browser.safari=true;if(Q)b.inArray=function(i,r){return Q.call(r,i)};if(!/\s/.test("\u00a0")){l=/^[\s\xA0]+/;n=/[\s\xA0]+$/}f=b(u);if(u.addEventListener)t=function(){u.removeEventListener("DOMContentLoaded",t,false);b.ready()};else if(u.attachEvent)t=function(){if(u.readyState==="complete"){u.detachEvent("onreadystatechange",t);b.ready()}};return E.jQuery=E.$=b}();(function(){c.support={};var a=u.documentElement,b=u.createElement("script"),d=u.createElement("div"),
-e="script"+c.now();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var f=d.getElementsByTagName("*"),h=d.getElementsByTagName("a")[0],k=u.createElement("select"),l=k.appendChild(u.createElement("option"));if(!(!f||!f.length||!h)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(h.getAttribute("style")),
-hrefNormalized:h.getAttribute("href")==="/a",opacity:/^0.55$/.test(h.style.opacity),cssFloat:!!h.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:l.selected,optDisabled:false,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};k.disabled=true;c.support.optDisabled=!l.disabled;b.type="text/javascript";try{b.appendChild(u.createTextNode("window."+e+"=1;"))}catch(n){}a.insertBefore(b,
-a.firstChild);if(E[e]){c.support.scriptEval=true;delete E[e]}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function s(){c.support.noCloneEvent=false;d.detachEvent("onclick",s)});d.cloneNode(true).fireEvent("onclick")}d=u.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=u.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var s=u.createElement("div");
-s.style.width=s.style.paddingLeft="1px";u.body.appendChild(s);c.boxModel=c.support.boxModel=s.offsetWidth===2;if("zoom"in s.style){s.style.display="inline";s.style.zoom=1;c.support.inlineBlockNeedsLayout=s.offsetWidth===2;s.style.display="";s.innerHTML="<div style='width:4px;'></div>";c.support.shrinkWrapBlocks=s.offsetWidth!==2}s.innerHTML="<table><tr><td style='padding:0;display:none'></td><td>t</td></tr></table>";var v=s.getElementsByTagName("td");c.support.reliableHiddenOffsets=v[0].offsetHeight===
-0;v[0].style.display="";v[1].style.display="none";c.support.reliableHiddenOffsets=c.support.reliableHiddenOffsets&&v[0].offsetHeight===0;s.innerHTML="";u.body.removeChild(s).style.display="none"});a=function(s){var v=u.createElement("div");s="on"+s;var B=s in v;if(!B){v.setAttribute(s,"return;");B=typeof v[s]==="function"}return B};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=f=h=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",
-cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var pa={},Oa=/^(?:\{.*\}|\[.*\])$/;c.extend({cache:{},uuid:0,expando:"jQuery"+c.now(),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},data:function(a,b,d){if(c.acceptData(a)){a=a==E?pa:a;var e=a.nodeType,f=e?a[c.expando]:null,h=c.cache;if(!(e&&!f&&typeof b==="string"&&d===A)){if(e)f||(a[c.expando]=f=++c.uuid);else h=a;if(typeof b==="object")if(e)h[f]=
-c.extend(h[f],b);else c.extend(h,b);else if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==A)a[b]=d;return typeof b==="string"?a[b]:a}}},removeData:function(a,b){if(c.acceptData(a)){a=a==E?pa:a;var d=a.nodeType,e=d?a[c.expando]:a,f=c.cache,h=d?f[e]:e;if(b){if(h){delete h[b];d&&c.isEmptyObject(h)&&c.removeData(a)}}else if(d&&c.support.deleteExpando)delete a[c.expando];else if(a.removeAttribute)a.removeAttribute(c.expando);else if(d)delete f[e];else for(var k in a)delete a[k]}},acceptData:function(a){if(a.nodeName){var b=
-c.noData[a.nodeName.toLowerCase()];if(b)return!(b===true||a.getAttribute("classid")!==b)}return true}});c.fn.extend({data:function(a,b){if(typeof a==="undefined")return this.length?c.data(this[0]):null;else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===A){var e=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(e===A&&this.length){e=c.data(this[0],a);if(e===A&&this[0].nodeType===1){e=this[0].getAttribute("data-"+a);if(typeof e===
-"string")try{e=e==="true"?true:e==="false"?false:e==="null"?null:!c.isNaN(e)?parseFloat(e):Oa.test(e)?c.parseJSON(e):e}catch(f){}else e=A}}return e===A&&d[1]?this.data(d[0]):e}else return this.each(function(){var h=c(this),k=[d[0],b];h.triggerHandler("setData"+d[1]+"!",k);c.data(this,a,b);h.triggerHandler("changeData"+d[1]+"!",k)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var e=c.data(a,b);if(!d)return e||
-[];if(!e||c.isArray(d))e=c.data(a,b,c.makeArray(d));else e.push(d);return e}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),e=d.shift();if(e==="inprogress")e=d.shift();if(e){b==="fx"&&d.unshift("inprogress");e.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===A)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,
-a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var qa=/[\n\t]/g,ga=/\s+/,Pa=/\r/g,Qa=/^(?:href|src|style)$/,Ra=/^(?:button|input)$/i,Sa=/^(?:button|input|object|select|textarea)$/i,Ta=/^a(?:rea)?$/i,ra=/^(?:radio|checkbox)$/i;c.fn.extend({attr:function(a,b){return c.access(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,
-a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(s){var v=c(this);v.addClass(a.call(this,s,v.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ga),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===1)if(f.className){for(var h=" "+f.className+" ",k=f.className,l=0,n=b.length;l<n;l++)if(h.indexOf(" "+b[l]+" ")<0)k+=" "+b[l];f.className=c.trim(k)}else f.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(n){var s=
-c(this);s.removeClass(a.call(this,n,s.attr("class")))});if(a&&typeof a==="string"||a===A)for(var b=(a||"").split(ga),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===1&&f.className)if(a){for(var h=(" "+f.className+" ").replace(qa," "),k=0,l=b.length;k<l;k++)h=h.replace(" "+b[k]+" "," ");f.className=c.trim(h)}else f.className=""}return this},toggleClass:function(a,b){var d=typeof a,e=typeof b==="boolean";if(c.isFunction(a))return this.each(function(f){var h=c(this);h.toggleClass(a.call(this,
-f,h.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var f,h=0,k=c(this),l=b,n=a.split(ga);f=n[h++];){l=e?l:!k.hasClass(f);k[l?"addClass":"removeClass"](f)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(qa," ").indexOf(a)>-1)return true;return false},
-val:function(a){if(!arguments.length){var b=this[0];if(b){if(c.nodeName(b,"option")){var d=b.attributes.value;return!d||d.specified?b.value:b.text}if(c.nodeName(b,"select")){var e=b.selectedIndex;d=[];var f=b.options;b=b.type==="select-one";if(e<0)return null;var h=b?e:0;for(e=b?e+1:f.length;h<e;h++){var k=f[h];if(k.selected&&(c.support.optDisabled?!k.disabled:k.getAttribute("disabled")===null)&&(!k.parentNode.disabled||!c.nodeName(k.parentNode,"optgroup"))){a=c(k).val();if(b)return a;d.push(a)}}return d}if(ra.test(b.type)&&
-!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Pa,"")}return A}var l=c.isFunction(a);return this.each(function(n){var s=c(this),v=a;if(this.nodeType===1){if(l)v=a.call(this,n,s.val());if(v==null)v="";else if(typeof v==="number")v+="";else if(c.isArray(v))v=c.map(v,function(D){return D==null?"":D+""});if(c.isArray(v)&&ra.test(this.type))this.checked=c.inArray(s.val(),v)>=0;else if(c.nodeName(this,"select")){var B=c.makeArray(v);c("option",this).each(function(){this.selected=
-c.inArray(c(this).val(),B)>=0});if(!B.length)this.selectedIndex=-1}else this.value=v}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,e){if(!a||a.nodeType===3||a.nodeType===8)return A;if(e&&b in c.attrFn)return c(a)[b](d);e=a.nodeType!==1||!c.isXMLDoc(a);var f=d!==A;b=e&&c.props[b]||b;if(a.nodeType===1){var h=Qa.test(b);if((b in a||a[b]!==A)&&e&&!h){if(f){b==="type"&&Ra.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
-if(d===null)a.nodeType===1&&a.removeAttribute(b);else a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:Sa.test(a.nodeName)||Ta.test(a.nodeName)&&a.href?0:A;return a[b]}if(!c.support.style&&e&&b==="style"){if(f)a.style.cssText=""+d;return a.style.cssText}f&&a.setAttribute(b,""+d);if(!a.attributes[b]&&a.hasAttribute&&!a.hasAttribute(b))return A;a=!c.support.hrefNormalized&&e&&
-h?a.getAttribute(b,2):a.getAttribute(b);return a===null?A:a}}});var X=/\.(.*)$/,ha=/^(?:textarea|input|select)$/i,Ha=/\./g,Ia=/ /g,Ua=/[^\w\s.|`]/g,Va=function(a){return a.replace(Ua,"\\$&")},sa={focusin:0,focusout:0};c.event={add:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(c.isWindow(a)&&a!==E&&!a.frameElement)a=E;if(d===false)d=U;var f,h;if(d.handler){f=d;d=f.handler}if(!d.guid)d.guid=c.guid++;if(h=c.data(a)){var k=a.nodeType?"events":"__events__",l=h[k],n=h.handle;if(typeof l===
-"function"){n=l.handle;l=l.events}else if(!l){a.nodeType||(h[k]=h=function(){});h.events=l={}}if(!n)h.handle=n=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(n.elem,arguments):A};n.elem=a;b=b.split(" ");for(var s=0,v;k=b[s++];){h=f?c.extend({},f):{handler:d,data:e};if(k.indexOf(".")>-1){v=k.split(".");k=v.shift();h.namespace=v.slice(0).sort().join(".")}else{v=[];h.namespace=""}h.type=k;if(!h.guid)h.guid=d.guid;var B=l[k],D=c.event.special[k]||{};if(!B){B=l[k]=[];
-if(!D.setup||D.setup.call(a,e,v,n)===false)if(a.addEventListener)a.addEventListener(k,n,false);else a.attachEvent&&a.attachEvent("on"+k,n)}if(D.add){D.add.call(a,h);if(!h.handler.guid)h.handler.guid=d.guid}B.push(h);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(d===false)d=U;var f,h,k=0,l,n,s,v,B,D,H=a.nodeType?"events":"__events__",w=c.data(a),G=w&&w[H];if(w&&G){if(typeof G==="function"){w=G;G=G.events}if(b&&b.type){d=b.handler;b=b.type}if(!b||
-typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(f in G)c.event.remove(a,f+b)}else{for(b=b.split(" ");f=b[k++];){v=f;l=f.indexOf(".")<0;n=[];if(!l){n=f.split(".");f=n.shift();s=RegExp("(^|\\.)"+c.map(n.slice(0).sort(),Va).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(B=G[f])if(d){v=c.event.special[f]||{};for(h=e||0;h<B.length;h++){D=B[h];if(d.guid===D.guid){if(l||s.test(D.namespace)){e==null&&B.splice(h--,1);v.remove&&v.remove.call(a,D)}if(e!=null)break}}if(B.length===0||e!=null&&B.length===1){if(!v.teardown||
-v.teardown.call(a,n)===false)c.removeEvent(a,f,w.handle);delete G[f]}}else for(h=0;h<B.length;h++){D=B[h];if(l||s.test(D.namespace)){c.event.remove(a,v,D.handler,h);B.splice(h--,1)}}}if(c.isEmptyObject(G)){if(b=w.handle)b.elem=null;delete w.events;delete w.handle;if(typeof w==="function")c.removeData(a,H);else c.isEmptyObject(w)&&c.removeData(a)}}}}},trigger:function(a,b,d,e){var f=a.type||a;if(!e){a=typeof a==="object"?a[c.expando]?a:c.extend(c.Event(f),a):c.Event(f);if(f.indexOf("!")>=0){a.type=
-f=f.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[f]&&c.each(c.cache,function(){this.events&&this.events[f]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return A;a.result=A;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(e=d.nodeType?c.data(d,"handle"):(c.data(d,"__events__")||{}).handle)&&e.apply(d,b);e=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+f]&&d["on"+f].apply(d,b)===
-false){a.result=false;a.preventDefault()}}catch(h){}if(!a.isPropagationStopped()&&e)c.event.trigger(a,b,e,true);else if(!a.isDefaultPrevented()){e=a.target;var k,l=f.replace(X,""),n=c.nodeName(e,"a")&&l==="click",s=c.event.special[l]||{};if((!s._default||s._default.call(d,a)===false)&&!n&&!(e&&e.nodeName&&c.noData[e.nodeName.toLowerCase()])){try{if(e[l]){if(k=e["on"+l])e["on"+l]=null;c.event.triggered=true;e[l]()}}catch(v){}if(k)e["on"+l]=k;c.event.triggered=false}}},handle:function(a){var b,d,e;
-d=[];var f,h=c.makeArray(arguments);a=h[0]=c.event.fix(a||E.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;if(!b){e=a.type.split(".");a.type=e.shift();d=e.slice(0).sort();e=RegExp("(^|\\.)"+d.join("\\.(?:.*\\.)?")+"(\\.|$)")}a.namespace=a.namespace||d.join(".");f=c.data(this,this.nodeType?"events":"__events__");if(typeof f==="function")f=f.events;d=(f||{})[a.type];if(f&&d){d=d.slice(0);f=0;for(var k=d.length;f<k;f++){var l=d[f];if(b||e.test(l.namespace)){a.handler=l.handler;a.data=
-l.data;a.handleObj=l;l=l.handler.apply(this,h);if(l!==A){a.result=l;if(l===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
-fix:function(a){if(a[c.expando])return a;var b=a;a=c.Event(b);for(var d=this.props.length,e;d;){e=this.props[--d];a[e]=b[e]}if(!a.target)a.target=a.srcElement||u;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=u.documentElement;d=u.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
-d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(a.which==null&&(a.charCode!=null||a.keyCode!=null))a.which=a.charCode!=null?a.charCode:a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==A)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,Y(a.origType,a.selector),c.extend({},a,{handler:Ga,guid:a.handler.guid}))},remove:function(a){c.event.remove(this,
-Y(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,d){if(c.isWindow(this))this.onbeforeunload=d},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};c.removeEvent=u.removeEventListener?function(a,b,d){a.removeEventListener&&a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent&&a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=a;this.type=a.type}else this.type=a;this.timeStamp=
-c.now();this[c.expando]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=ba;var a=this.originalEvent;if(a)if(a.preventDefault)a.preventDefault();else a.returnValue=false},stopPropagation:function(){this.isPropagationStopped=ba;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=ba;this.stopPropagation()},isDefaultPrevented:U,isPropagationStopped:U,isImmediatePropagationStopped:U};
-var ta=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},ua=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?ua:ta,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?ua:ta)}}});if(!c.support.submitBubbles)c.event.special.submit={setup:function(){if(this.nodeName.toLowerCase()!==
-"form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length){a.liveFired=A;return ja("submit",this,arguments)}});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13){a.liveFired=A;return ja("submit",this,arguments)}})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};if(!c.support.changeBubbles){var V,
-va=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(e){return e.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},Z=function(a,b){var d=a.target,e,f;if(!(!ha.test(d.nodeName)||d.readOnly)){e=c.data(d,"_change_data");f=va(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",f);if(!(e===A||f===e))if(e!=null||f){a.type="change";a.liveFired=
-A;return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:Z,beforedeactivate:Z,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return Z.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return Z.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,"_change_data",va(a))}},setup:function(){if(this.type===
-"file")return false;for(var a in V)c.event.add(this,a+".specialChange",V[a]);return ha.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return ha.test(this.nodeName)}};V=c.event.special.change.filters;V.focus=V.beforeactivate}u.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.trigger(e,null,e.target)}c.event.special[b]={setup:function(){sa[b]++===0&&u.addEventListener(a,d,true)},teardown:function(){--sa[b]===
-0&&u.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,e,f){if(typeof d==="object"){for(var h in d)this[b](h,e,d[h],f);return this}if(c.isFunction(e)||e===false){f=e;e=A}var k=b==="one"?c.proxy(f,function(n){c(this).unbind(n,k);return f.apply(this,arguments)}):f;if(d==="unload"&&b!=="one")this.one(d,e,f);else{h=0;for(var l=this.length;h<l;h++)c.event.add(this[h],d,k,e)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&!a.preventDefault)for(var d in a)this.unbind(d,
-a[d]);else{d=0;for(var e=this.length;d<e;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,e){return this.live(b,d,e,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){var d=c.Event(a);d.preventDefault();d.stopPropagation();c.event.trigger(d,b,this[0]);return d.result}},toggle:function(a){for(var b=arguments,d=
-1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(e){var f=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,f+1);e.preventDefault();return b[f].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var wa={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,e,f,h){var k,l=0,n,s,v=h||this.selector;h=h?this:c(this.context);if(typeof d===
-"object"&&!d.preventDefault){for(k in d)h[b](k,e,d[k],v);return this}if(c.isFunction(e)){f=e;e=A}for(d=(d||"").split(" ");(k=d[l++])!=null;){n=X.exec(k);s="";if(n){s=n[0];k=k.replace(X,"")}if(k==="hover")d.push("mouseenter"+s,"mouseleave"+s);else{n=k;if(k==="focus"||k==="blur"){d.push(wa[k]+s);k+=s}else k=(wa[k]||k)+s;if(b==="live"){s=0;for(var B=h.length;s<B;s++)c.event.add(h[s],"live."+Y(k,v),{data:e,selector:v,handler:f,origType:k,origHandler:f,preType:n})}else h.unbind("live."+Y(k,v),f)}}return this}});
-c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){c.fn[b]=function(d,e){if(e==null){e=d;d=null}return arguments.length>0?this.bind(b,d,e):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});E.attachEvent&&!E.addEventListener&&c(E).bind("unload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});
-(function(){function a(g,j,o,m,p,q){p=0;for(var t=m.length;p<t;p++){var x=m[p];if(x){x=x[g];for(var C=false;x;){if(x.sizcache===o){C=m[x.sizset];break}if(x.nodeType===1&&!q){x.sizcache=o;x.sizset=p}if(x.nodeName.toLowerCase()===j){C=x;break}x=x[g]}m[p]=C}}}function b(g,j,o,m,p,q){p=0;for(var t=m.length;p<t;p++){var x=m[p];if(x){x=x[g];for(var C=false;x;){if(x.sizcache===o){C=m[x.sizset];break}if(x.nodeType===1){if(!q){x.sizcache=o;x.sizset=p}if(typeof j!=="string"){if(x===j){C=true;break}}else if(l.filter(j,
-[x]).length>0){C=x;break}}x=x[g]}m[p]=C}}}var d=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,h=false,k=true;[0,0].sort(function(){k=false;return 0});var l=function(g,j,o,m){o=o||[];var p=j=j||u;if(j.nodeType!==1&&j.nodeType!==9)return[];if(!g||typeof g!=="string")return o;var q=[],t,x,C,P,N=true,R=l.isXML(j),Q=g,L;do{d.exec("");if(t=d.exec(Q)){Q=t[3];q.push(t[1]);if(t[2]){P=t[3];
-break}}}while(t);if(q.length>1&&s.exec(g))if(q.length===2&&n.relative[q[0]])x=M(q[0]+q[1],j);else for(x=n.relative[q[0]]?[j]:l(q.shift(),j);q.length;){g=q.shift();if(n.relative[g])g+=q.shift();x=M(g,x)}else{if(!m&&q.length>1&&j.nodeType===9&&!R&&n.match.ID.test(q[0])&&!n.match.ID.test(q[q.length-1])){t=l.find(q.shift(),j,R);j=t.expr?l.filter(t.expr,t.set)[0]:t.set[0]}if(j){t=m?{expr:q.pop(),set:D(m)}:l.find(q.pop(),q.length===1&&(q[0]==="~"||q[0]==="+")&&j.parentNode?j.parentNode:j,R);x=t.expr?l.filter(t.expr,
-t.set):t.set;if(q.length>0)C=D(x);else N=false;for(;q.length;){t=L=q.pop();if(n.relative[L])t=q.pop();else L="";if(t==null)t=j;n.relative[L](C,t,R)}}else C=[]}C||(C=x);C||l.error(L||g);if(f.call(C)==="[object Array]")if(N)if(j&&j.nodeType===1)for(g=0;C[g]!=null;g++){if(C[g]&&(C[g]===true||C[g].nodeType===1&&l.contains(j,C[g])))o.push(x[g])}else for(g=0;C[g]!=null;g++)C[g]&&C[g].nodeType===1&&o.push(x[g]);else o.push.apply(o,C);else D(C,o);if(P){l(P,p,o,m);l.uniqueSort(o)}return o};l.uniqueSort=function(g){if(w){h=
-k;g.sort(w);if(h)for(var j=1;j<g.length;j++)g[j]===g[j-1]&&g.splice(j--,1)}return g};l.matches=function(g,j){return l(g,null,null,j)};l.matchesSelector=function(g,j){return l(j,null,null,[g]).length>0};l.find=function(g,j,o){var m;if(!g)return[];for(var p=0,q=n.order.length;p<q;p++){var t=n.order[p],x;if(x=n.leftMatch[t].exec(g)){var C=x[1];x.splice(1,1);if(C.substr(C.length-1)!=="\\"){x[1]=(x[1]||"").replace(/\\/g,"");m=n.find[t](x,j,o);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=j.getElementsByTagName("*"));
-return{set:m,expr:g}};l.filter=function(g,j,o,m){for(var p=g,q=[],t=j,x,C,P=j&&j[0]&&l.isXML(j[0]);g&&j.length;){for(var N in n.filter)if((x=n.leftMatch[N].exec(g))!=null&&x[2]){var R=n.filter[N],Q,L;L=x[1];C=false;x.splice(1,1);if(L.substr(L.length-1)!=="\\"){if(t===q)q=[];if(n.preFilter[N])if(x=n.preFilter[N](x,t,o,q,m,P)){if(x===true)continue}else C=Q=true;if(x)for(var i=0;(L=t[i])!=null;i++)if(L){Q=R(L,x,i,t);var r=m^!!Q;if(o&&Q!=null)if(r)C=true;else t[i]=false;else if(r){q.push(L);C=true}}if(Q!==
-A){o||(t=q);g=g.replace(n.match[N],"");if(!C)return[];break}}}if(g===p)if(C==null)l.error(g);else break;p=g}return t};l.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=l.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,
-POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},relative:{"+":function(g,j){var o=typeof j==="string",m=o&&!/\W/.test(j);o=o&&!m;if(m)j=j.toLowerCase();m=0;for(var p=g.length,q;m<p;m++)if(q=g[m]){for(;(q=q.previousSibling)&&q.nodeType!==1;);g[m]=o||q&&q.nodeName.toLowerCase()===
-j?q||false:q===j}o&&l.filter(j,g,true)},">":function(g,j){var o=typeof j==="string",m,p=0,q=g.length;if(o&&!/\W/.test(j))for(j=j.toLowerCase();p<q;p++){if(m=g[p]){o=m.parentNode;g[p]=o.nodeName.toLowerCase()===j?o:false}}else{for(;p<q;p++)if(m=g[p])g[p]=o?m.parentNode:m.parentNode===j;o&&l.filter(j,g,true)}},"":function(g,j,o){var m=e++,p=b,q;if(typeof j==="string"&&!/\W/.test(j)){q=j=j.toLowerCase();p=a}p("parentNode",j,m,g,q,o)},"~":function(g,j,o){var m=e++,p=b,q;if(typeof j==="string"&&!/\W/.test(j)){q=
-j=j.toLowerCase();p=a}p("previousSibling",j,m,g,q,o)}},find:{ID:function(g,j,o){if(typeof j.getElementById!=="undefined"&&!o)return(g=j.getElementById(g[1]))&&g.parentNode?[g]:[]},NAME:function(g,j){if(typeof j.getElementsByName!=="undefined"){for(var o=[],m=j.getElementsByName(g[1]),p=0,q=m.length;p<q;p++)m[p].getAttribute("name")===g[1]&&o.push(m[p]);return o.length===0?null:o}},TAG:function(g,j){return j.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,j,o,m,p,q){g=" "+g[1].replace(/\\/g,
-"")+" ";if(q)return g;q=0;for(var t;(t=j[q])!=null;q++)if(t)if(p^(t.className&&(" "+t.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))o||m.push(t);else if(o)j[q]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var j=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=j[1]+(j[2]||1)-0;g[3]=j[3]-0}g[0]=e++;return g},ATTR:function(g,j,o,
-m,p,q){j=g[1].replace(/\\/g,"");if(!q&&n.attrMap[j])g[1]=n.attrMap[j];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,j,o,m,p){if(g[1]==="not")if((d.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=l(g[3],null,null,j);else{g=l.filter(g[3],j,o,true^p);o||m.push.apply(m,g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===
-true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,j,o){return!!l(o[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===
-g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,j){return j===0},last:function(g,j,o,m){return j===m.length-1},even:function(g,j){return j%2===0},odd:function(g,j){return j%2===1},lt:function(g,j,o){return j<o[3]-0},gt:function(g,j,o){return j>o[3]-0},nth:function(g,j,o){return o[3]-
-0===j},eq:function(g,j,o){return o[3]-0===j}},filter:{PSEUDO:function(g,j,o,m){var p=j[1],q=n.filters[p];if(q)return q(g,o,j,m);else if(p==="contains")return(g.textContent||g.innerText||l.getText([g])||"").indexOf(j[3])>=0;else if(p==="not"){j=j[3];o=0;for(m=j.length;o<m;o++)if(j[o]===g)return false;return true}else l.error("Syntax error, unrecognized expression: "+p)},CHILD:function(g,j){var o=j[1],m=g;switch(o){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(o===
-"first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":o=j[2];var p=j[3];if(o===1&&p===0)return true;var q=j[0],t=g.parentNode;if(t&&(t.sizcache!==q||!g.nodeIndex)){var x=0;for(m=t.firstChild;m;m=m.nextSibling)if(m.nodeType===1)m.nodeIndex=++x;t.sizcache=q}m=g.nodeIndex-p;return o===0?m===0:m%o===0&&m/o>=0}},ID:function(g,j){return g.nodeType===1&&g.getAttribute("id")===j},TAG:function(g,j){return j==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===
-j},CLASS:function(g,j){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(j)>-1},ATTR:function(g,j){var o=j[1];o=n.attrHandle[o]?n.attrHandle[o](g):g[o]!=null?g[o]:g.getAttribute(o);var m=o+"",p=j[2],q=j[4];return o==null?p==="!=":p==="="?m===q:p==="*="?m.indexOf(q)>=0:p==="~="?(" "+m+" ").indexOf(q)>=0:!q?m&&o!==false:p==="!="?m!==q:p==="^="?m.indexOf(q)===0:p==="$="?m.substr(m.length-q.length)===q:p==="|="?m===q||m.substr(0,q.length+1)===q+"-":false},POS:function(g,j,o,m){var p=n.setFilters[j[2]];
-if(p)return p(g,o,j,m)}}},s=n.match.POS,v=function(g,j){return"\\"+(j-0+1)},B;for(B in n.match){n.match[B]=RegExp(n.match[B].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[B]=RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[B].source.replace(/\\(\d+)/g,v))}var D=function(g,j){g=Array.prototype.slice.call(g,0);if(j){j.push.apply(j,g);return j}return g};try{Array.prototype.slice.call(u.documentElement.childNodes,0)}catch(H){D=function(g,j){var o=j||[],m=0;if(f.call(g)==="[object Array]")Array.prototype.push.apply(o,
-g);else if(typeof g.length==="number")for(var p=g.length;m<p;m++)o.push(g[m]);else for(;g[m];m++)o.push(g[m]);return o}}var w,G;if(u.documentElement.compareDocumentPosition)w=function(g,j){if(g===j){h=true;return 0}if(!g.compareDocumentPosition||!j.compareDocumentPosition)return g.compareDocumentPosition?-1:1;return g.compareDocumentPosition(j)&4?-1:1};else{w=function(g,j){var o=[],m=[],p=g.parentNode,q=j.parentNode,t=p;if(g===j){h=true;return 0}else if(p===q)return G(g,j);else if(p){if(!q)return 1}else return-1;
-for(;t;){o.unshift(t);t=t.parentNode}for(t=q;t;){m.unshift(t);t=t.parentNode}p=o.length;q=m.length;for(t=0;t<p&&t<q;t++)if(o[t]!==m[t])return G(o[t],m[t]);return t===p?G(g,m[t],-1):G(o[t],j,1)};G=function(g,j,o){if(g===j)return o;for(g=g.nextSibling;g;){if(g===j)return-1;g=g.nextSibling}return 1}}l.getText=function(g){for(var j="",o,m=0;g[m];m++){o=g[m];if(o.nodeType===3||o.nodeType===4)j+=o.nodeValue;else if(o.nodeType!==8)j+=l.getText(o.childNodes)}return j};(function(){var g=u.createElement("div"),
-j="script"+(new Date).getTime();g.innerHTML="<a name='"+j+"'/>";var o=u.documentElement;o.insertBefore(g,o.firstChild);if(u.getElementById(j)){n.find.ID=function(m,p,q){if(typeof p.getElementById!=="undefined"&&!q)return(p=p.getElementById(m[1]))?p.id===m[1]||typeof p.getAttributeNode!=="undefined"&&p.getAttributeNode("id").nodeValue===m[1]?[p]:A:[]};n.filter.ID=function(m,p){var q=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&q&&q.nodeValue===p}}o.removeChild(g);
-o=g=null})();(function(){var g=u.createElement("div");g.appendChild(u.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(j,o){var m=o.getElementsByTagName(j[1]);if(j[1]==="*"){for(var p=[],q=0;m[q];q++)m[q].nodeType===1&&p.push(m[q]);m=p}return m};g.innerHTML="<a href='#'></a>";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(j){return j.getAttribute("href",2)};g=null})();u.querySelectorAll&&
-function(){var g=l,j=u.createElement("div");j.innerHTML="<p class='TEST'></p>";if(!(j.querySelectorAll&&j.querySelectorAll(".TEST").length===0)){l=function(m,p,q,t){p=p||u;if(!t&&!l.isXML(p))if(p.nodeType===9)try{return D(p.querySelectorAll(m),q)}catch(x){}else if(p.nodeType===1&&p.nodeName.toLowerCase()!=="object"){var C=p.id,P=p.id="__sizzle__";try{return D(p.querySelectorAll("#"+P+" "+m),q)}catch(N){}finally{if(C)p.id=C;else p.removeAttribute("id")}}return g(m,p,q,t)};for(var o in g)l[o]=g[o];
-j=null}}();(function(){var g=u.documentElement,j=g.matchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.msMatchesSelector,o=false;try{j.call(u.documentElement,":sizzle")}catch(m){o=true}if(j)l.matchesSelector=function(p,q){try{if(o||!n.match.PSEUDO.test(q))return j.call(p,q)}catch(t){}return l(q,null,null,[p]).length>0}})();(function(){var g=u.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===
-0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(j,o,m){if(typeof o.getElementsByClassName!=="undefined"&&!m)return o.getElementsByClassName(j[1])};g=null}}})();l.contains=u.documentElement.contains?function(g,j){return g!==j&&(g.contains?g.contains(j):true)}:function(g,j){return!!(g.compareDocumentPosition(j)&16)};l.isXML=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false};var M=function(g,
-j){for(var o=[],m="",p,q=j.nodeType?[j]:j;p=n.match.PSEUDO.exec(g);){m+=p[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;p=0;for(var t=q.length;p<t;p++)l(g,q[p],o);return l.filter(m,o)};c.find=l;c.expr=l.selectors;c.expr[":"]=c.expr.filters;c.unique=l.uniqueSort;c.text=l.getText;c.isXMLDoc=l.isXML;c.contains=l.contains})();var Wa=/Until$/,Xa=/^(?:parents|prevUntil|prevAll)/,Ya=/,/,Ja=/^.[^:#\[\.,]*$/,Za=Array.prototype.slice,$a=c.expr.match.POS;c.fn.extend({find:function(a){for(var b=this.pushStack("",
-"find",a),d=0,e=0,f=this.length;e<f;e++){d=b.length;c.find(a,this[e],b);if(e>0)for(var h=d;h<b.length;h++)for(var k=0;k<d;k++)if(b[k]===b[h]){b.splice(h--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,e=b.length;d<e;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(ka(this,a,false),"not",a)},filter:function(a){return this.pushStack(ka(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,
-b){var d=[],e,f,h=this[0];if(c.isArray(a)){var k={},l,n=1;if(h&&a.length){e=0;for(f=a.length;e<f;e++){l=a[e];k[l]||(k[l]=c.expr.match.POS.test(l)?c(l,b||this.context):l)}for(;h&&h.ownerDocument&&h!==b;){for(l in k){e=k[l];if(e.jquery?e.index(h)>-1:c(h).is(e))d.push({selector:l,elem:h,level:n})}h=h.parentNode;n++}}return d}k=$a.test(a)?c(a,b||this.context):null;e=0;for(f=this.length;e<f;e++)for(h=this[e];h;)if(k?k.index(h)>-1:c.find.matchesSelector(h,a)){d.push(h);break}else{h=h.parentNode;if(!h||
-!h.ownerDocument||h===b)break}d=d.length>1?c.unique(d):d;return this.pushStack(d,"closest",a)},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var d=typeof a==="string"?c(a,b||this.context):c.makeArray(a),e=c.merge(this.get(),d);return this.pushStack(!d[0]||!d[0].parentNode||d[0].parentNode.nodeType===11||!e[0]||!e[0].parentNode||e[0].parentNode.nodeType===11?e:c.unique(e))},andSelf:function(){return this.add(this.prevObject)}});
-c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",
-d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,e){var f=c.map(this,b,d);Wa.test(a)||(e=d);if(e&&typeof e==="string")f=c.filter(e,f);f=this.length>1?c.unique(f):f;if((this.length>1||Ya.test(e))&&Xa.test(a))f=f.reverse();return this.pushStack(f,a,Za.call(arguments).join(","))}});
-c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return b.length===1?c.find.matchesSelector(b[0],a)?[b[0]]:[]:c.find.matches(a,b)},dir:function(a,b,d){var e=[];for(a=a[b];a&&a.nodeType!==9&&(d===A||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&&e.push(a);a=a[b]}return e},nth:function(a,b,d){b=b||1;for(var e=0;a;a=a[d])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var xa=/ jQuery\d+="(?:\d+|null)"/g,
-$=/^\s+/,ya=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,za=/<([\w:]+)/,ab=/<tbody/i,bb=/<|&#?\w+;/,Aa=/<(?:script|object|embed|option|style)/i,Ba=/checked\s*(?:[^=]|=\s*.checked.)/i,cb=/\=([^="'>\s]+\/)>/g,O={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],
-area:[1,"<map>","</map>"],_default:[0,"",""]};O.optgroup=O.option;O.tbody=O.tfoot=O.colgroup=O.caption=O.thead;O.th=O.td;if(!c.support.htmlSerialize)O._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==A)return this.empty().append((this[0]&&this[0].ownerDocument||u).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,
-d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},
-unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=
-c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,e;(e=this[d])!=null;d++)if(!a||c.filter(a,[e]).length){if(!b&&e.nodeType===1){c.cleanData(e.getElementsByTagName("*"));
-c.cleanData([e])}e.parentNode&&e.parentNode.removeChild(e)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,e=this.ownerDocument;if(!d){d=e.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(xa,"").replace(cb,'="$1">').replace($,
-"")],e)[0]}else return this.cloneNode(true)});if(a===true){la(this,b);la(this.find("*"),b.find("*"))}return b},html:function(a){if(a===A)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(xa,""):null;else if(typeof a==="string"&&!Aa.test(a)&&(c.support.leadingWhitespace||!$.test(a))&&!O[(za.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ya,"<$1></$2>");try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(e){this.empty().append(a)}}else c.isFunction(a)?
-this.each(function(f){var h=c(this);h.html(a.call(this,f,h.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),e=d.html();d.replaceWith(a.call(this,b,e))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,
-true)},domManip:function(a,b,d){var e,f,h=a[0],k=[],l;if(!c.support.checkClone&&arguments.length===3&&typeof h==="string"&&Ba.test(h))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(h))return this.each(function(s){var v=c(this);a[0]=h.call(this,s,b?v.html():A);v.domManip(a,b,d)});if(this[0]){e=h&&h.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:c.buildFragment(a,this,k);l=e.fragment;if(f=l.childNodes.length===1?l=l.firstChild:
-l.firstChild){b=b&&c.nodeName(f,"tr");f=0;for(var n=this.length;f<n;f++)d.call(b?c.nodeName(this[f],"table")?this[f].getElementsByTagName("tbody")[0]||this[f].appendChild(this[f].ownerDocument.createElement("tbody")):this[f]:this[f],f>0||e.cacheable||this.length>1?l.cloneNode(true):l)}k.length&&c.each(k,Ka)}return this}});c.buildFragment=function(a,b,d){var e,f,h;b=b&&b[0]?b[0].ownerDocument||b[0]:u;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===u&&!Aa.test(a[0])&&(c.support.checkClone||
-!Ba.test(a[0]))){f=true;if(h=c.fragments[a[0]])if(h!==1)e=h}if(!e){e=b.createDocumentFragment();c.clean(a,b,e,d)}if(f)c.fragments[a[0]]=h?e:1;return{fragment:e,cacheable:f}};c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var e=[];d=c(d);var f=this.length===1&&this[0].parentNode;if(f&&f.nodeType===11&&f.childNodes.length===1&&d.length===1){d[b](this[0]);return this}else{f=0;for(var h=
-d.length;f<h;f++){var k=(f>0?this.clone(true):this).get();c(d[f])[b](k);e=e.concat(k)}return this.pushStack(e,a,d.selector)}}});c.extend({clean:function(a,b,d,e){b=b||u;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||u;for(var f=[],h=0,k;(k=a[h])!=null;h++){if(typeof k==="number")k+="";if(k){if(typeof k==="string"&&!bb.test(k))k=b.createTextNode(k);else if(typeof k==="string"){k=k.replace(ya,"<$1></$2>");var l=(za.exec(k)||["",""])[1].toLowerCase(),n=O[l]||O._default,
-s=n[0],v=b.createElement("div");for(v.innerHTML=n[1]+k+n[2];s--;)v=v.lastChild;if(!c.support.tbody){s=ab.test(k);l=l==="table"&&!s?v.firstChild&&v.firstChild.childNodes:n[1]==="<table>"&&!s?v.childNodes:[];for(n=l.length-1;n>=0;--n)c.nodeName(l[n],"tbody")&&!l[n].childNodes.length&&l[n].parentNode.removeChild(l[n])}!c.support.leadingWhitespace&&$.test(k)&&v.insertBefore(b.createTextNode($.exec(k)[0]),v.firstChild);k=v.childNodes}if(k.nodeType)f.push(k);else f=c.merge(f,k)}}if(d)for(h=0;f[h];h++)if(e&&
-c.nodeName(f[h],"script")&&(!f[h].type||f[h].type.toLowerCase()==="text/javascript"))e.push(f[h].parentNode?f[h].parentNode.removeChild(f[h]):f[h]);else{f[h].nodeType===1&&f.splice.apply(f,[h+1,0].concat(c.makeArray(f[h].getElementsByTagName("script"))));d.appendChild(f[h])}return f},cleanData:function(a){for(var b,d,e=c.cache,f=c.event.special,h=c.support.deleteExpando,k=0,l;(l=a[k])!=null;k++)if(!(l.nodeName&&c.noData[l.nodeName.toLowerCase()]))if(d=l[c.expando]){if((b=e[d])&&b.events)for(var n in b.events)f[n]?
-c.event.remove(l,n):c.removeEvent(l,n,b.handle);if(h)delete l[c.expando];else l.removeAttribute&&l.removeAttribute(c.expando);delete e[d]}}});var Ca=/alpha\([^)]*\)/i,db=/opacity=([^)]*)/,eb=/-([a-z])/ig,fb=/([A-Z])/g,Da=/^-?\d+(?:px)?$/i,gb=/^-?\d/,hb={position:"absolute",visibility:"hidden",display:"block"},La=["Left","Right"],Ma=["Top","Bottom"],W,ib=u.defaultView&&u.defaultView.getComputedStyle,jb=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){if(arguments.length===2&&b===A)return this;
-return c.access(this,a,b,true,function(d,e,f){return f!==A?c.style(d,e,f):c.css(d,e)})};c.extend({cssHooks:{opacity:{get:function(a,b){if(b){var d=W(a,"opacity","opacity");return d===""?"1":d}else return a.style.opacity}}},cssNumber:{zIndex:true,fontWeight:true,opacity:true,zoom:true,lineHeight:true},cssProps:{"float":c.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,d,e){if(!(!a||a.nodeType===3||a.nodeType===8||!a.style)){var f,h=c.camelCase(b),k=a.style,l=c.cssHooks[h];b=c.cssProps[h]||
-h;if(d!==A){if(!(typeof d==="number"&&isNaN(d)||d==null)){if(typeof d==="number"&&!c.cssNumber[h])d+="px";if(!l||!("set"in l)||(d=l.set(a,d))!==A)try{k[b]=d}catch(n){}}}else{if(l&&"get"in l&&(f=l.get(a,false,e))!==A)return f;return k[b]}}},css:function(a,b,d){var e,f=c.camelCase(b),h=c.cssHooks[f];b=c.cssProps[f]||f;if(h&&"get"in h&&(e=h.get(a,true,d))!==A)return e;else if(W)return W(a,b,f)},swap:function(a,b,d){var e={},f;for(f in b){e[f]=a.style[f];a.style[f]=b[f]}d.call(a);for(f in b)a.style[f]=
-e[f]},camelCase:function(a){return a.replace(eb,jb)}});c.curCSS=c.css;c.each(["height","width"],function(a,b){c.cssHooks[b]={get:function(d,e,f){var h;if(e){if(d.offsetWidth!==0)h=ma(d,b,f);else c.swap(d,hb,function(){h=ma(d,b,f)});return h+"px"}},set:function(d,e){if(Da.test(e)){e=parseFloat(e);if(e>=0)return e+"px"}else return e}}});if(!c.support.opacity)c.cssHooks.opacity={get:function(a,b){return db.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":
-b?"1":""},set:function(a,b){var d=a.style;d.zoom=1;var e=c.isNaN(b)?"":"alpha(opacity="+b*100+")",f=d.filter||"";d.filter=Ca.test(f)?f.replace(Ca,e):d.filter+" "+e}};if(ib)W=function(a,b,d){var e;d=d.replace(fb,"-$1").toLowerCase();if(!(b=a.ownerDocument.defaultView))return A;if(b=b.getComputedStyle(a,null)){e=b.getPropertyValue(d);if(e===""&&!c.contains(a.ownerDocument.documentElement,a))e=c.style(a,d)}return e};else if(u.documentElement.currentStyle)W=function(a,b){var d,e,f=a.currentStyle&&a.currentStyle[b],
-h=a.style;if(!Da.test(f)&&gb.test(f)){d=h.left;e=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;h.left=b==="fontSize"?"1em":f||0;f=h.pixelLeft+"px";h.left=d;a.runtimeStyle.left=e}return f};if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetHeight;return a.offsetWidth===0&&b===0||!c.support.reliableHiddenOffsets&&(a.style.display||c.css(a,"display"))==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var kb=c.now(),lb=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
-mb=/^(?:select|textarea)/i,nb=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ob=/^(?:GET|HEAD|DELETE)$/,Na=/\[\]$/,T=/\=\?(&|$)/,ia=/\?/,pb=/([?&])_=[^&]*/,qb=/^(\w+:)?\/\/([^\/?#]+)/,rb=/%20/g,sb=/#.*$/,Ea=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!=="string"&&Ea)return Ea.apply(this,arguments);else if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}e="GET";if(b)if(c.isFunction(b)){d=
-b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);e="POST"}var h=this;c.ajax({url:a,type:e,dataType:"html",data:b,complete:function(k,l){if(l==="success"||l==="notmodified")h.html(f?c("<div>").append(k.responseText.replace(lb,"")).find(f):k.responseText);d&&h.each(d,[k.responseText,l,k])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&
-!this.disabled&&(this.checked||mb.test(this.nodeName)||nb.test(this.type))}).map(function(a,b){var d=c(this).val();return d==null?null:c.isArray(d)?c.map(d,function(e){return{name:b.name,value:e}}):{name:b.name,value:d}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:e})},
-getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:e})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return new E.XMLHttpRequest},accepts:{xml:"application/xml, text/xml",html:"text/html",
-script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},ajax:function(a){var b=c.extend(true,{},c.ajaxSettings,a),d,e,f,h=b.type.toUpperCase(),k=ob.test(h);b.url=b.url.replace(sb,"");b.context=a&&a.context!=null?a.context:b;if(b.data&&b.processData&&typeof b.data!=="string")b.data=c.param(b.data,b.traditional);if(b.dataType==="jsonp"){if(h==="GET")T.test(b.url)||(b.url+=(ia.test(b.url)?"&":"?")+(b.jsonp||"callback")+"=?");else if(!b.data||
-!T.test(b.data))b.data=(b.data?b.data+"&":"")+(b.jsonp||"callback")+"=?";b.dataType="json"}if(b.dataType==="json"&&(b.data&&T.test(b.data)||T.test(b.url))){d=b.jsonpCallback||"jsonp"+kb++;if(b.data)b.data=(b.data+"").replace(T,"="+d+"$1");b.url=b.url.replace(T,"="+d+"$1");b.dataType="script";var l=E[d];E[d]=function(m){f=m;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);if(c.isFunction(l))l(m);else{E[d]=A;try{delete E[d]}catch(p){}}v&&v.removeChild(B)}}if(b.dataType==="script"&&b.cache===null)b.cache=
-false;if(b.cache===false&&h==="GET"){var n=c.now(),s=b.url.replace(pb,"$1_="+n);b.url=s+(s===b.url?(ia.test(b.url)?"&":"?")+"_="+n:"")}if(b.data&&h==="GET")b.url+=(ia.test(b.url)?"&":"?")+b.data;b.global&&c.active++===0&&c.event.trigger("ajaxStart");n=(n=qb.exec(b.url))&&(n[1]&&n[1]!==location.protocol||n[2]!==location.host);if(b.dataType==="script"&&h==="GET"&&n){var v=u.getElementsByTagName("head")[0]||u.documentElement,B=u.createElement("script");if(b.scriptCharset)B.charset=b.scriptCharset;B.src=
-b.url;if(!d){var D=false;B.onload=B.onreadystatechange=function(){if(!D&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){D=true;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);B.onload=B.onreadystatechange=null;v&&B.parentNode&&v.removeChild(B)}}}v.insertBefore(B,v.firstChild);return A}var H=false,w=b.xhr();if(w){b.username?w.open(h,b.url,b.async,b.username,b.password):w.open(h,b.url,b.async);try{if(b.data!=null&&!k||a&&a.contentType)w.setRequestHeader("Content-Type",
-b.contentType);if(b.ifModified){c.lastModified[b.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[b.url]);c.etag[b.url]&&w.setRequestHeader("If-None-Match",c.etag[b.url])}n||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",b.dataType&&b.accepts[b.dataType]?b.accepts[b.dataType]+", */*; q=0.01":b.accepts._default)}catch(G){}if(b.beforeSend&&b.beforeSend.call(b.context,w,b)===false){b.global&&c.active--===1&&c.event.trigger("ajaxStop");w.abort();return false}b.global&&
-c.triggerGlobal(b,"ajaxSend",[w,b]);var M=w.onreadystatechange=function(m){if(!w||w.readyState===0||m==="abort"){H||c.handleComplete(b,w,e,f);H=true;if(w)w.onreadystatechange=c.noop}else if(!H&&w&&(w.readyState===4||m==="timeout")){H=true;w.onreadystatechange=c.noop;e=m==="timeout"?"timeout":!c.httpSuccess(w)?"error":b.ifModified&&c.httpNotModified(w,b.url)?"notmodified":"success";var p;if(e==="success")try{f=c.httpData(w,b.dataType,b)}catch(q){e="parsererror";p=q}if(e==="success"||e==="notmodified")d||
-c.handleSuccess(b,w,e,f);else c.handleError(b,w,e,p);d||c.handleComplete(b,w,e,f);m==="timeout"&&w.abort();if(b.async)w=null}};try{var g=w.abort;w.abort=function(){w&&g.call&&g.call(w);M("abort")}}catch(j){}b.async&&b.timeout>0&&setTimeout(function(){w&&!H&&M("timeout")},b.timeout);try{w.send(k||b.data==null?null:b.data)}catch(o){c.handleError(b,w,null,o);c.handleComplete(b,w,e,f)}b.async||M();return w}},param:function(a,b){var d=[],e=function(h,k){k=c.isFunction(k)?k():k;d[d.length]=encodeURIComponent(h)+
-"="+encodeURIComponent(k)};if(b===A)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){e(this.name,this.value)});else for(var f in a)ca(f,a[f],b,e);return d.join("&").replace(rb,"+")}});c.extend({active:0,lastModified:{},etag:{},handleError:function(a,b,d,e){a.error&&a.error.call(a.context,b,d,e);a.global&&c.triggerGlobal(a,"ajaxError",[b,a,e])},handleSuccess:function(a,b,d,e){a.success&&a.success.call(a.context,e,d,b);a.global&&c.triggerGlobal(a,"ajaxSuccess",[b,a])},handleComplete:function(a,
-b,d){a.complete&&a.complete.call(a.context,b,d);a.global&&c.triggerGlobal(a,"ajaxComplete",[b,a]);a.global&&c.active--===1&&c.event.trigger("ajaxStop")},triggerGlobal:function(a,b,d){(a.context&&a.context.url==null?c(a.context):c.event).trigger(b,d)},httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),e=a.getResponseHeader("Etag");
-if(d)c.lastModified[b]=d;if(e)c.etag[b]=e;return a.status===304},httpData:function(a,b,d){var e=a.getResponseHeader("content-type")||"",f=b==="xml"||!b&&e.indexOf("xml")>=0;a=f?a.responseXML:a.responseText;f&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&e.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&e.indexOf("javascript")>=0)c.globalEval(a);return a}});if(E.ActiveXObject)c.ajaxSettings.xhr=
-function(){if(E.location.protocol!=="file:")try{return new E.XMLHttpRequest}catch(a){}try{return new E.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}};c.support.ajax=!!c.ajaxSettings.xhr();var da={},tb=/^(?:toggle|show|hide)$/,ub=/^([+\-]=)?([\d+.\-]+)(.*)$/,aa,na=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b,d){if(a||a===0)return this.animate(S("show",3),a,b,d);else{a=
-0;for(b=this.length;a<b;a++){if(!c.data(this[a],"olddisplay")&&this[a].style.display==="none")this[a].style.display="";this[a].style.display===""&&c.css(this[a],"display")==="none"&&c.data(this[a],"olddisplay",oa(this[a].nodeName))}for(a=0;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b,d){if(a||a===0)return this.animate(S("hide",3),a,b,d);else{a=0;for(b=this.length;a<b;a++){d=c.css(this[a],"display");d!=="none"&&c.data(this[a],"olddisplay",d)}for(a=
-0;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b,d){var e=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||e?this.each(function(){var f=e?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(S("toggle",3),a,b,d);return this},fadeTo:function(a,b,d,e){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d,e)},animate:function(a,b,d,e){var f=c.speed(b,d,e);if(c.isEmptyObject(a))return this.each(f.complete);
-return this[f.queue===false?"each":"queue"](function(){var h=c.extend({},f),k,l=this.nodeType===1,n=l&&c(this).is(":hidden"),s=this;for(k in a){var v=c.camelCase(k);if(k!==v){a[v]=a[k];delete a[k];k=v}if(a[k]==="hide"&&n||a[k]==="show"&&!n)return h.complete.call(this);if(l&&(k==="height"||k==="width")){h.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(c.css(this,"display")==="inline"&&c.css(this,"float")==="none")if(c.support.inlineBlockNeedsLayout)if(oa(this.nodeName)===
-"inline")this.style.display="inline-block";else{this.style.display="inline";this.style.zoom=1}else this.style.display="inline-block"}if(c.isArray(a[k])){(h.specialEasing=h.specialEasing||{})[k]=a[k][1];a[k]=a[k][0]}}if(h.overflow!=null)this.style.overflow="hidden";h.curAnim=c.extend({},a);c.each(a,function(B,D){var H=new c.fx(s,h,B);if(tb.test(D))H[D==="toggle"?n?"show":"hide":D](a);else{var w=ub.exec(D),G=H.cur(true)||0;if(w){var M=parseFloat(w[2]),g=w[3]||"px";if(g!=="px"){c.style(s,B,(M||1)+g);
-G=(M||1)/H.cur(true)*G;c.style(s,B,G+g)}if(w[1])M=(w[1]==="-="?-1:1)*M+G;H.custom(G,M,g)}else H.custom(G,D,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);this.each(function(){for(var e=d.length-1;e>=0;e--)if(d[e].elem===this){b&&d[e](true);d.splice(e,1)}});b||this.dequeue();return this}});c.each({slideDown:S("show",1),slideUp:S("hide",1),slideToggle:S("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,e,f){return this.animate(b,
-d,e,f)}});c.extend({speed:function(a,b,d){var e=a&&typeof a==="object"?c.extend({},a):{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};e.duration=c.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;e.old=e.complete;e.complete=function(){e.queue!==false&&c(this).dequeue();c.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,d,e){return d+e*a},swing:function(a,b,d,e){return(-Math.cos(a*
-Math.PI)/2+0.5)*e+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(c.css(this.elem,this.prop));return a&&a>-1E4?a:0},custom:function(a,b,d){function e(h){return f.step(h)}
-this.startTime=c.now();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;var f=this;a=c.fx;e.elem=this.elem;if(e()&&c.timers.push(e)&&!aa)aa=setInterval(a.tick,a.interval)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;
-this.custom(this.cur(),0)},step:function(a){var b=c.now(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var e in this.options.curAnim)if(this.options.curAnim[e]!==true)d=false;if(d){if(this.options.overflow!=null&&!c.support.shrinkWrapBlocks){var f=this.elem,h=this.options;c.each(["","X","Y"],function(l,n){f.style["overflow"+n]=h.overflow[l]})}this.options.hide&&c(this.elem).hide();if(this.options.hide||
-this.options.show)for(var k in this.options.curAnim)c.style(this.elem,k,this.options.orig[k]);this.options.complete.call(this.elem)}return false}else{a=b-this.startTime;this.state=a/this.options.duration;b=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||b](this.state,a,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=
-c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||c.fx.stop()},interval:13,stop:function(){clearInterval(aa);aa=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===
-b.elem}).length};var vb=/^t(?:able|d|h)$/i,Fa=/^(?:body|html)$/i;c.fn.offset="getBoundingClientRect"in u.documentElement?function(a){var b=this[0],d;if(a)return this.each(function(k){c.offset.setOffset(this,a,k)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);try{d=b.getBoundingClientRect()}catch(e){}var f=b.ownerDocument,h=f.documentElement;if(!d||!c.contains(h,b))return d||{top:0,left:0};b=f.body;f=ea(f);return{top:d.top+(f.pageYOffset||c.support.boxModel&&
-h.scrollTop||b.scrollTop)-(h.clientTop||b.clientTop||0),left:d.left+(f.pageXOffset||c.support.boxModel&&h.scrollLeft||b.scrollLeft)-(h.clientLeft||b.clientLeft||0)}}:function(a){var b=this[0];if(a)return this.each(function(s){c.offset.setOffset(this,a,s)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,e=b.ownerDocument,f,h=e.documentElement,k=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;
-for(var l=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==k&&b!==h;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;f=e?e.getComputedStyle(b,null):b.currentStyle;l-=b.scrollTop;n-=b.scrollLeft;if(b===d){l+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&vb.test(b.nodeName))){l+=parseFloat(f.borderTopWidth)||0;n+=parseFloat(f.borderLeftWidth)||0}d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&f.overflow!=="visible"){l+=
-parseFloat(f.borderTopWidth)||0;n+=parseFloat(f.borderLeftWidth)||0}f=f}if(f.position==="relative"||f.position==="static"){l+=k.offsetTop;n+=k.offsetLeft}if(c.offset.supportsFixedPosition&&f.position==="fixed"){l+=Math.max(h.scrollTop,k.scrollTop);n+=Math.max(h.scrollLeft,k.scrollLeft)}return{top:l,left:n}};c.offset={initialize:function(){var a=u.body,b=u.createElement("div"),d,e,f,h=parseFloat(c.css(a,"marginTop"))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",
-height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";a.insertBefore(b,a.firstChild);d=b.firstChild;e=d.firstChild;f=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=e.offsetTop!==5;this.doesAddBorderForTableAndCells=
-f.offsetTop===5;e.style.position="fixed";e.style.top="20px";this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15;e.style.position=e.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==h;a.removeChild(b);c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.css(a,
-"marginTop"))||0;d+=parseFloat(c.css(a,"marginLeft"))||0}return{top:b,left:d}},setOffset:function(a,b,d){var e=c.css(a,"position");if(e==="static")a.style.position="relative";var f=c(a),h=f.offset(),k=c.css(a,"top"),l=c.css(a,"left"),n=e==="absolute"&&c.inArray("auto",[k,l])>-1;e={};var s={};if(n)s=f.position();k=n?s.top:parseInt(k,10)||0;l=n?s.left:parseInt(l,10)||0;if(c.isFunction(b))b=b.call(a,d,h);if(b.top!=null)e.top=b.top-h.top+k;if(b.left!=null)e.left=b.left-h.left+l;"using"in b?b.using.call(a,
-e):f.css(e)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),e=Fa.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.css(a,"marginTop"))||0;d.left-=parseFloat(c.css(a,"marginLeft"))||0;e.top+=parseFloat(c.css(b[0],"borderTopWidth"))||0;e.left+=parseFloat(c.css(b[0],"borderLeftWidth"))||0;return{top:d.top-e.top,left:d.left-e.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||u.body;a&&!Fa.test(a.nodeName)&&
-c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(e){var f=this[0],h;if(!f)return null;if(e!==A)return this.each(function(){if(h=ea(this))h.scrollTo(!a?e:c(h).scrollLeft(),a?e:c(h).scrollTop());else this[d]=e});else return(h=ea(f))?"pageXOffset"in h?h[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&h.document.documentElement[d]||h.document.body[d]:f[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();
-c.fn["inner"+b]=function(){return this[0]?parseFloat(c.css(this[0],d,"padding")):null};c.fn["outer"+b]=function(e){return this[0]?parseFloat(c.css(this[0],d,e?"margin":"border")):null};c.fn[d]=function(e){var f=this[0];if(!f)return e==null?null:this;if(c.isFunction(e))return this.each(function(h){var k=c(this);k[d](e.call(this,h,k[d]()))});return c.isWindow(f)?f.document.compatMode==="CSS1Compat"&&f.document.documentElement["client"+b]||f.document.body["client"+b]:f.nodeType===9?Math.max(f.documentElement["client"+
-b],f.body["scroll"+b],f.documentElement["scroll"+b],f.body["offset"+b],f.documentElement["offset"+b]):e===A?parseFloat(c.css(f,d)):this.css(d,typeof e==="string"?e:e+"px")}})})(window);
diff --git a/rpython/rlib/rstrategies/htmlcov1/jquery.tablesorter.min.js b/rpython/rlib/rstrategies/htmlcov1/jquery.tablesorter.min.js
deleted file mode 100644
--- a/rpython/rlib/rstrategies/htmlcov1/jquery.tablesorter.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-
-(function($){$.extend({tablesorter:new function(){var parsers=[],widgets=[];this.defaults={cssHeader:"header",cssAsc:"headerSortUp",cssDesc:"headerSortDown",sortInitialOrder:"asc",sortMultiSortKey:"shiftKey",sortForce:null,sortAppend:null,textExtraction:"simple",parsers:{},widgets:[],widgetZebra:{css:["even","odd"]},headers:{},widthFixed:false,cancelSelection:true,sortList:[],headerList:[],dateFormat:"us",decimal:'.',debug:false};function benchmark(s,d){log(s+","+(new Date().getTime()-d.getTime())+"ms");}this.benchmark=benchmark;function log(s){if(typeof console!="undefined"&&typeof console.debug!="undefined"){console.log(s);}else{alert(s);}}function buildParserCache(table,$headers){if(table.config.debug){var parsersDebug="";}var rows=table.tBodies[0].rows;if(table.tBodies[0].rows[0]){var list=[],cells=rows[0].cells,l=cells.length;for(var i=0;i<l;i++){var p=false;if($.metadata&&($($headers[i]).metadata()&&$($headers[i]).metadata().sorter)){p=getParserById($($headers[i]).metadata().sorter);}else if((table.config.headers[i]&&table.config.headers[i].sorter)){p=getParserById(table.config.headers[i].sorter);}if(!p){p=detectParserForColumn(table,cells[i]);}if(table.config.debug){parsersDebug+="column:"+i+" parser:"+p.id+"\n";}list.push(p);}}if(table.config.debug){log(parsersDebug);}return list;};function detectParserForColumn(table,node){var l=parsers.length;for(var i=1;i<l;i++){if(parsers[i].is($.trim(getElementText(table.config,node)),table,node)){return parsers[i];}}return parsers[0];}function getParserById(name){var l=parsers.length;for(var i=0;i<l;i++){if(parsers[i].id.toLowerCase()==name.toLowerCase()){return parsers[i];}}return false;}function buildCache(table){if(table.config.debug){var cacheTime=new Date();}var totalRows=(table.tBodies[0]&&table.tBodies[0].rows.length)||0,totalCells=(table.tBodies[0].rows[0]&&table.tBodies[0].rows[0].cells.length)||0,parsers=table.config.parsers,cache={row:[],normalized:[]};for(var i=0;i<totalRows;++i){var c=table.tBodies[0].rows[i],cols=[];cache.row.push($(c));for(var j=0;j<totalCells;++j){cols.push(parsers[j].format(getElementText(table.config,c.cells[j]),table,c.cells[j]));}cols.push(i);cache.normalized.push(cols);cols=null;};if(table.config.debug){benchmark("Building cache for "+totalRows+" rows:",cacheTime);}return cache;};function getElementText(config,node){if(!node)return"";var t="";if(config.textExtraction=="simple"){if(node.childNodes[0]&&node.childNodes[0].hasChildNodes()){t=node.childNodes[0].innerHTML;}else{t=node.innerHTML;}}else{if(typeof(config.textExtraction)=="function"){t=config.textExtraction(node);}else{t=$(node).text();}}return t;}function appendToTable(table,cache){if(table.config.debug){var appendTime=new Date()}var c=cache,r=c.row,n=c.normalized,totalRows=n.length,checkCell=(n[0].length-1),tableBody=$(table.tBodies[0]),rows=[];for(var i=0;i<totalRows;i++){rows.push(r[n[i][checkCell]]);if(!table.config.appender){var o=r[n[i][checkCell]];var l=o.length;for(var j=0;j<l;j++){tableBody[0].appendChild(o[j]);}}}if(table.config.appender){table.config.appender(table,rows);}rows=null;if(table.config.debug){benchmark("Rebuilt table:",appendTime);}applyWidget(table);setTimeout(function(){$(table).trigger("sortEnd");},0);};function buildHeaders(table){if(table.config.debug){var time=new Date();}var meta=($.metadata)?true:false,tableHeadersRows=[];for(var i=0;i<table.tHead.rows.length;i++){tableHeadersRows[i]=0;};$tableHeaders=$("thead th",table);$tableHeaders.each(function(index){this.count=0;this.column=index;this.order=formatSortingOrder(table.config.sortInitialOrder);if(checkHeaderMetadata(this)||checkHeaderOptions(table,index))this.sortDisabled=true;if(!this.sortDisabled){$(this).addClass(table.config.cssHeader);}table.config.headerList[index]=this;});if(table.config.debug){benchmark("Built headers:",time);log($tableHeaders);}return $tableHeaders;};function checkCellColSpan(table,rows,row){var arr=[],r=table.tHead.rows,c=r[row].cells;for(var i=0;i<c.length;i++){var cell=c[i];if(cell.colSpan>1){arr=arr.concat(checkCellColSpan(table,headerArr,row++));}else{if(table.tHead.length==1||(cell.rowSpan>1||!r[row+1])){arr.push(cell);}}}return arr;};function checkHeaderMetadata(cell){if(($.metadata)&&($(cell).metadata().sorter===false)){return true;};return false;}function checkHeaderOptions(table,i){if((table.config.headers[i])&&(table.config.headers[i].sorter===false)){return true;};return false;}function applyWidget(table){var c=table.config.widgets;var l=c.length;for(var i=0;i<l;i++){getWidgetById(c[i]).format(table);}}function getWidgetById(name){var l=widgets.length;for(var i=0;i<l;i++){if(widgets[i].id.toLowerCase()==name.toLowerCase()){return widgets[i];}}};function formatSortingOrder(v){if(typeof(v)!="Number"){i=(v.toLowerCase()=="desc")?1:0;}else{i=(v==(0||1))?v:0;}return i;}function isValueInArray(v,a){var l=a.length;for(var i=0;i<l;i++){if(a[i][0]==v){return true;}}return false;}function setHeadersCss(table,$headers,list,css){$headers.removeClass(css[0]).removeClass(css[1]);var h=[];$headers.each(function(offset){if(!this.sortDisabled){h[this.column]=$(this);}});var l=list.length;for(var i=0;i<l;i++){h[list[i][0]].addClass(css[list[i][1]]);}}function fixColumnWidth(table,$headers){var c=table.config;if(c.widthFixed){var colgroup=$('<colgroup>');$("tr:first td",table.tBodies[0]).each(function(){colgroup.append($('<col>').css('width',$(this).width()));});$(table).prepend(colgroup);};}function updateHeaderSortCount(table,sortList){var c=table.config,l=sortList.length;for(var i=0;i<l;i++){var s=sortList[i],o=c.headerList[s[0]];o.count=s[1];o.count++;}}function multisort(table,sortList,cache){if(table.config.debug){var sortTime=new Date();}var dynamicExp="var sortWrapper = function(a,b) {",l=sortList.length;for(var i=0;i<l;i++){var c=sortList[i][0];var order=sortList[i][1];var s=(getCachedSortType(table.config.parsers,c)=="text")?((order==0)?"sortText":"sortTextDesc"):((order==0)?"sortNumeric":"sortNumericDesc");var e="e"+i;dynamicExp+="var "+e+" = "+s+"(a["+c+"],b["+c+"]); ";dynamicExp+="if("+e+") { return "+e+"; } ";dynamicExp+="else { ";}var orgOrderCol=cache.normalized[0].length-1;dynamicExp+="return a["+orgOrderCol+"]-b["+orgOrderCol+"];";for(var i=0;i<l;i++){dynamicExp+="}; ";}dynamicExp+="return 0; ";dynamicExp+="}; ";eval(dynamicExp);cache.normalized.sort(sortWrapper);if(table.config.debug){benchmark("Sorting on "+sortList.toString()+" and dir "+order+" time:",sortTime);}return cache;};function sortText(a,b){return((a<b)?-1:((a>b)?1:0));};function sortTextDesc(a,b){return((b<a)?-1:((b>a)?1:0));};function sortNumeric(a,b){return a-b;};function sortNumericDesc(a,b){return b-a;};function getCachedSortType(parsers,i){return parsers[i].type;};this.construct=function(settings){return this.each(function(){if(!this.tHead||!this.tBodies)return;var $this,$document,$headers,cache,config,shiftDown=0,sortOrder;this.config={};config=$.extend(this.config,$.tablesorter.defaults,settings);$this=$(this);$headers=buildHeaders(this);this.config.parsers=buildParserCache(this,$headers);cache=buildCache(this);var sortCSS=[config.cssDesc,config.cssAsc];fixColumnWidth(this);$headers.click(function(e){$this.trigger("sortStart");var totalRows=($this[0].tBodies[0]&&$this[0].tBodies[0].rows.length)||0;if(!this.sortDisabled&&totalRows>0){var $cell=$(this);var i=this.column;this.order=this.count++%2;if(!e[config.sortMultiSortKey]){config.sortList=[];if(config.sortForce!=null){var a=config.sortForce;for(var j=0;j<a.length;j++){if(a[j][0]!=i){config.sortList.push(a[j]);}}}config.sortList.push([i,this.order]);}else{if(isValueInArray(i,config.sortList)){for(var j=0;j<config.sortList.length;j++){var s=config.sortList[j],o=config.headerList[s[0]];if(s[0]==i){o.count=s[1];o.count++;s[1]=o.count%2;}}}else{config.sortList.push([i,this.order]);}};setTimeout(function(){setHeadersCss($this[0],$headers,config.sortList,sortCSS);appendToTable($this[0],multisort($this[0],config.sortList,cache));},1);return false;}}).mousedown(function(){if(config.cancelSelection){this.onselectstart=function(){return false};return false;}});$this.bind("update",function(){this.config.parsers=buildParserCache(this,$headers);cache=buildCache(this);}).bind("sorton",function(e,list){$(this).trigger("sortStart");config.sortList=list;var sortList=config.sortList;updateHeaderSortCount(this,sortList);setHeadersCss(this,$headers,sortList,sortCSS);appendToTable(this,multisort(this,sortList,cache));}).bind("appendCache",function(){appendToTable(this,cache);}).bind("applyWidgetId",function(e,id){getWidgetById(id).format(this);}).bind("applyWidgets",function(){applyWidget(this);});if($.metadata&&($(this).metadata()&&$(this).metadata().sortlist)){config.sortList=$(this).metadata().sortlist;}if(config.sortList.length>0){$this.trigger("sorton",[config.sortList]);}applyWidget(this);});};this.addParser=function(parser){var l=parsers.length,a=true;for(var i=0;i<l;i++){if(parsers[i].id.toLowerCase()==parser.id.toLowerCase()){a=false;}}if(a){parsers.push(parser);};};this.addWidget=function(widget){widgets.push(widget);};this.formatFloat=function(s){var i=parseFloat(s);return(isNaN(i))?0:i;};this.formatInt=function(s){var i=parseInt(s);return(isNaN(i))?0:i;};this.isDigit=function(s,config){var DECIMAL='\\'+config.decimal;var exp='/(^[+]?0('+DECIMAL+'0+)?$)|(^([-+]?[1-9][0-9]*)$)|(^([-+]?((0?|[1-9][0-9]*)'+DECIMAL+'(0*[1-9][0-9]*)))$)|(^[-+]?[1-9]+[0-9]*'+DECIMAL+'0+$)/';return RegExp(exp).test($.trim(s));};this.clearTableBody=function(table){if($.browser.msie){function empty(){while(this.firstChild)this.removeChild(this.firstChild);}empty.apply(table.tBodies[0]);}else{table.tBodies[0].innerHTML="";}};}});$.fn.extend({tablesorter:$.tablesorter.construct});var ts=$.tablesorter;ts.addParser({id:"text",is:function(s){return true;},format:function(s){return $.trim(s.toLowerCase());},type:"text"});ts.addParser({id:"digit",is:function(s,table){var c=table.config;return $.tablesorter.isDigit(s,c);},format:function(s){return $.tablesorter.formatFloat(s);},type:"numeric"});ts.addParser({id:"currency",is:function(s){return/^[£$€?.]/.test(s);},format:function(s){return $.tablesorter.formatFloat(s.replace(new RegExp(/[^0-9.]/g),""));},type:"numeric"});ts.addParser({id:"ipAddress",is:function(s){return/^\d{2,3}[\.]\d{2,3}[\.]\d{2,3}[\.]\d{2,3}$/.test(s);},format:function(s){var a=s.split("."),r="",l=a.length;for(var i=0;i<l;i++){var item=a[i];if(item.length==2){r+="0"+item;}else{r+=item;}}return $.tablesorter.formatFloat(r);},type:"numeric"});ts.addParser({id:"url",is:function(s){return/^(https?|ftp|file):\/\/$/.test(s);},format:function(s){return jQuery.trim(s.replace(new RegExp(/(https?|ftp|file):\/\//),''));},type:"text"});ts.addParser({id:"isoDate",is:function(s){return/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(s);},format:function(s){return $.tablesorter.formatFloat((s!="")?new Date(s.replace(new RegExp(/-/g),"/")).getTime():"0");},type:"numeric"});ts.addParser({id:"percent",is:function(s){return/\%$/.test($.trim(s));},format:function(s){return $.tablesorter.formatFloat(s.replace(new RegExp(/%/g),""));},type:"numeric"});ts.addParser({id:"usLongDate",is:function(s){return s.match(new RegExp(/^[A-Za-z]{3,10}\.? [0-9]{1,2}, ([0-9]{4}|'?[0-9]{2}) (([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$/));},format:function(s){return $.tablesorter.formatFloat(new Date(s).getTime());},type:"numeric"});ts.addParser({id:"shortDate",is:function(s){return/\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/.test(s);},format:function(s,table){var c=table.config;s=s.replace(/\-/g,"/");if(c.dateFormat=="us"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/,"$3/$1/$2");}else if(c.dateFormat=="uk"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/,"$3/$2/$1");}else if(c.dateFormat=="dd/mm/yy"||c.dateFormat=="dd-mm-yy"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/,"$1/$2/$3");}return $.tablesorter.formatFloat(new Date(s).getTime());},type:"numeric"});ts.addParser({id:"time",is:function(s){return/^(([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(am|pm)))$/.test(s);},format:function(s){return $.tablesorter.formatFloat(new Date("2000/01/01 "+s).getTime());},type:"numeric"});ts.addParser({id:"metadata",is:function(s){return false;},format:function(s,table,cell){var c=table.config,p=(!c.parserMetadataName)?'sortValue':c.parserMetadataName;return $(cell).metadata()[p];},type:"numeric"});ts.addWidget({id:"zebra",format:function(table){if(table.config.debug){var time=new Date();}$("tr:visible",table.tBodies[0]).filter(':even').removeClass(table.config.widgetZebra.css[1]).addClass(table.config.widgetZebra.css[0]).end().filter(':odd').removeClass(table.config.widgetZebra.css[0]).addClass(table.config.widgetZebra.css[1]);if(table.config.debug){$.tablesorter.benchmark("Applying Zebra widget",time);}}});})(jQuery);
\ No newline at end of file
diff --git a/rpython/rlib/rstrategies/htmlcov1/keybd_closed.png b/rpython/rlib/rstrategies/htmlcov1/keybd_closed.png
deleted file mode 100644
Binary file rpython/rlib/rstrategies/htmlcov1/keybd_closed.png has changed
diff --git a/rpython/rlib/rstrategies/htmlcov1/keybd_open.png b/rpython/rlib/rstrategies/htmlcov1/keybd_open.png
deleted file mode 100644
Binary file rpython/rlib/rstrategies/htmlcov1/keybd_open.png has changed
diff --git a/rpython/rlib/rstrategies/htmlcov1/logger.html b/rpython/rlib/rstrategies/htmlcov1/logger.html
deleted file mode 100644
--- a/rpython/rlib/rstrategies/htmlcov1/logger.html
+++ /dev/null
@@ -1,198 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD html 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
-    
-    
-    <meta http-equiv='X-UA-Compatible' content='IE=emulateIE7' />
-    <title>Coverage for logger: 96%</title>
-    <link rel='stylesheet' href='style.css' type='text/css'>
-    
-    <script type='text/javascript' src='jquery.min.js'></script>
-    <script type='text/javascript' src='jquery.hotkeys.js'></script>
-    <script type='text/javascript' src='jquery.isonscreen.js'></script>
-    <script type='text/javascript' src='coverage_html.js'></script>
-    <script type='text/javascript' charset='utf-8'>
-        jQuery(document).ready(coverage.pyfile_ready);
-    </script>
-</head>
-<body id='pyfile'>
-
-<div id='header'>
-    <div class='content'>
-        <h1>Coverage for <b>logger</b> :
-            <span class='pc_cov'>96%</span>
-        </h1>
-        <img id='keyboard_icon' src='keybd_closed.png'>
-        <h2 class='stats'>
-            46 statements  
-            <span class='run hide_run shortkey_r button_toggle_run'>44 run</span>
-            <span class='mis shortkey_m button_toggle_mis'>2 missing</span>
-            <span class='exc shortkey_x button_toggle_exc'>0 excluded</span>
-            
-        </h2>
-    </div>
-</div>
-
-<div class='help_panel'>
-    <img id='panel_icon' src='keybd_open.png'>
-<p class='legend'>Hot-keys on this page</p>
-    <div>
-<p class='keyhelp'>
-        <span class='key'>r</span>
-        <span class='key'>m</span>
-        <span class='key'>x</span>
-        <span class='key'>p</span>   toggle line displays
-    </p>
-<p class='keyhelp'>
-        <span class='key'>j</span>
-        <span class='key'>k</span>   next/prev highlighted chunk
-    </p>
-<p class='keyhelp'>
-        <span class='key'>0</span>   (zero) top of page
-    </p>
-<p class='keyhelp'>
-        <span class='key'>1</span>   (one) first highlighted chunk
-    </p>
-    </div>
-</div>
-
-<div id='source'>
-    <table cellspacing='0' cellpadding='0'>
-        <tr>
-            <td class='linenos' valign='top'>
-<p id='n1' class='pln'><a href='#n1'>1</a></p>
-<p id='n2' class='stm run hide_run'><a href='#n2'>2</a></p>
-<p id='n3' class='stm run hide_run'><a href='#n3'>3</a></p>
-<p id='n4' class='stm run hide_run'><a href='#n4'>4</a></p>
-<p id='n5' class='stm run hide_run'><a href='#n5'>5</a></p>
-<p id='n6' class='stm run hide_run'><a href='#n6'>6</a></p>
-<p id='n7' class='pln'><a href='#n7'>7</a></p>
-<p id='n8' class='stm run hide_run'><a href='#n8'>8</a></p>
-<p id='n9' class='stm run hide_run'><a href='#n9'>9</a></p>
-<p id='n10' class='stm run hide_run'><a href='#n10'>10</a></p>
-<p id='n11' class='stm run hide_run'><a href='#n11'>11</a></p>
-<p id='n12' class='stm run hide_run'><a href='#n12'>12</a></p>
-<p id='n13' class='pln'><a href='#n13'>13</a></p>
-<p id='n14' class='stm run hide_run'><a href='#n14'>14</a></p>
-<p id='n15' class='stm run hide_run'><a href='#n15'>15</a></p>
-<p id='n16' class='pln'><a href='#n16'>16</a></p>
-<p id='n17' class='stm run hide_run'><a href='#n17'>17</a></p>
-<p id='n18' class='stm run hide_run'><a href='#n18'>18</a></p>
-<p id='n19' class='stm run hide_run'><a href='#n19'>19</a></p>
-<p id='n20' class='pln'><a href='#n20'>20</a></p>
-<p id='n21' class='stm run hide_run'><a href='#n21'>21</a></p>
-<p id='n22' class='stm run hide_run'><a href='#n22'>22</a></p>
-<p id='n23' class='stm run hide_run'><a href='#n23'>23</a></p>
-<p id='n24' class='stm run hide_run'><a href='#n24'>24</a></p>
-<p id='n25' class='pln'><a href='#n25'>25</a></p>
-<p id='n26' class='stm run hide_run'><a href='#n26'>26</a></p>
-<p id='n27' class='stm run hide_run'><a href='#n27'>27</a></p>
-<p id='n28' class='stm run hide_run'><a href='#n28'>28</a></p>
-<p id='n29' class='pln'><a href='#n29'>29</a></p>
-<p id='n30' class='stm run hide_run'><a href='#n30'>30</a></p>
-<p id='n31' class='stm run hide_run'><a href='#n31'>31</a></p>
-<p id='n32' class='stm run hide_run'><a href='#n32'>32</a></p>
-<p id='n33' class='stm run hide_run'><a href='#n33'>33</a></p>
-<p id='n34' class='stm run hide_run'><a href='#n34'>34</a></p>
-<p id='n35' class='stm run hide_run'><a href='#n35'>35</a></p>
-<p id='n36' class='stm run hide_run'><a href='#n36'>36</a></p>
-<p id='n37' class='pln'><a href='#n37'>37</a></p>
-<p id='n38' class='stm run hide_run'><a href='#n38'>38</a></p>
-<p id='n39' class='stm run hide_run'><a href='#n39'>39</a></p>
-<p id='n40' class='pln'><a href='#n40'>40</a></p>
-<p id='n41' class='stm run hide_run'><a href='#n41'>41</a></p>
-<p id='n42' class='stm run hide_run'><a href='#n42'>42</a></p>
-<p id='n43' class='stm mis'><a href='#n43'>43</a></p>
-<p id='n44' class='stm run hide_run'><a href='#n44'>44</a></p>
-<p id='n45' class='stm run hide_run'><a href='#n45'>45</a></p>
-<p id='n46' class='stm run hide_run'><a href='#n46'>46</a></p>
-<p id='n47' class='stm run hide_run'><a href='#n47'>47</a></p>
-<p id='n48' class='pln'><a href='#n48'>48</a></p>
-<p id='n49' class='stm run hide_run'><a href='#n49'>49</a></p>
-<p id='n50' class='stm run hide_run'><a href='#n50'>50</a></p>
-<p id='n51' class='stm run hide_run'><a href='#n51'>51</a></p>
-<p id='n52' class='stm run hide_run'><a href='#n52'>52</a></p>
-<p id='n53' class='stm run hide_run'><a href='#n53'>53</a></p>
-<p id='n54' class='stm run hide_run'><a href='#n54'>54</a></p>
-<p id='n55' class='pln'><a href='#n55'>55</a></p>
-<p id='n56' class='stm run hide_run'><a href='#n56'>56</a></p>
-<p id='n57' class='pln'><a href='#n57'>57</a></p>
-<p id='n58' class='stm mis'><a href='#n58'>58</a></p>
-                
-            </td>
-            <td class='text' valign='top'>
-<p id='t1' class='pln'><span class='strut'> </span></p>
-<p id='t2' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>LogEntry</span><span class='op'>(</span><span class='nam'>object</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t3' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>__init__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t4' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>slots</span> <span class='op'>=</span> <span class='num'>0</span><span class='strut'> </span></p>
-<p id='t5' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>objects</span> <span class='op'>=</span> <span class='num'>0</span><span class='strut'> </span></p>
-<p id='t6' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>element_typenames</span> <span class='op'>=</span> <span class='op'>{</span><span class='op'>}</span><span class='strut'> </span></p>
-<p id='t7' class='pln'><span class='strut'> </span></p>
-<p id='t8' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>add</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>size</span><span class='op'>,</span> <span class='nam'>element_typename</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t9' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>slots</span> <span class='op'>+=</span> <span class='nam'>size</span><span class='strut'> </span></p>
-<p id='t10' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>objects</span> <span class='op'>+=</span> <span class='num'>1</span><span class='strut'> </span></p>
-<p id='t11' class='stm run hide_run'>        <span class='key'>if</span> <span class='nam'>element_typename</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t12' class='stm run hide_run'>            <span class='nam'>self</span><span class='op'>.</span><span class='nam'>element_typenames</span><span class='op'>[</span><span class='nam'>element_typename</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'> </span></p>
-<p id='t13' class='pln'><span class='strut'> </span></p>
-<p id='t14' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>classnames</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t15' class='stm run hide_run'>        <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>element_typenames</span><span class='op'>.</span><span class='nam'>keys</span><span class='op'>(</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t16' class='pln'><span class='strut'> </span></p>
-<p id='t17' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>Logger</span><span class='op'>(</span><span class='nam'>object</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t18' class='stm run hide_run'>    <span class='nam'>_attrs_</span> <span class='op'>=</span> <span class='op'>[</span><span class='str'>"active"</span><span class='op'>,</span> <span class='str'>"aggregate"</span><span class='op'>,</span> <span class='str'>"logs"</span><span class='op'>]</span><span class='strut'> </span></p>
-<p id='t19' class='stm run hide_run'>    <span class='nam'>_immutable_fields_</span> <span class='op'>=</span> <span class='op'>[</span><span class='str'>"active?"</span><span class='op'>,</span> <span class='str'>"aggregate?"</span><span class='op'>,</span> <span class='str'>"logs"</span><span class='op'>]</span><span class='strut'> </span></p>
-<p id='t20' class='pln'><span class='strut'> </span></p>
-<p id='t21' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>__init__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t22' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>active</span> <span class='op'>=</span> <span class='nam'>False</span><span class='strut'> </span></p>
-<p id='t23' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>aggregate</span> <span class='op'>=</span> <span class='nam'>False</span><span class='strut'> </span></p>
-<p id='t24' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>logs</span> <span class='op'>=</span> <span class='op'>{</span><span class='op'>}</span><span class='strut'> </span></p>
-<p id='t25' class='pln'><span class='strut'> </span></p>
-<p id='t26' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>activate</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>aggregate</span><span class='op'>=</span><span class='nam'>False</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t27' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>active</span> <span class='op'>=</span> <span class='nam'>True</span><span class='strut'> </span></p>
-<p id='t28' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>aggregate</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>aggregate</span> <span class='key'>or</span> <span class='nam'>aggregate</span><span class='strut'> </span></p>
-<p id='t29' class='pln'><span class='strut'> </span></p>
-<p id='t30' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>log</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>new_strategy</span><span class='op'>,</span> <span class='nam'>size</span><span class='op'>,</span> <span class='nam'>cause</span><span class='op'>=</span><span class='str'>""</span><span class='op'>,</span> <span class='nam'>old_strategy</span><span class='op'>=</span><span class='str'>""</span><span class='op'>,</span> <span class='nam'>typename</span><span class='op'>=</span><span class='str'>""</span><span class='op'>,</span> <span class='nam'>element_typename</span><span class='op'>=</span><span class='str'>""</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t31' class='stm run hide_run'>        <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>aggregate</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t32' class='stm run hide_run'>            <span class='nam'>key</span> <span class='op'>=</span> <span class='op'>(</span><span class='nam'>cause</span><span class='op'>,</span> <span class='nam'>old_strategy</span><span class='op'>,</span> <span class='nam'>new_strategy</span><span class='op'>,</span> <span class='nam'>typename</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t33' class='stm run hide_run'>            <span class='key'>if</span> <span class='nam'>key</span> <span class='key'>not</span> <span class='key'>in</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>logs</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t34' class='stm run hide_run'>                <span class='nam'>self</span><span class='op'>.</span><span class='nam'>logs</span><span class='op'>[</span><span class='nam'>key</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>LogEntry</span><span class='op'>(</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t35' class='stm run hide_run'>            <span class='nam'>entry</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>logs</span><span class='op'>[</span><span class='nam'>key</span><span class='op'>]</span><span class='strut'> </span></p>
-<p id='t36' class='stm run hide_run'>            <span class='nam'>entry</span><span class='op'>.</span><span class='nam'>add</span><span class='op'>(</span><span class='nam'>size</span><span class='op'>,</span> <span class='nam'>element_typename</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t37' class='pln'>        <span class='key'>else</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t38' class='stm run hide_run'>            <span class='nam'>element_typenames</span> <span class='op'>=</span> <span class='op'>[</span> <span class='nam'>element_typename</span> <span class='op'>]</span> <span class='key'>if</span> <span class='nam'>element_typename</span> <span class='key'>else</span> <span class='op'>[</span><span class='op'>]</span><span class='strut'> </span></p>
-<p id='t39' class='stm run hide_run'>            <span class='nam'>self</span><span class='op'>.</span><span class='nam'>output</span><span class='op'>(</span><span class='nam'>cause</span><span class='op'>,</span> <span class='nam'>old_strategy</span><span class='op'>,</span> <span class='nam'>new_strategy</span><span class='op'>,</span> <span class='nam'>typename</span><span class='op'>,</span> <span class='nam'>size</span><span class='op'>,</span> <span class='num'>1</span><span class='op'>,</span> <span class='nam'>element_typenames</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t40' class='pln'><span class='strut'> </span></p>
-<p id='t41' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>print_aggregated_log</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t42' class='stm run hide_run'>        <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>aggregate</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t43' class='stm mis'>            <span class='key'>return</span><span class='strut'> </span></p>
-<p id='t44' class='stm run hide_run'>        <span class='key'>for</span> <span class='nam'>key</span><span class='op'>,</span> <span class='nam'>entry</span> <span class='key'>in</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>logs</span><span class='op'>.</span><span class='nam'>items</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t45' class='stm run hide_run'>            <span class='nam'>cause</span><span class='op'>,</span> <span class='nam'>old_strategy</span><span class='op'>,</span> <span class='nam'>new_strategy</span><span class='op'>,</span> <span class='nam'>typename</span> <span class='op'>=</span> <span class='nam'>key</span><span class='strut'> </span></p>
-<p id='t46' class='stm run hide_run'>            <span class='nam'>slots</span><span class='op'>,</span> <span class='nam'>objects</span><span class='op'>,</span> <span class='nam'>element_typenames</span> <span class='op'>=</span> <span class='nam'>entry</span><span class='op'>.</span><span class='nam'>slots</span><span class='op'>,</span> <span class='nam'>entry</span><span class='op'>.</span><span class='nam'>objects</span><span class='op'>,</span> <span class='nam'>entry</span><span class='op'>.</span><span class='nam'>classnames</span><span class='op'>(</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t47' class='stm run hide_run'>            <span class='nam'>self</span><span class='op'>.</span><span class='nam'>output</span><span class='op'>(</span><span class='nam'>cause</span><span class='op'>,</span> <span class='nam'>old_strategy</span><span class='op'>,</span> <span class='nam'>new_strategy</span><span class='op'>,</span> <span class='nam'>typename</span><span class='op'>,</span> <span class='nam'>slots</span><span class='op'>,</span> <span class='nam'>objects</span><span class='op'>,</span> <span class='nam'>element_typenames</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t48' class='pln'><span class='strut'> </span></p>
-<p id='t49' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>output</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>cause</span><span class='op'>,</span> <span class='nam'>old_strategy</span><span class='op'>,</span> <span class='nam'>new_strategy</span><span class='op'>,</span> <span class='nam'>typename</span><span class='op'>,</span> <span class='nam'>slots</span><span class='op'>,</span> <span class='nam'>objects</span><span class='op'>,</span> <span class='nam'>element_typenames</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t50' class='stm run hide_run'>        <span class='nam'>old_strategy_string</span> <span class='op'>=</span> <span class='str'>"%s -> "</span> <span class='op'>%</span> <span class='nam'>old_strategy</span> <span class='key'>if</span> <span class='nam'>old_strategy</span> <span class='key'>else</span> <span class='str'>""</span><span class='strut'> </span></p>
-<p id='t51' class='stm run hide_run'>        <span class='nam'>classname_string</span> <span class='op'>=</span> <span class='str'>" of %s"</span> <span class='op'>%</span> <span class='nam'>typename</span> <span class='key'>if</span> <span class='nam'>typename</span> <span class='key'>else</span> <span class='str'>""</span><span class='strut'> </span></p>
-<p id='t52' class='stm run hide_run'>        <span class='nam'>element_string</span> <span class='op'>=</span> <span class='op'>(</span><span class='str'>" elements: "</span> <span class='op'>+</span> <span class='str'>" "</span><span class='op'>.</span><span class='nam'>join</span><span class='op'>(</span><span class='nam'>element_typenames</span><span class='op'>)</span><span class='op'>)</span> <span class='key'>if</span> <span class='nam'>element_typenames</span> <span class='key'>else</span> <span class='str'>""</span><span class='strut'> </span></p>
-<p id='t53' class='stm run hide_run'>        <span class='nam'>format</span> <span class='op'>=</span> <span class='op'>(</span><span class='nam'>cause</span><span class='op'>,</span> <span class='nam'>old_strategy_string</span><span class='op'>,</span> <span class='nam'>new_strategy</span><span class='op'>,</span> <span class='nam'>classname_string</span><span class='op'>,</span> <span class='nam'>slots</span><span class='op'>,</span> <span class='nam'>objects</span><span class='op'>,</span> <span class='nam'>element_string</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t54' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>do_print</span><span class='op'>(</span><span class='str'>"%s (%s%s)%s size %d objects %d%s"</span> <span class='op'>%</span> <span class='nam'>format</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t55' class='pln'><span class='strut'> </span></p>
-<p id='t56' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>do_print</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>str</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t57' class='pln'>        <span class='com'># Hook to increase testability</span><span class='strut'> </span></p>
-<p id='t58' class='stm mis'>        <span class='key'>print</span> <span class='nam'>str</span><span class='strut'> </span></p>
-                
-            </td>
-        </tr>
-    </table>
-</div>
-
-<div id='footer'>
-    <div class='content'>
-        <p>
-            <a class='nav' href='index.html'>&#xab; index</a>     <a class='nav' href='http://nedbatchelder.com/code/coverage'>coverage.py v3.7.1</a>
-        </p>
-    </div>
-</div>
-
-</body>
-</html>
diff --git a/rpython/rlib/rstrategies/htmlcov1/rstrategies.html b/rpython/rlib/rstrategies/htmlcov1/rstrategies.html
deleted file mode 100644
--- a/rpython/rlib/rstrategies/htmlcov1/rstrategies.html
+++ /dev/null
@@ -1,1226 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD html 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
-    
-    
-    <meta http-equiv='X-UA-Compatible' content='IE=emulateIE7' />
-    <title>Coverage for rstrategies: 95%</title>
-    <link rel='stylesheet' href='style.css' type='text/css'>
-    
-    <script type='text/javascript' src='jquery.min.js'></script>
-    <script type='text/javascript' src='jquery.hotkeys.js'></script>
-    <script type='text/javascript' src='jquery.isonscreen.js'></script>
-    <script type='text/javascript' src='coverage_html.js'></script>
-    <script type='text/javascript' charset='utf-8'>
-        jQuery(document).ready(coverage.pyfile_ready);
-    </script>
-</head>
-<body id='pyfile'>
-
-<div id='header'>
-    <div class='content'>
-        <h1>Coverage for <b>rstrategies</b> :
-            <span class='pc_cov'>95%</span>
-        </h1>
-        <img id='keyboard_icon' src='keybd_closed.png'>
-        <h2 class='stats'>
-            349 statements  
-            <span class='run hide_run shortkey_r button_toggle_run'>333 run</span>
-            <span class='mis shortkey_m button_toggle_mis'>16 missing</span>
-            <span class='exc shortkey_x button_toggle_exc'>0 excluded</span>
-            
-        </h2>
-    </div>
-</div>
-
-<div class='help_panel'>
-    <img id='panel_icon' src='keybd_open.png'>
-<p class='legend'>Hot-keys on this page</p>
-    <div>
-<p class='keyhelp'>
-        <span class='key'>r</span>
-        <span class='key'>m</span>
-        <span class='key'>x</span>
-        <span class='key'>p</span>   toggle line displays
-    </p>
-<p class='keyhelp'>
-        <span class='key'>j</span>
-        <span class='key'>k</span>   next/prev highlighted chunk
-    </p>
-<p class='keyhelp'>
-        <span class='key'>0</span>   (zero) top of page
-    </p>
-<p class='keyhelp'>
-        <span class='key'>1</span>   (one) first highlighted chunk
-    </p>
-    </div>
-</div>
-
-<div id='source'>
-    <table cellspacing='0' cellpadding='0'>
-        <tr>
-            <td class='linenos' valign='top'>
-<p id='n1' class='pln'><a href='#n1'>1</a></p>
-<p id='n2' class='stm run hide_run'><a href='#n2'>2</a></p>
-<p id='n3' class='stm run hide_run'><a href='#n3'>3</a></p>
-<p id='n4' class='stm run hide_run'><a href='#n4'>4</a></p>
-<p id='n5' class='stm run hide_run'><a href='#n5'>5</a></p>
-<p id='n6' class='pln'><a href='#n6'>6</a></p>
-<p id='n7' class='stm run hide_run'><a href='#n7'>7</a></p>
-<p id='n8' class='pln'><a href='#n8'>8</a></p>
-<p id='n9' class='pln'><a href='#n9'>9</a></p>
-<p id='n10' class='pln'><a href='#n10'>10</a></p>
-<p id='n11' class='pln'><a href='#n11'>11</a></p>
-<p id='n12' class='stm run hide_run'><a href='#n12'>12</a></p>
-<p id='n13' class='stm run hide_run'><a href='#n13'>13</a></p>
-<p id='n14' class='stm run hide_run'><a href='#n14'>14</a></p>
-<p id='n15' class='stm run hide_run'><a href='#n15'>15</a></p>
-<p id='n16' class='stm run hide_run'><a href='#n16'>16</a></p>
-<p id='n17' class='stm run hide_run'><a href='#n17'>17</a></p>
-<p id='n18' class='stm run hide_run'><a href='#n18'>18</a></p>
-<p id='n19' class='stm run hide_run'><a href='#n19'>19</a></p>
-<p id='n20' class='stm run hide_run'><a href='#n20'>20</a></p>
-<p id='n21' class='stm run hide_run'><a href='#n21'>21</a></p>
-<p id='n22' class='stm run hide_run'><a href='#n22'>22</a></p>
-<p id='n23' class='pln'><a href='#n23'>23</a></p>
-<p id='n24' class='stm run hide_run'><a href='#n24'>24</a></p>
-<p id='n25' class='pln'><a href='#n25'>25</a></p>
-<p id='n26' class='pln'><a href='#n26'>26</a></p>
-<p id='n27' class='pln'><a href='#n27'>27</a></p>
-<p id='n28' class='pln'><a href='#n28'>28</a></p>
-<p id='n29' class='stm run hide_run'><a href='#n29'>29</a></p>
-<p id='n30' class='stm run hide_run'><a href='#n30'>30</a></p>
-<p id='n31' class='stm run hide_run'><a href='#n31'>31</a></p>
-<p id='n32' class='stm run hide_run'><a href='#n32'>32</a></p>
-<p id='n33' class='pln'><a href='#n33'>33</a></p>
-<p id='n34' class='stm run hide_run'><a href='#n34'>34</a></p>
-<p id='n35' class='stm run hide_run'><a href='#n35'>35</a></p>
-<p id='n36' class='stm run hide_run'><a href='#n36'>36</a></p>
-<p id='n37' class='stm run hide_run'><a href='#n37'>37</a></p>
-<p id='n38' class='stm run hide_run'><a href='#n38'>38</a></p>
-<p id='n39' class='stm run hide_run'><a href='#n39'>39</a></p>
-<p id='n40' class='stm run hide_run'><a href='#n40'>40</a></p>
-<p id='n41' class='stm run hide_run'><a href='#n41'>41</a></p>
-<p id='n42' class='stm run hide_run'><a href='#n42'>42</a></p>
-<p id='n43' class='stm run hide_run'><a href='#n43'>43</a></p>
-<p id='n44' class='pln'><a href='#n44'>44</a></p>
-<p id='n45' class='stm run hide_run'><a href='#n45'>45</a></p>
-<p id='n46' class='pln'><a href='#n46'>46</a></p>
-<p id='n47' class='pln'><a href='#n47'>47</a></p>
-<p id='n48' class='pln'><a href='#n48'>48</a></p>
-<p id='n49' class='pln'><a href='#n49'>49</a></p>
-<p id='n50' class='pln'><a href='#n50'>50</a></p>
-<p id='n51' class='pln'><a href='#n51'>51</a></p>
-<p id='n52' class='stm run hide_run'><a href='#n52'>52</a></p>
-<p id='n53' class='pln'><a href='#n53'>53</a></p>
-<p id='n54' class='stm run hide_run'><a href='#n54'>54</a></p>
-<p id='n55' class='stm run hide_run'><a href='#n55'>55</a></p>
-<p id='n56' class='pln'><a href='#n56'>56</a></p>
-<p id='n57' class='pln'><a href='#n57'>57</a></p>
-<p id='n58' class='stm run hide_run'><a href='#n58'>58</a></p>
-<p id='n59' class='stm run hide_run'><a href='#n59'>59</a></p>
-<p id='n60' class='stm run hide_run'><a href='#n60'>60</a></p>
-<p id='n61' class='stm mis'><a href='#n61'>61</a></p>
-<p id='n62' class='stm run hide_run'><a href='#n62'>62</a></p>
-<p id='n63' class='stm run hide_run'><a href='#n63'>63</a></p>
-<p id='n64' class='stm run hide_run'><a href='#n64'>64</a></p>
-<p id='n65' class='stm run hide_run'><a href='#n65'>65</a></p>
-<p id='n66' class='stm run hide_run'><a href='#n66'>66</a></p>
-<p id='n67' class='stm run hide_run'><a href='#n67'>67</a></p>
-<p id='n68' class='stm run hide_run'><a href='#n68'>68</a></p>
-<p id='n69' class='stm run hide_run'><a href='#n69'>69</a></p>
-<p id='n70' class='pln'><a href='#n70'>70</a></p>
-<p id='n71' class='stm run hide_run'><a href='#n71'>71</a></p>
-<p id='n72' class='stm run hide_run'><a href='#n72'>72</a></p>
-<p id='n73' class='stm run hide_run'><a href='#n73'>73</a></p>
-<p id='n74' class='pln'><a href='#n74'>74</a></p>
-<p id='n75' class='stm run hide_run'><a href='#n75'>75</a></p>
-<p id='n76' class='stm run hide_run'><a href='#n76'>76</a></p>
-<p id='n77' class='stm run hide_run'><a href='#n77'>77</a></p>
-<p id='n78' class='stm run hide_run'><a href='#n78'>78</a></p>
-<p id='n79' class='stm run hide_run'><a href='#n79'>79</a></p>
-<p id='n80' class='pln'><a href='#n80'>80</a></p>
-<p id='n81' class='pln'><a href='#n81'>81</a></p>
-<p id='n82' class='stm run hide_run'><a href='#n82'>82</a></p>
-<p id='n83' class='stm run hide_run'><a href='#n83'>83</a></p>
-<p id='n84' class='pln'><a href='#n84'>84</a></p>
-<p id='n85' class='stm run hide_run'><a href='#n85'>85</a></p>
-<p id='n86' class='pln'><a href='#n86'>86</a></p>
-<p id='n87' class='stm run hide_run'><a href='#n87'>87</a></p>
-<p id='n88' class='stm run hide_run'><a href='#n88'>88</a></p>
-<p id='n89' class='stm run hide_run'><a href='#n89'>89</a></p>
-<p id='n90' class='stm run hide_run'><a href='#n90'>90</a></p>
-<p id='n91' class='stm run hide_run'><a href='#n91'>91</a></p>
-<p id='n92' class='stm run hide_run'><a href='#n92'>92</a></p>
-<p id='n93' class='stm run hide_run'><a href='#n93'>93</a></p>
-<p id='n94' class='pln'><a href='#n94'>94</a></p>
-<p id='n95' class='pln'><a href='#n95'>95</a></p>
-<p id='n96' class='pln'><a href='#n96'>96</a></p>
-<p id='n97' class='pln'><a href='#n97'>97</a></p>
-<p id='n98' class='pln'><a href='#n98'>98</a></p>
-<p id='n99' class='stm run hide_run'><a href='#n99'>99</a></p>
-<p id='n100' class='pln'><a href='#n100'>100</a></p>
-<p id='n101' class='pln'><a href='#n101'>101</a></p>
-<p id='n102' class='pln'><a href='#n102'>102</a></p>
-<p id='n103' class='pln'><a href='#n103'>103</a></p>
-<p id='n104' class='pln'><a href='#n104'>104</a></p>
-<p id='n105' class='stm run hide_run'><a href='#n105'>105</a></p>
-<p id='n106' class='stm run hide_run'><a href='#n106'>106</a></p>
-<p id='n107' class='stm run hide_run'><a href='#n107'>107</a></p>
-<p id='n108' class='pln'><a href='#n108'>108</a></p>
-<p id='n109' class='stm run hide_run'><a href='#n109'>109</a></p>
-<p id='n110' class='stm run hide_run'><a href='#n110'>110</a></p>
-<p id='n111' class='stm run hide_run'><a href='#n111'>111</a></p>
-<p id='n112' class='stm run hide_run'><a href='#n112'>112</a></p>
-<p id='n113' class='stm run hide_run'><a href='#n113'>113</a></p>
-<p id='n114' class='stm run hide_run'><a href='#n114'>114</a></p>
-<p id='n115' class='stm run hide_run'><a href='#n115'>115</a></p>
-<p id='n116' class='pln'><a href='#n116'>116</a></p>
-<p id='n117' class='stm run hide_run'><a href='#n117'>117</a></p>
-<p id='n118' class='pln'><a href='#n118'>118</a></p>
-<p id='n119' class='pln'><a href='#n119'>119</a></p>
-<p id='n120' class='pln'><a href='#n120'>120</a></p>
-<p id='n121' class='pln'><a href='#n121'>121</a></p>
-<p id='n122' class='pln'><a href='#n122'>122</a></p>
-<p id='n123' class='pln'><a href='#n123'>123</a></p>
-<p id='n124' class='stm run hide_run'><a href='#n124'>124</a></p>
-<p id='n125' class='stm run hide_run'><a href='#n125'>125</a></p>
-<p id='n126' class='stm run hide_run'><a href='#n126'>126</a></p>
-<p id='n127' class='pln'><a href='#n127'>127</a></p>
-<p id='n128' class='stm run hide_run'><a href='#n128'>128</a></p>
-<p id='n129' class='stm run hide_run'><a href='#n129'>129</a></p>
-<p id='n130' class='stm run hide_run'><a href='#n130'>130</a></p>
-<p id='n131' class='stm run hide_run'><a href='#n131'>131</a></p>
-<p id='n132' class='stm run hide_run'><a href='#n132'>132</a></p>
-<p id='n133' class='stm run hide_run'><a href='#n133'>133</a></p>
-<p id='n134' class='stm run hide_run'><a href='#n134'>134</a></p>
-<p id='n135' class='stm run hide_run'><a href='#n135'>135</a></p>
-<p id='n136' class='stm run hide_run'><a href='#n136'>136</a></p>
-<p id='n137' class='stm run hide_run'><a href='#n137'>137</a></p>
-<p id='n138' class='pln'><a href='#n138'>138</a></p>
-<p id='n139' class='stm run hide_run'><a href='#n139'>139</a></p>
-<p id='n140' class='pln'><a href='#n140'>140</a></p>
-<p id='n141' class='pln'><a href='#n141'>141</a></p>
-<p id='n142' class='pln'><a href='#n142'>142</a></p>
-<p id='n143' class='pln'><a href='#n143'>143</a></p>
-<p id='n144' class='stm run hide_run'><a href='#n144'>144</a></p>
-<p id='n145' class='stm run hide_run'><a href='#n145'>145</a></p>
-<p id='n146' class='stm run hide_run'><a href='#n146'>146</a></p>
-<p id='n147' class='stm run hide_run'><a href='#n147'>147</a></p>
-<p id='n148' class='stm run hide_run'><a href='#n148'>148</a></p>
-<p id='n149' class='stm run hide_run'><a href='#n149'>149</a></p>
-<p id='n150' class='stm run hide_run'><a href='#n150'>150</a></p>
-<p id='n151' class='stm run hide_run'><a href='#n151'>151</a></p>
-<p id='n152' class='stm run hide_run'><a href='#n152'>152</a></p>
-<p id='n153' class='stm run hide_run'><a href='#n153'>153</a></p>
-<p id='n154' class='stm run hide_run'><a href='#n154'>154</a></p>
-<p id='n155' class='stm run hide_run'><a href='#n155'>155</a></p>
-<p id='n156' class='stm run hide_run'><a href='#n156'>156</a></p>
-<p id='n157' class='pln'><a href='#n157'>157</a></p>
-<p id='n158' class='stm run hide_run'><a href='#n158'>158</a></p>
-<p id='n159' class='pln'><a href='#n159'>159</a></p>
-<p id='n160' class='pln'><a href='#n160'>160</a></p>
-<p id='n161' class='pln'><a href='#n161'>161</a></p>
-<p id='n162' class='pln'><a href='#n162'>162</a></p>
-<p id='n163' class='pln'><a href='#n163'>163</a></p>
-<p id='n164' class='pln'><a href='#n164'>164</a></p>
-<p id='n165' class='pln'><a href='#n165'>165</a></p>
-<p id='n166' class='stm run hide_run'><a href='#n166'>166</a></p>
-<p id='n167' class='stm run hide_run'><a href='#n167'>167</a></p>
-<p id='n168' class='pln'><a href='#n168'>168</a></p>
-<p id='n169' class='pln'><a href='#n169'>169</a></p>
-<p id='n170' class='pln'><a href='#n170'>170</a></p>
-<p id='n171' class='pln'><a href='#n171'>171</a></p>
-<p id='n172' class='pln'><a href='#n172'>172</a></p>
-<p id='n173' class='stm run hide_run'><a href='#n173'>173</a></p>
-<p id='n174' class='pln'><a href='#n174'>174</a></p>
-<p id='n175' class='pln'><a href='#n175'>175</a></p>
-<p id='n176' class='pln'><a href='#n176'>176</a></p>
-<p id='n177' class='pln'><a href='#n177'>177</a></p>
-<p id='n178' class='pln'><a href='#n178'>178</a></p>
-<p id='n179' class='stm mis'><a href='#n179'>179</a></p>
-<p id='n180' class='pln'><a href='#n180'>180</a></p>
-<p id='n181' class='stm run hide_run'><a href='#n181'>181</a></p>
-<p id='n182' class='pln'><a href='#n182'>182</a></p>
-<p id='n183' class='pln'><a href='#n183'>183</a></p>
-<p id='n184' class='pln'><a href='#n184'>184</a></p>
-<p id='n185' class='stm run hide_run'><a href='#n185'>185</a></p>
-<p id='n186' class='stm run hide_run'><a href='#n186'>186</a></p>
-<p id='n187' class='stm run hide_run'><a href='#n187'>187</a></p>
-<p id='n188' class='stm run hide_run'><a href='#n188'>188</a></p>
-<p id='n189' class='stm run hide_run'><a href='#n189'>189</a></p>
-<p id='n190' class='stm run hide_run'><a href='#n190'>190</a></p>
-<p id='n191' class='stm run hide_run'><a href='#n191'>191</a></p>
-<p id='n192' class='stm run hide_run'><a href='#n192'>192</a></p>
-<p id='n193' class='pln'><a href='#n193'>193</a></p>
-<p id='n194' class='stm run hide_run'><a href='#n194'>194</a></p>
-<p id='n195' class='pln'><a href='#n195'>195</a></p>
-<p id='n196' class='pln'><a href='#n196'>196</a></p>
-<p id='n197' class='pln'><a href='#n197'>197</a></p>
-<p id='n198' class='pln'><a href='#n198'>198</a></p>
-<p id='n199' class='pln'><a href='#n199'>199</a></p>
-<p id='n200' class='stm run hide_run'><a href='#n200'>200</a></p>
-<p id='n201' class='pln'><a href='#n201'>201</a></p>
-<p id='n202' class='pln'><a href='#n202'>202</a></p>
-<p id='n203' class='pln'><a href='#n203'>203</a></p>
-<p id='n204' class='stm run hide_run'><a href='#n204'>204</a></p>
-<p id='n205' class='pln'><a href='#n205'>205</a></p>
-<p id='n206' class='stm run hide_run'><a href='#n206'>206</a></p>
-<p id='n207' class='stm run hide_run'><a href='#n207'>207</a></p>
-<p id='n208' class='pln'><a href='#n208'>208</a></p>
-<p id='n209' class='stm run hide_run'><a href='#n209'>209</a></p>
-<p id='n210' class='pln'><a href='#n210'>210</a></p>
-<p id='n211' class='stm run hide_run'><a href='#n211'>211</a></p>
-<p id='n212' class='stm run hide_run'><a href='#n212'>212</a></p>
-<p id='n213' class='stm run hide_run'><a href='#n213'>213</a></p>
-<p id='n214' class='stm run hide_run'><a href='#n214'>214</a></p>
-<p id='n215' class='pln'><a href='#n215'>215</a></p>
-<p id='n216' class='pln'><a href='#n216'>216</a></p>
-<p id='n217' class='pln'><a href='#n217'>217</a></p>
-<p id='n218' class='pln'><a href='#n218'>218</a></p>
-<p id='n219' class='pln'><a href='#n219'>219</a></p>
-<p id='n220' class='stm run hide_run'><a href='#n220'>220</a></p>
-<p id='n221' class='pln'><a href='#n221'>221</a></p>
-<p id='n222' class='pln'><a href='#n222'>222</a></p>
-<p id='n223' class='stm run hide_run'><a href='#n223'>223</a></p>
-<p id='n224' class='stm run hide_run'><a href='#n224'>224</a></p>
-<p id='n225' class='stm run hide_run'><a href='#n225'>225</a></p>
-<p id='n226' class='stm run hide_run'><a href='#n226'>226</a></p>
-<p id='n227' class='stm run hide_run'><a href='#n227'>227</a></p>
-<p id='n228' class='pln'><a href='#n228'>228</a></p>
-<p id='n229' class='pln'><a href='#n229'>229</a></p>
-<p id='n230' class='stm run hide_run'><a href='#n230'>230</a></p>
-<p id='n231' class='stm run hide_run'><a href='#n231'>231</a></p>
-<p id='n232' class='stm run hide_run'><a href='#n232'>232</a></p>
-<p id='n233' class='pln'><a href='#n233'>233</a></p>
-<p id='n234' class='stm run hide_run'><a href='#n234'>234</a></p>
-<p id='n235' class='pln'><a href='#n235'>235</a></p>
-<p id='n236' class='stm run hide_run'><a href='#n236'>236</a></p>
-<p id='n237' class='stm run hide_run'><a href='#n237'>237</a></p>
-<p id='n238' class='stm run hide_run'><a href='#n238'>238</a></p>
-<p id='n239' class='stm run hide_run'><a href='#n239'>239</a></p>
-<p id='n240' class='stm run hide_run'><a href='#n240'>240</a></p>
-<p id='n241' class='pln'><a href='#n241'>241</a></p>
-<p id='n242' class='stm run hide_run'><a href='#n242'>242</a></p>
-<p id='n243' class='pln'><a href='#n243'>243</a></p>
-<p id='n244' class='stm run hide_run'><a href='#n244'>244</a></p>
-<p id='n245' class='stm run hide_run'><a href='#n245'>245</a></p>
-<p id='n246' class='stm run hide_run'><a href='#n246'>246</a></p>
-<p id='n247' class='stm run hide_run'><a href='#n247'>247</a></p>
-<p id='n248' class='stm run hide_run'><a href='#n248'>248</a></p>
-<p id='n249' class='stm mis'><a href='#n249'>249</a></p>
-<p id='n250' class='stm run hide_run'><a href='#n250'>250</a></p>
-<p id='n251' class='stm run hide_run'><a href='#n251'>251</a></p>
-<p id='n252' class='stm run hide_run'><a href='#n252'>252</a></p>
-<p id='n253' class='stm run hide_run'><a href='#n253'>253</a></p>
-<p id='n254' class='stm run hide_run'><a href='#n254'>254</a></p>
-<p id='n255' class='stm run hide_run'><a href='#n255'>255</a></p>
-<p id='n256' class='pln'><a href='#n256'>256</a></p>
-<p id='n257' class='stm run hide_run'><a href='#n257'>257</a></p>
-<p id='n258' class='stm run hide_run'><a href='#n258'>258</a></p>
-<p id='n259' class='pln'><a href='#n259'>259</a></p>
-<p id='n260' class='stm run hide_run'><a href='#n260'>260</a></p>
-<p id='n261' class='pln'><a href='#n261'>261</a></p>
-<p id='n262' class='stm run hide_run'><a href='#n262'>262</a></p>
-<p id='n263' class='pln'><a href='#n263'>263</a></p>
-<p id='n264' class='stm run hide_run'><a href='#n264'>264</a></p>
-<p id='n265' class='pln'><a href='#n265'>265</a></p>
-<p id='n266' class='pln'><a href='#n266'>266</a></p>
-<p id='n267' class='stm mis'><a href='#n267'>267</a></p>
-<p id='n268' class='pln'><a href='#n268'>268</a></p>
-<p id='n269' class='stm run hide_run'><a href='#n269'>269</a></p>
-<p id='n270' class='pln'><a href='#n270'>270</a></p>
-<p id='n271' class='pln'><a href='#n271'>271</a></p>
-<p id='n272' class='pln'><a href='#n272'>272</a></p>
-<p id='n273' class='pln'><a href='#n273'>273</a></p>
-<p id='n274' class='pln'><a href='#n274'>274</a></p>
-<p id='n275' class='stm run hide_run'><a href='#n275'>275</a></p>
-<p id='n276' class='pln'><a href='#n276'>276</a></p>
-<p id='n277' class='pln'><a href='#n277'>277</a></p>
-<p id='n278' class='stm run hide_run'><a href='#n278'>278</a></p>
-<p id='n279' class='pln'><a href='#n279'>279</a></p>
-<p id='n280' class='pln'><a href='#n280'>280</a></p>
-<p id='n281' class='pln'><a href='#n281'>281</a></p>
-<p id='n282' class='stm run hide_run'><a href='#n282'>282</a></p>
-<p id='n283' class='stm mis'><a href='#n283'>283</a></p>
-<p id='n284' class='pln'><a href='#n284'>284</a></p>
-<p id='n285' class='stm run hide_run'><a href='#n285'>285</a></p>
-<p id='n286' class='stm mis'><a href='#n286'>286</a></p>
-<p id='n287' class='pln'><a href='#n287'>287</a></p>
-<p id='n288' class='stm run hide_run'><a href='#n288'>288</a></p>
-<p id='n289' class='stm mis'><a href='#n289'>289</a></p>
-<p id='n290' class='pln'><a href='#n290'>290</a></p>
-<p id='n291' class='pln'><a href='#n291'>291</a></p>
-<p id='n292' class='pln'><a href='#n292'>292</a></p>
-<p id='n293' class='stm run hide_run'><a href='#n293'>293</a></p>
-<p id='n294' class='stm run hide_run'><a href='#n294'>294</a></p>
-<p id='n295' class='pln'><a href='#n295'>295</a></p>
-<p id='n296' class='stm run hide_run'><a href='#n296'>296</a></p>
-<p id='n297' class='stm run hide_run'><a href='#n297'>297</a></p>
-<p id='n298' class='pln'><a href='#n298'>298</a></p>
-<p id='n299' class='stm run hide_run'><a href='#n299'>299</a></p>
-<p id='n300' class='stm run hide_run'><a href='#n300'>300</a></p>
-<p id='n301' class='stm run hide_run'><a href='#n301'>301</a></p>
-<p id='n302' class='pln'><a href='#n302'>302</a></p>
-<p id='n303' class='pln'><a href='#n303'>303</a></p>
-<p id='n304' class='pln'><a href='#n304'>304</a></p>
-<p id='n305' class='stm run hide_run'><a href='#n305'>305</a></p>
-<p id='n306' class='stm mis'><a href='#n306'>306</a></p>
-<p id='n307' class='pln'><a href='#n307'>307</a></p>
-<p id='n308' class='stm run hide_run'><a href='#n308'>308</a></p>
-<p id='n309' class='stm mis'><a href='#n309'>309</a></p>
-<p id='n310' class='pln'><a href='#n310'>310</a></p>
-<p id='n311' class='pln'><a href='#n311'>311</a></p>
-<p id='n312' class='pln'><a href='#n312'>312</a></p>
-<p id='n313' class='stm run hide_run'><a href='#n313'>313</a></p>
-<p id='n314' class='stm run hide_run'><a href='#n314'>314</a></p>
-<p id='n315' class='pln'><a href='#n315'>315</a></p>
-<p id='n316' class='stm run hide_run'><a href='#n316'>316</a></p>
-<p id='n317' class='stm run hide_run'><a href='#n317'>317</a></p>
-<p id='n318' class='stm run hide_run'><a href='#n318'>318</a></p>
-<p id='n319' class='stm run hide_run'><a href='#n319'>319</a></p>
-<p id='n320' class='pln'><a href='#n320'>320</a></p>
-<p id='n321' class='pln'><a href='#n321'>321</a></p>
-<p id='n322' class='pln'><a href='#n322'>322</a></p>
-<p id='n323' class='stm run hide_run'><a href='#n323'>323</a></p>
-<p id='n324' class='stm mis'><a href='#n324'>324</a></p>
-<p id='n325' class='pln'><a href='#n325'>325</a></p>
-<p id='n326' class='stm run hide_run'><a href='#n326'>326</a></p>
-<p id='n327' class='stm mis'><a href='#n327'>327</a></p>
-<p id='n328' class='pln'><a href='#n328'>328</a></p>
-<p id='n329' class='stm run hide_run'><a href='#n329'>329</a></p>
-<p id='n330' class='pln'><a href='#n330'>330</a></p>
-<p id='n331' class='stm mis'><a href='#n331'>331</a></p>
-<p id='n332' class='pln'><a href='#n332'>332</a></p>
-<p id='n333' class='stm run hide_run'><a href='#n333'>333</a></p>
-<p id='n334' class='pln'><a href='#n334'>334</a></p>
-<p id='n335' class='pln'><a href='#n335'>335</a></p>
-<p id='n336' class='pln'><a href='#n336'>336</a></p>
-<p id='n337' class='stm run hide_run'><a href='#n337'>337</a></p>
-<p id='n338' class='stm run hide_run'><a href='#n338'>338</a></p>
-<p id='n339' class='stm run hide_run'><a href='#n339'>339</a></p>
-<p id='n340' class='stm run hide_run'><a href='#n340'>340</a></p>
-<p id='n341' class='pln'><a href='#n341'>341</a></p>
-<p id='n342' class='stm run hide_run'><a href='#n342'>342</a></p>
-<p id='n343' class='stm run hide_run'><a href='#n343'>343</a></p>
-<p id='n344' class='stm run hide_run'><a href='#n344'>344</a></p>
-<p id='n345' class='stm run hide_run'><a href='#n345'>345</a></p>
-<p id='n346' class='pln'><a href='#n346'>346</a></p>
-<p id='n347' class='stm run hide_run'><a href='#n347'>347</a></p>
-<p id='n348' class='stm run hide_run'><a href='#n348'>348</a></p>
-<p id='n349' class='stm run hide_run'><a href='#n349'>349</a></p>
-<p id='n350' class='pln'><a href='#n350'>350</a></p>
-<p id='n351' class='stm run hide_run'><a href='#n351'>351</a></p>
-<p id='n352' class='pln'><a href='#n352'>352</a></p>
-<p id='n353' class='stm run hide_run'><a href='#n353'>353</a></p>
-<p id='n354' class='stm run hide_run'><a href='#n354'>354</a></p>
-<p id='n355' class='pln'><a href='#n355'>355</a></p>
-<p id='n356' class='pln'><a href='#n356'>356</a></p>
-<p id='n357' class='pln'><a href='#n357'>357</a></p>
-<p id='n358' class='stm run hide_run'><a href='#n358'>358</a></p>
-<p id='n359' class='pln'><a href='#n359'>359</a></p>
-<p id='n360' class='pln'><a href='#n360'>360</a></p>
-<p id='n361' class='pln'><a href='#n361'>361</a></p>
-<p id='n362' class='stm run hide_run'><a href='#n362'>362</a></p>
-<p id='n363' class='stm run hide_run'><a href='#n363'>363</a></p>
-<p id='n364' class='stm run hide_run'><a href='#n364'>364</a></p>
-<p id='n365' class='stm run hide_run'><a href='#n365'>365</a></p>
-<p id='n366' class='stm mis'><a href='#n366'>366</a></p>
-<p id='n367' class='stm run hide_run'><a href='#n367'>367</a></p>
-<p id='n368' class='stm run hide_run'><a href='#n368'>368</a></p>
-<p id='n369' class='pln'><a href='#n369'>369</a></p>
-<p id='n370' class='stm run hide_run'><a href='#n370'>370</a></p>
-<p id='n371' class='stm run hide_run'><a href='#n371'>371</a></p>
-<p id='n372' class='stm run hide_run'><a href='#n372'>372</a></p>
-<p id='n373' class='stm run hide_run'><a href='#n373'>373</a></p>
-<p id='n374' class='stm run hide_run'><a href='#n374'>374</a></p>
-<p id='n375' class='stm run hide_run'><a href='#n375'>375</a></p>
-<p id='n376' class='stm run hide_run'><a href='#n376'>376</a></p>
-<p id='n377' class='stm run hide_run'><a href='#n377'>377</a></p>
-<p id='n378' class='stm run hide_run'><a href='#n378'>378</a></p>
-<p id='n379' class='stm run hide_run'><a href='#n379'>379</a></p>
-<p id='n380' class='pln'><a href='#n380'>380</a></p>
-<p id='n381' class='stm run hide_run'><a href='#n381'>381</a></p>
-<p id='n382' class='pln'><a href='#n382'>382</a></p>
-<p id='n383' class='stm run hide_run'><a href='#n383'>383</a></p>
-<p id='n384' class='stm run hide_run'><a href='#n384'>384</a></p>
-<p id='n385' class='stm run hide_run'><a href='#n385'>385</a></p>
-<p id='n386' class='pln'><a href='#n386'>386</a></p>
-<p id='n387' class='stm run hide_run'><a href='#n387'>387</a></p>
-<p id='n388' class='pln'><a href='#n388'>388</a></p>
-<p id='n389' class='pln'><a href='#n389'>389</a></p>
-<p id='n390' class='pln'><a href='#n390'>390</a></p>
-<p id='n391' class='pln'><a href='#n391'>391</a></p>
-<p id='n392' class='pln'><a href='#n392'>392</a></p>
-<p id='n393' class='stm run hide_run'><a href='#n393'>393</a></p>
-<p id='n394' class='stm run hide_run'><a href='#n394'>394</a></p>
-<p id='n395' class='stm run hide_run'><a href='#n395'>395</a></p>
-<p id='n396' class='stm run hide_run'><a href='#n396'>396</a></p>
-<p id='n397' class='stm run hide_run'><a href='#n397'>397</a></p>
-<p id='n398' class='stm run hide_run'><a href='#n398'>398</a></p>
-<p id='n399' class='stm run hide_run'><a href='#n399'>399</a></p>
-<p id='n400' class='pln'><a href='#n400'>400</a></p>
-<p id='n401' class='stm run hide_run'><a href='#n401'>401</a></p>
-<p id='n402' class='stm run hide_run'><a href='#n402'>402</a></p>
-<p id='n403' class='stm run hide_run'><a href='#n403'>403</a></p>
-<p id='n404' class='stm run hide_run'><a href='#n404'>404</a></p>
-<p id='n405' class='stm run hide_run'><a href='#n405'>405</a></p>
-<p id='n406' class='stm run hide_run'><a href='#n406'>406</a></p>
-<p id='n407' class='stm run hide_run'><a href='#n407'>407</a></p>
-<p id='n408' class='stm run hide_run'><a href='#n408'>408</a></p>
-<p id='n409' class='stm run hide_run'><a href='#n409'>409</a></p>
-<p id='n410' class='stm run hide_run'><a href='#n410'>410</a></p>
-<p id='n411' class='stm run hide_run'><a href='#n411'>411</a></p>
-<p id='n412' class='stm run hide_run'><a href='#n412'>412</a></p>
-<p id='n413' class='stm run hide_run'><a href='#n413'>413</a></p>
-<p id='n414' class='pln'><a href='#n414'>414</a></p>
-<p id='n415' class='stm run hide_run'><a href='#n415'>415</a></p>
-<p id='n416' class='pln'><a href='#n416'>416</a></p>
-<p id='n417' class='stm run hide_run'><a href='#n417'>417</a></p>
-<p id='n418' class='stm run hide_run'><a href='#n418'>418</a></p>
-<p id='n419' class='stm run hide_run'><a href='#n419'>419</a></p>
-<p id='n420' class='stm run hide_run'><a href='#n420'>420</a></p>
-<p id='n421' class='pln'><a href='#n421'>421</a></p>
-<p id='n422' class='stm run hide_run'><a href='#n422'>422</a></p>
-<p id='n423' class='stm run hide_run'><a href='#n423'>423</a></p>
-<p id='n424' class='pln'><a href='#n424'>424</a></p>
-<p id='n425' class='pln'><a href='#n425'>425</a></p>
-<p id='n426' class='pln'><a href='#n426'>426</a></p>
-<p id='n427' class='stm run hide_run'><a href='#n427'>427</a></p>
-<p id='n428' class='pln'><a href='#n428'>428</a></p>
-<p id='n429' class='pln'><a href='#n429'>429</a></p>
-<p id='n430' class='pln'><a href='#n430'>430</a></p>
-<p id='n431' class='pln'><a href='#n431'>431</a></p>
-<p id='n432' class='pln'><a href='#n432'>432</a></p>
-<p id='n433' class='stm run hide_run'><a href='#n433'>433</a></p>
-<p id='n434' class='stm run hide_run'><a href='#n434'>434</a></p>
-<p id='n435' class='stm run hide_run'><a href='#n435'>435</a></p>
-<p id='n436' class='pln'><a href='#n436'>436</a></p>
-<p id='n437' class='stm run hide_run'><a href='#n437'>437</a></p>
-<p id='n438' class='pln'><a href='#n438'>438</a></p>
-<p id='n439' class='stm run hide_run'><a href='#n439'>439</a></p>
-<p id='n440' class='stm run hide_run'><a href='#n440'>440</a></p>
-<p id='n441' class='pln'><a href='#n441'>441</a></p>
-<p id='n442' class='stm run hide_run'><a href='#n442'>442</a></p>
-<p id='n443' class='pln'><a href='#n443'>443</a></p>
-<p id='n444' class='stm run hide_run'><a href='#n444'>444</a></p>
-<p id='n445' class='stm run hide_run'><a href='#n445'>445</a></p>
-<p id='n446' class='stm run hide_run'><a href='#n446'>446</a></p>
-<p id='n447' class='stm run hide_run'><a href='#n447'>447</a></p>
-<p id='n448' class='stm run hide_run'><a href='#n448'>448</a></p>
-<p id='n449' class='pln'><a href='#n449'>449</a></p>
-<p id='n450' class='stm run hide_run'><a href='#n450'>450</a></p>
-<p id='n451' class='pln'><a href='#n451'>451</a></p>
-<p id='n452' class='stm run hide_run'><a href='#n452'>452</a></p>
-<p id='n453' class='stm run hide_run'><a href='#n453'>453</a></p>
-<p id='n454' class='stm run hide_run'><a href='#n454'>454</a></p>
-<p id='n455' class='stm run hide_run'><a href='#n455'>455</a></p>
-<p id='n456' class='pln'><a href='#n456'>456</a></p>
-<p id='n457' class='stm run hide_run'><a href='#n457'>457</a></p>
-<p id='n458' class='stm mis'><a href='#n458'>458</a></p>
-<p id='n459' class='pln'><a href='#n459'>459</a></p>
-<p id='n460' class='stm run hide_run'><a href='#n460'>460</a></p>
-<p id='n461' class='stm mis'><a href='#n461'>461</a></p>
-<p id='n462' class='pln'><a href='#n462'>462</a></p>
-<p id='n463' class='stm run hide_run'><a href='#n463'>463</a></p>
-<p id='n464' class='stm run hide_run'><a href='#n464'>464</a></p>
-<p id='n465' class='pln'><a href='#n465'>465</a></p>
-<p id='n466' class='stm run hide_run'><a href='#n466'>466</a></p>
-<p id='n467' class='pln'><a href='#n467'>467</a></p>
-<p id='n468' class='pln'><a href='#n468'>468</a></p>
-<p id='n469' class='pln'><a href='#n469'>469</a></p>
-<p id='n470' class='stm run hide_run'><a href='#n470'>470</a></p>
-<p id='n471' class='stm run hide_run'><a href='#n471'>471</a></p>
-<p id='n472' class='stm run hide_run'><a href='#n472'>472</a></p>
-<p id='n473' class='stm run hide_run'><a href='#n473'>473</a></p>
-<p id='n474' class='stm run hide_run'><a href='#n474'>474</a></p>
-<p id='n475' class='pln'><a href='#n475'>475</a></p>
-<p id='n476' class='stm run hide_run'><a href='#n476'>476</a></p>
-<p id='n477' class='stm run hide_run'><a href='#n477'>477</a></p>
-<p id='n478' class='pln'><a href='#n478'>478</a></p>
-<p id='n479' class='stm run hide_run'><a href='#n479'>479</a></p>
-<p id='n480' class='stm run hide_run'><a href='#n480'>480</a></p>
-<p id='n481' class='stm run hide_run'><a href='#n481'>481</a></p>
-<p id='n482' class='stm run hide_run'><a href='#n482'>482</a></p>
-<p id='n483' class='pln'><a href='#n483'>483</a></p>
-<p id='n484' class='stm run hide_run'><a href='#n484'>484</a></p>
-<p id='n485' class='pln'><a href='#n485'>485</a></p>
-<p id='n486' class='pln'><a href='#n486'>486</a></p>
-<p id='n487' class='pln'><a href='#n487'>487</a></p>
-<p id='n488' class='stm run hide_run'><a href='#n488'>488</a></p>
-<p id='n489' class='stm run hide_run'><a href='#n489'>489</a></p>
-<p id='n490' class='stm run hide_run'><a href='#n490'>490</a></p>
-<p id='n491' class='stm run hide_run'><a href='#n491'>491</a></p>
-<p id='n492' class='stm run hide_run'><a href='#n492'>492</a></p>
-<p id='n493' class='stm run hide_run'><a href='#n493'>493</a></p>
-<p id='n494' class='pln'><a href='#n494'>494</a></p>
-<p id='n495' class='stm run hide_run'><a href='#n495'>495</a></p>
-<p id='n496' class='pln'><a href='#n496'>496</a></p>
-<p id='n497' class='pln'><a href='#n497'>497</a></p>
-<p id='n498' class='pln'><a href='#n498'>498</a></p>
-<p id='n499' class='stm run hide_run'><a href='#n499'>499</a></p>
-<p id='n500' class='stm run hide_run'><a href='#n500'>500</a></p>
-<p id='n501' class='stm run hide_run'><a href='#n501'>501</a></p>
-<p id='n502' class='stm run hide_run'><a href='#n502'>502</a></p>
-<p id='n503' class='stm run hide_run'><a href='#n503'>503</a></p>
-<p id='n504' class='stm run hide_run'><a href='#n504'>504</a></p>
-<p id='n505' class='stm run hide_run'><a href='#n505'>505</a></p>
-<p id='n506' class='pln'><a href='#n506'>506</a></p>
-<p id='n507' class='pln'><a href='#n507'>507</a></p>
-<p id='n508' class='pln'><a href='#n508'>508</a></p>
-<p id='n509' class='stm run hide_run'><a href='#n509'>509</a></p>
-<p id='n510' class='stm run hide_run'><a href='#n510'>510</a></p>
-<p id='n511' class='stm run hide_run'><a href='#n511'>511</a></p>
-<p id='n512' class='stm run hide_run'><a href='#n512'>512</a></p>
-<p id='n513' class='stm run hide_run'><a href='#n513'>513</a></p>
-<p id='n514' class='stm run hide_run'><a href='#n514'>514</a></p>
-<p id='n515' class='stm run hide_run'><a href='#n515'>515</a></p>
-<p id='n516' class='stm mis'><a href='#n516'>516</a></p>
-<p id='n517' class='stm run hide_run'><a href='#n517'>517</a></p>
-<p id='n518' class='stm run hide_run'><a href='#n518'>518</a></p>
-<p id='n519' class='stm run hide_run'><a href='#n519'>519</a></p>
-<p id='n520' class='stm run hide_run'><a href='#n520'>520</a></p>
-<p id='n521' class='stm run hide_run'><a href='#n521'>521</a></p>
-<p id='n522' class='pln'><a href='#n522'>522</a></p>
-<p id='n523' class='stm run hide_run'><a href='#n523'>523</a></p>
-<p id='n524' class='stm run hide_run'><a href='#n524'>524</a></p>
-<p id='n525' class='stm run hide_run'><a href='#n525'>525</a></p>
-<p id='n526' class='stm run hide_run'><a href='#n526'>526</a></p>
-<p id='n527' class='stm run hide_run'><a href='#n527'>527</a></p>
-<p id='n528' class='stm run hide_run'><a href='#n528'>528</a></p>
-<p id='n529' class='stm run hide_run'><a href='#n529'>529</a></p>
-<p id='n530' class='pln'><a href='#n530'>530</a></p>
-<p id='n531' class='pln'><a href='#n531'>531</a></p>
-<p id='n532' class='pln'><a href='#n532'>532</a></p>
-<p id='n533' class='stm run hide_run'><a href='#n533'>533</a></p>
-<p id='n534' class='pln'><a href='#n534'>534</a></p>
-<p id='n535' class='pln'><a href='#n535'>535</a></p>
-<p id='n536' class='pln'><a href='#n536'>536</a></p>
-<p id='n537' class='pln'><a href='#n537'>537</a></p>
-<p id='n538' class='pln'><a href='#n538'>538</a></p>
-<p id='n539' class='stm run hide_run'><a href='#n539'>539</a></p>
-<p id='n540' class='stm run hide_run'><a href='#n540'>540</a></p>
-<p id='n541' class='stm run hide_run'><a href='#n541'>541</a></p>
-<p id='n542' class='stm run hide_run'><a href='#n542'>542</a></p>
-<p id='n543' class='pln'><a href='#n543'>543</a></p>
-<p id='n544' class='stm run hide_run'><a href='#n544'>544</a></p>
-<p id='n545' class='pln'><a href='#n545'>545</a></p>
-<p id='n546' class='pln'><a href='#n546'>546</a></p>
-<p id='n547' class='pln'><a href='#n547'>547</a></p>
-<p id='n548' class='pln'><a href='#n548'>548</a></p>
-<p id='n549' class='stm run hide_run'><a href='#n549'>549</a></p>
-<p id='n550' class='stm run hide_run'><a href='#n550'>550</a></p>
-<p id='n551' class='pln'><a href='#n551'>551</a></p>
-<p id='n552' class='stm run hide_run'><a href='#n552'>552</a></p>
-<p id='n553' class='pln'><a href='#n553'>553</a></p>
-<p id='n554' class='pln'><a href='#n554'>554</a></p>
-<p id='n555' class='pln'><a href='#n555'>555</a></p>
-<p id='n556' class='pln'><a href='#n556'>556</a></p>
-<p id='n557' class='pln'><a href='#n557'>557</a></p>
-<p id='n558' class='pln'><a href='#n558'>558</a></p>
-<p id='n559' class='stm run hide_run'><a href='#n559'>559</a></p>
-<p id='n560' class='stm run hide_run'><a href='#n560'>560</a></p>
-<p id='n561' class='pln'><a href='#n561'>561</a></p>
-<p id='n562' class='pln'><a href='#n562'>562</a></p>
-<p id='n563' class='pln'><a href='#n563'>563</a></p>
-<p id='n564' class='stm run hide_run'><a href='#n564'>564</a></p>
-<p id='n565' class='stm run hide_run'><a href='#n565'>565</a></p>
-<p id='n566' class='stm run hide_run'><a href='#n566'>566</a></p>
-<p id='n567' class='stm run hide_run'><a href='#n567'>567</a></p>
-<p id='n568' class='pln'><a href='#n568'>568</a></p>
-<p id='n569' class='stm run hide_run'><a href='#n569'>569</a></p>
-<p id='n570' class='stm run hide_run'><a href='#n570'>570</a></p>
-<p id='n571' class='stm run hide_run'><a href='#n571'>571</a></p>
-<p id='n572' class='stm run hide_run'><a href='#n572'>572</a></p>
-                
-            </td>
-            <td class='text' valign='top'>
-<p id='t1' class='pln'><span class='strut'> </span></p>
-<p id='t2' class='stm run hide_run'><span class='key'>import</span> <span class='nam'>weakref</span><span class='op'>,</span> <span class='nam'>sys</span><span class='strut'> </span></p>
-<p id='t3' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>rpython</span><span class='op'>.</span><span class='nam'>rlib</span><span class='op'>.</span><span class='nam'>rstrategies</span> <span class='key'>import</span> <span class='nam'>logger</span><span class='strut'> </span></p>
-<p id='t4' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>rpython</span><span class='op'>.</span><span class='nam'>rlib</span> <span class='key'>import</span> <span class='nam'>jit</span><span class='op'>,</span> <span class='nam'>objectmodel</span><span class='op'>,</span> <span class='nam'>rerased</span><span class='strut'> </span></p>
-<p id='t5' class='stm run hide_run'><span class='key'>from</span> <span class='nam'>rpython</span><span class='op'>.</span><span class='nam'>rlib</span><span class='op'>.</span><span class='nam'>objectmodel</span> <span class='key'>import</span> <span class='nam'>specialize</span><span class='strut'> </span></p>
-<p id='t6' class='pln'><span class='strut'> </span></p>
-<p id='t7' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>make_accessors</span><span class='op'>(</span><span class='nam'>strategy</span><span class='op'>=</span><span class='str'>'strategy'</span><span class='op'>,</span> <span class='nam'>storage</span><span class='op'>=</span><span class='str'>'storage'</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t8' class='pln'>    <span class='str'>"""</span><span class='strut'> </span></p>
-<p id='t9' class='pln'><span class='str'>    Instead of using this generator, the methods can be implemented manually.</span><span class='strut'> </span></p>
-<p id='t10' class='pln'><span class='str'>    A third way is to overwrite the getter/setter methods in StrategyFactory.</span><span class='strut'> </span></p>
-<p id='t11' class='pln'><span class='str'>    """</span><span class='strut'> </span></p>
-<p id='t12' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>make_getter</span><span class='op'>(</span><span class='nam'>attr</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t13' class='stm run hide_run'>        <span class='key'>def</span> <span class='nam'>getter</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span> <span class='key'>return</span> <span class='nam'>getattr</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>attr</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t14' class='stm run hide_run'>        <span class='key'>return</span> <span class='nam'>getter</span><span class='strut'> </span></p>
-<p id='t15' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>make_setter</span><span class='op'>(</span><span class='nam'>attr</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t16' class='stm run hide_run'>        <span class='key'>def</span> <span class='nam'>setter</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>val</span><span class='op'>)</span><span class='op'>:</span> <span class='nam'>setattr</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>attr</span><span class='op'>,</span> <span class='nam'>val</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t17' class='stm run hide_run'>        <span class='key'>return</span> <span class='nam'>setter</span><span class='strut'> </span></p>
-<p id='t18' class='stm run hide_run'>    <span class='nam'>classdef</span> <span class='op'>=</span> <span class='nam'>sys</span><span class='op'>.</span><span class='nam'>_getframe</span><span class='op'>(</span><span class='num'>1</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>f_locals</span><span class='strut'> </span></p>
-<p id='t19' class='stm run hide_run'>    <span class='nam'>classdef</span><span class='op'>[</span><span class='str'>'_get_strategy'</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>make_getter</span><span class='op'>(</span><span class='nam'>strategy</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t20' class='stm run hide_run'>    <span class='nam'>classdef</span><span class='op'>[</span><span class='str'>'_set_strategy'</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>make_setter</span><span class='op'>(</span><span class='nam'>strategy</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t21' class='stm run hide_run'>    <span class='nam'>classdef</span><span class='op'>[</span><span class='str'>'_get_storage'</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>make_getter</span><span class='op'>(</span><span class='nam'>storage</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t22' class='stm run hide_run'>    <span class='nam'>classdef</span><span class='op'>[</span><span class='str'>'_set_storage'</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>make_setter</span><span class='op'>(</span><span class='nam'>storage</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t23' class='pln'><span class='strut'> </span></p>
-<p id='t24' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>StrategyMetaclass</span><span class='op'>(</span><span class='nam'>type</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t25' class='pln'>    <span class='str'>"""</span><span class='strut'> </span></p>
-<p id='t26' class='pln'><span class='str'>    A metaclass is required, because we need certain attributes to be special</span><span class='strut'> </span></p>
-<p id='t27' class='pln'><span class='str'>    for every single strategy class.</span><span class='strut'> </span></p>
-<p id='t28' class='pln'><span class='str'>    """</span><span class='strut'> </span></p>
-<p id='t29' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>__new__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>,</span> <span class='nam'>bases</span><span class='op'>,</span> <span class='nam'>attrs</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t30' class='stm run hide_run'>        <span class='nam'>attrs</span><span class='op'>[</span><span class='str'>'_is_strategy'</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>False</span><span class='strut'> </span></p>
-<p id='t31' class='stm run hide_run'>        <span class='nam'>attrs</span><span class='op'>[</span><span class='str'>'_is_singleton'</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>False</span><span class='strut'> </span></p>
-<p id='t32' class='stm run hide_run'>        <span class='nam'>attrs</span><span class='op'>[</span><span class='str'>'_specializations'</span><span class='op'>]</span> <span class='op'>=</span> <span class='op'>[</span><span class='op'>]</span><span class='strut'> </span></p>
-<p id='t33' class='pln'>        <span class='com'># Not every strategy uses rerased-pairs, but they won't hurt</span><span class='strut'> </span></p>
-<p id='t34' class='stm run hide_run'>        <span class='nam'>erase</span><span class='op'>,</span> <span class='nam'>unerase</span> <span class='op'>=</span> <span class='nam'>rerased</span><span class='op'>.</span><span class='nam'>new_erasing_pair</span><span class='op'>(</span><span class='nam'>name</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t35' class='stm run hide_run'>        <span class='key'>def</span> <span class='nam'>get_storage</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>w_self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t36' class='stm run hide_run'>            <span class='nam'>erased</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>strategy_factory</span><span class='op'>(</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>get_storage</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t37' class='stm run hide_run'>            <span class='key'>return</span> <span class='nam'>unerase</span><span class='op'>(</span><span class='nam'>erased</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t38' class='stm run hide_run'>        <span class='key'>def</span> <span class='nam'>set_storage</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>storage</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t39' class='stm run hide_run'>            <span class='nam'>erased</span> <span class='op'>=</span> <span class='nam'>erase</span><span class='op'>(</span><span class='nam'>storage</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t40' class='stm run hide_run'>            <span class='nam'>self</span><span class='op'>.</span><span class='nam'>strategy_factory</span><span class='op'>(</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>set_storage</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>erased</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t41' class='stm run hide_run'>        <span class='nam'>attrs</span><span class='op'>[</span><span class='str'>'get_storage'</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>get_storage</span><span class='strut'> </span></p>
-<p id='t42' class='stm run hide_run'>        <span class='nam'>attrs</span><span class='op'>[</span><span class='str'>'set_storage'</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>set_storage</span><span class='strut'> </span></p>
-<p id='t43' class='stm run hide_run'>        <span class='key'>return</span> <span class='nam'>type</span><span class='op'>.</span><span class='nam'>__new__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>name</span><span class='op'>,</span> <span class='nam'>bases</span><span class='op'>,</span> <span class='nam'>attrs</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t44' class='pln'><span class='strut'> </span></p>
-<p id='t45' class='stm run hide_run'><span class='key'>def</span> <span class='nam'>strategy</span><span class='op'>(</span><span class='nam'>generalize</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>singleton</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t46' class='pln'>    <span class='str'>"""</span><span class='strut'> </span></p>
-<p id='t47' class='pln'><span class='str'>    Strategy classes must be decorated with this.</span><span class='strut'> </span></p>
-<p id='t48' class='pln'><span class='str'>    generalize is a list of other strategies, that can be switched to from the decorated strategy.</span><span class='strut'> </span></p>
-<p id='t49' class='pln'><span class='str'>    If the singleton flag is set to False, new strategy instances will be created,</span><span class='strut'> </span></p>
-<p id='t50' class='pln'><span class='str'>    instead of always reusing the singleton object.</span><span class='strut'> </span></p>
-<p id='t51' class='pln'><span class='str'>    """</span><span class='strut'> </span></p>
-<p id='t52' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>decorator</span><span class='op'>(</span><span class='nam'>strategy_class</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t53' class='pln'>        <span class='com'># Patch strategy class: Add generalized_strategy_for and mark as strategy class.</span><span class='strut'> </span></p>
-<p id='t54' class='stm run hide_run'>        <span class='key'>if</span> <span class='nam'>generalize</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t55' class='stm run hide_run'>            <span class='op'>@</span><span class='nam'>jit</span><span class='op'>.</span><span class='nam'>unroll_safe</span><span class='strut'> </span></p>
-<p id='t56' class='pln'>            <span class='key'>def</span> <span class='nam'>generalized_strategy_for</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>value</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t57' class='pln'>                <span class='com'># TODO - optimize this method</span><span class='strut'> </span></p>
-<p id='t58' class='stm run hide_run'>                <span class='key'>for</span> <span class='nam'>strategy</span> <span class='key'>in</span> <span class='nam'>generalize</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t59' class='stm run hide_run'>                    <span class='key'>if</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>strategy_factory</span><span class='op'>(</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>strategy_singleton_instance</span><span class='op'>(</span><span class='nam'>strategy</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>_check_can_handle</span><span class='op'>(</span><span class='nam'>value</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t60' class='stm run hide_run'>                        <span class='key'>return</span> <span class='nam'>strategy</span><span class='strut'> </span></p>
-<p id='t61' class='stm mis'>                <span class='key'>raise</span> <span class='nam'>Exception</span><span class='op'>(</span><span class='str'>"Could not find generalized strategy for %s coming from %s"</span> <span class='op'>%</span> <span class='op'>(</span><span class='nam'>value</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>)</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t62' class='stm run hide_run'>            <span class='nam'>strategy_class</span><span class='op'>.</span><span class='nam'>generalized_strategy_for</span> <span class='op'>=</span> <span class='nam'>generalized_strategy_for</span><span class='strut'> </span></p>
-<p id='t63' class='stm run hide_run'>            <span class='key'>for</span> <span class='nam'>generalized</span> <span class='key'>in</span> <span class='nam'>generalize</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t64' class='stm run hide_run'>                <span class='nam'>generalized</span><span class='op'>.</span><span class='nam'>_specializations</span><span class='op'>.</span><span class='nam'>append</span><span class='op'>(</span><span class='nam'>strategy_class</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t65' class='stm run hide_run'>        <span class='nam'>strategy_class</span><span class='op'>.</span><span class='nam'>_is_strategy</span> <span class='op'>=</span> <span class='nam'>True</span><span class='strut'> </span></p>
-<p id='t66' class='stm run hide_run'>        <span class='nam'>strategy_class</span><span class='op'>.</span><span class='nam'>_generalizations</span> <span class='op'>=</span> <span class='nam'>generalize</span><span class='strut'> </span></p>
-<p id='t67' class='stm run hide_run'>        <span class='nam'>strategy_class</span><span class='op'>.</span><span class='nam'>_is_singleton</span> <span class='op'>=</span> <span class='nam'>singleton</span><span class='strut'> </span></p>
-<p id='t68' class='stm run hide_run'>        <span class='key'>return</span> <span class='nam'>strategy_class</span><span class='strut'> </span></p>
-<p id='t69' class='stm run hide_run'>    <span class='key'>return</span> <span class='nam'>decorator</span><span class='strut'> </span></p>
-<p id='t70' class='pln'><span class='strut'> </span></p>
-<p id='t71' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>StrategyFactory</span><span class='op'>(</span><span class='nam'>object</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t72' class='stm run hide_run'>    <span class='nam'>_immutable_fields_</span> <span class='op'>=</span> <span class='op'>[</span><span class='str'>"strategies[*]"</span><span class='op'>,</span> <span class='str'>"logger"</span><span class='op'>,</span> <span class='str'>"strategy_singleton_field"</span><span class='op'>]</span><span class='strut'> </span></p>
-<p id='t73' class='stm run hide_run'>    <span class='nam'>factory_instance_counter</span> <span class='op'>=</span> <span class='num'>0</span><span class='strut'> </span></p>
-<p id='t74' class='pln'><span class='strut'> </span></p>
-<p id='t75' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>__init__</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>root_class</span><span class='op'>,</span> <span class='nam'>all_strategy_classes</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t76' class='stm run hide_run'>        <span class='key'>if</span> <span class='nam'>all_strategy_classes</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t77' class='stm run hide_run'>            <span class='nam'>all_strategy_classes</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_collect_subclasses</span><span class='op'>(</span><span class='nam'>root_class</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t78' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>strategies</span> <span class='op'>=</span> <span class='op'>[</span><span class='op'>]</span><span class='strut'> </span></p>
-<p id='t79' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>logger</span> <span class='op'>=</span> <span class='nam'>logger</span><span class='op'>.</span><span class='nam'>Logger</span><span class='op'>(</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t80' class='pln'><span class='strut'> </span></p>
-<p id='t81' class='pln'>        <span class='com'># This is to avoid confusion between multiple factories existing simultaneously (e.g. in tests)</span><span class='strut'> </span></p>
-<p id='t82' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>strategy_singleton_field</span> <span class='op'>=</span> <span class='str'>"__singleton_%i"</span> <span class='op'>%</span> <span class='nam'>StrategyFactory</span><span class='op'>.</span><span class='nam'>factory_instance_counter</span><span class='strut'> </span></p>
-<p id='t83' class='stm run hide_run'>        <span class='nam'>StrategyFactory</span><span class='op'>.</span><span class='nam'>factory_instance_counter</span> <span class='op'>+=</span> <span class='num'>1</span><span class='strut'> </span></p>
-<p id='t84' class='pln'><span class='strut'> </span></p>
-<p id='t85' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_create_strategy_instances</span><span class='op'>(</span><span class='nam'>root_class</span><span class='op'>,</span> <span class='nam'>all_strategy_classes</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t86' class='pln'><span class='strut'> </span></p>
-<p id='t87' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>_create_strategy_instances</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>root_class</span><span class='op'>,</span> <span class='nam'>all_strategy_classes</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t88' class='stm run hide_run'>        <span class='key'>for</span> <span class='nam'>strategy_class</span> <span class='key'>in</span> <span class='nam'>all_strategy_classes</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t89' class='stm run hide_run'>            <span class='key'>if</span> <span class='nam'>strategy_class</span><span class='op'>.</span><span class='nam'>_is_strategy</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t90' class='stm run hide_run'>                <span class='nam'>setattr</span><span class='op'>(</span><span class='nam'>strategy_class</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>strategy_singleton_field</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>instantiate_strategy</span><span class='op'>(</span><span class='nam'>strategy_class</span><span class='op'>)</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t91' class='stm run hide_run'>                <span class='nam'>self</span><span class='op'>.</span><span class='nam'>strategies</span><span class='op'>.</span><span class='nam'>append</span><span class='op'>(</span><span class='nam'>strategy_class</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t92' class='stm run hide_run'>            <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_patch_strategy_class</span><span class='op'>(</span><span class='nam'>strategy_class</span><span class='op'>,</span> <span class='nam'>root_class</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t93' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_order_strategies</span><span class='op'>(</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t94' class='pln'><span class='strut'> </span></p>
-<p id='t95' class='pln'>    <span class='com'># =============================</span><span class='strut'> </span></p>
-<p id='t96' class='pln'>    <span class='com'># API methods</span><span class='strut'> </span></p>
-<p id='t97' class='pln'>    <span class='com'># =============================</span><span class='strut'> </span></p>
-<p id='t98' class='pln'><span class='strut'> </span></p>
-<p id='t99' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>switch_strategy</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>new_strategy_type</span><span class='op'>,</span> <span class='nam'>new_element</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t100' class='pln'>        <span class='str'>"""</span><span class='strut'> </span></p>
-<p id='t101' class='pln'><span class='str'>        Switch the strategy of w_self to the new type.</span><span class='strut'> </span></p>
-<p id='t102' class='pln'><span class='str'>        new_element can be given as as hint, purely for logging purposes.</span><span class='strut'> </span></p>
-<p id='t103' class='pln'><span class='str'>        It should be the object that was added to w_self, causing the strategy switch.</span><span class='strut'> </span></p>
-<p id='t104' class='pln'><span class='str'>        """</span><span class='strut'> </span></p>
-<p id='t105' class='stm run hide_run'>        <span class='nam'>old_strategy</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>get_strategy</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t106' class='stm run hide_run'>        <span class='key'>if</span> <span class='nam'>new_strategy_type</span><span class='op'>.</span><span class='nam'>_is_singleton</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t107' class='stm run hide_run'>            <span class='nam'>new_strategy</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>strategy_singleton_instance</span><span class='op'>(</span><span class='nam'>new_strategy_type</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t108' class='pln'>        <span class='key'>else</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t109' class='stm run hide_run'>            <span class='nam'>size</span> <span class='op'>=</span> <span class='nam'>old_strategy</span><span class='op'>.</span><span class='nam'>size</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t110' class='stm run hide_run'>            <span class='nam'>new_strategy</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>instantiate_strategy</span><span class='op'>(</span><span class='nam'>new_strategy_type</span><span class='op'>,</span> <span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>size</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t111' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>set_strategy</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>new_strategy</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t112' class='stm run hide_run'>        <span class='nam'>old_strategy</span><span class='op'>.</span><span class='nam'>_convert_storage_to</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>new_strategy</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t113' class='stm run hide_run'>        <span class='nam'>new_strategy</span><span class='op'>.</span><span class='nam'>strategy_switched</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t114' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>log</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>new_strategy</span><span class='op'>,</span> <span class='nam'>old_strategy</span><span class='op'>,</span> <span class='nam'>new_element</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t115' class='stm run hide_run'>        <span class='key'>return</span> <span class='nam'>new_strategy</span><span class='strut'> </span></p>
-<p id='t116' class='pln'><span class='strut'> </span></p>
-<p id='t117' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>set_initial_strategy</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>strategy_type</span><span class='op'>,</span> <span class='nam'>size</span><span class='op'>,</span> <span class='nam'>elements</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t118' class='pln'>        <span class='str'>"""</span><span class='strut'> </span></p>
-<p id='t119' class='pln'><span class='str'>        Initialize the strategy and storage fields of w_self.</span><span class='strut'> </span></p>
-<p id='t120' class='pln'><span class='str'>        This must be called before switch_strategy or any strategy method can be used.</span><span class='strut'> </span></p>
-<p id='t121' class='pln'><span class='str'>        elements is an optional list of values initially stored in w_self.</span><span class='strut'> </span></p>
-<p id='t122' class='pln'><span class='str'>        If given, then len(elements) == size must hold.</span><span class='strut'> </span></p>
-<p id='t123' class='pln'><span class='str'>        """</span><span class='strut'> </span></p>
-<p id='t124' class='stm run hide_run'>        <span class='key'>assert</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>get_strategy</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>)</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>,</span> <span class='str'>"Strategy should not be initialized yet!"</span><span class='strut'> </span></p>
-<p id='t125' class='stm run hide_run'>        <span class='key'>if</span> <span class='nam'>strategy_type</span><span class='op'>.</span><span class='nam'>_is_singleton</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t126' class='stm run hide_run'>            <span class='nam'>strategy</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>strategy_singleton_instance</span><span class='op'>(</span><span class='nam'>strategy_type</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t127' class='pln'>        <span class='key'>else</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t128' class='stm run hide_run'>            <span class='nam'>strategy</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>instantiate_strategy</span><span class='op'>(</span><span class='nam'>strategy_type</span><span class='op'>,</span> <span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>size</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t129' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>set_strategy</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>strategy</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t130' class='stm run hide_run'>        <span class='nam'>strategy</span><span class='op'>.</span><span class='nam'>_initialize_storage</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>size</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t131' class='stm run hide_run'>        <span class='nam'>element</span> <span class='op'>=</span> <span class='nam'>None</span><span class='strut'> </span></p>
-<p id='t132' class='stm run hide_run'>        <span class='key'>if</span> <span class='nam'>elements</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t133' class='stm run hide_run'>            <span class='nam'>strategy</span><span class='op'>.</span><span class='nam'>store_all</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>elements</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t134' class='stm run hide_run'>            <span class='key'>if</span> <span class='nam'>len</span><span class='op'>(</span><span class='nam'>elements</span><span class='op'>)</span> <span class='op'>></span> <span class='num'>0</span><span class='op'>:</span> <span class='nam'>element</span> <span class='op'>=</span> <span class='nam'>elements</span><span class='op'>[</span><span class='num'>0</span><span class='op'>]</span><span class='strut'> </span></p>
-<p id='t135' class='stm run hide_run'>        <span class='nam'>strategy</span><span class='op'>.</span><span class='nam'>strategy_switched</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t136' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>log</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>strategy</span><span class='op'>,</span> <span class='nam'>None</span><span class='op'>,</span> <span class='nam'>element</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t137' class='stm run hide_run'>        <span class='key'>return</span> <span class='nam'>strategy</span><span class='strut'> </span></p>
-<p id='t138' class='pln'><span class='strut'> </span></p>
-<p id='t139' class='stm run hide_run'>    <span class='op'>@</span><span class='nam'>jit</span><span class='op'>.</span><span class='nam'>unroll_safe</span><span class='strut'> </span></p>
-<p id='t140' class='pln'>    <span class='key'>def</span> <span class='nam'>strategy_type_for</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>objects</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t141' class='pln'>        <span class='str'>"""</span><span class='strut'> </span></p>
-<p id='t142' class='pln'><span class='str'>        Return the best-fitting strategy to hold all given objects.</span><span class='strut'> </span></p>
-<p id='t143' class='pln'><span class='str'>        """</span><span class='strut'> </span></p>
-<p id='t144' class='stm run hide_run'>        <span class='nam'>specialized_strategies</span> <span class='op'>=</span> <span class='nam'>len</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>strategies</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t145' class='stm run hide_run'>        <span class='nam'>can_handle</span> <span class='op'>=</span> <span class='op'>[</span><span class='nam'>True</span><span class='op'>]</span> <span class='op'>*</span> <span class='nam'>specialized_strategies</span><span class='strut'> </span></p>
-<p id='t146' class='stm run hide_run'>        <span class='key'>for</span> <span class='nam'>obj</span> <span class='key'>in</span> <span class='nam'>objects</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t147' class='stm run hide_run'>            <span class='key'>if</span> <span class='nam'>specialized_strategies</span> <span class='op'><=</span> <span class='num'>1</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t148' class='stm run hide_run'>                <span class='key'>break</span><span class='strut'> </span></p>
-<p id='t149' class='stm run hide_run'>            <span class='key'>for</span> <span class='nam'>i</span><span class='op'>,</span> <span class='nam'>strategy</span> <span class='key'>in</span> <span class='nam'>enumerate</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>strategies</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t150' class='stm run hide_run'>                <span class='key'>if</span> <span class='nam'>can_handle</span><span class='op'>[</span><span class='nam'>i</span><span class='op'>]</span> <span class='key'>and</span> <span class='key'>not</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>strategy_singleton_instance</span><span class='op'>(</span><span class='nam'>strategy</span><span class='op'>)</span><span class='op'>.</span><span class='nam'>_check_can_handle</span><span class='op'>(</span><span class='nam'>obj</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t151' class='stm run hide_run'>                    <span class='nam'>can_handle</span><span class='op'>[</span><span class='nam'>i</span><span class='op'>]</span> <span class='op'>=</span> <span class='nam'>False</span><span class='strut'> </span></p>
-<p id='t152' class='stm run hide_run'>                    <span class='nam'>specialized_strategies</span> <span class='op'>-=</span> <span class='num'>1</span><span class='strut'> </span></p>
-<p id='t153' class='stm run hide_run'>        <span class='key'>for</span> <span class='nam'>i</span><span class='op'>,</span> <span class='nam'>strategy_type</span> <span class='key'>in</span> <span class='nam'>enumerate</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>strategies</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t154' class='stm run hide_run'>            <span class='key'>if</span> <span class='nam'>can_handle</span><span class='op'>[</span><span class='nam'>i</span><span class='op'>]</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t155' class='stm run hide_run'>                <span class='key'>return</span> <span class='nam'>strategy_type</span><span class='strut'> </span></p>
-<p id='t156' class='stm run hide_run'>        <span class='key'>raise</span> <span class='nam'>Exception</span><span class='op'>(</span><span class='str'>"Could not find strategy to handle: %s"</span> <span class='op'>%</span> <span class='nam'>objects</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t157' class='pln'><span class='strut'> </span></p>
-<p id='t158' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>decorate_strategies</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>transitions</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t159' class='pln'>        <span class='str'>"""</span><span class='strut'> </span></p>
-<p id='t160' class='pln'><span class='str'>        As an alternative to decorating all strategies with @strategy,</span><span class='strut'> </span></p>
-<p id='t161' class='pln'><span class='str'>        invoke this in the constructor of your StrategyFactory subclass, before</span><span class='strut'> </span></p>
-<p id='t162' class='pln'><span class='str'>        calling __init__. transitions is a dict mapping all strategy classes to</span><span class='strut'> </span></p>
-<p id='t163' class='pln'><span class='str'>        their 'generalize' list parameter (see @strategy decorator).</span><span class='strut'> </span></p>
-<p id='t164' class='pln'><span class='str'>        """</span><span class='strut'> </span></p>
-<p id='t165' class='pln'>        <span class='str'>"NOT_RPYTHON"</span><span class='strut'> </span></p>
-<p id='t166' class='stm run hide_run'>        <span class='key'>for</span> <span class='nam'>strategy_class</span><span class='op'>,</span> <span class='nam'>generalized</span> <span class='key'>in</span> <span class='nam'>transitions</span><span class='op'>.</span><span class='nam'>items</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t167' class='stm run hide_run'>            <span class='nam'>strategy</span><span class='op'>(</span><span class='nam'>generalized</span><span class='op'>)</span><span class='op'>(</span><span class='nam'>strategy_class</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t168' class='pln'><span class='strut'> </span></p>
-<p id='t169' class='pln'>    <span class='com'># =============================</span><span class='strut'> </span></p>
-<p id='t170' class='pln'>    <span class='com'># The following methods can be overwritten to customize certain aspects of the factory.</span><span class='strut'> </span></p>
-<p id='t171' class='pln'>    <span class='com'># =============================</span><span class='strut'> </span></p>
-<p id='t172' class='pln'><span class='strut'> </span></p>
-<p id='t173' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>instantiate_strategy</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>strategy_type</span><span class='op'>,</span> <span class='nam'>w_self</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>initial_size</span><span class='op'>=</span><span class='num'>0</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t174' class='pln'>        <span class='str'>"""</span><span class='strut'> </span></p>
-<p id='t175' class='pln'><span class='str'>        Return a functional instance of strategy_type.</span><span class='strut'> </span></p>
-<p id='t176' class='pln'><span class='str'>        Overwrite this if you need a non-default constructor.</span><span class='strut'> </span></p>
-<p id='t177' class='pln'><span class='str'>        The two additional parameters should be ignored for singleton-strategies.</span><span class='strut'> </span></p>
-<p id='t178' class='pln'><span class='str'>        """</span><span class='strut'> </span></p>
-<p id='t179' class='stm mis'>        <span class='key'>return</span> <span class='nam'>strategy_type</span><span class='op'>(</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t180' class='pln'><span class='strut'> </span></p>
-<p id='t181' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>log</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>new_strategy</span><span class='op'>,</span> <span class='nam'>old_strategy</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>,</span> <span class='nam'>new_element</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t182' class='pln'>        <span class='str'>"""</span><span class='strut'> </span></p>
-<p id='t183' class='pln'><span class='str'>        This can be overwritten into a more appropriate call to self.logger.log</span><span class='strut'> </span></p>
-<p id='t184' class='pln'><span class='str'>        """</span><span class='strut'> </span></p>
-<p id='t185' class='stm run hide_run'>        <span class='key'>if</span> <span class='key'>not</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>logger</span><span class='op'>.</span><span class='nam'>active</span><span class='op'>:</span> <span class='key'>return</span><span class='strut'> </span></p>
-<p id='t186' class='stm run hide_run'>        <span class='nam'>new_strategy_str</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>log_string_for_object</span><span class='op'>(</span><span class='nam'>new_strategy</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t187' class='stm run hide_run'>        <span class='nam'>old_strategy_str</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>log_string_for_object</span><span class='op'>(</span><span class='nam'>old_strategy</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t188' class='stm run hide_run'>        <span class='nam'>element_typename</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>log_string_for_object</span><span class='op'>(</span><span class='nam'>new_element</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t189' class='stm run hide_run'>        <span class='nam'>size</span> <span class='op'>=</span> <span class='nam'>new_strategy</span><span class='op'>.</span><span class='nam'>size</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t190' class='stm run hide_run'>        <span class='nam'>typename</span> <span class='op'>=</span> <span class='str'>""</span><span class='strut'> </span></p>
-<p id='t191' class='stm run hide_run'>        <span class='nam'>cause</span> <span class='op'>=</span> <span class='str'>"Switched"</span> <span class='key'>if</span> <span class='nam'>old_strategy</span> <span class='key'>else</span> <span class='str'>"Created"</span><span class='strut'> </span></p>
-<p id='t192' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>logger</span><span class='op'>.</span><span class='nam'>log</span><span class='op'>(</span><span class='nam'>new_strategy_str</span><span class='op'>,</span> <span class='nam'>size</span><span class='op'>,</span> <span class='nam'>cause</span><span class='op'>,</span> <span class='nam'>old_strategy_str</span><span class='op'>,</span> <span class='nam'>typename</span><span class='op'>,</span> <span class='nam'>element_typename</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t193' class='pln'><span class='strut'> </span></p>
-<p id='t194' class='stm run hide_run'>    <span class='op'>@</span><span class='nam'>specialize</span><span class='op'>.</span><span class='nam'>call_location</span><span class='op'>(</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t195' class='pln'>    <span class='key'>def</span> <span class='nam'>log_string_for_object</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>obj</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t196' class='pln'>        <span class='str'>"""</span><span class='strut'> </span></p>
-<p id='t197' class='pln'><span class='str'>        This can be overwritten instead of the entire log() method.</span><span class='strut'> </span></p>
-<p id='t198' class='pln'><span class='str'>        Keep the specialize-annotation in order to handle different kinds of objects here.</span><span class='strut'> </span></p>
-<p id='t199' class='pln'><span class='str'>        """</span><span class='strut'> </span></p>
-<p id='t200' class='stm run hide_run'>        <span class='key'>return</span> <span class='nam'>obj</span><span class='op'>.</span><span class='nam'>__class__</span><span class='op'>.</span><span class='nam'>__name__</span> <span class='key'>if</span> <span class='nam'>obj</span> <span class='key'>else</span> <span class='str'>""</span><span class='strut'> </span></p>
-<p id='t201' class='pln'><span class='strut'> </span></p>
-<p id='t202' class='pln'>    <span class='com'># These storage accessors are specialized because the storage field is </span><span class='strut'> </span></p>
-<p id='t203' class='pln'>    <span class='com'># populated by erased-objects which seem to be incompatible sometimes.</span><span class='strut'> </span></p>
-<p id='t204' class='stm run hide_run'>    <span class='op'>@</span><span class='nam'>specialize</span><span class='op'>.</span><span class='nam'>call_location</span><span class='op'>(</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t205' class='pln'>    <span class='key'>def</span> <span class='nam'>get_storage</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>obj</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t206' class='stm run hide_run'>        <span class='key'>return</span> <span class='nam'>obj</span><span class='op'>.</span><span class='nam'>_get_storage</span><span class='op'>(</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t207' class='stm run hide_run'>    <span class='op'>@</span><span class='nam'>specialize</span><span class='op'>.</span><span class='nam'>call_location</span><span class='op'>(</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t208' class='pln'>    <span class='key'>def</span> <span class='nam'>set_storage</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>obj</span><span class='op'>,</span> <span class='nam'>val</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t209' class='stm run hide_run'>        <span class='key'>return</span> <span class='nam'>obj</span><span class='op'>.</span><span class='nam'>_set_storage</span><span class='op'>(</span><span class='nam'>val</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t210' class='pln'><span class='strut'> </span></p>
-<p id='t211' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>get_strategy</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>obj</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t212' class='stm run hide_run'>        <span class='key'>return</span> <span class='nam'>obj</span><span class='op'>.</span><span class='nam'>_get_strategy</span><span class='op'>(</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t213' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>set_strategy</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>obj</span><span class='op'>,</span> <span class='nam'>val</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t214' class='stm run hide_run'>        <span class='key'>return</span> <span class='nam'>obj</span><span class='op'>.</span><span class='nam'>_set_strategy</span><span class='op'>(</span><span class='nam'>val</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t215' class='pln'><span class='strut'> </span></p>
-<p id='t216' class='pln'>    <span class='com'># =============================</span><span class='strut'> </span></p>
-<p id='t217' class='pln'>    <span class='com'># Internal methods</span><span class='strut'> </span></p>
-<p id='t218' class='pln'>    <span class='com'># =============================</span><span class='strut'> </span></p>
-<p id='t219' class='pln'><span class='strut'> </span></p>
-<p id='t220' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>_patch_strategy_class</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>strategy_class</span><span class='op'>,</span> <span class='nam'>root_class</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t221' class='pln'>        <span class='str'>"NOT_RPYTHON"</span><span class='strut'> </span></p>
-<p id='t222' class='pln'>        <span class='com'># Patch root class: Add default handler for visitor</span><span class='strut'> </span></p>
-<p id='t223' class='stm run hide_run'>        <span class='key'>def</span> <span class='nam'>_convert_storage_from_OTHER</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>previous_strategy</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t224' class='stm run hide_run'>            <span class='nam'>self</span><span class='op'>.</span><span class='nam'>_convert_storage_from</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>previous_strategy</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t225' class='stm run hide_run'>        <span class='nam'>funcname</span> <span class='op'>=</span> <span class='str'>"_convert_storage_from_"</span> <span class='op'>+</span> <span class='nam'>strategy_class</span><span class='op'>.</span><span class='nam'>__name__</span><span class='strut'> </span></p>
-<p id='t226' class='stm run hide_run'>        <span class='nam'>_convert_storage_from_OTHER</span><span class='op'>.</span><span class='nam'>func_name</span> <span class='op'>=</span> <span class='nam'>funcname</span><span class='strut'> </span></p>
-<p id='t227' class='stm run hide_run'>        <span class='nam'>setattr</span><span class='op'>(</span><span class='nam'>root_class</span><span class='op'>,</span> <span class='nam'>funcname</span><span class='op'>,</span> <span class='nam'>_convert_storage_from_OTHER</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t228' class='pln'><span class='strut'> </span></p>
-<p id='t229' class='pln'>        <span class='com'># Patch strategy class: Add polymorphic visitor function</span><span class='strut'> </span></p>
-<p id='t230' class='stm run hide_run'>        <span class='key'>def</span> <span class='nam'>_convert_storage_to</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>new_strategy</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t231' class='stm run hide_run'>            <span class='nam'>getattr</span><span class='op'>(</span><span class='nam'>new_strategy</span><span class='op'>,</span> <span class='nam'>funcname</span><span class='op'>)</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t232' class='stm run hide_run'>        <span class='nam'>strategy_class</span><span class='op'>.</span><span class='nam'>_convert_storage_to</span> <span class='op'>=</span> <span class='nam'>_convert_storage_to</span><span class='strut'> </span></p>
-<p id='t233' class='pln'><span class='strut'> </span></p>
-<p id='t234' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>_collect_subclasses</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>cls</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t235' class='pln'>        <span class='str'>"NOT_RPYTHON"</span><span class='strut'> </span></p>
-<p id='t236' class='stm run hide_run'>        <span class='nam'>subclasses</span> <span class='op'>=</span> <span class='op'>[</span><span class='op'>]</span><span class='strut'> </span></p>
-<p id='t237' class='stm run hide_run'>        <span class='key'>for</span> <span class='nam'>subcls</span> <span class='key'>in</span> <span class='nam'>cls</span><span class='op'>.</span><span class='nam'>__subclasses__</span><span class='op'>(</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t238' class='stm run hide_run'>            <span class='nam'>subclasses</span><span class='op'>.</span><span class='nam'>append</span><span class='op'>(</span><span class='nam'>subcls</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t239' class='stm run hide_run'>            <span class='nam'>subclasses</span><span class='op'>.</span><span class='nam'>extend</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>.</span><span class='nam'>_collect_subclasses</span><span class='op'>(</span><span class='nam'>subcls</span><span class='op'>)</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t240' class='stm run hide_run'>        <span class='key'>return</span> <span class='nam'>subclasses</span><span class='strut'> </span></p>
-<p id='t241' class='pln'><span class='strut'> </span></p>
-<p id='t242' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>_order_strategies</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t243' class='pln'>        <span class='str'>"NOT_RPYTHON"</span><span class='strut'> </span></p>
-<p id='t244' class='stm run hide_run'>        <span class='key'>def</span> <span class='nam'>get_generalization_depth</span><span class='op'>(</span><span class='nam'>strategy</span><span class='op'>,</span> <span class='nam'>visited</span><span class='op'>=</span><span class='nam'>None</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t245' class='stm run hide_run'>            <span class='key'>if</span> <span class='nam'>visited</span> <span class='key'>is</span> <span class='nam'>None</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t246' class='stm run hide_run'>                <span class='nam'>visited</span> <span class='op'>=</span> <span class='nam'>set</span><span class='op'>(</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t247' class='stm run hide_run'>            <span class='key'>if</span> <span class='nam'>strategy</span><span class='op'>.</span><span class='nam'>_generalizations</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t248' class='stm run hide_run'>                <span class='key'>if</span> <span class='nam'>strategy</span> <span class='key'>in</span> <span class='nam'>visited</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t249' class='stm mis'>                    <span class='key'>raise</span> <span class='nam'>Exception</span><span class='op'>(</span><span class='str'>"Cycle in generalization-tree of %s"</span> <span class='op'>%</span> <span class='nam'>strategy</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t250' class='stm run hide_run'>                <span class='nam'>visited</span><span class='op'>.</span><span class='nam'>add</span><span class='op'>(</span><span class='nam'>strategy</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t251' class='stm run hide_run'>                <span class='nam'>depth</span> <span class='op'>=</span> <span class='num'>0</span><span class='strut'> </span></p>
-<p id='t252' class='stm run hide_run'>                <span class='key'>for</span> <span class='nam'>generalization</span> <span class='key'>in</span> <span class='nam'>strategy</span><span class='op'>.</span><span class='nam'>_generalizations</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t253' class='stm run hide_run'>                    <span class='nam'>other_depth</span> <span class='op'>=</span> <span class='nam'>get_generalization_depth</span><span class='op'>(</span><span class='nam'>generalization</span><span class='op'>,</span> <span class='nam'>set</span><span class='op'>(</span><span class='nam'>visited</span><span class='op'>)</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t254' class='stm run hide_run'>                    <span class='nam'>depth</span> <span class='op'>=</span> <span class='nam'>max</span><span class='op'>(</span><span class='nam'>depth</span><span class='op'>,</span> <span class='nam'>other_depth</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t255' class='stm run hide_run'>                <span class='key'>return</span> <span class='nam'>depth</span> <span class='op'>+</span> <span class='num'>1</span><span class='strut'> </span></p>
-<p id='t256' class='pln'>            <span class='key'>else</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t257' class='stm run hide_run'>                <span class='key'>return</span> <span class='num'>0</span><span class='strut'> </span></p>
-<p id='t258' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>strategies</span><span class='op'>.</span><span class='nam'>sort</span><span class='op'>(</span><span class='nam'>key</span><span class='op'>=</span><span class='nam'>get_generalization_depth</span><span class='op'>,</span> <span class='nam'>reverse</span><span class='op'>=</span><span class='nam'>True</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t259' class='pln'><span class='strut'> </span></p>
-<p id='t260' class='stm run hide_run'>    <span class='op'>@</span><span class='nam'>jit</span><span class='op'>.</span><span class='nam'>elidable</span><span class='strut'> </span></p>
-<p id='t261' class='pln'>    <span class='key'>def</span> <span class='nam'>strategy_singleton_instance</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>strategy_class</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t262' class='stm run hide_run'>        <span class='key'>return</span> <span class='nam'>getattr</span><span class='op'>(</span><span class='nam'>strategy_class</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>strategy_singleton_field</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t263' class='pln'><span class='strut'> </span></p>
-<p id='t264' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>_freeze_</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t265' class='pln'>        <span class='com'># Instance will be frozen at compile time, making accesses constant.</span><span class='strut'> </span></p>
-<p id='t266' class='pln'>        <span class='com'># The constructor does meta stuff which is not possible after translation.</span><span class='strut'> </span></p>
-<p id='t267' class='stm mis'>        <span class='key'>return</span> <span class='nam'>True</span><span class='strut'> </span></p>
-<p id='t268' class='pln'><span class='strut'> </span></p>
-<p id='t269' class='stm run hide_run'><span class='key'>class</span> <span class='nam'>AbstractStrategy</span><span class='op'>(</span><span class='nam'>object</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t270' class='pln'>    <span class='str'>"""</span><span class='strut'> </span></p>
-<p id='t271' class='pln'><span class='str'>    == Required:</span><span class='strut'> </span></p>
-<p id='t272' class='pln'><span class='str'>    strategy_factory(self) - Access to StorageFactory</span><span class='strut'> </span></p>
-<p id='t273' class='pln'><span class='str'>    """</span><span class='strut'> </span></p>
-<p id='t274' class='pln'><span class='strut'> </span></p>
-<p id='t275' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>strategy_switched</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>w_self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t276' class='pln'>        <span class='com'># Overwrite this method for a hook whenever the strategy</span><span class='strut'> </span></p>
-<p id='t277' class='pln'>        <span class='com'># of w_self was switched to self.</span><span class='strut'> </span></p>
-<p id='t278' class='stm run hide_run'>        <span class='key'>pass</span><span class='strut'> </span></p>
-<p id='t279' class='pln'><span class='strut'> </span></p>
-<p id='t280' class='pln'>    <span class='com'># Main Fixedsize API</span><span class='strut'> </span></p>
-<p id='t281' class='pln'><span class='strut'> </span></p>
-<p id='t282' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>store</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>index0</span><span class='op'>,</span> <span class='nam'>value</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t283' class='stm mis'>        <span class='key'>raise</span> <span class='nam'>NotImplementedError</span><span class='op'>(</span><span class='str'>"Abstract method"</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t284' class='pln'><span class='strut'> </span></p>
-<p id='t285' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>fetch</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>index0</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t286' class='stm mis'>        <span class='key'>raise</span> <span class='nam'>NotImplementedError</span><span class='op'>(</span><span class='str'>"Abstract method"</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t287' class='pln'><span class='strut'> </span></p>
-<p id='t288' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>size</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>w_self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t289' class='stm mis'>        <span class='key'>raise</span> <span class='nam'>NotImplementedError</span><span class='op'>(</span><span class='str'>"Abstract method"</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t290' class='pln'><span class='strut'> </span></p>
-<p id='t291' class='pln'>    <span class='com'># Fixedsize utility methods</span><span class='strut'> </span></p>
-<p id='t292' class='pln'><span class='strut'> </span></p>
-<p id='t293' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>slice</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>start</span><span class='op'>,</span> <span class='nam'>end</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t294' class='stm run hide_run'>        <span class='key'>return</span> <span class='op'>[</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>fetch</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>i</span><span class='op'>)</span> <span class='key'>for</span> <span class='nam'>i</span> <span class='key'>in</span> <span class='nam'>range</span><span class='op'>(</span><span class='nam'>start</span><span class='op'>,</span> <span class='nam'>end</span><span class='op'>)</span><span class='op'>]</span><span class='strut'> </span></p>
-<p id='t295' class='pln'><span class='strut'> </span></p>
-<p id='t296' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>fetch_all</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>w_self</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t297' class='stm run hide_run'>        <span class='key'>return</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>slice</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>,</span> <span class='num'>0</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>size</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>)</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t298' class='pln'><span class='strut'> </span></p>
-<p id='t299' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>store_all</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>elements</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t300' class='stm run hide_run'>        <span class='key'>for</span> <span class='nam'>i</span><span class='op'>,</span> <span class='nam'>e</span> <span class='key'>in</span> <span class='nam'>enumerate</span><span class='op'>(</span><span class='nam'>elements</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t301' class='stm run hide_run'>            <span class='nam'>self</span><span class='op'>.</span><span class='nam'>store</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>i</span><span class='op'>,</span> <span class='nam'>e</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t302' class='pln'><span class='strut'> </span></p>
-<p id='t303' class='pln'>    <span class='com'># Main Varsize API</span><span class='strut'> </span></p>
-<p id='t304' class='pln'><span class='strut'> </span></p>
-<p id='t305' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>insert</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>index0</span><span class='op'>,</span> <span class='nam'>list_w</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t306' class='stm mis'>        <span class='key'>raise</span> <span class='nam'>NotImplementedError</span><span class='op'>(</span><span class='str'>"Abstract method"</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t307' class='pln'><span class='strut'> </span></p>
-<p id='t308' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>delete</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>start</span><span class='op'>,</span> <span class='nam'>end</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t309' class='stm mis'>        <span class='key'>raise</span> <span class='nam'>NotImplementedError</span><span class='op'>(</span><span class='str'>"Abstract method"</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t310' class='pln'><span class='strut'> </span></p>
-<p id='t311' class='pln'>    <span class='com'># Varsize utility methods</span><span class='strut'> </span></p>
-<p id='t312' class='pln'><span class='strut'> </span></p>
-<p id='t313' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>append</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>list_w</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t314' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>insert</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>size</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>)</span><span class='op'>,</span> <span class='nam'>list_w</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t315' class='pln'><span class='strut'> </span></p>
-<p id='t316' class='stm run hide_run'>    <span class='key'>def</span> <span class='nam'>pop</span><span class='op'>(</span><span class='nam'>self</span><span class='op'>,</span> <span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>index0</span><span class='op'>)</span><span class='op'>:</span><span class='strut'> </span></p>
-<p id='t317' class='stm run hide_run'>        <span class='nam'>e</span> <span class='op'>=</span> <span class='nam'>self</span><span class='op'>.</span><span class='nam'>fetch</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>index0</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t318' class='stm run hide_run'>        <span class='nam'>self</span><span class='op'>.</span><span class='nam'>delete</span><span class='op'>(</span><span class='nam'>w_self</span><span class='op'>,</span> <span class='nam'>index0</span><span class='op'>,</span> <span class='nam'>index0</span><span class='op'>+</span><span class='num'>1</span><span class='op'>)</span><span class='strut'> </span></p>
-<p id='t319' class='stm run hide_run'>        <span class='key'>return</span> <span class='nam'>e</span><span class='strut'> </span></p>


More information about the pypy-commit mailing list