[jboss-svn-commits] JBL Code SVN: r12176 - in labs/jbossforums/branches/tests: log-pre-parser and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon May 28 10:56:58 EDT 2007


Author: adamw
Date: 2007-05-28 10:56:57 -0400 (Mon, 28 May 2007)
New Revision: 12176

Added:
   labs/jbossforums/branches/tests/log-pre-parser/
   labs/jbossforums/branches/tests/log-pre-parser/.project
   labs/jbossforums/branches/tests/log-pre-parser/.pydevproject
   labs/jbossforums/branches/tests/log-pre-parser/src/
   labs/jbossforums/branches/tests/log-pre-parser/src/log-pre-parser.py
   labs/jbossforums/branches/tests/log-pre-parser/src/out.log
   labs/jbossforums/branches/tests/log-pre-parser/src/test.log
   labs/jbossforums/branches/tests/main/
   labs/jbossforums/branches/tests/main/.project
   labs/jbossforums/branches/tests/main/.pydevproject
   labs/jbossforums/branches/tests/main/src/
   labs/jbossforums/branches/tests/main/src/.grinder/
   labs/jbossforums/branches/tests/main/src/create_new_post.py
   labs/jbossforums/branches/tests/main/src/globals.py
   labs/jbossforums/branches/tests/main/src/http-data-0.dat
   labs/jbossforums/branches/tests/main/src/http-data-1.dat
   labs/jbossforums/branches/tests/main/src/main.py
   labs/jbossforums/branches/tests/main/src/post_reply.py
   labs/jbossforums/branches/tests/main/src/view_main.py
   labs/jbossforums/branches/tests/main/src/view_post.py
Log:
Initial checkin

Added: labs/jbossforums/branches/tests/log-pre-parser/.project
===================================================================
--- labs/jbossforums/branches/tests/log-pre-parser/.project	                        (rev 0)
+++ labs/jbossforums/branches/tests/log-pre-parser/.project	2007-05-28 14:56:57 UTC (rev 12176)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>forums-test-log-pre-parser</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.python.pydev.PyDevBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.python.pydev.pythonNature</nature>
+	</natures>
+</projectDescription>

Added: labs/jbossforums/branches/tests/log-pre-parser/.pydevproject
===================================================================
--- labs/jbossforums/branches/tests/log-pre-parser/.pydevproject	                        (rev 0)
+++ labs/jbossforums/branches/tests/log-pre-parser/.pydevproject	2007-05-28 14:56:57 UTC (rev 12176)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse-pydev version="1.0"?>
+
+<pydev_project>
+<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.4</pydev_property>
+<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
+<path>/forums-test-log-pre-parser/src</path>
+</pydev_pathproperty>
+</pydev_project>

Added: labs/jbossforums/branches/tests/log-pre-parser/src/log-pre-parser.py
===================================================================
--- labs/jbossforums/branches/tests/log-pre-parser/src/log-pre-parser.py	                        (rev 0)
+++ labs/jbossforums/branches/tests/log-pre-parser/src/log-pre-parser.py	2007-05-28 14:56:57 UTC (rev 12176)
@@ -0,0 +1,72 @@
+#!/usr/bin/env python
+import re
+import sys
+import getopt
+
+#in_file_name = "test.log"
+in_file_name = "../../localhost_access2007-05-20.log"
+out_file_name = "out.log"
+
+in_file = open(in_file_name, 'r')
+out_file = open(out_file_name, 'w')
+
+log_regexp_string = """\d+\.\d+\.\d+\.\d+ - - \[\d\d/.../\d\d\d\d:(\d\d:\d\d:\d\d).{8}"GET /index.html\?module=bb&(?:(\w+=\w+)&?)?(?:(\w+=\w+)&?)?(?:(\w+=\w+)&?)?(?:(\w+=\w+)&?)?(?:(\w+=\w+)&?)?[^"]*" (\d+) [^"]*"[^"]*" "([^"]+)".*"""
+log_regexp = re.compile(log_regexp_string)
+
+def get_op(param_list):
+    for param in param_list:
+        if param:
+            if param[0:3] == "op=":
+                return param[3:]
+    
+    return None
+
+def file_iterator(file):
+    line = file.readline()
+    while line:
+        yield line
+        line = file.readline()  
+        #line = None
+        
+def print_line(date, param1, param2, param3, param4, param5, status, agent): 
+    print (date, param1, param2, param3, param4, param5, status)  
+        
+def print_scenario_line(date, param1, param2, param3, param4, param5, status, agent):
+    seconds = int(date[0:2])*3600 + int(date[3:5])*60 + int(date[6:8])
+    print "%d %s" % (seconds, get_op([param1, param2, param3, param4, param5]))
+ 
+m = {}
+def gather_statistics(date, param1, param2, param3, param4, param5, status, agent):
+    op = get_op([param1, param2, param3, param4, param5])
+    if not op:
+        op = "main"
+        
+    try:
+        m[op] += 1
+    except KeyError:
+        m[op] = 1
+    
+    return
+
+def print_statistics():
+    print m
+        
+log_match_function = print_scenario_line
+end_function = None
+        
+opts, args = getopt.getopt(sys.argv[1:], "s", ["settings"])
+        
+for opt, value in opts:
+    if opt == "-s":
+        log_match_function = gather_statistics
+        end_function = print_statistics
+        
+for line in file_iterator(in_file):
+    log_match = log_regexp.match(line)
+    
+    if log_match:
+        (date, param1, param2, param3, param4, param5, status, agent) = log_match.groups()
+        log_match_function(date, param1, param2, param3, param4, param5, status, agent)
+        
+if end_function:
+    end_function()
\ No newline at end of file


Property changes on: labs/jbossforums/branches/tests/log-pre-parser/src/log-pre-parser.py
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossforums/branches/tests/log-pre-parser/src/out.log
===================================================================

Added: labs/jbossforums/branches/tests/log-pre-parser/src/test.log
===================================================================
--- labs/jbossforums/branches/tests/log-pre-parser/src/test.log	                        (rev 0)
+++ labs/jbossforums/branches/tests/log-pre-parser/src/test.log	2007-05-28 14:56:57 UTC (rev 12176)
@@ -0,0 +1,50 @@
+64.74.196.205 - - [20/May/2007:00:00:00 -0500] "GET /index.html?module=bb&op=viewtopic&p=4045657 HTTP/1.0" 200 8354 "-" "NutchCVS/0.06-dev (Nutch; http://www.nutch.org/docs/en/bot.html; nutch-agent at lists.sourceforge.net)"
+218.102.126.150 - - [20/May/2007:00:00:00 -0500] "GET /wiki/attach?page=MailServicesPictures%2Ftb_usernames.jpg HTTP/1.1" 200 33354 "http://blogs.jboss.com/blog/acoliver/?permalink=66EC5E024FD36F07A3C3FED9A4E4DF98.txt" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
+218.102.126.150 - - [20/May/2007:00:00:00 -0500] "GET /wiki/attach?page=MailServicesPictures%2Ftb_trust1.jpg HTTP/1.1" 200 50949 "http://blogs.jboss.com/blog/acoliver/?permalink=66EC5E024FD36F07A3C3FED9A4E4DF98.txt" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
+218.102.126.150 - - [20/May/2007:00:00:00 -0500] "GET /wiki/attach?page=MailServicesPictures%2Ftb_compose.jpg HTTP/1.1" 200 49821 "http://blogs.jboss.com/blog/acoliver/?permalink=66EC5E024FD36F07A3C3FED9A4E4DF98.txt" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
+64.74.196.205 - - [20/May/2007:00:00:01 -0500] "GET /index.html?module=bb&op=viewtopic&p=3907246 HTTP/1.0" 200 8369 "-" "NutchCVS/0.06-dev (Nutch; http://www.nutch.org/docs/en/bot.html; nutch-agent at lists.sourceforge.net)"
+218.102.126.150 - - [20/May/2007:00:00:01 -0500] "GET /wiki/attach?page=MailServicesPictures%2Ftb_pwd.jpg HTTP/1.1" 200 17665 "http://blogs.jboss.com/blog/acoliver/?permalink=66EC5E024FD36F07A3C3FED9A4E4DF98.txt" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
+220.245.178.135 - - [20/May/2007:00:00:02 -0500] "GET /products/index HTTP/1.0" 200 3235 "http://www.jboss.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"
+64.74.196.205 - - [20/May/2007:00:00:02 -0500] "GET /index.html?module=bb&op=viewtopic&t=108717 HTTP/1.0" 200 6481 "-" "NutchCVS/0.06-dev (Nutch; http://www.nutch.org/docs/en/bot.html; nutch-agent at lists.sourceforge.net)"
+85.0.16.141 - - [20/May/2007:00:00:02 -0500] "GET /index.html?module=bb&op=viewforum&f=231 HTTP/1.1" 200 7338 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+218.102.126.150 - - [20/May/2007:00:00:02 -0500] "GET /wiki/attach?page=MailServicesPictures%2Ftb_trust2.jpg HTTP/1.1" 200 27563 "http://blogs.jboss.com/blog/acoliver/?permalink=66EC5E024FD36F07A3C3FED9A4E4DF98.txt" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
+217.17.35.115 - - [20/May/2007:00:00:02 -0500] "GET /jbossBlog/blog/pfricke/?flavor=rss2 HTTP/1.1" 302 - "-" "Feed2Imap v0.9 http://home.gna.org/feed2imap/"
+218.102.126.150 - - [20/May/2007:00:00:02 -0500] "GET /wiki/attach?page=MailServicesPictures%2Ftb_gotit.jpg HTTP/1.1" 200 52847 "http://blogs.jboss.com/blog/acoliver/?permalink=66EC5E024FD36F07A3C3FED9A4E4DF98.txt" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
+85.0.16.141 - - [20/May/2007:00:00:02 -0500] "GET /modules/bb/templates/subSilver/subSilver.css HTTP/1.1" 200 8248 "http://www.jboss.com/index.html?module=bb&op=viewforum&f=231" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+200.74.118.16 - - [20/May/2007:00:00:02 -0500] "GET /themes/jbosstheme/img/btn_go_red.gif HTTP/1.1" 404 231 "http://www.jboss.com/themes/jbosstheme/style/screen.css" "Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+64.74.196.205 - - [20/May/2007:00:00:03 -0500] "GET /index.html?module=bb&op=viewtopic&p=4038590 HTTP/1.0" 200 6480 "-" "NutchCVS/0.06-dev (Nutch; http://www.nutch.org/docs/en/bot.html; nutch-agent at lists.sourceforge.net)"
+220.245.178.135 - - [20/May/2007:00:00:03 -0500] "GET /themes/jbosstheme/style/global.css HTTP/1.0" 404 231 "http://www.jboss.com/products/index" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"
+85.0.16.141 - - [20/May/2007:00:00:03 -0500] "GET /themes/jbosstheme/style/custom.css HTTP/1.1" 200 31674 "http://www.jboss.com/index.html?module=bb&op=viewforum&f=231" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+85.0.16.141 - - [20/May/2007:00:00:03 -0500] "GET /themes/jbosstheme/style/global.css HTTP/1.1" 404 231 "http://www.jboss.com/index.html?module=bb&op=viewforum&f=231" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+85.0.16.141 - - [20/May/2007:00:00:03 -0500] "GET /themes/jbosstheme/style/headings.css HTTP/1.1" 200 15727 "http://www.jboss.com/index.html?module=bb&op=viewforum&f=231" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+220.245.178.135 - - [20/May/2007:00:00:03 -0500] "GET /themes/jbosstheme/style/layout.css HTTP/1.0" 404 231 "http://www.jboss.com/products/index" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"
+64.74.196.205 - - [20/May/2007:00:00:04 -0500] "GET /index.html?module=bb&op=viewtopic&p=4046578 HTTP/1.0" 200 7571 "-" "NutchCVS/0.06-dev (Nutch; http://www.nutch.org/docs/en/bot.html; nutch-agent at lists.sourceforge.net)"
+85.0.16.141 - - [20/May/2007:00:00:04 -0500] "GET /themes/jbosstheme/style/layout.css HTTP/1.1" 404 231 "http://www.jboss.com/index.html?module=bb&op=viewforum&f=231" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+85.0.16.141 - - [20/May/2007:00:00:04 -0500] "GET /themes/jbosstheme/style/navigation.css HTTP/1.1" 200 10746 "http://www.jboss.com/index.html?module=bb&op=viewforum&f=231" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+85.0.16.141 - - [20/May/2007:00:00:04 -0500] "GET /themes/jbosstheme/style/pagelayout.css HTTP/1.1" 200 16964 "http://www.jboss.com/index.html?module=bb&op=viewforum&f=231" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+220.245.178.135 - - [20/May/2007:00:00:04 -0500] "GET /scripts/menu.js HTTP/1.0" 200 1526 "http://www.jboss.com/products/index" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"
+85.0.16.141 - - [20/May/2007:00:00:04 -0500] "GET /themes/jbosstheme/style/tables.css HTTP/1.1" 200 11667 "http://www.jboss.com/index.html?module=bb&op=viewforum&f=231" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+137.132.3.7 - - [20/May/2007:00:00:04 -0500] "GET /products/jbpm HTTP/1.1" 200 3410 "http://sourceforge.net/projects/jbpm/" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+64.74.196.205 - - [20/May/2007:00:00:05 -0500] "GET /index.html?module=bb&op=viewtopic&t=5355 HTTP/1.0" 200 6978 "-" "NutchCVS/0.06-dev (Nutch; http://www.nutch.org/docs/en/bot.html; nutch-agent at lists.sourceforge.net)"
+85.0.16.141 - - [20/May/2007:00:00:05 -0500] "GET /themes/jbosstheme/style/screen.css HTTP/1.1" 200 8374 "http://www.jboss.com/index.html?module=bb&op=viewforum&f=231" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+137.132.3.7 - - [20/May/2007:00:00:05 -0500] "GET /themes/jbosstheme/style/custom.css HTTP/1.1" 200 31674 "http://www.jboss.com/products/jbpm" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+85.0.16.141 - - [20/May/2007:00:00:05 -0500] "GET /themes/jbosstheme/style/print.css HTTP/1.1" 200 1401 "http://www.jboss.com/index.html?module=bb&op=viewforum&f=231" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+85.0.16.141 - - [20/May/2007:00:00:05 -0500] "GET /themes/jbosstheme/style/common.css HTTP/1.1" 200 12469 "http://www.jboss.com/index.html?module=bb&op=viewforum&f=231" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+85.0.16.141 - - [20/May/2007:00:00:05 -0500] "GET /themes/jbosstheme/style/layout_new_branding.css HTTP/1.1" 200 10764 "http://www.jboss.com/index.html?module=bb&op=viewforum&f=231" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+64.74.196.205 - - [20/May/2007:00:00:06 -0500] "GET /index.html?module=bb&op=viewtopic&t=102058&view=next HTTP/1.0" 200 7816 "-" "NutchCVS/0.06-dev (Nutch; http://www.nutch.org/docs/en/bot.html; nutch-agent at lists.sourceforge.net)"
+220.245.178.135 - - [20/May/2007:00:00:06 -0500] "GET /themes/jbosstheme/js/functions.js HTTP/1.0" 200 200 "http://www.jboss.com/products/index" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"
+85.0.16.141 - - [20/May/2007:00:00:06 -0500] "GET /scripts/menu.js HTTP/1.1" 200 1526 "http://www.jboss.com/index.html?module=bb&op=viewforum&f=231" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+85.0.16.141 - - [20/May/2007:00:00:06 -0500] "GET /themes/jbosstheme/js/functions.js HTTP/1.1" 200 200 "http://www.jboss.com/index.html?module=bb&op=viewforum&f=231" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+85.0.16.141 - - [20/May/2007:00:00:06 -0500] "GET /elqNow/elqCfg.js HTTP/1.1" 200 1103 "http://www.jboss.com/index.html?module=bb&op=viewforum&f=231" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+137.132.3.7 - - [20/May/2007:00:00:06 -0500] "GET /themes/jbosstheme/style/global.css HTTP/1.1" 404 231 "http://www.jboss.com/products/jbpm" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+85.0.16.141 - - [20/May/2007:00:00:06 -0500] "GET /elqNow/elqImg.js HTTP/1.1" 200 417 "http://www.jboss.com/index.html?module=bb&op=viewforum&f=231" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+220.245.178.135 - - [20/May/2007:00:00:06 -0500] "GET /elqNow/elqCfg.js HTTP/1.0" 200 1103 "http://www.jboss.com/products/index" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"
+85.0.16.141 - - [20/May/2007:00:00:06 -0500] "GET /themes/jbosstheme/img/logo.gif HTTP/1.1" 200 2174 "http://www.jboss.com/index.html?module=bb&op=viewforum&f=231" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+167.10.240.87 - - [20/May/2007:00:00:06 -0500] "GET /products/seam/pages-1.1.dtd HTTP/1.1" 200 3683 "-" "Java/1.5.0_11"
+137.132.3.7 - - [20/May/2007:00:00:06 -0500] "GET /themes/jbosstheme/style/headings.css HTTP/1.1" 200 15727 "http://www.jboss.com/products/jbpm" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+85.0.16.141 - - [20/May/2007:00:00:06 -0500] "GET /images/languages/french.gif HTTP/1.1" 200 98 "http://www.jboss.com/index.html?module=bb&op=viewforum&f=231" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+85.0.16.141 - - [20/May/2007:00:00:06 -0500] "GET /images/languages/german.gif HTTP/1.1" 200 107 "http://www.jboss.com/index.html?module=bb&op=viewforum&f=231" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+85.0.16.141 - - [20/May/2007:00:00:06 -0500] "GET /images/languages/english.gif HTTP/1.1" 200 159 "http://www.jboss.com/index.html?module=bb&op=viewforum&f=231" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+85.0.16.141 - - [20/May/2007:00:00:08 -0500] "GET /themes/jbosstheme/img/spacer.gif HTTP/1.1" 200 43 "http://www.jboss.com/index.html?module=bb&op=viewforum&f=231" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+85.0.16.141 - - [20/May/2007:00:00:08 -0500] "GET /images/banners/jb_cert_ani_banner.gif HTTP/1.1" 200 6963 "http://www.jboss.com/index.html?module=bb&op=viewforum&f=231" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
+85.0.16.141 - - [20/May/2007:00:00:08 -0500] "GET /images/btn_go_grey.gif HTTP/1.1" 200 229 "http://www.jboss.com/index.html?module=bb&op=viewforum&f=231" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"

Added: labs/jbossforums/branches/tests/main/.project
===================================================================
--- labs/jbossforums/branches/tests/main/.project	                        (rev 0)
+++ labs/jbossforums/branches/tests/main/.project	2007-05-28 14:56:57 UTC (rev 12176)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>forums-main-test</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.python.pydev.PyDevBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.python.pydev.pythonNature</nature>
+	</natures>
+</projectDescription>

Added: labs/jbossforums/branches/tests/main/.pydevproject
===================================================================
--- labs/jbossforums/branches/tests/main/.pydevproject	                        (rev 0)
+++ labs/jbossforums/branches/tests/main/.pydevproject	2007-05-28 14:56:57 UTC (rev 12176)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse-pydev version="1.0"?>
+
+<pydev_project>
+<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.5</pydev_property>
+<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
+<path>/forums-main-test/src</path>
+</pydev_pathproperty>
+</pydev_project>

Added: labs/jbossforums/branches/tests/main/src/create_new_post.py
===================================================================
--- labs/jbossforums/branches/tests/main/src/create_new_post.py	                        (rev 0)
+++ labs/jbossforums/branches/tests/main/src/create_new_post.py	2007-05-28 14:56:57 UTC (rev 12176)
@@ -0,0 +1,519 @@
+# The Grinder 3.0-beta33
+# HTTP script recorded by TCPProxy at May 28, 2007 4:52:10 PM
+
+from net.grinder.script import Test
+from net.grinder.script.Grinder import grinder
+from net.grinder.plugin.http import HTTPPluginControl, HTTPRequest
+from HTTPClient import NVPair
+connectionDefaults = HTTPPluginControl.getConnectionDefaults()
+httpUtilities = HTTPPluginControl.getHTTPUtilities()
+
+# To use a proxy server, uncomment the next line and set the host and port.
+# connectionDefaults.setProxyServer("localhost", 8001)
+
+# These definitions at the top level of the file are evaluated once,
+# when the worker process is started.
+
+connectionDefaults.defaultHeaders = \
+  ( NVPair('User-Agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060809 SeaMonkey/1.0.3'),
+    NVPair('Accept-Encoding', 'gzip,deflate'),
+    NVPair('Accept-Language', 'en-us,en;q=0.5'),
+    NVPair('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.7'), )
+
+headers0= \
+  ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'), )
+
+headers1= \
+  ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'),
+    NVPair('Referer', 'http://localhost:8080/portal/portal/default/forums'), )
+
+headers2= \
+  ( NVPair('Accept', 'image/png,*/*;q=0.5'),
+    NVPair('Referer', 'http://localhost:8080/portal/auth/portal/default/forums'), )
+
+headers3= \
+  ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'),
+    NVPair('Referer', 'http://localhost:8080/portal/auth/portal/default/forums'), )
+
+headers4= \
+  ( NVPair('Accept', 'image/png,*/*;q=0.5'),
+    NVPair('Referer', 'http://localhost:8080/portal-core/themes/renaissance/portal_style.css'), )
+
+headers5= \
+  ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'),
+    NVPair('Referer', 'http://localhost:8080/portal/auth/portal/default/forums/JBossForumsWindow?action=2&v=c'), )
+
+headers6= \
+  ( NVPair('Accept', 'image/png,*/*;q=0.5'),
+    NVPair('Referer', 'http://localhost:8080/portal/auth/portal/default/forums/JBossForumsWindow?action=2&f=1&v=f'), )
+
+headers7= \
+  ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'),
+    NVPair('Referer', 'http://localhost:8080/portal/auth/portal/default/forums/JBossForumsWindow?action=2&f=1&v=f'), )
+
+headers8= \
+  ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'),
+    NVPair('Referer', 'http://localhost:8080/portal/auth/portal/default/forums/JBossForumsWindow?action=2&f=1&v=p'), )
+
+headers9= \
+  ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'),
+    NVPair('Referer', 'http://localhost:8080/portal/auth/portal/default/forums/JBossForumsWindow?action=2&f=1&notified_watch_type=0&notified_post_id=15&v=f'), )
+
+headers10= \
+  ( NVPair('Accept', 'image/png,*/*;q=0.5'), )
+
+headers11= \
+  ( NVPair('Accept', 'image/png,*/*;q=0.5'),
+    NVPair('Referer', 'http://localhost:8080/portal/portal/default'), )
+
+url0 = 'http://localhost:8080'
+
+# Create an HTTPRequest for each request, then replace the
+# reference to the HTTPRequest with an instrumented version.
+# You can access the unadorned instance using request101.__target__.
+request101 = HTTPRequest(url=url0, headers=headers0)
+request101 = Test(101, 'GET forums').wrap(request101)
+
+request201 = HTTPRequest(url=url0, headers=headers1)
+request201 = Test(201, 'GET forums').wrap(request201)
+
+request202 = HTTPRequest(url=url0, headers=headers2)
+request202 = Test(202, 'GET login_top_left.png').wrap(request202)
+
+request203 = HTTPRequest(url=url0, headers=headers2)
+request203 = Test(203, 'GET login_top_right.png').wrap(request203)
+
+request204 = HTTPRequest(url=url0, headers=headers2)
+request204 = Test(204, 'GET login_bottom_left.png').wrap(request204)
+
+request205 = HTTPRequest(url=url0, headers=headers2)
+request205 = Test(205, 'GET login_top.png').wrap(request205)
+
+request206 = HTTPRequest(url=url0, headers=headers2)
+request206 = Test(206, 'GET login_bottom_right.png').wrap(request206)
+
+request207 = HTTPRequest(url=url0, headers=headers2)
+request207 = Test(207, 'GET login_right.png').wrap(request207)
+
+request208 = HTTPRequest(url=url0, headers=headers2)
+request208 = Test(208, 'GET login_left.png').wrap(request208)
+
+request209 = HTTPRequest(url=url0, headers=headers2)
+request209 = Test(209, 'GET login_bottom.png').wrap(request209)
+
+request301 = HTTPRequest(url=url0, headers=headers3)
+request301 = Test(301, 'POST j_security_check').wrap(request301)
+
+request302 = HTTPRequest(url=url0, headers=headers3)
+request302 = Test(302, 'GET forums').wrap(request302)
+
+request303 = HTTPRequest(url=url0, headers=headers4)
+request303 = Test(303, 'GET ico_edit.gif').wrap(request303)
+
+request304 = HTTPRequest(url=url0, headers=headers2)
+request304 = Test(304, 'GET icon_mini_watch.gif').wrap(request304)
+
+request305 = HTTPRequest(url=url0, headers=headers2)
+request305 = Test(305, 'GET icon_mini_admin.gif').wrap(request305)
+
+request401 = HTTPRequest(url=url0, headers=headers3)
+request401 = Test(401, 'GET JBossForumsWindow').wrap(request401)
+
+request402 = HTTPRequest(url=url0, headers=headers3)
+request402 = Test(402, 'GET JBossForumsWindow').wrap(request402)
+
+request501 = HTTPRequest(url=url0, headers=headers5)
+request501 = Test(501, 'GET JBossForumsWindow').wrap(request501)
+
+request502 = HTTPRequest(url=url0, headers=headers5)
+request502 = Test(502, 'GET JBossForumsWindow').wrap(request502)
+
+request503 = HTTPRequest(url=url0, headers=headers6)
+request503 = Test(503, 'GET post.gif').wrap(request503)
+
+request601 = HTTPRequest(url=url0, headers=headers7)
+request601.setDataFromFile('http-data-0.dat')
+request601 = Test(601, 'POST JBossForumsWindow').wrap(request601)
+
+request602 = HTTPRequest(url=url0, headers=headers7)
+request602 = Test(602, 'GET JBossForumsWindow').wrap(request602)
+
+request701 = HTTPRequest(url=url0, headers=headers8)
+request701.setDataFromFile('http-data-1.dat')
+request701 = Test(701, 'POST JBossForumsWindow').wrap(request701)
+
+request702 = HTTPRequest(url=url0, headers=headers8)
+request702 = Test(702, 'GET JBossForumsWindow').wrap(request702)
+
+request801 = HTTPRequest(url=url0, headers=headers9)
+request801 = Test(801, 'GET signout').wrap(request801)
+
+request802 = HTTPRequest(url=url0, headers=headers9)
+request802 = Test(802, 'GET default').wrap(request802)
+
+request803 = HTTPRequest(url=url0, headers=headers10)
+request803 = Test(803, 'GET favicon.ico').wrap(request803)
+
+request804 = HTTPRequest(url=url0, headers=headers11)
+request804 = Test(804, 'GET dodemo.gif').wrap(request804)
+
+request805 = HTTPRequest(url=url0, headers=headers11)
+request805 = Test(805, 'GET getcode.gif').wrap(request805)
+
+request806 = HTTPRequest(url=url0, headers=headers11)
+request806 = Test(806, 'GET accessorize.gif').wrap(request806)
+
+request807 = HTTPRequest(url=url0, headers=headers11)
+request807 = Test(807, 'GET homeimg_jbosslogo.png').wrap(request807)
+
+request808 = HTTPRequest(url=url0, headers=headers11)
+request808 = Test(808, 'GET homeimg_main.png').wrap(request808)
+
+
+class TestRunner:
+  """A TestRunner instance is created for each worker thread."""
+
+  # A method for each recorded page.
+  def page1(self):
+    """GET forums (request 101)."""
+    result = request101.GET('/portal/portal/default/forums')
+    # 2 different values for token_windowstate found in response, using the first one.
+    self.token_windowstate = \
+      httpUtilities.valueFromBodyURI('windowstate') # 'minimized'
+    self.token_action = \
+      httpUtilities.valueFromBodyURI('action') # '1'
+    # 4 different values for token_v found in response, using the first one.
+    self.token_v = \
+      httpUtilities.valueFromBodyURI('v') # 'c'
+    self.token_c = \
+      httpUtilities.valueFromBodyURI('c') # '1'
+    # 2 different values for token_f found in response, using the first one.
+    self.token_f = \
+      httpUtilities.valueFromBodyURI('f') # '1'
+    self.token_p = \
+      httpUtilities.valueFromBodyURI('p') # '14'
+    self.token__id10jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT = \
+      httpUtilities.valueFromHiddenInput('_id10jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT') # '1'
+    self.token_jsf_tree_64 = \
+      httpUtilities.valueFromHiddenInput('jsf_tree_64') # 'rO0ABXNyAEdvcmcuYXBhY2hlLm15ZmFjZXMuYXBw...'
+    self.token_jsf_viewid = \
+      httpUtilities.valueFromHiddenInput('jsf_viewid') # '/views/index.xhtml'
+
+    return result
+
+  def page2(self):
+    """GET forums (requests 201-209)."""
+    result = request201.GET('/portal/auth/portal/default/forums')
+
+    grinder.sleep(56)
+    request202.GET('/portal/images/login_top_left.png')
+
+    request203.GET('/portal/images/login_top_right.png')
+
+    request204.GET('/portal/images/login_bottom_left.png')
+
+    request205.GET('/portal/images/login_top.png')
+
+    request206.GET('/portal/images/login_bottom_right.png')
+
+    request207.GET('/portal/images/login_right.png')
+
+    request208.GET('/portal/images/login_left.png')
+
+    request209.GET('/portal/images/login_bottom.png')
+
+    return result
+
+  def page3(self):
+    """POST j_security_check (requests 301-305)."""
+    
+    # Expecting 302 'Moved Temporarily'
+    result = request301.POST('/portal/auth/portal/default/j_security_check',
+      ( NVPair('j_username', 'admin'),
+        NVPair('j_password', 'admin'),
+        NVPair('login', 'Login'), ),
+      ( NVPair('Content-Type', 'application/x-www-form-urlencoded'), ))
+
+    grinder.sleep(34)
+    request302.GET('/portal/auth/portal/default/forums')
+    # 11 different values for token_action found in response, using the first one.
+    self.token_action = \
+      httpUtilities.valueFromBodyURI('action') # 'import'
+    self.token_mode = \
+      httpUtilities.valueFromBodyURI('mode') # 'edit'
+    # 1 different values for token_windowstate found in response; the first matched
+    # the last known value of token_windowstate - don't update the variable.
+    # 8 different values for token_v found in response; the first matched
+    # the last known value of token_v - don't update the variable.
+    # 6 different values for token_t found in response, using the first one.
+    self.token_t = \
+      httpUtilities.valueFromBodyURI('t') # '3'
+
+    request303.GET('/portal-core/themes/renaissance/images/ico_edit.gif')
+
+    grinder.sleep(47)
+    request304.GET('/portal-forums/subSilver/images/icon_mini_watch.gif')
+
+    grinder.sleep(23)
+    request305.GET('/portal-forums/subSilver/images/icon_mini_admin.gif')
+
+    return result
+
+  def page4(self):
+    """GET JBossForumsWindow (requests 401-402)."""
+    self.token_action = \
+      '1'
+    
+    # Expecting 302 'Moved Temporarily'
+    result = request401.GET('/portal/auth/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&v=' +
+      self.token_v)
+    self.token_action = \
+      httpUtilities.valueFromLocationURI('action') # '2'
+
+    request402.GET('/portal/auth/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&v=' +
+      self.token_v)
+    # 9 different values for token_action found in response, using the first one.
+    self.token_action = \
+      httpUtilities.valueFromBodyURI('action') # 'import'
+    # 1 different values for token_windowstate found in response; the first matched
+    # the last known value of token_windowstate - don't update the variable.
+    # 7 different values for token_v found in response, using the first one.
+    self.token_v = \
+      httpUtilities.valueFromBodyURI('v') # 'c'
+    # 1 different values for token_f found in response; the first matched
+    # the last known value of token_f - don't update the variable.
+    self.token_uid = \
+      httpUtilities.valueFromBodyURI('uid') # '1'
+    self.token__id16jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT = \
+      httpUtilities.valueFromHiddenInput('_id16jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT') # '1'
+    self.token_jsf_tree_64 = \
+      httpUtilities.valueFromHiddenInput('jsf_tree_64') # 'rO0ABXNyAEdvcmcuYXBhY2hlLm15ZmFjZXMuYXBw...'
+    self.token_jsf_viewid = \
+      httpUtilities.valueFromHiddenInput('jsf_viewid') # '/views/category/viewcategory_body.xhtml'
+
+    return result
+
+  def page5(self):
+    """GET JBossForumsWindow (requests 501-503)."""
+    self.token_action = \
+      '1'
+    self.token_v = \
+      'f'
+    
+    # Expecting 302 'Moved Temporarily'
+    result = request501.GET('/portal/auth/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&v=' +
+      self.token_v +
+      '&f=' +
+      self.token_f)
+    self.token_action = \
+      httpUtilities.valueFromLocationURI('action') # '2'
+
+    grinder.sleep(409)
+    self.token_action = \
+      '2'
+    self.token_v = \
+      'f'
+    request502.GET('/portal/auth/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&f=' +
+      self.token_f +
+      '&v=' +
+      self.token_v)
+    # 56 different values for token_action found in response, using the first one.
+    self.token_action = \
+      httpUtilities.valueFromBodyURI('action') # 'import'
+    # 1 different values for token_windowstate found in response; the first matched
+    # the last known value of token_windowstate - don't update the variable.
+    # 51 different values for token_v found in response, using the first one.
+    self.token_v = \
+      httpUtilities.valueFromBodyURI('v') # 'c'
+    self.token_page = \
+      httpUtilities.valueFromBodyURI('page') # '1'
+    # 18 different values for token_t found in response; the first matched
+    # the last known value of token_t - don't update the variable.
+    # 9 different values for token_p found in response; the first matched
+    # the last known value of token_p - don't update the variable.
+    self.token__id17jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT = \
+      httpUtilities.valueFromHiddenInput('_id17jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT') # '1'
+    self.token_jsf_viewid = \
+      httpUtilities.valueFromHiddenInput('jsf_viewid') # '/views/forums/viewforum_body.xhtml'
+
+    request503.GET('/portal-forums/subSilver/images/lang_english/post.gif')
+
+    return result
+
+  def page6(self):
+    """POST JBossForumsWindow (requests 601-602)."""
+    self.token_action = \
+      '1'
+    self.token_orgapachemyfacesportletMyFacesGenericPortletVIEW_ID = \
+      '/views/forums/viewforum_body.xhtml'
+    
+    # Expecting 302 'Moved Temporarily'
+    result = request601.POST('/portal/auth/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&org.apache.myfaces.portlet.MyFacesGenericPortlet.VIEW_ID=' +
+      self.token_orgapachemyfacesportletMyFacesGenericPortletVIEW_ID,
+      request601.__target__.data,
+      ( NVPair('Content-Type', 'application/x-www-form-urlencoded'), ))
+    self.token_action = \
+      httpUtilities.valueFromLocationURI('action') # '2'
+    self.token_v = \
+      httpUtilities.valueFromLocationURI('v') # 'p'
+
+    request602.GET('/portal/auth/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&f=' +
+      self.token_f +
+      '&v=' +
+      self.token_v)
+    # 4 different values for token_action found in response, using the first one.
+    self.token_action = \
+      httpUtilities.valueFromBodyURI('action') # 'import'
+    # 1 different values for token_windowstate found in response; the first matched
+    # the last known value of token_windowstate - don't update the variable.
+    # 3 different values for token_v found in response, using the first one.
+    self.token_v = \
+      httpUtilities.valueFromBodyURI('v') # 'c'
+    self.token_o = \
+      httpUtilities.valueFromHiddenInput('o') # ''
+    self.token_post_SUBMIT = \
+      httpUtilities.valueFromHiddenInput('post_SUBMIT') # '1'
+    self.token_jsf_tree_64 = \
+      httpUtilities.valueFromHiddenInput('jsf_tree_64') # 'rO0ABXNyAEdvcmcuYXBhY2hlLm15ZmFjZXMuYXBw...'
+    self.token_jsf_viewid = \
+      httpUtilities.valueFromHiddenInput('jsf_viewid') # '/views/topics/posting_new_body.xhtml'
+
+    return result
+
+  def page7(self):
+    """POST JBossForumsWindow (requests 701-702)."""
+    self.token_action = \
+      '1'
+    self.token_orgapachemyfacesportletMyFacesGenericPortletVIEW_ID = \
+      '/views/topics/posting_new_body.xhtml'
+    
+    # Expecting 302 'Moved Temporarily'
+    result = request701.POST('/portal/auth/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&org.apache.myfaces.portlet.MyFacesGenericPortlet.VIEW_ID=' +
+      self.token_orgapachemyfacesportletMyFacesGenericPortletVIEW_ID,
+      request701.__target__.data,
+      ( NVPair('Content-Type', 'multipart/form-data; boundary=---------------------------160867588417416073432107342755'), ))
+    self.token_action = \
+      httpUtilities.valueFromLocationURI('action') # '2'
+    self.token_notified_watch_type = \
+      httpUtilities.valueFromLocationURI('notified_watch_type') # '0'
+    self.token_notified_post_id = \
+      httpUtilities.valueFromLocationURI('notified_post_id') # '15'
+    self.token_v = \
+      httpUtilities.valueFromLocationURI('v') # 'f'
+
+    request702.GET('/portal/auth/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&f=' +
+      self.token_f +
+      '&notified_watch_type=' +
+      self.token_notified_watch_type +
+      '&notified_post_id=' +
+      self.token_notified_post_id +
+      '&v=' +
+      self.token_v)
+    # 56 different values for token_action found in response, using the first one.
+    self.token_action = \
+      httpUtilities.valueFromBodyURI('action') # 'import'
+    # 1 different values for token_windowstate found in response; the first matched
+    # the last known value of token_windowstate - don't update the variable.
+    # 51 different values for token_v found in response, using the first one.
+    self.token_v = \
+      httpUtilities.valueFromBodyURI('v') # 'c'
+    # 19 different values for token_t found in response, using the first one.
+    self.token_t = \
+      httpUtilities.valueFromBodyURI('t') # '13'
+    # 10 different values for token_p found in response, using the first one.
+    self.token_p = \
+      httpUtilities.valueFromBodyURI('p') # '15'
+    self.token_jsf_viewid = \
+      httpUtilities.valueFromHiddenInput('jsf_viewid') # '/views/forums/viewforum_body.xhtml'
+
+    return result
+
+  def page8(self):
+    """GET signout (requests 801-808)."""
+    
+    # Expecting 302 'Moved Temporarily'
+    result = request801.GET('/portal/signout')
+
+    request802.GET('/portal/portal/default')
+    # 3 different values for token_windowstate found in response; the first matched
+    # the last known value of token_windowstate - don't update the variable.
+    self.token_op = \
+      httpUtilities.valueFromBodyURI('op') # 'showRegister'
+    self.token_action = \
+      httpUtilities.valueFromBodyURI('action') # 'a'
+
+    grinder.sleep(161)
+    request803.GET('/portal-core/themes/renaissance/images/favicon.ico')
+
+    grinder.sleep(146)
+    request804.GET('/portal-samples/images/dodemo.gif')
+
+    request805.GET('/portal-samples/images/getcode.gif')
+
+    request806.GET('/portal-samples/images/accessorize.gif')
+
+    request807.GET('/portal/content/default/images/homeimg_jbosslogo.png')
+
+    request808.GET('/portal/content/default/images/homeimg_main.png')
+
+    return result
+
+  def __call__(self):
+    """This method is called for every run performed by the worker thread."""
+    self.page1()      # GET forums (request 101)
+    self.page2()      # GET forums (requests 201-209)
+
+    grinder.sleep(5439)
+    self.page3()      # POST j_security_check (requests 301-305)
+
+    grinder.sleep(1586)
+    self.page4()      # GET JBossForumsWindow (requests 401-402)
+    self.page5()      # GET JBossForumsWindow (requests 501-503)
+
+    grinder.sleep(1606)
+    self.page6()      # POST JBossForumsWindow (requests 601-602)
+    self.page7()      # POST JBossForumsWindow (requests 701-702)
+    self.page8()      # GET signout (requests 801-808)
+
+
+def instrumentMethod(test, method_name, c=TestRunner):
+  """Instrument a method with the given Test."""
+  unadorned = getattr(c, method_name)
+  import new
+  method = new.instancemethod(test.wrap(unadorned), None, c)
+  setattr(c, method_name, method)
+
+# Replace each method with an instrumented version.
+# You can call the unadorned method using self.page1.__target__().
+instrumentMethod(Test(100, 'Page 1'), 'page1')
+instrumentMethod(Test(200, 'Page 2'), 'page2')
+instrumentMethod(Test(300, 'Page 3'), 'page3')
+instrumentMethod(Test(400, 'Page 4'), 'page4')
+instrumentMethod(Test(500, 'Page 5'), 'page5')
+instrumentMethod(Test(600, 'Page 6'), 'page6')
+instrumentMethod(Test(700, 'Page 7'), 'page7')
+instrumentMethod(Test(800, 'Page 8'), 'page8')

