[seam-commits] Seam SVN: r14286 - in branches/community/Seam_2_3/examples-ee6: mail and 43 other directories.
seam-commits at lists.jboss.org
seam-commits at lists.jboss.org
Thu Feb 2 09:52:53 EST 2012
Author: manaRH
Date: 2012-02-02 09:52:51 -0500 (Thu, 02 Feb 2012)
New Revision: 14286
Added:
branches/community/Seam_2_3/examples-ee6/mail/
branches/community/Seam_2_3/examples-ee6/mail/build.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-ear/
branches/community/Seam_2_3/examples-ee6/mail/mail-ear/pom.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/
branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/main/
branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/main/application/
branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/main/application/META-INF/
branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/main/application/META-INF/application.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/main/application/META-INF/jboss-deployment-structure.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/pom.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/AsynchronousMailProcessor.java
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/Lists.java
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/MailExample.java
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/MailSenderServlet.java
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/Person.java
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/resources/
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/resources/META-INF/
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/resources/META-INF/MANIFEST.MF
branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/resources/seam.properties
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/pom.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/mail/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/mail/test/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/mail/test/MailTest.java
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/mail/test/selenium/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/mail/test/selenium/SeleniumMailTest.java
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources-ftest/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources-ftest/testng.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources-integration/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources-integration/testng.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/WEB-INF/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/WEB-INF/components.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors1.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors2.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors3.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors4.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/sanitization.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/seam.properties
branches/community/Seam_2_3/examples-ee6/mail/mail-web/
branches/community/Seam_2_3/examples-ee6/mail/mail-web/pom.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/META-INF/
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/META-INF/MANIFEST.MF
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/components.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/faces-config.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/pages.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/web.xml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/attachment.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/excel.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/gavin.jpg
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/html.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/index.html
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/index.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/jboss.jpg
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/numbers.csv
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/plain.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/seamlogo.png
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/shane.jpg
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/simple.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/template.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/templating.xhtml
branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/whyseam.xhtml
branches/community/Seam_2_3/examples-ee6/mail/pom.xml
branches/community/Seam_2_3/examples-ee6/mail/readme.txt
Log:
added Mail example for JSF2
Added: branches/community/Seam_2_3/examples-ee6/mail/build.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/build.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/build.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+
+<project name="Seam Mail" default="deploy" basedir=".">
+ <!-- Example name -->
+ <property name="Name" value="Mail example" />
+ <property name="example.name" value="jboss-seam-email" />
+
+ <!-- Libraries -->
+ <property name="seam.ui.lib" value="yes" />
+ <property name="seam.mail.lib" value="yes" />
+ <property name="deploy.meldware.mail" value="yes" />
+ <property name="seam.pdf.lib" value="yes"/>
+ <property name="seam.excel.lib" value="yes"/>
+ <property name="seam.debug.lib" value="yes" />
+ <property name="facelets.lib" value="yes" />
+
+ <import file="../build.xml" />
+
+ <patternset id="test.view.files">
+ <include name="*.*" />
+ </patternset>
+
+ <patternset id="test.src.files">
+ <include name="**/*.xml" />
+ <include name="**/*.xhtml" />
+ </patternset>
+
+ <path id="test.classpath.extras">
+ <path location="${lib.dir}/jboss-seam-ui.jar" />
+ </path>
+
+ <path id="build.classpath.extras">
+ <path location="${lib.dir}/jboss-seam-mail.jar" />
+ <path location="${lib.dir}/jboss-seam-pdf.jar" />
+ <path location="${lib.dir}/jboss-seam-excel.jar" />
+ </path>
+
+</project>
+
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-ear/pom.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-ear/pom.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-ear/pom.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>mail</artifactId>
+ <groupId>org.jboss.seam.examples</groupId>
+ <version>2.3.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-ear</artifactId>
+ <packaging>ear</packaging>
+ <name>Mail EAR Module</name>
+
+ <properties>
+ <jboss.home>${env.JBOSS_HOME}</jboss.home>
+ <jboss.domain>default</jboss.domain>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-web</artifactId>
+ <type>war</type>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-ejb</artifactId>
+ <type>ejb</type>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-jsf2</artifactId>
+ <type>ejb</type>
+ <scope>compile</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>com.thoughtworks.xstream</groupId>
+ <artifactId>xstream</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xpp3</groupId>
+ <artifactId>xpp3_min</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>jfree</groupId>
+ <artifactId>jfreechart</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>seam-mail</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-ear-plugin</artifactId>
+ <configuration>
+ <version>5</version>
+ <defaultLibBundleDir>lib</defaultLibBundleDir>
+ <!-- Exclude eclipse generated application.xml and manually modified jboss-app.xml during mvn build -->
+ <earSourceExcludes>**/application.xml, **/jboss-app.xml</earSourceExcludes>
+ <!-- use maven generated application.xml instead -->
+ <generateApplicationXml>true</generateApplicationXml>
+ <filtering>true</filtering>
+<!-- <jboss>
+ <version>4.2</version>
+ <loader-repository>seam.jboss.org:loader=seam-mail</loader-repository>
+ </jboss>-->
+ <modules>
+ <ejbModule>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-jsf2</artifactId>
+ <bundleFileName>jboss-seam.jar</bundleFileName>
+ </ejbModule>
+ <webModule>
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-web</artifactId>
+ <contextRoot>/seam-mail</contextRoot>
+ <bundleFileName>mail-web.war</bundleFileName>
+ </webModule>
+ <ejbModule>
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-ejb</artifactId>
+ <bundleFileName>mail-ejb.jar</bundleFileName>
+ </ejbModule>
+ </modules>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-greenmail-service</id>
+ <phase>package</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>com.icegreen</groupId>
+ <artifactId>greenmail-jboss-service</artifactId>
+ <version>1.3.1b</version>
+ <type>sar</type>
+ <overWrite>false</overWrite>
+ <outputDirectory>${project.build.directory}</outputDirectory>
+ <destFileName>greenmail-jboss-service.sar</destFileName>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>exploded</id>
+ <properties>
+ <example.name>mail</example.name>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>unpack</id>
+ <phase>package</phase>
+ <goals>
+ <goal>unpack</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.jboss.seam.examples</groupId>
+ <artifactId>mail-ear</artifactId>
+ <type>ear</type>
+ <overWrite>true</overWrite>
+ <outputDirectory>${project.build.directory}/${project.build.finalName}-exploded/${project.build.finalName}.ear</outputDirectory>
+ </artifactItem>
+ <artifactItem>
+ <groupId>org.jboss.seam.examples</groupId>
+ <artifactId>mail-web</artifactId>
+ <type>war</type>
+ <overWrite>true</overWrite>
+ <outputDirectory>${project.build.directory}/${project.build.finalName}-exploded/${project.build.finalName}.ear/${example.name}-web.war</outputDirectory>
+ </artifactItem>
+ <artifactItem>
+ <groupId>org.jboss.seam.examples</groupId>
+ <artifactId>mail-ejb</artifactId>
+ <type>jar</type>
+ <overWrite>true</overWrite>
+ <outputDirectory>${project.build.directory}/${project.build.finalName}-exploded/${project.build.finalName}.ear/${example.name}-ejb.jar</outputDirectory>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+
+ </profiles>
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ <version>3.1.0.GA</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+</project>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/main/application/META-INF/application.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/main/application/META-INF/application.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/main/application/META-INF/application.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd" version="5">
+ <description>Examples for Seam 2 Framework</description>
+ <display-name>mail-ear</display-name>
+ <module>
+ <web>
+ <web-uri>mail-web.war</web-uri>
+ <context-root>/seam-mail</context-root>
+ </web>
+ </module>
+ <module>
+ <ejb>mail-ejb.jar</ejb>
+ </module>
+ <module>
+ <ejb>jboss-seam.jar</ejb>
+ </module>
+ <library-directory>lib</library-directory>
+</application>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/main/application/META-INF/jboss-deployment-structure.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/main/application/META-INF/jboss-deployment-structure.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-ear/src/main/application/META-INF/jboss-deployment-structure.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,34 @@
+<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
+ <deployment>
+ <exclusions>
+ <module name="org.hibernate" slot="main" />
+ </exclusions>
+ <dependencies>
+ <module name="org.apache.log4j" export="true" />
+ <module name="org.dom4j" export="true" />
+ <module name="org.apache.commons.logging" export="true" />
+ <module name="org.apache.commons.collections" export="true" />
+ <module name="javax.faces.api" export="true" />
+ <module name="com.sun.jsf-impl" export="true" />
+ <module name="org.slf4j" export="true" />
+ <module name="org.javassist" export="true"/>
+ <module name="javax.mail.api" export="true"/>
+ </dependencies>
+ </deployment>
+ <sub-deployment name="mail-web.war">
+ <dependencies>
+ <module name="javax.faces.api" />
+ <module name="com.sun.jsf-impl" />
+ <module name="javax.mail.api"/>
+ </dependencies>
+ </sub-deployment>
+ <sub-deployment name="mail-ejb.jar">
+ <dependencies>
+ <module name="javax.mail.api"/>
+ </dependencies>
+ <exclusions>
+ <module name="org.hibernate" slot="main" />
+ </exclusions>
+ </sub-deployment>
+
+</jboss-deployment-structure>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/pom.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/pom.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/pom.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>mail</artifactId>
+ <groupId>org.jboss.seam.examples</groupId>
+ <version>2.3.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-ejb</artifactId>
+ <packaging>ejb</packaging>
+ <name>Mail EJB Module</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-jsf2</artifactId>
+ <type>ejb</type>
+ </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.ejb</groupId>
+ <artifactId>ejb-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.faces</groupId>
+ <artifactId>jsf-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ <version>3.1.0.GA</version>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+</project>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/AsynchronousMailProcessor.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/AsynchronousMailProcessor.java (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/AsynchronousMailProcessor.java 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,26 @@
+package org.jboss.seam.example.mail;
+
+import org.jboss.seam.annotations.async.Asynchronous;
+import org.jboss.seam.annotations.AutoCreate;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.async.Duration;
+import org.jboss.seam.contexts.Contexts;
+import org.jboss.seam.faces.Renderer;
+import org.jboss.seam.log.*;
+
+ at Name("asynchronousMailProcessor")
+ at AutoCreate
+public class AsynchronousMailProcessor
+{
+ private static final LogProvider log = Logging.getLogProvider(AsynchronousMailProcessor.class);
+
+ @Asynchronous
+ public void scheduleSend(@Duration long delay, Person person) {
+ try {
+ Contexts.getEventContext().set("person", person);
+ Renderer.instance().render("/simple.xhtml");
+ } catch (Exception e) {
+ log.error("Error scheduling send #0",e);
+ }
+ }
+}
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/Lists.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/Lists.java (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/Lists.java 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,19 @@
+package org.jboss.seam.example.mail;
+
+import org.jboss.seam.annotations.*;
+
+ at Name("lists")
+public class Lists{
+
+ String[] numbers = {"one", "two", "three", "four", "five"};
+ String[] daysOfWeek = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
+
+ public String[] getNumbers() {
+ return numbers;
+ }
+
+ public String[] getDaysOfWeek() {
+ return daysOfWeek;
+ }
+
+}
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/MailExample.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/MailExample.java (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/MailExample.java 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,98 @@
+package org.jboss.seam.example.mail;
+
+import java.net.URL;
+
+import javax.faces.application.FacesMessage;
+
+import org.jboss.seam.ScopeType;
+import org.jboss.seam.annotations.Factory;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Logger;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.core.ResourceLoader;
+import org.jboss.seam.faces.FacesMessages;
+import org.jboss.seam.faces.Renderer;
+import org.jboss.seam.log.Log;
+
+ at Name("mailExample")
+ at Scope(ScopeType.CONVERSATION)
+public class MailExample
+{
+
+ @Logger
+ private Log log;
+
+ @In
+ private FacesMessages facesMessages;
+
+ @In
+ private Renderer renderer;
+
+ @In
+ private AsynchronousMailProcessor asynchronousMailProcessor;
+
+ @In(create=true)
+ private Person person;
+
+ public void send() {
+ try {
+ renderer.render("/simple.xhtml");
+ facesMessages.add("Email sent successfully");
+ } catch (Exception e) {
+ log.error("Error sending mail", e);
+ facesMessages.add(FacesMessage.SEVERITY_INFO, "Email sending failed: " + e.getMessage());
+ }
+ }
+
+ public void sendAttachment() {
+ try {
+ renderer.render("/attachment.xhtml");
+ facesMessages.add("Email sent successfully");
+ } catch (Exception e) {
+ log.error("Error sending mail", e);
+ facesMessages.add(FacesMessage.SEVERITY_INFO, "Email sending failed: " + e.getMessage());
+ }
+ }
+
+ public void sendHtml() {
+ try {
+ renderer.render("/html.xhtml");
+ facesMessages.add("Email sent successfully");
+ } catch (Exception e) {
+ log.error("Error sending mail", e);
+ facesMessages.add("Email sending failed:" + e.getMessage());
+ }
+ }
+
+ public void sendPlain() {
+ try {
+ renderer.render("/plain.xhtml");
+ facesMessages.add("Email sent successfully");
+ } catch (Exception e) {
+ log.error("Error sending mail", e);
+ facesMessages.add("Email sending failed: " + e.getMessage());
+ }
+ }
+
+ public void sendTemplate() {
+ try {
+ renderer.render("/templating.xhtml");
+ facesMessages.add("Email sent successfully");
+ } catch (Exception e) {
+ log.error("Error sending mail", e);
+ facesMessages.add("Email sending failed: " + e.getMessage());
+ }
+ }
+
+ public void sendAsynchronous() {
+ asynchronousMailProcessor.scheduleSend(3000, person);
+ }
+
+ @Factory("numbers")
+ public URL getFile()
+ {
+ return ResourceLoader.instance().getResource("/numbers.csv");
+ }
+
+}
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/MailSenderServlet.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/MailSenderServlet.java (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/MailSenderServlet.java 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,45 @@
+package org.jboss.seam.example.mail;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jboss.seam.Component;
+import org.jboss.seam.servlet.ContextualHttpServletRequest;
+
+public class MailSenderServlet extends HttpServlet
+{
+
+ @Override
+ protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException
+ {
+ new ContextualHttpServletRequest(req)
+ {
+
+ @Override
+ public void process() throws Exception
+ {
+ Person person = (Person) Component.getInstance(Person.class);
+ String firstname = req.getParameter("name");
+ String email = req.getParameter("email");
+ person.setAddress(email);
+ person.setFirstname(firstname);
+ MailExample mailExample = (MailExample) Component.getInstance(MailExample.class);
+ mailExample.sendPlain();
+ resp.getWriter().write("Email sent successfully");
+ resp.setStatus(200);
+ }
+
+ }.run();
+ }
+
+ @Override
+ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
+ {
+ doGet(req, resp);
+ }
+
+}
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/Person.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/Person.java (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/java/org/jboss/seam/example/mail/Person.java 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,75 @@
+package org.jboss.seam.example.mail;
+
+import java.io.InputStream;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jboss.seam.annotations.Factory;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.core.ResourceLoader;
+
+ at Name("person")
+public class Person implements Serializable
+{
+ private String firstname;
+ private String lastname;
+ private String address;
+ private transient InputStream photo = ResourceLoader.instance().getResourceAsStream("/seamlogo.png");
+
+ @Factory("people")
+ public List<Person> getPeople() {
+ List<Person> people = new ArrayList<Person>();
+ people.add(new Person("Gavin", "King", "gavin.king at jboss.com", "/gavin.jpg"));
+ people.add(new Person("Shane", "Bryzak", "shane.bryzak at jboss.com", "/shane.jpg"));
+ return people;
+ }
+
+ public Person()
+ {
+ }
+
+ public Person(String firstname, String lastname, String address, String photoPath)
+ {
+ this.firstname = firstname;
+ this.lastname = lastname;
+ this.address = address;
+ this.photo = ResourceLoader.instance().getResourceAsStream(photoPath);
+ }
+
+ public Person(String firstname, String lastname, String address)
+ {
+ this.firstname = firstname;
+ this.lastname = lastname;
+ this.address = address;
+ }
+
+ public String getAddress()
+ {
+ return address;
+ }
+ public void setAddress(String address)
+ {
+ this.address = address;
+ }
+ public String getFirstname()
+ {
+ return firstname;
+ }
+ public void setFirstname(String firstname)
+ {
+ this.firstname = firstname;
+ }
+ public String getLastname()
+ {
+ return lastname;
+ }
+ public void setLastname(String lastname)
+ {
+ this.lastname = lastname;
+ }
+
+ public InputStream getPhoto() {
+ return photo;
+ }
+}
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/resources/META-INF/MANIFEST.MF
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/resources/META-INF/MANIFEST.MF (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/resources/META-INF/MANIFEST.MF 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path:
+
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-ejb/src/main/resources/seam.properties
===================================================================
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/pom.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/pom.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/pom.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,237 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>mail</artifactId>
+ <groupId>org.jboss.seam.examples</groupId>
+ <version>2.3.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-tests</artifactId>
+ <name>Mail Integration Tests Module</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.embedded</groupId>
+ <artifactId>jboss-embedded-all</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-deployers-client-spi</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-deployers-core-spi</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam.embedded</groupId>
+ <artifactId>thirdparty-all</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam.embedded</groupId>
+ <artifactId>hibernate-all</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.testng</groupId>
+ <artifactId>testng</artifactId>
+ <classifier>jdk15</classifier>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-ejb</artifactId>
+ <type>ejb</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam</artifactId>
+ <type>ejb</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-mail</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-pdf</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-excel</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-ui</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>javax.mail</groupId>
+ <artifactId>mail</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.seleniumhq.selenium.server</groupId>
+ <artifactId>selenium-server</artifactId>
+ <classifier>standalone</classifier>
+ </dependency>
+ <dependency>
+ <groupId>org.seleniumhq.selenium.client-drivers</groupId>
+ <artifactId>selenium-java-client-driver</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>functional-tests</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.subethamail</groupId>
+ <artifactId>subethasmtp-wiser</artifactId>
+ <version>1.2</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <testResources>
+ <testResource>
+ <directory>src/test/resources</directory>
+ <filtering>true</filtering>
+ </testResource>
+ <testResource>
+ <directory>src/test/bootstrap</directory>
+ <filtering>false</filtering>
+ </testResource>
+ <testResource> <!-- this takes datasource mail-ds.xml -->
+ <directory>${basedir}/../mail-ear/src/main/resources</directory>
+ <filtering>true</filtering>
+ </testResource>
+ <testResource> <!-- this takes themes aka *.properties -->
+ <directory>${basedir}/../mail-web/src/main/resources</directory>
+ <filtering>true</filtering>
+ </testResource>
+ </testResources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <skipTests>false</skipTests>
+ <argLine>-Dsun.lang.ClassLoader.allowArraySyntax=true -Xms512m -Xmx512m</argLine>
+ <additionalClasspathElements>
+ <additionalClasspathElement>${basedir}/../mail-web/src/main/webapp</additionalClasspathElement>
+ </additionalClasspathElements>
+ <suiteXmlFiles>
+ <suiteXmlFile>src/test/resources-integration/testng.xml</suiteXmlFile>
+ </suiteXmlFiles>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-seam-bootstrap</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>unpack</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-embedded-bootstrap</artifactId>
+ <version>${project.version}</version>
+ <type>jar</type>
+ <overWrite>false</overWrite>
+ <outputDirectory>${basedir}/src/test</outputDirectory>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-clean-plugin</artifactId>
+ <configuration>
+ <filesets>
+ <fileset>
+ <directory>${basedir}/src/test/META-INF/</directory>
+ </fileset>
+ <fileset>
+ <directory>${basedir}/src/test/bootstrap</directory>
+ </fileset>
+ </filesets>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>ftest-jbossas</id>
+ <properties>
+ <example.context.path>seam-mail</example.context.path>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jboss-maven-plugin</artifactId>
+ <configuration>
+ <jbossHome>${jboss.home}</jbossHome>
+ <serverName>${jboss.domain}</serverName>
+ <fileNames>
+ <param>${basedir}/../mail-ear/target/seam-mail.ear</param>
+ </fileNames>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>selenium-maven-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>failsafe-maven-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <profile>
+ <id>ftest-tomcat</id>
+ <properties>
+ <example.context.path>jboss-seam-mail</example.context.path>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>selenium-maven-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>failsafe-maven-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
+</project>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/mail/test/MailTest.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/mail/test/MailTest.java (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/mail/test/MailTest.java 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,631 @@
+package org.jboss.seam.example.mail.test;
+
+import static javax.mail.Message.RecipientType.BCC;
+import static javax.mail.Message.RecipientType.CC;
+
+import java.io.InputStream;
+
+import javax.faces.FacesException;
+import javax.faces.context.FacesContext;
+import javax.mail.internet.AddressException;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeBodyPart;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeMultipart;
+
+import org.jboss.seam.contexts.Contexts;
+import org.jboss.seam.document.ByteArrayDocumentData;
+import org.jboss.seam.document.DocumentData;
+import org.jboss.seam.example.mail.Person;
+import org.jboss.seam.mail.MailSession;
+import org.jboss.seam.mail.ui.UIAttachment;
+import org.jboss.seam.mail.ui.UIMessage;
+import org.jboss.seam.mock.MockTransport;
+import org.jboss.seam.mock.SeamTest;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+/**
+ * @author Pete Muir
+ *
+ */
+public class MailTest extends SeamTest
+{
+
+ @Test
+ public void testSimple() throws Exception
+ {
+
+ new FacesRequest()
+ {
+
+ @Override
+ protected void updateModelValues() throws Exception
+ {
+ setValue("#{person.firstname}", "Pete");
+ setValue("#{person.lastname}", "Muir");
+ setValue("#{person.address}", "test at example.com");
+ }
+
+ @Override
+ protected void invokeApplication() throws Exception
+ {
+ MimeMessage renderedMessage = getRenderedMailMessage("/simple.xhtml");
+
+ Assert.assertTrue(MailSession.instance().getTransport() instanceof MockTransport);
+
+ // Test the headers
+
+ Assert.assertNotNull(renderedMessage);
+ Assert.assertEquals(renderedMessage.getAllRecipients().length, 1);
+ Assert.assertTrue(renderedMessage.getAllRecipients()[0] instanceof InternetAddress);
+ InternetAddress to = (InternetAddress) renderedMessage.getAllRecipients()[0];
+ Assert.assertEquals(to.getAddress(), "test at example.com");
+ Assert.assertEquals(to.getPersonal(), "Pete Muir");
+ Assert.assertEquals(renderedMessage.getFrom().length, 1);
+ Assert.assertTrue(renderedMessage.getFrom()[0] instanceof InternetAddress);
+ InternetAddress from = (InternetAddress) renderedMessage.getFrom()[0];
+ Assert.assertEquals(from.getAddress(), "peter at example.com");
+ Assert.assertEquals(from.getPersonal(), "Peter");
+ Assert.assertEquals(renderedMessage.getSubject(), "Try out Seam!");
+ Assert.assertNull(renderedMessage.getHeader("Precedence"));
+ Assert.assertNull(renderedMessage.getHeader("X-Priority"));
+ Assert.assertNull(renderedMessage.getHeader("Priority"));
+ Assert.assertNull(renderedMessage.getHeader("Importance"));
+ Assert.assertNull(renderedMessage.getHeader("Disposition-Notification-To"));
+
+ // Check the body
+
+ Assert.assertNotNull(renderedMessage.getContent());
+ Assert.assertTrue(renderedMessage.getContent() instanceof MimeMultipart);
+ MimeMultipart body = (MimeMultipart) renderedMessage.getContent();
+ Assert.assertEquals(body.getCount(), 1);
+ Assert.assertNotNull(body.getBodyPart(0));
+ Assert.assertTrue(body.getBodyPart(0) instanceof MimeBodyPart);
+ MimeBodyPart bodyPart = (MimeBodyPart) body.getBodyPart(0);
+ Assert.assertNotNull(bodyPart.getContent());
+ Assert.assertEquals(bodyPart.getDisposition(), "inline");
+ Assert.assertTrue(bodyPart.isMimeType("text/html"));
+ }
+ }.run();
+
+ }
+
+ @Test
+ public void testAttachment() throws Exception
+ {
+
+ new FacesRequest()
+ {
+
+ @Override
+ protected void updateModelValues() throws Exception
+ {
+ setValue("#{person.firstname}", "Gavin");
+ setValue("#{person.lastname}", "King");
+ setValue("#{person.address}", "gavin at king.com");
+ }
+
+ @Override
+ protected void invokeApplication() throws Exception
+ {
+ MimeMessage renderedMessage = getRenderedMailMessage("/attachment.xhtml");
+
+ // Test the headers
+
+ InternetAddress to = (InternetAddress) renderedMessage.getAllRecipients()[0];
+ Assert.assertEquals(to.getAddress(), "gavin at king.com");
+ Assert.assertEquals(to.getPersonal(), "Gavin King");
+ InternetAddress from = (InternetAddress) renderedMessage.getFrom()[0];
+ Assert.assertEquals(from.getAddress(), "do-not-reply at jboss.com");
+ Assert.assertEquals(from.getPersonal(), "Seam");
+ Assert.assertEquals(renderedMessage.getSubject(), "Try out Seam!");
+ MimeMultipart body = (MimeMultipart) renderedMessage.getContent();
+
+ Assert.assertEquals(body.getCount(), 4); //3 Attachments and 1 MimeMultipart
+
+ // The root multipart/related
+ Assert.assertNotNull(body.getBodyPart(0));
+ Assert.assertTrue(body.getBodyPart(0) instanceof MimeBodyPart);
+ MimeBodyPart bodyPart = (MimeBodyPart) body.getBodyPart(0);
+ Assert.assertNotNull(bodyPart.getContent());
+ Assert.assertTrue(bodyPart.getContent() instanceof MimeMultipart);
+ Assert.assertTrue(bodyPart.isMimeType("multipart/related"));
+
+ MimeMultipart attachments = (MimeMultipart) bodyPart.getContent();
+
+ Assert.assertEquals(attachments.getCount(), 3); //2 Attachments and 1 MimeMultipart
+
+ // Attachment 0 (the actual message)
+ Assert.assertNotNull(attachments.getBodyPart(0));
+ Assert.assertTrue(attachments.getBodyPart(0) instanceof MimeBodyPart);
+ bodyPart = (MimeBodyPart) attachments.getBodyPart(0);
+ Assert.assertNotNull(bodyPart.getContent());
+ Assert.assertNotNull(bodyPart.getContent());
+ Assert.assertTrue(bodyPart.isMimeType("text/html"));
+ Assert.assertEquals(bodyPart.getDisposition(), "inline");
+
+ // Inline Attachment 1 // Attachment Jboss Logo
+ Assert.assertNotNull(attachments.getBodyPart(1));
+ Assert.assertTrue(attachments.getBodyPart(1) instanceof MimeBodyPart);
+ bodyPart = (MimeBodyPart) attachments.getBodyPart(1);
+ Assert.assertNotNull(bodyPart.getContent());
+ Assert.assertTrue(bodyPart.getContent() instanceof InputStream);
+ Assert.assertEquals(bodyPart.getFileName(), "jboss.jpg");
+ Assert.assertTrue(bodyPart.isMimeType("image/jpeg"));
+ Assert.assertEquals(bodyPart.getDisposition(), "inline");
+ Assert.assertNotNull(bodyPart.getContentID());
+
+ // Inline Attachment 1 // Attachment Gavin Pic
+ Assert.assertNotNull(attachments.getBodyPart(2));
+ Assert.assertTrue(attachments.getBodyPart(2) instanceof MimeBodyPart);
+ bodyPart = (MimeBodyPart) attachments.getBodyPart(2);
+ Assert.assertNotNull(bodyPart.getContent());
+ Assert.assertTrue(bodyPart.getContent() instanceof InputStream);
+ Assert.assertEquals(bodyPart.getFileName(), "Gavin_King.jpg");
+ Assert.assertTrue(bodyPart.isMimeType("image/png"));
+ Assert.assertEquals(bodyPart.getDisposition(), "inline");
+ Assert.assertNotNull(bodyPart.getContentID());
+
+ // Root Attachment 0
+ Assert.assertNotNull(body.getBodyPart(1));
+ Assert.assertTrue(body.getBodyPart(1) instanceof MimeBodyPart);
+ bodyPart = (MimeBodyPart) body.getBodyPart(1);
+ Assert.assertNotNull(bodyPart.getContent());
+ Assert.assertTrue( bodyPart.getContent() instanceof InputStream);
+ Assert.assertEquals(bodyPart.getFileName(), "numbers.csv");
+ Assert.assertTrue(bodyPart.isMimeType("content/unknown"));
+ Assert.assertEquals(bodyPart.getDisposition(), "attachment");
+ Assert.assertNull(bodyPart.getContentID());
+
+ // Root Attachment 1
+ Assert.assertNotNull(body.getBodyPart(2));
+ Assert.assertTrue(body.getBodyPart(2) instanceof MimeBodyPart);
+ bodyPart = (MimeBodyPart) body.getBodyPart(2);
+ Assert.assertNotNull(bodyPart.getContent());
+ Assert.assertTrue(bodyPart.getContent() instanceof String);
+ Assert.assertEquals(bodyPart.getFileName(), "whyseam.pdf");
+ Assert.assertEquals(bodyPart.getDisposition(), "attachment");
+ Assert.assertNull(bodyPart.getContentID());
+
+ // Root Attachment 3
+ Assert.assertNotNull(body.getBodyPart(3));
+ Assert.assertTrue(body.getBodyPart(3) instanceof MimeBodyPart);
+ bodyPart = (MimeBodyPart) body.getBodyPart(3);
+ Assert.assertNotNull(bodyPart.getContent());
+ Assert.assertEquals(bodyPart.getFileName(), "excel.xls");
+ Assert.assertTrue(bodyPart.isMimeType("application/vnd.ms-excel"));
+ Assert.assertEquals(bodyPart.getDisposition(), "attachment");
+ Assert.assertNull(bodyPart.getContentID());
+
+ }
+ }.run();
+
+ }
+
+ /**
+ * This test is needed since the PDF is not rendered in the attachment test.
+ * If PDF rendering is supported in a test environment, then this test can be
+ * removed.
+ */
+ @Test
+ public void testPdfAttachment() throws Exception
+ {
+ new FacesRequest()
+ {
+ @Override
+ protected void invokeApplication() throws Exception
+ {
+ UIAttachment attachment = new UIAttachment();
+ attachment.setFileName("filename.pdf");
+ UIMessage message = new UIMessage();
+ attachment.setParent(message);
+ message.setMailSession(MailSession.instance());
+ DocumentData doc = new ByteArrayDocumentData("filename", new DocumentData.DocumentType("pdf", "application/pdf"), new byte[] {});
+ attachment.setValue(doc);
+ attachment.encodeEnd(FacesContext.getCurrentInstance());
+
+ // verify we built the message
+ Assert.assertEquals(message.getAttachments().size(), 1);
+ MimeBodyPart bodyPart = message.getAttachments().get(0);
+ Assert.assertEquals(bodyPart.getFileName(), "filename.pdf");
+ Assert.assertEquals(bodyPart.getDisposition(),"attachment");
+ }
+ }.run();
+ }
+
+ @Test
+ public void testHtml() throws Exception
+ {
+
+ new FacesRequest()
+ {
+
+ @Override
+ protected void updateModelValues() throws Exception
+ {
+ setValue("#{person.firstname}", "Pete");
+ setValue("#{person.lastname}", "Muir");
+ setValue("#{person.address}", "test at example.com");
+ }
+
+ @Override
+ protected void invokeApplication() throws Exception
+ {
+ MimeMessage renderedMessage = getRenderedMailMessage("/html.xhtml");
+
+ // Test the standard headers
+
+ InternetAddress to = (InternetAddress) renderedMessage.getAllRecipients()[0];
+ Assert.assertEquals(to.getAddress(), "test at example.com");
+ Assert.assertEquals(to.getPersonal(), "Pete Muir");
+ InternetAddress from = (InternetAddress) renderedMessage.getFrom()[0];
+ Assert.assertEquals(from.getAddress(), "do-not-reply at jboss.com");
+ Assert.assertEquals(from.getPersonal(), "Seam");
+ Assert.assertEquals(renderedMessage.getSubject(), "Seam Mail");
+
+ // Test the extra headers
+
+ // Importance
+ Assert.assertNotNull(renderedMessage.getHeader("X-Priority"));
+ Assert.assertNotNull(renderedMessage.getHeader("Priority"));
+ Assert.assertNotNull(renderedMessage.getHeader("Importance"));
+ Assert.assertEquals(renderedMessage.getHeader("X-Priority").length, 1);
+ Assert.assertEquals(renderedMessage.getHeader("Priority").length, 1);
+ Assert.assertEquals(renderedMessage.getHeader("Importance").length, 1);
+ Assert.assertEquals(renderedMessage.getHeader("X-Priority")[0], "5");
+ Assert.assertEquals(renderedMessage.getHeader("Priority")[0], "Non-urgent");
+ Assert.assertEquals(renderedMessage.getHeader("Importance")[0], "low");
+
+ // read receipt
+ Assert.assertNotNull(renderedMessage.getHeader("Disposition-Notification-To"));
+ Assert.assertEquals(renderedMessage.getHeader("Disposition-Notification-To").length, 1);
+ Assert.assertEquals(renderedMessage.getHeader("Disposition-Notification-To")[0], "Seam <do-not-reply at jboss.com>");
+
+ // m:header
+ Assert.assertNotNull(renderedMessage.getHeader("X-Sent-From"));
+ Assert.assertEquals(renderedMessage.getHeader("X-Sent-From").length, 1);
+ Assert.assertEquals(renderedMessage.getHeader("X-Sent-From")[0], "Seam");
+
+ MimeMultipart body = (MimeMultipart) renderedMessage.getContent();
+
+ // Check the alternative facet
+ Assert.assertTrue(renderedMessage.getContentType().startsWith("multipart/mixed"));
+ Assert.assertEquals(body.getCount(), 1);
+ MimeBodyPart bodyPart = (MimeBodyPart) body.getBodyPart(0);
+ Assert.assertTrue(bodyPart.getContentType().startsWith("multipart/alternative"));
+ Assert.assertTrue(bodyPart.getContent() instanceof MimeMultipart);
+ MimeMultipart bodyParts = (MimeMultipart) bodyPart.getContent();
+ Assert.assertEquals(bodyParts.getCount(), 2);
+ Assert.assertTrue(bodyParts.getBodyPart(0) instanceof MimeBodyPart);
+ Assert.assertTrue(bodyParts.getBodyPart(1) instanceof MimeBodyPart);
+ MimeBodyPart alternative = (MimeBodyPart) bodyParts.getBodyPart(0);
+ MimeBodyPart html = (MimeBodyPart) bodyParts.getBodyPart(1);
+ Assert.assertTrue(alternative.isMimeType("text/plain"));
+ Assert.assertEquals(alternative.getDisposition(), "inline");
+ Assert.assertTrue(html.isMimeType("text/html"));
+ Assert.assertEquals(html.getDisposition(), "inline");
+
+ }
+ }.run();
+
+ }
+
+
+ @Test
+ public void testPlain() throws Exception
+ {
+
+ new FacesRequest()
+ {
+
+ @Override
+ protected void updateModelValues() throws Exception
+ {
+ setValue("#{person.firstname}", "Pete");
+ setValue("#{person.lastname}", "Muir");
+ setValue("#{person.address}", "test at example.com");
+ }
+
+ @Override
+ protected void invokeApplication() throws Exception
+ {
+ MimeMessage renderedMessage = getRenderedMailMessage("/plain.xhtml");
+
+ // Test the standard headers
+
+ InternetAddress to = (InternetAddress) renderedMessage.getAllRecipients()[0];
+ Assert.assertEquals(to.getAddress(), "test at example.com");
+ Assert.assertEquals(to.getPersonal(), "Pete Muir");
+ InternetAddress from = (InternetAddress) renderedMessage.getFrom()[0];
+ Assert.assertEquals(from.getAddress(), "do-not-reply at jboss.com");
+ Assert.assertEquals(from.getPersonal(), "Seam");
+ Assert.assertEquals(renderedMessage.getReplyTo().length, 1);
+ Assert.assertTrue(renderedMessage.getReplyTo()[0] instanceof InternetAddress);
+ InternetAddress replyTo = (InternetAddress) renderedMessage.getReplyTo()[0];
+ Assert.assertEquals(replyTo.getAddress(), "another.address at jboss.org");
+ Assert.assertEquals(replyTo.getPersonal(), "JBoss");
+ Assert.assertEquals(renderedMessage.getRecipients(CC).length, 1);
+ Assert.assertTrue(renderedMessage.getRecipients(CC)[0] instanceof InternetAddress);
+ InternetAddress cc = (InternetAddress) renderedMessage.getRecipients(CC)[0];
+ Assert.assertEquals(cc.getAddress(), "test at example.com");
+ Assert.assertEquals(cc.getPersonal(), "Pete Muir");
+ Assert.assertEquals(renderedMessage.getRecipients(BCC).length, 1);
+ Assert.assertTrue(renderedMessage.getRecipients(BCC)[0] instanceof InternetAddress);
+ InternetAddress bcc = (InternetAddress) renderedMessage.getRecipients(CC)[0];
+ Assert.assertEquals(bcc.getAddress(), "test at example.com");
+ Assert.assertEquals(bcc.getPersonal(), "Pete Muir");
+ Assert.assertEquals(renderedMessage.getHeader("Precedence")[0], "bulk");
+ // Importance
+ Assert.assertNotNull(renderedMessage.getHeader("X-Priority"));
+ Assert.assertNotNull(renderedMessage.getHeader("Priority"));
+ Assert.assertNotNull(renderedMessage.getHeader("Importance"));
+ Assert.assertEquals(renderedMessage.getHeader("X-Priority").length, 1);
+ Assert.assertEquals(renderedMessage.getHeader("Priority").length, 1);
+ Assert.assertEquals(renderedMessage.getHeader("Importance").length, 1);
+ Assert.assertEquals(renderedMessage.getHeader("X-Priority")[0], "1");
+ Assert.assertEquals(renderedMessage.getHeader("Priority")[0], "Urgent");
+ Assert.assertEquals(renderedMessage.getHeader("Importance")[0], "high");
+ Assert.assertEquals(renderedMessage.getSubject(), "Plain text email sent by Seam");
+
+ // Check the body
+
+ Assert.assertNotNull(renderedMessage.getContent());
+ MimeMultipart body = (MimeMultipart) renderedMessage.getContent();
+ Assert.assertEquals(body.getCount(), 1);
+ MimeBodyPart bodyPart = (MimeBodyPart) body.getBodyPart(0);
+ Assert.assertNotNull(bodyPart.getContent());
+ Assert.assertEquals(bodyPart.getDisposition(), "inline");
+ Assert.assertTrue(bodyPart.isMimeType("text/plain"));
+ }
+ }.run();
+ }
+
+ @Test
+ public void testAttachmentErrors() throws Exception
+ {
+
+ new FacesRequest()
+ {
+
+ @Override
+ protected void updateModelValues() throws Exception
+ {
+
+ }
+
+ @Override
+ protected void invokeApplication() throws Exception
+ {
+ Person person = (Person) getValue("#{person}");
+
+ person.setFirstname("Pete");
+ person.setLastname("Muir");
+ person.setAddress("test at example.com");
+
+ // Test for an unavailable attachment
+
+ Contexts.getEventContext().set("attachment", "/foo.pdf");
+
+ }
+ }.run();
+ }
+
+ @Test
+ public void testAddressValidation() throws Exception
+ {
+
+ new FacesRequest()
+ {
+
+ @Override
+ protected void updateModelValues() throws Exception
+ {
+
+ }
+
+ @Override
+ protected void invokeApplication() throws Exception
+ {
+ Person person = (Person) getValue("#{person}");
+
+ person.setFirstname("Pete");
+ person.setLastname("Muir");
+ boolean exceptionThrown = false;
+
+ person.setAddress("testexample.com");
+
+ try
+ {
+ getRenderedMailMessage("/org/jboss/seam/example/mail/test/errors2.xhtml");
+ }
+ catch (FacesException e)
+ {
+ Assert.assertTrue(e.getCause() instanceof AddressException);
+ AddressException ae = (AddressException) e.getCause();
+ Assert.assertTrue(ae.getMessage().startsWith("Missing final '@domain'"));
+ exceptionThrown = true;
+ }
+ Assert.assertTrue(exceptionThrown);
+
+ }
+ }.run();
+ }
+
+ //JBSEAM-2109
+ //@Test
+ public void testReplyToErrors() throws Exception
+ {
+
+ new FacesRequest()
+ {
+
+ @Override
+ protected void updateModelValues() throws Exception
+ {
+
+ }
+
+ @Override
+ protected void invokeApplication() throws Exception
+ {
+ Person person = (Person) getValue("#{person}");
+
+ person.setFirstname("Pete");
+ person.setLastname("Muir");
+ person.setAddress("test at example.com");
+
+ boolean exceptionThrown = false;
+
+
+
+ try
+ {
+ getRenderedMailMessage("/org/jboss/seam/example/mail/test/errors3.xhtml");
+ }
+ catch (Exception e)
+ {
+ Assert.assertTrue(e.getCause() instanceof AddressException);
+ AddressException ae = (AddressException) e.getCause();
+ System.out.println(ae.getMessage());
+ Assert.assertTrue(ae.getMessage().startsWith("Email cannot have more than one Reply-to address"));
+ exceptionThrown = true;
+ }
+ Assert.assertTrue(exceptionThrown);
+
+ }
+ }.run();
+ }
+
+ @Test
+ public void testFromErrors() throws Exception
+ {
+
+ new FacesRequest()
+ {
+
+ @Override
+ protected void updateModelValues() throws Exception
+ {
+
+ }
+
+ @Override
+ protected void invokeApplication() throws Exception
+ {
+ Person person = (Person) getValue("#{person}");
+
+ person.setFirstname("Pete");
+ person.setLastname("Muir");
+ person.setAddress("test at example.com");
+
+ boolean exceptionThrown = false;
+
+ try
+ {
+ getRenderedMailMessage("/org/jboss/seam/example/mail/test/errors4.xhtml");
+ }
+ catch (FacesException e)
+ {
+ Assert.assertTrue(e.getCause() instanceof AddressException);
+ AddressException ae = (AddressException) e.getCause();
+ Assert.assertTrue(ae.getMessage().startsWith("Email cannot have more than one from address"));
+ exceptionThrown = true;
+ }
+ Assert.assertTrue(exceptionThrown);
+
+ }
+ }.run();
+ }
+
+ @Test
+ public void testSanitization() throws Exception
+ {
+
+ new FacesRequest()
+ {
+
+ @Override
+ protected void updateModelValues() throws Exception
+ {
+
+ }
+
+ @Override
+ protected void invokeApplication() throws Exception
+ {
+ Contexts.getEventContext().set("name", "Pete\nMuir");
+ MimeMessage renderedMessage = getRenderedMailMessage("/org/jboss/seam/example/mail/test/sanitization.xhtml");
+ Assert.assertEquals(renderedMessage.getSubject(), "Try out Seam!");
+ InternetAddress to = (InternetAddress) renderedMessage.getAllRecipients()[0];
+ Assert.assertEquals(to.getAddress(), "peter at email.tld");
+ Assert.assertEquals(to.getPersonal(), "Pete");
+ Assert.assertEquals(renderedMessage.getFrom().length, 1);
+ Assert.assertTrue(renderedMessage.getFrom()[0] instanceof InternetAddress);
+ InternetAddress from = (InternetAddress) renderedMessage.getFrom()[0];
+ Assert.assertEquals(from.getAddress(), "peter at example.com");
+ Assert.assertEquals(from.getPersonal(), "Pete");
+ Assert.assertNotNull(renderedMessage.getHeader("Pete"));
+ Assert.assertEquals(renderedMessage.getHeader("Pete").length, 1);
+ Assert.assertEquals(renderedMessage.getHeader("Pete")[0], "roll over");
+ }
+ }.run();
+ }
+
+ @Test
+ public void testTemplating() throws Exception
+ {
+
+ new FacesRequest()
+ {
+
+ @Override
+ protected void updateModelValues() throws Exception
+ {
+ setValue("#{person.firstname}", "Pete");
+ setValue("#{person.lastname}", "Muir");
+ setValue("#{person.address}", "test at example.com");
+ }
+
+ @Override
+ protected void invokeApplication() throws Exception
+ {
+ MimeMessage renderedMessage = getRenderedMailMessage("/templating.xhtml");
+
+ // Test the standard headers
+
+ InternetAddress to = (InternetAddress) renderedMessage.getAllRecipients()[0];
+ Assert.assertEquals(to.getAddress(), "test at example.com");
+ Assert.assertEquals(to.getPersonal(), "Pete Muir");
+ InternetAddress from = (InternetAddress) renderedMessage.getFrom()[0];
+ Assert.assertEquals(from.getAddress(), "do-not-reply at jboss.com");
+ Assert.assertEquals(from.getPersonal(), "Seam");
+ Assert.assertEquals(renderedMessage.getSubject(), "Templating with Seam Mail");
+ Assert.assertNull(renderedMessage.getHeader("X-Priority"));
+ Assert.assertNull(renderedMessage.getHeader("Priority"));
+ Assert.assertNull(renderedMessage.getHeader("Importance"));
+
+ // Check the body
+
+ MimeMultipart body = (MimeMultipart) renderedMessage.getContent();
+
+ // Check the alternative facet
+ Assert.assertTrue(renderedMessage.getContentType().startsWith("multipart/mixed"));
+ Assert.assertEquals(body.getCount(), 1);
+ MimeBodyPart bodyPart = (MimeBodyPart) body.getBodyPart(0);
+ Assert.assertTrue(bodyPart.getContentType().startsWith("multipart/alternative"));
+ Assert.assertTrue(bodyPart.getContent() instanceof MimeMultipart);
+ MimeMultipart bodyParts = (MimeMultipart) bodyPart.getContent();
+ Assert.assertEquals(bodyParts.getCount(), 2);
+ Assert.assertTrue(bodyParts.getBodyPart(0) instanceof MimeBodyPart);
+ Assert.assertTrue(bodyParts.getBodyPart(1) instanceof MimeBodyPart);
+ MimeBodyPart alternative = (MimeBodyPart) bodyParts.getBodyPart(0);
+ MimeBodyPart html = (MimeBodyPart) bodyParts.getBodyPart(1);
+ Assert.assertTrue(alternative.isMimeType("text/plain"));
+ Assert.assertEquals(alternative.getDisposition(), "inline");
+ Assert.assertTrue(html.isMimeType("text/html"));
+ Assert.assertEquals(html.getDisposition(), "inline");
+ }
+ }.run();
+ }
+}
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/mail/test/selenium/SeleniumMailTest.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/mail/test/selenium/SeleniumMailTest.java (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/java/org/jboss/seam/example/mail/test/selenium/SeleniumMailTest.java 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,148 @@
+package org.jboss.seam.example.mail.test.selenium;
+
+import org.jboss.seam.example.common.test.selenium.SeamSeleniumTest;
+import org.subethamail.wiser.Wiser;
+import org.subethamail.wiser.WiserMessage;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertTrue;
+import static org.testng.AssertJUnit.assertFalse;
+
+public class SeleniumMailTest extends SeamSeleniumTest
+{
+ public static final String HOME_PAGE = "/index.seam";
+ public static final String HOME_PAGE_TITLE = "Seam Mail";
+ public static final String ENVELOPE_SENDER = "peter at example.com|do-not-reply at jboss.com";
+
+ public static final String FIRSTNAME_INPUT = "id=emailform:firstname";
+ public static final String FIRSTNAME = "John";
+ public static final String LASTNAME_INPUT = "id=emailform:lastname";
+ public static final String LASTNAME = "Smith";
+ public static final String ADDRESS_INPUT = "id=emailform:address";
+ public static final String ADDRESS = "john.smith at localhost";
+ public static final String SERVLET_NAME_INPUT = "id=name";
+ public static final String SERVLET_ADDRESS_INPUT = "id=email";
+
+ public static final String SEND_SIMPLE_BUTTON = "id=emailform:sendSimple";
+ public static final String SEND_PLAIN_BUTTON = "id=emailform:sendPlain";
+ public static final String SEND_HTML_BUTTON = "id=emailform:sendHtml";
+ public static final String SEND_ATTACHMENT_BUTTON = "id=emailform:sendAttachment";
+ public static final String SEND_ASYNCHRONOUS_BUTTON = "id=emailform:sendAsynchronous";
+ public static final String SEND_TEMPLATE_BUTTON = "id=emailform:sendTemplate";
+ public static final String SEND_SERVLET_BUTTON = "id=sendServlet";
+
+ protected Wiser wiser;
+
+ @BeforeMethod
+ @Override
+ public void setUp()
+ {
+ super.setUp();
+ browser.open(CONTEXT_PATH + HOME_PAGE);
+ }
+
+ /**
+ * We restart SMTP after each Method, because Wiser doesn't have mechanism to flush recieved emails.
+ */
+ @BeforeMethod
+ public void startSMTP()
+ {
+ wiser = new Wiser();
+ wiser.setPort(2525);
+ wiser.start();
+ }
+
+ @AfterMethod
+ public void stopSMTP()
+ {
+ wiser.stop();
+ }
+
+ /**
+ * Place holder - just verifies that example deploys
+ */
+ @Test
+ public void homePageLoadTest()
+ {
+ assertEquals("Unexpected page title.", HOME_PAGE_TITLE, browser.getTitle());
+ }
+
+ @DataProvider(name = "sendMethods")
+ public Object[][] mailTest() {
+ return new Object[][] {
+ {SEND_SIMPLE_BUTTON, new String[] {"Content-Type: text/html; charset=ISO-8859-1", "Content-Disposition: inline", "<p>Dear " + FIRSTNAME + ",</p>"}},
+ {SEND_PLAIN_BUTTON, new String[] {"This is a plain text, email."}},
+ {SEND_HTML_BUTTON, new String[] {"Subject: Seam Mail", "Content-Type: multipart/mixed;", "Content-Type: multipart/alternative;", "Content-Type: text/plain; charset=ISO-8859-1", "This is the alternative text body for mail readers that don't support html", "Content-Type: text/html; charset=ISO-8859-1", "<p>This is an example <i>HTML</i> email sent by Seam.</p>"}},
+ {SEND_ATTACHMENT_BUTTON, new String[] {"Content-Type: multipart/mixed;","Content-Type: application/octet-stream; name=jboss.jpg", "/9j/4AAQSkZJRgABA"/*jpeg start*/, "Content-Type: application/octet-stream; name=numbers.csv", "3,Three,treis,trois", "Content-Type: image/png; name=" + FIRSTNAME + "_" + LASTNAME + ".jpg", "iVBORw0KGgo" /*png start*/ }},
+ {SEND_ASYNCHRONOUS_BUTTON, new String[] {"Content-Type: multipart/mixed;", "Content-Type: text/html; charset=ISO-8859-1", "Content-Disposition: inline", "<p>Dear " + FIRSTNAME + ",</p>"}},
+ {SEND_TEMPLATE_BUTTON, new String[] {"Subject: Templating with Seam Mail", "Content-Type: multipart/mixed;", "Content-Type: multipart/alternative;", "Content-Type: text/plain; charset=ISO-8859-1", "Sorry, your mail reader doesn't support html.", "Content-Type: text/html; charset=ISO-8859-1", "<p>Here's a dataTable</p><table>", "<td>Saturday</td>"}},
+ {SEND_SERVLET_BUTTON, new String[] {"Content-Type: multipart/mixed;", "Content-Disposition: inline", "Dear John Smith,", "This is a plain text, email."}}
+ };
+ }
+
+ /**
+ * Sends a mail and verifies it was delivered
+ */
+ @Test(dataProvider = "sendMethods")
+ public void mailTest(String buttonToClick, String[] expectedMessageContents) {
+ fillInInputs();
+ sendEmail(buttonToClick);
+ checkDelivered(expectedMessageContents);
+ }
+
+ /**
+ * Fills in html text inputs.
+ */
+ private void fillInInputs()
+ {
+ browser.type(FIRSTNAME_INPUT, FIRSTNAME);
+ browser.type(LASTNAME_INPUT, LASTNAME);
+ browser.type(ADDRESS_INPUT, ADDRESS);
+ browser.type(SERVLET_NAME_INPUT, FIRSTNAME + " " + LASTNAME);
+ browser.type(SERVLET_ADDRESS_INPUT, ADDRESS);
+ }
+
+ /**
+ * Sends an email by clicking on specified button. If the send method is asynchronous,
+ * waits for the associated action to take place. It assures that the email was sent
+ * by verifying appropriate message.
+ * @param buttonToClick
+ */
+ private void sendEmail(String buttonToClick)
+ {
+ browser.clickAndWait(buttonToClick);
+ if (buttonToClick.equals(SEND_ASYNCHRONOUS_BUTTON)) {
+ assertTrue(browser.isTextPresent("Seam Email")); // asynchronous email send produces no message, so we just check that we didn't end up on a debug page
+ try
+ {
+ Thread.sleep(4000);
+ }
+ catch (InterruptedException e)
+ {
+ e.printStackTrace();
+ }
+ } else {
+ assertTrue("Expected message about successfuly sent mail. See also JBSEAM-3769.", browser.isTextPresent("Email sent successfully"));
+ }
+ }
+
+ /**
+ * Checks that the expected email was delivered.
+ * @param expectedMessageContents
+ */
+ private void checkDelivered(String[] expectedMessageContents)
+ {
+ assertFalse("Expected a message", wiser.getMessages().isEmpty());
+ WiserMessage message = wiser.getMessages().get(0); // although "send plain text" example sends 3 mails (To:, CC:, Bcc:) Wiser cannot distinquish between them so we just check the first mail.
+ assertEquals(ADDRESS, message.getEnvelopeReceiver());
+ assertTrue("Envelope sender (" + message.getEnvelopeSender() + ") doesn't match expected one (" + ENVELOPE_SENDER + ")", message.getEnvelopeSender().matches(ENVELOPE_SENDER));
+
+ for (String expectedMessageContent: expectedMessageContents) {
+ assertTrue("Didn't find expected text (" + expectedMessageContent + ") in the received email.", new String(message.getData()).contains(expectedMessageContent));
+ }
+ }
+
+}
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/WEB-INF/components.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/WEB-INF/components.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/WEB-INF/components.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,21 @@
+<components xmlns="http://jboss.com/products/seam/components"
+ xmlns:core="http://jboss.com/products/seam/core"
+ xmlns:async="http://jboss.com/products/seam/async"
+ xmlns:mail="http://jboss.com/products/seam/mail"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation=
+ "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.3.xsd
+ http://jboss.com/products/seam/async http://jboss.com/products/seam/async-2.3.xsd
+ http://jboss.com/products/seam/mail http://jboss.com/products/seam/mail-2.3.xsd
+ http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.3.xsd">
+
+
+ <core:init debug="true" jndi-pattern="#{ejbName}/local" />
+
+ <!-- If you need to alter the SMTP gateway, comment out this mail-session, -->
+ <!--<mail:mail-session host="localhost" port="2525" /> -->
+
+ <!-- uncomment this one and set the host attribute to the name or IP address of your SMTP gateway-->
+ <mail:mail-session host="localhost" tls="false" port="2525" ssl="false" />
+
+</components>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors1.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors1.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors1.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,10 @@
+<m:message xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="http://jboss.com/products/seam/mail"
+ xmlns:h="http://java.sun.com/jsf/html">
+
+ <m:from name="Peter">peter at example.com</m:from>
+ <m:to name="Peter">peter at email.tld</m:to>
+ <m:subject>Try out Seam!</m:subject>
+ <m:attachment value="#{attachment}" />
+ <m:body>A mail message to test exception handling</m:body>
+</m:message>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors2.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors2.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors2.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,9 @@
+<m:message xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="http://jboss.com/products/seam/mail"
+ xmlns:h="http://java.sun.com/jsf/html">
+
+ <m:from name="Peter" address="peter at example.com" />
+ <m:to name="#{person.firstname} #{person.lastname}">#{person.address}</m:to>
+ <m:subject>Try out Seam!</m:subject>
+ <m:body>A mail message to test exception handling</m:body>
+</m:message>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors3.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors3.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors3.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,11 @@
+<m:message xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="http://jboss.com/products/seam/mail"
+ xmlns:h="http://java.sun.com/jsf/html">
+
+ <m:replyTo address="foo at bar.com" />
+ <m:replyTo address="bar at bar.com" />
+ <m:from name="Peter" address="peter at example.com" />
+ <m:to name="#{person.firstname} #{person.lastname}">#{person.address}</m:to>
+ <m:subject>Try out Seam!</m:subject>
+ <m:body>A mail message to test exception handling</m:body>
+</m:message>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors4.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors4.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/errors4.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,10 @@
+<m:message xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="http://jboss.com/products/seam/mail"
+ xmlns:h="http://java.sun.com/jsf/html">
+
+ <m:from address="bar at bar.com" />
+ <m:from name="Peter" address="peter at example.com" />
+ <m:to name="#{person.firstname} #{person.lastname}">#{person.address}</m:to>
+ <m:subject>Try out Seam!</m:subject>
+ <m:body>A mail message to test exception handling</m:body>
+</m:message>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/sanitization.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/sanitization.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/org/jboss/seam/example/mail/test/sanitization.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,14 @@
+<m:message xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="http://jboss.com/products/seam/mail"
+ xmlns:h="http://java.sun.com/jsf/html">
+
+ <m:from name="#{name}">peter at example.com
+foo</m:from>
+ <m:to name="#{name}">peter at email.tld
+bar</m:to>
+ <m:subject>Try out
+ Seam!</m:subject>
+ <m:header name="#{name}">roll
+ over</m:header>
+ <m:body>A mail message to test sanitization</m:body>
+</m:message>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/seam.properties
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/seam.properties (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources/seam.properties 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,3 @@
+#debug is explicitly disabled in test to avoid JBIDE-3623
+#Thu Dec 31 16:24:37 CET 2009
+org.jboss.seam.core.init.debug=false
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources-ftest/testng.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources-ftest/testng.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources-ftest/testng.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,26 @@
+
+ <!--
+ JBoss, Home of Professional Open Source Copyright 2008, Red Hat
+ Middleware LLC, and individual contributors by the @authors tag. See
+ the copyright.txt in the distribution for a full listing of individual
+ contributors. This is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version. This software is
+ distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ License for more details. You should have received a copy of the GNU
+ Lesser General Public License along with this software; if not, write
+ to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ Boston, MA 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ -->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Mail example" verbose="2" parallel="false">
+ <test name="mail_jboss">
+ <parameter name="PROPERTY_FILE" value="" />
+ <classes>
+ <class name="org.jboss.seam.example.mail.test.selenium.SeleniumMailTest" />
+ </classes>
+ </test>
+</suite>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources-integration/testng.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources-integration/testng.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-tests/src/test/resources-integration/testng.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,12 @@
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+
+<suite name="Seam Mail Tests" verbose="2" parallel="false">
+
+ <test name="Seam Mail Tests">
+ <parameter name="PROPERTY_FILE" value="" />
+ <classes>
+ <class name="org.jboss.seam.example.mail.test.MailTest" />
+ </classes>
+ </test>
+
+</suite>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/pom.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/pom.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/pom.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>mail</artifactId>
+ <groupId>org.jboss.seam.examples</groupId>
+ <version>2.3.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-web</artifactId>
+ <packaging>war</packaging>
+ <name>Mail Web Module</name>
+
+ <properties>
+ <!-- filtering property for components.xml -->
+ <jndiPattern>seam-mail/#{ejbName}/local</jndiPattern>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-ejb</artifactId>
+ <type>ejb</type>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-jsf2</artifactId>
+ <type>ejb</type>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-mail</artifactId>
+ <exclusions>
+ <exclusion>
+ <artifactId>jboss-seam-ui</artifactId>
+ <groupId>org.jboss.seam</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>jsf-facelets</artifactId>
+ <groupId>com.sun.facelets</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>jboss-seam</artifactId>
+ <groupId>org.jboss.seam</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-ui-jsf2</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-jul</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-debug-jsf2</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-pdf</artifactId>
+ <exclusions>
+ <exclusion>
+ <artifactId>jboss-seam-ui</artifactId>
+ <groupId>org.jboss.seam</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>jsf-facelets</artifactId>
+ <groupId>com.sun.facelets</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>jboss-seam</artifactId>
+ <groupId>org.jboss.seam</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-excel</artifactId>
+ <exclusions>
+ <exclusion>
+ <artifactId>jboss-seam-ui</artifactId>
+ <groupId>org.jboss.seam</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>jsf-facelets</artifactId>
+ <groupId>com.sun.facelets</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>jboss-seam</artifactId>
+ <groupId>org.jboss.seam</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+<!-- <dependency> -->
+<!-- <groupId>com.sun.facelets</groupId> -->
+<!-- <artifactId>jsf-facelets</artifactId> -->
+<!-- </dependency> -->
+
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <configuration>
+ <webResources>
+ <resource>
+ <directory>src/main/webapp</directory>
+ <filtering>true</filtering>
+ </resource>
+ </webResources>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>tomcat</id>
+ <properties>
+ <!-- filtering property for components.xml -->
+ <jndiPattern>#{ejbName}/local</jndiPattern>
+ </properties>
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.seam.examples</groupId>
+ <artifactId>mail-ejb</artifactId>
+ <type>ejb</type>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam</artifactId>
+ <type>ejb</type>
+ <scope>compile</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>com.thoughtworks.xstream</groupId>
+ <artifactId>xstream</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xpp3</groupId>
+ <artifactId>xpp3_min</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-api</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-impl</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+ <build>
+ <finalName>jboss-seam-mail</finalName>
+ <plugins>
+ <plugin>
+ <artifactId>maven-resources-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-resources</id>
+ <phase>validate</phase>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${basedir}/target/classes</outputDirectory>
+ <resources>
+ <resource>
+ <directory>${basedir}/../mail-ear/src/main/resources</directory>
+ <includes>
+ <include>jboss-seam-mail-ds.xml</include>
+ </includes>
+ </resource>
+ </resources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/META-INF/MANIFEST.MF
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/META-INF/MANIFEST.MF (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/META-INF/MANIFEST.MF 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path:
+
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/components.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/components.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/components.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,18 @@
+<components xmlns="http://jboss.com/products/seam/components"
+ xmlns:core="http://jboss.com/products/seam/core"
+ xmlns:async="http://jboss.com/products/seam/async"
+ xmlns:mail="http://jboss.com/products/seam/mail"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation=
+ "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.3.xsd
+ http://jboss.com/products/seam/async http://jboss.com/products/seam/async-2.3.xsd
+ http://jboss.com/products/seam/mail http://jboss.com/products/seam/mail-2.3.xsd
+ http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.3.xsd">
+
+
+ <core:init debug="true" jndi-pattern="@jndiPattern@" />
+
+ <!-- If you need to alter the SMTP gateway, comment out this mail-session, -->
+ <!--<mail:mail-session host="localhost" port="2525" /> -->
+
+</components>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/faces-config.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/faces-config.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/faces-config.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faces-config version="2.1"
+ xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2:1.xsd">
+
+<!-- <application> -->
+<!-- <view-handler>com.sun.facelets.FaceletViewHandler</view-handler> -->
+<!-- </application> -->
+
+</faces-config>
+
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/pages.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/pages.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/pages.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<pages xmlns="http://jboss.com/products/seam/pages"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.3.xsd">
+
+ <page view-id="/index.xhtml">
+ <begin-conversation join="true" />
+ </page>
+
+</pages>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/web.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/web.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/WEB-INF/web.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="3.0"
+ xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+
+ <!-- Seam -->
+
+ <listener>
+ <listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
+ </listener>
+
+ <filter>
+ <filter-name>Seam Filter</filter-name>
+ <filter-class>org.jboss.seam.servlet.SeamFilter</filter-class>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>Seam Filter</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+
+ <context-param>
+ <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+ <param-value>.xhtml</param-value>
+ </context-param>
+
+ <context-param>
+ <param-name>facelets.DEVELOPMENT</param-name>
+ <param-value>true</param-value>
+ </context-param>
+
+ <context-param>
+ <param-name>com.sun.faces.allowTextChildren</param-name>
+ <param-value>true</param-value>
+ </context-param>
+
+ <servlet>
+ <servlet-name>Faces Servlet</servlet-name>
+ <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Faces Servlet</servlet-name>
+ <url-pattern>*.seam</url-pattern>
+ </servlet-mapping>
+
+ <servlet>
+ <servlet-name>Mail Servlet</servlet-name>
+ <servlet-class>org.jboss.seam.example.mail.MailSenderServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Mail Servlet</servlet-name>
+ <url-pattern>/mail/sender</url-pattern>
+ </servlet-mapping>
+
+ <session-config>
+ <session-timeout>10</session-timeout>
+ </session-config>
+
+</web-app>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/attachment.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/attachment.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/attachment.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,28 @@
+<m:message xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="http://jboss.com/products/seam/mail"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html">
+
+ <m:from name="Seam" address="do-not-reply at jboss.com" />
+ <m:to name="#{person.firstname} #{person.lastname}">#{person.address}</m:to>
+ <m:subject>Try out Seam!</m:subject>
+ <m:attachment value="/jboss.jpg" status="jbossLogo" disposition="inline" />
+ <m:attachment value="#{numbers}" />
+ <m:attachment value="#{person.photo}" contentType="image/png" fileName="#{person.firstname}_#{person.lastname}.jpg" disposition="inline" />
+ <m:attachment fileName="whyseam.pdf">
+ <ui:include src="/whyseam.xhtml" />
+ </m:attachment>
+ <m:attachment fileName="excel.xls">
+ <ui:include src="/excel.xhtml" />
+ </m:attachment>
+ <ui:repeat value="#{people}" var="p">
+ <m:attachment value="#{p.photo}" contentType="image/jpeg" fileName="#{p.firstname}_#{p.lastname}.jpg" />
+ </ui:repeat>
+ <m:body>
+ <p><h:outputText value="Dear #{person.firstname}" />,</p>
+ <p>This example email demonstrates how easy it is to add attachments to an email!</p>
+ <p>We can even display attached images inline:</p>
+ <img src="cid:#{jbossLogo.contentId}" />
+ <p>The attached pdf was generated by Seam's PDF library</p>
+ </m:body>
+</m:message>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/excel.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/excel.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/excel.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,6 @@
+<e:workbook xmlns:e="http://jboss.com/products/seam/excel" xmlns:f="http://java.sun.com/jsf/core">
+ <e:worksheet name="Developers">
+ <e:cell column="0" row="0" value="Daniel Roth" />
+ <e:cell column="0" row="1" value="Nicklas Karlsson" />
+ </e:worksheet>
+</e:workbook>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/gavin.jpg
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/gavin.jpg (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/gavin.jpg 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,63 @@
+ÿØÿáÅExif
+
+
+
+ÿÀ
+
+
+c¨Ö|:ƒ¼TÙÔ\)Ëmìþ×TN‰.Lu3´‰I%[ÿÐä3,#/#^.·ÿ
+¦íC’ŸqR5™íÕ$=ÆRIOÿÓ庆3¿hæ˜ç&ÿ
+ÛŽóǸ[
+Îý×z¾)~ÕÞ[åÿ
+
+
+
+%# , #&')*)-0-(0%()(ÿÛ
+
+
+
+(((((((((((((((((((((((((((((((((((((((((((((((((((ÿÀ
+
+
+É©•á€ÜmRçhå¶2¦¹
+ŽcÊÙñ§uEÈiÔ.*ö,´®µÓz•²<k:mVhb"hB`a¤s¸ðô®.¬N9>TÌgØRpqti‘êêzšºªc¨¬µu“úÔèÖëUÊÙ¨.¥xSës+/ƒ[?D ÖÎÞõ%”mfà®|3üâOí…ö“ž´vOÏZ•Ì¿Û4?µ«?LSEryÆýôG†"ûe¨…–GG¾•Ø"ç`£¯€óªäRûÃÖ®þÏ 2izФ
+<Ž{L’Ý0@òÇ}e–}"Ù¶wfÒtÈšã6Än>Wç×o5afãY€«)€ž`Z>LŒ6ðïè*ÀY¶£Ë'2ãš'`99½:üézÂBóÁöX;+€;<‘âqÌ
+sYyg^c~-ÁÄoF O㳜oð¨ñ$õRЮgÖöBÂ8‰NÈ
+³îyOF>
+ßq{ÊÔ–‡MÀÛ‘ù¶ÜŽ•ð¹>4> “³ä ‡>'8Þc¿•4„^‚IvG}>—ìÁ Áö¯»B
+Y#ˆ5íLx]Ký³Cù¼êw¼:¶ÿ
+–ŽÇØäŽÍ’3çPîËråH¢¥ööê
+ƒˆ=)áÉâ)—xÞ´éŠ9Ì“îÒX¯7Zh“ŠlŸz
+ÀõN;¶*TÈýšÝɬöò=“óo×üsZ,WAW;tÍsäœ]¬SY"¥þ„&¶YOi(6„\¥ºy_;áC5Mm`¶o{$xP«s«ZX\jÖ°,·r#s‚WµèÛ®—‹ûEm.@纼ìÖb+¼·ß‘ظ'¾®÷¾Ô¯âÓÞ»5í³ƒËÝYÄ:ÕƯ¯ý¾B±ÆŒB ðmZðÅÍ&¢ý²Ïq¦/fY— µL×Yc,Š0jç©jJ–Ã$d·¬ãWº2Ìäžú8S“3æN1€=ÀÏŸ}&¸M|ió„ÝŸßM·Zs4ŒoDµ/ø+¶¿º—³øäfúœÔ xÿ
+¥ÆâÚà5µÀ;ô#£Z¥Æ›,¬«gÉ/L(À âWÈ\:n
+‘ÏäÓ’q „Ú„“[Óf_¹~gëS¯%„
+¨w)Î{ë\qHK‘‘ËMœë]QãŠRÆ{…?¬Ž}ÔcòlTŽ®sVm#…µA€‚ÚFÁhñöm¬ö€}’OûhZ
+3Ó·<aÙßÜÅÍðHËô$WgãJyÆõ‰ñ®Ñëúš 1‹©Gþf¡]k¬Êª$è<k at v.¾Öø›ò¶ŸÃ–êÙü÷nßBkGÒ¸®mKSk[vÏ)%€¼õŽÄWz7Ø-ež8/ÖiGº w涎ÑÎ…«¤sÉÚ\ÜÀóHÞðÂL¯Éu´}Æ*ß–ôA›*’Ï{Ü`~ PŽ!´K«|6ÅwVTÑýb͵¼€ÛÁ$…ê‘øP;µ¿Óâv 9Oxxž‡ñ–äGvt¸sN.%
+ÛT“MÔ¾Í~¸ÎÉ's
+²ÉªéòBVEV
+ÃÀøàþÚmö¨ÅÄQäÏ+¨;ýƉ,ö½$–>Ð-$|µ½Ú<8bHVÏwÏ–¢ñ‚Åg}¤ë_·“±›úŸñúÔjwrÛÆ—±çšÎô7ÈŸÿ
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/html.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/html.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/html.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,22 @@
+<m:message xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="http://jboss.com/products/seam/mail"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ importance="low" requestReadReceipt="true">
+ <m:header name="X-Sent-From" value="Seam" />
+ <m:from name="Seam" address="do-not-reply at jboss.com" />
+ <m:to name="#{person.firstname} #{person.lastname}">#{person.address}</m:to>
+ <m:subject>Seam Mail</m:subject>
+ <m:body>
+ <html>
+ <body>
+ <p><b>#{person.firstname},</b></p>
+ <p>This is an example <i>HTML</i> email sent by Seam.</p>
+ <p>It has an alternative text body for mail readers that don't support html.</p>
+ </body>
+ </html>
+ <f:facet name="alternative">
+ <h:outputText>This is the alternative text body for mail readers that don't support html</h:outputText>
+ </f:facet>
+ </m:body>
+</m:message>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/index.html
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/index.html (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/index.html 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,5 @@
+<html>
+<head>
+ <meta http-equiv="Refresh" content="0; URL=index.seam" />
+</head>
+</html>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/index.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/index.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/index.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,88 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:s="http://jboss.com/products/seam/taglib"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <title>Seam Mail</title>
+ <ui:remove><link href="screen.css" rel="stylesheet" type="text/css" /></ui:remove>
+</head>
+<body>
+
+ <h1>Seam Email</h1>
+
+ <p>Welcome to the Seam Email example. This example demonstrates Seam's email templating.</p>
+ <p>You need to enter a name and email address to receive the example emails in the form below.</p>
+
+ <h:form id="emailform" >
+ <h:panelGrid columns="2">
+ <h:outputText value="Name" />
+ <h:panelGroup>
+ <h:inputText value="#{person.firstname}" required="true" id="firstname" />
+ <h:inputText value="#{person.lastname}" required="true" id="lastname" />
+ </h:panelGroup>
+ <h:outputText value="Email Address" />
+ <h:inputText value="#{person.address}" required="true" id="address" />
+ </h:panelGrid>
+ <h:panelGrid>
+ <h:commandButton action="#{mailExample.send}" id="sendSimple" value="Send a simple email" />
+ <h:commandButton action="#{mailExample.sendPlain}" id="sendPlain" value="Send Plain Text Email" />
+ <h:commandButton action="#{mailExample.sendHtml}" id="sendHtml" value="Send HTML Email" />
+ <h:commandButton action="#{mailExample.sendAttachment}" id="sendAttachment" value="Send a simple email with attachment" />
+ <h:commandButton action="#{mailExample.sendAsynchronous}" id="sendAsynchronous" value="Send a simple email asynchronously" />
+ <h:commandButton action="#{mailExample.sendTemplate}" id="sendTemplate" value="Send a templated email" />
+ </h:panelGrid>
+ <h:messages infoStyle="info" errorStyle="error" fatalStyle="fatal" warnStyle="warn" />
+ </h:form>
+
+ <p>You can also send from inside a servlet:</p>
+
+ <form action="#{facesContext.externalContext.requestContextPath}/mail/sender" method="get">
+ <table>
+ <tr>
+ <td>
+ Name
+ </td>
+ <td>
+ <input name="name" id="name" />
+ </td>
+ </tr>
+ <tr>
+ <td>
+ Email Address
+ </td>
+ <td>
+ <input name="email" id="email" />
+ </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>
+ <input type="submit" value="Send" id="sendServlet" />
+ </td>
+ </tr>
+ </table>
+ </form>
+
+ <h2>Help - it's not working!</h2>
+ <ul>
+ <li><b>Setting an SMTP relay</b> - If you have problems sending emails from this example you might have a firewall
+ blocking outgoing email. You'll need to edit <code><mail:mailSession></code>
+ in <code>resources/WEB-INF/components.xml</code> a <code><mail:mailSession></code>,
+ set a SMTP relay to relay via and then run the <code>ant deploy</code> again.</li>
+
+ <li><b>Servers other than JBoss AS</b> - This example deploys GreenMail JBoss Service (from <a href="http://www.icegreen.com/greenmail/">www.icegreen.com/greenmail/</a>
+ - <code>greenmail-jboss-service.sar</code>) to act as an SMTP server (it listens for authenticated
+ connections on <code>localhost:3025</code>). This means the mail example will
+ work out of the box on JBoss AS. If you using another server you may need
+ to set an SMTP relay as described above.</li>
+
+ <li>GreenMail will fail if you have another service using port 3025 (you'll get a errors
+ when the applicaiton is deployed). To get around this you can set a SMTP gateway as
+ described above.</li>
+ </ul>
+</body>
+</html>
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/jboss.jpg
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/jboss.jpg (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/jboss.jpg 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,45 @@
+ÿØÿà
+
+
+
+
+ÿÛ
+ÿÄ
+%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ
+ÿÄ
+$4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ
+«õ'^Î]˜ÒÌéûJWÓFžçæ¼eÁ˜þƬ?•¹.hÊ.ñjíuI¦š³M~d”U]+[²×¼íîÖöãÌ‚U‘5$TóΖ±4—.‘Æ£,ÌpÔšï>H}CIñV—¯ÈÉ¡jV¬ŸxAp’ú…'| –8€
++:ÇÅúN©|ÖÚf©§\Ü¡ÃEÊ;©÷Ps\‡ÇÏÄ=/O‡ÂwR[›vœ$í.вÄÄ\…r 9Èé@EWÒmå´Òí¢¿“Íž(•$|“½€
+žÎwµÏ–?à•ÚŽ¨|Uâ«HÚc¢‹Hæu.7áôbžgÔ(ÏA_iW-ð«Bð‡…4&Ó~¦
+”MºHì%I2Çø%Ž1ËzWS]~d†²>ân^gÍxë&íÙ^Þ·v[Íí4Z}žá_”ðr_üŽÿ
+s“’H
+¼Û:§ŒÂ×ÃÉrÍ4’Þözôò?§|>ðÇùöW›Ð«í°õ)Îr’J*ÔÚŠø›wæVi#äúûçÃðXOÚSÂtßøGáþƒi¦éz4:}žªžÔ$ž(c…Q'󘙂¨l”(O;qÅ|%®ø~÷Ã7©m¯ÛKk<–ð]ªH0Z)¢I¢£G"8öa_ªŸÿ
+³QµÛIòÉIŵªRJÝ»ésÙáü–W§‰¯Å_åtÕþGÉ5ËÏøçK¹ÐYÅȹD
+§ýhf
+ª9÷9öÅ|ïûfÿ
+[Ë•3·æ
+Ž™xp;n±^¨_G¦XOsvÊ‘[ÆÒ»3
+ª2I' Àë^ð?öÓŠw~&Ö€¶vúŒ5è$µžiMÕ¹2aBÍD±‚AVϽŠtáF<´â’ì´?7Æã±W_RU&÷”›“~Ýš ?àŸÿ
+½GNQ—4d•ììÖªêé§Ý=µ>Âø¿ce‹¥MN2,¢Ý®®ž[4×g×Có_þ ïû5x‡ÇŸt__i÷v^ðôâõï&£K‰&8â'Îð Ç
+|jÑõí„ž\„«Á(,±H¤4r.ã†R ‚Aàáo°ü%’ÔÊðÕ\ç9sJmZòÒÊÊöV[]½ÝÙö_jTâ¬6Œ¡ûªiÃ’.íFJI´Ý¯/zýJÚn3µû©ÿ
+ÙÜÃ2ÜÇ4M¼r$«²T0ÜØn£qõ©dø3àùl"µ—žk[q8Š¦@cŒO8*ìÀó07ãï`g5ÒÑ@¼<k¦IekáÇe,&ÙíÓJ€Dñóe`®ðoMÜõ§/Á.žÖ‹á?‹Wµ-ÒàòÚÜHe•Ù,HKìé¸çæºj(ÄŸ<=ã-JÎóÅú‹ªÞiçu¬÷–QO%±Îs:’œ€xÇ"£Õ>ø_[ðþƒxoA¼ÐõYkÝ:}>)-/œ;4°²ìv.À’@=kzŠM&¬Ê„åNJpvkTÖ霌ÿ
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/numbers.csv
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/numbers.csv (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/numbers.csv 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,11 @@
+Number,English,Spanish French,
+1,One,uno,un
+2,Two,dos,deux
+3,Three,treis,trois
+4,Four,cuatro,quatre
+5,Five,cinco,cinq
+6,Six,seis,six
+7,Seven,seite,sept
+8,Eight,ocho,huit
+9,Nine,nueve,neuf
+10,Ten,deis,dix
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/plain.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/plain.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/plain.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,16 @@
+<m:message xmlns:m="http://jboss.com/products/seam/mail" importance="high" precedence="bulk">
+
+ <m:from name="Seam" address="do-not-reply at jboss.com" />
+ <m:replyTo name="JBoss" address="another.address at jboss.org" />
+ <m:cc name="#{person.firstname} #{person.lastname}">#{person.address}</m:cc>
+ <m:bcc name="#{person.firstname} #{person.lastname}">#{person.address}</m:bcc>
+ <m:to name="#{person.firstname} #{person.lastname}">#{person.address}</m:to>
+ <m:subject>Plain text email sent by Seam</m:subject>
+ <m:body type="plain">Dear #{person.firstname},
+
+This is a plain text, email.
+
+Regards
+
+JBoss Seam Mail</m:body>
+</m:message>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/seamlogo.png
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/seamlogo.png (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/seamlogo.png 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,512 @@
+‰PNG
+
+
+MiCCPPhotoshop ICC profile
+VœHUÄ‚Õ
+Hˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j
+
+Ðzù‹y8ü@ž¡PÈ<
+í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzð
+¡–ATÀ:ص° šá´Á18
+çà\ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9\@úÛÈ 2ŠüŠ¼G1”²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut
+!%2IIkHÛH-¤S¤>ÒiœL&ëmÉÞä²€¬ —‘·O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw
+†
+ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?ÕyªT«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwRPÏQ_£¾_ý‚úc
+²†…F †H£Tc·Æ!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘fæqÍƱàð9ÙœJÎ!Î
+Î{--?-±Öjf~7ÚzÚ¾ÚbírííëÚïup@,õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046l18cðÌcèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜk<abi2ۤĤÅä¾)Í”kšfºÑ´ÓtÌÌÈ,ܬجÉìŽ9Õœkža¾Ù¼Ûü…¥EœÅJ‹6‹Ç–Ú–|Ë–M–÷¬˜V>VyVõV׬IÖ\ë,ëmÖWlPW››:›Ë¶¨›Äv›mßâ)Ò)õSnÚ1ìüì
+ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡só5¦KË—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›ÜÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌ㧛§Âóç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËýø¿áyòñN`Áå½³k™¥5»/>B
+Yr“oÀòùc3Üg,šÑÊZú0Ì&LÖŽ†Ïß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžw<Y5Y|8…˜—²?åƒ BP/Oå§nMò„›…OE¾¢¢Q±·¸J<’æV•ö8Ý;}Cúh†OFuÆ3 OR+y‘’¹#óMVDÖÞ¬ÏÙqÙ-9”œ”œ£R
+i–´+×0·(·Of++“
+äyæmÊ“‡Ê÷ä#ùsóÛl…LÑ£´R®PL/¨+x[[x¸H½HZÔ3ßfþêù#‚|½°P¸°³Ø¸xYñà"¿E»#‹Sw.1]RºdxiðÒ}Ëh˲–ýPâXRUòjyÜòŽRƒÒ¥¥C+‚W4•©”ÉËn®ôZ¹ca•dUïj—Õ[V*•_¬p¬¨®ø°F¸æâWN_Õ|õymÚÚÞJ·ÊíëHë¤ën¬÷Y¿¯J½jAÕІð
+ñå_mJÞt¡zjõŽÍ´ÍÊÍ5a5í[̶¬Ûò¡6£öz]ËVý«·¾Ù&ÚÖ¿Ýw{óƒ;Þï”ì¼µ+xWk½E}õnÒî‚Ýbº¿æ~ݸGwOÅž{¥{öEïëjtolܯ¿¿² mR6H:p囀oÚ›íšwµpZ*ÂAåÁ'ߦ|{ãPè¡ÎÃÜÃÍß™·õëHy+Ò:¿u¬-£m =¡½ï茣^G¾·ÿ~ï1ãcuÇ5Wž (=ñùä‚“ã§d§žN?=Ô™Üy÷Lü™k]Q]½gCÏž?tîL·_÷ÉóÞç]ð¼pô"÷bÛ%·K=®=G~pýáH¯[oëe÷ËíW<®tôMë;ÑïÓújÀÕs×ø×.]Ÿy½ïÆì·!
n&ݸ%ºõøvöíw
+îLÜ]zx¯ü¾Úýêúê´þ±eÀmàø`À`ÏÃYï ‡žþ”ÿÓ‡áÒGÌGÕ#F#
+½òdΓ᧲§ÏÊ~Vÿyës«çßýâûKÏXüØðù‹Ï¿®y©órï«©¯:Ç#ǼÎy=ñ¦üÎÛ}ï¸ïºßǽ™(ü@þPóÑúcǧÐO÷>ç|þü/÷„óû%ÒŸ3
+QË>%¼#ÜKëZ?þ~HRøóÌ,”Ư!ÚŸ#šãpþšHÖµ“_Z/Ñ–[} †ã«®ÿò3kݱìMÕàϽZªB„”÷¸zM…0y‘ª!&ï…
+¦uÆ2Õv.%„Ï*#)0Ö6;xø2¹ÚçVØ ¬X‘lŽEÖ+Ô!¥@º°É8N"„#ÑY…te½¹ùÀ%êõW_3ç&¶%CXjU>J¶²¾vö ŸˆXV^òa鈕ÿÊÒ’þZT_´sóeO
+kÈ9pNL®ŒÖ_,®}JËVÐäû
+B6ÙžÙø²PÑ^¿QÈ:3ôkTJ=ùV ´×Ý=zÞW¯µXkýš’©TøàpO1v«Çh×dön•Üÿ𽩬ک‡ ]Á5›?¤¸,&ÖÝaƒ¼“ L [\ëPݲ…èXùd-rÙÛÄꛆ¨«ÀeÙ½ðç ÿûâ¯{l÷0pƒ«Kp÷*(÷3_±ªÐ_±¬ì<\Å"Äy-D€ÂòkgØ®ú7ŸIETÈœT€DJç&—GuüÂGY¶aJX'$N8´A?¦ª,•Ð:@¦'ynV\<Õ.Ääo VþÏ*iÓb%NSg˜nå¾fÛ<gU¦h-:‘¾ãÂÿY]F-Ųg³©T´
+]4D]N
+lµ!´Á$×ʦªÍo•
+Q
+Jµ—/Yl¨UQú/J¢t´âM(]ëÃœsUk°Ýá`Šêü[‘˜<¦êx•°·ík"¶ÚDÄ2,P°"(œ¯Zð’hU:í«Ù®dÄ*pMû¾®zpeX‡uå)&
+dØÚ¥DF ºš%7¦,Û`€Ã¹Æ1«RN†sT‚X8Jc1Öo"R€q>¸V˜lišÁáߧÃîRŠIèBJPºÁ¹«—ê
+Œ›4J€t¡£V!,›M.¥nE9î°B`KƒÔ
+EË‚‡{Ì•h»ÇáÂ3*Úàs;SooÊ%UoU—î0Ol)·q…)²[騕!ˆå[×jì
+
+ëPB¢¢øð`oÀ0pu–éSMŠU’ 'Vé[,ˆW…šÜ# ˟ɉèÎ
+R®Ê®6c&¡”Ã4hV?Žeo
+ÇÑ>1 :7‘¢Õø¥jx·®—ä¿‚X~fÎ>¯²%‰UÒàö=v9+²{‰GÉ™¿¶3°¦ÉâVÞuõš²®µ'»æ8dÀg[I’¡Äõ¥”²zXý‚°ÖbœFZú›ïƒ¤BbÑÒ‡6i¬‡6”D‹&)…D;ÿK‘¦R–Y]þ9 n¢›R
+„ó˜3ÎaŒ¥7Ýa<. (ÐX烯Çp…‡–ÝÏVE¸‘-}&ÓՂ¶²f
+®ôß«rêYgýÆ ¥Î¹ƒ<Ü-ªë-1ÎÉ°)8Ÿ}»VaÖnªÈ€‡Tx¨cÇ›aZ™˜‡ED³ôÃÆáÏ«…à”ÝIV$sÎYœU•ÞV“£œõxÐ’$ŽpBzL€ªœµ¿a…oÊ:B¥ç“2¹UÔ®ÝlrË0q¿Ž›V¥_²Zñµ 1uã²úÀZ-21Ùv؉>Jóˆ:„”XS"Œöoì—º©<×ühy”©©1b‚‘ž;Ѥeí&®\–Á‰V&\uŽ¾ÊüoÊ€ÅêÙª[µkö(ð‚[ŠÇôýr‡yX¶ËLq“A¸]®OÞX…TšÂŒ[Én«ð¬2‘ðg‰#
+eª>P
+Š`|ÀUJ`ÃX‡V>«´$±òM ÐÙ*‘(ሥ#’¾ž×aE[çPJa…&¶s6–é™ÆXÆYÑÜ å\i;=‚t6.˜ê%ØDa1Ã1ÎZ ¹ñ`u¤hðß&
+b=¹ÅúÚÃ24(}ßÑ`.Ø*؆,R+ÿo¶ugœå,‘t(¥uõ±TÝ@'<î-•ÀU|5!B¶fn᯻³>,Ç}cÀ„!'©å,2Ž‘Âc—EYbŠÒ³©Ä8¬µ¦É)ha
+.\·¬ïæVi…¶
+Ð#Á&èë]í¢±¬_ùH¬±C¥¢1µX
+ϲ3¸Â4ô£:ÅrÏhÓëF€Ö²n0ÙIj1壴s¾ÜRàŒ_¤‘–”ƆF‘=¹¤Z+TžšæœÃZ‡UšD(JgâØ/“¹¹.‘¦ÙZª‡@Šúz*d¯’æfºkB`Ò‘q£ñDzY—¢kIA¤{ÁÑ¢øldÕ3ãi’AÚb …F]€VÄrã0œ(!I°u°¨¨¹.tÝŠŸhÓ/PRR˜†¥"qèX‘ŸåV˜u…ùF+(p¾Q§¬Ai…uSDa‰•¬ñ|;Ή: J©‰k&Zé
+»£´Ž²(Ñ
+d”´Xá~µo¶Õƒ™È(`961ñ¼¶›J®Yÿíx+lã-ÚV}ÎRÔô:·3¯‚\Ó¬–‹] ñMd¿m¸,=VÅ*§ÒæÖ;¿)‰e¡Ê:·j³P<J’ÙÎÔe«!'D›ô߀Ýá¨"ŽÇLÅù37òÚ
+±n«eÂòÍn’FµjÈËèå Ò@YÛÁÕM;}Η((‰Ôª^Àºâ(Z8ªORJ „o¬IéˆP’lT-Ƥ’(éK ÂZ’HiQCBÀ°”èH¡1Ö¢¤ÄXËôTBIv?¼àjuÖÖ—É5¥J Œ±£QÎÜl—©^2.p½”ñp„™_"*ÍdÉÒ)2àDù¿çW»›M+FÒ㺓ó¼ÏPƪP2Zç±^%¥ó2‚²d…„QÕ£X…Ó®FåpÂGu •êmZzX£¢ BK0Ö׸{]ŸúlÓä¸lŒµéqTmŽ ‘ø$ÐégÎZtšø@Ö:çÒ)0%š’8I[Ls¡b"Q©2QëB„lÓÒwZ]Þ:›kç–¢©Èêì<
+Äa©:5Ï-ÿ:7Ù´.àhRJŠ<«3<%<Fh\Ctò™°›àÅTX±Š4(…
+Ù£Çi=f«”ÎJ)%ÖZ¬u”Ö ˆ"RŒ"/J
+¤Öuc at I°–HKâE;gqB’(…V
+‹#:dt>ëì$EVr`~ÐdDœ“+¤FR°°0bz*maÝÎõ³SŒÞG‘5¤`MKH(å¹Éz9@®™±²H±Œ¿ÛdRª.KJpfã,yáÈ«JðdûI€~ìŠBºæžá´ÀØÀ Ñé<œáðFáOUaÍϱÎb¬‡VtžwRÂþì1Y)ÐZ“td¬1YÉp8ôBbâX7q¬:û²ÄJAärâ8 x«Xµ6T£µ)xáwÂñÊ ¨@¶*X[ÿÔVªK!›
+‡Ÿ
+¨s¼p&ÀM¢¡šêÿ¾Ì·Ea©ðH7IœŸØLþ|ÂG¦ƒ‰GýÝ '&.èd¦Ûpë¤[HºÝÆ””yî±*¡€f•!&DšJ ¤Š°R!%H¥|Àx¢– ÃJåyYÎ1¶MÉÖéh’$Æ––8%e8’H£t §!ˆ•EË
+—Ò ±Ö¡”\m%€ÌÍt™_ãlÈÌB#É6Àò*ËKƒŒNÇgjq
+¡I7-!k¥€XK´rÄ:Ý÷•Š«<§®EÈn§\þ,·ª
+*Q“ü,÷?סyXZ(p•ØEPÙ±
+t/» mÆQ
+èÄzÁ?dV¤°tRíyÑƆr l³:N%Aš‚¨ß§Ó‰‰’$ðÐ}pÍÆc²Q†uvb”R”ÖÒ‹ÓÀÍ”
+_ê)I$ÆÈxÎK•Ý*"'gpÎx߈°7}Ûz~dK¢Û#é·ªæYÔ¨z†„kÜ2‘‡h*'HŽ<!€å¦–\Û6Ü<0dµë>;•
+g¼`@…
+‡ö+¥dRGÒã”8Œ
+‹É9O[©c”V^4á,?Ú¾?HgE-™³S“–ŽXk¶lœav:ÅQ¢¦=8lXì%,íÙKVxúTGW÷J±e¬•ž^& ¸±lò€jMê »¶f~EŽòÁURVì$vÖÓJxüÝ ÆƯ)CƒŠ Z…
+¾’RÐÑ
+g},
+JêXºÁ(˜Y?bSÓh2eA1ÊüÆ‹ é$žsyl_…†™AáÐID’Ft´7ÄųuЩ²iœax`Z+œŒˆg6ÔfPBVϧV¢¾. ZD&›©¸†Çl«ç"^¶`5Z´Ìv8Sø*MIO%™£Ø'B dõßP"[Dkmhö9Œ1àº[bÃEk0fŒ(1h)ÆäPŽ‚!”«YÖÚæä\‹È¤”º
+ýÕîD³™#=[É÷iþoBÁËà‘~Î2zµHÝ
+0È=†¯‡Ï¾—7´&:hퟵàñeD÷†Óté…˜äôNp{«’Y6¥kUú
+çB
+ÝnŸ£Ž=¥Îx¯……CpZ±¸paZI’X¡¥FëìVJ²Ý‰|ûA œR AŠÈ?ˆ¦@:H´÷\’ÿëu#ÊÂøØ–DawRúã•¢V&ÉY”öìŽöSäE}.LšxÕÂ'e¸×!av*¦#lx<w-ŠTKJæ
+6žeZ’‡¦G¡ê²m%í#X2þšç¡ìE—†µ‚Âúc‰ýÊ„%P)±öA"²ž‹áómí£Ã¦át$V‰e]Ù¬VÙ™V`m0ï ™ò×9u¤Ã(Œq¤!A檛†`è°EÉxi€k¬Š‰ã(¸» :i\—Ê‘óͺ("IüB,]¬îû#';Þ£}Œó1:ŠS³¨´7á3ÓÆ…Û‹l6€!8{¡zÍ—„€+ÅÊrey–T7°¬)jPT<÷ê’²`ù¾˜n1e–ih°]K›-úÌWæ8%°2&Ò}Œê£ó%lVøžHµ‘;‡sþ›Q,!+4|¢—ӄ檉+Âýÿ¿ê†Va1‡ÕŽ¯¢œ(íÅáÍn~œïŸ°0Z&]¬d’×PC‡“L‡*f+¹ìßW7"éêßѲO4-:Jؼi#Ý^—2Ï)aff–µÖa‘Ø»‹}ï@)I)¦û³DQÌÒü>¨‚¯o£’,‰r¤J0¶†…±EG‚n$Ââœe:Ö”±b\úE2ıÂ%]í›uyaˆ”ò‚Œöes+,±ŽØ³o……AÓÙžù…æ„”`*w5ÿHvÍšT{,| ¦æfAB© ïçÉú5([PœP¤›°¨l¯go»IP¡yh¤™j?AðâùÎŒr¤t•$/,60/”l^cåD¹®U€ÄÚgÓ>aAŽ,)ƒ(Ûl›¸aqDr’Ï%H±ö<ÝÒzKžÜüAR½Ž"ϱeÉ¥q'¥¿f–¬,±%ĉ$
+×Ó%ÂäÄJ%š´›¢#…µiæqIŠTSÒ(—0éu#†.Ça(>Dç¨SAÊšaж¼Ä5)$B¶DÖ!”X™)Ygb?
+A¥x“žŸì¤CÚ[z# “
+°Ù
+ŒñÙŠ‹#‰$›æº>kG L ¦ éu|vXY0
+áiW¾–¥»i#™3”óÁNQ¢µ¢,ò†ÊX±…Øyx háÂZ
+2Ó°OjQ‚Í=“¤,pbQs—«¯¥/ÏÖŠò™ºVJ¢i´(\hÆ-ë;ˆ¤$ª”ŒªaA
+©Z×4Qƒ ËKÊÁq´6o᫆p½»S=”ô’‘V½®P²çS¨H§Iš‚óÍ]Èùn\÷(1ûÐÊn˜%^ŒÎ/áòC¸áAâÙÍMF* µj=?mZUCU!X
+)®hëYõÒµªRŒƒü:ôß#%زÀ[(U{ÆàÐ~â~L";H' QY";iMuÎûT¸z•™RâÊ‚HFœÇ~òüw[âÌœ0è8ÂZ¼Rüf¯„Âa±á9w5ãl¿új&ýùK×`Ó6XŒŠÚä¿€kÖÔc´w^ž•²ºa¥ìâ±eÂbùˆÃ|¿«²Û•AV´Y-zÙ¤„W0E¢‘ÓÔ\ÑVÙ*ƒ¤
+-˜šž&N\™#•wãÅY\6À
+éi—ÑpäƒzÙVI",‚SliI»ZI¬uèND”¤XëXp%2íП^‡Ô©{˜¢S˜+#Ï{4qä)h•Í¥’’qQ$:,X…áÞ÷S9)
+X ¤öO”
+üÖX+6Î%t"Q?€G¾8 Ûï"¥š0<1Ρå»Ó*ÂmØ
+ÏkÃ
+¥
+f*-ˆ"»¢¬$«ÕÃ2°:å«C!”Äbqù
+©5Yéi9RJ”V¬Y#;Ç"u\I”ÎÒ?„+†”΃f>µ %ZIŒñM¥È*ßì“^=·cçAlQ6Ô%çí-i†-T{z£ÁWŽ¹nÄL7ñD)qÆ /ãùE’©.i/Å–!%Qì›-N„uDS=¢-Éî²4!‹©¡ÕúáïC‹_ñº¬ðæ8༱>ÛŒµdä¦ð”Àj;.‚2Î:¡±%¸r8c°‘jã–-7…E
+UWÕšòÍé?4RS-œóêªÚ
+Õz)R t×Ï¡ã¨Î¸EÐk—y-
+…ÉÈÇ9¦(<cAxqÔ
+rKvh(ŠÐÝÄCƒ–&4pQSL^NwIÒçJl±§8ÝñǪ|¬”j1”_ËÂ!Qö>@qÀwgˆº38©ˆ»3~—9Ÿ4Y•ñÖ…kA¦@c(!uX§%S¬xéœ÷9®Ø)€´‹¨h#"\©Aã7H‹È)õd„µ©ÚïäÈbJUžËm¤÷÷0ÆB,p®Ä9¿ a‘Vau`®8°aQ³U>èÚ
+˜îtÙ8㥯étƒýó8é=Æ#ßìuB“ÊÕba(¥33Øx£;CÑb؈65¬
+Ñv¦š” ç¹!·–n¢‰´$ŠÜÆ6(“”^,ÑèÒ@*¤µ8áyÇqÍálã“Þ¹ÕbmKk.Hœ=ÕÍሥhdÄ•#ZPŽãˆlIÇM³+|ˆÀ7î–Ícó24Q¥WË…S“iŠqN2× wE$¥]$B*ŠÁ¥…Eân‡$IÎᄳѽ£Q!#„Ð
+o]ˆš›‹(§Ž—°&£È0‡ò×aÍ&:OÅf‹èHcʬ¤(sT§ï⬠>ë¹ÍRÖÂ)%Zk0Kˆ8ª9|ZJ„’^s®rE¨NÈx
+"–8“#òƒH»€Œ=veçýZã…QÖ
+„^Ái-ÒI”1X©°ª‡Cb²$HYÈÊQÄ3~ýúXlýQÞ¢´m,8!ÿ Âà&²¬âß6x®Àv±ÒƒÕ쎗#
+ÕÜ4·¼‰6éò)ê…Þ0f\«jžhȵŽ»²,\qºíFwÀ’TÈÆbáÙQzÁмš]&œ ‰21¿{;ë¶
+Æ"¥¥ˆ:SLÏΡö3“€ÍAEÒ—yRb¤t6(š)U` ÈúÌó2§,Ft;ÞãçP¬aËÇ”ÖR¢éLE•ÜŒ¹5±_Pœ-9´0faq\OpÐÕ˜¡vA#&…àˆ“˜ÓOÞ̾yœp¤SÊá˜Â:¢H‘Ä1¶()‹Â?3ZÕ¸q-JQÊ9¤Ò¬Ùz"£¨Ëü÷4~¬¶Y»Z¬XUÎúÌ×Y‹Å64¢H³ÀKu²Á˜JÛtÕ¥”Þ[XJ„mºß¡ùÞдª&ò‚¼Ò’EÔJ>-d‹@"Zfã¬UÑ–„öÓJÓÓ¸à‹oKÃp~‰áâÐsÃ㨩òl=Þ“H Ý™I7Åš KW
+¬F(I™äY†C0^!¤ ¿fG†{ÆEÓ_½
+Çù2[†é-R†kᆲÄýiìâ!Ïî8¹Y:Èè¾kpRÐí“hÍ¡‡÷û^F‘ÑY{éÚ£‘RŠcäו¬*;Ïy—(–PJ°0¶”…cª£èD’¥C$½: âYL¶H¶ÿÌx Y¦×ΡD„•.T4£,Ê:Œ3˜²IylØ qé46™ÃÖ÷²C8Ó|]ðÓRÕìçä¯[*7™Ô9]g
+ú?“ù®P·=VvU“k·"ƒý1ýœ[‹˜ r+¾Rú«OÀni¹«²¶²¬»—ÆV~»2)•H ÑMGN·¡†€IºŠ×+`&†HZ‹è,M13·¡"DÒ3.1ZÚÄ¢´$ÖºÎ
+â»VŠã9‚^·Ëb¯¤›h”Ò8ÈË‚8–HW"^é`˜ã3œ2È©¥ôx³–²"¦b¢4Åæù„•[ˆ•gAèås½œc”•äÆÓ§‡ZL%W2 ŒŽT
+òàµa$XºpÒ‘õÃR¥8뇂v”«‡jV&<J
+ï×”¥‡d*ç‹÷Ö(lcL_ù^¼qMEóª 03ÏÍ!…Ä”%‹æÉFct%!o§35#p¥¡C§ßíB]€>°Ðh~‘|”y®¹äK#†J0½f–2Ë}à1FûîÅft×C45‹Šâ°9º™vˆtByÁ«
+‹¢ôT¼¥]Cz3Ó[‚uh-)wÃT5½)¢ÚêSXMºÌçAŒpJ³´4 at H…Rý^L¾”árƒÍ
+ìÞXWbóœ8ÖôÖ¬!Š5Fƒ3¶¦–ë¥ ÷¡‹T%¶cŒõöœÊ1°ÂQ+,Æ“¿CßÄy
+[Öˆ
+c´"ûÈ:Ïìp³DÂæ6mÞð‡?^æë~¬¥B<’oãá$X…ÚuXPwò¥«à)jò}p6«‚U TõœàúçÕ¤…êwT• …TBi´Ö¨ð?lé ú24Ú‚$²RMÉjðPðã[2¦;ק-QdKå7›2Z܇–(’Þð[PÙéiå›n¡ì¦q¢™_2Ì#!’%JT$,íÇŽçIUÁô×ÌR–)%Ý^â§ahAžÜwï.\Qx’“”¬«:Û•I´ŒÞý9¹i
+³s]”R¤IDªƒÖÒãgyIÇ5L§1i¯çm3•—X—Ö²°”#´ 0O¨$F(Myð |ZÁ¨€CŒK•‚H¨ºì©°Ak±–^ügTèà'`L£å²!}Ö:Z…ªhDáqˆ•mHé©F¾—AjN¸oþþ…
+?󙜧É*Ÿ>]"0N+qÖFJÒ7ÿ #]¿)!e,Í/ #å©mÕ¨‘ÐÜRy6©*VhvÒ`HZ]Æã1£Å?7³–ØÒPf&иÒuƒ/aûÈ,KÚé{9¹°H¥ÑZAq
+’©q¤ ´dyÆøà^:ÃyÏ‹â`VPe£Ò’9Ët_)‚éH"¬ I4ÃqNi7ÍT¢-ìçÐÁÆÃŒ™x€²–8Ö(©
+Ï,B°Túc\Ÿú*(÷³KŒ‘5}˳Å<Í®›ø¬{œŒó·
+UÔÈø¬TO`»þ¬KZfíR ZÖxc§ˆœâ×8€µêE%}µ€lHü™tT `UÜ[71‹‹X%É—†DZ{¡Q‰L½·‡¦™%¢.ÖÄ‘BwºÞˆ]úóV´°[åƒQÕ@Âs©€"Ï|p¬'jóürÌhï½ÈÙÎÛI×l&ŠŽþú£è%–hÍ,ãÁ¬!ûŠGJ’"éEÍ~ð÷¤ <xFè^Ï ] ùƒ½;)†©H{úkg˜›ë uc‰6tú=òáÈÃF‘¢¿~¡Qš‚-k˜ âãçPVbTÍaL‰” Öå`†¾7 Rʼ@ÛcÐ
+é¬tk-
+;’¨à†ä®ÆÒ 5‚µ–MËGwC[5ø:·ÂÛA<jðe…w˜pl}&VËx«&Xèk!V˜ž¯î~Öª“Ô¡Xø¦KiY–‰WXoÀ „£@%šôsØ´ÂŽ¥Ä:8"Œ¥•¡Ãh54bÍú”ñø§•Â—áÕ·¥7âv¾ b… ¦£EY2•¬éÒ‰ã`uj
+Ö”<¼ó^²n—Xid¤f%ãKlY7MšÆ8g‘*FWþÚ8:½iÜpˆµ¾´ß³ç ‡æG
+I^)°&4À•#:‘;
+é´u03Õá¸cÖ1ÌÍô@@^Z†£‚8’”ÁøDJ‰ˆbT¯Cfù¨ 6ª¾I>£ô~ÕžnË2¬=‹šîÃÂ!_Þ h®>¾Žö†µ0(ý$ŠÙس<†ãÂ{f(&äÂÕ8ûÒzø©t®æOˆ†ì e}ÆKØ0mà$+á ùNˆ0ÝÞ¬ø£•gr{Rµ¬ªë‚šp4.>¸ƒB'$Z„L,–¢ðž Zû>î¯!™Ù„Š”Ö»7œ÷A8”Á5Ï9RèHRA<ÒËÕ‡¨«:Ѷ|4¥§ÚœÑÞídRâ¤`¼ûNâNÂÚèN÷(F%r4F”…õß«GXhRv»Þ5Ê‘¥EØE,ge>ž‰RâéõÈx
+REH¡˜Rûì{—
+ˆÓ„ÎÌ¢,)‹’Ñâ
+´4Öžûy]£Áa
+¦:1Z*J · Fwq¶ -}¥É‹9öþ¿ó‹KÃŒNªqα´pˆ$ÑXí?3Š¥s”Ö ¬Ùp¥±ìb˜eŒ†K€E*ÉÁý‹ìÙ»àé9¡˜êO3XZÀV3µ‚)K"]«Ó.8nKŸÈ¬é(’Da`ïÁ‹ƒŒ^ᬡÈJæ6ÌÑŸé³ãáy
+M\¬½n̺™¦ôÔ$[d5õE¥1Qšb~©©’”‘#7¾TïèP
+J˜‰*×±f±GÚgÁ¹ ¾!{•!˜—º6¶ÕD1¹^‚egE)ruûYÖ\/òLֲ몇»bÙÈ0aÄ!…óœi'꾂”nB´T™ócqyI§ß÷Òz:cùæ_–¹ô>g‚'³µ8;…(ï
+†:¾Z©ÎCH’ŠÌ·8¥Õ„¿oãì)ëªQ78ÇØ°¸ÿ sÇžL47KÏeØáòÑ¢§Í¹TL1<ä{qŒT’¸Û™4éÀÃz"ÖÌmZðhC§×!êoAtŽ@ꆯÞY{éìÊwzÉ·³”ÆËha€Ncd¤)FcFÑ7»TwHïLûÞ®²\‚…qe`æ(J«pI©{X“#²y(‘Ò`]³y´òjäÛ4ö'õüGýhÞ
+®&
+ëðôà+&¨–{F|ä#—sÒɧpýõ×ð–7¿‰ë¯¿†óÎ;Ÿ¿úëwòüç^48KëêqÎm»·åt‰e$·z,̤a#ÇHZÖõxœ<eÈ„•ðòY©‚JÇd5i>3BÐ2x½ºà ’(B&)ƒqáIê:qPè`I#á í:ä2bäzXcFŠÉ‹‡X§$EQ]ág_áP:B)M&
+½$FJAY"X:°‹8é`œEªl‰–ÅÅ!î:HiªàëïòâüÁ‰½¸mÓ'¤'©oX7ÃôL7øÆ‚gdV2ætSM’(ÖOO3ßKA*Œ)(‹2¨¿DhZú¥›%r$k±˜<c¨ÀkÇD33”‹f¸ÍÆ‚À¨òAå¿k,EéÉò¦š{‡À92I‰ñi-qË`Æ"ˆÂTŒÆá˘Īš#&[Òì–Ö+ÌäKcå=\5Ê(ˆy¬ ´Á:òFÓà€ðß&0-¬¥Ûï!„ Ìs¬ óõL0˜’Þ'ÕãÎ58ãÿÂtI¢A¸Î•;˜óœå(
+çlN‚°½5°ŽñÂ']ТU‰‰kŒr*ìSøG(
+ºj
+2ê!Dá,YÀÌ:lr„¿vÙ!„Ù&H†ñ
+¦–Š–‰{5ÁÛ†ƒ‚¹õkžîBfì¡¥¦ˆf7B~0˜Ø[òáˆ(õ´µáÁy¬qh!‘w4ÙC÷ÝJ”&ôÖÎ ¥
+Ma_¡Šà„MmÂJO•CÆÝÃwãòCâ^8µSË*³òÁ¢öþ® Ã6áÚ̇‰ùIn’>&#ö[}é–Í[8é¤Sؼy»ví@
+!iwš£Ž?¹5ºtÂôÌ´R~:®RDQÌÜlŸ4‰â„$írhiÈÒ¨¬aW椽iâîÝ4
+c‡4ZjJã(JS
+t *{¯ö冇‚ØÂüÒÞl=š¥åï!ZƒX)ŽX×ǦSÈN„—öf…Sß_EGFƒ¬ààRæÕkJ·æçJ’H!LuSÖM÷pÎbJO#’µea¸ÿZMÏøLÌY¡„{\4¥ +’HÐÑ%1%AÅ„ÿ™q–,+èÄ*°_|`VRú
+Ey¾lk"Õb0HAQ™Á+Y›äW¥°”Õ†/‘ÒHÓ4q¤1ÖÏË‹”Ç¥µR(!ÑÂy<?³”¦5èTÊÐY÷ô©áEDP[I!ÑQBonšîš)Åh±–Ä:ë°AØ`ŒañÐÀS0k,Ö‹m„ŽH§zHƒO± 3Ó÷“7"æÓ…µ#D5é[/פ;”£ÊlÉû+ƒ( ¶ƒ)qÎ`Ë1ÖŸyG3ØdNŸh’u8å'¨8k,,V‰&ž=SÚ–£¾«Í|œ#b¬±ŒGãÁ(Öôf§¼¤_´ªUT’ît™#æЄÒL ŠÚ’5ª±ÉŠçƒ¹®UzBw:…x*lN"˜ÆûM©¢°¶×ˆ„ÃdÀ®mµìZÆËnÒÌFˆU!Ÿþô‹xö³ŸÃã>›7Éwm«Sî×¼æµ$‰WI]·!àsŸýç=þ|6oÞÀ±[ã/ÿüm¼ðE/%IN:éT¾ðÙË[ÆÜaÂ>ÀÕ*´¥¬¦¡U6vÁK´Î|«ŸÕ
+6QwŸÇÇW‘ú+ŒP를´œ"_½Oö–¾ŸÙEͱi…Œ¦X³qk×A:½†Îìf×mafý¿ð¥£?»4í“$£qÎhpˆ‘H’|)Ö±…MÇžA6‡¥¥0†N¢é¤š…¥œ,/H´§Ù²@XÞýÚ³Hf šÒ:Šš[ÛT"ìÏ‚
+fY7×ev*Fék™Å @ÇLu#¦:~lf¤%Æ@·£™î&,ro”"¼OD–—tÓˆ
+s]Ï©ukŠPZ»–é‹@i饢£Œñ;4ÓÚ‚%‘’˜Ò@”‚Šˆ\Iy‹µ04ÞÂÐ&„žRè¹ÏÞK!‰UMÝrxW5ÃOUl)kÆ
+:±-‡-fÈ•¥/ùûëæ°Â±4ÊÉóc,ÙÂáCÞ泿¾q&÷lþ¡;±Å´“àdãðVÛˆFÚOÂvŽ´Ó¡;ÓóÛHarƒ-ŠðÌø
+@¹“A¹¤D ”…‡N¸3Z¤X:ˆÒÌûa°®â²
+ÞÏ€LÃãâ?_8ƒ0#ŠqN6"$³›èÎmöL©æ½A/…B”K”Ãܹ‡ñâl˜¡ãˆÞÜJÅD½9â©5¨dŠ¤;EÚëЙ
+ŠLãi™‘’aΡo2[ƒêµl)Ãÿïó‚ê„JÁ{&‹Öݺ’®7iYgÄ«`w˜ò®/¾ÕŸüù¼óïæ¼óÎç¼óÎçÂ/bóæ-|û[_÷ÒÔ$á¼óÎošn'ÊåŸü®ºò»¼ü¯`Óæ-ÜöÛ¹ñúkxê…³ióK‹ÜvÛMuiPÉú*2»–-X¡bJÔ¸UåD%Zü`2ã&Û¡†Êí
+ßõL•£°S=„AùVYZçKµ$Œ7÷$ñt¿'/}n¤cI§7ãƒe>"Ïs”ôº=”„…CûÌ:êe9ƒÁ"Ùx í2bè$’^7&éDD–Ž–(óB‰¼n®Ki,‹ƒg¡Óñæ=RIö/äÜóÀ~²¢@(…sªV*ú±G¶Fµ„©-8çX·v†-›æèubŠ¢ J48Aa!M#Öô»tb]gNQ¤èv4©Ö>xZëñô¸ƒV’4†
+k¦B 6˜ÒbÆ£
+Çõ()Ûß¡Ó˜´ës•Q’ #”‹¦ƒ ˆ’>øº
+– 0%&‚%q”9ÖŒ¼‰Oí·-AOMNOÏálN>SÙ›%êÎ!‚캊pUF‰30x€l°ÄhqÉ‹€ð\èîì,ÉÜ1$3[YÒÙDý
+™PšÂo!ÐÙV 5ÖâL†ˆúµO´¸+pÅB˜œ‘+IˆFõë“<ô
+RgV±¥ŒJK^ä5·»4•Í¨W=ê`"‘ÄZ
+òÒzγäÎê [ÕXAéUÕ&ÈLµRž‹+¥ç¾¼L·RôUå¼@ÐM5Z ŠÂÔ¤«¬_…€8B§ ÝN‚°%ÃC‹#ŠsÁ×ÖaËkƒdÄúµ¥"…ê$`¼
+f{~kYÌVͯ¶¿RáŠ2ìÅaÓM7×R'6^H2(ÜÊ@‹p&t º›q"õ,€r Wf¸rW. òE>€Eé„
+½ÏCªCW\:"áÿW±D!SÑÒS™¼ç„«1KÝí@?VFUÕ«,rÐíõ}
+ú› î$8!(³‰
+¾§²11¢Hug0eVKÉ…Tè8
+›„h
+[…æX3öÑ– ; {^lÆà,Ù`\;¢¥Ý„8v2ìa³ÆYxEçxÉ¥ýé†ãÝbÓ–ˆlz\ÖFóû Âôj~¡
+ƒU½op阮˜Æ3i¬ Z÷WÔ°^#3—{æÜóNw‡¥¡µÔoÖ9N>é>ö±O6?~î%±sç¶l>’Ï~þk+~~ýu×ðú×yœ÷Òç½€ßÿÃ?Ÿøù¯¾îç¸áº«¹üsßdShÈÝtý5ü¿òJžò´g2ÕŸæËŸ¿œsλ
+Šð‡ŒÂà½xn'%VÇ
+Ũ5ŽFiͺõ[èõg9°w‹‡ö!l¶–Ek¥È3F½Õs¥0:¢y“QQxøa¶ƒ
+tš8V¡óíG¡/2ߘ’‚=»ç9x`©ÞRiëŒÎZ:^()ò’"/Y¿a†5³=ÖÏuQI‡8(JCž[GÄkú§º1㬤—Fžwë&7zëƒÁ˜‡÷ÂÙ
+Þñ›”ô©oÔØ2Ø‘ycÊbpwàaÖÌÎ2wÔ)Ð_ïqº|DqÿMû
+QfÞ()Ī8”¡ŽH‰Z¦ëíÓ‚-¥ðžÇœeÃ5X3Ø*ë²rÖã¶Ö z=Öœ´Ú½—l˜…ÙÕƒ$«.O•Æ%úkû¥›°+T7ˆ0R…K¼W)”RŒ–/
+½’NK”Ò5¤Ö]w4ý#ŽCÉ`÷]ƒÞ×7Š˜^?Á}•âdâ™DÅ’Ÿ..ZƒHæꦶ+†ˆl7‹{¡M’&LÍNƒ³k×rTyOØù0qÓß° =½§»µ÷¸5&8ÃÉp½&ÏXܵ
+%†$S]LQb¬Å”~l‘1Á!Í·›ŠÎgëøXO>^¢ŽÒÕBœºa|¸xÕ,ØÁ¾}óÊW¾z¼P½¹þº«YZZdóæ-œ|ò©«fÁ»wîàî»îà¹Ï»l2Þt$_úÜåÜs÷6žsée
+ŸõºfÌ³í¿‹0ˆ2¨ £¡%%H‹\ßþNÌ‹ê™oB bâ
+gm=ÍXIEºæHdÒ
+æ>’ñÁÝþÚ:‹Š"Â?LYø{e³Ú×× ‰HŽhŽ• ÌQ¤Hû¢NŠœd¤˜ð’©œf瓘¸ÛA%)ÄkRÕ¾.lP^)(—B²¸û^¤+ÑÝ´>7WeËá¿+¡Oåwêjq™˜ÓE“K Òyñ–|õ
+©p¿ßçÅ/~)¯yõ/ò¢½”K/}›7mfçÎ,,.Öà[ã”SN]5
+K”¦ôïûšÄ
+ã¬ðP‚Ða*ñÃ;#Ç\RÐÅàâ™ –«Å™’Áâ!ÊщVaŽÁjPâô4ttPÈUÖ½°…¶ ¦¬+Bø („BØ7ñ‡ò˜¶’D‘W]9!uŒRM*Ôí¤5¼â»÷ªžK(©¦lÈ)5ÂÖšü¦6Gýq¯C‘dÃ1Õ5뼫`hT¡„–R¢âæ
+6cÅZ£žj™ûOÑ8‚(M‰“ÄSÕ´BÆJEÞ`¾¿LA9<€µ#”ôã}ò¬ îÄ8áÇ»;pûŠÎgB 3±\9DªfЃ«ªsÑv’Z34£8òn~¶Ä©.N&¾¢¨ªé…EÖù \Ž–î}ÐËŒ…¬"U³Ò[غVw“ž5Öµ Ñ05›šl5* }µió†?<ù¤SøÈG>É…>ƒc=ŽÍ›=¾ûøÇŸÏóž÷BöïÛÇwÞ8xþ.[5è%Iâ1Þ;·q`ß>Î{ü5·wyüð®<ø£;xÖs/cª•ŸqÆÙ|â?>ÀÍ7\Ë_þêÚ“à¡û·óä§^´ê÷ÞvãÕÜ~Ó5|ëK—óé¼›wýÅïðÕÏü×~ïkÜ~ÓµÌØW‹¨eU†Æ…„¹\.ØHúÀKë9¡!YÐÁCVј~7ë² *Y(•’¤kæˆ;b-6L+¼è¡BŒ”Rôú³Dq‡<5^îØaÒíÍКe<x×&\©–Ȳå1:ëÕMÁãÇcÚûT/c
+¢¨z¾$NÄpaŠŒb<ò;}¬5äaÃp¢æÂŽF9Ó½”Í›Öá,L÷½Ol{eÑt7&‰5IoÇH‹¬®®ŒµZs`P ¤dÝ\™^‚Ưà¥aæ'ßb|ÖdrÒ8fnnŠ~W0Þ·—b0DϲJc‡óÈù(W`œ$ K”t!N‰)™Ò6°U*ÛQ0ÃE\Y?ÝÜŸ¯h
+ì¬ÈùBoU“îÞB1+!±$±öÙ—ŠÎĺ†]ÐBFȨQE0§ÈcbrzŒEô7lôø{–‘
+FÞ´¦‚ê€æ×µ
+ÁÂZ‹Ðš¤—LÈ‘kä±µiLíá%kj˜ŸÈÑÈ…$½I·C’&Di”ØñÒ.¡dN’Dè$AFÚK…ë9š¶ê5ÔK,ÂɤÎÎm±Å|+7q±£n¢‰¶'h²Ü*sÅ• §¼V0†²Õ$ëß·´g;Ùâ^ʲ$g”e©üÌDçÜÜѲfíÉ;!Ûm)Õ*®¸ìljQx{ƒM›7üáûß÷aÖ[wØ úøÇŸÏÇ?þQò,cÇ·xÁó/£?=½êû§¦ú|ö3—#,-.ò¬ŸºdÅ{6¨!R0,ðä§6YðTšÁ`‘k¯ú.·Üt-½~ŸïßÎÿõ\wõ÷Ø»{'Ûn¾–ï|ùÓ|ì}ÿÀ{þê|û‹—sí÷¾Æ=·ßÄÞ=;èMMsÎOåÉϸ„—¼æ¼úMÿ‹Ÿýåß䟾Œ½{vðÀ}ÛëᇈÊÄ]ÔYF¨FUŒ$œõ¬/êæû„DaÁ
+‰Œ58‡Nb¢4&ŽRÿÀ;ßõ±ÖQ:ȳE1ö1”¿ÔÁÝGú(NÑ:ö%°óÖƒÁx¼D>áBªeŒ¥›jº„X+JcqÒN„B2ÎK
+c=Døm›6ÌàŒe°4
+¤+ BÉÿ$'ÜÒê
+„U6f¬Ù0ÇôTŠÃÑéFtM¿—Äžû[æCL 9çþÁÅ1—2Ò8b¶3ÝóSSæà (-ÆL™ùFb,˜é'ôff°¶ÀÇ”KCdo
+2êø2=SìùÅÂ^\(õmÈ ºÝ±¤.CKÔ!„
+É)…Љ‡y+8@(ÿï®ñQéTè~7†5ª3CaÁyðƒÕ(ÐQl0=¦oÃ&&Ó.²3T Î "DÔA8\ÇD=
+„ÆŸßé“Œàèè7Ó¢À–…g>‡'Úa°Eã¾eƒ"Cugü`Éd
+™öÈîA™ŒXkF"&îÍ`TŒDÄdoÎ!
+|&d¤Ž(ó˜bŒÔÆÖ)²Êá¼È½•¦*ˆ–Æž>f<.lƒ@À:ßtÿ/döqš Ó[Úzrr½9ÏèpÕ&ç=p¥ðç-¤ôcvœóS”EZ>s-eð(¶xÒÙ¸
+^´ø´ÇT-gÿÄ¥!sÿ;îßV¯§
+^ð=Z¢\Jzeler¼(¬ðþ¼Uö^‰L»ÓXàòE+˜¢ÆÌÁ¡Ó„XÀhœÕ™»1%8%6PûlsNµ;œÄ2Èt‡ã‚8Qc£dð@¶Î…$2ØQ^ýµœwÞqÑ?ãÓŸšf~á;w<Ķm·sÊ)§NG{ÞeüÝÛÿ”C‹|û›_cqqa‚íà9¾pæ9çsÇÍWñîæ‡7\Í™-êØ‹^új¾ú…+سû!^ÿkÿ“³Ï=ŸãN<…ÿÌkïîÜ÷Üqó5Ü|ãµl¿ûŽÚÜÇ…IÆx®oÕŒ6ΡL3×ÖÈP?;N‡Œºl<òXÞò×ÿNwjúQå˜ÇkçŸù÷¿û-ö츄%Šq¤°Fc¥4žLoœ•P_JÆC´Ž—9£ÁB0ré•}¶´,ŠÀ~0ä¥ßq1A2ª‰"O¯²ÖPÚ˜²”ä%XRÒ©)ò¬ ,
+>á³uW·¦¦Ú*ûõ™na<p±íG;˜[Ó¥›Æ~VVh`x|ÔçÕÆ8ò¼Äº¤Uÿ˜/©±²å
+³¶‚jZ—
+°¡“>3aàæ’k{Š o¨¶5íÐiJ1±¸¸àUŒ‘¢¬š×Žšvæj£*×òPŽ…(ò&NퟻàÔU1ªD5”ó±`€§?ã">ýéOâ€+>}9§üÎi‡}ïóžùðX\\à?>ü~éõoZñžg^r·ßxB8>üoïä/ZxªßçU¿ø¾úÅ+¸ì¥¯ú±žÏûÛn¼š;n¾†ûî¾}»wp쉧rê9pÚÙO`°8ÏÞÝ;½Âzf-s„©¢¶Ý¶ÁŸUµ¼2ÐQ®]ÇoÿÍé<†à[½ÒΗüìoðŽ?úeâHkOMщ§Òè¢ð]ë1z%Sð¶ÂT²Uˆ“iÚ“â¥7qxÒw)zée^2Í“$ ’>¶ôî`°À¨Ì(Š!Öz{w*¡E¬õ÷NÒ“ZNËaâ3†£œmwïâì3Ž ‹›:UÀìTŠ³Ž8еª×ç>ð‡<tïµ'¬±`Œ!Öc/ߣB&ÞÐÅŒPØ8ÅŽÇ8cÉNG¸l c¼ØÆÖŠ¥`Dc«ÌÐ)˜ÒóB«‘óß+Bj¬BãÆþXÐsGA<…-J¿Á ?BH)s›qù
+¾Y ².Ó|Ó½ípSùÇXÓ:6GÀ§=G^Çšl”!d‚P&܇ÀÚ¨|,*Ó¤Ê"CYi,ëX.à½Nø
+RZ°±ÀßúÖ7xÝëÞð¨ãϸ˜Ï}ær,ŽOêüöïüÞaßû’W¼†ÿøÈû1>{Å'W
+À?}ée|à=ÏÁ=qÃ5Wqó
+WO(žuɹâã|Äc,-pÛWsÿÝwpëWsûWÓëO³õÄS9íœx΋_Íiç\0ñ;/ýù7òþøs¾ýÅO¡…«±ÇDá¬7g‰Epì
+Ͳ¤ššì¿€¼ú«ßýïä–¾O§;ÅŸúÓ+~¾åè8íÜgpå·¿@{×HÇ()0Yá:¸OEé*G.2‡ ÄÓ ´ÊQÅFù²Õ:lY°8ÈÉÇY–c£1(E¿—0dX„Š½ˆÍ1¦ú)yž“‹
+ñpI3vÊQMÑ¢(¹lPEëíF£ßM5fv6sõ1:,:ñ)Mà‡,Ùº ^Gë;Œ˜s˜JdÁé\ჰˆ¨ëq~—!Öïðwmcqq‘~¿ÿÈðÓ/fzzš¥…y²Ñ€o|ý+<ã¢gúÞM›·ð´§?“¯ý«ìܹƒÏ]q9Ï}þJúÚ«^ûküùÛ~ïø“ßæ/þñÃlØ´¥V°Ýwïøß¿÷ÿñóoüm6lÜÌ}÷lã¾{¶qÛM×°ýβýî;8bãŽ9ñTžð“óš_û=¶žxê#cÀSÓüêÿüs¶m»}Ýë± ç+ªYV‚VÍHã`d½çC¤š¦Üã/~áŠÏ¿êËŸäßÿåÏ1I
+Îñµ/|”ßøýwÒíNM¼ïìóŸÊ•ßù<ã¢d”[„
+ÞE‰Æx÷*ÕØ×éHÅ‘ŸiU)f^zKÅX¢e™nãòñˆ²\ (} g9¹}õ0Y5P0ÇÚ)šî´BqÌq'1å:x€²(Y\š¯óÑ2)+
+T‹Ï|û¶DZƒJ1HlQø,ÛMÎ@ëvtk*1FÞ^±´ÄE‘ù&^Ò5…P¢$ÅäCÊÑ\±ˆ5#lQàLá'nŒæ)ÇK¸jŒRUË?ÅÖ–%"áDN™
+‚@@4j&/2ö2îÊ× ÂC¬¨þòÒ Ã:ð3ß*0dܦDHEb*‰Qå±UÄΡGKõ5ðµÿÓT€õ*:‡¯.l˜ŒÔôœ@tú¨þ:Ln‘‰ìC¨ÈÓæláËdQ/%îMy8BVÀàl‰#Œ•§¡±"›ºni°×ôRgƒÅøõ%Ž`à¯Æd^MŠE”AaWù8ÛÆʶK´a'g©×@ÕÈ®Uäá‘W³O\H““õ†$C¢4!‹®-eEÍÜqõÔ
+ZÍ4×bR´ ’ZµéjæŽ
+r<2gý]a×¢
+âÒ9dw#ÖYt¾g†~}é>Ò,…Iá›&Üõ×_³ÂÅìpAø³W|!à;ßþúa0ÀK^þj¾þõ¯Ž|ø}«àç<ï2Þ÷ž¿g~ÏC<¼û!~ñEOã´sŸDa·Þr#é¸ú{ßàšï}£¦£w©{ü‰\òâ×pú¹°a™òí±¾6s2öíÅ&GÊÊ轡•Ë–'cEFl!UŠÓ.¸pÕÏýò{ÿ”™NBÙMÈÆ%Ý7Ÿùø{yÙ«}rþÝ©çÔNcÕrç
+
+”7€ÏŠ0Ég&Q"ÙØcye‰s~ZJwR@Ä1ã¢dq0òôg‘Rƒî€‘apå˜ÅDJ‡-³:C¬}ÒŸÅÚ‚…Csèà"·EQddãñÄH'à‡ŠáPeóK#n½s'ë7môX¢-äÇD9º8³4ÌÅâL—r±ƒ”Ê2â.Ùä±-1£ë$èµ8$Ö-bLÈtÅ•4·¥ñ“wTuú~+-FØb\O2qy\ðÂÀÉš<Ðt\³"œMP”CQK"°ÎÔ%rÈ=æ¾x
+ž']–ŠuTÁHRH,ñ"ü”R´ßŽ¨™Ç-{]×!ÔŒÝrÍÏ«Ç6*žúP…mü7ªª°zäRJJW¢Êü¿v‚ò,{èÖV
+×}õŒ—‘Ig
+άcÓÖ“Á<Àüþ=l9ãIœý“Ïbݦ#=X*î¾õ~xí•Œ‹ÜûàŽ8ꘜyÁe̬Ûè}:KÜøý¯pÿMß÷•j»”
+PFÚ›â̧?Ÿ£O9‡´;åoi»o¾–Þ~”˜ÅƒÄý’ÍLJ³–ý{÷°´pÑÁ}¾ ¦QÒ!ê¯aó±§F¸çîm 4Hï̇skØxäQtÓtí÷=àù®‚c?‰SÏ<‡M›ª3ËC÷qëM×ñÀ}?B
+ãE ²6'íL±aÓVpc>ÌÂÂ<NHúsk8íqO,;î»#lra²±ä…ñÞ
+ck)k7læçßð»œtÚ¹x>wÞz=ÿôof8X‚8x¶–%³k6pÒ)gðª×ÿÝÞÔ£^—Oô½|úcïñ)¸ìe¯ã¹/þ…‰÷|íse4réKO=üÑ]·ó›¿ò
+Î:÷‰üæïÿ儺±ýzèþ»ùû?ýÿp6c*¸øy¯æÉÏz9
+Ñ}ôÑüÌÏ¿ÅÃpߺ‚+¿û-žþìË8çü§4ðÜ7?̓÷ÞÂK~ñ÷øîW>Æ•ßø8‘Tµç„sðS/úN;÷i>Yºñ;|õSÿÌÒ Gk?ΩVZ/¹oc¼àxò³_Éã.ø©Ãÿ¾Ý÷óOÿ{wß„ ~ö௾Í_³Ûoã“ïýCN?ïB.ºìW',n/ÿ؇Y¿a#ÏyþK˜ž™]ÝçÐ>âN$éÔÿö¯ò2tÈ~eà2×ðÎ;عsǪ¢‰øóÙO{âsŸ¹üð¥Ïïþ§¿giaïë+ìÞù7yØ,ø¬Ç?‘wüó‡þËw°¸À7\Å5ßù
+7]
+ûöì"ZwdpLRµ<P
+Ä1'œÊ‹ßø|àO~¥ý»Ø½c;·låØãNBjEgv
+.?„³
++;ü$esëÉãŽmÛpFb\‰VÝ©µÌÝà7«;o3Ùã•¿ð&¶žprÃ*úÑÜ·ý6nÜÈ)gœçg뉼âçÿóž?a´°¥»¸rýĽ<ïü§L_!*I« ç-
+w?¸‹›¯þ.g]ðÖl:Šã÷DvîÞå'†Tâƒ÷ówü)ÙÂ~ÈäKû½¶ªÌØuï6¶žé¡²›¾ùY>ýo¬_饹åº+yþ/ûÏ:úä³ùÁw¾‰s–3Ͻ€$íŒÿn>ÿñâLŒÌxÀλná«{/—¾ú×
+ƒ3Ëëâ‹ŸUsîþχÞÿˆïݼåH.8ÿßqŽäßV}ßÒâ_¼â|ï[_]õç÷Þ}WüÇûøë?z¯yþSø׿ŒýËßr˵?À:ÇÖ“Nçù/ÿE~ïíïæ³×ÝÏ[ÿêݼ࿰jðm¿žúÓ/ä‚‹.ñÒÌÚ„¾ÂU¥,±b!è¸w`K·ÏýÓó½/~ò1]³S÷$^ù†?æ¯ÿ6y¼÷ÀâlÁùO{þŠ÷çKeÏŽ{‰;3¬=êdîºûvnøÁäµét§8ý¬'0Ýèwßøü‡¸ãæ+Ù~·÷÷øþ·¾ÀC;î'U9Ãîïäö›¯Yñ]Ç|v0f_ «K¼íͯä“ú¶Ýq7]ïúë?Zõ¿ôÙOðæ×½œ|ç«ÜzÓÕ\ñÑ÷±g×C«¨Ù:m:åcz-.-ùoZ3½Ê~ù?þ &šb(rK!b„µ|ïïå¯}&_üл)T35Õ#Ñš"ËȲ‡öïk‚B’b³1£Ñ°þ·;nº–¥Å?
+!#Êi
+œÜwëµõûnúægý`ϲÀ™§¨t
+=³±•]y"BpÂi͆ùÕO¼»¸3¿—|߃˜ù=˜ƒ;¸îóâÐÞ]žÞy쉤Ý>Ûïþá„Ô]+Uû$8¡êÍüGwÞì!¢SÎö“„•
+^ŽÍGç7®ý»™ß¿‹-›62·ÆÃÛïþ!÷o»
+²ƒH3DèØœ0`Ûn¹*$=ÎzüSЫTNÙxȧ?ô·Œ¼p¦àÊ!Öä,ç;¤Ïzñ¯Øç‹'{vl¯ß¡•dj*¦×‰}ÆUÆ>•÷…%Nºšßîå¶ë¿Q»Ùšók¹ñÊÏן}Ú9ÖFË_w×v߸ÌM`¾?º{›OØŠïõÔ¦rŽ{ïhÖÄæcÏðTC×L)ñŽ‚Ë2àÅÅEî¼k'ŸtÊcÈ‚/æŸñg×·¸kÛíœtÊáÝsž÷"nºî¾IõGÚ›æå¯lJ¯¯»ŠÏæ8à~ó—yÎó^ÄÆMG€=»âßþ*ƒÁb£pŽn¯ÏO\øLÎ<÷I<îñOâˆÍÿ9:À…—¼„ïñ“uЕÎ"œ<ÐFédðŽÅ’*?¾ýcõÛÜzåWyɯþk7>ú1l=é,^ùÆ?ã_ÞþìÛ} º.×&[Ûnò¨ÈRÝçÖ[nâÜ'=s=åÜ~~ˆïm;Eé©:®AÔC:‡+aËŒCûVDk-ƒ¡gl,]ýÝ/ðà?BÅ1ë×ÏçùaÏí¯ÿè-ašB3rlÏ®‡8b9<‘®ÁEs´Ç¹õÚ¯qèÀÃ^ƒ tŠÒJ²ÂK^‹Ò`ŠÂ“ä£I“[¾ûvÝ}+…îQ¨.ãñÔã1ÓÁ¹éÐΈ7Hgn=ã,gœ”eAižpÁOrLKæ.„¤Ø»½©ãŠ"#ßÿ
+n¼
+ÊÉs¼þªo±°ëÌ¡zˆhjYøüÔKÞÀ›·úßûÞç¹í–›ýù[‹R`œEQËÌ+ÑÍø
+¦MÓh¼«@IØyûµ\qÛÕ\þw¿Ë O{6ç^ø\Î8ë'<¯sÙë¨cOäÌsŸÂ¨µ[¶_ŒïÑ^qÒ%/¸QN οð…<ù¢2·öˆÇô¶rô_…Ø!€™^Š’¥aƺµ}6n\»êç,÷>Ü+[ÚO™"_ð—†9YT¢¥"Šc"ëк`dFÄqŠÈvƒñC DÝq3ó{w!”BÑ‹; \"Ö2ø
+ÆFÒµ~ZŠå.p6Ÿ€mÔÌäÁùà`ÒOE–QÚ\—2ÇÎï&Þ¼¹%
+:‘WýÞ?<¦{%;ÓÈÎZ|àB:å ÜxíU¨3Þ{ï¹#§Øþ£;ÙzüÉwò¹üàÊ+ÂrÜ©
+ÿ¶;îÄÒgÃæÚæƒw TdÒ…Ç,…gÛrH>M¬™®7ÕÌ-7’‡§µBx¿jas„m N¿€
+Ìà ?y 7]ù2Ùgvu‚óÙ„ajÃEj£gónÍ´lFÑ1zðÞ[9ê¸3<ìá&—þÞÛyxǽõ@J%¹Ð
+ÜÇŸ|7|çãµI4ÑžãZÊŽí·6#§œ’e°Â®À?|éó/ãSŸòxqao~ý«<ý¢göý/ýÙ_˜º³-]°²«x(~òÂgrÖyOäÉ>ë¿+<EíÚo™m7^Åõßù
+ãÁB7ÔrR(
+È‘H-èè*OzåZ‚ë}õßá=±„ÝÛ®ãëïçÛŸy/Ï|áëxÜù¯8–O;‡[oüÁé|Jc9¸áÈØ|ôñ¼áÍΚõ›~¼Mf¿"ÀïàÙ©„n¢QJ°eãêüÇÕ?ce(΋g2Q礉&Ï
+IZ¹•–©8›üPÖFëÕ—º8¥Ì†0ØOw<ïh*oŽB1ââ×üÏxÉ/Nö[®çÎ[nä¾»oãœ'>§þ´o@Ï/-2p·¾Â’—^&,ñ’I5µÙ›8‚QBâÆK˜l1(ÎZ-¡@ªÿÔý–Iõ¹ÿþûë;öø“¹éú«
+ç¡´UVÉ7?ÿî¾õœpÚH:=Î}ò%Üð½Ï•e‹ÚÊ`]¥`õtòå[¾cðkÉ®ªa¦ëVOál‰t¹¯A¤ëøÎw®â„ÓžH’vxÚs‘ãO»€‡¶ßVãÉGwFÍ øÎÞ7ñ8fÛY‡“«`ç×=Æ
+Þ4üã7pçU_ó74Ïq¥«ƒôC÷Þº"
+d-`îûfeÙ‚ „ßh¼]Ôîi®æZEgw5ùˆñž{qyFØ)ü1ä9kÞʳ^þºfø÷wü;¼¿ž}öÿãí¿ã,˲»Nô»öÞÇ\>ÒgVeyÓFmÔÝr¨»‘ÔÐ-Ó’@0€x 7yÌg@Ì|ÞF¼÷Ä0ƒ3à jy$!dhµ÷êîªöå«2«ÒgøˆkÙ{¿?ö>çÞ(ÓjÍ ¢>õÉÌÈÈ7î=gíµ~ëg\t—c¡£îÖC:póçfôŒÅhM¾v†tõ4ª·xfÌï\_N¨¶_ÀN‡H9A`ˆÝùº³„Ìaœ¢,¹qóV¬®µÄl]è¬Å“àÐ]Fg/Â3O}™ïáäéstºÝ¶°ÎfSÆÃC´6lÝšS;ïºû>nuû-ÜòÜÓO°¼¼(ªbŽ«ßqç9®^ÝÎ]:˜—㦈^Ž‹ÇÅŸÇ!n†ŸÝœ¿_vÞ/_EéxlRœ=†g|êC¿Îã_üÔSž}üÓ<ü†·“uzÜóð[xüsš;qË<ö½5Ýñ'µ{ ·ñwöø‚,\ K«'Ž]°ÇzÝAúw„ø0I;‚d%iŽŽÙŒôÁsw½ª-ºÍÇÑþ¿ùžŸdçÖóó;iY›>õÊð×úñ=ßûýüÜ{þiš2+
+>ø÷ñ=ï~eeÜë¾þ-ÜsÿÃ<ýäãœ9{î?zñ}î©Çøâ#Ÿâ¿ñ+\~ú±vQÀ]÷=ÌÛ¾óxÓ[ßÁ拶òoø#ïàÝ?ú_òOÿ_™«Ï=3â„&¼UéÐñ&‘8>ñÎ?óRò7¿ûÏñô§?Ø^4¾œ"Ýâ<Ë/³@;Úßæ`û…—.ÖÎ]dm¥pÈZƒW¤©fcµÇ»¾ÿ‡n³së
+Û[·±Õ”Áò2w?ðu/Á5ÿå?ù †·I
+¬R<)IòÒÑ75!¦>Í:/+4©ÐÊ€·ˆzù0ëæ]FðQ~ù–c2žqp0¡¬êcÝs#ƒqA§ó9@‹¢$5êØÍãëòE¬0æ½ú-ß:§ÈýòÏróꉵ£4(ƒ_(>Îù`ú^ÍIʳº< ]9ƒY>Þ_WLjôùkáöob÷BÚŠÕ ‰è(ñZ0îN2ôêiö†s,tyu½‘‚…~¯ëEƒ%ˆÖ:,«µ®¾ðÜ|9w÷ý\¸xoìlŸ deY¶L”“g·‚?®]y£
+Ø)[מi%ðÎ
+Ûyë*ÔÑUìÑÎ1(dÔÙB4ÙêÒõx•bn`‡Û$+çðÓy¡vå8â‹ÁÛWÕ%¦38Öí¢’¬G1›p´¿ËÒê:˫묬s¸·»@ /BˆW‡ÕS8<Ø¡68çع}“b6%Ë;\¸x/w4øùgƒ·o<nߺÎÉÓç¸ã®ûètúíׄéÆ@}ÀÎgÛ§xជ¹ôܳx_A=BÜÑÞdx'ÎÞ7‡¶.}%Û/¾Ûº:[¶L¦Æx]D[vI=õ’r´·Ëc~‡ßðv–V7yèõoã±G?87[_¤…Fü×ã1Z±}Æ/ZÎ-úYßóЛu«˜ªñøÖ¢Íeœ_Ó¯ûú7³y"pºé_þ$;W¿À³ÿòi¯E¢©^ŽuÕ~³Ñä\ªWBDyô3_sœ[Rzýìg¸qãÚWýúï|÷Ÿ@D"…íÿÜÇ'>ò~~êþ=~øßÄ_úwð«?û/Bñî¹ÿ!~ìÇÿ;~ú·>É?úù÷ò]?ü£_³ee·¿ÄŸÿoþ-*¬DÑKÝD‘jˆì:à =òÉ—}ŒwÿÕ¿ËŸû{?Ã[~àÿÁ׿ãÏð]?ôã|÷Ÿýo^†Þ5æÒãŸADxâ{)Ëä;”ów¿:X²
+VOð?ðW_òu×.}ù%l€“gïb0XCS£\Á½ŽùÏÿ.ù˾(%Aåçë—ÅͺkŠéˆÑxú
+WÎ1VìWÝúÍÊŠñ¸x †ì]LˆFØ¢4ã‰ãégosíÆû‡S&ûG/ÚñÛBOTz53ÈB…?yîÎ0Êèo2ªªäðÆeÖú)ßøîÿìس6e¡§îâ&؃«Ø½ë¸Ã-ª›O…ä‹c˜·…º ËsÒd›wbVÏÇÉ#wõò3íç~ý7„ƒ-º|‰
+×›hCw°ÄŸúËÿ?ô—þ+V6N!:A™¥
+W_¸Šæ÷°¼²ñþË$F‡=‡®Å¯9yê,.ÆsO~ ±#”Ÿ¡’”+—oŸË«^ûf2¢|°D_ƒÎÃS³^ÿ
+sçÄçž}&€›/Æ ¼Èï`±¼dÅ aJRÕ)÷ñ|úÿÚþõ[þèKL5ŸÂÎßý0çïXkg°Ö~~çæ¥PL#,°²v"NÀsYâýºoš+þž{â¤s†&WÚÌ·Pì77çSì7¼õqöâÃlž¾ƒh[¾jx=ÒU|~¯8I",GëKì_i ü¶¯Ážà»ßý}üì¿ùé9 þ÷ñ#æÏÿ~Kw>úÁ÷1úG_3µìãyŸüèøÄG?Àxx®õYÀýîyàU¼ã»ÿßôöwp2nÿÏ~Üÿº·pâìyvn]k±Â$J&Ywú|å3áÆ•Ëœ¹pñ%qÏkÞÄ=¯ùê¾_üÔoQW3DO<ú»|Ý7¼ƒÍSw,tÁ=¾ÿ/þ¶n\¢œÙ<sW«j;ˆ›—yü‘ßÅ’PÌ&dy÷XýgÿêOr¸›¥•M–W7_ùý‚ñ»Ÿ½ôïLŽÊV%T³Cöwo3X=õ²Óë/3›Œ°qÁ$_åûáa6;.꥓„îÁÖŒFCvö'lïŒ8<‚êYÁþVñÕ÷|ñïÝš7oýŽwñ³ÿðo!u‰/gÔ³1oÿã?ÀŸø+ëe°”•Ÿ
+ðç¾vøâܹóܼyï=?÷³?óUðp<$F£#þÑßÿ;ü¿â'_öëFÃ#>þ‘÷󉼟O|ôýÇNOA¸÷þ‡øöïø.¾ñßñ²kÿW>ÖNc÷ö€1E6ª;ï`VÎà÷¯ò³?ù7ø/~ò_Ñéöþ@ÿ¹ß{¿û?ÃJ¯ƒÇ3›ü‡_üŸøÁ¿ü÷^RdOœ¹ëå¹´³ ¿ûËÿKLö*ùüÇ~·|ûûš¥•u–VÖjS¤MÕµ}YB')¤k¸¢¢°Cü+OwÝs7O>þ8¾r_ýû!/5@‰é*$(®?w›·v±•EiA‰fVVŒ¨LxV…ÍâO<<ö{b:Òé
+xðõoá/üõŸàò¼Ûçáo~«§Âa=‘GáÌ]¯y3/|é“$Kó%M²r2`¿Åq³Ð¡3²@J–7IÏ܇t—Qi;Ý—¾Zk\dç|þSáuß°êþ¿ÿ8~ð7øÊ#Ÿ ¶Žsîä-ïøþà+Ü~þiýíMvî4Gú«Ï>
+üà¡ü<ªÜ–ž9^†‡;³Yž·,›§ûýµtº\5Â$9ù?Ï=¿‰,ïòðÞÎòÚi>÷ñ_§¨!œåáW½Š»˜ó¨?ò›ÿ©G¡¯”…r¢Òàz‹ªÈœø%Ç +J–ÀÎb¼Q_yâsn©\ozÛòdÄ‚åe:Mqø̉»|§/²qú"ß÷ûøâ§~“£½àwýú·ñàëçPàGëÿ€t)L]/mÏçSY¤Á<ûôSü»ûóü±w½»õð8~¯^l1èoøV8:<ཿókܸr¯{àâ%ž·y%JÆSO>ñ5ÛSB&¿çßü4ˆpãæu~îgÿ?ü§ÿÜË~íÿñÏÿQX*
+þí_f÷æóüé¿ñ“¬.xuìߺÆoýÔOðø'—3÷<Ä¥/~*°ØºË¤'î¤(
+®>÷4"žK1Ù»M.I"hÑøºDt¤°\{ö Ð&,÷¬EKôŠˆ2\Qšë/<¶fûêsT·ŸÁ×%¾*ð®æwþÙÇÕ/šoüþ¿ÈòÆñkçho›Ïô½<úÑÿ€¬œ!ét1Y?Ú0ZðÅG>ÎÙówžçŸ{
+“¯à]TÑ?Å—ÿY–S[Ï£Ÿz?‰I(Ë‚é¨f°bH´EIÍÞοð¿ýoú–?Î]~ýK&²çžø,ùíÃÑÁ>’A=å(¦£èp‡{×ÁWHÚ‡òñ¶µK/ŠId¿\Ü,J}gÈl«eP|æC¿Ä›äÁŸõÅ01Ýxþ±ù”|¸Ý.{›ÅíÞíçùåŸúq^ó
+ïâÕoy×KžÿõË_áÓüE®_úJsz™gxÏöÖíc° YžógÿÂN–糿ûkÿ+_úìûH‰RæØ1ëŒû^ÿÇxÛßÊù;Â=øæoz+ÿþ=ŸAv1iðÆh1×tMþîïz7ûoÿݯ¹x½óßÊ×"K@µ¬éÀñ€¶Š¼I‘smä$.>´Dû»ï½Ÿïxç÷ñÍßú‡_t®_»ÊG?ü~ÿò)‹àý«•àf#ê[Ï õ¬í„!éô¯¸ž¡|ˆL×ñgÕžaéæÖΡ҄ôÔɘ)åñ6lêW+ƒœƒ£ »‡Ó˜nØ•å%òTØß; ´>ÈU¤‰¾háá½'1š^'eu¹K¢£É“vIº'lUñÓˆòlïÙ=œ µF)XZÞd<<žÈïZîel¬ö0‰¦®j&EÍtV3.ÎZ½>ÝŽGK"•^F+'<ú…KÔÖ¡µbiíy>àh¸ÏÒò:ã£}Ž¶‘äKÎœ^åÊÕ]Ž†Óà+!ÒZdÖŽE_Ž•LØHñ#uˆ°Ò)®œâPÔf.,>–ÃaåäyVOœc÷ö5†[WѲÀî÷Žló"ù‰‹ˆI“àgcìösT‡[X8݉€w:é#IF~ñõH„ZÞtÜœŠÒˆ(êñv¸ƒ›ñ¶ÄUE¤( * ²¤]TÚ!ïX;sZkvnß`2›¡•iKIĘyCˆDW!Ÿ½—q!éZ|·“ ‚ð5£ñ”ÃÎ)œ¼ÃúJ—\W¡›•nà7×c<Š;ßDš÷ ØáúOã\ȵC’P¼ªIÀ6]•Ã<£OæFmžÄY`
+ïÊ’
+\£pí7oKƒûwÏ9ûaZÔ!Ú¨hÌ>‡³š$ïæýè/Ÿ
+Ò¯]ú
+Þ<QEyº!bjž_ÇÆGá
+o|oý¶à5ü;¿ñ‹|ñc¿ˆKJ×0v¼G‰F²uH—øKõ¿eyy€ÿé¿ýAD÷Ðý;âÒ»xeØ{Ïg?ûé?P{ûý~îgÿe{aICÉh7Š
+Þ·Ý®0W“ÝûÀC¼ë{~·|óÛ8yêÌzÑN&|é‹Ÿçc~?7o\o;\i8§"˜îúüÔן@\Õo‚T“
+IþE¼X%(•DÛC™C1¾¿D®d)9"I
+'LJK7õt“ âs^ÀC×nR¼°{ýÉ@GÓ$ß@Õ¨Æ`G¡à‹B™oËæK|~:‡¼®Açx7
+b<1{ÕX(ÓÞ7ªy-Õn *ß¼¯N
+–z9‰ÑR„ qikËèp›ÑáV|,iUíÄ_ þ^y ]lG4&ì
+ØññìñÇ´Ï7oÞ੧žäþûøš
+Úw}÷÷òó?ûÓm7+ñUkü †¢D¸ïÁ‡ùcïú>¾ñüQNý'ètžyêI>ý{糿÷ÉØu«yš«ò{8¥ãÏa–ÕÓ¸ƒ›q'Þ‹±ŒÒt’X¼(jGU(ÎRŽ§t–ô»)ýN†µŽ6Š45môµ
+¥˜Gå,rdXà|øyBÓn9}ö"ÊOÑŒè¤ Î{ºyÆѸ IO¯ëàRµ½?a:
+pb„SŒ†;Ïm0<ûü>:É@ÝÁJ0
+×Ò.N/øÒZ’D£µ¦ß_F™„ª®™LF!zhƒ¬®ÑM
+™*ƒ
+1n²GµÆG¸jŠ2 Z<ª¿ŽYÚDÒ>*Ë·6nÜeñÆoÅÒR¼œ÷xQè$8²É1Øз·—F¦
+çK„-m9½€x‹˜>ø:À
+.q©§%³ÊH…6Á IT˜6}v¡Š¬{Ø&
+žË.ëhÒ"ÑSWÄcŒ!C]‡0MQzž{á^¹ÖÒ9‡u>@ŠñŽ·1C±¶ç@—ÛÁgÄ,‡®6æÍ1Eh‰žøÒçyÃßÂæÉ3œ8s'ÿåOüÏ|åÓܾy¹å¢#°´ºÉw¿Šå©ó§>ð+m/*Æ©I‘[ †6çÑG?ÃüÈŸýšÝ[ßþíüü{~&Ž±˜)X,ñ'èOóÎï|÷²¢ðùG?ç>ñQ¾ü…Ï#Z¡br3öóðH3‹j;c1VZ!yé-ãë ZÅ9vUN„4Ú 4ãbÞódZè'‚u5™÷$å”’exoäI¸˜ËJ·ÃPôó«K9ÃñŒIQÓø ÚzÆôh:£¹/ÏöSl®tXäíMÜÈ|Óؽ¯/åô:)&1L&%Ú‚ò.¦µ&&û-”˜°ÐªjÖ–:q*P3Ëó7oQ×`Ÿee]cë
+¼bg$Ød‰ówÝËå§çÖµKhc¨Oƒ€áO™?{çCþÛt2a:¾®ªQ#i`Ñ8[S–³
+lü~áy{g1IŽépÃ[ÈÎ%T7?qzïéÚ]dgîGuWÂkÞzѪpe9åöUêÛÏ!åížì¬œCu—ÐY/`§ï€Ò-®{Œ¼itšHùQ‰Ñ˜4‹Žb2Wx x["ÕQˆAAìOÍÁpJaÖOßKÚàªiˆÒ9â\ÞSí]èEÄãê]¼žá•à´²\§ÁU¸hÑêàÐkÁ£ñâQâp®@pt´E”nµ6®¡tŽ¨)¶Â=—tê8í5Siœ4½›/ê#übRi~‰‡Öœ{L+i×:B5Íë-ç<ZÚ9ð3üì>÷ »a2qMk
+´RX¹‰_‹G‰ÇH8eqžLÛÀw´ç-Éú½».âª*¸¦9OmƒËÙdZáÅÑILj8<špmkyŠáŠ÷þ¥®e¡´sžA7ãÌFŸ¬»Œ·u¤ù8D‡Îb6+˜Xaii㦔ŌÒyö§8ëY_[¡—*`Í
+jz¨pL,–[3Öú)׶ÝÁ%+Lg5yža|/v™˜³Á¤Å–loïqíò•VM·ø‘Õ2b¼óXç©‹aÀϵí˜î òYôúKœ?s–Õ¥™6¡+³5Åõ'q‡·ƒ1Ï‚Ul…é-ÌQ¯^?“.Ÿ@‹Çm
+U,HÚ¤¤›wžº•÷ÂõBẌó`8KqãÜîUÜô•TôÔ=èÁ’õc«êÚ"ÑÔ,°ŽÚì²E//q‚ƒîuã‚ÈÅ…©
+˜³søbªƒÈ‰ƒù¸4ÌJau¹ƒÖ_ÂÄÔ9ÝÊ*\9„b'`ÖRÛ¯—Â󨧮…§Sà
+‹d—T¢ðÎâ“HªC¼+燬JC’†øvª‚E¡A)TÒEÊ=´ ·*¶˜û#Iì˜å˜·Ó
+7ô°Öù³‚wΰfŠhÒ(\„úBTkc‹@𺗯»áõ©&øzˆ«Ç1É+'¸ç¡7qîâCdþqj%°uãy®^~œçžx$ÖÕÖ$8¾R$€Ä?ÿâ/ü*÷ßÿà×\
+ÝÒòƒ8•²xH¯Ûe8±{óÆhÐýxÑ;®_~†í=$Fˆ7:{ݾ?kk¬sX;¿¤]]·P`D?]¯‰1llžàäƃ4
+ò‹¯#9q'ª»Þ£Xx‹ª&IL+u¶™öE+Y8Pç
+•O˜·Éü¥ÀcB:&„PÚª•ÔF†C‡E]= ØÖ&†HSBpó¥wœFÂtš"”Š
+Êñfäŷ׌jÆùæØrsß=ÇÛt¼¾É„›gÃ9çç…9&.>ŽóÍÙ'á`¡y¯˜çºy¿°œ¿{mHƒä‚…}’ÖvÐáZOŒz%!†oé?|èCøào}ë·óK?ÿ3ˆÀ½÷?ø‡Z|_¸ôïýÍ_âó|ŠiEè R]šn¶Q²)‹ðÂß7ŸÓ:º•jéO/þzq)^|(ñ"ÐZ££Í¥nøËâQa§¸3QKPNokêm²Õ%ÒN'8º
+ÅÄ´×b£¼ò>‰þA.ˆP”‰Vóef+¢PÝ.’¦ !`ÄR&Æû8m‘$GL—®@±¤Ý*ƒñNpyó
+ÅÛCTšá’M|’X§
+Ô3IÖÎ?µ!>ʬÔkaïNÒЋ á”ÔxIàu໋”˜xXÄfÀ$!D<J¥± ûèø6‡ÎŒQ‘ZŠÈÃÄ/xF³æ¦
+ëC²Ž†6¸Ó¹…âñvkd…Šö©Š0I4$RÑ¡ðâÍ/bñÍû×t×j¡;ŸÇä´µ(NØÆÂè
+òàs*ºÅĘÝÀMoE߃PA¢C§çªÅøè»ë‘$ÜXF‡‚·²´D/Ïn'3Çáð›·öHÓRíšûE)¡ŠŠ¬ÓeyuƒáÁåä4Ñà’ÆÁÑ*ð€EãµÝ²¯HÒ”ŽRì<O"I’Hgòg¥]ÆKçH’åÖMt’²tò’£-T9D)7
+Qí=Ý{Þ‚ÎûÈá
+ÒÕS¡óTá“P\šú¹Gñ>ºž’yüž×“¬žŽ]Çëä´`Œ‰ÝR¸&|Üœ{ŒŽ&EE/Ï¢ ‘;ÆÑÑÍôz¡üXIUX4y‡ÔÕ[…°ØÁ…O»x) á•B’4wÉÀïWn¡³
+\–¡ìëÁÖS¨n‘h‡K>N$"5$9.ßÀÏÀNpÎôƒu#%>]BÄàf»`zÁX+ð†ÆX:›Pî¡ÄÞ?¾‚D<šù~%€¡S½pɨØ]ÒúTˆÞ6V¦Ýt¥Åí©Gi·Á‘ObámY$€•ÈHçDèv½DÃA/tÃ4ÄZ?wï#BgJâ²-6v&NyÆ„&OëwÀ/&¿Å?h¾÷¾9{æ<·n]g°ô/Ãíñ/?ÊÇ>ð›|üƒ¿Gô0z‡ÔÃl7K¸®ÒÍó1‚;¼*nU3èøâH(ÎF+ˆ§SXÐøA‹
+¾±®€$Aœ
+]®
+xŽÑKÖ*ÜnZƒ!lCÆ] vyºe\`.¸Ý]Ê+WèÞw7v:³‡õ(6ËÞy’4ôÏR¿Ëd2ãöîˆ$í°¹Ú%Ñ&PË¢ÛóH,ÜŒ¾Ü|ý‹øt£Õí/Ú>Ò¹Ïêá–=Òš”
+)ÑâÂòÆVs—(#xI˜Ì&¤IB’ftº9§NždoÛ[»ÜÞ:ÄZGššÈQ
+Þ¸:,Å|è:Œ†éô(Bê‚¥þ€£zëýå
+kÜzáÙ€¯«ÐUi¥‘é>¦Ú¥¦B¥)àÉ|€gT'gõä}(ºo^¢V)F9ÌÑ-zvHê
+Œ«5â*÷~=;^CuûŠkáÒ.ƒsèj„î¯Q<ó{¸¾Ä¬td®¦÷à[è\x-Ò_{Z4…6rá]Kp:&tmq`ï*ºªBÆÌòÉÖ1-ðJâ(g‡C6Ö×c@…ƒOêI8 Í€Éh‹ÙزÔ/Èím|̽ñ~yŽ“È(©K¼âl¯¶pIO
+õ¯†©¬<ÂkÁŠ
+œw›â(P’CÿΈ-Q°Cœê#0=Tç$ÞA÷QnŠ«\KÃ1Y'ÂÁ¤]§D'˜z„(ÙH¡@ê¨BÕŠ–Û;ÇZÁ6¯cáum0€‹)J…kÂ)…XÜç\øZ‹íÿÁ¹ØÀøàÞ ÑÇ×;âBUæpD{bJ+Á—ˆÿ6
+ Ñ5"á×—êŸå˜ƒ|sÅ|èƒïçmoÿ¶¯¹Xž9w–<÷Ì“ÿ—ŠîöÖ
+ýÔ‡yï¿ÿv·oÇ·ˆ¯È|SÚÉ©ööðE,ƒ 4 Û¢ÝFÆB+*t»²ðb-vÊJiüø(v¼v;‹Ë;iãt´9ÒâZB\HZ&UHmàºKÔã#ìÍØnJváŽèxêº 1œb}¹‹÷0š §7û$‰¡ÓËñUݪ¡aIS«e”+_ at w
+ê#ÄŽñ½»!?ÓJu%f7oµJº¸r¦ÞÛ…Oš|¸Ê•‡´¶ˆñ9Þt¸~뢬ÙÜXG×»œ;™sí… ;ÛGxçI“$⨠Úh\âѵišâœ¥FãÊål%ËŠ¼º>“¦ÃýHû(¡Ó€-©ön’t-ÒPW£ªÆ:OG qµ{‰¥YAMsòý£k$Û¤&ÿUl˜¼GgõT ü¼ˆÞ¢ÚäôèÙ”êÉQ_}
+)‡ôu—þkþÝ;_™Ã» JÚÞ†hæ<PN!ëàUÒ.TílŠ$®ª±·žÀV%vï*eÿ4º·ŠÌŽH‹œ«IWNÐ=w©i.+¨Â
+Ÿ
+(F·Ï ¶žÑ¤`°~'dz¬
+^¾*˜ü{)ƒQOvTGØj„EЩƻVj|ÚÁÙå
+µµ ïjÎ…¼7د¢;à¼IAl¤Hä’æ]°ÖôU Iù¾
+•h´ØÐ 'º…ñt{oGïvWÛÐ Z²Ukc:g•xœSx\ Ø®µIÐ9Cí3œ«az_ìck‹$/Î⽄É(ò¯£_>ÚÞÄŽ¸_´fsCóäõ&îØýª—‰¥÷¯`¡ýÈ£ŸýàÁÒ*¢S¾ø¥/qëæ
+Nþƒ)Ûù½ðñý6Ÿûì§ÂÖTÚäUôè”H¢—øÆ×çy°ñ+FøjŠJÓ˜w¦Z®¯ŽÅ¶´Ž§T„ˆ'•(O*G•Ä¾¨4± ÇÓ9ÜÄä:æÍE'|…Ý^ìªUÖÅzmQ\½BšuÈÎÆ3êªÆZK¿“GªŒ§vžåâàpʤJ8¹~Ž,©±²‡B¨j”R³±~ŠÜT8ï9‘'=òþ^ç±W-ÐlˆU¢°îm+&R}¢¢ª¹žÌ®žM»ÏÃ&H7¹ãÜiŠÑm¤¼ÊöÞÏ\ßb{÷ˆn“¤8W1›^*¾&¨Î5Iª,/‘d]¦Ó)G{»hÖÕ(I³œ4ï2Q—3:Ý.®.Û›Í:‹u¡#ìæg3F…[1užÁÒ*'OœdÐYa)_„bvТI´Gª‘Ÿ{ˆ¤»ŒO’»_Ouûi¸ô)ly„ß½‰Ø)©IY~ý·cNß3Ï{‹)
+„¨0
+Çí¿ËRÊç?tW¨‡»¸Ù¤]òû¾…ª8$?ó
+±%®ØÇ9AÒ5¤ál´zù*^åèjˆ“N¤²ÕaaŒ„ NåBÊru¥½‹h:Cê
+l2
+M´3Ì]JÎÆ(©¦ÇFº9‹+À
+å<¶?“é¬Põ_ôÞcëŸpÅ6BŠGáʼ-ð³¼
+"êiÄ•%ÂA¡è|C[ ²n‰JkŽ4Ó·ÚĆOIÛ¿l"†i”(üeÉ·oߎNáŸýÓÀOüðûw»·oò»ÿþxôÓa÷`*Cç+1$³a[”=ÄGöQÌ%†JH:9¶* ®a¼‹túˆ1Ë4™s~ãfRŤHƒÓu-`bצ”à;K¨qãmT5k±c£(¯#¬T N©È†ðJƒµX‰òhÌöQ¶mpÓ‚âùçH; é‰8çISÑ´®:ï„“k=&è,m`ì.Æê _Ð5JçÜ:˜¢Ô.ÙÆ€4àê1KÝ
+3¸/á½iã½ÐXt4°q%ÆÊ„B8jÁlÐqA$±óÖ¼®‘4%ËRf~Ÿ±5\¿¾ËÖö1 gÎÞIÚés¸»ÅN}‘z¡D‘¤U]1<< Ë+Ë“ õlâ|Òœåå5úK«Üxþ´+è
+VI³»·®áœÃkOá=ëY'ØÚ‘hÁô7I6ÎaÒéés,¯¬RŒGW¾„Ìö< ¸}1!»ð½»Þˆî@<‰ÐÒò ºç˜=ö~ìá-¤‘ˆbùëßEvæèÉàBÊ2qaÓäcÏ}pg—?ꓸH½ó‰ö“ülLýüg0ýá_¥IÀt+‹-&òœléÞY’nŠñ£À÷5Kˆ˜“Q複¨yº
+õ[`’êŽðË}Tï$N@æ|UîãÊ=¬£±XQâR ºX'Má5ʸj‚S‚Ê×Ãx?ÛÅ+‹gŠsŒ
+,ÁS[s“°#Á"¾Žâ&(}J¦J´N ˆÒÝ€RSš†ýF”dKh„Ò4‰6 þƒKκkLJ¢l´`½àó
+$ÍâýäÐ"X£pÉÙHt˜lçk\÷4¢ƒ]¬?zé{Þ«6ùµ†=óÞŠhÃaŽ½žwÁ»bÕ+{A¼~êé'¾jàfóqëÖ
+ž{öéù½O~œŸø›¿ö_ÿmzý—Æ}üÃÿ¿ïßñä—
+¸ˆé¢ÓÁ‚-vaQë.¤¢ÄÆÏÏó–¤×Ù4PfCdºÊO/¼™ªýÚFÁÔBzÎ|0*ò…U쌕Bož¸ñänÿZ íãÔsÑx(Ê™µ8¼Sá&p‘š¦=xW¢ñX0¢‹&O=…ÖŠÞÉøiPu©<Gʺi´ª«©…ú&â+|’ F³}sÌÖÁˆÕõ3œ\ÉèÊ>RŽ©ëšn¦H–Öqi7àÁbÂÒ-ÊU÷v÷Ȳ=AgšíÝ‚$Õ¬ôºÔÑË"Ѐª ¥¡&ÒY†l”EÒug“G?ö9*òÞ
+"ï
+\=C¼%éo‚šÝ
+K¾<w!]G¹:}N©¥D1Fùi`˜$œ«qÅ8PÅ"nX7X”Xœ/ñXl5Á»âÅKi…s3Œ¼Ig™L
+úKkÆàj”6hfy£æ\z¥@º«7AÅB–ÜP—ŽNw¾ÄS&¦rœBëœ#5Iél&;ï±6’0ó¥hT§lmƒ,ZIœ
+,ˆGùôœ‘âûgð£çü2˜ÃÎ51Vm\z¤„Ž)ëÞlqóò&/ÿñž÷ük~ìÇþÊï[€ÿÙ?ù‡sêW,rŸúćùó?ò.¾é›ßΩÓgÝ›<òéRL†èH¿B)T6@ë¤ÝL2÷Ü1Mé"ÔÓ¸tRs*%$ÝÖZ|]ই¨õ³q7?}š-k«hZ†D ŠÄô1FG8ÒGVÖq½.ìt¨w/·no:ŽBº§‚Œ±‘eç"ˆUÔÎ2¶Š%]‡LâíèÉã#uEïÂœZ%ÑÌ[ •s$Ê£¤Œ8½AD8½9`y1èjÒ$bµb1âPz€7t’àuX:×®mY]]Ƥ}dxI,Eí¸±;¦XNŸXiåB2qÀÑ ÎœOn]»Æ§>ñq†Ã1J·®Ä$غæöµg¡×ë±¼v’b:b:Ò_^Ã$ ;[¸º`t¸Ëɳw’%†ý[/„ÄWbÒ+«ë$i†Všþ`@U®2ñÎQ9(<ˆ²ôº]üò¦*c<‘¥šÌ(ÊËÔ·žB×Ó@ú·f°L÷âב-Ÿ¸ôî5Ì`ÝYÁ¤7: ~þ3Èô
+iŠ/§¸ñe¼ê!½³¸$ǯÉÀzjzÔÞ£’M|]#ÅVJ¼Ò()±Þ…-ó™Spˆ˜^ðËÊÆZ¨õ4„rŠ•’bQ*
+M”
+X«®‡håÐÚ`¢zML'ÜZ©(YnºL‡B¢KÂaÁiœ·d&dæ9ïcGÖ{¼ªI´ÇaæP‹Ì kZ©9/ßÅ(àŠ¸¯B£Àtq^ƒ,L:jaq»ašý“´5DâÄ./kÈ.¯\„ÿùOýcÞøƯço|eéÝOþ½¿É'?ñáÖ»€ØQˆóLÇ#>ôþ߬Š'
+\,€¢;hm(VÑÆ Mpè€4é
+0¯D~Q9º·†¬·K&ݘªË¼‹¢}a”pLŠlT8)IpQ¦Û`:igØþ¡ZQ‘bN^m‚Ìѹ(»õ(©ñJè©VA*‚S9öÃ#&}ã,½û:¸b.rQä¢ÈÛdŽ¸ðÑ
+WÕôºƒD;Ëþ Æ-.Õ†ä#~µ“¤]¤ÜÅ×#D ›«}ŽŠ0JšÞZ»Øè‚æD#ý;•à“’vxöñ¯ðé}ŒñxL–'™°
+Ûn‡#æÛïŸb<<ÄÙŠÉÑnë`U”cÆG»áõO—‡_EØT;Çht at 9aËy–ÒÈlF-– ›çïfeãf³)©1di‚ržúÚ%˜ì¦)*vö»Þ@~ên"ƒY=N2ªvÏ|·UNèÜýòõsؾ€9û
+•–Mb´ncò.b2”1h£©nA5"Y¿ƒdõ,Ô5Ò_¡<¼ÔlõUWA~+B²´N²q‘ôô=áp·cT¤¥ùzÂ}½+I|%ó®Å 56ZÁZD‚-¨ªÓEÒÕ0áhƒÔ®"ùJðú-ç~¾²`$:P2©0ÝÀ¬ñ$ˈÊ@Ê›ò¡Ä9‹1j.p¢Æt–1ÝS(7AãÃ)B€Zü×4£{œb½¢rèÕIÖ_‹ô/ø¤¢}îHöÙ**„²ç3ÅfNæÞÌmsÆ|GTn£fÛAÅf4ª•¯G{øÙnufŽï6jÜVW ¢ïIÚҿ?¼ŽÝÒ>þùOýcþ·ÿõŸ #¦j´´37”_Ã
+î?JLE:F2hE]Îpõ$È=M/Ø
+e9¥Þy!tÉø(i
+‹Àæö¨Ø
++<ÓÚSÔÐK³Âbw·ÐZ‘؈”6IÃ!ÖË›«=z”D¶²ÜØ2-{ƒ(}µõŒÙxáÑ«fLGñõ‰J8èâAƒ…Þi<ÝÓ˜Î
+™Œ1¾
+¦Áév2YY?Igi‰jºËx8‰®W&t!F‡%‡Ñ~—&IZ•T“CºýZ+ªÙ”$Mé-¯†DU°·s«r¼wTåˆn§O’fŒvÈò.ƒ•uÊrÕ„e
+¨g‡˜î
+ìî%tÞ$~GçŽ×’o\@‰Ã4Ï·‘$RTÏ|{íK!•øÔ=Ì.žêÚdyÆA »6¡3ÛAÕQ8aL’…›+NöàÅ•/ z«¨þ&f°F}pƒjÿéé{±ã#TÞ£¼òE¼±®'~҇ŇdaÝé¢ó<(Ì\|Fô\ÆòÕ;„©CÒ%ÄMP„CE"~ê}ŒÔuŠôî”2 ._ì…%_S°0K‘“wEà~7þ
+J…l³t)ù øÁUìfQ¡ÊNÂýÖÛê$0’N˜*ÝÚ(–sF«Æ’Š°´+x”N‘ÎiÄäw5î褷M™Z=’tC÷®;øÙ6â
+Ð*µžZN¼¢TâB즖Y"’öÃôè-ªÞE|~3÷ž ]x4Ï–PÙ’WU!¯P€9m½$¬nn–Ü,ÈN3çï5Â‡à‘›uº-oN)ZtA ò~¸øµˆ1hcÚâÛ:™)Aù±“–¢¢â¨áœÅ'K-G8\œêXäQHàˆp…w¸á.n÷(GH] ¶F')ùê©6f»aGᢺg)¯|1`¼Þ#Ê#Y‡dýð5vxWÔ·žŠö”ÑtÛ‘Îcñ˜6%RΧX…DÊÛ[Ô£#òõ
+Èsæ³²âÄæ
+Ƙ(-÷(L\l1a2< ®¬-É:=úýeœwœ8}ŽÕåtWñÖQ_ÿÊK8èê‚üükèœ(6¡8é$¥xâ#TÏ|‚êÚc0ÚAÙ2LN‡;øÝëèÄlÜI¦Ëw¿Ž<ïP^û2ù©{ÑÝen>ó9º+'¨®?Fut;tZÊ òΕA€Ò_Ã,Ÿ¢>؆$ÁÍFLj‹Is|1 °PÖÃW3|]„Øø•“(“á]…Âé"ÉJôÑMFÚ ‹ ;BIðXÝEL|"‚Ü$À˜Þ\Öd9¤<ãÃRš"*Wc½Ý
+ýš¤mئw5’¯ãIW‚³¨¤ ˆÆÔØ»yò2ˆ›!I A“¦"¡D¤Æ¸Z¢Èª)¸j¾“‘茦Z¿_KKÓÁŸGÍžgnQ¤KHºÒ™‹ ºpïêð8ÙÉ°0["7uM‰@u“+?±qSv‚vS¨¶;‹“¿j}Žu|ÑÑ.[
+¬&¥ð~Ó¢_)¹Éžz™}œ,ü¦õñÌOM‘c‘DÞ[êr
+ˆ 8•Ž”/Â’vÐ*$`‚•Ò1í4n—CâŠÓõa㳦Í!‹É‹?¤o¬àÈ&Ñý¬‰+qAîëf‡L׊Õõ(#Ô:ÁÙºuLRѨYë@}ªo=6ÇÞc´
+^¶˜WŽQ@½ýlü^18Ð;¤ñ)Ň1ÒK+™RxD˜¢±h/øªdzé2õÎýûîå¾;/’¤9Z| ™.jùN&û/0«vÃã%šØÌ-ý‚X;Ïä‹N#ˆ°Œî£Ó;»Û(¥XZê6(ÑÓçÛž
+QÝSŸ¢oŸç¾;7óà=nìN¸}˜SÖž½›WƒI|’`ë
+[Átx€Ò
+_U`Êé„Þ`ë,GÛ$&¡ªªÐAGõ‘kóÎt41^ÁpÛÑ[^cÿp—B÷ÈÏÞKqý9êO#u…Õ”då4ù‰‹(“àmnœÌØ¿ÿ)¯~‘òÊ—PÎ… ¥šàfS<ŠD2”·¤ýÜx}ñ!\’1ùÊ{±Ö¡Ê}ñÕX“2{ü#¸$!½ç›ÐK›x•2~ú$ç_ƒë.…tbLux›üÔ}°s«#ç<É@¡—O¢{˨$Á»àõë³åàÅ[îâ”ëQFA] T(iÖÇ1ÙF›è&fKÇûÅEÿhºÞÙN(^ í…fD%AH?¹†d'1é2Ö•’tñ:‹Ùp
+É2Û 7]Òßï]|» ÷ Ã+ƒÊOb4èºByah¡¹ˆD¨yÌYƒ)Înã«!ÞŽ‰^û#ŠÞêàif7H»«0¹†ø²Ý¹b‘gPËà\q¨ÀèÀ[\qˆš>òöbäTÓ°ˆ··
+ÊÛ;Ô7nA//¡ò;Hï$»Ó.ûG$~Ú,æ[ëÃ9oÒ³<ÈéuÓv¡ÑÚœ4>Îõï!ëo’u¨ê€ñîÓÁ©ÍVT¶Ät6ââeŠTÓ–Þ—e +Ë=6–ºt§99Øßf}ã4y·Ït|–Õ¬µ«™Í¦8e¢®ZfóüÅ•qIB¯zÒÌÆCÆã#X°»W©n=UWeR:w¾½~k‹ê‹’Öš´³DyõKøýk(<ù…×Óûºwº{´gëgÑY†Þ¸ƒÙÞutÞÅÑyŽ¶QINrú’3÷£N=@²´&ÃÝ»B]ñåˆrç
+få,ÕþÀ×îâD£´¡®K¼I0ë@'H’†Ñ¿ƒG{S ’Z;‹Ê²àõì›G÷xpíd)læí,îeÀY®Áz„«ðõñÎÎB·î..×¼éâHñv†¯Gà«°¬3i`:Hºg“‰²é#¦º‡rc$.µ6’¨ ŽÐv‚¸1:YÓÀš
+ëAÍ¥È!y£ñ‚ð PÎãœbjl'…eǨj¢ç6m|—©!å!^ø2È»©‘r5y±ÓyG¬æ¡Á¾µAÐí.,Ôù¤Ü0€DI-õ%bGÑ;/)À/•"ûc.X²@ƒ:®(“¹¤¨:—´äcµà¯ Mƒ˜B›Àïl0â&7È÷,ÊŽCŒsÒAw6Â’Ï•(“#É ŒeÊ€Wa;ýo›X׈A‰€Ÿâ§‡mBA³¬+Gxï˜8_$F¹®šQݾD}û9\]„¥€6غÝx”«Azåv÷Ô%’uÐY—ìÎ×aNÞÇðhH.Uˆ%÷„2xIqõ¬ÍÍ3
+J‡•cdÁ:!ñÊÅÍ[Ì®¼€dë¤^+w°»W0Ü¿ŽòÃø|tkVÝv.xÓ®ös’ÔÄ“ÝŠZãâ-TCt}„”·arTÅŠI¢§BuOƪ‹¹$¥ÜÛ§xþyª«—éÔVú9³ñ˜£éŒÉÁm´+g‘4°ÂòKG)/-1ž…i
+gÿ‰zsX*mÂbÉÇ¢íA´¦ë§d‡WpÅ8\o®â0?ÉNz‚ƒñ˜Ýƒ#FÓ)yšÐéä˜4§¾ýÕ•/ÁlLºyžüÁo"Û¼FçÎ2½ÞÂþŸÄvn3šÎ`zH’ÞìŽ×’ž»é,㓉9xÞ‡´a§|9¡Þ¹†+¦8å±å„ôÔ½¸bŠ¯‹®‚ù{1
+Ñ_‚ν«‡ââ
+¼®]ï-J› 7'Æ ¡»uEì:S
+M:Àë_Žð®ŠK'ߪ+.;N–ã{P†nÓ×a
+©+|u€¨,L¦*
+uIƒø@Cyв1DŒ‚á´$OTàýJÀwuÜ_5û#µðgñóæ¡•{ãCßæñ†ð¢½•—˜n¼ÐP6¾Âõ?» åRÂôj¸¦±qro¼TÛ¨©˜h–üjîý Õpón=XÛè4í-E¾ŠåË~Îó)m¹nJ‘eåì"·vÞ¹´GXS¼ÕB·¬ÂRD)‡Öi XµÝsTŒPX¼I‚¤±¼$€*´ÿ¢‚§ª·1á
+²^ÚÄ`/ñ´lù‚Bæk¦ÑG.zw#ÊSÚ»›Lª³B}t„ß¿Š+ÆH1l*˜œa«€_e+Ì÷
+®k1;Õ¾Ÿ
+É“à• Á"$‰a:›1>Øe%Qè$C×;ô8Ì7Ñ¢XÍ3ªÚ0œL¸µ·IRiNqíIìh«–xª³ÌôƳdëgéÜýFT’‘ÞûÍdåæ…Gé¸2t3‡OsÒ;^ä+ØéALÛHÛ„b/‚¬co>Ä
++'QiäôI\QàµFõWðu«K¼µ¸Ñjm
+WŒojˆõ!ÛÎy¡ö;k«5V›`—h«
+$qƒk² £TÝW ‚iMP¡†©uyyãgm£ÖðüUôЖÇR/z/.®¹Ù‘¡H/îCMiS“›|7´DçöPÄŃø2p‰}ìòíc-‘mzKPáª9T+Bô
+×vÓ¥ò¦Ï<ôâ•Y/öƒ…xEX!&äy'>°›oÒeÎÛkŠi³!lü0³Á…ÑC' Mø½1(å;E¹0bþkøŠ ¨ 4 ÕFɇºQã#'/IÓ0nÅy%ÜÛ™±¹¹NÚé2;Úi¬sÃr t+û×±‡·±Ã}|=kìG£¡¶Âœº›dõiw q½µ3ÔÞn
+ÎÇWaDK6/à&‡O’j÷Ø“ué=øGè½êh“Pßze•÷lžýiwÝôõžŠ€§÷òœ
+4§[WÐt˜ä¨Lvqº¶Ó¶ÆÇ@Ì;ή±:È"}ª.V&Gé;;Š¦Cjîô5íaœJQ½;ÁhÜlDu4¦Ü/°eâdÌ€z¼hIñöQ½Dqr¥‡ÏN¯…ר¹r²évâífÃHÜ\üMÒŠ^Z˜%¾E1£—jÖrÓ®.˜öNR
+Îà½cmi@’&Óç++kèÝËØ[Ï‘*x>9Erònʽ˜jF¾vÉzx ;°˜â:ÅöM¤˜Ñ¹óµ!†hùÙéQiFqùsÈÊiP)Î{ªÝ+¨¤ƒ+gT·/ã;Ò;_i;†‚`2êá>N$Æ/ÕÊÕ1Á{@÷ãT2 ^È
+‹Æ‡ö×+Mú«PôbbF€¹â'øªÄ›ä'ñ*Åë.ÝÀ§ka1UáUŠK–@÷ðÕ0¬«.(Ó~
+vº‡d+ødî‹Žï…„…âf!~Š°^õP¾Bk°•Å$ÍXïÛ)ûXLš4ÆQÙNÌÿc1å³ø_ówZñnsô§™'*«Hm(™Íç&TÓÝJk)ÿx»‹Nos“øynÝÜEX
+°_€üËñç™Ló
+þòg±‡7cH©8LÖ¨òÖÎßã}ª«O`–6ét1«ú¯z3I7AÖîÅícG{¤w¼6,––6ë)w® ½*ÄE¢Ü¿X4iÒNÀY•Á›[MÃÁždxkÑýhWB\›â‚E
+^÷&(NŸó%ÁëAØs9>]‚ÙaøÞ¾ÆO®‚áÌ2N<RâªC¤…—ÊñªåÞUHºŒ×ÝP¤´B$9V+h(vŠpäï*ÕÙ@û*ü>í }öÔXI;-¦¹øèÛÛ}¼3ƒådŒÉóó@N"áÃû9ÀÚü¾¹2eqúŠþ(í‚Ÿ¹Ù—4å© eUqiH³Œð¦ñ>^¿Msqœñ"ʃ?¦‹]cÄM–ÚÚ÷ìl“âÓ·ÑîA±nRöhžŸÇ#^GÙnxž¶ŽË2B`^ÚÇ'íëy¢t†÷%NtLÒ÷ÀÚ #3_MX_[£˜2Ú¿M¹¿Ÿö¶nÆ¥€B’¯5U5Ìl(ÇÞÆ"Ò\T67/?pê¢À–;GôÖN³±yž½ÝmÔê9äh‡z÷8GÖYÁö(oQÜ
+üHƪí[×HŲq÷kÃÍ×]ÁÚKˆ$øàBí|ë+kœg=2?¥šµ°3*I/^ ]?ïr¶ßçäÆÆ£Cl?Á~ù)xö£+)³ÕstÏ߇d9åp‹z2¤³q
+WO¨ë»ûS†£ y–Ññf:&Ù8G÷Á·’!¦^¥$¢
+×LÏ®˜Ko›åi}d‰~&ªå|tŒ~ý>¤V4´¹ù‚-Æ9ßæÒÍÓý‚=Á|£„(±Š‡X[üBŠrp—6mÜ7Ŷ1£bAÍGeÕ8²yßú>4¡«Îûùµï£5mtlŠ²ùjÊÿRÆBý•…ñ@æ¼?VŸãÖÕ·Î[ˆ_ó‹/‚uUû˜eæãi±!ͳÂá5a! Ά·1zÜ!uHXðÞ!®ÂQc‹!›«ËÌoPé:Iܳ«|½rm´I¡â·‚œ0*åY§-Æág°Žéõ',& ›w±uëj¤ð„Msm-Ú;¦·.!³aàÇá<R–$Tôîÿfœò…/S^}•¤A‡UÀ~µC‘,:IX’Dé9…Ó›„T2Ž>úÒ¯béþoÆ–Ž”¢®+Ò÷mœÇN+ܬBè‘ôW_}žbç*Ö[®Œ
+Y¢Q‰#UžtãÙ½ßBgýŽ`™¨u{é4‰‹½v:ÄÙ2¸Ðégk¬§Í[´Kzöað–<K9{ò››§Ž§ž~ŒÃ½…Xi€`Ûk)Ð
+¡5B1>ÜdUQZÏ´tèôò&Ýnn~@9›Ñ]Yc´Û'Û~†äs¿Â”^*Áã¨o=ƒÎ2ŠÇþÞ†+
+’õ†P'øçñå^¸ÙfW0ºbíõ÷Q©Æ·þIÌÒ:®¿†«
+ŠkOà“zí\(BeÂF½Ç«[LšºAçy(¶&áUÀ.‹²¢(BZ³ŸL'SF8’DÓͺ݅e½CU#¤
+þ!b=ZBÊ0@*Iãr¹„úùГ‰C•¢’®Ùçà[Ú£RÁü'XW‡´ã§YúâpR·óP`&)jtºŒª‚×ÄÜ祩9®Åt›d‹&é8 0®ýºyþa3I…iW+iqd%óå…=\¼6¥=\<s*œkràš6@$6ŽMo°e/
+ƒÞ·l£EY©`7 ®AÃ9ñ²ð±Má‹1½9œ ZÅZ£ã^´‘l±½ÖÍGcŠè&
+¼ðxÒ˜…Ç›PÙ2(ÓœQm©ÄUøº
+èõïkÊÊÒ[Þ 1 Jë0îîâ•ÂÆ%zù4éæ0$ÉPiŽäK¨Þ
+õþ-¨bôN\
+ôΣzktîÿfúoü²Ó÷Âôˆêʘ=ûªëOD8'ŒA]+™'B? ¯qGÃz.TžýR%ôµeeu“ÎÆ…ÆÛYBœÁ—3†ü;ªKèÞ*é樬‡-G*äÏz‡s–âpåj&µgV;v§ž¬×gíµßN¶|ä’/žÉlJ–¤sçÿ¬C=Ú§¸ò¼
+‹8M²´¤Éæ$ðÑ©ÊhCÒ`ò.'6ƒmèÎöpíØW[ìÂÐp7è¹=aÛxu…³6<¶-Y?}'ý³÷c´!'¬æ†UU2]¥ç‚˜ÇÛ¢ˆXœCò^xœá>å§(o|…ÎÙ¦—@],ÑzB]O‚¬té$ºã‘Îؘ˜ T
+Isê½ëT»W[™€|ué¬ ºË¸é0Bº
+½¶ÚŠÕQ&„jª-Žš,DË»²mnœ‡Yå™–¡“L´jÙ=´[òzt²ò(Hï}Øx[3[Z[ºérÀvµ‚bª!*íC¶†è4¥9V:OšÑˆ¡ì-nîÓb² ‹I2L’#õpî ¬b[4\žÏ‘÷ݸ›§³?ĸ!»¼Ùp÷Ý¢¦¡‰¥÷r|±Æ|·àc÷ºÐ?Æ?K‹é6¶ÞKËoA“6ãEBÄ8|ìœdàüòfslbQ¦×øë=787Æåyk–Î1Å\ÓàK„Â㘅"Ý,ôPÍ))Á"Y
+Ôò¸-‚ÙGº–=ÎƲjs™œ÷LG‡äy—,벿s‹Éè0tÆF‡îO'˜õ³Á:q‘/cs$„óq:Œ#kc¸[îK¼8°7RíÝ ¾ñ4j¶¢À—NPmÍÃ×€Á7þI:w½Ý]&Y=MváÕÔ;W¨¶.‡hðÖY?²(èkXJ-m\Áa e肉…m£WObÖÎ :«˜îã¯|€âÊ—C–Vg ³|D3¼ôy$ïcò:ï¡×ïÄ¥9ÕÁ]±,ešLн5ò³÷Ñ]=i7óN4I’cVPduñI‡êÖ³1³
+J¯6ê-¾v˜w¶‘êJ^'ÔºyÎææI–û]vww(&ã…|`æßÛ˜6ŽŸ{•8‹ÔED/,Τ¬Ÿ»‹Õ“L¦®=õEn]~splv¾“bë&¿ªš§COG¾î5tΞŽðJ|ï“<ˆe|d+GEv¤È½"õþ-Š›Ïâ‹1u9¡žø¬3ˆLm¨Gûaa$
+•eè~/.Š4•Sœ¥ªËÀ„Ð ÛJãÑm˜•ÌL J¬6NÞlÁÏvƒÂ-;³l‘{WAv
+²€I+¸© …èùt-‚ÒzbÓ.©T *–;(?‹MUàô«Î*&é…ÏãPn›2æ4³†
+·Öâœ
+Š®³!j¨ù³u.8™ùQ4‹¶x8ùÅes–-úÚ…[ã.¹ÀÊižé²cܘ·¾¹²âгØ*´8Âq/ye49ξhMuZL’Ðíõ±U1”¹CZ`}AcÔÜ vÂ*K˜›ïˆÊƒÞ|áE; IÓmñY_MžNç ÔÖs°·Åè`‹áÑ>ÖÖñE&?èn0Óy7Îv‘ 4ª3Àwi3©½o±è ši6o-&Ë1ë‘Í‹Árz:a »ðò»ß<ç¸FŽ²J»TÛ—q“àýk«˜¥MìÑ^+n<Öû•gg–s•ƒ®z&ùÔ7/Qï_£xá}î7)¶®´‡s•0Ý¥0¢æ]Tw‰ìî7Q©é¯!˧©ö®
+”¸[‡C–N]$¬!ZϹ–/^Dn¦à™<ý)l17g’sõ¨dRYVS £> WNÍ/[%t{ˈR8[!Õ„“j†msXÇ.±ÙT+Wæx‚kü[m<$ÃÿEiY=yŽÍA—ƒ'>Åðæeʪ`RhICS²up¤y`8‹+:çÏÑ{àLwß=Á±5EYE‰w`ˆwa*³ Xg'C§‚Z¾ƒâÚSRð‚ôVpÅ’Õ]ÓÁUEì/«D¢ZÓk;MgLÇ£ØàTC÷"F¥C`_ˆA¹‚Ä
+»‹zûùlyÒÓ÷‘lÞ¹0úÌ_Üâú¸ñfã$í¢—Oâ‡Û¡k÷0³ÂÍ©ç ¤5wα_ÂÈB×(±”G{Ô£=|]µH’‹ÙiåpÓ]!Y9 Êœy[•}éw±b0ëçñÅz¼OtŽ$ëQ€éôŽ4[R¼oq[{´/GTÃx`U,'jØšyÆãFû¸ÉŠ1_MÇØbÈäp'xØ·õ=j˜Z(mÄð´iŸÃ±è,gCR³¯SÂSWcºÛO G·•#ž\y”‡LEIº0+'H6î 9ÿj’•Ó¸Ù³q†Á7½›dã|@D=?ù)¤2$iÜÀtY
+„®téA¨CFo•÷=Á%®¬B·ëê0^;R(\YÛÄ;
+Ø2¨Û6Yä0,ð'äxW§dîgÑh6ÌWuÿ]›K}ƒ‰ÈBÑlä²€¡4±5‹m~Cˆv"ÔÎAt•¬(«¨•Gê°]t€ØÅÞEûC;¯ê_Å•d=Žô§¬ò\
+{pƒÂe}dz€RÄeU²~ú<ùÝo`$9³g>K}x ï³Ø »µÐ|ºöƒûÏ>
+8²Í;±'î£<ØB–N¡zka5˜
+B£«èvÒ@›;û éÒZ€„¢$4øq³yçB‹áÄPM†X磈F,cg½züø€z÷õîuÆ5J‡;ï}S—̶/£²n:$ÕŠ³èjáÆöëH /¢K6wPsÙ7Jƒƒý½mö{'Ëé•ÞƯ«K\5ko#kéæETw?9 óºï$;{
+ÝI°I5|?½ìÝçÝ<öûjºT•Y¬3øÑÓAYÍb<Ðéò2jy“r—éÖæìCLŸÿ"®‘?Éò œØà˜UÏÂ5L+…õP•u |‰&7>°$h—Xe(‘•ä]ˆŒ÷Îþ¯MP¶Ä'ËØl=²h9Ô8×6ÍR0ê]Òy8X”
+S__ôº@4U€²Lg5IªI²e:?›Zñ‹ü˜¶k¥åõºv°Î…8y·XtÃïç¨Ä8°øø¾Y¾5IH¹% i#î]KòŠÝ¯Îð˯B%ƒ€K«µÔÅŸÁ{@dQˆAüžA3!sÆoüZ-¡ol#^¡–—ýL«´S&çÄxŽËa·9M¬MHÏÍÍ¿ñJ9‰é¡á™ØÀön£Ú±¢
+ž4p„µ¯ò¶;
+¾£pzߪãDg ²v0¿(ÔœÔ?µ„Ê{ Üì_ס“=ufå4Éæ$›w¢óAÀª&Gxg±ÓÑB—xÃÒ³£’¼}Ó\U2{áÌžÿB°1Ü»†íâ&‡øÙQkƬã›0vé$ÅÁ“KŸÃ¸‰c)YÌÈJï#—†¥‹quG;Ôu9q7ôV$£º}™ÙåÏâŠY$óƒ¯+êáõdD¶rª•¿tB¨gŒ^ø2u]PJF§·„Ó*Щ§,¯ŸÁ£¸øò¤Ê³ÜíÐ=÷P0Çé0»òeœÒ¦$ÐÑŽ•nJý.í1ŒÚ×SÅ T_—а
+œÑa±8›±œÀ*3Ìù¯#=uõám\óÞÆÑŽ÷ƒd¼¿^:Aº¾†N}X¸In
+å>b§d±Ñðs©·îF¸jýrqusê…)¦{dëHÖÅlÞ&Á·Cˆ¤Òà*’µµ tˆ²k"ÃÃG¿‘ʆTÈM«CÌ{L
+Y èäôrÌžZÍ€éã“•à™rì[à:Í KqBUÈìR¡“.Ò9%úáscL°oU Š›Us8Fìºwš,`:'QÙJ`(×ÆqqL
+Ù*ì0/¶îX×kã"·áü†%Ý‹	ίmX,"Ž¥~G$]$ß„î¹Ðd4Ÿ×&ð©‹½WÂâbq_øžNk, _“°,,öÅ¢ådA° Ž;®hZpH[0—¡åy·Ç`y[U(£É².ÖVño‚4pQsjœî°vú~ÖOßÅúæI&Ã}ʲ18Wz5m7Á¾ùa|S‹Õ¾H½Þ€ªœ…âëêùKj+ÜÑmìdÈà¡oŬžF%9þ@нeÌòIêÃ[!J¨±äk|)t‚(¡ºõ4bR\5CDQ<÷ã/üÔeXˆ-ob'GغÀz‡Y8Ej§tý”MSs&-$ªÅg£j³µàlêŒ_ø;DðJSmQî\¡Ú¹Êìê)n<‰««`<ÝêÛ¾œQÞbvó²w ÒNÛ»”Ul.·8üâ{ƒd[„Úy:'.àU‚Ý}ÃÒ¢'{èhêÝèè½.ikŠk‡×Ò„åjí`V:–VÖ8qß9}âë««TuÅh|œñU%ËÍö;("‹ª¦§`5“¸$½N=>BeÝàÏPïÝ]ƬßIux”˜%iŸ¬†C¾>DºçCUŽl[#»À7B‡N`T8×Ê~½HðIH–óS_áË}t¿êvðU…d):KÃkŸÎ¥¼qï"ѾµªlÄÎ$YŠ±SÁSC”%Š¥A¼¿:åjL“DçnwLéê™ ¥Y]½4ºÜ
+ªÔlÉ7QÆÄæKÅ”˜&¹&Af[¨z?8Ç嚥nBºv?br¨¶BŠDÚÇ—‡‘ñ3çø·×ªwmlmd?Ø åõÎQ»ö8‹õ‹X[Þ¿´Å>«M´…f;¡Q½sQT2wh£Ü…ò°Z4Xñ¢¨cþ‚.|gñÇXd"/€åe7qó¿i2ÓÚp95g44ŸŸÞ¼¨
+zFèéš¾r#Ë1l˵ʱ9[‘À?o—r
+Û×v6³¸Á•y
+²€g¾èøÊcøÎ
+½qå,ÝN‡3'OÓïöÙÛߣœŒBJ)kØÙ*Üœ¶dmó]-”‡Û8[¡ûᦡ«t_õíøl€;ºF¾nЉLJÁ´ÀPÆxu »:_[ éZà&×EKì÷
+«Fgထï:[ÒtòUÔ`m|È6Á×ãൻ@…’åÕNZtÀ‚Û¢‘i–Óë/8Ë ‘sž.GŒØÎ;²cŒ_Àó£«1`þëKTï:[m!½bn¤t‚š=rS”(-Hg
+•£“:í!¶„ríŠ*akÖÒ¦Qø†‚"søØ û\xó/yT³¬yžŽü\Wîr¬h+Ä•Hï¢Ìœ’füèr0Ÿ:®2ž/欉և<>½°xTŠ¯%–^Ú蜖™° v„ã›ÌÈ”Ääøä(@ÍÈ ðhÜð:Oå‚àAùƸ<¥¶6œÄ2§†øèn$¶æ`—½Ý-.œ;
+¢ÈòMí<Šk-Ô‚ýyƒÛu1jý„%ìpŸÝ§¯·Eºz?Þ…º&Ê„ôƒø‹hªªŒfíñ"ù
+$ɤšq/ÒÊÍAÕà•ÎCï(‹È?ÛAÙ!•¶âˆ šŠvQÈåø³áõ°Ç ‡æzv{ÃFˆÌ=¿7qM5²aZØ¡‰]nY¼A÷Œ`–Â+4zÖS½ý}›½´_h¶]-¸ýq7µ† Døÿ
+à°Ëð×õÓ
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/shane.jpg
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/shane.jpg (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/shane.jpg 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,46 @@
+ÿØÿà
+
+ $.' ",#(7),01444'9=82<.342ÿÛ
+ÿÄ
+%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ
+ÿÄ
+$4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ
+é&µ·žÔ¤Ñ†ï\˜Ón¡˜Ë¢ ¹!¹9ö<Ö´úÔV0ˆK3.Jô
+êè‘Ç"³à2mYcŽ@皆[ö·Gw!÷k†Ç¤ç¥Ù·wmn¯Ø¬`R{T^ñÖ§¥ËµåÄ—6Dà‰–Aê_¹멚îáæ~ç€{
+®PjëxI8j®yÒy]½}©«®Udz×;s9žk/I»itäG|´/^ݪü8flã¥a
+\ŽÃœù‘]4U¶XÉè´V¶2¹À½´‘Œ‘‘íQ¢>Õ~I†Í£œŠ€p+¢–™Þ[ ÈGAOÚ1L4àÙ5èEEhdî.)Èí‡N¢›Ö”UI&¬Âö/Å«Ü@1”Ý# }* îÞàå‰fõ?ÐUzQ\ñÂÓ‹¹£&¬¨"–‘Ž+£C!ÑÈðÈ6Á®“I¾K„pä @éë\¾jHäh]r+žÍy”¤ÑÓ°9éE6Òê;˜Žá†z+ÎpiÙš\äñEoëºL3OhÀ/ñGžŸJÀ¯NHÔâL¢âì‘~”Ç~0(ŒóŠÏÛ'QE.„⤒»‡ãQ¯Þä⮫´q´¯#Om9¸„!ÌìS=iêŒã Š˜¨!ÆOB{R£P ñÖ“«uîî*”çvŠçéQ¹ÍH͹‰5ŽjÛЄ“N¦)àx¤†ÇdÎÖ#>”SM¬€·â*ê¬í°Œž+$;câº?ÄXÜŽy®z@Ö¼h¶–‡L×¼€Ý/£2·5Þd7¡ zvXSG¡ëNÎ+ÖZ™¼Ð =é¹£šmˆvy¦1àÒò=ê9c±«;E¶4µF¡¶Ð‘Á§yÀ94ô¾”F±|¦1ü$Q
+þ'wû*¼Œ‰§¾G’|»Ò
+ͶE:V“‚àÐ÷:/à[¾Öpµ¶&<¶z²Ç
+'é湚“¦dɇT_<N¾ŠZ¢ñ•3½é1Ù-†•`l²+<y¸°eDm’´8zZèš46Ö¬}™Q…tZé˜w[->§-Q´lpKM*Oo\[™Á
+Q8#¸ØŒŒ›sG⺕mŽþP+²Õrv5‹\)£ƒküªiÒ:/ òѳÊ6¥Eú£5‡hK¬‚zRôδèdζGm×:⨠‡îcvè]X¥É¿aúäÚbF_QåIàJ>»ëñ½IªÂ+¥.ú8ð8×ø¯#Š3K†“3|Щfù€ú7b~¡z#Wh£ÑfoN/=GÕéPìÅêŒ
+6©5;èPZqB2j΂"€6š(RŽ4<–puìlÀHs}Çò+Õ\˜×†°¸ZñþŸ7„ñ},.’}¦åhÚf<[#—;ÃòI»Xztîv¿ºCs]å¥GµóFìöí›[¯.û@‚=cÚ|ù¬u‡Ë5_QûCGð¯Áso¸»Z{Ž¥Ä:ŒÌwþ±;™ú1´ßÉiø/WÈÕ2ñåkáˆC`üÕ½þhx4å¯m°ØóG,ª‹Ý3/,³’‰ÀŽOƒßzé]¾ý–¿ƒõ]gÄ—NÔ¢a–!|ã÷‡÷Ü)±±¾ìfsX긵W•MÌÍovrƒÿ
+^r¡Ìê¦De0‚ácËÍ(<xniëµ&Þîg€Ruƒ˜ÕlžeŠ=1ˆ6Qìv+sGŒÿ
+sNà©šN^.+KŸ‹Í5ü/;×ÙgÆn¸§H+_d\I3pç
+ÄÏ)ÚÐZ},K<ceDΣúAuañÆN6j¸ÃÅÁ‘‚¾!µy®UœyKYéev}N‘Š:8RåG‚qubÇìÇi]Á|êû)QöSN3N^Kb<ìŒ×y¨®o+ˆz
+7ò:Ô¶¸=§ÕB=šç7¡¤æ®ÛÃÔ¼)(Ù,<P³º>rEŽÙë«(ýãý¿šÔŽö&»—ýƒàÿ
+ TWúv~î?ð³e'7l%$0ÂZm8dÚºïbû-7éÿ
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/simple.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/simple.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/simple.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,14 @@
+<m:message xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="http://jboss.com/products/seam/mail"
+ xmlns:h="http://java.sun.com/jsf/html">
+
+ <m:from name="Peter" address="peter at example.com" />
+ <m:to name="#{person.firstname} #{person.lastname}">#{person.address}</m:to>
+ <m:subject>Try out Seam!</m:subject>
+ <m:body>
+ <p><h:outputText value="Dear #{person.firstname}" />,</p>
+ <p>You can try out Seam by visiting <a href="http://www.seamframework.org">http://www.seamframework.org</a>.</p>
+ <p>Regards</p>
+ <p>Peter</p>
+ </m:body>
+</m:message>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/template.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/template.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/template.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,37 @@
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:s="http://jboss.com/products/seam/taglib"
+ xmlns:m="http://jboss.com/products/seam/mail"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core">
+
+ <m:message>
+ <m:from name="Seam" address="do-not-reply at jboss.com" />
+ <m:to name="#{person.firstname} #{person.lastname}">#{person.address}</m:to>
+ <m:subject>#{subject}</m:subject>
+ <m:body>
+ <html>
+ <body>
+ <ui:insert name="body">
+ This is the default body, specified by the template.
+ </ui:insert>
+ </body>
+ </html>
+ <f:facet name="alternative">
+ <ui:insert name="alternative">
+ <h:outputText>Sorry, your mail reader doesn't support html.</h:outputText>
+ </ui:insert>
+ </f:facet>
+ </m:body>
+ </m:message>
+
+ <ui:insert name="successMessage">
+ <html>
+ <body>
+ <p>This email was sent directly from the view without invoking a bean - just link to a page which contains an <m:message> tag!</p>
+ <p>The email has been successfully sent. <s:link view="/index.xhtml">Click here</s:link> to return to the index.</p>
+ </body>
+ </html>
+ </ui:insert>
+
+</ui:composition>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/templating.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/templating.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/templating.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,28 @@
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ template="template.xhtml" importance="normal">
+
+ <ui:param name="subject" value="Templating with Seam Mail" />
+
+ <ui:define name="body">
+
+ <p>This email demonstrates that you can easily use <i>facelets templating features</i> in your code!</p>
+
+ <p>In fact you can use <b>any</b> JSF tags that you like!</p>
+
+ <p>Here's a dataTable</p>
+
+ <h:dataTable value="#{lists.daysOfWeek}" var="day">
+ <h:column>
+ <f:facet name="header">
+ Day
+ </f:facet>
+ <h:outputText value="#{day}" />
+ </h:column>
+ </h:dataTable>
+
+ </ui:define>
+
+</ui:composition>
\ No newline at end of file
Added: branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/whyseam.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/whyseam.xhtml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/mail-web/src/main/webapp/whyseam.xhtml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,60 @@
+<p:document xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:p="http://jboss.com/products/seam/pdf"
+ title="Why Seam"
+ keywords="mykeyword"
+ subject="seam"
+ author="Seam Team"
+ creator="Seam PDF example app">
+
+ <p:font size="12">
+ <p:footer borderWidthTop="1" borderColorTop="blue" borderWidthBottom="0" alignment="center">Why Seam? [<p:pageNumber />]</p:footer>
+ </p:font>
+
+ <p:image alignment="right" wrap="true" value="/jboss.jpg" />
+ <p:font size="24"><p:paragraph spacingAfter="50">Ten Good Reasons To Use Seam</p:paragraph></p:font>
+
+ <p:font size="18"><p:paragraph>It's the quickest way to get "rich"</p:paragraph></p:font>
+
+ <p:paragraph alignment="justify">AJAX fundamentally changes the interaction model of the web. The synchronous, coarse-grained requests used by traditional web clients let many server-side applications get away with minimal caching and no session-level concurrency. The "stateless" architecture is in many cases a viable solution. But not anymore! AJAX clients hit the server with many asynchronous, concurrent, fine-grained requests, which could easily bring your database to its knees. When state is held in memory between requests, it is highly vulnerable to concurrency-related bugs, since the Java EE platform provides no constructs for dealing with session-level concurrency.</p:paragraph>
+
+ <p:paragraph alignment="justify">Seam's totally unique concurrency model and state-management model was conceived and designed with AJAX in mind. </p:paragraph>
+
+ <p:paragraph alignment="justify">Seam 1.1 integrates open source JSF-based AJAX solutions like ICEfaces and Ajax4JSF with Seam's state and concurrency management engine. You can add AJAX to your applications with ease, without the need to learn JavaScript, and you will be protected from potential bugs and performance problems associated with the switch to AJAX. </p:paragraph>
+
+ <p:font size="18"><p:paragraph>It's the easiest way to get started with EJB 3.0 </p:paragraph></p:font>
+ <p:paragraph alignment="justify">EJB 3.0 is a great component model for transactional business components, the highlight being the brand new Java Persistence API (JPA). But Java web and application frameworks designed before the release of EJB 3.0 lack support for the new component model, leaving you to write your own integration code, and in many cases forcing you into the use of a layered architecture that may not be right for your application. </p:paragraph>
+
+ <p:paragraph alignment="justify">Seam was designed for use with EJB 3.0 and lets you use the new component model everywhere. Since any class in a Seam application can be an EJB component, there is no need to introduce extra unwanted layers just to keep your frameworks happy. And, of course, there is no need to write code to integrate EJB 3.0 with your web framework, since Seam already has it. </p:paragraph>
+
+ <p:paragraph alignment="justify">Note that you don't have to use EJB 3.0 to use Seam, and if you're developing in an environment that doesn't support EJB 3.0, Seam provides alternatives. </p:paragraph>
+
+ <p:font size="18"><p:paragraph>It's the best way to leverage JSF </p:paragraph></p:font>
+ <p:paragraph alignment="justify">JSF has created a vibrant ecosystem of component libraries and other addons, that make this easily the most exciting web framework in Java. But plain JSF is heavy on XML, and misses out on a number of important features, especially for people building internet-facing applications. Seam replaces the tedious XML configuration with a handful of annotations, reducing code and making you more productive. Seam extends JSF with extra functionality for multi-window operation and workspace management, model-based validation, jBPM-based pageflow, internationalization, page fragment caching. Seam even adds facilities for handling bookmarkable (REST-style) web pages - the number one user complaint against JSF. </p:paragraph>
+
+ <p:paragraph alignment="justify">Since JSF does not address the problem of access to transactional resources, Seam's integration of JTA, JPA and EJB 3.0 is a must-have for most JSF users. </p:paragraph>
+
+ <p:font size="18"><p:paragraph>And the easiest way to do BPM </p:paragraph></p:font>
+ <p:paragraph alignment="justify">jBPM is an intuitive and powerful solution for enterprise applications with complex human collaboration, or web applications with complex user interactions. BPM technology not only makes it easier for developers and analysts to model, implement and optimize a business process, but also makes it possible for operations and management to analyse the efficiency of the business process, and be informed of problems. </p:paragraph>
+
+ <p:paragraph alignment="justify">Seam deeply integrates jBPM and makes it incredibly simple to use jBPM for task management or pageflow, and is a great way to get started with BPM technology. The combination of Seam and jBPM can shrink development time of some kinds of projects by literally months. </p:paragraph>
+
+ <p:font size="18"><p:paragraph>But CRUD is easy too </p:paragraph></p:font>
+ <p:paragraph alignment="justify">Seam takes on hard problems affecting complex enterprise applications. But that doesn't mean the easy stuff is any more difficult than it should be. Seam is every bit as productive as any of the current crop of CRUD frameworks when it comes to building simple data driven applications. Seam combines a simple data access framework (built around JPA and Hibernate) with a command line code generation and database reverse engineering tool to get you started in minutes. </p:paragraph>
+
+ <p:font size="18"><p:paragraph>It makes persistence a breeze </p:paragraph></p:font>
+ <p:paragraph alignment="justify">Seam grew out of the Hibernate community, and was designed and implemented by the people who created Hibernate, the same people who coined the term "persistence context". Seam's conversation model solves a raft of persistence-related programming problems caused by traditional stateless web application architectures. Whether you use Hibernate or JPA, Seam makes it easy and natural to use extended persistence contexts, and helps you avoid unnecessary state replication when you use an extended persistence context in a clustered environment. </p:paragraph>
+
+ <p:font size="18"><p:paragraph>Annotations </p:paragraph></p:font>
+ <p:paragraph alignment="justify">Seam is the first programming model that lets you use Java 5 annotations end to end, from the persistence layer to the UI. You'll never find yourself wrestling with unnecessary, noisy XML. Which is not to say that Seam doesn't use XML when appropriate (Seam has a sophisticated XML-based component configuration facility), just that you won't get lost in reams of XML for common programming tasks. </p:paragraph>
+
+ <p:font size="18"><p:paragraph>Get hip to automated integration testing </p:paragraph></p:font>
+ <p:paragraph alignment="justify">Automated unit tests certainly have their place in any project. But it's worse than dangerous to rely solely on unit testing. Most bugs concern the interaction between components, and the interaction between a component and the container environment. Unit tests are unable to properly capture container behavior, and usually don't capture complex inter-component interactions. Seam introduces an innovative approach to automated integration testing, where you can emulate the entire flow of a request or conversation, testing all layers of Java code in the application, from presentation to persistence. </p:paragraph>
+
+ <p:font size="18"><p:paragraph>Marry open source with open standards </p:paragraph></p:font>
+ <p:paragraph alignment="justify">Seam is founded upon open source implementations of open standards like JSF and EJB 3.0, along with open source innovators like Hibernate, jBPM, Facelets, Drools, ICEfaces and Ajax4JSF. The creators of Seam are active in the EJB, JPA, Bean Validation and JSF expert groups and lead the Web Beans (JSR-299) expert group which aims to bring the ideas of Seam into the Java EE standard. The Seam project is totally committed to the idea of open source innovation driving new ideas and ehancements into the Java platform. </p:paragraph>
+
+ <p:font size="18"><p:paragraph>It just works </p:paragraph></p:font>
+ <p:paragraph alignment="justify">You'll love it if you try it.</p:paragraph>
+</p:document>
+
Added: branches/community/Seam_2_3/examples-ee6/mail/pom.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/pom.xml (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/pom.xml 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jboss.seam.examples</groupId>
+ <artifactId>mail</artifactId>
+ <parent>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>examples</artifactId>
+ <version>2.3.0-SNAPSHOT</version>
+ </parent>
+ <packaging>pom</packaging>
+ <name>Seam Mail Example</name>
+
+ <properties>
+ <example.name>mail</example.name>
+ </properties>
+
+ <modules>
+ <module>mail-ear</module>
+ <module>mail-ejb</module>
+ <module>mail-web</module>
+ <module>mail-tests</module>
+ </modules>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-ejb</artifactId>
+ <version>${project.version}</version>
+ <type>ejb</type>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-web</artifactId>
+ <version>${project.version}</version>
+ <type>war</type>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam.examples.mail</groupId>
+ <artifactId>mail-ear</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+</project>
Added: branches/community/Seam_2_3/examples-ee6/mail/readme.txt
===================================================================
--- branches/community/Seam_2_3/examples-ee6/mail/readme.txt (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/mail/readme.txt 2012-02-02 14:52:51 UTC (rev 14286)
@@ -0,0 +1,7 @@
+Seam Mail Example
+==================
+
+This example demonstrates the Seam Mail functionality. It runs on JBoss AS as
+an EAR.
+
+example.name=mail
More information about the seam-commits
mailing list