目前格式:HTML/XML
----old
<?xml version="1.0" encoding="UTF-8"?>
<project>
<!--
Default lifecycle (23 Phase) : validate -> compile -> Test -> package -> verify -> install -> deploy -> (finish)
Command format : mvn or mvnw goals [-Dpackaging.type=war,jar] [-Dspring-boot.run.profiles=dev] [-Pprod] [....]
Maven Command :
mvn or mvnw
Monitor :
*Note* skip process
[-q]
Arguments :
*Note* optional
[-Dpackaging.type=war,jar] [-Dspring-boot.run.profiles=dev] [-Dit.skip=false] [-Pprod] [....]
Packaging :
arg : pom, war, jar
[-Dpackaging.type=war,jar]
Tests :
arg : true, false
*Note* testing
[-Dit.skip=false]
*Note* none testing
[-Dit.skip=true]
Profile :
arg : default, sit-external, uat-external, prod-external
*Note* package or install
EX : mvn package -Dit.skip=true -Dpackaging.type=jar -Pprod-external
System :
*Note* Delete the dependency package of the current project in the local warehouse
mvn dependency:purge-local-repository
mvn dependency:purge-local-repository -DreResolve=false
mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false
Environment :
mvn -version
mvn -h
mvn archetype:generate
mvn wrapper:wrapper
mvn dependency:tree
Execution :
mvn compile [war:war] [jar:jar]
mvn test
mvn assembly or mvn assembly:single
mvn package
mvn install [-Dpackaging.type=war,jar] [-Pdev -DprofileIdEnabled=true] or mvn install -N ( build a project without building it's sub-modules )
mvn tomcat:run
mvn source:jar
mvn javadoc:javadoc
mvn javadoc:jar
mvn exec:exec
mvn site or mvn site:site
mvn verify [-Dit.skip=false]
mvn -X install > C:/java-workspace/teamwalk-web-app/my_error.log
Spring Boot :
*Note* Springboot plugin limited use parameters :[-Dspring-boot.run.profiles=XXX]
mvn package spring-boot:repackage
mvn -X spring-boot:start > C:/java-workspace/teamwalk-web-app/error.log
mvn [-q] spring-boot:run [-Dspring-boot.run.profiles=XXX]
mvn clean package spring-boot:repackage
Executable file ( Use Spring Boot Plugin ) :
Jar :
*Note* spring.profiles.active : default, sit, uat, prod
java -jar -Dspring.profiles.active=dev teamwalk-api-0.0.1-SNAPSHOT.jar
War :
*Note* spring.profiles.active : default, sit, uat, prod
java -jar -Dspring.profiles.active=XXX teamwalk-api-0.0.1-SNAPSHOT.war
-->
<modelVersion>4.0.0</modelVersion>
<artifactId>teamwalk-api</artifactId>
<version>2.X-SNAPSHOT</version>
<name>teamwalk-api</name>
<description>teamwalk of taiwanlife - api</description>
<!-- FIXME change it to the project's website -->
<!--<url>http://maven.apache.org</url>-->
<packaging>${packaging.type}</packaging>
<parent>
<groupId>com.taiwanlife.teamwalk</groupId>
<artifactId>teamwalk-web-app</artifactId>
<version>2.X-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<properties>
<mainClassName>com.taiwanlife.teamwalk.api.Application</mainClassName>
<timestamp>${maven.build.timestamp}</timestamp>
<maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
</properties>
<build>
<!-- compile, package, spring-boot:run -->
<defaultGoal>spring-boot:run</defaultGoal>
<finalName>teamwalk-api</finalName>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<executions>
<execution>
<id>auto-clean</id>
<phase>initialize</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
<configuration>
<filesets>
<fileset>
<directory>${basedir}/output</directory>
<includes>
<include>*.*</include>
</includes>
<followSymlinks>false</followSymlinks>
</fileset>
</filesets>
</configuration>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<phase>compile</phase>
</execution>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<outputDirectory>${project.build.directory}/resources</outputDirectory>
</configuration>
</execution>
<execution>
<id>package-prepare</id>
<!-- here the phase you need -->
<phase>generate-sources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<resources>
<resource>
<directory>configs/resources/${package.environment}</directory>
</resource>
</resources>
<outputDirectory>src/main/resources/config</outputDirectory>
</configuration>
</execution>
</executions>
<configuration>
<tasks>
<echo>parse resources</echo>
</tasks>
<encoding>${project.encoding}</encoding>
<useDefaultDelimiters>false</useDefaultDelimiters>
<delimiters>
<delimiter>${resource.delimiter}</delimiter>
</delimiters>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<release>${java.version}</release>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>base-jar</id>
<!--<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>-->
</execution>
</executions>
<configuration>
<archive>
<manifest>
<mainClass>${mainClassName}</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<!--<warName>${project.artifactId}-${project.version}.${project.packaging}</warName>-->
<packagingExcludes>
WEB-INF/lib/tomcat-embed-*.jar,
WEB-INF/lib/swagger-*.jar,
WEB-INF/lib/springdoc-openapi-*.jar,
WEB-INF/lib/webjars-locator-core-*.jar,
WEB-INF/lib/jackson-dataformat-yaml-*.jar,
WEB-INF/lib/classgraph-*.jar
</packagingExcludes>
<!--<includeEmptyDirs>true</includeEmptyDirs>-->
<webXml>src/main/webapp/WEB-INF/web.xml</webXml>
<filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>${mainClassName}</mainClass>
<!--<manifestFile>META-INF/MANIFEST.MF</manifestFile>-->
</manifest>
</archive>
<finalName>${project.artifactId}-${project.version}</finalName>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
<plugin>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<configuration>
<skip>${it.skip}</skip>
</configuration>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<executions>
<execution>
<id>install-component</id>
<!--<phase>package</phase>-->
<phase>install</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<artifactId>${project.artifactId}</artifactId>
<groupId>${project.groupId}</groupId>
<version>${project.version}</version>
<packaging>${project.packaging}</packaging>
<createChecksum>true</createChecksum>
<file>${project.build.directory}/${project.artifactId}-${project.version}.${project.packaging}</file>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-artifact</id>
<phase>install</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<type>${project.packaging}</type>
<outputDirectory>${session.executionRootDirectory}/output/</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<executions>
<execution>
<id>deploy-moudle</id>
<phase>deploy</phase>
<goals>
<goal>deploy-file</goal>
</goals>
<configuration>
<generatePom>true</generatePom>
<artifactId>${project.artifactId}</artifactId>
<groupId>${project.groupId}</groupId>
<version>${project.version}</version>
<packaging>${project.packaging}</packaging>
<repositoryId>${project.distributionManagement.repository.id}</repositoryId>
<url>${project.distributionManagement.repository.url}</url>
<file>${project.build.directory}/${project.artifactId}-${project.version}.${project.packaging}</file>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<executions>
<execution>
<id>test-showing-the-execution-id</id>
<phase>clean</phase>
<goals>
<goal>dependency-info</goal>
<goal>dependencies</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Spring Boot -->
<!-- Command : -Dspring-boot.run.profiles=? -->
<!-- Mansun 不需要repackage 參考下面網址 -->
<!-- https://stackoverflow.com/questions/43641664/why-spring-boot-generates-jar-or-war-file-with-original-extension -->
<!--
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>repackage-moudle</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
<execution>
<id>pre-integration-test</id>
<goals>
<goal>start</goal>
</goals>
<configuration>
<skip>${it.skip}</skip>
</configuration>
</execution>
<execution>
<id>post-integration-test</id>
<goals>
<goal>stop</goal>
</goals>
<configuration>
<skip>${it.skip}</skip>
</configuration>
</execution>
</executions>
<configuration>
<mainClass>none</mainClass>
<addResources>true</addResources>
<includeSystemScope>true</includeSystemScope>
<jmxPort>${jmx.port}</jmxPort>
</configuration>
</plugin>
-->
<!--<plugin>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-maven-plugin</artifactId>
<version>0.2</version>
<executions>
<execution>
<id>generate-doc</id>
<phase>integration-test</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<apiDocsUrl>http://localhost:8080/v3/api-docs</apiDocsUrl>
<outputFileName>openapi.json</outputFileName>
<outputDir>${project.build.directory}</outputDir>
</configuration>
</plugin>
-->
</plugins>
<pluginManagement>
<plugins/>
</pluginManagement>
<resources>
<resource>
<directory>src/main/resources/</directory>
<filtering>false</filtering>
<excludes>
<exclude>**/bootstrap-*.yml</exclude>
<exclude>**/application-*.yml</exclude>
<exclude>**/bootstrap-*.properties</exclude>
<exclude>**/application-*.properties</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources/</directory>
<filtering>true</filtering>
<includes>
<include>**/logback-spring.xml</include>
<include>**/bootstrap.yml</include>
<include>**/bootstrap-${maven.profiles.active:default}.yml</include>
<include>**/application.yml</include>
<include>**/application-${maven.profiles.active:default}.yml</include>
<include>**/bootstrap.properties</include>
<include>**/bootstrap-${maven.profiles.active:default}.properties</include>
<include>**/application.properties</include>
<include>**/application-${maven.profiles.active:default}.properties</include>
</includes>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/resources/</directory>
<filtering>false</filtering>
<excludes>
<exclude>**/bootstrap-*.yml</exclude>
<exclude>**/application-*.yml</exclude>
<exclude>**/bootstrap-*.properties</exclude>
<exclude>**/application-*.properties</exclude>
</excludes>
</testResource>
<testResource>
<directory>src/test/resources/</directory>
<filtering>true</filtering>
<includes>
<include>**/logback-spring.xml</include>
<include>**/bootstrap.yml</include>
<include>**/bootstrap-${maven.profiles.active:default}.yml</include>
<include>**/application.yml</include>
<include>**/application-${maven.profiles.active:default}.yml</include>
<include>**/bootstrap.properties</include>
<include>**/bootstrap-${maven.profiles.active:default}.properties</include>
<include>**/application.properties</include>
<include>**/application-${maven.profiles.active:default}.properties</include>
</includes>
</testResource>
</testResources>
</build>
<!--
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
</pluginRepository>
</pluginRepositories>
<repositories>
<repository>
<id>mvnrepository-releases</id>
<name>mvnrepository</name>
<url>https://www.ebi.ac.uk/intact/maven/nexus/content/repositories/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
</repository>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
-->
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://nexus.taiwanlife.com/repository/taiwanlife-teamwalk</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<dependencies>
<!-- Sub Module -->
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>teamwalk-common</artifactId>
</dependency>
<!-- Spring Framework -->
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
-->
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-actuator -->
<!--<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</exclusion>
</exclusions>
</dependency>
-->
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<scope>compile</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-hateoas -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-hateoas</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
<!--<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>provided</scope>
</dependency>
-->
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-tomcat -->
<!--
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
-->
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Spring -->
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-cas -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-cas</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-test -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.retry/spring-retry -->
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-oxm -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
</dependency>
<!-- Javax -->
<!-- https://mvnrepository.com/artifact/javax.validation/validation-api
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
-->
<!-- https://mvnrepository.com/artifact/jakarta.validation/jakarta.validation-api -->
<dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager -->
<!--<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.4.17.Final</version>
</dependency>-->
<!-- Hibernate -->
<!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator -->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
<!-- Apache Commons -->
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
-->
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents.client5/httpclient5 -->
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>9.4.1.jre8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
<version>1.18.20</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml/jackson-xml-databind -->
<!-- <dependency>-->
<!-- <groupId>com.fasterxml.jackson.core</groupId>-->
<!-- <artifactId>jackson-databind</artifactId>-->
<!-- <version>2.11.0</version>-->
<!-- </dependency>-->
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-xml -->
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<!-- Firebase -->
<dependency>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-admin</artifactId>
<version>9.4.1</version>
</dependency>
<!-- google api -->
<dependency>
<groupId>com.google.oauth-client</groupId>
<artifactId>google-oauth-client</artifactId>
<version>1.30.4</version>
</dependency>
<dependency>
<groupId>com.google.oauth-client</groupId>
<artifactId>google-oauth-client-java6</artifactId>
<version>1.30.4</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.73</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.2.3</version>
</dependency>
<!-- JUnit -->
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.reactivestreams</groupId>
<artifactId>reactive-streams</artifactId>
<version>1.0.3</version>
</dependency>
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>com.twlife.biometrics</groupId>
<artifactId>biometrics-rp-util</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.ibm.informix</groupId>
<artifactId>jdbc</artifactId>
<version>4.50.3</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.8.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.opencv/opencv -->
<dependency>
<groupId>org.opencv</groupId>
<artifactId>opencv</artifactId>
<version>4.11.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.drewnoakes/metadata-extractor -->
<dependency>
<groupId>com.drewnoakes</groupId>
<artifactId>metadata-extractor</artifactId>
<version>2.12.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.adobe.xmp/xmpcore -->
<dependency>
<groupId>com.adobe.xmp</groupId>
<artifactId>xmpcore</artifactId>
<version>6.0.6</version>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>5.9.0</version>
</dependency>
<dependency>
<groupId>com.github.ziplet</groupId>
<artifactId>ziplet</artifactId>
<version>2.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.24.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/log4j-over-slf4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>2.0.16</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.16</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-broker</artifactId>
<version>6.1.5</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
<version>6.1.5</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.5.16</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.5.16</version>
</dependency>
</dependencies>
<!-- Construction procedure -->
<profiles>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
<property>
<name>env</name>
<value>default</value>
</property>
</activation>
<properties>
<maven.profiles.active:default>default</maven.profiles.active:default>
<maven.app.name>${project.name}</maven.app.name>
<maven.app.version>${project.version}</maven.app.version>
<maven.app.packagingType:war>${packaging.type}</maven.app.packagingType:war>
</properties>
<dependencies/>
<build>
<filters>
<filter>${basedir}/configs/resources/application.yml</filter>
</filters>
</build>
</profile>
<profile>
<id>sit-external</id>
<activation>
<activeByDefault>false</activeByDefault>
<property>
<name>env</name>
<value>sit-external</value>
</property>
</activation>
<properties>
<package.environment>sit</package.environment>
<maven.profiles.active:default>sit-external</maven.profiles.active:default>
<maven.app.name>${project.name}</maven.app.name>
<maven.app.version>${project.version}</maven.app.version>
<maven.app.packagingType:war>${packaging.type}</maven.app.packagingType:war>
</properties>
<dependencies/>
<build>
<filters>
<filter>${basedir}/configs/resources/application-sit-external.yml</filter>
</filters>
</build>
</profile>
<profile>
<id>uat-external</id>
<activation>
<activeByDefault>false</activeByDefault>
<property>
<name>env</name>
<value>uat-external</value>
</property>
</activation>
<properties>
<package.environment>uat</package.environment>
<maven.profiles.active:default>uat-external</maven.profiles.active:default>
<maven.app.name>${project.name}</maven.app.name>
<maven.app.version>${project.version}</maven.app.version>
<maven.app.packagingType:war>${packaging.type}</maven.app.packagingType:war>
</properties>
<dependencies/>
<build>
<filters>
<filter>${basedir}/configs/resources/application-uat-external.yml</filter>
</filters>
</build>
</profile>
<profile>
<id>prod-external</id>
<activation>
<activeByDefault>false</activeByDefault>
<property>
<name>env</name>
<value>prod-external</value>
</property>
</activation>
<properties>
<package.environment>prod</package.environment>
<maven.profiles.active:default>prod-external</maven.profiles.active:default>
<maven.app.name>${project.name}</maven.app.name>
<maven.app.version>${project.version}</maven.app.version>
<maven.app.packagingType:war>${packaging.type}</maven.app.packagingType:war>
</properties>
<dependencies/>
<build>
<filters>
<filter>${basedir}/configs/resources/application-prod-external.yml</filter>
</filters>
</build>
</profile>
</profiles>
<reporting>
<plugins/>
</reporting>
<distributionManagement>
<repository>
<id>local-repository</id>
<name>Local Release Repository</name>
<url>file:${project.basedir}/repository/</url>
<!--<url>http://127.0.0.1:8080/nexus/content/repositories/releases/</url>-->
</repository>
<snapshotRepository>
<id>local-snapshots</id>
<name>Local Snapshot Repository</name>
<url>file:${project.basedir}/repository/</url>
<!--<url>http://127.0.0.1:8080/nexus/content/repositories/snapshots/</url>-->
</snapshotRepository>
</distributionManagement>
</project>
LS0tLW9sZAoKPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KCgoKPHByb2plY3Q+CgoJCgoJPCEtLQoKCURlZmF1bHQgbGlmZWN5Y2xlICgyMyBQaGFzZSkgOiB2YWxpZGF0ZSAtPiBjb21waWxlIC0+IFRlc3QgLT4gcGFja2FnZSAtPiB2ZXJpZnkgLT4gaW5zdGFsbCAtPiBkZXBsb3kgLT4gKGZpbmlzaCkKCglDb21tYW5kIGZvcm1hdCA6IG12biBvciBtdm53IGdvYWxzIFstRHBhY2thZ2luZy50eXBlPXdhcixqYXJdIFstRHNwcmluZy1ib290LnJ1bi5wcm9maWxlcz1kZXZdIFstUHByb2RdIFsuLi4uXQoKCQoKCU1hdmVuIENvbW1hbmQgOgoKCW12biBvciBtdm53CgoJCgoJTW9uaXRvciA6CgoJKk5vdGUqIHNraXAgcHJvY2VzcwoKCVstcV0KCgkKCglBcmd1bWVudHMgOgoKCSpOb3RlKiBvcHRpb25hbAoKCVstRHBhY2thZ2luZy50eXBlPXdhcixqYXJdIFstRHNwcmluZy1ib290LnJ1bi5wcm9maWxlcz1kZXZdIFstRGl0LnNraXA9ZmFsc2VdIFstUHByb2RdIFsuLi4uXQoKCQoKCVBhY2thZ2luZyA6CgoJYXJnIDogcG9tLCB3YXIsIGphcgoKCVstRHBhY2thZ2luZy50eXBlPXdhcixqYXJdCgoJCgoJVGVzdHMgOgoKCWFyZyA6IHRydWUsIGZhbHNlCgoJKk5vdGUqIHRlc3RpbmcKCglbLURpdC5za2lwPWZhbHNlXQoKCSpOb3RlKiBub25lIHRlc3RpbmcKCglbLURpdC5za2lwPXRydWVdCgoJCgoJUHJvZmlsZSA6CgoJYXJnIDogZGVmYXVsdCwgc2l0LWV4dGVybmFsLCB1YXQtZXh0ZXJuYWwsIHByb2QtZXh0ZXJuYWwKCgkqTm90ZSogcGFja2FnZSBvciBpbnN0YWxsCgoJCgoJRVggOiBtdm4gcGFja2FnZSAtRGl0LnNraXA9dHJ1ZSAtRHBhY2thZ2luZy50eXBlPWphciAtUHByb2QtZXh0ZXJuYWwKCgkKCglTeXN0ZW0gOgoKCSpOb3RlKiBEZWxldGUgdGhlIGRlcGVuZGVuY3kgcGFja2FnZSBvZiB0aGUgY3VycmVudCBwcm9qZWN0IGluIHRoZSBsb2NhbCB3YXJlaG91c2UKCgltdm4gZGVwZW5kZW5jeTpwdXJnZS1sb2NhbC1yZXBvc2l0b3J5CgoJbXZuIGRlcGVuZGVuY3k6cHVyZ2UtbG9jYWwtcmVwb3NpdG9yeSAtRHJlUmVzb2x2ZT1mYWxzZQoKCW12biBkZXBlbmRlbmN5OnB1cmdlLWxvY2FsLXJlcG9zaXRvcnkgLURhY3RUcmFuc2l0aXZlbHk9ZmFsc2UgLURyZVJlc29sdmU9ZmFsc2UKCgkKCglFbnZpcm9ubWVudCA6CgoJbXZuIC12ZXJzaW9uCgoJbXZuIC1oCgoJbXZuIGFyY2hldHlwZTpnZW5lcmF0ZQoKCW12biB3cmFwcGVyOndyYXBwZXIKCgltdm4gZGVwZW5kZW5jeTp0cmVlCgoJCgoJRXhlY3V0aW9uIDoKCgltdm4gY29tcGlsZSBbd2FyOndhcl0gW2phcjpqYXJdIAoKCW12biB0ZXN0CgoJbXZuIGFzc2VtYmx5IG9yIG12biBhc3NlbWJseTpzaW5nbGUKCgltdm4gcGFja2FnZQoKCW12biBpbnN0YWxsIFstRHBhY2thZ2luZy50eXBlPXdhcixqYXJdIFstUGRldiAtRHByb2ZpbGVJZEVuYWJsZWQ9dHJ1ZV0gb3IgbXZuIGluc3RhbGwgLU4gKCBidWlsZCBhIHByb2plY3Qgd2l0aG91dCBidWlsZGluZyBpdCdzIHN1Yi1tb2R1bGVzICkKCgltdm4gdG9tY2F0OnJ1bgoKCW12biBzb3VyY2U6amFyCgoJbXZuIGphdmFkb2M6amF2YWRvYwoKCW12biBqYXZhZG9jOmphcgoKCW12biBleGVjOmV4ZWMKCgltdm4gc2l0ZSBvciBtdm4gc2l0ZTpzaXRlCgoJbXZuIHZlcmlmeSBbLURpdC5za2lwPWZhbHNlXQoKCW12biAtWCBpbnN0YWxsID4gQzovamF2YS13b3Jrc3BhY2UvdGVhbXdhbGstd2ViLWFwcC9teV9lcnJvci5sb2cKCgkKCglTcHJpbmcgQm9vdCA6CgoJKk5vdGUqIFNwcmluZ2Jvb3QgcGx1Z2luIGxpbWl0ZWQgdXNlIHBhcmFtZXRlcnMgOlstRHNwcmluZy1ib290LnJ1bi5wcm9maWxlcz1YWFhdCgoJbXZuIHBhY2thZ2Ugc3ByaW5nLWJvb3Q6cmVwYWNrYWdlCgoJbXZuIC1YIHNwcmluZy1ib290OnN0YXJ0ID4gQzovamF2YS13b3Jrc3BhY2UvdGVhbXdhbGstd2ViLWFwcC9lcnJvci5sb2cKCgltdm4gWy1xXSBzcHJpbmctYm9vdDpydW4gWy1Ec3ByaW5nLWJvb3QucnVuLnByb2ZpbGVzPVhYWF0KCgltdm4gY2xlYW4gcGFja2FnZSBzcHJpbmctYm9vdDpyZXBhY2thZ2UgCgoJCgoJRXhlY3V0YWJsZSBmaWxlICggVXNlIFNwcmluZyBCb290IFBsdWdpbiApIDoKCglKYXIgOgoKCSpOb3RlKiBzcHJpbmcucHJvZmlsZXMuYWN0aXZlIDogZGVmYXVsdCwgc2l0LCB1YXQsIHByb2QKCglqYXZhIC1qYXIgLURzcHJpbmcucHJvZmlsZXMuYWN0aXZlPWRldiB0ZWFtd2Fsay1hcGktMC4wLjEtU05BUFNIT1QuamFyCgoJCgoJV2FyIDoKCgkqTm90ZSogc3ByaW5nLnByb2ZpbGVzLmFjdGl2ZSA6IGRlZmF1bHQsIHNpdCwgdWF0LCBwcm9kCgoJamF2YSAtamFyIC1Ec3ByaW5nLnByb2ZpbGVzLmFjdGl2ZT1YWFggdGVhbXdhbGstYXBpLTAuMC4xLVNOQVBTSE9ULndhcgoKCQoKCS0tPgoKCTxtb2RlbFZlcnNpb24+NC4wLjA8L21vZGVsVmVyc2lvbj4KCgkKCgk8YXJ0aWZhY3RJZD50ZWFtd2Fsay1hcGk8L2FydGlmYWN0SWQ+CgoJPHZlcnNpb24+Mi5YLVNOQVBTSE9UPC92ZXJzaW9uPgoKCTxuYW1lPnRlYW13YWxrLWFwaTwvbmFtZT4KCgk8ZGVzY3JpcHRpb24+dGVhbXdhbGsgb2YgdGFpd2FubGlmZSAtIGFwaTwvZGVzY3JpcHRpb24+CgoJPCEtLSBGSVhNRSBjaGFuZ2UgaXQgdG8gdGhlIHByb2plY3QncyB3ZWJzaXRlIC0tPgoKCTwhLS08dXJsPmh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnPC91cmw+LS0+CgoJCgoJPHBhY2thZ2luZz4ke3BhY2thZ2luZy50eXBlfTwvcGFja2FnaW5nPgoKCQoKCTxwYXJlbnQ+CgoJCTxncm91cElkPmNvbS50YWl3YW5saWZlLnRlYW13YWxrPC9ncm91cElkPgoKCQk8YXJ0aWZhY3RJZD50ZWFtd2Fsay13ZWItYXBwPC9hcnRpZmFjdElkPgoKCQk8dmVyc2lvbj4yLlgtU05BUFNIT1Q8L3ZlcnNpb24+CgoJCTxyZWxhdGl2ZVBhdGg+Li4vLi4vcG9tLnhtbDwvcmVsYXRpdmVQYXRoPgoKCTwvcGFyZW50PgoKCQoKCTxwcm9wZXJ0aWVzPgoKCQk8bWFpbkNsYXNzTmFtZT5jb20udGFpd2FubGlmZS50ZWFtd2Fsay5hcGkuQXBwbGljYXRpb248L21haW5DbGFzc05hbWU+CgoKCiAgICAgICAgPHRpbWVzdGFtcD4ke21hdmVuLmJ1aWxkLnRpbWVzdGFtcH08L3RpbWVzdGFtcD4KCiAgICAgICAgPG1hdmVuLmJ1aWxkLnRpbWVzdGFtcC5mb3JtYXQ+eXl5eS1NTS1kZCBISDptbTpzczwvbWF2ZW4uYnVpbGQudGltZXN0YW1wLmZvcm1hdD4KCgk8L3Byb3BlcnRpZXM+CgoJCgoJPGJ1aWxkPgoKCQkKCgkJPCEtLSBjb21waWxlLCBwYWNrYWdlLCBzcHJpbmctYm9vdDpydW4gLS0+CgoJCTxkZWZhdWx0R29hbD5zcHJpbmctYm9vdDpydW48L2RlZmF1bHRHb2FsPgoKCQk8ZmluYWxOYW1lPnRlYW13YWxrLWFwaTwvZmluYWxOYW1lPgoKCQkKCgkJPHBsdWdpbnM+CgoJCQoKCQkJPHBsdWdpbj4KCgkJCQk8YXJ0aWZhY3RJZD5tYXZlbi1jbGVhbi1wbHVnaW48L2FydGlmYWN0SWQ+CgoJCQkJPGV4ZWN1dGlvbnM+CgoJCQkJCTxleGVjdXRpb24+CgoJCQkJCQk8aWQ+YXV0by1jbGVhbjwvaWQ+CgoJCQkJCQk8cGhhc2U+aW5pdGlhbGl6ZTwvcGhhc2U+CgoJCQkJCQk8Z29hbHM+CgoJCQkJCQkJPGdvYWw+Y2xlYW48L2dvYWw+CgoJCQkJCQk8L2dvYWxzPgoKCQkJCQk8L2V4ZWN1dGlvbj4KCgkJCQk8L2V4ZWN1dGlvbnM+CgoJCQkJPGNvbmZpZ3VyYXRpb24+CgoJCQkgICAgCTxmaWxlc2V0cz4KCgkJCSAgICAgICAgCTxmaWxlc2V0PgoKCQkJICAgICAgICAgIAkJPGRpcmVjdG9yeT4ke2Jhc2VkaXJ9L291dHB1dDwvZGlyZWN0b3J5PgoKCQkJICAgICAgICAgIAkJPGluY2x1ZGVzPgoKCQkJICAgICAgICAgICAgCQk8aW5jbHVkZT4qLio8L2luY2x1ZGU+CgoJCQkgICAgICAgICAgCQk8L2luY2x1ZGVzPgoKCQkJICAgICAgICAgIAkJPGZvbGxvd1N5bWxpbmtzPmZhbHNlPC9mb2xsb3dTeW1saW5rcz4KCgkJCSAgICAgICAgCTwvZmlsZXNldD4KCgkJCSAgICAgIAk8L2ZpbGVzZXRzPgoKCQkJICAgIDwvY29uZmlndXJhdGlvbj4KCgkJCTwvcGx1Z2luPgoKCQkJCgoJCQk8cGx1Z2luPgoKCQkJCTxhcnRpZmFjdElkPm1hdmVuLXJlc291cmNlcy1wbHVnaW48L2FydGlmYWN0SWQ+CgoJCQkJPGV4ZWN1dGlvbnM+CgoJCQkJCQoKCQkJCQk8ZXhlY3V0aW9uPgoKCQkJCQkJPHBoYXNlPmNvbXBpbGU8L3BoYXNlPgoKCQkJCQk8L2V4ZWN1dGlvbj4KCgkJCQkJCgoJCQkJCTxleGVjdXRpb24+CgoJCSAgICAgICAgICAgICAgICA8aWQ+Y29weS1yZXNvdXJjZXM8L2lkPiAgCgoJCSAgICAgICAgICAgICAgICA8cGhhc2U+dmFsaWRhdGU8L3BoYXNlPiAgCgoJCSAgICAgICAgICAgICAgICA8Z29hbHM+ICAKCgkJICAgICAgICAgICAgICAgICAgICA8Z29hbD5jb3B5LXJlc291cmNlczwvZ29hbD4gIAoKCQkgICAgICAgICAgICAgICAgPC9nb2Fscz4KCgkJICAgICAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPgoKCQkgICAgICAgICAgICAgICAgICAgIDxyZXNvdXJjZXM+CgoJCSAgICAgICAgICAgICAgICAgICAgICAgIDxyZXNvdXJjZT4KCgkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXJlY3Rvcnk+c3JjL21haW4vcmVzb3VyY2VzPC9kaXJlY3Rvcnk+CgoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyaW5nPnRydWU8L2ZpbHRlcmluZz4KCgkJICAgICAgICAgICAgICAgICAgICAgICAgPC9yZXNvdXJjZT4KCgkJICAgICAgICAgICAgICAgICAgICA8L3Jlc291cmNlcz4KCgkJCQkJCQk8b3V0cHV0RGlyZWN0b3J5PiR7cHJvamVjdC5idWlsZC5kaXJlY3Rvcnl9L3Jlc291cmNlczwvb3V0cHV0RGlyZWN0b3J5PgoKCQkgICAgICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPgoKCQkgICAgICAgICAgICA8L2V4ZWN1dGlvbj4KCgoKCQkgICAgICAgICAgICA8ZXhlY3V0aW9uPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGlkPnBhY2thZ2UtcHJlcGFyZTwvaWQ+CgogICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGhlcmUgdGhlIHBoYXNlIHlvdSBuZWVkIC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHBoYXNlPmdlbmVyYXRlLXNvdXJjZXM8L3BoYXNlPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWxzPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnb2FsPmNvcHktcmVzb3VyY2VzPC9nb2FsPgoKICAgICAgICAgICAgICAgICAgICAgICAgPC9nb2Fscz4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvdmVyd3JpdGU+dHJ1ZTwvb3ZlcndyaXRlPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXNvdXJjZXM+ICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVzb3VyY2U+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGlyZWN0b3J5PmNvbmZpZ3MvcmVzb3VyY2VzLyR7cGFja2FnZS5lbnZpcm9ubWVudH08L2RpcmVjdG9yeT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZXNvdXJjZT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Jlc291cmNlcz4gICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvdXRwdXREaXJlY3Rvcnk+c3JjL21haW4vcmVzb3VyY2VzL2NvbmZpZzwvb3V0cHV0RGlyZWN0b3J5PgoKICAgICAgICAgICAgICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4KCgkJICAgICAgICAgICAgCgoJCQkJPC9leGVjdXRpb25zPgoKCQkJCTxjb25maWd1cmF0aW9uPgoKCQkJCQk8dGFza3M+CgoJCSAgICAgICAgICAgIAk8ZWNobz5wYXJzZSByZXNvdXJjZXM8L2VjaG8+CgoJCSAgICAgICAgICAgIDwvdGFza3M+CgoJCQkJCTxlbmNvZGluZz4ke3Byb2plY3QuZW5jb2Rpbmd9PC9lbmNvZGluZz4KCgkJCQkJPHVzZURlZmF1bHREZWxpbWl0ZXJzPmZhbHNlPC91c2VEZWZhdWx0RGVsaW1pdGVycz4KCgkJCQkJPGRlbGltaXRlcnM+CgoJCQkJCQk8ZGVsaW1pdGVyPiR7cmVzb3VyY2UuZGVsaW1pdGVyfTwvZGVsaW1pdGVyPgoKCQkJCQk8L2RlbGltaXRlcnM+CgoJCQkJPC9jb25maWd1cmF0aW9uPgoKCQkJPC9wbHVnaW4+CgoJCQkKCgkJCTxwbHVnaW4+CgoJCQkJPGFydGlmYWN0SWQ+bWF2ZW4tY29tcGlsZXItcGx1Z2luPC9hcnRpZmFjdElkPgoKCQkJCTxjb25maWd1cmF0aW9uPgoKCQkJCQk8cmVsZWFzZT4ke2phdmEudmVyc2lvbn08L3JlbGVhc2U+CgoJCQkJCTxlbmNvZGluZz4ke3Byb2plY3QuYnVpbGQuc291cmNlRW5jb2Rpbmd9PC9lbmNvZGluZz4KCgkJCQk8L2NvbmZpZ3VyYXRpb24+CgoJCQk8L3BsdWdpbj4JCQkKCgkJCQoKCQkJPHBsdWdpbj4KCgkJCQk8YXJ0aWZhY3RJZD5tYXZlbi1qYXItcGx1Z2luPC9hcnRpZmFjdElkPgoKCQkJCTxleGVjdXRpb25zPgoKCQkJCQk8ZXhlY3V0aW9uPgoKCQkJCQkJPGlkPmJhc2UtamFyPC9pZD4KCgkJCQkJCTwhLS08cGhhc2U+Y29tcGlsZTwvcGhhc2U+CgoJCQkJCQk8Z29hbHM+CgoJCQkJCQkJPGdvYWw+amFyPC9nb2FsPgoKCQkJCQkJPC9nb2Fscz4tLT4KCgkJCQkJPC9leGVjdXRpb24+CgoJCQkJPC9leGVjdXRpb25zPgoKCQkJCTxjb25maWd1cmF0aW9uPgoKCQkJICAgICAgIAk8YXJjaGl2ZT4KCgkJCSAgICAgICAgICAgCTxtYW5pZmVzdD4KCgkJCSAgICAgICAgICAgICAgIAk8bWFpbkNsYXNzPiR7bWFpbkNsYXNzTmFtZX08L21haW5DbGFzcz4KCgkJCSAgICAgICAgICAgICAgIAk8YWRkQ2xhc3NwYXRoPnRydWU8L2FkZENsYXNzcGF0aD4KCgkJCSAgICAgICAgICAgICAgIAk8Y2xhc3NwYXRoUHJlZml4PmxpYi88L2NsYXNzcGF0aFByZWZpeD4KCgkJCSAgICAgICAgICAgCTwvbWFuaWZlc3Q+CgoJCQkgICAgICAgCTwvYXJjaGl2ZT4KCgkJCSAgIAk8L2NvbmZpZ3VyYXRpb24+CgoJCQk8L3BsdWdpbj4KCgkJCQoKCQkJPHBsdWdpbj4KCgkJCQk8YXJ0aWZhY3RJZD5tYXZlbi13YXItcGx1Z2luPC9hcnRpZmFjdElkPgoKCQkJCTxjb25maWd1cmF0aW9uPgoKCQkJCQk8IS0tPHdhck5hbWU+JHtwcm9qZWN0LmFydGlmYWN0SWR9LSR7cHJvamVjdC52ZXJzaW9ufS4ke3Byb2plY3QucGFja2FnaW5nfTwvd2FyTmFtZT4tLT4KCgkJCQkJPHBhY2thZ2luZ0V4Y2x1ZGVzPgoKCQkJCQkgICAgV0VCLUlORi9saWIvdG9tY2F0LWVtYmVkLSouamFyLAoKCQkJCQkgICAgV0VCLUlORi9saWIvc3dhZ2dlci0qLmphciwKCgkJCQkJICAgIFdFQi1JTkYvbGliL3NwcmluZ2RvYy1vcGVuYXBpLSouamFyLAoKCQkJCQkJV0VCLUlORi9saWIvd2ViamFycy1sb2NhdG9yLWNvcmUtKi5qYXIsCgoJCQkJCQlXRUItSU5GL2xpYi9qYWNrc29uLWRhdGFmb3JtYXQteWFtbC0qLmphciwKCgkJCQkJCVdFQi1JTkYvbGliL2NsYXNzZ3JhcGgtKi5qYXIKCgkJCQkJPC9wYWNrYWdpbmdFeGNsdWRlcz4KCgkJCQkJPCEtLTxpbmNsdWRlRW1wdHlEaXJzPnRydWU8L2luY2x1ZGVFbXB0eURpcnM+LS0+CgoJCQkJCTx3ZWJYbWw+c3JjL21haW4vd2ViYXBwL1dFQi1JTkYvd2ViLnhtbDwvd2ViWG1sPgoKCQkJCQk8ZmlsdGVyaW5nRGVwbG95bWVudERlc2NyaXB0b3JzPnRydWU8L2ZpbHRlcmluZ0RlcGxveW1lbnREZXNjcmlwdG9ycz4KCgkJCQk8L2NvbmZpZ3VyYXRpb24+CgoJCQk8L3BsdWdpbj4KCgkJCQoKCQkJPHBsdWdpbj4KCiAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1hc3NlbWJseS1wbHVnaW48L2FydGlmYWN0SWQ+CgogICAgICAgICAgICAgICAgPGNvbmZpZ3VyYXRpb24+CgoJCQkJICAgPGFyY2hpdmU+CgogICAgICAgICAgICAgICAgICAgICAgICA8bWFuaWZlc3Q+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1haW5DbGFzcz4ke21haW5DbGFzc05hbWV9PC9tYWluQ2xhc3M+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLTxtYW5pZmVzdEZpbGU+TUVUQS1JTkYvTUFOSUZFU1QuTUY8L21hbmlmZXN0RmlsZT4tLT4KCiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWFuaWZlc3Q+CgogICAgICAgICAgICAgICAgICAgIDwvYXJjaGl2ZT4KCgkJCQkJPGZpbmFsTmFtZT4ke3Byb2plY3QuYXJ0aWZhY3RJZH0tJHtwcm9qZWN0LnZlcnNpb259PC9maW5hbE5hbWU+CgogICAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdG9yUmVmcz4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdG9yUmVmPmphci13aXRoLWRlcGVuZGVuY2llczwvZGVzY3JpcHRvclJlZj4KCiAgICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdG9yUmVmcz4KCiAgICAgICAgICAgICAgICA8L2NvbmZpZ3VyYXRpb24+CgogICAgICAgICAgICA8L3BsdWdpbj4KCiAgICAgICAgICAgIAoKCQkJPHBsdWdpbj4KCgkJCQk8YXJ0aWZhY3RJZD5tYXZlbi1zb3VyY2UtcGx1Z2luPC9hcnRpZmFjdElkPgoKCQkJCTxleGVjdXRpb25zPgoKCQkJCQk8ZXhlY3V0aW9uPgoKCQkJCQkJPGlkPmF0dGFjaC1zb3VyY2VzPC9pZD4KCgkJCQkJCTxwaGFzZT52ZXJpZnk8L3BoYXNlPgoKCQkJCQkJPGdvYWxzPgoKCQkJCQkJCTxnb2FsPmphci1uby1mb3JrPC9nb2FsPgoKCQkJCQkJPC9nb2Fscz4KCgkJCQkJPC9leGVjdXRpb24+CgoJCQkJPC9leGVjdXRpb25zPgoKCQkJPC9wbHVnaW4+CgoJCQkKCgkJCTxwbHVnaW4+CgoJCQkJPGFydGlmYWN0SWQ+bWF2ZW4tZmFpbHNhZmUtcGx1Z2luPC9hcnRpZmFjdElkPgoKCQkJCTxjb25maWd1cmF0aW9uPgoKCQkJCQk8c2tpcD4ke2l0LnNraXB9PC9za2lwPgoKCQkJCTwvY29uZmlndXJhdGlvbj4KCgkJCTwvcGx1Z2luPgoKCQkJCgoJCQk8cGx1Z2luPgoKCQkJCTxhcnRpZmFjdElkPm1hdmVuLWluc3RhbGwtcGx1Z2luPC9hcnRpZmFjdElkPgoKCQkJCTxleGVjdXRpb25zPgoKCQkJCQk8ZXhlY3V0aW9uPgoKCQkJCQkJPGlkPmluc3RhbGwtY29tcG9uZW50PC9pZD4KCgkJCQkJCTwhLS08cGhhc2U+cGFja2FnZTwvcGhhc2U+LS0+CgoJCQkJCQk8cGhhc2U+aW5zdGFsbDwvcGhhc2U+CgoJCQkJCQk8Z29hbHM+CgoJCQkJCQkJPGdvYWw+aW5zdGFsbC1maWxlPC9nb2FsPgoKCQkJCQkJPC9nb2Fscz4KCgkJCQkJCTxjb25maWd1cmF0aW9uPgoKCQkJCQkJCTxhcnRpZmFjdElkPiR7cHJvamVjdC5hcnRpZmFjdElkfTwvYXJ0aWZhY3RJZD4KCgkJCQkJCQk8Z3JvdXBJZD4ke3Byb2plY3QuZ3JvdXBJZH08L2dyb3VwSWQ+CgoJCQkJCQkJPHZlcnNpb24+JHtwcm9qZWN0LnZlcnNpb259PC92ZXJzaW9uPgoKCQkJCQkJCTxwYWNrYWdpbmc+JHtwcm9qZWN0LnBhY2thZ2luZ308L3BhY2thZ2luZz4KCgkJCQkJCQk8Y3JlYXRlQ2hlY2tzdW0+dHJ1ZTwvY3JlYXRlQ2hlY2tzdW0+CgoJCQkJCQkJPGZpbGU+JHtwcm9qZWN0LmJ1aWxkLmRpcmVjdG9yeX0vJHtwcm9qZWN0LmFydGlmYWN0SWR9LSR7cHJvamVjdC52ZXJzaW9ufS4ke3Byb2plY3QucGFja2FnaW5nfTwvZmlsZT4KCgkJCQkJCTwvY29uZmlndXJhdGlvbj4KCgkJCQkJPC9leGVjdXRpb24+CgoJCQkJPC9leGVjdXRpb25zPgoKCQkJPC9wbHVnaW4+CgoJCQkKCgkJCTxwbHVnaW4+CgoJCQkJPGdyb3VwSWQ+b3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zPC9ncm91cElkPgoKCQkJCTxhcnRpZmFjdElkPm1hdmVuLWRlcGVuZGVuY3ktcGx1Z2luPC9hcnRpZmFjdElkPgoKCQkJCTxleGVjdXRpb25zPgoKCQkJCQk8ZXhlY3V0aW9uPgoKCQkJCSAgICAJPGlkPmNvcHktYXJ0aWZhY3Q8L2lkPgoKCQkJCSAgICAgIAk8cGhhc2U+aW5zdGFsbDwvcGhhc2U+CgoJCQkJICAgICAgCTxnb2Fscz4KCgkJCQkgICAgICAgIAk8Z29hbD5jb3B5PC9nb2FsPgoKCQkJCSAgICAgIAk8L2dvYWxzPgoKCQkJCSAgICAgIAk8Y29uZmlndXJhdGlvbj4KCgkJCQkgICAgICAgIAk8YXJ0aWZhY3RJdGVtcz4KCgkJCQkgICAgICAgICAgICAJPGFydGlmYWN0SXRlbT4KCgkJCQkgICAgICAgICAgICAgICAgCTxncm91cElkPiR7cHJvamVjdC5ncm91cElkfTwvZ3JvdXBJZD4KCgkJCQkgICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPiR7cHJvamVjdC5hcnRpZmFjdElkfTwvYXJ0aWZhY3RJZD4KCgkJCQkgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPiR7cHJvamVjdC52ZXJzaW9ufTwvdmVyc2lvbj4KCgkJCQkgICAgICAgICAgICAgICAgICAgIDx0eXBlPiR7cHJvamVjdC5wYWNrYWdpbmd9PC90eXBlPgoKCQkJCSAgICAgICAgICAgICAgICAgICAgPG91dHB1dERpcmVjdG9yeT4ke3Nlc3Npb24uZXhlY3V0aW9uUm9vdERpcmVjdG9yeX0vb3V0cHV0Lzwvb3V0cHV0RGlyZWN0b3J5PgoKCQkJCSAgICAgICAgICAgICAgICA8L2FydGlmYWN0SXRlbT4gCgoJCQkJICAgICAgICAgICAJPC9hcnRpZmFjdEl0ZW1zPgoKCQkJCSAgICAgIAk8L2NvbmZpZ3VyYXRpb24+CgoJCQkJCTwvZXhlY3V0aW9uPgoKCQkJCTwvZXhlY3V0aW9ucz4KCgkJCTwvcGx1Z2luPgoKCQkJCgoJCQk8cGx1Z2luPgoKCQkJCTxhcnRpZmFjdElkPm1hdmVuLWRlcGxveS1wbHVnaW48L2FydGlmYWN0SWQ+CgoJCQkJPGV4ZWN1dGlvbnM+CgoJCQkJCTxleGVjdXRpb24+CgoJCQkJCQk8aWQ+ZGVwbG95LW1vdWRsZTwvaWQ+CgoJCQkJCQk8cGhhc2U+ZGVwbG95PC9waGFzZT4KCgkJCQkJCTxnb2Fscz4KCgkJCQkJCQk8Z29hbD5kZXBsb3ktZmlsZTwvZ29hbD4KCgkJCQkJCTwvZ29hbHM+CgoJCQkJCQk8Y29uZmlndXJhdGlvbj4KCgkJCQkJCQk8Z2VuZXJhdGVQb20+dHJ1ZTwvZ2VuZXJhdGVQb20+CgoJCQkJCQkJPGFydGlmYWN0SWQ+JHtwcm9qZWN0LmFydGlmYWN0SWR9PC9hcnRpZmFjdElkPgoKCQkJCQkJCTxncm91cElkPiR7cHJvamVjdC5ncm91cElkfTwvZ3JvdXBJZD4KCgkJCQkJCQk8dmVyc2lvbj4ke3Byb2plY3QudmVyc2lvbn08L3ZlcnNpb24+CgoJCQkJCQkJPHBhY2thZ2luZz4ke3Byb2plY3QucGFja2FnaW5nfTwvcGFja2FnaW5nPgoKCQkJCQkJCTxyZXBvc2l0b3J5SWQ+JHtwcm9qZWN0LmRpc3RyaWJ1dGlvbk1hbmFnZW1lbnQucmVwb3NpdG9yeS5pZH08L3JlcG9zaXRvcnlJZD4KCgkJCQkJCQk8dXJsPiR7cHJvamVjdC5kaXN0cmlidXRpb25NYW5hZ2VtZW50LnJlcG9zaXRvcnkudXJsfTwvdXJsPgoKCQkJCQkJCTxmaWxlPiR7cHJvamVjdC5idWlsZC5kaXJlY3Rvcnl9LyR7cHJvamVjdC5hcnRpZmFjdElkfS0ke3Byb2plY3QudmVyc2lvbn0uJHtwcm9qZWN0LnBhY2thZ2luZ308L2ZpbGU+CgoJCQkJCQk8L2NvbmZpZ3VyYXRpb24+CgoJCQkJCTwvZXhlY3V0aW9uPgoKCQkJCTwvZXhlY3V0aW9ucz4KCgkJCTwvcGx1Z2luPgoKCQkJCgoJCQk8cGx1Z2luPgoKCQkJCTxhcnRpZmFjdElkPm1hdmVuLXByb2plY3QtaW5mby1yZXBvcnRzLXBsdWdpbjwvYXJ0aWZhY3RJZD4KCgkJCQk8ZXhlY3V0aW9ucz4KCgkJCQkJPGV4ZWN1dGlvbj4KCgkJCQkJCTxpZD50ZXN0LXNob3dpbmctdGhlLWV4ZWN1dGlvbi1pZDwvaWQ+CgoJCQkJCQk8cGhhc2U+Y2xlYW48L3BoYXNlPgoKCQkJCQkJPGdvYWxzPgoKCQkJCQkJCTxnb2FsPmRlcGVuZGVuY3ktaW5mbzwvZ29hbD4KCgkJCQkJCQk8Z29hbD5kZXBlbmRlbmNpZXM8L2dvYWw+CgoJCQkJCQk8L2dvYWxzPgoKCQkJCQk8L2V4ZWN1dGlvbj4KCgkJCQk8L2V4ZWN1dGlvbnM+CgoJCQk8L3BsdWdpbj4JCQkKCgkJCQoKCQkJPCEtLSBTcHJpbmcgQm9vdCAtLT4KCgkJCTwhLS0gQ29tbWFuZCA6IC1Ec3ByaW5nLWJvb3QucnVuLnByb2ZpbGVzPT8gLS0+CgoJCQk8IS0tIE1hbnN1biDkuI3pnIDopoFyZXBhY2thZ2Ug5Y+D6ICD5LiL6Z2i57ay5Z2AIC0tPgoKCQkJPCEtLSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80MzY0MTY2NC93aHktc3ByaW5nLWJvb3QtZ2VuZXJhdGVzLWphci1vci13YXItZmlsZS13aXRoLW9yaWdpbmFsLWV4dGVuc2lvbiAtLT4KCgkJCTwhLS0KCgkJCTxwbHVnaW4+CgoJCQkJPGdyb3VwSWQ+b3JnLnNwcmluZ2ZyYW1ld29yay5ib290PC9ncm91cElkPgoKCQkJCTxhcnRpZmFjdElkPnNwcmluZy1ib290LW1hdmVuLXBsdWdpbjwvYXJ0aWZhY3RJZD4KCgkJCQk8ZXhlY3V0aW9ucz4KCgkJCQkJCgoJCQkJCTxleGVjdXRpb24+CgoJCQkJCQk8aWQ+cmVwYWNrYWdlLW1vdWRsZTwvaWQ+CgoJCQkJCQk8Z29hbHM+CgoJCQkJCQkJPGdvYWw+cmVwYWNrYWdlPC9nb2FsPgoKCQkJCQkJPC9nb2Fscz4KCgkJCQkJPC9leGVjdXRpb24+CgoJCQkJCQoKCQkJCQk8ZXhlY3V0aW9uPgoKCQkJCQkJPGlkPnByZS1pbnRlZ3JhdGlvbi10ZXN0PC9pZD4KCgkJCQkJCTxnb2Fscz4KCgkJCQkJCQk8Z29hbD5zdGFydDwvZ29hbD4KCgkJCQkJCTwvZ29hbHM+CgoJCQkJCQk8Y29uZmlndXJhdGlvbj4KCgkJCQkJCQk8c2tpcD4ke2l0LnNraXB9PC9za2lwPgoKCQkJCQkJPC9jb25maWd1cmF0aW9uPgoKCQkJCQk8L2V4ZWN1dGlvbj4KCgkJCQkJCgoJCQkJCTxleGVjdXRpb24+CgoJCQkJCQk8aWQ+cG9zdC1pbnRlZ3JhdGlvbi10ZXN0PC9pZD4KCgkJCQkJCTxnb2Fscz4KCgkJCQkJCQk8Z29hbD5zdG9wPC9nb2FsPgoKCQkJCQkJPC9nb2Fscz4KCgkJCQkJCTxjb25maWd1cmF0aW9uPgoKCQkJCQkJCTxza2lwPiR7aXQuc2tpcH08L3NraXA+CgoJCQkJCQk8L2NvbmZpZ3VyYXRpb24+CgoJCQkJCTwvZXhlY3V0aW9uPgoKCQkJCQkKCgkJCQk8L2V4ZWN1dGlvbnM+CgoJCQkJCgoJCQkJPGNvbmZpZ3VyYXRpb24+CgoJCQkJICAgIDxtYWluQ2xhc3M+bm9uZTwvbWFpbkNsYXNzPgoKCQkJCQk8YWRkUmVzb3VyY2VzPnRydWU8L2FkZFJlc291cmNlcz4KCgkJCQkJPGluY2x1ZGVTeXN0ZW1TY29wZT50cnVlPC9pbmNsdWRlU3lzdGVtU2NvcGU+CgoJCQkJCTxqbXhQb3J0PiR7am14LnBvcnR9PC9qbXhQb3J0PgoKCQkJCTwvY29uZmlndXJhdGlvbj4KCgkJCQkKCgkJCTwvcGx1Z2luPgoKCQkJLS0+CgoJCQkKCgkJCTwhLS08cGx1Z2luPgoKCQkJCTxncm91cElkPm9yZy5zcHJpbmdkb2M8L2dyb3VwSWQ+CgoJCQkJPGFydGlmYWN0SWQ+c3ByaW5nZG9jLW9wZW5hcGktbWF2ZW4tcGx1Z2luPC9hcnRpZmFjdElkPgoKCQkJCTx2ZXJzaW9uPjAuMjwvdmVyc2lvbj4KCgkJCQk8ZXhlY3V0aW9ucz4KCgkJCQkJPGV4ZWN1dGlvbj4KCgkJCQkJCTxpZD5nZW5lcmF0ZS1kb2M8L2lkPgoKCQkJCQkJPHBoYXNlPmludGVncmF0aW9uLXRlc3Q8L3BoYXNlPgoKCQkJCQkJPGdvYWxzPgoKCQkJCQkJCTxnb2FsPmdlbmVyYXRlPC9nb2FsPgoKCQkJCQkJPC9nb2Fscz4KCgkJCQkJPC9leGVjdXRpb24+CgoJCQkJPC9leGVjdXRpb25zPgoKCQkJCTxjb25maWd1cmF0aW9uPgoKCQkJCQk8YXBpRG9jc1VybD5odHRwOi8vbG9jYWxob3N0OjgwODAvdjMvYXBpLWRvY3M8L2FwaURvY3NVcmw+CgoJCQkJCTxvdXRwdXRGaWxlTmFtZT5vcGVuYXBpLmpzb248L291dHB1dEZpbGVOYW1lPgoKCQkJCQk8b3V0cHV0RGlyPiR7cHJvamVjdC5idWlsZC5kaXJlY3Rvcnl9PC9vdXRwdXREaXI+CgoJCQkJPC9jb25maWd1cmF0aW9uPgoKCQkJPC9wbHVnaW4+CgoJCQktLT4JCQkKCgkJPC9wbHVnaW5zPgoKCQkKCgkJPHBsdWdpbk1hbmFnZW1lbnQ+CgoJCQk8cGx1Z2lucy8+CgoJCTwvcGx1Z2luTWFuYWdlbWVudD4KCgkJCgoJCTxyZXNvdXJjZXM+CgoJCQkKCgkJCTxyZXNvdXJjZT4KCiAgICAgICAgICAgICAgICA8ZGlyZWN0b3J5PnNyYy9tYWluL3Jlc291cmNlcy88L2RpcmVjdG9yeT4KCgkJCQk8ZmlsdGVyaW5nPmZhbHNlPC9maWx0ZXJpbmc+CgoJCQkJPGV4Y2x1ZGVzPgoKCQkJCQk8ZXhjbHVkZT4qKi9ib290c3RyYXAtKi55bWw8L2V4Y2x1ZGU+CgoJCQkJCTxleGNsdWRlPioqL2FwcGxpY2F0aW9uLSoueW1sPC9leGNsdWRlPgoKCQkJCQk8ZXhjbHVkZT4qKi9ib290c3RyYXAtKi5wcm9wZXJ0aWVzPC9leGNsdWRlPgoKCQkJCQk8ZXhjbHVkZT4qKi9hcHBsaWNhdGlvbi0qLnByb3BlcnRpZXM8L2V4Y2x1ZGU+CgoJCQkJPC9leGNsdWRlcz4KCiAgICAgICAgICAgIDwvcmVzb3VyY2U+CgoJCQkKCgkJCTxyZXNvdXJjZT4KCiAgICAgICAgICAgICAgICA8ZGlyZWN0b3J5PnNyYy9tYWluL3Jlc291cmNlcy88L2RpcmVjdG9yeT4KCgkJCQk8ZmlsdGVyaW5nPnRydWU8L2ZpbHRlcmluZz4KCgkJCQk8aW5jbHVkZXM+CgoJCQkJCTxpbmNsdWRlPioqL2xvZ2JhY2stc3ByaW5nLnhtbDwvaW5jbHVkZT4KCgkJCQkJPGluY2x1ZGU+KiovYm9vdHN0cmFwLnltbDwvaW5jbHVkZT4KCgkJCQkJPGluY2x1ZGU+KiovYm9vdHN0cmFwLSR7bWF2ZW4ucHJvZmlsZXMuYWN0aXZlOmRlZmF1bHR9LnltbDwvaW5jbHVkZT4KCgkJCQkJPGluY2x1ZGU+KiovYXBwbGljYXRpb24ueW1sPC9pbmNsdWRlPgoKCQkJCQk8aW5jbHVkZT4qKi9hcHBsaWNhdGlvbi0ke21hdmVuLnByb2ZpbGVzLmFjdGl2ZTpkZWZhdWx0fS55bWw8L2luY2x1ZGU+CgoJCQkJCTxpbmNsdWRlPioqL2Jvb3RzdHJhcC5wcm9wZXJ0aWVzPC9pbmNsdWRlPgoKCQkJCQk8aW5jbHVkZT4qKi9ib290c3RyYXAtJHttYXZlbi5wcm9maWxlcy5hY3RpdmU6ZGVmYXVsdH0ucHJvcGVydGllczwvaW5jbHVkZT4KCgkJCQkJPGluY2x1ZGU+KiovYXBwbGljYXRpb24ucHJvcGVydGllczwvaW5jbHVkZT4KCgkJCQkJPGluY2x1ZGU+KiovYXBwbGljYXRpb24tJHttYXZlbi5wcm9maWxlcy5hY3RpdmU6ZGVmYXVsdH0ucHJvcGVydGllczwvaW5jbHVkZT4KCgkJCQk8L2luY2x1ZGVzPgoKICAgICAgICAgICAgPC9yZXNvdXJjZT4KCgkJCQoKICAgICAgICA8L3Jlc291cmNlcz4KCgkJCgoJCTx0ZXN0UmVzb3VyY2VzPgoKCQkJCgoJCQk8dGVzdFJlc291cmNlPgoKICAgICAgICAgICAgICAgIDxkaXJlY3Rvcnk+c3JjL3Rlc3QvcmVzb3VyY2VzLzwvZGlyZWN0b3J5PgoKCQkJCTxmaWx0ZXJpbmc+ZmFsc2U8L2ZpbHRlcmluZz4KCgkJCQk8ZXhjbHVkZXM+CgoJCQkJCTxleGNsdWRlPioqL2Jvb3RzdHJhcC0qLnltbDwvZXhjbHVkZT4KCgkJCQkJPGV4Y2x1ZGU+KiovYXBwbGljYXRpb24tKi55bWw8L2V4Y2x1ZGU+CgoJCQkJCTxleGNsdWRlPioqL2Jvb3RzdHJhcC0qLnByb3BlcnRpZXM8L2V4Y2x1ZGU+CgoJCQkJCTxleGNsdWRlPioqL2FwcGxpY2F0aW9uLSoucHJvcGVydGllczwvZXhjbHVkZT4KCgkJCQk8L2V4Y2x1ZGVzPgoKCQkJPC90ZXN0UmVzb3VyY2U+CgoJCQkKCgkJCTx0ZXN0UmVzb3VyY2U+CgogICAgICAgICAgICAgICAgPGRpcmVjdG9yeT5zcmMvdGVzdC9yZXNvdXJjZXMvPC9kaXJlY3Rvcnk+CgoJCQkJPGZpbHRlcmluZz50cnVlPC9maWx0ZXJpbmc+CgoJCQkJPGluY2x1ZGVzPgoKCQkJCQk8aW5jbHVkZT4qKi9sb2diYWNrLXNwcmluZy54bWw8L2luY2x1ZGU+CgoJCQkJCTxpbmNsdWRlPioqL2Jvb3RzdHJhcC55bWw8L2luY2x1ZGU+CgoJCQkJCTxpbmNsdWRlPioqL2Jvb3RzdHJhcC0ke21hdmVuLnByb2ZpbGVzLmFjdGl2ZTpkZWZhdWx0fS55bWw8L2luY2x1ZGU+CgoJCQkJCTxpbmNsdWRlPioqL2FwcGxpY2F0aW9uLnltbDwvaW5jbHVkZT4KCgkJCQkJPGluY2x1ZGU+KiovYXBwbGljYXRpb24tJHttYXZlbi5wcm9maWxlcy5hY3RpdmU6ZGVmYXVsdH0ueW1sPC9pbmNsdWRlPgoKCQkJCQk8aW5jbHVkZT4qKi9ib290c3RyYXAucHJvcGVydGllczwvaW5jbHVkZT4KCgkJCQkJPGluY2x1ZGU+KiovYm9vdHN0cmFwLSR7bWF2ZW4ucHJvZmlsZXMuYWN0aXZlOmRlZmF1bHR9LnByb3BlcnRpZXM8L2luY2x1ZGU+CgoJCQkJCTxpbmNsdWRlPioqL2FwcGxpY2F0aW9uLnByb3BlcnRpZXM8L2luY2x1ZGU+CgoJCQkJCTxpbmNsdWRlPioqL2FwcGxpY2F0aW9uLSR7bWF2ZW4ucHJvZmlsZXMuYWN0aXZlOmRlZmF1bHR9LnByb3BlcnRpZXM8L2luY2x1ZGU+CgoJCQkJPC9pbmNsdWRlcz4KCiAgICAgICAgICAgIDwvdGVzdFJlc291cmNlPgoKCQkJCgoJCTwvdGVzdFJlc291cmNlcz4KCgkJCgoJPC9idWlsZD4KCgkKCgk8IS0tCgoJPHBsdWdpblJlcG9zaXRvcmllcz4KCgkJCgogICAgICAgIDxwbHVnaW5SZXBvc2l0b3J5PgoKICAgICAgICAgICAgPGlkPnNwcmluZy1zbmFwc2hvdHM8L2lkPgoKICAgICAgICAgICAgPG5hbWU+U3ByaW5nIFNuYXBzaG90czwvbmFtZT4KCiAgICAgICAgICAgIDx1cmw+aHR0cHM6Ly9yZXBvLnNwcmluZy5pby9zbmFwc2hvdDwvdXJsPgoKCQkJPHJlbGVhc2VzPgoKCQkJCTxlbmFibGVkPnRydWU8L2VuYWJsZWQ+CgogICAgICAgICAgICA8L3JlbGVhc2VzPgkJCQoKICAgICAgICAgICAgPHNuYXBzaG90cz4KCiAgICAgICAgICAgICAgICA8ZW5hYmxlZD50cnVlPC9lbmFibGVkPgoKICAgICAgICAgICAgPC9zbmFwc2hvdHM+CgogICAgICAgIDwvcGx1Z2luUmVwb3NpdG9yeT4KCgkJCgogICAgICAgIDxwbHVnaW5SZXBvc2l0b3J5PgoKICAgICAgICAgICAgPGlkPnNwcmluZy1taWxlc3RvbmVzPC9pZD4KCiAgICAgICAgICAgIDxuYW1lPlNwcmluZyBNaWxlc3RvbmVzPC9uYW1lPgoKICAgICAgICAgICAgPHVybD5odHRwczovL3JlcG8uc3ByaW5nLmlvL21pbGVzdG9uZTwvdXJsPgoKICAgICAgICA8L3BsdWdpblJlcG9zaXRvcnk+CgoJCQoKICAgIDwvcGx1Z2luUmVwb3NpdG9yaWVzPgoKICAgIAoKCTxyZXBvc2l0b3JpZXM+CgoJCQoKCQk8cmVwb3NpdG9yeT4KCgkJCTxpZD5tdm5yZXBvc2l0b3J5LXJlbGVhc2VzPC9pZD4KCgkJCTxuYW1lPm12bnJlcG9zaXRvcnk8L25hbWU+CgoJCQk8dXJsPmh0dHBzOi8vd3d3LmViaS5hYy51ay9pbnRhY3QvbWF2ZW4vbmV4dXMvY29udGVudC9yZXBvc2l0b3JpZXMvcHVibGljPC91cmw+CgoJCQk8cmVsZWFzZXM+CgoJCQkJPGVuYWJsZWQ+dHJ1ZTwvZW5hYmxlZD4KCiAgICAgICAgICAgIDwvcmVsZWFzZXM+CgoJCQk8c25hcHNob3RzPgoKCQkJCTxlbmFibGVkPmZhbHNlPC9lbmFibGVkPgoKCQkJPC9zbmFwc2hvdHM+CQkJCgoJCTwvcmVwb3NpdG9yeT4KCgkJCgogICAgICAgIDxyZXBvc2l0b3J5PgoKICAgICAgICAgICAgPGlkPnNwcmluZy1zbmFwc2hvdHM8L2lkPgoKICAgICAgICAgICAgPG5hbWU+U3ByaW5nIFNuYXBzaG90czwvbmFtZT4KCiAgICAgICAgICAgIDx1cmw+aHR0cHM6Ly9yZXBvLnNwcmluZy5pby9zbmFwc2hvdDwvdXJsPgoKICAgICAgICAgICAgPHNuYXBzaG90cz4KCiAgICAgICAgICAgICAgICA8ZW5hYmxlZD50cnVlPC9lbmFibGVkPgoKICAgICAgICAgICAgPC9zbmFwc2hvdHM+CgogICAgICAgIDwvcmVwb3NpdG9yeT4KCgkJCgogICAgICAgIDxyZXBvc2l0b3J5PgoKICAgICAgICAgICAgPGlkPnNwcmluZy1taWxlc3RvbmVzPC9pZD4KCiAgICAgICAgICAgIDxuYW1lPlNwcmluZyBNaWxlc3RvbmVzPC9uYW1lPgoKICAgICAgICAgICAgPHVybD5odHRwczovL3JlcG8uc3ByaW5nLmlvL21pbGVzdG9uZTwvdXJsPgoKICAgICAgICA8L3JlcG9zaXRvcnk+CgoKCgkJPHJlcG9zaXRvcnk+CgoJCQk8aWQ+aml0cGFjay5pbzwvaWQ+CgoJCQk8dXJsPmh0dHBzOi8vaml0cGFjay5pbzwvdXJsPgoKCQk8L3JlcG9zaXRvcnk+CgoJCQoKICAgIDwvcmVwb3NpdG9yaWVzPgoKCS0tPgoKCQoKCTxyZXBvc2l0b3JpZXM+CgoJCTxyZXBvc2l0b3J5PgoKCQkJPGlkPmNlbnRyYWw8L2lkPgoKICAgICAgICAgICAgPG5hbWU+Q2VudHJhbCBSZXBvc2l0b3J5PC9uYW1lPgoKCQkJPHVybD5odHRwczovL25leHVzLnRhaXdhbmxpZmUuY29tL3JlcG9zaXRvcnkvdGFpd2FubGlmZS10ZWFtd2FsazwvdXJsPgoKCQkJPHJlbGVhc2VzPgoKCQkJCTxlbmFibGVkPnRydWU8L2VuYWJsZWQ+CgoJCQk8L3JlbGVhc2VzPgoKCQkJPHNuYXBzaG90cz4KCgkJCQk8ZW5hYmxlZD5mYWxzZTwvZW5hYmxlZD4KCgkJCTwvc25hcHNob3RzPgoKCQk8L3JlcG9zaXRvcnk+CgogICAgPC9yZXBvc2l0b3JpZXM+CgoJCgoJPGRlcGVuZGVuY2llcz4KCgkJCgoJCTwhLS0gU3ViIE1vZHVsZSAtLT4KCgkJPGRlcGVuZGVuY3k+CgoJCQk8Z3JvdXBJZD4ke3Byb2plY3QuZ3JvdXBJZH08L2dyb3VwSWQ+CgoJCQk8YXJ0aWZhY3RJZD50ZWFtd2Fsay1jb21tb248L2FydGlmYWN0SWQ+CgoJCTwvZGVwZW5kZW5jeT4KCgkJCgoJCTwhLS0gU3ByaW5nIEZyYW1ld29yayAtLT4KCgkJPCEtLSBodHRwczovL212bnJlcG9zaXRvcnkuY29tL2FydGlmYWN0L29yZy5zcHJpbmdmcmFtZXdvcmsuYm9vdC9zcHJpbmctYm9vdC1zdGFydGVyLXdlYiAtLT4KCgkJPGRlcGVuZGVuY3k+CgoJCQk8Z3JvdXBJZD5vcmcuc3ByaW5nZnJhbWV3b3JrLmJvb3Q8L2dyb3VwSWQ+CgoJCQk8YXJ0aWZhY3RJZD5zcHJpbmctYm9vdC1zdGFydGVyLXdlYjwvYXJ0aWZhY3RJZD4KCgkJCTwhLS0KCgkJCTxleGNsdXNpb25zPgoKCQkJCgogICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KCiAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNwcmluZ2ZyYW1ld29yay5ib290PC9ncm91cElkPgoKICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5zcHJpbmctYm9vdC1zdGFydGVyLWxvZ2dpbmc8L2FydGlmYWN0SWQ+CgogICAgICAgICAgICAgICAgPC9leGNsdXNpb24+CgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KCgkJCQkgIDxncm91cElkPm9yZy5zcHJpbmdmcmFtZXdvcmsuYm9vdDwvZ3JvdXBJZD4KCgkJCQkgIDxhcnRpZmFjdElkPnNwcmluZy1ib290LXN0YXJ0ZXItdG9tY2F0PC9hcnRpZmFjdElkPgoKCQkJCTwvZXhjbHVzaW9uPgoKCQkJCQoKICAgICAgICAgICAgPC9leGNsdXNpb25zPgoKCQkJLS0+CgoJCTwvZGVwZW5kZW5jeT4KCgkJCgoJCTwhLS0gaHR0cHM6Ly9tdm5yZXBvc2l0b3J5LmNvbS9hcnRpZmFjdC9vcmcuc3ByaW5nZnJhbWV3b3JrLmJvb3Qvc3ByaW5nLWJvb3Qtc3RhcnRlci1hY3R1YXRvciAtLT4KCgkJPCEtLTxkZXBlbmRlbmN5PgoKCQkJPGdyb3VwSWQ+b3JnLnNwcmluZ2ZyYW1ld29yay5ib290PC9ncm91cElkPgoKCQkJPGFydGlmYWN0SWQ+c3ByaW5nLWJvb3Qtc3RhcnRlci1hY3R1YXRvcjwvYXJ0aWZhY3RJZD4KCgkJCTxleGNsdXNpb25zPgoKCQkJCTxleGNsdXNpb24+CgoJCQkJCTxncm91cElkPmNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5jb3JlPC9ncm91cElkPgoKCQkJCQk8YXJ0aWZhY3RJZD5qYWNrc29uLWRhdGFiaW5kPC9hcnRpZmFjdElkPgoKCQkJCTwvZXhjbHVzaW9uPgoKCQkJPC9leGNsdXNpb25zPgoKCQk8L2RlcGVuZGVuY3k+CgoJCS0tPgoKCQk8IS0tIGh0dHBzOi8vbXZucmVwb3NpdG9yeS5jb20vYXJ0aWZhY3Qvb3JnLnNwcmluZ2ZyYW1ld29yay5ib290L3NwcmluZy1ib290LXN0YXJ0ZXItc2VjdXJpdHkgLS0+CgoJCTxkZXBlbmRlbmN5PgoKCQkgICAgPGdyb3VwSWQ+b3JnLnNwcmluZ2ZyYW1ld29yay5ib290PC9ncm91cElkPgoKCQkgICAgPGFydGlmYWN0SWQ+c3ByaW5nLWJvb3Qtc3RhcnRlci1zZWN1cml0eTwvYXJ0aWZhY3RJZD4KCgkJPC9kZXBlbmRlbmN5PgoKCQkKCgkJPCEtLSBodHRwczovL212bnJlcG9zaXRvcnkuY29tL2FydGlmYWN0L29yZy5zcHJpbmdmcmFtZXdvcmsuYm9vdC9zcHJpbmctYm9vdC1zdGFydGVyLWRhdGEtanBhIC0tPgoKCQk8ZGVwZW5kZW5jeT4KCgkJCTxncm91cElkPm9yZy5zcHJpbmdmcmFtZXdvcmsuYm9vdDwvZ3JvdXBJZD4KCgkJCTxhcnRpZmFjdElkPnNwcmluZy1ib290LXN0YXJ0ZXItZGF0YS1qcGE8L2FydGlmYWN0SWQ+CgoJCQk8c2NvcGU+Y29tcGlsZTwvc2NvcGU+CgoJCTwvZGVwZW5kZW5jeT4KCgkJCgoJCTwhLS0gaHR0cHM6Ly9tdm5yZXBvc2l0b3J5LmNvbS9hcnRpZmFjdC9vcmcuc3ByaW5nZnJhbWV3b3JrLmJvb3Qvc3ByaW5nLWJvb3Qtc3RhcnRlci1oYXRlb2FzIC0tPgoKCQk8ZGVwZW5kZW5jeT4KCgkJICAgIDxncm91cElkPm9yZy5zcHJpbmdmcmFtZXdvcmsuYm9vdDwvZ3JvdXBJZD4KCgkJICAgIDxhcnRpZmFjdElkPnNwcmluZy1ib290LXN0YXJ0ZXItaGF0ZW9hczwvYXJ0aWZhY3RJZD4KCgkJPC9kZXBlbmRlbmN5PgoKCQkKCgkJPCEtLSBodHRwczovL212bnJlcG9zaXRvcnkuY29tL2FydGlmYWN0L29yZy5zcHJpbmdmcmFtZXdvcmsuYm9vdC9zcHJpbmctYm9vdC1kZXZ0b29scyAtLT4KCgkJPCEtLTxkZXBlbmRlbmN5PgoKCQkJPGdyb3VwSWQ+b3JnLnNwcmluZ2ZyYW1ld29yay5ib290PC9ncm91cElkPgoKCQkJPGFydGlmYWN0SWQ+c3ByaW5nLWJvb3QtZGV2dG9vbHM8L2FydGlmYWN0SWQ+CgoJCQk8b3B0aW9uYWw+dHJ1ZTwvb3B0aW9uYWw+CgoJCQk8c2NvcGU+cHJvdmlkZWQ8L3Njb3BlPgoKCQk8L2RlcGVuZGVuY3k+CgoJCS0tPgoKCQkKCgkJPCEtLSBodHRwczovL212bnJlcG9zaXRvcnkuY29tL2FydGlmYWN0L29yZy5zcHJpbmdmcmFtZXdvcmsuYm9vdC9zcHJpbmctYm9vdC1zdGFydGVyLXRvbWNhdCAtLT4KCgkJPCEtLQoKCQk8ZGVwZW5kZW5jeT4KCiAgICAgICAgICAgIDxncm91cElkPm9yZy5zcHJpbmdmcmFtZXdvcmsuYm9vdDwvZ3JvdXBJZD4KCiAgICAgICAgICAgIDxhcnRpZmFjdElkPnNwcmluZy1ib290LXN0YXJ0ZXItdG9tY2F0PC9hcnRpZmFjdElkPgoKICAgICAgICAgICAgPHNjb3BlPnByb3ZpZGVkPC9zY29wZT4KCiAgICAgICAgPC9kZXBlbmRlbmN5PgoKCQktLT4KCgkJCgoJCTwhLS0gaHR0cHM6Ly9tdm5yZXBvc2l0b3J5LmNvbS9hcnRpZmFjdC9vcmcuc3ByaW5nZnJhbWV3b3JrLmJvb3Qvc3ByaW5nLWJvb3Qtc3RhcnRlci10ZXN0IC0tPgoKCQk8ZGVwZW5kZW5jeT4KCgkJCTxncm91cElkPm9yZy5zcHJpbmdmcmFtZXdvcmsuYm9vdDwvZ3JvdXBJZD4KCgkJCTxhcnRpZmFjdElkPnNwcmluZy1ib290LXN0YXJ0ZXItdGVzdDwvYXJ0aWZhY3RJZD4KCgkJCTxzY29wZT50ZXN0PC9zY29wZT4KCgkJCTxleGNsdXNpb25zPgoKCQkJCTxleGNsdXNpb24+CgoJCQkJCTxncm91cElkPm9yZy5qdW5pdC52aW50YWdlPC9ncm91cElkPgoKCQkJCQk8YXJ0aWZhY3RJZD5qdW5pdC12aW50YWdlLWVuZ2luZTwvYXJ0aWZhY3RJZD4KCgkJCQk8L2V4Y2x1c2lvbj4KCgkJCTwvZXhjbHVzaW9ucz4KCgkJPC9kZXBlbmRlbmN5PgoKCgoKCgkJPCEtLSBTcHJpbmcgLS0+CgoJCTwhLS0gaHR0cHM6Ly9tdm5yZXBvc2l0b3J5LmNvbS9hcnRpZmFjdC9vcmcuc3ByaW5nZnJhbWV3b3JrLnNlY3VyaXR5L3NwcmluZy1zZWN1cml0eS1jYXMgLS0+CgoJCTxkZXBlbmRlbmN5PgoKCQkgICAgPGdyb3VwSWQ+b3JnLnNwcmluZ2ZyYW1ld29yay5zZWN1cml0eTwvZ3JvdXBJZD4KCgkJICAgIDxhcnRpZmFjdElkPnNwcmluZy1zZWN1cml0eS1jYXM8L2FydGlmYWN0SWQ+CgoJCTwvZGVwZW5kZW5jeT4KCgkJCgoJCTwhLS0gaHR0cHM6Ly9tdm5yZXBvc2l0b3J5LmNvbS9hcnRpZmFjdC9vcmcuc3ByaW5nZnJhbWV3b3JrLnNlY3VyaXR5L3NwcmluZy1zZWN1cml0eS10ZXN0IC0tPgoKCQk8ZGVwZW5kZW5jeT4KCiAgICAgICAgICAgIDxncm91cElkPm9yZy5zcHJpbmdmcmFtZXdvcmsuc2VjdXJpdHk8L2dyb3VwSWQ+CgogICAgICAgICAgICA8YXJ0aWZhY3RJZD5zcHJpbmctc2VjdXJpdHktdGVzdDwvYXJ0aWZhY3RJZD4KCiAgICAgICAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4KCiAgICAgICAgPC9kZXBlbmRlbmN5PgoKCQkKCgkJPCEtLSBodHRwczovL212bnJlcG9zaXRvcnkuY29tL2FydGlmYWN0L29yZy5zcHJpbmdmcmFtZXdvcmsucmV0cnkvc3ByaW5nLXJldHJ5IC0tPgoKCQk8ZGVwZW5kZW5jeT4KCgkJICAgIDxncm91cElkPm9yZy5zcHJpbmdmcmFtZXdvcmsucmV0cnk8L2dyb3VwSWQ+CgoJCSAgICA8YXJ0aWZhY3RJZD5zcHJpbmctcmV0cnk8L2FydGlmYWN0SWQ+CgoJCTwvZGVwZW5kZW5jeT4KCgkJCgoJCTwhLS0gaHR0cHM6Ly9tdm5yZXBvc2l0b3J5LmNvbS9hcnRpZmFjdC9vcmcuc3ByaW5nZnJhbWV3b3JrL3NwcmluZy1veG0gLS0+CgoJCTxkZXBlbmRlbmN5PgoKCQkJPGdyb3VwSWQ+b3JnLnNwcmluZ2ZyYW1ld29yazwvZ3JvdXBJZD4KCgkJCTxhcnRpZmFjdElkPnNwcmluZy1veG08L2FydGlmYWN0SWQ+CgoJCTwvZGVwZW5kZW5jeT4KCgkJCgoJCTwhLS0gSmF2YXggLS0+CgoJCTwhLS0gaHR0cHM6Ly9tdm5yZXBvc2l0b3J5LmNvbS9hcnRpZmFjdC9qYXZheC52YWxpZGF0aW9uL3ZhbGlkYXRpb24tYXBpCgoJCTxkZXBlbmRlbmN5PgoKCQkJPGdyb3VwSWQ+amF2YXgudmFsaWRhdGlvbjwvZ3JvdXBJZD4KCgkJCTxhcnRpZmFjdElkPnZhbGlkYXRpb24tYXBpPC9hcnRpZmFjdElkPgoKCQk8L2RlcGVuZGVuY3k+CgoJCSAtLT4KCgkJIAoKCQk8IS0tIGh0dHBzOi8vbXZucmVwb3NpdG9yeS5jb20vYXJ0aWZhY3QvamFrYXJ0YS52YWxpZGF0aW9uL2pha2FydGEudmFsaWRhdGlvbi1hcGkgLS0+CgoJCTxkZXBlbmRlbmN5PgoKCQkgICAgPGdyb3VwSWQ+amFrYXJ0YS52YWxpZGF0aW9uPC9ncm91cElkPgoKCQkgICAgPGFydGlmYWN0SWQ+amFrYXJ0YS52YWxpZGF0aW9uLWFwaTwvYXJ0aWZhY3RJZD4KCgkJPC9kZXBlbmRlbmN5PgoKCQkKCgkJPCEtLSBodHRwczovL212bnJlcG9zaXRvcnkuY29tL2FydGlmYWN0L29yZy5oaWJlcm5hdGUvaGliZXJuYXRlLWVudGl0eW1hbmFnZXIgLS0+CgoJCTwhLS08ZGVwZW5kZW5jeT4KCgkJICAgIDxncm91cElkPm9yZy5oaWJlcm5hdGU8L2dyb3VwSWQ+CgoJCSAgICA8YXJ0aWZhY3RJZD5oaWJlcm5hdGUtZW50aXR5bWFuYWdlcjwvYXJ0aWZhY3RJZD4KCgkJICAgIDx2ZXJzaW9uPjUuNC4xNy5GaW5hbDwvdmVyc2lvbj4KCgkJPC9kZXBlbmRlbmN5Pi0tPgoKCQkKCgkJPCEtLSBIaWJlcm5hdGUgLS0+CgoJCTwhLS0gaHR0cHM6Ly9tdm5yZXBvc2l0b3J5LmNvbS9hcnRpZmFjdC9vcmcuaGliZXJuYXRlLnZhbGlkYXRvci9oaWJlcm5hdGUtdmFsaWRhdG9yIC0tPgoKCQk8ZGVwZW5kZW5jeT4KCgkJCTxncm91cElkPm9yZy5oaWJlcm5hdGUudmFsaWRhdG9yPC9ncm91cElkPgoKCQkJPGFydGlmYWN0SWQ+aGliZXJuYXRlLXZhbGlkYXRvcjwvYXJ0aWZhY3RJZD4KCgkJPC9kZXBlbmRlbmN5PgoKCQkKCgkJPCEtLSBBcGFjaGUgQ29tbW9ucyAtLT4KCgkJPCEtLSBodHRwczovL212bnJlcG9zaXRvcnkuY29tL2FydGlmYWN0L29yZy5hcGFjaGUuY29tbW9ucy9jb21tb25zLWxhbmczIC0tPgoKCQk8ZGVwZW5kZW5jeT4KCgkJCTxncm91cElkPm9yZy5hcGFjaGUuY29tbW9uczwvZ3JvdXBJZD4KCgkJCTxhcnRpZmFjdElkPmNvbW1vbnMtbGFuZzM8L2FydGlmYWN0SWQ+CgoJCTwvZGVwZW5kZW5jeT4KCgkJCgoJCTwhLS0gaHR0cHM6Ly9tdm5yZXBvc2l0b3J5LmNvbS9hcnRpZmFjdC9vcmcuYXBhY2hlLmh0dHBjb21wb25lbnRzL2h0dHBjbGllbnQKCgkJPGRlcGVuZGVuY3k+CgoJCSAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLmh0dHBjb21wb25lbnRzPC9ncm91cElkPgoKCQkgICAgPGFydGlmYWN0SWQ+aHR0cGNsaWVudDwvYXJ0aWZhY3RJZD4KCgkJPC9kZXBlbmRlbmN5PgoKCQkgLS0+CgoJCTwhLS0gaHR0cHM6Ly9tdm5yZXBvc2l0b3J5LmNvbS9hcnRpZmFjdC9vcmcuYXBhY2hlLmh0dHBjb21wb25lbnRzLmNsaWVudDUvaHR0cGNsaWVudDUgLS0+CgoJCTxkZXBlbmRlbmN5PgoKCQkgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5odHRwY29tcG9uZW50cy5jbGllbnQ1PC9ncm91cElkPgoKCQkgICAgPGFydGlmYWN0SWQ+aHR0cGNsaWVudDU8L2FydGlmYWN0SWQ+CgoJCTwvZGVwZW5kZW5jeT4KCgkJCgoJCTwhLS0gaHR0cHM6Ly9tdm5yZXBvc2l0b3J5LmNvbS9hcnRpZmFjdC9jb20ubWljcm9zb2Z0LnNxbHNlcnZlci9tc3NxbC1qZGJjIC0tPgoKCQk8ZGVwZW5kZW5jeT4KCgkJICAgIDxncm91cElkPmNvbS5taWNyb3NvZnQuc3Fsc2VydmVyPC9ncm91cElkPgoKCQkgICAgPGFydGlmYWN0SWQ+bXNzcWwtamRiYzwvYXJ0aWZhY3RJZD4KCgkJCTx2ZXJzaW9uPjkuNC4xLmpyZTg8L3ZlcnNpb24+CgoJCTwvZGVwZW5kZW5jeT4KCgkJCgoJCTwhLS0gaHR0cHM6Ly9tdm5yZXBvc2l0b3J5LmNvbS9hcnRpZmFjdC9vcmcucHJvamVjdGxvbWJvay9sb21ib2sgLS0+CgoJCTxkZXBlbmRlbmN5PgoKCQkJPGdyb3VwSWQ+b3JnLnByb2plY3Rsb21ib2s8L2dyb3VwSWQ+CgoJCQk8YXJ0aWZhY3RJZD5sb21ib2s8L2FydGlmYWN0SWQ+CgoJCQk8c2NvcGU+cHJvdmlkZWQ8L3Njb3BlPgoKCQkJPHZlcnNpb24+MS4xOC4yMDwvdmVyc2lvbj4KCgkJPC9kZXBlbmRlbmN5PgoKCQkKCgkJPCEtLSBodHRwczovL212bnJlcG9zaXRvcnkuY29tL2FydGlmYWN0L2NvbS5mYXN0ZXJ4bWwvamFja3Nvbi14bWwtZGF0YWJpbmQgLS0+Cgo8IS0tCQk8ZGVwZW5kZW5jeT4tLT4KCjwhLS0gICAgICAgICAgCTxncm91cElkPmNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5jb3JlPC9ncm91cElkPi0tPgoKPCEtLSAgICAgICAgICAJPGFydGlmYWN0SWQ+amFja3Nvbi1kYXRhYmluZDwvYXJ0aWZhY3RJZD4tLT4KCjwhLS0gICAgICAgICAgCTx2ZXJzaW9uPjIuMTEuMDwvdmVyc2lvbj4tLT4KCjwhLS0JCTwvZGVwZW5kZW5jeT4tLT4KCgkJCgoJCTwhLS0gaHR0cHM6Ly9tdm5yZXBvc2l0b3J5LmNvbS9hcnRpZmFjdC9jb20uZmFzdGVyeG1sLmphY2tzb24uZGF0YWZvcm1hdC9qYWNrc29uLWRhdGFmb3JtYXQteG1sIC0tPgoKCQk8ZGVwZW5kZW5jeT4KCgkJICAgIDxncm91cElkPmNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5kYXRhZm9ybWF0PC9ncm91cElkPgoKCQkgICAgPGFydGlmYWN0SWQ+amFja3Nvbi1kYXRhZm9ybWF0LXhtbDwvYXJ0aWZhY3RJZD4KCgkJPC9kZXBlbmRlbmN5PgoKCQkKCgkJPCEtLSBodHRwczovL212bnJlcG9zaXRvcnkuY29tL2FydGlmYWN0L2NvbS5nb29nbGUuY29kZS5nc29uL2dzb24gLS0+CgoJCTxkZXBlbmRlbmN5PgoKCQkJPGdyb3VwSWQ+Y29tLmdvb2dsZS5jb2RlLmdzb248L2dyb3VwSWQ+CgoJCQk8YXJ0aWZhY3RJZD5nc29uPC9hcnRpZmFjdElkPgoKCQk8L2RlcGVuZGVuY3k+CgoJCQoKCQk8IS0tIGh0dHBzOi8vbXZucmVwb3NpdG9yeS5jb20vYXJ0aWZhY3QvaW8uanNvbndlYnRva2VuL2pqd3QgLS0+CgoJCTxkZXBlbmRlbmN5PgoKCQkgICAgPGdyb3VwSWQ+aW8uanNvbndlYnRva2VuPC9ncm91cElkPgoKCQkgICAgPGFydGlmYWN0SWQ+amp3dDwvYXJ0aWZhY3RJZD4KCgkJICAgIDx2ZXJzaW9uPjAuOS4xPC92ZXJzaW9uPgoKCQk8L2RlcGVuZGVuY3k+CgoJCQoKCQk8IS0tIEZpcmViYXNlIC0tPgoKCQk8ZGVwZW5kZW5jeT4KCgkJCTxncm91cElkPmNvbS5nb29nbGUuZmlyZWJhc2U8L2dyb3VwSWQ+CgoJCQk8YXJ0aWZhY3RJZD5maXJlYmFzZS1hZG1pbjwvYXJ0aWZhY3RJZD4KCgkJCTx2ZXJzaW9uPjkuNC4xPC92ZXJzaW9uPgoKCQk8L2RlcGVuZGVuY3k+CgoKCgkJPCEtLSBnb29nbGUgYXBpIC0tPgoKCQk8ZGVwZW5kZW5jeT4KCgkJCTxncm91cElkPmNvbS5nb29nbGUub2F1dGgtY2xpZW50PC9ncm91cElkPgoKCQkJPGFydGlmYWN0SWQ+Z29vZ2xlLW9hdXRoLWNsaWVudDwvYXJ0aWZhY3RJZD4KCgkJCTx2ZXJzaW9uPjEuMzAuNDwvdmVyc2lvbj4KCgkJPC9kZXBlbmRlbmN5PgoKCgoJCTxkZXBlbmRlbmN5PgoKCQkJPGdyb3VwSWQ+Y29tLmdvb2dsZS5vYXV0aC1jbGllbnQ8L2dyb3VwSWQ+CgoJCQk8YXJ0aWZhY3RJZD5nb29nbGUtb2F1dGgtY2xpZW50LWphdmE2PC9hcnRpZmFjdElkPgoKCQkJPHZlcnNpb24+MS4zMC40PC92ZXJzaW9uPgoKCQk8L2RlcGVuZGVuY3k+CgoJCTxkZXBlbmRlbmN5PgoKCQkJPGdyb3VwSWQ+Y29tLmFsaWJhYmE8L2dyb3VwSWQ+CgoJCQk8YXJ0aWZhY3RJZD5mYXN0anNvbjwvYXJ0aWZhY3RJZD4KCgkJCTx2ZXJzaW9uPjEuMi43MzwvdmVyc2lvbj4KCgkJPC9kZXBlbmRlbmN5PgoKCQk8ZGVwZW5kZW5jeT4KCgkJCTxncm91cElkPmNuLmh1dG9vbDwvZ3JvdXBJZD4KCgkJCTxhcnRpZmFjdElkPmh1dG9vbC1hbGw8L2FydGlmYWN0SWQ+CgoJCQk8dmVyc2lvbj41LjIuMzwvdmVyc2lvbj4KCgkJPC9kZXBlbmRlbmN5PgoKCQkKCgkJPCEtLSBKVW5pdCAtLT4KCgkJPCEtLSBodHRwczovL212bnJlcG9zaXRvcnkuY29tL2FydGlmYWN0L2p1bml0L2p1bml0IC0tPgoKCQk8ZGVwZW5kZW5jeT4KCgkJCTxncm91cElkPmp1bml0PC9ncm91cElkPgoKCQkJPGFydGlmYWN0SWQ+anVuaXQ8L2FydGlmYWN0SWQ+CgoJCQk8c2NvcGU+dGVzdDwvc2NvcGU+CgoJCTwvZGVwZW5kZW5jeT4KCgkJCgoJCTxkZXBlbmRlbmN5PgoKICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnJlYWN0aXZlc3RyZWFtczwvZ3JvdXBJZD4KCiAgICAgICAgICAgIDxhcnRpZmFjdElkPnJlYWN0aXZlLXN0cmVhbXM8L2FydGlmYWN0SWQ+CgogICAgICAgICAgICA8dmVyc2lvbj4xLjAuMzwvdmVyc2lvbj4KCiAgICAgICAgPC9kZXBlbmRlbmN5PgoKCQkKCgkJPGRlcGVuZGVuY3k+CgogICAgICAgICAgICA8Z3JvdXBJZD5jb20uZ2l0aHViLnVsaXNlc2JvY2NoaW88L2dyb3VwSWQ+CgogICAgICAgICAgICA8YXJ0aWZhY3RJZD5qYXN5cHQtc3ByaW5nLWJvb3Qtc3RhcnRlcjwvYXJ0aWZhY3RJZD4KCiAgICAgICAgICAgIDx2ZXJzaW9uPjMuMC4zPC92ZXJzaW9uPgoKICAgICAgICA8L2RlcGVuZGVuY3k+CgoJCQoKCQk8ZGVwZW5kZW5jeT4KCiAgICAgICAgICAgIDxncm91cElkPmNvbS50d2xpZmUuYmlvbWV0cmljczwvZ3JvdXBJZD4KCiAgICAgICAgICAgIDxhcnRpZmFjdElkPmJpb21ldHJpY3MtcnAtdXRpbDwvYXJ0aWZhY3RJZD4KCiAgICAgICAgICAgIDx2ZXJzaW9uPjEuMC4wPC92ZXJzaW9uPgoKICAgICAgICA8L2RlcGVuZGVuY3k+CgoKCiAgICAgICAgPGRlcGVuZGVuY3k+CgoJCQk8Z3JvdXBJZD5jb20uaWJtLmluZm9ybWl4PC9ncm91cElkPgoKCQkJPGFydGlmYWN0SWQ+amRiYzwvYXJ0aWZhY3RJZD4KCgkJCTx2ZXJzaW9uPjQuNTAuMzwvdmVyc2lvbj4KCgkJPC9kZXBlbmRlbmN5PgkJCgoJCQoKCSAgICA8ZGVwZW5kZW5jeT4KCiAgICAgICAgICAgIDxncm91cElkPmNvbW1vbnMtaW88L2dyb3VwSWQ+CgogICAgICAgICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLWlvPC9hcnRpZmFjdElkPgoKICAgICAgICAgICAgPHZlcnNpb24+Mi44LjA8L3ZlcnNpb24+CgogICAgICAgIDwvZGVwZW5kZW5jeT4KCgkJCgoJCTwhLS0gaHR0cHM6Ly9tdm5yZXBvc2l0b3J5LmNvbS9hcnRpZmFjdC9vcmcub3BlbmN2L29wZW5jdiAtLT4KCgkJPGRlcGVuZGVuY3k+CgoJCSAgICA8Z3JvdXBJZD5vcmcub3BlbmN2PC9ncm91cElkPgoKCQkgICAgPGFydGlmYWN0SWQ+b3BlbmN2PC9hcnRpZmFjdElkPgoKCQkgICAgPHZlcnNpb24+NC4xMS4wPC92ZXJzaW9uPgoKCQk8L2RlcGVuZGVuY3k+CgoJCQkJCgoJCTwhLS0gaHR0cHM6Ly9tdm5yZXBvc2l0b3J5LmNvbS9hcnRpZmFjdC9jb20uZHJld25vYWtlcy9tZXRhZGF0YS1leHRyYWN0b3IgLS0+CgoJCTxkZXBlbmRlbmN5PgoKCQkgICAgPGdyb3VwSWQ+Y29tLmRyZXdub2FrZXM8L2dyb3VwSWQ+CgoJCSAgICA8YXJ0aWZhY3RJZD5tZXRhZGF0YS1leHRyYWN0b3I8L2FydGlmYWN0SWQ+CgoJCSAgICA8dmVyc2lvbj4yLjEyLjA8L3ZlcnNpb24+CgoJCTwvZGVwZW5kZW5jeT4KCgkJCgoJCTwhLS0gaHR0cHM6Ly9tdm5yZXBvc2l0b3J5LmNvbS9hcnRpZmFjdC9jb20uYWRvYmUueG1wL3htcGNvcmUgLS0+CgoJCTxkZXBlbmRlbmN5PgoKCQkgICAgPGdyb3VwSWQ+Y29tLmFkb2JlLnhtcDwvZ3JvdXBJZD4KCgkJICAgIDxhcnRpZmFjdElkPnhtcGNvcmU8L2FydGlmYWN0SWQ+CgoJCSAgICA8dmVyc2lvbj42LjAuNjwvdmVyc2lvbj4KCgkJPC9kZXBlbmRlbmN5PgoKCQkKCiAgICAgICAgPGRlcGVuZGVuY3k+CgogICAgICAgICAgICA8Z3JvdXBJZD5uZXQuamF2YS5kZXYuam5hPC9ncm91cElkPgoKICAgICAgICAgICAgPGFydGlmYWN0SWQ+am5hPC9hcnRpZmFjdElkPgoKICAgICAgICAgICAgPHZlcnNpb24+NS45LjA8L3ZlcnNpb24+CgogICAgICAgIDwvZGVwZW5kZW5jeT4KCgkJCgoJCTxkZXBlbmRlbmN5PgoKICAgICAgICAgICAgPGdyb3VwSWQ+Y29tLmdpdGh1Yi56aXBsZXQ8L2dyb3VwSWQ+CgogICAgICAgICAgICA8YXJ0aWZhY3RJZD56aXBsZXQ8L2FydGlmYWN0SWQ+CgogICAgICAgICAgICA8dmVyc2lvbj4yLjQuMTwvdmVyc2lvbj4KCiAgICAgICAgPC9kZXBlbmRlbmN5PgoKCgoJCTxkZXBlbmRlbmN5PgoKICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5sb2dnaW5nLmxvZzRqPC9ncm91cElkPgoKICAgICAgICAgICAgPGFydGlmYWN0SWQ+bG9nNGotYXBpPC9hcnRpZmFjdElkPgoKCQkJPHZlcnNpb24+Mi4yNC4zPC92ZXJzaW9uPgoKICAgICAgICA8L2RlcGVuZGVuY3k+CgoKCgkJPCEtLSBodHRwczovL212bnJlcG9zaXRvcnkuY29tL2FydGlmYWN0L29yZy5zbGY0ai9sb2c0ai1vdmVyLXNsZjRqIC0tPgoKCQk8ZGVwZW5kZW5jeT4KCgkJCTxncm91cElkPm9yZy5zbGY0ajwvZ3JvdXBJZD4KCgkJCTxhcnRpZmFjdElkPmxvZzRqLW92ZXItc2xmNGo8L2FydGlmYWN0SWQ+CgoJCQk8dmVyc2lvbj4yLjAuMTY8L3ZlcnNpb24+CgoJCTwvZGVwZW5kZW5jeT4KCgoKCQk8IS0tIGh0dHBzOi8vbXZucmVwb3NpdG9yeS5jb20vYXJ0aWZhY3Qvb3JnLnNsZjRqL3NsZjRqLWFwaSAtLT4KCgkJPGRlcGVuZGVuY3k+CgoJCQk8Z3JvdXBJZD5vcmcuc2xmNGo8L2dyb3VwSWQ+CgoJCQk8YXJ0aWZhY3RJZD5zbGY0ai1hcGk8L2FydGlmYWN0SWQ+CgoJCQk8dmVyc2lvbj4yLjAuMTY8L3ZlcnNpb24+CgoJCTwvZGVwZW5kZW5jeT4KCgoKCQk8ZGVwZW5kZW5jeT4KCiAgICAgICAgICAgIDxncm91cElkPm9yZy5zcHJpbmdmcmFtZXdvcmsuYm9vdDwvZ3JvdXBJZD4KCiAgICAgICAgICAgIDxhcnRpZmFjdElkPnNwcmluZy1ib290LXN0YXJ0ZXItYWN0aXZlbXE8L2FydGlmYWN0SWQ+CgoJCQk8dmVyc2lvbj4zLjQuMjwvdmVyc2lvbj4KCiAgICAgICAgPC9kZXBlbmRlbmN5PgoKCgoJCTxkZXBlbmRlbmN5PgoKICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5hY3RpdmVtcTwvZ3JvdXBJZD4KCiAgICAgICAgICAgIDxhcnRpZmFjdElkPmFjdGl2ZW1xLWJyb2tlcjwvYXJ0aWZhY3RJZD4KCgkJCTx2ZXJzaW9uPjYuMS41PC92ZXJzaW9uPgoKICAgICAgICA8L2RlcGVuZGVuY3k+CgoKCiAgICAgICAgPGRlcGVuZGVuY3k+CgogICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLmFjdGl2ZW1xPC9ncm91cElkPgoKICAgICAgICAgICAgPGFydGlmYWN0SWQ+YWN0aXZlbXEtY2xpZW50PC9hcnRpZmFjdElkPgoKCQkJPHZlcnNpb24+Ni4xLjU8L3ZlcnNpb24+CgogICAgICAgIDwvZGVwZW5kZW5jeT4KCgoKCQk8ZGVwZW5kZW5jeT4KCiAgICAgICAgICAgIDxncm91cElkPmNoLnFvcy5sb2diYWNrPC9ncm91cElkPgoKICAgICAgICAgICAgPGFydGlmYWN0SWQ+bG9nYmFjay1jbGFzc2ljPC9hcnRpZmFjdElkPgoKICAgICAgICAgICAgPHZlcnNpb24+MS41LjE2PC92ZXJzaW9uPgoKICAgICAgICA8L2RlcGVuZGVuY3k+CgoKCgkJPGRlcGVuZGVuY3k+CgogICAgICAgICAgICA8Z3JvdXBJZD5jaC5xb3MubG9nYmFjazwvZ3JvdXBJZD4KCiAgICAgICAgICAgIDxhcnRpZmFjdElkPmxvZ2JhY2stY29yZTwvYXJ0aWZhY3RJZD4KCiAgICAgICAgICAgIDx2ZXJzaW9uPjEuNS4xNjwvdmVyc2lvbj4KCiAgICAgICAgPC9kZXBlbmRlbmN5PgoKCTwvZGVwZW5kZW5jaWVzPgoKCgoJPCEtLSBDb25zdHJ1Y3Rpb24gcHJvY2VkdXJlIC0tPgoKCTxwcm9maWxlcz4KCgkJCgoJCTxwcm9maWxlPgoKCQkJPGlkPmRlZmF1bHQ8L2lkPgoKCQkJCgoJCQk8YWN0aXZhdGlvbj4KCgkgICAgICAgICAgICA8YWN0aXZlQnlEZWZhdWx0PnRydWU8L2FjdGl2ZUJ5RGVmYXVsdD4KCgkJCQk8cHJvcGVydHk+CgogICAgICAgICAgICAgICAgICAgIDxuYW1lPmVudjwvbmFtZT4KCiAgICAgICAgICAgICAgICAgICAgPHZhbHVlPmRlZmF1bHQ8L3ZhbHVlPgoKICAgICAgICAgICAgICAgIDwvcHJvcGVydHk+CgoJICAgICAgICA8L2FjdGl2YXRpb24+CgoJCQkKCgkJCTxwcm9wZXJ0aWVzPgoKCQkJCTxtYXZlbi5wcm9maWxlcy5hY3RpdmU6ZGVmYXVsdD5kZWZhdWx0PC9tYXZlbi5wcm9maWxlcy5hY3RpdmU6ZGVmYXVsdD4KCiAgICAgICAgICAgIAk8bWF2ZW4uYXBwLm5hbWU+JHtwcm9qZWN0Lm5hbWV9PC9tYXZlbi5hcHAubmFtZT4KCiAgICAgICAgICAgIAk8bWF2ZW4uYXBwLnZlcnNpb24+JHtwcm9qZWN0LnZlcnNpb259PC9tYXZlbi5hcHAudmVyc2lvbj4KCgkJCQk8bWF2ZW4uYXBwLnBhY2thZ2luZ1R5cGU6d2FyPiR7cGFja2FnaW5nLnR5cGV9PC9tYXZlbi5hcHAucGFja2FnaW5nVHlwZTp3YXI+CgogICAgICAgIAk8L3Byb3BlcnRpZXM+CgoJCQkKCgkJCTxkZXBlbmRlbmNpZXMvPgoKCQkJCgoJCQk8YnVpbGQ+CgoJCQkJPGZpbHRlcnM+CgoJCQkJCTxmaWx0ZXI+JHtiYXNlZGlyfS9jb25maWdzL3Jlc291cmNlcy9hcHBsaWNhdGlvbi55bWw8L2ZpbHRlcj4KCiAgICAgICAgICAgICAgICA8L2ZpbHRlcnM+CgogICAgICAgICAgICA8L2J1aWxkPgoKCQk8L3Byb2ZpbGU+CgoJCQoKCQk8cHJvZmlsZT4KCgkJCTxpZD5zaXQtZXh0ZXJuYWw8L2lkPgoKCQkJCgoJCQk8YWN0aXZhdGlvbj4KCgkgICAgICAgICAgICA8YWN0aXZlQnlEZWZhdWx0PmZhbHNlPC9hY3RpdmVCeURlZmF1bHQ+CgoJCQkJPHByb3BlcnR5PgoKICAgICAgICAgICAgICAgICAgICA8bmFtZT5lbnY8L25hbWU+CgogICAgICAgICAgICAgICAgICAgIDx2YWx1ZT5zaXQtZXh0ZXJuYWw8L3ZhbHVlPgoKICAgICAgICAgICAgICAgIDwvcHJvcGVydHk+CgoJICAgICAgICA8L2FjdGl2YXRpb24+CgoKCgkJCTxwcm9wZXJ0aWVzPgoKCQkJCTxwYWNrYWdlLmVudmlyb25tZW50PnNpdDwvcGFja2FnZS5lbnZpcm9ubWVudD4KCgkJCQk8bWF2ZW4ucHJvZmlsZXMuYWN0aXZlOmRlZmF1bHQ+c2l0LWV4dGVybmFsPC9tYXZlbi5wcm9maWxlcy5hY3RpdmU6ZGVmYXVsdD4KCiAgICAgICAgICAgIAk8bWF2ZW4uYXBwLm5hbWU+JHtwcm9qZWN0Lm5hbWV9PC9tYXZlbi5hcHAubmFtZT4KCiAgICAgICAgICAgIAk8bWF2ZW4uYXBwLnZlcnNpb24+JHtwcm9qZWN0LnZlcnNpb259PC9tYXZlbi5hcHAudmVyc2lvbj4KCgkJCQk8bWF2ZW4uYXBwLnBhY2thZ2luZ1R5cGU6d2FyPiR7cGFja2FnaW5nLnR5cGV9PC9tYXZlbi5hcHAucGFja2FnaW5nVHlwZTp3YXI+CgogICAgICAgIAk8L3Byb3BlcnRpZXM+CgogICAgICAgIAkKCgkJCTxkZXBlbmRlbmNpZXMvPgoKCQkJCgoJCQk8YnVpbGQ+CgoJCQkJPGZpbHRlcnM+CgogICAgICAgICAgICAgICAgICAgIDxmaWx0ZXI+JHtiYXNlZGlyfS9jb25maWdzL3Jlc291cmNlcy9hcHBsaWNhdGlvbi1zaXQtZXh0ZXJuYWwueW1sPC9maWx0ZXI+CgogICAgICAgICAgICAgICAgPC9maWx0ZXJzPgoKICAgICAgICAgICAgPC9idWlsZD4KCgkJPC9wcm9maWxlPgoKCQkKCgkJPHByb2ZpbGU+CgoJCQk8aWQ+dWF0LWV4dGVybmFsPC9pZD4KCgkJCQoKCQkJPGFjdGl2YXRpb24+CgoJICAgICAgICAgICAgPGFjdGl2ZUJ5RGVmYXVsdD5mYWxzZTwvYWN0aXZlQnlEZWZhdWx0PgoKCQkJCTxwcm9wZXJ0eT4KCiAgICAgICAgICAgICAgICAgICAgPG5hbWU+ZW52PC9uYW1lPgoKICAgICAgICAgICAgICAgICAgICA8dmFsdWU+dWF0LWV4dGVybmFsPC92YWx1ZT4KCiAgICAgICAgICAgICAgICA8L3Byb3BlcnR5PgoKCSAgICAgICAgPC9hY3RpdmF0aW9uPgoKCQkJCgoJCQk8cHJvcGVydGllcz4KCgkJCQk8cGFja2FnZS5lbnZpcm9ubWVudD51YXQ8L3BhY2thZ2UuZW52aXJvbm1lbnQ+CgoJCQkJPG1hdmVuLnByb2ZpbGVzLmFjdGl2ZTpkZWZhdWx0PnVhdC1leHRlcm5hbDwvbWF2ZW4ucHJvZmlsZXMuYWN0aXZlOmRlZmF1bHQ+CgogICAgICAgICAgICAJPG1hdmVuLmFwcC5uYW1lPiR7cHJvamVjdC5uYW1lfTwvbWF2ZW4uYXBwLm5hbWU+CgogICAgICAgICAgICAJPG1hdmVuLmFwcC52ZXJzaW9uPiR7cHJvamVjdC52ZXJzaW9ufTwvbWF2ZW4uYXBwLnZlcnNpb24+CgoJCQkJPG1hdmVuLmFwcC5wYWNrYWdpbmdUeXBlOndhcj4ke3BhY2thZ2luZy50eXBlfTwvbWF2ZW4uYXBwLnBhY2thZ2luZ1R5cGU6d2FyPgoKICAgICAgICAJPC9wcm9wZXJ0aWVzPgoKICAgICAgICAJCgoJCQk8ZGVwZW5kZW5jaWVzLz4KCgkJCQoKCQkJPGJ1aWxkPgoKCQkJCTxmaWx0ZXJzPgoKICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyPiR7YmFzZWRpcn0vY29uZmlncy9yZXNvdXJjZXMvYXBwbGljYXRpb24tdWF0LWV4dGVybmFsLnltbDwvZmlsdGVyPgoKICAgICAgICAgICAgICAgIDwvZmlsdGVycz4KCiAgICAgICAgICAgIDwvYnVpbGQ+CgoJCTwvcHJvZmlsZT4KCgkJCgoJCTxwcm9maWxlPgoKCQkJPGlkPnByb2QtZXh0ZXJuYWw8L2lkPgoKCQkJCgoJCQk8YWN0aXZhdGlvbj4KCgkgICAgICAgICAgICA8YWN0aXZlQnlEZWZhdWx0PmZhbHNlPC9hY3RpdmVCeURlZmF1bHQ+CgoJCQkJPHByb3BlcnR5PgoKICAgICAgICAgICAgICAgICAgICA8bmFtZT5lbnY8L25hbWU+CgogICAgICAgICAgICAgICAgICAgIDx2YWx1ZT5wcm9kLWV4dGVybmFsPC92YWx1ZT4KCiAgICAgICAgICAgICAgICA8L3Byb3BlcnR5PgoKCSAgICAgICAgPC9hY3RpdmF0aW9uPgoKCQkJCgoJCQk8cHJvcGVydGllcz4KCgkJCQk8cGFja2FnZS5lbnZpcm9ubWVudD5wcm9kPC9wYWNrYWdlLmVudmlyb25tZW50PgoKCQkJCTxtYXZlbi5wcm9maWxlcy5hY3RpdmU6ZGVmYXVsdD5wcm9kLWV4dGVybmFsPC9tYXZlbi5wcm9maWxlcy5hY3RpdmU6ZGVmYXVsdD4KCiAgICAgICAgICAgIAk8bWF2ZW4uYXBwLm5hbWU+JHtwcm9qZWN0Lm5hbWV9PC9tYXZlbi5hcHAubmFtZT4KCiAgICAgICAgICAgIAk8bWF2ZW4uYXBwLnZlcnNpb24+JHtwcm9qZWN0LnZlcnNpb259PC9tYXZlbi5hcHAudmVyc2lvbj4KCgkJCQk8bWF2ZW4uYXBwLnBhY2thZ2luZ1R5cGU6d2FyPiR7cGFja2FnaW5nLnR5cGV9PC9tYXZlbi5hcHAucGFja2FnaW5nVHlwZTp3YXI+CgogICAgICAgIAk8L3Byb3BlcnRpZXM+CgoJCQkKCgkJCTxkZXBlbmRlbmNpZXMvPgoKCQkJCgoJCQk8YnVpbGQ+CgoJCQkJPGZpbHRlcnM+CgogICAgICAgICAgICAgICAgICAgIDxmaWx0ZXI+JHtiYXNlZGlyfS9jb25maWdzL3Jlc291cmNlcy9hcHBsaWNhdGlvbi1wcm9kLWV4dGVybmFsLnltbDwvZmlsdGVyPgoKICAgICAgICAgICAgICAgIDwvZmlsdGVycz4KCiAgICAgICAgICAgIDwvYnVpbGQ+CgoJCTwvcHJvZmlsZT4KCgkJCgoJPC9wcm9maWxlcz4KCgkKCgk8cmVwb3J0aW5nPgoKCQk8cGx1Z2lucy8+CgoJPC9yZXBvcnRpbmc+CgoJCgoJPGRpc3RyaWJ1dGlvbk1hbmFnZW1lbnQ+CgoJCQoKCQk8cmVwb3NpdG9yeT4KCgkJCTxpZD5sb2NhbC1yZXBvc2l0b3J5PC9pZD4KCgkJCTxuYW1lPkxvY2FsIFJlbGVhc2UgUmVwb3NpdG9yeTwvbmFtZT4KCgkJCTx1cmw+ZmlsZToke3Byb2plY3QuYmFzZWRpcn0vcmVwb3NpdG9yeS88L3VybD4KCgkJCTwhLS08dXJsPmh0dHA6Ly8xMjcuMC4wLjE6ODA4MC9uZXh1cy9jb250ZW50L3JlcG9zaXRvcmllcy9yZWxlYXNlcy88L3VybD4tLT4KCiAgICAgICAgPC9yZXBvc2l0b3J5PgoKCQkKCgkJPHNuYXBzaG90UmVwb3NpdG9yeT4KCgkJCTxpZD5sb2NhbC1zbmFwc2hvdHM8L2lkPgoKCQkJPG5hbWU+TG9jYWwgU25hcHNob3QgUmVwb3NpdG9yeTwvbmFtZT4KCgkJCTx1cmw+ZmlsZToke3Byb2plY3QuYmFzZWRpcn0vcmVwb3NpdG9yeS88L3VybD4KCgkJCTwhLS08dXJsPmh0dHA6Ly8xMjcuMC4wLjE6ODA4MC9uZXh1cy9jb250ZW50L3JlcG9zaXRvcmllcy9zbmFwc2hvdHMvPC91cmw+LS0+CgoJCTwvc25hcHNob3RSZXBvc2l0b3J5PgoKCQkKCiAgICA8L2Rpc3RyaWJ1dGlvbk1hbmFnZW1lbnQ+CgogICAgCgo8L3Byb2plY3Q+Cg==