Added: labs/jbossforums/branches/tests/main/src/globals.py
===================================================================
--- labs/jbossforums/branches/tests/main/src/globals.py	                        (rev 0)
+++ labs/jbossforums/branches/tests/main/src/globals.py	2007-05-28 14:56:57 UTC (rev 12176)
@@ -0,0 +1,15 @@
+from HTTPClient import NVPair
+from net.grinder.plugin.http import HTTPPluginControl
+
+print "XXX"
+
+connectionDefaults = HTTPPluginControl.getConnectionDefaults()
+httpUtilities = HTTPPluginControl.getHTTPUtilities()
+
+connectionDefaults.defaultHeaders = \
+  ( NVPair('User-Agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060809 SeaMonkey/1.0.3'),
+    NVPair('Accept-Encoding', 'gzip,deflate'),
+    NVPair('Accept-Language', 'en-us,en;q=0.5'),
+    NVPair('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.7'), )
+
+url0 = 'http://localhost:8080'
\ No newline at end of file

Added: labs/jbossforums/branches/tests/main/src/http-data-0.dat
===================================================================
--- labs/jbossforums/branches/tests/main/src/http-data-0.dat	                        (rev 0)
+++ labs/jbossforums/branches/tests/main/src/http-data-0.dat	2007-05-28 14:56:57 UTC (rev 12176)
@@ -0,0 +1 @@
+_id23jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT=1&f=1&t=13&_id23jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj%3A_link_hidden_=_id23jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj%3AreplyTopic&jsf_tree_64=rO0ABXNyAEdvcmcuYXBhY2hlLm15ZmFjZXMuYXBwbGljYXRpb24uVHJlZVN0cnVjdHVyZU1hbmFnZXIkVHJlZVN0cnVjdENvbXBvbmVudEZZF9icSvbPAgAEWwAJX2NoaWxkcmVudABKW0xvcmcvYXBhY2hlL215ZmFjZXMvYXBwbGljYXRpb24vVHJlZVN0cnVjdHVyZU1hbmFnZXIkVHJlZVN0cnVjdENvbXBvbmVudDtMAA9fY29tcG9uZW50Q2xhc3N0ABJMamF2YS9sYW5nL1N0cmluZztMAAxfY29tcG9uZW50SWRxAH4AAlsAB19mYWNldHN0ABNbTGphdmEvbGFuZy9PYmplY3Q7eHB1cgBKW0xvcmcuYXBhY2hlLm15ZmFjZXMuYXBwbGljYXRpb24uVHJlZVN0cnVjdHVyZU1hbmFnZXIkVHJlZVN0cnVjdENvbXBvbmVudDu6rCfIEYWQqgIAAHhwAAAAFXNxAH4AAHB0AClqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sT3V0cHV0TGlua3QANV9pZDNqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHBxAH4ACHQANV9pZDdqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHBxAH4ACHQANl9pZDExamJwbnNfMmZk!
 ZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBzcQB%2BAAB1cQB%2BAAUAAAACc3EAfgAAcHQAIWphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVBhcmFtZXRlcnQANl9pZDE5amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBzcQB%2BAABwdAApamF2YXguZmFjZXMuY29tcG9uZW50Lmh0bWwuSHRtbE91dHB1dFRleHR0ADZfaWQyMGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB%2BAAh0ADZfaWQxOGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwc3EAfgAAdXEAfgAFAAAAAnNxAH4AAHVxAH4ABQAAAAFzcQB%2BAABwcQB%2BABF0ADZfaWQyNmpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwdAAqamF2YXguZmFjZXMuY29tcG9uZW50Lmh0bWwuSHRtbENvbW1hbmRMaW5rdAAIbmV3VG9waWNwc3EAfgAAdXEAfgAFAAAAAnNxAH4AAHBxAH4AEXQANl9pZDMxamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBzcQB%2BAABwcQB%2BABF0ADZfaWQzMmpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB%2BAB10AApyZXBseVRvcGljcHQAI2phdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxGb3JtdAA2X2lkMjNqYnBuc18yZmRlZmF1bHRfMm!
 Zmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHVxAH4ABQAAAAFzcQB%
2BAABwcQB%2BABR0ADZfaWQzOGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB%2BAAh0ADZfaWQzN2picG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwc3EAfgAAdXEAfgAFAAAAAnNxAH4AAHBxAH4AEXQANl9pZDQxamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBzcQB%2BAABwcQB%2BABR0ADZfaWQ0MmpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB%2BAAh0ADZfaWQ0MGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwc3EAfgAAdXEAfgAFAAAAAnNxAH4AAHBxAH4AEXQANl9pZDQ1amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBzcQB%2BAABwcQB%2BABR0ADZfaWQ0NmpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB%2BAAh0ADZfaWQ0NGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwc3EAfgAAdXEAfgAFAAAAA3NxAH4AAHBxAH4AEXQANl9pZDQ5amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBzcQB%2BAABwcQB%2BABF0ADZfaWQ1MGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwc3E!
 AfgAAcHEAfgAUdAA2X2lkNTFqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHEAfgAIdAA2X2lkNDhqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHVxAH4ABQAAAAFzcQB%2BAAB1cQB%2BAAUAAAACc3EAfgAAcHEAfgARdAA2X2lkNTVqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHBxAH4AFHQANl9pZDU2amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4AHXQADWFjdGl2YXRlV2F0Y2hwcQB%2BACZ0ABB0b3BpY1dhdGNoRm9ybUlkcHNxAH4AAHBxAH4ACHQANl9pZDYxamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBzcQB%2BAAB1cQB%2BAAUAAAADc3EAfgAAdXEAfgAFAAAAA3NxAH4AAHBxAH4AEXQANl9pZDY4amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBzcQB%2BAABwcQB%2BABF0ADZfaWQ2OWpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwc3EAfgAAcHEAfgARdAA2X2lkNzBqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHEAfgAddAA2X2lkNjdqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AA!
 HVxAH4ABQAAAAFzcQB%2BAABwcQB%2BABF0ADZfaWQ3NmpicG5zXzJmZGVmYXVsdF8yZmZ
vcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB%2BAB10ADZfaWQ3NWpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwc3EAfgAAdXEAfgAFAAAAA3NxAH4AAHBxAH4AEXQANl9pZDgzamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBzcQB%2BAABwcQB%2BABF0ADZfaWQ4NGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwc3EAfgAAcHEAfgARdAA2X2lkODVqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHEAfgAIdAA2X2lkODFqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHEAfgAmdAA2X2lkNjRqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHBxAH4AFHQANl9pZDkxamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBzcQB%2BAAB1cQB%2BAAUAAAABc3EAfgAAcHEAfgARdAA2X2lkOThqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHEAfgAIdAA2X2lkOTdqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHVxAH4ABQAAAAJzcQB%2BAAB1cQB%2BAAUAAAABc3EAfgAAcHEAfgARdAA3X2lkMTA2amJwbnNfMmZkZWZhdW!
 x0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4AHXQACm5ld1RvcGljXzFwc3EAfgAAdXEAfgAFAAAAAnNxAH4AAHBxAH4AEXQAN19pZDExMWpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwc3EAfgAAcHEAfgARdAA3X2lkMTEyamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4AHXQADHJlcGx5VG9waWNfMXBxAH4AJnQAN19pZDEwM2picG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwc3EAfgAAdXEAfgAFAAAAAXNxAH4AAHBxAH4AFHQAN19pZDExOWpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB%2BAAh0ADdfaWQxMThqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHVxAH4ABQAAAAJzcQB%2BAABwcQB%2BABF0ADdfaWQxMjJqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHBxAH4AFHQAN19pZDEyM2picG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB%2BAAh0ADdfaWQxMjFqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHVxAH4ABQAAAAJzcQB%2BAABwcQB%2BABF0ADdfaWQxMjZqYnBuc18yZmRlZmF1bHRfMmZmb3J1bX!
 NfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHBxAH4AFHQAN19pZDEyN2picG5z
XzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB%2BAAh0ADdfaWQxMjVqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHVxAH4ABQAAAAJzcQB%2BAABwcQB%2BABF0ADdfaWQxMzBqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHBxAH4AFHQAN19pZDEzMWpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB%2BAAh0ADdfaWQxMjlqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHVxAH4ABQAAAANzcQB%2BAABwdAAsamF2YXguZmFjZXMuY29tcG9uZW50Lmh0bWwuSHRtbElucHV0VGV4dGFyZWF0AAdtZXNzYWdlcHNxAH4AAHB0ACxqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sQ29tbWFuZEJ1dHRvbnQAN19pZDEzOGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwc3EAfgAAcHEAfgCgdAA3X2lkMTQwamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4AJnQABHBvc3Rwc3EAfgAAdXEAfgAFAAAABHNxAH4AAHVxAH4ABQAAAAFzcQB%2BAABwcQB%2BABF0ADdfaWQxNTVqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHEAfgAddAA3X2lkMTU0amJwbnN!
 fMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBzcQB%2BAAB1cQB%2BAAUAAAABc3EAfgAAcHEAfgARdAA3X2lkMTU5amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4AHXQAN19pZDE1OGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwc3EAfgAAdXEAfgAFAAAAAXNxAH4AAHBxAH4AEXQAN19pZDE2M2picG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB%2BAB10ADdfaWQxNjJqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHVxAH4ABQAAAAFzcQB%2BAABwcQB%2BABF0ADdfaWQxNjdqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHEAfgAIdAA3X2lkMTY2amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4AJnQAN19pZDE1MmpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwdAAgamF2YXguZmFjZXMuY29tcG9uZW50LlVJVmlld1Jvb3RwcA%3D%3D&jsf_state_64=rO0ABXVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAAN1cQB%2BAAAAAAAFdXEAfgAAAAAAB3BwcHBzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0a!
 HJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAHhwcHNyABBqYXZhLnV0aWwuTG9jYWxlfvg
RYJww%2BewCAARJAAhoYXNoY29kZUwAB2NvdW50cnl0ABJMamF2YS9sYW5nL1N0cmluZztMAAhsYW5ndWFnZXEAfgAHTAAHdmFyaWFudHEAfgAHeHD%2F%2F%2F%2F%2FdAAAdAACZW5xAH4ACXQACkhUTUxfQkFTSUN0ACIvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sc3IADmphdmEubGFuZy5Mb25nO4vkkMyPI98CAAFKAAV2YWx1ZXhyABBqYXZhLmxhbmcuTnVtYmVyhqyVHQuU4IsCAAB4cAAAAAAAAACtcHNyABNqYXZhLnV0aWwuQXJyYXlMaXN0eIHSHZnHYZ0DAAFJAARzaXpleHAAAAAVdwQAAAAVdXEAfgAAAAAAA3VxAH4AAAAAABx1cQB%2BAAAAAAADdXEAfgAAAAAAB3QANV9pZDNqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHQAEGphdmF4LmZhY2VzLkxpbmtxAH4AFnNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAnQAGGNvbS5zdW4uZmFjZWxldHMuTUFSS19JRHQAHC92aWV3cy9jb21tb24vY29tbW9uLnhodG1sIzF0ABhjb20uc3VuLmZhY2VsZXRzLkFQUExJRURzcgAvY29tLnN1bi5mYWNlbGV0cy5pbXBsLkRlZmF1bHRGYWNlbGV0JEFwcGx5VG9rZW5InM9EO26WoAwAAHhwdy0AIy92aWV3cy90b3BpY3MvYXR0YWNobWVudHN2aWV3LnhodG1sAAABEtMtmXN4eHBzcQB%2BAAQ%2FQAAAAAAAAXcIAAAAAgAAAAF0AAV2YWx1ZXNyACZjb20uc3VuLmZhY2VsZXRzLmVsLkxlZ2FjeVZhbHVlQmluZGluZwAAAAAAAAABDAAAeHBzcgAmY29tLnN1bi5mYW!
 NlbGV0cy5lbC5UYWdWYWx1ZUV4cHJlc3Npb24AAAAAAAAAAQwAAHhyABhqYXZheC5lbC5WYWx1ZUV4cHJlc3Npb253CoBb4MD%2BkQIAAHhyABNqYXZheC5lbC5FeHByZXNzaW9uo4WKU%2FJa0jwCAAB4cHNyAB5jb20uc3VuLmVsLlZhbHVlRXhwcmVzc2lvbkltcGwDuqhiHyXJmAwAAHhxAH4AI3dHADMje2ZvcnVtczpvdXRwdXRMaW5rKHNoYXJlZC5saW5rc1snY2F0ZWdvcnknXSx0cnVlKX0AEGphdmEubGFuZy5PYmplY3RzcgAiY29tLnN1bi5lbC5sYW5nLkZ1bmN0aW9uTWFwcGVySW1wbAAAAAAAAAABDAAAeHBzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAF0ABFmb3J1bXM6b3V0cHV0TGlua3NyACtjb20uc3VuLmVsLmxhbmcuRnVuY3Rpb25NYXBwZXJJbXBsJEZ1bmN0aW9u2XHra0ktoO8MAAB4cHdIAAZmb3J1bXMACm91dHB1dExpbmsAJm9yZy5qYm9zcy5wb3J0bGV0LmZvcnVtcy51aS5Qb3J0YWxVdGlsAApvdXRwdXRMaW5rdXIAE1tMamF2YS5sYW5nLlN0cmluZzut0lbn6R17RwIAAHhwAAAAAnQAEGphdmEubGFuZy5TdHJpbmd0AAdib29sZWFueHh4cHh3YABeL3ZpZXdzL2NvbW1vbi9jb21tb24ueGh0bWwgQDQ1LDEwNSB2YWx1ZT0iI3tmb3J1bXM6b3V0cHV0TGluayhzaGFyZWQubGlua3NbJ2NhdGVnb3J5J10sdHJ1ZSl9Inh4eHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHQACG1haW5tZW51cHBwcHBwdXEAfgAAAAAAA3VxAH4AAAAAABx1cQB%2BAAAAAAADdXEAfgAAAAAAB3QANV9pZDdqYnBu!
 c18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHEAfgAXcQ
B%2BADdzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAJxAH4AGXQAHC92aWV3cy9jb21tb24vY29tbW9uLnhodG1sIzVxAH4AG3EAfgAdeHBzcQB%2BAAQ%2FQAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJndJADUje2ZvcnVtczpvdXRwdXRMaW5rKHNoYXJlZC5saW5rc1snZm9ydW1XYXRjaCddLHRydWUpfQAQamF2YS5sYW5nLk9iamVjdHNxAH4AKHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXQAEWZvcnVtczpvdXRwdXRMaW5rc3EAfgAsd0gABmZvcnVtcwAKb3V0cHV0TGluawAmb3JnLmpib3NzLnBvcnRsZXQuZm9ydW1zLnVpLlBvcnRhbFV0aWwACm91dHB1dExpbmt1cQB%2BAC4AAAACcQB%2BADBxAH4AMXh4eHB4d2IAYC92aWV3cy9jb21tb24vY29tbW9uLnhodG1sIEA2MCwxMDcgdmFsdWU9IiN7Zm9ydW1zOm91dHB1dExpbmsoc2hhcmVkLmxpbmtzWydmb3J1bVdhdGNoJ10sdHJ1ZSl9Inh4eHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHQACG1haW5tZW51cHBwcHBwdXEAfgAAAAAAA3VxAH4AAAAAABx1cQB%2BAAAAAAADdXEAfgAAAAAAB3QANl9pZDExamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4AF3EAfgBIc3EAfgAEP0AAAAAAAAx3CAAAABAAAAACcQB%2BABl0ABwvdmlld3MvY29tbW9uL2NvbW1vbi54aHRtbCM4cQB%2BABtxAH4AHXhwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB%2BAB9zcQB%2BACBzcQB%2BACJzcQB%2!
 BACZ3RAAwI3tmb3J1bXM6b3V0cHV0TGluayhzaGFyZWQubGlua3NbJ2FkbWluJ10sdHJ1ZSl9ABBqYXZhLmxhbmcuT2JqZWN0c3EAfgAoc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABdAARZm9ydW1zOm91dHB1dExpbmtzcQB%2BACx3SAAGZm9ydW1zAApvdXRwdXRMaW5rACZvcmcuamJvc3MucG9ydGxldC5mb3J1bXMudWkuUG9ydGFsVXRpbAAKb3V0cHV0TGlua3VxAH4ALgAAAAJxAH4AMHEAfgAxeHh4cHh3XQBbL3ZpZXdzL2NvbW1vbi9jb21tb24ueGh0bWwgQDY5LDEwMyB2YWx1ZT0iI3tmb3J1bXM6b3V0cHV0TGluayhzaGFyZWQubGlua3NbJ2FkbWluJ10sdHJ1ZSl9Inh4eHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHQACG1haW5tZW51cHBwcHBwdXEAfgAAAAAAA3VxAH4AAAAAABx1cQB%2BAAAAAAADdXEAfgAAAAAAB3QANl9pZDE4amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4AF3EAfgBZc3EAfgAEP0AAAAAAAAx3CAAAABAAAAACcQB%2BABl0ACQvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIzZxAH4AG3EAfgAdeHBzcQB%2BAAQ%2FQAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJndEADAje2ZvcnVtczpvdXRwdXRMaW5rKHNoYXJlZC5saW5rc1sndG9waWMnXSx0cnVlKX0AEGphdmEubGFuZy5PYmplY3RzcQB%2BAChzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAF0ABFmb3J1bXM6b3V0cHV0TGlua3NxAH4ALHd!
 IAAZmb3J1bXMACm91dHB1dExpbmsAJm9yZy5qYm9zcy5wb3J0bGV0LmZvcnVtcy51aS5Qb
3J0YWxVdGlsAApvdXRwdXRMaW5rdXEAfgAuAAAAAnEAfgAwcQB%2BADF4eHhweHdkAGIvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIEA0Nyw1MyB2YWx1ZT0iI3tmb3J1bXM6b3V0cHV0TGluayhzaGFyZWQubGlua3NbJ3RvcGljJ10sdHJ1ZSl9Inh4eHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHQACW1haW50aXRsZXBwcHBwc3EAfgAQAAAAAncEAAAAAnVxAH4AAAAAAAN1cQB%2BAAAAAAADdXEAfgAAAAAAB3QANl9pZDE5amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBwcHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAkL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCM3eHBzcQB%2BAAQ%2FQAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJnclABEje3RvcGljLnRvcGljLmlkfQAQamF2YS5sYW5nLk9iamVjdHBweHdFAEMvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIEA0OCw2NCB2YWx1ZT0iI3t0b3BpYy50b3BpYy5pZH0ieHh4dAABdHBwcHVxAH4AAAAAAAN1cQB%2BAAAAAAAFdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADZfaWQyMGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwdAAQamF2YXguZmFjZXMuVGV4dHBzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAJC92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjOHhwc3EAfgAE!
 P0AAAAAAAAF3CAAAAAIAAAABcQB%2BAB9zcQB%2BACBzcQB%2BACJzcQB%2BACZ3KgAWI3t0b3BpYy50b3BpYy5zdWJqZWN0fQAQamF2YS5sYW5nLk9iamVjdHBweHdKAEgvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIEA0OSw2NSB2YWx1ZT0iI3t0b3BpYy50b3BpYy5zdWJqZWN0fSJ4eHhwcHBwcHBwcHh1cQB%2BAAAAAAADdXEAfgAAAAAAFnVxAH4AAAAAAAd0ADZfaWQyM2picG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwdAAQamF2YXguZmFjZXMuRm9ybXEAfgCBc3EAfgAEP0AAAAAAAAx3CAAAABAAAAADdABJamF2YXguZmFjZXMuY29tcG9uZW50LlVJRm9ybS5vcmcuYXBhY2hlLm15ZmFjZXMuSElEREVOX0NPTU1BTkRfSU5QVVRTX1NFVHNyABFqYXZhLnV0aWwuSGFzaFNldLpEhZWWuLc0AwAAeHB3DAAAABA%2FQAAAAAAAA3QAAWZ0AAF0dABEX2lkMjNqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqOl9saW5rX2hpZGRlbl94cQB%2BABl0ACUvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIzMwcQB%2BABtxAH4AHXhwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBzcQB%2BABAAAAACdwQAAAACdXEAfgAAAAAAA3VxAH4AAAAAABx1cQB%2BAAAAAAAFdXEAfgAAAAAAB3QACG5ld1RvcGljcHEAfgAXdAA%2FX2lkMjNqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucG!
 JqOm5ld1RvcGljc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABcQB%2BABl0ACUvdmlld3MvdG
9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIzQxeHBwc3IAJ2NvbS5zdW4uZmFjZWxldHMuZWwuTGVnYWN5TWV0aG9kQmluZGluZwAAAAAAAAABAgABTAABbXQAG0xqYXZheC9lbC9NZXRob2RFeHByZXNzaW9uO3hwc3IAJ2NvbS5zdW4uZmFjZWxldHMuZWwuVGFnTWV0aG9kRXhwcmVzc2lvbgAAAAAAAAABDAAAeHIAGWphdmF4LmVsLk1ldGhvZEV4cHJlc3Npb26yL8qL5Pc0jgIAAHhxAH4AJHNyAB9jb20uc3VuLmVsLk1ldGhvZEV4cHJlc3Npb25JbXBs3VJ%2BOAxZk%2B8MAAB4cQB%2BAJh3JQARI3tuZXdUb3BpYy5zdGFydH0AEGphdmEubGFuZy5TdHJpbmd1cQB%2BAC4AAAAAcHB4d0gARi92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwgQDE0NCwxMTIgYWN0aW9uPSIje25ld1RvcGljLnN0YXJ0fSJ4cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdAAWdGV4dC1kZWNvcmF0aW9uOiBub25lO3BwcHBwcHNxAH4AEAAAAAF3BAAAAAF1cQB%2BAAAAAAADdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADZfaWQyNmpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcHBzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAJS92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjNDJ4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmdysAFyN7dG9waWMudG9waWMuZm9ydW0uaWR9ABBqYXZhLmxhbmcuT2JqZWN0cHB4d0wAS!
 i92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwgQDE0NSw3OSB2YWx1ZT0iI3t0b3BpYy50b3BpYy5mb3J1bS5pZH0ieHh4cQB%2BAIdwcHB4dXEAfgAAAAAAA3VxAH4AAAAAABx1cQB%2BAAAAAAAFdXEAfgAAAAAAB3QACnJlcGx5VG9waWNwcQB%2BABd0AEFfaWQyM2picG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmo6cmVwbHlUb3BpY3NxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAlL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCM0NXhwcHNxAH4AlHNxAH4Al3NxAH4AmncnABMje3JlcGx5VG9waWMuc3RhcnR9ABBqYXZhLmxhbmcuU3RyaW5ndXEAfgAuAAAAAHBweHdKAEgvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIEAxNTYsMTE2IGFjdGlvbj0iI3tyZXBseVRvcGljLnN0YXJ0fSJ4cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdAAWdGV4dC1kZWNvcmF0aW9uOiBub25lO3BwcHBwcHNxAH4AEAAAAAJ3BAAAAAJ1cQB%2BAAAAAAADdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADZfaWQzMWpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcHBzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAJS92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjNDZ4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmdysAFyN7dG9waWMudG9waWMuZ!
 m9ydW0uaWR9ABBqYXZhLmxhbmcuT2JqZWN0cHB4d0wASi92aWV3cy90b3BpY3Mvdmlld3R
vcGljX2JvZHkueGh0bWwgQDE1Nyw3OSB2YWx1ZT0iI3t0b3BpYy50b3BpYy5mb3J1bS5pZH0ieHh4dAABZnBwcHVxAH4AAAAAAAN1cQB%2BAAAAAAADdXEAfgAAAAAAB3QANl9pZDMyamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBwcHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAlL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCM0N3hwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB%2BAB9zcQB%2BACBzcQB%2BACJzcQB%2BACZ3JQARI3t0b3BpYy50b3BpYy5pZH0AEGphdmEubGFuZy5PYmplY3RwcHh3RgBEL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCBAMTU4LDczIHZhbHVlPSIje3RvcGljLnRvcGljLmlkfSJ4eHhxAH4AiHBwcHh4dXEAfgAAAAAAA3VxAH4AAAAAABx1cQB%2BAAAAAAADdXEAfgAAAAAAB3QANl9pZDM3amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4AF3EAfgDQc3EAfgAEP0AAAAAAAAx3CAAAABAAAAACcQB%2BABl0ACUvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIzQ5cQB%2BABtxAH4AHXhwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB%2BAB9zcQB%2BACBzcQB%2BACJzcQB%2BACZ3RwAzI3tmb3J1bXM6b3V0cHV0TGluayhzaGFyZWQubGlua3NbJ2NhdGVnb3J5J10sdHJ1ZSl9ABBqYXZhLmxhbmcuT2JqZWN0c3EAfgAoc3EAfgAEP0AA!
 AAAAAAx3CAAAABAAAAABdAARZm9ydW1zOm91dHB1dExpbmtzcQB%2BACx3SAAGZm9ydW1zAApvdXRwdXRMaW5rACZvcmcuamJvc3MucG9ydGxldC5mb3J1bXMudWkuUG9ydGFsVXRpbAAKb3V0cHV0TGlua3VxAH4ALgAAAAJxAH4AMHEAfgAxeHh4cHh3aABmL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCBAMTc3LDUwIHZhbHVlPSIje2ZvcnVtczpvdXRwdXRMaW5rKHNoYXJlZC5saW5rc1snY2F0ZWdvcnknXSx0cnVlKX0ieHh4cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdAADbmF2cHBwcHBzcQB%2BABAAAAABdwQAAAABdXEAfgAAAAAAA3VxAH4AAAAAAAV1cQB%2BAAAAAAADdXEAfgAAAAAAB3QANl9pZDM4amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4Ad3BzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAJS92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjNTB4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmdyoAFiN7c2hhcmVkLm1haW5QYWdlTmFtZX0AEGphdmEubGFuZy5PYmplY3RwcHh3SwBJL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCBAMTc4LDY4IHZhbHVlPSIje3NoYXJlZC5tYWluUGFnZU5hbWV9Inh4eHBwcHBwcHBweHVxAH4AAAAAAAN1cQB%2BAAAAAAAcdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADZfaWQ0MGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18y!
 ZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB%2BABdxAH4A7XNxAH4ABD9AAAAAAAAMdwgA
AAAQAAAAAnEAfgAZdAAlL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCM1MXEAfgAbcQB%2BAB14cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmd0cAMyN7Zm9ydW1zOm91dHB1dExpbmsoc2hhcmVkLmxpbmtzWydjYXRlZ29yeSddLHRydWUpfQAQamF2YS5sYW5nLk9iamVjdHNxAH4AKHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXQAEWZvcnVtczpvdXRwdXRMaW5rc3EAfgAsd0gABmZvcnVtcwAKb3V0cHV0TGluawAmb3JnLmpib3NzLnBvcnRsZXQuZm9ydW1zLnVpLlBvcnRhbFV0aWwACm91dHB1dExpbmt1cQB%2BAC4AAAACcQB%2BADBxAH4AMXh4eHB4d2gAZi92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwgQDE4Miw1MCB2YWx1ZT0iI3tmb3J1bXM6b3V0cHV0TGluayhzaGFyZWQubGlua3NbJ2NhdGVnb3J5J10sdHJ1ZSl9Inh4eHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHQAA25hdnBwcHBwc3EAfgAQAAAAAncEAAAAAnVxAH4AAAAAAAN1cQB%2BAAAAAAADdXEAfgAAAAAAB3QANl9pZDQxamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBwcHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAlL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCM1Mnhwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB%2BAB9zcQB%2BACBzcQB%2BACJzcQB%2BACZ3NAAgI3t0b3BpYy50b3BpYy5mb3J1b!
 S5jYXRlZ29yeS5pZH0AEGphdmEubGFuZy5PYmplY3RwcHh3VQBTL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCBAMTg0LDczIHZhbHVlPSIje3RvcGljLnRvcGljLmZvcnVtLmNhdGVnb3J5LmlkfSJ4eHh0AAFjcHBwdXEAfgAAAAAAA3VxAH4AAAAAAAV1cQB%2BAAAAAAADdXEAfgAAAAAAB3QANl9pZDQyamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4Ad3BzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAJS92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjNTN4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmdzcAIyN7dG9waWMudG9waWMuZm9ydW0uY2F0ZWdvcnkudGl0bGV9ABBqYXZhLmxhbmcuT2JqZWN0cHB4d1gAVi92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwgQDE4NSw4MSB2YWx1ZT0iI3t0b3BpYy50b3BpYy5mb3J1bS5jYXRlZ29yeS50aXRsZX0ieHh4cHBwcHBwcHB4dXEAfgAAAAAAA3VxAH4AAAAAABx1cQB%2BAAAAAAADdXEAfgAAAAAAB3QANl9pZDQ0amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4AF3EAfgEVc3EAfgAEP0AAAAAAAAx3CAAAABAAAAACcQB%2BABl0ACUvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIzU0cQB%2BABtxAH4AHXhwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB%2!
 BAB9zcQB%2BACBzcQB%2BACJzcQB%2BACZ3RAAwI3tmb3J1bXM6b3V0cHV0TGluayhzaGF
yZWQubGlua3NbJ2ZvcnVtJ10sdHJ1ZSl9ABBqYXZhLmxhbmcuT2JqZWN0c3EAfgAoc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABdAARZm9ydW1zOm91dHB1dExpbmtzcQB%2BACx3SAAGZm9ydW1zAApvdXRwdXRMaW5rACZvcmcuamJvc3MucG9ydGxldC5mb3J1bXMudWkuUG9ydGFsVXRpbAAKb3V0cHV0TGlua3VxAH4ALgAAAAJxAH4AMHEAfgAxeHh4cHh3ZQBjL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCBAMTg5LDUwIHZhbHVlPSIje2ZvcnVtczpvdXRwdXRMaW5rKHNoYXJlZC5saW5rc1snZm9ydW0nXSx0cnVlKX0ieHh4cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdAADbmF2cHBwcHBzcQB%2BABAAAAACdwQAAAACdXEAfgAAAAAAA3VxAH4AAAAAAAN1cQB%2BAAAAAAAHdAA2X2lkNDVqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHBwc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABcQB%2BABl0ACUvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIzU1eHBzcQB%2BAAQ%2FQAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJncrABcje3RvcGljLnRvcGljLmZvcnVtLmlkfQAQamF2YS5sYW5nLk9iamVjdHBweHdMAEovdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIEAxOTAsNzMgdmFsdWU9IiN7dG9waWMudG9waWMuZm9ydW0uaWR9Inh4eHQAAWZwcHB1cQB%2BAAAAAAADdXEAfgAAAAAABXVxAH4AAAAAAAN1cQ!
 B%2BAAAAAAAHdAA2X2lkNDZqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHEAfgB3cHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAlL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCM1Nnhwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB%2BAB9zcQB%2BACBzcQB%2BACJzcQB%2BACZ3LQAZI3t0b3BpYy50b3BpYy5mb3J1bS5uYW1lfQAQamF2YS5sYW5nLk9iamVjdHBweHdOAEwvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIEAxOTEsNzEgdmFsdWU9IiN7dG9waWMudG9waWMuZm9ydW0ubmFtZX0ieHh4cHBwcHBwcHB4dXEAfgAAAAAAA3VxAH4AAAAAABx1cQB%2BAAAAAAADdXEAfgAAAAAAB3QANl9pZDQ4amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4AF3EAfgE9c3EAfgAEP0AAAAAAAAx3CAAAABAAAAACcQB%2BABl0ACUvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIzU3cQB%2BABtxAH4AHXhwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB%2BAB9zcQB%2BACBzcQB%2BACJzcQB%2BACZ3RAAwI3tmb3J1bXM6b3V0cHV0TGluayhzaGFyZWQubGlua3NbJ3RvcGljJ10sdHJ1ZSl9ABBqYXZhLmxhbmcuT2JqZWN0c3EAfgAoc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABdAARZm9ydW1zOm91dHB1dExpbmtzcQB%2BACx3SAAGZm9ydW1zAApvdXRwdXRMaW5rACZvcmcu!
 amJvc3MucG9ydGxldC5mb3J1bXMudWkuUG9ydGFsVXRpbAAKb3V0cHV0TGlua3VxAH4ALg
AAAAJxAH4AMHEAfgAxeHh4cHh3ZQBjL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCBAMTk1LDUwIHZhbHVlPSIje2ZvcnVtczpvdXRwdXRMaW5rKHNoYXJlZC5saW5rc1sndG9waWMnXSx0cnVlKX0ieHh4cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdAADbmF2cHBwcHBzcQB%2BABAAAAADdwQAAAADdXEAfgAAAAAAA3VxAH4AAAAAAAN1cQB%2BAAAAAAAHdAA2X2lkNDlqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHBwc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABcQB%2BABl0ACUvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIzU4eHBzcQB%2BAAQ%2FQAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJnclABEje3RvcGljLnRvcGljLmlkfQAQamF2YS5sYW5nLk9iamVjdHBweHdGAEQvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIEAxOTYsNjcgdmFsdWU9IiN7dG9waWMudG9waWMuaWR9Inh4eHQAAXRwcHB1cQB%2BAAAAAAADdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADZfaWQ1MGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcHBzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAJS92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjNTl4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmdysAFyN7dG9waWMudG9!
 waWMuZm9ydW0uaWR9ABBqYXZhLmxhbmcuT2JqZWN0cHB4d0wASi92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwgQDE5Nyw3MyB2YWx1ZT0iI3t0b3BpYy50b3BpYy5mb3J1bS5pZH0ieHh4dAABZnBwcHVxAH4AAAAAAAN1cQB%2BAAAAAAAFdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADZfaWQ1MWpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB%2BAHdwc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABcQB%2BABl0ACUvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIzYweHBzcQB%2BAAQ%2FQAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJncqABYje3RvcGljLnRvcGljLnN1YmplY3R9ABBqYXZhLmxhbmcuT2JqZWN0cHB4d0sASS92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwgQDE5OCw2OCB2YWx1ZT0iI3t0b3BpYy50b3BpYy5zdWJqZWN0fSJ4eHhwcHBwcHBwcHh1cQB%2BAAAAAAADdXEAfgAAAAAAFnVxAH4AAAAAAAd0ABB0b3BpY1dhdGNoRm9ybUlkcHEAfgCCcQB%2BAW9zcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAANxAH4AhHNxAH4AhXcMAAAAED9AAAAAAAACdAAedG9waWNXYXRjaEZvcm1JZDpfbGlua19oaWRkZW5fdAABdHhxAH4AGXQAJS92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjNjJxAH4AG3EAfgAdeHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHNxAH4AEAAAAAF3BAAAAAF1cQB%2!
 BAAAAAAADdXEAfgAAAAAAHHVxAH4AAAAAAAV1cQB%2BAAAAAAAHdAANYWN0aXZhdGVXYXR
jaHBxAH4AF3QAHnRvcGljV2F0Y2hGb3JtSWQ6YWN0aXZhdGVXYXRjaHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAlL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCM3MHhwcHNxAH4AlHNxAH4Al3NxAH4AmncvABsje3RvcGljV2F0Y2guYWN0aXZhdGVXYXRjaH0AEGphdmEubGFuZy5TdHJpbmd1cQB%2BAC4AAAAAcHB4d1EATy92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwgQDIxNyw4MyBhY3Rpb249IiN7dG9waWNXYXRjaC5hY3RpdmF0ZVdhdGNofSJ4cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHNxAH4AEAAAAAJ3BAAAAAJ1cQB%2BAAAAAAADdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADZfaWQ1NWpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcHBzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAJS92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjNzF4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmdyUAESN7dG9waWMudG9waWMuaWR9ABBqYXZhLmxhbmcuT2JqZWN0cHB4d0YARC92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwgQDIxOCw2MSB2YWx1ZT0iI3t0b3BpYy50b3BpYy5pZH0ieHh4cQB%2BAXNwcHB1cQB%2BAAAAAAADdXEAfgAAAAAABXVxAH4AAAAAAAN1cQB%2BAAAAAAAHdAA2X2lkNTZqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMm!
 ZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHEAfgB3cHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAlL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCM3M3hwcHB0AApUb3BpY1dhdGNocHBwcHBweHh1cQB%2BAAAAAAADdXEAfgAAAAAAHHVxAH4AAAAAAAN1cQB%2BAAAAAAAHdAA2X2lkNjFqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHEAfgAXcQB%2BAZlzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAJxAH4AGXQAJS92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjODNxAH4AG3EAfgAdeHBzcQB%2BAAQ%2FQAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJnc2ACIje2ZvcnVtczpwb3N0UGVybWxpbmsocG9zdHJvdy5pZCl9ABBqYXZhLmxhbmcuT2JqZWN0c3EAfgAoc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABdAATZm9ydW1zOnBvc3RQZXJtbGlua3NxAH4ALHdMAAZmb3J1bXMADHBvc3RQZXJtbGluawAmb3JnLmpib3NzLnBvcnRsZXQuZm9ydW1zLnVpLlBvcnRhbFV0aWwADHBvc3RQZXJtbGlua3VxAH4ALgAAAAFxAH4AMHh4eHNyACJjb20uc3VuLmVsLmxhbmcuVmFyaWFibGVNYXBwZXJJbXBsAAAAAAAAAAEMAAB4cHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXQAB3Bvc3Ryb3dzcgA1Y29tLnN1bi5mYWNlbGV0cy50YWcuanN0bC5jb3JlLkluZGV4ZWRWYWx1ZUV4cHJlc3Npb24AAAAAAAAAAQIAAkwAAWl0ABNM!
 amF2YS9sYW5nL0ludGVnZXI7TAAEb3JpZ3QAGkxqYXZheC9lbC9WYWx1ZUV4cHJlc3Npb2
47eHEAfgAjc3IAEWphdmEubGFuZy5JbnRlZ2VyEuKgpPeBhzgCAAFJAAV2YWx1ZXhxAH4ADgAAAABzcQB%2BACJzcQB%2BACZ3IQANI3t0b3BpYy5wYWdlfQAQamF2YS5sYW5nLk9iamVjdHBweHdCAEAvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIEAyNTksODAgaXRlbXM9IiN7dG9waWMucGFnZX0ieHh4eHdYAFYvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIEAyODUsMTE5IHZhbHVlPSIje2ZvcnVtczpwb3N0UGVybWxpbmsocG9zdHJvdy5pZCl9Inh4eHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdAAWdGV4dC1kZWNvcmF0aW9uOiBub25lO3BwcHBwcHB1cQB%2BAAAAAAADdXEAfgAAAAAAFnVxAH4AAAAAAAd0ADZfaWQ2NGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB%2BAIJxAH4BtXNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAA3EAfgCEc3EAfgCFdwwAAAAQP0AAAAAAAAR0AAFmdAABdHQAAXB0AERfaWQ2NGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmo6X2xpbmtfaGlkZGVuX3hxAH4AGXQAJS92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjODVxAH4AG3EAfgAdeHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHNxAH4AEAAAAAN3BAAAAAN1cQB%2BAAAAAAADdXEAfgAAAAAAHHVxAH4AAAAAAAV1cQB%2BAAAAAAAHdAA2X2lkNjdqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9!
 zc0ZvcnVtc1dpbmRvd3NucGJqcHEAfgAXdABtX2lkNjRqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqOl9pZDY3amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAlL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCM4N3hwcHNxAH4AlHNxAH4Al3NxAH4AmncsABgje3JlcGx5VG9waWMuc3RhcnRRdW90ZX0AEGphdmEubGFuZy5TdHJpbmd1cQB%2BAC4AAAAAcHB4d08ATS92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwgQDMxMSwxMTMgYWN0aW9uPSIje3JlcGx5VG9waWMuc3RhcnRRdW90ZX0ieHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHQAFnRleHQtZGVjb3JhdGlvbjogbm9uZTtwcHBwcHBzcQB%2BABAAAAADdwQAAAADdXEAfgAAAAAAA3VxAH4AAAAAAAN1cQB%2BAAAAAAAHdAA2X2lkNjhqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHBwc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABcQB%2BABl0ACUvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIzg4eHBzcQB%2BAAQ%2FQAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJncrABcje3RvcGljLnRvcGljLmZvcnVtLmlkfQAQamF2YS5sYW5nLk9iamVjdHBweHdMAEovdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1!
 sIEAzMTIsNzcgdmFsdWU9IiN7dG9waWMudG9waWMuZm9ydW0uaWR9Inh4eHEAfgG4cHBwd
XEAfgAAAAAAA3VxAH4AAAAAAAN1cQB%2BAAAAAAAHdAA2X2lkNjlqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHBwc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABcQB%2BABl0ACUvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIzg5eHBzcQB%2BAAQ%2FQAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJnclABEje3RvcGljLnRvcGljLmlkfQAQamF2YS5sYW5nLk9iamVjdHBweHdGAEQvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIEAzMTMsNzEgdmFsdWU9IiN7dG9waWMudG9waWMuaWR9Inh4eHEAfgG5cHBwdXEAfgAAAAAAA3VxAH4AAAAAAAN1cQB%2BAAAAAAAHdAA2X2lkNzBqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHBwc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABcQB%2BABl0ACUvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIzkweHBzcQB%2BAAQ%2FQAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJnchAA0je3Bvc3Ryb3cuaWR9ABBqYXZhLmxhbmcuT2JqZWN0cHNxAH4BpXNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXQAB3Bvc3Ryb3dxAH4BrHh4eHdCAEAvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIEAzMTQsNjcgdmFsdWU9IiN7cG9zdHJvdy5pZH0ieHh4cQB%2BAbpwcHB4dXEAfgAAAAAAA3VxAH4AAAAAABx1cQB%!
 2BAAAAAAAFdXEAfgAAAAAAB3QANl9pZDc1amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4AF3QAbV9pZDY0amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBiajpfaWQ3NWpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAJS92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjOTN4cHBzcQB%2BAJRzcQB%2BAJdzcQB%2BAJp3JQARI3tlZGl0UG9zdC5zdGFydH0AEGphdmEubGFuZy5TdHJpbmd1cQB%2BAC4AAAAAcHB4d0gARi92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwgQDMyNCwxMDYgYWN0aW9uPSIje2VkaXRQb3N0LnN0YXJ0fSJ4cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdAAWdGV4dC1kZWNvcmF0aW9uOiBub25lO3BwcHBwcHNxAH4AEAAAAAF3BAAAAAF1cQB%2BAAAAAAADdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADZfaWQ3NmpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcHBzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAJS92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjOTR4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmdyEADSN7cG9zdHJvdy5pZH0AEGphdmEubGFuZy5PYmplY3Rwc3EA!
 fgGlc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABcQB%2BAexxAH4BrHh4eHdCAEAvdmlld3Mv
dG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIEAzMjUsNjggdmFsdWU9IiN7cG9zdHJvdy5pZH0ieHh4dAABcHBwcHh1cQB%2BAAAAAAADdXEAfgAAAAAAHHVxAH4AAAAAAAN1cQB%2BAAAAAAAHdAA2X2lkODFqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHEAfgAXdABtX2lkNjRqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqOl9pZDgxamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAlL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCM5N3hwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB%2BAB9zcQB%2BACBzcQB%2BACJzcQB%2BACZ3TgA6I3tmb3J1bXM6b3V0cHV0TGluaygnL3ZpZXdzL3RvcGljcy9kZWxldGVfcG9zdC5qc2YnLHRydWUpfQAQamF2YS5sYW5nLk9iamVjdHNxAH4AKHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXQAEWZvcnVtczpvdXRwdXRMaW5rc3EAfgAsd0gABmZvcnVtcwAKb3V0cHV0TGluawAmb3JnLmpib3NzLnBvcnRsZXQuZm9ydW1zLnVpLlBvcnRhbFV0aWwACm91dHB1dExpbmt1cQB%2BAC4AAAACcQB%2BADBxAH4AMXh4eHB4d3AAbi92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwgQDMzNSwxNDUgdmFsdWU9IiN7Zm9ydW1zOm91dHB1dExpbmsoJy92aWV3cy90b3BpY3MvZGVsZ!
 XRlX3Bvc3QuanNmJyx0cnVlKX0ieHh4cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB0ABZ0ZXh0LWRlY29yYXRpb246IG5vbmU7cHBwcHBwc3EAfgAQAAAAA3cEAAAAA3VxAH4AAAAAAAN1cQB%2BAAAAAAADdXEAfgAAAAAAB3QANl9pZDgzamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBwcHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAlL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCM5OHhwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB%2BAB9zcQB%2BACBzcQB%2BACJzcQB%2BACZ3IQANI3twb3N0cm93LmlkfQAQamF2YS5sYW5nLk9iamVjdHBzcQB%2BAaVzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAFxAH4B7HEAfgGseHh4d0IAQC92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwgQDMzNiw3NCB2YWx1ZT0iI3twb3N0cm93LmlkfSJ4eHh0AAFwcHBwdXEAfgAAAAAAA3VxAH4AAAAAAAN1cQB%2BAAAAAAAHdAA2X2lkODRqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHBwc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABcQB%2BABl0ACUvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIzk5eHBzcQB%2BAAQ%2FQAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJnclABEje3RvcGljLnRvcGljLmlkfQAQamF2YS5sYW5nLk9iamVjdHBweHdGAEQvdmlld3MvdG9wa!
 WNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIEAzMzcsNzggdmFsdWU9IiN7dG9waWMudG9waWM
uaWR9Inh4eHQAAXRwcHB1cQB%2BAAAAAAADdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADZfaWQ4NWpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcHBzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAJi92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjMTAweHBzcQB%2BAAQ%2FQAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJncrABcje3RvcGljLnRvcGljLmZvcnVtLmlkfQAQamF2YS5sYW5nLk9iamVjdHBweHdMAEovdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIEAzMzgsODQgdmFsdWU9IiN7dG9waWMudG9waWMuZm9ydW0uaWR9Inh4eHQAAWZwcHB4eHVxAH4AAAAAAAN1cQB%2BAAAAAAAFdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADZfaWQ5MWpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB%2BAHdwc3EAfgAEP0AAAAAAAAx3CAAAABAAAAACcQB%2BABl0ACYvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIzEwMnEAfgAbcQB%2BAB14cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmd0cAMyN7Zm9ydW1zOmZvcm1hdE1lc3NhZ2UocG9zdHJvdy5tZXNzYWdlLnRleHQsZmFsc2UpfQAQamF2YS5sYW5nLk9iamVjdHNxAH4AKHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXQAFGZvcnVtczpmb3JtYXRNZXNzYWdlc3EAfgAsd0!
 4ABmZvcnVtcwANZm9ybWF0TWVzc2FnZQAmb3JnLmpib3NzLnBvcnRsZXQuZm9ydW1zLnVpLlBvcnRhbFV0aWwADWZvcm1hdE1lc3NhZ2V1cQB%2BAC4AAAACcQB%2BADBxAH4AMXh4eHNxAH4BpXNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXQAB3Bvc3Ryb3dxAH4BrHh4eHdpAGcvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIEAzNTgsMTI4IHZhbHVlPSIje2ZvcnVtczpmb3JtYXRNZXNzYWdlKHBvc3Ryb3cubWVzc2FnZS50ZXh0LGZhbHNlKX0ieHh4cHBzcgARamF2YS5sYW5nLkJvb2xlYW7NIHKA1Zz67gIAAVoABXZhbHVleHAAcHBwcHB1cQB%2BAAAAAAADdXEAfgAAAAAAHHVxAH4AAAAAAAN1cQB%2BAAAAAAAHdAA2X2lkOTdqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHEAfgAXcQB%2BAldzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAJxAH4AGXQAJi92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjMTE4cQB%2BABtzcQB%2BABx3HgAUL3ZpZXdzL2p1bXBib3gueGh0bWwAAAES0y2ZhHh4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmd0YAMiN7Zm9ydW1zOm91dHB1dExpbmsoc2hhcmVkLmxpbmtzWydwcm9maWxlJ10sdHJ1ZSl9ABBqYXZhLmxhbmcuT2JqZWN0c3EAfgAoc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABdAARZm9ydW1zOm91dHB1dExpbmtzcQB%2BACx3SAAGZm9ydW1zAApvdXRwdX!
 RMaW5rACZvcmcuamJvc3MucG9ydGxldC5mb3J1bXMudWkuUG9ydGFsVXRpbAAKb3V0cHV0
TGlua3VxAH4ALgAAAAJxAH4AMHEAfgAxeHh4cHh3aABmL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCBANDExLDEzNSB2YWx1ZT0iI3tmb3J1bXM6b3V0cHV0TGluayhzaGFyZWQubGlua3NbJ3Byb2ZpbGUnXSx0cnVlKX0ieHh4cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB0ABZ0ZXh0LWRlY29yYXRpb246IG5vbmU7cHBwcHBwc3EAfgAQAAAAAXcEAAAAAXVxAH4AAAAAAAN1cQB%2BAAAAAAADdXEAfgAAAAAAB3QANl9pZDk4amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBwcHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAmL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCMxMTl4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmdy0AGSN7cG9zdHJvdy5wb3N0ZXIudXNlci5pZH0AEGphdmEubGFuZy5PYmplY3Rwc3EAfgGlc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABdAAHcG9zdHJvd3EAfgGseHh4d04ATC92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwgQDQxMyw3OCB2YWx1ZT0iI3twb3N0cm93LnBvc3Rlci51c2VyLmlkfSJ4eHh0AAN1aWRwcHB4dXEAfgAAAAAAA3VxAH4AAAAAABZ1cQB%2BAAAAAAAHdAA3X2lkMTAzamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4AgnEAfgJ3c3EAfgAEP0AAAAAAAAx3CAAAABAAAAADcQB%2BAIRzcQB!
 %2BAIV3DAAAABA%2FQAAAAAAAA3QARV9pZDEwM2picG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmo6X2xpbmtfaGlkZGVuX3QAAWZ0AAF0eHEAfgAZdAAmL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCMxMzFxAH4AG3EAfgJaeHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHNxAH4AEAAAAAJ3BAAAAAJ1cQB%2BAAAAAAADdXEAfgAAAAAAHHVxAH4AAAAAAAV1cQB%2BAAAAAAAHdAAKbmV3VG9waWNfMXBxAH4AF3QAQl9pZDEwM2picG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmo6bmV3VG9waWNfMXNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAmL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCMxNDJ4cHBzcQB%2BAJRzcQB%2BAJdzcQB%2BAJp3JQARI3tuZXdUb3BpYy5zdGFydH0AEGphdmEubGFuZy5TdHJpbmd1cQB%2BAC4AAAAAcHB4d0gARi92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwgQDU5MiwxMTIgYWN0aW9uPSIje25ld1RvcGljLnN0YXJ0fSJ4cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdAAWdGV4dC1kZWNvcmF0aW9uOiBub25lO3BwcHBwcHNxAH4AEAAAAAF3BAAAAAF1cQB%2BAAAAAAADdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADdfaWQxMDZqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHBwc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABc!
 QB%2BABl0ACYvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIzE0M3hwc3EAf
gAEP0AAAAAAAAF3CAAAAAIAAAABcQB%2BAB9zcQB%2BACBzcQB%2BACJzcQB%2BACZ3KwAXI3t0b3BpYy50b3BpYy5mb3J1bS5pZH0AEGphdmEubGFuZy5PYmplY3RwcHh3TABKL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCBANTkzLDc5IHZhbHVlPSIje3RvcGljLnRvcGljLmZvcnVtLmlkfSJ4eHhxAH4Ce3BwcHh1cQB%2BAAAAAAADdXEAfgAAAAAAHHVxAH4AAAAAAAV1cQB%2BAAAAAAAHdAAMcmVwbHlUb3BpY18xcHEAfgAXdABEX2lkMTAzamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBiajpyZXBseVRvcGljXzFzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAJi92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjMTQ2eHBwc3EAfgCUc3EAfgCXc3EAfgCadycAEyN7cmVwbHlUb3BpYy5zdGFydH0AEGphdmEubGFuZy5TdHJpbmd1cQB%2BAC4AAAAAcHB4d0oASC92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwgQDYwNCwxMTYgYWN0aW9uPSIje3JlcGx5VG9waWMuc3RhcnR9InhwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB0ABZ0ZXh0LWRlY29yYXRpb246IG5vbmU7cHBwcHBwc3EAfgAQAAAAAncEAAAAAnVxAH4AAAAAAAN1cQB%2BAAAAAAADdXEAfgAAAAAAB3QAN19pZDExMWpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcHBzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAFxAH!
 4AGXQAJi92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjMTQ3eHBzcQB%2BAAQ%2FQAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJncrABcje3RvcGljLnRvcGljLmZvcnVtLmlkfQAQamF2YS5sYW5nLk9iamVjdHBweHdMAEovdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIEA2MDUsNzkgdmFsdWU9IiN7dG9waWMudG9waWMuZm9ydW0uaWR9Inh4eHQAAWZwcHB1cQB%2BAAAAAAADdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADdfaWQxMTJqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHBwc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABcQB%2BABl0ACYvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIzE0OHhwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB%2BAB9zcQB%2BACBzcQB%2BACJzcQB%2BACZ3JQARI3t0b3BpYy50b3BpYy5pZH0AEGphdmEubGFuZy5PYmplY3RwcHh3RgBEL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCBANjA2LDczIHZhbHVlPSIje3RvcGljLnRvcGljLmlkfSJ4eHhxAH4CfHBwcHh4dXEAfgAAAAAAA3VxAH4AAAAAABx1cQB%2BAAAAAAADdXEAfgAAAAAAB3QAN19pZDExOGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB%2BABdxAH4CvnNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAnEAfgAZdAAmL3ZpZXdzL3RvcGljcy92aWV3dG!
 9waWNfYm9keS54aHRtbCMxNTBxAH4AG3EAfgJaeHBzcQB%2BAAQ%2FQAAAAAAAAXcIAAAA
AgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJndHADMje2ZvcnVtczpvdXRwdXRMaW5rKHNoYXJlZC5saW5rc1snY2F0ZWdvcnknXSx0cnVlKX0AEGphdmEubGFuZy5PYmplY3RzcQB%2BAChzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAF0ABFmb3J1bXM6b3V0cHV0TGlua3NxAH4ALHdIAAZmb3J1bXMACm91dHB1dExpbmsAJm9yZy5qYm9zcy5wb3J0bGV0LmZvcnVtcy51aS5Qb3J0YWxVdGlsAApvdXRwdXRMaW5rdXEAfgAuAAAAAnEAfgAwcQB%2BADF4eHhweHdoAGYvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIEA2MjYsNTAgdmFsdWU9IiN7Zm9ydW1zOm91dHB1dExpbmsoc2hhcmVkLmxpbmtzWydjYXRlZ29yeSddLHRydWUpfSJ4eHhwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB0AANuYXZwcHBwcHNxAH4AEAAAAAF3BAAAAAF1cQB%2BAAAAAAADdXEAfgAAAAAABXVxAH4AAAAAAAN1cQB%2BAAAAAAAHdAA3X2lkMTE5amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4Ad3BzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAJi92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjMTUxeHBzcQB%2BAAQ%2FQAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJncqABYje3NoYXJlZC5tYWluUGFnZU5hbWV9ABBqYXZhLmxhbmcuT2JqZWN0cHB4d0sASS92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwgQ!
 DYyNyw2OCB2YWx1ZT0iI3tzaGFyZWQubWFpblBhZ2VOYW1lfSJ4eHhwcHBwcHBwcHh1cQB%2BAAAAAAADdXEAfgAAAAAAHHVxAH4AAAAAAAN1cQB%2BAAAAAAAHdAA3X2lkMTIxamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4AF3EAfgLbc3EAfgAEP0AAAAAAAAx3CAAAABAAAAACcQB%2BABl0ACYvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIzE1MnEAfgAbcQB%2BAlp4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmd0cAMyN7Zm9ydW1zOm91dHB1dExpbmsoc2hhcmVkLmxpbmtzWydjYXRlZ29yeSddLHRydWUpfQAQamF2YS5sYW5nLk9iamVjdHNxAH4AKHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXQAEWZvcnVtczpvdXRwdXRMaW5rc3EAfgAsd0gABmZvcnVtcwAKb3V0cHV0TGluawAmb3JnLmpib3NzLnBvcnRsZXQuZm9ydW1zLnVpLlBvcnRhbFV0aWwACm91dHB1dExpbmt1cQB%2BAC4AAAACcQB%2BADBxAH4AMXh4eHB4d2gAZi92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwgQDYzMSw1MCB2YWx1ZT0iI3tmb3J1bXM6b3V0cHV0TGluayhzaGFyZWQubGlua3NbJ2NhdGVnb3J5J10sdHJ1ZSl9Inh4eHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHQAA25hdnBwcHBwc3EAfgAQAAAAAncEAAAAAnVxAH4AAAAAAAN1cQB%2BAAAAAAADdXEAfgAAAAAAB3QAN19pZDEyMmpicG5zXzJmZGVmYXVsdF8!
 yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcHBzcQB%2BAAQ%2FQAAAAAAAD
HcIAAAAEAAAAAFxAH4AGXQAJi92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjMTUzeHBzcQB%2BAAQ%2FQAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJnc0ACAje3RvcGljLnRvcGljLmZvcnVtLmNhdGVnb3J5LmlkfQAQamF2YS5sYW5nLk9iamVjdHBweHdVAFMvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIEA2MzMsNzMgdmFsdWU9IiN7dG9waWMudG9waWMuZm9ydW0uY2F0ZWdvcnkuaWR9Inh4eHQAAWNwcHB1cQB%2BAAAAAAADdXEAfgAAAAAABXVxAH4AAAAAAAN1cQB%2BAAAAAAAHdAA3X2lkMTIzamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4Ad3BzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAJi92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjMTU0eHBzcQB%2BAAQ%2FQAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJnc3ACMje3RvcGljLnRvcGljLmZvcnVtLmNhdGVnb3J5LnRpdGxlfQAQamF2YS5sYW5nLk9iamVjdHBweHdYAFYvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIEA2MzQsODEgdmFsdWU9IiN7dG9waWMudG9waWMuZm9ydW0uY2F0ZWdvcnkudGl0bGV9Inh4eHBwcHBwcHBweHVxAH4AAAAAAAN1cQB%2BAAAAAAAcdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADdfaWQxMjVqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0Zv!
 cnVtc1dpbmRvd3NucGJqcHEAfgAXcQB%2BAwNzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAJxAH4AGXQAJi92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjMTU1cQB%2BABtxAH4CWnhwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB%2BAB9zcQB%2BACBzcQB%2BACJzcQB%2BACZ3RAAwI3tmb3J1bXM6b3V0cHV0TGluayhzaGFyZWQubGlua3NbJ2ZvcnVtJ10sdHJ1ZSl9ABBqYXZhLmxhbmcuT2JqZWN0c3EAfgAoc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABdAARZm9ydW1zOm91dHB1dExpbmtzcQB%2BACx3SAAGZm9ydW1zAApvdXRwdXRMaW5rACZvcmcuamJvc3MucG9ydGxldC5mb3J1bXMudWkuUG9ydGFsVXRpbAAKb3V0cHV0TGlua3VxAH4ALgAAAAJxAH4AMHEAfgAxeHh4cHh3ZQBjL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCBANjM4LDUwIHZhbHVlPSIje2ZvcnVtczpvdXRwdXRMaW5rKHNoYXJlZC5saW5rc1snZm9ydW0nXSx0cnVlKX0ieHh4cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdAADbmF2cHBwcHBzcQB%2BABAAAAACdwQAAAACdXEAfgAAAAAAA3VxAH4AAAAAAAN1cQB%2BAAAAAAAHdAA3X2lkMTI2amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBwcHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAmL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCMxNTZ4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAX!
 EAfgAfc3EAfgAgc3EAfgAic3EAfgAmdysAFyN7dG9waWMudG9waWMuZm9ydW0uaWR9ABBq
YXZhLmxhbmcuT2JqZWN0cHB4d0wASi92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwgQDYzOSw3MyB2YWx1ZT0iI3t0b3BpYy50b3BpYy5mb3J1bS5pZH0ieHh4dAABZnBwcHVxAH4AAAAAAAN1cQB%2BAAAAAAAFdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADdfaWQxMjdqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHEAfgB3cHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAmL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCMxNTd4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmdy0AGSN7dG9waWMudG9waWMuZm9ydW0ubmFtZX0AEGphdmEubGFuZy5PYmplY3RwcHh3TgBML3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCBANjQwLDcxIHZhbHVlPSIje3RvcGljLnRvcGljLmZvcnVtLm5hbWV9Inh4eHBwcHBwcHBweHVxAH4AAAAAAAN1cQB%2BAAAAAAAcdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADdfaWQxMjlqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHEAfgAXcQB%2BAytzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAJxAH4AGXQAJi92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjMTU4cQB%2BABtxAH4CWnhwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB%2BAB9zcQB%2BACBzcQB%2BACJzcQB%2BACZ3RAAwI3tmb3J1bXM6b3V0c!
 HV0TGluayhzaGFyZWQubGlua3NbJ3RvcGljJ10sdHJ1ZSl9ABBqYXZhLmxhbmcuT2JqZWN0c3EAfgAoc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABdAARZm9ydW1zOm91dHB1dExpbmtzcQB%2BACx3SAAGZm9ydW1zAApvdXRwdXRMaW5rACZvcmcuamJvc3MucG9ydGxldC5mb3J1bXMudWkuUG9ydGFsVXRpbAAKb3V0cHV0TGlua3VxAH4ALgAAAAJxAH4AMHEAfgAxeHh4cHh3ZQBjL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCBANjQ0LDUwIHZhbHVlPSIje2ZvcnVtczpvdXRwdXRMaW5rKHNoYXJlZC5saW5rc1sndG9waWMnXSx0cnVlKX0ieHh4cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdAADbmF2cHBwcHBzcQB%2BABAAAAACdwQAAAACdXEAfgAAAAAAA3VxAH4AAAAAAAN1cQB%2BAAAAAAAHdAA3X2lkMTMwamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBwcHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAmL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCMxNTl4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmdyUAESN7dG9waWMudG9waWMuaWR9ABBqYXZhLmxhbmcuT2JqZWN0cHB4d0YARC92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwgQDY0NSw2NyB2YWx1ZT0iI3t0b3BpYy50b3BpYy5pZH0ieHh4dAABdHBwcHVxAH4AAAAAAAN1cQB%2BAAAAAAAFdXEAfgAAAAAAA3VxAH4AA!
 AAAAAd0ADdfaWQxMzFqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1d
pbmRvd3NucGJqcHEAfgB3cHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAmL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCMxNjB4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmdyoAFiN7dG9waWMudG9waWMuc3ViamVjdH0AEGphdmEubGFuZy5PYmplY3RwcHh3SwBJL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCBANjQ2LDY4IHZhbHVlPSIje3RvcGljLnRvcGljLnN1YmplY3R9Inh4eHBwcHBwcHBweHVxAH4AAAAAAAN1cQB%2BAAAAAAAWdXEAfgAAAAAAB3QABHBvc3RwcQB%2BAIJxAH4DUnNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAA3EAfgCEc3EAfgCFdwwAAAAQP0AAAAAAAAF0ABJwb3N0Ol9saW5rX2hpZGRlbl94cQB%2BABl0ACYvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIzE4N3EAfgAbcQB%2BAlp4cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwc3EAfgAQAAAAA3cEAAAAA3VxAH4AAAAAAAN1cQB%2BAAAAAAAadXEAfgAAAAAACXVxAH4AAAAAAAN1cQB%2BAAAAAAAHdAAHbWVzc2FnZXB0ABRqYXZheC5mYWNlcy5UZXh0YXJlYXQADHBvc3Q6bWVzc2FnZXNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAmL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCMxODh4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmdykAFSN7cmVwbHlUb3BpYy5tZXNzYWdlfQAQ!
 amF2YS5sYW5nLk9iamVjdHBweHdLAEkvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIEA3NTMsMTE4IHZhbHVlPSIje3JlcGx5VG9waWMubWVzc2FnZX0ieHh4cHBwcQB%2BAlJwcHNxAH4CUQFwcHBwc3EAfgGtAAAAMnBwcHBwcHBwcHBwcHBwcHBwcHNxAH4BrQAAAApwdAAEcG9zdHBwcHB1cQB%2BAAAAAAADdXEAfgAAAAAAG3VxAH4AAAAAAAV1cQB%2BAAAAAAAHdAA3X2lkMTM4amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianB0ABJqYXZheC5mYWNlcy5CdXR0b250ADxwb3N0Ol9pZDEzOGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAJi92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjMTg5eHBzcQB%2BAAQ%2FQAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJncnABMke3Jlc291cmNlLlByZXZpZXd9ABBqYXZhLmxhbmcuT2JqZWN0cHB4d0gARi92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwgQDc1Nyw2OCB2YWx1ZT0iJHtyZXNvdXJjZS5QcmV2aWV3fSJ4eHhzcQB%2BAJRzcQB%2BAJdzcQB%2BAJp3OgAmI3tyZXBseVRvcGljLnN0YXJ0SW5zdGFudFJlcGx5UHJldmlld30AEGphdmEubGFuZy5TdHJpbmd1cQB%2BAC4AAAAAcHB4d1wAWi92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwgQD!
 c1Nyw2OCBhY3Rpb249IiN7cmVwbHlUb3BpYy5zdGFydEluc3RhbnRSZXBseVByZXZpZXd9
InhwcHBwcHBwcHBwcHQAE3JldHVybiBjaGVja0Zvcm0oKTtwcHBwcHBwcHBwcHBwdAAKbGl0ZW9wdGlvbnBwcHBwdXEAfgAAAAAAA3VxAH4AAAAAABt1cQB%2BAAAAAAAFdXEAfgAAAAAAB3QAN19pZDE0MGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB%2BA290ADxwb3N0Ol9pZDE0MGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAJi92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjMTkweHBzcQB%2BAAQ%2FQAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJncmABIke3Jlc291cmNlLlN1Ym1pdH0AEGphdmEubGFuZy5PYmplY3RwcHh3RwBFL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCBANzYwLDY4IHZhbHVlPSIke3Jlc291cmNlLlN1Ym1pdH0ieHh4c3EAfgCUc3EAfgCXc3EAfgCadzUAISN7cmVwbHlUb3BpYy5leGVjdXRlSW5zdGFudFJlcGx5fQAQamF2YS5sYW5nLlN0cmluZ3VxAH4ALgAAAABwcHh3VwBVL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCBANzYwLDY4IGFjdGlvbj0iI3tyZXBseVRvcGljLmV4ZWN1dGVJbnN0YW50UmVwbHl9InhwcHBwcHBwcHBwcHQAE3JldHVybiBjaGVja0Zvcm0oKTtwcHBwcHBwcHBwcHBwdAAKbWFpbm9wdGlvbnBwcHBweHVxAH4AAAAAAAN1cQB%2BAAAAAAA!
 WdXEAfgAAAAAAB3QAN19pZDE1MmpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB%2BAIJxAH4DknNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAA3EAfgCEc3EAfgCFdwwAAAAQP0AAAAAAAAJ0AEVfaWQxNTJqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqOl9saW5rX2hpZGRlbl90AAF0eHEAfgAZdAAmL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCMxOTRxAH4AG3NxAH4AHHckABovdmlld3MvY29tbW9uL2NvbW1vbi54aHRtbAAAARLTLZmTeHhwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBzcQB%2BABAAAAAEdwQAAAAEdXEAfgAAAAAAA3VxAH4AAAAAABx1cQB%2BAAAAAAAFdXEAfgAAAAAAB3QAN19pZDE1NGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB%2BABd0AG9faWQxNTJqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqOl9pZDE1NGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAJi92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwjMTk2eHBwc3EAfgCUc3EAfgCXc3EAfgCady4AGiN7bW9kZXJhdG9yLmRlbGV0ZUNvbmZpcm19ABBqYXZhLmxhbmcuU3RyaW5ndXEAfgAuAAAAAHBweHdQAE4vdmlld3MvdG9waWNzL3Z!
 pZXd0b3BpY19ib2R5LnhodG1sIEA3NzksOTkgYWN0aW9uPSIje21vZGVyYXRvci5kZWxld
GVDb25maXJtfSJ4cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdAAWdGV4dC1kZWNvcmF0aW9uOiBub25lO3BwcHBwcHNxAH4AEAAAAAF3BAAAAAF1cQB%2BAAAAAAADdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADdfaWQxNTVqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHBwc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABcQB%2BABl0ACYvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIzE5N3hwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB%2BAB9zcQB%2BACBzcQB%2BACJzcQB%2BACZ3JQARI3t0b3BpYy50b3BpYy5pZH0AEGphdmEubGFuZy5PYmplY3RwcHh3RgBEL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCBANzgwLDY2IHZhbHVlPSIje3RvcGljLnRvcGljLmlkfSJ4eHhxAH4DlnBwcHh1cQB%2BAAAAAAADdXEAfgAAAAAAHHVxAH4AAAAAAAV1cQB%2BAAAAAAAHdAA3X2lkMTU4amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4AF3QAb19pZDE1MmpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmo6X2lkMTU4amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAmL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCMyMDB4cHBzcQB%2BAJRzcQB%2BAJdzcQB%2B!
 AJp3LAAYI3ttb2RlcmF0b3IubW92ZUNvbmZpcm19ABBqYXZhLmxhbmcuU3RyaW5ndXEAfgAuAAAAAHBweHdOAEwvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIEA3ODgsOTcgYWN0aW9uPSIje21vZGVyYXRvci5tb3ZlQ29uZmlybX0ieHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHQAFnRleHQtZGVjb3JhdGlvbjogbm9uZTtwcHBwcHBzcQB%2BABAAAAABdwQAAAABdXEAfgAAAAAAA3VxAH4AAAAAAAN1cQB%2BAAAAAAAHdAA3X2lkMTU5amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBwcHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAmL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCMyMDF4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmdyUAESN7dG9waWMudG9waWMuaWR9ABBqYXZhLmxhbmcuT2JqZWN0cHB4d0YARC92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwgQDc4OSw2NiB2YWx1ZT0iI3t0b3BpYy50b3BpYy5pZH0ieHh4dAABdHBwcHh1cQB%2BAAAAAAADdXEAfgAAAAAAHHVxAH4AAAAAAAV1cQB%2BAAAAAAAHdAA3X2lkMTYyamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4AF3QAb19pZDE1MmpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmo6X2lkMTYyamJwbnNfMmZkZWZhdWx0XzJm!
 Zm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianNxAH4ABD9AAAAAAAAMdwgAAAAQAA
AAAXEAfgAZdAAmL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCMyMDZ4cHBzcQB%2BAJRzcQB%2BAJdzcQB%2BAJp3KgAWI3ttb2RlcmF0b3IubG9ja1RvcGljfQAQamF2YS5sYW5nLlN0cmluZ3VxAH4ALgAAAABwcHh3TABKL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCBANzk5LDk3IGFjdGlvbj0iI3ttb2RlcmF0b3IubG9ja1RvcGljfSJ4cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdAAWdGV4dC1kZWNvcmF0aW9uOiBub25lO3BwcHBwcHNxAH4AEAAAAAF3BAAAAAF1cQB%2BAAAAAAADdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADdfaWQxNjNqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHBwc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABcQB%2BABl0ACYvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIzIwN3hwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB%2BAB9zcQB%2BACBzcQB%2BACJzcQB%2BACZ3JQARI3t0b3BpYy50b3BpYy5pZH0AEGphdmEubGFuZy5PYmplY3RwcHh3RgBEL3ZpZXdzL3RvcGljcy92aWV3dG9waWNfYm9keS54aHRtbCBAODAwLDgyIHZhbHVlPSIje3RvcGljLnRvcGljLmlkfSJ4eHh0AAF0cHBweHVxAH4AAAAAAAN1cQB%2BAAAAAAAcdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADdfaWQxNjZqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHEAfgAXdABvX2lkMTUyamJ!
 wbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBiajpfaWQxNjZqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABcQB%2BABl0ACYvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIzIxNHhwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB%2BAB9zcQB%2BACBzcQB%2BACJzcQB%2BACZ3SQA1I3tmb3J1bXM6b3V0cHV0TGluayhzaGFyZWQubGlua3NbJ3RvcGljU3BsaXQnXSx0cnVlKX0AEGphdmEubGFuZy5PYmplY3RzcQB%2BAChzcQB%2BAAQ%2FQAAAAAAADHcIAAAAEAAAAAF0ABFmb3J1bXM6b3V0cHV0TGlua3NxAH4ALHdIAAZmb3J1bXMACm91dHB1dExpbmsAJm9yZy5qYm9zcy5wb3J0bGV0LmZvcnVtcy51aS5Qb3J0YWxVdGlsAApvdXRwdXRMaW5rdXEAfgAuAAAAAnEAfgAwcQB%2BADF4eHhweHdrAGkvdmlld3MvdG9waWNzL3ZpZXd0b3BpY19ib2R5LnhodG1sIEA4MTksMTI0IHZhbHVlPSIje2ZvcnVtczpvdXRwdXRMaW5rKHNoYXJlZC5saW5rc1sndG9waWNTcGxpdCddLHRydWUpfSJ4eHhwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHQAFnRleHQtZGVjb3JhdGlvbjogbm9uZTtwcHBwcHBzcQB%2BABAAAAABdwQAAAABdXEAfgAAAAAAA3VxAH4AAAAAAAN1cQB%2BAAAAAAAHdAA3X2lkMTY3amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBwc!
 HNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAmL3ZpZXdzL3RvcGljcy92aWV3dG9
waWNfYm9keS54aHRtbCMyMTV4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmdyUAESN7dG9waWMudG9waWMuaWR9ABBqYXZhLmxhbmcuT2JqZWN0cHB4d0YARC92aWV3cy90b3BpY3Mvdmlld3RvcGljX2JvZHkueGh0bWwgQDgyMCw2NiB2YWx1ZT0iI3t0b3BpYy50b3BpYy5pZH0ieHh4dAABdHBwcHh4eA%3D%3D&jsf_viewid=%2Fviews%2Ftopics%2Fviewtopic_body.xhtml
\ No newline at end of file

Added: labs/jbossforums/branches/tests/main/src/http-data-1.dat
===================================================================
--- labs/jbossforums/branches/tests/main/src/http-data-1.dat	                        (rev 0)
+++ labs/jbossforums/branches/tests/main/src/http-data-1.dat	2007-05-28 14:56:57 UTC (rev 12176)
@@ -0,0 +1,78 @@
+-----------------------------160867588417416073432107342755
+Content-Disposition: form-data; name="f"
+
+1
+-----------------------------160867588417416073432107342755
+Content-Disposition: form-data; name="post:_id19jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj"
+
+new topic
+-----------------------------160867588417416073432107342755
+Content-Disposition: form-data; name="addbbcode18"
+
+Default
+-----------------------------160867588417416073432107342755
+Content-Disposition: form-data; name="addbbcode20"
+
+12
+-----------------------------160867588417416073432107342755
+Content-Disposition: form-data; name="helpbox"
+
+Font color: [color=red]text[/color]  Tip: you can also use color=#FF0000
+-----------------------------160867588417416073432107342755
+Content-Disposition: form-data; name="post:message"
+
+xxaxac
+-----------------------------160867588417416073432107342755
+Content-Disposition: form-data; name="post:_id22jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj"
+
+0
+-----------------------------160867588417416073432107342755
+Content-Disposition: form-data; name="post:_id31jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj"
+
+
+-----------------------------160867588417416073432107342755
+Content-Disposition: form-data; name="o"
+
+
+-----------------------------160867588417416073432107342755
+Content-Disposition: form-data; name="post:_id34jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj"
+
+
+-----------------------------160867588417416073432107342755
+Content-Disposition: form-data; name="post:_id38jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj"
+
+0
+-----------------------------160867588417416073432107342755
+Content-Disposition: form-data; name="post:_id42jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj"; filename=""
+Content-Type: application/octet-stream
+
+
+-----------------------------160867588417416073432107342755
+Content-Disposition: form-data; name="post:_id44jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj"
+
+
+-----------------------------160867588417416073432107342755
+Content-Disposition: form-data; name="post:_id51jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj"
+
+Submit
+-----------------------------160867588417416073432107342755
+Content-Disposition: form-data; name="post_SUBMIT"
+
+1
+-----------------------------160867588417416073432107342755
+Content-Disposition: form-data; name="post:_link_hidden_"
+
+
+-----------------------------160867588417416073432107342755
+Content-Disposition: form-data; name="jsf_tree_64"
+
+rO0ABXNyAEdvcmcuYXBhY2hlLm15ZmFjZXMuYXBwbGljYXRpb24uVHJlZVN0cnVjdHVyZU1hbmFnZXIkVHJlZVN0cnVjdENvbXBvbmVudEZZF9icSvbPAgAEWwAJX2NoaWxkcmVudABKW0xvcmcvYXBhY2hlL215ZmFjZXMvYXBwbGljYXRpb24vVHJlZVN0cnVjdHVyZU1hbmFnZXIkVHJlZVN0cnVjdENvbXBvbmVudDtMAA9fY29tcG9uZW50Q2xhc3N0ABJMamF2YS9sYW5nL1N0cmluZztMAAxfY29tcG9uZW50SWRxAH4AAlsAB19mYWNldHN0ABNbTGphdmEvbGFuZy9PYmplY3Q7eHB1cgBKW0xvcmcuYXBhY2hlLm15ZmFjZXMuYXBwbGljYXRpb24uVHJlZVN0cnVjdHVyZU1hbmFnZXIkVHJlZVN0cnVjdENvbXBvbmVudDu6rCfIEYWQqgIAAHhwAAAABHNxAH4AAHB0AClqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sT3V0cHV0TGlua3QANV9pZDNqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHBxAH4ACHQANV9pZDdqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHBxAH4ACHQANl9pZDExamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBzcQB+AAB1cQB+AAUAAAANc3EAfgAAcHQAKGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxJbnB1dFRleHR0ADZfaWQxOWpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwc3EA!
 fgAAcHQALGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxJbnB1dFRleHRhcmVhdAAHbWVzc2FnZXBzcQB+AAB1cQB+AAUAAAADc3EAfgAAcHQAImphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVNlbGVjdEl0ZW10ADZfaWQyM2picG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwc3EAfgAAcHEAfgAZdAA2X2lkMjVqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHBxAH4AGXQANl9pZDI3amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianB0AC1qYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sU2VsZWN0T25lUmFkaW90ADZfaWQyMmpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwc3EAfgAAcHEAfgARdAA2X2lkMzFqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHBxAH4AEXQANl9pZDM0amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBzcQB+AABwdAAsamF2YXguZmFjZXMuY29tcG9uZW50Lmh0bWwuSHRtbENvbW1hbmRCdXR0b250ADZfaWQzNmpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwc3EAfgAAcHEAfgARdAA2X2lkMzhqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRv!
 d3NucGJqcHNxAH4AAHB0ADhvcmcuYXBhY2hlLm15ZmFjZXMuY3VzdG9tLmZpbGV1cGxvYW
QuSHRtbElucHV0RmlsZVVwbG9hZHQANl9pZDQyamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBzcQB+AABwcQB+ABR0ADZfaWQ0NGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwc3EAfgAAcHEAfgAmdAA2X2lkNDZqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHBxAH4AJnQANl9pZDQ5amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBzcQB+AABwcQB+ACZ0ADZfaWQ1MWpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwc3EAfgAAcHEAfgAmdAA2X2lkNTNqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHQAI2phdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxGb3JtdAAEcG9zdHB0ACBqYXZheC5mYWNlcy5jb21wb25lbnQuVUlWaWV3Um9vdHBw
+-----------------------------160867588417416073432107342755
+Content-Disposition: form-data; name="jsf_state_64"
+
+rO0ABXVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAAN1cQB+AAAAAAAFdXEAfgAAAAAAB3BwcHBzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAHhwcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnl0ABJMamF2YS9sYW5nL1N0cmluZztMAAhsYW5ndWFnZXEAfgAHTAAHdmFyaWFudHEAfgAHeHD/////dAAAdAACZW5xAH4ACXQACkhUTUxfQkFTSUN0ACQvdmlld3MvdG9waWNzL3Bvc3RpbmdfbmV3X2JvZHkueGh0bWxzcgAOamF2YS5sYW5nLkxvbmc7i+SQzI8j3wIAAUoABXZhbHVleHIAEGphdmEubGFuZy5OdW1iZXKGrJUdC5TgiwIAAHhwAAAAAAAAADlwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAR3BAAAAAR1cQB+AAAAAAADdXEAfgAAAAAAHHVxAH4AAAAAAAN1cQB+AAAAAAAHdAA1X2lkM2picG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwdAAQamF2YXguZmFjZXMuTGlua3EAfgAWc3EAfgAEP0AAAAAAAAx3CAAAABAAAAACdAAYY29tLnN1bi5mYWNlbGV0cy5NQVJLX0lEdAAcL3ZpZXdzL2NvbW1vbi9jb21tb24ueGh0bWwjMXQAGGNvbS5zdW4uZmFjZWxldHMuQVBQTElFRHNyAC9jb20uc3VuLmZhY2VsZXRzLmltcGwuRGVmYXVsdEZhY2VsZXQkQXBwbHlUb2tlbkicz0Q7!
 bpagDAAAeHB3JAAaL3ZpZXdzL2NvbW1vbi9jb21tb24ueGh0bWwAAAES0yyXanh4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXQABXZhbHVlc3IAJmNvbS5zdW4uZmFjZWxldHMuZWwuTGVnYWN5VmFsdWVCaW5kaW5nAAAAAAAAAAEMAAB4cHNyACZjb20uc3VuLmZhY2VsZXRzLmVsLlRhZ1ZhbHVlRXhwcmVzc2lvbgAAAAAAAAABDAAAeHIAGGphdmF4LmVsLlZhbHVlRXhwcmVzc2lvbncKgFvgwP6RAgAAeHIAE2phdmF4LmVsLkV4cHJlc3Npb26jhYpT8lrSPAIAAHhwc3IAHmNvbS5zdW4uZWwuVmFsdWVFeHByZXNzaW9uSW1wbAO6qGIfJcmYDAAAeHEAfgAjd0cAMyN7Zm9ydW1zOm91dHB1dExpbmsoc2hhcmVkLmxpbmtzWydjYXRlZ29yeSddLHRydWUpfQAQamF2YS5sYW5nLk9iamVjdHNyACJjb20uc3VuLmVsLmxhbmcuRnVuY3Rpb25NYXBwZXJJbXBsAAAAAAAAAAEMAAB4cHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXQAEWZvcnVtczpvdXRwdXRMaW5rc3IAK2NvbS5zdW4uZWwubGFuZy5GdW5jdGlvbk1hcHBlckltcGwkRnVuY3Rpb27ZcetrSS2g7wwAAHhwd0gABmZvcnVtcwAKb3V0cHV0TGluawAmb3JnLmpib3NzLnBvcnRsZXQuZm9ydW1zLnVpLlBvcnRhbFV0aWwACm91dHB1dExpbmt1cgATW0xqYXZhLmxhbmcuU3RyaW5nO63SVufpHXtHAgAAeHAAAAACdAAQamF2YS5sYW5nLlN0cmluZ3QAB2Jvb2xlYW54eHhweHdgAF4vdmlld3MvY29tbW9uL2NvbW1vbi54aHRtbCBANDUsMTA1IHZhbHVlPSIje2Zv!
 cnVtczpvdXRwdXRMaW5rKHNoYXJlZC5saW5rc1snY2F0ZWdvcnknXSx0cnVlKX0ieHh4cH
BwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdAAIbWFpbm1lbnVwcHBwcHB1cQB+AAAAAAADdXEAfgAAAAAAHHVxAH4AAAAAAAN1cQB+AAAAAAAHdAA1X2lkN2picG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB+ABdxAH4AN3NxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAnEAfgAZdAAcL3ZpZXdzL2NvbW1vbi9jb21tb24ueGh0bWwjNXEAfgAbcQB+AB14cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmd0kANSN7Zm9ydW1zOm91dHB1dExpbmsoc2hhcmVkLmxpbmtzWydmb3J1bVdhdGNoJ10sdHJ1ZSl9ABBqYXZhLmxhbmcuT2JqZWN0c3EAfgAoc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABdAARZm9ydW1zOm91dHB1dExpbmtzcQB+ACx3SAAGZm9ydW1zAApvdXRwdXRMaW5rACZvcmcuamJvc3MucG9ydGxldC5mb3J1bXMudWkuUG9ydGFsVXRpbAAKb3V0cHV0TGlua3VxAH4ALgAAAAJxAH4AMHEAfgAxeHh4cHh3YgBgL3ZpZXdzL2NvbW1vbi9jb21tb24ueGh0bWwgQDYwLDEwNyB2YWx1ZT0iI3tmb3J1bXM6b3V0cHV0TGluayhzaGFyZWQubGlua3NbJ2ZvcnVtV2F0Y2gnXSx0cnVlKX0ieHh4cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdAAIbWFpbm1lbnVwcHBwcHB1cQB+AAAAAAADdXEAfgAAAAAAHHVxAH4AAAAAAAN1cQB+AAAAAAAHdAA2X2lkMTFqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHEAfgA!
 XcQB+AEhzcQB+AAQ/QAAAAAAADHcIAAAAEAAAAAJxAH4AGXQAHC92aWV3cy9jb21tb24vY29tbW9uLnhodG1sIzhxAH4AG3EAfgAdeHBzcQB+AAQ/QAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJndEADAje2ZvcnVtczpvdXRwdXRMaW5rKHNoYXJlZC5saW5rc1snYWRtaW4nXSx0cnVlKX0AEGphdmEubGFuZy5PYmplY3RzcQB+AChzcQB+AAQ/QAAAAAAADHcIAAAAEAAAAAF0ABFmb3J1bXM6b3V0cHV0TGlua3NxAH4ALHdIAAZmb3J1bXMACm91dHB1dExpbmsAJm9yZy5qYm9zcy5wb3J0bGV0LmZvcnVtcy51aS5Qb3J0YWxVdGlsAApvdXRwdXRMaW5rdXEAfgAuAAAAAnEAfgAwcQB+ADF4eHhweHddAFsvdmlld3MvY29tbW9uL2NvbW1vbi54aHRtbCBANjksMTAzIHZhbHVlPSIje2ZvcnVtczpvdXRwdXRMaW5rKHNoYXJlZC5saW5rc1snYWRtaW4nXSx0cnVlKX0ieHh4cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdAAIbWFpbm1lbnVwcHBwcHB1cQB+AAAAAAADdXEAfgAAAAAAFnVxAH4AAAAAAAd0AARwb3N0cHQAEGphdmF4LmZhY2VzLkZvcm1xAH4AWHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAA3QASWphdmF4LmZhY2VzLmNvbXBvbmVudC5VSUZvcm0ub3JnLmFwYWNoZS5teWZhY2VzLkhJRERFTl9DT01NQU5EX0lOUFVUU19TRVRzcgARamF2YS51dGlsLkhhc2hTZXS6RIWVlri3NAMAAHhwdwwAAAAQP0AAAAAAAAF0ABJwb3N0Ol9saW5rX2hpZGRlbl94cQB+ABl0ACYvdmlld3MvdG9waWN!
 zL3Bvc3RpbmdfbmV3X2JvZHkueGh0bWwjNHEAfgAbcQB+AB14cHBwcHB0ABNtdWx0aXBhc
nQvZm9ybS1kYXRhcHBwcHBwcHBwcHBwcHBwcHBwc3EAfgAQAAAADXcEAAAADXVxAH4AAAAAAAN1cQB+AAAAAAAbdXEAfgAAAAAACXVxAH4AAAAAAAN1cQB+AAAAAAAHdAA2X2lkMTlqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHQAEGphdmF4LmZhY2VzLlRleHR0ADtwb3N0Ol9pZDE5amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAmL3ZpZXdzL3RvcGljcy9wb3N0aW5nX25ld19ib2R5LnhodG1sIzV4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmdycAEyN7bmV3VG9waWMuc3ViamVjdH0AEGphdmEubGFuZy5PYmplY3RwcHh3SwBJL3ZpZXdzL3RvcGljcy9wb3N0aW5nX25ld19ib2R5LnhodG1sIEAzMDIsMTI1IHZhbHVlPSIje25ld1RvcGljLnN1YmplY3R9Inh4eHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cABwcHNxAH4AcAFwcHBwcHBwcHNyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cQB+AA4AAADIcHBwcHBwcHBwcHBwcHBwc3EAfgBzAAAALXQAC3dpZHRoOjQ1MHB4dAAEcG9zdHQAATJwcHB1cQB+AAAAAAADdXEAfgAAAAAAGnVxAH4AAAAAAAl1cQB+AAAAAAADdXEAfgAAAAAAB3QAB21lc3NhZ2VwdAAUamF2YXguZmFjZXMuVGV4dGFyZWF0AAxwb3N0Om1lc3NhZ2!
 VzcQB+AAQ/QAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAJi92aWV3cy90b3BpY3MvcG9zdGluZ19uZXdfYm9keS54aHRtbCM2eHBzcQB+AAQ/QAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJncnABMje25ld1RvcGljLm1lc3NhZ2V9ABBqYXZhLmxhbmcuT2JqZWN0cHB4d0sASS92aWV3cy90b3BpY3MvcG9zdGluZ19uZXdfYm9keS54aHRtbCBANDM1LDEwMiB2YWx1ZT0iI3tuZXdUb3BpYy5tZXNzYWdlfSJ4eHhwcHBxAH4AcXBwcQB+AHJwcHBwc3EAfgBzAAAAI3BwcHBwdAARc3RvcmVDYXJldCh0aGlzKTtwcHBwdAARc3RvcmVDYXJldCh0aGlzKTtwcHBwcHQAEXN0b3JlQ2FyZXQodGhpcyk7cHNxAH4AcwAAAA90AAt3aWR0aDo0NTBweHQABHBvc3R0AAEzcHBwdXEAfgAAAAAAA3VxAH4AAAAAABx1cQB+AAAAAAAJdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADZfaWQyMmpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwdAARamF2YXguZmFjZXMuUmFkaW90ADtwb3N0Ol9pZDIyamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAmL3ZpZXdzL3RvcGljcy9wb3N0aW5nX25ld19ib2R5LnhodG1sIzd4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmdykAFSN7bmV3VG9waWMudG9waWNUeXBlfQAQamF2YS5sYW5nLk9iamVjdHBweH!
 dMAEovdmlld3MvdG9waWNzL3Bvc3RpbmdfbmV3X2JvZHkueGh0bWwgQDQ1OSw4NiB2YWx1
ZT0iI3tuZXdUb3BpYy50b3BpY1R5cGV9Inh4eHBwcHEAfgBxcHBxAH4AcnBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHQAA2dlbnBwcHNxAH4AEAAAAAN3BAAAAAN1cQB+AAAAAAADdXEAfgAAAAAABnVxAH4AAAAAAAd0ADZfaWQyM2picG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcHBzcQB+AAQ/QAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAJi92aWV3cy90b3BpY3MvcG9zdGluZ19uZXdfYm9keS54aHRtbCM4eHBwcHB0AAZOb3JtYWx0AAEwcHBwdXEAfgAAAAAAA3VxAH4AAAAAAAZ1cQB+AAAAAAAHdAA2X2lkMjVqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHBwc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABcQB+ABl0ACcvdmlld3MvdG9waWNzL3Bvc3RpbmdfbmV3X2JvZHkueGh0bWwjMTB4cHBwcHQABlN0aWNreXQAATFwcHB1cQB+AAAAAAADdXEAfgAAAAAABnVxAH4AAAAAAAd0ADZfaWQyN2picG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcHBzcQB+AAQ/QAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAJy92aWV3cy90b3BpY3MvcG9zdGluZ19uZXdfYm9keS54aHRtbCMxMnhwcHBwdAAMQW5ub3VuY2VtZW50dAABMnBwcHh1cQB+AAAAAAADdXEAfgAAAAAAG3VxAH4AAAAAAAl1cQB+AAAAAAADdXEAfgAAAAAAB3QANl9pZDMxamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1b!
 XNXaW5kb3dzbnBianBxAH4AaHQAO3Bvc3Q6X2lkMzFqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABcQB+ABl0ACcvdmlld3MvdG9waWNzL3Bvc3RpbmdfbmV3X2JvZHkueGh0bWwjMTV4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmdygAFCN7bmV3VG9waWMucXVlc3Rpb259ABBqYXZhLmxhbmcuT2JqZWN0cHB4d0sASS92aWV3cy90b3BpY3MvcG9zdGluZ19uZXdfYm9keS54aHRtbCBANDk0LDk2IHZhbHVlPSIje25ld1RvcGljLnF1ZXN0aW9ufSJ4eHhwcHBxAH4AcXBwcQB+AHJwcHBwcHBwcHNxAH4AcwAAAP9wcHBwcHBwcHBwcHBwcHBzcQB+AHMAAAAycHQABHBvc3RwcHBwdXEAfgAAAAAAA3VxAH4AAAAAABt1cQB+AAAAAAAJdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADZfaWQzNGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB+AGh0ADtwb3N0Ol9pZDM0amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAnL3ZpZXdzL3RvcGljcy9wb3N0aW5nX25ld19ib2R5LnhodG1sIzE5eHBzcQB+AAQ/QAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJncmABIje25ld1RvcGljLm9wdGlvbn0AEGphdmEubGFuZy5PYmplY3RwcHh3SQBHL3ZpZ!
 XdzL3RvcGljcy9wb3N0aW5nX25ld19ib2R5LnhodG1sIEA1MjMsOTMgdmFsdWU9IiN7bmV
3VG9waWMub3B0aW9ufSJ4eHhwcHBxAH4AcXBwcQB+AHJwcHBwcHBwcHNxAH4AcwAAAP9wcHBwcHBwcHBwcHBwcHBzcQB+AHMAAAAycHQABHBvc3RwcHBwdXEAfgAAAAAAA3VxAH4AAAAAABt1cQB+AAAAAAAFdXEAfgAAAAAAB3QANl9pZDM2amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianB0ABJqYXZheC5mYWNlcy5CdXR0b250ADtwb3N0Ol9pZDM2amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAnL3ZpZXdzL3RvcGljcy9wb3N0aW5nX25ld19ib2R5LnhodG1sIzIweHBzcQB+AAQ/QAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJncqABYke3Jlc291cmNlLkFkZF9vcHRpb259ABBqYXZhLmxhbmcuT2JqZWN0cHB4d04ATC92aWV3cy90b3BpY3MvcG9zdGluZ19uZXdfYm9keS54aHRtbCBANTI1LDExMSB2YWx1ZT0iJHtyZXNvdXJjZS5BZGRfb3B0aW9ufSJ4eHhzcgAnY29tLnN1bi5mYWNlbGV0cy5lbC5MZWdhY3lNZXRob2RCaW5kaW5nAAAAAAAAAAECAAFMAAFtdAAbTGphdmF4L2VsL01ldGhvZEV4cHJlc3Npb247eHBzcgAnY29tLnN1bi5mYWNlbGV0cy5lbC5UYWdNZXRob2RFeHByZXNzaW9uAAAAAAAAAAEMAAB4cgAZamF2YXguZWwuTWV0aG9kRXhwcmVzc2lvbrIvyovk9zSOAgAAeHEAfgAkc3IAH2NvbS5zdW4uZWwuTWV0aG9kRXhwcmVzc2lvbklt!
 cGzdUn44DFmT7wwAAHhxAH4A6HcpABUje25ld1RvcGljLmFkZE9wdGlvbn0AEGphdmEubGFuZy5TdHJpbmd1cQB+AC4AAAAAcHB4d04ATC92aWV3cy90b3BpY3MvcG9zdGluZ19uZXdfYm9keS54aHRtbCBANTI1LDExMSBhY3Rpb249IiN7bmV3VG9waWMuYWRkT3B0aW9ufSJ4cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHQACmxpdGVvcHRpb25wcHBwcHVxAH4AAAAAAAN1cQB+AAAAAAAbdXEAfgAAAAAACXVxAH4AAAAAAAN1cQB+AAAAAAAHdAA2X2lkMzhqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHEAfgBodAA7cG9zdDpfaWQzOGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpzcQB+AAQ/QAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAJy92aWV3cy90b3BpY3MvcG9zdGluZ19uZXdfYm9keS54aHRtbCMyMXhwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB+AB9zcQB+ACBzcQB+ACJzcQB+ACZ3LgAaI3tuZXdUb3BpYy5hY3RpdmVEdXJhdGlvbn0AEGphdmEubGFuZy5PYmplY3RwcHh3UQBPL3ZpZXdzL3RvcGljcy9wb3N0aW5nX25ld19ib2R5LnhodG1sIEA1MzcsOTggdmFsdWU9IiN7bmV3VG9waWMuYWN0aXZlRHVyYXRpb259Inh4eHBwcHEAfgBxcHBxAH4AcnBwcHBwcHBwc3EAfgBzAAAAA3BwcHBwcHBwcHBwcHBwcHNxAH4AcwAAAANwdAAEcG9zdHBwcHB1cQB+AAAAAAADdXEAfgAAAAAABXVxAH4AAAAAABt1cQB+AAAAAAAJ!
 dXEAfgAAAAAAA3VxAH4AAAAAAAd0ADZfaWQ0MmpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc1
8yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwdAAdb3JnLmFwYWNoZS5teWZhY2VzLkZpbGVVcGxvYWR0ADtwb3N0Ol9pZDQyamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAnL3ZpZXdzL3RvcGljcy9wb3N0aW5nX25ld19ib2R5LnhodG1sIzIzeHBzcQB+AAQ/QAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJncqABYje25ld1RvcGljLmF0dGFjaG1lbnR9ABBqYXZhLmxhbmcuT2JqZWN0cHB4d00ASy92aWV3cy90b3BpY3MvcG9zdGluZ19uZXdfYm9keS54aHRtbCBANTY1LDg3IHZhbHVlPSIje25ld1RvcGljLmF0dGFjaG1lbnR9Inh4eHBwcHEAfgBxcHBxAH4AcnBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHNxAH4AcwAAAChwdAAEcG9zdHBwcHBwcHBwdXEAfgAAAAAAA3VxAH4AAAAAABp1cQB+AAAAAAAJdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADZfaWQ0NGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB+AH90ADtwb3N0Ol9pZDQ0amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAnL3ZpZXdzL3RvcGljcy9wb3N0aW5nX25ld19ib2R5LnhodG1sIzI0eHBzcQB+AAQ/QAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJncxAB0je25ld1RvcGl!
 jLmF0dGFjaG1lbnRDb21tZW50fQAQamF2YS5sYW5nLk9iamVjdHBweHdVAFMvdmlld3MvdG9waWNzL3Bvc3RpbmdfbmV3X2JvZHkueGh0bWwgQDU3NiwxMDEgdmFsdWU9IiN7bmV3VG9waWMuYXR0YWNobWVudENvbW1lbnR9Inh4eHBwcHEAfgBxcHBxAH4AcnBwcHBzcQB+AHMAAAAjcHBwcHBwcHBwcHBwcHBwcHBwc3EAfgBzAAAAA3B0AARwb3N0cHBwcHVxAH4AAAAAAAN1cQB+AAAAAAAbdXEAfgAAAAAABXVxAH4AAAAAAAd0ADZfaWQ0NmpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB+ANx0ADtwb3N0Ol9pZDQ2amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAnL3ZpZXdzL3RvcGljcy9wb3N0aW5nX25ld19ib2R5LnhodG1sIzI1eHBzcQB+AAQ/QAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJncuABoke3Jlc291cmNlLkFkZF9hdHRhY2htZW50fQAQamF2YS5sYW5nLk9iamVjdHBweHdSAFAvdmlld3MvdG9waWNzL3Bvc3RpbmdfbmV3X2JvZHkueGh0bWwgQDU3OSwxMjAgdmFsdWU9IiR7cmVzb3VyY2UuQWRkX2F0dGFjaG1lbnR9Inh4eHNxAH4A5HNxAH4A53NxAH4A6nctABkje25ld1RvcGljLmFkZEF0dGFjaG1lbnR9ABBqYXZhLmxhbmcuU3RyaW5ndXEAfgAuAAAAAHBweHdSAFAvdmlld3MvdG9waWNzL3Bvc3RpbmdfbmV3X2JvZHkueGh0bWw!
 gQDU3OSwxMjAgYWN0aW9uPSIje25ld1RvcGljLmFkZEF0dGFjaG1lbnR9InhwcHBwcHBwc
HBwcHBwcHBwcHBwcHBwcHBwdAAKbGl0ZW9wdGlvbnBwcHBwdXEAfgAAAAAAA3VxAH4AAAAAABt1cQB+AAAAAAAFdXEAfgAAAAAAB3QANl9pZDQ5amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4A3HQAO3Bvc3Q6X2lkNDlqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABcQB+ABl0ACcvdmlld3MvdG9waWNzL3Bvc3RpbmdfbmV3X2JvZHkueGh0bWwjMzF4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmdycAEyR7cmVzb3VyY2UuUHJldmlld30AEGphdmEubGFuZy5PYmplY3RwcHh3SgBIL3ZpZXdzL3RvcGljcy9wb3N0aW5nX25ld19ib2R5LnhodG1sIEA2MjgsMjIgdmFsdWU9IiR7cmVzb3VyY2UuUHJldmlld30ieHh4c3EAfgDkc3EAfgDnc3EAfgDqdycAEyN7bmV3VG9waWMucHJldmlld30AEGphdmEubGFuZy5TdHJpbmd1cQB+AC4AAAAAcHB4d0sASS92aWV3cy90b3BpY3MvcG9zdGluZ19uZXdfYm9keS54aHRtbCBANjI4LDIyIGFjdGlvbj0iI3tuZXdUb3BpYy5wcmV2aWV3fSJ4cHBwcHBwcHBwcHB0ACFyZXR1cm4gY2hlY2tGb3JtKHRoaXMucGFyZW50Tm9kZSlwcHBwcHBwcHBwcHBwdAAKbWFpbm9wdGlvbnQAATVwcHBwdXEAfgAAAAAAA3VxAH4AAAAAABt1cQB+AAAAAAAFdXEAfgAAAAAAB3QANl9pZDUxamJwbnNfMmZkZWZhdWx0XzJmZm!
 9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4A3HQAO3Bvc3Q6X2lkNTFqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABcQB+ABl0ACcvdmlld3MvdG9waWNzL3Bvc3RpbmdfbmV3X2JvZHkueGh0bWwjMzJ4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmdyYAEiR7cmVzb3VyY2UuU3VibWl0fQAQamF2YS5sYW5nLk9iamVjdHBweHdJAEcvdmlld3MvdG9waWNzL3Bvc3RpbmdfbmV3X2JvZHkueGh0bWwgQDYzMywzNiB2YWx1ZT0iJHtyZXNvdXJjZS5TdWJtaXR9Inh4eHNxAH4A5HNxAH4A53NxAH4A6ncnABMje25ld1RvcGljLmV4ZWN1dGV9ABBqYXZhLmxhbmcuU3RyaW5ndXEAfgAuAAAAAHBweHdLAEkvdmlld3MvdG9waWNzL3Bvc3RpbmdfbmV3X2JvZHkueGh0bWwgQDYzMywzNiBhY3Rpb249IiN7bmV3VG9waWMuZXhlY3V0ZX0ieHBwcHQAAXNwcHBwcHBwcHBwcHBwcHBwcHBwcHB0AAptYWlub3B0aW9udAABNnBwcHB1cQB+AAAAAAADdXEAfgAAAAAAG3VxAH4AAAAAAAV1cQB+AAAAAAAHdAA2X2lkNTNqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHEAfgDcdAA7cG9zdDpfaWQ1M2picG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpzcQB+AAQ/QAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAJy92aWV3cy!
 90b3BpY3MvcG9zdGluZ19uZXdfYm9keS54aHRtbCMzM3hwc3EAfgAEP0AAAAAAAAF3CAAA
AAIAAAABcQB+AB9zcQB+ACBzcQB+ACJzcQB+ACZ3JgASJHtyZXNvdXJjZS5DYW5jZWx9ABBqYXZhLmxhbmcuT2JqZWN0cHB4d0oASC92aWV3cy90b3BpY3MvcG9zdGluZ19uZXdfYm9keS54aHRtbCBANjM1LDEzMiB2YWx1ZT0iJHtyZXNvdXJjZS5DYW5jZWx9Inh4eHNxAH4A5HNxAH4A53NxAH4A6ncmABIje25ld1RvcGljLmNhbmNlbH0AEGphdmEubGFuZy5TdHJpbmd1cQB+AC4AAAAAcHB4d0sASS92aWV3cy90b3BpY3MvcG9zdGluZ19uZXdfYm9keS54aHRtbCBANjM1LDEzMiBhY3Rpb249IiN7bmV3VG9waWMuY2FuY2VsfSJ4cHBwdAABY3BwcHBwcHBwcHBwcHBwcHBwcHBwcHQACm1haW5vcHRpb250AAE3cHBwcHh4
+-----------------------------160867588417416073432107342755
+Content-Disposition: form-data; name="jsf_viewid"
+
+/views/topics/posting_new_body.xhtml
+-----------------------------160867588417416073432107342755--

Added: labs/jbossforums/branches/tests/main/src/main.py
===================================================================
--- labs/jbossforums/branches/tests/main/src/main.py	                        (rev 0)
+++ labs/jbossforums/branches/tests/main/src/main.py	2007-05-28 14:56:57 UTC (rev 12176)
@@ -0,0 +1,19 @@
+from net.grinder.script import Test
+from net.grinder.script.Grinder import grinder
+from net.grinder.plugin.http import HTTPPluginControl, HTTPRequest
+from HTTPClient import NVPair
+import time
+
+from globals import *
+
+from view_main import ViewMain
+from view_post import ViewPost
+
+viewMain = ViewMain()
+viewPost = ViewPost()
+
+start = time.time()
+
+class TestRunner:
+    def __call__(self):
+        viewMain()
\ No newline at end of file

Added: labs/jbossforums/branches/tests/main/src/post_reply.py
===================================================================
--- labs/jbossforums/branches/tests/main/src/post_reply.py	                        (rev 0)
+++ labs/jbossforums/branches/tests/main/src/post_reply.py	2007-05-28 14:56:57 UTC (rev 12176)
@@ -0,0 +1,744 @@
+# The Grinder 3.0-beta33
+# HTTP script recorded by TCPProxy at May 28, 2007 4:53:19 PM
+
+from net.grinder.script import Test
+from net.grinder.script.Grinder import grinder
+from net.grinder.plugin.http import HTTPPluginControl, HTTPRequest
+from HTTPClient import NVPair
+connectionDefaults = HTTPPluginControl.getConnectionDefaults()
+httpUtilities = HTTPPluginControl.getHTTPUtilities()
+
+# To use a proxy server, uncomment the next line and set the host and port.
+# connectionDefaults.setProxyServer("localhost", 8001)
+
+# These definitions at the top level of the file are evaluated once,
+# when the worker process is started.
+
+connectionDefaults.defaultHeaders = \
+  ( NVPair('User-Agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060809 SeaMonkey/1.0.3'),
+    NVPair('Accept-Encoding', 'gzip,deflate'),
+    NVPair('Accept-Language', 'en-us,en;q=0.5'),
+    NVPair('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.7'), )
+
+headers0= \
+  ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'), )
+
+headers1= \
+  ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'),
+    NVPair('Referer', 'http://localhost:8080/portal/portal/default/forums'), )
+
+headers2= \
+  ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'),
+    NVPair('Referer', 'http://localhost:8080/portal/auth/portal/default/forums'), )
+
+headers3= \
+  ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'),
+    NVPair('Referer', 'http://localhost:8080/portal/auth/portal/default/forums/JBossForumsWindow?action=2&v=c'), )
+
+headers4= \
+  ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'),
+    NVPair('Referer', 'http://localhost:8080/portal/auth/portal/default/forums/JBossForumsWindow?action=2&f=1&v=f'), )
+
+headers5= \
+  ( NVPair('Accept', 'image/png,*/*;q=0.5'),
+    NVPair('Referer', 'http://localhost:8080/portal/auth/portal/default/forums/JBossForumsWindow?action=2&t=13&v=t'), )
+
+headers6= \
+  ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'),
+    NVPair('Referer', 'http://localhost:8080/portal/auth/portal/default/forums/JBossForumsWindow?action=2&t=13&v=t'), )
+
+headers7= \
+  ( NVPair('Accept', 'image/png,*/*;q=0.5'), )
+
+headers8= \
+  ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'),
+    NVPair('Referer', 'http://localhost:8080/portal/auth/portal/default/forums/JBossForumsWindow?action=2&f=1&t=13&v=z'), )
+
+headers9= \
+  ( NVPair('Accept', 'image/png,*/*;q=0.5'),
+    NVPair('Referer', 'http://localhost:8080/portal/auth/portal/default/forums/JBossForumsWindow?action=2&f=1&t=13&v=z'), )
+
+headers10= \
+  ( NVPair('Accept', 'image/png,*/*;q=0.5'),
+    NVPair('Referer', 'http://localhost:8080/portal/auth/portal/default/forums/JBossForumsWindow?action=2&f=1&t=13&notified_watch_type=1&notified_post_id=16&v=t'), )
+
+headers11= \
+  ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'),
+    NVPair('Referer', 'http://localhost:8080/portal/auth/portal/default/forums/JBossForumsWindow?action=2&f=1&t=13&notified_watch_type=1&notified_post_id=16&v=t'), )
+
+headers12= \
+  ( NVPair('Accept', 'image/png,*/*;q=0.5'),
+    NVPair('Referer', 'http://localhost:8080/portal/portal/default'), )
+
+url0 = 'http://localhost:8080'
+
+# Create an HTTPRequest for each request, then replace the
+# reference to the HTTPRequest with an instrumented version.
+# You can access the unadorned instance using request101.__target__.
+request101 = HTTPRequest(url=url0, headers=headers0)
+request101 = Test(101, 'GET forums').wrap(request101)
+
+request201 = HTTPRequest(url=url0, headers=headers1)
+request201 = Test(201, 'GET forums').wrap(request201)
+
+request301 = HTTPRequest(url=url0, headers=headers2)
+request301 = Test(301, 'POST j_security_check').wrap(request301)
+
+request302 = HTTPRequest(url=url0, headers=headers2)
+request302 = Test(302, 'GET forums').wrap(request302)
+
+request401 = HTTPRequest(url=url0, headers=headers2)
+request401 = Test(401, 'GET JBossForumsWindow').wrap(request401)
+
+request402 = HTTPRequest(url=url0, headers=headers2)
+request402 = Test(402, 'GET JBossForumsWindow').wrap(request402)
+
+request501 = HTTPRequest(url=url0, headers=headers3)
+request501 = Test(501, 'GET JBossForumsWindow').wrap(request501)
+
+request502 = HTTPRequest(url=url0, headers=headers3)
+request502 = Test(502, 'GET JBossForumsWindow').wrap(request502)
+
+request601 = HTTPRequest(url=url0, headers=headers4)
+request601 = Test(601, 'GET JBossForumsWindow').wrap(request601)
+
+request602 = HTTPRequest(url=url0, headers=headers4)
+request602 = Test(602, 'GET JBossForumsWindow').wrap(request602)
+
+request603 = HTTPRequest(url=url0, headers=headers5)
+request603 = Test(603, 'GET icon_edit.gif').wrap(request603)
+
+request604 = HTTPRequest(url=url0, headers=headers5)
+request604 = Test(604, 'GET icon_quote.gif').wrap(request604)
+
+request605 = HTTPRequest(url=url0, headers=headers5)
+request605 = Test(605, 'GET icon_delete.gif').wrap(request605)
+
+request606 = HTTPRequest(url=url0, headers=headers5)
+request606 = Test(606, 'GET spacer.gif').wrap(request606)
+
+request607 = HTTPRequest(url=url0, headers=headers5)
+request607 = Test(607, 'GET topic_delete.gif').wrap(request607)
+
+request608 = HTTPRequest(url=url0, headers=headers5)
+request608 = Test(608, 'GET topic_move.gif').wrap(request608)
+
+request609 = HTTPRequest(url=url0, headers=headers5)
+request609 = Test(609, 'GET topic_lock.gif').wrap(request609)
+
+request610 = HTTPRequest(url=url0, headers=headers5)
+request610 = Test(610, 'GET topic_split.gif').wrap(request610)
+
+request611 = HTTPRequest(url=url0, headers=headers5)
+request611 = Test(611, 'GET reply.gif').wrap(request611)
+
+request701 = HTTPRequest(url=url0, headers=headers6)
+request701.setDataFromFile('http-data-0.dat')
+request701 = Test(701, 'POST JBossForumsWindow').wrap(request701)
+
+request702 = HTTPRequest(url=url0, headers=headers6)
+request702 = Test(702, 'GET JBossForumsWindow').wrap(request702)
+
+request703 = HTTPRequest(url=url0, headers=headers7)
+request703 = Test(703, 'GET favicon.ico').wrap(request703)
+
+request801 = HTTPRequest(url=url0, headers=headers8)
+request801 = Test(801, 'POST JBossForumsWindow').wrap(request801)
+
+request802 = HTTPRequest(url=url0, headers=headers8)
+request802 = Test(802, 'GET JBossForumsWindow').wrap(request802)
+
+request803 = HTTPRequest(url=url0, headers=headers9)
+request803 = Test(803, 'GET spacer.gif').wrap(request803)
+
+request901 = HTTPRequest(url=url0, headers=headers8)
+request901 = Test(901, 'POST JBossForumsWindow').wrap(request901)
+
+request902 = HTTPRequest(url=url0, headers=headers8)
+request902 = Test(902, 'GET JBossForumsWindow').wrap(request902)
+
+request903 = HTTPRequest(url=url0, headers=headers10)
+request903 = Test(903, 'GET spacer.gif').wrap(request903)
+
+request1001 = HTTPRequest(url=url0, headers=headers11)
+request1001 = Test(1001, 'GET signout').wrap(request1001)
+
+request1002 = HTTPRequest(url=url0, headers=headers11)
+request1002 = Test(1002, 'GET default').wrap(request1002)
+
+request1003 = HTTPRequest(url=url0, headers=headers7)
+request1003 = Test(1003, 'GET favicon.ico').wrap(request1003)
+
+request1004 = HTTPRequest(url=url0, headers=headers12)
+request1004 = Test(1004, 'GET homeimg_main.png').wrap(request1004)
+
+request1005 = HTTPRequest(url=url0, headers=headers12)
+request1005 = Test(1005, 'GET homeimg_jbosslogo.png').wrap(request1005)
+
+
+class TestRunner:
+  """A TestRunner instance is created for each worker thread."""
+
+  # A method for each recorded page.
+  def page1(self):
+    """GET forums (request 101)."""
+    result = request101.GET('/portal/portal/default/forums')
+    # 2 different values for token_windowstate found in response, using the first one.
+    self.token_windowstate = \
+      httpUtilities.valueFromBodyURI('windowstate') # 'minimized'
+    self.token_action = \
+      httpUtilities.valueFromBodyURI('action') # '1'
+    # 4 different values for token_v found in response, using the first one.
+    self.token_v = \
+      httpUtilities.valueFromBodyURI('v') # 'c'
+    self.token_c = \
+      httpUtilities.valueFromBodyURI('c') # '1'
+    # 2 different values for token_f found in response, using the first one.
+    self.token_f = \
+      httpUtilities.valueFromBodyURI('f') # '1'
+    self.token_p = \
+      httpUtilities.valueFromBodyURI('p') # '15'
+    self.token__id10jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT = \
+      httpUtilities.valueFromHiddenInput('_id10jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT') # '1'
+    self.token_jsf_tree_64 = \
+      httpUtilities.valueFromHiddenInput('jsf_tree_64') # 'rO0ABXNyAEdvcmcuYXBhY2hlLm15ZmFjZXMuYXBw...'
+    self.token_jsf_viewid = \
+      httpUtilities.valueFromHiddenInput('jsf_viewid') # '/views/index.xhtml'
+
+    return result
+
+  def page2(self):
+    """GET forums (request 201)."""
+    result = request201.GET('/portal/auth/portal/default/forums')
+
+    return result
+
+  def page3(self):
+    """POST j_security_check (requests 301-302)."""
+    
+    # Expecting 302 'Moved Temporarily'
+    result = request301.POST('/portal/auth/portal/default/j_security_check',
+      ( NVPair('j_username', 'admin'),
+        NVPair('j_password', 'admin'),
+        NVPair('login', 'Login'), ),
+      ( NVPair('Content-Type', 'application/x-www-form-urlencoded'), ))
+
+    grinder.sleep(59)
+    request302.GET('/portal/auth/portal/default/forums')
+    # 11 different values for token_action found in response, using the first one.
+    self.token_action = \
+      httpUtilities.valueFromBodyURI('action') # 'import'
+    self.token_mode = \
+      httpUtilities.valueFromBodyURI('mode') # 'edit'
+    # 1 different values for token_windowstate found in response; the first matched
+    # the last known value of token_windowstate - don't update the variable.
+    # 8 different values for token_v found in response; the first matched
+    # the last known value of token_v - don't update the variable.
+    # 6 different values for token_t found in response, using the first one.
+    self.token_t = \
+      httpUtilities.valueFromBodyURI('t') # '13'
+
+    return result
+
+  def page4(self):
+    """GET JBossForumsWindow (requests 401-402)."""
+    self.token_action = \
+      '1'
+    
+    # Expecting 302 'Moved Temporarily'
+    result = request401.GET('/portal/auth/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&v=' +
+      self.token_v)
+    self.token_action = \
+      httpUtilities.valueFromLocationURI('action') # '2'
+
+    request402.GET('/portal/auth/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&v=' +
+      self.token_v)
+    # 9 different values for token_action found in response, using the first one.
+    self.token_action = \
+      httpUtilities.valueFromBodyURI('action') # 'import'
+    # 1 different values for token_windowstate found in response; the first matched
+    # the last known value of token_windowstate - don't update the variable.
+    # 6 different values for token_v found in response; the first matched
+    # the last known value of token_v - don't update the variable.
+    # 1 different values for token_f found in response; the first matched
+    # the last known value of token_f - don't update the variable.
+    self.token_uid = \
+      httpUtilities.valueFromBodyURI('uid') # '1'
+    self.token__id16jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT = \
+      httpUtilities.valueFromHiddenInput('_id16jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT') # '1'
+    self.token_jsf_tree_64 = \
+      httpUtilities.valueFromHiddenInput('jsf_tree_64') # 'rO0ABXNyAEdvcmcuYXBhY2hlLm15ZmFjZXMuYXBw...'
+    self.token_jsf_viewid = \
+      httpUtilities.valueFromHiddenInput('jsf_viewid') # '/views/category/viewcategory_body.xhtml'
+
+    return result
+
+  def page5(self):
+    """GET JBossForumsWindow (requests 501-502)."""
+    self.token_action = \
+      '1'
+    self.token_v = \
+      'f'
+    
+    # Expecting 302 'Moved Temporarily'
+    result = request501.GET('/portal/auth/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&v=' +
+      self.token_v +
+      '&f=' +
+      self.token_f)
+    self.token_action = \
+      httpUtilities.valueFromLocationURI('action') # '2'
+
+    request502.GET('/portal/auth/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&f=' +
+      self.token_f +
+      '&v=' +
+      self.token_v)
+    # 56 different values for token_action found in response, using the first one.
+    self.token_action = \
+      httpUtilities.valueFromBodyURI('action') # 'import'
+    # 1 different values for token_windowstate found in response; the first matched
+    # the last known value of token_windowstate - don't update the variable.
+    # 51 different values for token_v found in response, using the first one.
+    self.token_v = \
+      httpUtilities.valueFromBodyURI('v') # 'c'
+    self.token_page = \
+      httpUtilities.valueFromBodyURI('page') # '1'
+    # 18 different values for token_t found in response; the first matched
+    # the last known value of token_t - don't update the variable.
+    # 9 different values for token_p found in response; the first matched
+    # the last known value of token_p - don't update the variable.
+    self.token__id17jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT = \
+      httpUtilities.valueFromHiddenInput('_id17jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT') # '1'
+    self.token_jsf_viewid = \
+      httpUtilities.valueFromHiddenInput('jsf_viewid') # '/views/forums/viewforum_body.xhtml'
+
+    return result
+
+  def page6(self):
+    """GET JBossForumsWindow (requests 601-611)."""
+    self.token_action = \
+      '1'
+    self.token_v = \
+      't'
+    
+    # Expecting 302 'Moved Temporarily'
+    result = request601.GET('/portal/auth/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&v=' +
+      self.token_v +
+      '&t=' +
+      self.token_t)
+    self.token_action = \
+      httpUtilities.valueFromLocationURI('action') # '2'
+
+    request602.GET('/portal/auth/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&t=' +
+      self.token_t +
+      '&v=' +
+      self.token_v)
+    # 17 different values for token_action found in response, using the first one.
+    self.token_action = \
+      httpUtilities.valueFromBodyURI('action') # 'import'
+    # 1 different values for token_windowstate found in response; the first matched
+    # the last known value of token_windowstate - don't update the variable.
+    # 12 different values for token_v found in response, using the first one.
+    self.token_v = \
+      httpUtilities.valueFromBodyURI('v') # 'c'
+    self.token__id23jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT = \
+      httpUtilities.valueFromHiddenInput('_id23jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT') # '1'
+    self.token_jsf_tree_64 = \
+      httpUtilities.valueFromHiddenInput('jsf_tree_64') # 'rO0ABXNyAEdvcmcuYXBhY2hlLm15ZmFjZXMuYXBw...'
+    self.token_jsf_viewid = \
+      httpUtilities.valueFromHiddenInput('jsf_viewid') # '/views/topics/viewtopic_body.xhtml'
+    self.token_topicWatchFormId_SUBMIT = \
+      httpUtilities.valueFromHiddenInput('topicWatchFormId_SUBMIT') # '1'
+    self.token__id64jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT = \
+      httpUtilities.valueFromHiddenInput('_id64jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT') # '1'
+    self.token_page = \
+      httpUtilities.valueFromHiddenInput('page') # '0'
+    self.token__id103jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT = \
+      httpUtilities.valueFromHiddenInput('_id103jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT') # '1'
+    self.token_post_SUBMIT = \
+      httpUtilities.valueFromHiddenInput('post_SUBMIT') # '1'
+    self.token__id152jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT = \
+      httpUtilities.valueFromHiddenInput('_id152jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT') # '1'
+
+    request603.GET('/portal-forums/subSilver/images/lang_english/icon_edit.gif')
+
+    request604.GET('/portal-forums/subSilver/images/lang_english/icon_quote.gif')
+
+    request605.GET('/portal-forums/subSilver/images/icon_delete.gif')
+
+    request606.GET('/subSilver/images/spacer.gif')
+
+    request607.GET('/portal-forums/subSilver/images/topic_delete.gif')
+
+    request608.GET('/portal-forums/subSilver/images/topic_move.gif')
+
+    request609.GET('/portal-forums/subSilver/images/topic_lock.gif')
+
+    grinder.sleep(20)
+    request610.GET('/portal-forums/subSilver/images/topic_split.gif')
+
+    grinder.sleep(6261)
+    request611.GET('/portal-forums/subSilver/images/lang_english/reply.gif')
+
+    return result
+
+  def page7(self):
+    """POST JBossForumsWindow (requests 701-703)."""
+    self.token_action = \
+      '1'
+    self.token_orgapachemyfacesportletMyFacesGenericPortletVIEW_ID = \
+      '/views/topics/viewtopic_body.xhtml'
+    
+    # Expecting 302 'Moved Temporarily'
+    result = request701.POST('/portal/auth/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&org.apache.myfaces.portlet.MyFacesGenericPortlet.VIEW_ID=' +
+      self.token_orgapachemyfacesportletMyFacesGenericPortletVIEW_ID,
+      request701.__target__.data,
+      ( NVPair('Content-Type', 'application/x-www-form-urlencoded'), ))
+    self.token_action = \
+      httpUtilities.valueFromLocationURI('action') # '2'
+    self.token_v = \
+      httpUtilities.valueFromLocationURI('v') # 'z'
+
+    request702.GET('/portal/auth/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&f=' +
+      self.token_f +
+      '&t=' +
+      self.token_t +
+      '&v=' +
+      self.token_v)
+    # 4 different values for token_action found in response, using the first one.
+    self.token_action = \
+      httpUtilities.valueFromBodyURI('action') # 'import'
+    # 1 different values for token_windowstate found in response; the first matched
+    # the last known value of token_windowstate - don't update the variable.
+    # 3 different values for token_v found in response, using the first one.
+    self.token_v = \
+      httpUtilities.valueFromBodyURI('v') # 'c'
+    self.token_jsf_tree_64 = \
+      httpUtilities.valueFromHiddenInput('jsf_tree_64') # 'rO0ABXNyAEdvcmcuYXBhY2hlLm15ZmFjZXMuYXBw...'
+    self.token_jsf_viewid = \
+      httpUtilities.valueFromHiddenInput('jsf_viewid') # '/views/topics/posting_reply_body.xhtml'
+
+    grinder.sleep(80)
+    request703.GET('/portal-core/themes/renaissance/images/favicon.ico')
+
+    return result
+
+  def page8(self):
+    """POST JBossForumsWindow (requests 801-803)."""
+    self.token_action = \
+      '1'
+    self.token_orgapachemyfacesportletMyFacesGenericPortletVIEW_ID = \
+      '/views/topics/posting_reply_body.xhtml'
+    
+    # Expecting 302 'Moved Temporarily'
+    result = request801.POST('/portal/auth/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&org.apache.myfaces.portlet.MyFacesGenericPortlet.VIEW_ID=' +
+      self.token_orgapachemyfacesportletMyFacesGenericPortletVIEW_ID,
+      '''-----------------------------49750951017258913871969985923\r\n\
+Content-Disposition: form-data; name=\"f\"\r\n\
+\r\n\
+1\r\n\
+-----------------------------49750951017258913871969985923\r\n\
+Content-Disposition: form-data; name=\"t\"\r\n\
+\r\n\
+13\r\n\
+-----------------------------49750951017258913871969985923\r\n\
+Content-Disposition: form-data; name=\"post:_id20jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj\"\r\n\
+\r\n\
+Re: new topic\r\n\
+-----------------------------49750951017258913871969985923\r\n\
+Content-Disposition: form-data; name=\"addbbcode18\"\r\n\
+\r\n\
+Default\r\n\
+-----------------------------49750951017258913871969985923\r\n\
+Content-Disposition: form-data; name=\"addbbcode20\"\r\n\
+\r\n\
+12\r\n\
+-----------------------------49750951017258913871969985923\r\n\
+Content-Disposition: form-data; name=\"helpbox\"\r\n\
+\r\n\
+Tip: Styles can be applied quickly to selected text.\r\n\
+-----------------------------49750951017258913871969985923\r\n\
+Content-Disposition: form-data; name=\"post:message\"\r\n\
+\r\n\
+This is a reply\r\n\
+-----------------------------49750951017258913871969985923\r\n\
+Content-Disposition: form-data; name=\"post:_id24jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj\"; filename=\"\"\r\n\
+Content-Type: application/octet-stream\r\n\
+\r\n\
+\r\n\
+-----------------------------49750951017258913871969985923\r\n\
+Content-Disposition: form-data; name=\"post:_id26jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj\"\r\n\
+\r\n\
+\r\n\
+-----------------------------49750951017258913871969985923\r\n\
+Content-Disposition: form-data; name=\"post:_id31jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj\"\r\n\
+\r\n\
+Preview\r\n\
+-----------------------------49750951017258913871969985923\r\n\
+Content-Disposition: form-data; name=\"post_SUBMIT\"\r\n\
+\r\n\
+1\r\n\
+-----------------------------49750951017258913871969985923\r\n\
+Content-Disposition: form-data; name=\"post:_link_hidden_\"\r\n\
+\r\n\
+\r\n\
+-----------------------------49750951017258913871969985923\r\n\
+Content-Disposition: form-data; name=\"jsf_tree_64\"\r\n\
+\r\n\
+rO0ABXNyAEdvcmcuYXBhY2hlLm15ZmFjZXMuYXBwbGljYXRpb24uVHJlZVN0cnVjdHVyZU1hbmFnZXIkVHJlZVN0cnVjdENvbXBvbmVudEZZF9icSvbPAgAEWwAJX2NoaWxkcmVudABKW0xvcmcvYXBhY2hlL215ZmFjZXMvYXBwbGljYXRpb24vVHJlZVN0cnVjdHVyZU1hbmFnZXIkVHJlZVN0cnVjdENvbXBvbmVudDtMAA9fY29tcG9uZW50Q2xhc3N0ABJMamF2YS9sYW5nL1N0cmluZztMAAxfY29tcG9uZW50SWRxAH4AAlsAB19mYWNldHN0ABNbTGphdmEvbGFuZy9PYmplY3Q7eHB1cgBKW0xvcmcuYXBhY2hlLm15ZmFjZXMuYXBwbGljYXRpb24uVHJlZVN0cnVjdHVyZU1hbmFnZXIkVHJlZVN0cnVjdENvbXBvbmVudDu6rCfIEYWQqgIAAHhwAAAABHNxAH4AAHB0AClqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sT3V0cHV0TGlua3QANV9pZDNqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHBxAH4ACHQANV9pZDdqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHBxAH4ACHQANl9pZDExamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBzcQB+AAB1cQB+AAUAAAAIc3EAfgAAcHQAKGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxJbnB1dFRleHR0ADZfaWQyMGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwc3EA!
 fgAAcHQALGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxJbnB1dFRleHRhcmVhdAAHbWVzc2FnZXBzcQB+AABwdAA4b3JnLmFwYWNoZS5teWZhY2VzLmN1c3RvbS5maWxldXBsb2FkLkh0bWxJbnB1dEZpbGVVcGxvYWR0ADZfaWQyNGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwc3EAfgAAcHEAfgAUdAA2X2lkMjZqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHB0ACxqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sQ29tbWFuZEJ1dHRvbnQANl9pZDI4amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBzcQB+AABwcQB+ABx0ADZfaWQzMWpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwc3EAfgAAcHEAfgAcdAA2X2lkMzNqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHBxAH4AHHQANl9pZDM1amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianB0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXQABHBvc3RwdAAgamF2YXguZmFjZXMuY29tcG9uZW50LlVJVmlld1Jvb3RwcA==\r\n\
+-----------------------------49750951017258913871969985923\r\n\
+Content-Disposition: form-data; name=\"jsf_state_64\"\r\n\
+\r\n\
+rO0ABXVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAAN1cQB+AAAAAAAFdXEAfgAAAAAAB3BwcHBzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAHhwcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnl0ABJMamF2YS9sYW5nL1N0cmluZztMAAhsYW5ndWFnZXEAfgAHTAAHdmFyaWFudHEAfgAHeHD/////dAAAdAACZW5xAH4ACXQACkhUTUxfQkFTSUN0ACYvdmlld3MvdG9waWNzL3Bvc3RpbmdfcmVwbHlfYm9keS54aHRtbHNyAA5qYXZhLmxhbmcuTG9uZzuL5JDMjyPfAgABSgAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHAAAAAAAAAAJ3BzcgATamF2YS51dGlsLkFycmF5TGlzdHiB0h2Zx2GdAwABSQAEc2l6ZXhwAAAABHcEAAAABHVxAH4AAAAAAAN1cQB+AAAAAAAcdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADVfaWQzamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianB0ABBqYXZheC5mYWNlcy5MaW5rcQB+ABZzcQB+AAQ/QAAAAAAADHcIAAAAEAAAAAJ0ABhjb20uc3VuLmZhY2VsZXRzLk1BUktfSUR0ABwvdmlld3MvY29tbW9uL2NvbW1vbi54aHRtbCMxdAAYY29tLnN1bi5mYWNlbGV0cy5BUFBMSUVEc3IAL2NvbS5zdW4uZmFjZWxldHMuaW1wbC5EZWZhdWx0RmFjZWxldCRBcHBseVRva2VuSJzP!
 RDtulqAMAAB4cHckABovdmlld3MvY29tbW9uL2NvbW1vbi54aHRtbAAAARLTLbs6eHhwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABdAAFdmFsdWVzcgAmY29tLnN1bi5mYWNlbGV0cy5lbC5MZWdhY3lWYWx1ZUJpbmRpbmcAAAAAAAAAAQwAAHhwc3IAJmNvbS5zdW4uZmFjZWxldHMuZWwuVGFnVmFsdWVFeHByZXNzaW9uAAAAAAAAAAEMAAB4cgAYamF2YXguZWwuVmFsdWVFeHByZXNzaW9udwqAW+DA/pECAAB4cgATamF2YXguZWwuRXhwcmVzc2lvbqOFilPyWtI8AgAAeHBzcgAeY29tLnN1bi5lbC5WYWx1ZUV4cHJlc3Npb25JbXBsA7qoYh8lyZgMAAB4cQB+ACN3RwAzI3tmb3J1bXM6b3V0cHV0TGluayhzaGFyZWQubGlua3NbJ2NhdGVnb3J5J10sdHJ1ZSl9ABBqYXZhLmxhbmcuT2JqZWN0c3IAImNvbS5zdW4uZWwubGFuZy5GdW5jdGlvbk1hcHBlckltcGwAAAAAAAAAAQwAAHhwc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABdAARZm9ydW1zOm91dHB1dExpbmtzcgArY29tLnN1bi5lbC5sYW5nLkZ1bmN0aW9uTWFwcGVySW1wbCRGdW5jdGlvbtlx62tJLaDvDAAAeHB3SAAGZm9ydW1zAApvdXRwdXRMaW5rACZvcmcuamJvc3MucG9ydGxldC5mb3J1bXMudWkuUG9ydGFsVXRpbAAKb3V0cHV0TGlua3VyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAJ0ABBqYXZhLmxhbmcuU3RyaW5ndAAHYm9vbGVhbnh4eHB4d2AAXi92aWV3cy9jb21tb24vY29tbW9uLnhodG1sIEA0NSwxMDUgdmFsdWU9IiN7!
 Zm9ydW1zOm91dHB1dExpbmsoc2hhcmVkLmxpbmtzWydjYXRlZ29yeSddLHRydWUpfSJ4eH
hwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB0AAhtYWlubWVudXBwcHBwcHVxAH4AAAAAAAN1cQB+AAAAAAAcdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADVfaWQ3amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4AF3EAfgA3c3EAfgAEP0AAAAAAAAx3CAAAABAAAAACcQB+ABl0ABwvdmlld3MvY29tbW9uL2NvbW1vbi54aHRtbCM1cQB+ABtxAH4AHXhwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB+AB9zcQB+ACBzcQB+ACJzcQB+ACZ3SQA1I3tmb3J1bXM6b3V0cHV0TGluayhzaGFyZWQubGlua3NbJ2ZvcnVtV2F0Y2gnXSx0cnVlKX0AEGphdmEubGFuZy5PYmplY3RzcQB+AChzcQB+AAQ/QAAAAAAADHcIAAAAEAAAAAF0ABFmb3J1bXM6b3V0cHV0TGlua3NxAH4ALHdIAAZmb3J1bXMACm91dHB1dExpbmsAJm9yZy5qYm9zcy5wb3J0bGV0LmZvcnVtcy51aS5Qb3J0YWxVdGlsAApvdXRwdXRMaW5rdXEAfgAuAAAAAnEAfgAwcQB+ADF4eHhweHdiAGAvdmlld3MvY29tbW9uL2NvbW1vbi54aHRtbCBANjAsMTA3IHZhbHVlPSIje2ZvcnVtczpvdXRwdXRMaW5rKHNoYXJlZC5saW5rc1snZm9ydW1XYXRjaCddLHRydWUpfSJ4eHhwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB0AAhtYWlubWVudXBwcHBwcHVxAH4AAAAAAAN1cQB+AAAAAAAcdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADZfaWQxMWpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB!
 +ABdxAH4ASHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAnEAfgAZdAAcL3ZpZXdzL2NvbW1vbi9jb21tb24ueGh0bWwjOHEAfgAbcQB+AB14cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmd0QAMCN7Zm9ydW1zOm91dHB1dExpbmsoc2hhcmVkLmxpbmtzWydhZG1pbiddLHRydWUpfQAQamF2YS5sYW5nLk9iamVjdHNxAH4AKHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXQAEWZvcnVtczpvdXRwdXRMaW5rc3EAfgAsd0gABmZvcnVtcwAKb3V0cHV0TGluawAmb3JnLmpib3NzLnBvcnRsZXQuZm9ydW1zLnVpLlBvcnRhbFV0aWwACm91dHB1dExpbmt1cQB+AC4AAAACcQB+ADBxAH4AMXh4eHB4d10AWy92aWV3cy9jb21tb24vY29tbW9uLnhodG1sIEA2OSwxMDMgdmFsdWU9IiN7Zm9ydW1zOm91dHB1dExpbmsoc2hhcmVkLmxpbmtzWydhZG1pbiddLHRydWUpfSJ4eHhwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB0AAhtYWlubWVudXBwcHBwcHVxAH4AAAAAAAN1cQB+AAAAAAAWdXEAfgAAAAAAB3QABHBvc3RwdAAQamF2YXguZmFjZXMuRm9ybXEAfgBYc3EAfgAEP0AAAAAAAAx3CAAAABAAAAADdABJamF2YXguZmFjZXMuY29tcG9uZW50LlVJRm9ybS5vcmcuYXBhY2hlLm15ZmFjZXMuSElEREVOX0NPTU1BTkRfSU5QVVRTX1NFVHNyABFqYXZhLnV0aWwuSGFzaFNldLpEhZWWuLc0AwAAeHB3DAAAABA/QAAAAAAAAXQAEnBvc3Q6X2xpbmtfaGlkZGVuX3hxAH4AGXQAKC92aWV3cy90b3B!
 pY3MvcG9zdGluZ19yZXBseV9ib2R5LnhodG1sIzVxAH4AG3EAfgAdeHBwcHBwdAATbXVsd
GlwYXJ0L2Zvcm0tZGF0YXBwcHBwcHBwcHBwcHBwcHBwcHNxAH4AEAAAAAh3BAAAAAh1cQB+AAAAAAADdXEAfgAAAAAAG3VxAH4AAAAAAAl1cQB+AAAAAAADdXEAfgAAAAAAB3QANl9pZDIwamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianB0ABBqYXZheC5mYWNlcy5UZXh0dAA7cG9zdDpfaWQyMGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpzcQB+AAQ/QAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAKC92aWV3cy90b3BpY3MvcG9zdGluZ19yZXBseV9ib2R5LnhodG1sIzd4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmdykAFSN7cmVwbHlUb3BpYy5zdWJqZWN0fQAQamF2YS5sYW5nLk9iamVjdHBweHdPAE0vdmlld3MvdG9waWNzL3Bvc3RpbmdfcmVwbHlfYm9keS54aHRtbCBAMzEwLDEyNyB2YWx1ZT0iI3tyZXBseVRvcGljLnN1YmplY3R9Inh4eHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cABwcHNxAH4AcAFwcHBwcHBwcHNyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cQB+AA4AAADIcHBwcHBwcHBwcHBwcHBwc3EAfgBzAAAALXQAC3dpZHRoOjQ1MHB4dAAEcG9zdHQAATJwcHB1cQB+AAAAAAADdXEAfgAAAAAAGnVxAH4AAAAAAAl1cQB+AAAAAAADdXEAfgAAAAAAB3QAB21lc3NhZ2VwdAAUamF2YXguZmFjZXMuVGV4dGFyZWF0AA!
 xwb3N0Om1lc3NhZ2VzcQB+AAQ/QAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAKC92aWV3cy90b3BpY3MvcG9zdGluZ19yZXBseV9ib2R5LnhodG1sIzh4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmdykAFSN7cmVwbHlUb3BpYy5tZXNzYWdlfQAQamF2YS5sYW5nLk9iamVjdHBweHdPAE0vdmlld3MvdG9waWNzL3Bvc3RpbmdfcmVwbHlfYm9keS54aHRtbCBANDQzLDEwMiB2YWx1ZT0iI3tyZXBseVRvcGljLm1lc3NhZ2V9Inh4eHBwcHEAfgBxcHBxAH4AcnBwcHBzcQB+AHMAAAAjcHBwcHB0ABFzdG9yZUNhcmV0KHRoaXMpO3BwcHB0ABFzdG9yZUNhcmV0KHRoaXMpO3BwcHBwdAARc3RvcmVDYXJldCh0aGlzKTtwc3EAfgBzAAAAD3QAC3dpZHRoOjQ1MHB4dAAEcG9zdHQAATNwcHB1cQB+AAAAAAADdXEAfgAAAAAABXVxAH4AAAAAABt1cQB+AAAAAAAJdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADZfaWQyNGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwdAAdb3JnLmFwYWNoZS5teWZhY2VzLkZpbGVVcGxvYWR0ADtwb3N0Ol9pZDI0amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAApL3ZpZXdzL3RvcGljcy9wb3N0aW5nX3JlcGx5X2JvZHkueGh0bWwjMTB4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmdy!
 wAGCN7cmVwbHlUb3BpYy5hdHRhY2htZW50fQAQamF2YS5sYW5nLk9iamVjdHBweHdRAE8v
dmlld3MvdG9waWNzL3Bvc3RpbmdfcmVwbHlfYm9keS54aHRtbCBANDc0LDg5IHZhbHVlPSIje3JlcGx5VG9waWMuYXR0YWNobWVudH0ieHh4cHBwcQB+AHFwcHEAfgBycHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwc3EAfgBzAAAAKHB0AARwb3N0cHBwcHBwcHB1cQB+AAAAAAADdXEAfgAAAAAAGnVxAH4AAAAAAAl1cQB+AAAAAAADdXEAfgAAAAAAB3QANl9pZDI2amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4Af3QAO3Bvc3Q6X2lkMjZqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABcQB+ABl0ACkvdmlld3MvdG9waWNzL3Bvc3RpbmdfcmVwbHlfYm9keS54aHRtbCMxMXhwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB+AB9zcQB+ACBzcQB+ACJzcQB+ACZ3MwAfI3tyZXBseVRvcGljLmF0dGFjaG1lbnRDb21tZW50fQAQamF2YS5sYW5nLk9iamVjdHBweHdZAFcvdmlld3MvdG9waWNzL3Bvc3RpbmdfcmVwbHlfYm9keS54aHRtbCBANDg1LDEwMyB2YWx1ZT0iI3tyZXBseVRvcGljLmF0dGFjaG1lbnRDb21tZW50fSJ4eHhwcHBxAH4AcXBwcQB+AHJwcHBwc3EAfgBzAAAAI3BwcHBwcHBwcHBwcHBwcHBwcHNxAH4AcwAAAANwdAAEcG9zdHBwcHB1cQB+AAAAAAADdXEAfgAAAAAAG3VxAH4AAAAAAAV1cQB+AAAAAAAHdAA2X2lkMjhqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc!
 0ZvcnVtc1dpbmRvd3NucGJqcHQAEmphdmF4LmZhY2VzLkJ1dHRvbnQAO3Bvc3Q6X2lkMjhqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABcQB+ABl0ACkvdmlld3MvdG9waWNzL3Bvc3RpbmdfcmVwbHlfYm9keS54aHRtbCMxMnhwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB+AB9zcQB+ACBzcQB+ACJzcQB+ACZ3LgAaJHtyZXNvdXJjZS5BZGRfYXR0YWNobWVudH0AEGphdmEubGFuZy5PYmplY3RwcHh3VABSL3ZpZXdzL3RvcGljcy9wb3N0aW5nX3JlcGx5X2JvZHkueGh0bWwgQDQ4OCwxMjIgdmFsdWU9IiR7cmVzb3VyY2UuQWRkX2F0dGFjaG1lbnR9Inh4eHNyACdjb20uc3VuLmZhY2VsZXRzLmVsLkxlZ2FjeU1ldGhvZEJpbmRpbmcAAAAAAAAAAQIAAUwAAW10ABtMamF2YXgvZWwvTWV0aG9kRXhwcmVzc2lvbjt4cHNyACdjb20uc3VuLmZhY2VsZXRzLmVsLlRhZ01ldGhvZEV4cHJlc3Npb24AAAAAAAAAAQwAAHhyABlqYXZheC5lbC5NZXRob2RFeHByZXNzaW9usi/Ki+T3NI4CAAB4cQB+ACRzcgAfY29tLnN1bi5lbC5NZXRob2RFeHByZXNzaW9uSW1wbN1SfjgMWZPvDAAAeHEAfgDBdy8AGyN7cmVwbHlUb3BpYy5hZGRBdHRhY2htZW50fQAQamF2YS5sYW5nLlN0cmluZ3VxAH4ALgAAAABwcHh3VgBUL3ZpZXdzL3RvcGljcy9wb3N0aW5nX3JlcGx5X2JvZHkueGh0bWwgQDQ4OCwxMjIgYWN0aW9uPSIje3JlcGx5VG9waWMuY!
 WRkQXR0YWNobWVudH0ieHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB0AApsaXRlb3B0aW9
ucHBwcHB1cQB+AAAAAAADdXEAfgAAAAAAG3VxAH4AAAAAAAV1cQB+AAAAAAAHdAA2X2lkMzFqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHEAfgC1dAA7cG9zdDpfaWQzMWpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpzcQB+AAQ/QAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAKS92aWV3cy90b3BpY3MvcG9zdGluZ19yZXBseV9ib2R5LnhodG1sIzE4eHBzcQB+AAQ/QAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJncnABMke3Jlc291cmNlLlByZXZpZXd9ABBqYXZhLmxhbmcuT2JqZWN0cHB4d0wASi92aWV3cy90b3BpY3MvcG9zdGluZ19yZXBseV9ib2R5LnhodG1sIEA1MzcsMjIgdmFsdWU9IiR7cmVzb3VyY2UuUHJldmlld30ieHh4c3EAfgC9c3EAfgDAc3EAfgDDdykAFSN7cmVwbHlUb3BpYy5wcmV2aWV3fQAQamF2YS5sYW5nLlN0cmluZ3VxAH4ALgAAAABwcHh3TwBNL3ZpZXdzL3RvcGljcy9wb3N0aW5nX3JlcGx5X2JvZHkueGh0bWwgQDUzNywyMiBhY3Rpb249IiN7cmVwbHlUb3BpYy5wcmV2aWV3fSJ4cHBwcHBwcHBwcHB0ACFyZXR1cm4gY2hlY2tGb3JtKHRoaXMucGFyZW50Tm9kZSlwcHBwcHBwcHBwcHBwdAAKbWFpbm9wdGlvbnQAATVwcHBwdXEAfgAAAAAAA3VxAH4AAAAAABt1cQB+AAAAAAAFdXEAfgAAAAAAB3QANl9pZDMzamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNX!
 aW5kb3dzbnBianBxAH4AtXQAO3Bvc3Q6X2lkMzNqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABcQB+ABl0ACkvdmlld3MvdG9waWNzL3Bvc3RpbmdfcmVwbHlfYm9keS54aHRtbCMxOXhwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB+AB9zcQB+ACBzcQB+ACJzcQB+ACZ3JgASJHtyZXNvdXJjZS5TdWJtaXR9ABBqYXZhLmxhbmcuT2JqZWN0cHB4d0sASS92aWV3cy90b3BpY3MvcG9zdGluZ19yZXBseV9ib2R5LnhodG1sIEA1NDIsMzYgdmFsdWU9IiR7cmVzb3VyY2UuU3VibWl0fSJ4eHhzcQB+AL1zcQB+AMBzcQB+AMN3KQAVI3tyZXBseVRvcGljLmV4ZWN1dGV9ABBqYXZhLmxhbmcuU3RyaW5ndXEAfgAuAAAAAHBweHdPAE0vdmlld3MvdG9waWNzL3Bvc3RpbmdfcmVwbHlfYm9keS54aHRtbCBANTQyLDM2IGFjdGlvbj0iI3tyZXBseVRvcGljLmV4ZWN1dGV9InhwcHB0AAFzcHBwcHBwcHBwcHBwcHBwcHBwcHBwdAAKbWFpbm9wdGlvbnQAATZwcHBwdXEAfgAAAAAAA3VxAH4AAAAAABt1cQB+AAAAAAAFdXEAfgAAAAAAB3QANl9pZDM1amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4AtXQAO3Bvc3Q6X2lkMzVqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABcQB+ABl0ACkvdmlld3MvdG9waWNzL3Bv!
 c3RpbmdfcmVwbHlfYm9keS54aHRtbCMyMHhwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQ
B+AB9zcQB+ACBzcQB+ACJzcQB+ACZ3JgASJHtyZXNvdXJjZS5DYW5jZWx9ABBqYXZhLmxhbmcuT2JqZWN0cHB4d0wASi92aWV3cy90b3BpY3MvcG9zdGluZ19yZXBseV9ib2R5LnhodG1sIEA1NDQsMTM0IHZhbHVlPSIke3Jlc291cmNlLkNhbmNlbH0ieHh4c3EAfgC9c3EAfgDAc3EAfgDDdygAFCN7cmVwbHlUb3BpYy5jYW5jZWx9ABBqYXZhLmxhbmcuU3RyaW5ndXEAfgAuAAAAAHBweHdPAE0vdmlld3MvdG9waWNzL3Bvc3RpbmdfcmVwbHlfYm9keS54aHRtbCBANTQ0LDEzNCBhY3Rpb249IiN7cmVwbHlUb3BpYy5jYW5jZWx9InhwcHB0AAFjcHBwcHBwcHBwcHBwcHBwcHBwcHBwdAAKbWFpbm9wdGlvbnQAATdwcHBweHg=\r\n\
+-----------------------------49750951017258913871969985923\r\n\
+Content-Disposition: form-data; name=\"jsf_viewid\"\r\n\
+\r\n\
+/views/topics/posting_reply_body.xhtml\r\n\
+-----------------------------49750951017258913871969985923--\r\n\
+''',
+      ( NVPair('Content-Type', 'multipart/form-data; boundary=---------------------------49750951017258913871969985923'), ))
+    self.token_action = \
+      httpUtilities.valueFromLocationURI('action') # '2'
+
+    request802.GET('/portal/auth/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&f=' +
+      self.token_f +
+      '&t=' +
+      self.token_t +
+      '&v=' +
+      self.token_v)
+    # 4 different values for token_action found in response, using the first one.
+    self.token_action = \
+      httpUtilities.valueFromBodyURI('action') # 'import'
+    # 1 different values for token_windowstate found in response; the first matched
+    # the last known value of token_windowstate - don't update the variable.
+    # 3 different values for token_v found in response, using the first one.
+    self.token_v = \
+      httpUtilities.valueFromBodyURI('v') # 'c'
+
+    grinder.sleep(477)
+    request803.GET('/portal-forums/subSilver/images/spacer.gif')
+
+    return result
+
+  def page9(self):
+    """POST JBossForumsWindow (requests 901-903)."""
+    self.token_action = \
+      '1'
+    
+    # Expecting 302 'Moved Temporarily'
+    result = request901.POST('/portal/auth/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&org.apache.myfaces.portlet.MyFacesGenericPortlet.VIEW_ID=' +
+      self.token_orgapachemyfacesportletMyFacesGenericPortletVIEW_ID,
+      '''-----------------------------18259052927300422581941284241\r\n\
+Content-Disposition: form-data; name=\"f\"\r\n\
+\r\n\
+1\r\n\
+-----------------------------18259052927300422581941284241\r\n\
+Content-Disposition: form-data; name=\"t\"\r\n\
+\r\n\
+13\r\n\
+-----------------------------18259052927300422581941284241\r\n\
+Content-Disposition: form-data; name=\"post:_id20jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj\"\r\n\
+\r\n\
+Re: new topic\r\n\
+-----------------------------18259052927300422581941284241\r\n\
+Content-Disposition: form-data; name=\"addbbcode18\"\r\n\
+\r\n\
+Default\r\n\
+-----------------------------18259052927300422581941284241\r\n\
+Content-Disposition: form-data; name=\"addbbcode20\"\r\n\
+\r\n\
+12\r\n\
+-----------------------------18259052927300422581941284241\r\n\
+Content-Disposition: form-data; name=\"helpbox\"\r\n\
+\r\n\
+Tip: Styles can be applied quickly to selected text.\r\n\
+-----------------------------18259052927300422581941284241\r\n\
+Content-Disposition: form-data; name=\"post:message\"\r\n\
+\r\n\
+This is a reply\r\n\
+-----------------------------18259052927300422581941284241\r\n\
+Content-Disposition: form-data; name=\"post:_id24jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj\"; filename=\"\"\r\n\
+Content-Type: application/octet-stream\r\n\
+\r\n\
+\r\n\
+-----------------------------18259052927300422581941284241\r\n\
+Content-Disposition: form-data; name=\"post:_id26jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj\"\r\n\
+\r\n\
+\r\n\
+-----------------------------18259052927300422581941284241\r\n\
+Content-Disposition: form-data; name=\"post:_id33jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj\"\r\n\
+\r\n\
+Submit\r\n\
+-----------------------------18259052927300422581941284241\r\n\
+Content-Disposition: form-data; name=\"post_SUBMIT\"\r\n\
+\r\n\
+1\r\n\
+-----------------------------18259052927300422581941284241\r\n\
+Content-Disposition: form-data; name=\"post:_link_hidden_\"\r\n\
+\r\n\
+\r\n\
+-----------------------------18259052927300422581941284241\r\n\
+Content-Disposition: form-data; name=\"jsf_tree_64\"\r\n\
+\r\n\
+rO0ABXNyAEdvcmcuYXBhY2hlLm15ZmFjZXMuYXBwbGljYXRpb24uVHJlZVN0cnVjdHVyZU1hbmFnZXIkVHJlZVN0cnVjdENvbXBvbmVudEZZF9icSvbPAgAEWwAJX2NoaWxkcmVudABKW0xvcmcvYXBhY2hlL215ZmFjZXMvYXBwbGljYXRpb24vVHJlZVN0cnVjdHVyZU1hbmFnZXIkVHJlZVN0cnVjdENvbXBvbmVudDtMAA9fY29tcG9uZW50Q2xhc3N0ABJMamF2YS9sYW5nL1N0cmluZztMAAxfY29tcG9uZW50SWRxAH4AAlsAB19mYWNldHN0ABNbTGphdmEvbGFuZy9PYmplY3Q7eHB1cgBKW0xvcmcuYXBhY2hlLm15ZmFjZXMuYXBwbGljYXRpb24uVHJlZVN0cnVjdHVyZU1hbmFnZXIkVHJlZVN0cnVjdENvbXBvbmVudDu6rCfIEYWQqgIAAHhwAAAABXNxAH4AAHB0AClqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sT3V0cHV0TGlua3QANV9pZDNqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHBxAH4ACHQANV9pZDdqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHBxAH4ACHQANl9pZDExamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBzcQB+AABwdAApamF2YXguZmFjZXMuY29tcG9uZW50Lmh0bWwuSHRtbE91dHB1dFRleHR0ADZfaWQ1NWpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwc3EAfgAAdXEAfgAFAAAACHNx!
 AH4AAHB0AChqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sSW5wdXRUZXh0dAA2X2lkMjBqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHB0ACxqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sSW5wdXRUZXh0YXJlYXQAB21lc3NhZ2Vwc3EAfgAAcHQAOG9yZy5hcGFjaGUubXlmYWNlcy5jdXN0b20uZmlsZXVwbG9hZC5IdG1sSW5wdXRGaWxlVXBsb2FkdAA2X2lkMjRqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHBxAH4AF3QANl9pZDI2amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBzcQB+AABwdAAsamF2YXguZmFjZXMuY29tcG9uZW50Lmh0bWwuSHRtbENvbW1hbmRCdXR0b250ADZfaWQyOGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwc3EAfgAAcHEAfgAfdAA2X2lkMzFqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHNxAH4AAHBxAH4AH3QANl9pZDMzamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBzcQB+AABwcQB+AB90ADZfaWQzNWpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwdAAjamF2YXguZmFjZXMuY29tcG9uZW50Lmh0bWwuSHRtbEZvcm10AARwb3N0cHQAIGphdmF4!
 LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHA=\r\n\
+-----------------------------18259052927300422581941284241\r\n\
+Content-Disposition: form-data; name=\"jsf_state_64\"\r\n\
+\r\n\
+rO0ABXVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAAN1cQB+AAAAAAAFdXEAfgAAAAAAB3BwcHBzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAHhwcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnl0ABJMamF2YS9sYW5nL1N0cmluZztMAAhsYW5ndWFnZXEAfgAHTAAHdmFyaWFudHEAfgAHeHD/////dAAAdAACZW5xAH4ACXQACkhUTUxfQkFTSUN0ACYvdmlld3MvdG9waWNzL3Bvc3RpbmdfcmVwbHlfYm9keS54aHRtbHNyAA5qYXZhLmxhbmcuTG9uZzuL5JDMjyPfAgABSgAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHAAAAAAAAAASXBzcgATamF2YS51dGlsLkFycmF5TGlzdHiB0h2Zx2GdAwABSQAEc2l6ZXhwAAAABXcEAAAABXVxAH4AAAAAAAN1cQB+AAAAAAAcdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADVfaWQzamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianB0ABBqYXZheC5mYWNlcy5MaW5rcQB+ABZzcQB+AAQ/QAAAAAAADHcIAAAAEAAAAAJ0ABhjb20uc3VuLmZhY2VsZXRzLk1BUktfSUR0ABwvdmlld3MvY29tbW9uL2NvbW1vbi54aHRtbCMxdAAYY29tLnN1bi5mYWNlbGV0cy5BUFBMSUVEc3IAL2NvbS5zdW4uZmFjZWxldHMuaW1wbC5EZWZhdWx0RmFjZWxldCRBcHBseVRva2VuSJzP!
 RDtulqAMAAB4cHckABovdmlld3MvY29tbW9uL2NvbW1vbi54aHRtbAAAARLTLbs6eHhwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABdAAFdmFsdWVzcgAmY29tLnN1bi5mYWNlbGV0cy5lbC5MZWdhY3lWYWx1ZUJpbmRpbmcAAAAAAAAAAQwAAHhwc3IAJmNvbS5zdW4uZmFjZWxldHMuZWwuVGFnVmFsdWVFeHByZXNzaW9uAAAAAAAAAAEMAAB4cgAYamF2YXguZWwuVmFsdWVFeHByZXNzaW9udwqAW+DA/pECAAB4cgATamF2YXguZWwuRXhwcmVzc2lvbqOFilPyWtI8AgAAeHBzcgAeY29tLnN1bi5lbC5WYWx1ZUV4cHJlc3Npb25JbXBsA7qoYh8lyZgMAAB4cQB+ACN3RwAzI3tmb3J1bXM6b3V0cHV0TGluayhzaGFyZWQubGlua3NbJ2NhdGVnb3J5J10sdHJ1ZSl9ABBqYXZhLmxhbmcuT2JqZWN0c3IAImNvbS5zdW4uZWwubGFuZy5GdW5jdGlvbk1hcHBlckltcGwAAAAAAAAAAQwAAHhwc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABdAARZm9ydW1zOm91dHB1dExpbmtzcgArY29tLnN1bi5lbC5sYW5nLkZ1bmN0aW9uTWFwcGVySW1wbCRGdW5jdGlvbtlx62tJLaDvDAAAeHB3SAAGZm9ydW1zAApvdXRwdXRMaW5rACZvcmcuamJvc3MucG9ydGxldC5mb3J1bXMudWkuUG9ydGFsVXRpbAAKb3V0cHV0TGlua3VyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAJ0ABBqYXZhLmxhbmcuU3RyaW5ndAAHYm9vbGVhbnh4eHB4d2AAXi92aWV3cy9jb21tb24vY29tbW9uLnhodG1sIEA0NSwxMDUgdmFsdWU9IiN7!
 Zm9ydW1zOm91dHB1dExpbmsoc2hhcmVkLmxpbmtzWydjYXRlZ29yeSddLHRydWUpfSJ4eH
hwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB0AAhtYWlubWVudXBwcHBwcHVxAH4AAAAAAAN1cQB+AAAAAAAcdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADVfaWQ3amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianBxAH4AF3EAfgA3c3EAfgAEP0AAAAAAAAx3CAAAABAAAAACcQB+ABl0ABwvdmlld3MvY29tbW9uL2NvbW1vbi54aHRtbCM1cQB+ABtxAH4AHXhwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB+AB9zcQB+ACBzcQB+ACJzcQB+ACZ3SQA1I3tmb3J1bXM6b3V0cHV0TGluayhzaGFyZWQubGlua3NbJ2ZvcnVtV2F0Y2gnXSx0cnVlKX0AEGphdmEubGFuZy5PYmplY3RzcQB+AChzcQB+AAQ/QAAAAAAADHcIAAAAEAAAAAF0ABFmb3J1bXM6b3V0cHV0TGlua3NxAH4ALHdIAAZmb3J1bXMACm91dHB1dExpbmsAJm9yZy5qYm9zcy5wb3J0bGV0LmZvcnVtcy51aS5Qb3J0YWxVdGlsAApvdXRwdXRMaW5rdXEAfgAuAAAAAnEAfgAwcQB+ADF4eHhweHdiAGAvdmlld3MvY29tbW9uL2NvbW1vbi54aHRtbCBANjAsMTA3IHZhbHVlPSIje2ZvcnVtczpvdXRwdXRMaW5rKHNoYXJlZC5saW5rc1snZm9ydW1XYXRjaCddLHRydWUpfSJ4eHhwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB0AAhtYWlubWVudXBwcHBwcHVxAH4AAAAAAAN1cQB+AAAAAAAcdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADZfaWQxMWpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB!
 +ABdxAH4ASHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAnEAfgAZdAAcL3ZpZXdzL2NvbW1vbi9jb21tb24ueGh0bWwjOHEAfgAbcQB+AB14cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmd0QAMCN7Zm9ydW1zOm91dHB1dExpbmsoc2hhcmVkLmxpbmtzWydhZG1pbiddLHRydWUpfQAQamF2YS5sYW5nLk9iamVjdHNxAH4AKHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXQAEWZvcnVtczpvdXRwdXRMaW5rc3EAfgAsd0gABmZvcnVtcwAKb3V0cHV0TGluawAmb3JnLmpib3NzLnBvcnRsZXQuZm9ydW1zLnVpLlBvcnRhbFV0aWwACm91dHB1dExpbmt1cQB+AC4AAAACcQB+ADBxAH4AMXh4eHB4d10AWy92aWV3cy9jb21tb24vY29tbW9uLnhodG1sIEA2OSwxMDMgdmFsdWU9IiN7Zm9ydW1zOm91dHB1dExpbmsoc2hhcmVkLmxpbmtzWydhZG1pbiddLHRydWUpfSJ4eHhwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB0AAhtYWlubWVudXBwcHBwcHVxAH4AAAAAAAN1cQB+AAAAAAAFdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADZfaWQ1NWpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwdAAQamF2YXguZmFjZXMuVGV4dHBzcQB+AAQ/QAAAAAAADHcIAAAAEAAAAAJ0ABhjb20uc3VuLmZhY2VsZXRzLk1BUktfSUR0ACsvdmlld3MvdG9waWNzL3Bvc3RpbmdfcmVwbHlfcHJldmlldy54aHRtbCMwdAAYY29tLnN1bi5mYWNlbGV0cy5BUFBMSUVEc3EAfgAcdzM!
 AKS92aWV3cy90b3BpY3MvcG9zdGluZ19yZXBseV9wcmV2aWV3LnhodG1sAAABEtMt22B4e
HBzcQB+AAQ/QAAAAAAAAXcIAAAAAgAAAAF0AAV2YWx1ZXNxAH4AIHNxAH4AInNxAH4AJndFADEje2ZvcnVtczpmb3JtYXRNZXNzYWdlKHJlcGx5VG9waWMubWVzc2FnZSxmYWxzZSl9ABBqYXZhLmxhbmcuT2JqZWN0c3EAfgAoc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABdAAUZm9ydW1zOmZvcm1hdE1lc3NhZ2VzcQB+ACx3TgAGZm9ydW1zAA1mb3JtYXRNZXNzYWdlACZvcmcuamJvc3MucG9ydGxldC5mb3J1bXMudWkuUG9ydGFsVXRpbAANZm9ybWF0TWVzc2FnZXVxAH4ALgAAAAJ0ABBqYXZhLmxhbmcuU3RyaW5ndAAHYm9vbGVhbnh4eHB4d20Aay92aWV3cy90b3BpY3MvcG9zdGluZ19yZXBseV9wcmV2aWV3LnhodG1sIEA1MSwxMjAgdmFsdWU9IiN7Zm9ydW1zOmZvcm1hdE1lc3NhZ2UocmVwbHlUb3BpYy5tZXNzYWdlLGZhbHNlKX0ieHh4cHBzcgARamF2YS5sYW5nLkJvb2xlYW7NIHKA1Zz67gIAAVoABXZhbHVleHAAcHBwcHB1cQB+AAAAAAADdXEAfgAAAAAAFnVxAH4AAAAAAAd0AARwb3N0cHQAEGphdmF4LmZhY2VzLkZvcm1xAH4AcXNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAA3QASWphdmF4LmZhY2VzLmNvbXBvbmVudC5VSUZvcm0ub3JnLmFwYWNoZS5teWZhY2VzLkhJRERFTl9DT01NQU5EX0lOUFVUU19TRVRzcgARamF2YS51dGlsLkhhc2hTZXS6RIWVlri3NAMAAHhwdwwAAAAQP0AAAAAAAAF0ABJwb3N0Ol9saW5rX2hpZGRlbl94cQB+ABl0ACgvdmlld3MvdG9waWNzL3Bvc3RpbmdfcmVwbHlfYm9keS!
 54aHRtbCM1cQB+ABtxAH4AHXhwcHBwcHQAE211bHRpcGFydC9mb3JtLWRhdGFwcHBwcHBwcHBwcHBwcHBwcHBzcQB+ABAAAAAIdwQAAAAIdXEAfgAAAAAAA3VxAH4AAAAAABt1cQB+AAAAAAAJdXEAfgAAAAAAA3VxAH4AAAAAAAd0ADZfaWQyMGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwdAAQamF2YXguZmFjZXMuVGV4dHQAO3Bvc3Q6X2lkMjBqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABcQB+ABl0ACgvdmlld3MvdG9waWNzL3Bvc3RpbmdfcmVwbHlfYm9keS54aHRtbCM3eHBzcQB+AAQ/QAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJncpABUje3JlcGx5VG9waWMuc3ViamVjdH0AEGphdmEubGFuZy5PYmplY3RwcHh3TwBNL3ZpZXdzL3RvcGljcy9wb3N0aW5nX3JlcGx5X2JvZHkueGh0bWwgQDMxMCwxMjcgdmFsdWU9IiN7cmVwbHlUb3BpYy5zdWJqZWN0fSJ4eHhwcHBxAH4AbXBwc3EAfgBsAXBwcHBwcHBwc3IAEWphdmEubGFuZy5JbnRlZ2VyEuKgpPeBhzgCAAFJAAV2YWx1ZXhxAH4ADgAAAMhwcHBwcHBwcHBwcHBwcHBzcQB+AIoAAAAtdAALd2lkdGg6NDUwcHh0AARwb3N0dAABMnBwcHVxAH4AAAAAAAN1cQB+AAAAAAAadXEAfgAAAAAACXVxAH4AAAAAAAN1cQB+AAAAAAAHdAAHbWVzc2FnZXB0ABRqYXZheC5mYWNlcy5UZXh0YXJlYXQADHBvc3Q6bW!
 Vzc2FnZXNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAAoL3ZpZXdzL3RvcGljcy9w
b3N0aW5nX3JlcGx5X2JvZHkueGh0bWwjOHhwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB+AB9zcQB+ACBzcQB+ACJzcQB+ACZ3KQAVI3tyZXBseVRvcGljLm1lc3NhZ2V9ABBqYXZhLmxhbmcuT2JqZWN0cHB4d08ATS92aWV3cy90b3BpY3MvcG9zdGluZ19yZXBseV9ib2R5LnhodG1sIEA0NDMsMTAyIHZhbHVlPSIje3JlcGx5VG9waWMubWVzc2FnZX0ieHh4cHBwcQB+AG1wcHEAfgCJcHBwcHNxAH4AigAAACNwcHBwcHQAEXN0b3JlQ2FyZXQodGhpcyk7cHBwcHQAEXN0b3JlQ2FyZXQodGhpcyk7cHBwcHB0ABFzdG9yZUNhcmV0KHRoaXMpO3BzcQB+AIoAAAAPdAALd2lkdGg6NDUwcHh0AARwb3N0dAABM3BwcHVxAH4AAAAAAAN1cQB+AAAAAAAFdXEAfgAAAAAAG3VxAH4AAAAAAAl1cQB+AAAAAAADdXEAfgAAAAAAB3QANl9pZDI0amJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianB0AB1vcmcuYXBhY2hlLm15ZmFjZXMuRmlsZVVwbG9hZHQAO3Bvc3Q6X2lkMjRqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABcQB+ABl0ACkvdmlld3MvdG9waWNzL3Bvc3RpbmdfcmVwbHlfYm9keS54aHRtbCMxMHhwc3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB+AB9zcQB+ACBzcQB+ACJzcQB+ACZ3LAAYI3tyZXBseVRvcGljLmF0dGFjaG1lbnR9ABBqYXZhLmxhbmcuT2JqZWN0cHB4d1EATy92aWV3cy90b!
 3BpY3MvcG9zdGluZ19yZXBseV9ib2R5LnhodG1sIEA0NzQsODkgdmFsdWU9IiN7cmVwbHlUb3BpYy5hdHRhY2htZW50fSJ4eHhwcHBxAH4AbXBwcQB+AIlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBzcQB+AIoAAAAocHQABHBvc3RwcHBwcHBwcHVxAH4AAAAAAAN1cQB+AAAAAAAadXEAfgAAAAAACXVxAH4AAAAAAAN1cQB+AAAAAAAHdAA2X2lkMjZqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHEAfgCWdAA7cG9zdDpfaWQyNmpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpzcQB+AAQ/QAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAKS92aWV3cy90b3BpY3MvcG9zdGluZ19yZXBseV9ib2R5LnhodG1sIzExeHBzcQB+AAQ/QAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJnczAB8je3JlcGx5VG9waWMuYXR0YWNobWVudENvbW1lbnR9ABBqYXZhLmxhbmcuT2JqZWN0cHB4d1kAVy92aWV3cy90b3BpY3MvcG9zdGluZ19yZXBseV9ib2R5LnhodG1sIEA0ODUsMTAzIHZhbHVlPSIje3JlcGx5VG9waWMuYXR0YWNobWVudENvbW1lbnR9Inh4eHBwcHEAfgBtcHBxAH4AiXBwcHBzcQB+AIoAAAAjcHBwcHBwcHBwcHBwcHBwcHBwc3EAfgCKAAAAA3B0AARwb3N0cHBwcHVxAH4AAAAAAAN1cQB+AAAAAAAbdXEAfgAAAAAABXVxAH4AAAAAAAd0ADZfaWQyOGpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV!
 2luZG93c25wYmpwdAASamF2YXguZmFjZXMuQnV0dG9udAA7cG9zdDpfaWQyOGpicG5zXzJ
mZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpzcQB+AAQ/QAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAKS92aWV3cy90b3BpY3MvcG9zdGluZ19yZXBseV9ib2R5LnhodG1sIzEyeHBzcQB+AAQ/QAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJncuABoke3Jlc291cmNlLkFkZF9hdHRhY2htZW50fQAQamF2YS5sYW5nLk9iamVjdHBweHdUAFIvdmlld3MvdG9waWNzL3Bvc3RpbmdfcmVwbHlfYm9keS54aHRtbCBANDg4LDEyMiB2YWx1ZT0iJHtyZXNvdXJjZS5BZGRfYXR0YWNobWVudH0ieHh4c3IAJ2NvbS5zdW4uZmFjZWxldHMuZWwuTGVnYWN5TWV0aG9kQmluZGluZwAAAAAAAAABAgABTAABbXQAG0xqYXZheC9lbC9NZXRob2RFeHByZXNzaW9uO3hwc3IAJ2NvbS5zdW4uZmFjZWxldHMuZWwuVGFnTWV0aG9kRXhwcmVzc2lvbgAAAAAAAAABDAAAeHIAGWphdmF4LmVsLk1ldGhvZEV4cHJlc3Npb26yL8qL5Pc0jgIAAHhxAH4AJHNyAB9jb20uc3VuLmVsLk1ldGhvZEV4cHJlc3Npb25JbXBs3VJ+OAxZk+8MAAB4cQB+ANh3LwAbI3tyZXBseVRvcGljLmFkZEF0dGFjaG1lbnR9ABBqYXZhLmxhbmcuU3RyaW5ndXEAfgAuAAAAAHBweHdWAFQvdmlld3MvdG9waWNzL3Bvc3RpbmdfcmVwbHlfYm9keS54aHRtbCBANDg4LDEyMiBhY3Rpb249IiN7cmVwbHlUb3BpYy5hZGRBdHRhY2htZW50fSJ4cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHQACmxpdGVvcHRpb25wcHBwcHVx!
 AH4AAAAAAAN1cQB+AAAAAAAbdXEAfgAAAAAABXVxAH4AAAAAAAd0ADZfaWQzMWpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpwcQB+AMx0ADtwb3N0Ol9pZDMxamJwbnNfMmZkZWZhdWx0XzJmZm9ydW1zXzJmSkJvc3NGb3J1bXNXaW5kb3dzbnBianNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAXEAfgAZdAApL3ZpZXdzL3RvcGljcy9wb3N0aW5nX3JlcGx5X2JvZHkueGh0bWwjMTh4cHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgAfc3EAfgAgc3EAfgAic3EAfgAmdycAEyR7cmVzb3VyY2UuUHJldmlld30AEGphdmEubGFuZy5PYmplY3RwcHh3TABKL3ZpZXdzL3RvcGljcy9wb3N0aW5nX3JlcGx5X2JvZHkueGh0bWwgQDUzNywyMiB2YWx1ZT0iJHtyZXNvdXJjZS5QcmV2aWV3fSJ4eHhzcQB+ANRzcQB+ANdzcQB+ANp3KQAVI3tyZXBseVRvcGljLnByZXZpZXd9ABBqYXZhLmxhbmcuU3RyaW5ndXEAfgAuAAAAAHBweHdPAE0vdmlld3MvdG9waWNzL3Bvc3RpbmdfcmVwbHlfYm9keS54aHRtbCBANTM3LDIyIGFjdGlvbj0iI3tyZXBseVRvcGljLnByZXZpZXd9InhwcHBwcHBwcHBwcHQAIXJldHVybiBjaGVja0Zvcm0odGhpcy5wYXJlbnROb2RlKXBwcHBwcHBwcHBwcHB0AAptYWlub3B0aW9udAABNXBwcHB1cQB+AAAAAAADdXEAfgAAAAAAG3VxAH4AAAAAAAV1cQB+AAAAAAAHdAA2X2lkMzNqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3Nu!
 cGJqcHEAfgDMdAA7cG9zdDpfaWQzM2picG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3
NzRm9ydW1zV2luZG93c25wYmpzcQB+AAQ/QAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAKS92aWV3cy90b3BpY3MvcG9zdGluZ19yZXBseV9ib2R5LnhodG1sIzE5eHBzcQB+AAQ/QAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4AIHNxAH4AInNxAH4AJncmABIke3Jlc291cmNlLlN1Ym1pdH0AEGphdmEubGFuZy5PYmplY3RwcHh3SwBJL3ZpZXdzL3RvcGljcy9wb3N0aW5nX3JlcGx5X2JvZHkueGh0bWwgQDU0MiwzNiB2YWx1ZT0iJHtyZXNvdXJjZS5TdWJtaXR9Inh4eHNxAH4A1HNxAH4A13NxAH4A2ncpABUje3JlcGx5VG9waWMuZXhlY3V0ZX0AEGphdmEubGFuZy5TdHJpbmd1cQB+AC4AAAAAcHB4d08ATS92aWV3cy90b3BpY3MvcG9zdGluZ19yZXBseV9ib2R5LnhodG1sIEA1NDIsMzYgYWN0aW9uPSIje3JlcGx5VG9waWMuZXhlY3V0ZX0ieHBwcHQAAXNwcHBwcHBwcHBwcHBwcHBwcHBwcHB0AAptYWlub3B0aW9udAABNnBwcHB1cQB+AAAAAAADdXEAfgAAAAAAG3VxAH4AAAAAAAV1cQB+AAAAAAAHdAA2X2lkMzVqYnBuc18yZmRlZmF1bHRfMmZmb3J1bXNfMmZKQm9zc0ZvcnVtc1dpbmRvd3NucGJqcHEAfgDMdAA7cG9zdDpfaWQzNWpicG5zXzJmZGVmYXVsdF8yZmZvcnVtc18yZkpCb3NzRm9ydW1zV2luZG93c25wYmpzcQB+AAQ/QAAAAAAADHcIAAAAEAAAAAFxAH4AGXQAKS92aWV3cy90b3BpY3MvcG9zdGluZ19yZXBseV9ib2R5LnhodG1sIzIweHBzcQB+AAQ/QAAAAAAAAXcIAAAAAgAAAAFxAH4AH3NxAH4!
 AIHNxAH4AInNxAH4AJncmABIke3Jlc291cmNlLkNhbmNlbH0AEGphdmEubGFuZy5PYmplY3RwcHh3TABKL3ZpZXdzL3RvcGljcy9wb3N0aW5nX3JlcGx5X2JvZHkueGh0bWwgQDU0NCwxMzQgdmFsdWU9IiR7cmVzb3VyY2UuQ2FuY2VsfSJ4eHhzcQB+ANRzcQB+ANdzcQB+ANp3KAAUI3tyZXBseVRvcGljLmNhbmNlbH0AEGphdmEubGFuZy5TdHJpbmd1cQB+AC4AAAAAcHB4d08ATS92aWV3cy90b3BpY3MvcG9zdGluZ19yZXBseV9ib2R5LnhodG1sIEA1NDQsMTM0IGFjdGlvbj0iI3tyZXBseVRvcGljLmNhbmNlbH0ieHBwcHQAAWNwcHBwcHBwcHBwcHBwcHBwcHBwcHB0AAptYWlub3B0aW9udAABN3BwcHB4eA==\r\n\
+-----------------------------18259052927300422581941284241\r\n\
+Content-Disposition: form-data; name=\"jsf_viewid\"\r\n\
+\r\n\
+/views/topics/posting_reply_body.xhtml\r\n\
+-----------------------------18259052927300422581941284241--\r\n\
+''',
+      ( NVPair('Content-Type', 'multipart/form-data; boundary=---------------------------18259052927300422581941284241'), ))
+    self.token_action = \
+      httpUtilities.valueFromLocationURI('action') # '2'
+    self.token_notified_watch_type = \
+      httpUtilities.valueFromLocationURI('notified_watch_type') # '1'
+    self.token_notified_post_id = \
+      httpUtilities.valueFromLocationURI('notified_post_id') # '16'
+    self.token_v = \
+      httpUtilities.valueFromLocationURI('v') # 't'
+
+    grinder.sleep(352)
+    self.token_action = \
+      '2'
+    self.token_v = \
+      't'
+    request902.GET('/portal/auth/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&f=' +
+      self.token_f +
+      '&t=' +
+      self.token_t +
+      '&notified_watch_type=' +
+      self.token_notified_watch_type +
+      '&notified_post_id=' +
+      self.token_notified_post_id +
+      '&v=' +
+      self.token_v)
+    # 20 different values for token_action found in response, using the first one.
+    self.token_action = \
+      httpUtilities.valueFromBodyURI('action') # 'import'
+    # 1 different values for token_windowstate found in response; the first matched
+    # the last known value of token_windowstate - don't update the variable.
+    # 15 different values for token_v found in response, using the first one.
+    self.token_v = \
+      httpUtilities.valueFromBodyURI('v') # 'c'
+    # 2 different values for token_p found in response; the first matched
+    # the last known value of token_p - don't update the variable.
+    self.token_jsf_viewid = \
+      httpUtilities.valueFromHiddenInput('jsf_viewid') # '/views/topics/viewtopic_body.xhtml'
+    self.token__id106jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT = \
+      httpUtilities.valueFromHiddenInput('_id106jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT') # '1'
+    self.token__id145jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT = \
+      httpUtilities.valueFromHiddenInput('_id145jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT') # '1'
+    self.token__id194jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT = \
+      httpUtilities.valueFromHiddenInput('_id194jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT') # '1'
+
+    grinder.sleep(416)
+    request903.GET('/subSilver/images/spacer.gif')
+
+    return result
+
+  def page10(self):
+    """GET signout (requests 1001-1005)."""
+    
+    # Expecting 302 'Moved Temporarily'
+    result = request1001.GET('/portal/signout')
+
+    grinder.sleep(15)
+    request1002.GET('/portal/portal/default')
+    # 3 different values for token_windowstate found in response; the first matched
+    # the last known value of token_windowstate - don't update the variable.
+    self.token_op = \
+      httpUtilities.valueFromBodyURI('op') # 'showRegister'
+    self.token_action = \
+      httpUtilities.valueFromBodyURI('action') # 'a'
+
+    grinder.sleep(122)
+    request1003.GET('/portal-core/themes/renaissance/images/favicon.ico')
+
+    grinder.sleep(401)
+    request1004.GET('/portal/content/default/images/homeimg_main.png')
+
+    grinder.sleep(75)
+    request1005.GET('/portal/content/default/images/homeimg_jbosslogo.png')
+
+    return result
+
+  def __call__(self):
+    """This method is called for every run performed by the worker thread."""
+    self.page1()      # GET forums (request 101)
+    self.page2()      # GET forums (request 201)
+
+    grinder.sleep(4339)
+    self.page3()      # POST j_security_check (requests 301-302)
+    self.page4()      # GET JBossForumsWindow (requests 401-402)
+    self.page5()      # GET JBossForumsWindow (requests 501-502)
+    self.page6()      # GET JBossForumsWindow (requests 601-611)
+
+    grinder.sleep(896)
+    self.page7()      # POST JBossForumsWindow (requests 701-703)
+
+    grinder.sleep(8051)
+    self.page8()      # POST JBossForumsWindow (requests 801-803)
+    self.page9()      # POST JBossForumsWindow (requests 901-903)
+
+    grinder.sleep(11538)
+    self.page10()     # GET signout (requests 1001-1005)
+
+
+def instrumentMethod(test, method_name, c=TestRunner):
+  """Instrument a method with the given Test."""
+  unadorned = getattr(c, method_name)
+  import new
+  method = new.instancemethod(test.wrap(unadorned), None, c)
+  setattr(c, method_name, method)
+
+# Replace each method with an instrumented version.
+# You can call the unadorned method using self.page1.__target__().
+instrumentMethod(Test(100, 'Page 1'), 'page1')
+instrumentMethod(Test(200, 'Page 2'), 'page2')
+instrumentMethod(Test(300, 'Page 3'), 'page3')
+instrumentMethod(Test(400, 'Page 4'), 'page4')
+instrumentMethod(Test(500, 'Page 5'), 'page5')
+instrumentMethod(Test(600, 'Page 6'), 'page6')
+instrumentMethod(Test(700, 'Page 7'), 'page7')
+instrumentMethod(Test(800, 'Page 8'), 'page8')
+instrumentMethod(Test(900, 'Page 9'), 'page9')
+instrumentMethod(Test(1000, 'Page 10'), 'page10')

Added: labs/jbossforums/branches/tests/main/src/view_main.py
===================================================================
--- labs/jbossforums/branches/tests/main/src/view_main.py	                        (rev 0)
+++ labs/jbossforums/branches/tests/main/src/view_main.py	2007-05-28 14:56:57 UTC (rev 12176)
@@ -0,0 +1,274 @@
+# The Grinder 3.0-beta33
+# HTTP script recorded by TCPProxy at May 28, 2007 2:31:17 PM
+
+from net.grinder.script import Test
+from net.grinder.script.Grinder import grinder
+from net.grinder.plugin.http import HTTPPluginControl, HTTPRequest
+from HTTPClient import NVPair
+
+from globals import *
+
+main_headers0= \
+  ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'), )
+
+main_headers1= \
+  ( NVPair('Accept', 'text/css,*/*;q=0.1'),
+    NVPair('Referer', url0 + '/portal/portal/default/forums'), )
+
+main_headers2= \
+  ( NVPair('Accept', 'image/png,*/*;q=0.5'), )
+
+main_headers3= \
+  ( NVPair('Accept', '*/*'),
+    NVPair('Referer', url0 + '/portal/portal/default/forums'), )
+
+main_headers4= \
+  ( NVPair('Accept', 'image/png,*/*;q=0.5'),
+    NVPair('Referer', url0 + '/portal-core/themes/renaissance/portal_style.css'), )
+
+main_headers5= \
+  ( NVPair('Accept', 'image/png,*/*;q=0.5'),
+    NVPair('Referer', url0 + '/portal/portal/default/forums'), )
+
+main_headers6= \
+  ( NVPair('Accept', 'image/png,*/*;q=0.5'),
+    NVPair('Referer', url0 + '/portal-forums/subSilver/styles.css'), )
+
+# Create an HTTPRequest for each request, then replace the
+# reference to the HTTPRequest with an instrumented version.
+# You can access the unadorned instance using request101.__target__.
+main_request101 = HTTPRequest(url=url0, headers=main_headers0)
+main_request101 = Test(1101, 'GET forums').wrap(main_request101)
+
+main_request102 = HTTPRequest(url=url0, headers=main_headers1)
+main_request102 = Test(1102, 'GET style.css').wrap(main_request102)
+
+main_request103 = HTTPRequest(url=url0, headers=main_headers1)
+main_request103 = Test(1103, 'GET portal_style.css').wrap(main_request103)
+
+main_request104 = HTTPRequest(url=url0, headers=main_headers2)
+main_request104 = Test(1104, 'GET animated_favicon1.gif').wrap(main_request104)
+
+main_request105 = HTTPRequest(url=url0, headers=main_headers3)
+main_request105 = Test(1105, 'GET prototype.js').wrap(main_request105)
+
+main_request106 = HTTPRequest(url=url0, headers=main_headers4)
+main_request106 = Test(1106, 'GET header_bg.gif').wrap(main_request106)
+
+main_request107 = HTTPRequest(url=url0, headers=main_headers2)
+main_request107 = Test(1107, 'GET favicon.ico').wrap(main_request107)
+
+main_request108 = HTTPRequest(url=url0, headers=main_headers3)
+main_request108 = Test(1108, 'GET scriptaculous.js').wrap(main_request108)
+
+main_request109 = HTTPRequest(url=url0, headers=main_headers3)
+main_request109 = Test(1109, 'GET builder.js').wrap(main_request109)
+
+main_request110 = HTTPRequest(url=url0, headers=main_headers3)
+main_request110 = Test(1110, 'GET effects.js').wrap(main_request110)
+
+main_request111 = HTTPRequest(url=url0, headers=main_headers3)
+main_request111 = Test(1111, 'GET dragdrop.js').wrap(main_request111)
+
+main_request112 = HTTPRequest(url=url0, headers=main_headers3)
+main_request112 = Test(1112, 'GET controls.js').wrap(main_request112)
+
+main_request113 = HTTPRequest(url=url0, headers=main_headers3)
+main_request113 = Test(1113, 'GET slider.js').wrap(main_request113)
+
+main_request114 = HTTPRequest(url=url0, headers=main_headers3)
+main_request114 = Test(1114, 'GET dyna.js').wrap(main_request114)
+
+main_request115 = HTTPRequest(url=url0, headers=main_headers4)
+main_request115 = Test(1115, 'GET logo.gif').wrap(main_request115)
+
+main_request116 = HTTPRequest(url=url0, headers=main_headers4)
+main_request116 = Test(1116, 'GET tab_right_current.gif').wrap(main_request116)
+
+main_request117 = HTTPRequest(url=url0, headers=main_headers4)
+main_request117 = Test(1117, 'GET tab_right.gif').wrap(main_request117)
+
+main_request118 = HTTPRequest(url=url0, headers=main_headers1)
+main_request118 = Test(1118, 'GET styles.css').wrap(main_request118)
+
+main_request119 = HTTPRequest(url=url0, headers=main_headers4)
+main_request119 = Test(1119, 'GET portlet-top-middle.gif').wrap(main_request119)
+
+main_request120 = HTTPRequest(url=url0, headers=main_headers4)
+main_request120 = Test(1120, 'GET ico_16_minimize.gif').wrap(main_request120)
+
+main_request121 = HTTPRequest(url=url0, headers=main_headers4)
+main_request121 = Test(1121, 'GET ico_16_maximize.gif').wrap(main_request121)
+
+main_request122 = HTTPRequest(url=url0, headers=main_headers4)
+main_request122 = Test(1122, 'GET portlet-top-right.gif').wrap(main_request122)
+
+main_request123 = HTTPRequest(url=url0, headers=main_headers4)
+main_request123 = Test(1123, 'GET portlet-left-vertical.gif').wrap(main_request123)
+
+main_request124 = HTTPRequest(url=url0, headers=main_headers4)
+main_request124 = Test(1124, 'GET portlet-top-left.gif').wrap(main_request124)
+
+main_request125 = HTTPRequest(url=url0, headers=main_headers5)
+main_request125 = Test(1125, 'GET icon_mini_search.gif').wrap(main_request125)
+
+main_request126 = HTTPRequest(url=url0, headers=main_headers5)
+main_request126 = Test(1126, 'GET icon_latest_reply.gif').wrap(main_request126)
+
+main_request127 = HTTPRequest(url=url0, headers=main_headers5)
+main_request127 = Test(1127, 'GET folder_big.gif').wrap(main_request127)
+
+main_request128 = HTTPRequest(url=url0, headers=main_headers5)
+main_request128 = Test(1128, 'GET folder_new.gif').wrap(main_request128)
+
+main_request129 = HTTPRequest(url=url0, headers=main_headers5)
+main_request129 = Test(1129, 'GET folder.gif').wrap(main_request129)
+
+main_request130 = HTTPRequest(url=url0, headers=main_headers5)
+main_request130 = Test(1130, 'GET folder_lock.gif').wrap(main_request130)
+
+main_request131 = HTTPRequest(url=url0, headers=main_headers6)
+main_request131 = Test(1131, 'GET cellpic3.gif').wrap(main_request131)
+
+main_request132 = HTTPRequest(url=url0, headers=main_headers6)
+main_request132 = Test(1132, 'GET cellpic1.gif').wrap(main_request132)
+
+main_request133 = HTTPRequest(url=url0, headers=main_headers6)
+main_request133 = Test(1133, 'GET cellpic2.jpg').wrap(main_request133)
+
+main_request134 = HTTPRequest(url=url0, headers=main_headers4)
+main_request134 = Test(1134, 'GET portlet-right-vertical.gif').wrap(main_request134)
+
+main_request135 = HTTPRequest(url=url0, headers=main_headers4)
+main_request135 = Test(1135, 'GET portlet-bottom-middle.gif').wrap(main_request135)
+
+main_request136 = HTTPRequest(url=url0, headers=main_headers4)
+main_request136 = Test(1136, 'GET portlet-bottom-left.gif').wrap(main_request136)
+
+main_request137 = HTTPRequest(url=url0, headers=main_headers4)
+main_request137 = Test(1137, 'GET portlet-bottom-right.gif').wrap(main_request137)
+
+
+class ViewMain:
+  """A TestRunner instance is created for each worker thread."""
+
+  # A method for each recorded page.
+  def page1(self):
+    """GET forums (main_requests 101-137)."""
+    result = main_request101.GET('/portal/portal/default/forums')
+    self.token_jsessionid = \
+      httpUtilities.valueFromBodyURI('jsessionid') # '7126763EC15566CAF3AC3E048AA9DA82'
+    # 2 different values for token_windowstate found in response, using the first one.
+    self.token_windowstate = \
+      httpUtilities.valueFromBodyURI('windowstate') # 'minimized'
+    self.token_action = \
+      httpUtilities.valueFromBodyURI('action') # '1'
+    # 3 different values for token_v found in response, using the first one.
+    self.token_v = \
+      httpUtilities.valueFromBodyURI('v') # 'c'
+    self.token_c = \
+      httpUtilities.valueFromBodyURI('c') # '1'
+    self.token_f = \
+      httpUtilities.valueFromBodyURI('f') # '1'
+    self.token_p = \
+      httpUtilities.valueFromBodyURI('p') # '12'
+    self.token__id10jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT = \
+      httpUtilities.valueFromHiddenInput('_id10jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT') # '1'
+    self.token_jsf_tree_64 = \
+      httpUtilities.valueFromHiddenInput('jsf_tree_64') # 'rO0ABXNyAEdvcmcuYXBhY2hlLm15ZmFjZXMuYXBw...'
+    self.token_jsf_viewid = \
+      httpUtilities.valueFromHiddenInput('jsf_viewid') # '/views/index.xhtml'
+
+    main_request102.GET('/portal-ajax/dyna/style.css')
+
+    main_request103.GET('/portal-core/themes/renaissance/portal_style.css')
+
+    main_request104.GET('/portal-core/themes/renaissance/images/animated_favicon1.gif')
+
+    main_request105.GET('/portal-ajax/dyna/prototype.js')
+
+    main_request106.GET('/portal-core/themes/renaissance/images/header_bg.gif')
+
+    main_request107.GET('/portal-core/themes/renaissance/images/favicon.ico')
+
+    main_request108.GET('/portal-ajax/dyna/scriptaculous.js')
+
+    main_request109.GET('/portal-ajax/dyna/builder.js')
+
+    main_request110.GET('/portal-ajax/dyna/effects.js')
+
+    main_request111.GET('/portal-ajax/dyna/dragdrop.js')
+
+    main_request112.GET('/portal-ajax/dyna/controls.js')
+
+    main_request113.GET('/portal-ajax/dyna/slider.js')
+
+    main_request114.GET('/portal-ajax/dyna/dyna.js')
+
+    main_request115.GET('/portal-core/themes/renaissance/images/logo.gif')
+
+    main_request116.GET('/portal-core/themes/renaissance/images/tab_right_current.gif')
+
+    main_request117.GET('/portal-core/themes/renaissance/images/tab_right.gif')
+
+    main_request118.GET('/portal-forums/subSilver/styles.css')
+
+    main_request119.GET('/portal-core/themes/renaissance/images/portlet-top-middle.gif')
+
+    main_request120.GET('/portal-core/themes/renaissance/images/ico_16_minimize.gif')
+
+    main_request121.GET('/portal-core/themes/renaissance/images/ico_16_maximize.gif')
+
+    main_request122.GET('/portal-core/themes/renaissance/images/portlet-top-right.gif')
+
+    main_request123.GET('/portal-core/themes/renaissance/images/portlet-left-vertical.gif')
+
+    main_request124.GET('/portal-core/themes/renaissance/images/portlet-top-left.gif')
+
+    main_request125.GET('/portal-forums/subSilver/images/icon_mini_search.gif')
+
+    main_request126.GET('/portal-forums/subSilver/images/icon_latest_reply.gif')
+
+    main_request127.GET('/portal-forums/subSilver/images/folder_big.gif')
+
+    main_request128.GET('/portal-forums/subSilver/images/folder_new.gif')
+
+    main_request129.GET('/portal-forums/subSilver/images/folder.gif')
+
+    main_request130.GET('/portal-forums/subSilver/images/folder_lock.gif')
+
+    main_request131.GET('/portal-forums/subSilver/images/cellpic3.gif')
+
+    main_request132.GET('/portal-forums/subSilver/images/cellpic1.gif')
+
+    main_request133.GET('/portal-forums/subSilver/images/cellpic2.jpg')
+
+    main_request134.GET('/portal-core/themes/renaissance/images/portlet-right-vertical.gif')
+
+    main_request135.GET('/portal-core/themes/renaissance/images/portlet-bottom-middle.gif')
+
+    main_request136.GET('/portal-core/themes/renaissance/images/portlet-bottom-left.gif')
+
+    main_request137.GET('/portal-core/themes/renaissance/images/portlet-bottom-right.gif')
+
+    print result.text
+
+    return result
+
+  def all(self):
+    self.page1()      # GET forums (main_requests 101-137)
+
+  def __call__(self):
+    """This method is called for every run performed by the worker thread."""
+    all()
+
+def instrumentMethod(test, method_name, c=MainPage):
+  """Instrument a method with the given Test."""
+  unadorned = getattr(c, method_name)
+  import new
+  method = new.instancemethod(test.wrap(unadorned), None, c)
+  setattr(c, method_name, method)
+
+# Replace each method with an instrumented version.
+# You can call the unadorned method using self.page1.__target__().
+instrumentMethod(Test(1, 'View main page'), 'all')

Added: labs/jbossforums/branches/tests/main/src/view_post.py
===================================================================
--- labs/jbossforums/branches/tests/main/src/view_post.py	                        (rev 0)
+++ labs/jbossforums/branches/tests/main/src/view_post.py	2007-05-28 14:56:57 UTC (rev 12176)
@@ -0,0 +1,300 @@
+# The Grinder 3.0-beta33
+# HTTP script recorded by TCPProxy at May 28, 2007 4:19:40 PM
+
+from net.grinder.script import Test
+from net.grinder.script.Grinder import grinder
+from net.grinder.plugin.http import HTTPPluginControl, HTTPRequest
+from HTTPClient import NVPair
+
+from globals import *
+
+post_headers0= \
+  ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'), )
+
+post_headers1= \
+  ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'),
+    NVPair('Referer', url0 + '/portal/portal/default/forums'), )
+
+post_headers2= \
+  ( NVPair('Accept', 'image/png,*/*;q=0.5'),
+    NVPair('Referer', url0 + '/portal/portal/default/forums/JBossForumsWindow?action=2&f=1&v=f'), )
+
+post_headers3= \
+  ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'),
+    NVPair('Referer', url0 + '/portal/portal/default/forums/JBossForumsWindow?action=2&f=1&v=f'), )
+
+post_headers4= \
+  ( NVPair('Accept', 'image/png,*/*;q=0.5'),
+    NVPair('Referer', url0 + '/portal/portal/default/forums/JBossForumsWindow?action=2&f=1&page=1&v=f'), )
+
+post_headers5= \
+  ( NVPair('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'),
+    NVPair('Referer', url0 + '/portal/portal/default/forums/JBossForumsWindow?action=2&f=1&page=1&v=f'), )
+
+post_headers6= \
+  ( NVPair('Accept', 'image/png,*/*;q=0.5'), )
+
+post_headers7= \
+  ( NVPair('Accept', 'image/png,*/*;q=0.5'),
+    NVPair('Referer', url0 + '/portal/portal/default/forums/JBossForumsWindow?action=2&t=4&v=t'), )
+
+# Create an HTTPRequest for each request, then replace the
+# reference to the HTTPRequest with an instrumented version.
+# You can access the unadorned instance using request101.__target__.
+post_request101 = HTTPRequest(url=url0, headers=post_headers0)
+post_request101 = Test(2101, 'GET forums').wrap(post_request101)
+
+post_request201 = HTTPRequest(url=url0, headers=post_headers1)
+post_request201 = Test(2201, 'GET JBossForumsWindow').wrap(post_request201)
+
+post_request202 = HTTPRequest(url=url0, headers=post_headers1)
+post_request202 = Test(2202, 'GET JBossForumsWindow').wrap(post_request202)
+
+post_request203 = HTTPRequest(url=url0, headers=post_headers2)
+post_request203 = Test(2203, 'GET folder_new_hot.gif').wrap(post_request203)
+
+post_request204 = HTTPRequest(url=url0, headers=post_headers2)
+post_request204 = Test(2204, 'GET folder_hot.gif').wrap(post_request204)
+
+post_request205 = HTTPRequest(url=url0, headers=post_headers2)
+post_request205 = Test(2205, 'GET folder_lock_new.gif').wrap(post_request205)
+
+post_request206 = HTTPRequest(url=url0, headers=post_headers2)
+post_request206 = Test(2206, 'GET folder_sticky.gif').wrap(post_request206)
+
+post_request301 = HTTPRequest(url=url0, headers=headers3)
+post_request301 = Test(2301, 'GET JBossForumsWindow').wrap(post_request301)
+
+post_request302 = HTTPRequest(url=url0, headers=post_headers3)
+post_request302 = Test(2302, 'GET JBossForumsWindow').wrap(post_request302)
+
+post_request303 = HTTPRequest(url=url0, headers=post_headers4)
+post_request303 = Test(2303, 'GET folder_announce.gif').wrap(post_request303)
+
+post_request401 = HTTPRequest(url=url0, headers=post_headers5)
+post_request401 = Test(2401, 'GET JBossForumsWindow').wrap(post_request401)
+
+post_request402 = HTTPRequest(url=url0, headers=post_headers5)
+post_request402 = Test(2402, 'GET JBossForumsWindow').wrap(post_request402)
+
+post_request403 = HTTPRequest(url=url0, headers=post_headers6)
+post_request403 = Test(2403, 'GET favicon.ico').wrap(post_request403)
+
+post_request404 = HTTPRequest(url=url0, headers=post_headers7)
+post_request404 = Test(2404, 'GET icon_profile.gif').wrap(post_request404)
+
+post_request405 = HTTPRequest(url=url0, headers=post_headers7)
+post_request405 = Test(2405, 'GET spacer.gif').wrap(post_request405)
+
+post_request406 = HTTPRequest(url=url0, headers=post_headers7)
+post_request406 = Test(2406, 'GET icon_minipost.gif').wrap(post_request406)
+
+
+class ViewPost:
+  """A TestRunner instance is created for each worker thread."""
+
+  # A method for each recorded page.
+  def page1(self):
+    """GET forums (post_request 101)."""
+    result = post_request101.GET('/portal/portal/default/forums')
+    # 2 different values for token_windowstate found in response, using the first one.
+    self.token_windowstate = \
+      httpUtilities.valueFromBodyURI('windowstate') # 'minimized'
+    # 2 different values for token_jsessionid found in response, using the first one.
+    self.token_jsessionid = \
+      httpUtilities.valueFromBodyURI('jsessionid') # 'B9B81FEF67E80F326D126CA922F87D88'
+    self.token_action = \
+      httpUtilities.valueFromBodyURI('action') # '1'
+    # 4 different values for token_v found in response, using the first one.
+    self.token_v = \
+      httpUtilities.valueFromBodyURI('v') # 'c'
+    self.token_c = \
+      httpUtilities.valueFromBodyURI('c') # '1'
+    # 2 different values for token_f found in response, using the first one.
+    self.token_f = \
+      httpUtilities.valueFromBodyURI('f') # '1'
+    self.token_p = \
+      httpUtilities.valueFromBodyURI('p') # '14'
+    self.token__id10jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT = \
+      httpUtilities.valueFromHiddenInput('_id10jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT') # '1'
+    self.token_jsf_tree_64 = \
+      httpUtilities.valueFromHiddenInput('jsf_tree_64') # 'rO0ABXNyAEdvcmcuYXBhY2hlLm15ZmFjZXMuYXBw...'
+    self.token_jsf_viewid = \
+      httpUtilities.valueFromHiddenInput('jsf_viewid') # '/views/index.xhtml'
+
+    return result
+
+  def page2(self):
+    """GET JBossForumsWindow (post_requests 201-206)."""
+    self.token_v = \
+      'f'
+    
+    # Expecting 302 'Moved Temporarily'
+    result = post_request201.GET('/portal/portal/default/forums/JBossForumsWindow;jsessionid=' +
+      self.token_jsessionid +
+      '?action=' +
+      self.token_action +
+      '&v=' +
+      self.token_v +
+      '&f=' +
+      self.token_f)
+    self.token_action = \
+      httpUtilities.valueFromLocationURI('action') # '2'
+
+    grinder.sleep(11)
+    post_request202.GET('/portal/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&f=' +
+      self.token_f +
+      '&v=' +
+      self.token_v)
+    # 1 different values for token_windowstate found in response; the first matched
+    # the last known value of token_windowstate - don't update the variable.
+    self.token_action = \
+      httpUtilities.valueFromBodyURI('action') # '1'
+    # 38 different values for token_v found in response, using the first one.
+    self.token_v = \
+      httpUtilities.valueFromBodyURI('v') # 'c'
+    self.token_page = \
+      httpUtilities.valueFromBodyURI('page') # '1'
+    # 19 different values for token_t found in response, using the first one.
+    self.token_t = \
+      httpUtilities.valueFromBodyURI('t') # '3'
+    # 9 different values for token_p found in response; the first matched
+    # the last known value of token_p - don't update the variable.
+    self.token__id9jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT = \
+      httpUtilities.valueFromHiddenInput('_id9jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT') # '1'
+    self.token_jsf_viewid = \
+      httpUtilities.valueFromHiddenInput('jsf_viewid') # '/views/forums/viewforum_body.xhtml'
+
+    post_request203.GET('/portal-forums/subSilver/images/folder_new_hot.gif')
+
+    post_request204.GET('/portal-forums/subSilver/images/folder_hot.gif')
+
+    post_request205.GET('/portal-forums/subSilver/images/folder_lock_new.gif')
+
+    post_request206.GET('/portal-forums/subSilver/images/folder_sticky.gif')
+
+    return result
+
+  def page3(self):
+    """GET JBossForumsWindow (post_requests 301-303)."""
+    self.token_v = \
+      'f'
+    
+    # Expecting 302 'Moved Temporarily'
+    result = post_request301.GET('/portal/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&v=' +
+      self.token_v +
+      '&f=' +
+      self.token_f +
+      '&page=' +
+      self.token_page)
+    self.token_action = \
+      httpUtilities.valueFromLocationURI('action') # '2'
+
+    post_request302.GET('/portal/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&f=' +
+      self.token_f +
+      '&page=' +
+      self.token_page +
+      '&v=' +
+      self.token_v)
+    # 1 different values for token_windowstate found in response; the first matched
+    # the last known value of token_windowstate - don't update the variable.
+    self.token_action = \
+      httpUtilities.valueFromBodyURI('action') # '1'
+    # 14 different values for token_v found in response, using the first one.
+    self.token_v = \
+      httpUtilities.valueFromBodyURI('v') # 'c'
+    self.token_page = \
+      httpUtilities.valueFromBodyURI('page') # '0'
+    # 3 different values for token_t found in response, using the first one.
+    self.token_t = \
+      httpUtilities.valueFromBodyURI('t') # '4'
+    # 2 different values for token_p found in response, using the first one.
+    self.token_p = \
+      httpUtilities.valueFromBodyURI('p') # '4'
+
+    post_request303.GET('/portal-forums/subSilver/images/folder_announce.gif')
+
+    return result
+
+  def page4(self):
+    """GET JBossForumsWindow (post_requests 401-406)."""
+    self.token_v = \
+      't'
+    
+    # Expecting 302 'Moved Temporarily'
+    result = post_request401.GET('/portal/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&v=' +
+      self.token_v +
+      '&t=' +
+      self.token_t)
+    self.token_action = \
+      httpUtilities.valueFromLocationURI('action') # '2'
+
+    post_request402.GET('/portal/portal/default/forums/JBossForumsWindow' +
+      '?action=' +
+      self.token_action +
+      '&t=' +
+      self.token_t +
+      '&v=' +
+      self.token_v)
+    # 1 different values for token_windowstate found in response; the first matched
+    # the last known value of token_windowstate - don't update the variable.
+    self.token_action = \
+      httpUtilities.valueFromBodyURI('action') # '1'
+    # 8 different values for token_v found in response, using the first one.
+    self.token_v = \
+      httpUtilities.valueFromBodyURI('v') # 'c'
+    self.token_uid = \
+      httpUtilities.valueFromBodyURI('uid') # '1'
+    self.token__id15jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT = \
+      httpUtilities.valueFromHiddenInput('_id15jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT') # '1'
+    self.token_jsf_viewid = \
+      httpUtilities.valueFromHiddenInput('jsf_viewid') # '/views/topics/viewtopic_body.xhtml'
+    self.token__id42jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT = \
+      httpUtilities.valueFromHiddenInput('_id42jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT') # '1'
+    self.token_jsf_tree_64 = \
+      httpUtilities.valueFromHiddenInput('jsf_tree_64') # 'rO0ABXNyAEdvcmcuYXBhY2hlLm15ZmFjZXMuYXBw...'
+    self.token__id60jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT = \
+      httpUtilities.valueFromHiddenInput('_id60jbpns_2fdefault_2fforums_2fJBossForumsWindowsnpbj_SUBMIT') # '1'
+
+    post_request403.GET('/portal-core/themes/renaissance/images/favicon.ico')
+
+    post_request404.GET('/portal-forums/subSilver/images/lang_english/icon_profile.gif')
+
+    post_request405.GET('/subSilver/images/spacer.gif')
+
+    post_request406.GET('/portal-forums/subSilver/images/icon_minipost.gif')
+
+    return result
+
+  def all(self):
+    self.page1()      # GET forums (post_request 101)
+    self.page2()      # GET JBossForumsWindow (post_requests 201-206)
+    self.page3()      # GET JBossForumsWindow (post_requests 301-303)
+    self.page4()      # GET JBossForumsWindow (post_requests 401-406)
+
+  def __call__(self):
+    """This method is called for every run performed by the worker thread."""
+    all()
+
+def instrumentMethod(test, method_name, c=ViewPost):
+  """Instrument a method with the given Test."""
+  unadorned = getattr(c, method_name)
+  import new
+  method = new.instancemethod(test.wrap(unadorned), None, c)
+  setattr(c, method_name, method)
+
+# Replace each method with an instrumented version.
+# You can call the unadorned method using self.page1.__target__().
+instrumentMethod(Test(2, 'View post'), 'all')




More information about the jboss-svn-commits mailing list